<?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>76838</bug_id>
          
          <creation_ts>2012-01-23 10:12:55 -0800</creation_ts>
          <short_desc>[chromium] Cull occluded tiles during paint</short_desc>
          <delta_ts>2012-03-07 12:46:32 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          <dependson>76858</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dana Jansens">danakj</reporter>
          <assigned_to name="Dana Jansens">danakj</assigned_to>
          <cc>backer</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>piman</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>540634</commentid>
    <comment_count>0</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-23 10:12:55 -0800</bug_when>
    <thetext>[chromium] Cull occluded tiles during paint</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540852</commentid>
    <comment_count>1</comment_count>
      <attachid>123625</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-23 14:42:11 -0800</bug_when>
    <thetext>Created attachment 123625
Patch

For @enne review.

- Mostly plumbing the currently occluded screen space around to the paint functions.
- Don&apos;t reserve textures for, or paint, tiles that are contained in the occluded region, by leaving their m_updateRect empty.
- Bunch of unit tests to check that occlusion prevents paints in the right ways.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541491</commentid>
    <comment_count>2</comment_count>
      <attachid>123625</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-01-24 11:07:51 -0800</bug_when>
    <thetext>Comment on attachment 123625
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:410
&gt;              if (tile-&gt;isDirty() &amp;&amp; layerTreeHost() &amp;&amp; !layerTreeHost()-&gt;settings().partialTextureUpdates)
&gt;                  layerTreeHost()-&gt;deleteTextureAfterCommit(tile-&gt;managedTexture()-&gt;steal());
&gt;  
&gt; +            // When not idle painting, if the tile is occluded don&apos;t reserve a texture or mark it for update. This will also avoid painting
&gt; +            // the tile in the next loop, below.
&gt; +            if (!idle) {
&gt; +                IntRect tileRect = m_tiler-&gt;tileBounds(i, j);
&gt; +                if (regionContainsRect(occludedScreenSpace, contentToScreenSpace.mapRect(tileRect)))
&gt; +                    continue;
&gt; +            }

I think this new conditional block maybe needs to go above the deleteTextureAfterCommit call above, since the textures aren&apos;t being updated?

&gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.h:89
&gt; +    void prepareToUpdateIdle(const IntRect&amp; layerRect, const Region* occludedScreenSpace);

Is this param needed?

&gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.h:92
&gt; +    bool needsIdlePaint(const IntRect&amp; layerRect, const Region* occludedScreenSpace);

Is this param needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541553</commentid>
    <comment_count>3</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-24 12:26:23 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 123625 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=123625&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:410
&gt; &gt;              if (tile-&gt;isDirty() &amp;&amp; layerTreeHost() &amp;&amp; !layerTreeHost()-&gt;settings().partialTextureUpdates)
&gt; &gt;                  layerTreeHost()-&gt;deleteTextureAfterCommit(tile-&gt;managedTexture()-&gt;steal());
&gt; &gt;  
&gt; &gt; +            // When not idle painting, if the tile is occluded don&apos;t reserve a texture or mark it for update. This will also avoid painting
&gt; &gt; +            // the tile in the next loop, below.
&gt; &gt; +            if (!idle) {
&gt; &gt; +                IntRect tileRect = m_tiler-&gt;tileBounds(i, j);
&gt; &gt; +                if (regionContainsRect(occludedScreenSpace, contentToScreenSpace.mapRect(tileRect)))
&gt; &gt; +                    continue;
&gt; &gt; +            }
&gt; 
&gt; I think this new conditional block maybe needs to go above the deleteTextureAfterCommit call above, since the textures aren&apos;t being updated?

k.

&gt; &gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.h:89
&gt; &gt; +    void prepareToUpdateIdle(const IntRect&amp; layerRect, const Region* occludedScreenSpace);
&gt; 
&gt; Is this param needed?

no, but it a) avoids a null pointer in prepareToUpdateTiles and b) is needed in the CCLayerTreeHost methods for both idle and non-idle and c) allows for some decisions to be made in prioritizing prepainting based on occlusion in the future.

do you want it gone and pass null to prepareToUpdateTiles() instead?

&gt; &gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.h:92
&gt; &gt; +    bool needsIdlePaint(const IntRect&amp; layerRect, const Region* occludedScreenSpace);
&gt; 
&gt; Is this param needed?

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541568</commentid>
    <comment_count>4</comment_count>
      <attachid>123625</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-01-24 12:42:22 -0800</bug_when>
    <thetext>Comment on attachment 123625
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.h:89
&gt;&gt;&gt; +    void prepareToUpdateIdle(const IntRect&amp; layerRect, const Region* occludedScreenSpace);
&gt;&gt; 
&gt;&gt; Is this param needed?
&gt; 
&gt; no, but it a) avoids a null pointer in prepareToUpdateTiles and b) is needed in the CCLayerTreeHost methods for both idle and non-idle and c) allows for some decisions to be made in prioritizing prepainting based on occlusion in the future.
&gt; 
&gt; do you want it gone and pass null to prepareToUpdateTiles() instead?

Ok, sure.  Leaving it seems reasonable, then.

&gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.h:92
&gt;&gt;&gt; +    bool needsIdlePaint(const IntRect&amp; layerRect, const Region* occludedScreenSpace);
&gt;&gt; 
&gt;&gt; Is this param needed?
&gt; 
&gt; ditto.

This one really does look unused?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541579</commentid>
    <comment_count>5</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-24 12:55:09 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.h:92
&gt; &gt;&gt;&gt; +    bool needsIdlePaint(const IntRect&amp; layerRect, const Region* occludedScreenSpace);
&gt; &gt;&gt; 
&gt; &gt;&gt; Is this param needed?
&gt; &gt; 
&gt; &gt; ditto.
&gt; 
&gt; This one really does look unused?

Oh! Yeh this one should def go, thank you. Legacy from preventing prepainting of certain tiles and needing this thing to match, but it was a bad idea to do that at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541628</commentid>
    <comment_count>6</comment_count>
      <attachid>123796</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-24 13:37:19 -0800</bug_when>
    <thetext>Created attachment 123796
Patch

comments addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543337</commentid>
    <comment_count>7</comment_count>
      <attachid>124156</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-26 11:47:15 -0800</bug_when>
    <thetext>Created attachment 124156
Patch

- rebased on the new paint occlusion per-RS patch.
- removed the unused param from needsIdlePaint()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543419</commentid>
    <comment_count>8</comment_count>
      <attachid>124168</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-26 13:10:17 -0800</bug_when>
    <thetext>Created attachment 124168
Patch

rebased and using Region&amp; instead of Region* since can&apos;t be null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543643</commentid>
    <comment_count>9</comment_count>
      <attachid>124211</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-26 16:33:42 -0800</bug_when>
    <thetext>Created attachment 124211
Patch

rebased on latest paint occlusion tracking</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544466</commentid>
    <comment_count>10</comment_count>
      <attachid>124387</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-27 15:51:03 -0800</bug_when>
    <thetext>Created attachment 124387
Patch

rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544589</commentid>
    <comment_count>11</comment_count>
      <attachid>124387</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-01-27 19:04:35 -0800</bug_when>
    <thetext>Comment on attachment 124387
Patch

LGTM.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545652</commentid>
    <comment_count>12</comment_count>
      <attachid>124387</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-30 17:44:38 -0800</bug_when>
    <thetext>Comment on attachment 124387
Patch

This is going to fail EWS until the occlusion tracking lands, but it&apos;s a pretty simple CL and mostly plumbing, so maybe reviewable?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545747</commentid>
    <comment_count>13</comment_count>
      <attachid>124661</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-30 20:09:59 -0800</bug_when>
    <thetext>Created attachment 124661
Patch

rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545748</commentid>
    <comment_count>14</comment_count>
      <attachid>124387</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-30 20:16:04 -0800</bug_when>
    <thetext>Comment on attachment 124387
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:405
&gt; +                    continue;

can you add a very noticable TRACE_EVENT here? if we (heaven forbid) start getting bug reports i want it to be really easy to have people record a trace and then easily say &quot;no, culling is definitely not an issue on this page&quot;. similarly i want to be able to easily look at a page and tell how effective paint culling is

&gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:415
&gt; +                IntRect fixedSizeTileRectWithBorders = m_tiler-&gt;tileRect(tile);
&gt; +                tile-&gt;m_dirtyRect = fixedSizeTileRectWithBorders;

this temp isn&apos;t providing much value, certainly not enough to triple the line count of what was a one-liner

&gt; Source/WebKit/chromium/tests/TiledLayerChromiumTest.cpp:63
&gt; +        Texture(PassOwnPtr&lt;ManagedTexture&gt; texture, FakeLayerTextureUpdater* updater) : LayerTextureUpdater::Texture(texture), m_updater(updater) { }

this is too long for one line now, please expand it out to one initialization per line</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545758</commentid>
    <comment_count>15</comment_count>
      <attachid>124387</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-30 20:46:11 -0800</bug_when>
    <thetext>Comment on attachment 124387
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:405
&gt;&gt; +                    continue;
&gt; 
&gt; can you add a very noticable TRACE_EVENT here? if we (heaven forbid) start getting bug reports i want it to be really easy to have people record a trace and then easily say &quot;no, culling is definitely not an issue on this page&quot;. similarly i want to be able to easily look at a page and tell how effective paint culling is

k

&gt;&gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:415
&gt;&gt; +                tile-&gt;m_dirtyRect = fixedSizeTileRectWithBorders;
&gt; 
&gt; this temp isn&apos;t providing much value, certainly not enough to triple the line count of what was a one-liner

ah, this should already be done in the latest patch submitted to match the previous CL :)

&gt;&gt; Source/WebKit/chromium/tests/TiledLayerChromiumTest.cpp:63
&gt;&gt; +        Texture(PassOwnPtr&lt;ManagedTexture&gt; texture, FakeLayerTextureUpdater* updater) : LayerTextureUpdater::Texture(texture), m_updater(updater) { }
&gt; 
&gt; this is too long for one line now, please expand it out to one initialization per line

k</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545768</commentid>
    <comment_count>16</comment_count>
      <attachid>124667</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-30 21:07:02 -0800</bug_when>
    <thetext>Created attachment 124667
Patch

comments addressed. CCLayerTreeHostLayerOcclusion unit test fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545795</commentid>
    <comment_count>17</comment_count>
      <attachid>124673</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-30 22:41:06 -0800</bug_when>
    <thetext>Created attachment 124673
Patch

same patch, but without the unit test fix. 

bug #76858 was reverted and i&apos;ve fixed the problem there already.

leaving the previous version R? to try not clobber EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547333</commentid>
    <comment_count>18</comment_count>
      <attachid>125006</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-02-01 13:34:10 -0800</bug_when>
    <thetext>Created attachment 125006
Patch

- using Region::contains() since that landed finally
- cull tiles if their visible part is occluded (was previously testing if non-visible parts were occluded too)
- added unit tests for the missed visibility interaction</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551141</commentid>
    <comment_count>19</comment_count>
      <attachid>125879</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-02-07 11:08:28 -0800</bug_when>
    <thetext>Created attachment 125879
Patch

rebased.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569914</commentid>
    <comment_count>20</comment_count>
      <attachid>129954</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-02 13:59:16 -0800</bug_when>
    <thetext>Created attachment 129954
Patch

Updated. Using CCOcclusionTracker. Tested on Aura.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569978</commentid>
    <comment_count>21</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-02 15:12:24 -0800</bug_when>
    <thetext>Oh I should say the unit test I removed will get coverage again in https://bugs.webkit.org/show_bug.cgi?id=80173</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572363</commentid>
    <comment_count>22</comment_count>
      <attachid>129954</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-03-06 17:51:44 -0800</bug_when>
    <thetext>Comment on attachment 129954
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:434
&gt; +                    TRACE_EVENT(&quot;TiledLayerChromium::prepareToUpdateTiles::tileCulled&quot;, this, 0);

How many trace events is this going to generate? This seems less like an event, and more like a job for TRACE_COUNTER, or maybe some level of aggregation and reporting in the data section of a higher level trace event?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572394</commentid>
    <comment_count>23</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-06 18:15:46 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; (From update of attachment 129954 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=129954&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:434
&gt; &gt; +                    TRACE_EVENT(&quot;TiledLayerChromium::prepareToUpdateTiles::tileCulled&quot;, this, 0);
&gt; 
&gt; How many trace events is this going to generate? This seems less like an event, and more like a job for TRACE_COUNTER, or maybe some level of aggregation and reporting in the data section of a higher level trace event?

jamesr requested something like this back when I first wrote this so we could tell if culling was related to bug reports. I&apos;m not sure how relevant it is now, especially when draw and paint culling match 1:1, as we&apos;ll see compositor blue in the same places as paint culling. But I didn&apos;t know about TRACE_COUNTER, that might be better, if it can be used in the same way for debugging.

@jamesr what do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572404</commentid>
    <comment_count>24</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-06 18:21:26 -0800</bug_when>
    <thetext>I want there to be some indication in the trace of what&apos;s happening, but a counter or a higher-level aggregated thing would be a lot better than putting a full event on every tile.  The tracing system can&apos;t really handle that level of spamming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572406</commentid>
    <comment_count>25</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-06 18:22:13 -0800</bug_when>
    <thetext>The higher-level goal being able to tell from a trace if culling is doing anything on a page or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572876</commentid>
    <comment_count>26</comment_count>
      <attachid>130623</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-07 07:33:50 -0800</bug_when>
    <thetext>Created attachment 130623
Patch

- Paint-cull tiles if their dirty rect is occluded (instead of if their whole tile bounds are occluded).
- Added unit test coverage for this.
- Removed the TRACE_EVENT.

I&apos;d like to do the TRACE stuff in a separate CL. Thanks @enne for pointing out @wjmaclean&apos;s histogram stuff in CCQuadCuller now. I need to add some support for this with CCOcclusionTracker, and I&apos;d like to cover the paint culling at the same time.

Also, I&apos;d like to push the data in his histograms into TRACE_COUNTER&apos;s as well for debugging, probably.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573039</commentid>
    <comment_count>27</comment_count>
      <attachid>130655</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-07 11:23:11 -0800</bug_when>
    <thetext>Created attachment 130655
Patch

- Don&apos;t paint-cull tiles if their dirty rect is occluded!
- Added unit test coverage for this.

If the tile is dirty, but party visible, paint-culling it would cause us to not push it to impl thread, making for bad times.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573052</commentid>
    <comment_count>28</comment_count>
      <attachid>130655</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-03-07 11:31:38 -0800</bug_when>
    <thetext>Comment on attachment 130655
Patch

I&apos;m fine with punting the trace event to a different patch, but can you file a bug for it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573059</commentid>
    <comment_count>29</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-07 11:35:14 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; (From update of attachment 130655 [details])
&gt; I&apos;m fine with punting the trace event to a different patch, but can you file a bug for it?

Thanks! http://code.google.com/p/chromium/issues/detail?id=117155</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573133</commentid>
    <comment_count>30</comment_count>
      <attachid>130655</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-07 12:46:25 -0800</bug_when>
    <thetext>Comment on attachment 130655
Patch

Clearing flags on attachment: 130655

Committed r110088: &lt;http://trac.webkit.org/changeset/110088&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573134</commentid>
    <comment_count>31</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-07 12:46:32 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123625</attachid>
            <date>2012-01-23 14:42:11 -0800</date>
            <delta_ts>2012-01-24 13:37:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76838-20120123174210.patch</filename>
            <type>text/plain</type>
            <size>42183</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NjI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTQwZGFiOTBlNDBmNWZj
YmZhMDMyOGY0NGQxOTE4MWEyYzYxNWY4OC4uM2QyODljZjE0MTNiNGIxNjMxMDc2MzZlZjY2OWQ4
NjRmNTlhMzRjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM3IEBACiAyMDEyLTAxLTIzICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFtjaHJvbWl1bV0gQ3Vs
bCBvY2NsdWRlZCB0aWxlcyBkdXJpbmcgcGFpbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc2ODM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTmV3IHVuaXQgdGVzdHMgaW4gVGlsZWRMYXllckNocm9taXVt
VGVzdC5jcHAKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJE
TGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21p
dW06OnBhaW50Q29udGVudHNJZkRpcnR5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OmlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21p
dW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hy
b21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllckNocm9taXVtOjpwYWludENv
bnRlbnRzSWZEaXJ0eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1h
Z2VMYXllckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6cGFpbnRD
b250ZW50c0lmRGlydHkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6aWRsZVBh
aW50Q29udGVudHNJZkRpcnR5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVnaW9uQ29udGFp
bnNSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRv
VXBkYXRlVGlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpwcmVw
YXJlVG9VcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpwcmVw
YXJlVG9VcGRhdGVJZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6
bmVlZHNJZGxlUGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rp
bGVkTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhv
c3Q6OnBhaW50Q29udGVudHNJZkRpcnR5KToKKworMjAxMi0wMS0yMyAgRGFuYSBKYW5zZW5zICA8
ZGFuYWtqQGNocm9taXVtLm9yZz4KKwogICAgICAgICBbY2hyb21pdW1dIENvbXB1dGUgb2NjbHVz
aW9uIGR1cmluZyBwYWludCBsb29wCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03Njg1OAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDAzMzhl
Y2IyODc4NTc4NWM4Y2YxOGZkYzkwMDg1OTgzNzgwYmJjY2IuLmU2ODFmNTJiOWFiZmMxYmE3YjJh
OGZmMTdiZDg2NzQxY2ZlNWM4ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDUg
KzEsMzAgQEAKIDIwMTItMDEtMjMgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+
CiAKKyAgICAgICAgW2Nocm9taXVtXSBDdWxsIG9jY2x1ZGVkIHRpbGVzIGR1cmluZyBwYWludAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzY4MzgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHRlc3RzL0ND
TGF5ZXJUcmVlSG9zdFRlc3QuY3BwOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1
bVdpdGhVcGRhdGVUcmFja2luZzo6cGFpbnRDb250ZW50c0lmRGlydHkpOgorICAgICAgICAoV1RG
OjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6aWRsZVBhaW50Q29udGVu
dHNJZkRpcnR5KToKKyAgICAgICAgKiB0ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3Q6OmZ1bGxMaWZl
Y3ljbGVUZXN0KToKKyAgICAgICAgKiB0ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcDoK
KyAgICAgICAgKFdURjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUp
OgorICAgICAgICAoV1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6cHJlcGFy
ZVJlY3QpOgorICAgICAgICAoV1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6RmFrZUxheWVy
VGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAoV1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
c2V0T3BhcXVlUGFpbnRSZWN0KToKKyAgICAgICAgKFdURjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0
ZXI6OnByZXBhcmVSZWN0Q291bnQpOgorICAgICAgICAoV1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6Y2xlYXJQcmVwYXJlUmVjdENvdW50KToKKyAgICAgICAgKFdURjo6RmFrZUxheWVyVGV4
dHVyZVVwZGF0ZXI6OmNyZWF0ZVRleHR1cmUpOgorICAgICAgICAoV1RGOjpGYWtlVGlsZWRMYXll
ckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGUpOgorICAgICAgICAoV1RGOjpGYWtlVGlsZWRMYXll
ckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZGxlKToKKyAgICAgICAgKFdURjo6RmFrZVRpbGVk
TGF5ZXJDaHJvbWl1bTo6bmVlZHNJZGxlUGFpbnQpOgorICAgICAgICAoV1RGOjpURVNUKToKKwor
MjAxMi0wMS0yMyAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKwogICAgICAg
ICBbY2hyb21pdW1dIENvbXB1dGUgb2NjbHVzaW9uIGR1cmluZyBwYWludCBsb29wCiAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Njg1OAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExh
eWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcAppbmRleCAxNTA1YWRhYzI0M2UwNzY2NWQyZGRh
YjI4ZjQ3MDNmZjhlZjViOTQzLi42NzI2NWJkNWJhMmQ4ZjMyODRhZmQ2YjkwNGNlMTMzMTQzNjZm
ZjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTkxLDcgKzkx
LDcgQEAgYm9vbCBDYW52YXMyRExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgpIGNvbnN0CiAg
ICAgICAgICYmIG1fY29udGV4dCAmJiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmdldEdy
YXBoaWNzUmVzZXRTdGF0dXNBUkIoKSA9PSBHcmFwaGljc0NvbnRleHQzRDo6Tk9fRVJST1IpOwog
fQogCi12b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoKQor
dm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJl
Z2lvbiogLypvY2NsdWRlZFNjcmVlblNwYWNlKi8pCiB7CiAgICAgaWYgKCFkcmF3c0NvbnRlbnQo
KSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaAppbmRl
eCA4MzYxNWExZjIyMzU2MTY0NjJlYjFmOGQ0MTIyZTFhZDhlNThjOTIyLi4zNzUzZWNmOGY1MzIz
Y2Y0ZTVmNDc5MmJiZDg1MGVkODEwYzNiYzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hy
b21pdW0uaApAQCAtNDAsNiArNDAsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBH
cmFwaGljc0NvbnRleHQzRDsKK2NsYXNzIFJlZ2lvbjsKIAogLy8gQSBsYXllciBjb250YWluaW5n
IGFuIGFjY2VsZXJhdGVkIDJkIGNhbnZhcwogY2xhc3MgQ2FudmFzMkRMYXllckNocm9taXVtIDog
cHVibGljIENhbnZhc0xheWVyQ2hyb21pdW0gewpAQCAtNTIsNyArNTMsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGNvbnRlbnRDaGFuZ2VkKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgZHJh
d3NDb250ZW50KCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5
KCk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiog
b2NjbHVkZWRTY3JlZW5TcGFjZSk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJUcmVlSG9z
dChDQ0xheWVyVHJlZUhvc3QqKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXll
ckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0NvbnRlbnRMYXllckNocm9taXVtLmNwcAppbmRleCA4NDAzOTBlMDI3OTA4MjUyNmI0MWZiM2Q4
NTdiMWY4NDVhMDE4YTY4Li4xN2RjNzE0NzY1MjViNDU0ZjFhODE5ZjMwODdkYzAwYTU5ZmNmM2Ez
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9D
b250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCkBAIC04OCw3ICs4OCw3IEBA
IENvbnRlbnRMYXllckNocm9taXVtOjp+Q29udGVudExheWVyQ2hyb21pdW0oKQogewogfQogCi12
b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSgpCit2b2lkIENv
bnRlbnRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24qIG9j
Y2x1ZGVkU2NyZWVuU3BhY2UpCiB7CiAgICAgdXBkYXRlVGlsZVNpemVBbmRUaWxpbmdPcHRpb24o
KTsKIApAQCAtOTksMTEgKzk5LDExIEBAIHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OnBhaW50
Q29udGVudHNJZkRpcnR5KCkKICAgICBpZiAoZHJhd3NDb250ZW50KCkpCiAgICAgICAgIGxheWVy
UmVjdCA9IHZpc2libGVMYXllclJlY3QoKTsKIAotICAgIHByZXBhcmVUb1VwZGF0ZShsYXllclJl
Y3QpOworICAgIHByZXBhcmVUb1VwZGF0ZShsYXllclJlY3QsIG9jY2x1ZGVkU2NyZWVuU3BhY2Up
OwogICAgIG1fbmVlZHNEaXNwbGF5ID0gZmFsc2U7CiB9CiAKLXZvaWQgQ29udGVudExheWVyQ2hy
b21pdW06OmlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSgpCit2b2lkIENvbnRlbnRMYXllckNocm9t
aXVtOjppZGxlUGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uKiBvY2NsdWRlZFNjcmVl
blNwYWNlKQogewogICAgIGlmICghZHJhd3NDb250ZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAg
LTExMiw4ICsxMTIsOCBAQCB2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjppZGxlUGFpbnRDb250
ZW50c0lmRGlydHkoKQogICAgIGlmIChsYXllclJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBwcmVwYXJlVG9VcGRhdGVJZGxlKGxheWVyUmVjdCk7Ci0gICAgaWYgKG5lZWRz
SWRsZVBhaW50KGxheWVyUmVjdCkpCisgICAgcHJlcGFyZVRvVXBkYXRlSWRsZShsYXllclJlY3Qs
IG9jY2x1ZGVkU2NyZWVuU3BhY2UpOworICAgIGlmIChuZWVkc0lkbGVQYWludChsYXllclJlY3Qs
IG9jY2x1ZGVkU2NyZWVuU3BhY2UpKQogICAgICAgICBzZXROZWVkc0NvbW1pdCgpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250
ZW50TGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaAppbmRleCBjZmIwZmQ3YzkwNjdjMjE0MGRkMTNk
MzU2ZmJlZjdkZmM5N2UzMmRlLi4xYTliNWQ4MjY1YzNhOTIzMWU3ZjEyNDA2NTM5MWMxZDhiMDc1
YWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKQEAgLTQxLDYgKzQxLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBMYXllclRpbGVyQ2hyb21pdW07CiBjbGFzcyBM
YXllclRleHR1cmVVcGRhdGVyOworY2xhc3MgUmVnaW9uOwogCiBjbGFzcyBDb250ZW50TGF5ZXJE
ZWxlZ2F0ZSB7CiBwdWJsaWM6CkBAIC01Nyw4ICs1OCw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
Y2xlYXJEZWxlZ2F0ZSgpIHsgbV9kZWxlZ2F0ZSA9IDA7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBw
YWludENvbnRlbnRzSWZEaXJ0eSgpOwotICAgIHZpcnR1YWwgdm9pZCBpZGxlUGFpbnRDb250ZW50
c0lmRGlydHkoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoY29uc3Qg
UmVnaW9uKiBvY2NsdWRlZFNjcmVlblNwYWNlKTsKKyAgICB2aXJ0dWFsIHZvaWQgaWRsZVBhaW50
Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiogb2NjbHVkZWRTY3JlZW5TcGFjZSk7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0T3BhcXVlKGJvb2wpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9t
aXVtLmNwcAppbmRleCAwMTU0ZmIyODMxNGYzZTZjOTI0MDQ3YmI0ODM2NzM2OTJkZmNmYWI3Li5l
Njc0NGI3MmMyM2EwZGNiNzRlMTgwNmJlNjVhNmZmNzdkOTJmYmZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdl
TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lkIEltYWdlTGF5ZXJDaHJv
bWl1bTo6c2V0Q29udGVudHMoSW1hZ2UqIGNvbnRlbnRzKQogICAgIHNldE5lZWRzRGlzcGxheSgp
OwogfQogCi12b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoKQor
dm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lv
biogb2NjbHVkZWRTY3JlZW5TcGFjZSkKIHsKICAgICBpZiAobV9uZWVkc0Rpc3BsYXkpIHsKICAg
ICAgICAgbV90ZXh0dXJlVXBkYXRlci0+dXBkYXRlRnJvbUltYWdlKG1fY29udGVudHMtPm5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgSW1hZ2VM
YXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSgpCiAgICAgICAgIG1fbmVlZHNEaXNw
bGF5ID0gZmFsc2U7CiAgICAgfQogCi0gICAgcHJlcGFyZVRvVXBkYXRlKHZpc2libGVMYXllclJl
Y3QoKSk7CisgICAgcHJlcGFyZVRvVXBkYXRlKHZpc2libGVMYXllclJlY3QoKSwgb2NjbHVkZWRT
Y3JlZW5TcGFjZSk7CiB9CiAKIExheWVyVGV4dHVyZVVwZGF0ZXIqIEltYWdlTGF5ZXJDaHJvbWl1
bTo6dGV4dHVyZVVwZGF0ZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaAppbmRl
eCBkNzEyOTI0NTFjMzU1NWVhZjBjMTZjZjlmMmMzZjM5NWJlMDc1MzA0Li5mMjNkOTVmYjAzOTJl
OGE1NmM3NjcwNmI2YzEyMDgxMjc4MmFmYmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0u
aApAQCAtNDUsNiArNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEltYWdlOwog
Y2xhc3MgSW1hZ2VMYXllclRleHR1cmVVcGRhdGVyOworY2xhc3MgUmVnaW9uOwogCiAvLyBBIExh
eWVyIHRoYXQgY29udGFpbnMgb25seSBhbiBJbWFnZSBlbGVtZW50LgogY2xhc3MgSW1hZ2VMYXll
ckNocm9taXVtIDogcHVibGljIFRpbGVkTGF5ZXJDaHJvbWl1bSB7CkBAIC01Myw3ICs1NCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JbWFnZUxheWVyQ2hyb21pdW0oKTsKIAogICAgIHZpcnR1
YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250
ZW50c0lmRGlydHkoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoY29u
c3QgUmVnaW9uKiBvY2NsdWRlZFNjcmVlblNwYWNlKTsKICAgICB2aXJ0dWFsIGJvb2wgbmVlZHND
b250ZW50c1NjYWxlKCkgY29uc3Q7CiAKICAgICB2b2lkIHNldENvbnRlbnRzKEltYWdlKiBpbWFn
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllckNocm9taXVtLmgKaW5kZXggOGJjMTNiOWQ5YTdkZDZjMjNlZTc4ZTA3NGZiOGIz
N2QzZmIyYWNlYy4uZmQxZDc5YzcwYmIzMjRiYmViNzNhMzZlZGVhNTRhNTlmN2NlMWI3NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJD
aHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyQ2hyb21pdW0uaApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiUHJvZ3JhbUJp
bmRpbmcuaCIKKyNpbmNsdWRlICJSZWdpb24uaCIKICNpbmNsdWRlICJSZW5kZXJTdXJmYWNlQ2hy
b21pdW0uaCIKICNpbmNsdWRlICJTaGFkZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlRyYW5zZm9y
bWF0aW9uTWF0cml4LmgiCkBAIC0xNTQsOCArMTU1LDggQEAgcHVibGljOgogCiAgICAgLy8gVGhl
c2UgbWV0aG9kcyB0eXBpY2FsbHkgbmVlZCB0byBiZSBvdmVyd3JpdHRlbiBieSBkZXJpdmVkIGNs
YXNzZXMuCiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNEcmF3YWJsZTsgfQotICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eSgpIHsg
fQotICAgIHZpcnR1YWwgdm9pZCBpZGxlUGFpbnRDb250ZW50c0lmRGlydHkoKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uKiAvKiBvY2NsdWRl
ZFNjcmVlblNwYWNlICovKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaWRsZVBhaW50Q29udGVudHNJ
ZkRpcnR5KGNvbnN0IFJlZ2lvbiogLyogb2NjbHVkZWRTY3JlZW5TcGFjZSAqLykgeyB9CiAgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0Qq
LCBDQ1RleHR1cmVVcGRhdGVyJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldElzTWFzayhib29s
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgdW5yZXNlcnZlQ29udGVudHNUZXh0dXJlKCkgeyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxl
ZExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcAppbmRleCBkNGY0ZDRmOTM3MjFmZWQxZGU2OGVm
ZGI4ZmMxMTNiMzQ2ODk2ZTY2Li40OTNlMTE4ZWY5YmZmNDIzMDUyMzU3MDE2NjYyMzJhY2QyZmM0
YjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTM2Miw3ICszNjIsMTkg
QEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByb3RlY3RUaWxlVGV4dHVyZXMoY29uc3QgSW50
UmVjdCYgbGF5ZXJSZWN0KQogICAgIH0KIH0KIAotdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnBy
ZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wgaWRsZSwgaW50IGxlZnQsIGludCB0b3AsIGludCByaWdo
dCwgaW50IGJvdHRvbSkKK3N0YXRpYyBib29sIHJlZ2lvbkNvbnRhaW5zUmVjdChjb25zdCBSZWdp
b24qIHJlZ2lvbiwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBSZWdpb24gcmVjdFJlZ2lv
bihyZWN0KTsKKyAgICBSZWdpb24gaW50ZXJzZWN0UmVnaW9uKGludGVyc2VjdCgqcmVnaW9uLCBy
ZWN0UmVnaW9uKSk7CisKKyAgICBpZiAoaW50ZXJzZWN0UmVnaW9uLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgcmVjdFJlZ2lvbi5zdWJ0cmFjdChpbnRlcnNlY3RSZWdp
b24pOworICAgIHJldHVybiByZWN0UmVnaW9uLmlzRW1wdHkoKTsKK30KKwordm9pZCBUaWxlZExh
eWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wgaWRsZSwgaW50IGxlZnQsIGlu
dCB0b3AsIGludCByaWdodCwgaW50IGJvdHRvbSwgY29uc3QgUmVnaW9uKiBvY2NsdWRlZFNjcmVl
blNwYWNlKQogewogICAgIC8vIFJlc2V0IG1fdXBkYXRlUmVjdCBmb3IgYWxsIHRpbGVzLgogICAg
IGZvciAoQ0NMYXllclRpbGluZ0RhdGE6OlRpbGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBt
X3RpbGVyLT50aWxlcygpLmJlZ2luKCk7IGl0ZXIgIT0gbV90aWxlci0+dGlsZXMoKS5lbmQoKTsg
KytpdGVyKSB7CkBAIC0zNzAsNiArMzgyLDkgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnBy
ZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wgaWRsZSwgaW50IGxlZnQsIGludCB0b3AsIGludAogICAg
ICAgICB0aWxlLT5tX3VwZGF0ZVJlY3QgPSBJbnRSZWN0KCk7CiAgICAgfQogCisgICAgLy8gVGls
ZXMgYXJlIGluIGNvbnRlbnQgc3BhY2UsIHRoZSBvY2NsdWRlZCByZWdpb24gaXMgaW4gc2NyZWVu
IHNwYWNlLgorICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNvbnRlbnRUb1NjcmVlblNwYWNlID0g
Y29udGVudFRvU2NyZWVuU3BhY2VUcmFuc2Zvcm0oKTsKKwogICAgIC8vIENyZWF0ZSB0aWxlcyBh
cyBuZWVkZWQsIGV4cGFuZGluZyBhIGRpcnR5IHJlY3QgdG8gY29udGFpbiBhbGwKICAgICAvLyB0
aGUgZGlydHkgcmVnaW9ucyBjdXJyZW50bHkgYmVpbmcgZHJhd24uIEFsbCBkaXJ0eSB0aWxlcyB0
aGF0IGFyZSB0byBiZSBwYWludGVkCiAgICAgLy8gZ2V0IHRoZWlyIG1fdXBkYXRlUmVjdCBzZXQg
dG8gbV9kaXJ0eVJlY3QgYW5kIG1fZGlydHlSZWN0IGNsZWFyZWQuIFRoaXMgd2F5IGlmCkBAIC0z
ODYsOCArNDAxLDE3IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVU
aWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQKICAgICAgICAgICAgIGlmICh0
aWxlLT5pc0RpcnR5KCkgJiYgbGF5ZXJUcmVlSG9zdCgpICYmICFsYXllclRyZWVIb3N0KCktPnNl
dHRpbmdzKCkucGFydGlhbFRleHR1cmVVcGRhdGVzKQogICAgICAgICAgICAgICAgIGxheWVyVHJl
ZUhvc3QoKS0+ZGVsZXRlVGV4dHVyZUFmdGVyQ29tbWl0KHRpbGUtPm1hbmFnZWRUZXh0dXJlKCkt
PnN0ZWFsKCkpOwogCisgICAgICAgICAgICAvLyBXaGVuIG5vdCBpZGxlIHBhaW50aW5nLCBpZiB0
aGUgdGlsZSBpcyBvY2NsdWRlZCBkb24ndCByZXNlcnZlIGEgdGV4dHVyZSBvciBtYXJrIGl0IGZv
ciB1cGRhdGUuIFRoaXMgd2lsbCBhbHNvIGF2b2lkIHBhaW50aW5nCisgICAgICAgICAgICAvLyB0
aGUgdGlsZSBpbiB0aGUgbmV4dCBsb29wLCBiZWxvdy4KKyAgICAgICAgICAgIGlmICghaWRsZSkg
eworICAgICAgICAgICAgICAgIEludFJlY3QgdGlsZVJlY3QgPSBtX3RpbGVyLT50aWxlQm91bmRz
KGksIGopOworICAgICAgICAgICAgICAgIGlmIChyZWdpb25Db250YWluc1JlY3Qob2NjbHVkZWRT
Y3JlZW5TcGFjZSwgY29udGVudFRvU2NyZWVuU3BhY2UubWFwUmVjdCh0aWxlUmVjdCkpKQorICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
SW50UmVjdCBmaXhlZFNpemVUaWxlUmVjdFdpdGhCb3JkZXJzID0gbV90aWxlci0+dGlsZVJlY3Qo
dGlsZSk7CiAgICAgICAgICAgICBpZiAoIXRpbGUtPm1hbmFnZWRUZXh0dXJlKCktPmlzVmFsaWQo
bV90aWxlci0+dGlsZVNpemUoKSwgbV90ZXh0dXJlRm9ybWF0KSkKLSAgICAgICAgICAgICAgICB0
aWxlLT5tX2RpcnR5UmVjdCA9IG1fdGlsZXItPnRpbGVSZWN0KHRpbGUpOworICAgICAgICAgICAg
ICAgIHRpbGUtPm1fZGlydHlSZWN0ID0gZml4ZWRTaXplVGlsZVJlY3RXaXRoQm9yZGVyczsKIAog
ICAgICAgICAgICAgaWYgKCF0aWxlLT5tYW5hZ2VkVGV4dHVyZSgpLT5yZXNlcnZlKG1fdGlsZXIt
PnRpbGVTaXplKCksIG1fdGV4dHVyZUZvcm1hdCkpIHsKICAgICAgICAgICAgICAgICBtX3NraXBz
SWRsZVBhaW50ID0gdHJ1ZTsKQEAgLTQzNyw3ICs0NjEsNyBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJv
bWl1bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwg
aW50CiAgICAgICAgICAgICBpZiAodGlsZVBhaW50ZWRPcGFxdWVSZWN0ICE9IHRpbGVQYWludGVk
UmVjdCB8fCAhdGlsZS0+bV9vcGFxdWVSZWN0LmNvbnRhaW5zKHRpbGVQYWludGVkT3BhcXVlUmVj
dCkpCiAgICAgICAgICAgICAgICAgdGlsZS0+bV9vcGFxdWVSZWN0ID0gdGlsZVBhaW50ZWRPcGFx
dWVSZWN0OwogCi0gICAgICAgICAgICAvLyBVc2UgbV91cGRhdGVSZWN0IGFzIGNvcHlBbmRDbGVh
ckRpcnR5IGFib3ZlIG1vdmVkIHRoZSBleGlzdGluZyBkaXJ0eSByZWN0IHRvIG1fdXBkYXRlUmVj
dC4KKyAgICAgICAgICAgIC8vIFVzZSBtX3VwZGF0ZVJlY3QgYXMgY29weUFuZENsZWFyRGlydHkg
YWJvdmUgbW92ZWQgdGhlIGV4aXN0aW5nIGRpcnR5IHJlY3QgdG8gbV91cGRhdGVSZWN0IGlmIHRo
ZSB0aWxlIGlzbid0IGN1bGxlZC4KICAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIGRpcnR5UmVj
dCA9IHRpbGUtPm1fdXBkYXRlUmVjdDsKICAgICAgICAgICAgIGlmIChkaXJ0eVJlY3QuaXNFbXB0
eSgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtNTA0LDcgKzUyOCw3IEBAIHZvaWQg
VGlsZWRMYXllckNocm9taXVtOjphZGRTZWxmVG9PY2NsdWRlZFJlZ2lvbihSZWdpb24qIG9jY2x1
ZGVkU2NyZWVuU3BhY2UpCiAKIH0KIAotdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVU
b1VwZGF0ZShjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpCit2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1
bTo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3QgUmVnaW9u
KiBvY2NsdWRlZFNjcmVlblNwYWNlKQogewogICAgIG1fc2tpcHNEcmF3ID0gZmFsc2U7CiAgICAg
bV9za2lwc0lkbGVQYWludCA9IGZhbHNlOwpAQCAtNTE5LDEwICs1NDMsMTAgQEAgdm9pZCBUaWxl
ZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBsYXllclJlY3Qp
CiAgICAgaW50IGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbTsKICAgICBtX3RpbGVyLT5sYXllclJl
Y3RUb1RpbGVJbmRpY2VzKGxheWVyUmVjdCwgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tKTsKIAot
ICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKGZhbHNlLCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20p
OworICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKGZhbHNlLCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0
b20sIG9jY2x1ZGVkU2NyZWVuU3BhY2UpOwogfQogCi12b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6
cHJlcGFyZVRvVXBkYXRlSWRsZShjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpCit2b2lkIFRpbGVk
TGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWRsZShjb25zdCBJbnRSZWN0JiBsYXllclJl
Y3QsIGNvbnN0IFJlZ2lvbiogb2NjbHVkZWRTY3JlZW5TcGFjZSkKIHsKICAgICAvLyBBYm9ydCBp
ZiB3ZSBoYXZlIGFscmVhZHkgcHJlcGFyZWQgYSBwYWludCBvciBydW4gb3V0IG9mIG1lbW9yeS4K
ICAgICBpZiAobV9za2lwc0lkbGVQYWludCB8fCAhbV9wYWludFJlY3QuaXNFbXB0eSgpKQpAQCAt
NTQwLDQwICs1NjQsNDYgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0
ZUlkbGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQogICAgIEludFJlY3QgaWRsZVBhaW50TGF5
ZXJSZWN0ID0gaWRsZVBhaW50UmVjdChsYXllclJlY3QpOwogICAgIHByb3RlY3RUaWxlVGV4dHVy
ZXMoaWRsZVBhaW50TGF5ZXJSZWN0KTsKIAotICAgIC8vIEV4cGFuZCBvdXR3YXJkcyB1bnRpbCB3
ZSBmaW5kIGEgZGlydHkgcm93IG9yIGNvbHVtbiB0byB1cGRhdGUuCiAgICAgaW50IGxlZnQsIHRv
cCwgcmlnaHQsIGJvdHRvbTsKICAgICBtX3RpbGVyLT5sYXllclJlY3RUb1RpbGVJbmRpY2VzKGxh
eWVyUmVjdCwgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tKTsKKworICAgIC8vIFByZXBhaW50IGFu
eXRoaW5nIHRoYXQgd2FzIG9jY2x1ZGVkIGJ1dCBpbnNpZGUgdGhlIGxheWVyJ3MgdmlzaWJsZSBy
ZWdpb24uCisgICAgcHJlcGFyZVRvVXBkYXRlVGlsZXModHJ1ZSwgbGVmdCwgYm90dG9tLCByaWdo
dCwgYm90dG9tLCBvY2NsdWRlZFNjcmVlblNwYWNlKTsKKyAgICBpZiAoIW1fcGFpbnRSZWN0Lmlz
RW1wdHkoKSB8fCBtX3NraXBzSWRsZVBhaW50KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBF
eHBhbmQgb3V0d2FyZHMgdW50aWwgd2UgZmluZCBhIGRpcnR5IHJvdyBvciBjb2x1bW4gdG8gdXBk
YXRlLgogICAgIGludCBwcmVwYWludExlZnQsIHByZXBhaW50VG9wLCBwcmVwYWludFJpZ2h0LCBw
cmVwYWludEJvdHRvbTsKICAgICBtX3RpbGVyLT5sYXllclJlY3RUb1RpbGVJbmRpY2VzKGlkbGVQ
YWludExheWVyUmVjdCwgcHJlcGFpbnRMZWZ0LCBwcmVwYWludFRvcCwgcHJlcGFpbnRSaWdodCwg
cHJlcGFpbnRCb3R0b20pOwogICAgIHdoaWxlICghbV9za2lwc0lkbGVQYWludCAmJiAobGVmdCA+
IHByZXBhaW50TGVmdCB8fCB0b3AgPiBwcmVwYWludFRvcCB8fCByaWdodCA8IHByZXBhaW50Umln
aHQgfHwgYm90dG9tIDwgcHJlcGFpbnRCb3R0b20pKSB7CiAgICAgICAgIGlmIChib3R0b20gPCBw
cmVwYWludEJvdHRvbSkgewogICAgICAgICAgICAgKytib3R0b207Ci0gICAgICAgICAgICBwcmVw
YXJlVG9VcGRhdGVUaWxlcyh0cnVlLCBsZWZ0LCBib3R0b20sIHJpZ2h0LCBib3R0b20pOworICAg
ICAgICAgICAgcHJlcGFyZVRvVXBkYXRlVGlsZXModHJ1ZSwgbGVmdCwgYm90dG9tLCByaWdodCwg
Ym90dG9tLCBvY2NsdWRlZFNjcmVlblNwYWNlKTsKICAgICAgICAgICAgIGlmICghbV9wYWludFJl
Y3QuaXNFbXB0eSgpIHx8IG1fc2tpcHNJZGxlUGFpbnQpCiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgaWYgKHRvcCA+IHByZXBhaW50VG9wKSB7CiAgICAgICAgICAg
ICAtLXRvcDsKLSAgICAgICAgICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKHRydWUsIGxlZnQsIHRv
cCwgcmlnaHQsIHRvcCk7CisgICAgICAgICAgICBwcmVwYXJlVG9VcGRhdGVUaWxlcyh0cnVlLCBs
ZWZ0LCB0b3AsIHJpZ2h0LCB0b3AsIG9jY2x1ZGVkU2NyZWVuU3BhY2UpOwogICAgICAgICAgICAg
aWYgKCFtX3BhaW50UmVjdC5pc0VtcHR5KCkgfHwgbV9za2lwc0lkbGVQYWludCkKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAobGVmdCA+IHByZXBhaW50TGVm
dCkgewogICAgICAgICAgICAgLS1sZWZ0OwotICAgICAgICAgICAgcHJlcGFyZVRvVXBkYXRlVGls
ZXModHJ1ZSwgbGVmdCwgdG9wLCBsZWZ0LCBib3R0b20pOworICAgICAgICAgICAgcHJlcGFyZVRv
VXBkYXRlVGlsZXModHJ1ZSwgbGVmdCwgdG9wLCBsZWZ0LCBib3R0b20sIG9jY2x1ZGVkU2NyZWVu
U3BhY2UpOwogICAgICAgICAgICAgaWYgKCFtX3BhaW50UmVjdC5pc0VtcHR5KCkgfHwgbV9za2lw
c0lkbGVQYWludCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBp
ZiAocmlnaHQgPCBwcmVwYWludFJpZ2h0KSB7CiAgICAgICAgICAgICArK3JpZ2h0OwotICAgICAg
ICAgICAgcHJlcGFyZVRvVXBkYXRlVGlsZXModHJ1ZSwgcmlnaHQsIHRvcCwgcmlnaHQsIGJvdHRv
bSk7CisgICAgICAgICAgICBwcmVwYXJlVG9VcGRhdGVUaWxlcyh0cnVlLCByaWdodCwgdG9wLCBy
aWdodCwgYm90dG9tLCBvY2NsdWRlZFNjcmVlblNwYWNlKTsKICAgICAgICAgICAgIGlmICghbV9w
YWludFJlY3QuaXNFbXB0eSgpIHx8IG1fc2tpcHNJZGxlUGFpbnQpCiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICB9CiB9CiAKLWJvb2wgVGlsZWRMYXllckNocm9taXVtOjpu
ZWVkc0lkbGVQYWludChjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpCitib29sIFRpbGVkTGF5ZXJD
aHJvbWl1bTo6bmVlZHNJZGxlUGFpbnQoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0LCBjb25zdCBS
ZWdpb24qIC8qIG9jY2x1ZGVkU2NyZWVuU3BhY2UgKi8pCiB7CiAgICAgaWYgKG1fc2tpcHNJZGxl
UGFpbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgK
aW5kZXggMWNkMjdlNWY2MjMwOGY1NDVkNDNhYTFmYjI1ZDY1NDExNGE1OTkzMS4uM2M0YjNiNTk1
YmRlZGYwZjZmNzFmNjY0YjdhODMxNGZkNTkxMDZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9t
aXVtLmgKQEAgLTgzLDEzICs4MywxMyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBpbnZhbGlkYXRl
UmVjdChjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpOwogCiAgICAgLy8gUHJlcGFyZSBkYXRhIG5l
ZWRlZCB0byB1cGRhdGUgdGV4dHVyZXMgdGhhdCBpbnRlcnNlY3Qgd2l0aCBsYXllclJlY3QuCi0g
ICAgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KTsKKyAgICB2
b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBsYXllclJlY3QsIGNvbnN0IFJlZ2lv
biogb2NjbHVkZWRTY3JlZW5TcGFjZSk7CiAKICAgICAvLyBTYW1lIGFzIGFib3ZlLCBidXQgdGhp
cyB3aWxsIHRyeSB0byBwYWludCBhZGRpdGlvbmFsIHN1cnJvdW5kaW5nIGNvbnRlbnQgaWYgaWRs
ZS4KLSAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZUlkbGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0
KTsKKyAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZUlkbGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0
LCBjb25zdCBSZWdpb24qIG9jY2x1ZGVkU2NyZWVuU3BhY2UpOwogCiAgICAgLy8gQWZ0ZXIgcHJl
cGFyaW5nIGFuIHVwZGF0ZSwgcmV0dXJucyB0cnVlIGlmIG1vcmUgcHJlLXBhaW50aW5nIGlzIG5l
ZWRlZC4KLSAgICBib29sIG5lZWRzSWRsZVBhaW50KGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCk7
CisgICAgYm9vbCBuZWVkc0lkbGVQYWludChjb25zdCBJbnRSZWN0JiBsYXllclJlY3QsIGNvbnN0
IFJlZ2lvbiogb2NjbHVkZWRTY3JlZW5TcGFjZSk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcHJvdGVj
dFZpc2libGVUaWxlVGV4dHVyZXMoKTsKIApAQCAtMTAzLDcgKzEwMyw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBjcmVhdGVUaWxlcklmTmVlZGVkKCk7CiAgICAgdm9pZCBzZXRUaWxpbmdPcHRpb24o
VGlsaW5nT3B0aW9uKTsKIAotICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxl
LCBpbnQgbGVmdCwgaW50IHRvcCwgaW50IHJpZ2h0LCBpbnQgYm90dG9tKTsKKyAgICB2b2lkIHBy
ZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wgaWRsZSwgaW50IGxlZnQsIGludCB0b3AsIGludCByaWdo
dCwgaW50IGJvdHRvbSwgY29uc3QgUmVnaW9uKiBvY2NsdWRlZFNjcmVlblNwYWNlKTsKICAgICBJ
bnRSZWN0IGlkbGVQYWludFJlY3QoY29uc3QgSW50UmVjdCYgdmlzaWJsZUxheWVyUmVjdCk7CiAK
ICAgICBVcGRhdGFibGVUaWxlKiB0aWxlQXQoaW50LCBpbnQpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggZjZmY2IyMDFhM2U0MjBlMWNlZGIyMGRlNDIyNzdkMTUy
NjFmMGNmMi4uYmJlZjNhM2ZlOGY4Nzg5YWYyYWYxNjRmMjc5OGUyMTUwNGNlYjIzNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC00MDgsOSArNDA4LDkgQEAgdm9pZCBDQ0xh
eWVyVHJlZUhvc3Q6OnBhaW50Q29udGVudHNJZkRpcnR5KExheWVyQ2hyb21pdW0qIGxheWVyLCBQ
YWludFR5cGUgcGFpbnQKICAgICBBU1NFUlQobGF5ZXIpOwogICAgIEFTU0VSVChQYWludFZpc2li
bGUgPT0gcGFpbnRUeXBlIHx8IFBhaW50SWRsZSA9PSBwYWludFR5cGUpOwogICAgIGlmIChQYWlu
dFZpc2libGUgPT0gcGFpbnRUeXBlKQotICAgICAgICBsYXllci0+cGFpbnRDb250ZW50c0lmRGly
dHkoKTsKKyAgICAgICAgbGF5ZXItPnBhaW50Q29udGVudHNJZkRpcnR5KG9jY2x1ZGVkU2NyZWVu
U3BhY2UpOwogICAgIGVsc2UKLSAgICAgICAgbGF5ZXItPmlkbGVQYWludENvbnRlbnRzSWZEaXJ0
eSgpOworICAgICAgICBsYXllci0+aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KG9jY2x1ZGVkU2Ny
ZWVuU3BhY2UpOwogCiAgICAgLy8gQWRkIHRoZSBsYXllcidzIG9jY2x1c2lvbiB0byB0aGUgYWNj
dW11bGF0ZWQgcmVnaW9uIGZvciB0aGUgbmV4dCBsYXllciB0byBiZSBhYmxlIHRvIHVzZSBmb3Ig
Y3VsbGluZy4KICAgICBsYXllci0+YWRkU2VsZlRvT2NjbHVkZWRSZWdpb24ob2NjbHVkZWRTY3Jl
ZW5TcGFjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5
ZXJUcmVlSG9zdFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVy
VHJlZUhvc3RUZXN0LmNwcAppbmRleCA1OGRlNzU5YmIzMzkzYjVkZTdkOTg2MjA2YjdjZWY5M2Y3
YWEyZDcxLi5iMDNhMzQ3YzEwY2I2ZDI1ZjI5MjcwZGFlMWI0MDk1M2ZjZWY2ZWE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5j
cHAKQEAgLTk5NywxNSArOTk3LDE1IEBAIHB1YmxpYzoKICAgICBpbnQgdXBkYXRlQ291bnQoKSB7
IHJldHVybiBtX3VwZGF0ZUNvdW50OyB9CiAgICAgdm9pZCByZXNldFVwZGF0ZUNvdW50KCkgeyBt
X3VwZGF0ZUNvdW50ID0gMDsgfQogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRp
cnR5KCkKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9u
KiBvY2NsdWRlZCkKICAgICB7Ci0gICAgICAgIENvbnRlbnRMYXllckNocm9taXVtOjpwYWludENv
bnRlbnRzSWZEaXJ0eSgpOworICAgICAgICBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250
ZW50c0lmRGlydHkob2NjbHVkZWQpOwogICAgICAgICBtX3BhaW50Q29udGVudHNDb3VudCsrOwog
ICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBpZGxlUGFpbnRDb250ZW50c0lmRGlydHkoKQorICAg
IHZpcnR1YWwgdm9pZCBpZGxlUGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uKiBvY2Ns
dWRlZCkKICAgICB7Ci0gICAgICAgIENvbnRlbnRMYXllckNocm9taXVtOjppZGxlUGFpbnRDb250
ZW50c0lmRGlydHkoKTsKKyAgICAgICAgQ29udGVudExheWVyQ2hyb21pdW06OmlkbGVQYWludENv
bnRlbnRzSWZEaXJ0eShvY2NsdWRlZCk7CiAgICAgICAgIG1faWRsZVBhaW50Q29udGVudHNDb3Vu
dCsrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
YW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ2FudmFzMkRMYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggZjBiNWM0MTFiNjU2YWVkZTc1
OTU3MTBlNGQ4Y2ZkN2QyNGRiNTMzYy4uNGQ4MmJmOTFhZjJlNWI3NGM2YzFkYjVlMGMzZWMzYzdj
YjExNjJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMy
RExheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVk
ZSAiQ0NTY2hlZHVsZXJUZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSAiRmFrZVdlYkdyYXBoaWNzQ29u
dGV4dDNELmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgiCisjaW5jbHVk
ZSAiUmVnaW9uLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hbmFnZXIuaCIKICNpbmNsdWRlICJjYy9D
Q0NhbnZhc0xheWVySW1wbC5oIgogI2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIK
QEAgLTEzNiw5ICsxMzcsMTEgQEAgcHJvdGVjdGVkOgogICAgICAgICBjYW52YXMtPnNldEJvdW5k
cyhJbnRTaXplKDYwMCwgMzAwKSk7CiAgICAgICAgIGNhbnZhcy0+c2V0VGV4dHVyZUlkKGJhY2tU
ZXh0dXJlSWQpOwogCisgICAgICAgIFJlZ2lvbiBvY2NsdWRlZDsKKwogICAgICAgICBjYW52YXMt
PmNvbnRlbnRDaGFuZ2VkKCk7CiAgICAgICAgIEVYUEVDVF9UUlVFKGNhbnZhcy0+bmVlZHNEaXNw
bGF5KCkpOwotICAgICAgICBjYW52YXMtPnBhaW50Q29udGVudHNJZkRpcnR5KCk7CisgICAgICAg
IGNhbnZhcy0+cGFpbnRDb250ZW50c0lmRGlydHkoJm9jY2x1ZGVkKTsKICAgICAgICAgRVhQRUNU
X0ZBTFNFKGNhbnZhcy0+bmVlZHNEaXNwbGF5KCkpOwogICAgICAgICB7CiAgICAgICAgICAgICBE
ZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgc2NvcGVkSW1wbFRocmVhZDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmlu
ZGV4IDVkYTg1ZDNiZmY2MzAzMWRmMmFhNmQwNDdjOWI5YWEwODQxNTVkYjguLjUxMTZmOTI4NDkz
OWFiZTZhZDcxYWU2ZDM1YWE2OWQxZmQyMmFjNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtNTEsMzQg
KzUxLDQzIEBAIGNsYXNzIEZha2VMYXllclRleHR1cmVVcGRhdGVyIDogcHVibGljIExheWVyVGV4
dHVyZVVwZGF0ZXIgewogcHVibGljOgogICAgIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CiAgICAgcHVibGljOgotICAgICAgICBUZXh0dXJlKFBh
c3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpIDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VGV4dHVyZSh0ZXh0dXJlKSB7IH0KKyAgICAgICAgVGV4dHVyZShQYXNzT3duUHRyPE1hbmFnZWRU
ZXh0dXJlPiB0ZXh0dXJlLCBGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlciogdXBkYXRlcikgOiBMYXll
clRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKHRleHR1cmUpLCBtX3VwZGF0ZXIodXBkYXRlcikgeyB9
CiAgICAgICAgIHZpcnR1YWwgflRleHR1cmUoKSB7IH0KIAogICAgICAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJ
bnRSZWN0JiwgY29uc3QgSW50UmVjdCYpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFy
ZVJlY3QoY29uc3QgSW50UmVjdCYpIHsgKyttX3VwZGF0ZXItPm1fcHJlcGFyZVJlY3RDb3VudDsg
fQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIqIG1fdXBk
YXRlcjsKICAgICB9OwogCi0gICAgRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKSA6IG1fcHJlcGFy
ZUNvdW50KDApIHsgfQorICAgIEZha2VMYXllclRleHR1cmVVcGRhdGVyKCkgOiBtX3ByZXBhcmVD
b3VudCgwKSwgbV9wcmVwYXJlUmVjdENvdW50KDApIHsgfQogICAgIHZpcnR1YWwgfkZha2VMYXll
clRleHR1cmVVcGRhdGVyKCkgeyB9CiAKICAgICAvLyBTZXRzIHRoZSByZWN0IHRvIGludmFsaWRh
dGUgZHVyaW5nIHRoZSBuZXh0IGNhbGwgdG8gcHJlcGFyZVRvVXBkYXRlKCkuIEFmdGVyIHRoZSBu
ZXh0CiAgICAgLy8gY2FsbCB0byBwcmVwYXJlVG9VcGRhdGUoKSB0aGUgcmVjdCBpcyByZXNldC4K
ICAgICB2b2lkIHNldFJlY3RUb0ludmFsaWRhdGUoY29uc3QgSW50UmVjdCYsIEZha2VUaWxlZExh
eWVyQ2hyb21pdW0qKTsKIAorICAgIHZvaWQgc2V0T3BhcXVlUGFpbnRSZWN0KGNvbnN0IEludFJl
Y3QmIG9wYXF1ZVBhaW50UmVjdCkgeyBtX29wYXF1ZVBhaW50UmVjdCA9IG9wYXF1ZVBhaW50UmVj
dDsgfQorCiAgICAgLy8gTnVtYmVyIG9mIHRpbWVzIHByZXBhcmVUb1VwZGF0ZSBoYXMgYmVlbiBp
bnZva2VkLgogICAgIGludCBwcmVwYXJlQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3ByZXBhcmVD
b3VudDsgfQogICAgIHZvaWQgY2xlYXJQcmVwYXJlQ291bnQoKSB7IG1fcHJlcGFyZUNvdW50ID0g
MDsgfQogCi0gICAgdm9pZCBzZXRPcGFxdWVQYWludFJlY3QoY29uc3QgSW50UmVjdCYgb3BhcXVl
UGFpbnRSZWN0KSB7IG1fb3BhcXVlUGFpbnRSZWN0ID0gb3BhcXVlUGFpbnRSZWN0OyB9CisgICAg
Ly8gTnVtYmVyIG9mIHRpbWVzIHByZXBhcmVSZWN0IGhhcyBiZWVuIGludm9rZWQgb24gYSB0ZXh0
dXJlLgorICAgIGludCBwcmVwYXJlUmVjdENvdW50KCkgY29uc3QgeyByZXR1cm4gbV9wcmVwYXJl
UmVjdENvdW50OyB9CisgICAgdm9pZCBjbGVhclByZXBhcmVSZWN0Q291bnQoKSB7IG1fcHJlcGFy
ZVJlY3RDb3VudCA9IDA7IH0KIAogICAgIC8vIExhc3QgcmVjdCBwYXNzZWQgdG8gcHJlcGFyZVRv
VXBkYXRlKCkuCiAgICAgY29uc3QgSW50UmVjdCYgbGFzdFVwZGF0ZVJlY3QoKSAgY29uc3QgeyBy
ZXR1cm4gbV9sYXN0VXBkYXRlUmVjdDsgfQogCi0gICAgdmlydHVhbCBQYXNzT3duUHRyPExheWVy
VGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4dHVyZU1hbmFnZXIqIG1h
bmFnZXIpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBUZXh0dXJlKE1hbmFnZWRUZXh0dXJlOjpjcmVh
dGUobWFuYWdlcikpKTsgfQorICAgIHZpcnR1YWwgUGFzc093blB0cjxMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKiBtYW5hZ2VyKSB7IHJl
dHVybiBhZG9wdFB0cihuZXcgVGV4dHVyZShNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKG1hbmFnZXIp
LCB0aGlzKSk7IH0KICAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1hdCBzYW1wbGVkVGV4ZWxG
b3JtYXQoR0MzRGVudW0pIHsgcmV0dXJuIFNhbXBsZWRUZXhlbEZvcm1hdFJHQkE7IH0KICAgICB2
aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBj
b25zdCBJbnRTaXplJiwgaW50LCBmbG9hdCwgSW50UmVjdCogcmVzdWx0aW5nT3BhcXVlUmVjdCk7
CiAKIHByaXZhdGU6CiAgICAgaW50IG1fcHJlcGFyZUNvdW50OworICAgIGludCBtX3ByZXBhcmVS
ZWN0Q291bnQ7CiAgICAgSW50UmVjdCBtX3JlY3RUb0ludmFsaWRhdGU7CiAgICAgSW50UmVjdCBt
X2xhc3RVcGRhdGVSZWN0OwogICAgIEludFJlY3QgbV9vcGFxdWVQYWludFJlY3Q7CkBAIC0xMTYs
MTkgKzEyNSwxOSBAQCBwdWJsaWM6CiAgICAgICAgIFRpbGVkTGF5ZXJDaHJvbWl1bTo6aW52YWxp
ZGF0ZVJlY3QocmVjdCk7CiAgICAgfQogCi0gICAgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3Qg
SW50UmVjdCYgcmVjdCkKKyAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBy
ZWN0LCBjb25zdCBSZWdpb24qIG9jY2x1ZGVkKQogICAgIHsKLSAgICAgICAgVGlsZWRMYXllckNo
cm9taXVtOjpwcmVwYXJlVG9VcGRhdGUocmVjdCk7CisgICAgICAgIFRpbGVkTGF5ZXJDaHJvbWl1
bTo6cHJlcGFyZVRvVXBkYXRlKHJlY3QsIG9jY2x1ZGVkKTsKICAgICB9CiAKLSAgICB2b2lkIHBy
ZXBhcmVUb1VwZGF0ZUlkbGUoY29uc3QgSW50UmVjdCYgcmVjdCkKKyAgICB2b2lkIHByZXBhcmVU
b1VwZGF0ZUlkbGUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgUmVnaW9uKiBvY2NsdWRlZCkK
ICAgICB7Ci0gICAgICAgIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWRsZShy
ZWN0KTsKKyAgICAgICAgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZGxlKHJl
Y3QsIG9jY2x1ZGVkKTsKICAgICB9CiAKLSAgICBib29sIG5lZWRzSWRsZVBhaW50KGNvbnN0IElu
dFJlY3QmIHJlY3QpCisgICAgYm9vbCBuZWVkc0lkbGVQYWludChjb25zdCBJbnRSZWN0JiByZWN0
LCBjb25zdCBSZWdpb24qIG9jY2x1ZGVkKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFRpbGVkTGF5
ZXJDaHJvbWl1bTo6bmVlZHNJZGxlUGFpbnQocmVjdCk7CisgICAgICAgIHJldHVybiBUaWxlZExh
eWVyQ2hyb21pdW06Om5lZWRzSWRsZVBhaW50KHJlY3QsIG9jY2x1ZGVkKTsKICAgICB9CiAKICAg
ICBGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlciogZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKSB7IHJl
dHVybiBtX2Zha2VUZXh0dXJlVXBkYXRlci5nZXQoKTsgfQpAQCAtMTcxLDYgKzE4MCw3IEBAIFRF
U1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaERpcnR5VGlsZXMpCiAgICAgUmVmUHRyPEZh
a2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVy
Q2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxU
aHJlYWQgaW1wbFRocmVhZDsKICAgICBSZWZQdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVy
SW1wbCA9IGFkb3B0UmVmKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgwKSk7CisgICAgUmVnaW9u
IG9jY2x1ZGVkOwogCiAgICAgRmFrZVRleHR1cmVBbGxvY2F0b3IgdGV4dHVyZUFsbG9jYXRvcjsK
ICAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIoJnRleHR1cmVBbGxvY2F0b3IpOwpAQCAtMTc4
LDcgKzE4OCw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaERpcnR5VGlsZXMp
CiAgICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLCBzbyB0aGlzIGludmFsaWRhdGVzIGFu
ZCB0aGVuIHBhaW50cyB0d28gdGlsZXMuCiAgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDEw
MCwgMjAwKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAy
MDApKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDAp
KTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAm
b2NjbHVkZWQpOwogICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0
ZXIpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAKQEAg
LTE5MSw3ICsyMDEsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hEaXJ0eVRp
bGVzKQogICAgIC8vIEludmFsaWRhdGVzIGJvdGggdGlsZXMuLi4KICAgICBsYXllci0+aW52YWxp
ZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogICAgIC8vIC4uLi5idXQgdGhlbiBv
bmx5IHVwZGF0ZSBvbmUgb2YgdGhlbS4KLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJl
Y3QoMCwgMCwgMTAwLCAxMDApKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3Qo
MCwgMCwgMTAwLCAxMDApLCAmb2NjbHVkZWQpOwogICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9y
UmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVy
SW1wbC5nZXQoKSk7CiAKQEAgLTIxNCwxNSArMjI0LDE2IEBAIFRFU1QoVGlsZWRMYXllckNocm9t
aXVtVGVzdCwgcHVzaElkbGVQYWludFRpbGVzKQogICAgIEludFNpemUgY29udGVudEJvdW5kcyg1
MDAsIDUwMCk7CiAgICAgSW50UmVjdCBjb250ZW50UmVjdChJbnRQb2ludDo6emVybygpLCBjb250
ZW50Qm91bmRzKTsKICAgICBJbnRSZWN0IHZpc2libGVSZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCk7
CisgICAgUmVnaW9uIG9jY2x1ZGVkOwogCiAgICAgLy8gVGhpcyBpbnZhbGlkYXRlcyAyNSB0aWxl
cyBhbmQgdGhlbiBwYWludHMgb25lIHZpc2libGUgdGlsZS4KICAgICBsYXllci0+c2V0Qm91bmRz
KGNvbnRlbnRCb3VuZHMpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KHZpc2libGVS
ZWN0KTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoY29udGVudFJlY3QpOwotICAgIGxheWVy
LT5wcmVwYXJlVG9VcGRhdGUodmlzaWJsZVJlY3QpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRh
dGUodmlzaWJsZVJlY3QsICZvY2NsdWRlZCk7CiAKICAgICAvLyBXZSBzaG91bGQgbmVlZCBpZGxl
LXBhaW50aW5nIGZvciAzeDMgdGlsZXMgaW4gdGhlIGNlbnRlci4KLSAgICBFWFBFQ1RfVFJVRShs
YXllci0+bmVlZHNJZGxlUGFpbnQodmlzaWJsZVJlY3QpKTsKKyAgICBFWFBFQ1RfVFJVRShsYXll
ci0+bmVlZHNJZGxlUGFpbnQodmlzaWJsZVJlY3QsICZvY2NsdWRlZCkpOwogCiAgICAgbGF5ZXIt
PnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAgICAgbGF5ZXItPnB1c2hQ
cm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKQEAgLTIzNCwxNiArMjQ1LDE2IEBAIFRFU1Qo
VGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaElkbGVQYWludFRpbGVzKQogCiAgICAgLy8gRm9y
IHRoZSBuZXh0IGZvdXIgdXBkYXRlcywgd2Ugc2hvdWxkIGRldGVjdCB3ZSBzdGlsbCBuZWVkIGlk
bGUgcGFpbnRpbmcuCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBpKyspIHsKLSAgICAgICAg
bGF5ZXItPnByZXBhcmVUb1VwZGF0ZSh2aXNpYmxlUmVjdCk7Ci0gICAgICAgIEVYUEVDVF9UUlVF
KGxheWVyLT5uZWVkc0lkbGVQYWludCh2aXNpYmxlUmVjdCkpOwotICAgICAgICBsYXllci0+cHJl
cGFyZVRvVXBkYXRlSWRsZSh2aXNpYmxlUmVjdCk7CisgICAgICAgIGxheWVyLT5wcmVwYXJlVG9V
cGRhdGUodmlzaWJsZVJlY3QsICZvY2NsdWRlZCk7CisgICAgICAgIEVYUEVDVF9UUlVFKGxheWVy
LT5uZWVkc0lkbGVQYWludCh2aXNpYmxlUmVjdCwgJm9jY2x1ZGVkKSk7CisgICAgICAgIGxheWVy
LT5wcmVwYXJlVG9VcGRhdGVJZGxlKHZpc2libGVSZWN0LCAmb2NjbHVkZWQpOwogICAgICAgICBs
YXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKICAgICAgICAgbGF5
ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKICAgICAgICAgdGV4dHVyZU1h
bmFnZXItPnVucHJvdGVjdEFsbFRleHR1cmVzKCk7CiAgICAgfQogCiAgICAgLy8gQWZ0ZXIgZm91
ciBwYXNzZXMgb2YgaWRsZSBwYWludGluZywgd2Ugc2hvdWxkIGJlIGZpbmlzaGVkIHBhaW50aW5n
Ci0gICAgRVhQRUNUX0ZBTFNFKGxheWVyLT5uZWVkc0lkbGVQYWludCh2aXNpYmxlUmVjdCkpOwor
ICAgIEVYUEVDVF9GQUxTRShsYXllci0+bmVlZHNJZGxlUGFpbnQodmlzaWJsZVJlY3QsICZvY2Ns
dWRlZCkpOwogCiAgICAgLy8gV2Ugc2hvdWxkIGhhdmUgb25lIHRpbGUgc3Vycm91bmRpbmcgdGhl
IHZpc2libGUgdGlsZSBvbiBhbGwgc2lkZXMsIGJ1dCBubyBvdGhlciB0aWxlcy4KICAgICBJbnRS
ZWN0IGlkbGVQYWludFRpbGVzKDEsIDEsIDMsIDMpOwpAQCAtMjY0LDYgKzI3NSw3IEBAIFRFU1Qo
VGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50T3V0T2ZNZW1vcnkpCiAgICAgSW50U2l6
ZSBjb250ZW50Qm91bmRzKDMwMCwgMzAwKTsKICAgICBJbnRSZWN0IGNvbnRlbnRSZWN0KEludFBv
aW50Ojp6ZXJvKCksIGNvbnRlbnRCb3VuZHMpOwogICAgIEludFJlY3QgdmlzaWJsZVJlY3QoMTAw
LCAxMDAsIDEwMCwgMTAwKTsKKyAgICBSZWdpb24gb2NjbHVkZWQ7CiAKICAgICAvLyBXZSBoYXZl
IGVub3VnaCBtZW1vcnkgZm9yIG9ubHkgdGhlIHZpc2libGUgcmVjdCwgc28gd2Ugd2lsbCBydW4g
b3V0IG9mIG1lbW9yeSBpbiBmaXJzdCBpZGxlIHBhaW50LgogICAgIGludCBtZW1vcnlMaW1pdCA9
IDQgKiAxMDAgKiAxMDA7IC8vIDIgdGlsZXMsIDQgYnl0ZXMgcGVyIHBpeGVsLgpAQCAtMjgwLDEw
ICsyOTIsMTAgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRPdXRPZk1l
bW9yeSkKICAgICBsYXllci0+c2V0Qm91bmRzKGNvbnRlbnRCb3VuZHMpOwogICAgIGxheWVyLT5z
ZXRWaXNpYmxlTGF5ZXJSZWN0KHZpc2libGVSZWN0KTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJl
Y3QoY29udGVudFJlY3QpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUodmlzaWJsZVJlY3Qp
OworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUodmlzaWJsZVJlY3QsICZvY2NsdWRlZCk7CiAK
ICAgICAvLyBXZSBzaG91bGQgbmVlZCBpZGxlLXBhaW50aW5nIGZvciAzeDMgdGlsZXMgc3Vyb3Vu
ZGluZyB2aXNpYmxlIHRpbGUuCi0gICAgRVhQRUNUX1RSVUUobGF5ZXItPm5lZWRzSWRsZVBhaW50
KHZpc2libGVSZWN0KSk7CisgICAgRVhQRUNUX1RSVUUobGF5ZXItPm5lZWRzSWRsZVBhaW50KHZp
c2libGVSZWN0LCAmb2NjbHVkZWQpKTsKIAogICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVz
b3VyY2VzKDAsIHVwZGF0ZXIpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1w
bC5nZXQoKSk7CkBAIC0yOTIsMTEgKzMwNCwxMSBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRl
c3QsIGlkbGVQYWludE91dE9mTWVtb3J5KQogICAgIEVYUEVDVF9UUlVFKGxheWVySW1wbC0+aGFz
VGlsZUF0KDEsIDEpKTsKIAogICAgIHRleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RBbGxUZXh0dXJl
cygpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUodmlzaWJsZVJlY3QpOwotICAgIGxheWVy
LT5wcmVwYXJlVG9VcGRhdGVJZGxlKHZpc2libGVSZWN0KTsKKyAgICBsYXllci0+cHJlcGFyZVRv
VXBkYXRlKHZpc2libGVSZWN0LCAmb2NjbHVkZWQpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRh
dGVJZGxlKHZpc2libGVSZWN0LCAmb2NjbHVkZWQpOwogCiAgICAgLy8gV2Ugc2hvdWxkbid0IHNp
Z25hbCB3ZSBuZWVkIGFub3RoZXIgaWRsZSBwYWludCBhZnRlciB3ZSBydW4gb3V0IG9mIG1lbW9y
eS4KLSAgICBFWFBFQ1RfRkFMU0UobGF5ZXItPm5lZWRzSWRsZVBhaW50KHZpc2libGVSZWN0KSk7
CisgICAgRVhQRUNUX0ZBTFNFKGxheWVyLT5uZWVkc0lkbGVQYWludCh2aXNpYmxlUmVjdCwgJm9j
Y2x1ZGVkKSk7CiAKICAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRh
dGVyKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwpAQCAt
MzA4LDYgKzMyMCw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaW52YWxpZGF0ZUZy
b21QcmVwYXJlKQogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFk
b3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7
CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgUmVmUHRyPEZh
a2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwgPSBhZG9wdFJlZihuZXcgRmFrZUNDVGlsZWRM
YXllckltcGwoMCkpOworICAgIFJlZ2lvbiBvY2NsdWRlZDsKIAogICAgIEZha2VUZXh0dXJlQWxs
b2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7CiAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0
ZXh0dXJlQWxsb2NhdG9yKTsKQEAgLTMxNSw3ICszMjgsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QsIGludmFsaWRhdGVGcm9tUHJlcGFyZSkKICAgICAvLyBUaGUgdGlsZSBzaXplIGlz
IDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxlcy4K
ICAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAyMDApKTsKICAgICBsYXllci0+aW52
YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwotICAgIGxheWVyLT5wcmVwYXJl
VG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOworICAgIGxheWVyLT5wcmVwYXJlVG9V
cGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksICZvY2NsdWRlZCk7CiAgICAgbGF5ZXItPnVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9w
ZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIApAQCAtMzI4LDE4ICszNDEsMTggQEAgVEVTVChU
aWxlZExheWVyQ2hyb21pdW1UZXN0LCBpbnZhbGlkYXRlRnJvbVByZXBhcmUpCiAgICAgbGF5ZXIt
PmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyUHJlcGFyZUNvdW50KCk7CiAgICAgLy8g
SW52b2tlIHByZXBhcmVUb1VwZGF0ZSBhZ2Fpbi4gQXMgdGhlIGxheWVyIGlzIHZhbGlkIHByZXBh
cmVUb1VwZGF0ZSBzaG91bGRuJ3QgYmUgaW52b2tlZCBvbgogICAgIC8vIHRoZSBMYXllclRleHR1
cmVVcGRhdGVyLgotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAs
IDIwMCkpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIw
MCksICZvY2NsdWRlZCk7CiAgICAgRVhQRUNUX0VRKDAsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJl
VXBkYXRlcigpLT5wcmVwYXJlQ291bnQoKSk7CiAKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3Qo
SW50UmVjdCgwLCAwLCA1MCwgNTApKTsKICAgICAvLyBzZXRSZWN0VG9JbnZhbGlkYXRlIHRyaWdn
ZXJzIGludmFsaWRhdGVSZWN0KCkgYmVpbmcgaW52b2tlZCBmcm9tIHByZXBhcmVUb1VwZGF0ZS4K
ICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0UmVjdFRvSW52YWxpZGF0
ZShJbnRSZWN0KDI1LCAyNSwgNTAsIDUwKSwgbGF5ZXIuZ2V0KCkpOwogICAgIGxheWVyLT5mYWtl
TGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVDb3VudCgpOwotICAgIGxheWVyLT5w
cmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOworICAgIGxheWVyLT5wcmVw
YXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksICZvY2NsdWRlZCk7CiAgICAgRVhQ
RUNUX0VRKDEsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlQ291bnQo
KSk7CiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyUHJlcGFyZUNv
dW50KCk7CiAgICAgLy8gVGhlIGxheWVyIHNob3VsZCBzdGlsbCBiZSBpbnZhbGlkIGFzIHByZXBh
cmVUb1VwZGF0ZSBpbnZva2VkIGludmFsaWRhdGUuCi0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0
ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJ
bnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgJm9jY2x1ZGVkKTsKICAgICBFWFBFQ1RfRVEoMSwgbGF5
ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVDb3VudCgpKTsKIH0KIApAQCAt
MzYzLDU5ICszNzYsMTk1IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgbGF5ZXJBZGRz
U2VsZlRvT2NjbHVkZWRSZWdpb24pCiAgICAgLy8gSWYgdGhlIGxheWVyIGlzIG9wYXF1ZSB0aGVu
IHRoZSBvY2NsdWRlZCByZWdpb24gc2hvdWxkIGJlIHRoZSB3aG9sZSBsYXllcidzIHZpc2libGUg
cmVnaW9uLgogICAgIGxheWVyLT5zZXRPcGFxdWUodHJ1ZSk7CiAgICAgbGF5ZXItPmludmFsaWRh
dGVSZWN0KGNvbnRlbnRCb3VuZHMpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVu
dEJvdW5kcyk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzLCAmb2Nj
bHVkZWQpOwogCiAgICAgb2NjbHVkZWQgPSBSZWdpb24oKTsKICAgICBsYXllci0+YWRkU2VsZlRv
T2NjbHVkZWRSZWdpb24oJm9jY2x1ZGVkKTsKICAgICBFWFBFQ1RfRVEodmlzaWJsZUJvdW5kcywg
b2NjbHVkZWQuYm91bmRzKCkpOwogCiAgICAgLy8gSWYgdGhlIGxheWVyIGlzIG5vdCBvcGFxdWUg
dGhlbiB0aGUgb2NjbHVkZWQgcmVnaW9uIHNob3VsZCBiZSBlbXB0eS4KKyAgICBvY2NsdWRlZCA9
IFJlZ2lvbigpOwogICAgIGxheWVyLT5zZXRPcGFxdWUoZmFsc2UpOwogICAgIGxheWVyLT5pbnZh
bGlkYXRlUmVjdChjb250ZW50Qm91bmRzKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNv
bnRlbnRCb3VuZHMpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcywg
Jm9jY2x1ZGVkKTsKIAogICAgIG9jY2x1ZGVkID0gUmVnaW9uKCk7CiAgICAgbGF5ZXItPmFkZFNl
bGZUb09jY2x1ZGVkUmVnaW9uKCZvY2NsdWRlZCk7CiAgICAgRVhQRUNUX0VRKEludFJlY3QoKSwg
b2NjbHVkZWQuYm91bmRzKCkpOwogCiAgICAgLy8gSWYgdGhlIGxheWVyIHBhaW50cyBvcGFxdWUg
Y29udGVudCwgdGhlbiB0aGUgb2NjbHVkZWQgcmVnaW9uIHNob3VsZCBtYXRjaCB0aGUgdmlzaWJs
ZSBvcGFxdWUgY29udGVudC4KKyAgICBvY2NsdWRlZCA9IFJlZ2lvbigpOwogICAgIEludFJlY3Qg
b3BhcXVlUGFpbnRSZWN0ID0gSW50UmVjdCgxMCwgMTAsIDkwLCAxOTApOwogICAgIGxheWVyLT5m
YWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRPcGFxdWVQYWludFJlY3Qob3BhcXVlUGFpbnRS
ZWN0KTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoY29udGVudEJvdW5kcyk7Ci0gICAgbGF5
ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzKTsKKyAgICBsYXllci0+cHJlcGFyZVRv
VXBkYXRlKGNvbnRlbnRCb3VuZHMsICZvY2NsdWRlZCk7CiAKICAgICBvY2NsdWRlZCA9IFJlZ2lv
bigpOwogICAgIGxheWVyLT5hZGRTZWxmVG9PY2NsdWRlZFJlZ2lvbigmb2NjbHVkZWQpOwogICAg
IEVYUEVDVF9FUShpbnRlcnNlY3Rpb24ob3BhcXVlUGFpbnRSZWN0LCB2aXNpYmxlQm91bmRzKSwg
b2NjbHVkZWQuYm91bmRzKCkpOwogCiAgICAgLy8gSWYgd2UgcGFpbnQgYWdhaW4gd2l0aG91dCBp
bnZhbGlkYXRpbmcsIHRoZSBzYW1lIHN0dWZmIHNob3VsZCBiZSBvY2NsdWRlZC4KKyAgICBvY2Ns
dWRlZCA9IFJlZ2lvbigpOwogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5z
ZXRPcGFxdWVQYWludFJlY3QoSW50UmVjdCgpKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRl
KGNvbnRlbnRCb3VuZHMpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5k
cywgJm9jY2x1ZGVkKTsKIAogICAgIG9jY2x1ZGVkID0gUmVnaW9uKCk7CiAgICAgbGF5ZXItPmFk
ZFNlbGZUb09jY2x1ZGVkUmVnaW9uKCZvY2NsdWRlZCk7CiAgICAgRVhQRUNUX0VRKGludGVyc2Vj
dGlvbihvcGFxdWVQYWludFJlY3QsIHZpc2libGVCb3VuZHMpLCBvY2NsdWRlZC5ib3VuZHMoKSk7
CiAKICAgICAvLyBJZiB0aGUgbGF5ZXIgaXMgdHJhbnNmb3JtZWQgdGhlbiB0aGUgcmVzdWx0aW5n
IG9jY2x1c2VkIGFyZWEgbmVlZHMgdG8gYmUgdHJhbnNmb3JtZWQgdG8gc2NyZWVuIHNwYWNlLgor
ICAgIG9jY2x1ZGVkID0gUmVnaW9uKCk7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNm
b3JtOwogICAgIHRyYW5zZm9ybS5zY2FsZSgyKTsKICAgICB0cmFuc2Zvcm0ucm90YXRlKDkwKTsK
ICAgICBsYXllci0+c2V0U2NyZWVuU3BhY2VUcmFuc2Zvcm0odHJhbnNmb3JtKTsKLSAgICBsYXll
ci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMpOworICAgIGxheWVyLT5wcmVwYXJlVG9V
cGRhdGUoY29udGVudEJvdW5kcywgJm9jY2x1ZGVkKTsKIAogICAgIG9jY2x1ZGVkID0gUmVnaW9u
KCk7CiAgICAgbGF5ZXItPmFkZFNlbGZUb09jY2x1ZGVkUmVnaW9uKCZvY2NsdWRlZCk7CiAgICAg
RVhQRUNUX0VRKHRyYW5zZm9ybS5tYXBSZWN0KGludGVyc2VjdGlvbihvcGFxdWVQYWludFJlY3Qs
IHZpc2libGVCb3VuZHMpKSwgb2NjbHVkZWQuYm91bmRzKCkpOwogCiAgICAgLy8gQnV0IGEgbm9u
LWF4aXMtYWxpZ25lZCB0cmFuc2Zvcm0gZG9lcyBub3QgZ2V0IGNvbnNpZGVyZWQgZm9yIG9jY2x1
c2lvbi4KKyAgICBvY2NsdWRlZCA9IFJlZ2lvbigpOwogICAgIHRyYW5zZm9ybS5yb3RhdGUoNSk7
CiAgICAgbGF5ZXItPnNldFNjcmVlblNwYWNlVHJhbnNmb3JtKHRyYW5zZm9ybSk7Ci0gICAgbGF5
ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzKTsKKyAgICBsYXllci0+cHJlcGFyZVRv
VXBkYXRlKGNvbnRlbnRCb3VuZHMsICZvY2NsdWRlZCk7CiAKICAgICBvY2NsdWRlZCA9IFJlZ2lv
bigpOwogICAgIGxheWVyLT5hZGRTZWxmVG9PY2NsdWRlZFJlZ2lvbigmb2NjbHVkZWQpOwogICAg
IEVYUEVDVF9FUShJbnRSZWN0KCksIG9jY2x1ZGVkLmJvdW5kcygpKTsKK30KKworVEVTVChUaWxl
ZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRob3V0T2NjbHVzaW9uKQoreworICAg
IE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6
Y3JlYXRlKDQqMTAyNCoxMDI0LCAyKjEwMjQqMTAyNCwgMTAyNCk7CisgICAgUmVmUHRyPEZha2VU
aWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hy
b21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKKyAgICBSZWdpb24gb2NjbHVkZWQ7CisKKyAg
ICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRo
ZW4gcGFpbnRzIHR3byB0aWxlcy4KKyAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAy
MDApKTsKKyAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkp
OworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksICZv
Y2NsdWRlZCk7CisgICAgRVhQRUNUX0VRKDIsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRl
cigpLT5wcmVwYXJlUmVjdENvdW50KCkpOworfQorCitURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRl
c3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb24pCit7CisgICAgT3duUHRyPFRleHR1cmVNYW5h
Z2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQs
IDIqMTAyNCoxMDI0LCAxMDI0KTsKKyAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4g
bGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdl
ci5nZXQoKSkpOworICAgIFJlZ2lvbiBvY2NsdWRlZDsKKworICAgIC8vIFRoZSB0aWxlIHNpemUg
aXMgMTAweDEwMC4KKworICAgIG9jY2x1ZGVkID0gSW50UmVjdCgyMDAsIDIwMCwgMzAwLCAxMDAp
OworICAgIGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSg2MDAsIDYwMCkpOworICAgIGxheWVyLT5p
bnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CisgICAgbGF5ZXItPnByZXBh
cmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKKyAgICBFWFBF
Q1RfRVEoMzYtMywgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0
Q291bnQoKSk7CisKKyAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQ
cmVwYXJlUmVjdENvdW50KCk7CisKKyAgICBvY2NsdWRlZCA9IEludFJlY3QoMjUwLCAyMDAsIDMw
MCwgMTAwKTsKKyAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoNjAwLCA2MDApKTsKKyAgICBs
YXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOworICAgIGxheWVy
LT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7Cisg
ICAgRVhQRUNUX0VRKDM2LTIsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVw
YXJlUmVjdENvdW50KCkpOworCisgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCkt
PmNsZWFyUHJlcGFyZVJlY3RDb3VudCgpOworCisgICAgb2NjbHVkZWQgPSBJbnRSZWN0KDI1MCwg
MjUwLCAzMDAsIDEwMCk7CisgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDYwMCwgNjAwKSk7
CisgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKKyAg
ICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVk
ZWQpOworICAgIEVYUEVDVF9FUSgzNiwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCkt
PnByZXBhcmVSZWN0Q291bnQoKSk7Cit9CisKK1RFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
dGlsZXNOb3RQYWludGVkV2l0aG91dEludmFsaWRhdGlvbikKK3sKKyAgICBPd25QdHI8VGV4dHVy
ZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQq
MTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOworICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9t
aXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVN
YW5hZ2VyLmdldCgpKSk7CisgICAgUmVnaW9uIG9jY2x1ZGVkOworCisgICAgLy8gVGhlIHRpbGUg
c2l6ZSBpcyAxMDB4MTAwLgorCisgICAgb2NjbHVkZWQgPSBJbnRSZWN0KDIwMCwgMjAwLCAzMDAs
IDEwMCk7CisgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDYwMCwgNjAwKSk7CisgICAgbGF5
ZXItPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOworICAgIGxh
eWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CisgICAgbGF5ZXIt
PnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKKyAg
ICBFWFBFQ1RfRVEoMzYtMywgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBh
cmVSZWN0Q291bnQoKSk7CisKKyAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+
Y2xlYXJQcmVwYXJlUmVjdENvdW50KCk7CisKKyAgICAvLyBSZXBhaW50IHdpdGhvdXQgbWFya2lu
ZyBpdCBkaXJ0eS4KKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNjAw
LCA2MDApLCAmb2NjbHVkZWQpOworICAgIEVYUEVDVF9FUSgwLCBsYXllci0+ZmFrZUxheWVyVGV4
dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKK30KKworVEVTVChUaWxlZExheWVy
Q2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kVHJhbnNmb3JtcykKK3sK
KyAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFn
ZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOworICAgIFJlZlB0cjxG
YWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXll
ckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CisgICAgUmVnaW9uIG9jY2x1ZGVkOwor
CisgICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLgorCisgICAgLy8gVGhpcyBtYWtlcyBz
dXJlIHRoZSBwYWludGluZyB3b3JrcyB3aGVuIHRoZSBvY2NsdWRlZCByZWdpb24gKGluIHNjcmVl
biBzcGFjZSkKKyAgICAvLyBpcyB0cmFuc2Zvcm1lZCBkaWZmZXJlbnRseSB0aGFuIHRoZSBsYXll
ci4KKyAgICBvY2NsdWRlZCA9IEludFJlY3QoMTAwLCAxMDAsIDE1MCwgNTApOworICAgIGxheWVy
LT5zZXRCb3VuZHMoSW50U2l6ZSg2MDAsIDYwMCkpOworICAgIGxheWVyLT5zZXRTY3JlZW5TcGFj
ZVRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLnNjYWxlKDAuNSkpOworICAgIGxheWVy
LT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXItPmJvdW5kcygp
KSk7CisgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsK
KyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2Nj
bHVkZWQpOworICAgIEVYUEVDVF9FUSgzNi0zLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0
ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKK30KKworVEVTVChUaWxlZExheWVyQ2hyb21pdW1U
ZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kU2NhbGluZykKK3sKKyAgICBPd25QdHI8
VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0
KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOworICAgIFJlZlB0cjxGYWtlVGlsZWRMYXll
ckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRl
eHR1cmVNYW5hZ2VyLmdldCgpKSk7CisgICAgUmVnaW9uIG9jY2x1ZGVkOwogCisgICAgLy8gVGhl
IHRpbGUgc2l6ZSBpcyAxMDB4MTAwLgorCisgICAgbGF5ZXItPnNldENvbnRlbnRzU2NhbGUoMC41
KTsKKworICAgIC8vIFRoaXMgbWFrZXMgc3VyZSB0aGUgcGFpbnRpbmcgd29ya3Mgd2hlbiB0aGUg
Y29udGVudCBzcGFjZSBpcyBzY2FsZWQgdG8KKyAgICAvLyBhIGRpZmZlcmVudCBsYXllciBzcGFj
ZS4gSW4gdGhpcyBjYXNlIHRpbGVzIGFyZSBzY2FsZWQgdG8gYmUgMjAweDIwMAorICAgIC8vIHBp
eGVscywgd2hpY2ggbWVhbnMgbm9uZSBzaG91bGQgYmUgb2NjbHVkZWQuCisgICAgb2NjbHVkZWQg
PSBJbnRSZWN0KDIwMCwgMjAwLCAzMDAsIDEwMCk7CisgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRT
aXplKDYwMCwgNjAwKSk7CisgICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdChJ
bnRQb2ludCgpLCBsYXllci0+Ym91bmRzKCkpKTsKKyAgICBsYXllci0+aW52YWxpZGF0ZVJlY3Qo
SW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50
UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CisgICAgLy8gVGhlIGNvbnRlbnQgaXMg
aGFsZiB0aGUgc2l6ZSBvZiB0aGUgbGF5ZXIgKHNvIHRoZSBudW1iZXIgb2YgdGlsZXMgaXMgZmV3
ZXIpLgorICAgIC8vIEluIHRoaXMgY2FzZSwgdGhlIGNvbnRlbnQgaXMgMzAweDMwMCwgYW5kIHNp
bmNlIHRoZSB0aWxlIHNpemUgaXMgMTAwLCB0aGUKKyAgICAvLyBudW1iZXIgb2YgdGlsZXMgM3gz
LgorICAgIEVYUEVDVF9FUSg5LCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJl
cGFyZVJlY3RDb3VudCgpKTsKKworICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigp
LT5jbGVhclByZXBhcmVSZWN0Q291bnQoKTsKKworICAgIC8vIFRoaXMgbWFrZXMgc3VyZSB0aGUg
cGFpbnRpbmcgd29ya3Mgd2hlbiB0aGUgY29udGVudCBzcGFjZSBpcyBzY2FsZWQgdG8KKyAgICAv
LyBhIGRpZmZlcmVudCBsYXllciBzcGFjZS4gSW4gdGhpcyBjYXNlIHRoZSBvY2NsdWRlZCByZWdp
b24gY2F0Y2hlcyB0aGUKKyAgICAvLyBibG93biB1cCB0aWxlcy4KKyAgICBvY2NsdWRlZCA9IElu
dFJlY3QoMjAwLCAyMDAsIDMwMCwgMjAwKTsKKyAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUo
NjAwLCA2MDApKTsKKyAgICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KEludFBv
aW50KCksIGxheWVyLT5ib3VuZHMoKSkpOworICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRS
ZWN0KDAsIDAsIDYwMCwgNjAwKSk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0
KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKKyAgICBFWFBFQ1RfRVEoOS0xLCBsYXllci0+
ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKKworICAgIGxh
eWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVSZWN0Q291bnQoKTsK
KworICAgIC8vIFRoaXMgbWFrZXMgc3VyZSBjb250ZW50IHNjYWxpbmcgYW5kIHRyYW5zZm9ybXMg
d29yayB0b2dldGhlci4KKyAgICBvY2NsdWRlZCA9IEludFJlY3QoMTAwLCAxMDAsIDE1MCwgMTAw
KTsKKyAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoNjAwLCA2MDApKTsKKyAgICBsYXllci0+
c2V0U2NyZWVuU3BhY2VUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgoKS5zY2FsZSgwLjUp
KTsKKyAgICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KEludFBvaW50KCksIGxh
eWVyLT5ib3VuZHMoKSkpOworICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAs
IDYwMCwgNjAwKSk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYw
MCwgNjAwKSwgJm9jY2x1ZGVkKTsKKyAgICBFWFBFQ1RfRVEoOS0xLCBsYXllci0+ZmFrZUxheWVy
VGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123796</attachid>
            <date>2012-01-24 13:37:19 -0800</date>
            <delta_ts>2012-01-26 11:47:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76838-20120124163717.patch</filename>
            <type>text/plain</type>
            <size>40599</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NjI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTQwZGFiOTBlNDBmNWZj
YmZhMDMyOGY0NGQxOTE4MWEyYzYxNWY4OC4uMWYyYjlhNGVkYjA3MmI4OWEwNzRhOWRiYTFiNzQ4
ZDRjOTViOTRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM2IEBACiAyMDEyLTAxLTIzICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFtjaHJvbWl1bV0gQ3Vs
bCBvY2NsdWRlZCB0aWxlcyBkdXJpbmcgcGFpbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc2ODM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTmV3IHVuaXQgdGVzdHMgaW4gVGlsZWRMYXllckNocm9taXVt
VGVzdC5jcHAKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJE
TGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21p
dW06OnBhaW50Q29udGVudHNJZkRpcnR5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OmlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21p
dW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hy
b21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllckNocm9taXVtOjpwYWludENv
bnRlbnRzSWZEaXJ0eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1h
Z2VMYXllckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6cGFpbnRD
b250ZW50c0lmRGlydHkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6aWRsZVBh
aW50Q29udGVudHNJZkRpcnR5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVnaW9uQ29udGFp
bnNSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRv
VXBkYXRlVGlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpwcmVw
YXJlVG9VcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpwcmVw
YXJlVG9VcGRhdGVJZGxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9U
aWxlZExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVI
b3N0OjpwYWludENvbnRlbnRzSWZEaXJ0eSk6CisKKzIwMTItMDEtMjMgIERhbmEgSmFuc2VucyAg
PGRhbmFrakBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgW2Nocm9taXVtXSBDb21wdXRlIG9jY2x1
c2lvbiBkdXJpbmcgcGFpbnQgbG9vcAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzY4NTgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAwMzM4
ZWNiMjg3ODU3ODVjOGNmMThmZGM5MDA4NTk4Mzc4MGJiY2NiLi45YWQ2MjkwNDllMDQ0MzkxZDA4
MmM0OGRlMDFlODZjZmEyODk2YmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSw1
ICsxLDI5IEBACiAyMDEyLTAxLTIzICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3Jn
PgogCisgICAgICAgIFtjaHJvbWl1bV0gQ3VsbCBvY2NsdWRlZCB0aWxlcyBkdXJpbmcgcGFpbnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2ODM4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0cy9D
Q0xheWVyVHJlZUhvc3RUZXN0LmNwcDoKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21p
dW1XaXRoVXBkYXRlVHJhY2tpbmc6OnBhaW50Q29udGVudHNJZkRpcnR5KToKKyAgICAgICAgKFdU
Rjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OmlkbGVQYWludENvbnRl
bnRzSWZEaXJ0eSk6CisgICAgICAgICogdGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVtVGVzdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW1UZXN0OjpmdWxsTGlm
ZWN5Y2xlVGVzdCk6CisgICAgICAgICogdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHA6
CisgICAgICAgIChXVEY6OkZha2VMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJl
KToKKyAgICAgICAgKFdURjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnByZXBh
cmVSZWN0KToKKyAgICAgICAgKFdURjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OkZha2VMYXll
clRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKFdURjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6
OnNldE9wYXF1ZVBhaW50UmVjdCk6CisgICAgICAgIChXVEY6OkZha2VMYXllclRleHR1cmVVcGRh
dGVyOjpwcmVwYXJlUmVjdENvdW50KToKKyAgICAgICAgKFdURjo6RmFrZUxheWVyVGV4dHVyZVVw
ZGF0ZXI6OmNsZWFyUHJlcGFyZVJlY3RDb3VudCk6CisgICAgICAgIChXVEY6OkZha2VMYXllclRl
eHR1cmVVcGRhdGVyOjpjcmVhdGVUZXh0dXJlKToKKyAgICAgICAgKFdURjo6RmFrZVRpbGVkTGF5
ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKToKKyAgICAgICAgKFdURjo6RmFrZVRpbGVkTGF5
ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWRsZSk6CisgICAgICAgIChXVEY6OlRFU1QpOgor
CisyMDEyLTAxLTIzICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCiAgICAg
ICAgIFtjaHJvbWl1bV0gQ29tcHV0ZSBvY2NsdXNpb24gZHVyaW5nIHBhaW50IGxvb3AKICAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2ODU4CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJE
TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDE1MDVhZGFjMjQzZTA3NjY1ZDJk
ZGFiMjhmNDcwM2ZmOGVmNWI5NDMuLjY3MjY1YmQ1YmEyZDhmMzI4NGFmZDZiOTA0Y2UxMzMxNDM2
NmZmMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcApAQCAtOTEsNyAr
OTEsNyBAQCBib29sIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6ZHJhd3NDb250ZW50KCkgY29uc3QK
ICAgICAgICAgJiYgbV9jb250ZXh0ICYmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+Z2V0
R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpID09IEdyYXBoaWNzQ29udGV4dDNEOjpOT19FUlJPUik7
CiB9CiAKLXZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSgp
Cit2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoY29uc3Qg
UmVnaW9uKiAvKm9jY2x1ZGVkU2NyZWVuU3BhY2UqLykKIHsKICAgICBpZiAoIWRyYXdzQ29udGVu
dCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oCmlu
ZGV4IDgzNjE1YTFmMjIzNTYxNjQ2MmViMWY4ZDQxMjJlMWFkOGU1OGM5MjIuLjM3NTNlY2Y4ZjUz
MjNjZjRlNWY0NzkyYmJkODUwZWQ4MTBjM2JjNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJD
aHJvbWl1bS5oCkBAIC00MCw2ICs0MCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEdyYXBoaWNzQ29udGV4dDNEOworY2xhc3MgUmVnaW9uOwogCiAvLyBBIGxheWVyIGNvbnRhaW5p
bmcgYW4gYWNjZWxlcmF0ZWQgMmQgY2FudmFzCiBjbGFzcyBDYW52YXMyRExheWVyQ2hyb21pdW0g
OiBwdWJsaWMgQ2FudmFzTGF5ZXJDaHJvbWl1bSB7CkBAIC01Miw3ICs1Myw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgY29udGVudENoYW5nZWQoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBk
cmF3c0NvbnRlbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGly
dHkoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9u
KiBvY2NsdWRlZFNjcmVlblNwYWNlKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllclRyZWVI
b3N0KENDTGF5ZXJUcmVlSG9zdCopOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9y
UmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExh
eWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDg0MDM5MGUwMjc5MDgyNTI2YjQxZmIz
ZDg1N2IxZjg0NWEwMThhNjguLmEzZTk1N2Q4OGQ0ZmU1NzljZjIxY2U0NDIzY2JmMDI5Yzc2NTQ0
MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0NvbnRlbnRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTg4LDcgKzg4LDcg
QEAgQ29udGVudExheWVyQ2hyb21pdW06On5Db250ZW50TGF5ZXJDaHJvbWl1bSgpCiB7CiB9CiAK
LXZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KCkKK3ZvaWQg
Q29udGVudExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiog
b2NjbHVkZWRTY3JlZW5TcGFjZSkKIHsKICAgICB1cGRhdGVUaWxlU2l6ZUFuZFRpbGluZ09wdGlv
bigpOwogCkBAIC05OSwxMSArOTksMTEgQEAgdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cGFp
bnRDb250ZW50c0lmRGlydHkoKQogICAgIGlmIChkcmF3c0NvbnRlbnQoKSkKICAgICAgICAgbGF5
ZXJSZWN0ID0gdmlzaWJsZUxheWVyUmVjdCgpOwogCi0gICAgcHJlcGFyZVRvVXBkYXRlKGxheWVy
UmVjdCk7CisgICAgcHJlcGFyZVRvVXBkYXRlKGxheWVyUmVjdCwgb2NjbHVkZWRTY3JlZW5TcGFj
ZSk7CiAgICAgbV9uZWVkc0Rpc3BsYXkgPSBmYWxzZTsKIH0KIAotdm9pZCBDb250ZW50TGF5ZXJD
aHJvbWl1bTo6aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KCkKK3ZvaWQgQ29udGVudExheWVyQ2hy
b21pdW06OmlkbGVQYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24qIG9jY2x1ZGVkU2Ny
ZWVuU3BhY2UpCiB7CiAgICAgaWYgKCFkcmF3c0NvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuOwpA
QCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OmlkbGVQYWludENv
bnRlbnRzSWZEaXJ0eSgpCiAgICAgaWYgKGxheWVyUmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIHByZXBhcmVUb1VwZGF0ZUlkbGUobGF5ZXJSZWN0KTsKKyAgICBwcmVwYXJl
VG9VcGRhdGVJZGxlKGxheWVyUmVjdCwgb2NjbHVkZWRTY3JlZW5TcGFjZSk7CiAgICAgaWYgKG5l
ZWRzSWRsZVBhaW50KGxheWVyUmVjdCkpCiAgICAgICAgIHNldE5lZWRzQ29tbWl0KCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250
ZW50TGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaAppbmRleCBjZmIwZmQ3YzkwNjdjMjE0MGRkMTNk
MzU2ZmJlZjdkZmM5N2UzMmRlLi4xYTliNWQ4MjY1YzNhOTIzMWU3ZjEyNDA2NTM5MWMxZDhiMDc1
YWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKQEAgLTQxLDYgKzQxLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBMYXllclRpbGVyQ2hyb21pdW07CiBjbGFzcyBM
YXllclRleHR1cmVVcGRhdGVyOworY2xhc3MgUmVnaW9uOwogCiBjbGFzcyBDb250ZW50TGF5ZXJE
ZWxlZ2F0ZSB7CiBwdWJsaWM6CkBAIC01Nyw4ICs1OCw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
Y2xlYXJEZWxlZ2F0ZSgpIHsgbV9kZWxlZ2F0ZSA9IDA7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBw
YWludENvbnRlbnRzSWZEaXJ0eSgpOwotICAgIHZpcnR1YWwgdm9pZCBpZGxlUGFpbnRDb250ZW50
c0lmRGlydHkoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoY29uc3Qg
UmVnaW9uKiBvY2NsdWRlZFNjcmVlblNwYWNlKTsKKyAgICB2aXJ0dWFsIHZvaWQgaWRsZVBhaW50
Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiogb2NjbHVkZWRTY3JlZW5TcGFjZSk7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0T3BhcXVlKGJvb2wpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9t
aXVtLmNwcAppbmRleCAwMTU0ZmIyODMxNGYzZTZjOTI0MDQ3YmI0ODM2NzM2OTJkZmNmYWI3Li5l
Njc0NGI3MmMyM2EwZGNiNzRlMTgwNmJlNjVhNmZmNzdkOTJmYmZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdl
TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lkIEltYWdlTGF5ZXJDaHJv
bWl1bTo6c2V0Q29udGVudHMoSW1hZ2UqIGNvbnRlbnRzKQogICAgIHNldE5lZWRzRGlzcGxheSgp
OwogfQogCi12b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoKQor
dm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lv
biogb2NjbHVkZWRTY3JlZW5TcGFjZSkKIHsKICAgICBpZiAobV9uZWVkc0Rpc3BsYXkpIHsKICAg
ICAgICAgbV90ZXh0dXJlVXBkYXRlci0+dXBkYXRlRnJvbUltYWdlKG1fY29udGVudHMtPm5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgSW1hZ2VM
YXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSgpCiAgICAgICAgIG1fbmVlZHNEaXNw
bGF5ID0gZmFsc2U7CiAgICAgfQogCi0gICAgcHJlcGFyZVRvVXBkYXRlKHZpc2libGVMYXllclJl
Y3QoKSk7CisgICAgcHJlcGFyZVRvVXBkYXRlKHZpc2libGVMYXllclJlY3QoKSwgb2NjbHVkZWRT
Y3JlZW5TcGFjZSk7CiB9CiAKIExheWVyVGV4dHVyZVVwZGF0ZXIqIEltYWdlTGF5ZXJDaHJvbWl1
bTo6dGV4dHVyZVVwZGF0ZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaAppbmRl
eCBkNzEyOTI0NTFjMzU1NWVhZjBjMTZjZjlmMmMzZjM5NWJlMDc1MzA0Li5mMjNkOTVmYjAzOTJl
OGE1NmM3NjcwNmI2YzEyMDgxMjc4MmFmYmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0u
aApAQCAtNDUsNiArNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEltYWdlOwog
Y2xhc3MgSW1hZ2VMYXllclRleHR1cmVVcGRhdGVyOworY2xhc3MgUmVnaW9uOwogCiAvLyBBIExh
eWVyIHRoYXQgY29udGFpbnMgb25seSBhbiBJbWFnZSBlbGVtZW50LgogY2xhc3MgSW1hZ2VMYXll
ckNocm9taXVtIDogcHVibGljIFRpbGVkTGF5ZXJDaHJvbWl1bSB7CkBAIC01Myw3ICs1NCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JbWFnZUxheWVyQ2hyb21pdW0oKTsKIAogICAgIHZpcnR1
YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250
ZW50c0lmRGlydHkoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoY29u
c3QgUmVnaW9uKiBvY2NsdWRlZFNjcmVlblNwYWNlKTsKICAgICB2aXJ0dWFsIGJvb2wgbmVlZHND
b250ZW50c1NjYWxlKCkgY29uc3Q7CiAKICAgICB2b2lkIHNldENvbnRlbnRzKEltYWdlKiBpbWFn
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllckNocm9taXVtLmgKaW5kZXggOGJjMTNiOWQ5YTdkZDZjMjNlZTc4ZTA3NGZiOGIz
N2QzZmIyYWNlYy4uZmQxZDc5YzcwYmIzMjRiYmViNzNhMzZlZGVhNTRhNTlmN2NlMWI3NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJD
aHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyQ2hyb21pdW0uaApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiUHJvZ3JhbUJp
bmRpbmcuaCIKKyNpbmNsdWRlICJSZWdpb24uaCIKICNpbmNsdWRlICJSZW5kZXJTdXJmYWNlQ2hy
b21pdW0uaCIKICNpbmNsdWRlICJTaGFkZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlRyYW5zZm9y
bWF0aW9uTWF0cml4LmgiCkBAIC0xNTQsOCArMTU1LDggQEAgcHVibGljOgogCiAgICAgLy8gVGhl
c2UgbWV0aG9kcyB0eXBpY2FsbHkgbmVlZCB0byBiZSBvdmVyd3JpdHRlbiBieSBkZXJpdmVkIGNs
YXNzZXMuCiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNEcmF3YWJsZTsgfQotICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eSgpIHsg
fQotICAgIHZpcnR1YWwgdm9pZCBpZGxlUGFpbnRDb250ZW50c0lmRGlydHkoKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uKiAvKiBvY2NsdWRl
ZFNjcmVlblNwYWNlICovKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaWRsZVBhaW50Q29udGVudHNJ
ZkRpcnR5KGNvbnN0IFJlZ2lvbiogLyogb2NjbHVkZWRTY3JlZW5TcGFjZSAqLykgeyB9CiAgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0Qq
LCBDQ1RleHR1cmVVcGRhdGVyJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldElzTWFzayhib29s
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgdW5yZXNlcnZlQ29udGVudHNUZXh0dXJlKCkgeyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxl
ZExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcAppbmRleCBkNGY0ZDRmOTM3MjFmZWQxZGU2OGVm
ZGI4ZmMxMTNiMzQ2ODk2ZTY2Li42ZGY5ZjlkNWUwYTYzMmZiNzFhZmVjYjgxODQ2NjA4ZDcxOWQ5
YjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTM2Miw3ICszNjIsMTkg
QEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByb3RlY3RUaWxlVGV4dHVyZXMoY29uc3QgSW50
UmVjdCYgbGF5ZXJSZWN0KQogICAgIH0KIH0KIAotdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnBy
ZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wgaWRsZSwgaW50IGxlZnQsIGludCB0b3AsIGludCByaWdo
dCwgaW50IGJvdHRvbSkKK3N0YXRpYyBib29sIHJlZ2lvbkNvbnRhaW5zUmVjdChjb25zdCBSZWdp
b24qIHJlZ2lvbiwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBSZWdpb24gcmVjdFJlZ2lv
bihyZWN0KTsKKyAgICBSZWdpb24gaW50ZXJzZWN0UmVnaW9uKGludGVyc2VjdCgqcmVnaW9uLCBy
ZWN0UmVnaW9uKSk7CisKKyAgICBpZiAoaW50ZXJzZWN0UmVnaW9uLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgcmVjdFJlZ2lvbi5zdWJ0cmFjdChpbnRlcnNlY3RSZWdp
b24pOworICAgIHJldHVybiByZWN0UmVnaW9uLmlzRW1wdHkoKTsKK30KKwordm9pZCBUaWxlZExh
eWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wgaWRsZSwgaW50IGxlZnQsIGlu
dCB0b3AsIGludCByaWdodCwgaW50IGJvdHRvbSwgY29uc3QgUmVnaW9uKiBvY2NsdWRlZFNjcmVl
blNwYWNlKQogewogICAgIC8vIFJlc2V0IG1fdXBkYXRlUmVjdCBmb3IgYWxsIHRpbGVzLgogICAg
IGZvciAoQ0NMYXllclRpbGluZ0RhdGE6OlRpbGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBt
X3RpbGVyLT50aWxlcygpLmJlZ2luKCk7IGl0ZXIgIT0gbV90aWxlci0+dGlsZXMoKS5lbmQoKTsg
KytpdGVyKSB7CkBAIC0zNzAsNiArMzgyLDkgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnBy
ZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wgaWRsZSwgaW50IGxlZnQsIGludCB0b3AsIGludAogICAg
ICAgICB0aWxlLT5tX3VwZGF0ZVJlY3QgPSBJbnRSZWN0KCk7CiAgICAgfQogCisgICAgLy8gVGls
ZXMgYXJlIGluIGNvbnRlbnQgc3BhY2UsIHRoZSBvY2NsdWRlZCByZWdpb24gaXMgaW4gc2NyZWVu
IHNwYWNlLgorICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNvbnRlbnRUb1NjcmVlblNwYWNlID0g
Y29udGVudFRvU2NyZWVuU3BhY2VUcmFuc2Zvcm0oKTsKKwogICAgIC8vIENyZWF0ZSB0aWxlcyBh
cyBuZWVkZWQsIGV4cGFuZGluZyBhIGRpcnR5IHJlY3QgdG8gY29udGFpbiBhbGwKICAgICAvLyB0
aGUgZGlydHkgcmVnaW9ucyBjdXJyZW50bHkgYmVpbmcgZHJhd24uIEFsbCBkaXJ0eSB0aWxlcyB0
aGF0IGFyZSB0byBiZSBwYWludGVkCiAgICAgLy8gZ2V0IHRoZWlyIG1fdXBkYXRlUmVjdCBzZXQg
dG8gbV9kaXJ0eVJlY3QgYW5kIG1fZGlydHlSZWN0IGNsZWFyZWQuIFRoaXMgd2F5IGlmCkBAIC0z
ODEsMTMgKzM5NiwyMiBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRl
VGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50CiAgICAgICAgICAgICBpZiAo
IXRpbGUpCiAgICAgICAgICAgICAgICAgdGlsZSA9IGNyZWF0ZVRpbGUoaSwgaik7CiAKKyAgICAg
ICAgICAgIC8vIFdoZW4gbm90IGlkbGUgcGFpbnRpbmcsIGlmIHRoZSB0aWxlIGlzIG9jY2x1ZGVk
IGRvbid0IHJlc2VydmUgYSB0ZXh0dXJlIG9yIG1hcmsgaXQgZm9yIHVwZGF0ZS4gVGhpcyB3aWxs
IGFsc28gYXZvaWQgcGFpbnRpbmcKKyAgICAgICAgICAgIC8vIHRoZSB0aWxlIGluIHRoZSBuZXh0
IGxvb3AsIGJlbG93LgorICAgICAgICAgICAgaWYgKCFpZGxlKSB7CisgICAgICAgICAgICAgICAg
SW50UmVjdCB0aWxlUmVjdCA9IG1fdGlsZXItPnRpbGVCb3VuZHMoaSwgaik7CisgICAgICAgICAg
ICAgICAgaWYgKHJlZ2lvbkNvbnRhaW5zUmVjdChvY2NsdWRlZFNjcmVlblNwYWNlLCBjb250ZW50
VG9TY3JlZW5TcGFjZS5tYXBSZWN0KHRpbGVSZWN0KSkpCisgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAvLyBEbyBwb3N0IGNvbW1pdCBk
ZWxldGlvbiBvZiBjdXJyZW50IHRleHR1cmUgd2hlbiBwYXJ0aWFsIHRleHR1cmUKICAgICAgICAg
ICAgIC8vIHVwZGF0ZXMgYXJlIG5vdCB1c2VkLgogICAgICAgICAgICAgaWYgKHRpbGUtPmlzRGly
dHkoKSAmJiBsYXllclRyZWVIb3N0KCkgJiYgIWxheWVyVHJlZUhvc3QoKS0+c2V0dGluZ3MoKS5w
YXJ0aWFsVGV4dHVyZVVwZGF0ZXMpCiAgICAgICAgICAgICAgICAgbGF5ZXJUcmVlSG9zdCgpLT5k
ZWxldGVUZXh0dXJlQWZ0ZXJDb21taXQodGlsZS0+bWFuYWdlZFRleHR1cmUoKS0+c3RlYWwoKSk7
CiAKKyAgICAgICAgICAgIEludFJlY3QgZml4ZWRTaXplVGlsZVJlY3RXaXRoQm9yZGVycyA9IG1f
dGlsZXItPnRpbGVSZWN0KHRpbGUpOwogICAgICAgICAgICAgaWYgKCF0aWxlLT5tYW5hZ2VkVGV4
dHVyZSgpLT5pc1ZhbGlkKG1fdGlsZXItPnRpbGVTaXplKCksIG1fdGV4dHVyZUZvcm1hdCkpCi0g
ICAgICAgICAgICAgICAgdGlsZS0+bV9kaXJ0eVJlY3QgPSBtX3RpbGVyLT50aWxlUmVjdCh0aWxl
KTsKKyAgICAgICAgICAgICAgICB0aWxlLT5tX2RpcnR5UmVjdCA9IGZpeGVkU2l6ZVRpbGVSZWN0
V2l0aEJvcmRlcnM7CiAKICAgICAgICAgICAgIGlmICghdGlsZS0+bWFuYWdlZFRleHR1cmUoKS0+
cmVzZXJ2ZShtX3RpbGVyLT50aWxlU2l6ZSgpLCBtX3RleHR1cmVGb3JtYXQpKSB7CiAgICAgICAg
ICAgICAgICAgbV9za2lwc0lkbGVQYWludCA9IHRydWU7CkBAIC00MzcsNyArNDYxLDcgQEAgdm9p
ZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wgaWRsZSwgaW50
IGxlZnQsIGludCB0b3AsIGludAogICAgICAgICAgICAgaWYgKHRpbGVQYWludGVkT3BhcXVlUmVj
dCAhPSB0aWxlUGFpbnRlZFJlY3QgfHwgIXRpbGUtPm1fb3BhcXVlUmVjdC5jb250YWlucyh0aWxl
UGFpbnRlZE9wYXF1ZVJlY3QpKQogICAgICAgICAgICAgICAgIHRpbGUtPm1fb3BhcXVlUmVjdCA9
IHRpbGVQYWludGVkT3BhcXVlUmVjdDsKIAotICAgICAgICAgICAgLy8gVXNlIG1fdXBkYXRlUmVj
dCBhcyBjb3B5QW5kQ2xlYXJEaXJ0eSBhYm92ZSBtb3ZlZCB0aGUgZXhpc3RpbmcgZGlydHkgcmVj
dCB0byBtX3VwZGF0ZVJlY3QuCisgICAgICAgICAgICAvLyBVc2UgbV91cGRhdGVSZWN0IGFzIGNv
cHlBbmRDbGVhckRpcnR5IGFib3ZlIG1vdmVkIHRoZSBleGlzdGluZyBkaXJ0eSByZWN0IHRvIG1f
dXBkYXRlUmVjdCBpZiB0aGUgdGlsZSBpc24ndCBjdWxsZWQuCiAgICAgICAgICAgICBjb25zdCBJ
bnRSZWN0JiBkaXJ0eVJlY3QgPSB0aWxlLT5tX3VwZGF0ZVJlY3Q7CiAgICAgICAgICAgICBpZiAo
ZGlydHlSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTUwNCw3
ICs1MjgsNyBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6YWRkU2VsZlRvT2NjbHVkZWRSZWdp
b24oUmVnaW9uKiBvY2NsdWRlZFNjcmVlblNwYWNlKQogCiB9CiAKLXZvaWQgVGlsZWRMYXllckNo
cm9taXVtOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQordm9pZCBU
aWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBsYXllclJl
Y3QsIGNvbnN0IFJlZ2lvbiogb2NjbHVkZWRTY3JlZW5TcGFjZSkKIHsKICAgICBtX3NraXBzRHJh
dyA9IGZhbHNlOwogICAgIG1fc2tpcHNJZGxlUGFpbnQgPSBmYWxzZTsKQEAgLTUxOSwxMCArNTQz
LDEwIEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50
UmVjdCYgbGF5ZXJSZWN0KQogICAgIGludCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b207CiAgICAg
bV90aWxlci0+bGF5ZXJSZWN0VG9UaWxlSW5kaWNlcyhsYXllclJlY3QsIGxlZnQsIHRvcCwgcmln
aHQsIGJvdHRvbSk7CiAKLSAgICBwcmVwYXJlVG9VcGRhdGVUaWxlcyhmYWxzZSwgbGVmdCwgdG9w
LCByaWdodCwgYm90dG9tKTsKKyAgICBwcmVwYXJlVG9VcGRhdGVUaWxlcyhmYWxzZSwgbGVmdCwg
dG9wLCByaWdodCwgYm90dG9tLCBvY2NsdWRlZFNjcmVlblNwYWNlKTsKIH0KIAotdm9pZCBUaWxl
ZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlkbGUoY29uc3QgSW50UmVjdCYgbGF5ZXJS
ZWN0KQordm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlkbGUoY29uc3Qg
SW50UmVjdCYgbGF5ZXJSZWN0LCBjb25zdCBSZWdpb24qIG9jY2x1ZGVkU2NyZWVuU3BhY2UpCiB7
CiAgICAgLy8gQWJvcnQgaWYgd2UgaGF2ZSBhbHJlYWR5IHByZXBhcmVkIGEgcGFpbnQgb3IgcnVu
IG91dCBvZiBtZW1vcnkuCiAgICAgaWYgKG1fc2tpcHNJZGxlUGFpbnQgfHwgIW1fcGFpbnRSZWN0
LmlzRW1wdHkoKSkKQEAgLTU0MCwzMyArNTY0LDM5IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVt
OjpwcmVwYXJlVG9VcGRhdGVJZGxlKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCkKICAgICBJbnRS
ZWN0IGlkbGVQYWludExheWVyUmVjdCA9IGlkbGVQYWludFJlY3QobGF5ZXJSZWN0KTsKICAgICBw
cm90ZWN0VGlsZVRleHR1cmVzKGlkbGVQYWludExheWVyUmVjdCk7CiAKLSAgICAvLyBFeHBhbmQg
b3V0d2FyZHMgdW50aWwgd2UgZmluZCBhIGRpcnR5IHJvdyBvciBjb2x1bW4gdG8gdXBkYXRlLgog
ICAgIGludCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b207CiAgICAgbV90aWxlci0+bGF5ZXJSZWN0
VG9UaWxlSW5kaWNlcyhsYXllclJlY3QsIGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSk7CisKKyAg
ICAvLyBQcmVwYWludCBhbnl0aGluZyB0aGF0IHdhcyBvY2NsdWRlZCBidXQgaW5zaWRlIHRoZSBs
YXllcidzIHZpc2libGUgcmVnaW9uLgorICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKHRydWUsIGxl
ZnQsIGJvdHRvbSwgcmlnaHQsIGJvdHRvbSwgb2NjbHVkZWRTY3JlZW5TcGFjZSk7CisgICAgaWYg
KCFtX3BhaW50UmVjdC5pc0VtcHR5KCkgfHwgbV9za2lwc0lkbGVQYWludCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgLy8gRXhwYW5kIG91dHdhcmRzIHVudGlsIHdlIGZpbmQgYSBkaXJ0eSByb3cg
b3IgY29sdW1uIHRvIHVwZGF0ZS4KICAgICBpbnQgcHJlcGFpbnRMZWZ0LCBwcmVwYWludFRvcCwg
cHJlcGFpbnRSaWdodCwgcHJlcGFpbnRCb3R0b207CiAgICAgbV90aWxlci0+bGF5ZXJSZWN0VG9U
aWxlSW5kaWNlcyhpZGxlUGFpbnRMYXllclJlY3QsIHByZXBhaW50TGVmdCwgcHJlcGFpbnRUb3As
IHByZXBhaW50UmlnaHQsIHByZXBhaW50Qm90dG9tKTsKICAgICB3aGlsZSAoIW1fc2tpcHNJZGxl
UGFpbnQgJiYgKGxlZnQgPiBwcmVwYWludExlZnQgfHwgdG9wID4gcHJlcGFpbnRUb3AgfHwgcmln
aHQgPCBwcmVwYWludFJpZ2h0IHx8IGJvdHRvbSA8IHByZXBhaW50Qm90dG9tKSkgewogICAgICAg
ICBpZiAoYm90dG9tIDwgcHJlcGFpbnRCb3R0b20pIHsKICAgICAgICAgICAgICsrYm90dG9tOwot
ICAgICAgICAgICAgcHJlcGFyZVRvVXBkYXRlVGlsZXModHJ1ZSwgbGVmdCwgYm90dG9tLCByaWdo
dCwgYm90dG9tKTsKKyAgICAgICAgICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKHRydWUsIGxlZnQs
IGJvdHRvbSwgcmlnaHQsIGJvdHRvbSwgb2NjbHVkZWRTY3JlZW5TcGFjZSk7CiAgICAgICAgICAg
ICBpZiAoIW1fcGFpbnRSZWN0LmlzRW1wdHkoKSB8fCBtX3NraXBzSWRsZVBhaW50KQogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGlmICh0b3AgPiBwcmVwYWludFRv
cCkgewogICAgICAgICAgICAgLS10b3A7Ci0gICAgICAgICAgICBwcmVwYXJlVG9VcGRhdGVUaWxl
cyh0cnVlLCBsZWZ0LCB0b3AsIHJpZ2h0LCB0b3ApOworICAgICAgICAgICAgcHJlcGFyZVRvVXBk
YXRlVGlsZXModHJ1ZSwgbGVmdCwgdG9wLCByaWdodCwgdG9wLCBvY2NsdWRlZFNjcmVlblNwYWNl
KTsKICAgICAgICAgICAgIGlmICghbV9wYWludFJlY3QuaXNFbXB0eSgpIHx8IG1fc2tpcHNJZGxl
UGFpbnQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGxl
ZnQgPiBwcmVwYWludExlZnQpIHsKICAgICAgICAgICAgIC0tbGVmdDsKLSAgICAgICAgICAgIHBy
ZXBhcmVUb1VwZGF0ZVRpbGVzKHRydWUsIGxlZnQsIHRvcCwgbGVmdCwgYm90dG9tKTsKKyAgICAg
ICAgICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKHRydWUsIGxlZnQsIHRvcCwgbGVmdCwgYm90dG9t
LCBvY2NsdWRlZFNjcmVlblNwYWNlKTsKICAgICAgICAgICAgIGlmICghbV9wYWludFJlY3QuaXNF
bXB0eSgpIHx8IG1fc2tpcHNJZGxlUGFpbnQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKHJpZ2h0IDwgcHJlcGFpbnRSaWdodCkgewogICAgICAgICAgICAg
KytyaWdodDsKLSAgICAgICAgICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKHRydWUsIHJpZ2h0LCB0
b3AsIHJpZ2h0LCBib3R0b20pOworICAgICAgICAgICAgcHJlcGFyZVRvVXBkYXRlVGlsZXModHJ1
ZSwgcmlnaHQsIHRvcCwgcmlnaHQsIGJvdHRvbSwgb2NjbHVkZWRTY3JlZW5TcGFjZSk7CiAgICAg
ICAgICAgICBpZiAoIW1fcGFpbnRSZWN0LmlzRW1wdHkoKSB8fCBtX3NraXBzSWRsZVBhaW50KQog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1
bS5oCmluZGV4IDFjZDI3ZTVmNjIzMDhmNTQ1ZDQzYWExZmIyNWQ2NTQxMTRhNTk5MzEuLjY5ODI3
YWVkMmEyNTc1YmUzMGNmOWZlMTRkZmY1MTBkNjcwMzFlYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJD
aHJvbWl1bS5oCkBAIC04MywxMCArODMsMTAgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgaW52YWxp
ZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KTsKIAogICAgIC8vIFByZXBhcmUgZGF0
YSBuZWVkZWQgdG8gdXBkYXRlIHRleHR1cmVzIHRoYXQgaW50ZXJzZWN0IHdpdGggbGF5ZXJSZWN0
LgotICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCk7Cisg
ICAgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0LCBjb25zdCBS
ZWdpb24qIG9jY2x1ZGVkU2NyZWVuU3BhY2UpOwogCiAgICAgLy8gU2FtZSBhcyBhYm92ZSwgYnV0
IHRoaXMgd2lsbCB0cnkgdG8gcGFpbnQgYWRkaXRpb25hbCBzdXJyb3VuZGluZyBjb250ZW50IGlm
IGlkbGUuCi0gICAgdm9pZCBwcmVwYXJlVG9VcGRhdGVJZGxlKGNvbnN0IEludFJlY3QmIGxheWVy
UmVjdCk7CisgICAgdm9pZCBwcmVwYXJlVG9VcGRhdGVJZGxlKGNvbnN0IEludFJlY3QmIGxheWVy
UmVjdCwgY29uc3QgUmVnaW9uKiBvY2NsdWRlZFNjcmVlblNwYWNlKTsKIAogICAgIC8vIEFmdGVy
IHByZXBhcmluZyBhbiB1cGRhdGUsIHJldHVybnMgdHJ1ZSBpZiBtb3JlIHByZS1wYWludGluZyBp
cyBuZWVkZWQuCiAgICAgYm9vbCBuZWVkc0lkbGVQYWludChjb25zdCBJbnRSZWN0JiBsYXllclJl
Y3QpOwpAQCAtMTAzLDcgKzEwMyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVUaWxlcklm
TmVlZGVkKCk7CiAgICAgdm9pZCBzZXRUaWxpbmdPcHRpb24oVGlsaW5nT3B0aW9uKTsKIAotICAg
IHZvaWQgcHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwg
aW50IHJpZ2h0LCBpbnQgYm90dG9tKTsKKyAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZVRpbGVzKGJv
b2wgaWRsZSwgaW50IGxlZnQsIGludCB0b3AsIGludCByaWdodCwgaW50IGJvdHRvbSwgY29uc3Qg
UmVnaW9uKiBvY2NsdWRlZFNjcmVlblNwYWNlKTsKICAgICBJbnRSZWN0IGlkbGVQYWludFJlY3Qo
Y29uc3QgSW50UmVjdCYgdmlzaWJsZUxheWVyUmVjdCk7CiAKICAgICBVcGRhdGFibGVUaWxlKiB0
aWxlQXQoaW50LCBpbnQpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5k
ZXggZjZmY2IyMDFhM2U0MjBlMWNlZGIyMGRlNDIyNzdkMTUyNjFmMGNmMi4uYmJlZjNhM2ZlOGY4
Nzg5YWYyYWYxNjRmMjc5OGUyMTUwNGNlYjIzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3QuY3BwCkBAIC00MDgsOSArNDA4LDkgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50Q29u
dGVudHNJZkRpcnR5KExheWVyQ2hyb21pdW0qIGxheWVyLCBQYWludFR5cGUgcGFpbnQKICAgICBB
U1NFUlQobGF5ZXIpOwogICAgIEFTU0VSVChQYWludFZpc2libGUgPT0gcGFpbnRUeXBlIHx8IFBh
aW50SWRsZSA9PSBwYWludFR5cGUpOwogICAgIGlmIChQYWludFZpc2libGUgPT0gcGFpbnRUeXBl
KQotICAgICAgICBsYXllci0+cGFpbnRDb250ZW50c0lmRGlydHkoKTsKKyAgICAgICAgbGF5ZXIt
PnBhaW50Q29udGVudHNJZkRpcnR5KG9jY2x1ZGVkU2NyZWVuU3BhY2UpOwogICAgIGVsc2UKLSAg
ICAgICAgbGF5ZXItPmlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSgpOworICAgICAgICBsYXllci0+
aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KG9jY2x1ZGVkU2NyZWVuU3BhY2UpOwogCiAgICAgLy8g
QWRkIHRoZSBsYXllcidzIG9jY2x1c2lvbiB0byB0aGUgYWNjdW11bGF0ZWQgcmVnaW9uIGZvciB0
aGUgbmV4dCBsYXllciB0byBiZSBhYmxlIHRvIHVzZSBmb3IgY3VsbGluZy4KICAgICBsYXllci0+
YWRkU2VsZlRvT2NjbHVkZWRSZWdpb24ob2NjbHVkZWRTY3JlZW5TcGFjZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAppbmRl
eCA1OGRlNzU5YmIzMzkzYjVkZTdkOTg2MjA2YjdjZWY5M2Y3YWEyZDcxLi5iMDNhMzQ3YzEwY2I2
ZDI1ZjI5MjcwZGFlMWI0MDk1M2ZjZWY2ZWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKQEAgLTk5NywxNSArOTk3LDE1
IEBAIHB1YmxpYzoKICAgICBpbnQgdXBkYXRlQ291bnQoKSB7IHJldHVybiBtX3VwZGF0ZUNvdW50
OyB9CiAgICAgdm9pZCByZXNldFVwZGF0ZUNvdW50KCkgeyBtX3VwZGF0ZUNvdW50ID0gMDsgfQog
Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KCkKKyAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uKiBvY2NsdWRlZCkKICAgICB7Ci0g
ICAgICAgIENvbnRlbnRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSgpOworICAg
ICAgICBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkob2NjbHVkZWQp
OwogICAgICAgICBtX3BhaW50Q29udGVudHNDb3VudCsrOwogICAgIH0KIAotICAgIHZpcnR1YWwg
dm9pZCBpZGxlUGFpbnRDb250ZW50c0lmRGlydHkoKQorICAgIHZpcnR1YWwgdm9pZCBpZGxlUGFp
bnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uKiBvY2NsdWRlZCkKICAgICB7Ci0gICAgICAg
IENvbnRlbnRMYXllckNocm9taXVtOjppZGxlUGFpbnRDb250ZW50c0lmRGlydHkoKTsKKyAgICAg
ICAgQ29udGVudExheWVyQ2hyb21pdW06OmlkbGVQYWludENvbnRlbnRzSWZEaXJ0eShvY2NsdWRl
ZCk7CiAgICAgICAgIG1faWRsZVBhaW50Q29udGVudHNDb3VudCsrOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1U
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckNocm9t
aXVtVGVzdC5jcHAKaW5kZXggZjBiNWM0MTFiNjU2YWVkZTc1OTU3MTBlNGQ4Y2ZkN2QyNGRiNTMz
Yy4uNGQ4MmJmOTFhZjJlNWI3NGM2YzFkYjVlMGMzZWMzYzdjYjExNjJiNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1
bVRlc3QuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ0NTY2hlZHVsZXJUZXN0Q29t
bW9uLmgiCiAjaW5jbHVkZSAiRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgiCisjaW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5jbHVk
ZSAiVGV4dHVyZU1hbmFnZXIuaCIKICNpbmNsdWRlICJjYy9DQ0NhbnZhc0xheWVySW1wbC5oIgog
I2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIKQEAgLTEzNiw5ICsxMzcsMTEgQEAg
cHJvdGVjdGVkOgogICAgICAgICBjYW52YXMtPnNldEJvdW5kcyhJbnRTaXplKDYwMCwgMzAwKSk7
CiAgICAgICAgIGNhbnZhcy0+c2V0VGV4dHVyZUlkKGJhY2tUZXh0dXJlSWQpOwogCisgICAgICAg
IFJlZ2lvbiBvY2NsdWRlZDsKKwogICAgICAgICBjYW52YXMtPmNvbnRlbnRDaGFuZ2VkKCk7CiAg
ICAgICAgIEVYUEVDVF9UUlVFKGNhbnZhcy0+bmVlZHNEaXNwbGF5KCkpOwotICAgICAgICBjYW52
YXMtPnBhaW50Q29udGVudHNJZkRpcnR5KCk7CisgICAgICAgIGNhbnZhcy0+cGFpbnRDb250ZW50
c0lmRGlydHkoJm9jY2x1ZGVkKTsKICAgICAgICAgRVhQRUNUX0ZBTFNFKGNhbnZhcy0+bmVlZHNE
aXNwbGF5KCkpOwogICAgICAgICB7CiAgICAgICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJl
YWQgc2NvcGVkSW1wbFRocmVhZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IDVkYTg1ZDNiZmY2MzAzMWRm
MmFhNmQwNDdjOWI5YWEwODQxNTVkYjguLjNhNzdjNzhhMDA4NTIzYjYzMDIyZGRjYmNjMmJiMTFh
ZDg3ODE1ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRM
YXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9U
aWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtNTEsMzQgKzUxLDQzIEBAIGNsYXNzIEZha2VM
YXllclRleHR1cmVVcGRhdGVyIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXIgewogcHVibGlj
OgogICAgIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVy
ZSB7CiAgICAgcHVibGljOgotICAgICAgICBUZXh0dXJlKFBhc3NPd25QdHI8TWFuYWdlZFRleHR1
cmU+IHRleHR1cmUpIDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJlKSB7IH0K
KyAgICAgICAgVGV4dHVyZShQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlLCBGYWtl
TGF5ZXJUZXh0dXJlVXBkYXRlciogdXBkYXRlcikgOiBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlKHRleHR1cmUpLCBtX3VwZGF0ZXIodXBkYXRlcikgeyB9CiAgICAgICAgIHZpcnR1YWwgflRl
eHR1cmUoKSB7IH0KIAogICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0Nv
bnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVj
dCYpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVJlY3QoY29uc3QgSW50UmVjdCYp
IHsgKyttX3VwZGF0ZXItPm1fcHJlcGFyZVJlY3RDb3VudDsgfQorCisgICAgcHJpdmF0ZToKKyAg
ICAgICAgRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIqIG1fdXBkYXRlcjsKICAgICB9OwogCi0gICAg
RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKSA6IG1fcHJlcGFyZUNvdW50KDApIHsgfQorICAgIEZh
a2VMYXllclRleHR1cmVVcGRhdGVyKCkgOiBtX3ByZXBhcmVDb3VudCgwKSwgbV9wcmVwYXJlUmVj
dENvdW50KDApIHsgfQogICAgIHZpcnR1YWwgfkZha2VMYXllclRleHR1cmVVcGRhdGVyKCkgeyB9
CiAKICAgICAvLyBTZXRzIHRoZSByZWN0IHRvIGludmFsaWRhdGUgZHVyaW5nIHRoZSBuZXh0IGNh
bGwgdG8gcHJlcGFyZVRvVXBkYXRlKCkuIEFmdGVyIHRoZSBuZXh0CiAgICAgLy8gY2FsbCB0byBw
cmVwYXJlVG9VcGRhdGUoKSB0aGUgcmVjdCBpcyByZXNldC4KICAgICB2b2lkIHNldFJlY3RUb0lu
dmFsaWRhdGUoY29uc3QgSW50UmVjdCYsIEZha2VUaWxlZExheWVyQ2hyb21pdW0qKTsKIAorICAg
IHZvaWQgc2V0T3BhcXVlUGFpbnRSZWN0KGNvbnN0IEludFJlY3QmIG9wYXF1ZVBhaW50UmVjdCkg
eyBtX29wYXF1ZVBhaW50UmVjdCA9IG9wYXF1ZVBhaW50UmVjdDsgfQorCiAgICAgLy8gTnVtYmVy
IG9mIHRpbWVzIHByZXBhcmVUb1VwZGF0ZSBoYXMgYmVlbiBpbnZva2VkLgogICAgIGludCBwcmVw
YXJlQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3ByZXBhcmVDb3VudDsgfQogICAgIHZvaWQgY2xl
YXJQcmVwYXJlQ291bnQoKSB7IG1fcHJlcGFyZUNvdW50ID0gMDsgfQogCi0gICAgdm9pZCBzZXRP
cGFxdWVQYWludFJlY3QoY29uc3QgSW50UmVjdCYgb3BhcXVlUGFpbnRSZWN0KSB7IG1fb3BhcXVl
UGFpbnRSZWN0ID0gb3BhcXVlUGFpbnRSZWN0OyB9CisgICAgLy8gTnVtYmVyIG9mIHRpbWVzIHBy
ZXBhcmVSZWN0IGhhcyBiZWVuIGludm9rZWQgb24gYSB0ZXh0dXJlLgorICAgIGludCBwcmVwYXJl
UmVjdENvdW50KCkgY29uc3QgeyByZXR1cm4gbV9wcmVwYXJlUmVjdENvdW50OyB9CisgICAgdm9p
ZCBjbGVhclByZXBhcmVSZWN0Q291bnQoKSB7IG1fcHJlcGFyZVJlY3RDb3VudCA9IDA7IH0KIAog
ICAgIC8vIExhc3QgcmVjdCBwYXNzZWQgdG8gcHJlcGFyZVRvVXBkYXRlKCkuCiAgICAgY29uc3Qg
SW50UmVjdCYgbGFzdFVwZGF0ZVJlY3QoKSAgY29uc3QgeyByZXR1cm4gbV9sYXN0VXBkYXRlUmVj
dDsgfQogCi0gICAgdmlydHVhbCBQYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmU+IGNyZWF0ZVRleHR1cmUoVGV4dHVyZU1hbmFnZXIqIG1hbmFnZXIpIHsgcmV0dXJuIGFkb3B0
UHRyKG5ldyBUZXh0dXJlKE1hbmFnZWRUZXh0dXJlOjpjcmVhdGUobWFuYWdlcikpKTsgfQorICAg
IHZpcnR1YWwgUGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlPiBjcmVhdGVU
ZXh0dXJlKFRleHR1cmVNYW5hZ2VyKiBtYW5hZ2VyKSB7IHJldHVybiBhZG9wdFB0cihuZXcgVGV4
dHVyZShNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKG1hbmFnZXIpLCB0aGlzKSk7IH0KICAgICB2aXJ0
dWFsIFNhbXBsZWRUZXhlbEZvcm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0pIHsgcmV0
dXJuIFNhbXBsZWRUZXhlbEZvcm1hdFJHQkE7IH0KICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRv
VXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiwgaW50LCBm
bG9hdCwgSW50UmVjdCogcmVzdWx0aW5nT3BhcXVlUmVjdCk7CiAKIHByaXZhdGU6CiAgICAgaW50
IG1fcHJlcGFyZUNvdW50OworICAgIGludCBtX3ByZXBhcmVSZWN0Q291bnQ7CiAgICAgSW50UmVj
dCBtX3JlY3RUb0ludmFsaWRhdGU7CiAgICAgSW50UmVjdCBtX2xhc3RVcGRhdGVSZWN0OwogICAg
IEludFJlY3QgbV9vcGFxdWVQYWludFJlY3Q7CkBAIC0xMTYsMTQgKzEyNSwxNCBAQCBwdWJsaWM6
CiAgICAgICAgIFRpbGVkTGF5ZXJDaHJvbWl1bTo6aW52YWxpZGF0ZVJlY3QocmVjdCk7CiAgICAg
fQogCi0gICAgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgcmVjdCkKKyAgICB2
b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBSZWdpb24qIG9j
Y2x1ZGVkKQogICAgIHsKLSAgICAgICAgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRh
dGUocmVjdCk7CisgICAgICAgIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKHJl
Y3QsIG9jY2x1ZGVkKTsKICAgICB9CiAKLSAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZUlkbGUoY29u
c3QgSW50UmVjdCYgcmVjdCkKKyAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZUlkbGUoY29uc3QgSW50
UmVjdCYgcmVjdCwgY29uc3QgUmVnaW9uKiBvY2NsdWRlZCkKICAgICB7Ci0gICAgICAgIFRpbGVk
TGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWRsZShyZWN0KTsKKyAgICAgICAgVGlsZWRM
YXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZGxlKHJlY3QsIG9jY2x1ZGVkKTsKICAgICB9
CiAKICAgICBib29sIG5lZWRzSWRsZVBhaW50KGNvbnN0IEludFJlY3QmIHJlY3QpCkBAIC0xNzEs
NiArMTgwLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoRGlydHlUaWxlcykK
ICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcg
RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogICAgIERlYnVn
U2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAgIFJlZlB0cjxGYWtlQ0NUaWxlZExh
eWVySW1wbD4gbGF5ZXJJbXBsID0gYWRvcHRSZWYobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDAp
KTsKKyAgICBSZWdpb24gb2NjbHVkZWQ7CiAKICAgICBGYWtlVGV4dHVyZUFsbG9jYXRvciB0ZXh0
dXJlQWxsb2NhdG9yOwogICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcigmdGV4dHVyZUFsbG9j
YXRvcik7CkBAIC0xNzgsNyArMTg4LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBw
dXNoRGlydHlUaWxlcykKICAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAsIHNvIHRoaXMg
aW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxlcy4KICAgICBsYXllci0+c2V0Qm91
bmRzKEludFNpemUoMTAwLCAyMDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVj
dCgwLCAwLCAxMDAsIDIwMCkpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgw
LCAwLCAxMDAsIDIwMCkpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAw
LCAxMDAsIDIwMCksICZvY2NsdWRlZCk7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNv
dXJjZXMoMCwgdXBkYXRlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBs
LmdldCgpKTsKIApAQCAtMTkxLDcgKzIwMSw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVz
dCwgcHVzaERpcnR5VGlsZXMpCiAgICAgLy8gSW52YWxpZGF0ZXMgYm90aCB0aWxlcy4uLgogICAg
IGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAgICAgLy8g
Li4uLmJ1dCB0aGVuIG9ubHkgdXBkYXRlIG9uZSBvZiB0aGVtLgotICAgIGxheWVyLT5wcmVwYXJl
VG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpOworICAgIGxheWVyLT5wcmVwYXJlVG9V
cGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCksICZvY2NsdWRlZCk7CiAgICAgbGF5ZXItPnVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9w
ZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIApAQCAtMjE0LDEyICsyMjQsMTMgQEAgVEVTVChU
aWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoSWRsZVBhaW50VGlsZXMpCiAgICAgSW50U2l6ZSBj
b250ZW50Qm91bmRzKDUwMCwgNTAwKTsKICAgICBJbnRSZWN0IGNvbnRlbnRSZWN0KEludFBvaW50
Ojp6ZXJvKCksIGNvbnRlbnRCb3VuZHMpOwogICAgIEludFJlY3QgdmlzaWJsZVJlY3QoMjAwLCAy
MDAsIDEwMCwgMTAwKTsKKyAgICBSZWdpb24gb2NjbHVkZWQ7CiAKICAgICAvLyBUaGlzIGludmFs
aWRhdGVzIDI1IHRpbGVzIGFuZCB0aGVuIHBhaW50cyBvbmUgdmlzaWJsZSB0aWxlLgogICAgIGxh
eWVyLT5zZXRCb3VuZHMoY29udGVudEJvdW5kcyk7CiAgICAgbGF5ZXItPnNldFZpc2libGVMYXll
clJlY3QodmlzaWJsZVJlY3QpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChjb250ZW50UmVj
dCk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZSh2aXNpYmxlUmVjdCk7CisgICAgbGF5ZXIt
PnByZXBhcmVUb1VwZGF0ZSh2aXNpYmxlUmVjdCwgJm9jY2x1ZGVkKTsKIAogICAgIC8vIFdlIHNo
b3VsZCBuZWVkIGlkbGUtcGFpbnRpbmcgZm9yIDN4MyB0aWxlcyBpbiB0aGUgY2VudGVyLgogICAg
IEVYUEVDVF9UUlVFKGxheWVyLT5uZWVkc0lkbGVQYWludCh2aXNpYmxlUmVjdCkpOwpAQCAtMjM0
LDkgKzI0NSw5IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaElkbGVQYWludFRp
bGVzKQogCiAgICAgLy8gRm9yIHRoZSBuZXh0IGZvdXIgdXBkYXRlcywgd2Ugc2hvdWxkIGRldGVj
dCB3ZSBzdGlsbCBuZWVkIGlkbGUgcGFpbnRpbmcuCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0
OyBpKyspIHsKLSAgICAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZSh2aXNpYmxlUmVjdCk7Cisg
ICAgICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUodmlzaWJsZVJlY3QsICZvY2NsdWRlZCk7CiAg
ICAgICAgIEVYUEVDVF9UUlVFKGxheWVyLT5uZWVkc0lkbGVQYWludCh2aXNpYmxlUmVjdCkpOwot
ICAgICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlSWRsZSh2aXNpYmxlUmVjdCk7CisgICAgICAg
IGxheWVyLT5wcmVwYXJlVG9VcGRhdGVJZGxlKHZpc2libGVSZWN0LCAmb2NjbHVkZWQpOwogICAg
ICAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKICAgICAg
ICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKICAgICAgICAgdGV4
dHVyZU1hbmFnZXItPnVucHJvdGVjdEFsbFRleHR1cmVzKCk7CkBAIC0yNjQsNiArMjc1LDcgQEAg
VEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRPdXRPZk1lbW9yeSkKICAgICBJ
bnRTaXplIGNvbnRlbnRCb3VuZHMoMzAwLCAzMDApOwogICAgIEludFJlY3QgY29udGVudFJlY3Qo
SW50UG9pbnQ6Onplcm8oKSwgY29udGVudEJvdW5kcyk7CiAgICAgSW50UmVjdCB2aXNpYmxlUmVj
dCgxMDAsIDEwMCwgMTAwLCAxMDApOworICAgIFJlZ2lvbiBvY2NsdWRlZDsKIAogICAgIC8vIFdl
IGhhdmUgZW5vdWdoIG1lbW9yeSBmb3Igb25seSB0aGUgdmlzaWJsZSByZWN0LCBzbyB3ZSB3aWxs
IHJ1biBvdXQgb2YgbWVtb3J5IGluIGZpcnN0IGlkbGUgcGFpbnQuCiAgICAgaW50IG1lbW9yeUxp
bWl0ID0gNCAqIDEwMCAqIDEwMDsgLy8gMiB0aWxlcywgNCBieXRlcyBwZXIgcGl4ZWwuCkBAIC0y
ODAsNyArMjkyLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRPdXRP
Zk1lbW9yeSkKICAgICBsYXllci0+c2V0Qm91bmRzKGNvbnRlbnRCb3VuZHMpOwogICAgIGxheWVy
LT5zZXRWaXNpYmxlTGF5ZXJSZWN0KHZpc2libGVSZWN0KTsKICAgICBsYXllci0+aW52YWxpZGF0
ZVJlY3QoY29udGVudFJlY3QpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUodmlzaWJsZVJl
Y3QpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUodmlzaWJsZVJlY3QsICZvY2NsdWRlZCk7
CiAKICAgICAvLyBXZSBzaG91bGQgbmVlZCBpZGxlLXBhaW50aW5nIGZvciAzeDMgdGlsZXMgc3Vy
b3VuZGluZyB2aXNpYmxlIHRpbGUuCiAgICAgRVhQRUNUX1RSVUUobGF5ZXItPm5lZWRzSWRsZVBh
aW50KHZpc2libGVSZWN0KSk7CkBAIC0yOTIsOCArMzA0LDggQEAgVEVTVChUaWxlZExheWVyQ2hy
b21pdW1UZXN0LCBpZGxlUGFpbnRPdXRPZk1lbW9yeSkKICAgICBFWFBFQ1RfVFJVRShsYXllcklt
cGwtPmhhc1RpbGVBdCgxLCAxKSk7CiAKICAgICB0ZXh0dXJlTWFuYWdlci0+dW5wcm90ZWN0QWxs
VGV4dHVyZXMoKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKHZpc2libGVSZWN0KTsKLSAg
ICBsYXllci0+cHJlcGFyZVRvVXBkYXRlSWRsZSh2aXNpYmxlUmVjdCk7CisgICAgbGF5ZXItPnBy
ZXBhcmVUb1VwZGF0ZSh2aXNpYmxlUmVjdCwgJm9jY2x1ZGVkKTsKKyAgICBsYXllci0+cHJlcGFy
ZVRvVXBkYXRlSWRsZSh2aXNpYmxlUmVjdCwgJm9jY2x1ZGVkKTsKIAogICAgIC8vIFdlIHNob3Vs
ZG4ndCBzaWduYWwgd2UgbmVlZCBhbm90aGVyIGlkbGUgcGFpbnQgYWZ0ZXIgd2UgcnVuIG91dCBv
ZiBtZW1vcnkuCiAgICAgRVhQRUNUX0ZBTFNFKGxheWVyLT5uZWVkc0lkbGVQYWludCh2aXNpYmxl
UmVjdCkpOwpAQCAtMzA4LDYgKzMyMCw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
aW52YWxpZGF0ZUZyb21QcmVwYXJlKQogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVt
PiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5h
Z2VyLmdldCgpKSk7CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAg
ICAgUmVmUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwgPSBhZG9wdFJlZihuZXcg
RmFrZUNDVGlsZWRMYXllckltcGwoMCkpOworICAgIFJlZ2lvbiBvY2NsdWRlZDsKIAogICAgIEZh
a2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7CiAgICAgQ0NUZXh0dXJlVXBkYXRl
ciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsKQEAgLTMxNSw3ICszMjgsNyBAQCBURVNUKFRp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGludmFsaWRhdGVGcm9tUHJlcGFyZSkKICAgICAvLyBUaGUg
dGlsZSBzaXplIGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRz
IHR3byB0aWxlcy4KICAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAyMDApKTsKICAg
ICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwotICAgIGxh
eWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOworICAgIGxheWVy
LT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksICZvY2NsdWRlZCk7CiAg
ICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAgICAgbGF5
ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIApAQCAtMzI4LDE4ICszNDEs
MTggQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpbnZhbGlkYXRlRnJvbVByZXBhcmUp
CiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyUHJlcGFyZUNvdW50
KCk7CiAgICAgLy8gSW52b2tlIHByZXBhcmVUb1VwZGF0ZSBhZ2Fpbi4gQXMgdGhlIGxheWVyIGlz
IHZhbGlkIHByZXBhcmVUb1VwZGF0ZSBzaG91bGRuJ3QgYmUgaW52b2tlZCBvbgogICAgIC8vIHRo
ZSBMYXllclRleHR1cmVVcGRhdGVyLgotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVj
dCgwLCAwLCAxMDAsIDIwMCkpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgw
LCAwLCAxMDAsIDIwMCksICZvY2NsdWRlZCk7CiAgICAgRVhQRUNUX0VRKDAsIGxheWVyLT5mYWtl
TGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlQ291bnQoKSk7CiAKICAgICBsYXllci0+aW52
YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA1MCwgNTApKTsKICAgICAvLyBzZXRSZWN0VG9JbnZh
bGlkYXRlIHRyaWdnZXJzIGludmFsaWRhdGVSZWN0KCkgYmVpbmcgaW52b2tlZCBmcm9tIHByZXBh
cmVUb1VwZGF0ZS4KICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0UmVj
dFRvSW52YWxpZGF0ZShJbnRSZWN0KDI1LCAyNSwgNTAsIDUwKSwgbGF5ZXIuZ2V0KCkpOwogICAg
IGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVDb3VudCgpOwot
ICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOworICAg
IGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksICZvY2NsdWRl
ZCk7CiAgICAgRVhQRUNUX0VRKDEsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5w
cmVwYXJlQ291bnQoKSk7CiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNs
ZWFyUHJlcGFyZUNvdW50KCk7CiAgICAgLy8gVGhlIGxheWVyIHNob3VsZCBzdGlsbCBiZSBpbnZh
bGlkIGFzIHByZXBhcmVUb1VwZGF0ZSBpbnZva2VkIGludmFsaWRhdGUuCi0gICAgbGF5ZXItPnBy
ZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CisgICAgbGF5ZXItPnByZXBh
cmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgJm9jY2x1ZGVkKTsKICAgICBFWFBF
Q1RfRVEoMSwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVDb3VudCgp
KTsKIH0KIApAQCAtMzYzLDU5ICszNzYsMTk1IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVz
dCwgbGF5ZXJBZGRzU2VsZlRvT2NjbHVkZWRSZWdpb24pCiAgICAgLy8gSWYgdGhlIGxheWVyIGlz
IG9wYXF1ZSB0aGVuIHRoZSBvY2NsdWRlZCByZWdpb24gc2hvdWxkIGJlIHRoZSB3aG9sZSBsYXll
cidzIHZpc2libGUgcmVnaW9uLgogICAgIGxheWVyLT5zZXRPcGFxdWUodHJ1ZSk7CiAgICAgbGF5
ZXItPmludmFsaWRhdGVSZWN0KGNvbnRlbnRCb3VuZHMpOwotICAgIGxheWVyLT5wcmVwYXJlVG9V
cGRhdGUoY29udGVudEJvdW5kcyk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50
Qm91bmRzLCAmb2NjbHVkZWQpOwogCiAgICAgb2NjbHVkZWQgPSBSZWdpb24oKTsKICAgICBsYXll
ci0+YWRkU2VsZlRvT2NjbHVkZWRSZWdpb24oJm9jY2x1ZGVkKTsKICAgICBFWFBFQ1RfRVEodmlz
aWJsZUJvdW5kcywgb2NjbHVkZWQuYm91bmRzKCkpOwogCiAgICAgLy8gSWYgdGhlIGxheWVyIGlz
IG5vdCBvcGFxdWUgdGhlbiB0aGUgb2NjbHVkZWQgcmVnaW9uIHNob3VsZCBiZSBlbXB0eS4KKyAg
ICBvY2NsdWRlZCA9IFJlZ2lvbigpOwogICAgIGxheWVyLT5zZXRPcGFxdWUoZmFsc2UpOwogICAg
IGxheWVyLT5pbnZhbGlkYXRlUmVjdChjb250ZW50Qm91bmRzKTsKLSAgICBsYXllci0+cHJlcGFy
ZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29u
dGVudEJvdW5kcywgJm9jY2x1ZGVkKTsKIAogICAgIG9jY2x1ZGVkID0gUmVnaW9uKCk7CiAgICAg
bGF5ZXItPmFkZFNlbGZUb09jY2x1ZGVkUmVnaW9uKCZvY2NsdWRlZCk7CiAgICAgRVhQRUNUX0VR
KEludFJlY3QoKSwgb2NjbHVkZWQuYm91bmRzKCkpOwogCiAgICAgLy8gSWYgdGhlIGxheWVyIHBh
aW50cyBvcGFxdWUgY29udGVudCwgdGhlbiB0aGUgb2NjbHVkZWQgcmVnaW9uIHNob3VsZCBtYXRj
aCB0aGUgdmlzaWJsZSBvcGFxdWUgY29udGVudC4KKyAgICBvY2NsdWRlZCA9IFJlZ2lvbigpOwog
ICAgIEludFJlY3Qgb3BhcXVlUGFpbnRSZWN0ID0gSW50UmVjdCgxMCwgMTAsIDkwLCAxOTApOwog
ICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRPcGFxdWVQYWludFJlY3Qo
b3BhcXVlUGFpbnRSZWN0KTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoY29udGVudEJvdW5k
cyk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzKTsKKyAgICBsYXll
ci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMsICZvY2NsdWRlZCk7CiAKICAgICBvY2Ns
dWRlZCA9IFJlZ2lvbigpOwogICAgIGxheWVyLT5hZGRTZWxmVG9PY2NsdWRlZFJlZ2lvbigmb2Nj
bHVkZWQpOwogICAgIEVYUEVDVF9FUShpbnRlcnNlY3Rpb24ob3BhcXVlUGFpbnRSZWN0LCB2aXNp
YmxlQm91bmRzKSwgb2NjbHVkZWQuYm91bmRzKCkpOwogCiAgICAgLy8gSWYgd2UgcGFpbnQgYWdh
aW4gd2l0aG91dCBpbnZhbGlkYXRpbmcsIHRoZSBzYW1lIHN0dWZmIHNob3VsZCBiZSBvY2NsdWRl
ZC4KKyAgICBvY2NsdWRlZCA9IFJlZ2lvbigpOwogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJl
VXBkYXRlcigpLT5zZXRPcGFxdWVQYWludFJlY3QoSW50UmVjdCgpKTsKLSAgICBsYXllci0+cHJl
cGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUo
Y29udGVudEJvdW5kcywgJm9jY2x1ZGVkKTsKIAogICAgIG9jY2x1ZGVkID0gUmVnaW9uKCk7CiAg
ICAgbGF5ZXItPmFkZFNlbGZUb09jY2x1ZGVkUmVnaW9uKCZvY2NsdWRlZCk7CiAgICAgRVhQRUNU
X0VRKGludGVyc2VjdGlvbihvcGFxdWVQYWludFJlY3QsIHZpc2libGVCb3VuZHMpLCBvY2NsdWRl
ZC5ib3VuZHMoKSk7CiAKICAgICAvLyBJZiB0aGUgbGF5ZXIgaXMgdHJhbnNmb3JtZWQgdGhlbiB0
aGUgcmVzdWx0aW5nIG9jY2x1c2VkIGFyZWEgbmVlZHMgdG8gYmUgdHJhbnNmb3JtZWQgdG8gc2Ny
ZWVuIHNwYWNlLgorICAgIG9jY2x1ZGVkID0gUmVnaW9uKCk7CiAgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggdHJhbnNmb3JtOwogICAgIHRyYW5zZm9ybS5zY2FsZSgyKTsKICAgICB0cmFuc2Zvcm0u
cm90YXRlKDkwKTsKICAgICBsYXllci0+c2V0U2NyZWVuU3BhY2VUcmFuc2Zvcm0odHJhbnNmb3Jt
KTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMpOworICAgIGxheWVy
LT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcywgJm9jY2x1ZGVkKTsKIAogICAgIG9jY2x1
ZGVkID0gUmVnaW9uKCk7CiAgICAgbGF5ZXItPmFkZFNlbGZUb09jY2x1ZGVkUmVnaW9uKCZvY2Ns
dWRlZCk7CiAgICAgRVhQRUNUX0VRKHRyYW5zZm9ybS5tYXBSZWN0KGludGVyc2VjdGlvbihvcGFx
dWVQYWludFJlY3QsIHZpc2libGVCb3VuZHMpKSwgb2NjbHVkZWQuYm91bmRzKCkpOwogCiAgICAg
Ly8gQnV0IGEgbm9uLWF4aXMtYWxpZ25lZCB0cmFuc2Zvcm0gZG9lcyBub3QgZ2V0IGNvbnNpZGVy
ZWQgZm9yIG9jY2x1c2lvbi4KKyAgICBvY2NsdWRlZCA9IFJlZ2lvbigpOwogICAgIHRyYW5zZm9y
bS5yb3RhdGUoNSk7CiAgICAgbGF5ZXItPnNldFNjcmVlblNwYWNlVHJhbnNmb3JtKHRyYW5zZm9y
bSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzKTsKKyAgICBsYXll
ci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMsICZvY2NsdWRlZCk7CiAKICAgICBvY2Ns
dWRlZCA9IFJlZ2lvbigpOwogICAgIGxheWVyLT5hZGRTZWxmVG9PY2NsdWRlZFJlZ2lvbigmb2Nj
bHVkZWQpOwogICAgIEVYUEVDVF9FUShJbnRSZWN0KCksIG9jY2x1ZGVkLmJvdW5kcygpKTsKK30K
KworVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRob3V0T2NjbHVz
aW9uKQoreworICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0
dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAyKjEwMjQqMTAyNCwgMTAyNCk7CisgICAg
UmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VU
aWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKKyAgICBSZWdpb24gb2Nj
bHVkZWQ7CisKKyAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52YWxp
ZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxlcy4KKyAgICBsYXllci0+c2V0Qm91bmRzKElu
dFNpemUoMTAwLCAyMDApKTsKKyAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAw
LCAxMDAsIDIwMCkpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAx
MDAsIDIwMCksICZvY2NsdWRlZCk7CisgICAgRVhQRUNUX0VRKDIsIGxheWVyLT5mYWtlTGF5ZXJU
ZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOworfQorCitURVNUKFRpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb24pCit7CisgICAgT3duUHRy
PFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUo
NCoxMDI0KjEwMjQsIDIqMTAyNCoxMDI0LCAxMDI0KTsKKyAgICBSZWZQdHI8RmFrZVRpbGVkTGF5
ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0
ZXh0dXJlTWFuYWdlci5nZXQoKSkpOworICAgIFJlZ2lvbiBvY2NsdWRlZDsKKworICAgIC8vIFRo
ZSB0aWxlIHNpemUgaXMgMTAweDEwMC4KKworICAgIG9jY2x1ZGVkID0gSW50UmVjdCgyMDAsIDIw
MCwgMzAwLCAxMDApOworICAgIGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSg2MDAsIDYwMCkpOwor
ICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CisgICAg
bGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVk
KTsKKyAgICBFWFBFQ1RfRVEoMzYtMywgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCkt
PnByZXBhcmVSZWN0Q291bnQoKSk7CisKKyAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0
ZXIoKS0+Y2xlYXJQcmVwYXJlUmVjdENvdW50KCk7CisKKyAgICBvY2NsdWRlZCA9IEludFJlY3Qo
MjUwLCAyMDAsIDMwMCwgMTAwKTsKKyAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoNjAwLCA2
MDApKTsKKyAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkp
OworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZv
Y2NsdWRlZCk7CisgICAgRVhQRUNUX0VRKDM2LTIsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBk
YXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOworCisgICAgbGF5ZXItPmZha2VMYXllclRleHR1
cmVVcGRhdGVyKCktPmNsZWFyUHJlcGFyZVJlY3RDb3VudCgpOworCisgICAgb2NjbHVkZWQgPSBJ
bnRSZWN0KDI1MCwgMjUwLCAzMDAsIDEwMCk7CisgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRTaXpl
KDYwMCwgNjAwKSk7CisgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgNjAw
LCA2MDApKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNjAwLCA2
MDApLCAmb2NjbHVkZWQpOworICAgIEVYUEVDVF9FUSgzNiwgbGF5ZXItPmZha2VMYXllclRleHR1
cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7Cit9CisKK1RFU1QoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgdGlsZXNOb3RQYWludGVkV2l0aG91dEludmFsaWRhdGlvbikKK3sKKyAgICBP
d25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNy
ZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOworICAgIFJlZlB0cjxGYWtlVGls
ZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9t
aXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CisgICAgUmVnaW9uIG9jY2x1ZGVkOworCisgICAg
Ly8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLgorCisgICAgb2NjbHVkZWQgPSBJbnRSZWN0KDIw
MCwgMjAwLCAzMDAsIDEwMCk7CisgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDYwMCwgNjAw
KSk7CisgICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYw
MCkpOworICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7
CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9j
Y2x1ZGVkKTsKKyAgICBFWFBFQ1RfRVEoMzYtMywgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRh
dGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CisKKyAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVy
ZVVwZGF0ZXIoKS0+Y2xlYXJQcmVwYXJlUmVjdENvdW50KCk7CisKKyAgICAvLyBSZXBhaW50IHdp
dGhvdXQgbWFya2luZyBpdCBkaXJ0eS4KKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJl
Y3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQpOworICAgIEVYUEVDVF9FUSgwLCBsYXllci0+
ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKK30KKworVEVT
VChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kVHJh
bnNmb3JtcykKK3sKKyAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0g
VGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOwor
ICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBG
YWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CisgICAgUmVnaW9u
IG9jY2x1ZGVkOworCisgICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLgorCisgICAgLy8g
VGhpcyBtYWtlcyBzdXJlIHRoZSBwYWludGluZyB3b3JrcyB3aGVuIHRoZSBvY2NsdWRlZCByZWdp
b24gKGluIHNjcmVlbiBzcGFjZSkKKyAgICAvLyBpcyB0cmFuc2Zvcm1lZCBkaWZmZXJlbnRseSB0
aGFuIHRoZSBsYXllci4KKyAgICBvY2NsdWRlZCA9IEludFJlY3QoMTAwLCAxMDAsIDE1MCwgNTAp
OworICAgIGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSg2MDAsIDYwMCkpOworICAgIGxheWVyLT5z
ZXRTY3JlZW5TcGFjZVRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLnNjYWxlKDAuNSkp
OworICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbGF5
ZXItPmJvdW5kcygpKSk7CisgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwg
NjAwLCA2MDApKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNjAw
LCA2MDApLCAmb2NjbHVkZWQpOworICAgIEVYUEVDVF9FUSgzNi0zLCBsYXllci0+ZmFrZUxheWVy
VGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKK30KKworVEVTVChUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kU2NhbGluZykKK3sK
KyAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFn
ZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOworICAgIFJlZlB0cjxG
YWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXll
ckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CisgICAgUmVnaW9uIG9jY2x1ZGVkOwog
CisgICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLgorCisgICAgbGF5ZXItPnNldENvbnRl
bnRzU2NhbGUoMC41KTsKKworICAgIC8vIFRoaXMgbWFrZXMgc3VyZSB0aGUgcGFpbnRpbmcgd29y
a3Mgd2hlbiB0aGUgY29udGVudCBzcGFjZSBpcyBzY2FsZWQgdG8KKyAgICAvLyBhIGRpZmZlcmVu
dCBsYXllciBzcGFjZS4gSW4gdGhpcyBjYXNlIHRpbGVzIGFyZSBzY2FsZWQgdG8gYmUgMjAweDIw
MAorICAgIC8vIHBpeGVscywgd2hpY2ggbWVhbnMgbm9uZSBzaG91bGQgYmUgb2NjbHVkZWQuCisg
ICAgb2NjbHVkZWQgPSBJbnRSZWN0KDIwMCwgMjAwLCAzMDAsIDEwMCk7CisgICAgbGF5ZXItPnNl
dEJvdW5kcyhJbnRTaXplKDYwMCwgNjAwKSk7CisgICAgbGF5ZXItPnNldFZpc2libGVMYXllclJl
Y3QoSW50UmVjdChJbnRQb2ludCgpLCBsYXllci0+Ym91bmRzKCkpKTsKKyAgICBsYXllci0+aW52
YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOworICAgIGxheWVyLT5wcmVwYXJl
VG9VcGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CisgICAgLy8gVGhl
IGNvbnRlbnQgaXMgaGFsZiB0aGUgc2l6ZSBvZiB0aGUgbGF5ZXIgKHNvIHRoZSBudW1iZXIgb2Yg
dGlsZXMgaXMgZmV3ZXIpLgorICAgIC8vIEluIHRoaXMgY2FzZSwgdGhlIGNvbnRlbnQgaXMgMzAw
eDMwMCwgYW5kIHNpbmNlIHRoZSB0aWxlIHNpemUgaXMgMTAwLCB0aGUKKyAgICAvLyBudW1iZXIg
b2YgdGlsZXMgM3gzLgorICAgIEVYUEVDVF9FUSg5LCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVw
ZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKKworICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0
dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVSZWN0Q291bnQoKTsKKworICAgIC8vIFRoaXMgbWFr
ZXMgc3VyZSB0aGUgcGFpbnRpbmcgd29ya3Mgd2hlbiB0aGUgY29udGVudCBzcGFjZSBpcyBzY2Fs
ZWQgdG8KKyAgICAvLyBhIGRpZmZlcmVudCBsYXllciBzcGFjZS4gSW4gdGhpcyBjYXNlIHRoZSBv
Y2NsdWRlZCByZWdpb24gY2F0Y2hlcyB0aGUKKyAgICAvLyBibG93biB1cCB0aWxlcy4KKyAgICBv
Y2NsdWRlZCA9IEludFJlY3QoMjAwLCAyMDAsIDMwMCwgMjAwKTsKKyAgICBsYXllci0+c2V0Qm91
bmRzKEludFNpemUoNjAwLCA2MDApKTsKKyAgICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdChJ
bnRSZWN0KEludFBvaW50KCksIGxheWVyLT5ib3VuZHMoKSkpOworICAgIGxheWVyLT5pbnZhbGlk
YXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CisgICAgbGF5ZXItPnByZXBhcmVUb1Vw
ZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKKyAgICBFWFBFQ1RfRVEo
OS0xLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgp
KTsKKworICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVS
ZWN0Q291bnQoKTsKKworICAgIC8vIFRoaXMgbWFrZXMgc3VyZSBjb250ZW50IHNjYWxpbmcgYW5k
IHRyYW5zZm9ybXMgd29yayB0b2dldGhlci4KKyAgICBvY2NsdWRlZCA9IEludFJlY3QoMTAwLCAx
MDAsIDE1MCwgMTAwKTsKKyAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoNjAwLCA2MDApKTsK
KyAgICBsYXllci0+c2V0U2NyZWVuU3BhY2VUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgo
KS5zY2FsZSgwLjUpKTsKKyAgICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KElu
dFBvaW50KCksIGxheWVyLT5ib3VuZHMoKSkpOworICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJ
bnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRS
ZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKKyAgICBFWFBFQ1RfRVEoOS0xLCBsYXll
ci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124156</attachid>
            <date>2012-01-26 11:47:15 -0800</date>
            <delta_ts>2012-01-26 13:10:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76838-20120126144714.patch</filename>
            <type>text/plain</type>
            <size>44772</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NjI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDE1ODdjYWQzYjA2Y2Vh
NzU1NmYyM2NhMmJkYmMyZTk3Njg0ZTdjOC4uMmExY2NjOTRmYTU3YjI0YzRkMzQ4NTk5MTlhYmI1
ZTg5MTYwNGM4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM5IEBACiAyMDEyLTAxLTI2ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFtjaHJvbWl1bV0gQ3Vs
bCBvY2NsdWRlZCB0aWxlcyBkdXJpbmcgcGFpbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc2ODM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTmV3IHVuaXQgdGVzdHMgaW4gVGlsZWRMYXllckNocm9taXVt
VGVzdC5jcHAKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJE
TGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21p
dW06OnBhaW50Q29udGVudHNJZkRpcnR5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OmlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21p
dW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hy
b21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllckNocm9taXVtOjpwYWludENv
bnRlbnRzSWZEaXJ0eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1h
Z2VMYXllckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6cGFpbnRD
b250ZW50c0lmRGlydHkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6aWRsZVBh
aW50Q29udGVudHNJZkRpcnR5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVnaW9uQ29udGFp
bnNSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRv
VXBkYXRlVGlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpwcmVw
YXJlVG9VcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpwcmVw
YXJlVG9VcGRhdGVJZGxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9U
aWxlZExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVI
b3N0OjpwYWludENvbnRlbnRzSWZEaXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJl
ZUhvc3Q6OnBhaW50TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6cGFpbnRMYXllckNvbnRlbnRzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaDoKKworMjAxMi0w
MS0yNiAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKwogICAgICAgICBbY2hy
b21pdW1dIENvbXB1dGUgb2NjbHVzaW9uIGR1cmluZyBwYWludCBsb29wCiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Njg1OAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IGJiMzc3ODY5OTZmZWM5YjhjM2RhYjQzYzFjMzM3MjIxMzU0MTA0ZWUu
LjYyZjAxMTZjMmNlNzdmOWJkZjI4YjExMDNjNDUwZWU0M2JiYWQwNmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjkgQEAKIDIwMTItMDEtMjYgIERhbmEgSmFuc2VucyAg
PGRhbmFrakBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgW2Nocm9taXVtXSBDdWxsIG9jY2x1ZGVk
IHRpbGVzIGR1cmluZyBwYWludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzY4MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwOgorICAgICAgICAoV1RG
OjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6cGFpbnRDb250ZW50c0lm
RGlydHkpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFj
a2luZzo6aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KToKKyAgICAgICAgKiB0ZXN0cy9DYW52YXMy
RExheWVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJD
aHJvbWl1bVRlc3Q6OmZ1bGxMaWZlY3ljbGVUZXN0KToKKyAgICAgICAgKiB0ZXN0cy9UaWxlZExh
eWVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKFdURjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmU6OlRleHR1cmUpOgorICAgICAgICAoV1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZTo6cHJlcGFyZVJlY3QpOgorICAgICAgICAoV1RGOjpGYWtlTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAoV1RGOjpGYWtl
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6c2V0T3BhcXVlUGFpbnRSZWN0KToKKyAgICAgICAgKFdURjo6
RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVSZWN0Q291bnQpOgorICAgICAgICAoV1RG
OjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y2xlYXJQcmVwYXJlUmVjdENvdW50KToKKyAgICAg
ICAgKFdURjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZVRleHR1cmUpOgorICAgICAg
ICAoV1RGOjpGYWtlVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGUpOgorICAgICAg
ICAoV1RGOjpGYWtlVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZGxlKToKKyAg
ICAgICAgKFdURjo6VEVTVCk6CisKKzIwMTItMDEtMjYgIERhbmEgSmFuc2VucyAgPGRhbmFrakBj
aHJvbWl1bS5vcmc+CisKICAgICAgICAgW2Nocm9taXVtXSBDb21wdXRlIG9jY2x1c2lvbiBkdXJp
bmcgcGFpbnQgbG9vcAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzY4NTgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXgg
MTUwNWFkYWMyNDNlMDc2NjVkMmRkYWIyOGY0NzAzZmY4ZWY1Yjk0My4uZDUyNDljM2RhOTNjMWU4
MjZhN2NhYmI5MTZjYTU3ZGQzNTA2MDdmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hy
b21pdW0uY3BwCkBAIC05MSw3ICs5MSw3IEBAIGJvb2wgQ2FudmFzMkRMYXllckNocm9taXVtOjpk
cmF3c0NvbnRlbnQoKSBjb25zdAogICAgICAgICAmJiBtX2NvbnRleHQgJiYgKG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLT5nZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgPT0gR3JhcGhpY3ND
b250ZXh0M0Q6Ok5PX0VSUk9SKTsKIH0KIAotdm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnBh
aW50Q29udGVudHNJZkRpcnR5KCkKK3ZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpwYWludENv
bnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24qIC8qb2NjbHVkZWRUYXJnZXRTcGFjZSovKQogewog
ICAgIGlmICghZHJhd3NDb250ZW50KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJv
bWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFz
MkRMYXllckNocm9taXVtLmgKaW5kZXggODM2MTVhMWYyMjM1NjE2NDYyZWIxZjhkNDEyMmUxYWQ4
ZTU4YzkyMi4uODNkMjA1MmU2ZWE2ZmUzYWM5NGZmY2I0ZjQ0Yzc3ZjJlYmU1ODU4NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRM
YXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmgKQEAgLTQwLDYgKzQwLDcgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CitjbGFzcyBSZWdpb247CiAK
IC8vIEEgbGF5ZXIgY29udGFpbmluZyBhbiBhY2NlbGVyYXRlZCAyZCBjYW52YXMKIGNsYXNzIENh
bnZhczJETGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBDYW52YXNMYXllckNocm9taXVtIHsKQEAgLTUy
LDcgKzUzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjb250ZW50Q2hhbmdlZCgpOwog
CiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9p
ZCBwYWludENvbnRlbnRzSWZEaXJ0eSgpOworICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRz
SWZEaXJ0eShjb25zdCBSZWdpb24qIG9jY2x1ZGVkVGFyZ2V0U3BhY2UpOwogCiAgICAgdmlydHVh
bCB2b2lkIHNldExheWVyVHJlZUhvc3QoQ0NMYXllclRyZWVIb3N0Kik7CiAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1
cmVVcGRhdGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggODQw
MzkwZTAyNzkwODI1MjZiNDFmYjNkODU3YjFmODQ1YTAxOGE2OC4uZTA5YjAwMTk1MzdhOTI0Yjg3
NzJjZjlkMGY2NTgxMmRkNzZiYmQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVt
LmNwcApAQCAtODgsNyArODgsNyBAQCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6fkNvbnRlbnRMYXll
ckNocm9taXVtKCkKIHsKIH0KIAotdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250
ZW50c0lmRGlydHkoKQordm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lm
RGlydHkoY29uc3QgUmVnaW9uKiBvY2NsdWRlZFRhcmdldFNwYWNlKQogewogICAgIHVwZGF0ZVRp
bGVTaXplQW5kVGlsaW5nT3B0aW9uKCk7CiAKQEAgLTk5LDExICs5OSwxMSBAQCB2b2lkIENvbnRl
bnRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSgpCiAgICAgaWYgKGRyYXdzQ29u
dGVudCgpKQogICAgICAgICBsYXllclJlY3QgPSB2aXNpYmxlTGF5ZXJSZWN0KCk7CiAKLSAgICBw
cmVwYXJlVG9VcGRhdGUobGF5ZXJSZWN0KTsKKyAgICBwcmVwYXJlVG9VcGRhdGUobGF5ZXJSZWN0
LCBvY2NsdWRlZFRhcmdldFNwYWNlKTsKICAgICBtX25lZWRzRGlzcGxheSA9IGZhbHNlOwogfQog
Ci12b2lkIENvbnRlbnRMYXllckNocm9taXVtOjppZGxlUGFpbnRDb250ZW50c0lmRGlydHkoKQor
dm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0
IFJlZ2lvbiogb2NjbHVkZWRUYXJnZXRTcGFjZSkKIHsKICAgICBpZiAoIWRyYXdzQ29udGVudCgp
KQogICAgICAgICByZXR1cm47CkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCBDb250ZW50TGF5ZXJD
aHJvbWl1bTo6aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KCkKICAgICBpZiAobGF5ZXJSZWN0Lmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJlcGFyZVRvVXBkYXRlSWRsZShsYXll
clJlY3QpOworICAgIHByZXBhcmVUb1VwZGF0ZUlkbGUobGF5ZXJSZWN0LCBvY2NsdWRlZFRhcmdl
dFNwYWNlKTsKICAgICBpZiAobmVlZHNJZGxlUGFpbnQobGF5ZXJSZWN0KSkKICAgICAgICAgc2V0
TmVlZHNDb21taXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCmluZGV4IGNm
YjBmZDdjOTA2N2MyMTQwZGQxM2QzNTZmYmVmN2RmYzk3ZTMyZGUuLjY0NGI2NzNmZmMxZWEzY2M2
N2U5NmE3YzgyZTYxYWZjMGIzMjNjN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0u
aApAQCAtNDEsNiArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIExheWVyVGls
ZXJDaHJvbWl1bTsKIGNsYXNzIExheWVyVGV4dHVyZVVwZGF0ZXI7CitjbGFzcyBSZWdpb247CiAK
IGNsYXNzIENvbnRlbnRMYXllckRlbGVnYXRlIHsKIHB1YmxpYzoKQEAgLTU3LDggKzU4LDggQEAg
cHVibGljOgogCiAgICAgdm9pZCBjbGVhckRlbGVnYXRlKCkgeyBtX2RlbGVnYXRlID0gMDsgfQog
Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KCk7Ci0gICAgdmlydHVhbCB2
b2lkIGlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSgpOworICAgIHZpcnR1YWwgdm9pZCBwYWludENv
bnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24qIG9jY2x1ZGVkVGFyZ2V0U3BhY2UpOworICAgIHZp
cnR1YWwgdm9pZCBpZGxlUGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uKiBvY2NsdWRl
ZFRhcmdldFNwYWNlKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRPcGFxdWUoYm9vbCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdl
TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCmluZGV4IDAxNTRmYjI4MzE0ZjNlNmM5MjQwNDdi
YjQ4MzY3MzY5MmRmY2ZhYjcuLjZmZTJhM2NiOTBhMjkxYjgxZWNlYmVkMWNlZTI1NWNmYWU3MmQ5
MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcApAQCAtMTU4LDcgKzE1OCw3IEBA
IHZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpzZXRDb250ZW50cyhJbWFnZSogY29udGVudHMpCiAg
ICAgc2V0TmVlZHNEaXNwbGF5KCk7CiB9CiAKLXZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpwYWlu
dENvbnRlbnRzSWZEaXJ0eSgpCit2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50
c0lmRGlydHkoY29uc3QgUmVnaW9uKiBvY2NsdWRlZFRhcmdldFNwYWNlKQogewogICAgIGlmICht
X25lZWRzRGlzcGxheSkgewogICAgICAgICBtX3RleHR1cmVVcGRhdGVyLT51cGRhdGVGcm9tSW1h
Z2UobV9jb250ZW50cy0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSk7CkBAIC0xNjcsNyAr
MTY3LDcgQEAgdm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KCkK
ICAgICAgICAgbV9uZWVkc0Rpc3BsYXkgPSBmYWxzZTsKICAgICB9CiAKLSAgICBwcmVwYXJlVG9V
cGRhdGUodmlzaWJsZUxheWVyUmVjdCgpKTsKKyAgICBwcmVwYXJlVG9VcGRhdGUodmlzaWJsZUxh
eWVyUmVjdCgpLCBvY2NsdWRlZFRhcmdldFNwYWNlKTsKIH0KIAogTGF5ZXJUZXh0dXJlVXBkYXRl
ciogSW1hZ2VMYXllckNocm9taXVtOjp0ZXh0dXJlVXBkYXRlcigpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hy
b21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdl
TGF5ZXJDaHJvbWl1bS5oCmluZGV4IGQ3MTI5MjQ1MWMzNTU1ZWFmMGMxNmNmOWYyYzNmMzk1YmUw
NzUzMDQuLmIyNWY2Yjc3NTJiZjRjNjc4OTdlNmQxODllMzg1ZWNjMzFmMGVhMGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJD
aHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0ltYWdlTGF5ZXJDaHJvbWl1bS5oCkBAIC00NSw2ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgSW1hZ2U7CiBjbGFzcyBJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXI7CitjbGFz
cyBSZWdpb247CiAKIC8vIEEgTGF5ZXIgdGhhdCBjb250YWlucyBvbmx5IGFuIEltYWdlIGVsZW1l
bnQuCiBjbGFzcyBJbWFnZUxheWVyQ2hyb21pdW0gOiBwdWJsaWMgVGlsZWRMYXllckNocm9taXVt
IHsKQEAgLTUzLDcgKzU0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkltYWdlTGF5ZXJDaHJv
bWl1bSgpOwogCiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0OwotICAgIHZp
cnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eSgpOworICAgIHZpcnR1YWwgdm9pZCBwYWlu
dENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24qIG9jY2x1ZGVkVGFyZ2V0U3BhY2UpOwogICAg
IHZpcnR1YWwgYm9vbCBuZWVkc0NvbnRlbnRzU2NhbGUoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0
Q29udGVudHMoSW1hZ2UqIGltYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAppbmRleCAyOTZhNTJiZDc1
MjZjNDAyM2JkM2I0NTM1NWIyYmY2ZjdiYjdlNDVlLi5lZDJkN2VmOGZjOWZjMjU5MzExNzYyMDA4
MzU4YWNmMDI0YThhYWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC0zOCw2ICszOCw3IEBACiAj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIK
ICNpbmNsdWRlICJQcm9ncmFtQmluZGluZy5oIgorI2luY2x1ZGUgIlJlZ2lvbi5oIgogI2luY2x1
ZGUgIlJlbmRlclN1cmZhY2VDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlNoYWRlckNocm9taXVtLmgi
CiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKQEAgLTE1NCw4ICsxNTUsOCBAQCBw
dWJsaWM6CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIHR5cGljYWxseSBuZWVkIHRvIGJlIG92ZXJ3
cml0dGVuIGJ5IGRlcml2ZWQgY2xhc3Nlcy4KICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50
KCkgY29uc3QgeyByZXR1cm4gbV9pc0RyYXdhYmxlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50
Q29udGVudHNJZkRpcnR5KCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGlkbGVQYWludENvbnRlbnRz
SWZEaXJ0eSgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eShjb25z
dCBSZWdpb24qIC8qIG9jY2x1ZGVkVGFyZ2V0U3BhY2UgKi8pIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBpZGxlUGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uKiAvKiBvY2NsdWRlZFRhcmdl
dFNwYWNlICovKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNl
cyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgc2V0SXNNYXNrKGJvb2wpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB1bnJlc2VydmVDb250
ZW50c1RleHR1cmUoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDhm
ODBjYTZiNmY3MTE2ZDcyNWVjNGMwNGUxNzAwZWQxZTgwYjY1YWUuLjQ5YWMyMTZlOTg0NjUwODg2
MTkwMGNiZDAzZDY2YjQyYzMwNWE5NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNw
cApAQCAtMzYyLDcgKzM2MiwxOSBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJvdGVjdFRp
bGVUZXh0dXJlcyhjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpCiAgICAgfQogfQogCi12b2lkIFRp
bGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVm
dCwgaW50IHRvcCwgaW50IHJpZ2h0LCBpbnQgYm90dG9tKQorc3RhdGljIGJvb2wgcmVnaW9uQ29u
dGFpbnNSZWN0KGNvbnN0IFJlZ2lvbiogcmVnaW9uLCBjb25zdCBJbnRSZWN0JiByZWN0KQorewor
ICAgIFJlZ2lvbiByZWN0UmVnaW9uKHJlY3QpOworICAgIFJlZ2lvbiBpbnRlcnNlY3RSZWdpb24o
aW50ZXJzZWN0KCpyZWdpb24sIHJlY3RSZWdpb24pKTsKKworICAgIGlmIChpbnRlcnNlY3RSZWdp
b24uaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZWN0UmVnaW9uLnN1
YnRyYWN0KGludGVyc2VjdFJlZ2lvbik7CisgICAgcmV0dXJuIHJlY3RSZWdpb24uaXNFbXB0eSgp
OworfQorCit2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9v
bCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50IHJpZ2h0LCBpbnQgYm90dG9tLCBjb25zdCBS
ZWdpb24qIG9jY2x1ZGVkVGFyZ2V0U3BhY2UpCiB7CiAgICAgLy8gUmVzZXQgbV91cGRhdGVSZWN0
IGZvciBhbGwgdGlsZXMuCiAgICAgZm9yIChDQ0xheWVyVGlsaW5nRGF0YTo6VGlsZU1hcDo6Y29u
c3RfaXRlcmF0b3IgaXRlciA9IG1fdGlsZXItPnRpbGVzKCkuYmVnaW4oKTsgaXRlciAhPSBtX3Rp
bGVyLT50aWxlcygpLmVuZCgpOyArK2l0ZXIpIHsKQEAgLTM3MCw2ICszODIsOSBAQCB2b2lkIFRp
bGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVm
dCwgaW50IHRvcCwgaW50CiAgICAgICAgIHRpbGUtPm1fdXBkYXRlUmVjdCA9IEludFJlY3QoKTsK
ICAgICB9CiAKKyAgICAvLyBUaWxlcyBhcmUgaW4gdGhlIGxheWVyJ3MgY29udGVudCBzcGFjZSwg
dGhlIG9jY2x1ZGVkIHJlZ2lvbiBpcyBpbiB0YXJnZXQncyBjb250ZW50IHNwYWNlLgorICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IGNvbnRlbnRUb1RhcmdldFNwYWNlID0gY29udGVudFRvVGFyZ2V0
U3BhY2VUcmFuc2Zvcm0oKTsKKwogICAgIC8vIENyZWF0ZSB0aWxlcyBhcyBuZWVkZWQsIGV4cGFu
ZGluZyBhIGRpcnR5IHJlY3QgdG8gY29udGFpbiBhbGwKICAgICAvLyB0aGUgZGlydHkgcmVnaW9u
cyBjdXJyZW50bHkgYmVpbmcgZHJhd24uIEFsbCBkaXJ0eSB0aWxlcyB0aGF0IGFyZSB0byBiZSBw
YWludGVkCiAgICAgLy8gZ2V0IHRoZWlyIG1fdXBkYXRlUmVjdCBzZXQgdG8gbV9kaXJ0eVJlY3Qg
YW5kIG1fZGlydHlSZWN0IGNsZWFyZWQuIFRoaXMgd2F5IGlmCkBAIC0zODEsMTMgKzM5NiwyMyBA
QCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxl
LCBpbnQgbGVmdCwgaW50IHRvcCwgaW50CiAgICAgICAgICAgICBpZiAoIXRpbGUpCiAgICAgICAg
ICAgICAgICAgdGlsZSA9IGNyZWF0ZVRpbGUoaSwgaik7CiAKKyAgICAgICAgICAgIC8vIFdoZW4g
bm90IGlkbGUgcGFpbnRpbmcsIGlmIHRoZSB0aWxlIGlzIG9jY2x1ZGVkIGRvbid0IHJlc2VydmUg
YSB0ZXh0dXJlIG9yIG1hcmsgaXQgZm9yIHVwZGF0ZS4gVGhpcyB3aWxsIGFsc28gYXZvaWQgcGFp
bnRpbmcKKyAgICAgICAgICAgIC8vIHRoZSB0aWxlIGluIHRoZSBuZXh0IGxvb3AsIGJlbG93Lgor
ICAgICAgICAgICAgaWYgKCFpZGxlKSB7CisgICAgICAgICAgICAgICAgSW50UmVjdCB0aWxlUmVj
dCA9IG1fdGlsZXItPnRpbGVCb3VuZHMoaSwgaik7CisgICAgICAgICAgICAgICAgaWYgKHJlZ2lv
bkNvbnRhaW5zUmVjdChvY2NsdWRlZFRhcmdldFNwYWNlLCBjb250ZW50VG9UYXJnZXRTcGFjZS5t
YXBSZWN0KHRpbGVSZWN0KSkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgfQorCiAgICAgICAgICAgICAvLyBEbyBwb3N0IGNvbW1pdCBkZWxldGlvbiBvZiBjdXJy
ZW50IHRleHR1cmUgd2hlbiBwYXJ0aWFsIHRleHR1cmUKICAgICAgICAgICAgIC8vIHVwZGF0ZXMg
YXJlIG5vdCB1c2VkLgogICAgICAgICAgICAgaWYgKHRpbGUtPmlzRGlydHkoKSAmJiBsYXllclRy
ZWVIb3N0KCkgJiYgIWxheWVyVHJlZUhvc3QoKS0+c2V0dGluZ3MoKS5wYXJ0aWFsVGV4dHVyZVVw
ZGF0ZXMpCiAgICAgICAgICAgICAgICAgbGF5ZXJUcmVlSG9zdCgpLT5kZWxldGVUZXh0dXJlQWZ0
ZXJDb21taXQodGlsZS0+bWFuYWdlZFRleHR1cmUoKS0+c3RlYWwoKSk7CiAKLSAgICAgICAgICAg
IGlmICghdGlsZS0+bWFuYWdlZFRleHR1cmUoKS0+aXNWYWxpZChtX3RpbGVyLT50aWxlU2l6ZSgp
LCBtX3RleHR1cmVGb3JtYXQpKQotICAgICAgICAgICAgICAgIHRpbGUtPm1fZGlydHlSZWN0ID0g
bV90aWxlci0+dGlsZVJlY3QodGlsZSk7CisgICAgICAgICAgICBpZiAoIXRpbGUtPm1hbmFnZWRU
ZXh0dXJlKCktPmlzVmFsaWQobV90aWxlci0+dGlsZVNpemUoKSwgbV90ZXh0dXJlRm9ybWF0KSkg
eworICAgICAgICAgICAgICAgIEludFJlY3QgZml4ZWRTaXplVGlsZVJlY3RXaXRoQm9yZGVycyA9
IG1fdGlsZXItPnRpbGVSZWN0KHRpbGUpOworICAgICAgICAgICAgICAgIHRpbGUtPm1fZGlydHlS
ZWN0ID0gZml4ZWRTaXplVGlsZVJlY3RXaXRoQm9yZGVyczsKKyAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgaWYgKCF0aWxlLT5tYW5hZ2VkVGV4dHVyZSgpLT5yZXNlcnZlKG1fdGlsZXItPnRp
bGVTaXplKCksIG1fdGV4dHVyZUZvcm1hdCkpIHsKICAgICAgICAgICAgICAgICBtX3NraXBzSWRs
ZVBhaW50ID0gdHJ1ZTsKQEAgLTQzNyw3ICs0NjIsNyBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1
bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50
CiAgICAgICAgICAgICBpZiAodGlsZVBhaW50ZWRPcGFxdWVSZWN0ICE9IHRpbGVQYWludGVkUmVj
dCB8fCAhdGlsZS0+bV9vcGFxdWVSZWN0LmNvbnRhaW5zKHRpbGVQYWludGVkT3BhcXVlUmVjdCkp
CiAgICAgICAgICAgICAgICAgdGlsZS0+bV9vcGFxdWVSZWN0ID0gdGlsZVBhaW50ZWRPcGFxdWVS
ZWN0OwogCi0gICAgICAgICAgICAvLyBVc2UgbV91cGRhdGVSZWN0IGFzIGNvcHlBbmRDbGVhckRp
cnR5IGFib3ZlIG1vdmVkIHRoZSBleGlzdGluZyBkaXJ0eSByZWN0IHRvIG1fdXBkYXRlUmVjdC4K
KyAgICAgICAgICAgIC8vIFVzZSBtX3VwZGF0ZVJlY3QgYXMgY29weUFuZENsZWFyRGlydHkgYWJv
dmUgbW92ZWQgdGhlIGV4aXN0aW5nIGRpcnR5IHJlY3QgdG8gbV91cGRhdGVSZWN0IGlmIHRoZSB0
aWxlIGlzbid0IGN1bGxlZC4KICAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCA9
IHRpbGUtPm1fdXBkYXRlUmVjdDsKICAgICAgICAgICAgIGlmIChkaXJ0eVJlY3QuaXNFbXB0eSgp
KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtNDkyLDcgKzUxNyw3IEBAIHZvaWQgVGls
ZWRMYXllckNocm9taXVtOjphZGRTZWxmVG9PY2NsdWRlZFJlZ2lvbihSZWdpb24qIG9jY2x1ZGVk
VGFyZ2V0U3BhY2UpCiAgICAgfQogfQogCi12b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFy
ZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCkKK3ZvaWQgVGlsZWRMYXllckNocm9t
aXVtOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0LCBjb25zdCBSZWdp
b24qIG9jY2x1ZGVkVGFyZ2V0U3BhY2UpCiB7CiAgICAgbV9za2lwc0RyYXcgPSBmYWxzZTsKICAg
ICBtX3NraXBzSWRsZVBhaW50ID0gZmFsc2U7CkBAIC01MDcsMTAgKzUzMiwxMCBAQCB2b2lkIFRp
bGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGxheWVyUmVj
dCkKICAgICBpbnQgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tOwogICAgIG1fdGlsZXItPmxheWVy
UmVjdFRvVGlsZUluZGljZXMobGF5ZXJSZWN0LCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20pOwog
Ci0gICAgcHJlcGFyZVRvVXBkYXRlVGlsZXMoZmFsc2UsIGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRv
bSk7CisgICAgcHJlcGFyZVRvVXBkYXRlVGlsZXMoZmFsc2UsIGxlZnQsIHRvcCwgcmlnaHQsIGJv
dHRvbSwgb2NjbHVkZWRUYXJnZXRTcGFjZSk7CiB9CiAKLXZvaWQgVGlsZWRMYXllckNocm9taXVt
OjpwcmVwYXJlVG9VcGRhdGVJZGxlKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCkKK3ZvaWQgVGls
ZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZGxlKGNvbnN0IEludFJlY3QmIGxheWVy
UmVjdCwgY29uc3QgUmVnaW9uKiBvY2NsdWRlZFRhcmdldFNwYWNlKQogewogICAgIC8vIEFib3J0
IGlmIHdlIGhhdmUgYWxyZWFkeSBwcmVwYXJlZCBhIHBhaW50IG9yIHJ1biBvdXQgb2YgbWVtb3J5
LgogICAgIGlmIChtX3NraXBzSWRsZVBhaW50IHx8ICFtX3BhaW50UmVjdC5pc0VtcHR5KCkpCkBA
IC01MjgsMzMgKzU1MywzOSBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBk
YXRlSWRsZShjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpCiAgICAgSW50UmVjdCBpZGxlUGFpbnRM
YXllclJlY3QgPSBpZGxlUGFpbnRSZWN0KGxheWVyUmVjdCk7CiAgICAgcHJvdGVjdFRpbGVUZXh0
dXJlcyhpZGxlUGFpbnRMYXllclJlY3QpOwogCi0gICAgLy8gRXhwYW5kIG91dHdhcmRzIHVudGls
IHdlIGZpbmQgYSBkaXJ0eSByb3cgb3IgY29sdW1uIHRvIHVwZGF0ZS4KICAgICBpbnQgbGVmdCwg
dG9wLCByaWdodCwgYm90dG9tOwogICAgIG1fdGlsZXItPmxheWVyUmVjdFRvVGlsZUluZGljZXMo
bGF5ZXJSZWN0LCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20pOworCisgICAgLy8gUHJlcGFpbnQg
YW55dGhpbmcgdGhhdCB3YXMgb2NjbHVkZWQgYnV0IGluc2lkZSB0aGUgbGF5ZXIncyB2aXNpYmxl
IHJlZ2lvbi4KKyAgICBwcmVwYXJlVG9VcGRhdGVUaWxlcyh0cnVlLCBsZWZ0LCBib3R0b20sIHJp
Z2h0LCBib3R0b20sIG9jY2x1ZGVkVGFyZ2V0U3BhY2UpOworICAgIGlmICghbV9wYWludFJlY3Qu
aXNFbXB0eSgpIHx8IG1fc2tpcHNJZGxlUGFpbnQpCisgICAgICAgIHJldHVybjsKKworICAgIC8v
IEV4cGFuZCBvdXR3YXJkcyB1bnRpbCB3ZSBmaW5kIGEgZGlydHkgcm93IG9yIGNvbHVtbiB0byB1
cGRhdGUuCiAgICAgaW50IHByZXBhaW50TGVmdCwgcHJlcGFpbnRUb3AsIHByZXBhaW50UmlnaHQs
IHByZXBhaW50Qm90dG9tOwogICAgIG1fdGlsZXItPmxheWVyUmVjdFRvVGlsZUluZGljZXMoaWRs
ZVBhaW50TGF5ZXJSZWN0LCBwcmVwYWludExlZnQsIHByZXBhaW50VG9wLCBwcmVwYWludFJpZ2h0
LCBwcmVwYWludEJvdHRvbSk7CiAgICAgd2hpbGUgKCFtX3NraXBzSWRsZVBhaW50ICYmIChsZWZ0
ID4gcHJlcGFpbnRMZWZ0IHx8IHRvcCA+IHByZXBhaW50VG9wIHx8IHJpZ2h0IDwgcHJlcGFpbnRS
aWdodCB8fCBib3R0b20gPCBwcmVwYWludEJvdHRvbSkpIHsKICAgICAgICAgaWYgKGJvdHRvbSA8
IHByZXBhaW50Qm90dG9tKSB7CiAgICAgICAgICAgICArK2JvdHRvbTsKLSAgICAgICAgICAgIHBy
ZXBhcmVUb1VwZGF0ZVRpbGVzKHRydWUsIGxlZnQsIGJvdHRvbSwgcmlnaHQsIGJvdHRvbSk7Cisg
ICAgICAgICAgICBwcmVwYXJlVG9VcGRhdGVUaWxlcyh0cnVlLCBsZWZ0LCBib3R0b20sIHJpZ2h0
LCBib3R0b20sIG9jY2x1ZGVkVGFyZ2V0U3BhY2UpOwogICAgICAgICAgICAgaWYgKCFtX3BhaW50
UmVjdC5pc0VtcHR5KCkgfHwgbV9za2lwc0lkbGVQYWludCkKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICBpZiAodG9wID4gcHJlcGFpbnRUb3ApIHsKICAgICAgICAg
ICAgIC0tdG9wOwotICAgICAgICAgICAgcHJlcGFyZVRvVXBkYXRlVGlsZXModHJ1ZSwgbGVmdCwg
dG9wLCByaWdodCwgdG9wKTsKKyAgICAgICAgICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKHRydWUs
IGxlZnQsIHRvcCwgcmlnaHQsIHRvcCwgb2NjbHVkZWRUYXJnZXRTcGFjZSk7CiAgICAgICAgICAg
ICBpZiAoIW1fcGFpbnRSZWN0LmlzRW1wdHkoKSB8fCBtX3NraXBzSWRsZVBhaW50KQogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGlmIChsZWZ0ID4gcHJlcGFpbnRM
ZWZ0KSB7CiAgICAgICAgICAgICAtLWxlZnQ7Ci0gICAgICAgICAgICBwcmVwYXJlVG9VcGRhdGVU
aWxlcyh0cnVlLCBsZWZ0LCB0b3AsIGxlZnQsIGJvdHRvbSk7CisgICAgICAgICAgICBwcmVwYXJl
VG9VcGRhdGVUaWxlcyh0cnVlLCBsZWZ0LCB0b3AsIGxlZnQsIGJvdHRvbSwgb2NjbHVkZWRUYXJn
ZXRTcGFjZSk7CiAgICAgICAgICAgICBpZiAoIW1fcGFpbnRSZWN0LmlzRW1wdHkoKSB8fCBtX3Nr
aXBzSWRsZVBhaW50KQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGlmIChyaWdodCA8IHByZXBhaW50UmlnaHQpIHsKICAgICAgICAgICAgICsrcmlnaHQ7Ci0gICAg
ICAgICAgICBwcmVwYXJlVG9VcGRhdGVUaWxlcyh0cnVlLCByaWdodCwgdG9wLCByaWdodCwgYm90
dG9tKTsKKyAgICAgICAgICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKHRydWUsIHJpZ2h0LCB0b3As
IHJpZ2h0LCBib3R0b20sIG9jY2x1ZGVkVGFyZ2V0U3BhY2UpOwogICAgICAgICAgICAgaWYgKCFt
X3BhaW50UmVjdC5pc0VtcHR5KCkgfHwgbV9za2lwc0lkbGVQYWludCkKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaAppbmRleCA3OTZj
MDY2ZDU4OTFkNmJjMGI4ZTY2NjlmYzQ2NjFlOWQ4ZjJmMmQ2Li5jNmUyZjg5MjU5Nzg4MDgzNDZm
Y2M1YzAzMWNkZmEyOTU4M2ViOGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaApAQCAt
ODMsMTAgKzgzLDEwIEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGludmFsaWRhdGVSZWN0KGNvbnN0
IEludFJlY3QmIGxheWVyUmVjdCk7CiAKICAgICAvLyBQcmVwYXJlIGRhdGEgbmVlZGVkIHRvIHVw
ZGF0ZSB0ZXh0dXJlcyB0aGF0IGludGVyc2VjdCB3aXRoIGxheWVyUmVjdC4KLSAgICB2b2lkIHBy
ZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpOworICAgIHZvaWQgcHJlcGFy
ZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3QgUmVnaW9uKiBvY2NsdWRl
ZFRhcmdldFNwYWNlKTsKIAogICAgIC8vIFNhbWUgYXMgYWJvdmUsIGJ1dCB0aGlzIHdpbGwgdHJ5
IHRvIHBhaW50IGFkZGl0aW9uYWwgc3Vycm91bmRpbmcgY29udGVudCBpZiBpZGxlLgotICAgIHZv
aWQgcHJlcGFyZVRvVXBkYXRlSWRsZShjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpOworICAgIHZv
aWQgcHJlcGFyZVRvVXBkYXRlSWRsZShjb25zdCBJbnRSZWN0JiBsYXllclJlY3QsIGNvbnN0IFJl
Z2lvbiogb2NjbHVkZWRUYXJnZXRTcGFjZSk7CiAKICAgICAvLyBBZnRlciBwcmVwYXJpbmcgYW4g
dXBkYXRlLCByZXR1cm5zIHRydWUgaWYgbW9yZSBwcmUtcGFpbnRpbmcgaXMgbmVlZGVkLgogICAg
IGJvb2wgbmVlZHNJZGxlUGFpbnQoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KTsKQEAgLTEwMyw3
ICsxMDMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlVGlsZXJJZk5lZWRlZCgpOwogICAg
IHZvaWQgc2V0VGlsaW5nT3B0aW9uKFRpbGluZ09wdGlvbik7CiAKLSAgICB2b2lkIHByZXBhcmVU
b1VwZGF0ZVRpbGVzKGJvb2wgaWRsZSwgaW50IGxlZnQsIGludCB0b3AsIGludCByaWdodCwgaW50
IGJvdHRvbSk7CisgICAgdm9pZCBwcmVwYXJlVG9VcGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBs
ZWZ0LCBpbnQgdG9wLCBpbnQgcmlnaHQsIGludCBib3R0b20sIGNvbnN0IFJlZ2lvbiogb2NjbHVk
ZWRUYXJnZXRTcGFjZSk7CiAgICAgSW50UmVjdCBpZGxlUGFpbnRSZWN0KGNvbnN0IEludFJlY3Qm
IHZpc2libGVMYXllclJlY3QpOwogCiAgICAgVXBkYXRhYmxlVGlsZSogdGlsZUF0KGludCwgaW50
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IDlhNTU3OTQ4YjJm
MmQ0NGMxZWY2YzRiODc1MmRiODAxMTNiNTc0ODcuLjNjMmEyOTFlZWMwZmVkYzE0ZmJlMDhiOTUz
Nzg1M2IwN2QxNGZlZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtNDAz
LDE0ICs0MDMsMTQgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhMYXllckNo
cm9taXVtKiByb290TGF5ZXIpCiB9CiAKIC8vIHN0YXRpYwotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6
OnBhaW50Q29udGVudHNJZkRpcnR5KExheWVyQ2hyb21pdW0qIGxheWVyLCBQYWludFR5cGUgcGFp
bnRUeXBlKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50Q29udGVudHNJZkRpcnR5KExheWVy
Q2hyb21pdW0qIGxheWVyLCBQYWludFR5cGUgcGFpbnRUeXBlLCBjb25zdCBSZWdpb24qIG9jY2x1
ZGVkVGFyZ2V0U3BhY2UpCiB7CiAgICAgQVNTRVJUKGxheWVyKTsKICAgICBBU1NFUlQoUGFpbnRW
aXNpYmxlID09IHBhaW50VHlwZSB8fCBQYWludElkbGUgPT0gcGFpbnRUeXBlKTsKICAgICBpZiAo
UGFpbnRWaXNpYmxlID09IHBhaW50VHlwZSkKLSAgICAgICAgbGF5ZXItPnBhaW50Q29udGVudHNJ
ZkRpcnR5KCk7CisgICAgICAgIGxheWVyLT5wYWludENvbnRlbnRzSWZEaXJ0eShvY2NsdWRlZFRh
cmdldFNwYWNlKTsKICAgICBlbHNlCi0gICAgICAgIGxheWVyLT5pZGxlUGFpbnRDb250ZW50c0lm
RGlydHkoKTsKKyAgICAgICAgbGF5ZXItPmlkbGVQYWludENvbnRlbnRzSWZEaXJ0eShvY2NsdWRl
ZFRhcmdldFNwYWNlKTsKIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TWFza0FuZFJl
cGxpY2FGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0qIHJlbmRlclN1cmZhY2VMYXllciwg
UGFpbnRUeXBlIHBhaW50VHlwZSkKQEAgLTQxOCwxOSArNDE4LDIwIEBAIHZvaWQgQ0NMYXllclRy
ZWVIb3N0OjpwYWludE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9taXVt
KiByZW5kZXJTCiAgICAgLy8gTm90ZTogTWFza3MgYW5kIHJlcGxpY2FzIG9ubHkgZXhpc3QgZm9y
IGxheWVycyB0aGF0IG93biByZW5kZXIgc3VyZmFjZXMuIElmIHdlIHJlYWNoIHRoaXMgcG9pbnQK
ICAgICAvLyBpbiBjb2RlLCB3ZSBhbHJlYWR5IGtub3cgdGhhdCBhdCBsZWFzdCBzb21ldGhpbmcg
d2lsbCBiZSBkcmF3biBpbnRvIHRoaXMgcmVuZGVyIHN1cmZhY2UsIHNvIHRoZQogICAgIC8vIG1h
c2sgYW5kIHJlcGxpY2Egc2hvdWxkIGJlIHBhaW50ZWQuCisgICAgUmVnaW9uIG5vT2NjbHVzaW9u
OwogCiAgICAgaWYgKHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVyKCkpIHsKICAgICAgICAg
cmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIoKS0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRS
ZWN0KEludFBvaW50KCksIHJlbmRlclN1cmZhY2VMYXllci0+Y29udGVudEJvdW5kcygpKSk7Ci0g
ICAgICAgIHBhaW50Q29udGVudHNJZkRpcnR5KHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVy
KCksIHBhaW50VHlwZSk7CisgICAgICAgIHBhaW50Q29udGVudHNJZkRpcnR5KHJlbmRlclN1cmZh
Y2VMYXllci0+bWFza0xheWVyKCksIHBhaW50VHlwZSwgJm5vT2NjbHVzaW9uKTsKICAgICB9CiAK
ICAgICBMYXllckNocm9taXVtKiByZXBsaWNhTGF5ZXIgPSByZW5kZXJTdXJmYWNlTGF5ZXItPnJl
cGxpY2FMYXllcigpOwogICAgIGlmIChyZXBsaWNhTGF5ZXIpIHsKLSAgICAgICAgcGFpbnRDb250
ZW50c0lmRGlydHkocmVwbGljYUxheWVyLCBwYWludFR5cGUpOworICAgICAgICBwYWludENvbnRl
bnRzSWZEaXJ0eShyZXBsaWNhTGF5ZXIsIHBhaW50VHlwZSwgJm5vT2NjbHVzaW9uKTsKIAogICAg
ICAgICBpZiAocmVwbGljYUxheWVyLT5tYXNrTGF5ZXIoKSkgewogICAgICAgICAgICAgcmVwbGlj
YUxheWVyLT5tYXNrTGF5ZXIoKS0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KEludFBvaW50
KCksIHJlcGxpY2FMYXllci0+bWFza0xheWVyKCktPmNvbnRlbnRCb3VuZHMoKSkpOwotICAgICAg
ICAgICAgcGFpbnRDb250ZW50c0lmRGlydHkocmVwbGljYUxheWVyLT5tYXNrTGF5ZXIoKSwgcGFp
bnRUeXBlKTsKKyAgICAgICAgICAgIHBhaW50Q29udGVudHNJZkRpcnR5KHJlcGxpY2FMYXllci0+
bWFza0xheWVyKCksIHBhaW50VHlwZSwgJm5vT2NjbHVzaW9uKTsKICAgICAgICAgfQogICAgIH0K
IH0KQEAgLTQ1Miw3ICs0NTMsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRMYXllckNv
bnRlbnRzKGNvbnN0IExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdAogICAgICAgICAg
ICAgcGFpbnRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UoKml0LCBwYWludFR5cGUpOwog
ICAgICAgICB9IGVsc2UgaWYgKGl0LnJlcHJlc2VudHNJdHNlbGYoKSkgewogICAgICAgICAgICAg
QVNTRVJUKCFpdC0+Ym91bmRzKCkuaXNFbXB0eSgpKTsKLSAgICAgICAgICAgIHBhaW50Q29udGVu
dHNJZkRpcnR5KCppdCwgcGFpbnRUeXBlKTsKKyAgICAgICAgICAgIHBhaW50Q29udGVudHNJZkRp
cnR5KCppdCwgcGFpbnRUeXBlLCAmb2NjbHVkZWRUYXJnZXRTcGFjZSk7CiAKICAgICAgICAgICAg
IC8vIEFkZCB0aGUgbGF5ZXIncyBvY2NsdXNpb24gdG8gdGhlIHJlZ2lvbiBmb3IgdGhlIG5leHQg
bGF5ZXIgdG8gYmUgYWJsZSB0byB1c2UgZm9yIGN1bGxpbmcuCiAgICAgICAgICAgICBpdC0+YWRk
U2VsZlRvT2NjbHVkZWRSZWdpb24oJm9jY2x1ZGVkVGFyZ2V0U3BhY2UpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3QuaAppbmRleCAzZDZmZTRhZmQwMWZjZGYxZmI4MWJiMTQ5ZDUxNTEzZWFkNzVl
NTIyLi43MWIzZGQzYzI1ODZhZWVkNTVkMjQwYzU5NjFkZTM1OWMxMTZjMzgxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuaApAQCAtMjA2LDcgKzIwNiw3IEBAIHByaXZhdGU6CiAgICAgdHlw
ZWRlZiBWZWN0b3I8T3duUHRyPE1hbmFnZWRUZXh0dXJlPiA+IFRleHR1cmVMaXN0OwogCiAgICAg
ZW51bSBQYWludFR5cGUgeyBQYWludFZpc2libGUsIFBhaW50SWRsZSB9OwotICAgIHN0YXRpYyB2
b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KExheWVyQ2hyb21pdW0qLCBQYWludFR5cGUpOworICAg
IHN0YXRpYyB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KExheWVyQ2hyb21pdW0qLCBQYWludFR5
cGUsIGNvbnN0IFJlZ2lvbiogb2NjbHVkZWRUYXJnZXRTcGFjZSk7CiAgICAgdm9pZCBwYWludExh
eWVyQ29udGVudHMoY29uc3QgTGF5ZXJMaXN0JiwgUGFpbnRUeXBlKTsKICAgICB2b2lkIHBhaW50
TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0qLCBQYWludFR5cGUp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVl
SG9zdFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhv
c3RUZXN0LmNwcAppbmRleCA1OGRlNzU5YmIzMzkzYjVkZTdkOTg2MjA2YjdjZWY5M2Y3YWEyZDcx
Li5iMDNhMzQ3YzEwY2I2ZDI1ZjI5MjcwZGFlMWI0MDk1M2ZjZWY2ZWE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKQEAg
LTk5NywxNSArOTk3LDE1IEBAIHB1YmxpYzoKICAgICBpbnQgdXBkYXRlQ291bnQoKSB7IHJldHVy
biBtX3VwZGF0ZUNvdW50OyB9CiAgICAgdm9pZCByZXNldFVwZGF0ZUNvdW50KCkgeyBtX3VwZGF0
ZUNvdW50ID0gMDsgfQogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KCkK
KyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uKiBvY2Ns
dWRlZCkKICAgICB7Ci0gICAgICAgIENvbnRlbnRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRz
SWZEaXJ0eSgpOworICAgICAgICBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lm
RGlydHkob2NjbHVkZWQpOwogICAgICAgICBtX3BhaW50Q29udGVudHNDb3VudCsrOwogICAgIH0K
IAotICAgIHZpcnR1YWwgdm9pZCBpZGxlUGFpbnRDb250ZW50c0lmRGlydHkoKQorICAgIHZpcnR1
YWwgdm9pZCBpZGxlUGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uKiBvY2NsdWRlZCkK
ICAgICB7Ci0gICAgICAgIENvbnRlbnRMYXllckNocm9taXVtOjppZGxlUGFpbnRDb250ZW50c0lm
RGlydHkoKTsKKyAgICAgICAgQ29udGVudExheWVyQ2hyb21pdW06OmlkbGVQYWludENvbnRlbnRz
SWZEaXJ0eShvY2NsdWRlZCk7CiAgICAgICAgIG1faWRsZVBhaW50Q29udGVudHNDb3VudCsrOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMy
RExheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2Fu
dmFzMkRMYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggZjBiNWM0MTFiNjU2YWVkZTc1OTU3MTBl
NGQ4Y2ZkN2QyNGRiNTMzYy4uNGQ4MmJmOTFhZjJlNWI3NGM2YzFkYjVlMGMzZWMzYzdjYjExNjJi
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVy
Q2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZh
czJETGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ0NT
Y2hlZHVsZXJUZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSAiRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNE
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgiCisjaW5jbHVkZSAiUmVn
aW9uLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hbmFnZXIuaCIKICNpbmNsdWRlICJjYy9DQ0NhbnZh
c0xheWVySW1wbC5oIgogI2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIKQEAgLTEz
Niw5ICsxMzcsMTEgQEAgcHJvdGVjdGVkOgogICAgICAgICBjYW52YXMtPnNldEJvdW5kcyhJbnRT
aXplKDYwMCwgMzAwKSk7CiAgICAgICAgIGNhbnZhcy0+c2V0VGV4dHVyZUlkKGJhY2tUZXh0dXJl
SWQpOwogCisgICAgICAgIFJlZ2lvbiBvY2NsdWRlZDsKKwogICAgICAgICBjYW52YXMtPmNvbnRl
bnRDaGFuZ2VkKCk7CiAgICAgICAgIEVYUEVDVF9UUlVFKGNhbnZhcy0+bmVlZHNEaXNwbGF5KCkp
OwotICAgICAgICBjYW52YXMtPnBhaW50Q29udGVudHNJZkRpcnR5KCk7CisgICAgICAgIGNhbnZh
cy0+cGFpbnRDb250ZW50c0lmRGlydHkoJm9jY2x1ZGVkKTsKICAgICAgICAgRVhQRUNUX0ZBTFNF
KGNhbnZhcy0+bmVlZHNEaXNwbGF5KCkpOwogICAgICAgICB7CiAgICAgICAgICAgICBEZWJ1Z1Nj
b3BlZFNldEltcGxUaHJlYWQgc2NvcGVkSW1wbFRocmVhZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IDEz
ZTAxNGIzMWQ1ZDI1NjA1YmQ1YWYwZmJlYzhkOTAzZjczZWQwMDMuLmI2MDBjYmE1M2I2ZjMxMGIz
NTU4YWUzZjNlYWI3ZTc1MzE4Y2QxZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtNTcsMzQgKzU3LDQz
IEBAIGNsYXNzIEZha2VMYXllclRleHR1cmVVcGRhdGVyIDogcHVibGljIExheWVyVGV4dHVyZVVw
ZGF0ZXIgewogcHVibGljOgogICAgIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6VGV4dHVyZSB7CiAgICAgcHVibGljOgotICAgICAgICBUZXh0dXJlKFBhc3NPd25Q
dHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpIDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVy
ZSh0ZXh0dXJlKSB7IH0KKyAgICAgICAgVGV4dHVyZShQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJl
PiB0ZXh0dXJlLCBGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlciogdXBkYXRlcikgOiBMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlKHRleHR1cmUpLCBtX3VwZGF0ZXIodXBkYXRlcikgeyB9CiAgICAg
ICAgIHZpcnR1YWwgflRleHR1cmUoKSB7IH0KIAogICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
UmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0
JiwgY29uc3QgSW50UmVjdCYpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVJlY3Qo
Y29uc3QgSW50UmVjdCYpIHsgKyttX3VwZGF0ZXItPm1fcHJlcGFyZVJlY3RDb3VudDsgfQorCisg
ICAgcHJpdmF0ZToKKyAgICAgICAgRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIqIG1fdXBkYXRlcjsK
ICAgICB9OwogCi0gICAgRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKSA6IG1fcHJlcGFyZUNvdW50
KDApIHsgfQorICAgIEZha2VMYXllclRleHR1cmVVcGRhdGVyKCkgOiBtX3ByZXBhcmVDb3VudCgw
KSwgbV9wcmVwYXJlUmVjdENvdW50KDApIHsgfQogICAgIHZpcnR1YWwgfkZha2VMYXllclRleHR1
cmVVcGRhdGVyKCkgeyB9CiAKICAgICAvLyBTZXRzIHRoZSByZWN0IHRvIGludmFsaWRhdGUgZHVy
aW5nIHRoZSBuZXh0IGNhbGwgdG8gcHJlcGFyZVRvVXBkYXRlKCkuIEFmdGVyIHRoZSBuZXh0CiAg
ICAgLy8gY2FsbCB0byBwcmVwYXJlVG9VcGRhdGUoKSB0aGUgcmVjdCBpcyByZXNldC4KICAgICB2
b2lkIHNldFJlY3RUb0ludmFsaWRhdGUoY29uc3QgSW50UmVjdCYsIEZha2VUaWxlZExheWVyQ2hy
b21pdW0qKTsKIAorICAgIHZvaWQgc2V0T3BhcXVlUGFpbnRSZWN0KGNvbnN0IEludFJlY3QmIG9w
YXF1ZVBhaW50UmVjdCkgeyBtX29wYXF1ZVBhaW50UmVjdCA9IG9wYXF1ZVBhaW50UmVjdDsgfQor
CiAgICAgLy8gTnVtYmVyIG9mIHRpbWVzIHByZXBhcmVUb1VwZGF0ZSBoYXMgYmVlbiBpbnZva2Vk
LgogICAgIGludCBwcmVwYXJlQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3ByZXBhcmVDb3VudDsg
fQogICAgIHZvaWQgY2xlYXJQcmVwYXJlQ291bnQoKSB7IG1fcHJlcGFyZUNvdW50ID0gMDsgfQog
Ci0gICAgdm9pZCBzZXRPcGFxdWVQYWludFJlY3QoY29uc3QgSW50UmVjdCYgb3BhcXVlUGFpbnRS
ZWN0KSB7IG1fb3BhcXVlUGFpbnRSZWN0ID0gb3BhcXVlUGFpbnRSZWN0OyB9CisgICAgLy8gTnVt
YmVyIG9mIHRpbWVzIHByZXBhcmVSZWN0IGhhcyBiZWVuIGludm9rZWQgb24gYSB0ZXh0dXJlLgor
ICAgIGludCBwcmVwYXJlUmVjdENvdW50KCkgY29uc3QgeyByZXR1cm4gbV9wcmVwYXJlUmVjdENv
dW50OyB9CisgICAgdm9pZCBjbGVhclByZXBhcmVSZWN0Q291bnQoKSB7IG1fcHJlcGFyZVJlY3RD
b3VudCA9IDA7IH0KIAogICAgIC8vIExhc3QgcmVjdCBwYXNzZWQgdG8gcHJlcGFyZVRvVXBkYXRl
KCkuCiAgICAgY29uc3QgSW50UmVjdCYgbGFzdFVwZGF0ZVJlY3QoKSAgY29uc3QgeyByZXR1cm4g
bV9sYXN0VXBkYXRlUmVjdDsgfQogCi0gICAgdmlydHVhbCBQYXNzT3duUHRyPExheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4dHVyZU1hbmFnZXIqIG1hbmFnZXIp
IHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBUZXh0dXJlKE1hbmFnZWRUZXh0dXJlOjpjcmVhdGUobWFu
YWdlcikpKTsgfQorICAgIHZpcnR1YWwgUGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlPiBjcmVhdGVUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKiBtYW5hZ2VyKSB7IHJldHVybiBh
ZG9wdFB0cihuZXcgVGV4dHVyZShNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKG1hbmFnZXIpLCB0aGlz
KSk7IH0KICAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQo
R0MzRGVudW0pIHsgcmV0dXJuIFNhbXBsZWRUZXhlbEZvcm1hdFJHQkE7IH0KICAgICB2aXJ0dWFs
IHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJ
bnRTaXplJiwgaW50LCBmbG9hdCwgSW50UmVjdCogcmVzdWx0aW5nT3BhcXVlUmVjdCk7CiAKIHBy
aXZhdGU6CiAgICAgaW50IG1fcHJlcGFyZUNvdW50OworICAgIGludCBtX3ByZXBhcmVSZWN0Q291
bnQ7CiAgICAgSW50UmVjdCBtX3JlY3RUb0ludmFsaWRhdGU7CiAgICAgSW50UmVjdCBtX2xhc3RV
cGRhdGVSZWN0OwogICAgIEludFJlY3QgbV9vcGFxdWVQYWludFJlY3Q7CkBAIC0xMjIsMTQgKzEz
MSwxNCBAQCBwdWJsaWM6CiAgICAgICAgIFRpbGVkTGF5ZXJDaHJvbWl1bTo6aW52YWxpZGF0ZVJl
Y3QocmVjdCk7CiAgICAgfQogCi0gICAgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVj
dCYgcmVjdCkKKyAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiByZWN0LCBj
b25zdCBSZWdpb24qIG9jY2x1ZGVkKQogICAgIHsKLSAgICAgICAgVGlsZWRMYXllckNocm9taXVt
OjpwcmVwYXJlVG9VcGRhdGUocmVjdCk7CisgICAgICAgIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJl
cGFyZVRvVXBkYXRlKHJlY3QsIG9jY2x1ZGVkKTsKICAgICB9CiAKLSAgICB2b2lkIHByZXBhcmVU
b1VwZGF0ZUlkbGUoY29uc3QgSW50UmVjdCYgcmVjdCkKKyAgICB2b2lkIHByZXBhcmVUb1VwZGF0
ZUlkbGUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgUmVnaW9uKiBvY2NsdWRlZCkKICAgICB7
Ci0gICAgICAgIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWRsZShyZWN0KTsK
KyAgICAgICAgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZGxlKHJlY3QsIG9j
Y2x1ZGVkKTsKICAgICB9CiAKICAgICBib29sIG5lZWRzSWRsZVBhaW50KGNvbnN0IEludFJlY3Qm
IHJlY3QpCkBAIC0xNzcsNiArMTg2LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBw
dXNoRGlydHlUaWxlcykKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIg
PSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQo
KSkpOwogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAgIFJlZlB0
cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsID0gYWRvcHRSZWYobmV3IEZha2VDQ1Rp
bGVkTGF5ZXJJbXBsKDApKTsKKyAgICBSZWdpb24gb2NjbHVkZWQ7CiAKICAgICBGYWtlVGV4dHVy
ZUFsbG9jYXRvciB0ZXh0dXJlQWxsb2NhdG9yOwogICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRl
cigmdGV4dHVyZUFsbG9jYXRvcik7CkBAIC0xODQsNyArMTk0LDcgQEAgVEVTVChUaWxlZExheWVy
Q2hyb21pdW1UZXN0LCBwdXNoRGlydHlUaWxlcykKICAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEw
MHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxlcy4KICAg
ICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAyMDApKTsKICAgICBsYXllci0+aW52YWxp
ZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwotICAgIGxheWVyLT5wcmVwYXJlVG9V
cGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRh
dGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksICZvY2NsdWRlZCk7CiAgICAgbGF5ZXItPnVwZGF0
ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0
aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIApAQCAtMTk3LDcgKzIwNyw3IEBAIFRFU1QoVGlsZWRM
YXllckNocm9taXVtVGVzdCwgcHVzaERpcnR5VGlsZXMpCiAgICAgLy8gSW52YWxpZGF0ZXMgYm90
aCB0aWxlcy4uLgogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDEwMCwg
MjAwKSk7CiAgICAgLy8gLi4uLmJ1dCB0aGVuIG9ubHkgdXBkYXRlIG9uZSBvZiB0aGVtLgotICAg
IGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpOworICAgIGxh
eWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCksICZvY2NsdWRlZCk7
CiAgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAgICAg
bGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIApAQCAtMjIwLDEyICsy
MzAsMTMgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoSWRsZVBhaW50VGlsZXMp
CiAgICAgSW50U2l6ZSBjb250ZW50Qm91bmRzKDUwMCwgNTAwKTsKICAgICBJbnRSZWN0IGNvbnRl
bnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIGNvbnRlbnRCb3VuZHMpOwogICAgIEludFJlY3Qgdmlz
aWJsZVJlY3QoMjAwLCAyMDAsIDEwMCwgMTAwKTsKKyAgICBSZWdpb24gb2NjbHVkZWQ7CiAKICAg
ICAvLyBUaGlzIGludmFsaWRhdGVzIDI1IHRpbGVzIGFuZCB0aGVuIHBhaW50cyBvbmUgdmlzaWJs
ZSB0aWxlLgogICAgIGxheWVyLT5zZXRCb3VuZHMoY29udGVudEJvdW5kcyk7CiAgICAgbGF5ZXIt
PnNldFZpc2libGVMYXllclJlY3QodmlzaWJsZVJlY3QpOwogICAgIGxheWVyLT5pbnZhbGlkYXRl
UmVjdChjb250ZW50UmVjdCk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZSh2aXNpYmxlUmVj
dCk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZSh2aXNpYmxlUmVjdCwgJm9jY2x1ZGVkKTsK
IAogICAgIC8vIFdlIHNob3VsZCBuZWVkIGlkbGUtcGFpbnRpbmcgZm9yIDN4MyB0aWxlcyBpbiB0
aGUgY2VudGVyLgogICAgIEVYUEVDVF9UUlVFKGxheWVyLT5uZWVkc0lkbGVQYWludCh2aXNpYmxl
UmVjdCkpOwpAQCAtMjQwLDkgKzI1MSw5IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
cHVzaElkbGVQYWludFRpbGVzKQogCiAgICAgLy8gRm9yIHRoZSBuZXh0IGZvdXIgdXBkYXRlcywg
d2Ugc2hvdWxkIGRldGVjdCB3ZSBzdGlsbCBuZWVkIGlkbGUgcGFpbnRpbmcuCiAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCA0OyBpKyspIHsKLSAgICAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZSh2
aXNpYmxlUmVjdCk7CisgICAgICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUodmlzaWJsZVJlY3Qs
ICZvY2NsdWRlZCk7CiAgICAgICAgIEVYUEVDVF9UUlVFKGxheWVyLT5uZWVkc0lkbGVQYWludCh2
aXNpYmxlUmVjdCkpOwotICAgICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlSWRsZSh2aXNpYmxl
UmVjdCk7CisgICAgICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGVJZGxlKHZpc2libGVSZWN0LCAm
b2NjbHVkZWQpOwogICAgICAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1
cGRhdGVyKTsKICAgICAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgp
KTsKICAgICAgICAgdGV4dHVyZU1hbmFnZXItPnVucHJvdGVjdEFsbFRleHR1cmVzKCk7CkBAIC0y
NzAsNiArMjgxLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRPdXRP
Zk1lbW9yeSkKICAgICBJbnRTaXplIGNvbnRlbnRCb3VuZHMoMzAwLCAzMDApOwogICAgIEludFJl
Y3QgY29udGVudFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgY29udGVudEJvdW5kcyk7CiAgICAgSW50
UmVjdCB2aXNpYmxlUmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApOworICAgIFJlZ2lvbiBvY2NsdWRl
ZDsKIAogICAgIC8vIFdlIGhhdmUgZW5vdWdoIG1lbW9yeSBmb3Igb25seSB0aGUgdmlzaWJsZSBy
ZWN0LCBzbyB3ZSB3aWxsIHJ1biBvdXQgb2YgbWVtb3J5IGluIGZpcnN0IGlkbGUgcGFpbnQuCiAg
ICAgaW50IG1lbW9yeUxpbWl0ID0gNCAqIDEwMCAqIDEwMDsgLy8gMiB0aWxlcywgNCBieXRlcyBw
ZXIgcGl4ZWwuCkBAIC0yODYsNyArMjk4LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0
LCBpZGxlUGFpbnRPdXRPZk1lbW9yeSkKICAgICBsYXllci0+c2V0Qm91bmRzKGNvbnRlbnRCb3Vu
ZHMpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KHZpc2libGVSZWN0KTsKICAgICBs
YXllci0+aW52YWxpZGF0ZVJlY3QoY29udGVudFJlY3QpOwotICAgIGxheWVyLT5wcmVwYXJlVG9V
cGRhdGUodmlzaWJsZVJlY3QpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUodmlzaWJsZVJl
Y3QsICZvY2NsdWRlZCk7CiAKICAgICAvLyBXZSBzaG91bGQgbmVlZCBpZGxlLXBhaW50aW5nIGZv
ciAzeDMgdGlsZXMgc3Vyb3VuZGluZyB2aXNpYmxlIHRpbGUuCiAgICAgRVhQRUNUX1RSVUUobGF5
ZXItPm5lZWRzSWRsZVBhaW50KHZpc2libGVSZWN0KSk7CkBAIC0yOTgsOCArMzEwLDggQEAgVEVT
VChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRPdXRPZk1lbW9yeSkKICAgICBFWFBF
Q1RfVFJVRShsYXllckltcGwtPmhhc1RpbGVBdCgxLCAxKSk7CiAKICAgICB0ZXh0dXJlTWFuYWdl
ci0+dW5wcm90ZWN0QWxsVGV4dHVyZXMoKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKHZp
c2libGVSZWN0KTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlSWRsZSh2aXNpYmxlUmVjdCk7
CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZSh2aXNpYmxlUmVjdCwgJm9jY2x1ZGVkKTsKKyAg
ICBsYXllci0+cHJlcGFyZVRvVXBkYXRlSWRsZSh2aXNpYmxlUmVjdCwgJm9jY2x1ZGVkKTsKIAog
ICAgIC8vIFdlIHNob3VsZG4ndCBzaWduYWwgd2UgbmVlZCBhbm90aGVyIGlkbGUgcGFpbnQgYWZ0
ZXIgd2UgcnVuIG91dCBvZiBtZW1vcnkuCiAgICAgRVhQRUNUX0ZBTFNFKGxheWVyLT5uZWVkc0lk
bGVQYWludCh2aXNpYmxlUmVjdCkpOwpAQCAtMzE0LDYgKzMyNiw3IEBAIFRFU1QoVGlsZWRMYXll
ckNocm9taXVtVGVzdCwgaW52YWxpZGF0ZUZyb21QcmVwYXJlKQogICAgIFJlZlB0cjxGYWtlVGls
ZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9t
aXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFk
IGltcGxUaHJlYWQ7CiAgICAgUmVmUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwg
PSBhZG9wdFJlZihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpOworICAgIFJlZ2lvbiBvY2Ns
dWRlZDsKIAogICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7CiAgICAg
Q0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsKQEAgLTMyMSw3ICsz
MzQsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGludmFsaWRhdGVGcm9tUHJlcGFy
ZSkKICAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMg
YW5kIHRoZW4gcGFpbnRzIHR3byB0aWxlcy4KICAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUo
MTAwLCAyMDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAs
IDIwMCkpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIw
MCkpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCks
ICZvY2NsdWRlZCk7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBk
YXRlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIApA
QCAtMzM0LDE4ICszNDcsMTggQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpbnZhbGlk
YXRlRnJvbVByZXBhcmUpCiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNs
ZWFyUHJlcGFyZUNvdW50KCk7CiAgICAgLy8gSW52b2tlIHByZXBhcmVUb1VwZGF0ZSBhZ2Fpbi4g
QXMgdGhlIGxheWVyIGlzIHZhbGlkIHByZXBhcmVUb1VwZGF0ZSBzaG91bGRuJ3QgYmUgaW52b2tl
ZCBvbgogICAgIC8vIHRoZSBMYXllclRleHR1cmVVcGRhdGVyLgotICAgIGxheWVyLT5wcmVwYXJl
VG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOworICAgIGxheWVyLT5wcmVwYXJlVG9V
cGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksICZvY2NsdWRlZCk7CiAgICAgRVhQRUNUX0VR
KDAsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlQ291bnQoKSk7CiAK
ICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA1MCwgNTApKTsKICAgICAv
LyBzZXRSZWN0VG9JbnZhbGlkYXRlIHRyaWdnZXJzIGludmFsaWRhdGVSZWN0KCkgYmVpbmcgaW52
b2tlZCBmcm9tIHByZXBhcmVUb1VwZGF0ZS4KICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVw
ZGF0ZXIoKS0+c2V0UmVjdFRvSW52YWxpZGF0ZShJbnRSZWN0KDI1LCAyNSwgNTAsIDUwKSwgbGF5
ZXIuZ2V0KCkpOwogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclBy
ZXBhcmVDb3VudCgpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAx
MDAsIDIwMCkpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAs
IDIwMCksICZvY2NsdWRlZCk7CiAgICAgRVhQRUNUX0VRKDEsIGxheWVyLT5mYWtlTGF5ZXJUZXh0
dXJlVXBkYXRlcigpLT5wcmVwYXJlQ291bnQoKSk7CiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1
cmVVcGRhdGVyKCktPmNsZWFyUHJlcGFyZUNvdW50KCk7CiAgICAgLy8gVGhlIGxheWVyIHNob3Vs
ZCBzdGlsbCBiZSBpbnZhbGlkIGFzIHByZXBhcmVUb1VwZGF0ZSBpbnZva2VkIGludmFsaWRhdGUu
Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7Cisg
ICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgJm9jY2x1
ZGVkKTsKICAgICBFWFBFQ1RfRVEoMSwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCkt
PnByZXBhcmVDb3VudCgpKTsKIH0KIApAQCAtMzc1LDM4ICszODgsMzggQEAgVEVTVChUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCBsYXllckFkZHNTZWxmVG9PY2NsdWRlZFJlZ2lvbikKICAgICAvLyBJ
ZiB0aGUgbGF5ZXIgaXMgb3BhcXVlIHRoZW4gdGhlIG9jY2x1ZGVkIHJlZ2lvbiBzaG91bGQgYmUg
dGhlIHdob2xlIGxheWVyJ3MgdmlzaWJsZSByZWdpb24uCiAgICAgbGF5ZXItPnNldE9wYXF1ZSh0
cnVlKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoY29udGVudEJvdW5kcyk7Ci0gICAgbGF5
ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzKTsKKyAgICBsYXllci0+cHJlcGFyZVRv
VXBkYXRlKGNvbnRlbnRCb3VuZHMsICZvY2NsdWRlZCk7CiAKLSAgICBvY2NsdWRlZCA9IFJlZ2lv
bigpOwogICAgIGxheWVyLT5hZGRTZWxmVG9PY2NsdWRlZFJlZ2lvbigmb2NjbHVkZWQpOwogICAg
IEVYUEVDVF9FUV9SRUNUKHZpc2libGVCb3VuZHMsIG9jY2x1ZGVkLmJvdW5kcygpKTsKKyAgICBv
Y2NsdWRlZCA9IFJlZ2lvbigpOwogCiAgICAgLy8gSWYgdGhlIGxheWVyIGlzIG5vdCBvcGFxdWUg
dGhlbiB0aGUgb2NjbHVkZWQgcmVnaW9uIHNob3VsZCBiZSBlbXB0eS4KICAgICBsYXllci0+c2V0
T3BhcXVlKGZhbHNlKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoY29udGVudEJvdW5kcyk7
Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzKTsKKyAgICBsYXllci0+
cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMsICZvY2NsdWRlZCk7CiAKLSAgICBvY2NsdWRl
ZCA9IFJlZ2lvbigpOwogICAgIGxheWVyLT5hZGRTZWxmVG9PY2NsdWRlZFJlZ2lvbigmb2NjbHVk
ZWQpOwogICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoKSwgb2NjbHVkZWQuYm91bmRzKCkpOwor
ICAgIG9jY2x1ZGVkID0gUmVnaW9uKCk7CiAKICAgICAvLyBJZiB0aGUgbGF5ZXIgcGFpbnRzIG9w
YXF1ZSBjb250ZW50LCB0aGVuIHRoZSBvY2NsdWRlZCByZWdpb24gc2hvdWxkIG1hdGNoIHRoZSB2
aXNpYmxlIG9wYXF1ZSBjb250ZW50LgogICAgIEludFJlY3Qgb3BhcXVlUGFpbnRSZWN0ID0gSW50
UmVjdCgxMCwgMTAsIDkwLCAxOTApOwogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRl
cigpLT5zZXRPcGFxdWVQYWludFJlY3Qob3BhcXVlUGFpbnRSZWN0KTsKICAgICBsYXllci0+aW52
YWxpZGF0ZVJlY3QoY29udGVudEJvdW5kcyk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShj
b250ZW50Qm91bmRzKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMs
ICZvY2NsdWRlZCk7CiAKLSAgICBvY2NsdWRlZCA9IFJlZ2lvbigpOwogICAgIGxheWVyLT5hZGRT
ZWxmVG9PY2NsdWRlZFJlZ2lvbigmb2NjbHVkZWQpOwogICAgIEVYUEVDVF9FUV9SRUNUKGludGVy
c2VjdGlvbihvcGFxdWVQYWludFJlY3QsIHZpc2libGVCb3VuZHMpLCBvY2NsdWRlZC5ib3VuZHMo
KSk7CisgICAgb2NjbHVkZWQgPSBSZWdpb24oKTsKIAogICAgIC8vIElmIHdlIHBhaW50IGFnYWlu
IHdpdGhvdXQgaW52YWxpZGF0aW5nLCB0aGUgc2FtZSBzdHVmZiBzaG91bGQgYmUgb2NjbHVkZWQu
CiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNldE9wYXF1ZVBhaW50UmVj
dChJbnRSZWN0KCkpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcyk7
CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzLCAmb2NjbHVkZWQpOwog
Ci0gICAgb2NjbHVkZWQgPSBSZWdpb24oKTsKICAgICBsYXllci0+YWRkU2VsZlRvT2NjbHVkZWRS
ZWdpb24oJm9jY2x1ZGVkKTsKICAgICBFWFBFQ1RfRVFfUkVDVChpbnRlcnNlY3Rpb24ob3BhcXVl
UGFpbnRSZWN0LCB2aXNpYmxlQm91bmRzKSwgb2NjbHVkZWQuYm91bmRzKCkpOworICAgIG9jY2x1
ZGVkID0gUmVnaW9uKCk7CiAKICAgICAvLyBJZiB0aGUgbGF5ZXIgaXMgdHJhbnNmb3JtZWQgdGhl
biB0aGUgcmVzdWx0aW5nIG9jY2x1ZGVkIGFyZWEgbmVlZHMgdG8gYmUgdHJhbnNmb3JtZWQgdG8g
aXRzIHRhcmdldCBzcGFjZS4KICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm07CkBA
IC00MTcsMTEgKzQzMCwxMSBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGxheWVyQWRk
c1NlbGZUb09jY2x1ZGVkUmVnaW9uKQogICAgIGRyYXdUcmFuc2Zvcm0gPSB0cmFuc2Zvcm07CiAg
ICAgZHJhd1RyYW5zZm9ybS50cmFuc2xhdGUoY29udGVudEJvdW5kcy53aWR0aCgpIC8gMi4wLCBj
b250ZW50Qm91bmRzLmhlaWdodCgpIC8gMi4wKTsKICAgICBsYXllci0+c2V0RHJhd1RyYW5zZm9y
bShkcmF3VHJhbnNmb3JtKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3Vu
ZHMpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcywgJm9jY2x1ZGVk
KTsKIAotICAgIG9jY2x1ZGVkID0gUmVnaW9uKCk7CiAgICAgbGF5ZXItPmFkZFNlbGZUb09jY2x1
ZGVkUmVnaW9uKCZvY2NsdWRlZCk7CiAgICAgRVhQRUNUX0VRX1JFQ1QodHJhbnNmb3JtLm1hcFJl
Y3QoaW50ZXJzZWN0aW9uKG9wYXF1ZVBhaW50UmVjdCwgdmlzaWJsZUJvdW5kcykpLCBvY2NsdWRl
ZC5ib3VuZHMoKSk7CisgICAgb2NjbHVkZWQgPSBSZWdpb24oKTsKIAogICAgIC8vIEJ1dCBhIG5v
bi1heGlzLWFsaWduZWQgdHJhbnNmb3JtIGRvZXMgbm90IGdldCBjb25zaWRlcmVkIGZvciBvY2Ns
dXNpb24uCiAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZShjb250ZW50Qm91bmRzLndpZHRoKCkgLyAy
LjAsIGNvbnRlbnRCb3VuZHMuaGVpZ2h0KCkgLyAyLjApOwpAQCAtNDMwLDExICs0NDMsMTYxIEBA
IFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgbGF5ZXJBZGRzU2VsZlRvT2NjbHVkZWRSZWdp
b24pCiAgICAgZHJhd1RyYW5zZm9ybSA9IHRyYW5zZm9ybTsKICAgICBkcmF3VHJhbnNmb3JtLnRy
YW5zbGF0ZShjb250ZW50Qm91bmRzLndpZHRoKCkgLyAyLjAsIGNvbnRlbnRCb3VuZHMuaGVpZ2h0
KCkgLyAyLjApOwogICAgIGxheWVyLT5zZXREcmF3VHJhbnNmb3JtKGRyYXdUcmFuc2Zvcm0pOwot
ICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcyk7CisgICAgbGF5ZXItPnBy
ZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzLCAmb2NjbHVkZWQpOwogCi0gICAgb2NjbHVkZWQg
PSBSZWdpb24oKTsKICAgICBsYXllci0+YWRkU2VsZlRvT2NjbHVkZWRSZWdpb24oJm9jY2x1ZGVk
KTsKICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KCksIG9jY2x1ZGVkLmJvdW5kcygpKTsKIH0K
IAorVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRob3V0T2NjbHVz
aW9uKQoreworICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0
dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAyKjEwMjQqMTAyNCwgMTAyNCk7CisgICAg
UmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VU
aWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKKyAgICBSZWdpb24gb2Nj
bHVkZWQ7CisKKyAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52YWxp
ZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxlcy4KKyAgICBsYXllci0+c2V0Qm91bmRzKElu
dFNpemUoMTAwLCAyMDApKTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBkcmF3VHJhbnNmb3Jt
OworICAgIGRyYXdUcmFuc2Zvcm0udHJhbnNsYXRlKDEwMCAvIDIuMCwgMjAwIC8gMi4wKTsKKyAg
ICBsYXllci0+c2V0RHJhd1RyYW5zZm9ybShkcmF3VHJhbnNmb3JtKTsKKworICAgIGxheWVyLT5p
bnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CisgICAgbGF5ZXItPnByZXBh
cmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgJm9jY2x1ZGVkKTsKKyAgICBFWFBF
Q1RfRVEoMiwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291
bnQoKSk7Cit9CisKK1RFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0
aE9jY2x1c2lvbikKK3sKKyAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2Vy
ID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQp
OworICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5l
dyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CisgICAgUmVn
aW9uIG9jY2x1ZGVkOworCisgICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLgorCisgICAg
bGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDYwMCwgNjAwKSk7CisgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggZHJhd1RyYW5zZm9ybTsKKyAgICBkcmF3VHJhbnNmb3JtLnRyYW5zbGF0ZSg2MDAgLyAy
LjAsIDYwMCAvIDIuMCk7CisgICAgbGF5ZXItPnNldERyYXdUcmFuc2Zvcm0oZHJhd1RyYW5zZm9y
bSk7CisKKyAgICBvY2NsdWRlZCA9IEludFJlY3QoMjAwLCAyMDAsIDMwMCwgMTAwKTsKKyAgICBs
YXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOworICAgIGxheWVy
LT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7Cisg
ICAgRVhQRUNUX0VRKDM2LTMsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVw
YXJlUmVjdENvdW50KCkpOworCisgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCkt
PmNsZWFyUHJlcGFyZVJlY3RDb3VudCgpOworCisgICAgb2NjbHVkZWQgPSBJbnRSZWN0KDI1MCwg
MjAwLCAzMDAsIDEwMCk7CisgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwg
NjAwLCA2MDApKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNjAw
LCA2MDApLCAmb2NjbHVkZWQpOworICAgIEVYUEVDVF9FUSgzNi0yLCBsYXllci0+ZmFrZUxheWVy
VGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKKworICAgIGxheWVyLT5mYWtl
TGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVSZWN0Q291bnQoKTsKKworICAgIG9j
Y2x1ZGVkID0gSW50UmVjdCgyNTAsIDI1MCwgMzAwLCAxMDApOworICAgIGxheWVyLT5pbnZhbGlk
YXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CisgICAgbGF5ZXItPnByZXBhcmVUb1Vw
ZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKKyAgICBFWFBFQ1RfRVEo
MzYsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkp
OworfQorCitURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzTm90UGFpbnRlZFdpdGhv
dXRJbnZhbGlkYXRpb24pCit7CisgICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFu
YWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDIqMTAyNCoxMDI0LCAx
MDI0KTsKKyAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJl
ZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOworICAg
IFJlZ2lvbiBvY2NsdWRlZDsKKworICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMC4KKwor
ICAgIGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSg2MDAsIDYwMCkpOworICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4IGRyYXdUcmFuc2Zvcm07CisgICAgZHJhd1RyYW5zZm9ybS50cmFuc2xhdGUoNjAw
IC8gMi4wLCA2MDAgLyAyLjApOworICAgIGxheWVyLT5zZXREcmF3VHJhbnNmb3JtKGRyYXdUcmFu
c2Zvcm0pOworCisgICAgb2NjbHVkZWQgPSBJbnRSZWN0KDIwMCwgMjAwLCAzMDAsIDEwMCk7Cisg
ICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOwor
ICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CisgICAg
bGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVk
KTsKKyAgICBFWFBFQ1RfRVEoMzYtMywgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCkt
PnByZXBhcmVSZWN0Q291bnQoKSk7CisKKyAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0
ZXIoKS0+Y2xlYXJQcmVwYXJlUmVjdENvdW50KCk7CisKKyAgICAvLyBSZXBhaW50IHdpdGhvdXQg
bWFya2luZyBpdCBkaXJ0eS4KKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwg
MCwgNjAwLCA2MDApLCAmb2NjbHVkZWQpOworICAgIEVYUEVDVF9FUSgwLCBsYXllci0+ZmFrZUxh
eWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKK30KKworVEVTVChUaWxl
ZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kVHJhbnNmb3Jt
cykKK3sKKyAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVy
ZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOworICAgIFJl
ZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGls
ZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CisgICAgUmVnaW9uIG9jY2x1
ZGVkOworCisgICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLgorCisgICAgLy8gVGhpcyBt
YWtlcyBzdXJlIHRoZSBwYWludGluZyB3b3JrcyB3aGVuIHRoZSBvY2NsdWRlZCByZWdpb24gKGlu
IHNjcmVlbiBzcGFjZSkKKyAgICAvLyBpcyB0cmFuc2Zvcm1lZCBkaWZmZXJlbnRseSB0aGFuIHRo
ZSBsYXllci4KKyAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoNjAwLCA2MDApKTsKKyAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBkcmF3VHJhbnNmb3JtOworICAgIGRyYXdUcmFuc2Zvcm0uc2Nh
bGUoMC41KTsKKyAgICBkcmF3VHJhbnNmb3JtLnRyYW5zbGF0ZSg2MDAgLyAyLjAsIDYwMCAvIDIu
MCk7CisgICAgbGF5ZXItPnNldERyYXdUcmFuc2Zvcm0oZHJhd1RyYW5zZm9ybSk7CisKKyAgICBv
Y2NsdWRlZCA9IEludFJlY3QoMTAwLCAxMDAsIDE1MCwgNTApOworICAgIGxheWVyLT5zZXRWaXNp
YmxlTGF5ZXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXItPmJvdW5kcygpKSk7CisgICAg
bGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKKyAgICBsYXll
ci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQpOwor
ICAgIEVYUEVDVF9FUSgzNi0zLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJl
cGFyZVJlY3RDb3VudCgpKTsKK30KKworVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxl
c1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kU2NhbGluZykKK3sKKyAgICBPd25QdHI8VGV4dHVyZU1h
bmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAy
NCwgMioxMDI0KjEwMjQsIDEwMjQpOworICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVt
PiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5h
Z2VyLmdldCgpKSk7CisgICAgUmVnaW9uIG9jY2x1ZGVkOworCisgICAgLy8gVGhlIHRpbGUgc2l6
ZSBpcyAxMDB4MTAwLgorCisgICAgLy8gVGhpcyBtYWtlcyBzdXJlIHRoZSBwYWludGluZyB3b3Jr
cyB3aGVuIHRoZSBjb250ZW50IHNwYWNlIGlzIHNjYWxlZCB0bworICAgIC8vIGEgZGlmZmVyZW50
IGxheWVyIHNwYWNlLiBJbiB0aGlzIGNhc2UgdGlsZXMgYXJlIHNjYWxlZCB0byBiZSAyMDB4MjAw
CisgICAgLy8gcGl4ZWxzLCB3aGljaCBtZWFucyBub25lIHNob3VsZCBiZSBvY2NsdWRlZC4KKyAg
ICBsYXllci0+c2V0Q29udGVudHNTY2FsZSgwLjUpOworICAgIGxheWVyLT5zZXRCb3VuZHMoSW50
U2l6ZSg2MDAsIDYwMCkpOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGRyYXdUcmFuc2Zvcm07
CisgICAgZHJhd1RyYW5zZm9ybS50cmFuc2xhdGUoNjAwIC8gMi4wLCA2MDAgLyAyLjApOworICAg
IGxheWVyLT5zZXREcmF3VHJhbnNmb3JtKGRyYXdUcmFuc2Zvcm0pOworCisgICAgb2NjbHVkZWQg
PSBJbnRSZWN0KDIwMCwgMjAwLCAzMDAsIDEwMCk7CisgICAgbGF5ZXItPnNldFZpc2libGVMYXll
clJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBsYXllci0+Ym91bmRzKCkpKTsKKyAgICBsYXllci0+
aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOworICAgIGxheWVyLT5wcmVw
YXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CisgICAgLy8g
VGhlIGNvbnRlbnQgaXMgaGFsZiB0aGUgc2l6ZSBvZiB0aGUgbGF5ZXIgKHNvIHRoZSBudW1iZXIg
b2YgdGlsZXMgaXMgZmV3ZXIpLgorICAgIC8vIEluIHRoaXMgY2FzZSwgdGhlIGNvbnRlbnQgaXMg
MzAweDMwMCwgYW5kIHNpbmNlIHRoZSB0aWxlIHNpemUgaXMgMTAwLCB0aGUKKyAgICAvLyBudW1i
ZXIgb2YgdGlsZXMgM3gzLgorICAgIEVYUEVDVF9FUSg5LCBsYXllci0+ZmFrZUxheWVyVGV4dHVy
ZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKKworICAgIGxheWVyLT5mYWtlTGF5ZXJU
ZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVSZWN0Q291bnQoKTsKKworICAgIC8vIFRoaXMg
bWFrZXMgc3VyZSB0aGUgcGFpbnRpbmcgd29ya3Mgd2hlbiB0aGUgY29udGVudCBzcGFjZSBpcyBz
Y2FsZWQgdG8KKyAgICAvLyBhIGRpZmZlcmVudCBsYXllciBzcGFjZS4gSW4gdGhpcyBjYXNlIHRo
ZSBvY2NsdWRlZCByZWdpb24gY2F0Y2hlcyB0aGUKKyAgICAvLyBibG93biB1cCB0aWxlcy4KKyAg
ICBvY2NsdWRlZCA9IEludFJlY3QoMjAwLCAyMDAsIDMwMCwgMjAwKTsKKyAgICBsYXllci0+c2V0
VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KEludFBvaW50KCksIGxheWVyLT5ib3VuZHMoKSkpOwor
ICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CisgICAg
bGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVk
KTsKKyAgICBFWFBFQ1RfRVEoOS0xLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+
cHJlcGFyZVJlY3RDb3VudCgpKTsKKworICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRl
cigpLT5jbGVhclByZXBhcmVSZWN0Q291bnQoKTsKKworICAgIC8vIFRoaXMgbWFrZXMgc3VyZSBj
b250ZW50IHNjYWxpbmcgYW5kIHRyYW5zZm9ybXMgd29yayB0b2dldGhlci4KKyAgICBkcmF3VHJh
bnNmb3JtLm1ha2VJZGVudGl0eSgpOworICAgIGRyYXdUcmFuc2Zvcm0uc2NhbGUoMC41KTsKKyAg
ICBkcmF3VHJhbnNmb3JtLnRyYW5zbGF0ZSg2MDAgLyAyLjAsIDYwMCAvIDIuMCk7CisgICAgbGF5
ZXItPnNldERyYXdUcmFuc2Zvcm0oZHJhd1RyYW5zZm9ybSk7CisKKyAgICBvY2NsdWRlZCA9IElu
dFJlY3QoMTAwLCAxMDAsIDE1MCwgMTAwKTsKKyAgICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVj
dChJbnRSZWN0KEludFBvaW50KCksIGxheWVyLT5ib3VuZHMoKSkpOworICAgIGxheWVyLT5pbnZh
bGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CisgICAgbGF5ZXItPnByZXBhcmVU
b1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKKyAgICBFWFBFQ1Rf
RVEoOS0xLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3Vu
dCgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124168</attachid>
            <date>2012-01-26 13:10:17 -0800</date>
            <delta_ts>2012-01-26 16:33:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76838-20120126161016.patch</filename>
            <type>text/plain</type>
            <size>45181</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NjI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDE1ODdjYWQzYjA2Y2Vh
NzU1NmYyM2NhMmJkYmMyZTk3Njg0ZTdjOC4uMmExY2NjOTRmYTU3YjI0YzRkMzQ4NTk5MTlhYmI1
ZTg5MTYwNGM4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM5IEBACiAyMDEyLTAxLTI2ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFtjaHJvbWl1bV0gQ3Vs
bCBvY2NsdWRlZCB0aWxlcyBkdXJpbmcgcGFpbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc2ODM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTmV3IHVuaXQgdGVzdHMgaW4gVGlsZWRMYXllckNocm9taXVt
VGVzdC5jcHAKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJE
TGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21p
dW06OnBhaW50Q29udGVudHNJZkRpcnR5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OmlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21p
dW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hy
b21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllckNocm9taXVtOjpwYWludENv
bnRlbnRzSWZEaXJ0eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1h
Z2VMYXllckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6cGFpbnRD
b250ZW50c0lmRGlydHkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6aWRsZVBh
aW50Q29udGVudHNJZkRpcnR5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVnaW9uQ29udGFp
bnNSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRv
VXBkYXRlVGlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpwcmVw
YXJlVG9VcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpwcmVw
YXJlVG9VcGRhdGVJZGxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9U
aWxlZExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVI
b3N0OjpwYWludENvbnRlbnRzSWZEaXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJl
ZUhvc3Q6OnBhaW50TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6cGFpbnRMYXllckNvbnRlbnRzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaDoKKworMjAxMi0w
MS0yNiAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKwogICAgICAgICBbY2hy
b21pdW1dIENvbXB1dGUgb2NjbHVzaW9uIGR1cmluZyBwYWludCBsb29wCiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Njg1OAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IGJiMzc3ODY5OTZmZWM5YjhjM2RhYjQzYzFjMzM3MjIxMzU0MTA0ZWUu
LjYyZjAxMTZjMmNlNzdmOWJkZjI4YjExMDNjNDUwZWU0M2JiYWQwNmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjkgQEAKIDIwMTItMDEtMjYgIERhbmEgSmFuc2VucyAg
PGRhbmFrakBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgW2Nocm9taXVtXSBDdWxsIG9jY2x1ZGVk
IHRpbGVzIGR1cmluZyBwYWludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzY4MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwOgorICAgICAgICAoV1RG
OjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6cGFpbnRDb250ZW50c0lm
RGlydHkpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFj
a2luZzo6aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KToKKyAgICAgICAgKiB0ZXN0cy9DYW52YXMy
RExheWVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJD
aHJvbWl1bVRlc3Q6OmZ1bGxMaWZlY3ljbGVUZXN0KToKKyAgICAgICAgKiB0ZXN0cy9UaWxlZExh
eWVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKFdURjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmU6OlRleHR1cmUpOgorICAgICAgICAoV1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZTo6cHJlcGFyZVJlY3QpOgorICAgICAgICAoV1RGOjpGYWtlTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAoV1RGOjpGYWtl
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6c2V0T3BhcXVlUGFpbnRSZWN0KToKKyAgICAgICAgKFdURjo6
RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVSZWN0Q291bnQpOgorICAgICAgICAoV1RG
OjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y2xlYXJQcmVwYXJlUmVjdENvdW50KToKKyAgICAg
ICAgKFdURjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZVRleHR1cmUpOgorICAgICAg
ICAoV1RGOjpGYWtlVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGUpOgorICAgICAg
ICAoV1RGOjpGYWtlVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZGxlKToKKyAg
ICAgICAgKFdURjo6VEVTVCk6CisKKzIwMTItMDEtMjYgIERhbmEgSmFuc2VucyAgPGRhbmFrakBj
aHJvbWl1bS5vcmc+CisKICAgICAgICAgW2Nocm9taXVtXSBDb21wdXRlIG9jY2x1c2lvbiBkdXJp
bmcgcGFpbnQgbG9vcAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzY4NTgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXgg
MTUwNWFkYWMyNDNlMDc2NjVkMmRkYWIyOGY0NzAzZmY4ZWY1Yjk0My4uN2FmOGM2NTViZTkyZjRl
ZjhlNDE0NmNhNWE5ZTYwZmM1ODk3ZjcxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hy
b21pdW0uY3BwCkBAIC05MSw3ICs5MSw3IEBAIGJvb2wgQ2FudmFzMkRMYXllckNocm9taXVtOjpk
cmF3c0NvbnRlbnQoKSBjb25zdAogICAgICAgICAmJiBtX2NvbnRleHQgJiYgKG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLT5nZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgPT0gR3JhcGhpY3ND
b250ZXh0M0Q6Ok5PX0VSUk9SKTsKIH0KIAotdm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnBh
aW50Q29udGVudHNJZkRpcnR5KCkKK3ZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpwYWludENv
bnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIC8qb2NjbHVkZWRUYXJnZXRTcGFjZSovKQogewog
ICAgIGlmICghZHJhd3NDb250ZW50KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJv
bWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFz
MkRMYXllckNocm9taXVtLmgKaW5kZXggODM2MTVhMWYyMjM1NjE2NDYyZWIxZjhkNDEyMmUxYWQ4
ZTU4YzkyMi4uZDdiYWRlNzg4M2RhNDNjNjdiNWM0YTIxZmI5Y2IzNGViZWJhOGYxNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRM
YXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmgKQEAgLTQwLDYgKzQwLDcgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CitjbGFzcyBSZWdpb247CiAK
IC8vIEEgbGF5ZXIgY29udGFpbmluZyBhbiBhY2NlbGVyYXRlZCAyZCBjYW52YXMKIGNsYXNzIENh
bnZhczJETGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBDYW52YXNMYXllckNocm9taXVtIHsKQEAgLTUy
LDcgKzUzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjb250ZW50Q2hhbmdlZCgpOwog
CiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9p
ZCBwYWludENvbnRlbnRzSWZEaXJ0eSgpOworICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRz
SWZEaXJ0eShjb25zdCBSZWdpb24mIG9jY2x1ZGVkVGFyZ2V0U3BhY2UpOwogCiAgICAgdmlydHVh
bCB2b2lkIHNldExheWVyVHJlZUhvc3QoQ0NMYXllclRyZWVIb3N0Kik7CiAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1
cmVVcGRhdGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggODQw
MzkwZTAyNzkwODI1MjZiNDFmYjNkODU3YjFmODQ1YTAxOGE2OC4uMmJiZDAwNzc1MjA3NGFkNzc0
MmRmOTE2MDA3ZDlkZmMzMzgzY2JjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVt
LmNwcApAQCAtODgsNyArODgsNyBAQCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6fkNvbnRlbnRMYXll
ckNocm9taXVtKCkKIHsKIH0KIAotdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250
ZW50c0lmRGlydHkoKQordm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lm
RGlydHkoY29uc3QgUmVnaW9uJiBvY2NsdWRlZFRhcmdldFNwYWNlKQogewogICAgIHVwZGF0ZVRp
bGVTaXplQW5kVGlsaW5nT3B0aW9uKCk7CiAKQEAgLTk5LDExICs5OSwxMSBAQCB2b2lkIENvbnRl
bnRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSgpCiAgICAgaWYgKGRyYXdzQ29u
dGVudCgpKQogICAgICAgICBsYXllclJlY3QgPSB2aXNpYmxlTGF5ZXJSZWN0KCk7CiAKLSAgICBw
cmVwYXJlVG9VcGRhdGUobGF5ZXJSZWN0KTsKKyAgICBwcmVwYXJlVG9VcGRhdGUobGF5ZXJSZWN0
LCBvY2NsdWRlZFRhcmdldFNwYWNlKTsKICAgICBtX25lZWRzRGlzcGxheSA9IGZhbHNlOwogfQog
Ci12b2lkIENvbnRlbnRMYXllckNocm9taXVtOjppZGxlUGFpbnRDb250ZW50c0lmRGlydHkoKQor
dm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0
IFJlZ2lvbiYgb2NjbHVkZWRUYXJnZXRTcGFjZSkKIHsKICAgICBpZiAoIWRyYXdzQ29udGVudCgp
KQogICAgICAgICByZXR1cm47CkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCBDb250ZW50TGF5ZXJD
aHJvbWl1bTo6aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KCkKICAgICBpZiAobGF5ZXJSZWN0Lmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJlcGFyZVRvVXBkYXRlSWRsZShsYXll
clJlY3QpOworICAgIHByZXBhcmVUb1VwZGF0ZUlkbGUobGF5ZXJSZWN0LCBvY2NsdWRlZFRhcmdl
dFNwYWNlKTsKICAgICBpZiAobmVlZHNJZGxlUGFpbnQobGF5ZXJSZWN0KSkKICAgICAgICAgc2V0
TmVlZHNDb21taXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCmluZGV4IGNm
YjBmZDdjOTA2N2MyMTQwZGQxM2QzNTZmYmVmN2RmYzk3ZTMyZGUuLjY4M2IzZTVhZDc4YTY4MGM1
ZjJkOGRhZTA3MWI4NWRlYmU4NjRiMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0u
aApAQCAtNDEsNiArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIExheWVyVGls
ZXJDaHJvbWl1bTsKIGNsYXNzIExheWVyVGV4dHVyZVVwZGF0ZXI7CitjbGFzcyBSZWdpb247CiAK
IGNsYXNzIENvbnRlbnRMYXllckRlbGVnYXRlIHsKIHB1YmxpYzoKQEAgLTU3LDggKzU4LDggQEAg
cHVibGljOgogCiAgICAgdm9pZCBjbGVhckRlbGVnYXRlKCkgeyBtX2RlbGVnYXRlID0gMDsgfQog
Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KCk7Ci0gICAgdmlydHVhbCB2
b2lkIGlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSgpOworICAgIHZpcnR1YWwgdm9pZCBwYWludENv
bnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIG9jY2x1ZGVkVGFyZ2V0U3BhY2UpOworICAgIHZp
cnR1YWwgdm9pZCBpZGxlUGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uJiBvY2NsdWRl
ZFRhcmdldFNwYWNlKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRPcGFxdWUoYm9vbCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdl
TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCmluZGV4IDAxNTRmYjI4MzE0ZjNlNmM5MjQwNDdi
YjQ4MzY3MzY5MmRmY2ZhYjcuLjk2YWM4YTQxNjY5NjZlM2MzZWJkZGNiODdjNDA4ZjZmNThiZDg2
ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcApAQCAtMTU4LDcgKzE1OCw3IEBA
IHZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpzZXRDb250ZW50cyhJbWFnZSogY29udGVudHMpCiAg
ICAgc2V0TmVlZHNEaXNwbGF5KCk7CiB9CiAKLXZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpwYWlu
dENvbnRlbnRzSWZEaXJ0eSgpCit2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50
c0lmRGlydHkoY29uc3QgUmVnaW9uJiBvY2NsdWRlZFRhcmdldFNwYWNlKQogewogICAgIGlmICht
X25lZWRzRGlzcGxheSkgewogICAgICAgICBtX3RleHR1cmVVcGRhdGVyLT51cGRhdGVGcm9tSW1h
Z2UobV9jb250ZW50cy0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSk7CkBAIC0xNjcsNyAr
MTY3LDcgQEAgdm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KCkK
ICAgICAgICAgbV9uZWVkc0Rpc3BsYXkgPSBmYWxzZTsKICAgICB9CiAKLSAgICBwcmVwYXJlVG9V
cGRhdGUodmlzaWJsZUxheWVyUmVjdCgpKTsKKyAgICBwcmVwYXJlVG9VcGRhdGUodmlzaWJsZUxh
eWVyUmVjdCgpLCBvY2NsdWRlZFRhcmdldFNwYWNlKTsKIH0KIAogTGF5ZXJUZXh0dXJlVXBkYXRl
ciogSW1hZ2VMYXllckNocm9taXVtOjp0ZXh0dXJlVXBkYXRlcigpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hy
b21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdl
TGF5ZXJDaHJvbWl1bS5oCmluZGV4IGQ3MTI5MjQ1MWMzNTU1ZWFmMGMxNmNmOWYyYzNmMzk1YmUw
NzUzMDQuLjhkZjBkZGUxNDE2NTY5OWFmYjA1OWE1MjcxMjg1YmZmN2Y5ZTE1ZTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJD
aHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0ltYWdlTGF5ZXJDaHJvbWl1bS5oCkBAIC00NSw2ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgSW1hZ2U7CiBjbGFzcyBJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXI7CitjbGFz
cyBSZWdpb247CiAKIC8vIEEgTGF5ZXIgdGhhdCBjb250YWlucyBvbmx5IGFuIEltYWdlIGVsZW1l
bnQuCiBjbGFzcyBJbWFnZUxheWVyQ2hyb21pdW0gOiBwdWJsaWMgVGlsZWRMYXllckNocm9taXVt
IHsKQEAgLTUzLDcgKzU0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkltYWdlTGF5ZXJDaHJv
bWl1bSgpOwogCiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0OwotICAgIHZp
cnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eSgpOworICAgIHZpcnR1YWwgdm9pZCBwYWlu
dENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIG9jY2x1ZGVkVGFyZ2V0U3BhY2UpOwogICAg
IHZpcnR1YWwgYm9vbCBuZWVkc0NvbnRlbnRzU2NhbGUoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0
Q29udGVudHMoSW1hZ2UqIGltYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAppbmRleCAxZWRmZWY4NmIw
MmE2OWIwMTYxMjQ0YWZmMTI4ZTk2OWIzYTZjMmIxLi41MGVjMTU5YTlmM2YyM2U0YmZhMDUwYzcx
YWJhZjI1NTQ5OGFjMzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC0zOCw2ICszOCw3IEBACiAj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIK
ICNpbmNsdWRlICJQcm9ncmFtQmluZGluZy5oIgorI2luY2x1ZGUgIlJlZ2lvbi5oIgogI2luY2x1
ZGUgIlJlbmRlclN1cmZhY2VDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlNoYWRlckNocm9taXVtLmgi
CiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKQEAgLTE1NCw4ICsxNTUsOCBAQCBw
dWJsaWM6CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIHR5cGljYWxseSBuZWVkIHRvIGJlIG92ZXJ3
cml0dGVuIGJ5IGRlcml2ZWQgY2xhc3Nlcy4KICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50
KCkgY29uc3QgeyByZXR1cm4gbV9pc0RyYXdhYmxlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50
Q29udGVudHNJZkRpcnR5KCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGlkbGVQYWludENvbnRlbnRz
SWZEaXJ0eSgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eShjb25z
dCBSZWdpb24mIC8qIG9jY2x1ZGVkVGFyZ2V0U3BhY2UgKi8pIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBpZGxlUGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uJiAvKiBvY2NsdWRlZFRhcmdl
dFNwYWNlICovKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNl
cyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgc2V0SXNNYXNrKGJvb2wpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB1bnJlc2VydmVDb250
ZW50c1RleHR1cmUoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDQ1
YTQzZGY0MjdmZmRiYjFjMDAzMDEwNmJkNzI1Y2JjODc3MDQwMDAuLjE3MzY4Mjg2MjEwNzlkODNm
MDI5ZDkwZDdkYmMzZmVkMzZiZDFmYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNw
cApAQCAtMzYyLDcgKzM2MiwxOSBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJvdGVjdFRp
bGVUZXh0dXJlcyhjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpCiAgICAgfQogfQogCi12b2lkIFRp
bGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVm
dCwgaW50IHRvcCwgaW50IHJpZ2h0LCBpbnQgYm90dG9tKQorc3RhdGljIGJvb2wgcmVnaW9uQ29u
dGFpbnNSZWN0KGNvbnN0IFJlZ2lvbiYgcmVnaW9uLCBjb25zdCBJbnRSZWN0JiByZWN0KQorewor
ICAgIFJlZ2lvbiByZWN0UmVnaW9uKHJlY3QpOworICAgIFJlZ2lvbiBpbnRlcnNlY3RSZWdpb24o
aW50ZXJzZWN0KHJlZ2lvbiwgcmVjdFJlZ2lvbikpOworCisgICAgaWYgKGludGVyc2VjdFJlZ2lv
bi5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJlY3RSZWdpb24uc3Vi
dHJhY3QoaW50ZXJzZWN0UmVnaW9uKTsKKyAgICByZXR1cm4gcmVjdFJlZ2lvbi5pc0VtcHR5KCk7
Cit9CisKK3ZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVUaWxlcyhib29s
IGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQgcmlnaHQsIGludCBib3R0b20sIGNvbnN0IFJl
Z2lvbiYgb2NjbHVkZWRUYXJnZXRTcGFjZSkKIHsKICAgICAvLyBSZXNldCBtX3VwZGF0ZVJlY3Qg
Zm9yIGFsbCB0aWxlcy4KICAgICBmb3IgKENDTGF5ZXJUaWxpbmdEYXRhOjpUaWxlTWFwOjpjb25z
dF9pdGVyYXRvciBpdGVyID0gbV90aWxlci0+dGlsZXMoKS5iZWdpbigpOyBpdGVyICE9IG1fdGls
ZXItPnRpbGVzKCkuZW5kKCk7ICsraXRlcikgewpAQCAtMzcwLDYgKzM4Miw5IEBAIHZvaWQgVGls
ZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0
LCBpbnQgdG9wLCBpbnQKICAgICAgICAgdGlsZS0+bV91cGRhdGVSZWN0ID0gSW50UmVjdCgpOwog
ICAgIH0KIAorICAgIC8vIFRpbGVzIGFyZSBpbiB0aGUgbGF5ZXIncyBjb250ZW50IHNwYWNlLCB0
aGUgb2NjbHVkZWQgcmVnaW9uIGlzIGluIHRhcmdldCdzIGNvbnRlbnQgc3BhY2UuCisgICAgVHJh
bnNmb3JtYXRpb25NYXRyaXggY29udGVudFRvVGFyZ2V0U3BhY2UgPSBjb250ZW50VG9UYXJnZXRT
cGFjZVRyYW5zZm9ybSgpOworCiAgICAgLy8gQ3JlYXRlIHRpbGVzIGFzIG5lZWRlZCwgZXhwYW5k
aW5nIGEgZGlydHkgcmVjdCB0byBjb250YWluIGFsbAogICAgIC8vIHRoZSBkaXJ0eSByZWdpb25z
IGN1cnJlbnRseSBiZWluZyBkcmF3bi4gQWxsIGRpcnR5IHRpbGVzIHRoYXQgYXJlIHRvIGJlIHBh
aW50ZWQKICAgICAvLyBnZXQgdGhlaXIgbV91cGRhdGVSZWN0IHNldCB0byBtX2RpcnR5UmVjdCBh
bmQgbV9kaXJ0eVJlY3QgY2xlYXJlZC4gVGhpcyB3YXkgaWYKQEAgLTM4MSwxMyArMzk2LDIzIEBA
IHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVUaWxlcyhib29sIGlkbGUs
IGludCBsZWZ0LCBpbnQgdG9wLCBpbnQKICAgICAgICAgICAgIGlmICghdGlsZSkKICAgICAgICAg
ICAgICAgICB0aWxlID0gY3JlYXRlVGlsZShpLCBqKTsKIAorICAgICAgICAgICAgLy8gV2hlbiBu
b3QgaWRsZSBwYWludGluZywgaWYgdGhlIHRpbGUgaXMgb2NjbHVkZWQgZG9uJ3QgcmVzZXJ2ZSBh
IHRleHR1cmUgb3IgbWFyayBpdCBmb3IgdXBkYXRlLiBUaGlzIHdpbGwgYWxzbyBhdm9pZCBwYWlu
dGluZworICAgICAgICAgICAgLy8gdGhlIHRpbGUgaW4gdGhlIG5leHQgbG9vcCwgYmVsb3cuCisg
ICAgICAgICAgICBpZiAoIWlkbGUpIHsKKyAgICAgICAgICAgICAgICBJbnRSZWN0IHRpbGVSZWN0
ID0gbV90aWxlci0+dGlsZUJvdW5kcyhpLCBqKTsKKyAgICAgICAgICAgICAgICBpZiAocmVnaW9u
Q29udGFpbnNSZWN0KG9jY2x1ZGVkVGFyZ2V0U3BhY2UsIGNvbnRlbnRUb1RhcmdldFNwYWNlLm1h
cFJlY3QodGlsZVJlY3QpKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICB9CisKICAgICAgICAgICAgIC8vIERvIHBvc3QgY29tbWl0IGRlbGV0aW9uIG9mIGN1cnJl
bnQgdGV4dHVyZSB3aGVuIHBhcnRpYWwgdGV4dHVyZQogICAgICAgICAgICAgLy8gdXBkYXRlcyBh
cmUgbm90IHVzZWQuCiAgICAgICAgICAgICBpZiAodGlsZS0+aXNEaXJ0eSgpICYmIGxheWVyVHJl
ZUhvc3QoKSAmJiAhbGF5ZXJUcmVlSG9zdCgpLT5zZXR0aW5ncygpLnBhcnRpYWxUZXh0dXJlVXBk
YXRlcykKICAgICAgICAgICAgICAgICBsYXllclRyZWVIb3N0KCktPmRlbGV0ZVRleHR1cmVBZnRl
ckNvbW1pdCh0aWxlLT5tYW5hZ2VkVGV4dHVyZSgpLT5zdGVhbCgpKTsKIAotICAgICAgICAgICAg
aWYgKCF0aWxlLT5tYW5hZ2VkVGV4dHVyZSgpLT5pc1ZhbGlkKG1fdGlsZXItPnRpbGVTaXplKCks
IG1fdGV4dHVyZUZvcm1hdCkpCi0gICAgICAgICAgICAgICAgdGlsZS0+bV9kaXJ0eVJlY3QgPSBt
X3RpbGVyLT50aWxlUmVjdCh0aWxlKTsKKyAgICAgICAgICAgIGlmICghdGlsZS0+bWFuYWdlZFRl
eHR1cmUoKS0+aXNWYWxpZChtX3RpbGVyLT50aWxlU2l6ZSgpLCBtX3RleHR1cmVGb3JtYXQpKSB7
CisgICAgICAgICAgICAgICAgSW50UmVjdCBmaXhlZFNpemVUaWxlUmVjdFdpdGhCb3JkZXJzID0g
bV90aWxlci0+dGlsZVJlY3QodGlsZSk7CisgICAgICAgICAgICAgICAgdGlsZS0+bV9kaXJ0eVJl
Y3QgPSBmaXhlZFNpemVUaWxlUmVjdFdpdGhCb3JkZXJzOworICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICBpZiAoIXRpbGUtPm1hbmFnZWRUZXh0dXJlKCktPnJlc2VydmUobV90aWxlci0+dGls
ZVNpemUoKSwgbV90ZXh0dXJlRm9ybWF0KSkgewogICAgICAgICAgICAgICAgIG1fc2tpcHNJZGxl
UGFpbnQgPSB0cnVlOwpAQCAtNDM3LDcgKzQ2Miw3IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVt
OjpwcmVwYXJlVG9VcGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQK
ICAgICAgICAgICAgIGlmICh0aWxlUGFpbnRlZE9wYXF1ZVJlY3QgIT0gdGlsZVBhaW50ZWRSZWN0
IHx8ICF0aWxlLT5tX29wYXF1ZVJlY3QuY29udGFpbnModGlsZVBhaW50ZWRPcGFxdWVSZWN0KSkK
ICAgICAgICAgICAgICAgICB0aWxlLT5tX29wYXF1ZVJlY3QgPSB0aWxlUGFpbnRlZE9wYXF1ZVJl
Y3Q7CiAKLSAgICAgICAgICAgIC8vIFVzZSBtX3VwZGF0ZVJlY3QgYXMgY29weUFuZENsZWFyRGly
dHkgYWJvdmUgbW92ZWQgdGhlIGV4aXN0aW5nIGRpcnR5IHJlY3QgdG8gbV91cGRhdGVSZWN0Lgor
ICAgICAgICAgICAgLy8gVXNlIG1fdXBkYXRlUmVjdCBhcyBjb3B5QW5kQ2xlYXJEaXJ0eSBhYm92
ZSBtb3ZlZCB0aGUgZXhpc3RpbmcgZGlydHkgcmVjdCB0byBtX3VwZGF0ZVJlY3QgaWYgdGhlIHRp
bGUgaXNuJ3QgY3VsbGVkLgogICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0ID0g
dGlsZS0+bV91cGRhdGVSZWN0OwogICAgICAgICAgICAgaWYgKGRpcnR5UmVjdC5pc0VtcHR5KCkp
CiAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC00OTIsNyArNTE3LDcgQEAgdm9pZCBUaWxl
ZExheWVyQ2hyb21pdW06OmFkZFNlbGZUb09jY2x1ZGVkUmVnaW9uKFJlZ2lvbiYgb2NjbHVkZWRU
YXJnZXRTcGFjZSkKICAgICB9CiB9CiAKLXZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJl
VG9VcGRhdGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQordm9pZCBUaWxlZExheWVyQ2hyb21p
dW06OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBsYXllclJlY3QsIGNvbnN0IFJlZ2lv
biYgb2NjbHVkZWRUYXJnZXRTcGFjZSkKIHsKICAgICBtX3NraXBzRHJhdyA9IGZhbHNlOwogICAg
IG1fc2tpcHNJZGxlUGFpbnQgPSBmYWxzZTsKQEAgLTUwNywxMCArNTMyLDEwIEBAIHZvaWQgVGls
ZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0
KQogICAgIGludCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b207CiAgICAgbV90aWxlci0+bGF5ZXJS
ZWN0VG9UaWxlSW5kaWNlcyhsYXllclJlY3QsIGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSk7CiAK
LSAgICBwcmVwYXJlVG9VcGRhdGVUaWxlcyhmYWxzZSwgbGVmdCwgdG9wLCByaWdodCwgYm90dG9t
KTsKKyAgICBwcmVwYXJlVG9VcGRhdGVUaWxlcyhmYWxzZSwgbGVmdCwgdG9wLCByaWdodCwgYm90
dG9tLCBvY2NsdWRlZFRhcmdldFNwYWNlKTsKIH0KIAotdm9pZCBUaWxlZExheWVyQ2hyb21pdW06
OnByZXBhcmVUb1VwZGF0ZUlkbGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQordm9pZCBUaWxl
ZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlkbGUoY29uc3QgSW50UmVjdCYgbGF5ZXJS
ZWN0LCBjb25zdCBSZWdpb24mIG9jY2x1ZGVkVGFyZ2V0U3BhY2UpCiB7CiAgICAgLy8gQWJvcnQg
aWYgd2UgaGF2ZSBhbHJlYWR5IHByZXBhcmVkIGEgcGFpbnQgb3IgcnVuIG91dCBvZiBtZW1vcnku
CiAgICAgaWYgKG1fc2tpcHNJZGxlUGFpbnQgfHwgIW1fcGFpbnRSZWN0LmlzRW1wdHkoKSkKQEAg
LTUyOCwzMyArNTUzLDM5IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRh
dGVJZGxlKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCkKICAgICBJbnRSZWN0IGlkbGVQYWludExh
eWVyUmVjdCA9IGlkbGVQYWludFJlY3QobGF5ZXJSZWN0KTsKICAgICBwcm90ZWN0VGlsZVRleHR1
cmVzKGlkbGVQYWludExheWVyUmVjdCk7CiAKLSAgICAvLyBFeHBhbmQgb3V0d2FyZHMgdW50aWwg
d2UgZmluZCBhIGRpcnR5IHJvdyBvciBjb2x1bW4gdG8gdXBkYXRlLgogICAgIGludCBsZWZ0LCB0
b3AsIHJpZ2h0LCBib3R0b207CiAgICAgbV90aWxlci0+bGF5ZXJSZWN0VG9UaWxlSW5kaWNlcyhs
YXllclJlY3QsIGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSk7CisKKyAgICAvLyBQcmVwYWludCBh
bnl0aGluZyB0aGF0IHdhcyBvY2NsdWRlZCBidXQgaW5zaWRlIHRoZSBsYXllcidzIHZpc2libGUg
cmVnaW9uLgorICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKHRydWUsIGxlZnQsIGJvdHRvbSwgcmln
aHQsIGJvdHRvbSwgb2NjbHVkZWRUYXJnZXRTcGFjZSk7CisgICAgaWYgKCFtX3BhaW50UmVjdC5p
c0VtcHR5KCkgfHwgbV9za2lwc0lkbGVQYWludCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8g
RXhwYW5kIG91dHdhcmRzIHVudGlsIHdlIGZpbmQgYSBkaXJ0eSByb3cgb3IgY29sdW1uIHRvIHVw
ZGF0ZS4KICAgICBpbnQgcHJlcGFpbnRMZWZ0LCBwcmVwYWludFRvcCwgcHJlcGFpbnRSaWdodCwg
cHJlcGFpbnRCb3R0b207CiAgICAgbV90aWxlci0+bGF5ZXJSZWN0VG9UaWxlSW5kaWNlcyhpZGxl
UGFpbnRMYXllclJlY3QsIHByZXBhaW50TGVmdCwgcHJlcGFpbnRUb3AsIHByZXBhaW50UmlnaHQs
IHByZXBhaW50Qm90dG9tKTsKICAgICB3aGlsZSAoIW1fc2tpcHNJZGxlUGFpbnQgJiYgKGxlZnQg
PiBwcmVwYWludExlZnQgfHwgdG9wID4gcHJlcGFpbnRUb3AgfHwgcmlnaHQgPCBwcmVwYWludFJp
Z2h0IHx8IGJvdHRvbSA8IHByZXBhaW50Qm90dG9tKSkgewogICAgICAgICBpZiAoYm90dG9tIDwg
cHJlcGFpbnRCb3R0b20pIHsKICAgICAgICAgICAgICsrYm90dG9tOwotICAgICAgICAgICAgcHJl
cGFyZVRvVXBkYXRlVGlsZXModHJ1ZSwgbGVmdCwgYm90dG9tLCByaWdodCwgYm90dG9tKTsKKyAg
ICAgICAgICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKHRydWUsIGxlZnQsIGJvdHRvbSwgcmlnaHQs
IGJvdHRvbSwgb2NjbHVkZWRUYXJnZXRTcGFjZSk7CiAgICAgICAgICAgICBpZiAoIW1fcGFpbnRS
ZWN0LmlzRW1wdHkoKSB8fCBtX3NraXBzSWRsZVBhaW50KQogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGlmICh0b3AgPiBwcmVwYWludFRvcCkgewogICAgICAgICAg
ICAgLS10b3A7Ci0gICAgICAgICAgICBwcmVwYXJlVG9VcGRhdGVUaWxlcyh0cnVlLCBsZWZ0LCB0
b3AsIHJpZ2h0LCB0b3ApOworICAgICAgICAgICAgcHJlcGFyZVRvVXBkYXRlVGlsZXModHJ1ZSwg
bGVmdCwgdG9wLCByaWdodCwgdG9wLCBvY2NsdWRlZFRhcmdldFNwYWNlKTsKICAgICAgICAgICAg
IGlmICghbV9wYWludFJlY3QuaXNFbXB0eSgpIHx8IG1fc2tpcHNJZGxlUGFpbnQpCiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGxlZnQgPiBwcmVwYWludExl
ZnQpIHsKICAgICAgICAgICAgIC0tbGVmdDsKLSAgICAgICAgICAgIHByZXBhcmVUb1VwZGF0ZVRp
bGVzKHRydWUsIGxlZnQsIHRvcCwgbGVmdCwgYm90dG9tKTsKKyAgICAgICAgICAgIHByZXBhcmVU
b1VwZGF0ZVRpbGVzKHRydWUsIGxlZnQsIHRvcCwgbGVmdCwgYm90dG9tLCBvY2NsdWRlZFRhcmdl
dFNwYWNlKTsKICAgICAgICAgICAgIGlmICghbV9wYWludFJlY3QuaXNFbXB0eSgpIHx8IG1fc2tp
cHNJZGxlUGFpbnQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
aWYgKHJpZ2h0IDwgcHJlcGFpbnRSaWdodCkgewogICAgICAgICAgICAgKytyaWdodDsKLSAgICAg
ICAgICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKHRydWUsIHJpZ2h0LCB0b3AsIHJpZ2h0LCBib3R0
b20pOworICAgICAgICAgICAgcHJlcGFyZVRvVXBkYXRlVGlsZXModHJ1ZSwgcmlnaHQsIHRvcCwg
cmlnaHQsIGJvdHRvbSwgb2NjbHVkZWRUYXJnZXRTcGFjZSk7CiAgICAgICAgICAgICBpZiAoIW1f
cGFpbnRSZWN0LmlzRW1wdHkoKSB8fCBtX3NraXBzSWRsZVBhaW50KQogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDhlYzMw
ZGNmMzk0ODYwOGI4MDQxZWJkZDZkMjlmODYyNmY3ZjFiMWMuLjNmYzJmOTAzYTRlNjBlYTg0NDE0
NDRhMTdjY2MzZTgxYjg2NGJkNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oCkBAIC04
MywxMCArODMsMTAgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29uc3Qg
SW50UmVjdCYgbGF5ZXJSZWN0KTsKIAogICAgIC8vIFByZXBhcmUgZGF0YSBuZWVkZWQgdG8gdXBk
YXRlIHRleHR1cmVzIHRoYXQgaW50ZXJzZWN0IHdpdGggbGF5ZXJSZWN0LgotICAgIHZvaWQgcHJl
cGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCk7CisgICAgdm9pZCBwcmVwYXJl
VG9VcGRhdGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0LCBjb25zdCBSZWdpb24mIG9jY2x1ZGVk
VGFyZ2V0U3BhY2UpOwogCiAgICAgLy8gU2FtZSBhcyBhYm92ZSwgYnV0IHRoaXMgd2lsbCB0cnkg
dG8gcGFpbnQgYWRkaXRpb25hbCBzdXJyb3VuZGluZyBjb250ZW50IGlmIGlkbGUuCi0gICAgdm9p
ZCBwcmVwYXJlVG9VcGRhdGVJZGxlKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCk7CisgICAgdm9p
ZCBwcmVwYXJlVG9VcGRhdGVJZGxlKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3QgUmVn
aW9uJiBvY2NsdWRlZFRhcmdldFNwYWNlKTsKIAogICAgIC8vIEFmdGVyIHByZXBhcmluZyBhbiB1
cGRhdGUsIHJldHVybnMgdHJ1ZSBpZiBtb3JlIHByZS1wYWludGluZyBpcyBuZWVkZWQuCiAgICAg
Ym9vbCBuZWVkc0lkbGVQYWludChjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpOwpAQCAtMTAzLDcg
KzEwMyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVUaWxlcklmTmVlZGVkKCk7CiAgICAg
dm9pZCBzZXRUaWxpbmdPcHRpb24oVGlsaW5nT3B0aW9uKTsKIAotICAgIHZvaWQgcHJlcGFyZVRv
VXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50IHJpZ2h0LCBpbnQg
Ym90dG9tKTsKKyAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wgaWRsZSwgaW50IGxl
ZnQsIGludCB0b3AsIGludCByaWdodCwgaW50IGJvdHRvbSwgY29uc3QgUmVnaW9uJiBvY2NsdWRl
ZFRhcmdldFNwYWNlKTsKICAgICBJbnRSZWN0IGlkbGVQYWludFJlY3QoY29uc3QgSW50UmVjdCYg
dmlzaWJsZUxheWVyUmVjdCk7CiAKICAgICBVcGRhdGFibGVUaWxlKiB0aWxlQXQoaW50LCBpbnQp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggNGQ4YTg3NjcwMGYw
ZDE1NjhhZTRiMzU3Y2QyYWMzYjBmYTVhMDIwYS4uMGM0MjhlYzJiNDUzMzk2ODIwZTg5NWQ5YzI2
MGYzNDYyNmQ4ZTU2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC00MDMs
MTQgKzQwMywxNCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKExheWVyQ2hy
b21pdW0qIHJvb3RMYXllcikKIH0KIAogLy8gc3RhdGljCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6
cGFpbnRDb250ZW50c0lmRGlydHkoTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIFBhaW50VHlwZSBwYWlu
dFR5cGUpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRDb250ZW50c0lmRGlydHkoTGF5ZXJD
aHJvbWl1bSogbGF5ZXIsIFBhaW50VHlwZSBwYWludFR5cGUsIGNvbnN0IFJlZ2lvbiYgb2NjbHVk
ZWRUYXJnZXRTcGFjZSkKIHsKICAgICBBU1NFUlQobGF5ZXIpOwogICAgIEFTU0VSVChQYWludFZp
c2libGUgPT0gcGFpbnRUeXBlIHx8IFBhaW50SWRsZSA9PSBwYWludFR5cGUpOwogICAgIGlmIChQ
YWludFZpc2libGUgPT0gcGFpbnRUeXBlKQotICAgICAgICBsYXllci0+cGFpbnRDb250ZW50c0lm
RGlydHkoKTsKKyAgICAgICAgbGF5ZXItPnBhaW50Q29udGVudHNJZkRpcnR5KG9jY2x1ZGVkVGFy
Z2V0U3BhY2UpOwogICAgIGVsc2UKLSAgICAgICAgbGF5ZXItPmlkbGVQYWludENvbnRlbnRzSWZE
aXJ0eSgpOworICAgICAgICBsYXllci0+aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KG9jY2x1ZGVk
VGFyZ2V0U3BhY2UpOwogfQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRNYXNrQW5kUmVw
bGljYUZvclJlbmRlclN1cmZhY2UoTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVyLCBQ
YWludFR5cGUgcGFpbnRUeXBlKQpAQCAtNDE4LDE5ICs0MTgsMjAgQEAgdm9pZCBDQ0xheWVyVHJl
ZUhvc3Q6OnBhaW50TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0q
IHJlbmRlclMKICAgICAvLyBOb3RlOiBNYXNrcyBhbmQgcmVwbGljYXMgb25seSBleGlzdCBmb3Ig
bGF5ZXJzIHRoYXQgb3duIHJlbmRlciBzdXJmYWNlcy4gSWYgd2UgcmVhY2ggdGhpcyBwb2ludAog
ICAgIC8vIGluIGNvZGUsIHdlIGFscmVhZHkga25vdyB0aGF0IGF0IGxlYXN0IHNvbWV0aGluZyB3
aWxsIGJlIGRyYXduIGludG8gdGhpcyByZW5kZXIgc3VyZmFjZSwgc28gdGhlCiAgICAgLy8gbWFz
ayBhbmQgcmVwbGljYSBzaG91bGQgYmUgcGFpbnRlZC4KKyAgICBSZWdpb24gbm9PY2NsdXNpb247
CiAKICAgICBpZiAocmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIoKSkgewogICAgICAgICBy
ZW5kZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXllcigpLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJl
Y3QoSW50UG9pbnQoKSwgcmVuZGVyU3VyZmFjZUxheWVyLT5jb250ZW50Qm91bmRzKCkpKTsKLSAg
ICAgICAgcGFpbnRDb250ZW50c0lmRGlydHkocmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIo
KSwgcGFpbnRUeXBlKTsKKyAgICAgICAgcGFpbnRDb250ZW50c0lmRGlydHkocmVuZGVyU3VyZmFj
ZUxheWVyLT5tYXNrTGF5ZXIoKSwgcGFpbnRUeXBlLCBub09jY2x1c2lvbik7CiAgICAgfQogCiAg
ICAgTGF5ZXJDaHJvbWl1bSogcmVwbGljYUxheWVyID0gcmVuZGVyU3VyZmFjZUxheWVyLT5yZXBs
aWNhTGF5ZXIoKTsKICAgICBpZiAocmVwbGljYUxheWVyKSB7Ci0gICAgICAgIHBhaW50Q29udGVu
dHNJZkRpcnR5KHJlcGxpY2FMYXllciwgcGFpbnRUeXBlKTsKKyAgICAgICAgcGFpbnRDb250ZW50
c0lmRGlydHkocmVwbGljYUxheWVyLCBwYWludFR5cGUsIG5vT2NjbHVzaW9uKTsKIAogICAgICAg
ICBpZiAocmVwbGljYUxheWVyLT5tYXNrTGF5ZXIoKSkgewogICAgICAgICAgICAgcmVwbGljYUxh
eWVyLT5tYXNrTGF5ZXIoKS0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KEludFBvaW50KCks
IHJlcGxpY2FMYXllci0+bWFza0xheWVyKCktPmNvbnRlbnRCb3VuZHMoKSkpOwotICAgICAgICAg
ICAgcGFpbnRDb250ZW50c0lmRGlydHkocmVwbGljYUxheWVyLT5tYXNrTGF5ZXIoKSwgcGFpbnRU
eXBlKTsKKyAgICAgICAgICAgIHBhaW50Q29udGVudHNJZkRpcnR5KHJlcGxpY2FMYXllci0+bWFz
a0xheWVyKCksIHBhaW50VHlwZSwgbm9PY2NsdXNpb24pOwogICAgICAgICB9CiAgICAgfQogfQpA
QCAtNDUyLDcgKzQ1Myw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludExheWVyQ29udGVu
dHMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0CiAgICAgICAgICAgICBw
YWludE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZSgqaXQsIHBhaW50VHlwZSk7CiAgICAg
ICAgIH0gZWxzZSBpZiAoaXQucmVwcmVzZW50c0l0c2VsZigpKSB7CiAgICAgICAgICAgICBBU1NF
UlQoIWl0LT5ib3VuZHMoKS5pc0VtcHR5KCkpOwotICAgICAgICAgICAgcGFpbnRDb250ZW50c0lm
RGlydHkoKml0LCBwYWludFR5cGUpOworICAgICAgICAgICAgcGFpbnRDb250ZW50c0lmRGlydHko
Kml0LCBwYWludFR5cGUsIG9jY2x1ZGVkVGFyZ2V0U3BhY2UpOwogCiAgICAgICAgICAgICAvLyBB
ZGQgdGhlIGxheWVyJ3Mgb2NjbHVzaW9uIHRvIHRoZSByZWdpb24gZm9yIHRoZSBuZXh0IGxheWVy
IHRvIGJlIGFibGUgdG8gdXNlIGZvciBjdWxsaW5nLgogICAgICAgICAgICAgaXQtPmFkZFNlbGZU
b09jY2x1ZGVkUmVnaW9uKG9jY2x1ZGVkVGFyZ2V0U3BhY2UpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3QuaAppbmRleCAzZDZmZTRhZmQwMWZjZGYxZmI4MWJiMTQ5ZDUxNTEzZWFkNzVlNTIyLi44
ZWYxNTlhMzI2NjJiZGI5NGRlMWNiZmNiOWEzYmYxMWM1Y2RlYzNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3QuaApAQCAtMjA2LDcgKzIwNiw3IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBW
ZWN0b3I8T3duUHRyPE1hbmFnZWRUZXh0dXJlPiA+IFRleHR1cmVMaXN0OwogCiAgICAgZW51bSBQ
YWludFR5cGUgeyBQYWludFZpc2libGUsIFBhaW50SWRsZSB9OwotICAgIHN0YXRpYyB2b2lkIHBh
aW50Q29udGVudHNJZkRpcnR5KExheWVyQ2hyb21pdW0qLCBQYWludFR5cGUpOworICAgIHN0YXRp
YyB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KExheWVyQ2hyb21pdW0qLCBQYWludFR5cGUsIGNv
bnN0IFJlZ2lvbiYgb2NjbHVkZWRUYXJnZXRTcGFjZSk7CiAgICAgdm9pZCBwYWludExheWVyQ29u
dGVudHMoY29uc3QgTGF5ZXJMaXN0JiwgUGFpbnRUeXBlKTsKICAgICB2b2lkIHBhaW50TWFza0Fu
ZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0qLCBQYWludFR5cGUpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRl
c3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0
LmNwcAppbmRleCA1OGRlNzU5YmIzMzkzYjVkZTdkOTg2MjA2YjdjZWY5M2Y3YWEyZDcxLi45ODJh
YzM3ZjczMGM4YWQwNmM4ZDc0MGQzYWQ3OGUyZGE3MjJiZjdkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKQEAgLTk5Nywx
NSArOTk3LDE1IEBAIHB1YmxpYzoKICAgICBpbnQgdXBkYXRlQ291bnQoKSB7IHJldHVybiBtX3Vw
ZGF0ZUNvdW50OyB9CiAgICAgdm9pZCByZXNldFVwZGF0ZUNvdW50KCkgeyBtX3VwZGF0ZUNvdW50
ID0gMDsgfQogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KCkKKyAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uJiBvY2NsdWRlZCkK
ICAgICB7Ci0gICAgICAgIENvbnRlbnRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0
eSgpOworICAgICAgICBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHko
b2NjbHVkZWQpOwogICAgICAgICBtX3BhaW50Q29udGVudHNDb3VudCsrOwogICAgIH0KIAotICAg
IHZpcnR1YWwgdm9pZCBpZGxlUGFpbnRDb250ZW50c0lmRGlydHkoKQorICAgIHZpcnR1YWwgdm9p
ZCBpZGxlUGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uJiBvY2NsdWRlZCkKICAgICB7
Ci0gICAgICAgIENvbnRlbnRMYXllckNocm9taXVtOjppZGxlUGFpbnRDb250ZW50c0lmRGlydHko
KTsKKyAgICAgICAgQ29udGVudExheWVyQ2hyb21pdW06OmlkbGVQYWludENvbnRlbnRzSWZEaXJ0
eShvY2NsdWRlZCk7CiAgICAgICAgIG1faWRsZVBhaW50Q29udGVudHNDb3VudCsrOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVy
Q2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRM
YXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggZjBiNWM0MTFiNjU2YWVkZTc1OTU3MTBlNGQ4Y2Zk
N2QyNGRiNTMzYy4uMTQ0OGNlYWE3ZTI1Zjk0OGQxZjlhNmM2NGI1YjlmYjE1MjViODUxOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVyQ2hyb21p
dW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5
ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ0NTY2hlZHVs
ZXJUZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSAiRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNELmgiCiAj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgiCisjaW5jbHVkZSAiUmVnaW9uLmgi
CiAjaW5jbHVkZSAiVGV4dHVyZU1hbmFnZXIuaCIKICNpbmNsdWRlICJjYy9DQ0NhbnZhc0xheWVy
SW1wbC5oIgogI2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIKQEAgLTEzNiw5ICsx
MzcsMTEgQEAgcHJvdGVjdGVkOgogICAgICAgICBjYW52YXMtPnNldEJvdW5kcyhJbnRTaXplKDYw
MCwgMzAwKSk7CiAgICAgICAgIGNhbnZhcy0+c2V0VGV4dHVyZUlkKGJhY2tUZXh0dXJlSWQpOwog
CisgICAgICAgIFJlZ2lvbiBvY2NsdWRlZDsKKwogICAgICAgICBjYW52YXMtPmNvbnRlbnRDaGFu
Z2VkKCk7CiAgICAgICAgIEVYUEVDVF9UUlVFKGNhbnZhcy0+bmVlZHNEaXNwbGF5KCkpOwotICAg
ICAgICBjYW52YXMtPnBhaW50Q29udGVudHNJZkRpcnR5KCk7CisgICAgICAgIGNhbnZhcy0+cGFp
bnRDb250ZW50c0lmRGlydHkob2NjbHVkZWQpOwogICAgICAgICBFWFBFQ1RfRkFMU0UoY2FudmFz
LT5uZWVkc0Rpc3BsYXkoKSk7CiAgICAgICAgIHsKICAgICAgICAgICAgIERlYnVnU2NvcGVkU2V0
SW1wbFRocmVhZCBzY29wZWRJbXBsVGhyZWFkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggNWI5MjI1ZTJl
NDI0NjNiYjRiYjJlNGQwNWVjYzI2MmU3MmYyMWI5Ni4uMTAyYmE1MTQ5NzQ0NGQyZThhMTQyNzI2
MzY1OWIxMzc1NTQ5ZjdiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC01NywzNCArNTcsNDMgQEAgY2xh
c3MgRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlciB7
CiBwdWJsaWM6CiAgICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFRleHR1cmUoUGFzc093blB0cjxNYW5h
Z2VkVGV4dHVyZT4gdGV4dHVyZSkgOiBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKHRleHR1
cmUpIHsgfQorICAgICAgICBUZXh0dXJlKFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1
cmUsIEZha2VMYXllclRleHR1cmVVcGRhdGVyKiB1cGRhdGVyKSA6IExheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmUodGV4dHVyZSksIG1fdXBkYXRlcih1cGRhdGVyKSB7IH0KICAgICAgICAgdmly
dHVhbCB+VGV4dHVyZSgpIHsgfQogCiAgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdy
YXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmLCBjb25z
dCBJbnRSZWN0JikgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlUmVjdChjb25zdCBJ
bnRSZWN0JikgeyArK21fdXBkYXRlci0+bV9wcmVwYXJlUmVjdENvdW50OyB9CisKKyAgICBwcml2
YXRlOgorICAgICAgICBGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlciogbV91cGRhdGVyOwogICAgIH07
CiAKLSAgICBGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpIDogbV9wcmVwYXJlQ291bnQoMCkgeyB9
CisgICAgRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKSA6IG1fcHJlcGFyZUNvdW50KDApLCBtX3By
ZXBhcmVSZWN0Q291bnQoMCkgeyB9CiAgICAgdmlydHVhbCB+RmFrZUxheWVyVGV4dHVyZVVwZGF0
ZXIoKSB7IH0KIAogICAgIC8vIFNldHMgdGhlIHJlY3QgdG8gaW52YWxpZGF0ZSBkdXJpbmcgdGhl
IG5leHQgY2FsbCB0byBwcmVwYXJlVG9VcGRhdGUoKS4gQWZ0ZXIgdGhlIG5leHQKICAgICAvLyBj
YWxsIHRvIHByZXBhcmVUb1VwZGF0ZSgpIHRoZSByZWN0IGlzIHJlc2V0LgogICAgIHZvaWQgc2V0
UmVjdFRvSW52YWxpZGF0ZShjb25zdCBJbnRSZWN0JiwgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSop
OwogCisgICAgdm9pZCBzZXRPcGFxdWVQYWludFJlY3QoY29uc3QgSW50UmVjdCYgb3BhcXVlUGFp
bnRSZWN0KSB7IG1fb3BhcXVlUGFpbnRSZWN0ID0gb3BhcXVlUGFpbnRSZWN0OyB9CisKICAgICAv
LyBOdW1iZXIgb2YgdGltZXMgcHJlcGFyZVRvVXBkYXRlIGhhcyBiZWVuIGludm9rZWQuCiAgICAg
aW50IHByZXBhcmVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlcGFyZUNvdW50OyB9CiAgICAg
dm9pZCBjbGVhclByZXBhcmVDb3VudCgpIHsgbV9wcmVwYXJlQ291bnQgPSAwOyB9CiAKLSAgICB2
b2lkIHNldE9wYXF1ZVBhaW50UmVjdChjb25zdCBJbnRSZWN0JiBvcGFxdWVQYWludFJlY3QpIHsg
bV9vcGFxdWVQYWludFJlY3QgPSBvcGFxdWVQYWludFJlY3Q7IH0KKyAgICAvLyBOdW1iZXIgb2Yg
dGltZXMgcHJlcGFyZVJlY3QgaGFzIGJlZW4gaW52b2tlZCBvbiBhIHRleHR1cmUuCisgICAgaW50
IHByZXBhcmVSZWN0Q291bnQoKSBjb25zdCB7IHJldHVybiBtX3ByZXBhcmVSZWN0Q291bnQ7IH0K
KyAgICB2b2lkIGNsZWFyUHJlcGFyZVJlY3RDb3VudCgpIHsgbV9wcmVwYXJlUmVjdENvdW50ID0g
MDsgfQogCiAgICAgLy8gTGFzdCByZWN0IHBhc3NlZCB0byBwcmVwYXJlVG9VcGRhdGUoKS4KICAg
ICBjb25zdCBJbnRSZWN0JiBsYXN0VXBkYXRlUmVjdCgpICBjb25zdCB7IHJldHVybiBtX2xhc3RV
cGRhdGVSZWN0OyB9CiAKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZT4gY3JlYXRlVGV4dHVyZShUZXh0dXJlTWFuYWdlciogbWFuYWdlcikgeyByZXR1
cm4gYWRvcHRQdHIobmV3IFRleHR1cmUoTWFuYWdlZFRleHR1cmU6OmNyZWF0ZShtYW5hZ2VyKSkp
OyB9CisgICAgdmlydHVhbCBQYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+
IGNyZWF0ZVRleHR1cmUoVGV4dHVyZU1hbmFnZXIqIG1hbmFnZXIpIHsgcmV0dXJuIGFkb3B0UHRy
KG5ldyBUZXh0dXJlKE1hbmFnZWRUZXh0dXJlOjpjcmVhdGUobWFuYWdlciksIHRoaXMpKTsgfQog
ICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51
bSkgeyByZXR1cm4gU2FtcGxlZFRleGVsRm9ybWF0UkdCQTsgfQogICAgIHZpcnR1YWwgdm9pZCBw
cmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUm
LCBpbnQsIGZsb2F0LCBJbnRSZWN0KiByZXN1bHRpbmdPcGFxdWVSZWN0KTsKIAogcHJpdmF0ZToK
ICAgICBpbnQgbV9wcmVwYXJlQ291bnQ7CisgICAgaW50IG1fcHJlcGFyZVJlY3RDb3VudDsKICAg
ICBJbnRSZWN0IG1fcmVjdFRvSW52YWxpZGF0ZTsKICAgICBJbnRSZWN0IG1fbGFzdFVwZGF0ZVJl
Y3Q7CiAgICAgSW50UmVjdCBtX29wYXF1ZVBhaW50UmVjdDsKQEAgLTEyMiwxNCArMTMxLDE0IEBA
IHB1YmxpYzoKICAgICAgICAgVGlsZWRMYXllckNocm9taXVtOjppbnZhbGlkYXRlUmVjdChyZWN0
KTsKICAgICB9CiAKLSAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiByZWN0
KQorICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IFJl
Z2lvbiYgb2NjbHVkZWQpCiAgICAgewotICAgICAgICBUaWxlZExheWVyQ2hyb21pdW06OnByZXBh
cmVUb1VwZGF0ZShyZWN0KTsKKyAgICAgICAgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9V
cGRhdGUocmVjdCwgb2NjbHVkZWQpOwogICAgIH0KIAotICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRl
SWRsZShjb25zdCBJbnRSZWN0JiByZWN0KQorICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlSWRsZShj
b25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBSZWdpb24mIG9jY2x1ZGVkKQogICAgIHsKLSAgICAg
ICAgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZGxlKHJlY3QpOworICAgICAg
ICBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlkbGUocmVjdCwgb2NjbHVkZWQp
OwogICAgIH0KIAogICAgIGJvb2wgbmVlZHNJZGxlUGFpbnQoY29uc3QgSW50UmVjdCYgcmVjdCkK
QEAgLTE3Nyw2ICsxODYsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hEaXJ0
eVRpbGVzKQogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0
UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAg
ICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgUmVmUHRyPEZha2VD
Q1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwgPSBhZG9wdFJlZihuZXcgRmFrZUNDVGlsZWRMYXll
ckltcGwoMCkpOworICAgIFJlZ2lvbiBvY2NsdWRlZDsKIAogICAgIEZha2VUZXh0dXJlQWxsb2Nh
dG9yIHRleHR1cmVBbGxvY2F0b3I7CiAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0
dXJlQWxsb2NhdG9yKTsKQEAgLTE4NCw3ICsxOTQsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QsIHB1c2hEaXJ0eVRpbGVzKQogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMCwg
c28gdGhpcyBpbnZhbGlkYXRlcyBhbmQgdGhlbiBwYWludHMgdHdvIHRpbGVzLgogICAgIGxheWVy
LT5zZXRCb3VuZHMoSW50U2l6ZSgxMDAsIDIwMCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVj
dChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJ
bnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRS
ZWN0KDAsIDAsIDEwMCwgMjAwKSwgb2NjbHVkZWQpOwogICAgIGxheWVyLT51cGRhdGVDb21wb3Np
dG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxh
eWVySW1wbC5nZXQoKSk7CiAKQEAgLTE5Nyw3ICsyMDcsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QsIHB1c2hEaXJ0eVRpbGVzKQogICAgIC8vIEludmFsaWRhdGVzIGJvdGggdGlsZXMu
Li4KICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwog
ICAgIC8vIC4uLi5idXQgdGhlbiBvbmx5IHVwZGF0ZSBvbmUgb2YgdGhlbS4KLSAgICBsYXllci0+
cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAxMDApKTsKKyAgICBsYXllci0+cHJl
cGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCBvY2NsdWRlZCk7CiAgICAgbGF5
ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAgICAgbGF5ZXItPnB1
c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIApAQCAtMjIwLDEyICsyMzAsMTMgQEAg
VEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoSWRsZVBhaW50VGlsZXMpCiAgICAgSW50
U2l6ZSBjb250ZW50Qm91bmRzKDUwMCwgNTAwKTsKICAgICBJbnRSZWN0IGNvbnRlbnRSZWN0KElu
dFBvaW50Ojp6ZXJvKCksIGNvbnRlbnRCb3VuZHMpOwogICAgIEludFJlY3QgdmlzaWJsZVJlY3Qo
MjAwLCAyMDAsIDEwMCwgMTAwKTsKKyAgICBSZWdpb24gb2NjbHVkZWQ7CiAKICAgICAvLyBUaGlz
IGludmFsaWRhdGVzIDI1IHRpbGVzIGFuZCB0aGVuIHBhaW50cyBvbmUgdmlzaWJsZSB0aWxlLgog
ICAgIGxheWVyLT5zZXRCb3VuZHMoY29udGVudEJvdW5kcyk7CiAgICAgbGF5ZXItPnNldFZpc2li
bGVMYXllclJlY3QodmlzaWJsZVJlY3QpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChjb250
ZW50UmVjdCk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZSh2aXNpYmxlUmVjdCk7CisgICAg
bGF5ZXItPnByZXBhcmVUb1VwZGF0ZSh2aXNpYmxlUmVjdCwgb2NjbHVkZWQpOwogCiAgICAgLy8g
V2Ugc2hvdWxkIG5lZWQgaWRsZS1wYWludGluZyBmb3IgM3gzIHRpbGVzIGluIHRoZSBjZW50ZXIu
CiAgICAgRVhQRUNUX1RSVUUobGF5ZXItPm5lZWRzSWRsZVBhaW50KHZpc2libGVSZWN0KSk7CkBA
IC0yNDAsOSArMjUxLDkgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoSWRsZVBh
aW50VGlsZXMpCiAKICAgICAvLyBGb3IgdGhlIG5leHQgZm91ciB1cGRhdGVzLCB3ZSBzaG91bGQg
ZGV0ZWN0IHdlIHN0aWxsIG5lZWQgaWRsZSBwYWludGluZy4KICAgICBmb3IgKGludCBpID0gMDsg
aSA8IDQ7IGkrKykgewotICAgICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKHZpc2libGVSZWN0
KTsKKyAgICAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZSh2aXNpYmxlUmVjdCwgb2NjbHVkZWQp
OwogICAgICAgICBFWFBFQ1RfVFJVRShsYXllci0+bmVlZHNJZGxlUGFpbnQodmlzaWJsZVJlY3Qp
KTsKLSAgICAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZUlkbGUodmlzaWJsZVJlY3QpOworICAg
ICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlSWRsZSh2aXNpYmxlUmVjdCwgb2NjbHVkZWQpOwog
ICAgICAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKICAg
ICAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKICAgICAgICAg
dGV4dHVyZU1hbmFnZXItPnVucHJvdGVjdEFsbFRleHR1cmVzKCk7CkBAIC0yNzAsNiArMjgxLDcg
QEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRPdXRPZk1lbW9yeSkKICAg
ICBJbnRTaXplIGNvbnRlbnRCb3VuZHMoMzAwLCAzMDApOwogICAgIEludFJlY3QgY29udGVudFJl
Y3QoSW50UG9pbnQ6Onplcm8oKSwgY29udGVudEJvdW5kcyk7CiAgICAgSW50UmVjdCB2aXNpYmxl
UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApOworICAgIFJlZ2lvbiBvY2NsdWRlZDsKIAogICAgIC8v
IFdlIGhhdmUgZW5vdWdoIG1lbW9yeSBmb3Igb25seSB0aGUgdmlzaWJsZSByZWN0LCBzbyB3ZSB3
aWxsIHJ1biBvdXQgb2YgbWVtb3J5IGluIGZpcnN0IGlkbGUgcGFpbnQuCiAgICAgaW50IG1lbW9y
eUxpbWl0ID0gNCAqIDEwMCAqIDEwMDsgLy8gMiB0aWxlcywgNCBieXRlcyBwZXIgcGl4ZWwuCkBA
IC0yODYsNyArMjk4LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRP
dXRPZk1lbW9yeSkKICAgICBsYXllci0+c2V0Qm91bmRzKGNvbnRlbnRCb3VuZHMpOwogICAgIGxh
eWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KHZpc2libGVSZWN0KTsKICAgICBsYXllci0+aW52YWxp
ZGF0ZVJlY3QoY29udGVudFJlY3QpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUodmlzaWJs
ZVJlY3QpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUodmlzaWJsZVJlY3QsIG9jY2x1ZGVk
KTsKIAogICAgIC8vIFdlIHNob3VsZCBuZWVkIGlkbGUtcGFpbnRpbmcgZm9yIDN4MyB0aWxlcyBz
dXJvdW5kaW5nIHZpc2libGUgdGlsZS4KICAgICBFWFBFQ1RfVFJVRShsYXllci0+bmVlZHNJZGxl
UGFpbnQodmlzaWJsZVJlY3QpKTsKQEAgLTI5OCw4ICszMTAsOCBAQCBURVNUKFRpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QsIGlkbGVQYWludE91dE9mTWVtb3J5KQogICAgIEVYUEVDVF9UUlVFKGxheWVy
SW1wbC0+aGFzVGlsZUF0KDEsIDEpKTsKIAogICAgIHRleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RB
bGxUZXh0dXJlcygpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUodmlzaWJsZVJlY3QpOwot
ICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGVJZGxlKHZpc2libGVSZWN0KTsKKyAgICBsYXllci0+
cHJlcGFyZVRvVXBkYXRlKHZpc2libGVSZWN0LCBvY2NsdWRlZCk7CisgICAgbGF5ZXItPnByZXBh
cmVUb1VwZGF0ZUlkbGUodmlzaWJsZVJlY3QsIG9jY2x1ZGVkKTsKIAogICAgIC8vIFdlIHNob3Vs
ZG4ndCBzaWduYWwgd2UgbmVlZCBhbm90aGVyIGlkbGUgcGFpbnQgYWZ0ZXIgd2UgcnVuIG91dCBv
ZiBtZW1vcnkuCiAgICAgRVhQRUNUX0ZBTFNFKGxheWVyLT5uZWVkc0lkbGVQYWludCh2aXNpYmxl
UmVjdCkpOwpAQCAtMzE0LDYgKzMyNiw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
aW52YWxpZGF0ZUZyb21QcmVwYXJlKQogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVt
PiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5h
Z2VyLmdldCgpKSk7CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAg
ICAgUmVmUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwgPSBhZG9wdFJlZihuZXcg
RmFrZUNDVGlsZWRMYXllckltcGwoMCkpOworICAgIFJlZ2lvbiBvY2NsdWRlZDsKIAogICAgIEZh
a2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7CiAgICAgQ0NUZXh0dXJlVXBkYXRl
ciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsKQEAgLTMyMSw3ICszMzQsNyBAQCBURVNUKFRp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGludmFsaWRhdGVGcm9tUHJlcGFyZSkKICAgICAvLyBUaGUg
dGlsZSBzaXplIGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRz
IHR3byB0aWxlcy4KICAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAyMDApKTsKICAg
ICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwotICAgIGxh
eWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOworICAgIGxheWVy
LT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIG9jY2x1ZGVkKTsKICAg
ICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKICAgICBsYXll
ci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCkBAIC0zMzQsMTggKzM0Nywx
OCBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGludmFsaWRhdGVGcm9tUHJlcGFyZSkK
ICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQcmVwYXJlQ291bnQo
KTsKICAgICAvLyBJbnZva2UgcHJlcGFyZVRvVXBkYXRlIGFnYWluLiBBcyB0aGUgbGF5ZXIgaXMg
dmFsaWQgcHJlcGFyZVRvVXBkYXRlIHNob3VsZG4ndCBiZSBpbnZva2VkIG9uCiAgICAgLy8gdGhl
IExheWVyVGV4dHVyZVVwZGF0ZXIuCi0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0
KDAsIDAsIDEwMCwgMjAwKSk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAs
IDAsIDEwMCwgMjAwKSwgb2NjbHVkZWQpOwogICAgIEVYUEVDVF9FUSgwLCBsYXllci0+ZmFrZUxh
eWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZUNvdW50KCkpOwogCiAgICAgbGF5ZXItPmludmFs
aWRhdGVSZWN0KEludFJlY3QoMCwgMCwgNTAsIDUwKSk7CiAgICAgLy8gc2V0UmVjdFRvSW52YWxp
ZGF0ZSB0cmlnZ2VycyBpbnZhbGlkYXRlUmVjdCgpIGJlaW5nIGludm9rZWQgZnJvbSBwcmVwYXJl
VG9VcGRhdGUuCiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNldFJlY3RU
b0ludmFsaWRhdGUoSW50UmVjdCgyNSwgMjUsIDUwLCA1MCksIGxheWVyLmdldCgpKTsKICAgICBs
YXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQcmVwYXJlQ291bnQoKTsKLSAg
ICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKKyAgICBs
YXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCBvY2NsdWRlZCk7
CiAgICAgRVhQRUNUX0VRKDEsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVw
YXJlQ291bnQoKSk7CiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFy
UHJlcGFyZUNvdW50KCk7CiAgICAgLy8gVGhlIGxheWVyIHNob3VsZCBzdGlsbCBiZSBpbnZhbGlk
IGFzIHByZXBhcmVUb1VwZGF0ZSBpbnZva2VkIGludmFsaWRhdGUuCi0gICAgbGF5ZXItPnByZXBh
cmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CisgICAgbGF5ZXItPnByZXBhcmVU
b1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgb2NjbHVkZWQpOwogICAgIEVYUEVDVF9F
USgxLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZUNvdW50KCkpOwog
fQogCkBAIC0zNzUsNDIgKzM4OCw0MiBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGxh
eWVyQWRkc1NlbGZUb09jY2x1ZGVkUmVnaW9uKQogICAgIC8vIElmIHRoZSBsYXllciBpcyBvcGFx
dWUgdGhlbiB0aGUgb2NjbHVkZWQgcmVnaW9uIHNob3VsZCBiZSB0aGUgd2hvbGUgbGF5ZXIncyB2
aXNpYmxlIHJlZ2lvbi4KICAgICBsYXllci0+c2V0T3BhcXVlKHRydWUpOwogICAgIGxheWVyLT5p
bnZhbGlkYXRlUmVjdChjb250ZW50Qm91bmRzKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRl
KGNvbnRlbnRCb3VuZHMpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5k
cywgb2NjbHVkZWQpOwogCi0gICAgb2NjbHVkZWQgPSBSZWdpb24oKTsKICAgICBsYXllci0+YWRk
U2VsZlRvT2NjbHVkZWRSZWdpb24ob2NjbHVkZWQpOwogICAgIEVYUEVDVF9FUV9SRUNUKHZpc2li
bGVCb3VuZHMsIG9jY2x1ZGVkLmJvdW5kcygpKTsKICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1ZGVk
LnJlY3RzKCkuc2l6ZSgpKTsKKyAgICBvY2NsdWRlZCA9IFJlZ2lvbigpOwogCiAgICAgLy8gSWYg
dGhlIGxheWVyIGlzIG5vdCBvcGFxdWUgdGhlbiB0aGUgb2NjbHVkZWQgcmVnaW9uIHNob3VsZCBi
ZSBlbXB0eS4KICAgICBsYXllci0+c2V0T3BhcXVlKGZhbHNlKTsKICAgICBsYXllci0+aW52YWxp
ZGF0ZVJlY3QoY29udGVudEJvdW5kcyk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250
ZW50Qm91bmRzKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMsIG9j
Y2x1ZGVkKTsKIAotICAgIG9jY2x1ZGVkID0gUmVnaW9uKCk7CiAgICAgbGF5ZXItPmFkZFNlbGZU
b09jY2x1ZGVkUmVnaW9uKG9jY2x1ZGVkKTsKICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KCks
IG9jY2x1ZGVkLmJvdW5kcygpKTsKICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1ZGVkLnJlY3RzKCku
c2l6ZSgpKTsKKyAgICBvY2NsdWRlZCA9IFJlZ2lvbigpOwogCiAgICAgLy8gSWYgdGhlIGxheWVy
IHBhaW50cyBvcGFxdWUgY29udGVudCwgdGhlbiB0aGUgb2NjbHVkZWQgcmVnaW9uIHNob3VsZCBt
YXRjaCB0aGUgdmlzaWJsZSBvcGFxdWUgY29udGVudC4KICAgICBJbnRSZWN0IG9wYXF1ZVBhaW50
UmVjdCA9IEludFJlY3QoMTAsIDEwLCA5MCwgMTkwKTsKICAgICBsYXllci0+ZmFrZUxheWVyVGV4
dHVyZVVwZGF0ZXIoKS0+c2V0T3BhcXVlUGFpbnRSZWN0KG9wYXF1ZVBhaW50UmVjdCk7CiAgICAg
bGF5ZXItPmludmFsaWRhdGVSZWN0KGNvbnRlbnRCb3VuZHMpOwotICAgIGxheWVyLT5wcmVwYXJl
VG9VcGRhdGUoY29udGVudEJvdW5kcyk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250
ZW50Qm91bmRzLCBvY2NsdWRlZCk7CiAKLSAgICBvY2NsdWRlZCA9IFJlZ2lvbigpOwogICAgIGxh
eWVyLT5hZGRTZWxmVG9PY2NsdWRlZFJlZ2lvbihvY2NsdWRlZCk7CiAgICAgRVhQRUNUX0VRX1JF
Q1QoaW50ZXJzZWN0aW9uKG9wYXF1ZVBhaW50UmVjdCwgdmlzaWJsZUJvdW5kcyksIG9jY2x1ZGVk
LmJvdW5kcygpKTsKICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1ZGVkLnJlY3RzKCkuc2l6ZSgpKTsK
KyAgICBvY2NsdWRlZCA9IFJlZ2lvbigpOwogCiAgICAgLy8gSWYgd2UgcGFpbnQgYWdhaW4gd2l0
aG91dCBpbnZhbGlkYXRpbmcsIHRoZSBzYW1lIHN0dWZmIHNob3VsZCBiZSBvY2NsdWRlZC4KICAg
ICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0T3BhcXVlUGFpbnRSZWN0KElu
dFJlY3QoKSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzKTsKKyAg
ICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMsIG9jY2x1ZGVkKTsKIAotICAg
IG9jY2x1ZGVkID0gUmVnaW9uKCk7CiAgICAgbGF5ZXItPmFkZFNlbGZUb09jY2x1ZGVkUmVnaW9u
KG9jY2x1ZGVkKTsKICAgICBFWFBFQ1RfRVFfUkVDVChpbnRlcnNlY3Rpb24ob3BhcXVlUGFpbnRS
ZWN0LCB2aXNpYmxlQm91bmRzKSwgb2NjbHVkZWQuYm91bmRzKCkpOwogICAgIEVYUEVDVF9FUSgx
dSwgb2NjbHVkZWQucmVjdHMoKS5zaXplKCkpOworICAgIG9jY2x1ZGVkID0gUmVnaW9uKCk7CiAK
ICAgICAvLyBJZiB0aGUgbGF5ZXIgaXMgdHJhbnNmb3JtZWQgdGhlbiB0aGUgcmVzdWx0aW5nIG9j
Y2x1ZGVkIGFyZWEgbmVlZHMgdG8gYmUgdHJhbnNmb3JtZWQgdG8gaXRzIHRhcmdldCBzcGFjZS4K
ICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm07CkBAIC00MjEsMTIgKzQzNCwxMiBA
QCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGxheWVyQWRkc1NlbGZUb09jY2x1ZGVkUmVn
aW9uKQogICAgIGRyYXdUcmFuc2Zvcm0gPSB0cmFuc2Zvcm07CiAgICAgZHJhd1RyYW5zZm9ybS50
cmFuc2xhdGUoY29udGVudEJvdW5kcy53aWR0aCgpIC8gMi4wLCBjb250ZW50Qm91bmRzLmhlaWdo
dCgpIC8gMi4wKTsKICAgICBsYXllci0+c2V0RHJhd1RyYW5zZm9ybShkcmF3VHJhbnNmb3JtKTsK
LSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMpOworICAgIGxheWVyLT5w
cmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcywgb2NjbHVkZWQpOwogCi0gICAgb2NjbHVkZWQg
PSBSZWdpb24oKTsKICAgICBsYXllci0+YWRkU2VsZlRvT2NjbHVkZWRSZWdpb24ob2NjbHVkZWQp
OwogICAgIEVYUEVDVF9FUV9SRUNUKHRyYW5zZm9ybS5tYXBSZWN0KGludGVyc2VjdGlvbihvcGFx
dWVQYWludFJlY3QsIHZpc2libGVCb3VuZHMpKSwgb2NjbHVkZWQuYm91bmRzKCkpOwogICAgIEVY
UEVDVF9FUSgxdSwgb2NjbHVkZWQucmVjdHMoKS5zaXplKCkpOworICAgIG9jY2x1ZGVkID0gUmVn
aW9uKCk7CiAKICAgICAvLyBCdXQgYSBub24tYXhpcy1hbGlnbmVkIHRyYW5zZm9ybSBkb2VzIG5v
dCBnZXQgY29uc2lkZXJlZCBmb3Igb2NjbHVzaW9uLgogICAgIHRyYW5zZm9ybS50cmFuc2xhdGUo
Y29udGVudEJvdW5kcy53aWR0aCgpIC8gMi4wLCBjb250ZW50Qm91bmRzLmhlaWdodCgpIC8gMi4w
KTsKQEAgLTQzNSwxNCArNDQ4LDE2NCBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGxh
eWVyQWRkc1NlbGZUb09jY2x1ZGVkUmVnaW9uKQogICAgIGRyYXdUcmFuc2Zvcm0gPSB0cmFuc2Zv
cm07CiAgICAgZHJhd1RyYW5zZm9ybS50cmFuc2xhdGUoY29udGVudEJvdW5kcy53aWR0aCgpIC8g
Mi4wLCBjb250ZW50Qm91bmRzLmhlaWdodCgpIC8gMi4wKTsKICAgICBsYXllci0+c2V0RHJhd1Ry
YW5zZm9ybShkcmF3VHJhbnNmb3JtKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRl
bnRCb3VuZHMpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcywgb2Nj
bHVkZWQpOwogCi0gICAgb2NjbHVkZWQgPSBSZWdpb24oKTsKLSAgICBsYXllci0+YWRkU2VsZlRv
T2NjbHVkZWRSZWdpb24ob2NjbHVkZWQpOwogICAgIC8vIEZJWE1FOiBJZiB3ZSBmaW5kIGFuIG9w
YXF1ZSByZWN0IGNvbnRhaW5lZCBpbiB0aGUgcm90YXRlZCBub24tYXhpcy1hbGlnbmVkIHJlY3Qs
IHRoZW4KICAgICAvLyB0aGlzIHdvbid0IGJlIGFuIGVtcHR5IHJlc3VsdC4KKyAgICBsYXllci0+
YWRkU2VsZlRvT2NjbHVkZWRSZWdpb24ob2NjbHVkZWQpOwogICAgIEVYUEVDVF9FUV9SRUNUKElu
dFJlY3QoKSwgb2NjbHVkZWQuYm91bmRzKCkpOwogICAgIEVYUEVDVF9FUSgwdSwgb2NjbHVkZWQu
cmVjdHMoKS5zaXplKCkpOwogfQogCitURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVz
UGFpbnRlZFdpdGhvdXRPY2NsdXNpb24pCit7CisgICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0
ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDIqMTAy
NCoxMDI0LCAxMDI0KTsKKyAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIg
PSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQo
KSkpOworICAgIFJlZ2lvbiBvY2NsdWRlZDsKKworICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAw
eDEwMCwgc28gdGhpcyBpbnZhbGlkYXRlcyBhbmQgdGhlbiBwYWludHMgdHdvIHRpbGVzLgorICAg
IGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSgxMDAsIDIwMCkpOworICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4IGRyYXdUcmFuc2Zvcm07CisgICAgZHJhd1RyYW5zZm9ybS50cmFuc2xhdGUoMTAwIC8g
Mi4wLCAyMDAgLyAyLjApOworICAgIGxheWVyLT5zZXREcmF3VHJhbnNmb3JtKGRyYXdUcmFuc2Zv
cm0pOworCisgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDAp
KTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCBv
Y2NsdWRlZCk7CisgICAgRVhQRUNUX0VRKDIsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRl
cigpLT5wcmVwYXJlUmVjdENvdW50KCkpOworfQorCitURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRl
c3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb24pCit7CisgICAgT3duUHRyPFRleHR1cmVNYW5h
Z2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQs
IDIqMTAyNCoxMDI0LCAxMDI0KTsKKyAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4g
bGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdl
ci5nZXQoKSkpOworICAgIFJlZ2lvbiBvY2NsdWRlZDsKKworICAgIC8vIFRoZSB0aWxlIHNpemUg
aXMgMTAweDEwMC4KKworICAgIGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSg2MDAsIDYwMCkpOwor
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGRyYXdUcmFuc2Zvcm07CisgICAgZHJhd1RyYW5zZm9y
bS50cmFuc2xhdGUoNjAwIC8gMi4wLCA2MDAgLyAyLjApOworICAgIGxheWVyLT5zZXREcmF3VHJh
bnNmb3JtKGRyYXdUcmFuc2Zvcm0pOworCisgICAgb2NjbHVkZWQgPSBJbnRSZWN0KDIwMCwgMjAw
LCAzMDAsIDEwMCk7CisgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgNjAw
LCA2MDApKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNjAwLCA2
MDApLCBvY2NsdWRlZCk7CisgICAgRVhQRUNUX0VRKDM2LTMsIGxheWVyLT5mYWtlTGF5ZXJUZXh0
dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOworCisgICAgbGF5ZXItPmZha2VMYXll
clRleHR1cmVVcGRhdGVyKCktPmNsZWFyUHJlcGFyZVJlY3RDb3VudCgpOworCisgICAgb2NjbHVk
ZWQgPSBJbnRSZWN0KDI1MCwgMjAwLCAzMDAsIDEwMCk7CisgICAgbGF5ZXItPmludmFsaWRhdGVS
ZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRl
KEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCBvY2NsdWRlZCk7CisgICAgRVhQRUNUX0VRKDM2LTIs
IGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOwor
CisgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyUHJlcGFyZVJlY3RD
b3VudCgpOworCisgICAgb2NjbHVkZWQgPSBJbnRSZWN0KDI1MCwgMjUwLCAzMDAsIDEwMCk7Cisg
ICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKKyAgICBs
YXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCBvY2NsdWRlZCk7
CisgICAgRVhQRUNUX0VRKDM2LCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJl
cGFyZVJlY3RDb3VudCgpKTsKK30KKworVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxl
c05vdFBhaW50ZWRXaXRob3V0SW52YWxpZGF0aW9uKQoreworICAgIE93blB0cjxUZXh0dXJlTWFu
YWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0
LCAyKjEwMjQqMTAyNCwgMTAyNCk7CisgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+
IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFn
ZXIuZ2V0KCkpKTsKKyAgICBSZWdpb24gb2NjbHVkZWQ7CisKKyAgICAvLyBUaGUgdGlsZSBzaXpl
IGlzIDEwMHgxMDAuCisKKyAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoNjAwLCA2MDApKTsK
KyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBkcmF3VHJhbnNmb3JtOworICAgIGRyYXdUcmFuc2Zv
cm0udHJhbnNsYXRlKDYwMCAvIDIuMCwgNjAwIC8gMi4wKTsKKyAgICBsYXllci0+c2V0RHJhd1Ry
YW5zZm9ybShkcmF3VHJhbnNmb3JtKTsKKworICAgIG9jY2x1ZGVkID0gSW50UmVjdCgyMDAsIDIw
MCwgMzAwLCAxMDApOworICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoMCwg
MCwgNjAwLCA2MDApKTsKKyAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA2
MDAsIDYwMCkpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA2MDAs
IDYwMCksIG9jY2x1ZGVkKTsKKyAgICBFWFBFQ1RfRVEoMzYtMywgbGF5ZXItPmZha2VMYXllclRl
eHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CisKKyAgICBsYXllci0+ZmFrZUxh
eWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQcmVwYXJlUmVjdENvdW50KCk7CisKKyAgICAvLyBS
ZXBhaW50IHdpdGhvdXQgbWFya2luZyBpdCBkaXJ0eS4KKyAgICBsYXllci0+cHJlcGFyZVRvVXBk
YXRlKEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCBvY2NsdWRlZCk7CisgICAgRVhQRUNUX0VRKDAs
IGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOwor
fQorCitURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNp
b25BbmRUcmFuc2Zvcm1zKQoreworICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1h
bmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAyKjEwMjQqMTAyNCwg
MTAyNCk7CisgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRS
ZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKKyAg
ICBSZWdpb24gb2NjbHVkZWQ7CisKKyAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAuCisK
KyAgICAvLyBUaGlzIG1ha2VzIHN1cmUgdGhlIHBhaW50aW5nIHdvcmtzIHdoZW4gdGhlIG9jY2x1
ZGVkIHJlZ2lvbiAoaW4gc2NyZWVuIHNwYWNlKQorICAgIC8vIGlzIHRyYW5zZm9ybWVkIGRpZmZl
cmVudGx5IHRoYW4gdGhlIGxheWVyLgorICAgIGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSg2MDAs
IDYwMCkpOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGRyYXdUcmFuc2Zvcm07CisgICAgZHJh
d1RyYW5zZm9ybS5zY2FsZSgwLjUpOworICAgIGRyYXdUcmFuc2Zvcm0udHJhbnNsYXRlKDYwMCAv
IDIuMCwgNjAwIC8gMi4wKTsKKyAgICBsYXllci0+c2V0RHJhd1RyYW5zZm9ybShkcmF3VHJhbnNm
b3JtKTsKKworICAgIG9jY2x1ZGVkID0gSW50UmVjdCgxMDAsIDEwMCwgMTUwLCA1MCk7CisgICAg
bGF5ZXItPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBsYXllci0+Ym91
bmRzKCkpKTsKKyAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYw
MCkpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCks
IG9jY2x1ZGVkKTsKKyAgICBFWFBFQ1RfRVEoMzYtMywgbGF5ZXItPmZha2VMYXllclRleHR1cmVV
cGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7Cit9CisKK1RFU1QoVGlsZWRMYXllckNocm9t
aXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFNjYWxpbmcpCit7CisgICAgT3du
UHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVh
dGUoNCoxMDI0KjEwMjQsIDIqMTAyNCoxMDI0LCAxMDI0KTsKKyAgICBSZWZQdHI8RmFrZVRpbGVk
TGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1
bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOworICAgIFJlZ2lvbiBvY2NsdWRlZDsKKworICAgIC8v
IFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMC4KKworICAgIC8vIFRoaXMgbWFrZXMgc3VyZSB0aGUg
cGFpbnRpbmcgd29ya3Mgd2hlbiB0aGUgY29udGVudCBzcGFjZSBpcyBzY2FsZWQgdG8KKyAgICAv
LyBhIGRpZmZlcmVudCBsYXllciBzcGFjZS4gSW4gdGhpcyBjYXNlIHRpbGVzIGFyZSBzY2FsZWQg
dG8gYmUgMjAweDIwMAorICAgIC8vIHBpeGVscywgd2hpY2ggbWVhbnMgbm9uZSBzaG91bGQgYmUg
b2NjbHVkZWQuCisgICAgbGF5ZXItPnNldENvbnRlbnRzU2NhbGUoMC41KTsKKyAgICBsYXllci0+
c2V0Qm91bmRzKEludFNpemUoNjAwLCA2MDApKTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBk
cmF3VHJhbnNmb3JtOworICAgIGRyYXdUcmFuc2Zvcm0udHJhbnNsYXRlKDYwMCAvIDIuMCwgNjAw
IC8gMi4wKTsKKyAgICBsYXllci0+c2V0RHJhd1RyYW5zZm9ybShkcmF3VHJhbnNmb3JtKTsKKwor
ICAgIG9jY2x1ZGVkID0gSW50UmVjdCgyMDAsIDIwMCwgMzAwLCAxMDApOworICAgIGxheWVyLT5z
ZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXItPmJvdW5kcygpKSk7
CisgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKKyAg
ICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCBvY2NsdWRl
ZCk7CisgICAgLy8gVGhlIGNvbnRlbnQgaXMgaGFsZiB0aGUgc2l6ZSBvZiB0aGUgbGF5ZXIgKHNv
IHRoZSBudW1iZXIgb2YgdGlsZXMgaXMgZmV3ZXIpLgorICAgIC8vIEluIHRoaXMgY2FzZSwgdGhl
IGNvbnRlbnQgaXMgMzAweDMwMCwgYW5kIHNpbmNlIHRoZSB0aWxlIHNpemUgaXMgMTAwLCB0aGUK
KyAgICAvLyBudW1iZXIgb2YgdGlsZXMgM3gzLgorICAgIEVYUEVDVF9FUSg5LCBsYXllci0+ZmFr
ZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKKworICAgIGxheWVy
LT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVSZWN0Q291bnQoKTsKKwor
ICAgIC8vIFRoaXMgbWFrZXMgc3VyZSB0aGUgcGFpbnRpbmcgd29ya3Mgd2hlbiB0aGUgY29udGVu
dCBzcGFjZSBpcyBzY2FsZWQgdG8KKyAgICAvLyBhIGRpZmZlcmVudCBsYXllciBzcGFjZS4gSW4g
dGhpcyBjYXNlIHRoZSBvY2NsdWRlZCByZWdpb24gY2F0Y2hlcyB0aGUKKyAgICAvLyBibG93biB1
cCB0aWxlcy4KKyAgICBvY2NsdWRlZCA9IEludFJlY3QoMjAwLCAyMDAsIDMwMCwgMjAwKTsKKyAg
ICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KEludFBvaW50KCksIGxheWVyLT5i
b3VuZHMoKSkpOworICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwg
NjAwKSk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAw
KSwgb2NjbHVkZWQpOworICAgIEVYUEVDVF9FUSg5LTEsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJl
VXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOworCisgICAgbGF5ZXItPmZha2VMYXllclRl
eHR1cmVVcGRhdGVyKCktPmNsZWFyUHJlcGFyZVJlY3RDb3VudCgpOworCisgICAgLy8gVGhpcyBt
YWtlcyBzdXJlIGNvbnRlbnQgc2NhbGluZyBhbmQgdHJhbnNmb3JtcyB3b3JrIHRvZ2V0aGVyLgor
ICAgIGRyYXdUcmFuc2Zvcm0ubWFrZUlkZW50aXR5KCk7CisgICAgZHJhd1RyYW5zZm9ybS5zY2Fs
ZSgwLjUpOworICAgIGRyYXdUcmFuc2Zvcm0udHJhbnNsYXRlKDYwMCAvIDIuMCwgNjAwIC8gMi4w
KTsKKyAgICBsYXllci0+c2V0RHJhd1RyYW5zZm9ybShkcmF3VHJhbnNmb3JtKTsKKworICAgIG9j
Y2x1ZGVkID0gSW50UmVjdCgxMDAsIDEwMCwgMTUwLCAxMDApOworICAgIGxheWVyLT5zZXRWaXNp
YmxlTGF5ZXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXItPmJvdW5kcygpKSk7CisgICAg
bGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKKyAgICBsYXll
ci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCBvY2NsdWRlZCk7Cisg
ICAgRVhQRUNUX0VRKDktMSwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBh
cmVSZWN0Q291bnQoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124211</attachid>
            <date>2012-01-26 16:33:42 -0800</date>
            <delta_ts>2012-01-27 15:50:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76838-20120126193341.patch</filename>
            <type>text/plain</type>
            <size>48587</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MDM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTEwNzhiOWFhNmU5OTVk
ZDY3ZDVhODY3NTU4ZTExZjI4OTAyNzVmNi4uZDYxMDVmNWQyODY3Y2NlNTRlZGQ0NWZiNzY1ZWE2
M2QwOTYzMWNiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUwIEBACiAyMDEyLTAxLTI2ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFtjaHJvbWl1bV0gQ3Vs
bCBvY2NsdWRlZCB0aWxlcyBkdXJpbmcgcGFpbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc2ODM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTmV3IHVuaXQgdGVzdHMgaW4gVGlsZWRMYXllckNocm9taXVt
VGVzdC5jcHAKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJE
TGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21p
dW06OnBhaW50Q29udGVudHNJZkRpcnR5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoQ2FudmFzMkRMYXllckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OmlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0u
aDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ29udGVudExheWVyQ2hyb21pdW0pOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJ
ZkRpcnR5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVy
Q2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSW1hZ2VMYXllckNocm9t
aXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVt
Lmg6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0
eSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjppZGxlUGFpbnRDb250ZW50c0lm
RGlydHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZh
Y2VDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3VyZmFjZUNocm9taXVtOjpv
Y2NsdWRlZFJlZ2lvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGls
ZWRMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlZ2lvbkNvbnRhaW5zUmVj
dCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJv
bWl1bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXll
ckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXll
ckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZGxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFRpbGVkTGF5ZXJD
aHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6cGFpbnRD
b250ZW50c0lmRGlydHkpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpwYWlu
dE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVyVHJlZUhvc3Q6OnBhaW50TGF5ZXJDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAgICAgICgpOgorCisyMDEy
LTAxLTI2ICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFtj
aHJvbWl1bV0gQ29tcHV0ZSBvY2NsdXNpb24gZHVyaW5nIHBhaW50IGxvb3AKICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2ODU4CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKaW5kZXggMDkyNmFjOTdhN2E5MzMzMWEzZTFlYmYxZmJkMzE5OGE3MWQ5ODYw
ZS4uZDMzY2U2OWEyNzVlYjI0ZjdjM2I2ODU2ZmZhOTE2Y2I3ZmZiNmUyZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwzMyBAQAogMjAxMi0wMS0yNiAgRGFuYSBKYW5zZW5z
ICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KIAorICAgICAgICBbY2hyb21pdW1dIEN1bGwgb2NjbHVk
ZWQgdGlsZXMgZHVyaW5nIHBhaW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03NjgzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHA6CisgICAgICAgIChX
VEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpwYWludENvbnRlbnRz
SWZEaXJ0eSk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRy
YWNraW5nOjppZGxlUGFpbnRDb250ZW50c0lmRGlydHkpOgorICAgICAgICAqIHRlc3RzL0NhbnZh
czJETGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXll
ckNocm9taXVtVGVzdDo6ZnVsbExpZmVjeWNsZVRlc3QpOgorICAgICAgICAqIHRlc3RzL1RpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgorICAgICAgICAoV1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZTo6VGV4dHVyZSk6CisgICAgICAgIChXVEY6OkZha2VMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlOjpwcmVwYXJlUmVjdCk6CisgICAgICAgIChUZXh0dXJlKToKKyAgICAg
ICAgKFdURjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OkZha2VMYXllclRleHR1cmVVcGRhdGVy
KToKKyAgICAgICAgKFdURjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OnNldE9wYXF1ZVBhaW50
UmVjdCk6CisgICAgICAgIChGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcik6CisgICAgICAgIChXVEY6
OkZha2VMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlUmVjdENvdW50KToKKyAgICAgICAgKFdU
Rjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OmNsZWFyUHJlcGFyZVJlY3RDb3VudCk6CisgICAg
ICAgIChXVEY6OkZha2VMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGVUZXh0dXJlKToKKyAgICAg
ICAgKFdURjo6RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKToKKyAgICAg
ICAgKFdURjo6RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWRsZSk6Cisg
ICAgICAgIChXVEY6OkZha2VUaWxlZExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5
KToKKyAgICAgICAgKFdURjo6VEVTVCk6CisgICAgICAgIChXVEYpOgorCisyMDEyLTAxLTI2ICBE
YW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFtjaHJvbWl1bV0g
Q29tcHV0ZSBvY2NsdXNpb24gZHVyaW5nIHBhaW50IGxvb3AKICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2ODU4CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExh
eWVyQ2hyb21pdW0uY3BwCmluZGV4IDE1MDVhZGFjMjQzZTA3NjY1ZDJkZGFiMjhmNDcwM2ZmOGVm
NWI5NDMuLjdhZjhjNjU1YmU5MmY0ZWY4ZTQxNDZjYTVhOWU2MGZjNTg5N2Y3MTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5
ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcApAQCAtOTEsNyArOTEsNyBAQCBib29sIENh
bnZhczJETGF5ZXJDaHJvbWl1bTo6ZHJhd3NDb250ZW50KCkgY29uc3QKICAgICAgICAgJiYgbV9j
b250ZXh0ICYmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+Z2V0R3JhcGhpY3NSZXNldFN0
YXR1c0FSQigpID09IEdyYXBoaWNzQ29udGV4dDNEOjpOT19FUlJPUik7CiB9CiAKLXZvaWQgQ2Fu
dmFzMkRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSgpCit2b2lkIENhbnZhczJE
TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uJiAvKm9jY2x1
ZGVkVGFyZ2V0U3BhY2UqLykKIHsKICAgICBpZiAoIWRyYXdzQ29udGVudCgpKQogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oCmluZGV4IDgzNjE1YTFmMjIz
NTYxNjQ2MmViMWY4ZDQxMjJlMWFkOGU1OGM5MjIuLmQ3YmFkZTc4ODNkYTQzYzY3YjVjNGEyMWZi
OWNiMzRlYmViYThmMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oCkBAIC00
MCw2ICs0MCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4
dDNEOworY2xhc3MgUmVnaW9uOwogCiAvLyBBIGxheWVyIGNvbnRhaW5pbmcgYW4gYWNjZWxlcmF0
ZWQgMmQgY2FudmFzCiBjbGFzcyBDYW52YXMyRExheWVyQ2hyb21pdW0gOiBwdWJsaWMgQ2FudmFz
TGF5ZXJDaHJvbWl1bSB7CkBAIC01Miw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgY29udGVudENoYW5nZWQoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBj
b25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoKTsKKyAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uJiBvY2NsdWRlZFRhcmdl
dFNwYWNlKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVl
SG9zdCopOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBo
aWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVy
Q2hyb21pdW0uY3BwCmluZGV4IDUyOWZjZTAzNjRhODI4NTVhYTQwNjM5NzE1NmUwZmJiNGUzYTk1
MGUuLmUzZGIzY2EzNDk5ZGM0N2ExNmU5M2JjYjllN2RlNDUxZGVjZmM3NDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNo
cm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgYm9vbCBDb250ZW50
TGF5ZXJDaHJvbWl1bTo6ZHJhd3NDb250ZW50KCkgY29uc3QKICAgICByZXR1cm4gVGlsZWRMYXll
ckNocm9taXVtOjpkcmF3c0NvbnRlbnQoKSAmJiBtX2RlbGVnYXRlOwogfQogCi12b2lkIENvbnRl
bnRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSgpCit2b2lkIENvbnRlbnRMYXll
ckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIG9jY2x1ZGVkVGFy
Z2V0U3BhY2UpCiB7CiAgICAgdXBkYXRlVGlsZVNpemVBbmRUaWxpbmdPcHRpb24oKTsKIApAQCAt
MTA0LDExICsxMDQsMTEgQEAgdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50
c0lmRGlydHkoKQogICAgIGlmIChkcmF3c0NvbnRlbnQoKSkKICAgICAgICAgbGF5ZXJSZWN0ID0g
dmlzaWJsZUxheWVyUmVjdCgpOwogCi0gICAgcHJlcGFyZVRvVXBkYXRlKGxheWVyUmVjdCk7Cisg
ICAgcHJlcGFyZVRvVXBkYXRlKGxheWVyUmVjdCwgb2NjbHVkZWRUYXJnZXRTcGFjZSk7CiAgICAg
bV9uZWVkc0Rpc3BsYXkgPSBmYWxzZTsKIH0KIAotdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6
aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KCkKK3ZvaWQgQ29udGVudExheWVyQ2hyb21pdW06Omlk
bGVQYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIG9jY2x1ZGVkVGFyZ2V0U3BhY2Up
CiB7CiAgICAgaWYgKCFkcmF3c0NvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTE3LDcg
KzExNyw3IEBAIHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OmlkbGVQYWludENvbnRlbnRzSWZE
aXJ0eSgpCiAgICAgaWYgKGxheWVyUmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIHByZXBhcmVUb1VwZGF0ZUlkbGUobGF5ZXJSZWN0KTsKKyAgICBwcmVwYXJlVG9VcGRhdGVJ
ZGxlKGxheWVyUmVjdCwgb2NjbHVkZWRUYXJnZXRTcGFjZSk7CiAgICAgaWYgKG5lZWRzSWRsZVBh
aW50KGxheWVyUmVjdCkpCiAgICAgICAgIHNldE5lZWRzQ29tbWl0KCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJD
aHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29u
dGVudExheWVyQ2hyb21pdW0uaAppbmRleCA0MjY2NzljYWZhYmI3Mzk0YzAyZTc5MDFiZTMzMmQ3
YmNiNWUwODFhLi42MDI3OWNkMTc5ZGJkMTkzMjAyN2ZlOWZiMzdjMTliMDljYjVlMjM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50
TGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKQEAgLTQxLDYgKzQxLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBMYXllclRpbGVyQ2hyb21pdW07CiBjbGFzcyBMYXllclRleHR1
cmVVcGRhdGVyOworY2xhc3MgUmVnaW9uOwogCiBjbGFzcyBDb250ZW50TGF5ZXJEZWxlZ2F0ZSB7
CiBwdWJsaWM6CkBAIC01OCw4ICs1OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyRGVsZWdh
dGUoKSB7IG1fZGVsZWdhdGUgPSAwOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50
KCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KCk7Ci0gICAg
dmlydHVhbCB2b2lkIGlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSgpOworICAgIHZpcnR1YWwgdm9p
ZCBwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIG9jY2x1ZGVkVGFyZ2V0U3BhY2Up
OworICAgIHZpcnR1YWwgdm9pZCBpZGxlUGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9u
JiBvY2NsdWRlZFRhcmdldFNwYWNlKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRPcGFxdWUoYm9v
bCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCmluZGV4IDAxNTRmYjI4MzE0ZjNl
NmM5MjQwNDdiYjQ4MzY3MzY5MmRmY2ZhYjcuLjk2YWM4YTQxNjY5NjZlM2MzZWJkZGNiODdjNDA4
ZjZmNThiZDg2ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcApAQCAtMTU4LDcg
KzE1OCw3IEBAIHZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpzZXRDb250ZW50cyhJbWFnZSogY29u
dGVudHMpCiAgICAgc2V0TmVlZHNEaXNwbGF5KCk7CiB9CiAKLXZvaWQgSW1hZ2VMYXllckNocm9t
aXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSgpCit2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6cGFp
bnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uJiBvY2NsdWRlZFRhcmdldFNwYWNlKQogewog
ICAgIGlmIChtX25lZWRzRGlzcGxheSkgewogICAgICAgICBtX3RleHR1cmVVcGRhdGVyLT51cGRh
dGVGcm9tSW1hZ2UobV9jb250ZW50cy0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSk7CkBA
IC0xNjcsNyArMTY3LDcgQEAgdm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJ
ZkRpcnR5KCkKICAgICAgICAgbV9uZWVkc0Rpc3BsYXkgPSBmYWxzZTsKICAgICB9CiAKLSAgICBw
cmVwYXJlVG9VcGRhdGUodmlzaWJsZUxheWVyUmVjdCgpKTsKKyAgICBwcmVwYXJlVG9VcGRhdGUo
dmlzaWJsZUxheWVyUmVjdCgpLCBvY2NsdWRlZFRhcmdldFNwYWNlKTsKIH0KIAogTGF5ZXJUZXh0
dXJlVXBkYXRlciogSW1hZ2VMYXllckNocm9taXVtOjp0ZXh0dXJlVXBkYXRlcigpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFn
ZUxheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oCmluZGV4IGQ3MTI5MjQ1MWMzNTU1ZWFmMGMxNmNmOWYy
YzNmMzk1YmUwNzUzMDQuLjhkZjBkZGUxNDE2NTY5OWFmYjA1OWE1MjcxMjg1YmZmN2Y5ZTE1ZTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0lt
YWdlTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oCkBAIC00NSw2ICs0NSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgSW1hZ2U7CiBjbGFzcyBJbWFnZUxheWVyVGV4dHVyZVVwZGF0
ZXI7CitjbGFzcyBSZWdpb247CiAKIC8vIEEgTGF5ZXIgdGhhdCBjb250YWlucyBvbmx5IGFuIElt
YWdlIGVsZW1lbnQuCiBjbGFzcyBJbWFnZUxheWVyQ2hyb21pdW0gOiBwdWJsaWMgVGlsZWRMYXll
ckNocm9taXVtIHsKQEAgLTUzLDcgKzU0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkltYWdl
TGF5ZXJDaHJvbWl1bSgpOwogCiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0
OwotICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eSgpOworICAgIHZpcnR1YWwg
dm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIG9jY2x1ZGVkVGFyZ2V0U3Bh
Y2UpOwogICAgIHZpcnR1YWwgYm9vbCBuZWVkc0NvbnRlbnRzU2NhbGUoKSBjb25zdDsKIAogICAg
IHZvaWQgc2V0Q29udGVudHMoSW1hZ2UqIGltYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAppbmRleCBh
OWVhNjA2ZjU1OThmNzgwN2JmMjNjMTU0YmJiYTA1MGY5NGNkYzk4Li5mYzYwYTNlOWNkNzRlNmIw
NDg5ZWE4NDBlNTNlZDYxNjFmNjQ1MGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC0zOCw2ICsz
OCw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1T
dHJpbmcuaCIKICNpbmNsdWRlICJQcm9ncmFtQmluZGluZy5oIgorI2luY2x1ZGUgIlJlZ2lvbi5o
IgogI2luY2x1ZGUgIlJlbmRlclN1cmZhY2VDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlNoYWRlckNo
cm9taXVtLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKQEAgLTE1NCw4ICsx
NTUsOCBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIHR5cGljYWxseSBuZWVkIHRv
IGJlIG92ZXJ3cml0dGVuIGJ5IGRlcml2ZWQgY2xhc3Nlcy4KICAgICB2aXJ0dWFsIGJvb2wgZHJh
d3NDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9pc0RyYXdhYmxlOyB9Ci0gICAgdmlydHVhbCB2
b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGlkbGVQYWlu
dENvbnRlbnRzSWZEaXJ0eSgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZE
aXJ0eShjb25zdCBSZWdpb24mIC8qIG9jY2x1ZGVkVGFyZ2V0U3BhY2UgKi8pIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBpZGxlUGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uJiAvKiBvY2Ns
dWRlZFRhcmdldFNwYWNlICovKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRv
clJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgc2V0SXNNYXNrKGJvb2wpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB1bnJl
c2VydmVDb250ZW50c1RleHR1cmUoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVt
LmgKaW5kZXggYTA2NmU2MzkxYWQ4Mzg5ODg1ZDEyMTIzMGJiYzFlYThmNjIzOTI2Ny4uMjIzY2Zi
OWU0NGZmNTljMzM0NWVmNzUyYTNjZmE0MjU3YTgyOTQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3Vy
ZmFjZUNocm9taXVtLmgKQEAgLTg2LDYgKzg2LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGRM
YXllclRvT2NjbHVkZWRSZWdpb24oTGF5ZXJDaHJvbWl1bSopOwogICAgIHZvaWQgY2xlYXJPY2Ns
dWRlZFJlZ2lvbigpOworICAgIGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRSZWdpb24oKSBjb25zdCB7
IHJldHVybiBtX29jY2x1ZGVkSW5Pd25TdXJmYWNlU3BhY2U7IH0KIAogcHJpdmF0ZToKICAgICBM
YXllckNocm9taXVtKiBtX293bmluZ0xheWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5j
cHAKaW5kZXggZGZkZjUzZGJkY2FiM2YwZWJiZmQyZjNlYmZjY2RiZjMzYTI3NTRkOC4uN2U0MTVh
ZjM1ODM1MjE0NTQ5OTdmMjU2NTFmMzMyNTQzOGM4OGI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVy
Q2hyb21pdW0uY3BwCkBAIC0zNjYsNyArMzY2LDE5IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVt
Ojpwcm90ZWN0VGlsZVRleHR1cmVzKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCkKICAgICB9CiB9
CiAKLXZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVUaWxlcyhib29sIGlk
bGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQgcmlnaHQsIGludCBib3R0b20pCitzdGF0aWMgYm9v
bCByZWdpb25Db250YWluc1JlY3QoY29uc3QgUmVnaW9uJiByZWdpb24sIGNvbnN0IEludFJlY3Qm
IHJlY3QpCit7CisgICAgUmVnaW9uIHJlY3RSZWdpb24ocmVjdCk7CisgICAgUmVnaW9uIGludGVy
c2VjdFJlZ2lvbihpbnRlcnNlY3QocmVnaW9uLCByZWN0UmVnaW9uKSk7CisKKyAgICBpZiAoaW50
ZXJzZWN0UmVnaW9uLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmVj
dFJlZ2lvbi5zdWJ0cmFjdChpbnRlcnNlY3RSZWdpb24pOworICAgIHJldHVybiByZWN0UmVnaW9u
LmlzRW1wdHkoKTsKK30KKwordm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0
ZVRpbGVzKGJvb2wgaWRsZSwgaW50IGxlZnQsIGludCB0b3AsIGludCByaWdodCwgaW50IGJvdHRv
bSwgY29uc3QgUmVnaW9uJiBvY2NsdWRlZFRhcmdldFNwYWNlKQogewogICAgIC8vIFJlc2V0IG1f
dXBkYXRlUmVjdCBmb3IgYWxsIHRpbGVzLgogICAgIGZvciAoQ0NMYXllclRpbGluZ0RhdGE6OlRp
bGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX3RpbGVyLT50aWxlcygpLmJlZ2luKCk7IGl0
ZXIgIT0gbV90aWxlci0+dGlsZXMoKS5lbmQoKTsgKytpdGVyKSB7CkBAIC0zNzQsNiArMzg2LDkg
QEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wgaWRs
ZSwgaW50IGxlZnQsIGludCB0b3AsIGludAogICAgICAgICB0aWxlLT5tX3VwZGF0ZVJlY3QgPSBJ
bnRSZWN0KCk7CiAgICAgfQogCisgICAgLy8gVGlsZXMgYXJlIGluIHRoZSBsYXllcidzIGNvbnRl
bnQgc3BhY2UsIHRoZSBvY2NsdWRlZCByZWdpb24gaXMgaW4gdGFyZ2V0J3MgY29udGVudCBzcGFj
ZS4KKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjb250ZW50VG9UYXJnZXRTcGFjZSA9IGNvbnRl
bnRUb1RhcmdldFNwYWNlVHJhbnNmb3JtKCk7CisKICAgICAvLyBDcmVhdGUgdGlsZXMgYXMgbmVl
ZGVkLCBleHBhbmRpbmcgYSBkaXJ0eSByZWN0IHRvIGNvbnRhaW4gYWxsCiAgICAgLy8gdGhlIGRp
cnR5IHJlZ2lvbnMgY3VycmVudGx5IGJlaW5nIGRyYXduLiBBbGwgZGlydHkgdGlsZXMgdGhhdCBh
cmUgdG8gYmUgcGFpbnRlZAogICAgIC8vIGdldCB0aGVpciBtX3VwZGF0ZVJlY3Qgc2V0IHRvIG1f
ZGlydHlSZWN0IGFuZCBtX2RpcnR5UmVjdCBjbGVhcmVkLiBUaGlzIHdheSBpZgpAQCAtMzg1LDEz
ICs0MDAsMjMgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVz
KGJvb2wgaWRsZSwgaW50IGxlZnQsIGludCB0b3AsIGludAogICAgICAgICAgICAgaWYgKCF0aWxl
KQogICAgICAgICAgICAgICAgIHRpbGUgPSBjcmVhdGVUaWxlKGksIGopOwogCisgICAgICAgICAg
ICAvLyBXaGVuIG5vdCBpZGxlIHBhaW50aW5nLCBpZiB0aGUgdGlsZSBpcyBvY2NsdWRlZCBkb24n
dCByZXNlcnZlIGEgdGV4dHVyZSBvciBtYXJrIGl0IGZvciB1cGRhdGUuIFRoaXMgd2lsbCBhbHNv
IGF2b2lkIHBhaW50aW5nCisgICAgICAgICAgICAvLyB0aGUgdGlsZSBpbiB0aGUgbmV4dCBsb29w
LCBiZWxvdy4KKyAgICAgICAgICAgIGlmICghaWRsZSkgeworICAgICAgICAgICAgICAgIEludFJl
Y3QgdGlsZVJlY3QgPSBtX3RpbGVyLT50aWxlQm91bmRzKGksIGopOworICAgICAgICAgICAgICAg
IGlmIChyZWdpb25Db250YWluc1JlY3Qob2NjbHVkZWRUYXJnZXRTcGFjZSwgY29udGVudFRvVGFy
Z2V0U3BhY2UubWFwUmVjdCh0aWxlUmVjdCkpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgLy8gRG8gcG9zdCBjb21taXQgZGVsZXRp
b24gb2YgY3VycmVudCB0ZXh0dXJlIHdoZW4gcGFydGlhbCB0ZXh0dXJlCiAgICAgICAgICAgICAv
LyB1cGRhdGVzIGFyZSBub3QgdXNlZC4KICAgICAgICAgICAgIGlmICh0aWxlLT5pc0RpcnR5KCkg
JiYgbGF5ZXJUcmVlSG9zdCgpICYmICFsYXllclRyZWVIb3N0KCktPnNldHRpbmdzKCkucGFydGlh
bFRleHR1cmVVcGRhdGVzKQogICAgICAgICAgICAgICAgIGxheWVyVHJlZUhvc3QoKS0+ZGVsZXRl
VGV4dHVyZUFmdGVyQ29tbWl0KHRpbGUtPm1hbmFnZWRUZXh0dXJlKCktPnN0ZWFsKCkpOwogCi0g
ICAgICAgICAgICBpZiAoIXRpbGUtPm1hbmFnZWRUZXh0dXJlKCktPmlzVmFsaWQobV90aWxlci0+
dGlsZVNpemUoKSwgbV90ZXh0dXJlRm9ybWF0KSkKLSAgICAgICAgICAgICAgICB0aWxlLT5tX2Rp
cnR5UmVjdCA9IG1fdGlsZXItPnRpbGVSZWN0KHRpbGUpOworICAgICAgICAgICAgaWYgKCF0aWxl
LT5tYW5hZ2VkVGV4dHVyZSgpLT5pc1ZhbGlkKG1fdGlsZXItPnRpbGVTaXplKCksIG1fdGV4dHVy
ZUZvcm1hdCkpIHsKKyAgICAgICAgICAgICAgICBJbnRSZWN0IGZpeGVkU2l6ZVRpbGVSZWN0V2l0
aEJvcmRlcnMgPSBtX3RpbGVyLT50aWxlUmVjdCh0aWxlKTsKKyAgICAgICAgICAgICAgICB0aWxl
LT5tX2RpcnR5UmVjdCA9IGZpeGVkU2l6ZVRpbGVSZWN0V2l0aEJvcmRlcnM7CisgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgIGlmICghdGlsZS0+bWFuYWdlZFRleHR1cmUoKS0+cmVzZXJ2ZSht
X3RpbGVyLT50aWxlU2l6ZSgpLCBtX3RleHR1cmVGb3JtYXQpKSB7CiAgICAgICAgICAgICAgICAg
bV9za2lwc0lkbGVQYWludCA9IHRydWU7CkBAIC00NDEsNyArNDY2LDcgQEAgdm9pZCBUaWxlZExh
eWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wgaWRsZSwgaW50IGxlZnQsIGlu
dCB0b3AsIGludAogICAgICAgICAgICAgaWYgKHRpbGVQYWludGVkT3BhcXVlUmVjdCAhPSB0aWxl
UGFpbnRlZFJlY3QgfHwgIXRpbGUtPm1fb3BhcXVlUmVjdC5jb250YWlucyh0aWxlUGFpbnRlZE9w
YXF1ZVJlY3QpKQogICAgICAgICAgICAgICAgIHRpbGUtPm1fb3BhcXVlUmVjdCA9IHRpbGVQYWlu
dGVkT3BhcXVlUmVjdDsKIAotICAgICAgICAgICAgLy8gVXNlIG1fdXBkYXRlUmVjdCBhcyBjb3B5
QW5kQ2xlYXJEaXJ0eSBhYm92ZSBtb3ZlZCB0aGUgZXhpc3RpbmcgZGlydHkgcmVjdCB0byBtX3Vw
ZGF0ZVJlY3QuCisgICAgICAgICAgICAvLyBVc2UgbV91cGRhdGVSZWN0IGFzIGNvcHlBbmRDbGVh
ckRpcnR5IGFib3ZlIG1vdmVkIHRoZSBleGlzdGluZyBkaXJ0eSByZWN0IHRvIG1fdXBkYXRlUmVj
dCBpZiB0aGUgdGlsZSBpc24ndCBjdWxsZWQuCiAgICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBk
aXJ0eVJlY3QgPSB0aWxlLT5tX3VwZGF0ZVJlY3Q7CiAgICAgICAgICAgICBpZiAoZGlydHlSZWN0
LmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTQ5Niw3ICs1MjEsNyBA
QCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6YWRkU2VsZlRvT2NjbHVkZWRSZWdpb24oUmVnaW9u
JiBvY2NsdWRlZFRhcmdldFNwYWNlKQogICAgIH0KIH0KIAotdm9pZCBUaWxlZExheWVyQ2hyb21p
dW06OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpCit2b2lkIFRpbGVk
TGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwg
Y29uc3QgUmVnaW9uJiBvY2NsdWRlZFRhcmdldFNwYWNlKQogewogICAgIG1fc2tpcHNEcmF3ID0g
ZmFsc2U7CiAgICAgbV9za2lwc0lkbGVQYWludCA9IGZhbHNlOwpAQCAtNTExLDEwICs1MzYsMTAg
QEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0
JiBsYXllclJlY3QpCiAgICAgaW50IGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbTsKICAgICBtX3Rp
bGVyLT5sYXllclJlY3RUb1RpbGVJbmRpY2VzKGxheWVyUmVjdCwgbGVmdCwgdG9wLCByaWdodCwg
Ym90dG9tKTsKIAotICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKGZhbHNlLCBsZWZ0LCB0b3AsIHJp
Z2h0LCBib3R0b20pOworICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKGZhbHNlLCBsZWZ0LCB0b3As
IHJpZ2h0LCBib3R0b20sIG9jY2x1ZGVkVGFyZ2V0U3BhY2UpOwogfQogCi12b2lkIFRpbGVkTGF5
ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWRsZShjb25zdCBJbnRSZWN0JiBsYXllclJlY3Qp
Cit2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWRsZShjb25zdCBJbnRS
ZWN0JiBsYXllclJlY3QsIGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRUYXJnZXRTcGFjZSkKIHsKICAg
ICAvLyBBYm9ydCBpZiB3ZSBoYXZlIGFscmVhZHkgcHJlcGFyZWQgYSBwYWludCBvciBydW4gb3V0
IG9mIG1lbW9yeS4KICAgICBpZiAobV9za2lwc0lkbGVQYWludCB8fCAhbV9wYWludFJlY3QuaXNF
bXB0eSgpKQpAQCAtNTMyLDMzICs1NTcsMzkgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnBy
ZXBhcmVUb1VwZGF0ZUlkbGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQogICAgIEludFJlY3Qg
aWRsZVBhaW50TGF5ZXJSZWN0ID0gaWRsZVBhaW50UmVjdChsYXllclJlY3QpOwogICAgIHByb3Rl
Y3RUaWxlVGV4dHVyZXMoaWRsZVBhaW50TGF5ZXJSZWN0KTsKIAotICAgIC8vIEV4cGFuZCBvdXR3
YXJkcyB1bnRpbCB3ZSBmaW5kIGEgZGlydHkgcm93IG9yIGNvbHVtbiB0byB1cGRhdGUuCiAgICAg
aW50IGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbTsKICAgICBtX3RpbGVyLT5sYXllclJlY3RUb1Rp
bGVJbmRpY2VzKGxheWVyUmVjdCwgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tKTsKKworICAgIC8v
IFByZXBhaW50IGFueXRoaW5nIHRoYXQgd2FzIG9jY2x1ZGVkIGJ1dCBpbnNpZGUgdGhlIGxheWVy
J3MgdmlzaWJsZSByZWdpb24uCisgICAgcHJlcGFyZVRvVXBkYXRlVGlsZXModHJ1ZSwgbGVmdCwg
Ym90dG9tLCByaWdodCwgYm90dG9tLCBvY2NsdWRlZFRhcmdldFNwYWNlKTsKKyAgICBpZiAoIW1f
cGFpbnRSZWN0LmlzRW1wdHkoKSB8fCBtX3NraXBzSWRsZVBhaW50KQorICAgICAgICByZXR1cm47
CisKKyAgICAvLyBFeHBhbmQgb3V0d2FyZHMgdW50aWwgd2UgZmluZCBhIGRpcnR5IHJvdyBvciBj
b2x1bW4gdG8gdXBkYXRlLgogICAgIGludCBwcmVwYWludExlZnQsIHByZXBhaW50VG9wLCBwcmVw
YWludFJpZ2h0LCBwcmVwYWludEJvdHRvbTsKICAgICBtX3RpbGVyLT5sYXllclJlY3RUb1RpbGVJ
bmRpY2VzKGlkbGVQYWludExheWVyUmVjdCwgcHJlcGFpbnRMZWZ0LCBwcmVwYWludFRvcCwgcHJl
cGFpbnRSaWdodCwgcHJlcGFpbnRCb3R0b20pOwogICAgIHdoaWxlICghbV9za2lwc0lkbGVQYWlu
dCAmJiAobGVmdCA+IHByZXBhaW50TGVmdCB8fCB0b3AgPiBwcmVwYWludFRvcCB8fCByaWdodCA8
IHByZXBhaW50UmlnaHQgfHwgYm90dG9tIDwgcHJlcGFpbnRCb3R0b20pKSB7CiAgICAgICAgIGlm
IChib3R0b20gPCBwcmVwYWludEJvdHRvbSkgewogICAgICAgICAgICAgKytib3R0b207Ci0gICAg
ICAgICAgICBwcmVwYXJlVG9VcGRhdGVUaWxlcyh0cnVlLCBsZWZ0LCBib3R0b20sIHJpZ2h0LCBi
b3R0b20pOworICAgICAgICAgICAgcHJlcGFyZVRvVXBkYXRlVGlsZXModHJ1ZSwgbGVmdCwgYm90
dG9tLCByaWdodCwgYm90dG9tLCBvY2NsdWRlZFRhcmdldFNwYWNlKTsKICAgICAgICAgICAgIGlm
ICghbV9wYWludFJlY3QuaXNFbXB0eSgpIHx8IG1fc2tpcHNJZGxlUGFpbnQpCiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHRvcCA+IHByZXBhaW50VG9wKSB7
CiAgICAgICAgICAgICAtLXRvcDsKLSAgICAgICAgICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKHRy
dWUsIGxlZnQsIHRvcCwgcmlnaHQsIHRvcCk7CisgICAgICAgICAgICBwcmVwYXJlVG9VcGRhdGVU
aWxlcyh0cnVlLCBsZWZ0LCB0b3AsIHJpZ2h0LCB0b3AsIG9jY2x1ZGVkVGFyZ2V0U3BhY2UpOwog
ICAgICAgICAgICAgaWYgKCFtX3BhaW50UmVjdC5pc0VtcHR5KCkgfHwgbV9za2lwc0lkbGVQYWlu
dCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAobGVmdCA+
IHByZXBhaW50TGVmdCkgewogICAgICAgICAgICAgLS1sZWZ0OwotICAgICAgICAgICAgcHJlcGFy
ZVRvVXBkYXRlVGlsZXModHJ1ZSwgbGVmdCwgdG9wLCBsZWZ0LCBib3R0b20pOworICAgICAgICAg
ICAgcHJlcGFyZVRvVXBkYXRlVGlsZXModHJ1ZSwgbGVmdCwgdG9wLCBsZWZ0LCBib3R0b20sIG9j
Y2x1ZGVkVGFyZ2V0U3BhY2UpOwogICAgICAgICAgICAgaWYgKCFtX3BhaW50UmVjdC5pc0VtcHR5
KCkgfHwgbV9za2lwc0lkbGVQYWludCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICBpZiAocmlnaHQgPCBwcmVwYWludFJpZ2h0KSB7CiAgICAgICAgICAgICArK3Jp
Z2h0OwotICAgICAgICAgICAgcHJlcGFyZVRvVXBkYXRlVGlsZXModHJ1ZSwgcmlnaHQsIHRvcCwg
cmlnaHQsIGJvdHRvbSk7CisgICAgICAgICAgICBwcmVwYXJlVG9VcGRhdGVUaWxlcyh0cnVlLCBy
aWdodCwgdG9wLCByaWdodCwgYm90dG9tLCBvY2NsdWRlZFRhcmdldFNwYWNlKTsKICAgICAgICAg
ICAgIGlmICghbV9wYWludFJlY3QuaXNFbXB0eSgpIHx8IG1fc2tpcHNJZGxlUGFpbnQpCiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgK
aW5kZXggYmU0MDI4OGNkNmQwMzEzMTk5MmIwNGY2YmQyNWM4YWY1ZWE3MWUyMC4uMjYxZmIzMDBl
YTA3NzBkNjYwYWFlODQ4Y2ZlMjNjNTBlOTdlOWU2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9t
aXVtLmgKQEAgLTgzLDEwICs4MywxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBpbnZhbGlkYXRl
UmVjdChjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpOwogCiAgICAgLy8gUHJlcGFyZSBkYXRhIG5l
ZWRlZCB0byB1cGRhdGUgdGV4dHVyZXMgdGhhdCBpbnRlcnNlY3Qgd2l0aCBsYXllclJlY3QuCi0g
ICAgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KTsKKyAgICB2
b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBsYXllclJlY3QsIGNvbnN0IFJlZ2lv
biYgb2NjbHVkZWRUYXJnZXRTcGFjZSk7CiAKICAgICAvLyBTYW1lIGFzIGFib3ZlLCBidXQgdGhp
cyB3aWxsIHRyeSB0byBwYWludCBhZGRpdGlvbmFsIHN1cnJvdW5kaW5nIGNvbnRlbnQgaWYgaWRs
ZS4KLSAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZUlkbGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0
KTsKKyAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZUlkbGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0
LCBjb25zdCBSZWdpb24mIG9jY2x1ZGVkVGFyZ2V0U3BhY2UpOwogCiAgICAgLy8gQWZ0ZXIgcHJl
cGFyaW5nIGFuIHVwZGF0ZSwgcmV0dXJucyB0cnVlIGlmIG1vcmUgcHJlLXBhaW50aW5nIGlzIG5l
ZWRlZC4KICAgICBib29sIG5lZWRzSWRsZVBhaW50KGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCk7
CkBAIC0xMDUsNyArMTA1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZVRpbGVySWZOZWVk
ZWQoKTsKICAgICB2b2lkIHNldFRpbGluZ09wdGlvbihUaWxpbmdPcHRpb24pOwogCi0gICAgdm9p
ZCBwcmVwYXJlVG9VcGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQg
cmlnaHQsIGludCBib3R0b20pOworICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBp
ZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50IHJpZ2h0LCBpbnQgYm90dG9tLCBjb25zdCBSZWdp
b24mIG9jY2x1ZGVkVGFyZ2V0U3BhY2UpOwogICAgIEludFJlY3QgaWRsZVBhaW50UmVjdChjb25z
dCBJbnRSZWN0JiB2aXNpYmxlTGF5ZXJSZWN0KTsKIAogICAgIFVwZGF0YWJsZVRpbGUqIHRpbGVB
dChpbnQsIGludCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRleCBk
MjVjYjMwZTVkMGYwZWU4MTgzYTEwM2E1NWRlMDNjM2JlZDE3ZDM1Li43YmU0ZTlmOThlY2UwM2Mx
N2YzNzA0YWI1M2Q3YTNjNmRiZGQ3ZWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5j
cHAKQEAgLTQwMywxNCArNDAzLDE0IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXll
cnMoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKQogfQogCiAvLyBzdGF0aWMKLXZvaWQgQ0NMYXll
clRyZWVIb3N0OjpwYWludENvbnRlbnRzSWZEaXJ0eShMYXllckNocm9taXVtKiBsYXllciwgUGFp
bnRUeXBlIHBhaW50VHlwZSkKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludENvbnRlbnRzSWZE
aXJ0eShMYXllckNocm9taXVtKiBsYXllciwgUGFpbnRUeXBlIHBhaW50VHlwZSwgY29uc3QgUmVn
aW9uJiBvY2NsdWRlZFRhcmdldFNwYWNlKQogewogICAgIEFTU0VSVChsYXllcik7CiAgICAgQVNT
RVJUKFBhaW50VmlzaWJsZSA9PSBwYWludFR5cGUgfHwgUGFpbnRJZGxlID09IHBhaW50VHlwZSk7
CiAgICAgaWYgKFBhaW50VmlzaWJsZSA9PSBwYWludFR5cGUpCi0gICAgICAgIGxheWVyLT5wYWlu
dENvbnRlbnRzSWZEaXJ0eSgpOworICAgICAgICBsYXllci0+cGFpbnRDb250ZW50c0lmRGlydHko
b2NjbHVkZWRUYXJnZXRTcGFjZSk7CiAgICAgZWxzZQotICAgICAgICBsYXllci0+aWRsZVBhaW50
Q29udGVudHNJZkRpcnR5KCk7CisgICAgICAgIGxheWVyLT5pZGxlUGFpbnRDb250ZW50c0lmRGly
dHkob2NjbHVkZWRUYXJnZXRTcGFjZSk7CiB9CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWlu
dE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9taXVtKiByZW5kZXJTdXJm
YWNlTGF5ZXIsIFBhaW50VHlwZSBwYWludFR5cGUpCkBAIC00MTgsMTkgKzQxOCwyMCBAQCB2b2lk
IENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UoTGF5
ZXJDaHJvbWl1bSogcmVuZGVyUwogICAgIC8vIE5vdGU6IE1hc2tzIGFuZCByZXBsaWNhcyBvbmx5
IGV4aXN0IGZvciBsYXllcnMgdGhhdCBvd24gcmVuZGVyIHN1cmZhY2VzLiBJZiB3ZSByZWFjaCB0
aGlzIHBvaW50CiAgICAgLy8gaW4gY29kZSwgd2UgYWxyZWFkeSBrbm93IHRoYXQgYXQgbGVhc3Qg
c29tZXRoaW5nIHdpbGwgYmUgZHJhd24gaW50byB0aGlzIHJlbmRlciBzdXJmYWNlLCBzbyB0aGUK
ICAgICAvLyBtYXNrIGFuZCByZXBsaWNhIHNob3VsZCBiZSBwYWludGVkLgorICAgIFJlZ2lvbiBu
b09jY2x1c2lvbjsKIAogICAgIGlmIChyZW5kZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXllcigpKSB7
CiAgICAgICAgIHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVyKCktPnNldFZpc2libGVMYXll
clJlY3QoSW50UmVjdChJbnRQb2ludCgpLCByZW5kZXJTdXJmYWNlTGF5ZXItPmNvbnRlbnRCb3Vu
ZHMoKSkpOwotICAgICAgICBwYWludENvbnRlbnRzSWZEaXJ0eShyZW5kZXJTdXJmYWNlTGF5ZXIt
Pm1hc2tMYXllcigpLCBwYWludFR5cGUpOworICAgICAgICBwYWludENvbnRlbnRzSWZEaXJ0eShy
ZW5kZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXllcigpLCBwYWludFR5cGUsIG5vT2NjbHVzaW9uKTsK
ICAgICB9CiAKICAgICBMYXllckNocm9taXVtKiByZXBsaWNhTGF5ZXIgPSByZW5kZXJTdXJmYWNl
TGF5ZXItPnJlcGxpY2FMYXllcigpOwogICAgIGlmIChyZXBsaWNhTGF5ZXIpIHsKLSAgICAgICAg
cGFpbnRDb250ZW50c0lmRGlydHkocmVwbGljYUxheWVyLCBwYWludFR5cGUpOworICAgICAgICBw
YWludENvbnRlbnRzSWZEaXJ0eShyZXBsaWNhTGF5ZXIsIHBhaW50VHlwZSwgbm9PY2NsdXNpb24p
OwogCiAgICAgICAgIGlmIChyZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpKSB7CiAgICAgICAgICAg
ICByZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3Qo
SW50UG9pbnQoKSwgcmVwbGljYUxheWVyLT5tYXNrTGF5ZXIoKS0+Y29udGVudEJvdW5kcygpKSk7
Ci0gICAgICAgICAgICBwYWludENvbnRlbnRzSWZEaXJ0eShyZXBsaWNhTGF5ZXItPm1hc2tMYXll
cigpLCBwYWludFR5cGUpOworICAgICAgICAgICAgcGFpbnRDb250ZW50c0lmRGlydHkocmVwbGlj
YUxheWVyLT5tYXNrTGF5ZXIoKSwgcGFpbnRUeXBlLCBub09jY2x1c2lvbik7CiAgICAgICAgIH0K
ICAgICB9CiB9CkBAIC00NjMsNyArNDY0LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50
TGF5ZXJDb250ZW50cyhjb25zdCBMYXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3QKICAg
ICAgICAgICAgIHBhaW50TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKCppdCwgcGFpbnRU
eXBlKTsKICAgICAgICAgfSBlbHNlIGlmIChpdC5yZXByZXNlbnRzSXRzZWxmKCkpIHsKICAgICAg
ICAgICAgIEFTU0VSVCghaXQtPmJvdW5kcygpLmlzRW1wdHkoKSk7Ci0gICAgICAgICAgICBwYWlu
dENvbnRlbnRzSWZEaXJ0eSgqaXQsIHBhaW50VHlwZSk7CisgICAgICAgICAgICBwYWludENvbnRl
bnRzSWZEaXJ0eSgqaXQsIHBhaW50VHlwZSwgaXQtPnRhcmdldFJlbmRlclN1cmZhY2UoKS0+b2Nj
bHVkZWRSZWdpb24oKSk7CiAKICAgICAgICAgICAgIC8vIEFkZCB0aGUgbGF5ZXIncyBvY2NsdXNp
b24gdG8gdGhlIHJlZ2lvbiBmb3IgdGhlIG5leHQgbGF5ZXIgdG8gYmUgYWJsZSB0byB1c2UgZm9y
IGN1bGxpbmcuCiAgICAgICAgICAgICBpdC0+dGFyZ2V0UmVuZGVyU3VyZmFjZSgpLT5hZGRMYXll
clRvT2NjbHVkZWRSZWdpb24oKml0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKaW5kZXgg
ZjdjNDgzYzQyYWI1Y2FhM2RiYTYwMmYwYTBkMWQzOTc1MWY4MDVhOC4uMjAxMTRmZjJlY2IxZTBl
ZjBjMjgyY2FhMzVmOThlYjY5YmU3OGIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgK
QEAgLTIwNiw3ICsyMDYsNyBAQCBwcml2YXRlOgogICAgIHR5cGVkZWYgVmVjdG9yPE93blB0cjxN
YW5hZ2VkVGV4dHVyZT4gPiBUZXh0dXJlTGlzdDsKIAogICAgIGVudW0gUGFpbnRUeXBlIHsgUGFp
bnRWaXNpYmxlLCBQYWludElkbGUgfTsKLSAgICBzdGF0aWMgdm9pZCBwYWludENvbnRlbnRzSWZE
aXJ0eShMYXllckNocm9taXVtKiwgUGFpbnRUeXBlKTsKKyAgICBzdGF0aWMgdm9pZCBwYWludENv
bnRlbnRzSWZEaXJ0eShMYXllckNocm9taXVtKiwgUGFpbnRUeXBlLCBjb25zdCBSZWdpb24mIG9j
Y2x1ZGVkVGFyZ2V0U3BhY2UpOwogICAgIHZvaWQgcGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IExh
eWVyTGlzdCYsIFBhaW50VHlwZSk7CiAgICAgdm9pZCBwYWludE1hc2tBbmRSZXBsaWNhRm9yUmVu
ZGVyU3VyZmFjZShMYXllckNocm9taXVtKiwgUGFpbnRUeXBlKTsKICAgICB2b2lkIGNsZWFyUGFp
bnRPY2NsdWRlZFJlZ2lvbnMoY29uc3QgTGF5ZXJMaXN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAppbmRleCAyODBlM2Fm
M2YxYzJiODQ0M2M3MmRmNTNlMTQxM2NkODdhMDljOWI2Li5iODE1MjEyNDliMTM0YTQzYTdhYTY0
YTM1OTMwN2Q0ODRhMDFjNDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKQEAgLTk5NSwxNSArOTk1LDE1IEBAIHB1Ymxp
YzoKICAgICBpbnQgdXBkYXRlQ291bnQoKSB7IHJldHVybiBtX3VwZGF0ZUNvdW50OyB9CiAgICAg
dm9pZCByZXNldFVwZGF0ZUNvdW50KCkgeyBtX3VwZGF0ZUNvdW50ID0gMDsgfQogCi0gICAgdmly
dHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KCkKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRD
b250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uJiBvY2NsdWRlZCkKICAgICB7Ci0gICAgICAgIENv
bnRlbnRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSgpOworICAgICAgICBDb250
ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkob2NjbHVkZWQpOwogICAgICAg
ICBtX3BhaW50Q29udGVudHNDb3VudCsrOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBpZGxl
UGFpbnRDb250ZW50c0lmRGlydHkoKQorICAgIHZpcnR1YWwgdm9pZCBpZGxlUGFpbnRDb250ZW50
c0lmRGlydHkoY29uc3QgUmVnaW9uJiBvY2NsdWRlZCkKICAgICB7Ci0gICAgICAgIENvbnRlbnRM
YXllckNocm9taXVtOjppZGxlUGFpbnRDb250ZW50c0lmRGlydHkoKTsKKyAgICAgICAgQ29udGVu
dExheWVyQ2hyb21pdW06OmlkbGVQYWludENvbnRlbnRzSWZEaXJ0eShvY2NsdWRlZCk7CiAgICAg
ICAgIG1faWRsZVBhaW50Q29udGVudHNDb3VudCsrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVtVGVzdC5j
cHAKaW5kZXggZjBiNWM0MTFiNjU2YWVkZTc1OTU3MTBlNGQ4Y2ZkN2QyNGRiNTMzYy4uMTQ0OGNl
YWE3ZTI1Zjk0OGQxZjlhNmM2NGI1YjlmYjE1MjViODUxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3QuY3Bw
CkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ0NTY2hlZHVsZXJUZXN0Q29tbW9uLmgiCiAj
aW5jbHVkZSAiRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlLmgiCisjaW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5jbHVkZSAiVGV4dHVy
ZU1hbmFnZXIuaCIKICNpbmNsdWRlICJjYy9DQ0NhbnZhc0xheWVySW1wbC5oIgogI2luY2x1ZGUg
ImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIKQEAgLTEzNiw5ICsxMzcsMTEgQEAgcHJvdGVjdGVk
OgogICAgICAgICBjYW52YXMtPnNldEJvdW5kcyhJbnRTaXplKDYwMCwgMzAwKSk7CiAgICAgICAg
IGNhbnZhcy0+c2V0VGV4dHVyZUlkKGJhY2tUZXh0dXJlSWQpOwogCisgICAgICAgIFJlZ2lvbiBv
Y2NsdWRlZDsKKwogICAgICAgICBjYW52YXMtPmNvbnRlbnRDaGFuZ2VkKCk7CiAgICAgICAgIEVY
UEVDVF9UUlVFKGNhbnZhcy0+bmVlZHNEaXNwbGF5KCkpOwotICAgICAgICBjYW52YXMtPnBhaW50
Q29udGVudHNJZkRpcnR5KCk7CisgICAgICAgIGNhbnZhcy0+cGFpbnRDb250ZW50c0lmRGlydHko
b2NjbHVkZWQpOwogICAgICAgICBFWFBFQ1RfRkFMU0UoY2FudmFzLT5uZWVkc0Rpc3BsYXkoKSk7
CiAgICAgICAgIHsKICAgICAgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBzY29wZWRJ
bXBsVGhyZWFkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxl
ZExheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGls
ZWRMYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggZTEyYjNlODhiNGRmOTg5YmNhYWZmOTBkMGFk
MTgzOTA4MGI4ZjhlYS4uMDQzY2UyYTkwY2Y2YTM3NmFhNjc1OGQ3YzNiMDM3NmM2ZDNhMDU0MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21p
dW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QuY3BwCkBAIC02MCwzNCArNjAsNDMgQEAgY2xhc3MgRmFrZUxheWVyVGV4dHVy
ZVVwZGF0ZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlciB7CiBwdWJsaWM6CiAgICAgY2xh
c3MgVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIFRleHR1cmUoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVy
ZSkgOiBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKHRleHR1cmUpIHsgfQorICAgICAgICBU
ZXh0dXJlKFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUsIEZha2VMYXllclRleHR1
cmVVcGRhdGVyKiB1cGRhdGVyKSA6IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUodGV4dHVy
ZSksIG1fdXBkYXRlcih1cGRhdGVyKSB7IH0KICAgICAgICAgdmlydHVhbCB+VGV4dHVyZSgpIHsg
fQogCiAgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwg
VGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRSZWN0JikgeyB9Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlUmVjdChjb25zdCBJbnRSZWN0JikgeyArK21fdXBk
YXRlci0+bV9wcmVwYXJlUmVjdENvdW50OyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBGYWtl
TGF5ZXJUZXh0dXJlVXBkYXRlciogbV91cGRhdGVyOwogICAgIH07CiAKLSAgICBGYWtlTGF5ZXJU
ZXh0dXJlVXBkYXRlcigpIDogbV9wcmVwYXJlQ291bnQoMCkgeyB9CisgICAgRmFrZUxheWVyVGV4
dHVyZVVwZGF0ZXIoKSA6IG1fcHJlcGFyZUNvdW50KDApLCBtX3ByZXBhcmVSZWN0Q291bnQoMCkg
eyB9CiAgICAgdmlydHVhbCB+RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKSB7IH0KIAogICAgIC8v
IFNldHMgdGhlIHJlY3QgdG8gaW52YWxpZGF0ZSBkdXJpbmcgdGhlIG5leHQgY2FsbCB0byBwcmVw
YXJlVG9VcGRhdGUoKS4gQWZ0ZXIgdGhlIG5leHQKICAgICAvLyBjYWxsIHRvIHByZXBhcmVUb1Vw
ZGF0ZSgpIHRoZSByZWN0IGlzIHJlc2V0LgogICAgIHZvaWQgc2V0UmVjdFRvSW52YWxpZGF0ZShj
b25zdCBJbnRSZWN0JiwgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSopOwogCisgICAgdm9pZCBzZXRP
cGFxdWVQYWludFJlY3QoY29uc3QgSW50UmVjdCYgb3BhcXVlUGFpbnRSZWN0KSB7IG1fb3BhcXVl
UGFpbnRSZWN0ID0gb3BhcXVlUGFpbnRSZWN0OyB9CisKICAgICAvLyBOdW1iZXIgb2YgdGltZXMg
cHJlcGFyZVRvVXBkYXRlIGhhcyBiZWVuIGludm9rZWQuCiAgICAgaW50IHByZXBhcmVDb3VudCgp
IGNvbnN0IHsgcmV0dXJuIG1fcHJlcGFyZUNvdW50OyB9CiAgICAgdm9pZCBjbGVhclByZXBhcmVD
b3VudCgpIHsgbV9wcmVwYXJlQ291bnQgPSAwOyB9CiAKLSAgICB2b2lkIHNldE9wYXF1ZVBhaW50
UmVjdChjb25zdCBJbnRSZWN0JiBvcGFxdWVQYWludFJlY3QpIHsgbV9vcGFxdWVQYWludFJlY3Qg
PSBvcGFxdWVQYWludFJlY3Q7IH0KKyAgICAvLyBOdW1iZXIgb2YgdGltZXMgcHJlcGFyZVJlY3Qg
aGFzIGJlZW4gaW52b2tlZCBvbiBhIHRleHR1cmUuCisgICAgaW50IHByZXBhcmVSZWN0Q291bnQo
KSBjb25zdCB7IHJldHVybiBtX3ByZXBhcmVSZWN0Q291bnQ7IH0KKyAgICB2b2lkIGNsZWFyUHJl
cGFyZVJlY3RDb3VudCgpIHsgbV9wcmVwYXJlUmVjdENvdW50ID0gMDsgfQogCiAgICAgLy8gTGFz
dCByZWN0IHBhc3NlZCB0byBwcmVwYXJlVG9VcGRhdGUoKS4KICAgICBjb25zdCBJbnRSZWN0JiBs
YXN0VXBkYXRlUmVjdCgpICBjb25zdCB7IHJldHVybiBtX2xhc3RVcGRhdGVSZWN0OyB9CiAKLSAg
ICB2aXJ0dWFsIFBhc3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gY3JlYXRl
VGV4dHVyZShUZXh0dXJlTWFuYWdlciogbWFuYWdlcikgeyByZXR1cm4gYWRvcHRQdHIobmV3IFRl
eHR1cmUoTWFuYWdlZFRleHR1cmU6OmNyZWF0ZShtYW5hZ2VyKSkpOyB9CisgICAgdmlydHVhbCBQ
YXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4
dHVyZU1hbmFnZXIqIG1hbmFnZXIpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBUZXh0dXJlKE1hbmFn
ZWRUZXh0dXJlOjpjcmVhdGUobWFuYWdlciksIHRoaXMpKTsgfQogICAgIHZpcnR1YWwgU2FtcGxl
ZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSkgeyByZXR1cm4gU2FtcGxl
ZFRleGVsRm9ybWF0UkdCQTsgfQogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29u
c3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmLCBpbnQsIGZsb2F0LCBJbnRS
ZWN0KiByZXN1bHRpbmdPcGFxdWVSZWN0KTsKIAogcHJpdmF0ZToKICAgICBpbnQgbV9wcmVwYXJl
Q291bnQ7CisgICAgaW50IG1fcHJlcGFyZVJlY3RDb3VudDsKICAgICBJbnRSZWN0IG1fcmVjdFRv
SW52YWxpZGF0ZTsKICAgICBJbnRSZWN0IG1fbGFzdFVwZGF0ZVJlY3Q7CiAgICAgSW50UmVjdCBt
X29wYXF1ZVBhaW50UmVjdDsKQEAgLTEyNSwxNCArMTM0LDE0IEBAIHB1YmxpYzoKICAgICAgICAg
VGlsZWRMYXllckNocm9taXVtOjppbnZhbGlkYXRlUmVjdChyZWN0KTsKICAgICB9CiAKLSAgICB2
b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiByZWN0KQorICAgIHZvaWQgcHJlcGFy
ZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWQpCiAg
ICAgewotICAgICAgICBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZShyZWN0KTsK
KyAgICAgICAgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGUocmVjdCwgb2NjbHVk
ZWQpOwogICAgIH0KIAotICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlSWRsZShjb25zdCBJbnRSZWN0
JiByZWN0KQorICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlSWRsZShjb25zdCBJbnRSZWN0JiByZWN0
LCBjb25zdCBSZWdpb24mIG9jY2x1ZGVkKQogICAgIHsKLSAgICAgICAgVGlsZWRMYXllckNocm9t
aXVtOjpwcmVwYXJlVG9VcGRhdGVJZGxlKHJlY3QpOworICAgICAgICBUaWxlZExheWVyQ2hyb21p
dW06OnByZXBhcmVUb1VwZGF0ZUlkbGUocmVjdCwgb2NjbHVkZWQpOwogICAgIH0KIAogICAgIGJv
b2wgbmVlZHNJZGxlUGFpbnQoY29uc3QgSW50UmVjdCYgcmVjdCkKQEAgLTE0OSw5ICsxNTgsOSBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFRleHR1cmVNYW5hZ2VyKiB0ZXh0dXJlTWFuYWdlcigp
IGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZU1hbmFnZXI7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBw
YWludENvbnRlbnRzSWZEaXJ0eSgpCisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRp
cnR5KGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWQpCiAgICAgewotICAgICAgICBwcmVwYXJlVG9VcGRh
dGUodmlzaWJsZUxheWVyUmVjdCgpKTsKKyAgICAgICAgcHJlcGFyZVRvVXBkYXRlKHZpc2libGVM
YXllclJlY3QoKSwgb2NjbHVkZWQpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTIwNiw2ICsyMTUs
NyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hEaXJ0eVRpbGVzKQogICAgIFJl
ZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGls
ZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgRGVidWdTY29wZWRT
ZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgUmVmUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBs
PiBsYXllckltcGwgPSBhZG9wdFJlZihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpOworICAg
IFJlZ2lvbiBvY2NsdWRlZDsKIAogICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxv
Y2F0b3I7CiAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsK
QEAgLTIxMyw3ICsyMjMsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hEaXJ0
eVRpbGVzKQogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMCwgc28gdGhpcyBpbnZhbGlk
YXRlcyBhbmQgdGhlbiBwYWludHMgdHdvIHRpbGVzLgogICAgIGxheWVyLT5zZXRCb3VuZHMoSW50
U2l6ZSgxMDAsIDIwMCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAs
IDEwMCwgMjAwKSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEw
MCwgMjAwKSk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwg
MjAwKSwgb2NjbHVkZWQpOwogICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAs
IHVwZGF0ZXIpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7
CiAKQEAgLTIyNiw3ICsyMzYsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hE
aXJ0eVRpbGVzKQogICAgIC8vIEludmFsaWRhdGVzIGJvdGggdGlsZXMuLi4KICAgICBsYXllci0+
aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogICAgIC8vIC4uLi5idXQg
dGhlbiBvbmx5IHVwZGF0ZSBvbmUgb2YgdGhlbS4KLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRl
KEludFJlY3QoMCwgMCwgMTAwLCAxMDApKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKElu
dFJlY3QoMCwgMCwgMTAwLCAxMDApLCBvY2NsdWRlZCk7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbXBv
c2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8o
bGF5ZXJJbXBsLmdldCgpKTsKIApAQCAtMjQ5LDEyICsyNTksMTMgQEAgVEVTVChUaWxlZExheWVy
Q2hyb21pdW1UZXN0LCBwdXNoSWRsZVBhaW50VGlsZXMpCiAgICAgSW50U2l6ZSBjb250ZW50Qm91
bmRzKDUwMCwgNTAwKTsKICAgICBJbnRSZWN0IGNvbnRlbnRSZWN0KEludFBvaW50Ojp6ZXJvKCks
IGNvbnRlbnRCb3VuZHMpOwogICAgIEludFJlY3QgdmlzaWJsZVJlY3QoMjAwLCAyMDAsIDEwMCwg
MTAwKTsKKyAgICBSZWdpb24gb2NjbHVkZWQ7CiAKICAgICAvLyBUaGlzIGludmFsaWRhdGVzIDI1
IHRpbGVzIGFuZCB0aGVuIHBhaW50cyBvbmUgdmlzaWJsZSB0aWxlLgogICAgIGxheWVyLT5zZXRC
b3VuZHMoY29udGVudEJvdW5kcyk7CiAgICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3Qodmlz
aWJsZVJlY3QpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChjb250ZW50UmVjdCk7Ci0gICAg
bGF5ZXItPnByZXBhcmVUb1VwZGF0ZSh2aXNpYmxlUmVjdCk7CisgICAgbGF5ZXItPnByZXBhcmVU
b1VwZGF0ZSh2aXNpYmxlUmVjdCwgb2NjbHVkZWQpOwogCiAgICAgLy8gV2Ugc2hvdWxkIG5lZWQg
aWRsZS1wYWludGluZyBmb3IgM3gzIHRpbGVzIGluIHRoZSBjZW50ZXIuCiAgICAgRVhQRUNUX1RS
VUUobGF5ZXItPm5lZWRzSWRsZVBhaW50KHZpc2libGVSZWN0KSk7CkBAIC0yNjksOSArMjgwLDkg
QEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoSWRsZVBhaW50VGlsZXMpCiAKICAg
ICAvLyBGb3IgdGhlIG5leHQgZm91ciB1cGRhdGVzLCB3ZSBzaG91bGQgZGV0ZWN0IHdlIHN0aWxs
IG5lZWQgaWRsZSBwYWludGluZy4KICAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKykgewot
ICAgICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKHZpc2libGVSZWN0KTsKKyAgICAgICAgbGF5
ZXItPnByZXBhcmVUb1VwZGF0ZSh2aXNpYmxlUmVjdCwgb2NjbHVkZWQpOwogICAgICAgICBFWFBF
Q1RfVFJVRShsYXllci0+bmVlZHNJZGxlUGFpbnQodmlzaWJsZVJlY3QpKTsKLSAgICAgICAgbGF5
ZXItPnByZXBhcmVUb1VwZGF0ZUlkbGUodmlzaWJsZVJlY3QpOworICAgICAgICBsYXllci0+cHJl
cGFyZVRvVXBkYXRlSWRsZSh2aXNpYmxlUmVjdCwgb2NjbHVkZWQpOwogICAgICAgICBsYXllci0+
dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKICAgICAgICAgbGF5ZXItPnB1
c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKICAgICAgICAgdGV4dHVyZU1hbmFnZXIt
PnVucHJvdGVjdEFsbFRleHR1cmVzKCk7CkBAIC0yOTksNiArMzEwLDcgQEAgVEVTVChUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRPdXRPZk1lbW9yeSkKICAgICBJbnRTaXplIGNvbnRl
bnRCb3VuZHMoMzAwLCAzMDApOwogICAgIEludFJlY3QgY29udGVudFJlY3QoSW50UG9pbnQ6Onpl
cm8oKSwgY29udGVudEJvdW5kcyk7CiAgICAgSW50UmVjdCB2aXNpYmxlUmVjdCgxMDAsIDEwMCwg
MTAwLCAxMDApOworICAgIFJlZ2lvbiBvY2NsdWRlZDsKIAogICAgIC8vIFdlIGhhdmUgZW5vdWdo
IG1lbW9yeSBmb3Igb25seSB0aGUgdmlzaWJsZSByZWN0LCBzbyB3ZSB3aWxsIHJ1biBvdXQgb2Yg
bWVtb3J5IGluIGZpcnN0IGlkbGUgcGFpbnQuCiAgICAgaW50IG1lbW9yeUxpbWl0ID0gNCAqIDEw
MCAqIDEwMDsgLy8gMiB0aWxlcywgNCBieXRlcyBwZXIgcGl4ZWwuCkBAIC0zMTUsNyArMzI3LDcg
QEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRPdXRPZk1lbW9yeSkKICAg
ICBsYXllci0+c2V0Qm91bmRzKGNvbnRlbnRCb3VuZHMpOwogICAgIGxheWVyLT5zZXRWaXNpYmxl
TGF5ZXJSZWN0KHZpc2libGVSZWN0KTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoY29udGVu
dFJlY3QpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUodmlzaWJsZVJlY3QpOworICAgIGxh
eWVyLT5wcmVwYXJlVG9VcGRhdGUodmlzaWJsZVJlY3QsIG9jY2x1ZGVkKTsKIAogICAgIC8vIFdl
IHNob3VsZCBuZWVkIGlkbGUtcGFpbnRpbmcgZm9yIDN4MyB0aWxlcyBzdXJvdW5kaW5nIHZpc2li
bGUgdGlsZS4KICAgICBFWFBFQ1RfVFJVRShsYXllci0+bmVlZHNJZGxlUGFpbnQodmlzaWJsZVJl
Y3QpKTsKQEAgLTMyNyw4ICszMzksOCBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlk
bGVQYWludE91dE9mTWVtb3J5KQogICAgIEVYUEVDVF9UUlVFKGxheWVySW1wbC0+aGFzVGlsZUF0
KDEsIDEpKTsKIAogICAgIHRleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RBbGxUZXh0dXJlcygpOwot
ICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUodmlzaWJsZVJlY3QpOwotICAgIGxheWVyLT5wcmVw
YXJlVG9VcGRhdGVJZGxlKHZpc2libGVSZWN0KTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRl
KHZpc2libGVSZWN0LCBvY2NsdWRlZCk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZUlkbGUo
dmlzaWJsZVJlY3QsIG9jY2x1ZGVkKTsKIAogICAgIC8vIFdlIHNob3VsZG4ndCBzaWduYWwgd2Ug
bmVlZCBhbm90aGVyIGlkbGUgcGFpbnQgYWZ0ZXIgd2UgcnVuIG91dCBvZiBtZW1vcnkuCiAgICAg
RVhQRUNUX0ZBTFNFKGxheWVyLT5uZWVkc0lkbGVQYWludCh2aXNpYmxlUmVjdCkpOwpAQCAtMzQz
LDYgKzM1NSw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaW52YWxpZGF0ZUZyb21Q
cmVwYXJlKQogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0
UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAg
ICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgUmVmUHRyPEZha2VD
Q1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwgPSBhZG9wdFJlZihuZXcgRmFrZUNDVGlsZWRMYXll
ckltcGwoMCkpOworICAgIFJlZ2lvbiBvY2NsdWRlZDsKIAogICAgIEZha2VUZXh0dXJlQWxsb2Nh
dG9yIHRleHR1cmVBbGxvY2F0b3I7CiAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0
dXJlQWxsb2NhdG9yKTsKQEAgLTM1MCw3ICszNjMsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QsIGludmFsaWRhdGVGcm9tUHJlcGFyZSkKICAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEw
MHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxlcy4KICAg
ICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAyMDApKTsKICAgICBsYXllci0+aW52YWxp
ZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwotICAgIGxheWVyLT5wcmVwYXJlVG9V
cGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRh
dGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIG9jY2x1ZGVkKTsKICAgICBsYXllci0+dXBkYXRl
Q29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRp
ZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCkBAIC0zNjMsMTggKzM3NiwxOCBAQCBURVNUKFRpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QsIGludmFsaWRhdGVGcm9tUHJlcGFyZSkKICAgICBsYXllci0+ZmFr
ZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQcmVwYXJlQ291bnQoKTsKICAgICAvLyBJbnZv
a2UgcHJlcGFyZVRvVXBkYXRlIGFnYWluLiBBcyB0aGUgbGF5ZXIgaXMgdmFsaWQgcHJlcGFyZVRv
VXBkYXRlIHNob3VsZG4ndCBiZSBpbnZva2VkIG9uCiAgICAgLy8gdGhlIExheWVyVGV4dHVyZVVw
ZGF0ZXIuCi0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAw
KSk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwg
b2NjbHVkZWQpOwogICAgIEVYUEVDVF9FUSgwLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0
ZXIoKS0+cHJlcGFyZUNvdW50KCkpOwogCiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJl
Y3QoMCwgMCwgNTAsIDUwKSk7CiAgICAgLy8gc2V0UmVjdFRvSW52YWxpZGF0ZSB0cmlnZ2VycyBp
bnZhbGlkYXRlUmVjdCgpIGJlaW5nIGludm9rZWQgZnJvbSBwcmVwYXJlVG9VcGRhdGUuCiAgICAg
bGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNldFJlY3RUb0ludmFsaWRhdGUoSW50
UmVjdCgyNSwgMjUsIDUwLCA1MCksIGxheWVyLmdldCgpKTsKICAgICBsYXllci0+ZmFrZUxheWVy
VGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQcmVwYXJlQ291bnQoKTsKLSAgICBsYXllci0+cHJlcGFy
ZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKKyAgICBsYXllci0+cHJlcGFyZVRv
VXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCBvY2NsdWRlZCk7CiAgICAgRVhQRUNUX0VR
KDEsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlQ291bnQoKSk7CiAg
ICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyUHJlcGFyZUNvdW50KCk7
CiAgICAgLy8gVGhlIGxheWVyIHNob3VsZCBzdGlsbCBiZSBpbnZhbGlkIGFzIHByZXBhcmVUb1Vw
ZGF0ZSBpbnZva2VkIGludmFsaWRhdGUuCi0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRS
ZWN0KDAsIDAsIDEwMCwgMjAwKSk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0
KDAsIDAsIDEwMCwgMjAwKSwgb2NjbHVkZWQpOwogICAgIEVYUEVDVF9FUSgxLCBsYXllci0+ZmFr
ZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZUNvdW50KCkpOwogfQogCkBAIC0zODUsNiAr
Mzk4LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2ZXJpZnlVcGRhdGVSZWN0V2hl
bkNvbnRlbnRCb3VuZHNBcmVTY2FsZWQpCiAKICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRl
eHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0
KjEwMjQsIDEwMjQpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllcldpdGhTY2FsZWRCb3VuZHM+
IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyV2l0aFNjYWxlZEJvdW5kcyh0ZXh0
dXJlTWFuYWdlci5nZXQoKSkpOworICAgIFJlZ2lvbiBvY2NsdWRlZDsKIAogICAgIEZha2VUZXh0
dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7CiAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRh
dGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsKQEAgLTM5OSwyMCArNDEzLDIwIEBAIFRFU1QoVGlsZWRM
YXllckNocm9taXVtVGVzdCwgdmVyaWZ5VXBkYXRlUmVjdFdoZW5Db250ZW50Qm91bmRzQXJlU2Nh
bGVkKQogICAgIC8vIE9uIGZpcnN0IHVwZGF0ZSwgdGhlIHVwZGF0ZVJlY3QgaW5jbHVkZXMgYWxs
IHRpbGVzLCBldmVuIGJleW9uZCB0aGUgYm91bmRhcmllcyBvZiB0aGUgbGF5ZXIuCiAgICAgLy8g
SG93ZXZlciwgaXQgc2hvdWxkIHN0aWxsIGJlIGluIGxheWVyIHNwYWNlLCBub3QgY29udGVudCBz
cGFjZS4KICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoY29udGVudEJvdW5kcyk7Ci0gICAgbGF5
ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzKTsKKyAgICBsYXllci0+cHJlcGFyZVRv
VXBkYXRlKGNvbnRlbnRCb3VuZHMsIG9jY2x1ZGVkKTsKICAgICBsYXllci0+dXBkYXRlQ29tcG9z
aXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKICAgICBFWFBFQ1RfRkxPQVRfUkVDVF9FUShGbG9h
dFJlY3QoMCwgMCwgMzAwLCAzMDAgKiAwLjgpLCBsYXllci0+dXBkYXRlUmVjdCgpKTsKIAogICAg
IC8vIEFmdGVyIHRoZSB0aWxlcyBhcmUgdXBkYXRlZCBvbmNlLCBhbm90aGVyIGludmFsaWRhdGUg
b25seSBuZWVkcyB0byB1cGRhdGUgdGhlIGJvdW5kcyBvZiB0aGUgbGF5ZXIuCiAgICAgbGF5ZXIt
PmludmFsaWRhdGVSZWN0KGNvbnRlbnRCb3VuZHMpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRh
dGUoY29udGVudEJvdW5kcyk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91
bmRzLCBvY2NsdWRlZCk7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwg
dXBkYXRlcik7CiAgICAgRVhQRUNUX0ZMT0FUX1JFQ1RfRVEoRmxvYXRSZWN0KGxheWVyQm91bmRz
KSwgbGF5ZXItPnVwZGF0ZVJlY3QoKSk7CiAKICAgICAvLyBQYXJ0aWFsIHJlLXBhaW50IHNob3Vs
ZCBhbHNvIGJlIHJlcHJlc2VudGVkIGJ5IHRoZSB1cGRhdGVSZWN0IGluIGxheWVyIHNwYWNlLCBu
b3QgY29udGVudCBzcGFjZS4KICAgICBJbnRSZWN0IHBhcnRpYWxEYW1hZ2UoMzAsIDEwMCwgMTAs
IDEwKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QocGFydGlhbERhbWFnZSk7Ci0gICAgbGF5
ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzKTsKKyAgICBsYXllci0+cHJlcGFyZVRv
VXBkYXRlKGNvbnRlbnRCb3VuZHMsIG9jY2x1ZGVkKTsKICAgICBsYXllci0+dXBkYXRlQ29tcG9z
aXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKICAgICBFWFBFQ1RfRkxPQVRfUkVDVF9FUShGbG9h
dFJlY3QoNDUsIDgwLCAxNSwgOCksIGxheWVyLT51cGRhdGVSZWN0KCkpOwogfQpAQCAtNDkzLDQy
ICs1MDcsNDIgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBsYXllckFkZHNTZWxmVG9P
Y2NsdWRlZFJlZ2lvbikKICAgICAvLyBJZiB0aGUgbGF5ZXIgaXMgb3BhcXVlIHRoZW4gdGhlIG9j
Y2x1ZGVkIHJlZ2lvbiBzaG91bGQgYmUgdGhlIHdob2xlIGxheWVyJ3MgdmlzaWJsZSByZWdpb24u
CiAgICAgbGF5ZXItPnNldE9wYXF1ZSh0cnVlKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3Qo
Y29udGVudEJvdW5kcyk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRz
KTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMsIG9jY2x1ZGVkKTsK
IAotICAgIG9jY2x1ZGVkID0gUmVnaW9uKCk7CiAgICAgbGF5ZXItPmFkZFNlbGZUb09jY2x1ZGVk
UmVnaW9uKG9jY2x1ZGVkKTsKICAgICBFWFBFQ1RfRVFfUkVDVCh2aXNpYmxlQm91bmRzLCBvY2Ns
dWRlZC5ib3VuZHMoKSk7CiAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdWRlZC5yZWN0cygpLnNpemUo
KSk7CisgICAgb2NjbHVkZWQgPSBSZWdpb24oKTsKIAogICAgIC8vIElmIHRoZSBsYXllciBpcyBu
b3Qgb3BhcXVlIHRoZW4gdGhlIG9jY2x1ZGVkIHJlZ2lvbiBzaG91bGQgYmUgZW1wdHkuCiAgICAg
bGF5ZXItPnNldE9wYXF1ZShmYWxzZSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KGNvbnRl
bnRCb3VuZHMpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcyk7Cisg
ICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzLCBvY2NsdWRlZCk7CiAKLSAg
ICBvY2NsdWRlZCA9IFJlZ2lvbigpOwogICAgIGxheWVyLT5hZGRTZWxmVG9PY2NsdWRlZFJlZ2lv
bihvY2NsdWRlZCk7CiAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgpLCBvY2NsdWRlZC5ib3Vu
ZHMoKSk7CiAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdWRlZC5yZWN0cygpLnNpemUoKSk7CisgICAg
b2NjbHVkZWQgPSBSZWdpb24oKTsKIAogICAgIC8vIElmIHRoZSBsYXllciBwYWludHMgb3BhcXVl
IGNvbnRlbnQsIHRoZW4gdGhlIG9jY2x1ZGVkIHJlZ2lvbiBzaG91bGQgbWF0Y2ggdGhlIHZpc2li
bGUgb3BhcXVlIGNvbnRlbnQuCiAgICAgSW50UmVjdCBvcGFxdWVQYWludFJlY3QgPSBJbnRSZWN0
KDEwLCAxMCwgOTAsIDE5MCk7CiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCkt
PnNldE9wYXF1ZVBhaW50UmVjdChvcGFxdWVQYWludFJlY3QpOwogICAgIGxheWVyLT5pbnZhbGlk
YXRlUmVjdChjb250ZW50Qm91bmRzKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRl
bnRCb3VuZHMpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcywgb2Nj
bHVkZWQpOwogCi0gICAgb2NjbHVkZWQgPSBSZWdpb24oKTsKICAgICBsYXllci0+YWRkU2VsZlRv
T2NjbHVkZWRSZWdpb24ob2NjbHVkZWQpOwogICAgIEVYUEVDVF9FUV9SRUNUKGludGVyc2VjdGlv
bihvcGFxdWVQYWludFJlY3QsIHZpc2libGVCb3VuZHMpLCBvY2NsdWRlZC5ib3VuZHMoKSk7CiAg
ICAgRVhQRUNUX0VRKDF1LCBvY2NsdWRlZC5yZWN0cygpLnNpemUoKSk7CisgICAgb2NjbHVkZWQg
PSBSZWdpb24oKTsKIAogICAgIC8vIElmIHdlIHBhaW50IGFnYWluIHdpdGhvdXQgaW52YWxpZGF0
aW5nLCB0aGUgc2FtZSBzdHVmZiBzaG91bGQgYmUgb2NjbHVkZWQuCiAgICAgbGF5ZXItPmZha2VM
YXllclRleHR1cmVVcGRhdGVyKCktPnNldE9wYXF1ZVBhaW50UmVjdChJbnRSZWN0KCkpOwotICAg
IGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcyk7CisgICAgbGF5ZXItPnByZXBh
cmVUb1VwZGF0ZShjb250ZW50Qm91bmRzLCBvY2NsdWRlZCk7CiAKLSAgICBvY2NsdWRlZCA9IFJl
Z2lvbigpOwogICAgIGxheWVyLT5hZGRTZWxmVG9PY2NsdWRlZFJlZ2lvbihvY2NsdWRlZCk7CiAg
ICAgRVhQRUNUX0VRX1JFQ1QoaW50ZXJzZWN0aW9uKG9wYXF1ZVBhaW50UmVjdCwgdmlzaWJsZUJv
dW5kcyksIG9jY2x1ZGVkLmJvdW5kcygpKTsKICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1ZGVkLnJl
Y3RzKCkuc2l6ZSgpKTsKKyAgICBvY2NsdWRlZCA9IFJlZ2lvbigpOwogCiAgICAgLy8gSWYgdGhl
IGxheWVyIGlzIHRyYW5zZm9ybWVkIHRoZW4gdGhlIHJlc3VsdGluZyBvY2NsdWRlZCBhcmVhIG5l
ZWRzIHRvIGJlIHRyYW5zZm9ybWVkIHRvIGl0cyB0YXJnZXQgc3BhY2UuCiAgICAgVHJhbnNmb3Jt
YXRpb25NYXRyaXggdHJhbnNmb3JtOwpAQCAtNTM5LDEyICs1NTMsMTIgQEAgVEVTVChUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCBsYXllckFkZHNTZWxmVG9PY2NsdWRlZFJlZ2lvbikKICAgICBkcmF3
VHJhbnNmb3JtID0gdHJhbnNmb3JtOwogICAgIGRyYXdUcmFuc2Zvcm0udHJhbnNsYXRlKGNvbnRl
bnRCb3VuZHMud2lkdGgoKSAvIDIuMCwgY29udGVudEJvdW5kcy5oZWlnaHQoKSAvIDIuMCk7CiAg
ICAgbGF5ZXItPnNldERyYXdUcmFuc2Zvcm0oZHJhd1RyYW5zZm9ybSk7Ci0gICAgbGF5ZXItPnBy
ZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRl
KGNvbnRlbnRCb3VuZHMsIG9jY2x1ZGVkKTsKIAotICAgIG9jY2x1ZGVkID0gUmVnaW9uKCk7CiAg
ICAgbGF5ZXItPmFkZFNlbGZUb09jY2x1ZGVkUmVnaW9uKG9jY2x1ZGVkKTsKICAgICBFWFBFQ1Rf
RVFfUkVDVCh0cmFuc2Zvcm0ubWFwUmVjdChpbnRlcnNlY3Rpb24ob3BhcXVlUGFpbnRSZWN0LCB2
aXNpYmxlQm91bmRzKSksIG9jY2x1ZGVkLmJvdW5kcygpKTsKICAgICBFWFBFQ1RfRVEoMXUsIG9j
Y2x1ZGVkLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICBvY2NsdWRlZCA9IFJlZ2lvbigpOwogCiAgICAg
Ly8gQnV0IGEgbm9uLWF4aXMtYWxpZ25lZCB0cmFuc2Zvcm0gZG9lcyBub3QgZ2V0IGNvbnNpZGVy
ZWQgZm9yIG9jY2x1c2lvbi4KICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKGNvbnRlbnRCb3VuZHMu
d2lkdGgoKSAvIDIuMCwgY29udGVudEJvdW5kcy5oZWlnaHQoKSAvIDIuMCk7CkBAIC01NTMsMTQg
KzU2NywxNjQgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBsYXllckFkZHNTZWxmVG9P
Y2NsdWRlZFJlZ2lvbikKICAgICBkcmF3VHJhbnNmb3JtID0gdHJhbnNmb3JtOwogICAgIGRyYXdU
cmFuc2Zvcm0udHJhbnNsYXRlKGNvbnRlbnRCb3VuZHMud2lkdGgoKSAvIDIuMCwgY29udGVudEJv
dW5kcy5oZWlnaHQoKSAvIDIuMCk7CiAgICAgbGF5ZXItPnNldERyYXdUcmFuc2Zvcm0oZHJhd1Ry
YW5zZm9ybSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzKTsKKyAg
ICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMsIG9jY2x1ZGVkKTsKIAotICAg
IG9jY2x1ZGVkID0gUmVnaW9uKCk7Ci0gICAgbGF5ZXItPmFkZFNlbGZUb09jY2x1ZGVkUmVnaW9u
KG9jY2x1ZGVkKTsKICAgICAvLyBGSVhNRTogSWYgd2UgZmluZCBhbiBvcGFxdWUgcmVjdCBjb250
YWluZWQgaW4gdGhlIHJvdGF0ZWQgbm9uLWF4aXMtYWxpZ25lZCByZWN0LCB0aGVuCiAgICAgLy8g
dGhpcyB3b24ndCBiZSBhbiBlbXB0eSByZXN1bHQuCisgICAgbGF5ZXItPmFkZFNlbGZUb09jY2x1
ZGVkUmVnaW9uKG9jY2x1ZGVkKTsKICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KCksIG9jY2x1
ZGVkLmJvdW5kcygpKTsKICAgICBFWFBFQ1RfRVEoMHUsIG9jY2x1ZGVkLnJlY3RzKCkuc2l6ZSgp
KTsKIH0KIAorVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRob3V0
T2NjbHVzaW9uKQoreworICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIg
PSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAyKjEwMjQqMTAyNCwgMTAyNCk7
CisgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3
IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKKyAgICBSZWdp
b24gb2NjbHVkZWQ7CisKKyAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAsIHNvIHRoaXMg
aW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxlcy4KKyAgICBsYXllci0+c2V0Qm91
bmRzKEludFNpemUoMTAwLCAyMDApKTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBkcmF3VHJh
bnNmb3JtOworICAgIGRyYXdUcmFuc2Zvcm0udHJhbnNsYXRlKDEwMCAvIDIuMCwgMjAwIC8gMi4w
KTsKKyAgICBsYXllci0+c2V0RHJhd1RyYW5zZm9ybShkcmF3VHJhbnNmb3JtKTsKKworICAgIGxh
eWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CisgICAgbGF5ZXIt
PnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgb2NjbHVkZWQpOworICAg
IEVYUEVDVF9FUSgyLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJl
Y3RDb3VudCgpKTsKK30KKworVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50
ZWRXaXRoT2NjbHVzaW9uKQoreworICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1h
bmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAyKjEwMjQqMTAyNCwg
MTAyNCk7CisgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRS
ZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKKyAg
ICBSZWdpb24gb2NjbHVkZWQ7CisKKyAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAuCisK
KyAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoNjAwLCA2MDApKTsKKyAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBkcmF3VHJhbnNmb3JtOworICAgIGRyYXdUcmFuc2Zvcm0udHJhbnNsYXRlKDYw
MCAvIDIuMCwgNjAwIC8gMi4wKTsKKyAgICBsYXllci0+c2V0RHJhd1RyYW5zZm9ybShkcmF3VHJh
bnNmb3JtKTsKKworICAgIG9jY2x1ZGVkID0gSW50UmVjdCgyMDAsIDIwMCwgMzAwLCAxMDApOwor
ICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CisgICAg
bGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgb2NjbHVkZWQp
OworICAgIEVYUEVDVF9FUSgzNi0zLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+
cHJlcGFyZVJlY3RDb3VudCgpKTsKKworICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRl
cigpLT5jbGVhclByZXBhcmVSZWN0Q291bnQoKTsKKworICAgIG9jY2x1ZGVkID0gSW50UmVjdCgy
NTAsIDIwMCwgMzAwLCAxMDApOworICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAs
IDAsIDYwMCwgNjAwKSk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAs
IDYwMCwgNjAwKSwgb2NjbHVkZWQpOworICAgIEVYUEVDVF9FUSgzNi0yLCBsYXllci0+ZmFrZUxh
eWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKKworICAgIGxheWVyLT5m
YWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVSZWN0Q291bnQoKTsKKworICAg
IG9jY2x1ZGVkID0gSW50UmVjdCgyNTAsIDI1MCwgMzAwLCAxMDApOworICAgIGxheWVyLT5pbnZh
bGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CisgICAgbGF5ZXItPnByZXBhcmVU
b1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgb2NjbHVkZWQpOworICAgIEVYUEVDVF9F
USgzNiwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQo
KSk7Cit9CisKK1RFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNOb3RQYWludGVkV2l0
aG91dEludmFsaWRhdGlvbikKK3sKKyAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVN
YW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQs
IDEwMjQpOworICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0
UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7Cisg
ICAgUmVnaW9uIG9jY2x1ZGVkOworCisgICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLgor
CisgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDYwMCwgNjAwKSk7CisgICAgVHJhbnNmb3Jt
YXRpb25NYXRyaXggZHJhd1RyYW5zZm9ybTsKKyAgICBkcmF3VHJhbnNmb3JtLnRyYW5zbGF0ZSg2
MDAgLyAyLjAsIDYwMCAvIDIuMCk7CisgICAgbGF5ZXItPnNldERyYXdUcmFuc2Zvcm0oZHJhd1Ry
YW5zZm9ybSk7CisKKyAgICBvY2NsdWRlZCA9IEludFJlY3QoMjAwLCAyMDAsIDMwMCwgMTAwKTsK
KyAgICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7
CisgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKKyAg
ICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCBvY2NsdWRl
ZCk7CisgICAgRVhQRUNUX0VRKDM2LTMsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigp
LT5wcmVwYXJlUmVjdENvdW50KCkpOworCisgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRh
dGVyKCktPmNsZWFyUHJlcGFyZVJlY3RDb3VudCgpOworCisgICAgLy8gUmVwYWludCB3aXRob3V0
IG1hcmtpbmcgaXQgZGlydHkuCisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAs
IDAsIDYwMCwgNjAwKSwgb2NjbHVkZWQpOworICAgIEVYUEVDVF9FUSgwLCBsYXllci0+ZmFrZUxh
eWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKK30KKworVEVTVChUaWxl
ZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kVHJhbnNmb3Jt
cykKK3sKKyAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVy
ZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOworICAgIFJl
ZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGls
ZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CisgICAgUmVnaW9uIG9jY2x1
ZGVkOworCisgICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLgorCisgICAgLy8gVGhpcyBt
YWtlcyBzdXJlIHRoZSBwYWludGluZyB3b3JrcyB3aGVuIHRoZSBvY2NsdWRlZCByZWdpb24gKGlu
IHNjcmVlbiBzcGFjZSkKKyAgICAvLyBpcyB0cmFuc2Zvcm1lZCBkaWZmZXJlbnRseSB0aGFuIHRo
ZSBsYXllci4KKyAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoNjAwLCA2MDApKTsKKyAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBkcmF3VHJhbnNmb3JtOworICAgIGRyYXdUcmFuc2Zvcm0uc2Nh
bGUoMC41KTsKKyAgICBkcmF3VHJhbnNmb3JtLnRyYW5zbGF0ZSg2MDAgLyAyLjAsIDYwMCAvIDIu
MCk7CisgICAgbGF5ZXItPnNldERyYXdUcmFuc2Zvcm0oZHJhd1RyYW5zZm9ybSk7CisKKyAgICBv
Y2NsdWRlZCA9IEludFJlY3QoMTAwLCAxMDAsIDE1MCwgNTApOworICAgIGxheWVyLT5zZXRWaXNp
YmxlTGF5ZXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXItPmJvdW5kcygpKSk7CisgICAg
bGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKKyAgICBsYXll
ci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCBvY2NsdWRlZCk7Cisg
ICAgRVhQRUNUX0VRKDM2LTMsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVw
YXJlUmVjdENvdW50KCkpOworfQorCitURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVz
UGFpbnRlZFdpdGhPY2NsdXNpb25BbmRTY2FsaW5nKQoreworICAgIE93blB0cjxUZXh0dXJlTWFu
YWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0
LCAyKjEwMjQqMTAyNCwgMTAyNCk7CisgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+
IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFn
ZXIuZ2V0KCkpKTsKKyAgICBSZWdpb24gb2NjbHVkZWQ7CisKKyAgICAvLyBUaGUgdGlsZSBzaXpl
IGlzIDEwMHgxMDAuCisKKyAgICAvLyBUaGlzIG1ha2VzIHN1cmUgdGhlIHBhaW50aW5nIHdvcmtz
IHdoZW4gdGhlIGNvbnRlbnQgc3BhY2UgaXMgc2NhbGVkIHRvCisgICAgLy8gYSBkaWZmZXJlbnQg
bGF5ZXIgc3BhY2UuIEluIHRoaXMgY2FzZSB0aWxlcyBhcmUgc2NhbGVkIHRvIGJlIDIwMHgyMDAK
KyAgICAvLyBwaXhlbHMsIHdoaWNoIG1lYW5zIG5vbmUgc2hvdWxkIGJlIG9jY2x1ZGVkLgorICAg
IGxheWVyLT5zZXRDb250ZW50c1NjYWxlKDAuNSk7CisgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRT
aXplKDYwMCwgNjAwKSk7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggZHJhd1RyYW5zZm9ybTsK
KyAgICBkcmF3VHJhbnNmb3JtLnRyYW5zbGF0ZSg2MDAgLyAyLjAsIDYwMCAvIDIuMCk7CisgICAg
bGF5ZXItPnNldERyYXdUcmFuc2Zvcm0oZHJhd1RyYW5zZm9ybSk7CisKKyAgICBvY2NsdWRlZCA9
IEludFJlY3QoMjAwLCAyMDAsIDMwMCwgMTAwKTsKKyAgICBsYXllci0+c2V0VmlzaWJsZUxheWVy
UmVjdChJbnRSZWN0KEludFBvaW50KCksIGxheWVyLT5ib3VuZHMoKSkpOworICAgIGxheWVyLT5p
bnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CisgICAgbGF5ZXItPnByZXBh
cmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgb2NjbHVkZWQpOworICAgIC8vIFRo
ZSBjb250ZW50IGlzIGhhbGYgdGhlIHNpemUgb2YgdGhlIGxheWVyIChzbyB0aGUgbnVtYmVyIG9m
IHRpbGVzIGlzIGZld2VyKS4KKyAgICAvLyBJbiB0aGlzIGNhc2UsIHRoZSBjb250ZW50IGlzIDMw
MHgzMDAsIGFuZCBzaW5jZSB0aGUgdGlsZSBzaXplIGlzIDEwMCwgdGhlCisgICAgLy8gbnVtYmVy
IG9mIHRpbGVzIDN4My4KKyAgICBFWFBFQ1RfRVEoOSwgbGF5ZXItPmZha2VMYXllclRleHR1cmVV
cGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CisKKyAgICBsYXllci0+ZmFrZUxheWVyVGV4
dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQcmVwYXJlUmVjdENvdW50KCk7CisKKyAgICAvLyBUaGlzIG1h
a2VzIHN1cmUgdGhlIHBhaW50aW5nIHdvcmtzIHdoZW4gdGhlIGNvbnRlbnQgc3BhY2UgaXMgc2Nh
bGVkIHRvCisgICAgLy8gYSBkaWZmZXJlbnQgbGF5ZXIgc3BhY2UuIEluIHRoaXMgY2FzZSB0aGUg
b2NjbHVkZWQgcmVnaW9uIGNhdGNoZXMgdGhlCisgICAgLy8gYmxvd24gdXAgdGlsZXMuCisgICAg
b2NjbHVkZWQgPSBJbnRSZWN0KDIwMCwgMjAwLCAzMDAsIDIwMCk7CisgICAgbGF5ZXItPnNldFZp
c2libGVMYXllclJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBsYXllci0+Ym91bmRzKCkpKTsKKyAg
ICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOworICAgIGxh
eWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksIG9jY2x1ZGVkKTsK
KyAgICBFWFBFQ1RfRVEoOS0xLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJl
cGFyZVJlY3RDb3VudCgpKTsKKworICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigp
LT5jbGVhclByZXBhcmVSZWN0Q291bnQoKTsKKworICAgIC8vIFRoaXMgbWFrZXMgc3VyZSBjb250
ZW50IHNjYWxpbmcgYW5kIHRyYW5zZm9ybXMgd29yayB0b2dldGhlci4KKyAgICBkcmF3VHJhbnNm
b3JtLm1ha2VJZGVudGl0eSgpOworICAgIGRyYXdUcmFuc2Zvcm0uc2NhbGUoMC41KTsKKyAgICBk
cmF3VHJhbnNmb3JtLnRyYW5zbGF0ZSg2MDAgLyAyLjAsIDYwMCAvIDIuMCk7CisgICAgbGF5ZXIt
PnNldERyYXdUcmFuc2Zvcm0oZHJhd1RyYW5zZm9ybSk7CisKKyAgICBvY2NsdWRlZCA9IEludFJl
Y3QoMTAwLCAxMDAsIDE1MCwgMTAwKTsKKyAgICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdChJ
bnRSZWN0KEludFBvaW50KCksIGxheWVyLT5ib3VuZHMoKSkpOworICAgIGxheWVyLT5pbnZhbGlk
YXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CisgICAgbGF5ZXItPnByZXBhcmVUb1Vw
ZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgb2NjbHVkZWQpOworICAgIEVYUEVDVF9FUSg5
LTEsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkp
OworfQorCiB9IC8vIG5hbWVzcGFjZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124387</attachid>
            <date>2012-01-27 15:51:03 -0800</date>
            <delta_ts>2012-01-30 21:06:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76838-20120127185102.patch</filename>
            <type>text/plain</type>
            <size>38420</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjRjMGMyYzA5MTI5ZjU5
NjdjNTY1ZWVlYTBhNWM2OTVmOWY1MGYwMC4uN2Q3MmNkYWEwMDJlNzMwNmVlNTdmZGZlMGVlMmY1
ZjRhM2UyN2EzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM0IEBACiAyMDEyLTAxLTI3ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFtjaHJvbWl1bV0gQ3Vs
bCBvY2NsdWRlZCB0aWxlcyBkdXJpbmcgcGFpbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc2ODM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTmV3IHVuaXQgdGVzdHMgaW4gVGlsZWRMYXllckNocm9taXVt
VGVzdC5jcHAKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRM
YXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRMYXllckNocm9taXVt
OjpwYWludENvbnRlbnRzSWZEaXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJD
aHJvbWl1bTo6aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoQ29udGVu
dExheWVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0lt
YWdlTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxheWVyQ2hyb21p
dW06OnBhaW50Q29udGVudHNJZkRpcnR5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllckNocm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVt
OjppZGxlUGFpbnRDb250ZW50c0lmRGlydHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWdp
b25Db250YWluc1JlY3QpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpU
aWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWRsZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmg6CisgICAgICAg
IChUaWxlZExheWVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJl
ZUhvc3Q6OnBhaW50Q29udGVudHNJZkRpcnR5KToKKworMjAxMi0wMS0yNyAgRGFuYSBKYW5zZW5z
ICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKwogICAgICAgICBbY2hyb21pdW1dIENvbXB1dGUgb2Nj
bHVzaW9uIGR1cmluZyBwYWludCBsb29wCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03Njg1OAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDdl
Nzc4MjFjMTQ0NDM5MTlkMGRlNzdhNDZhNDUxNTllZGRiYWU2Y2IuLmMzYmM2MjU5ZDJmNzAzZWUw
ZWY1MzRkNzU5ZmM5MjBjYTc4NWI1OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0x
LDUgKzEsMzAgQEAKIDIwMTItMDEtMjcgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5v
cmc+CiAKKyAgICAgICAgW2Nocm9taXVtXSBDdWxsIG9jY2x1ZGVkIHRpbGVzIGR1cmluZyBwYWlu
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzY4MzgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHRlc3Rz
L0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJv
bWl1bVdpdGhVcGRhdGVUcmFja2luZzo6aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KToKKyAgICAg
ICAgKiB0ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKFdURjo6RmFr
ZUxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUpOgorICAgICAgICAoV1RGOjpG
YWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6cHJlcGFyZVJlY3QpOgorICAgICAgICAo
VGV4dHVyZSk6CisgICAgICAgIChXVEY6OkZha2VMYXllclRleHR1cmVVcGRhdGVyOjpGYWtlTGF5
ZXJUZXh0dXJlVXBkYXRlcik6CisgICAgICAgIChXVEY6OkZha2VMYXllclRleHR1cmVVcGRhdGVy
OjpzZXRPcGFxdWVQYWludFJlY3QpOgorICAgICAgICAoRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIp
OgorICAgICAgICAoV1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVJlY3RDb3Vu
dCk6CisgICAgICAgIChXVEY6OkZha2VMYXllclRleHR1cmVVcGRhdGVyOjpjbGVhclByZXBhcmVS
ZWN0Q291bnQpOgorICAgICAgICAoV1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRl
VGV4dHVyZSk6CisgICAgICAgIChXVEY6OkZha2VUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVU
b1VwZGF0ZSk6CisgICAgICAgIChXVEY6OkZha2VUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVU
b1VwZGF0ZUlkbGUpOgorICAgICAgICAoV1RGOjpGYWtlVGlsZWRMYXllckNocm9taXVtOjpwYWlu
dENvbnRlbnRzSWZEaXJ0eSk6CisgICAgICAgIChXVEY6OlRFU1QpOgorICAgICAgICAoV1RGKToK
KworMjAxMi0wMS0yNyAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKwogICAg
ICAgICBbY2hyb21pdW1dIENvbXB1dGUgb2NjbHVzaW9uIGR1cmluZyBwYWludCBsb29wCiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Njg1OAogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50
TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMzQzMDMxMTBmYTljYWZkZjI2Y2E5
YmNmZWQ2ZTI0YzRmNDAyZjJhYS4uZTBmNThmZjY0NWY0YWVhOWJhYTliNGVhMDQxYTVhNTgyMDIy
OTUyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcApAQCAtOTMsNyArOTMs
NyBAQCBib29sIENvbnRlbnRMYXllckNocm9taXVtOjpkcmF3c0NvbnRlbnQoKSBjb25zdAogICAg
IHJldHVybiBUaWxlZExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgpICYmIG1fZGVsZWdhdGU7
CiB9CiAKLXZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KGNv
bnN0IFJlZ2lvbiYgLyogb2NjbHVkZWRTY3JlZW5TcGFjZSAqLykKK3ZvaWQgQ29udGVudExheWVy
Q2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3Jl
ZW5TcGFjZSkKIHsKICAgICB1cGRhdGVUaWxlU2l6ZUFuZFRpbGluZ09wdGlvbigpOwogCkBAIC0x
MDQsMTEgKzEwNCwxMSBAQCB2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRz
SWZEaXJ0eShjb25zdCBSZWdpb24mIC8qIG9jY2x1ZGVkU2NyZWVuUwogICAgIGlmIChkcmF3c0Nv
bnRlbnQoKSkKICAgICAgICAgbGF5ZXJSZWN0ID0gdmlzaWJsZUxheWVyUmVjdCgpOwogCi0gICAg
cHJlcGFyZVRvVXBkYXRlKGxheWVyUmVjdCk7CisgICAgcHJlcGFyZVRvVXBkYXRlKGxheWVyUmVj
dCwgb2NjbHVkZWRTY3JlZW5TcGFjZSk7CiAgICAgbV9uZWVkc0Rpc3BsYXkgPSBmYWxzZTsKIH0K
IAotdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KCkK
K3ZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OmlkbGVQYWludENvbnRlbnRzSWZEaXJ0eShjb25z
dCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVuU3BhY2UpCiB7CiAgICAgaWYgKCFkcmF3c0NvbnRlbnQo
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgQ29udGVudExheWVy
Q2hyb21pdW06OmlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSgpCiAgICAgaWYgKGxheWVyUmVjdC5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHByZXBhcmVUb1VwZGF0ZUlkbGUobGF5
ZXJSZWN0KTsKKyAgICBwcmVwYXJlVG9VcGRhdGVJZGxlKGxheWVyUmVjdCwgb2NjbHVkZWRTY3Jl
ZW5TcGFjZSk7CiAgICAgaWYgKG5lZWRzSWRsZVBhaW50KGxheWVyUmVjdCkpCiAgICAgICAgIHNl
dE5lZWRzQ29tbWl0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaAppbmRleCA1
ZWZmNmEzZDYwYTEyZDEyMGViNzIwMDBkMzUwYjFmYjU4MzhlYTgzLi44MjkyYjU4MzdmZDY4MGY5
MjE3NTBlMTg3YzU2NTJlYjNmN2EyMzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVt
LmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29u
dGVudCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eShjb25z
dCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVuU3BhY2UpOwotICAgIHZpcnR1YWwgdm9pZCBpZGxlUGFp
bnRDb250ZW50c0lmRGlydHkoKTsKKyAgICB2aXJ0dWFsIHZvaWQgaWRsZVBhaW50Q29udGVudHNJ
ZkRpcnR5KGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSk7CiAKICAgICB2aXJ0dWFs
IHZvaWQgc2V0T3BhcXVlKGJvb2wpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcApp
bmRleCA4MzFjYmU4MDk2M2EzYTgwMGI4YWE0NmE2OTk0OGY0ZmM3ZjVlYzdlLi5hZDVlZmM2ZTZm
NWU4NzBmNGNkZjYxYjFmYzZiNjUyNWJhMmFlOTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJv
bWl1bS5jcHAKQEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6c2V0
Q29udGVudHMoSW1hZ2UqIGNvbnRlbnRzKQogICAgIHNldE5lZWRzRGlzcGxheSgpOwogfQogCi12
b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9u
JiAvKiBvY2NsdWRlZFNjcmVlblNwYWNlICovKQordm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OnBh
aW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSkKIHsK
ICAgICBpZiAobV9uZWVkc0Rpc3BsYXkpIHsKICAgICAgICAgbV90ZXh0dXJlVXBkYXRlci0+dXBk
YXRlRnJvbUltYWdlKG1fY29udGVudHMtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpOwpA
QCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpwYWludENvbnRlbnRz
SWZEaXJ0eShjb25zdCBSZWdpb24mIC8qIG9jY2x1ZGVkU2NyZWVuU3BhCiAgICAgICAgIG1fbmVl
ZHNEaXNwbGF5ID0gZmFsc2U7CiAgICAgfQogCi0gICAgcHJlcGFyZVRvVXBkYXRlKHZpc2libGVM
YXllclJlY3QoKSk7CisgICAgcHJlcGFyZVRvVXBkYXRlKHZpc2libGVMYXllclJlY3QoKSwgb2Nj
bHVkZWRTY3JlZW5TcGFjZSk7CiB9CiAKIExheWVyVGV4dHVyZVVwZGF0ZXIqIEltYWdlTGF5ZXJD
aHJvbWl1bTo6dGV4dHVyZVVwZGF0ZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDIy
MTgwNDk3NTAzZWI4YjZmYmRhYjE0OWFmODE1ODgyZTU3YjJlMDYuLmQzMTc3OWNiNGExNDM0YmQz
Njc0MDIyNGQyMTE1MDM5NTBiOGViYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKQEAgLTE1NSw3ICsx
NTUsNyBAQCBwdWJsaWM6CiAgICAgLy8gVGhlc2UgbWV0aG9kcyB0eXBpY2FsbHkgbmVlZCB0byBi
ZSBvdmVyd3JpdHRlbiBieSBkZXJpdmVkIGNsYXNzZXMuCiAgICAgdmlydHVhbCBib29sIGRyYXdz
Q29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEcmF3YWJsZTsgfQogICAgIHZpcnR1YWwgdm9p
ZCBwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIC8qIG9jY2x1ZGVkU2NyZWVuU3Bh
Y2UgKi8pIHsgfQotICAgIHZpcnR1YWwgdm9pZCBpZGxlUGFpbnRDb250ZW50c0lmRGlydHkoKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgaWRsZVBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lv
biYgLyogb2NjbHVkZWRTY3JlZW5TcGFjZSAqLykgeyB9CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVy
JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldElzTWFzayhib29sKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgdW5yZXNlcnZlQ29udGVudHNUZXh0dXJlKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNo
cm9taXVtLmNwcAppbmRleCA5Y2UwOWRmOWU2ZTEwZTZhZWYyNTIyNzRkOWM1Yjg3ODc2ODZjZDE1
Li4zNzhkYmI4MGE1NGEzOWFhMTA2MGZhNTJjOGI5MzUwNGQ2ZWZmMzVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21p
dW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rp
bGVkTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTM2Myw3ICszNjMsMTkgQEAgdm9pZCBUaWxlZExheWVy
Q2hyb21pdW06OnByb3RlY3RUaWxlVGV4dHVyZXMoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQog
ICAgIH0KIH0KIAotdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVz
KGJvb2wgaWRsZSwgaW50IGxlZnQsIGludCB0b3AsIGludCByaWdodCwgaW50IGJvdHRvbSkKK3N0
YXRpYyBib29sIHJlZ2lvbkNvbnRhaW5zUmVjdChjb25zdCBSZWdpb24mIHJlZ2lvbiwgY29uc3Qg
SW50UmVjdCYgcmVjdCkKK3sKKyAgICBSZWdpb24gcmVjdFJlZ2lvbihyZWN0KTsKKyAgICBSZWdp
b24gaW50ZXJzZWN0UmVnaW9uKGludGVyc2VjdChyZWdpb24sIHJlY3RSZWdpb24pKTsKKworICAg
IGlmIChpbnRlcnNlY3RSZWdpb24uaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICByZWN0UmVnaW9uLnN1YnRyYWN0KGludGVyc2VjdFJlZ2lvbik7CisgICAgcmV0dXJuIHJl
Y3RSZWdpb24uaXNFbXB0eSgpOworfQorCit2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFy
ZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50IHJpZ2h0LCBp
bnQgYm90dG9tLCBjb25zdCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVuU3BhY2UpCiB7CiAgICAgLy8g
UmVzZXQgbV91cGRhdGVSZWN0IGZvciBhbGwgdGlsZXMuCiAgICAgZm9yIChDQ0xheWVyVGlsaW5n
RGF0YTo6VGlsZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1fdGlsZXItPnRpbGVzKCkuYmVn
aW4oKTsgaXRlciAhPSBtX3RpbGVyLT50aWxlcygpLmVuZCgpOyArK2l0ZXIpIHsKQEAgLTM3MSw2
ICszODMsOSBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMo
Ym9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50CiAgICAgICAgIHRpbGUtPm1fdXBkYXRl
UmVjdCA9IEludFJlY3QoKTsKICAgICB9CiAKKyAgICAvLyBUaWxlcyBhcmUgaW4gdGhlIGxheWVy
J3MgY29udGVudCBzcGFjZSwgdGhlIG9jY2x1ZGVkIHJlZ2lvbiBpcyBpbiBzY3JlZW4gc3BhY2Uu
CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY29udGVudFRvU2NyZWVuU3BhY2UgPSBjb250ZW50
VG9TY3JlZW5TcGFjZVRyYW5zZm9ybSgpOworCiAgICAgLy8gQ3JlYXRlIHRpbGVzIGFzIG5lZWRl
ZCwgZXhwYW5kaW5nIGEgZGlydHkgcmVjdCB0byBjb250YWluIGFsbAogICAgIC8vIHRoZSBkaXJ0
eSByZWdpb25zIGN1cnJlbnRseSBiZWluZyBkcmF3bi4gQWxsIGRpcnR5IHRpbGVzIHRoYXQgYXJl
IHRvIGJlIHBhaW50ZWQKICAgICAvLyBnZXQgdGhlaXIgbV91cGRhdGVSZWN0IHNldCB0byBtX2Rp
cnR5UmVjdCBhbmQgbV9kaXJ0eVJlY3QgY2xlYXJlZC4gVGhpcyB3YXkgaWYKQEAgLTM4MiwxMyAr
Mzk3LDIzIEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVUaWxlcyhi
b29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQKICAgICAgICAgICAgIGlmICghdGlsZSkK
ICAgICAgICAgICAgICAgICB0aWxlID0gY3JlYXRlVGlsZShpLCBqKTsKIAorICAgICAgICAgICAg
Ly8gV2hlbiBub3QgaWRsZSBwYWludGluZywgaWYgdGhlIHRpbGUgaXMgb2NjbHVkZWQgZG9uJ3Qg
cmVzZXJ2ZSBhIHRleHR1cmUgb3IgbWFyayBpdCBmb3IgdXBkYXRlLiBUaGlzIHdpbGwgYWxzbyBh
dm9pZCBwYWludGluZworICAgICAgICAgICAgLy8gdGhlIHRpbGUgaW4gdGhlIG5leHQgbG9vcCwg
YmVsb3cuCisgICAgICAgICAgICBpZiAoIWlkbGUpIHsKKyAgICAgICAgICAgICAgICBJbnRSZWN0
IHRpbGVSZWN0ID0gbV90aWxlci0+dGlsZUJvdW5kcyhpLCBqKTsKKyAgICAgICAgICAgICAgICBp
ZiAocmVnaW9uQ29udGFpbnNSZWN0KG9jY2x1ZGVkU2NyZWVuU3BhY2UsIGNvbnRlbnRUb1NjcmVl
blNwYWNlLm1hcFJlY3QodGlsZVJlY3QpKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIC8vIERvIHBvc3QgY29tbWl0IGRlbGV0aW9u
IG9mIGN1cnJlbnQgdGV4dHVyZSB3aGVuIHBhcnRpYWwgdGV4dHVyZQogICAgICAgICAgICAgLy8g
dXBkYXRlcyBhcmUgbm90IHVzZWQuCiAgICAgICAgICAgICBpZiAodGlsZS0+aXNEaXJ0eSgpICYm
IGxheWVyVHJlZUhvc3QoKSAmJiAhbGF5ZXJUcmVlSG9zdCgpLT5zZXR0aW5ncygpLnBhcnRpYWxU
ZXh0dXJlVXBkYXRlcykKICAgICAgICAgICAgICAgICBsYXllclRyZWVIb3N0KCktPmRlbGV0ZVRl
eHR1cmVBZnRlckNvbW1pdCh0aWxlLT5tYW5hZ2VkVGV4dHVyZSgpLT5zdGVhbCgpKTsKIAotICAg
ICAgICAgICAgaWYgKCF0aWxlLT5tYW5hZ2VkVGV4dHVyZSgpLT5pc1ZhbGlkKG1fdGlsZXItPnRp
bGVTaXplKCksIG1fdGV4dHVyZUZvcm1hdCkpCi0gICAgICAgICAgICAgICAgdGlsZS0+bV9kaXJ0
eVJlY3QgPSBtX3RpbGVyLT50aWxlUmVjdCh0aWxlKTsKKyAgICAgICAgICAgIGlmICghdGlsZS0+
bWFuYWdlZFRleHR1cmUoKS0+aXNWYWxpZChtX3RpbGVyLT50aWxlU2l6ZSgpLCBtX3RleHR1cmVG
b3JtYXQpKSB7CisgICAgICAgICAgICAgICAgSW50UmVjdCBmaXhlZFNpemVUaWxlUmVjdFdpdGhC
b3JkZXJzID0gbV90aWxlci0+dGlsZVJlY3QodGlsZSk7CisgICAgICAgICAgICAgICAgdGlsZS0+
bV9kaXJ0eVJlY3QgPSBmaXhlZFNpemVUaWxlUmVjdFdpdGhCb3JkZXJzOworICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBpZiAoIXRpbGUtPm1hbmFnZWRUZXh0dXJlKCktPnJlc2VydmUobV90
aWxlci0+dGlsZVNpemUoKSwgbV90ZXh0dXJlRm9ybWF0KSkgewogICAgICAgICAgICAgICAgIG1f
c2tpcHNJZGxlUGFpbnQgPSB0cnVlOwpAQCAtNDM4LDcgKzQ2Myw3IEBAIHZvaWQgVGlsZWRMYXll
ckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQg
dG9wLCBpbnQKICAgICAgICAgICAgIGlmICh0aWxlUGFpbnRlZE9wYXF1ZVJlY3QgIT0gdGlsZVBh
aW50ZWRSZWN0IHx8ICF0aWxlLT5tX29wYXF1ZVJlY3QuY29udGFpbnModGlsZVBhaW50ZWRPcGFx
dWVSZWN0KSkKICAgICAgICAgICAgICAgICB0aWxlLT5tX29wYXF1ZVJlY3QgPSB0aWxlUGFpbnRl
ZE9wYXF1ZVJlY3Q7CiAKLSAgICAgICAgICAgIC8vIFVzZSBtX3VwZGF0ZVJlY3QgYXMgY29weUFu
ZENsZWFyRGlydHkgYWJvdmUgbW92ZWQgdGhlIGV4aXN0aW5nIGRpcnR5IHJlY3QgdG8gbV91cGRh
dGVSZWN0LgorICAgICAgICAgICAgLy8gVXNlIG1fdXBkYXRlUmVjdCBhcyBjb3B5QW5kQ2xlYXJE
aXJ0eSBhYm92ZSBtb3ZlZCB0aGUgZXhpc3RpbmcgZGlydHkgcmVjdCB0byBtX3VwZGF0ZVJlY3Qg
aWYgdGhlIHRpbGUgaXNuJ3QgY3VsbGVkLgogICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgZGly
dHlSZWN0ID0gdGlsZS0+bV91cGRhdGVSZWN0OwogICAgICAgICAgICAgaWYgKGRpcnR5UmVjdC5p
c0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC00ODgsNyArNTEzLDcgQEAg
dm9pZCBUaWxlZExheWVyQ2hyb21pdW06OmFkZFNlbGZUb09jY2x1ZGVkU2NyZWVuU3BhY2UoUmVn
aW9uJiBvY2NsdWRlZFNjcmVlblNwYWMKICAgICB9CiB9CiAKLXZvaWQgVGlsZWRMYXllckNocm9t
aXVtOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQordm9pZCBUaWxl
ZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBsYXllclJlY3Qs
IGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSkKIHsKICAgICBtX3NraXBzRHJhdyA9
IGZhbHNlOwogICAgIG1fc2tpcHNJZGxlUGFpbnQgPSBmYWxzZTsKQEAgLTUwMywxMCArNTI4LDEw
IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVj
dCYgbGF5ZXJSZWN0KQogICAgIGludCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b207CiAgICAgbV90
aWxlci0+bGF5ZXJSZWN0VG9UaWxlSW5kaWNlcyhsYXllclJlY3QsIGxlZnQsIHRvcCwgcmlnaHQs
IGJvdHRvbSk7CiAKLSAgICBwcmVwYXJlVG9VcGRhdGVUaWxlcyhmYWxzZSwgbGVmdCwgdG9wLCBy
aWdodCwgYm90dG9tKTsKKyAgICBwcmVwYXJlVG9VcGRhdGVUaWxlcyhmYWxzZSwgbGVmdCwgdG9w
LCByaWdodCwgYm90dG9tLCBvY2NsdWRlZFNjcmVlblNwYWNlKTsKIH0KIAotdm9pZCBUaWxlZExh
eWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlkbGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0
KQordm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlkbGUoY29uc3QgSW50
UmVjdCYgbGF5ZXJSZWN0LCBjb25zdCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVuU3BhY2UpCiB7CiAg
ICAgLy8gQWJvcnQgaWYgd2UgaGF2ZSBhbHJlYWR5IHByZXBhcmVkIGEgcGFpbnQgb3IgcnVuIG91
dCBvZiBtZW1vcnkuCiAgICAgaWYgKG1fc2tpcHNJZGxlUGFpbnQgfHwgIW1fcGFpbnRSZWN0Lmlz
RW1wdHkoKSkKQEAgLTUyNCwzMyArNTQ5LDM5IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpw
cmVwYXJlVG9VcGRhdGVJZGxlKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCkKICAgICBJbnRSZWN0
IGlkbGVQYWludExheWVyUmVjdCA9IGlkbGVQYWludFJlY3QobGF5ZXJSZWN0KTsKICAgICBwcm90
ZWN0VGlsZVRleHR1cmVzKGlkbGVQYWludExheWVyUmVjdCk7CiAKLSAgICAvLyBFeHBhbmQgb3V0
d2FyZHMgdW50aWwgd2UgZmluZCBhIGRpcnR5IHJvdyBvciBjb2x1bW4gdG8gdXBkYXRlLgogICAg
IGludCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b207CiAgICAgbV90aWxlci0+bGF5ZXJSZWN0VG9U
aWxlSW5kaWNlcyhsYXllclJlY3QsIGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSk7CisKKyAgICAv
LyBQcmVwYWludCBhbnl0aGluZyB0aGF0IHdhcyBvY2NsdWRlZCBidXQgaW5zaWRlIHRoZSBsYXll
cidzIHZpc2libGUgcmVnaW9uLgorICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKHRydWUsIGxlZnQs
IGJvdHRvbSwgcmlnaHQsIGJvdHRvbSwgb2NjbHVkZWRTY3JlZW5TcGFjZSk7CisgICAgaWYgKCFt
X3BhaW50UmVjdC5pc0VtcHR5KCkgfHwgbV9za2lwc0lkbGVQYWludCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgLy8gRXhwYW5kIG91dHdhcmRzIHVudGlsIHdlIGZpbmQgYSBkaXJ0eSByb3cgb3Ig
Y29sdW1uIHRvIHVwZGF0ZS4KICAgICBpbnQgcHJlcGFpbnRMZWZ0LCBwcmVwYWludFRvcCwgcHJl
cGFpbnRSaWdodCwgcHJlcGFpbnRCb3R0b207CiAgICAgbV90aWxlci0+bGF5ZXJSZWN0VG9UaWxl
SW5kaWNlcyhpZGxlUGFpbnRMYXllclJlY3QsIHByZXBhaW50TGVmdCwgcHJlcGFpbnRUb3AsIHBy
ZXBhaW50UmlnaHQsIHByZXBhaW50Qm90dG9tKTsKICAgICB3aGlsZSAoIW1fc2tpcHNJZGxlUGFp
bnQgJiYgKGxlZnQgPiBwcmVwYWludExlZnQgfHwgdG9wID4gcHJlcGFpbnRUb3AgfHwgcmlnaHQg
PCBwcmVwYWludFJpZ2h0IHx8IGJvdHRvbSA8IHByZXBhaW50Qm90dG9tKSkgewogICAgICAgICBp
ZiAoYm90dG9tIDwgcHJlcGFpbnRCb3R0b20pIHsKICAgICAgICAgICAgICsrYm90dG9tOwotICAg
ICAgICAgICAgcHJlcGFyZVRvVXBkYXRlVGlsZXModHJ1ZSwgbGVmdCwgYm90dG9tLCByaWdodCwg
Ym90dG9tKTsKKyAgICAgICAgICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKHRydWUsIGxlZnQsIGJv
dHRvbSwgcmlnaHQsIGJvdHRvbSwgb2NjbHVkZWRTY3JlZW5TcGFjZSk7CiAgICAgICAgICAgICBp
ZiAoIW1fcGFpbnRSZWN0LmlzRW1wdHkoKSB8fCBtX3NraXBzSWRsZVBhaW50KQogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGlmICh0b3AgPiBwcmVwYWludFRvcCkg
ewogICAgICAgICAgICAgLS10b3A7Ci0gICAgICAgICAgICBwcmVwYXJlVG9VcGRhdGVUaWxlcyh0
cnVlLCBsZWZ0LCB0b3AsIHJpZ2h0LCB0b3ApOworICAgICAgICAgICAgcHJlcGFyZVRvVXBkYXRl
VGlsZXModHJ1ZSwgbGVmdCwgdG9wLCByaWdodCwgdG9wLCBvY2NsdWRlZFNjcmVlblNwYWNlKTsK
ICAgICAgICAgICAgIGlmICghbV9wYWludFJlY3QuaXNFbXB0eSgpIHx8IG1fc2tpcHNJZGxlUGFp
bnQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGxlZnQg
PiBwcmVwYWludExlZnQpIHsKICAgICAgICAgICAgIC0tbGVmdDsKLSAgICAgICAgICAgIHByZXBh
cmVUb1VwZGF0ZVRpbGVzKHRydWUsIGxlZnQsIHRvcCwgbGVmdCwgYm90dG9tKTsKKyAgICAgICAg
ICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKHRydWUsIGxlZnQsIHRvcCwgbGVmdCwgYm90dG9tLCBv
Y2NsdWRlZFNjcmVlblNwYWNlKTsKICAgICAgICAgICAgIGlmICghbV9wYWludFJlY3QuaXNFbXB0
eSgpIHx8IG1fc2tpcHNJZGxlUGFpbnQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKHJpZ2h0IDwgcHJlcGFpbnRSaWdodCkgewogICAgICAgICAgICAgKyty
aWdodDsKLSAgICAgICAgICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKHRydWUsIHJpZ2h0LCB0b3As
IHJpZ2h0LCBib3R0b20pOworICAgICAgICAgICAgcHJlcGFyZVRvVXBkYXRlVGlsZXModHJ1ZSwg
cmlnaHQsIHRvcCwgcmlnaHQsIGJvdHRvbSwgb2NjbHVkZWRTY3JlZW5TcGFjZSk7CiAgICAgICAg
ICAgICBpZiAoIW1fcGFpbnRSZWN0LmlzRW1wdHkoKSB8fCBtX3NraXBzSWRsZVBhaW50KQogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5o
CmluZGV4IDU2NmYzNDY2OTBlY2M2NzM5YzE3NmZhNGEyYmY4MzdiNzAyMGI1ZDMuLjc3OGM4NGE1
OWUzY2I4NDMzNWFlODQ3YjQ4MDM0ZDJmOGM5YmE2NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJv
bWl1bS5oCkBAIC04MywxMCArODMsMTAgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgaW52YWxpZGF0
ZVJlY3QoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KTsKIAogICAgIC8vIFByZXBhcmUgZGF0YSBu
ZWVkZWQgdG8gdXBkYXRlIHRleHR1cmVzIHRoYXQgaW50ZXJzZWN0IHdpdGggbGF5ZXJSZWN0Lgot
ICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCk7CisgICAg
dm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0LCBjb25zdCBSZWdp
b24mIG9jY2x1ZGVkVGFyZ2V0U3BhY2UpOwogCiAgICAgLy8gU2FtZSBhcyBhYm92ZSwgYnV0IHRo
aXMgd2lsbCB0cnkgdG8gcGFpbnQgYWRkaXRpb25hbCBzdXJyb3VuZGluZyBjb250ZW50IGlmIGlk
bGUuCi0gICAgdm9pZCBwcmVwYXJlVG9VcGRhdGVJZGxlKGNvbnN0IEludFJlY3QmIGxheWVyUmVj
dCk7CisgICAgdm9pZCBwcmVwYXJlVG9VcGRhdGVJZGxlKGNvbnN0IEludFJlY3QmIGxheWVyUmVj
dCwgY29uc3QgUmVnaW9uJiBvY2NsdWRlZFRhcmdldFNwYWNlKTsKIAogICAgIC8vIEFmdGVyIHBy
ZXBhcmluZyBhbiB1cGRhdGUsIHJldHVybnMgdHJ1ZSBpZiBtb3JlIHByZS1wYWludGluZyBpcyBu
ZWVkZWQuCiAgICAgYm9vbCBuZWVkc0lkbGVQYWludChjb25zdCBJbnRSZWN0JiBsYXllclJlY3Qp
OwpAQCAtMTA1LDcgKzEwNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVUaWxlcklmTmVl
ZGVkKCk7CiAgICAgdm9pZCBzZXRUaWxpbmdPcHRpb24oVGlsaW5nT3B0aW9uKTsKIAotICAgIHZv
aWQgcHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50
IHJpZ2h0LCBpbnQgYm90dG9tKTsKKyAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wg
aWRsZSwgaW50IGxlZnQsIGludCB0b3AsIGludCByaWdodCwgaW50IGJvdHRvbSwgY29uc3QgUmVn
aW9uJiBvY2NsdWRlZFRhcmdldFNwYWNlKTsKICAgICBJbnRSZWN0IGlkbGVQYWludFJlY3QoY29u
c3QgSW50UmVjdCYgdmlzaWJsZUxheWVyUmVjdCk7CiAKICAgICBVcGRhdGFibGVUaWxlKiB0aWxl
QXQoaW50LCBpbnQpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXgg
YzU5YWIzNTA2YzE5YTQ4YWM1NTdkZmI2MjBiNTkxMGM1MjI2NjFmNi4uZTU4ODZiZDMzMTQ3ZTg0
ODZmM2FmMGZjZWI2MDc3NWVmYzI0YmJjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
Y3BwCkBAIC00MDYsNyArNDA2LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50Q29udGVu
dHNJZkRpcnR5KExheWVyQ2hyb21pdW0qIGxheWVyLCBQYWludFR5cGUgcGFpbnQKICAgICBpZiAo
UGFpbnRWaXNpYmxlID09IHBhaW50VHlwZSkKICAgICAgICAgbGF5ZXItPnBhaW50Q29udGVudHNJ
ZkRpcnR5KG9jY2x1ZGVkU2NyZWVuU3BhY2UpOwogICAgIGVsc2UKLSAgICAgICAgbGF5ZXItPmlk
bGVQYWludENvbnRlbnRzSWZEaXJ0eSgpOworICAgICAgICBsYXllci0+aWRsZVBhaW50Q29udGVu
dHNJZkRpcnR5KG9jY2x1ZGVkU2NyZWVuU3BhY2UpOwogfQogCiB2b2lkIENDTGF5ZXJUcmVlSG9z
dDo6cGFpbnRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UoTGF5ZXJDaHJvbWl1bSogcmVu
ZGVyU3VyZmFjZUxheWVyLCBQYWludFR5cGUgcGFpbnRUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5kZXggYmE3ZDcw
NThlNWM0YjRjMDViZmRmYWYwZWFmYWZjOWI3YTMwODg0Ny4uNjZhNjk3ODBhZDFhYmZjZjQwNDQz
MWFiZTU5OTI5YzYzOTZlODY1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC0xMDEyLDkgKzEwMTIsOSBAQCBwdWJs
aWM6CiAgICAgICAgIG1fcGFpbnRDb250ZW50c0NvdW50Kys7CiAgICAgfQogCi0gICAgdmlydHVh
bCB2b2lkIGlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSgpCisgICAgdmlydHVhbCB2b2lkIGlkbGVQ
YWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIG9jY2x1ZGVkKQogICAgIHsKLSAgICAg
ICAgQ29udGVudExheWVyQ2hyb21pdW06OmlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSgpOworICAg
ICAgICBDb250ZW50TGF5ZXJDaHJvbWl1bTo6aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KG9jY2x1
ZGVkKTsKICAgICAgICAgbV9pZGxlUGFpbnRDb250ZW50c0NvdW50Kys7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRl
c3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1U
ZXN0LmNwcAppbmRleCBiMDM1MGRiNDk1ZmI1NjJiMzU4MTQwODdlZjY0MTBkNzYxOTViYTc1Li44
YmU4YjFiYzk0MmQ0OWYzMTQ5OGNjYTkwMDI4YzE4ZGFiZmFmM2QxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAK
QEAgLTYwLDM0ICs2MCw0MyBAQCBjbGFzcyBGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlciA6IHB1Ymxp
YyBMYXllclRleHR1cmVVcGRhdGVyIHsKIHB1YmxpYzoKICAgICBjbGFzcyBUZXh0dXJlIDogcHVi
bGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgewogICAgIHB1YmxpYzoKLSAgICAgICAg
VGV4dHVyZShQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKSA6IExheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRleHR1cmUodGV4dHVyZSkgeyB9CisgICAgICAgIFRleHR1cmUoUGFzc093blB0
cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSwgRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIqIHVwZGF0
ZXIpIDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJlKSwgbV91cGRhdGVyKHVw
ZGF0ZXIpIHsgfQogICAgICAgICB2aXJ0dWFsIH5UZXh0dXJlKCkgeyB9CiAKICAgICAgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9y
KiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmKSB7IH0KKyAgICAgICAgdmlydHVhbCB2
b2lkIHByZXBhcmVSZWN0KGNvbnN0IEludFJlY3QmKSB7ICsrbV91cGRhdGVyLT5tX3ByZXBhcmVS
ZWN0Q291bnQ7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIEZha2VMYXllclRleHR1cmVVcGRh
dGVyKiBtX3VwZGF0ZXI7CiAgICAgfTsKIAotICAgIEZha2VMYXllclRleHR1cmVVcGRhdGVyKCkg
OiBtX3ByZXBhcmVDb3VudCgwKSB7IH0KKyAgICBGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpIDog
bV9wcmVwYXJlQ291bnQoMCksIG1fcHJlcGFyZVJlY3RDb3VudCgwKSB7IH0KICAgICB2aXJ0dWFs
IH5GYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpIHsgfQogCiAgICAgLy8gU2V0cyB0aGUgcmVjdCB0
byBpbnZhbGlkYXRlIGR1cmluZyB0aGUgbmV4dCBjYWxsIHRvIHByZXBhcmVUb1VwZGF0ZSgpLiBB
ZnRlciB0aGUgbmV4dAogICAgIC8vIGNhbGwgdG8gcHJlcGFyZVRvVXBkYXRlKCkgdGhlIHJlY3Qg
aXMgcmVzZXQuCiAgICAgdm9pZCBzZXRSZWN0VG9JbnZhbGlkYXRlKGNvbnN0IEludFJlY3QmLCBG
YWtlVGlsZWRMYXllckNocm9taXVtKik7CiAKKyAgICB2b2lkIHNldE9wYXF1ZVBhaW50UmVjdChj
b25zdCBJbnRSZWN0JiBvcGFxdWVQYWludFJlY3QpIHsgbV9vcGFxdWVQYWludFJlY3QgPSBvcGFx
dWVQYWludFJlY3Q7IH0KKwogICAgIC8vIE51bWJlciBvZiB0aW1lcyBwcmVwYXJlVG9VcGRhdGUg
aGFzIGJlZW4gaW52b2tlZC4KICAgICBpbnQgcHJlcGFyZUNvdW50KCkgY29uc3QgeyByZXR1cm4g
bV9wcmVwYXJlQ291bnQ7IH0KICAgICB2b2lkIGNsZWFyUHJlcGFyZUNvdW50KCkgeyBtX3ByZXBh
cmVDb3VudCA9IDA7IH0KIAotICAgIHZvaWQgc2V0T3BhcXVlUGFpbnRSZWN0KGNvbnN0IEludFJl
Y3QmIG9wYXF1ZVBhaW50UmVjdCkgeyBtX29wYXF1ZVBhaW50UmVjdCA9IG9wYXF1ZVBhaW50UmVj
dDsgfQorICAgIC8vIE51bWJlciBvZiB0aW1lcyBwcmVwYXJlUmVjdCBoYXMgYmVlbiBpbnZva2Vk
IG9uIGEgdGV4dHVyZS4KKyAgICBpbnQgcHJlcGFyZVJlY3RDb3VudCgpIGNvbnN0IHsgcmV0dXJu
IG1fcHJlcGFyZVJlY3RDb3VudDsgfQorICAgIHZvaWQgY2xlYXJQcmVwYXJlUmVjdENvdW50KCkg
eyBtX3ByZXBhcmVSZWN0Q291bnQgPSAwOyB9CiAKICAgICAvLyBMYXN0IHJlY3QgcGFzc2VkIHRv
IHByZXBhcmVUb1VwZGF0ZSgpLgogICAgIGNvbnN0IEludFJlY3QmIGxhc3RVcGRhdGVSZWN0KCkg
IGNvbnN0IHsgcmV0dXJuIG1fbGFzdFVwZGF0ZVJlY3Q7IH0KIAotICAgIHZpcnR1YWwgUGFzc093
blB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKFRleHR1cmVN
YW5hZ2VyKiBtYW5hZ2VyKSB7IHJldHVybiBhZG9wdFB0cihuZXcgVGV4dHVyZShNYW5hZ2VkVGV4
dHVyZTo6Y3JlYXRlKG1hbmFnZXIpKSk7IH0KKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8TGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gY3JlYXRlVGV4dHVyZShUZXh0dXJlTWFuYWdlciogbWFu
YWdlcikgeyByZXR1cm4gYWRvcHRQdHIobmV3IFRleHR1cmUoTWFuYWdlZFRleHR1cmU6OmNyZWF0
ZShtYW5hZ2VyKSwgdGhpcykpOyB9CiAgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2Ft
cGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtKSB7IHJldHVybiBTYW1wbGVkVGV4ZWxGb3JtYXRSR0JB
OyB9CiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250
ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYsIGludCwgZmxvYXQsIEludFJlY3QqIHJlc3VsdGluZ09w
YXF1ZVJlY3QpOwogCiBwcml2YXRlOgogICAgIGludCBtX3ByZXBhcmVDb3VudDsKKyAgICBpbnQg
bV9wcmVwYXJlUmVjdENvdW50OwogICAgIEludFJlY3QgbV9yZWN0VG9JbnZhbGlkYXRlOwogICAg
IEludFJlY3QgbV9sYXN0VXBkYXRlUmVjdDsKICAgICBJbnRSZWN0IG1fb3BhcXVlUGFpbnRSZWN0
OwpAQCAtMTI1LDE0ICsxMzQsMTQgQEAgcHVibGljOgogICAgICAgICBUaWxlZExheWVyQ2hyb21p
dW06OmludmFsaWRhdGVSZWN0KHJlY3QpOwogICAgIH0KIAotICAgIHZvaWQgcHJlcGFyZVRvVXBk
YXRlKGNvbnN0IEludFJlY3QmIHJlY3QpCisgICAgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3Qg
SW50UmVjdCYgcmVjdCwgY29uc3QgUmVnaW9uJiBvY2NsdWRlZCkKICAgICB7Ci0gICAgICAgIFRp
bGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKHJlY3QpOworICAgICAgICBUaWxlZExh
eWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZShyZWN0LCBvY2NsdWRlZCk7CiAgICAgfQogCi0g
ICAgdm9pZCBwcmVwYXJlVG9VcGRhdGVJZGxlKGNvbnN0IEludFJlY3QmIHJlY3QpCisgICAgdm9p
ZCBwcmVwYXJlVG9VcGRhdGVJZGxlKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IFJlZ2lvbiYg
b2NjbHVkZWQpCiAgICAgewotICAgICAgICBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1Vw
ZGF0ZUlkbGUocmVjdCk7CisgICAgICAgIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBk
YXRlSWRsZShyZWN0LCBvY2NsdWRlZCk7CiAgICAgfQogCiAgICAgYm9vbCBuZWVkc0lkbGVQYWlu
dChjb25zdCBJbnRSZWN0JiByZWN0KQpAQCAtMTQ5LDkgKzE1OCw5IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgVGV4dHVyZU1hbmFnZXIqIHRleHR1cmVNYW5hZ2VyKCkgY29uc3QgeyByZXR1cm4g
bV90ZXh0dXJlTWFuYWdlcjsgfQogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRp
cnR5KGNvbnN0IFJlZ2lvbiYgLyogb2NjbHVkZWRTY3JlZW5TcGFjZSAqLykKKyAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uJiBvY2NsdWRlZFNjcmVlblNw
YWNlKQogICAgIHsKLSAgICAgICAgcHJlcGFyZVRvVXBkYXRlKHZpc2libGVMYXllclJlY3QoKSk7
CisgICAgICAgIHByZXBhcmVUb1VwZGF0ZSh2aXNpYmxlTGF5ZXJSZWN0KCksIG9jY2x1ZGVkU2Ny
ZWVuU3BhY2UpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTIwNiw2ICsyMTUsNyBAQCBURVNUKFRp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hEaXJ0eVRpbGVzKQogICAgIFJlZlB0cjxGYWtlVGls
ZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9t
aXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFk
IGltcGxUaHJlYWQ7CiAgICAgUmVmUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwg
PSBhZG9wdFJlZihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpOworICAgIFJlZ2lvbiBub09j
Y2x1c2lvbjsKIAogICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7CiAg
ICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsKQEAgLTIxMyw3
ICsyMjMsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hEaXJ0eVRpbGVzKQog
ICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMCwgc28gdGhpcyBpbnZhbGlkYXRlcyBhbmQg
dGhlbiBwYWludHMgdHdvIHRpbGVzLgogICAgIGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSgxMDAs
IDIwMCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAw
KSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7
CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgbm9P
Y2NsdXNpb24pOwogICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0
ZXIpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAKQEAg
LTIyNiw3ICsyMzYsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hEaXJ0eVRp
bGVzKQogICAgIC8vIEludmFsaWRhdGVzIGJvdGggdGlsZXMuLi4KICAgICBsYXllci0+aW52YWxp
ZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogICAgIC8vIC4uLi5idXQgdGhlbiBv
bmx5IHVwZGF0ZSBvbmUgb2YgdGhlbS4KLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJl
Y3QoMCwgMCwgMTAwLCAxMDApKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3Qo
MCwgMCwgMTAwLCAxMDApLCBub09jY2x1c2lvbik7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5
ZXJJbXBsLmdldCgpKTsKIApAQCAtMjQ5LDEyICsyNTksMTMgQEAgVEVTVChUaWxlZExheWVyQ2hy
b21pdW1UZXN0LCBwdXNoSWRsZVBhaW50VGlsZXMpCiAgICAgSW50U2l6ZSBjb250ZW50Qm91bmRz
KDUwMCwgNTAwKTsKICAgICBJbnRSZWN0IGNvbnRlbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIGNv
bnRlbnRCb3VuZHMpOwogICAgIEludFJlY3QgdmlzaWJsZVJlY3QoMjAwLCAyMDAsIDEwMCwgMTAw
KTsKKyAgICBSZWdpb24gbm9PY2NsdXNpb247CiAKICAgICAvLyBUaGlzIGludmFsaWRhdGVzIDI1
IHRpbGVzIGFuZCB0aGVuIHBhaW50cyBvbmUgdmlzaWJsZSB0aWxlLgogICAgIGxheWVyLT5zZXRC
b3VuZHMoY29udGVudEJvdW5kcyk7CiAgICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3Qodmlz
aWJsZVJlY3QpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChjb250ZW50UmVjdCk7Ci0gICAg
bGF5ZXItPnByZXBhcmVUb1VwZGF0ZSh2aXNpYmxlUmVjdCk7CisgICAgbGF5ZXItPnByZXBhcmVU
b1VwZGF0ZSh2aXNpYmxlUmVjdCwgbm9PY2NsdXNpb24pOwogCiAgICAgLy8gV2Ugc2hvdWxkIG5l
ZWQgaWRsZS1wYWludGluZyBmb3IgM3gzIHRpbGVzIGluIHRoZSBjZW50ZXIuCiAgICAgRVhQRUNU
X1RSVUUobGF5ZXItPm5lZWRzSWRsZVBhaW50KHZpc2libGVSZWN0KSk7CkBAIC0yNjksOSArMjgw
LDkgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoSWRsZVBhaW50VGlsZXMpCiAK
ICAgICAvLyBGb3IgdGhlIG5leHQgZm91ciB1cGRhdGVzLCB3ZSBzaG91bGQgZGV0ZWN0IHdlIHN0
aWxsIG5lZWQgaWRsZSBwYWludGluZy4KICAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKykg
ewotICAgICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKHZpc2libGVSZWN0KTsKKyAgICAgICAg
bGF5ZXItPnByZXBhcmVUb1VwZGF0ZSh2aXNpYmxlUmVjdCwgbm9PY2NsdXNpb24pOwogICAgICAg
ICBFWFBFQ1RfVFJVRShsYXllci0+bmVlZHNJZGxlUGFpbnQodmlzaWJsZVJlY3QpKTsKLSAgICAg
ICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZUlkbGUodmlzaWJsZVJlY3QpOworICAgICAgICBsYXll
ci0+cHJlcGFyZVRvVXBkYXRlSWRsZSh2aXNpYmxlUmVjdCwgbm9PY2NsdXNpb24pOwogICAgICAg
ICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKICAgICAgICAg
bGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKICAgICAgICAgdGV4dHVy
ZU1hbmFnZXItPnVucHJvdGVjdEFsbFRleHR1cmVzKCk7CkBAIC0yOTksNiArMzEwLDcgQEAgVEVT
VChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRPdXRPZk1lbW9yeSkKICAgICBJbnRT
aXplIGNvbnRlbnRCb3VuZHMoMzAwLCAzMDApOwogICAgIEludFJlY3QgY29udGVudFJlY3QoSW50
UG9pbnQ6Onplcm8oKSwgY29udGVudEJvdW5kcyk7CiAgICAgSW50UmVjdCB2aXNpYmxlUmVjdCgx
MDAsIDEwMCwgMTAwLCAxMDApOworICAgIFJlZ2lvbiBub09jY2x1c2lvbjsKIAogICAgIC8vIFdl
IGhhdmUgZW5vdWdoIG1lbW9yeSBmb3Igb25seSB0aGUgdmlzaWJsZSByZWN0LCBzbyB3ZSB3aWxs
IHJ1biBvdXQgb2YgbWVtb3J5IGluIGZpcnN0IGlkbGUgcGFpbnQuCiAgICAgaW50IG1lbW9yeUxp
bWl0ID0gNCAqIDEwMCAqIDEwMDsgLy8gMiB0aWxlcywgNCBieXRlcyBwZXIgcGl4ZWwuCkBAIC0z
MTUsNyArMzI3LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRPdXRP
Zk1lbW9yeSkKICAgICBsYXllci0+c2V0Qm91bmRzKGNvbnRlbnRCb3VuZHMpOwogICAgIGxheWVy
LT5zZXRWaXNpYmxlTGF5ZXJSZWN0KHZpc2libGVSZWN0KTsKICAgICBsYXllci0+aW52YWxpZGF0
ZVJlY3QoY29udGVudFJlY3QpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUodmlzaWJsZVJl
Y3QpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUodmlzaWJsZVJlY3QsIG5vT2NjbHVzaW9u
KTsKIAogICAgIC8vIFdlIHNob3VsZCBuZWVkIGlkbGUtcGFpbnRpbmcgZm9yIDN4MyB0aWxlcyBz
dXJvdW5kaW5nIHZpc2libGUgdGlsZS4KICAgICBFWFBFQ1RfVFJVRShsYXllci0+bmVlZHNJZGxl
UGFpbnQodmlzaWJsZVJlY3QpKTsKQEAgLTMyNyw4ICszMzksOCBAQCBURVNUKFRpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QsIGlkbGVQYWludE91dE9mTWVtb3J5KQogICAgIEVYUEVDVF9UUlVFKGxheWVy
SW1wbC0+aGFzVGlsZUF0KDEsIDEpKTsKIAogICAgIHRleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RB
bGxUZXh0dXJlcygpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUodmlzaWJsZVJlY3QpOwot
ICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGVJZGxlKHZpc2libGVSZWN0KTsKKyAgICBsYXllci0+
cHJlcGFyZVRvVXBkYXRlKHZpc2libGVSZWN0LCBub09jY2x1c2lvbik7CisgICAgbGF5ZXItPnBy
ZXBhcmVUb1VwZGF0ZUlkbGUodmlzaWJsZVJlY3QsIG5vT2NjbHVzaW9uKTsKIAogICAgIC8vIFdl
IHNob3VsZG4ndCBzaWduYWwgd2UgbmVlZCBhbm90aGVyIGlkbGUgcGFpbnQgYWZ0ZXIgd2UgcnVu
IG91dCBvZiBtZW1vcnkuCiAgICAgRVhQRUNUX0ZBTFNFKGxheWVyLT5uZWVkc0lkbGVQYWludCh2
aXNpYmxlUmVjdCkpOwpAQCAtMzQzLDYgKzM1NSw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVt
VGVzdCwgaW52YWxpZGF0ZUZyb21QcmVwYXJlKQogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNo
cm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1
cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJl
YWQ7CiAgICAgUmVmUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwgPSBhZG9wdFJl
ZihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpOworICAgIFJlZ2lvbiBub09jY2x1c2lvbjsK
IAogICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7CiAgICAgQ0NUZXh0
dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsKQEAgLTM1MCw3ICszNjMsNyBA
QCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGludmFsaWRhdGVGcm9tUHJlcGFyZSkKICAg
ICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRo
ZW4gcGFpbnRzIHR3byB0aWxlcy4KICAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAy
MDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkp
OwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwor
ICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIG5vT2Nj
bHVzaW9uKTsKICAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVy
KTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCkBAIC0z
NjMsMTggKzM3NiwxOCBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGludmFsaWRhdGVG
cm9tUHJlcGFyZSkKICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQ
cmVwYXJlQ291bnQoKTsKICAgICAvLyBJbnZva2UgcHJlcGFyZVRvVXBkYXRlIGFnYWluLiBBcyB0
aGUgbGF5ZXIgaXMgdmFsaWQgcHJlcGFyZVRvVXBkYXRlIHNob3VsZG4ndCBiZSBpbnZva2VkIG9u
CiAgICAgLy8gdGhlIExheWVyVGV4dHVyZVVwZGF0ZXIuCi0gICAgbGF5ZXItPnByZXBhcmVUb1Vw
ZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0
ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgbm9PY2NsdXNpb24pOwogICAgIEVYUEVDVF9FUSgw
LCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZUNvdW50KCkpOwogCiAg
ICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgNTAsIDUwKSk7CiAgICAgLy8g
c2V0UmVjdFRvSW52YWxpZGF0ZSB0cmlnZ2VycyBpbnZhbGlkYXRlUmVjdCgpIGJlaW5nIGludm9r
ZWQgZnJvbSBwcmVwYXJlVG9VcGRhdGUuCiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRh
dGVyKCktPnNldFJlY3RUb0ludmFsaWRhdGUoSW50UmVjdCgyNSwgMjUsIDUwLCA1MCksIGxheWVy
LmdldCgpKTsKICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQcmVw
YXJlQ291bnQoKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAw
LCAyMDApKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAy
MDApLCBub09jY2x1c2lvbik7CiAgICAgRVhQRUNUX0VRKDEsIGxheWVyLT5mYWtlTGF5ZXJUZXh0
dXJlVXBkYXRlcigpLT5wcmVwYXJlQ291bnQoKSk7CiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1
cmVVcGRhdGVyKCktPmNsZWFyUHJlcGFyZUNvdW50KCk7CiAgICAgLy8gVGhlIGxheWVyIHNob3Vs
ZCBzdGlsbCBiZSBpbnZhbGlkIGFzIHByZXBhcmVUb1VwZGF0ZSBpbnZva2VkIGludmFsaWRhdGUu
Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7Cisg
ICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgbm9PY2Ns
dXNpb24pOwogICAgIEVYUEVDVF9FUSgxLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIo
KS0+cHJlcGFyZUNvdW50KCkpOwogfQogCkBAIC0zODUsNiArMzk4LDcgQEAgVEVTVChUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCB2ZXJpZnlVcGRhdGVSZWN0V2hlbkNvbnRlbnRCb3VuZHNBcmVTY2Fs
ZWQpCiAKICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVy
ZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOwogICAgIFJl
ZlB0cjxGYWtlVGlsZWRMYXllcldpdGhTY2FsZWRCb3VuZHM+IGxheWVyID0gYWRvcHRSZWYobmV3
IEZha2VUaWxlZExheWVyV2l0aFNjYWxlZEJvdW5kcyh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwor
ICAgIFJlZ2lvbiBub09jY2x1c2lvbjsKIAogICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1
cmVBbGxvY2F0b3I7CiAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2Nh
dG9yKTsKQEAgLTM5OSwyMCArNDEzLDIwIEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
dmVyaWZ5VXBkYXRlUmVjdFdoZW5Db250ZW50Qm91bmRzQXJlU2NhbGVkKQogICAgIC8vIE9uIGZp
cnN0IHVwZGF0ZSwgdGhlIHVwZGF0ZVJlY3QgaW5jbHVkZXMgYWxsIHRpbGVzLCBldmVuIGJleW9u
ZCB0aGUgYm91bmRhcmllcyBvZiB0aGUgbGF5ZXIuCiAgICAgLy8gSG93ZXZlciwgaXQgc2hvdWxk
IHN0aWxsIGJlIGluIGxheWVyIHNwYWNlLCBub3QgY29udGVudCBzcGFjZS4KICAgICBsYXllci0+
aW52YWxpZGF0ZVJlY3QoY29udGVudEJvdW5kcyk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0
ZShjb250ZW50Qm91bmRzKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3Vu
ZHMsIG5vT2NjbHVzaW9uKTsKICAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygw
LCB1cGRhdGVyKTsKICAgICBFWFBFQ1RfRkxPQVRfUkVDVF9FUShGbG9hdFJlY3QoMCwgMCwgMzAw
LCAzMDAgKiAwLjgpLCBsYXllci0+dXBkYXRlUmVjdCgpKTsKIAogICAgIC8vIEFmdGVyIHRoZSB0
aWxlcyBhcmUgdXBkYXRlZCBvbmNlLCBhbm90aGVyIGludmFsaWRhdGUgb25seSBuZWVkcyB0byB1
cGRhdGUgdGhlIGJvdW5kcyBvZiB0aGUgbGF5ZXIuCiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0
KGNvbnRlbnRCb3VuZHMpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5k
cyk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzLCBub09jY2x1c2lv
bik7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAg
ICAgRVhQRUNUX0ZMT0FUX1JFQ1RfRVEoRmxvYXRSZWN0KGxheWVyQm91bmRzKSwgbGF5ZXItPnVw
ZGF0ZVJlY3QoKSk7CiAKICAgICAvLyBQYXJ0aWFsIHJlLXBhaW50IHNob3VsZCBhbHNvIGJlIHJl
cHJlc2VudGVkIGJ5IHRoZSB1cGRhdGVSZWN0IGluIGxheWVyIHNwYWNlLCBub3QgY29udGVudCBz
cGFjZS4KICAgICBJbnRSZWN0IHBhcnRpYWxEYW1hZ2UoMzAsIDEwMCwgMTAsIDEwKTsKICAgICBs
YXllci0+aW52YWxpZGF0ZVJlY3QocGFydGlhbERhbWFnZSk7Ci0gICAgbGF5ZXItPnByZXBhcmVU
b1VwZGF0ZShjb250ZW50Qm91bmRzKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRl
bnRCb3VuZHMsIG5vT2NjbHVzaW9uKTsKICAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291
cmNlcygwLCB1cGRhdGVyKTsKICAgICBFWFBFQ1RfRkxPQVRfUkVDVF9FUShGbG9hdFJlY3QoNDUs
IDgwLCAxNSwgOCksIGxheWVyLT51cGRhdGVSZWN0KCkpOwogfQpAQCAtNDc4LDYgKzQ5Miw3IEBA
IFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgbGF5ZXJBZGRzU2VsZlRvT2NjbHVkZWRSZWdp
b24pCiAgICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLCBzbyB0aGlzIGludmFsaWRhdGVz
IGFuZCB0aGVuIHBhaW50cyB0d28gdGlsZXMgaW4gdmFyaW91cyB3YXlzLgogCiAgICAgUmVnaW9u
IG9jY2x1ZGVkOworICAgIFJlZ2lvbiBub09jY2x1c2lvbjsKICAgICBJbnRSZWN0IGNvbnRlbnRC
b3VuZHMgPSBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKTsKICAgICBJbnRSZWN0IHZpc2libGVCb3Vu
ZHMgPSBJbnRSZWN0KDAsIDAsIDEwMCwgMTUwKTsKIApAQCAtNDkyLDcgKzUwNyw3IEBAIFRFU1Qo
VGlsZWRMYXllckNocm9taXVtVGVzdCwgbGF5ZXJBZGRzU2VsZlRvT2NjbHVkZWRSZWdpb24pCiAg
ICAgLy8gSWYgdGhlIGxheWVyIGlzIG9wYXF1ZSB0aGVuIHRoZSBvY2NsdWRlZCByZWdpb24gc2hv
dWxkIGJlIHRoZSB3aG9sZSBsYXllcidzIHZpc2libGUgcmVnaW9uLgogICAgIGxheWVyLT5zZXRP
cGFxdWUodHJ1ZSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KGNvbnRlbnRCb3VuZHMpOwot
ICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcyk7CisgICAgbGF5ZXItPnBy
ZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzLCBub09jY2x1c2lvbik7CiAKICAgICBvY2NsdWRl
ZCA9IFJlZ2lvbigpOwogICAgIGxheWVyLT5hZGRTZWxmVG9PY2NsdWRlZFNjcmVlblNwYWNlKG9j
Y2x1ZGVkKTsKQEAgLTUwMiw3ICs1MTcsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3Qs
IGxheWVyQWRkc1NlbGZUb09jY2x1ZGVkUmVnaW9uKQogICAgIC8vIElmIHRoZSBsYXllciBpcyBu
b3Qgb3BhcXVlIHRoZW4gdGhlIG9jY2x1ZGVkIHJlZ2lvbiBzaG91bGQgYmUgZW1wdHkuCiAgICAg
bGF5ZXItPnNldE9wYXF1ZShmYWxzZSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KGNvbnRl
bnRCb3VuZHMpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcyk7Cisg
ICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzLCBub09jY2x1c2lvbik7CiAK
ICAgICBvY2NsdWRlZCA9IFJlZ2lvbigpOwogICAgIGxheWVyLT5hZGRTZWxmVG9PY2NsdWRlZFNj
cmVlblNwYWNlKG9jY2x1ZGVkKTsKQEAgLTUxMyw3ICs1MjgsNyBAQCBURVNUKFRpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QsIGxheWVyQWRkc1NlbGZUb09jY2x1ZGVkUmVnaW9uKQogICAgIEludFJlY3Qg
b3BhcXVlUGFpbnRSZWN0ID0gSW50UmVjdCgxMCwgMTAsIDkwLCAxOTApOwogICAgIGxheWVyLT5m
YWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRPcGFxdWVQYWludFJlY3Qob3BhcXVlUGFpbnRS
ZWN0KTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoY29udGVudEJvdW5kcyk7Ci0gICAgbGF5
ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzKTsKKyAgICBsYXllci0+cHJlcGFyZVRv
VXBkYXRlKGNvbnRlbnRCb3VuZHMsIG5vT2NjbHVzaW9uKTsKIAogICAgIG9jY2x1ZGVkID0gUmVn
aW9uKCk7CiAgICAgbGF5ZXItPmFkZFNlbGZUb09jY2x1ZGVkU2NyZWVuU3BhY2Uob2NjbHVkZWQp
OwpAQCAtNTIyLDcgKzUzNyw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgbGF5ZXJB
ZGRzU2VsZlRvT2NjbHVkZWRSZWdpb24pCiAKICAgICAvLyBJZiB3ZSBwYWludCBhZ2FpbiB3aXRo
b3V0IGludmFsaWRhdGluZywgdGhlIHNhbWUgc3R1ZmYgc2hvdWxkIGJlIG9jY2x1ZGVkLgogICAg
IGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRPcGFxdWVQYWludFJlY3QoSW50
UmVjdCgpKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMpOworICAg
IGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcywgbm9PY2NsdXNpb24pOwogCiAg
ICAgb2NjbHVkZWQgPSBSZWdpb24oKTsKICAgICBsYXllci0+YWRkU2VsZlRvT2NjbHVkZWRTY3Jl
ZW5TcGFjZShvY2NsdWRlZCk7CkBAIC01MzksNyArNTU0LDcgQEAgVEVTVChUaWxlZExheWVyQ2hy
b21pdW1UZXN0LCBsYXllckFkZHNTZWxmVG9PY2NsdWRlZFJlZ2lvbikKICAgICBzY3JlZW5TcGFj
ZVRyYW5zZm9ybSAqPSB0cmFuc2Zvcm07CiAgICAgc2NyZWVuU3BhY2VUcmFuc2Zvcm0udHJhbnNs
YXRlKC1jb250ZW50Qm91bmRzLndpZHRoKCkgLyAyLjAsIC1jb250ZW50Qm91bmRzLmhlaWdodCgp
IC8gMi4wKTsKICAgICBsYXllci0+c2V0U2NyZWVuU3BhY2VUcmFuc2Zvcm0oc2NyZWVuU3BhY2VU
cmFuc2Zvcm0pOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcyk7Cisg
ICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzLCBub09jY2x1c2lvbik7CiAK
ICAgICBvY2NsdWRlZCA9IFJlZ2lvbigpOwogICAgIGxheWVyLT5hZGRTZWxmVG9PY2NsdWRlZFNj
cmVlblNwYWNlKG9jY2x1ZGVkKTsKQEAgLTU1NCw3ICs1NjksNyBAQCBURVNUKFRpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QsIGxheWVyQWRkc1NlbGZUb09jY2x1ZGVkUmVnaW9uKQogICAgIHNjcmVlblNw
YWNlVHJhbnNmb3JtICo9IHRyYW5zZm9ybTsKICAgICBzY3JlZW5TcGFjZVRyYW5zZm9ybS50cmFu
c2xhdGUoLWNvbnRlbnRCb3VuZHMud2lkdGgoKSAvIDIuMCwgLWNvbnRlbnRCb3VuZHMuaGVpZ2h0
KCkgLyAyLjApOwogICAgIGxheWVyLT5zZXRTY3JlZW5TcGFjZVRyYW5zZm9ybShzY3JlZW5TcGFj
ZVRyYW5zZm9ybSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzKTsK
KyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMsIG5vT2NjbHVzaW9uKTsK
IAogICAgIG9jY2x1ZGVkID0gUmVnaW9uKCk7CiAgICAgbGF5ZXItPmFkZFNlbGZUb09jY2x1ZGVk
U2NyZWVuU3BhY2Uob2NjbHVkZWQpOwpAQCAtNTY0LDQgKzU3OSwxNDEgQEAgVEVTVChUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCBsYXllckFkZHNTZWxmVG9PY2NsdWRlZFJlZ2lvbikKICAgICBFWFBF
Q1RfRVEoMHUsIG9jY2x1ZGVkLnJlY3RzKCkuc2l6ZSgpKTsKIH0KIAorVEVTVChUaWxlZExheWVy
Q2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRob3V0T2NjbHVzaW9uKQoreworICAgIE93blB0
cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRl
KDQqMTAyNCoxMDI0LCAyKjEwMjQqMTAyNCwgMTAyNCk7CisgICAgUmVmUHRyPEZha2VUaWxlZExh
eWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0o
dGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKKyAgICBSZWdpb24gb2NjbHVkZWQ7CisKKyAgICAvLyBU
aGUgdGlsZSBzaXplIGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFp
bnRzIHR3byB0aWxlcy4KKyAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAyMDApKTsK
KworICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7Cisg
ICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgb2NjbHVk
ZWQpOworICAgIEVYUEVDVF9FUSgyLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+
cHJlcGFyZVJlY3RDb3VudCgpKTsKK30KKworVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0
aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uKQoreworICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4g
dGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAyKjEw
MjQqMTAyNCwgMTAyNCk7CisgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVy
ID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0
KCkpKTsKKyAgICBSZWdpb24gb2NjbHVkZWQ7CisKKyAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEw
MHgxMDAuCisKKyAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoNjAwLCA2MDApKTsKKworICAg
IG9jY2x1ZGVkID0gSW50UmVjdCgyMDAsIDIwMCwgMzAwLCAxMDApOworICAgIGxheWVyLT5pbnZh
bGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CisgICAgbGF5ZXItPnByZXBhcmVU
b1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgb2NjbHVkZWQpOworICAgIEVYUEVDVF9F
USgzNi0zLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3Vu
dCgpKTsKKworICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBh
cmVSZWN0Q291bnQoKTsKKworICAgIG9jY2x1ZGVkID0gSW50UmVjdCgyNTAsIDIwMCwgMzAwLCAx
MDApOworICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7
CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgb2Nj
bHVkZWQpOworICAgIEVYUEVDVF9FUSgzNi0yLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0
ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKKworICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJl
VXBkYXRlcigpLT5jbGVhclByZXBhcmVSZWN0Q291bnQoKTsKKworICAgIG9jY2x1ZGVkID0gSW50
UmVjdCgyNTAsIDI1MCwgMzAwLCAxMDApOworICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRS
ZWN0KDAsIDAsIDYwMCwgNjAwKSk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0
KDAsIDAsIDYwMCwgNjAwKSwgb2NjbHVkZWQpOworICAgIEVYUEVDVF9FUSgzNiwgbGF5ZXItPmZh
a2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7Cit9CisKK1RFU1Qo
VGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNOb3RQYWludGVkV2l0aG91dEludmFsaWRhdGlv
bikKK3sKKyAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVy
ZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOworICAgIFJl
ZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGls
ZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CisgICAgUmVnaW9uIG9jY2x1
ZGVkOworCisgICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLgorCisgICAgbGF5ZXItPnNl
dEJvdW5kcyhJbnRTaXplKDYwMCwgNjAwKSk7CisKKyAgICBvY2NsdWRlZCA9IEludFJlY3QoMjAw
LCAyMDAsIDMwMCwgMTAwKTsKKyAgICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0
KDAsIDAsIDYwMCwgNjAwKSk7CisgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwg
MCwgNjAwLCA2MDApKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwg
NjAwLCA2MDApLCBvY2NsdWRlZCk7CisgICAgRVhQRUNUX0VRKDM2LTMsIGxheWVyLT5mYWtlTGF5
ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOworCisgICAgbGF5ZXItPmZh
a2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyUHJlcGFyZVJlY3RDb3VudCgpOworCisgICAg
Ly8gUmVwYWludCB3aXRob3V0IG1hcmtpbmcgaXQgZGlydHkuCisgICAgbGF5ZXItPnByZXBhcmVU
b1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgb2NjbHVkZWQpOworICAgIEVYUEVDVF9F
USgwLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgp
KTsKK30KKworVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2Nj
bHVzaW9uQW5kVHJhbnNmb3JtcykKK3sKKyAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1
cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEw
MjQsIDEwMjQpOworICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFk
b3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7
CisgICAgUmVnaW9uIG9jY2x1ZGVkOworCisgICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAw
LgorCisgICAgLy8gVGhpcyBtYWtlcyBzdXJlIHRoZSBwYWludGluZyB3b3JrcyB3aGVuIHRoZSBv
Y2NsdWRlZCByZWdpb24gKGluIHNjcmVlbiBzcGFjZSkKKyAgICAvLyBpcyB0cmFuc2Zvcm1lZCBk
aWZmZXJlbnRseSB0aGFuIHRoZSBsYXllci4KKyAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUo
NjAwLCA2MDApKTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBzY3JlZW5UcmFuc2Zvcm07Cisg
ICAgc2NyZWVuVHJhbnNmb3JtLnNjYWxlKDAuNSk7CisgICAgbGF5ZXItPnNldFNjcmVlblNwYWNl
VHJhbnNmb3JtKHNjcmVlblRyYW5zZm9ybSk7CisKKyAgICBvY2NsdWRlZCA9IEludFJlY3QoMTAw
LCAxMDAsIDE1MCwgNTApOworICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3Qo
SW50UG9pbnQoKSwgbGF5ZXItPmJvdW5kcygpKSk7CisgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0
KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKElu
dFJlY3QoMCwgMCwgNjAwLCA2MDApLCBvY2NsdWRlZCk7CisgICAgRVhQRUNUX0VRKDM2LTMsIGxh
eWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOworfQor
CitURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb25B
bmRTY2FsaW5nKQoreworICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIg
PSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAyKjEwMjQqMTAyNCwgMTAyNCk7
CisgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3
IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKKyAgICBSZWdp
b24gb2NjbHVkZWQ7CisKKyAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAuCisKKyAgICAv
LyBUaGlzIG1ha2VzIHN1cmUgdGhlIHBhaW50aW5nIHdvcmtzIHdoZW4gdGhlIGNvbnRlbnQgc3Bh
Y2UgaXMgc2NhbGVkIHRvCisgICAgLy8gYSBkaWZmZXJlbnQgbGF5ZXIgc3BhY2UuIEluIHRoaXMg
Y2FzZSB0aWxlcyBhcmUgc2NhbGVkIHRvIGJlIDIwMHgyMDAKKyAgICAvLyBwaXhlbHMsIHdoaWNo
IG1lYW5zIG5vbmUgc2hvdWxkIGJlIG9jY2x1ZGVkLgorICAgIGxheWVyLT5zZXRDb250ZW50c1Nj
YWxlKDAuNSk7CisgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDYwMCwgNjAwKSk7CisKKyAg
ICBvY2NsdWRlZCA9IEludFJlY3QoMjAwLCAyMDAsIDMwMCwgMTAwKTsKKyAgICBsYXllci0+c2V0
VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KEludFBvaW50KCksIGxheWVyLT5ib3VuZHMoKSkpOwor
ICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CisgICAg
bGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgb2NjbHVkZWQp
OworICAgIC8vIFRoZSBjb250ZW50IGlzIGhhbGYgdGhlIHNpemUgb2YgdGhlIGxheWVyIChzbyB0
aGUgbnVtYmVyIG9mIHRpbGVzIGlzIGZld2VyKS4KKyAgICAvLyBJbiB0aGlzIGNhc2UsIHRoZSBj
b250ZW50IGlzIDMwMHgzMDAsIGFuZCBzaW5jZSB0aGUgdGlsZSBzaXplIGlzIDEwMCwgdGhlCisg
ICAgLy8gbnVtYmVyIG9mIHRpbGVzIDN4My4KKyAgICBFWFBFQ1RfRVEoOSwgbGF5ZXItPmZha2VM
YXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CisKKyAgICBsYXllci0+
ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQcmVwYXJlUmVjdENvdW50KCk7CisKKyAg
ICAvLyBUaGlzIG1ha2VzIHN1cmUgdGhlIHBhaW50aW5nIHdvcmtzIHdoZW4gdGhlIGNvbnRlbnQg
c3BhY2UgaXMgc2NhbGVkIHRvCisgICAgLy8gYSBkaWZmZXJlbnQgbGF5ZXIgc3BhY2UuIEluIHRo
aXMgY2FzZSB0aGUgb2NjbHVkZWQgcmVnaW9uIGNhdGNoZXMgdGhlCisgICAgLy8gYmxvd24gdXAg
dGlsZXMuCisgICAgb2NjbHVkZWQgPSBJbnRSZWN0KDIwMCwgMjAwLCAzMDAsIDIwMCk7CisgICAg
bGF5ZXItPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBsYXllci0+Ym91
bmRzKCkpKTsKKyAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYw
MCkpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCks
IG9jY2x1ZGVkKTsKKyAgICBFWFBFQ1RfRVEoOS0xLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVw
ZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKKworICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0
dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVSZWN0Q291bnQoKTsKKworICAgIC8vIFRoaXMgbWFr
ZXMgc3VyZSBjb250ZW50IHNjYWxpbmcgYW5kIHRyYW5zZm9ybXMgd29yayB0b2dldGhlci4KKyAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBzY3JlZW5UcmFuc2Zvcm07CisgICAgc2NyZWVuVHJhbnNm
b3JtLnNjYWxlKDAuNSk7CisgICAgbGF5ZXItPnNldFNjcmVlblNwYWNlVHJhbnNmb3JtKHNjcmVl
blRyYW5zZm9ybSk7CisKKyAgICBvY2NsdWRlZCA9IEludFJlY3QoMTAwLCAxMDAsIDE1MCwgMTAw
KTsKKyAgICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KEludFBvaW50KCksIGxh
eWVyLT5ib3VuZHMoKSkpOworICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAs
IDYwMCwgNjAwKSk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYw
MCwgNjAwKSwgb2NjbHVkZWQpOworICAgIEVYUEVDVF9FUSg5LTEsIGxheWVyLT5mYWtlTGF5ZXJU
ZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOworfQorCiB9IC8vIG5hbWVzcGFj
ZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124661</attachid>
            <date>2012-01-30 20:09:59 -0800</date>
            <delta_ts>2012-01-30 21:06:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76838-20120130230957.patch</filename>
            <type>text/plain</type>
            <size>38239</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTdkOGM5ZjM0ODM3ZGQy
MGY4M2I5MTNjMGUwNWM2NzU1ZDdkOTlmYS4uNTc2NDYxY2VjNzYyZjMyN2VlODg4MmVhZjNjNTg4
MjRjZDQwNGQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTAxLTI3ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQ3Vs
bCBvY2NsdWRlZCB0aWxlcyBkdXJpbmcgcGFpbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc2ODM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTmV3IHVuaXQgdGVzdHMgaW4gVGlsZWRMYXllckNocm9taXVt
VGVzdC5jcHAKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRM
YXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRMYXllckNocm9taXVt
OjpwYWludENvbnRlbnRzSWZEaXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJD
aHJvbWl1bTo6aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoQ29udGVu
dExheWVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0lt
YWdlTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxheWVyQ2hyb21p
dW06OnBhaW50Q29udGVudHNJZkRpcnR5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllckNocm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVt
OjppZGxlUGFpbnRDb250ZW50c0lmRGlydHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWdp
b25Db250YWluc1JlY3QpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpU
aWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWRsZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmg6CisgICAgICAg
IChUaWxlZExheWVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJl
ZUhvc3Q6OnBhaW50Q29udGVudHNJZkRpcnR5KToKKwogMjAxMi0wMS0zMCAgRGFuYSBKYW5zZW5z
ICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIENvbXB1dGUgb2Nj
bHVzaW9uIGR1cmluZyBwYWludCBsb29wCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDNl
OTY3OWUyNjhlMWViNWNkOTU5OWU2ZTk1ZmU2NGMxMGRiODJiOTguLjY4NjAxMWI4NzAxZmVmOTEx
NTlkMTNjNjMzZmMxNjA0YTk5ZDc5YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjggQEAKKzIwMTItMDEtMjcgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBDdWxsIG9jY2x1ZGVkIHRpbGVzIGR1cmluZyBwYWlu
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzY4MzgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHRlc3Rz
L0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJv
bWl1bVdpdGhVcGRhdGVUcmFja2luZzo6aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KToKKyAgICAg
ICAgKiB0ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKFdURjo6RmFr
ZUxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUpOgorICAgICAgICAoV1RGOjpG
YWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6cHJlcGFyZVJlY3QpOgorICAgICAgICAo
VGV4dHVyZSk6CisgICAgICAgIChXVEY6OkZha2VMYXllclRleHR1cmVVcGRhdGVyOjpGYWtlTGF5
ZXJUZXh0dXJlVXBkYXRlcik6CisgICAgICAgIChXVEY6OkZha2VMYXllclRleHR1cmVVcGRhdGVy
OjpzZXRPcGFxdWVQYWludFJlY3QpOgorICAgICAgICAoRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIp
OgorICAgICAgICAoV1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVJlY3RDb3Vu
dCk6CisgICAgICAgIChXVEY6OkZha2VMYXllclRleHR1cmVVcGRhdGVyOjpjbGVhclByZXBhcmVS
ZWN0Q291bnQpOgorICAgICAgICAoV1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRl
VGV4dHVyZSk6CisgICAgICAgIChXVEY6OkZha2VUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVU
b1VwZGF0ZSk6CisgICAgICAgIChXVEY6OkZha2VUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVU
b1VwZGF0ZUlkbGUpOgorICAgICAgICAoV1RGOjpGYWtlVGlsZWRMYXllckNocm9taXVtOjpwYWlu
dENvbnRlbnRzSWZEaXJ0eSk6CisgICAgICAgIChXVEY6OlRFU1QpOgorICAgICAgICAoV1RGKToK
KwogMjAxMi0wMS0zMCAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBbY2hyb21pdW1dIENvbXB1dGUgb2NjbHVzaW9uIGR1cmluZyBwYWludCBsb29wCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50
TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMzQzMDMxMTBmYTljYWZkZjI2Y2E5
YmNmZWQ2ZTI0YzRmNDAyZjJhYS4uZTBmNThmZjY0NWY0YWVhOWJhYTliNGVhMDQxYTVhNTgyMDIy
OTUyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcApAQCAtOTMsNyArOTMs
NyBAQCBib29sIENvbnRlbnRMYXllckNocm9taXVtOjpkcmF3c0NvbnRlbnQoKSBjb25zdAogICAg
IHJldHVybiBUaWxlZExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgpICYmIG1fZGVsZWdhdGU7
CiB9CiAKLXZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KGNv
bnN0IFJlZ2lvbiYgLyogb2NjbHVkZWRTY3JlZW5TcGFjZSAqLykKK3ZvaWQgQ29udGVudExheWVy
Q2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3Jl
ZW5TcGFjZSkKIHsKICAgICB1cGRhdGVUaWxlU2l6ZUFuZFRpbGluZ09wdGlvbigpOwogCkBAIC0x
MDQsMTEgKzEwNCwxMSBAQCB2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRz
SWZEaXJ0eShjb25zdCBSZWdpb24mIC8qIG9jY2x1ZGVkU2NyZWVuUwogICAgIGlmIChkcmF3c0Nv
bnRlbnQoKSkKICAgICAgICAgbGF5ZXJSZWN0ID0gdmlzaWJsZUxheWVyUmVjdCgpOwogCi0gICAg
cHJlcGFyZVRvVXBkYXRlKGxheWVyUmVjdCk7CisgICAgcHJlcGFyZVRvVXBkYXRlKGxheWVyUmVj
dCwgb2NjbHVkZWRTY3JlZW5TcGFjZSk7CiAgICAgbV9uZWVkc0Rpc3BsYXkgPSBmYWxzZTsKIH0K
IAotdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KCkK
K3ZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OmlkbGVQYWludENvbnRlbnRzSWZEaXJ0eShjb25z
dCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVuU3BhY2UpCiB7CiAgICAgaWYgKCFkcmF3c0NvbnRlbnQo
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgQ29udGVudExheWVy
Q2hyb21pdW06OmlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSgpCiAgICAgaWYgKGxheWVyUmVjdC5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHByZXBhcmVUb1VwZGF0ZUlkbGUobGF5
ZXJSZWN0KTsKKyAgICBwcmVwYXJlVG9VcGRhdGVJZGxlKGxheWVyUmVjdCwgb2NjbHVkZWRTY3Jl
ZW5TcGFjZSk7CiAgICAgaWYgKG5lZWRzSWRsZVBhaW50KGxheWVyUmVjdCkpCiAgICAgICAgIHNl
dE5lZWRzQ29tbWl0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaAppbmRleCA1
ZWZmNmEzZDYwYTEyZDEyMGViNzIwMDBkMzUwYjFmYjU4MzhlYTgzLi44MjkyYjU4MzdmZDY4MGY5
MjE3NTBlMTg3YzU2NTJlYjNmN2EyMzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVt
LmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29u
dGVudCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eShjb25z
dCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVuU3BhY2UpOwotICAgIHZpcnR1YWwgdm9pZCBpZGxlUGFp
bnRDb250ZW50c0lmRGlydHkoKTsKKyAgICB2aXJ0dWFsIHZvaWQgaWRsZVBhaW50Q29udGVudHNJ
ZkRpcnR5KGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSk7CiAKICAgICB2aXJ0dWFs
IHZvaWQgc2V0T3BhcXVlKGJvb2wpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcApp
bmRleCA4MzFjYmU4MDk2M2EzYTgwMGI4YWE0NmE2OTk0OGY0ZmM3ZjVlYzdlLi5hZDVlZmM2ZTZm
NWU4NzBmNGNkZjYxYjFmYzZiNjUyNWJhMmFlOTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJv
bWl1bS5jcHAKQEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6c2V0
Q29udGVudHMoSW1hZ2UqIGNvbnRlbnRzKQogICAgIHNldE5lZWRzRGlzcGxheSgpOwogfQogCi12
b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9u
JiAvKiBvY2NsdWRlZFNjcmVlblNwYWNlICovKQordm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OnBh
aW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSkKIHsK
ICAgICBpZiAobV9uZWVkc0Rpc3BsYXkpIHsKICAgICAgICAgbV90ZXh0dXJlVXBkYXRlci0+dXBk
YXRlRnJvbUltYWdlKG1fY29udGVudHMtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpOwpA
QCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpwYWludENvbnRlbnRz
SWZEaXJ0eShjb25zdCBSZWdpb24mIC8qIG9jY2x1ZGVkU2NyZWVuU3BhCiAgICAgICAgIG1fbmVl
ZHNEaXNwbGF5ID0gZmFsc2U7CiAgICAgfQogCi0gICAgcHJlcGFyZVRvVXBkYXRlKHZpc2libGVM
YXllclJlY3QoKSk7CisgICAgcHJlcGFyZVRvVXBkYXRlKHZpc2libGVMYXllclJlY3QoKSwgb2Nj
bHVkZWRTY3JlZW5TcGFjZSk7CiB9CiAKIExheWVyVGV4dHVyZVVwZGF0ZXIqIEltYWdlTGF5ZXJD
aHJvbWl1bTo6dGV4dHVyZVVwZGF0ZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDc2
NGY3MzAxNTViNTQ1MzdjZGE0YzczODFiM2ZkM2JjYjc5NjA2NGQuLjg2ZjJlYTc3OWZkOWE1ZWE0
MWQyYTFlNzJkZWY0OTUxMjFjZTlkZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKQEAgLTE1NSw3ICsx
NTUsNyBAQCBwdWJsaWM6CiAgICAgLy8gVGhlc2UgbWV0aG9kcyB0eXBpY2FsbHkgbmVlZCB0byBi
ZSBvdmVyd3JpdHRlbiBieSBkZXJpdmVkIGNsYXNzZXMuCiAgICAgdmlydHVhbCBib29sIGRyYXdz
Q29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEcmF3YWJsZTsgfQogICAgIHZpcnR1YWwgdm9p
ZCBwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIC8qIG9jY2x1ZGVkU2NyZWVuU3Bh
Y2UgKi8pIHsgfQotICAgIHZpcnR1YWwgdm9pZCBpZGxlUGFpbnRDb250ZW50c0lmRGlydHkoKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgaWRsZVBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lv
biYgLyogb2NjbHVkZWRTY3JlZW5TcGFjZSAqLykgeyB9CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVy
JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldElzTWFzayhib29sKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgdW5yZXNlcnZlQ29udGVudHNUZXh0dXJlKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNo
cm9taXVtLmNwcAppbmRleCAyODNhYThkZDA5YmEyM2ZkNzQ0MzNhY2EzMmE2NzM1Mzg4M2M5YTAw
Li41MzA5OWY5OGY2Y2FhZWYwNTBmZTNmNWM3ZjRjMTE1YTg3Mzc3ZGU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21p
dW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rp
bGVkTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTM2Myw3ICszNjMsMTkgQEAgdm9pZCBUaWxlZExheWVy
Q2hyb21pdW06OnByb3RlY3RUaWxlVGV4dHVyZXMoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQog
ICAgIH0KIH0KIAotdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVz
KGJvb2wgaWRsZSwgaW50IGxlZnQsIGludCB0b3AsIGludCByaWdodCwgaW50IGJvdHRvbSkKK3N0
YXRpYyBib29sIHJlZ2lvbkNvbnRhaW5zUmVjdChjb25zdCBSZWdpb24mIHJlZ2lvbiwgY29uc3Qg
SW50UmVjdCYgcmVjdCkKK3sKKyAgICBSZWdpb24gcmVjdFJlZ2lvbihyZWN0KTsKKyAgICBSZWdp
b24gaW50ZXJzZWN0UmVnaW9uKGludGVyc2VjdChyZWdpb24sIHJlY3RSZWdpb24pKTsKKworICAg
IGlmIChpbnRlcnNlY3RSZWdpb24uaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICByZWN0UmVnaW9uLnN1YnRyYWN0KGludGVyc2VjdFJlZ2lvbik7CisgICAgcmV0dXJuIHJl
Y3RSZWdpb24uaXNFbXB0eSgpOworfQorCit2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFy
ZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50IHJpZ2h0LCBp
bnQgYm90dG9tLCBjb25zdCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVuU3BhY2UpCiB7CiAgICAgLy8g
UmVzZXQgbV91cGRhdGVSZWN0IGZvciBhbGwgdGlsZXMuCiAgICAgZm9yIChDQ0xheWVyVGlsaW5n
RGF0YTo6VGlsZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1fdGlsZXItPnRpbGVzKCkuYmVn
aW4oKTsgaXRlciAhPSBtX3RpbGVyLT50aWxlcygpLmVuZCgpOyArK2l0ZXIpIHsKQEAgLTM3MSw2
ICszODMsOSBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMo
Ym9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50CiAgICAgICAgIHRpbGUtPm1fdXBkYXRl
UmVjdCA9IEludFJlY3QoKTsKICAgICB9CiAKKyAgICAvLyBUaWxlcyBhcmUgaW4gdGhlIGxheWVy
J3MgY29udGVudCBzcGFjZSwgdGhlIG9jY2x1ZGVkIHJlZ2lvbiBpcyBpbiBzY3JlZW4gc3BhY2Uu
CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY29udGVudFRvU2NyZWVuU3BhY2UgPSBjb250ZW50
VG9TY3JlZW5TcGFjZVRyYW5zZm9ybSgpOworCiAgICAgLy8gQ3JlYXRlIHRpbGVzIGFzIG5lZWRl
ZCwgZXhwYW5kaW5nIGEgZGlydHkgcmVjdCB0byBjb250YWluIGFsbAogICAgIC8vIHRoZSBkaXJ0
eSByZWdpb25zIGN1cnJlbnRseSBiZWluZyBkcmF3bi4gQWxsIGRpcnR5IHRpbGVzIHRoYXQgYXJl
IHRvIGJlIHBhaW50ZWQKICAgICAvLyBnZXQgdGhlaXIgbV91cGRhdGVSZWN0IHNldCB0byBtX2Rp
cnR5UmVjdCBhbmQgbV9kaXJ0eVJlY3QgY2xlYXJlZC4gVGhpcyB3YXkgaWYKQEAgLTM4MiwxMyAr
Mzk3LDIzIEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVUaWxlcyhi
b29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQKICAgICAgICAgICAgIGlmICghdGlsZSkK
ICAgICAgICAgICAgICAgICB0aWxlID0gY3JlYXRlVGlsZShpLCBqKTsKIAorICAgICAgICAgICAg
Ly8gV2hlbiBub3QgaWRsZSBwYWludGluZywgaWYgdGhlIHRpbGUgaXMgb2NjbHVkZWQgZG9uJ3Qg
cmVzZXJ2ZSBhIHRleHR1cmUgb3IgbWFyayBpdCBmb3IgdXBkYXRlLiBUaGlzIHdpbGwgYWxzbyBh
dm9pZCBwYWludGluZworICAgICAgICAgICAgLy8gdGhlIHRpbGUgaW4gdGhlIG5leHQgbG9vcCwg
YmVsb3cuCisgICAgICAgICAgICBpZiAoIWlkbGUpIHsKKyAgICAgICAgICAgICAgICBJbnRSZWN0
IHRpbGVSZWN0ID0gbV90aWxlci0+dGlsZUJvdW5kcyhpLCBqKTsKKyAgICAgICAgICAgICAgICBp
ZiAocmVnaW9uQ29udGFpbnNSZWN0KG9jY2x1ZGVkU2NyZWVuU3BhY2UsIGNvbnRlbnRUb1NjcmVl
blNwYWNlLm1hcFJlY3QodGlsZVJlY3QpKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIC8vIERvIHBvc3QgY29tbWl0IGRlbGV0aW9u
IG9mIGN1cnJlbnQgdGV4dHVyZSB3aGVuIHBhcnRpYWwgdGV4dHVyZQogICAgICAgICAgICAgLy8g
dXBkYXRlcyBhcmUgbm90IHVzZWQuCiAgICAgICAgICAgICBpZiAodGlsZS0+aXNEaXJ0eSgpICYm
IGxheWVyVHJlZUhvc3QoKSAmJiAhbGF5ZXJUcmVlSG9zdCgpLT5zZXR0aW5ncygpLnBhcnRpYWxU
ZXh0dXJlVXBkYXRlcykKICAgICAgICAgICAgICAgICBsYXllclRyZWVIb3N0KCktPmRlbGV0ZVRl
eHR1cmVBZnRlckNvbW1pdCh0aWxlLT5tYW5hZ2VkVGV4dHVyZSgpLT5zdGVhbCgpKTsKIAotICAg
ICAgICAgICAgaWYgKCF0aWxlLT5tYW5hZ2VkVGV4dHVyZSgpLT5pc1ZhbGlkKG1fdGlsZXItPnRp
bGVTaXplKCksIG1fdGV4dHVyZUZvcm1hdCkpCisgICAgICAgICAgICBpZiAoIXRpbGUtPm1hbmFn
ZWRUZXh0dXJlKCktPmlzVmFsaWQobV90aWxlci0+dGlsZVNpemUoKSwgbV90ZXh0dXJlRm9ybWF0
KSkgeworICAgICAgICAgICAgICAgIC8vIFNldHMgdGhlIGRpcnR5IHJlY3QgdG8gYSBmdWxsLXNp
emVkIHRpbGUgd2l0aCBib3JkZXIgdGV4ZWxzLgogICAgICAgICAgICAgICAgIHRpbGUtPm1fZGly
dHlSZWN0ID0gbV90aWxlci0+dGlsZVJlY3QodGlsZSk7CisgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgIGlmICghdGlsZS0+bWFuYWdlZFRleHR1cmUoKS0+cmVzZXJ2ZShtX3RpbGVyLT50aWxl
U2l6ZSgpLCBtX3RleHR1cmVGb3JtYXQpKSB7CiAgICAgICAgICAgICAgICAgbV9za2lwc0lkbGVQ
YWludCA9IHRydWU7CkBAIC00NDEsNyArNDY2LDcgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06
OnByZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wgaWRsZSwgaW50IGxlZnQsIGludCB0b3AsIGludAog
ICAgICAgICAgICAgaWYgKHRpbGVQYWludGVkT3BhcXVlUmVjdCAhPSB0aWxlUGFpbnRlZFJlY3Qg
fHwgIXRpbGUtPm1fb3BhcXVlUmVjdC5jb250YWlucyh0aWxlUGFpbnRlZE9wYXF1ZVJlY3QpKQog
ICAgICAgICAgICAgICAgIHRpbGUtPm1fb3BhcXVlUmVjdCA9IHRpbGVQYWludGVkT3BhcXVlUmVj
dDsKIAotICAgICAgICAgICAgLy8gVXNlIG1fdXBkYXRlUmVjdCBhcyBjb3B5QW5kQ2xlYXJEaXJ0
eSBhYm92ZSBtb3ZlZCB0aGUgZXhpc3RpbmcgZGlydHkgcmVjdCB0byBtX3VwZGF0ZVJlY3QuCisg
ICAgICAgICAgICAvLyBVc2UgbV91cGRhdGVSZWN0IGFzIGNvcHlBbmRDbGVhckRpcnR5IGFib3Zl
IG1vdmVkIHRoZSBleGlzdGluZyBkaXJ0eSByZWN0IHRvIG1fdXBkYXRlUmVjdCBpZiB0aGUgdGls
ZSBpc24ndCBjdWxsZWQuCiAgICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QgPSB0
aWxlLT5tX3VwZGF0ZVJlY3Q7CiAgICAgICAgICAgICBpZiAoZGlydHlSZWN0LmlzRW1wdHkoKSkK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTUxNyw3ICs1NDIsNyBAQCB2b2lkIFRpbGVk
TGF5ZXJDaHJvbWl1bTo6YWRkU2VsZlRvT2NjbHVkZWRTY3JlZW5TcGFjZShSZWdpb24mIG9jY2x1
ZGVkU2NyZWVuU3BhYwogICAgIH0KIH0KIAotdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBh
cmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpCit2b2lkIFRpbGVkTGF5ZXJDaHJv
bWl1bTo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3QgUmVn
aW9uJiBvY2NsdWRlZFNjcmVlblNwYWNlKQogewogICAgIG1fc2tpcHNEcmF3ID0gZmFsc2U7CiAg
ICAgbV9za2lwc0lkbGVQYWludCA9IGZhbHNlOwpAQCAtNTMyLDEwICs1NTcsMTAgQEAgdm9pZCBU
aWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBsYXllclJl
Y3QpCiAgICAgaW50IGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbTsKICAgICBtX3RpbGVyLT5sYXll
clJlY3RUb1RpbGVJbmRpY2VzKGxheWVyUmVjdCwgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tKTsK
IAotICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKGZhbHNlLCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0
b20pOworICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKGZhbHNlLCBsZWZ0LCB0b3AsIHJpZ2h0LCBi
b3R0b20sIG9jY2x1ZGVkU2NyZWVuU3BhY2UpOwogfQogCi12b2lkIFRpbGVkTGF5ZXJDaHJvbWl1
bTo6cHJlcGFyZVRvVXBkYXRlSWRsZShjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpCit2b2lkIFRp
bGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWRsZShjb25zdCBJbnRSZWN0JiBsYXll
clJlY3QsIGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSkKIHsKICAgICAvLyBBYm9y
dCBpZiB3ZSBoYXZlIGFscmVhZHkgcHJlcGFyZWQgYSBwYWludCBvciBydW4gb3V0IG9mIG1lbW9y
eS4KICAgICBpZiAobV9za2lwc0lkbGVQYWludCB8fCAhbV9wYWludFJlY3QuaXNFbXB0eSgpKQpA
QCAtNTUzLDMzICs1NzgsMzkgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1Vw
ZGF0ZUlkbGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQogICAgIEludFJlY3QgaWRsZVBhaW50
TGF5ZXJSZWN0ID0gaWRsZVBhaW50UmVjdChsYXllclJlY3QpOwogICAgIHByb3RlY3RUaWxlVGV4
dHVyZXMoaWRsZVBhaW50TGF5ZXJSZWN0KTsKIAotICAgIC8vIEV4cGFuZCBvdXR3YXJkcyB1bnRp
bCB3ZSBmaW5kIGEgZGlydHkgcm93IG9yIGNvbHVtbiB0byB1cGRhdGUuCiAgICAgaW50IGxlZnQs
IHRvcCwgcmlnaHQsIGJvdHRvbTsKICAgICBtX3RpbGVyLT5sYXllclJlY3RUb1RpbGVJbmRpY2Vz
KGxheWVyUmVjdCwgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tKTsKKworICAgIC8vIFByZXBhaW50
IGFueXRoaW5nIHRoYXQgd2FzIG9jY2x1ZGVkIGJ1dCBpbnNpZGUgdGhlIGxheWVyJ3MgdmlzaWJs
ZSByZWdpb24uCisgICAgcHJlcGFyZVRvVXBkYXRlVGlsZXModHJ1ZSwgbGVmdCwgYm90dG9tLCBy
aWdodCwgYm90dG9tLCBvY2NsdWRlZFNjcmVlblNwYWNlKTsKKyAgICBpZiAoIW1fcGFpbnRSZWN0
LmlzRW1wdHkoKSB8fCBtX3NraXBzSWRsZVBhaW50KQorICAgICAgICByZXR1cm47CisKKyAgICAv
LyBFeHBhbmQgb3V0d2FyZHMgdW50aWwgd2UgZmluZCBhIGRpcnR5IHJvdyBvciBjb2x1bW4gdG8g
dXBkYXRlLgogICAgIGludCBwcmVwYWludExlZnQsIHByZXBhaW50VG9wLCBwcmVwYWludFJpZ2h0
LCBwcmVwYWludEJvdHRvbTsKICAgICBtX3RpbGVyLT5sYXllclJlY3RUb1RpbGVJbmRpY2VzKGlk
bGVQYWludExheWVyUmVjdCwgcHJlcGFpbnRMZWZ0LCBwcmVwYWludFRvcCwgcHJlcGFpbnRSaWdo
dCwgcHJlcGFpbnRCb3R0b20pOwogICAgIHdoaWxlICghbV9za2lwc0lkbGVQYWludCAmJiAobGVm
dCA+IHByZXBhaW50TGVmdCB8fCB0b3AgPiBwcmVwYWludFRvcCB8fCByaWdodCA8IHByZXBhaW50
UmlnaHQgfHwgYm90dG9tIDwgcHJlcGFpbnRCb3R0b20pKSB7CiAgICAgICAgIGlmIChib3R0b20g
PCBwcmVwYWludEJvdHRvbSkgewogICAgICAgICAgICAgKytib3R0b207Ci0gICAgICAgICAgICBw
cmVwYXJlVG9VcGRhdGVUaWxlcyh0cnVlLCBsZWZ0LCBib3R0b20sIHJpZ2h0LCBib3R0b20pOwor
ICAgICAgICAgICAgcHJlcGFyZVRvVXBkYXRlVGlsZXModHJ1ZSwgbGVmdCwgYm90dG9tLCByaWdo
dCwgYm90dG9tLCBvY2NsdWRlZFNjcmVlblNwYWNlKTsKICAgICAgICAgICAgIGlmICghbV9wYWlu
dFJlY3QuaXNFbXB0eSgpIHx8IG1fc2tpcHNJZGxlUGFpbnQpCiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHRvcCA+IHByZXBhaW50VG9wKSB7CiAgICAgICAg
ICAgICAtLXRvcDsKLSAgICAgICAgICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKHRydWUsIGxlZnQs
IHRvcCwgcmlnaHQsIHRvcCk7CisgICAgICAgICAgICBwcmVwYXJlVG9VcGRhdGVUaWxlcyh0cnVl
LCBsZWZ0LCB0b3AsIHJpZ2h0LCB0b3AsIG9jY2x1ZGVkU2NyZWVuU3BhY2UpOwogICAgICAgICAg
ICAgaWYgKCFtX3BhaW50UmVjdC5pc0VtcHR5KCkgfHwgbV9za2lwc0lkbGVQYWludCkKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAobGVmdCA+IHByZXBhaW50
TGVmdCkgewogICAgICAgICAgICAgLS1sZWZ0OwotICAgICAgICAgICAgcHJlcGFyZVRvVXBkYXRl
VGlsZXModHJ1ZSwgbGVmdCwgdG9wLCBsZWZ0LCBib3R0b20pOworICAgICAgICAgICAgcHJlcGFy
ZVRvVXBkYXRlVGlsZXModHJ1ZSwgbGVmdCwgdG9wLCBsZWZ0LCBib3R0b20sIG9jY2x1ZGVkU2Ny
ZWVuU3BhY2UpOwogICAgICAgICAgICAgaWYgKCFtX3BhaW50UmVjdC5pc0VtcHR5KCkgfHwgbV9z
a2lwc0lkbGVQYWludCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICBpZiAocmlnaHQgPCBwcmVwYWludFJpZ2h0KSB7CiAgICAgICAgICAgICArK3JpZ2h0OwotICAg
ICAgICAgICAgcHJlcGFyZVRvVXBkYXRlVGlsZXModHJ1ZSwgcmlnaHQsIHRvcCwgcmlnaHQsIGJv
dHRvbSk7CisgICAgICAgICAgICBwcmVwYXJlVG9VcGRhdGVUaWxlcyh0cnVlLCByaWdodCwgdG9w
LCByaWdodCwgYm90dG9tLCBvY2NsdWRlZFNjcmVlblNwYWNlKTsKICAgICAgICAgICAgIGlmICgh
bV9wYWludFJlY3QuaXNFbXB0eSgpIHx8IG1fc2tpcHNJZGxlUGFpbnQpCiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKaW5kZXggM2Ni
YmJjYmQ3YTQ1MjU0MjM1ZTM5NTU1MDIwYzMwMzY4ZTcxZWM0Ni4uNjU1YTliNDM3NmQ3NTc1NmMy
ZGJlYTg0NWUzY2FhMjgyNmU2NThkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKQEAg
LTg1LDEwICs4NSwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25z
dCBJbnRSZWN0JiBsYXllclJlY3QpOwogCiAgICAgLy8gUHJlcGFyZSBkYXRhIG5lZWRlZCB0byB1
cGRhdGUgdGV4dHVyZXMgdGhhdCBpbnRlcnNlY3Qgd2l0aCBsYXllclJlY3QuCi0gICAgdm9pZCBw
cmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KTsKKyAgICB2b2lkIHByZXBh
cmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBsYXllclJlY3QsIGNvbnN0IFJlZ2lvbiYgb2NjbHVk
ZWRUYXJnZXRTcGFjZSk7CiAKICAgICAvLyBTYW1lIGFzIGFib3ZlLCBidXQgdGhpcyB3aWxsIHRy
eSB0byBwYWludCBhZGRpdGlvbmFsIHN1cnJvdW5kaW5nIGNvbnRlbnQgaWYgaWRsZS4KLSAgICB2
b2lkIHByZXBhcmVUb1VwZGF0ZUlkbGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KTsKKyAgICB2
b2lkIHByZXBhcmVUb1VwZGF0ZUlkbGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0LCBjb25zdCBS
ZWdpb24mIG9jY2x1ZGVkVGFyZ2V0U3BhY2UpOwogCiAgICAgLy8gQWZ0ZXIgcHJlcGFyaW5nIGFu
IHVwZGF0ZSwgcmV0dXJucyB0cnVlIGlmIG1vcmUgcHJlLXBhaW50aW5nIGlzIG5lZWRlZC4KICAg
ICBib29sIG5lZWRzSWRsZVBhaW50KGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCk7CkBAIC0xMDcs
NyArMTA3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZVRpbGVySWZOZWVkZWQoKTsKICAg
ICB2b2lkIHNldFRpbGluZ09wdGlvbihUaWxpbmdPcHRpb24pOwogCi0gICAgdm9pZCBwcmVwYXJl
VG9VcGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQgcmlnaHQsIGlu
dCBib3R0b20pOworICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQg
bGVmdCwgaW50IHRvcCwgaW50IHJpZ2h0LCBpbnQgYm90dG9tLCBjb25zdCBSZWdpb24mIG9jY2x1
ZGVkVGFyZ2V0U3BhY2UpOwogICAgIEludFJlY3QgaWRsZVBhaW50UmVjdChjb25zdCBJbnRSZWN0
JiB2aXNpYmxlTGF5ZXJSZWN0KTsKIAogICAgIFVwZGF0YWJsZVRpbGUqIHRpbGVBdChpbnQsIGlu
dCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRleCA0ZmY4NDM0YjIw
MGM5MmQ0OGEwOGJmOTFjMTRiMjdmODIxOWRkYWI2Li5mZGY1MzE4OGNhNWMxZjI0MDVjMDdjYTNh
OGU1YmM5OGE3YmRiOTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTQy
MSw3ICs0MjEsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRDb250ZW50c0lmRGlydHko
TGF5ZXJDaHJvbWl1bSogbGF5ZXIsIFBhaW50VHlwZSBwYWludAogICAgIGlmIChQYWludFZpc2li
bGUgPT0gcGFpbnRUeXBlKQogICAgICAgICBsYXllci0+cGFpbnRDb250ZW50c0lmRGlydHkob2Nj
bHVkZWRTY3JlZW5TcGFjZSk7CiAgICAgZWxzZQotICAgICAgICBsYXllci0+aWRsZVBhaW50Q29u
dGVudHNJZkRpcnR5KCk7CisgICAgICAgIGxheWVyLT5pZGxlUGFpbnRDb250ZW50c0lmRGlydHko
b2NjbHVkZWRTY3JlZW5TcGFjZSk7CiB9CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludE1h
c2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9taXVtKiByZW5kZXJTdXJmYWNl
TGF5ZXIsIFBhaW50VHlwZSBwYWludFR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAppbmRleCAxZmVjMzI0MjE2MjM0ZjU3
NmVhYmY0NWFiYTFkN2U0YmE5MDQ0ZTkxLi5hNDM3YmQ0ZmIyNjhhMWMwNzUzYzVkOGVlMDQxNjI3
MTQ0YTRjMWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5
ZXJUcmVlSG9zdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NM
YXllclRyZWVIb3N0VGVzdC5jcHAKQEAgLTEwMTIsOSArMTAxMiw5IEBAIHB1YmxpYzoKICAgICAg
ICAgbV9wYWludENvbnRlbnRzQ291bnQrKzsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgaWRs
ZVBhaW50Q29udGVudHNJZkRpcnR5KCkKKyAgICB2aXJ0dWFsIHZvaWQgaWRsZVBhaW50Q29udGVu
dHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWQpCiAgICAgewotICAgICAgICBDb250ZW50
TGF5ZXJDaHJvbWl1bTo6aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KCk7CisgICAgICAgIENvbnRl
bnRMYXllckNocm9taXVtOjppZGxlUGFpbnRDb250ZW50c0lmRGlydHkob2NjbHVkZWQpOwogICAg
ICAgICBtX2lkbGVQYWludENvbnRlbnRzQ291bnQrKzsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmlu
ZGV4IGIwMzUwZGI0OTVmYjU2MmIzNTgxNDA4N2VmNjQxMGQ3NjE5NWJhNzUuLjhiZThiMWJjOTQy
ZDQ5ZjMxNDk4Y2NhOTAwMjhjMThkYWJmYWYzZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtNjAsMzQg
KzYwLDQzIEBAIGNsYXNzIEZha2VMYXllclRleHR1cmVVcGRhdGVyIDogcHVibGljIExheWVyVGV4
dHVyZVVwZGF0ZXIgewogcHVibGljOgogICAgIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CiAgICAgcHVibGljOgotICAgICAgICBUZXh0dXJlKFBh
c3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpIDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VGV4dHVyZSh0ZXh0dXJlKSB7IH0KKyAgICAgICAgVGV4dHVyZShQYXNzT3duUHRyPE1hbmFnZWRU
ZXh0dXJlPiB0ZXh0dXJlLCBGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlciogdXBkYXRlcikgOiBMYXll
clRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKHRleHR1cmUpLCBtX3VwZGF0ZXIodXBkYXRlcikgeyB9
CiAgICAgICAgIHZpcnR1YWwgflRleHR1cmUoKSB7IH0KIAogICAgICAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJ
bnRSZWN0JiwgY29uc3QgSW50UmVjdCYpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFy
ZVJlY3QoY29uc3QgSW50UmVjdCYpIHsgKyttX3VwZGF0ZXItPm1fcHJlcGFyZVJlY3RDb3VudDsg
fQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIqIG1fdXBk
YXRlcjsKICAgICB9OwogCi0gICAgRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKSA6IG1fcHJlcGFy
ZUNvdW50KDApIHsgfQorICAgIEZha2VMYXllclRleHR1cmVVcGRhdGVyKCkgOiBtX3ByZXBhcmVD
b3VudCgwKSwgbV9wcmVwYXJlUmVjdENvdW50KDApIHsgfQogICAgIHZpcnR1YWwgfkZha2VMYXll
clRleHR1cmVVcGRhdGVyKCkgeyB9CiAKICAgICAvLyBTZXRzIHRoZSByZWN0IHRvIGludmFsaWRh
dGUgZHVyaW5nIHRoZSBuZXh0IGNhbGwgdG8gcHJlcGFyZVRvVXBkYXRlKCkuIEFmdGVyIHRoZSBu
ZXh0CiAgICAgLy8gY2FsbCB0byBwcmVwYXJlVG9VcGRhdGUoKSB0aGUgcmVjdCBpcyByZXNldC4K
ICAgICB2b2lkIHNldFJlY3RUb0ludmFsaWRhdGUoY29uc3QgSW50UmVjdCYsIEZha2VUaWxlZExh
eWVyQ2hyb21pdW0qKTsKIAorICAgIHZvaWQgc2V0T3BhcXVlUGFpbnRSZWN0KGNvbnN0IEludFJl
Y3QmIG9wYXF1ZVBhaW50UmVjdCkgeyBtX29wYXF1ZVBhaW50UmVjdCA9IG9wYXF1ZVBhaW50UmVj
dDsgfQorCiAgICAgLy8gTnVtYmVyIG9mIHRpbWVzIHByZXBhcmVUb1VwZGF0ZSBoYXMgYmVlbiBp
bnZva2VkLgogICAgIGludCBwcmVwYXJlQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3ByZXBhcmVD
b3VudDsgfQogICAgIHZvaWQgY2xlYXJQcmVwYXJlQ291bnQoKSB7IG1fcHJlcGFyZUNvdW50ID0g
MDsgfQogCi0gICAgdm9pZCBzZXRPcGFxdWVQYWludFJlY3QoY29uc3QgSW50UmVjdCYgb3BhcXVl
UGFpbnRSZWN0KSB7IG1fb3BhcXVlUGFpbnRSZWN0ID0gb3BhcXVlUGFpbnRSZWN0OyB9CisgICAg
Ly8gTnVtYmVyIG9mIHRpbWVzIHByZXBhcmVSZWN0IGhhcyBiZWVuIGludm9rZWQgb24gYSB0ZXh0
dXJlLgorICAgIGludCBwcmVwYXJlUmVjdENvdW50KCkgY29uc3QgeyByZXR1cm4gbV9wcmVwYXJl
UmVjdENvdW50OyB9CisgICAgdm9pZCBjbGVhclByZXBhcmVSZWN0Q291bnQoKSB7IG1fcHJlcGFy
ZVJlY3RDb3VudCA9IDA7IH0KIAogICAgIC8vIExhc3QgcmVjdCBwYXNzZWQgdG8gcHJlcGFyZVRv
VXBkYXRlKCkuCiAgICAgY29uc3QgSW50UmVjdCYgbGFzdFVwZGF0ZVJlY3QoKSAgY29uc3QgeyBy
ZXR1cm4gbV9sYXN0VXBkYXRlUmVjdDsgfQogCi0gICAgdmlydHVhbCBQYXNzT3duUHRyPExheWVy
VGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4dHVyZU1hbmFnZXIqIG1h
bmFnZXIpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBUZXh0dXJlKE1hbmFnZWRUZXh0dXJlOjpjcmVh
dGUobWFuYWdlcikpKTsgfQorICAgIHZpcnR1YWwgUGFzc093blB0cjxMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKiBtYW5hZ2VyKSB7IHJl
dHVybiBhZG9wdFB0cihuZXcgVGV4dHVyZShNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKG1hbmFnZXIp
LCB0aGlzKSk7IH0KICAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1hdCBzYW1wbGVkVGV4ZWxG
b3JtYXQoR0MzRGVudW0pIHsgcmV0dXJuIFNhbXBsZWRUZXhlbEZvcm1hdFJHQkE7IH0KICAgICB2
aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBj
b25zdCBJbnRTaXplJiwgaW50LCBmbG9hdCwgSW50UmVjdCogcmVzdWx0aW5nT3BhcXVlUmVjdCk7
CiAKIHByaXZhdGU6CiAgICAgaW50IG1fcHJlcGFyZUNvdW50OworICAgIGludCBtX3ByZXBhcmVS
ZWN0Q291bnQ7CiAgICAgSW50UmVjdCBtX3JlY3RUb0ludmFsaWRhdGU7CiAgICAgSW50UmVjdCBt
X2xhc3RVcGRhdGVSZWN0OwogICAgIEludFJlY3QgbV9vcGFxdWVQYWludFJlY3Q7CkBAIC0xMjUs
MTQgKzEzNCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIFRpbGVkTGF5ZXJDaHJvbWl1bTo6aW52YWxp
ZGF0ZVJlY3QocmVjdCk7CiAgICAgfQogCi0gICAgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3Qg
SW50UmVjdCYgcmVjdCkKKyAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBy
ZWN0LCBjb25zdCBSZWdpb24mIG9jY2x1ZGVkKQogICAgIHsKLSAgICAgICAgVGlsZWRMYXllckNo
cm9taXVtOjpwcmVwYXJlVG9VcGRhdGUocmVjdCk7CisgICAgICAgIFRpbGVkTGF5ZXJDaHJvbWl1
bTo6cHJlcGFyZVRvVXBkYXRlKHJlY3QsIG9jY2x1ZGVkKTsKICAgICB9CiAKLSAgICB2b2lkIHBy
ZXBhcmVUb1VwZGF0ZUlkbGUoY29uc3QgSW50UmVjdCYgcmVjdCkKKyAgICB2b2lkIHByZXBhcmVU
b1VwZGF0ZUlkbGUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgUmVnaW9uJiBvY2NsdWRlZCkK
ICAgICB7Ci0gICAgICAgIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWRsZShy
ZWN0KTsKKyAgICAgICAgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZGxlKHJl
Y3QsIG9jY2x1ZGVkKTsKICAgICB9CiAKICAgICBib29sIG5lZWRzSWRsZVBhaW50KGNvbnN0IElu
dFJlY3QmIHJlY3QpCkBAIC0xNDksOSArMTU4LDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBU
ZXh0dXJlTWFuYWdlciogdGV4dHVyZU1hbmFnZXIoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVN
YW5hZ2VyOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoY29uc3Qg
UmVnaW9uJiAvKiBvY2NsdWRlZFNjcmVlblNwYWNlICovKQorICAgIHZpcnR1YWwgdm9pZCBwYWlu
dENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVuU3BhY2UpCiAgICAg
ewotICAgICAgICBwcmVwYXJlVG9VcGRhdGUodmlzaWJsZUxheWVyUmVjdCgpKTsKKyAgICAgICAg
cHJlcGFyZVRvVXBkYXRlKHZpc2libGVMYXllclJlY3QoKSwgb2NjbHVkZWRTY3JlZW5TcGFjZSk7
CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMjA2LDYgKzIxNSw3IEBAIFRFU1QoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgcHVzaERpcnR5VGlsZXMpCiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hy
b21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVy
ZU1hbmFnZXIuZ2V0KCkpKTsKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVh
ZDsKICAgICBSZWZQdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1wbCA9IGFkb3B0UmVm
KG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgwKSk7CisgICAgUmVnaW9uIG5vT2NjbHVzaW9uOwog
CiAgICAgRmFrZVRleHR1cmVBbGxvY2F0b3IgdGV4dHVyZUFsbG9jYXRvcjsKICAgICBDQ1RleHR1
cmVVcGRhdGVyIHVwZGF0ZXIoJnRleHR1cmVBbGxvY2F0b3IpOwpAQCAtMjEzLDcgKzIyMyw3IEBA
IFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaERpcnR5VGlsZXMpCiAgICAgLy8gVGhl
IHRpbGUgc2l6ZSBpcyAxMDB4MTAwLCBzbyB0aGlzIGludmFsaWRhdGVzIGFuZCB0aGVuIHBhaW50
cyB0d28gdGlsZXMuCiAgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDEwMCwgMjAwKSk7CiAg
ICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKLSAgICBs
YXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKKyAgICBsYXll
ci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCBub09jY2x1c2lvbik7
CiAgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAgICAg
bGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIApAQCAtMjI2LDcgKzIz
Niw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaERpcnR5VGlsZXMpCiAgICAg
Ly8gSW52YWxpZGF0ZXMgYm90aCB0aWxlcy4uLgogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJ
bnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAgICAgLy8gLi4uLmJ1dCB0aGVuIG9ubHkgdXBkYXRl
IG9uZSBvZiB0aGVtLgotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAx
MDAsIDEwMCkpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAs
IDEwMCksIG5vT2NjbHVzaW9uKTsKICAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNl
cygwLCB1cGRhdGVyKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0
KCkpOwogCkBAIC0yNDksMTIgKzI1OSwxMyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3Qs
IHB1c2hJZGxlUGFpbnRUaWxlcykKICAgICBJbnRTaXplIGNvbnRlbnRCb3VuZHMoNTAwLCA1MDAp
OwogICAgIEludFJlY3QgY29udGVudFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgY29udGVudEJvdW5k
cyk7CiAgICAgSW50UmVjdCB2aXNpYmxlUmVjdCgyMDAsIDIwMCwgMTAwLCAxMDApOworICAgIFJl
Z2lvbiBub09jY2x1c2lvbjsKIAogICAgIC8vIFRoaXMgaW52YWxpZGF0ZXMgMjUgdGlsZXMgYW5k
IHRoZW4gcGFpbnRzIG9uZSB2aXNpYmxlIHRpbGUuCiAgICAgbGF5ZXItPnNldEJvdW5kcyhjb250
ZW50Qm91bmRzKTsKICAgICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdCh2aXNpYmxlUmVjdCk7
CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KGNvbnRlbnRSZWN0KTsKLSAgICBsYXllci0+cHJl
cGFyZVRvVXBkYXRlKHZpc2libGVSZWN0KTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKHZp
c2libGVSZWN0LCBub09jY2x1c2lvbik7CiAKICAgICAvLyBXZSBzaG91bGQgbmVlZCBpZGxlLXBh
aW50aW5nIGZvciAzeDMgdGlsZXMgaW4gdGhlIGNlbnRlci4KICAgICBFWFBFQ1RfVFJVRShsYXll
ci0+bmVlZHNJZGxlUGFpbnQodmlzaWJsZVJlY3QpKTsKQEAgLTI2OSw5ICsyODAsOSBAQCBURVNU
KFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hJZGxlUGFpbnRUaWxlcykKIAogICAgIC8vIEZv
ciB0aGUgbmV4dCBmb3VyIHVwZGF0ZXMsIHdlIHNob3VsZCBkZXRlY3Qgd2Ugc3RpbGwgbmVlZCBp
ZGxlIHBhaW50aW5nLgogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgaSsrKSB7Ci0gICAgICAg
IGxheWVyLT5wcmVwYXJlVG9VcGRhdGUodmlzaWJsZVJlY3QpOworICAgICAgICBsYXllci0+cHJl
cGFyZVRvVXBkYXRlKHZpc2libGVSZWN0LCBub09jY2x1c2lvbik7CiAgICAgICAgIEVYUEVDVF9U
UlVFKGxheWVyLT5uZWVkc0lkbGVQYWludCh2aXNpYmxlUmVjdCkpOwotICAgICAgICBsYXllci0+
cHJlcGFyZVRvVXBkYXRlSWRsZSh2aXNpYmxlUmVjdCk7CisgICAgICAgIGxheWVyLT5wcmVwYXJl
VG9VcGRhdGVJZGxlKHZpc2libGVSZWN0LCBub09jY2x1c2lvbik7CiAgICAgICAgIGxheWVyLT51
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwogICAgICAgICBsYXllci0+cHVz
aFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogICAgICAgICB0ZXh0dXJlTWFuYWdlci0+
dW5wcm90ZWN0QWxsVGV4dHVyZXMoKTsKQEAgLTI5OSw2ICszMTAsNyBAQCBURVNUKFRpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE91dE9mTWVtb3J5KQogICAgIEludFNpemUgY29udGVu
dEJvdW5kcygzMDAsIDMwMCk7CiAgICAgSW50UmVjdCBjb250ZW50UmVjdChJbnRQb2ludDo6emVy
bygpLCBjb250ZW50Qm91bmRzKTsKICAgICBJbnRSZWN0IHZpc2libGVSZWN0KDEwMCwgMTAwLCAx
MDAsIDEwMCk7CisgICAgUmVnaW9uIG5vT2NjbHVzaW9uOwogCiAgICAgLy8gV2UgaGF2ZSBlbm91
Z2ggbWVtb3J5IGZvciBvbmx5IHRoZSB2aXNpYmxlIHJlY3QsIHNvIHdlIHdpbGwgcnVuIG91dCBv
ZiBtZW1vcnkgaW4gZmlyc3QgaWRsZSBwYWludC4KICAgICBpbnQgbWVtb3J5TGltaXQgPSA0ICog
MTAwICogMTAwOyAvLyAyIHRpbGVzLCA0IGJ5dGVzIHBlciBwaXhlbC4KQEAgLTMxNSw3ICszMjcs
NyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE91dE9mTWVtb3J5KQog
ICAgIGxheWVyLT5zZXRCb3VuZHMoY29udGVudEJvdW5kcyk7CiAgICAgbGF5ZXItPnNldFZpc2li
bGVMYXllclJlY3QodmlzaWJsZVJlY3QpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChjb250
ZW50UmVjdCk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZSh2aXNpYmxlUmVjdCk7CisgICAg
bGF5ZXItPnByZXBhcmVUb1VwZGF0ZSh2aXNpYmxlUmVjdCwgbm9PY2NsdXNpb24pOwogCiAgICAg
Ly8gV2Ugc2hvdWxkIG5lZWQgaWRsZS1wYWludGluZyBmb3IgM3gzIHRpbGVzIHN1cm91bmRpbmcg
dmlzaWJsZSB0aWxlLgogICAgIEVYUEVDVF9UUlVFKGxheWVyLT5uZWVkc0lkbGVQYWludCh2aXNp
YmxlUmVjdCkpOwpAQCAtMzI3LDggKzMzOSw4IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVz
dCwgaWRsZVBhaW50T3V0T2ZNZW1vcnkpCiAgICAgRVhQRUNUX1RSVUUobGF5ZXJJbXBsLT5oYXNU
aWxlQXQoMSwgMSkpOwogCiAgICAgdGV4dHVyZU1hbmFnZXItPnVucHJvdGVjdEFsbFRleHR1cmVz
KCk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZSh2aXNpYmxlUmVjdCk7Ci0gICAgbGF5ZXIt
PnByZXBhcmVUb1VwZGF0ZUlkbGUodmlzaWJsZVJlY3QpOworICAgIGxheWVyLT5wcmVwYXJlVG9V
cGRhdGUodmlzaWJsZVJlY3QsIG5vT2NjbHVzaW9uKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBk
YXRlSWRsZSh2aXNpYmxlUmVjdCwgbm9PY2NsdXNpb24pOwogCiAgICAgLy8gV2Ugc2hvdWxkbid0
IHNpZ25hbCB3ZSBuZWVkIGFub3RoZXIgaWRsZSBwYWludCBhZnRlciB3ZSBydW4gb3V0IG9mIG1l
bW9yeS4KICAgICBFWFBFQ1RfRkFMU0UobGF5ZXItPm5lZWRzSWRsZVBhaW50KHZpc2libGVSZWN0
KSk7CkBAIC0zNDMsNiArMzU1LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpbnZh
bGlkYXRlRnJvbVByZXBhcmUpCiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxh
eWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIu
Z2V0KCkpKTsKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICBS
ZWZQdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1wbCA9IGFkb3B0UmVmKG5ldyBGYWtl
Q0NUaWxlZExheWVySW1wbCgwKSk7CisgICAgUmVnaW9uIG5vT2NjbHVzaW9uOwogCiAgICAgRmFr
ZVRleHR1cmVBbGxvY2F0b3IgdGV4dHVyZUFsbG9jYXRvcjsKICAgICBDQ1RleHR1cmVVcGRhdGVy
IHVwZGF0ZXIoJnRleHR1cmVBbGxvY2F0b3IpOwpAQCAtMzUwLDcgKzM2Myw3IEBAIFRFU1QoVGls
ZWRMYXllckNocm9taXVtVGVzdCwgaW52YWxpZGF0ZUZyb21QcmVwYXJlKQogICAgIC8vIFRoZSB0
aWxlIHNpemUgaXMgMTAweDEwMCwgc28gdGhpcyBpbnZhbGlkYXRlcyBhbmQgdGhlbiBwYWludHMg
dHdvIHRpbGVzLgogICAgIGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSgxMDAsIDIwMCkpOwogICAg
IGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7Ci0gICAgbGF5
ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CisgICAgbGF5ZXIt
PnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgbm9PY2NsdXNpb24pOwog
ICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwogICAgIGxh
eWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAKQEAgLTM2MywxOCArMzc2
LDE4IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaW52YWxpZGF0ZUZyb21QcmVwYXJl
KQogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVDb3Vu
dCgpOwogICAgIC8vIEludm9rZSBwcmVwYXJlVG9VcGRhdGUgYWdhaW4uIEFzIHRoZSBsYXllciBp
cyB2YWxpZCBwcmVwYXJlVG9VcGRhdGUgc2hvdWxkbid0IGJlIGludm9rZWQgb24KICAgICAvLyB0
aGUgTGF5ZXJUZXh0dXJlVXBkYXRlci4KLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJl
Y3QoMCwgMCwgMTAwLCAyMDApKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3Qo
MCwgMCwgMTAwLCAyMDApLCBub09jY2x1c2lvbik7CiAgICAgRVhQRUNUX0VRKDAsIGxheWVyLT5m
YWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlQ291bnQoKSk7CiAKICAgICBsYXllci0+
aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA1MCwgNTApKTsKICAgICAvLyBzZXRSZWN0VG9J
bnZhbGlkYXRlIHRyaWdnZXJzIGludmFsaWRhdGVSZWN0KCkgYmVpbmcgaW52b2tlZCBmcm9tIHBy
ZXBhcmVUb1VwZGF0ZS4KICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0
UmVjdFRvSW52YWxpZGF0ZShJbnRSZWN0KDI1LCAyNSwgNTAsIDUwKSwgbGF5ZXIuZ2V0KCkpOwog
ICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVDb3VudCgp
OwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwor
ICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIG5vT2Nj
bHVzaW9uKTsKICAgICBFWFBFQ1RfRVEoMSwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVy
KCktPnByZXBhcmVDb3VudCgpKTsKICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIo
KS0+Y2xlYXJQcmVwYXJlQ291bnQoKTsKICAgICAvLyBUaGUgbGF5ZXIgc2hvdWxkIHN0aWxsIGJl
IGludmFsaWQgYXMgcHJlcGFyZVRvVXBkYXRlIGludm9rZWQgaW52YWxpZGF0ZS4KLSAgICBsYXll
ci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKKyAgICBsYXllci0+
cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCBub09jY2x1c2lvbik7CiAg
ICAgRVhQRUNUX0VRKDEsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJl
Q291bnQoKSk7CiB9CiAKQEAgLTM4NSw2ICszOTgsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QsIHZlcmlmeVVwZGF0ZVJlY3RXaGVuQ29udGVudEJvdW5kc0FyZVNjYWxlZCkKIAogICAg
IE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6
Y3JlYXRlKDQqMTAyNCoxMDI0LCAyKjEwMjQqMTAyNCwgMTAyNCk7CiAgICAgUmVmUHRyPEZha2VU
aWxlZExheWVyV2l0aFNjYWxlZEJvdW5kcz4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVk
TGF5ZXJXaXRoU2NhbGVkQm91bmRzKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CisgICAgUmVnaW9u
IG5vT2NjbHVzaW9uOwogCiAgICAgRmFrZVRleHR1cmVBbGxvY2F0b3IgdGV4dHVyZUFsbG9jYXRv
cjsKICAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIoJnRleHR1cmVBbGxvY2F0b3IpOwpAQCAt
Mzk5LDIwICs0MTMsMjAgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2ZXJpZnlVcGRh
dGVSZWN0V2hlbkNvbnRlbnRCb3VuZHNBcmVTY2FsZWQpCiAgICAgLy8gT24gZmlyc3QgdXBkYXRl
LCB0aGUgdXBkYXRlUmVjdCBpbmNsdWRlcyBhbGwgdGlsZXMsIGV2ZW4gYmV5b25kIHRoZSBib3Vu
ZGFyaWVzIG9mIHRoZSBsYXllci4KICAgICAvLyBIb3dldmVyLCBpdCBzaG91bGQgc3RpbGwgYmUg
aW4gbGF5ZXIgc3BhY2UsIG5vdCBjb250ZW50IHNwYWNlLgogICAgIGxheWVyLT5pbnZhbGlkYXRl
UmVjdChjb250ZW50Qm91bmRzKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRC
b3VuZHMpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcywgbm9PY2Ns
dXNpb24pOwogICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIp
OwogICAgIEVYUEVDVF9GTE9BVF9SRUNUX0VRKEZsb2F0UmVjdCgwLCAwLCAzMDAsIDMwMCAqIDAu
OCksIGxheWVyLT51cGRhdGVSZWN0KCkpOwogCiAgICAgLy8gQWZ0ZXIgdGhlIHRpbGVzIGFyZSB1
cGRhdGVkIG9uY2UsIGFub3RoZXIgaW52YWxpZGF0ZSBvbmx5IG5lZWRzIHRvIHVwZGF0ZSB0aGUg
Ym91bmRzIG9mIHRoZSBsYXllci4KICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoY29udGVudEJv
dW5kcyk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzKTsKKyAgICBs
YXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMsIG5vT2NjbHVzaW9uKTsKICAgICBs
YXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKICAgICBFWFBFQ1Rf
RkxPQVRfUkVDVF9FUShGbG9hdFJlY3QobGF5ZXJCb3VuZHMpLCBsYXllci0+dXBkYXRlUmVjdCgp
KTsKIAogICAgIC8vIFBhcnRpYWwgcmUtcGFpbnQgc2hvdWxkIGFsc28gYmUgcmVwcmVzZW50ZWQg
YnkgdGhlIHVwZGF0ZVJlY3QgaW4gbGF5ZXIgc3BhY2UsIG5vdCBjb250ZW50IHNwYWNlLgogICAg
IEludFJlY3QgcGFydGlhbERhbWFnZSgzMCwgMTAwLCAxMCwgMTApOwogICAgIGxheWVyLT5pbnZh
bGlkYXRlUmVjdChwYXJ0aWFsRGFtYWdlKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNv
bnRlbnRCb3VuZHMpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcywg
bm9PY2NsdXNpb24pOwogICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVw
ZGF0ZXIpOwogICAgIEVYUEVDVF9GTE9BVF9SRUNUX0VRKEZsb2F0UmVjdCg0NSwgODAsIDE1LCA4
KSwgbGF5ZXItPnVwZGF0ZVJlY3QoKSk7CiB9CkBAIC00NzgsNiArNDkyLDcgQEAgVEVTVChUaWxl
ZExheWVyQ2hyb21pdW1UZXN0LCBsYXllckFkZHNTZWxmVG9PY2NsdWRlZFJlZ2lvbikKICAgICAv
LyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4g
cGFpbnRzIHR3byB0aWxlcyBpbiB2YXJpb3VzIHdheXMuCiAKICAgICBSZWdpb24gb2NjbHVkZWQ7
CisgICAgUmVnaW9uIG5vT2NjbHVzaW9uOwogICAgIEludFJlY3QgY29udGVudEJvdW5kcyA9IElu
dFJlY3QoMCwgMCwgMTAwLCAyMDApOwogICAgIEludFJlY3QgdmlzaWJsZUJvdW5kcyA9IEludFJl
Y3QoMCwgMCwgMTAwLCAxNTApOwogCkBAIC00OTIsNyArNTA3LDcgQEAgVEVTVChUaWxlZExheWVy
Q2hyb21pdW1UZXN0LCBsYXllckFkZHNTZWxmVG9PY2NsdWRlZFJlZ2lvbikKICAgICAvLyBJZiB0
aGUgbGF5ZXIgaXMgb3BhcXVlIHRoZW4gdGhlIG9jY2x1ZGVkIHJlZ2lvbiBzaG91bGQgYmUgdGhl
IHdob2xlIGxheWVyJ3MgdmlzaWJsZSByZWdpb24uCiAgICAgbGF5ZXItPnNldE9wYXF1ZSh0cnVl
KTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoY29udGVudEJvdW5kcyk7Ci0gICAgbGF5ZXIt
PnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBk
YXRlKGNvbnRlbnRCb3VuZHMsIG5vT2NjbHVzaW9uKTsKIAogICAgIG9jY2x1ZGVkID0gUmVnaW9u
KCk7CiAgICAgbGF5ZXItPmFkZFNlbGZUb09jY2x1ZGVkU2NyZWVuU3BhY2Uob2NjbHVkZWQpOwpA
QCAtNTAyLDcgKzUxNyw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgbGF5ZXJBZGRz
U2VsZlRvT2NjbHVkZWRSZWdpb24pCiAgICAgLy8gSWYgdGhlIGxheWVyIGlzIG5vdCBvcGFxdWUg
dGhlbiB0aGUgb2NjbHVkZWQgcmVnaW9uIHNob3VsZCBiZSBlbXB0eS4KICAgICBsYXllci0+c2V0
T3BhcXVlKGZhbHNlKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoY29udGVudEJvdW5kcyk7
Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzKTsKKyAgICBsYXllci0+
cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMsIG5vT2NjbHVzaW9uKTsKIAogICAgIG9jY2x1
ZGVkID0gUmVnaW9uKCk7CiAgICAgbGF5ZXItPmFkZFNlbGZUb09jY2x1ZGVkU2NyZWVuU3BhY2Uo
b2NjbHVkZWQpOwpAQCAtNTEzLDcgKzUyOCw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVz
dCwgbGF5ZXJBZGRzU2VsZlRvT2NjbHVkZWRSZWdpb24pCiAgICAgSW50UmVjdCBvcGFxdWVQYWlu
dFJlY3QgPSBJbnRSZWN0KDEwLCAxMCwgOTAsIDE5MCk7CiAgICAgbGF5ZXItPmZha2VMYXllclRl
eHR1cmVVcGRhdGVyKCktPnNldE9wYXF1ZVBhaW50UmVjdChvcGFxdWVQYWludFJlY3QpOwogICAg
IGxheWVyLT5pbnZhbGlkYXRlUmVjdChjb250ZW50Qm91bmRzKTsKLSAgICBsYXllci0+cHJlcGFy
ZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29u
dGVudEJvdW5kcywgbm9PY2NsdXNpb24pOwogCiAgICAgb2NjbHVkZWQgPSBSZWdpb24oKTsKICAg
ICBsYXllci0+YWRkU2VsZlRvT2NjbHVkZWRTY3JlZW5TcGFjZShvY2NsdWRlZCk7CkBAIC01MjIs
NyArNTM3LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBsYXllckFkZHNTZWxmVG9P
Y2NsdWRlZFJlZ2lvbikKIAogICAgIC8vIElmIHdlIHBhaW50IGFnYWluIHdpdGhvdXQgaW52YWxp
ZGF0aW5nLCB0aGUgc2FtZSBzdHVmZiBzaG91bGQgYmUgb2NjbHVkZWQuCiAgICAgbGF5ZXItPmZh
a2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNldE9wYXF1ZVBhaW50UmVjdChJbnRSZWN0KCkpOwot
ICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcyk7CisgICAgbGF5ZXItPnBy
ZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzLCBub09jY2x1c2lvbik7CiAKICAgICBvY2NsdWRl
ZCA9IFJlZ2lvbigpOwogICAgIGxheWVyLT5hZGRTZWxmVG9PY2NsdWRlZFNjcmVlblNwYWNlKG9j
Y2x1ZGVkKTsKQEAgLTUzOSw3ICs1NTQsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3Qs
IGxheWVyQWRkc1NlbGZUb09jY2x1ZGVkUmVnaW9uKQogICAgIHNjcmVlblNwYWNlVHJhbnNmb3Jt
ICo9IHRyYW5zZm9ybTsKICAgICBzY3JlZW5TcGFjZVRyYW5zZm9ybS50cmFuc2xhdGUoLWNvbnRl
bnRCb3VuZHMud2lkdGgoKSAvIDIuMCwgLWNvbnRlbnRCb3VuZHMuaGVpZ2h0KCkgLyAyLjApOwog
ICAgIGxheWVyLT5zZXRTY3JlZW5TcGFjZVRyYW5zZm9ybShzY3JlZW5TcGFjZVRyYW5zZm9ybSk7
Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzKTsKKyAgICBsYXllci0+
cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMsIG5vT2NjbHVzaW9uKTsKIAogICAgIG9jY2x1
ZGVkID0gUmVnaW9uKCk7CiAgICAgbGF5ZXItPmFkZFNlbGZUb09jY2x1ZGVkU2NyZWVuU3BhY2Uo
b2NjbHVkZWQpOwpAQCAtNTU0LDcgKzU2OSw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVz
dCwgbGF5ZXJBZGRzU2VsZlRvT2NjbHVkZWRSZWdpb24pCiAgICAgc2NyZWVuU3BhY2VUcmFuc2Zv
cm0gKj0gdHJhbnNmb3JtOwogICAgIHNjcmVlblNwYWNlVHJhbnNmb3JtLnRyYW5zbGF0ZSgtY29u
dGVudEJvdW5kcy53aWR0aCgpIC8gMi4wLCAtY29udGVudEJvdW5kcy5oZWlnaHQoKSAvIDIuMCk7
CiAgICAgbGF5ZXItPnNldFNjcmVlblNwYWNlVHJhbnNmb3JtKHNjcmVlblNwYWNlVHJhbnNmb3Jt
KTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMpOworICAgIGxheWVy
LT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcywgbm9PY2NsdXNpb24pOwogCiAgICAgb2Nj
bHVkZWQgPSBSZWdpb24oKTsKICAgICBsYXllci0+YWRkU2VsZlRvT2NjbHVkZWRTY3JlZW5TcGFj
ZShvY2NsdWRlZCk7CkBAIC01NjQsNCArNTc5LDE0MSBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QsIGxheWVyQWRkc1NlbGZUb09jY2x1ZGVkUmVnaW9uKQogICAgIEVYUEVDVF9FUSgwdSwg
b2NjbHVkZWQucmVjdHMoKS5zaXplKCkpOwogfQogCitURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRl
c3QsIHRpbGVzUGFpbnRlZFdpdGhvdXRPY2NsdXNpb24pCit7CisgICAgT3duUHRyPFRleHR1cmVN
YW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEw
MjQsIDIqMTAyNCoxMDI0LCAxMDI0KTsKKyAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1
bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFu
YWdlci5nZXQoKSkpOworICAgIFJlZ2lvbiBvY2NsdWRlZDsKKworICAgIC8vIFRoZSB0aWxlIHNp
emUgaXMgMTAweDEwMCwgc28gdGhpcyBpbnZhbGlkYXRlcyBhbmQgdGhlbiBwYWludHMgdHdvIHRp
bGVzLgorICAgIGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSgxMDAsIDIwMCkpOworCisgICAgbGF5
ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKKyAgICBsYXllci0+
cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCBvY2NsdWRlZCk7CisgICAg
RVhQRUNUX0VRKDIsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVj
dENvdW50KCkpOworfQorCitURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRl
ZFdpdGhPY2NsdXNpb24pCit7CisgICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFu
YWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDIqMTAyNCoxMDI0LCAx
MDI0KTsKKyAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJl
ZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOworICAg
IFJlZ2lvbiBvY2NsdWRlZDsKKworICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMC4KKwor
ICAgIGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSg2MDAsIDYwMCkpOworCisgICAgb2NjbHVkZWQg
PSBJbnRSZWN0KDIwMCwgMjAwLCAzMDAsIDEwMCk7CisgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0
KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKElu
dFJlY3QoMCwgMCwgNjAwLCA2MDApLCBvY2NsdWRlZCk7CisgICAgRVhQRUNUX0VRKDM2LTMsIGxh
eWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOworCisg
ICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyUHJlcGFyZVJlY3RDb3Vu
dCgpOworCisgICAgb2NjbHVkZWQgPSBJbnRSZWN0KDI1MCwgMjAwLCAzMDAsIDEwMCk7CisgICAg
bGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKKyAgICBsYXll
ci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCBvY2NsdWRlZCk7Cisg
ICAgRVhQRUNUX0VRKDM2LTIsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVw
YXJlUmVjdENvdW50KCkpOworCisgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCkt
PmNsZWFyUHJlcGFyZVJlY3RDb3VudCgpOworCisgICAgb2NjbHVkZWQgPSBJbnRSZWN0KDI1MCwg
MjUwLCAzMDAsIDEwMCk7CisgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwg
NjAwLCA2MDApKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNjAw
LCA2MDApLCBvY2NsdWRlZCk7CisgICAgRVhQRUNUX0VRKDM2LCBsYXllci0+ZmFrZUxheWVyVGV4
dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKK30KKworVEVTVChUaWxlZExheWVy
Q2hyb21pdW1UZXN0LCB0aWxlc05vdFBhaW50ZWRXaXRob3V0SW52YWxpZGF0aW9uKQoreworICAg
IE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6
Y3JlYXRlKDQqMTAyNCoxMDI0LCAyKjEwMjQqMTAyNCwgMTAyNCk7CisgICAgUmVmUHRyPEZha2VU
aWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hy
b21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKKyAgICBSZWdpb24gb2NjbHVkZWQ7CisKKyAg
ICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAuCisKKyAgICBsYXllci0+c2V0Qm91bmRzKElu
dFNpemUoNjAwLCA2MDApKTsKKworICAgIG9jY2x1ZGVkID0gSW50UmVjdCgyMDAsIDIwMCwgMzAw
LCAxMDApOworICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoMCwgMCwgNjAw
LCA2MDApKTsKKyAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYw
MCkpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCks
IG9jY2x1ZGVkKTsKKyAgICBFWFBFQ1RfRVEoMzYtMywgbGF5ZXItPmZha2VMYXllclRleHR1cmVV
cGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CisKKyAgICBsYXllci0+ZmFrZUxheWVyVGV4
dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQcmVwYXJlUmVjdENvdW50KCk7CisKKyAgICAvLyBSZXBhaW50
IHdpdGhvdXQgbWFya2luZyBpdCBkaXJ0eS4KKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKElu
dFJlY3QoMCwgMCwgNjAwLCA2MDApLCBvY2NsdWRlZCk7CisgICAgRVhQRUNUX0VRKDAsIGxheWVy
LT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOworfQorCitU
RVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb25BbmRU
cmFuc2Zvcm1zKQoreworICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIg
PSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAyKjEwMjQqMTAyNCwgMTAyNCk7
CisgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3
IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKKyAgICBSZWdp
b24gb2NjbHVkZWQ7CisKKyAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAuCisKKyAgICAv
LyBUaGlzIG1ha2VzIHN1cmUgdGhlIHBhaW50aW5nIHdvcmtzIHdoZW4gdGhlIG9jY2x1ZGVkIHJl
Z2lvbiAoaW4gc2NyZWVuIHNwYWNlKQorICAgIC8vIGlzIHRyYW5zZm9ybWVkIGRpZmZlcmVudGx5
IHRoYW4gdGhlIGxheWVyLgorICAgIGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSg2MDAsIDYwMCkp
OworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHNjcmVlblRyYW5zZm9ybTsKKyAgICBzY3JlZW5U
cmFuc2Zvcm0uc2NhbGUoMC41KTsKKyAgICBsYXllci0+c2V0U2NyZWVuU3BhY2VUcmFuc2Zvcm0o
c2NyZWVuVHJhbnNmb3JtKTsKKworICAgIG9jY2x1ZGVkID0gSW50UmVjdCgxMDAsIDEwMCwgMTUw
LCA1MCk7CisgICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdChJbnRQb2ludCgp
LCBsYXllci0+Ym91bmRzKCkpKTsKKyAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgw
LCAwLCA2MDAsIDYwMCkpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAw
LCA2MDAsIDYwMCksIG9jY2x1ZGVkKTsKKyAgICBFWFBFQ1RfRVEoMzYtMywgbGF5ZXItPmZha2VM
YXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7Cit9CisKK1RFU1QoVGls
ZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFNjYWxpbmcp
Cit7CisgICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVN
YW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDIqMTAyNCoxMDI0LCAxMDI0KTsKKyAgICBSZWZQ
dHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVk
TGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOworICAgIFJlZ2lvbiBvY2NsdWRl
ZDsKKworICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMC4KKworICAgIC8vIFRoaXMgbWFr
ZXMgc3VyZSB0aGUgcGFpbnRpbmcgd29ya3Mgd2hlbiB0aGUgY29udGVudCBzcGFjZSBpcyBzY2Fs
ZWQgdG8KKyAgICAvLyBhIGRpZmZlcmVudCBsYXllciBzcGFjZS4gSW4gdGhpcyBjYXNlIHRpbGVz
IGFyZSBzY2FsZWQgdG8gYmUgMjAweDIwMAorICAgIC8vIHBpeGVscywgd2hpY2ggbWVhbnMgbm9u
ZSBzaG91bGQgYmUgb2NjbHVkZWQuCisgICAgbGF5ZXItPnNldENvbnRlbnRzU2NhbGUoMC41KTsK
KyAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoNjAwLCA2MDApKTsKKworICAgIG9jY2x1ZGVk
ID0gSW50UmVjdCgyMDAsIDIwMCwgMzAwLCAxMDApOworICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5
ZXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXItPmJvdW5kcygpKSk7CisgICAgbGF5ZXIt
PmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKKyAgICBsYXllci0+cHJl
cGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCBvY2NsdWRlZCk7CisgICAgLy8g
VGhlIGNvbnRlbnQgaXMgaGFsZiB0aGUgc2l6ZSBvZiB0aGUgbGF5ZXIgKHNvIHRoZSBudW1iZXIg
b2YgdGlsZXMgaXMgZmV3ZXIpLgorICAgIC8vIEluIHRoaXMgY2FzZSwgdGhlIGNvbnRlbnQgaXMg
MzAweDMwMCwgYW5kIHNpbmNlIHRoZSB0aWxlIHNpemUgaXMgMTAwLCB0aGUKKyAgICAvLyBudW1i
ZXIgb2YgdGlsZXMgM3gzLgorICAgIEVYUEVDVF9FUSg5LCBsYXllci0+ZmFrZUxheWVyVGV4dHVy
ZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKKworICAgIGxheWVyLT5mYWtlTGF5ZXJU
ZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVSZWN0Q291bnQoKTsKKworICAgIC8vIFRoaXMg
bWFrZXMgc3VyZSB0aGUgcGFpbnRpbmcgd29ya3Mgd2hlbiB0aGUgY29udGVudCBzcGFjZSBpcyBz
Y2FsZWQgdG8KKyAgICAvLyBhIGRpZmZlcmVudCBsYXllciBzcGFjZS4gSW4gdGhpcyBjYXNlIHRo
ZSBvY2NsdWRlZCByZWdpb24gY2F0Y2hlcyB0aGUKKyAgICAvLyBibG93biB1cCB0aWxlcy4KKyAg
ICBvY2NsdWRlZCA9IEludFJlY3QoMjAwLCAyMDAsIDMwMCwgMjAwKTsKKyAgICBsYXllci0+c2V0
VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KEludFBvaW50KCksIGxheWVyLT5ib3VuZHMoKSkpOwor
ICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CisgICAg
bGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgb2NjbHVkZWQp
OworICAgIEVYUEVDVF9FUSg5LTEsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5w
cmVwYXJlUmVjdENvdW50KCkpOworCisgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVy
KCktPmNsZWFyUHJlcGFyZVJlY3RDb3VudCgpOworCisgICAgLy8gVGhpcyBtYWtlcyBzdXJlIGNv
bnRlbnQgc2NhbGluZyBhbmQgdHJhbnNmb3JtcyB3b3JrIHRvZ2V0aGVyLgorICAgIFRyYW5zZm9y
bWF0aW9uTWF0cml4IHNjcmVlblRyYW5zZm9ybTsKKyAgICBzY3JlZW5UcmFuc2Zvcm0uc2NhbGUo
MC41KTsKKyAgICBsYXllci0+c2V0U2NyZWVuU3BhY2VUcmFuc2Zvcm0oc2NyZWVuVHJhbnNmb3Jt
KTsKKworICAgIG9jY2x1ZGVkID0gSW50UmVjdCgxMDAsIDEwMCwgMTUwLCAxMDApOworICAgIGxh
eWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXItPmJvdW5k
cygpKSk7CisgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDAp
KTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCBv
Y2NsdWRlZCk7CisgICAgRVhQRUNUX0VRKDktMSwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRh
dGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124667</attachid>
            <date>2012-01-30 21:07:02 -0800</date>
            <delta_ts>2012-01-30 22:41:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76838-20120131000700.patch</filename>
            <type>text/plain</type>
            <size>39602</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTdkOGM5ZjM0ODM3ZGQy
MGY4M2I5MTNjMGUwNWM2NzU1ZDdkOTlmYS4uNGRmMDBjNWQzNTg5NjEzNTEwMjA1YzM4YzQ2M2Mw
NTI5MDY4OWZiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM0IEBACiAyMDEyLTAxLTMwICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFtjaHJvbWl1bV0gQ3Vs
bCBvY2NsdWRlZCB0aWxlcyBkdXJpbmcgcGFpbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc2ODM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTmV3IHVuaXQgdGVzdHMgaW4gVGlsZWRMYXllckNocm9taXVt
VGVzdC5jcHAKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRM
YXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRMYXllckNocm9taXVt
OjpwYWludENvbnRlbnRzSWZEaXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJD
aHJvbWl1bTo6aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoQ29udGVu
dExheWVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0lt
YWdlTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxheWVyQ2hyb21p
dW06OnBhaW50Q29udGVudHNJZkRpcnR5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllckNocm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVt
OjppZGxlUGFpbnRDb250ZW50c0lmRGlydHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWdp
b25Db250YWluc1JlY3QpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpU
aWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWRsZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmg6CisgICAgICAg
IChUaWxlZExheWVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJl
ZUhvc3Q6OnBhaW50Q29udGVudHNJZkRpcnR5KToKKworMjAxMi0wMS0zMCAgRGFuYSBKYW5zZW5z
ICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKwogICAgICAgICBbY2hyb21pdW1dIENvbXB1dGUgb2Nj
bHVzaW9uIGR1cmluZyBwYWludCBsb29wCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03Njg1OAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDNl
OTY3OWUyNjhlMWViNWNkOTU5OWU2ZTk1ZmU2NGMxMGRiODJiOTguLjk5Y2JiMzhlYzdjZDljYWZh
ODg1NzMxNTA5ZDUyMDU2MzA2M2QyYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0x
LDUgKzEsMzEgQEAKIDIwMTItMDEtMzAgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5v
cmc+CiAKKyAgICAgICAgW2Nocm9taXVtXSBDdWxsIG9jY2x1ZGVkIHRpbGVzIGR1cmluZyBwYWlu
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzY4MzgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHRlc3Rz
L0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJv
bWl1bVdpdGhVcGRhdGVUcmFja2luZzo6aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KToKKyAgICAg
ICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdExheWVyT2NjbHVzaW9uOjpiZWdpblRlc3QpOgor
ICAgICAgICAqIHRlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgorICAgICAgICAoV1RG
OjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6VGV4dHVyZSk6CisgICAgICAgIChX
VEY6OkZha2VMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpwcmVwYXJlUmVjdCk6CisgICAg
ICAgIChUZXh0dXJlKToKKyAgICAgICAgKFdURjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OkZh
a2VMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKFdURjo6RmFrZUxheWVyVGV4dHVyZVVw
ZGF0ZXI6OnNldE9wYXF1ZVBhaW50UmVjdCk6CisgICAgICAgIChGYWtlTGF5ZXJUZXh0dXJlVXBk
YXRlcik6CisgICAgICAgIChXVEY6OkZha2VMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlUmVj
dENvdW50KToKKyAgICAgICAgKFdURjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OmNsZWFyUHJl
cGFyZVJlY3RDb3VudCk6CisgICAgICAgIChXVEY6OkZha2VMYXllclRleHR1cmVVcGRhdGVyOjpj
cmVhdGVUZXh0dXJlKToKKyAgICAgICAgKFdURjo6RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJl
cGFyZVRvVXBkYXRlKToKKyAgICAgICAgKFdURjo6RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJl
cGFyZVRvVXBkYXRlSWRsZSk6CisgICAgICAgIChXVEY6OkZha2VUaWxlZExheWVyQ2hyb21pdW06
OnBhaW50Q29udGVudHNJZkRpcnR5KToKKyAgICAgICAgKFdURjo6VEVTVCk6CisgICAgICAgIChX
VEYpOgorCisyMDEyLTAxLTMwICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgor
CiAgICAgICAgIFtjaHJvbWl1bV0gQ29tcHV0ZSBvY2NsdXNpb24gZHVyaW5nIHBhaW50IGxvb3AK
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2ODU4CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Nv
bnRlbnRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcAppbmRleCAzNDMwMzExMGZhOWNhZmRm
MjZjYTliY2ZlZDZlMjRjNGY0MDJmMmFhLi5lMGY1OGZmNjQ1ZjRhZWE5YmFhOWI0ZWEwNDFhNWE1
ODIwMjI5NTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCkBAIC05Myw3
ICs5Myw3IEBAIGJvb2wgQ29udGVudExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgpIGNvbnN0
CiAgICAgcmV0dXJuIFRpbGVkTGF5ZXJDaHJvbWl1bTo6ZHJhd3NDb250ZW50KCkgJiYgbV9kZWxl
Z2F0ZTsKIH0KIAotdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGly
dHkoY29uc3QgUmVnaW9uJiAvKiBvY2NsdWRlZFNjcmVlblNwYWNlICovKQordm9pZCBDb250ZW50
TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uJiBvY2NsdWRl
ZFNjcmVlblNwYWNlKQogewogICAgIHVwZGF0ZVRpbGVTaXplQW5kVGlsaW5nT3B0aW9uKCk7CiAK
QEAgLTEwNCwxMSArMTA0LDExIEBAIHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OnBhaW50Q29u
dGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgLyogb2NjbHVkZWRTY3JlZW5TCiAgICAgaWYgKGRy
YXdzQ29udGVudCgpKQogICAgICAgICBsYXllclJlY3QgPSB2aXNpYmxlTGF5ZXJSZWN0KCk7CiAK
LSAgICBwcmVwYXJlVG9VcGRhdGUobGF5ZXJSZWN0KTsKKyAgICBwcmVwYXJlVG9VcGRhdGUobGF5
ZXJSZWN0LCBvY2NsdWRlZFNjcmVlblNwYWNlKTsKICAgICBtX25lZWRzRGlzcGxheSA9IGZhbHNl
OwogfQogCi12b2lkIENvbnRlbnRMYXllckNocm9taXVtOjppZGxlUGFpbnRDb250ZW50c0lmRGly
dHkoKQordm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6aWRsZVBhaW50Q29udGVudHNJZkRpcnR5
KGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSkKIHsKICAgICBpZiAoIWRyYXdzQ29u
dGVudCgpKQogICAgICAgICByZXR1cm47CkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBDb250ZW50
TGF5ZXJDaHJvbWl1bTo6aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KCkKICAgICBpZiAobGF5ZXJS
ZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJlcGFyZVRvVXBkYXRlSWRs
ZShsYXllclJlY3QpOworICAgIHByZXBhcmVUb1VwZGF0ZUlkbGUobGF5ZXJSZWN0LCBvY2NsdWRl
ZFNjcmVlblNwYWNlKTsKICAgICBpZiAobmVlZHNJZGxlUGFpbnQobGF5ZXJSZWN0KSkKICAgICAg
ICAgc2V0TmVlZHNDb21taXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCmlu
ZGV4IDVlZmY2YTNkNjBhMTJkMTIwZWI3MjAwMGQzNTBiMWZiNTgzOGVhODMuLjgyOTJiNTgzN2Zk
NjgwZjkyMTc1MGUxODdjNTY1MmViM2Y3YTIzM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hy
b21pdW0uaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgZHJh
d3NDb250ZW50KCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5
KGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSk7Ci0gICAgdmlydHVhbCB2b2lkIGlk
bGVQYWludENvbnRlbnRzSWZEaXJ0eSgpOworICAgIHZpcnR1YWwgdm9pZCBpZGxlUGFpbnRDb250
ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uJiBvY2NsdWRlZFNjcmVlblNwYWNlKTsKIAogICAgIHZp
cnR1YWwgdm9pZCBzZXRPcGFxdWUoYm9vbCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0u
Y3BwCmluZGV4IDgzMWNiZTgwOTYzYTNhODAwYjhhYTQ2YTY5OTQ4ZjRmYzdmNWVjN2UuLmFkNWVm
YzZlNmY1ZTg3MGY0Y2RmNjFiMWZjNmI2NTI1YmEyYWU5NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXll
ckNocm9taXVtLmNwcApAQCAtMTU4LDcgKzE1OCw3IEBAIHZvaWQgSW1hZ2VMYXllckNocm9taXVt
OjpzZXRDb250ZW50cyhJbWFnZSogY29udGVudHMpCiAgICAgc2V0TmVlZHNEaXNwbGF5KCk7CiB9
CiAKLXZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBS
ZWdpb24mIC8qIG9jY2x1ZGVkU2NyZWVuU3BhY2UgKi8pCit2b2lkIEltYWdlTGF5ZXJDaHJvbWl1
bTo6cGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uJiBvY2NsdWRlZFNjcmVlblNwYWNl
KQogewogICAgIGlmIChtX25lZWRzRGlzcGxheSkgewogICAgICAgICBtX3RleHR1cmVVcGRhdGVy
LT51cGRhdGVGcm9tSW1hZ2UobV9jb250ZW50cy0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUo
KSk7CkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OnBhaW50Q29u
dGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgLyogb2NjbHVkZWRTY3JlZW5TcGEKICAgICAgICAg
bV9uZWVkc0Rpc3BsYXkgPSBmYWxzZTsKICAgICB9CiAKLSAgICBwcmVwYXJlVG9VcGRhdGUodmlz
aWJsZUxheWVyUmVjdCgpKTsKKyAgICBwcmVwYXJlVG9VcGRhdGUodmlzaWJsZUxheWVyUmVjdCgp
LCBvY2NsdWRlZFNjcmVlblNwYWNlKTsKIH0KIAogTGF5ZXJUZXh0dXJlVXBkYXRlciogSW1hZ2VM
YXllckNocm9taXVtOjp0ZXh0dXJlVXBkYXRlcigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKaW5k
ZXggNzY0ZjczMDE1NWI1NDUzN2NkYTRjNzM4MWIzZmQzYmNiNzk2MDY0ZC4uODZmMmVhNzc5ZmQ5
YTVlYTQxZDJhMWU3MmRlZjQ5NTEyMWNlOWRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaApAQCAtMTU1
LDcgKzE1NSw3IEBAIHB1YmxpYzoKICAgICAvLyBUaGVzZSBtZXRob2RzIHR5cGljYWxseSBuZWVk
IHRvIGJlIG92ZXJ3cml0dGVuIGJ5IGRlcml2ZWQgY2xhc3Nlcy4KICAgICB2aXJ0dWFsIGJvb2wg
ZHJhd3NDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9pc0RyYXdhYmxlOyB9CiAgICAgdmlydHVh
bCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgLyogb2NjbHVkZWRTY3Jl
ZW5TcGFjZSAqLykgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGlkbGVQYWludENvbnRlbnRzSWZEaXJ0
eSgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBpZGxlUGFpbnRDb250ZW50c0lmRGlydHkoY29uc3Qg
UmVnaW9uJiAvKiBvY2NsdWRlZFNjcmVlblNwYWNlICovKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVw
ZGF0ZXImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0SXNNYXNrKGJvb2wpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCB1bnJlc2VydmVDb250ZW50c1RleHR1cmUoKSB7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExh
eWVyQ2hyb21pdW0uY3BwCmluZGV4IDI4M2FhOGRkMDliYTIzZmQ3NDQzM2FjYTMyYTY3MzUzODgz
YzlhMDAuLjlkMDg2MmIzMjhjODhhZWZhYjA1OTY2YTMwODdiZjYxYzI0MjQwMzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJD
aHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVGlsZWRMYXllckNocm9taXVtLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIk1h
dGhFeHRyYXMuaCIKICNpbmNsdWRlICJSZWdpb24uaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgi
CisjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCiAj
aW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgImNjL0NDVGlsZWRMYXll
ckltcGwuaCIKQEAgLTM2Myw3ICszNjQsMTkgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnBy
b3RlY3RUaWxlVGV4dHVyZXMoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQogICAgIH0KIH0KIAot
dm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wgaWRsZSwg
aW50IGxlZnQsIGludCB0b3AsIGludCByaWdodCwgaW50IGJvdHRvbSkKK3N0YXRpYyBib29sIHJl
Z2lvbkNvbnRhaW5zUmVjdChjb25zdCBSZWdpb24mIHJlZ2lvbiwgY29uc3QgSW50UmVjdCYgcmVj
dCkKK3sKKyAgICBSZWdpb24gcmVjdFJlZ2lvbihyZWN0KTsKKyAgICBSZWdpb24gaW50ZXJzZWN0
UmVnaW9uKGludGVyc2VjdChyZWdpb24sIHJlY3RSZWdpb24pKTsKKworICAgIGlmIChpbnRlcnNl
Y3RSZWdpb24uaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZWN0UmVn
aW9uLnN1YnRyYWN0KGludGVyc2VjdFJlZ2lvbik7CisgICAgcmV0dXJuIHJlY3RSZWdpb24uaXNF
bXB0eSgpOworfQorCit2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlVGls
ZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50IHJpZ2h0LCBpbnQgYm90dG9tLCBj
b25zdCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVuU3BhY2UpCiB7CiAgICAgLy8gUmVzZXQgbV91cGRh
dGVSZWN0IGZvciBhbGwgdGlsZXMuCiAgICAgZm9yIChDQ0xheWVyVGlsaW5nRGF0YTo6VGlsZU1h
cDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1fdGlsZXItPnRpbGVzKCkuYmVnaW4oKTsgaXRlciAh
PSBtX3RpbGVyLT50aWxlcygpLmVuZCgpOyArK2l0ZXIpIHsKQEAgLTM3MSw2ICszODQsOSBAQCB2
b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBp
bnQgbGVmdCwgaW50IHRvcCwgaW50CiAgICAgICAgIHRpbGUtPm1fdXBkYXRlUmVjdCA9IEludFJl
Y3QoKTsKICAgICB9CiAKKyAgICAvLyBUaWxlcyBhcmUgaW4gdGhlIGxheWVyJ3MgY29udGVudCBz
cGFjZSwgdGhlIG9jY2x1ZGVkIHJlZ2lvbiBpcyBpbiBzY3JlZW4gc3BhY2UuCisgICAgVHJhbnNm
b3JtYXRpb25NYXRyaXggY29udGVudFRvU2NyZWVuU3BhY2UgPSBjb250ZW50VG9TY3JlZW5TcGFj
ZVRyYW5zZm9ybSgpOworCiAgICAgLy8gQ3JlYXRlIHRpbGVzIGFzIG5lZWRlZCwgZXhwYW5kaW5n
IGEgZGlydHkgcmVjdCB0byBjb250YWluIGFsbAogICAgIC8vIHRoZSBkaXJ0eSByZWdpb25zIGN1
cnJlbnRseSBiZWluZyBkcmF3bi4gQWxsIGRpcnR5IHRpbGVzIHRoYXQgYXJlIHRvIGJlIHBhaW50
ZWQKICAgICAvLyBnZXQgdGhlaXIgbV91cGRhdGVSZWN0IHNldCB0byBtX2RpcnR5UmVjdCBhbmQg
bV9kaXJ0eVJlY3QgY2xlYXJlZC4gVGhpcyB3YXkgaWYKQEAgLTM4MiwxMyArMzk4LDI1IEBAIHZv
aWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVUaWxlcyhib29sIGlkbGUsIGlu
dCBsZWZ0LCBpbnQgdG9wLCBpbnQKICAgICAgICAgICAgIGlmICghdGlsZSkKICAgICAgICAgICAg
ICAgICB0aWxlID0gY3JlYXRlVGlsZShpLCBqKTsKIAorICAgICAgICAgICAgLy8gV2hlbiBub3Qg
aWRsZSBwYWludGluZywgaWYgdGhlIHRpbGUgaXMgb2NjbHVkZWQgZG9uJ3QgcmVzZXJ2ZSBhIHRl
eHR1cmUgb3IgbWFyayBpdCBmb3IgdXBkYXRlLiBUaGlzIHdpbGwgYWxzbyBhdm9pZCBwYWludGlu
ZworICAgICAgICAgICAgLy8gdGhlIHRpbGUgaW4gdGhlIG5leHQgbG9vcCwgYmVsb3cuCisgICAg
ICAgICAgICBpZiAoIWlkbGUpIHsKKyAgICAgICAgICAgICAgICBJbnRSZWN0IHRpbGVSZWN0ID0g
bV90aWxlci0+dGlsZUJvdW5kcyhpLCBqKTsKKyAgICAgICAgICAgICAgICBpZiAocmVnaW9uQ29u
dGFpbnNSZWN0KG9jY2x1ZGVkU2NyZWVuU3BhY2UsIGNvbnRlbnRUb1NjcmVlblNwYWNlLm1hcFJl
Y3QodGlsZVJlY3QpKSkgeworICAgICAgICAgICAgICAgICAgICBUUkFDRV9FVkVOVCgiVGlsZWRM
YXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVUaWxlczo6Y3VsbGluZ09jY2x1ZGVkVGlsZSIs
IHRoaXMsIDApOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIC8vIERvIHBvc3QgY29tbWl0IGRlbGV0
aW9uIG9mIGN1cnJlbnQgdGV4dHVyZSB3aGVuIHBhcnRpYWwgdGV4dHVyZQogICAgICAgICAgICAg
Ly8gdXBkYXRlcyBhcmUgbm90IHVzZWQuCiAgICAgICAgICAgICBpZiAodGlsZS0+aXNEaXJ0eSgp
ICYmIGxheWVyVHJlZUhvc3QoKSAmJiAhbGF5ZXJUcmVlSG9zdCgpLT5zZXR0aW5ncygpLnBhcnRp
YWxUZXh0dXJlVXBkYXRlcykKICAgICAgICAgICAgICAgICBsYXllclRyZWVIb3N0KCktPmRlbGV0
ZVRleHR1cmVBZnRlckNvbW1pdCh0aWxlLT5tYW5hZ2VkVGV4dHVyZSgpLT5zdGVhbCgpKTsKIAot
ICAgICAgICAgICAgaWYgKCF0aWxlLT5tYW5hZ2VkVGV4dHVyZSgpLT5pc1ZhbGlkKG1fdGlsZXIt
PnRpbGVTaXplKCksIG1fdGV4dHVyZUZvcm1hdCkpCisgICAgICAgICAgICBpZiAoIXRpbGUtPm1h
bmFnZWRUZXh0dXJlKCktPmlzVmFsaWQobV90aWxlci0+dGlsZVNpemUoKSwgbV90ZXh0dXJlRm9y
bWF0KSkgeworICAgICAgICAgICAgICAgIC8vIFNldHMgdGhlIGRpcnR5IHJlY3QgdG8gYSBmdWxs
LXNpemVkIHRpbGUgd2l0aCBib3JkZXIgdGV4ZWxzLgogICAgICAgICAgICAgICAgIHRpbGUtPm1f
ZGlydHlSZWN0ID0gbV90aWxlci0+dGlsZVJlY3QodGlsZSk7CisgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIGlmICghdGlsZS0+bWFuYWdlZFRleHR1cmUoKS0+cmVzZXJ2ZShtX3RpbGVyLT50
aWxlU2l6ZSgpLCBtX3RleHR1cmVGb3JtYXQpKSB7CiAgICAgICAgICAgICAgICAgbV9za2lwc0lk
bGVQYWludCA9IHRydWU7CkBAIC00NDEsNyArNDY5LDcgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21p
dW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wgaWRsZSwgaW50IGxlZnQsIGludCB0b3AsIGlu
dAogICAgICAgICAgICAgaWYgKHRpbGVQYWludGVkT3BhcXVlUmVjdCAhPSB0aWxlUGFpbnRlZFJl
Y3QgfHwgIXRpbGUtPm1fb3BhcXVlUmVjdC5jb250YWlucyh0aWxlUGFpbnRlZE9wYXF1ZVJlY3Qp
KQogICAgICAgICAgICAgICAgIHRpbGUtPm1fb3BhcXVlUmVjdCA9IHRpbGVQYWludGVkT3BhcXVl
UmVjdDsKIAotICAgICAgICAgICAgLy8gVXNlIG1fdXBkYXRlUmVjdCBhcyBjb3B5QW5kQ2xlYXJE
aXJ0eSBhYm92ZSBtb3ZlZCB0aGUgZXhpc3RpbmcgZGlydHkgcmVjdCB0byBtX3VwZGF0ZVJlY3Qu
CisgICAgICAgICAgICAvLyBVc2UgbV91cGRhdGVSZWN0IGFzIGNvcHlBbmRDbGVhckRpcnR5IGFi
b3ZlIG1vdmVkIHRoZSBleGlzdGluZyBkaXJ0eSByZWN0IHRvIG1fdXBkYXRlUmVjdCBpZiB0aGUg
dGlsZSBpc24ndCBjdWxsZWQuCiAgICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3Qg
PSB0aWxlLT5tX3VwZGF0ZVJlY3Q7CiAgICAgICAgICAgICBpZiAoZGlydHlSZWN0LmlzRW1wdHko
KSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTUxNyw3ICs1NDUsNyBAQCB2b2lkIFRp
bGVkTGF5ZXJDaHJvbWl1bTo6YWRkU2VsZlRvT2NjbHVkZWRTY3JlZW5TcGFjZShSZWdpb24mIG9j
Y2x1ZGVkU2NyZWVuU3BhYwogICAgIH0KIH0KIAotdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnBy
ZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpCit2b2lkIFRpbGVkTGF5ZXJD
aHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3Qg
UmVnaW9uJiBvY2NsdWRlZFNjcmVlblNwYWNlKQogewogICAgIG1fc2tpcHNEcmF3ID0gZmFsc2U7
CiAgICAgbV9za2lwc0lkbGVQYWludCA9IGZhbHNlOwpAQCAtNTMyLDEwICs1NjAsMTAgQEAgdm9p
ZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBsYXll
clJlY3QpCiAgICAgaW50IGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbTsKICAgICBtX3RpbGVyLT5s
YXllclJlY3RUb1RpbGVJbmRpY2VzKGxheWVyUmVjdCwgbGVmdCwgdG9wLCByaWdodCwgYm90dG9t
KTsKIAotICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKGZhbHNlLCBsZWZ0LCB0b3AsIHJpZ2h0LCBi
b3R0b20pOworICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKGZhbHNlLCBsZWZ0LCB0b3AsIHJpZ2h0
LCBib3R0b20sIG9jY2x1ZGVkU2NyZWVuU3BhY2UpOwogfQogCi12b2lkIFRpbGVkTGF5ZXJDaHJv
bWl1bTo6cHJlcGFyZVRvVXBkYXRlSWRsZShjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpCit2b2lk
IFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWRsZShjb25zdCBJbnRSZWN0JiBs
YXllclJlY3QsIGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSkKIHsKICAgICAvLyBB
Ym9ydCBpZiB3ZSBoYXZlIGFscmVhZHkgcHJlcGFyZWQgYSBwYWludCBvciBydW4gb3V0IG9mIG1l
bW9yeS4KICAgICBpZiAobV9za2lwc0lkbGVQYWludCB8fCAhbV9wYWludFJlY3QuaXNFbXB0eSgp
KQpAQCAtNTUzLDMzICs1ODEsMzkgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVU
b1VwZGF0ZUlkbGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQogICAgIEludFJlY3QgaWRsZVBh
aW50TGF5ZXJSZWN0ID0gaWRsZVBhaW50UmVjdChsYXllclJlY3QpOwogICAgIHByb3RlY3RUaWxl
VGV4dHVyZXMoaWRsZVBhaW50TGF5ZXJSZWN0KTsKIAotICAgIC8vIEV4cGFuZCBvdXR3YXJkcyB1
bnRpbCB3ZSBmaW5kIGEgZGlydHkgcm93IG9yIGNvbHVtbiB0byB1cGRhdGUuCiAgICAgaW50IGxl
ZnQsIHRvcCwgcmlnaHQsIGJvdHRvbTsKICAgICBtX3RpbGVyLT5sYXllclJlY3RUb1RpbGVJbmRp
Y2VzKGxheWVyUmVjdCwgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tKTsKKworICAgIC8vIFByZXBh
aW50IGFueXRoaW5nIHRoYXQgd2FzIG9jY2x1ZGVkIGJ1dCBpbnNpZGUgdGhlIGxheWVyJ3Mgdmlz
aWJsZSByZWdpb24uCisgICAgcHJlcGFyZVRvVXBkYXRlVGlsZXModHJ1ZSwgbGVmdCwgYm90dG9t
LCByaWdodCwgYm90dG9tLCBvY2NsdWRlZFNjcmVlblNwYWNlKTsKKyAgICBpZiAoIW1fcGFpbnRS
ZWN0LmlzRW1wdHkoKSB8fCBtX3NraXBzSWRsZVBhaW50KQorICAgICAgICByZXR1cm47CisKKyAg
ICAvLyBFeHBhbmQgb3V0d2FyZHMgdW50aWwgd2UgZmluZCBhIGRpcnR5IHJvdyBvciBjb2x1bW4g
dG8gdXBkYXRlLgogICAgIGludCBwcmVwYWludExlZnQsIHByZXBhaW50VG9wLCBwcmVwYWludFJp
Z2h0LCBwcmVwYWludEJvdHRvbTsKICAgICBtX3RpbGVyLT5sYXllclJlY3RUb1RpbGVJbmRpY2Vz
KGlkbGVQYWludExheWVyUmVjdCwgcHJlcGFpbnRMZWZ0LCBwcmVwYWludFRvcCwgcHJlcGFpbnRS
aWdodCwgcHJlcGFpbnRCb3R0b20pOwogICAgIHdoaWxlICghbV9za2lwc0lkbGVQYWludCAmJiAo
bGVmdCA+IHByZXBhaW50TGVmdCB8fCB0b3AgPiBwcmVwYWludFRvcCB8fCByaWdodCA8IHByZXBh
aW50UmlnaHQgfHwgYm90dG9tIDwgcHJlcGFpbnRCb3R0b20pKSB7CiAgICAgICAgIGlmIChib3R0
b20gPCBwcmVwYWludEJvdHRvbSkgewogICAgICAgICAgICAgKytib3R0b207Ci0gICAgICAgICAg
ICBwcmVwYXJlVG9VcGRhdGVUaWxlcyh0cnVlLCBsZWZ0LCBib3R0b20sIHJpZ2h0LCBib3R0b20p
OworICAgICAgICAgICAgcHJlcGFyZVRvVXBkYXRlVGlsZXModHJ1ZSwgbGVmdCwgYm90dG9tLCBy
aWdodCwgYm90dG9tLCBvY2NsdWRlZFNjcmVlblNwYWNlKTsKICAgICAgICAgICAgIGlmICghbV9w
YWludFJlY3QuaXNFbXB0eSgpIHx8IG1fc2tpcHNJZGxlUGFpbnQpCiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHRvcCA+IHByZXBhaW50VG9wKSB7CiAgICAg
ICAgICAgICAtLXRvcDsKLSAgICAgICAgICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKHRydWUsIGxl
ZnQsIHRvcCwgcmlnaHQsIHRvcCk7CisgICAgICAgICAgICBwcmVwYXJlVG9VcGRhdGVUaWxlcyh0
cnVlLCBsZWZ0LCB0b3AsIHJpZ2h0LCB0b3AsIG9jY2x1ZGVkU2NyZWVuU3BhY2UpOwogICAgICAg
ICAgICAgaWYgKCFtX3BhaW50UmVjdC5pc0VtcHR5KCkgfHwgbV9za2lwc0lkbGVQYWludCkKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAobGVmdCA+IHByZXBh
aW50TGVmdCkgewogICAgICAgICAgICAgLS1sZWZ0OwotICAgICAgICAgICAgcHJlcGFyZVRvVXBk
YXRlVGlsZXModHJ1ZSwgbGVmdCwgdG9wLCBsZWZ0LCBib3R0b20pOworICAgICAgICAgICAgcHJl
cGFyZVRvVXBkYXRlVGlsZXModHJ1ZSwgbGVmdCwgdG9wLCBsZWZ0LCBib3R0b20sIG9jY2x1ZGVk
U2NyZWVuU3BhY2UpOwogICAgICAgICAgICAgaWYgKCFtX3BhaW50UmVjdC5pc0VtcHR5KCkgfHwg
bV9za2lwc0lkbGVQYWludCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICBpZiAocmlnaHQgPCBwcmVwYWludFJpZ2h0KSB7CiAgICAgICAgICAgICArK3JpZ2h0Owot
ICAgICAgICAgICAgcHJlcGFyZVRvVXBkYXRlVGlsZXModHJ1ZSwgcmlnaHQsIHRvcCwgcmlnaHQs
IGJvdHRvbSk7CisgICAgICAgICAgICBwcmVwYXJlVG9VcGRhdGVUaWxlcyh0cnVlLCByaWdodCwg
dG9wLCByaWdodCwgYm90dG9tLCBvY2NsdWRlZFNjcmVlblNwYWNlKTsKICAgICAgICAgICAgIGlm
ICghbV9wYWludFJlY3QuaXNFbXB0eSgpIHx8IG1fc2tpcHNJZGxlUGFpbnQpCiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKaW5kZXgg
M2NiYmJjYmQ3YTQ1MjU0MjM1ZTM5NTU1MDIwYzMwMzY4ZTcxZWM0Ni4uNjU1YTliNDM3NmQ3NTc1
NmMyZGJlYTg0NWUzY2FhMjgyNmU2NThkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgK
QEAgLTg1LDEwICs4NSwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBpbnZhbGlkYXRlUmVjdChj
b25zdCBJbnRSZWN0JiBsYXllclJlY3QpOwogCiAgICAgLy8gUHJlcGFyZSBkYXRhIG5lZWRlZCB0
byB1cGRhdGUgdGV4dHVyZXMgdGhhdCBpbnRlcnNlY3Qgd2l0aCBsYXllclJlY3QuCi0gICAgdm9p
ZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KTsKKyAgICB2b2lkIHBy
ZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBsYXllclJlY3QsIGNvbnN0IFJlZ2lvbiYgb2Nj
bHVkZWRUYXJnZXRTcGFjZSk7CiAKICAgICAvLyBTYW1lIGFzIGFib3ZlLCBidXQgdGhpcyB3aWxs
IHRyeSB0byBwYWludCBhZGRpdGlvbmFsIHN1cnJvdW5kaW5nIGNvbnRlbnQgaWYgaWRsZS4KLSAg
ICB2b2lkIHByZXBhcmVUb1VwZGF0ZUlkbGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KTsKKyAg
ICB2b2lkIHByZXBhcmVUb1VwZGF0ZUlkbGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0LCBjb25z
dCBSZWdpb24mIG9jY2x1ZGVkVGFyZ2V0U3BhY2UpOwogCiAgICAgLy8gQWZ0ZXIgcHJlcGFyaW5n
IGFuIHVwZGF0ZSwgcmV0dXJucyB0cnVlIGlmIG1vcmUgcHJlLXBhaW50aW5nIGlzIG5lZWRlZC4K
ICAgICBib29sIG5lZWRzSWRsZVBhaW50KGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCk7CkBAIC0x
MDcsNyArMTA3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZVRpbGVySWZOZWVkZWQoKTsK
ICAgICB2b2lkIHNldFRpbGluZ09wdGlvbihUaWxpbmdPcHRpb24pOwogCi0gICAgdm9pZCBwcmVw
YXJlVG9VcGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQgcmlnaHQs
IGludCBib3R0b20pOworICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBp
bnQgbGVmdCwgaW50IHRvcCwgaW50IHJpZ2h0LCBpbnQgYm90dG9tLCBjb25zdCBSZWdpb24mIG9j
Y2x1ZGVkVGFyZ2V0U3BhY2UpOwogICAgIEludFJlY3QgaWRsZVBhaW50UmVjdChjb25zdCBJbnRS
ZWN0JiB2aXNpYmxlTGF5ZXJSZWN0KTsKIAogICAgIFVwZGF0YWJsZVRpbGUqIHRpbGVBdChpbnQs
IGludCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRleCA0ZmY4NDM0
YjIwMGM5MmQ0OGEwOGJmOTFjMTRiMjdmODIxOWRkYWI2Li5mZGY1MzE4OGNhNWMxZjI0MDVjMDdj
YTNhOGU1YmM5OGE3YmRiOTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAg
LTQyMSw3ICs0MjEsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRDb250ZW50c0lmRGly
dHkoTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIFBhaW50VHlwZSBwYWludAogICAgIGlmIChQYWludFZp
c2libGUgPT0gcGFpbnRUeXBlKQogICAgICAgICBsYXllci0+cGFpbnRDb250ZW50c0lmRGlydHko
b2NjbHVkZWRTY3JlZW5TcGFjZSk7CiAgICAgZWxzZQotICAgICAgICBsYXllci0+aWRsZVBhaW50
Q29udGVudHNJZkRpcnR5KCk7CisgICAgICAgIGxheWVyLT5pZGxlUGFpbnRDb250ZW50c0lmRGly
dHkob2NjbHVkZWRTY3JlZW5TcGFjZSk7CiB9CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWlu
dE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9taXVtKiByZW5kZXJTdXJm
YWNlTGF5ZXIsIFBhaW50VHlwZSBwYWludFR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAppbmRleCAxZmVjMzI0MjE2MjM0
ZjU3NmVhYmY0NWFiYTFkN2U0YmE5MDQ0ZTkxLi5mYmFiZjYzNzRjZWM5OTM1YzYyYzY5OTVhYzli
ZmE2Y2VhMzQ3ZmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
TGF5ZXJUcmVlSG9zdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NMYXllclRyZWVIb3N0VGVzdC5jcHAKQEAgLTEwMTIsOSArMTAxMiw5IEBAIHB1YmxpYzoKICAg
ICAgICAgbV9wYWludENvbnRlbnRzQ291bnQrKzsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KCkKKyAgICB2aXJ0dWFsIHZvaWQgaWRsZVBhaW50Q29u
dGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWQpCiAgICAgewotICAgICAgICBDb250
ZW50TGF5ZXJDaHJvbWl1bTo6aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KCk7CisgICAgICAgIENv
bnRlbnRMYXllckNocm9taXVtOjppZGxlUGFpbnRDb250ZW50c0lmRGlydHkob2NjbHVkZWQpOwog
ICAgICAgICBtX2lkbGVQYWludENvbnRlbnRzQ291bnQrKzsKICAgICB9CiAKQEAgLTE0MTYsNyAr
MTQxNiw3IEBAIHB1YmxpYzoKICAgICAgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhn
cmFuZENoaWxkLmdldCgpLCBjaGlsZC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQo
MCwgMCksIEZsb2F0UG9pbnQoMTAsIDEwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUpOwogCiAg
ICAgICAgIGNoaWxkLT5zZXRNYXNrTGF5ZXIoMCk7Ci0gICAgICAgIGNoaWxkLT5zZXREcmF3T3Bh
Y2l0eSgwLjUpOworICAgICAgICBjaGlsZC0+c2V0T3BhY2l0eSgwLjUpOwogCiAgICAgICAgIG1f
bGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKHJvb3RMYXllcik7CiAgICAgICAgIG1fbGF5ZXJU
cmVlSG9zdC0+c2V0Vmlld3BvcnRTaXplKHJvb3RMYXllci0+Ym91bmRzKCkpOwpAQCAtMTQzOSw3
ICsxNDM5LDcgQEAgcHVibGljOgogICAgICAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5n
KGNoaWxkMi5nZXQoKSwgcm9vdExheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2lu
dCgwLCAwKSwgRmxvYXRQb2ludCgxMCwgNzApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSk7CiAK
ICAgICAgICAgY2hpbGQtPnNldE1hc2tMYXllcigwKTsKLSAgICAgICAgY2hpbGQtPnNldERyYXdP
cGFjaXR5KDAuNSk7CisgICAgICAgIGNoaWxkLT5zZXRPcGFjaXR5KDAuNSk7CiAKICAgICAgICAg
bV9sYXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIocm9vdExheWVyKTsKICAgICAgICAgbV9sYXll
clRyZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUocm9vdExheWVyLT5ib3VuZHMoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3Qu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0
LmNwcAppbmRleCBiMDM1MGRiNDk1ZmI1NjJiMzU4MTQwODdlZjY0MTBkNzYxOTViYTc1Li5kYTMy
ZGZhOGJlYmQ3YjkwYzBmM2MwNzYwNDA1Njc0N2U2NDgwZGJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKQEAg
LTYwLDM0ICs2MCw0NyBAQCBjbGFzcyBGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlciA6IHB1YmxpYyBM
YXllclRleHR1cmVVcGRhdGVyIHsKIHB1YmxpYzoKICAgICBjbGFzcyBUZXh0dXJlIDogcHVibGlj
IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgewogICAgIHB1YmxpYzoKLSAgICAgICAgVGV4
dHVyZShQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKSA6IExheWVyVGV4dHVyZVVw
ZGF0ZXI6OlRleHR1cmUodGV4dHVyZSkgeyB9CisgICAgICAgIFRleHR1cmUoUGFzc093blB0cjxN
YW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSwgRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIqIHVwZGF0ZXIp
CisgICAgICAgICAgICA6IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUodGV4dHVyZSkKKyAg
ICAgICAgICAgICwgbV91cGRhdGVyKHVwZGF0ZXIpCisgICAgICAgIHsKKyAgICAgICAgfQogICAg
ICAgICB2aXJ0dWFsIH5UZXh0dXJlKCkgeyB9CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVj
dCYsIGNvbnN0IEludFJlY3QmKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVSZWN0
KGNvbnN0IEludFJlY3QmKSB7ICsrbV91cGRhdGVyLT5tX3ByZXBhcmVSZWN0Q291bnQ7IH0KKwor
ICAgIHByaXZhdGU6CisgICAgICAgIEZha2VMYXllclRleHR1cmVVcGRhdGVyKiBtX3VwZGF0ZXI7
CiAgICAgfTsKIAotICAgIEZha2VMYXllclRleHR1cmVVcGRhdGVyKCkgOiBtX3ByZXBhcmVDb3Vu
dCgwKSB7IH0KKyAgICBGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpIDogbV9wcmVwYXJlQ291bnQo
MCksIG1fcHJlcGFyZVJlY3RDb3VudCgwKSB7IH0KICAgICB2aXJ0dWFsIH5GYWtlTGF5ZXJUZXh0
dXJlVXBkYXRlcigpIHsgfQogCiAgICAgLy8gU2V0cyB0aGUgcmVjdCB0byBpbnZhbGlkYXRlIGR1
cmluZyB0aGUgbmV4dCBjYWxsIHRvIHByZXBhcmVUb1VwZGF0ZSgpLiBBZnRlciB0aGUgbmV4dAog
ICAgIC8vIGNhbGwgdG8gcHJlcGFyZVRvVXBkYXRlKCkgdGhlIHJlY3QgaXMgcmVzZXQuCiAgICAg
dm9pZCBzZXRSZWN0VG9JbnZhbGlkYXRlKGNvbnN0IEludFJlY3QmLCBGYWtlVGlsZWRMYXllckNo
cm9taXVtKik7CiAKKyAgICB2b2lkIHNldE9wYXF1ZVBhaW50UmVjdChjb25zdCBJbnRSZWN0JiBv
cGFxdWVQYWludFJlY3QpIHsgbV9vcGFxdWVQYWludFJlY3QgPSBvcGFxdWVQYWludFJlY3Q7IH0K
KwogICAgIC8vIE51bWJlciBvZiB0aW1lcyBwcmVwYXJlVG9VcGRhdGUgaGFzIGJlZW4gaW52b2tl
ZC4KICAgICBpbnQgcHJlcGFyZUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9wcmVwYXJlQ291bnQ7
IH0KICAgICB2b2lkIGNsZWFyUHJlcGFyZUNvdW50KCkgeyBtX3ByZXBhcmVDb3VudCA9IDA7IH0K
IAotICAgIHZvaWQgc2V0T3BhcXVlUGFpbnRSZWN0KGNvbnN0IEludFJlY3QmIG9wYXF1ZVBhaW50
UmVjdCkgeyBtX29wYXF1ZVBhaW50UmVjdCA9IG9wYXF1ZVBhaW50UmVjdDsgfQorICAgIC8vIE51
bWJlciBvZiB0aW1lcyBwcmVwYXJlUmVjdCBoYXMgYmVlbiBpbnZva2VkIG9uIGEgdGV4dHVyZS4K
KyAgICBpbnQgcHJlcGFyZVJlY3RDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlcGFyZVJlY3RD
b3VudDsgfQorICAgIHZvaWQgY2xlYXJQcmVwYXJlUmVjdENvdW50KCkgeyBtX3ByZXBhcmVSZWN0
Q291bnQgPSAwOyB9CiAKICAgICAvLyBMYXN0IHJlY3QgcGFzc2VkIHRvIHByZXBhcmVUb1VwZGF0
ZSgpLgogICAgIGNvbnN0IEludFJlY3QmIGxhc3RVcGRhdGVSZWN0KCkgIGNvbnN0IHsgcmV0dXJu
IG1fbGFzdFVwZGF0ZVJlY3Q7IH0KIAotICAgIHZpcnR1YWwgUGFzc093blB0cjxMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKiBtYW5hZ2Vy
KSB7IHJldHVybiBhZG9wdFB0cihuZXcgVGV4dHVyZShNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKG1h
bmFnZXIpKSk7IH0KKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VGV4dHVyZT4gY3JlYXRlVGV4dHVyZShUZXh0dXJlTWFuYWdlciogbWFuYWdlcikgeyByZXR1cm4g
YWRvcHRQdHIobmV3IFRleHR1cmUoTWFuYWdlZFRleHR1cmU6OmNyZWF0ZShtYW5hZ2VyKSwgdGhp
cykpOyB9CiAgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0
KEdDM0RlbnVtKSB7IHJldHVybiBTYW1wbGVkVGV4ZWxGb3JtYXRSR0JBOyB9CiAgICAgdmlydHVh
bCB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3Qg
SW50U2l6ZSYsIGludCwgZmxvYXQsIEludFJlY3QqIHJlc3VsdGluZ09wYXF1ZVJlY3QpOwogCiBw
cml2YXRlOgogICAgIGludCBtX3ByZXBhcmVDb3VudDsKKyAgICBpbnQgbV9wcmVwYXJlUmVjdENv
dW50OwogICAgIEludFJlY3QgbV9yZWN0VG9JbnZhbGlkYXRlOwogICAgIEludFJlY3QgbV9sYXN0
VXBkYXRlUmVjdDsKICAgICBJbnRSZWN0IG1fb3BhcXVlUGFpbnRSZWN0OwpAQCAtMTI1LDE0ICsx
MzgsMTQgQEAgcHVibGljOgogICAgICAgICBUaWxlZExheWVyQ2hyb21pdW06OmludmFsaWRhdGVS
ZWN0KHJlY3QpOwogICAgIH0KIAotICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJl
Y3QmIHJlY3QpCisgICAgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgcmVjdCwg
Y29uc3QgUmVnaW9uJiBvY2NsdWRlZCkKICAgICB7Ci0gICAgICAgIFRpbGVkTGF5ZXJDaHJvbWl1
bTo6cHJlcGFyZVRvVXBkYXRlKHJlY3QpOworICAgICAgICBUaWxlZExheWVyQ2hyb21pdW06OnBy
ZXBhcmVUb1VwZGF0ZShyZWN0LCBvY2NsdWRlZCk7CiAgICAgfQogCi0gICAgdm9pZCBwcmVwYXJl
VG9VcGRhdGVJZGxlKGNvbnN0IEludFJlY3QmIHJlY3QpCisgICAgdm9pZCBwcmVwYXJlVG9VcGRh
dGVJZGxlKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWQpCiAgICAg
ewotICAgICAgICBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlkbGUocmVjdCk7
CisgICAgICAgIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWRsZShyZWN0LCBv
Y2NsdWRlZCk7CiAgICAgfQogCiAgICAgYm9vbCBuZWVkc0lkbGVQYWludChjb25zdCBJbnRSZWN0
JiByZWN0KQpAQCAtMTQ5LDkgKzE2Miw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgVGV4dHVy
ZU1hbmFnZXIqIHRleHR1cmVNYW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlTWFuYWdl
cjsgfQogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lv
biYgLyogb2NjbHVkZWRTY3JlZW5TcGFjZSAqLykKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250
ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uJiBvY2NsdWRlZFNjcmVlblNwYWNlKQogICAgIHsKLSAg
ICAgICAgcHJlcGFyZVRvVXBkYXRlKHZpc2libGVMYXllclJlY3QoKSk7CisgICAgICAgIHByZXBh
cmVUb1VwZGF0ZSh2aXNpYmxlTGF5ZXJSZWN0KCksIG9jY2x1ZGVkU2NyZWVuU3BhY2UpOwogICAg
IH0KIAogcHJpdmF0ZToKQEAgLTIwNiw2ICsyMTksNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QsIHB1c2hEaXJ0eVRpbGVzKQogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVt
PiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5h
Z2VyLmdldCgpKSk7CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAg
ICAgUmVmUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwgPSBhZG9wdFJlZihuZXcg
RmFrZUNDVGlsZWRMYXllckltcGwoMCkpOworICAgIFJlZ2lvbiBub09jY2x1c2lvbjsKIAogICAg
IEZha2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7CiAgICAgQ0NUZXh0dXJlVXBk
YXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsKQEAgLTIxMyw3ICsyMjcsNyBAQCBURVNU
KFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hEaXJ0eVRpbGVzKQogICAgIC8vIFRoZSB0aWxl
IHNpemUgaXMgMTAweDEwMCwgc28gdGhpcyBpbnZhbGlkYXRlcyBhbmQgdGhlbiBwYWludHMgdHdv
IHRpbGVzLgogICAgIGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSgxMDAsIDIwMCkpOwogICAgIGxh
eWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7Ci0gICAgbGF5ZXIt
PnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CisgICAgbGF5ZXItPnBy
ZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgbm9PY2NsdXNpb24pOwogICAg
IGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwogICAgIGxheWVy
LT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAKQEAgLTIyNiw3ICsyNDAsNyBA
QCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hEaXJ0eVRpbGVzKQogICAgIC8vIElu
dmFsaWRhdGVzIGJvdGggdGlsZXMuLi4KICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVj
dCgwLCAwLCAxMDAsIDIwMCkpOwogICAgIC8vIC4uLi5idXQgdGhlbiBvbmx5IHVwZGF0ZSBvbmUg
b2YgdGhlbS4KLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAx
MDApKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAxMDAp
LCBub09jY2x1c2lvbik7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwg
dXBkYXRlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsK
IApAQCAtMjQ5LDEyICsyNjMsMTMgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNo
SWRsZVBhaW50VGlsZXMpCiAgICAgSW50U2l6ZSBjb250ZW50Qm91bmRzKDUwMCwgNTAwKTsKICAg
ICBJbnRSZWN0IGNvbnRlbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIGNvbnRlbnRCb3VuZHMpOwog
ICAgIEludFJlY3QgdmlzaWJsZVJlY3QoMjAwLCAyMDAsIDEwMCwgMTAwKTsKKyAgICBSZWdpb24g
bm9PY2NsdXNpb247CiAKICAgICAvLyBUaGlzIGludmFsaWRhdGVzIDI1IHRpbGVzIGFuZCB0aGVu
IHBhaW50cyBvbmUgdmlzaWJsZSB0aWxlLgogICAgIGxheWVyLT5zZXRCb3VuZHMoY29udGVudEJv
dW5kcyk7CiAgICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3QodmlzaWJsZVJlY3QpOwogICAg
IGxheWVyLT5pbnZhbGlkYXRlUmVjdChjb250ZW50UmVjdCk7Ci0gICAgbGF5ZXItPnByZXBhcmVU
b1VwZGF0ZSh2aXNpYmxlUmVjdCk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZSh2aXNpYmxl
UmVjdCwgbm9PY2NsdXNpb24pOwogCiAgICAgLy8gV2Ugc2hvdWxkIG5lZWQgaWRsZS1wYWludGlu
ZyBmb3IgM3gzIHRpbGVzIGluIHRoZSBjZW50ZXIuCiAgICAgRVhQRUNUX1RSVUUobGF5ZXItPm5l
ZWRzSWRsZVBhaW50KHZpc2libGVSZWN0KSk7CkBAIC0yNjksOSArMjg0LDkgQEAgVEVTVChUaWxl
ZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoSWRsZVBhaW50VGlsZXMpCiAKICAgICAvLyBGb3IgdGhl
IG5leHQgZm91ciB1cGRhdGVzLCB3ZSBzaG91bGQgZGV0ZWN0IHdlIHN0aWxsIG5lZWQgaWRsZSBw
YWludGluZy4KICAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKykgewotICAgICAgICBsYXll
ci0+cHJlcGFyZVRvVXBkYXRlKHZpc2libGVSZWN0KTsKKyAgICAgICAgbGF5ZXItPnByZXBhcmVU
b1VwZGF0ZSh2aXNpYmxlUmVjdCwgbm9PY2NsdXNpb24pOwogICAgICAgICBFWFBFQ1RfVFJVRShs
YXllci0+bmVlZHNJZGxlUGFpbnQodmlzaWJsZVJlY3QpKTsKLSAgICAgICAgbGF5ZXItPnByZXBh
cmVUb1VwZGF0ZUlkbGUodmlzaWJsZVJlY3QpOworICAgICAgICBsYXllci0+cHJlcGFyZVRvVXBk
YXRlSWRsZSh2aXNpYmxlUmVjdCwgbm9PY2NsdXNpb24pOwogICAgICAgICBsYXllci0+dXBkYXRl
Q29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKICAgICAgICAgbGF5ZXItPnB1c2hQcm9w
ZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKICAgICAgICAgdGV4dHVyZU1hbmFnZXItPnVucHJv
dGVjdEFsbFRleHR1cmVzKCk7CkBAIC0yOTksNiArMzE0LDcgQEAgVEVTVChUaWxlZExheWVyQ2hy
b21pdW1UZXN0LCBpZGxlUGFpbnRPdXRPZk1lbW9yeSkKICAgICBJbnRTaXplIGNvbnRlbnRCb3Vu
ZHMoMzAwLCAzMDApOwogICAgIEludFJlY3QgY29udGVudFJlY3QoSW50UG9pbnQ6Onplcm8oKSwg
Y29udGVudEJvdW5kcyk7CiAgICAgSW50UmVjdCB2aXNpYmxlUmVjdCgxMDAsIDEwMCwgMTAwLCAx
MDApOworICAgIFJlZ2lvbiBub09jY2x1c2lvbjsKIAogICAgIC8vIFdlIGhhdmUgZW5vdWdoIG1l
bW9yeSBmb3Igb25seSB0aGUgdmlzaWJsZSByZWN0LCBzbyB3ZSB3aWxsIHJ1biBvdXQgb2YgbWVt
b3J5IGluIGZpcnN0IGlkbGUgcGFpbnQuCiAgICAgaW50IG1lbW9yeUxpbWl0ID0gNCAqIDEwMCAq
IDEwMDsgLy8gMiB0aWxlcywgNCBieXRlcyBwZXIgcGl4ZWwuCkBAIC0zMTUsNyArMzMxLDcgQEAg
VEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRPdXRPZk1lbW9yeSkKICAgICBs
YXllci0+c2V0Qm91bmRzKGNvbnRlbnRCb3VuZHMpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5
ZXJSZWN0KHZpc2libGVSZWN0KTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoY29udGVudFJl
Y3QpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUodmlzaWJsZVJlY3QpOworICAgIGxheWVy
LT5wcmVwYXJlVG9VcGRhdGUodmlzaWJsZVJlY3QsIG5vT2NjbHVzaW9uKTsKIAogICAgIC8vIFdl
IHNob3VsZCBuZWVkIGlkbGUtcGFpbnRpbmcgZm9yIDN4MyB0aWxlcyBzdXJvdW5kaW5nIHZpc2li
bGUgdGlsZS4KICAgICBFWFBFQ1RfVFJVRShsYXllci0+bmVlZHNJZGxlUGFpbnQodmlzaWJsZVJl
Y3QpKTsKQEAgLTMyNyw4ICszNDMsOCBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlk
bGVQYWludE91dE9mTWVtb3J5KQogICAgIEVYUEVDVF9UUlVFKGxheWVySW1wbC0+aGFzVGlsZUF0
KDEsIDEpKTsKIAogICAgIHRleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RBbGxUZXh0dXJlcygpOwot
ICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUodmlzaWJsZVJlY3QpOwotICAgIGxheWVyLT5wcmVw
YXJlVG9VcGRhdGVJZGxlKHZpc2libGVSZWN0KTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRl
KHZpc2libGVSZWN0LCBub09jY2x1c2lvbik7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZUlk
bGUodmlzaWJsZVJlY3QsIG5vT2NjbHVzaW9uKTsKIAogICAgIC8vIFdlIHNob3VsZG4ndCBzaWdu
YWwgd2UgbmVlZCBhbm90aGVyIGlkbGUgcGFpbnQgYWZ0ZXIgd2UgcnVuIG91dCBvZiBtZW1vcnku
CiAgICAgRVhQRUNUX0ZBTFNFKGxheWVyLT5uZWVkc0lkbGVQYWludCh2aXNpYmxlUmVjdCkpOwpA
QCAtMzQzLDYgKzM1OSw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaW52YWxpZGF0
ZUZyb21QcmVwYXJlKQogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9
IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgp
KSk7CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgUmVmUHRy
PEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwgPSBhZG9wdFJlZihuZXcgRmFrZUNDVGls
ZWRMYXllckltcGwoMCkpOworICAgIFJlZ2lvbiBub09jY2x1c2lvbjsKIAogICAgIEZha2VUZXh0
dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7CiAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRh
dGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsKQEAgLTM1MCw3ICszNjcsNyBAQCBURVNUKFRpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QsIGludmFsaWRhdGVGcm9tUHJlcGFyZSkKICAgICAvLyBUaGUgdGlsZSBz
aXplIGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0
aWxlcy4KICAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAyMDApKTsKICAgICBsYXll
ci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwotICAgIGxheWVyLT5w
cmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOworICAgIGxheWVyLT5wcmVw
YXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIG5vT2NjbHVzaW9uKTsKICAgICBs
YXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKICAgICBsYXllci0+
cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCkBAIC0zNjMsMTggKzM4MCwxOCBA
QCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGludmFsaWRhdGVGcm9tUHJlcGFyZSkKICAg
ICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQcmVwYXJlQ291bnQoKTsK
ICAgICAvLyBJbnZva2UgcHJlcGFyZVRvVXBkYXRlIGFnYWluLiBBcyB0aGUgbGF5ZXIgaXMgdmFs
aWQgcHJlcGFyZVRvVXBkYXRlIHNob3VsZG4ndCBiZSBpbnZva2VkIG9uCiAgICAgLy8gdGhlIExh
eWVyVGV4dHVyZVVwZGF0ZXIuCi0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAs
IDAsIDEwMCwgMjAwKSk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAs
IDEwMCwgMjAwKSwgbm9PY2NsdXNpb24pOwogICAgIEVYUEVDVF9FUSgwLCBsYXllci0+ZmFrZUxh
eWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZUNvdW50KCkpOwogCiAgICAgbGF5ZXItPmludmFs
aWRhdGVSZWN0KEludFJlY3QoMCwgMCwgNTAsIDUwKSk7CiAgICAgLy8gc2V0UmVjdFRvSW52YWxp
ZGF0ZSB0cmlnZ2VycyBpbnZhbGlkYXRlUmVjdCgpIGJlaW5nIGludm9rZWQgZnJvbSBwcmVwYXJl
VG9VcGRhdGUuCiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNldFJlY3RU
b0ludmFsaWRhdGUoSW50UmVjdCgyNSwgMjUsIDUwLCA1MCksIGxheWVyLmdldCgpKTsKICAgICBs
YXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQcmVwYXJlQ291bnQoKTsKLSAg
ICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKKyAgICBs
YXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCBub09jY2x1c2lv
bik7CiAgICAgRVhQRUNUX0VRKDEsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5w
cmVwYXJlQ291bnQoKSk7CiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNs
ZWFyUHJlcGFyZUNvdW50KCk7CiAgICAgLy8gVGhlIGxheWVyIHNob3VsZCBzdGlsbCBiZSBpbnZh
bGlkIGFzIHByZXBhcmVUb1VwZGF0ZSBpbnZva2VkIGludmFsaWRhdGUuCi0gICAgbGF5ZXItPnBy
ZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CisgICAgbGF5ZXItPnByZXBh
cmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgbm9PY2NsdXNpb24pOwogICAgIEVY
UEVDVF9FUSgxLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZUNvdW50
KCkpOwogfQogCkBAIC0zODUsNiArNDAyLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0
LCB2ZXJpZnlVcGRhdGVSZWN0V2hlbkNvbnRlbnRCb3VuZHNBcmVTY2FsZWQpCiAKICAgICBPd25Q
dHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0
ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRM
YXllcldpdGhTY2FsZWRCb3VuZHM+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVy
V2l0aFNjYWxlZEJvdW5kcyh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOworICAgIFJlZ2lvbiBub09j
Y2x1c2lvbjsKIAogICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7CiAg
ICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsKQEAgLTM5OSwy
MCArNDE3LDIwIEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdmVyaWZ5VXBkYXRlUmVj
dFdoZW5Db250ZW50Qm91bmRzQXJlU2NhbGVkKQogICAgIC8vIE9uIGZpcnN0IHVwZGF0ZSwgdGhl
IHVwZGF0ZVJlY3QgaW5jbHVkZXMgYWxsIHRpbGVzLCBldmVuIGJleW9uZCB0aGUgYm91bmRhcmll
cyBvZiB0aGUgbGF5ZXIuCiAgICAgLy8gSG93ZXZlciwgaXQgc2hvdWxkIHN0aWxsIGJlIGluIGxh
eWVyIHNwYWNlLCBub3QgY29udGVudCBzcGFjZS4KICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3Qo
Y29udGVudEJvdW5kcyk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRz
KTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMsIG5vT2NjbHVzaW9u
KTsKICAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKICAg
ICBFWFBFQ1RfRkxPQVRfUkVDVF9FUShGbG9hdFJlY3QoMCwgMCwgMzAwLCAzMDAgKiAwLjgpLCBs
YXllci0+dXBkYXRlUmVjdCgpKTsKIAogICAgIC8vIEFmdGVyIHRoZSB0aWxlcyBhcmUgdXBkYXRl
ZCBvbmNlLCBhbm90aGVyIGludmFsaWRhdGUgb25seSBuZWVkcyB0byB1cGRhdGUgdGhlIGJvdW5k
cyBvZiB0aGUgbGF5ZXIuCiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KGNvbnRlbnRCb3VuZHMp
OwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcyk7CisgICAgbGF5ZXIt
PnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzLCBub09jY2x1c2lvbik7CiAgICAgbGF5ZXIt
PnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAgICAgRVhQRUNUX0ZMT0FU
X1JFQ1RfRVEoRmxvYXRSZWN0KGxheWVyQm91bmRzKSwgbGF5ZXItPnVwZGF0ZVJlY3QoKSk7CiAK
ICAgICAvLyBQYXJ0aWFsIHJlLXBhaW50IHNob3VsZCBhbHNvIGJlIHJlcHJlc2VudGVkIGJ5IHRo
ZSB1cGRhdGVSZWN0IGluIGxheWVyIHNwYWNlLCBub3QgY29udGVudCBzcGFjZS4KICAgICBJbnRS
ZWN0IHBhcnRpYWxEYW1hZ2UoMzAsIDEwMCwgMTAsIDEwKTsKICAgICBsYXllci0+aW52YWxpZGF0
ZVJlY3QocGFydGlhbERhbWFnZSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50
Qm91bmRzKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMsIG5vT2Nj
bHVzaW9uKTsKICAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVy
KTsKICAgICBFWFBFQ1RfRkxPQVRfUkVDVF9FUShGbG9hdFJlY3QoNDUsIDgwLCAxNSwgOCksIGxh
eWVyLT51cGRhdGVSZWN0KCkpOwogfQpAQCAtNDc4LDYgKzQ5Niw3IEBAIFRFU1QoVGlsZWRMYXll
ckNocm9taXVtVGVzdCwgbGF5ZXJBZGRzU2VsZlRvT2NjbHVkZWRSZWdpb24pCiAgICAgLy8gVGhl
IHRpbGUgc2l6ZSBpcyAxMDB4MTAwLCBzbyB0aGlzIGludmFsaWRhdGVzIGFuZCB0aGVuIHBhaW50
cyB0d28gdGlsZXMgaW4gdmFyaW91cyB3YXlzLgogCiAgICAgUmVnaW9uIG9jY2x1ZGVkOworICAg
IFJlZ2lvbiBub09jY2x1c2lvbjsKICAgICBJbnRSZWN0IGNvbnRlbnRCb3VuZHMgPSBJbnRSZWN0
KDAsIDAsIDEwMCwgMjAwKTsKICAgICBJbnRSZWN0IHZpc2libGVCb3VuZHMgPSBJbnRSZWN0KDAs
IDAsIDEwMCwgMTUwKTsKIApAQCAtNDkyLDcgKzUxMSw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9t
aXVtVGVzdCwgbGF5ZXJBZGRzU2VsZlRvT2NjbHVkZWRSZWdpb24pCiAgICAgLy8gSWYgdGhlIGxh
eWVyIGlzIG9wYXF1ZSB0aGVuIHRoZSBvY2NsdWRlZCByZWdpb24gc2hvdWxkIGJlIHRoZSB3aG9s
ZSBsYXllcidzIHZpc2libGUgcmVnaW9uLgogICAgIGxheWVyLT5zZXRPcGFxdWUodHJ1ZSk7CiAg
ICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KGNvbnRlbnRCb3VuZHMpOwotICAgIGxheWVyLT5wcmVw
YXJlVG9VcGRhdGUoY29udGVudEJvdW5kcyk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShj
b250ZW50Qm91bmRzLCBub09jY2x1c2lvbik7CiAKICAgICBvY2NsdWRlZCA9IFJlZ2lvbigpOwog
ICAgIGxheWVyLT5hZGRTZWxmVG9PY2NsdWRlZFNjcmVlblNwYWNlKG9jY2x1ZGVkKTsKQEAgLTUw
Miw3ICs1MjEsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGxheWVyQWRkc1NlbGZU
b09jY2x1ZGVkUmVnaW9uKQogICAgIC8vIElmIHRoZSBsYXllciBpcyBub3Qgb3BhcXVlIHRoZW4g
dGhlIG9jY2x1ZGVkIHJlZ2lvbiBzaG91bGQgYmUgZW1wdHkuCiAgICAgbGF5ZXItPnNldE9wYXF1
ZShmYWxzZSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KGNvbnRlbnRCb3VuZHMpOwotICAg
IGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcyk7CisgICAgbGF5ZXItPnByZXBh
cmVUb1VwZGF0ZShjb250ZW50Qm91bmRzLCBub09jY2x1c2lvbik7CiAKICAgICBvY2NsdWRlZCA9
IFJlZ2lvbigpOwogICAgIGxheWVyLT5hZGRTZWxmVG9PY2NsdWRlZFNjcmVlblNwYWNlKG9jY2x1
ZGVkKTsKQEAgLTUxMyw3ICs1MzIsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGxh
eWVyQWRkc1NlbGZUb09jY2x1ZGVkUmVnaW9uKQogICAgIEludFJlY3Qgb3BhcXVlUGFpbnRSZWN0
ID0gSW50UmVjdCgxMCwgMTAsIDkwLCAxOTApOwogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJl
VXBkYXRlcigpLT5zZXRPcGFxdWVQYWludFJlY3Qob3BhcXVlUGFpbnRSZWN0KTsKICAgICBsYXll
ci0+aW52YWxpZGF0ZVJlY3QoY29udGVudEJvdW5kcyk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1Vw
ZGF0ZShjb250ZW50Qm91bmRzKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRC
b3VuZHMsIG5vT2NjbHVzaW9uKTsKIAogICAgIG9jY2x1ZGVkID0gUmVnaW9uKCk7CiAgICAgbGF5
ZXItPmFkZFNlbGZUb09jY2x1ZGVkU2NyZWVuU3BhY2Uob2NjbHVkZWQpOwpAQCAtNTIyLDcgKzU0
MSw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgbGF5ZXJBZGRzU2VsZlRvT2NjbHVk
ZWRSZWdpb24pCiAKICAgICAvLyBJZiB3ZSBwYWludCBhZ2FpbiB3aXRob3V0IGludmFsaWRhdGlu
ZywgdGhlIHNhbWUgc3R1ZmYgc2hvdWxkIGJlIG9jY2x1ZGVkLgogICAgIGxheWVyLT5mYWtlTGF5
ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRPcGFxdWVQYWludFJlY3QoSW50UmVjdCgpKTsKLSAgICBs
YXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMpOworICAgIGxheWVyLT5wcmVwYXJl
VG9VcGRhdGUoY29udGVudEJvdW5kcywgbm9PY2NsdXNpb24pOwogCiAgICAgb2NjbHVkZWQgPSBS
ZWdpb24oKTsKICAgICBsYXllci0+YWRkU2VsZlRvT2NjbHVkZWRTY3JlZW5TcGFjZShvY2NsdWRl
ZCk7CkBAIC01MzksNyArNTU4LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBsYXll
ckFkZHNTZWxmVG9PY2NsdWRlZFJlZ2lvbikKICAgICBzY3JlZW5TcGFjZVRyYW5zZm9ybSAqPSB0
cmFuc2Zvcm07CiAgICAgc2NyZWVuU3BhY2VUcmFuc2Zvcm0udHJhbnNsYXRlKC1jb250ZW50Qm91
bmRzLndpZHRoKCkgLyAyLjAsIC1jb250ZW50Qm91bmRzLmhlaWdodCgpIC8gMi4wKTsKICAgICBs
YXllci0+c2V0U2NyZWVuU3BhY2VUcmFuc2Zvcm0oc2NyZWVuU3BhY2VUcmFuc2Zvcm0pOwotICAg
IGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcyk7CisgICAgbGF5ZXItPnByZXBh
cmVUb1VwZGF0ZShjb250ZW50Qm91bmRzLCBub09jY2x1c2lvbik7CiAKICAgICBvY2NsdWRlZCA9
IFJlZ2lvbigpOwogICAgIGxheWVyLT5hZGRTZWxmVG9PY2NsdWRlZFNjcmVlblNwYWNlKG9jY2x1
ZGVkKTsKQEAgLTU1NCw3ICs1NzMsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGxh
eWVyQWRkc1NlbGZUb09jY2x1ZGVkUmVnaW9uKQogICAgIHNjcmVlblNwYWNlVHJhbnNmb3JtICo9
IHRyYW5zZm9ybTsKICAgICBzY3JlZW5TcGFjZVRyYW5zZm9ybS50cmFuc2xhdGUoLWNvbnRlbnRC
b3VuZHMud2lkdGgoKSAvIDIuMCwgLWNvbnRlbnRCb3VuZHMuaGVpZ2h0KCkgLyAyLjApOwogICAg
IGxheWVyLT5zZXRTY3JlZW5TcGFjZVRyYW5zZm9ybShzY3JlZW5TcGFjZVRyYW5zZm9ybSk7Ci0g
ICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzKTsKKyAgICBsYXllci0+cHJl
cGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMsIG5vT2NjbHVzaW9uKTsKIAogICAgIG9jY2x1ZGVk
ID0gUmVnaW9uKCk7CiAgICAgbGF5ZXItPmFkZFNlbGZUb09jY2x1ZGVkU2NyZWVuU3BhY2Uob2Nj
bHVkZWQpOwpAQCAtNTY0LDQgKzU4MywxNDEgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0
LCBsYXllckFkZHNTZWxmVG9PY2NsdWRlZFJlZ2lvbikKICAgICBFWFBFQ1RfRVEoMHUsIG9jY2x1
ZGVkLnJlY3RzKCkuc2l6ZSgpKTsKIH0KIAorVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0
aWxlc1BhaW50ZWRXaXRob3V0T2NjbHVzaW9uKQoreworICAgIE93blB0cjxUZXh0dXJlTWFuYWdl
cj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAy
KjEwMjQqMTAyNCwgMTAyNCk7CisgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxh
eWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIu
Z2V0KCkpKTsKKyAgICBSZWdpb24gb2NjbHVkZWQ7CisKKyAgICAvLyBUaGUgdGlsZSBzaXplIGlz
IDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxlcy4K
KyAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAyMDApKTsKKworICAgIGxheWVyLT5p
bnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CisgICAgbGF5ZXItPnByZXBh
cmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgb2NjbHVkZWQpOworICAgIEVYUEVD
VF9FUSgyLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3Vu
dCgpKTsKK30KKworVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRo
T2NjbHVzaW9uKQoreworICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIg
PSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAyKjEwMjQqMTAyNCwgMTAyNCk7
CisgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3
IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKKyAgICBSZWdp
b24gb2NjbHVkZWQ7CisKKyAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAuCisKKyAgICBs
YXllci0+c2V0Qm91bmRzKEludFNpemUoNjAwLCA2MDApKTsKKworICAgIG9jY2x1ZGVkID0gSW50
UmVjdCgyMDAsIDIwMCwgMzAwLCAxMDApOworICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRS
ZWN0KDAsIDAsIDYwMCwgNjAwKSk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0
KDAsIDAsIDYwMCwgNjAwKSwgb2NjbHVkZWQpOworICAgIEVYUEVDVF9FUSgzNi0zLCBsYXllci0+
ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKKworICAgIGxh
eWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVSZWN0Q291bnQoKTsK
KworICAgIG9jY2x1ZGVkID0gSW50UmVjdCgyNTAsIDIwMCwgMzAwLCAxMDApOworICAgIGxheWVy
LT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CisgICAgbGF5ZXItPnBy
ZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgb2NjbHVkZWQpOworICAgIEVY
UEVDVF9FUSgzNi0yLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJl
Y3RDb3VudCgpKTsKKworICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVh
clByZXBhcmVSZWN0Q291bnQoKTsKKworICAgIG9jY2x1ZGVkID0gSW50UmVjdCgyNTAsIDI1MCwg
MzAwLCAxMDApOworICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwg
NjAwKSk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAw
KSwgb2NjbHVkZWQpOworICAgIEVYUEVDVF9FUSgzNiwgbGF5ZXItPmZha2VMYXllclRleHR1cmVV
cGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7Cit9CisKK1RFU1QoVGlsZWRMYXllckNocm9t
aXVtVGVzdCwgdGlsZXNOb3RQYWludGVkV2l0aG91dEludmFsaWRhdGlvbikKK3sKKyAgICBPd25Q
dHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0
ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOworICAgIFJlZlB0cjxGYWtlVGlsZWRM
YXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVt
KHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CisgICAgUmVnaW9uIG9jY2x1ZGVkOworCisgICAgLy8g
VGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLgorCisgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRTaXpl
KDYwMCwgNjAwKSk7CisKKyAgICBvY2NsdWRlZCA9IEludFJlY3QoMjAwLCAyMDAsIDMwMCwgMTAw
KTsKKyAgICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAw
KSk7CisgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsK
KyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCBvY2Ns
dWRlZCk7CisgICAgRVhQRUNUX0VRKDM2LTMsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRl
cigpLT5wcmVwYXJlUmVjdENvdW50KCkpOworCisgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVV
cGRhdGVyKCktPmNsZWFyUHJlcGFyZVJlY3RDb3VudCgpOworCisgICAgLy8gUmVwYWludCB3aXRo
b3V0IG1hcmtpbmcgaXQgZGlydHkuCisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0
KDAsIDAsIDYwMCwgNjAwKSwgb2NjbHVkZWQpOworICAgIEVYUEVDVF9FUSgwLCBsYXllci0+ZmFr
ZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKK30KKworVEVTVChU
aWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kVHJhbnNm
b3JtcykKK3sKKyAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4
dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOworICAg
IFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtl
VGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CisgICAgUmVnaW9uIG9j
Y2x1ZGVkOworCisgICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLgorCisgICAgLy8gVGhp
cyBtYWtlcyBzdXJlIHRoZSBwYWludGluZyB3b3JrcyB3aGVuIHRoZSBvY2NsdWRlZCByZWdpb24g
KGluIHNjcmVlbiBzcGFjZSkKKyAgICAvLyBpcyB0cmFuc2Zvcm1lZCBkaWZmZXJlbnRseSB0aGFu
IHRoZSBsYXllci4KKyAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoNjAwLCA2MDApKTsKKyAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBzY3JlZW5UcmFuc2Zvcm07CisgICAgc2NyZWVuVHJhbnNm
b3JtLnNjYWxlKDAuNSk7CisgICAgbGF5ZXItPnNldFNjcmVlblNwYWNlVHJhbnNmb3JtKHNjcmVl
blRyYW5zZm9ybSk7CisKKyAgICBvY2NsdWRlZCA9IEludFJlY3QoMTAwLCAxMDAsIDE1MCwgNTAp
OworICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbGF5
ZXItPmJvdW5kcygpKSk7CisgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwg
NjAwLCA2MDApKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNjAw
LCA2MDApLCBvY2NsdWRlZCk7CisgICAgRVhQRUNUX0VRKDM2LTMsIGxheWVyLT5mYWtlTGF5ZXJU
ZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOworfQorCitURVNUKFRpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb25BbmRTY2FsaW5nKQorewor
ICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdl
cjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAyKjEwMjQqMTAyNCwgMTAyNCk7CisgICAgUmVmUHRyPEZh
a2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVy
Q2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKKyAgICBSZWdpb24gb2NjbHVkZWQ7CisK
KyAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAuCisKKyAgICAvLyBUaGlzIG1ha2VzIHN1
cmUgdGhlIHBhaW50aW5nIHdvcmtzIHdoZW4gdGhlIGNvbnRlbnQgc3BhY2UgaXMgc2NhbGVkIHRv
CisgICAgLy8gYSBkaWZmZXJlbnQgbGF5ZXIgc3BhY2UuIEluIHRoaXMgY2FzZSB0aWxlcyBhcmUg
c2NhbGVkIHRvIGJlIDIwMHgyMDAKKyAgICAvLyBwaXhlbHMsIHdoaWNoIG1lYW5zIG5vbmUgc2hv
dWxkIGJlIG9jY2x1ZGVkLgorICAgIGxheWVyLT5zZXRDb250ZW50c1NjYWxlKDAuNSk7CisgICAg
bGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDYwMCwgNjAwKSk7CisKKyAgICBvY2NsdWRlZCA9IElu
dFJlY3QoMjAwLCAyMDAsIDMwMCwgMTAwKTsKKyAgICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVj
dChJbnRSZWN0KEludFBvaW50KCksIGxheWVyLT5ib3VuZHMoKSkpOworICAgIGxheWVyLT5pbnZh
bGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CisgICAgbGF5ZXItPnByZXBhcmVU
b1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgb2NjbHVkZWQpOworICAgIC8vIFRoZSBj
b250ZW50IGlzIGhhbGYgdGhlIHNpemUgb2YgdGhlIGxheWVyIChzbyB0aGUgbnVtYmVyIG9mIHRp
bGVzIGlzIGZld2VyKS4KKyAgICAvLyBJbiB0aGlzIGNhc2UsIHRoZSBjb250ZW50IGlzIDMwMHgz
MDAsIGFuZCBzaW5jZSB0aGUgdGlsZSBzaXplIGlzIDEwMCwgdGhlCisgICAgLy8gbnVtYmVyIG9m
IHRpbGVzIDN4My4KKyAgICBFWFBFQ1RfRVEoOSwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRh
dGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CisKKyAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVy
ZVVwZGF0ZXIoKS0+Y2xlYXJQcmVwYXJlUmVjdENvdW50KCk7CisKKyAgICAvLyBUaGlzIG1ha2Vz
IHN1cmUgdGhlIHBhaW50aW5nIHdvcmtzIHdoZW4gdGhlIGNvbnRlbnQgc3BhY2UgaXMgc2NhbGVk
IHRvCisgICAgLy8gYSBkaWZmZXJlbnQgbGF5ZXIgc3BhY2UuIEluIHRoaXMgY2FzZSB0aGUgb2Nj
bHVkZWQgcmVnaW9uIGNhdGNoZXMgdGhlCisgICAgLy8gYmxvd24gdXAgdGlsZXMuCisgICAgb2Nj
bHVkZWQgPSBJbnRSZWN0KDIwMCwgMjAwLCAzMDAsIDIwMCk7CisgICAgbGF5ZXItPnNldFZpc2li
bGVMYXllclJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBsYXllci0+Ym91bmRzKCkpKTsKKyAgICBs
YXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOworICAgIGxheWVy
LT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksIG9jY2x1ZGVkKTsKKyAg
ICBFWFBFQ1RfRVEoOS0xLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFy
ZVJlY3RDb3VudCgpKTsKKworICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5j
bGVhclByZXBhcmVSZWN0Q291bnQoKTsKKworICAgIC8vIFRoaXMgbWFrZXMgc3VyZSBjb250ZW50
IHNjYWxpbmcgYW5kIHRyYW5zZm9ybXMgd29yayB0b2dldGhlci4KKyAgICBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBzY3JlZW5UcmFuc2Zvcm07CisgICAgc2NyZWVuVHJhbnNmb3JtLnNjYWxlKDAuNSk7
CisgICAgbGF5ZXItPnNldFNjcmVlblNwYWNlVHJhbnNmb3JtKHNjcmVlblRyYW5zZm9ybSk7CisK
KyAgICBvY2NsdWRlZCA9IEludFJlY3QoMTAwLCAxMDAsIDE1MCwgMTAwKTsKKyAgICBsYXllci0+
c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KEludFBvaW50KCksIGxheWVyLT5ib3VuZHMoKSkp
OworICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7Cisg
ICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgb2NjbHVk
ZWQpOworICAgIEVYUEVDVF9FUSg5LTEsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigp
LT5wcmVwYXJlUmVjdENvdW50KCkpOworfQorCiB9IC8vIG5hbWVzcGFjZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124673</attachid>
            <date>2012-01-30 22:41:06 -0800</date>
            <delta_ts>2012-02-01 13:34:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76838-20120131014105.patch</filename>
            <type>text/plain</type>
            <size>38672</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDQxYjVjMGE5YjcwMDM1
ZmM4ZTE3OWNiMDNkZDZkY2M2ZDkyMjBjMi4uMjQxZjMxODVhYzkzMGYyZTYzNTgyMjlhMDdlY2Jm
NGU5NjZiMmE0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTAxLTMwICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQ3Vs
bCBvY2NsdWRlZCB0aWxlcyBkdXJpbmcgcGFpbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc2ODM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTmV3IHVuaXQgdGVzdHMgaW4gVGlsZWRMYXllckNocm9taXVt
VGVzdC5jcHAKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRM
YXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRMYXllckNocm9taXVt
OjpwYWludENvbnRlbnRzSWZEaXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJD
aHJvbWl1bTo6aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoQ29udGVu
dExheWVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0lt
YWdlTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxheWVyQ2hyb21p
dW06OnBhaW50Q29udGVudHNJZkRpcnR5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllckNocm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVt
OjppZGxlUGFpbnRDb250ZW50c0lmRGlydHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWdp
b25Db250YWluc1JlY3QpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpU
aWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWRsZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmg6CisgICAgICAg
IChUaWxlZExheWVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJl
ZUhvc3Q6OnBhaW50Q29udGVudHNJZkRpcnR5KToKKwogMjAxMi0wMS0zMCAgU2hlcmlmZiBCb3Qg
IDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgcjEwNjMyNC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMDIwYWFiNmI3
OWI2ODJkYzcxNzdmM2Y5YWJmMjAzNjI3NzNjNWU5NC4uMjFhMTEwYjhkMDE1ZTc5MjgxMGQwZWM4
Nzc3YjVmNTRjZGE2M2UwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
OSBAQAorMjAxMi0wMS0zMCAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBbY2hyb21pdW1dIEN1bGwgb2NjbHVkZWQgdGlsZXMgZHVyaW5nIHBhaW50CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjgzOAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvQ0NMYXll
clRyZWVIb3N0VGVzdC5jcHA6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0
aFVwZGF0ZVRyYWNraW5nOjppZGxlUGFpbnRDb250ZW50c0lmRGlydHkpOgorICAgICAgICAoV1RG
OjpDQ0xheWVyVHJlZUhvc3RUZXN0TGF5ZXJPY2NsdXNpb246OmJlZ2luVGVzdCk6CisgICAgICAg
ICogdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHA6CisgICAgICAgIChXVEY6OkZha2VM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKToKKyAgICAgICAgKFdURjo6RmFr
ZUxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnByZXBhcmVSZWN0KToKKyAgICAgICAgKFRl
eHR1cmUpOgorICAgICAgICAoV1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6RmFrZUxheWVy
VGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAoV1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
c2V0T3BhcXVlUGFpbnRSZWN0KToKKyAgICAgICAgKEZha2VMYXllclRleHR1cmVVcGRhdGVyKToK
KyAgICAgICAgKFdURjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVSZWN0Q291bnQp
OgorICAgICAgICAoV1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y2xlYXJQcmVwYXJlUmVj
dENvdW50KToKKyAgICAgICAgKFdURjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZVRl
eHR1cmUpOgorICAgICAgICAoV1RGOjpGYWtlVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9V
cGRhdGUpOgorICAgICAgICAoV1RGOjpGYWtlVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9V
cGRhdGVJZGxlKToKKyAgICAgICAgKFdURjo6RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bTo6cGFpbnRD
b250ZW50c0lmRGlydHkpOgorICAgICAgICAoV1RGOjpURVNUKToKKyAgICAgICAgKFdURik6CisK
IDIwMTItMDEtMzAgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDYzMjQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJv
bWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250
ZW50TGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMzQzMDMxMTBmYTljYWZkZjI2Y2E5YmNmZWQ2ZTI0
YzRmNDAyZjJhYS4uZTBmNThmZjY0NWY0YWVhOWJhYTliNGVhMDQxYTVhNTgyMDIyOTUyMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVu
dExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcApAQCAtOTMsNyArOTMsNyBAQCBib29s
IENvbnRlbnRMYXllckNocm9taXVtOjpkcmF3c0NvbnRlbnQoKSBjb25zdAogICAgIHJldHVybiBU
aWxlZExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgpICYmIG1fZGVsZWdhdGU7CiB9CiAKLXZv
aWQgQ29udGVudExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lv
biYgLyogb2NjbHVkZWRTY3JlZW5TcGFjZSAqLykKK3ZvaWQgQ29udGVudExheWVyQ2hyb21pdW06
OnBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSkK
IHsKICAgICB1cGRhdGVUaWxlU2l6ZUFuZFRpbGluZ09wdGlvbigpOwogCkBAIC0xMDQsMTEgKzEw
NCwxMSBAQCB2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eShj
b25zdCBSZWdpb24mIC8qIG9jY2x1ZGVkU2NyZWVuUwogICAgIGlmIChkcmF3c0NvbnRlbnQoKSkK
ICAgICAgICAgbGF5ZXJSZWN0ID0gdmlzaWJsZUxheWVyUmVjdCgpOwogCi0gICAgcHJlcGFyZVRv
VXBkYXRlKGxheWVyUmVjdCk7CisgICAgcHJlcGFyZVRvVXBkYXRlKGxheWVyUmVjdCwgb2NjbHVk
ZWRTY3JlZW5TcGFjZSk7CiAgICAgbV9uZWVkc0Rpc3BsYXkgPSBmYWxzZTsKIH0KIAotdm9pZCBD
b250ZW50TGF5ZXJDaHJvbWl1bTo6aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KCkKK3ZvaWQgQ29u
dGVudExheWVyQ2hyb21pdW06OmlkbGVQYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24m
IG9jY2x1ZGVkU2NyZWVuU3BhY2UpCiB7CiAgICAgaWYgKCFkcmF3c0NvbnRlbnQoKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06
OmlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSgpCiAgICAgaWYgKGxheWVyUmVjdC5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIHByZXBhcmVUb1VwZGF0ZUlkbGUobGF5ZXJSZWN0KTsK
KyAgICBwcmVwYXJlVG9VcGRhdGVJZGxlKGxheWVyUmVjdCwgb2NjbHVkZWRTY3JlZW5TcGFjZSk7
CiAgICAgaWYgKG5lZWRzSWRsZVBhaW50KGxheWVyUmVjdCkpCiAgICAgICAgIHNldE5lZWRzQ29t
bWl0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaAppbmRleCA1ZWZmNmEzZDYw
YTEyZDEyMGViNzIwMDBkMzUwYjFmYjU4MzhlYTgzLi44MjkyYjU4MzdmZDY4MGY5MjE3NTBlMTg3
YzU2NTJlYjNmN2EyMzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKQEAgLTYw
LDcgKzYwLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNv
bnN0OwogICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24m
IG9jY2x1ZGVkU2NyZWVuU3BhY2UpOwotICAgIHZpcnR1YWwgdm9pZCBpZGxlUGFpbnRDb250ZW50
c0lmRGlydHkoKTsKKyAgICB2aXJ0dWFsIHZvaWQgaWRsZVBhaW50Q29udGVudHNJZkRpcnR5KGNv
bnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0
T3BhcXVlKGJvb2wpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcAppbmRleCA4MzFj
YmU4MDk2M2EzYTgwMGI4YWE0NmE2OTk0OGY0ZmM3ZjVlYzdlLi5hZDVlZmM2ZTZmNWU4NzBmNGNk
ZjYxYjFmYzZiNjUyNWJhMmFlOTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAK
QEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHMo
SW1hZ2UqIGNvbnRlbnRzKQogICAgIHNldE5lZWRzRGlzcGxheSgpOwogfQogCi12b2lkIEltYWdl
TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uJiAvKiBvY2Ns
dWRlZFNjcmVlblNwYWNlICovKQordm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OnBhaW50Q29udGVu
dHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSkKIHsKICAgICBpZiAo
bV9uZWVkc0Rpc3BsYXkpIHsKICAgICAgICAgbV90ZXh0dXJlVXBkYXRlci0+dXBkYXRlRnJvbUlt
YWdlKG1fY29udGVudHMtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpOwpAQCAtMTY3LDcg
KzE2Nyw3IEBAIHZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eShj
b25zdCBSZWdpb24mIC8qIG9jY2x1ZGVkU2NyZWVuU3BhCiAgICAgICAgIG1fbmVlZHNEaXNwbGF5
ID0gZmFsc2U7CiAgICAgfQogCi0gICAgcHJlcGFyZVRvVXBkYXRlKHZpc2libGVMYXllclJlY3Qo
KSk7CisgICAgcHJlcGFyZVRvVXBkYXRlKHZpc2libGVMYXllclJlY3QoKSwgb2NjbHVkZWRTY3Jl
ZW5TcGFjZSk7CiB9CiAKIExheWVyVGV4dHVyZVVwZGF0ZXIqIEltYWdlTGF5ZXJDaHJvbWl1bTo6
dGV4dHVyZVVwZGF0ZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDc2NGY3MzAxNTVi
NTQ1MzdjZGE0YzczODFiM2ZkM2JjYjc5NjA2NGQuLjg2ZjJlYTc3OWZkOWE1ZWE0MWQyYTFlNzJk
ZWY0OTUxMjFjZTlkZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKQEAgLTE1NSw3ICsxNTUsNyBAQCBw
dWJsaWM6CiAgICAgLy8gVGhlc2UgbWV0aG9kcyB0eXBpY2FsbHkgbmVlZCB0byBiZSBvdmVyd3Jp
dHRlbiBieSBkZXJpdmVkIGNsYXNzZXMuCiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNEcmF3YWJsZTsgfQogICAgIHZpcnR1YWwgdm9pZCBwYWludENv
bnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIC8qIG9jY2x1ZGVkU2NyZWVuU3BhY2UgKi8pIHsg
fQotICAgIHZpcnR1YWwgdm9pZCBpZGxlUGFpbnRDb250ZW50c0lmRGlydHkoKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgaWRsZVBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgLyogb2Nj
bHVkZWRTY3JlZW5TcGFjZSAqLykgeyB9CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJikgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIHNldElzTWFzayhib29sKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgdW5y
ZXNlcnZlQ29udGVudHNUZXh0dXJlKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNw
cAppbmRleCAyODNhYThkZDA5YmEyM2ZkNzQ0MzNhY2EzMmE2NzM1Mzg4M2M5YTAwLi45ZDA4NjJi
MzI4Yzg4YWVmYWIwNTk2NmEzMDg3YmY2MWMyNDI0MDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJD
aHJvbWl1bS5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJNYXRoRXh0cmFzLmgiCiAj
aW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgorI2luY2x1ZGUgIlRy
YWNlRXZlbnQuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgogI2luY2x1ZGUgImNjL0ND
VGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJjYy9DQ1RpbGVkTGF5ZXJJbXBsLmgiCkBAIC0z
NjMsNyArMzY0LDE5IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcm90ZWN0VGlsZVRleHR1
cmVzKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCkKICAgICB9CiB9CiAKLXZvaWQgVGlsZWRMYXll
ckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQg
dG9wLCBpbnQgcmlnaHQsIGludCBib3R0b20pCitzdGF0aWMgYm9vbCByZWdpb25Db250YWluc1Jl
Y3QoY29uc3QgUmVnaW9uJiByZWdpb24sIGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisgICAgUmVn
aW9uIHJlY3RSZWdpb24ocmVjdCk7CisgICAgUmVnaW9uIGludGVyc2VjdFJlZ2lvbihpbnRlcnNl
Y3QocmVnaW9uLCByZWN0UmVnaW9uKSk7CisKKyAgICBpZiAoaW50ZXJzZWN0UmVnaW9uLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmVjdFJlZ2lvbi5zdWJ0cmFjdChp
bnRlcnNlY3RSZWdpb24pOworICAgIHJldHVybiByZWN0UmVnaW9uLmlzRW1wdHkoKTsKK30KKwor
dm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wgaWRsZSwg
aW50IGxlZnQsIGludCB0b3AsIGludCByaWdodCwgaW50IGJvdHRvbSwgY29uc3QgUmVnaW9uJiBv
Y2NsdWRlZFNjcmVlblNwYWNlKQogewogICAgIC8vIFJlc2V0IG1fdXBkYXRlUmVjdCBmb3IgYWxs
IHRpbGVzLgogICAgIGZvciAoQ0NMYXllclRpbGluZ0RhdGE6OlRpbGVNYXA6OmNvbnN0X2l0ZXJh
dG9yIGl0ZXIgPSBtX3RpbGVyLT50aWxlcygpLmJlZ2luKCk7IGl0ZXIgIT0gbV90aWxlci0+dGls
ZXMoKS5lbmQoKTsgKytpdGVyKSB7CkBAIC0zNzEsNiArMzg0LDkgQEAgdm9pZCBUaWxlZExheWVy
Q2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wgaWRsZSwgaW50IGxlZnQsIGludCB0
b3AsIGludAogICAgICAgICB0aWxlLT5tX3VwZGF0ZVJlY3QgPSBJbnRSZWN0KCk7CiAgICAgfQog
CisgICAgLy8gVGlsZXMgYXJlIGluIHRoZSBsYXllcidzIGNvbnRlbnQgc3BhY2UsIHRoZSBvY2Ns
dWRlZCByZWdpb24gaXMgaW4gc2NyZWVuIHNwYWNlLgorICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IGNvbnRlbnRUb1NjcmVlblNwYWNlID0gY29udGVudFRvU2NyZWVuU3BhY2VUcmFuc2Zvcm0oKTsK
KwogICAgIC8vIENyZWF0ZSB0aWxlcyBhcyBuZWVkZWQsIGV4cGFuZGluZyBhIGRpcnR5IHJlY3Qg
dG8gY29udGFpbiBhbGwKICAgICAvLyB0aGUgZGlydHkgcmVnaW9ucyBjdXJyZW50bHkgYmVpbmcg
ZHJhd24uIEFsbCBkaXJ0eSB0aWxlcyB0aGF0IGFyZSB0byBiZSBwYWludGVkCiAgICAgLy8gZ2V0
IHRoZWlyIG1fdXBkYXRlUmVjdCBzZXQgdG8gbV9kaXJ0eVJlY3QgYW5kIG1fZGlydHlSZWN0IGNs
ZWFyZWQuIFRoaXMgd2F5IGlmCkBAIC0zODIsMTMgKzM5OCwyNSBAQCB2b2lkIFRpbGVkTGF5ZXJD
aHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRv
cCwgaW50CiAgICAgICAgICAgICBpZiAoIXRpbGUpCiAgICAgICAgICAgICAgICAgdGlsZSA9IGNy
ZWF0ZVRpbGUoaSwgaik7CiAKKyAgICAgICAgICAgIC8vIFdoZW4gbm90IGlkbGUgcGFpbnRpbmcs
IGlmIHRoZSB0aWxlIGlzIG9jY2x1ZGVkIGRvbid0IHJlc2VydmUgYSB0ZXh0dXJlIG9yIG1hcmsg
aXQgZm9yIHVwZGF0ZS4gVGhpcyB3aWxsIGFsc28gYXZvaWQgcGFpbnRpbmcKKyAgICAgICAgICAg
IC8vIHRoZSB0aWxlIGluIHRoZSBuZXh0IGxvb3AsIGJlbG93LgorICAgICAgICAgICAgaWYgKCFp
ZGxlKSB7CisgICAgICAgICAgICAgICAgSW50UmVjdCB0aWxlUmVjdCA9IG1fdGlsZXItPnRpbGVC
b3VuZHMoaSwgaik7CisgICAgICAgICAgICAgICAgaWYgKHJlZ2lvbkNvbnRhaW5zUmVjdChvY2Ns
dWRlZFNjcmVlblNwYWNlLCBjb250ZW50VG9TY3JlZW5TcGFjZS5tYXBSZWN0KHRpbGVSZWN0KSkp
IHsKKyAgICAgICAgICAgICAgICAgICAgVFJBQ0VfRVZFTlQoIlRpbGVkTGF5ZXJDaHJvbWl1bTo6
cHJlcGFyZVRvVXBkYXRlVGlsZXM6OmN1bGxpbmdPY2NsdWRlZFRpbGUiLCB0aGlzLCAwKTsKKyAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorCiAgICAgICAgICAgICAvLyBEbyBwb3N0IGNvbW1pdCBkZWxldGlvbiBvZiBjdXJyZW50
IHRleHR1cmUgd2hlbiBwYXJ0aWFsIHRleHR1cmUKICAgICAgICAgICAgIC8vIHVwZGF0ZXMgYXJl
IG5vdCB1c2VkLgogICAgICAgICAgICAgaWYgKHRpbGUtPmlzRGlydHkoKSAmJiBsYXllclRyZWVI
b3N0KCkgJiYgIWxheWVyVHJlZUhvc3QoKS0+c2V0dGluZ3MoKS5wYXJ0aWFsVGV4dHVyZVVwZGF0
ZXMpCiAgICAgICAgICAgICAgICAgbGF5ZXJUcmVlSG9zdCgpLT5kZWxldGVUZXh0dXJlQWZ0ZXJD
b21taXQodGlsZS0+bWFuYWdlZFRleHR1cmUoKS0+c3RlYWwoKSk7CiAKLSAgICAgICAgICAgIGlm
ICghdGlsZS0+bWFuYWdlZFRleHR1cmUoKS0+aXNWYWxpZChtX3RpbGVyLT50aWxlU2l6ZSgpLCBt
X3RleHR1cmVGb3JtYXQpKQorICAgICAgICAgICAgaWYgKCF0aWxlLT5tYW5hZ2VkVGV4dHVyZSgp
LT5pc1ZhbGlkKG1fdGlsZXItPnRpbGVTaXplKCksIG1fdGV4dHVyZUZvcm1hdCkpIHsKKyAgICAg
ICAgICAgICAgICAvLyBTZXRzIHRoZSBkaXJ0eSByZWN0IHRvIGEgZnVsbC1zaXplZCB0aWxlIHdp
dGggYm9yZGVyIHRleGVscy4KICAgICAgICAgICAgICAgICB0aWxlLT5tX2RpcnR5UmVjdCA9IG1f
dGlsZXItPnRpbGVSZWN0KHRpbGUpOworICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAo
IXRpbGUtPm1hbmFnZWRUZXh0dXJlKCktPnJlc2VydmUobV90aWxlci0+dGlsZVNpemUoKSwgbV90
ZXh0dXJlRm9ybWF0KSkgewogICAgICAgICAgICAgICAgIG1fc2tpcHNJZGxlUGFpbnQgPSB0cnVl
OwpAQCAtNDQxLDcgKzQ2OSw3IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9V
cGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQKICAgICAgICAgICAg
IGlmICh0aWxlUGFpbnRlZE9wYXF1ZVJlY3QgIT0gdGlsZVBhaW50ZWRSZWN0IHx8ICF0aWxlLT5t
X29wYXF1ZVJlY3QuY29udGFpbnModGlsZVBhaW50ZWRPcGFxdWVSZWN0KSkKICAgICAgICAgICAg
ICAgICB0aWxlLT5tX29wYXF1ZVJlY3QgPSB0aWxlUGFpbnRlZE9wYXF1ZVJlY3Q7CiAKLSAgICAg
ICAgICAgIC8vIFVzZSBtX3VwZGF0ZVJlY3QgYXMgY29weUFuZENsZWFyRGlydHkgYWJvdmUgbW92
ZWQgdGhlIGV4aXN0aW5nIGRpcnR5IHJlY3QgdG8gbV91cGRhdGVSZWN0LgorICAgICAgICAgICAg
Ly8gVXNlIG1fdXBkYXRlUmVjdCBhcyBjb3B5QW5kQ2xlYXJEaXJ0eSBhYm92ZSBtb3ZlZCB0aGUg
ZXhpc3RpbmcgZGlydHkgcmVjdCB0byBtX3VwZGF0ZVJlY3QgaWYgdGhlIHRpbGUgaXNuJ3QgY3Vs
bGVkLgogICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0ID0gdGlsZS0+bV91cGRh
dGVSZWN0OwogICAgICAgICAgICAgaWYgKGRpcnR5UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CkBAIC01MTcsNyArNTQ1LDcgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21p
dW06OmFkZFNlbGZUb09jY2x1ZGVkU2NyZWVuU3BhY2UoUmVnaW9uJiBvY2NsdWRlZFNjcmVlblNw
YWMKICAgICB9CiB9CiAKLXZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGUo
Y29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQordm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBh
cmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBsYXllclJlY3QsIGNvbnN0IFJlZ2lvbiYgb2NjbHVk
ZWRTY3JlZW5TcGFjZSkKIHsKICAgICBtX3NraXBzRHJhdyA9IGZhbHNlOwogICAgIG1fc2tpcHNJ
ZGxlUGFpbnQgPSBmYWxzZTsKQEAgLTUzMiwxMCArNTYwLDEwIEBAIHZvaWQgVGlsZWRMYXllckNo
cm9taXVtOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQogICAgIGlu
dCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b207CiAgICAgbV90aWxlci0+bGF5ZXJSZWN0VG9UaWxl
SW5kaWNlcyhsYXllclJlY3QsIGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSk7CiAKLSAgICBwcmVw
YXJlVG9VcGRhdGVUaWxlcyhmYWxzZSwgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tKTsKKyAgICBw
cmVwYXJlVG9VcGRhdGVUaWxlcyhmYWxzZSwgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tLCBvY2Ns
dWRlZFNjcmVlblNwYWNlKTsKIH0KIAotdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVU
b1VwZGF0ZUlkbGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQordm9pZCBUaWxlZExheWVyQ2hy
b21pdW06OnByZXBhcmVUb1VwZGF0ZUlkbGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0LCBjb25z
dCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVuU3BhY2UpCiB7CiAgICAgLy8gQWJvcnQgaWYgd2UgaGF2
ZSBhbHJlYWR5IHByZXBhcmVkIGEgcGFpbnQgb3IgcnVuIG91dCBvZiBtZW1vcnkuCiAgICAgaWYg
KG1fc2tpcHNJZGxlUGFpbnQgfHwgIW1fcGFpbnRSZWN0LmlzRW1wdHkoKSkKQEAgLTU1MywzMyAr
NTgxLDM5IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZGxlKGNv
bnN0IEludFJlY3QmIGxheWVyUmVjdCkKICAgICBJbnRSZWN0IGlkbGVQYWludExheWVyUmVjdCA9
IGlkbGVQYWludFJlY3QobGF5ZXJSZWN0KTsKICAgICBwcm90ZWN0VGlsZVRleHR1cmVzKGlkbGVQ
YWludExheWVyUmVjdCk7CiAKLSAgICAvLyBFeHBhbmQgb3V0d2FyZHMgdW50aWwgd2UgZmluZCBh
IGRpcnR5IHJvdyBvciBjb2x1bW4gdG8gdXBkYXRlLgogICAgIGludCBsZWZ0LCB0b3AsIHJpZ2h0
LCBib3R0b207CiAgICAgbV90aWxlci0+bGF5ZXJSZWN0VG9UaWxlSW5kaWNlcyhsYXllclJlY3Qs
IGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSk7CisKKyAgICAvLyBQcmVwYWludCBhbnl0aGluZyB0
aGF0IHdhcyBvY2NsdWRlZCBidXQgaW5zaWRlIHRoZSBsYXllcidzIHZpc2libGUgcmVnaW9uLgor
ICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKHRydWUsIGxlZnQsIGJvdHRvbSwgcmlnaHQsIGJvdHRv
bSwgb2NjbHVkZWRTY3JlZW5TcGFjZSk7CisgICAgaWYgKCFtX3BhaW50UmVjdC5pc0VtcHR5KCkg
fHwgbV9za2lwc0lkbGVQYWludCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRXhwYW5kIG91
dHdhcmRzIHVudGlsIHdlIGZpbmQgYSBkaXJ0eSByb3cgb3IgY29sdW1uIHRvIHVwZGF0ZS4KICAg
ICBpbnQgcHJlcGFpbnRMZWZ0LCBwcmVwYWludFRvcCwgcHJlcGFpbnRSaWdodCwgcHJlcGFpbnRC
b3R0b207CiAgICAgbV90aWxlci0+bGF5ZXJSZWN0VG9UaWxlSW5kaWNlcyhpZGxlUGFpbnRMYXll
clJlY3QsIHByZXBhaW50TGVmdCwgcHJlcGFpbnRUb3AsIHByZXBhaW50UmlnaHQsIHByZXBhaW50
Qm90dG9tKTsKICAgICB3aGlsZSAoIW1fc2tpcHNJZGxlUGFpbnQgJiYgKGxlZnQgPiBwcmVwYWlu
dExlZnQgfHwgdG9wID4gcHJlcGFpbnRUb3AgfHwgcmlnaHQgPCBwcmVwYWludFJpZ2h0IHx8IGJv
dHRvbSA8IHByZXBhaW50Qm90dG9tKSkgewogICAgICAgICBpZiAoYm90dG9tIDwgcHJlcGFpbnRC
b3R0b20pIHsKICAgICAgICAgICAgICsrYm90dG9tOwotICAgICAgICAgICAgcHJlcGFyZVRvVXBk
YXRlVGlsZXModHJ1ZSwgbGVmdCwgYm90dG9tLCByaWdodCwgYm90dG9tKTsKKyAgICAgICAgICAg
IHByZXBhcmVUb1VwZGF0ZVRpbGVzKHRydWUsIGxlZnQsIGJvdHRvbSwgcmlnaHQsIGJvdHRvbSwg
b2NjbHVkZWRTY3JlZW5TcGFjZSk7CiAgICAgICAgICAgICBpZiAoIW1fcGFpbnRSZWN0LmlzRW1w
dHkoKSB8fCBtX3NraXBzSWRsZVBhaW50KQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGlmICh0b3AgPiBwcmVwYWludFRvcCkgewogICAgICAgICAgICAgLS10b3A7
Ci0gICAgICAgICAgICBwcmVwYXJlVG9VcGRhdGVUaWxlcyh0cnVlLCBsZWZ0LCB0b3AsIHJpZ2h0
LCB0b3ApOworICAgICAgICAgICAgcHJlcGFyZVRvVXBkYXRlVGlsZXModHJ1ZSwgbGVmdCwgdG9w
LCByaWdodCwgdG9wLCBvY2NsdWRlZFNjcmVlblNwYWNlKTsKICAgICAgICAgICAgIGlmICghbV9w
YWludFJlY3QuaXNFbXB0eSgpIHx8IG1fc2tpcHNJZGxlUGFpbnQpCiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGxlZnQgPiBwcmVwYWludExlZnQpIHsKICAg
ICAgICAgICAgIC0tbGVmdDsKLSAgICAgICAgICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKHRydWUs
IGxlZnQsIHRvcCwgbGVmdCwgYm90dG9tKTsKKyAgICAgICAgICAgIHByZXBhcmVUb1VwZGF0ZVRp
bGVzKHRydWUsIGxlZnQsIHRvcCwgbGVmdCwgYm90dG9tLCBvY2NsdWRlZFNjcmVlblNwYWNlKTsK
ICAgICAgICAgICAgIGlmICghbV9wYWludFJlY3QuaXNFbXB0eSgpIHx8IG1fc2tpcHNJZGxlUGFp
bnQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHJpZ2h0
IDwgcHJlcGFpbnRSaWdodCkgewogICAgICAgICAgICAgKytyaWdodDsKLSAgICAgICAgICAgIHBy
ZXBhcmVUb1VwZGF0ZVRpbGVzKHRydWUsIHJpZ2h0LCB0b3AsIHJpZ2h0LCBib3R0b20pOworICAg
ICAgICAgICAgcHJlcGFyZVRvVXBkYXRlVGlsZXModHJ1ZSwgcmlnaHQsIHRvcCwgcmlnaHQsIGJv
dHRvbSwgb2NjbHVkZWRTY3JlZW5TcGFjZSk7CiAgICAgICAgICAgICBpZiAoIW1fcGFpbnRSZWN0
LmlzRW1wdHkoKSB8fCBtX3NraXBzSWRsZVBhaW50KQogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDNjYmJiY2JkN2E0NTI1
NDIzNWUzOTU1NTAyMGMzMDM2OGU3MWVjNDYuLjY1NWE5YjQzNzZkNzU3NTZjMmRiZWE4NDVlM2Nh
YTI4MjZlNjU4ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oCkBAIC04NSwxMCArODUs
MTAgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYg
bGF5ZXJSZWN0KTsKIAogICAgIC8vIFByZXBhcmUgZGF0YSBuZWVkZWQgdG8gdXBkYXRlIHRleHR1
cmVzIHRoYXQgaW50ZXJzZWN0IHdpdGggbGF5ZXJSZWN0LgotICAgIHZvaWQgcHJlcGFyZVRvVXBk
YXRlKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCk7CisgICAgdm9pZCBwcmVwYXJlVG9VcGRhdGUo
Y29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0LCBjb25zdCBSZWdpb24mIG9jY2x1ZGVkVGFyZ2V0U3Bh
Y2UpOwogCiAgICAgLy8gU2FtZSBhcyBhYm92ZSwgYnV0IHRoaXMgd2lsbCB0cnkgdG8gcGFpbnQg
YWRkaXRpb25hbCBzdXJyb3VuZGluZyBjb250ZW50IGlmIGlkbGUuCi0gICAgdm9pZCBwcmVwYXJl
VG9VcGRhdGVJZGxlKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCk7CisgICAgdm9pZCBwcmVwYXJl
VG9VcGRhdGVJZGxlKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3QgUmVnaW9uJiBvY2Ns
dWRlZFRhcmdldFNwYWNlKTsKIAogICAgIC8vIEFmdGVyIHByZXBhcmluZyBhbiB1cGRhdGUsIHJl
dHVybnMgdHJ1ZSBpZiBtb3JlIHByZS1wYWludGluZyBpcyBuZWVkZWQuCiAgICAgYm9vbCBuZWVk
c0lkbGVQYWludChjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpOwpAQCAtMTA3LDcgKzEwNyw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVUaWxlcklmTmVlZGVkKCk7CiAgICAgdm9pZCBzZXRU
aWxpbmdPcHRpb24oVGlsaW5nT3B0aW9uKTsKIAotICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlVGls
ZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50IHJpZ2h0LCBpbnQgYm90dG9tKTsK
KyAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wgaWRsZSwgaW50IGxlZnQsIGludCB0
b3AsIGludCByaWdodCwgaW50IGJvdHRvbSwgY29uc3QgUmVnaW9uJiBvY2NsdWRlZFRhcmdldFNw
YWNlKTsKICAgICBJbnRSZWN0IGlkbGVQYWludFJlY3QoY29uc3QgSW50UmVjdCYgdmlzaWJsZUxh
eWVyUmVjdCk7CiAKICAgICBVcGRhdGFibGVUaWxlKiB0aWxlQXQoaW50LCBpbnQpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggNGZmODQzNGIyMDBjOTJkNDhhMDhi
ZjkxYzE0YjI3ZjgyMTlkZGFiNi4uZmRmNTMxODhjYTVjMWYyNDA1YzA3Y2EzYThlNWJjOThhN2Jk
Yjk5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC00MjEsNyArNDIxLDcg
QEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50Q29udGVudHNJZkRpcnR5KExheWVyQ2hyb21p
dW0qIGxheWVyLCBQYWludFR5cGUgcGFpbnQKICAgICBpZiAoUGFpbnRWaXNpYmxlID09IHBhaW50
VHlwZSkKICAgICAgICAgbGF5ZXItPnBhaW50Q29udGVudHNJZkRpcnR5KG9jY2x1ZGVkU2NyZWVu
U3BhY2UpOwogICAgIGVsc2UKLSAgICAgICAgbGF5ZXItPmlkbGVQYWludENvbnRlbnRzSWZEaXJ0
eSgpOworICAgICAgICBsYXllci0+aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KG9jY2x1ZGVkU2Ny
ZWVuU3BhY2UpOwogfQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRNYXNrQW5kUmVwbGlj
YUZvclJlbmRlclN1cmZhY2UoTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVyLCBQYWlu
dFR5cGUgcGFpbnRUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5kZXggNDFmZTRmYjY1OWI5NDA1MWM2N2VhYmYzZWVh
OWMwODQ2NzZlZWFiNC4uZmJhYmY2Mzc0Y2VjOTkzNWM2MmM2OTk1YWM5YmZhNmNlYTM0N2ZkMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RU
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9z
dFRlc3QuY3BwCkBAIC0xMDEyLDkgKzEwMTIsOSBAQCBwdWJsaWM6CiAgICAgICAgIG1fcGFpbnRD
b250ZW50c0NvdW50Kys7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGlkbGVQYWludENvbnRl
bnRzSWZEaXJ0eSgpCisgICAgdmlydHVhbCB2b2lkIGlkbGVQYWludENvbnRlbnRzSWZEaXJ0eShj
b25zdCBSZWdpb24mIG9jY2x1ZGVkKQogICAgIHsKLSAgICAgICAgQ29udGVudExheWVyQ2hyb21p
dW06OmlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSgpOworICAgICAgICBDb250ZW50TGF5ZXJDaHJv
bWl1bTo6aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KG9jY2x1ZGVkKTsKICAgICAgICAgbV9pZGxl
UGFpbnRDb250ZW50c0NvdW50Kys7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCBiMDM1MGRi
NDk1ZmI1NjJiMzU4MTQwODdlZjY0MTBkNzYxOTViYTc1Li5kYTMyZGZhOGJlYmQ3YjkwYzBmM2Mw
NzYwNDA1Njc0N2U2NDgwZGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKQEAgLTYwLDM0ICs2MCw0NyBAQCBj
bGFzcyBGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlciA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVy
IHsKIHB1YmxpYzoKICAgICBjbGFzcyBUZXh0dXJlIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmUgewogICAgIHB1YmxpYzoKLSAgICAgICAgVGV4dHVyZShQYXNzT3duUHRyPE1h
bmFnZWRUZXh0dXJlPiB0ZXh0dXJlKSA6IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUodGV4
dHVyZSkgeyB9CisgICAgICAgIFRleHR1cmUoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4
dHVyZSwgRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIqIHVwZGF0ZXIpCisgICAgICAgICAgICA6IExh
eWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUodGV4dHVyZSkKKyAgICAgICAgICAgICwgbV91cGRh
dGVyKHVwZGF0ZXIpCisgICAgICAgIHsKKyAgICAgICAgfQogICAgICAgICB2aXJ0dWFsIH5UZXh0
dXJlKCkgeyB9CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250
ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3Qm
KSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVSZWN0KGNvbnN0IEludFJlY3QmKSB7
ICsrbV91cGRhdGVyLT5tX3ByZXBhcmVSZWN0Q291bnQ7IH0KKworICAgIHByaXZhdGU6CisgICAg
ICAgIEZha2VMYXllclRleHR1cmVVcGRhdGVyKiBtX3VwZGF0ZXI7CiAgICAgfTsKIAotICAgIEZh
a2VMYXllclRleHR1cmVVcGRhdGVyKCkgOiBtX3ByZXBhcmVDb3VudCgwKSB7IH0KKyAgICBGYWtl
TGF5ZXJUZXh0dXJlVXBkYXRlcigpIDogbV9wcmVwYXJlQ291bnQoMCksIG1fcHJlcGFyZVJlY3RD
b3VudCgwKSB7IH0KICAgICB2aXJ0dWFsIH5GYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpIHsgfQog
CiAgICAgLy8gU2V0cyB0aGUgcmVjdCB0byBpbnZhbGlkYXRlIGR1cmluZyB0aGUgbmV4dCBjYWxs
IHRvIHByZXBhcmVUb1VwZGF0ZSgpLiBBZnRlciB0aGUgbmV4dAogICAgIC8vIGNhbGwgdG8gcHJl
cGFyZVRvVXBkYXRlKCkgdGhlIHJlY3QgaXMgcmVzZXQuCiAgICAgdm9pZCBzZXRSZWN0VG9JbnZh
bGlkYXRlKGNvbnN0IEludFJlY3QmLCBGYWtlVGlsZWRMYXllckNocm9taXVtKik7CiAKKyAgICB2
b2lkIHNldE9wYXF1ZVBhaW50UmVjdChjb25zdCBJbnRSZWN0JiBvcGFxdWVQYWludFJlY3QpIHsg
bV9vcGFxdWVQYWludFJlY3QgPSBvcGFxdWVQYWludFJlY3Q7IH0KKwogICAgIC8vIE51bWJlciBv
ZiB0aW1lcyBwcmVwYXJlVG9VcGRhdGUgaGFzIGJlZW4gaW52b2tlZC4KICAgICBpbnQgcHJlcGFy
ZUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9wcmVwYXJlQ291bnQ7IH0KICAgICB2b2lkIGNsZWFy
UHJlcGFyZUNvdW50KCkgeyBtX3ByZXBhcmVDb3VudCA9IDA7IH0KIAotICAgIHZvaWQgc2V0T3Bh
cXVlUGFpbnRSZWN0KGNvbnN0IEludFJlY3QmIG9wYXF1ZVBhaW50UmVjdCkgeyBtX29wYXF1ZVBh
aW50UmVjdCA9IG9wYXF1ZVBhaW50UmVjdDsgfQorICAgIC8vIE51bWJlciBvZiB0aW1lcyBwcmVw
YXJlUmVjdCBoYXMgYmVlbiBpbnZva2VkIG9uIGEgdGV4dHVyZS4KKyAgICBpbnQgcHJlcGFyZVJl
Y3RDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlcGFyZVJlY3RDb3VudDsgfQorICAgIHZvaWQg
Y2xlYXJQcmVwYXJlUmVjdENvdW50KCkgeyBtX3ByZXBhcmVSZWN0Q291bnQgPSAwOyB9CiAKICAg
ICAvLyBMYXN0IHJlY3QgcGFzc2VkIHRvIHByZXBhcmVUb1VwZGF0ZSgpLgogICAgIGNvbnN0IElu
dFJlY3QmIGxhc3RVcGRhdGVSZWN0KCkgIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFVwZGF0ZVJlY3Q7
IH0KIAotICAgIHZpcnR1YWwgUGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJl
PiBjcmVhdGVUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKiBtYW5hZ2VyKSB7IHJldHVybiBhZG9wdFB0
cihuZXcgVGV4dHVyZShNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKG1hbmFnZXIpKSk7IH0KKyAgICB2
aXJ0dWFsIFBhc3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gY3JlYXRlVGV4
dHVyZShUZXh0dXJlTWFuYWdlciogbWFuYWdlcikgeyByZXR1cm4gYWRvcHRQdHIobmV3IFRleHR1
cmUoTWFuYWdlZFRleHR1cmU6OmNyZWF0ZShtYW5hZ2VyKSwgdGhpcykpOyB9CiAgICAgdmlydHVh
bCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtKSB7IHJldHVy
biBTYW1wbGVkVGV4ZWxGb3JtYXRSR0JBOyB9CiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1Vw
ZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYsIGludCwgZmxv
YXQsIEludFJlY3QqIHJlc3VsdGluZ09wYXF1ZVJlY3QpOwogCiBwcml2YXRlOgogICAgIGludCBt
X3ByZXBhcmVDb3VudDsKKyAgICBpbnQgbV9wcmVwYXJlUmVjdENvdW50OwogICAgIEludFJlY3Qg
bV9yZWN0VG9JbnZhbGlkYXRlOwogICAgIEludFJlY3QgbV9sYXN0VXBkYXRlUmVjdDsKICAgICBJ
bnRSZWN0IG1fb3BhcXVlUGFpbnRSZWN0OwpAQCAtMTI1LDE0ICsxMzgsMTQgQEAgcHVibGljOgog
ICAgICAgICBUaWxlZExheWVyQ2hyb21pdW06OmludmFsaWRhdGVSZWN0KHJlY3QpOwogICAgIH0K
IAotICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIHJlY3QpCisgICAgdm9p
ZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgUmVnaW9uJiBvY2Ns
dWRlZCkKICAgICB7Ci0gICAgICAgIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRl
KHJlY3QpOworICAgICAgICBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZShyZWN0
LCBvY2NsdWRlZCk7CiAgICAgfQogCi0gICAgdm9pZCBwcmVwYXJlVG9VcGRhdGVJZGxlKGNvbnN0
IEludFJlY3QmIHJlY3QpCisgICAgdm9pZCBwcmVwYXJlVG9VcGRhdGVJZGxlKGNvbnN0IEludFJl
Y3QmIHJlY3QsIGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWQpCiAgICAgewotICAgICAgICBUaWxlZExh
eWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlkbGUocmVjdCk7CisgICAgICAgIFRpbGVkTGF5
ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWRsZShyZWN0LCBvY2NsdWRlZCk7CiAgICAgfQog
CiAgICAgYm9vbCBuZWVkc0lkbGVQYWludChjb25zdCBJbnRSZWN0JiByZWN0KQpAQCAtMTQ5LDkg
KzE2Miw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgVGV4dHVyZU1hbmFnZXIqIHRleHR1cmVN
YW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlTWFuYWdlcjsgfQogCi0gICAgdmlydHVh
bCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgLyogb2NjbHVkZWRTY3Jl
ZW5TcGFjZSAqLykKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoY29uc3Qg
UmVnaW9uJiBvY2NsdWRlZFNjcmVlblNwYWNlKQogICAgIHsKLSAgICAgICAgcHJlcGFyZVRvVXBk
YXRlKHZpc2libGVMYXllclJlY3QoKSk7CisgICAgICAgIHByZXBhcmVUb1VwZGF0ZSh2aXNpYmxl
TGF5ZXJSZWN0KCksIG9jY2x1ZGVkU2NyZWVuU3BhY2UpOwogICAgIH0KIAogcHJpdmF0ZToKQEAg
LTIwNiw2ICsyMTksNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hEaXJ0eVRp
bGVzKQogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVm
KG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAg
RGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgUmVmUHRyPEZha2VDQ1Rp
bGVkTGF5ZXJJbXBsPiBsYXllckltcGwgPSBhZG9wdFJlZihuZXcgRmFrZUNDVGlsZWRMYXllcklt
cGwoMCkpOworICAgIFJlZ2lvbiBub09jY2x1c2lvbjsKIAogICAgIEZha2VUZXh0dXJlQWxsb2Nh
dG9yIHRleHR1cmVBbGxvY2F0b3I7CiAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0
dXJlQWxsb2NhdG9yKTsKQEAgLTIxMyw3ICsyMjcsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QsIHB1c2hEaXJ0eVRpbGVzKQogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMCwg
c28gdGhpcyBpbnZhbGlkYXRlcyBhbmQgdGhlbiBwYWludHMgdHdvIHRpbGVzLgogICAgIGxheWVy
LT5zZXRCb3VuZHMoSW50U2l6ZSgxMDAsIDIwMCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVj
dChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJ
bnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRS
ZWN0KDAsIDAsIDEwMCwgMjAwKSwgbm9PY2NsdXNpb24pOwogICAgIGxheWVyLT51cGRhdGVDb21w
b3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1Rv
KGxheWVySW1wbC5nZXQoKSk7CiAKQEAgLTIyNiw3ICsyNDAsNyBAQCBURVNUKFRpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QsIHB1c2hEaXJ0eVRpbGVzKQogICAgIC8vIEludmFsaWRhdGVzIGJvdGggdGls
ZXMuLi4KICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkp
OwogICAgIC8vIC4uLi5idXQgdGhlbiBvbmx5IHVwZGF0ZSBvbmUgb2YgdGhlbS4KLSAgICBsYXll
ci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAxMDApKTsKKyAgICBsYXllci0+
cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCBub09jY2x1c2lvbik7CiAg
ICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAgICAgbGF5
ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIApAQCAtMjQ5LDEyICsyNjMs
MTMgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoSWRsZVBhaW50VGlsZXMpCiAg
ICAgSW50U2l6ZSBjb250ZW50Qm91bmRzKDUwMCwgNTAwKTsKICAgICBJbnRSZWN0IGNvbnRlbnRS
ZWN0KEludFBvaW50Ojp6ZXJvKCksIGNvbnRlbnRCb3VuZHMpOwogICAgIEludFJlY3QgdmlzaWJs
ZVJlY3QoMjAwLCAyMDAsIDEwMCwgMTAwKTsKKyAgICBSZWdpb24gbm9PY2NsdXNpb247CiAKICAg
ICAvLyBUaGlzIGludmFsaWRhdGVzIDI1IHRpbGVzIGFuZCB0aGVuIHBhaW50cyBvbmUgdmlzaWJs
ZSB0aWxlLgogICAgIGxheWVyLT5zZXRCb3VuZHMoY29udGVudEJvdW5kcyk7CiAgICAgbGF5ZXIt
PnNldFZpc2libGVMYXllclJlY3QodmlzaWJsZVJlY3QpOwogICAgIGxheWVyLT5pbnZhbGlkYXRl
UmVjdChjb250ZW50UmVjdCk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZSh2aXNpYmxlUmVj
dCk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZSh2aXNpYmxlUmVjdCwgbm9PY2NsdXNpb24p
OwogCiAgICAgLy8gV2Ugc2hvdWxkIG5lZWQgaWRsZS1wYWludGluZyBmb3IgM3gzIHRpbGVzIGlu
IHRoZSBjZW50ZXIuCiAgICAgRVhQRUNUX1RSVUUobGF5ZXItPm5lZWRzSWRsZVBhaW50KHZpc2li
bGVSZWN0KSk7CkBAIC0yNjksOSArMjg0LDkgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0
LCBwdXNoSWRsZVBhaW50VGlsZXMpCiAKICAgICAvLyBGb3IgdGhlIG5leHQgZm91ciB1cGRhdGVz
LCB3ZSBzaG91bGQgZGV0ZWN0IHdlIHN0aWxsIG5lZWQgaWRsZSBwYWludGluZy4KICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IDQ7IGkrKykgewotICAgICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRl
KHZpc2libGVSZWN0KTsKKyAgICAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZSh2aXNpYmxlUmVj
dCwgbm9PY2NsdXNpb24pOwogICAgICAgICBFWFBFQ1RfVFJVRShsYXllci0+bmVlZHNJZGxlUGFp
bnQodmlzaWJsZVJlY3QpKTsKLSAgICAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZUlkbGUodmlz
aWJsZVJlY3QpOworICAgICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlSWRsZSh2aXNpYmxlUmVj
dCwgbm9PY2NsdXNpb24pOwogICAgICAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNl
cygwLCB1cGRhdGVyKTsKICAgICAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBs
LmdldCgpKTsKICAgICAgICAgdGV4dHVyZU1hbmFnZXItPnVucHJvdGVjdEFsbFRleHR1cmVzKCk7
CkBAIC0yOTksNiArMzE0LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFp
bnRPdXRPZk1lbW9yeSkKICAgICBJbnRTaXplIGNvbnRlbnRCb3VuZHMoMzAwLCAzMDApOwogICAg
IEludFJlY3QgY29udGVudFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgY29udGVudEJvdW5kcyk7CiAg
ICAgSW50UmVjdCB2aXNpYmxlUmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApOworICAgIFJlZ2lvbiBu
b09jY2x1c2lvbjsKIAogICAgIC8vIFdlIGhhdmUgZW5vdWdoIG1lbW9yeSBmb3Igb25seSB0aGUg
dmlzaWJsZSByZWN0LCBzbyB3ZSB3aWxsIHJ1biBvdXQgb2YgbWVtb3J5IGluIGZpcnN0IGlkbGUg
cGFpbnQuCiAgICAgaW50IG1lbW9yeUxpbWl0ID0gNCAqIDEwMCAqIDEwMDsgLy8gMiB0aWxlcywg
NCBieXRlcyBwZXIgcGl4ZWwuCkBAIC0zMTUsNyArMzMxLDcgQEAgVEVTVChUaWxlZExheWVyQ2hy
b21pdW1UZXN0LCBpZGxlUGFpbnRPdXRPZk1lbW9yeSkKICAgICBsYXllci0+c2V0Qm91bmRzKGNv
bnRlbnRCb3VuZHMpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KHZpc2libGVSZWN0
KTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoY29udGVudFJlY3QpOwotICAgIGxheWVyLT5w
cmVwYXJlVG9VcGRhdGUodmlzaWJsZVJlY3QpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUo
dmlzaWJsZVJlY3QsIG5vT2NjbHVzaW9uKTsKIAogICAgIC8vIFdlIHNob3VsZCBuZWVkIGlkbGUt
cGFpbnRpbmcgZm9yIDN4MyB0aWxlcyBzdXJvdW5kaW5nIHZpc2libGUgdGlsZS4KICAgICBFWFBF
Q1RfVFJVRShsYXllci0+bmVlZHNJZGxlUGFpbnQodmlzaWJsZVJlY3QpKTsKQEAgLTMyNyw4ICsz
NDMsOCBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE91dE9mTWVtb3J5
KQogICAgIEVYUEVDVF9UUlVFKGxheWVySW1wbC0+aGFzVGlsZUF0KDEsIDEpKTsKIAogICAgIHRl
eHR1cmVNYW5hZ2VyLT51bnByb3RlY3RBbGxUZXh0dXJlcygpOwotICAgIGxheWVyLT5wcmVwYXJl
VG9VcGRhdGUodmlzaWJsZVJlY3QpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGVJZGxlKHZp
c2libGVSZWN0KTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKHZpc2libGVSZWN0LCBub09j
Y2x1c2lvbik7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZUlkbGUodmlzaWJsZVJlY3QsIG5v
T2NjbHVzaW9uKTsKIAogICAgIC8vIFdlIHNob3VsZG4ndCBzaWduYWwgd2UgbmVlZCBhbm90aGVy
IGlkbGUgcGFpbnQgYWZ0ZXIgd2UgcnVuIG91dCBvZiBtZW1vcnkuCiAgICAgRVhQRUNUX0ZBTFNF
KGxheWVyLT5uZWVkc0lkbGVQYWludCh2aXNpYmxlUmVjdCkpOwpAQCAtMzQzLDYgKzM1OSw3IEBA
IFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaW52YWxpZGF0ZUZyb21QcmVwYXJlKQogICAg
IFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtl
VGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgRGVidWdTY29w
ZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgUmVmUHRyPEZha2VDQ1RpbGVkTGF5ZXJJ
bXBsPiBsYXllckltcGwgPSBhZG9wdFJlZihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpOwor
ICAgIFJlZ2lvbiBub09jY2x1c2lvbjsKIAogICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1
cmVBbGxvY2F0b3I7CiAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2Nh
dG9yKTsKQEAgLTM1MCw3ICszNjcsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlu
dmFsaWRhdGVGcm9tUHJlcGFyZSkKICAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAsIHNv
IHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxlcy4KICAgICBsYXllci0+
c2V0Qm91bmRzKEludFNpemUoMTAwLCAyMDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3Qo
SW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50
UmVjdCgwLCAwLCAxMDAsIDIwMCkpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVj
dCgwLCAwLCAxMDAsIDIwMCksIG5vT2NjbHVzaW9uKTsKICAgICBsYXllci0+dXBkYXRlQ29tcG9z
aXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhs
YXllckltcGwuZ2V0KCkpOwogCkBAIC0zNjMsMTggKzM4MCwxOCBAQCBURVNUKFRpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QsIGludmFsaWRhdGVGcm9tUHJlcGFyZSkKICAgICBsYXllci0+ZmFrZUxheWVy
VGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQcmVwYXJlQ291bnQoKTsKICAgICAvLyBJbnZva2UgcHJl
cGFyZVRvVXBkYXRlIGFnYWluLiBBcyB0aGUgbGF5ZXIgaXMgdmFsaWQgcHJlcGFyZVRvVXBkYXRl
IHNob3VsZG4ndCBiZSBpbnZva2VkIG9uCiAgICAgLy8gdGhlIExheWVyVGV4dHVyZVVwZGF0ZXIu
Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7Cisg
ICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgbm9PY2Ns
dXNpb24pOwogICAgIEVYUEVDVF9FUSgwLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIo
KS0+cHJlcGFyZUNvdW50KCkpOwogCiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3Qo
MCwgMCwgNTAsIDUwKSk7CiAgICAgLy8gc2V0UmVjdFRvSW52YWxpZGF0ZSB0cmlnZ2VycyBpbnZh
bGlkYXRlUmVjdCgpIGJlaW5nIGludm9rZWQgZnJvbSBwcmVwYXJlVG9VcGRhdGUuCiAgICAgbGF5
ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNldFJlY3RUb0ludmFsaWRhdGUoSW50UmVj
dCgyNSwgMjUsIDUwLCA1MCksIGxheWVyLmdldCgpKTsKICAgICBsYXllci0+ZmFrZUxheWVyVGV4
dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQcmVwYXJlQ291bnQoKTsKLSAgICBsYXllci0+cHJlcGFyZVRv
VXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBk
YXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCBub09jY2x1c2lvbik7CiAgICAgRVhQRUNUX0VR
KDEsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlQ291bnQoKSk7CiAg
ICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyUHJlcGFyZUNvdW50KCk7
CiAgICAgLy8gVGhlIGxheWVyIHNob3VsZCBzdGlsbCBiZSBpbnZhbGlkIGFzIHByZXBhcmVUb1Vw
ZGF0ZSBpbnZva2VkIGludmFsaWRhdGUuCi0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRS
ZWN0KDAsIDAsIDEwMCwgMjAwKSk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0
KDAsIDAsIDEwMCwgMjAwKSwgbm9PY2NsdXNpb24pOwogICAgIEVYUEVDVF9FUSgxLCBsYXllci0+
ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZUNvdW50KCkpOwogfQogCkBAIC0zODUs
NiArNDAyLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2ZXJpZnlVcGRhdGVSZWN0
V2hlbkNvbnRlbnRCb3VuZHNBcmVTY2FsZWQpCiAKICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+
IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMiox
MDI0KjEwMjQsIDEwMjQpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllcldpdGhTY2FsZWRCb3Vu
ZHM+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyV2l0aFNjYWxlZEJvdW5kcyh0
ZXh0dXJlTWFuYWdlci5nZXQoKSkpOworICAgIFJlZ2lvbiBub09jY2x1c2lvbjsKIAogICAgIEZh
a2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7CiAgICAgQ0NUZXh0dXJlVXBkYXRl
ciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsKQEAgLTM5OSwyMCArNDE3LDIwIEBAIFRFU1Qo
VGlsZWRMYXllckNocm9taXVtVGVzdCwgdmVyaWZ5VXBkYXRlUmVjdFdoZW5Db250ZW50Qm91bmRz
QXJlU2NhbGVkKQogICAgIC8vIE9uIGZpcnN0IHVwZGF0ZSwgdGhlIHVwZGF0ZVJlY3QgaW5jbHVk
ZXMgYWxsIHRpbGVzLCBldmVuIGJleW9uZCB0aGUgYm91bmRhcmllcyBvZiB0aGUgbGF5ZXIuCiAg
ICAgLy8gSG93ZXZlciwgaXQgc2hvdWxkIHN0aWxsIGJlIGluIGxheWVyIHNwYWNlLCBub3QgY29u
dGVudCBzcGFjZS4KICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoY29udGVudEJvdW5kcyk7Ci0g
ICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzKTsKKyAgICBsYXllci0+cHJl
cGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMsIG5vT2NjbHVzaW9uKTsKICAgICBsYXllci0+dXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKICAgICBFWFBFQ1RfRkxPQVRfUkVD
VF9FUShGbG9hdFJlY3QoMCwgMCwgMzAwLCAzMDAgKiAwLjgpLCBsYXllci0+dXBkYXRlUmVjdCgp
KTsKIAogICAgIC8vIEFmdGVyIHRoZSB0aWxlcyBhcmUgdXBkYXRlZCBvbmNlLCBhbm90aGVyIGlu
dmFsaWRhdGUgb25seSBuZWVkcyB0byB1cGRhdGUgdGhlIGJvdW5kcyBvZiB0aGUgbGF5ZXIuCiAg
ICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KGNvbnRlbnRCb3VuZHMpOwotICAgIGxheWVyLT5wcmVw
YXJlVG9VcGRhdGUoY29udGVudEJvdW5kcyk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShj
b250ZW50Qm91bmRzLCBub09jY2x1c2lvbik7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAgICAgRVhQRUNUX0ZMT0FUX1JFQ1RfRVEoRmxvYXRSZWN0
KGxheWVyQm91bmRzKSwgbGF5ZXItPnVwZGF0ZVJlY3QoKSk7CiAKICAgICAvLyBQYXJ0aWFsIHJl
LXBhaW50IHNob3VsZCBhbHNvIGJlIHJlcHJlc2VudGVkIGJ5IHRoZSB1cGRhdGVSZWN0IGluIGxh
eWVyIHNwYWNlLCBub3QgY29udGVudCBzcGFjZS4KICAgICBJbnRSZWN0IHBhcnRpYWxEYW1hZ2Uo
MzAsIDEwMCwgMTAsIDEwKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QocGFydGlhbERhbWFn
ZSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzKTsKKyAgICBsYXll
ci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMsIG5vT2NjbHVzaW9uKTsKICAgICBsYXll
ci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKICAgICBFWFBFQ1RfRkxP
QVRfUkVDVF9FUShGbG9hdFJlY3QoNDUsIDgwLCAxNSwgOCksIGxheWVyLT51cGRhdGVSZWN0KCkp
OwogfQpAQCAtNDc4LDYgKzQ5Niw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgbGF5
ZXJBZGRzU2VsZlRvT2NjbHVkZWRSZWdpb24pCiAgICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4
MTAwLCBzbyB0aGlzIGludmFsaWRhdGVzIGFuZCB0aGVuIHBhaW50cyB0d28gdGlsZXMgaW4gdmFy
aW91cyB3YXlzLgogCiAgICAgUmVnaW9uIG9jY2x1ZGVkOworICAgIFJlZ2lvbiBub09jY2x1c2lv
bjsKICAgICBJbnRSZWN0IGNvbnRlbnRCb3VuZHMgPSBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKTsK
ICAgICBJbnRSZWN0IHZpc2libGVCb3VuZHMgPSBJbnRSZWN0KDAsIDAsIDEwMCwgMTUwKTsKIApA
QCAtNDkyLDcgKzUxMSw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgbGF5ZXJBZGRz
U2VsZlRvT2NjbHVkZWRSZWdpb24pCiAgICAgLy8gSWYgdGhlIGxheWVyIGlzIG9wYXF1ZSB0aGVu
IHRoZSBvY2NsdWRlZCByZWdpb24gc2hvdWxkIGJlIHRoZSB3aG9sZSBsYXllcidzIHZpc2libGUg
cmVnaW9uLgogICAgIGxheWVyLT5zZXRPcGFxdWUodHJ1ZSk7CiAgICAgbGF5ZXItPmludmFsaWRh
dGVSZWN0KGNvbnRlbnRCb3VuZHMpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVu
dEJvdW5kcyk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzLCBub09j
Y2x1c2lvbik7CiAKICAgICBvY2NsdWRlZCA9IFJlZ2lvbigpOwogICAgIGxheWVyLT5hZGRTZWxm
VG9PY2NsdWRlZFNjcmVlblNwYWNlKG9jY2x1ZGVkKTsKQEAgLTUwMiw3ICs1MjEsNyBAQCBURVNU
KFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGxheWVyQWRkc1NlbGZUb09jY2x1ZGVkUmVnaW9uKQog
ICAgIC8vIElmIHRoZSBsYXllciBpcyBub3Qgb3BhcXVlIHRoZW4gdGhlIG9jY2x1ZGVkIHJlZ2lv
biBzaG91bGQgYmUgZW1wdHkuCiAgICAgbGF5ZXItPnNldE9wYXF1ZShmYWxzZSk7CiAgICAgbGF5
ZXItPmludmFsaWRhdGVSZWN0KGNvbnRlbnRCb3VuZHMpOwotICAgIGxheWVyLT5wcmVwYXJlVG9V
cGRhdGUoY29udGVudEJvdW5kcyk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50
Qm91bmRzLCBub09jY2x1c2lvbik7CiAKICAgICBvY2NsdWRlZCA9IFJlZ2lvbigpOwogICAgIGxh
eWVyLT5hZGRTZWxmVG9PY2NsdWRlZFNjcmVlblNwYWNlKG9jY2x1ZGVkKTsKQEAgLTUxMyw3ICs1
MzIsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGxheWVyQWRkc1NlbGZUb09jY2x1
ZGVkUmVnaW9uKQogICAgIEludFJlY3Qgb3BhcXVlUGFpbnRSZWN0ID0gSW50UmVjdCgxMCwgMTAs
IDkwLCAxOTApOwogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRPcGFx
dWVQYWludFJlY3Qob3BhcXVlUGFpbnRSZWN0KTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3Qo
Y29udGVudEJvdW5kcyk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRz
KTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMsIG5vT2NjbHVzaW9u
KTsKIAogICAgIG9jY2x1ZGVkID0gUmVnaW9uKCk7CiAgICAgbGF5ZXItPmFkZFNlbGZUb09jY2x1
ZGVkU2NyZWVuU3BhY2Uob2NjbHVkZWQpOwpAQCAtNTIyLDcgKzU0MSw3IEBAIFRFU1QoVGlsZWRM
YXllckNocm9taXVtVGVzdCwgbGF5ZXJBZGRzU2VsZlRvT2NjbHVkZWRSZWdpb24pCiAKICAgICAv
LyBJZiB3ZSBwYWludCBhZ2FpbiB3aXRob3V0IGludmFsaWRhdGluZywgdGhlIHNhbWUgc3R1ZmYg
c2hvdWxkIGJlIG9jY2x1ZGVkLgogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigp
LT5zZXRPcGFxdWVQYWludFJlY3QoSW50UmVjdCgpKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBk
YXRlKGNvbnRlbnRCb3VuZHMpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJv
dW5kcywgbm9PY2NsdXNpb24pOwogCiAgICAgb2NjbHVkZWQgPSBSZWdpb24oKTsKICAgICBsYXll
ci0+YWRkU2VsZlRvT2NjbHVkZWRTY3JlZW5TcGFjZShvY2NsdWRlZCk7CkBAIC01MzksNyArNTU4
LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBsYXllckFkZHNTZWxmVG9PY2NsdWRl
ZFJlZ2lvbikKICAgICBzY3JlZW5TcGFjZVRyYW5zZm9ybSAqPSB0cmFuc2Zvcm07CiAgICAgc2Ny
ZWVuU3BhY2VUcmFuc2Zvcm0udHJhbnNsYXRlKC1jb250ZW50Qm91bmRzLndpZHRoKCkgLyAyLjAs
IC1jb250ZW50Qm91bmRzLmhlaWdodCgpIC8gMi4wKTsKICAgICBsYXllci0+c2V0U2NyZWVuU3Bh
Y2VUcmFuc2Zvcm0oc2NyZWVuU3BhY2VUcmFuc2Zvcm0pOwotICAgIGxheWVyLT5wcmVwYXJlVG9V
cGRhdGUoY29udGVudEJvdW5kcyk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50
Qm91bmRzLCBub09jY2x1c2lvbik7CiAKICAgICBvY2NsdWRlZCA9IFJlZ2lvbigpOwogICAgIGxh
eWVyLT5hZGRTZWxmVG9PY2NsdWRlZFNjcmVlblNwYWNlKG9jY2x1ZGVkKTsKQEAgLTU1NCw3ICs1
NzMsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGxheWVyQWRkc1NlbGZUb09jY2x1
ZGVkUmVnaW9uKQogICAgIHNjcmVlblNwYWNlVHJhbnNmb3JtICo9IHRyYW5zZm9ybTsKICAgICBz
Y3JlZW5TcGFjZVRyYW5zZm9ybS50cmFuc2xhdGUoLWNvbnRlbnRCb3VuZHMud2lkdGgoKSAvIDIu
MCwgLWNvbnRlbnRCb3VuZHMuaGVpZ2h0KCkgLyAyLjApOwogICAgIGxheWVyLT5zZXRTY3JlZW5T
cGFjZVRyYW5zZm9ybShzY3JlZW5TcGFjZVRyYW5zZm9ybSk7Ci0gICAgbGF5ZXItPnByZXBhcmVU
b1VwZGF0ZShjb250ZW50Qm91bmRzKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRl
bnRCb3VuZHMsIG5vT2NjbHVzaW9uKTsKIAogICAgIG9jY2x1ZGVkID0gUmVnaW9uKCk7CiAgICAg
bGF5ZXItPmFkZFNlbGZUb09jY2x1ZGVkU2NyZWVuU3BhY2Uob2NjbHVkZWQpOwpAQCAtNTY0LDQg
KzU4MywxNDEgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBsYXllckFkZHNTZWxmVG9P
Y2NsdWRlZFJlZ2lvbikKICAgICBFWFBFQ1RfRVEoMHUsIG9jY2x1ZGVkLnJlY3RzKCkuc2l6ZSgp
KTsKIH0KIAorVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRob3V0
T2NjbHVzaW9uKQoreworICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIg
PSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAyKjEwMjQqMTAyNCwgMTAyNCk7
CisgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3
IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKKyAgICBSZWdp
b24gb2NjbHVkZWQ7CisKKyAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAsIHNvIHRoaXMg
aW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxlcy4KKyAgICBsYXllci0+c2V0Qm91
bmRzKEludFNpemUoMTAwLCAyMDApKTsKKworICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRS
ZWN0KDAsIDAsIDEwMCwgMjAwKSk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0
KDAsIDAsIDEwMCwgMjAwKSwgb2NjbHVkZWQpOworICAgIEVYUEVDVF9FUSgyLCBsYXllci0+ZmFr
ZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKK30KKworVEVTVChU
aWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uKQoreworICAg
IE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6
Y3JlYXRlKDQqMTAyNCoxMDI0LCAyKjEwMjQqMTAyNCwgMTAyNCk7CisgICAgUmVmUHRyPEZha2VU
aWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hy
b21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKKyAgICBSZWdpb24gb2NjbHVkZWQ7CisKKyAg
ICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAuCisKKyAgICBsYXllci0+c2V0Qm91bmRzKElu
dFNpemUoNjAwLCA2MDApKTsKKworICAgIG9jY2x1ZGVkID0gSW50UmVjdCgyMDAsIDIwMCwgMzAw
LCAxMDApOworICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAw
KSk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwg
b2NjbHVkZWQpOworICAgIEVYUEVDVF9FUSgzNi0zLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVw
ZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKKworICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0
dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVSZWN0Q291bnQoKTsKKworICAgIG9jY2x1ZGVkID0g
SW50UmVjdCgyNTAsIDIwMCwgMzAwLCAxMDApOworICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJ
bnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRS
ZWN0KDAsIDAsIDYwMCwgNjAwKSwgb2NjbHVkZWQpOworICAgIEVYUEVDVF9FUSgzNi0yLCBsYXll
ci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKKworICAg
IGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVSZWN0Q291bnQo
KTsKKworICAgIG9jY2x1ZGVkID0gSW50UmVjdCgyNTAsIDI1MCwgMzAwLCAxMDApOworICAgIGxh
eWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CisgICAgbGF5ZXIt
PnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgb2NjbHVkZWQpOworICAg
IEVYUEVDVF9FUSgzNiwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVS
ZWN0Q291bnQoKSk7Cit9CisKK1RFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNOb3RQ
YWludGVkV2l0aG91dEludmFsaWRhdGlvbikKK3sKKyAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+
IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMiox
MDI0KjEwMjQsIDEwMjQpOworICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXll
ciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdl
dCgpKSk7CisgICAgUmVnaW9uIG9jY2x1ZGVkOworCisgICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAx
MDB4MTAwLgorCisgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDYwMCwgNjAwKSk7CisKKyAg
ICBvY2NsdWRlZCA9IEludFJlY3QoMjAwLCAyMDAsIDMwMCwgMTAwKTsKKyAgICBsYXllci0+c2V0
VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CisgICAgbGF5ZXItPmlu
dmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKKyAgICBsYXllci0+cHJlcGFy
ZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCBvY2NsdWRlZCk7CisgICAgRVhQRUNU
X0VRKDM2LTMsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENv
dW50KCkpOworCisgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyUHJl
cGFyZVJlY3RDb3VudCgpOworCisgICAgLy8gUmVwYWludCB3aXRob3V0IG1hcmtpbmcgaXQgZGly
dHkuCisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwg
b2NjbHVkZWQpOworICAgIEVYUEVDVF9FUSgwLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0
ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKK30KKworVEVTVChUaWxlZExheWVyQ2hyb21pdW1U
ZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kVHJhbnNmb3JtcykKK3sKKyAgICBPd25Q
dHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0
ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOworICAgIFJlZlB0cjxGYWtlVGlsZWRM
YXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVt
KHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CisgICAgUmVnaW9uIG9jY2x1ZGVkOworCisgICAgLy8g
VGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLgorCisgICAgLy8gVGhpcyBtYWtlcyBzdXJlIHRoZSBw
YWludGluZyB3b3JrcyB3aGVuIHRoZSBvY2NsdWRlZCByZWdpb24gKGluIHNjcmVlbiBzcGFjZSkK
KyAgICAvLyBpcyB0cmFuc2Zvcm1lZCBkaWZmZXJlbnRseSB0aGFuIHRoZSBsYXllci4KKyAgICBs
YXllci0+c2V0Qm91bmRzKEludFNpemUoNjAwLCA2MDApKTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBzY3JlZW5UcmFuc2Zvcm07CisgICAgc2NyZWVuVHJhbnNmb3JtLnNjYWxlKDAuNSk7Cisg
ICAgbGF5ZXItPnNldFNjcmVlblNwYWNlVHJhbnNmb3JtKHNjcmVlblRyYW5zZm9ybSk7CisKKyAg
ICBvY2NsdWRlZCA9IEludFJlY3QoMTAwLCAxMDAsIDE1MCwgNTApOworICAgIGxheWVyLT5zZXRW
aXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXItPmJvdW5kcygpKSk7Cisg
ICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKKyAgICBs
YXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCBvY2NsdWRlZCk7
CisgICAgRVhQRUNUX0VRKDM2LTMsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5w
cmVwYXJlUmVjdENvdW50KCkpOworfQorCitURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRp
bGVzUGFpbnRlZFdpdGhPY2NsdXNpb25BbmRTY2FsaW5nKQoreworICAgIE93blB0cjxUZXh0dXJl
TWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCox
MDI0LCAyKjEwMjQqMTAyNCwgMTAyNCk7CisgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21p
dW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1h
bmFnZXIuZ2V0KCkpKTsKKyAgICBSZWdpb24gb2NjbHVkZWQ7CisKKyAgICAvLyBUaGUgdGlsZSBz
aXplIGlzIDEwMHgxMDAuCisKKyAgICAvLyBUaGlzIG1ha2VzIHN1cmUgdGhlIHBhaW50aW5nIHdv
cmtzIHdoZW4gdGhlIGNvbnRlbnQgc3BhY2UgaXMgc2NhbGVkIHRvCisgICAgLy8gYSBkaWZmZXJl
bnQgbGF5ZXIgc3BhY2UuIEluIHRoaXMgY2FzZSB0aWxlcyBhcmUgc2NhbGVkIHRvIGJlIDIwMHgy
MDAKKyAgICAvLyBwaXhlbHMsIHdoaWNoIG1lYW5zIG5vbmUgc2hvdWxkIGJlIG9jY2x1ZGVkLgor
ICAgIGxheWVyLT5zZXRDb250ZW50c1NjYWxlKDAuNSk7CisgICAgbGF5ZXItPnNldEJvdW5kcyhJ
bnRTaXplKDYwMCwgNjAwKSk7CisKKyAgICBvY2NsdWRlZCA9IEludFJlY3QoMjAwLCAyMDAsIDMw
MCwgMTAwKTsKKyAgICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KEludFBvaW50
KCksIGxheWVyLT5ib3VuZHMoKSkpOworICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0
KDAsIDAsIDYwMCwgNjAwKSk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAs
IDAsIDYwMCwgNjAwKSwgb2NjbHVkZWQpOworICAgIC8vIFRoZSBjb250ZW50IGlzIGhhbGYgdGhl
IHNpemUgb2YgdGhlIGxheWVyIChzbyB0aGUgbnVtYmVyIG9mIHRpbGVzIGlzIGZld2VyKS4KKyAg
ICAvLyBJbiB0aGlzIGNhc2UsIHRoZSBjb250ZW50IGlzIDMwMHgzMDAsIGFuZCBzaW5jZSB0aGUg
dGlsZSBzaXplIGlzIDEwMCwgdGhlCisgICAgLy8gbnVtYmVyIG9mIHRpbGVzIDN4My4KKyAgICBF
WFBFQ1RfRVEoOSwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0
Q291bnQoKSk7CisKKyAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQ
cmVwYXJlUmVjdENvdW50KCk7CisKKyAgICAvLyBUaGlzIG1ha2VzIHN1cmUgdGhlIHBhaW50aW5n
IHdvcmtzIHdoZW4gdGhlIGNvbnRlbnQgc3BhY2UgaXMgc2NhbGVkIHRvCisgICAgLy8gYSBkaWZm
ZXJlbnQgbGF5ZXIgc3BhY2UuIEluIHRoaXMgY2FzZSB0aGUgb2NjbHVkZWQgcmVnaW9uIGNhdGNo
ZXMgdGhlCisgICAgLy8gYmxvd24gdXAgdGlsZXMuCisgICAgb2NjbHVkZWQgPSBJbnRSZWN0KDIw
MCwgMjAwLCAzMDAsIDIwMCk7CisgICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3QoSW50UmVj
dChJbnRQb2ludCgpLCBsYXllci0+Ym91bmRzKCkpKTsKKyAgICBsYXllci0+aW52YWxpZGF0ZVJl
Y3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUo
SW50UmVjdCgwLCAwLCA2MDAsIDYwMCksIG9jY2x1ZGVkKTsKKyAgICBFWFBFQ1RfRVEoOS0xLCBs
YXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKKwor
ICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVSZWN0Q291
bnQoKTsKKworICAgIC8vIFRoaXMgbWFrZXMgc3VyZSBjb250ZW50IHNjYWxpbmcgYW5kIHRyYW5z
Zm9ybXMgd29yayB0b2dldGhlci4KKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBzY3JlZW5UcmFu
c2Zvcm07CisgICAgc2NyZWVuVHJhbnNmb3JtLnNjYWxlKDAuNSk7CisgICAgbGF5ZXItPnNldFNj
cmVlblNwYWNlVHJhbnNmb3JtKHNjcmVlblRyYW5zZm9ybSk7CisKKyAgICBvY2NsdWRlZCA9IElu
dFJlY3QoMTAwLCAxMDAsIDE1MCwgMTAwKTsKKyAgICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVj
dChJbnRSZWN0KEludFBvaW50KCksIGxheWVyLT5ib3VuZHMoKSkpOworICAgIGxheWVyLT5pbnZh
bGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CisgICAgbGF5ZXItPnByZXBhcmVU
b1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgb2NjbHVkZWQpOworICAgIEVYUEVDVF9F
USg5LTEsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50
KCkpOworfQorCiB9IC8vIG5hbWVzcGFjZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125006</attachid>
            <date>2012-02-01 13:34:10 -0800</date>
            <delta_ts>2012-02-07 11:08:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76838-20120201163408.patch</filename>
            <type>text/plain</type>
            <size>40112</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NDc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmM3ZmUyOGU3NDY0ZWZi
ODc0NzMzZDhjZGNlMDJiNzhiZjlhZTkxYi4uMzUzZDk4ZGE5ZjUzOTQ0Yjk3ZDdmOGRkNGQ4ZTM4
YTFjNzRiNmRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTAyLTAxICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQ3Vs
bCBvY2NsdWRlZCB0aWxlcyBkdXJpbmcgcGFpbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc2ODM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTmV3IHVuaXQgdGVzdHMgaW4gVGlsZWRMYXllckNocm9taXVt
LmNwcAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVy
Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OnBh
aW50Q29udGVudHNJZkRpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRMYXllckNocm9t
aXVtOjppZGxlUGFpbnRDb250ZW50c0lmRGlydHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmg6CisgICAgICAgIChDb250ZW50TGF5
ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VM
YXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJDaHJvbWl1bTo6
cGFpbnRDb250ZW50c0lmRGlydHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06Omlk
bGVQYWludENvbnRlbnRzSWZEaXJ0eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5
ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6VGls
ZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGls
ZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZGxlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFRpbGVk
TGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6
cGFpbnRDb250ZW50c0lmRGlydHkpOgorCiAyMDEyLTAyLTAxICBNYXJpbyBTYW5jaGV6IFByYWRh
ICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBlZGl0aW5nL2luc2VydGlu
Zy80OTYwMTIwLTIuaHRtbCBmbGFreSBjcmFzaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRl
eCBjOTdlNGMzYjhiNGE1MTc3ODM5YmJjZjdhMWY1YjZiNTI4M2UwNzAwLi5hZjNhM2ZhMGY5NGJm
NGU0NGJkNWM3ZTM2YWVhMGVlYzYwNmMwYjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI4IEBACisyMDEyLTAyLTAxICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQ3VsbCBvY2NsdWRlZCB0aWxlcyBkdXJpbmcg
cGFpbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2
ODM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0
ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcDoKKyAgICAgICAgKFdURjo6Q29udGVudExheWVy
Q2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OmlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSk6Cisg
ICAgICAgICogdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHA6CisgICAgICAgIChXVEY6
OkZha2VMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKToKKyAgICAgICAgKFdU
Rjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnByZXBhcmVSZWN0KToKKyAgICAg
ICAgKFRleHR1cmUpOgorICAgICAgICAoV1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6RmFr
ZUxheWVyVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAoV1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6c2V0T3BhcXVlUGFpbnRSZWN0KToKKyAgICAgICAgKEZha2VMYXllclRleHR1cmVVcGRh
dGVyKToKKyAgICAgICAgKFdURjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVSZWN0
Q291bnQpOgorICAgICAgICAoV1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y2xlYXJQcmVw
YXJlUmVjdENvdW50KToKKyAgICAgICAgKFdURjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OmNy
ZWF0ZVRleHR1cmUpOgorICAgICAgICAoV1RGOjpGYWtlVGlsZWRMYXllckNocm9taXVtOjpwcmVw
YXJlVG9VcGRhdGUpOgorICAgICAgICAoV1RGOjpGYWtlVGlsZWRMYXllckNocm9taXVtOjpwcmVw
YXJlVG9VcGRhdGVJZGxlKToKKyAgICAgICAgKFdURjo6RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bTo6
cGFpbnRDb250ZW50c0lmRGlydHkpOgorICAgICAgICAoV1RGOjpURVNUKToKKyAgICAgICAgKFdU
Rik6CisKIDIwMTItMDItMDEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFtDaHJvbWl1bV0gRGlzYWJsZSBXZWJGcmFtZVRlc3QuRmluZEluUGFnZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExh
eWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDM0MzAzMTEwZmE5Y2FmZGYyNmNhOWJj
ZmVkNmUyNGM0ZjQwMmYyYWEuLmUwZjU4ZmY2NDVmNGFlYTliYWE5YjRlYTA0MWE1YTU4MjAyMjk1
MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0NvbnRlbnRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTkzLDcgKzkzLDcg
QEAgYm9vbCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6ZHJhd3NDb250ZW50KCkgY29uc3QKICAgICBy
ZXR1cm4gVGlsZWRMYXllckNocm9taXVtOjpkcmF3c0NvbnRlbnQoKSAmJiBtX2RlbGVnYXRlOwog
fQogCi12b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eShjb25z
dCBSZWdpb24mIC8qIG9jY2x1ZGVkU2NyZWVuU3BhY2UgKi8pCit2b2lkIENvbnRlbnRMYXllckNo
cm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVu
U3BhY2UpCiB7CiAgICAgdXBkYXRlVGlsZVNpemVBbmRUaWxpbmdPcHRpb24oKTsKIApAQCAtMTA0
LDExICsxMDQsMTEgQEAgdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lm
RGlydHkoY29uc3QgUmVnaW9uJiAvKiBvY2NsdWRlZFNjcmVlblMKICAgICBpZiAoZHJhd3NDb250
ZW50KCkpCiAgICAgICAgIGxheWVyUmVjdCA9IHZpc2libGVMYXllclJlY3QoKTsKIAotICAgIHBy
ZXBhcmVUb1VwZGF0ZShsYXllclJlY3QpOworICAgIHByZXBhcmVUb1VwZGF0ZShsYXllclJlY3Qs
IG9jY2x1ZGVkU2NyZWVuU3BhY2UpOwogICAgIG1fbmVlZHNEaXNwbGF5ID0gZmFsc2U7CiB9CiAK
LXZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OmlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSgpCit2
b2lkIENvbnRlbnRMYXllckNocm9taXVtOjppZGxlUGFpbnRDb250ZW50c0lmRGlydHkoY29uc3Qg
UmVnaW9uJiBvY2NsdWRlZFNjcmVlblNwYWNlKQogewogICAgIGlmICghZHJhd3NDb250ZW50KCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIENvbnRlbnRMYXllckNo
cm9taXVtOjppZGxlUGFpbnRDb250ZW50c0lmRGlydHkoKQogICAgIGlmIChsYXllclJlY3QuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwcmVwYXJlVG9VcGRhdGVJZGxlKGxheWVy
UmVjdCk7CisgICAgcHJlcGFyZVRvVXBkYXRlSWRsZShsYXllclJlY3QsIG9jY2x1ZGVkU2NyZWVu
U3BhY2UpOwogICAgIGlmIChuZWVkc0lkbGVQYWludChsYXllclJlY3QpKQogICAgICAgICBzZXRO
ZWVkc0NvbW1pdCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKaW5kZXggNWVm
ZjZhM2Q2MGExMmQxMjBlYjcyMDAwZDM1MGIxZmI1ODM4ZWE4My4uODI5MmI1ODM3ZmQ2ODBmOTIx
NzUwZTE4N2M1NjUyZWIzZjdhMjMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5o
CkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRl
bnQoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoY29uc3Qg
UmVnaW9uJiBvY2NsdWRlZFNjcmVlblNwYWNlKTsKLSAgICB2aXJ0dWFsIHZvaWQgaWRsZVBhaW50
Q29udGVudHNJZkRpcnR5KCk7CisgICAgdmlydHVhbCB2b2lkIGlkbGVQYWludENvbnRlbnRzSWZE
aXJ0eShjb25zdCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVuU3BhY2UpOwogCiAgICAgdmlydHVhbCB2
b2lkIHNldE9wYXF1ZShib29sKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKaW5k
ZXggODMxY2JlODA5NjNhM2E4MDBiOGFhNDZhNjk5NDhmNGZjN2Y1ZWM3ZS4uYWQ1ZWZjNmU2ZjVl
ODcwZjRjZGY2MWIxZmM2YjY1MjViYTJhZTk1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21p
dW0uY3BwCkBAIC0xNTgsNyArMTU4LDcgQEAgdm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OnNldENv
bnRlbnRzKEltYWdlKiBjb250ZW50cykKICAgICBzZXROZWVkc0Rpc3BsYXkoKTsKIH0KIAotdm9p
ZCBJbWFnZUxheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYg
Lyogb2NjbHVkZWRTY3JlZW5TcGFjZSAqLykKK3ZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpwYWlu
dENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVuU3BhY2UpCiB7CiAg
ICAgaWYgKG1fbmVlZHNEaXNwbGF5KSB7CiAgICAgICAgIG1fdGV4dHVyZVVwZGF0ZXItPnVwZGF0
ZUZyb21JbWFnZShtX2NvbnRlbnRzLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKTsKQEAg
LTE2Nyw3ICsxNjcsNyBAQCB2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lm
RGlydHkoY29uc3QgUmVnaW9uJiAvKiBvY2NsdWRlZFNjcmVlblNwYQogICAgICAgICBtX25lZWRz
RGlzcGxheSA9IGZhbHNlOwogICAgIH0KIAotICAgIHByZXBhcmVUb1VwZGF0ZSh2aXNpYmxlTGF5
ZXJSZWN0KCkpOworICAgIHByZXBhcmVUb1VwZGF0ZSh2aXNpYmxlTGF5ZXJSZWN0KCksIG9jY2x1
ZGVkU2NyZWVuU3BhY2UpOwogfQogCiBMYXllclRleHR1cmVVcGRhdGVyKiBJbWFnZUxheWVyQ2hy
b21pdW06OnRleHR1cmVVcGRhdGVyKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAppbmRleCA3NjRm
NzMwMTU1YjU0NTM3Y2RhNGM3MzgxYjNmZDNiY2I3OTYwNjRkLi44NmYyZWE3NzlmZDlhNWVhNDFk
MmExZTcyZGVmNDk1MTIxY2U5ZGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC0xNTUsNyArMTU1
LDcgQEAgcHVibGljOgogICAgIC8vIFRoZXNlIG1ldGhvZHMgdHlwaWNhbGx5IG5lZWQgdG8gYmUg
b3ZlcndyaXR0ZW4gYnkgZGVyaXZlZCBjbGFzc2VzLgogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0Nv
bnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2lzRHJhd2FibGU7IH0KICAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uJiAvKiBvY2NsdWRlZFNjcmVlblNwYWNl
ICovKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgaWRsZVBhaW50Q29udGVudHNJZkRpcnR5KCkgeyB9
CisgICAgdmlydHVhbCB2b2lkIGlkbGVQYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24m
IC8qIG9jY2x1ZGVkU2NyZWVuU3BhY2UgKi8pIHsgfQogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVD
b21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRJc01hc2soYm9vbCkgeyB9CiAgICAgdmlydHVhbCB2
b2lkIHVucmVzZXJ2ZUNvbnRlbnRzVGV4dHVyZSgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJv
bWl1bS5jcHAKaW5kZXggMjgzYWE4ZGQwOWJhMjNmZDc0NDMzYWNhMzJhNjczNTM4ODNjOWEwMC4u
YTVhM2NlYjI2ZDk1MGUyOTA5M2E2YTAxZDA5ZWFlMjMyZTMwNTZmOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVt
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxl
ZExheWVyQ2hyb21pdW0uY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiTWF0aEV4dHJh
cy5oIgogI2luY2x1ZGUgIlJlZ2lvbi5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKKyNpbmNs
dWRlICJUcmFjZUV2ZW50LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKICNpbmNsdWRl
ICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NUaWxlZExheWVySW1wbC5o
IgpAQCAtMzYzLDcgKzM2NCw3IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcm90ZWN0VGls
ZVRleHR1cmVzKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCkKICAgICB9CiB9CiAKLXZvaWQgVGls
ZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0
LCBpbnQgdG9wLCBpbnQgcmlnaHQsIGludCBib3R0b20pCit2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1
bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50
IHJpZ2h0LCBpbnQgYm90dG9tLCBjb25zdCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVuU3BhY2UpCiB7
CiAgICAgLy8gUmVzZXQgbV91cGRhdGVSZWN0IGZvciBhbGwgdGlsZXMuCiAgICAgZm9yIChDQ0xh
eWVyVGlsaW5nRGF0YTo6VGlsZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1fdGlsZXItPnRp
bGVzKCkuYmVnaW4oKTsgaXRlciAhPSBtX3RpbGVyLT50aWxlcygpLmVuZCgpOyArK2l0ZXIpIHsK
QEAgLTM3MSw2ICszNzIsOSBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBk
YXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50CiAgICAgICAgIHRpbGUt
Pm1fdXBkYXRlUmVjdCA9IEludFJlY3QoKTsKICAgICB9CiAKKyAgICAvLyBUaWxlcyBhcmUgaW4g
dGhlIGxheWVyJ3MgY29udGVudCBzcGFjZSwgdGhlIG9jY2x1ZGVkIHJlZ2lvbiBpcyBpbiBzY3Jl
ZW4gc3BhY2UuCisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY29udGVudFRvU2NyZWVuU3BhY2Ug
PSBjb250ZW50VG9TY3JlZW5TcGFjZVRyYW5zZm9ybSgpOworCiAgICAgLy8gQ3JlYXRlIHRpbGVz
IGFzIG5lZWRlZCwgZXhwYW5kaW5nIGEgZGlydHkgcmVjdCB0byBjb250YWluIGFsbAogICAgIC8v
IHRoZSBkaXJ0eSByZWdpb25zIGN1cnJlbnRseSBiZWluZyBkcmF3bi4gQWxsIGRpcnR5IHRpbGVz
IHRoYXQgYXJlIHRvIGJlIHBhaW50ZWQKICAgICAvLyBnZXQgdGhlaXIgbV91cGRhdGVSZWN0IHNl
dCB0byBtX2RpcnR5UmVjdCBhbmQgbV9kaXJ0eVJlY3QgY2xlYXJlZC4gVGhpcyB3YXkgaWYKQEAg
LTM4MiwxMyArMzg2LDI1IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRh
dGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQKICAgICAgICAgICAgIGlm
ICghdGlsZSkKICAgICAgICAgICAgICAgICB0aWxlID0gY3JlYXRlVGlsZShpLCBqKTsKIAorICAg
ICAgICAgICAgLy8gV2hlbiBub3QgaWRsZSBwYWludGluZywgaWYgdGhlIHRpbGUgaXMgb2NjbHVk
ZWQgZG9uJ3QgcmVzZXJ2ZSBhIHRleHR1cmUgb3IgbWFyayBpdCBmb3IgdXBkYXRlLiBUaGlzIHdp
bGwgYWxzbyBhdm9pZCBwYWludGluZworICAgICAgICAgICAgLy8gdGhlIHRpbGUgaW4gdGhlIG5l
eHQgbG9vcCwgYmVsb3cuCisgICAgICAgICAgICBpZiAoIWlkbGUpIHsKKyAgICAgICAgICAgICAg
ICBJbnRSZWN0IHZpc2libGVUaWxlUmVjdCA9IGludGVyc2VjdGlvbihtX3RpbGVyLT50aWxlQm91
bmRzKGksIGopLCB2aXNpYmxlTGF5ZXJSZWN0KCkpOworICAgICAgICAgICAgICAgIGlmIChvY2Ns
dWRlZFNjcmVlblNwYWNlLmNvbnRhaW5zKGNvbnRlbnRUb1NjcmVlblNwYWNlLm1hcFJlY3Qodmlz
aWJsZVRpbGVSZWN0KSkpIHsKKyAgICAgICAgICAgICAgICAgICAgVFJBQ0VfRVZFTlQoIlRpbGVk
TGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXM6OmN1bGxpbmdPY2NsdWRlZFRpbGUi
LCB0aGlzLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAvLyBEbyBwb3N0IGNvbW1pdCBkZWxl
dGlvbiBvZiBjdXJyZW50IHRleHR1cmUgd2hlbiBwYXJ0aWFsIHRleHR1cmUKICAgICAgICAgICAg
IC8vIHVwZGF0ZXMgYXJlIG5vdCB1c2VkLgogICAgICAgICAgICAgaWYgKHRpbGUtPmlzRGlydHko
KSAmJiBsYXllclRyZWVIb3N0KCkgJiYgIWxheWVyVHJlZUhvc3QoKS0+c2V0dGluZ3MoKS5wYXJ0
aWFsVGV4dHVyZVVwZGF0ZXMpCiAgICAgICAgICAgICAgICAgbGF5ZXJUcmVlSG9zdCgpLT5kZWxl
dGVUZXh0dXJlQWZ0ZXJDb21taXQodGlsZS0+bWFuYWdlZFRleHR1cmUoKS0+c3RlYWwoKSk7CiAK
LSAgICAgICAgICAgIGlmICghdGlsZS0+bWFuYWdlZFRleHR1cmUoKS0+aXNWYWxpZChtX3RpbGVy
LT50aWxlU2l6ZSgpLCBtX3RleHR1cmVGb3JtYXQpKQorICAgICAgICAgICAgaWYgKCF0aWxlLT5t
YW5hZ2VkVGV4dHVyZSgpLT5pc1ZhbGlkKG1fdGlsZXItPnRpbGVTaXplKCksIG1fdGV4dHVyZUZv
cm1hdCkpIHsKKyAgICAgICAgICAgICAgICAvLyBTZXRzIHRoZSBkaXJ0eSByZWN0IHRvIGEgZnVs
bC1zaXplZCB0aWxlIHdpdGggYm9yZGVyIHRleGVscy4KICAgICAgICAgICAgICAgICB0aWxlLT5t
X2RpcnR5UmVjdCA9IG1fdGlsZXItPnRpbGVSZWN0KHRpbGUpOworICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICBpZiAoIXRpbGUtPm1hbmFnZWRUZXh0dXJlKCktPnJlc2VydmUobV90aWxlci0+
dGlsZVNpemUoKSwgbV90ZXh0dXJlRm9ybWF0KSkgewogICAgICAgICAgICAgICAgIG1fc2tpcHNJ
ZGxlUGFpbnQgPSB0cnVlOwpAQCAtNDQxLDcgKzQ1Nyw3IEBAIHZvaWQgVGlsZWRMYXllckNocm9t
aXVtOjpwcmVwYXJlVG9VcGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBp
bnQKICAgICAgICAgICAgIGlmICh0aWxlUGFpbnRlZE9wYXF1ZVJlY3QgIT0gdGlsZVBhaW50ZWRS
ZWN0IHx8ICF0aWxlLT5tX29wYXF1ZVJlY3QuY29udGFpbnModGlsZVBhaW50ZWRPcGFxdWVSZWN0
KSkKICAgICAgICAgICAgICAgICB0aWxlLT5tX29wYXF1ZVJlY3QgPSB0aWxlUGFpbnRlZE9wYXF1
ZVJlY3Q7CiAKLSAgICAgICAgICAgIC8vIFVzZSBtX3VwZGF0ZVJlY3QgYXMgY29weUFuZENsZWFy
RGlydHkgYWJvdmUgbW92ZWQgdGhlIGV4aXN0aW5nIGRpcnR5IHJlY3QgdG8gbV91cGRhdGVSZWN0
LgorICAgICAgICAgICAgLy8gVXNlIG1fdXBkYXRlUmVjdCBhcyBjb3B5QW5kQ2xlYXJEaXJ0eSBh
Ym92ZSBtb3ZlZCB0aGUgZXhpc3RpbmcgZGlydHkgcmVjdCB0byBtX3VwZGF0ZVJlY3QgaWYgdGhl
IHRpbGUgaXNuJ3QgY3VsbGVkLgogICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0
ID0gdGlsZS0+bV91cGRhdGVSZWN0OwogICAgICAgICAgICAgaWYgKGRpcnR5UmVjdC5pc0VtcHR5
KCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC01MTcsNyArNTMzLDcgQEAgdm9pZCBU
aWxlZExheWVyQ2hyb21pdW06OmFkZFNlbGZUb09jY2x1ZGVkU2NyZWVuU3BhY2UoUmVnaW9uJiBv
Y2NsdWRlZFNjcmVlblNwYWMKICAgICB9CiB9CiAKLXZvaWQgVGlsZWRMYXllckNocm9taXVtOjpw
cmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQordm9pZCBUaWxlZExheWVy
Q2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBsYXllclJlY3QsIGNvbnN0
IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSkKIHsKICAgICBtX3NraXBzRHJhdyA9IGZhbHNl
OwogICAgIG1fc2tpcHNJZGxlUGFpbnQgPSBmYWxzZTsKQEAgLTUzMiwxMCArNTQ4LDEwIEBAIHZv
aWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgbGF5
ZXJSZWN0KQogICAgIGludCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b207CiAgICAgbV90aWxlci0+
bGF5ZXJSZWN0VG9UaWxlSW5kaWNlcyhsYXllclJlY3QsIGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRv
bSk7CiAKLSAgICBwcmVwYXJlVG9VcGRhdGVUaWxlcyhmYWxzZSwgbGVmdCwgdG9wLCByaWdodCwg
Ym90dG9tKTsKKyAgICBwcmVwYXJlVG9VcGRhdGVUaWxlcyhmYWxzZSwgbGVmdCwgdG9wLCByaWdo
dCwgYm90dG9tLCBvY2NsdWRlZFNjcmVlblNwYWNlKTsKIH0KIAotdm9pZCBUaWxlZExheWVyQ2hy
b21pdW06OnByZXBhcmVUb1VwZGF0ZUlkbGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQordm9p
ZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlkbGUoY29uc3QgSW50UmVjdCYg
bGF5ZXJSZWN0LCBjb25zdCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVuU3BhY2UpCiB7CiAgICAgLy8g
QWJvcnQgaWYgd2UgaGF2ZSBhbHJlYWR5IHByZXBhcmVkIGEgcGFpbnQgb3IgcnVuIG91dCBvZiBt
ZW1vcnkuCiAgICAgaWYgKG1fc2tpcHNJZGxlUGFpbnQgfHwgIW1fcGFpbnRSZWN0LmlzRW1wdHko
KSkKQEAgLTU1MywzMyArNTY5LDM5IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJl
VG9VcGRhdGVJZGxlKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCkKICAgICBJbnRSZWN0IGlkbGVQ
YWludExheWVyUmVjdCA9IGlkbGVQYWludFJlY3QobGF5ZXJSZWN0KTsKICAgICBwcm90ZWN0VGls
ZVRleHR1cmVzKGlkbGVQYWludExheWVyUmVjdCk7CiAKLSAgICAvLyBFeHBhbmQgb3V0d2FyZHMg
dW50aWwgd2UgZmluZCBhIGRpcnR5IHJvdyBvciBjb2x1bW4gdG8gdXBkYXRlLgogICAgIGludCBs
ZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b207CiAgICAgbV90aWxlci0+bGF5ZXJSZWN0VG9UaWxlSW5k
aWNlcyhsYXllclJlY3QsIGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSk7CisKKyAgICAvLyBQcmVw
YWludCBhbnl0aGluZyB0aGF0IHdhcyBvY2NsdWRlZCBidXQgaW5zaWRlIHRoZSBsYXllcidzIHZp
c2libGUgcmVnaW9uLgorICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKHRydWUsIGxlZnQsIGJvdHRv
bSwgcmlnaHQsIGJvdHRvbSwgb2NjbHVkZWRTY3JlZW5TcGFjZSk7CisgICAgaWYgKCFtX3BhaW50
UmVjdC5pc0VtcHR5KCkgfHwgbV9za2lwc0lkbGVQYWludCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgLy8gRXhwYW5kIG91dHdhcmRzIHVudGlsIHdlIGZpbmQgYSBkaXJ0eSByb3cgb3IgY29sdW1u
IHRvIHVwZGF0ZS4KICAgICBpbnQgcHJlcGFpbnRMZWZ0LCBwcmVwYWludFRvcCwgcHJlcGFpbnRS
aWdodCwgcHJlcGFpbnRCb3R0b207CiAgICAgbV90aWxlci0+bGF5ZXJSZWN0VG9UaWxlSW5kaWNl
cyhpZGxlUGFpbnRMYXllclJlY3QsIHByZXBhaW50TGVmdCwgcHJlcGFpbnRUb3AsIHByZXBhaW50
UmlnaHQsIHByZXBhaW50Qm90dG9tKTsKICAgICB3aGlsZSAoIW1fc2tpcHNJZGxlUGFpbnQgJiYg
KGxlZnQgPiBwcmVwYWludExlZnQgfHwgdG9wID4gcHJlcGFpbnRUb3AgfHwgcmlnaHQgPCBwcmVw
YWludFJpZ2h0IHx8IGJvdHRvbSA8IHByZXBhaW50Qm90dG9tKSkgewogICAgICAgICBpZiAoYm90
dG9tIDwgcHJlcGFpbnRCb3R0b20pIHsKICAgICAgICAgICAgICsrYm90dG9tOwotICAgICAgICAg
ICAgcHJlcGFyZVRvVXBkYXRlVGlsZXModHJ1ZSwgbGVmdCwgYm90dG9tLCByaWdodCwgYm90dG9t
KTsKKyAgICAgICAgICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKHRydWUsIGxlZnQsIGJvdHRvbSwg
cmlnaHQsIGJvdHRvbSwgb2NjbHVkZWRTY3JlZW5TcGFjZSk7CiAgICAgICAgICAgICBpZiAoIW1f
cGFpbnRSZWN0LmlzRW1wdHkoKSB8fCBtX3NraXBzSWRsZVBhaW50KQogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGlmICh0b3AgPiBwcmVwYWludFRvcCkgewogICAg
ICAgICAgICAgLS10b3A7Ci0gICAgICAgICAgICBwcmVwYXJlVG9VcGRhdGVUaWxlcyh0cnVlLCBs
ZWZ0LCB0b3AsIHJpZ2h0LCB0b3ApOworICAgICAgICAgICAgcHJlcGFyZVRvVXBkYXRlVGlsZXMo
dHJ1ZSwgbGVmdCwgdG9wLCByaWdodCwgdG9wLCBvY2NsdWRlZFNjcmVlblNwYWNlKTsKICAgICAg
ICAgICAgIGlmICghbV9wYWludFJlY3QuaXNFbXB0eSgpIHx8IG1fc2tpcHNJZGxlUGFpbnQpCiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGxlZnQgPiBwcmVw
YWludExlZnQpIHsKICAgICAgICAgICAgIC0tbGVmdDsKLSAgICAgICAgICAgIHByZXBhcmVUb1Vw
ZGF0ZVRpbGVzKHRydWUsIGxlZnQsIHRvcCwgbGVmdCwgYm90dG9tKTsKKyAgICAgICAgICAgIHBy
ZXBhcmVUb1VwZGF0ZVRpbGVzKHRydWUsIGxlZnQsIHRvcCwgbGVmdCwgYm90dG9tLCBvY2NsdWRl
ZFNjcmVlblNwYWNlKTsKICAgICAgICAgICAgIGlmICghbV9wYWludFJlY3QuaXNFbXB0eSgpIHx8
IG1fc2tpcHNJZGxlUGFpbnQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKHJpZ2h0IDwgcHJlcGFpbnRSaWdodCkgewogICAgICAgICAgICAgKytyaWdodDsK
LSAgICAgICAgICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKHRydWUsIHJpZ2h0LCB0b3AsIHJpZ2h0
LCBib3R0b20pOworICAgICAgICAgICAgcHJlcGFyZVRvVXBkYXRlVGlsZXModHJ1ZSwgcmlnaHQs
IHRvcCwgcmlnaHQsIGJvdHRvbSwgb2NjbHVkZWRTY3JlZW5TcGFjZSk7CiAgICAgICAgICAgICBp
ZiAoIW1fcGFpbnRSZWN0LmlzRW1wdHkoKSB8fCBtX3NraXBzSWRsZVBhaW50KQogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oCmluZGV4
IDNjYmJiY2JkN2E0NTI1NDIzNWUzOTU1NTAyMGMzMDM2OGU3MWVjNDYuLjY1NWE5YjQzNzZkNzU3
NTZjMmRiZWE4NDVlM2NhYTI4MjZlNjU4ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5o
CkBAIC04NSwxMCArODUsMTAgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgaW52YWxpZGF0ZVJlY3Qo
Y29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KTsKIAogICAgIC8vIFByZXBhcmUgZGF0YSBuZWVkZWQg
dG8gdXBkYXRlIHRleHR1cmVzIHRoYXQgaW50ZXJzZWN0IHdpdGggbGF5ZXJSZWN0LgotICAgIHZv
aWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCk7CisgICAgdm9pZCBw
cmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0LCBjb25zdCBSZWdpb24mIG9j
Y2x1ZGVkVGFyZ2V0U3BhY2UpOwogCiAgICAgLy8gU2FtZSBhcyBhYm92ZSwgYnV0IHRoaXMgd2ls
bCB0cnkgdG8gcGFpbnQgYWRkaXRpb25hbCBzdXJyb3VuZGluZyBjb250ZW50IGlmIGlkbGUuCi0g
ICAgdm9pZCBwcmVwYXJlVG9VcGRhdGVJZGxlKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCk7Cisg
ICAgdm9pZCBwcmVwYXJlVG9VcGRhdGVJZGxlKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29u
c3QgUmVnaW9uJiBvY2NsdWRlZFRhcmdldFNwYWNlKTsKIAogICAgIC8vIEFmdGVyIHByZXBhcmlu
ZyBhbiB1cGRhdGUsIHJldHVybnMgdHJ1ZSBpZiBtb3JlIHByZS1wYWludGluZyBpcyBuZWVkZWQu
CiAgICAgYm9vbCBuZWVkc0lkbGVQYWludChjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpOwpAQCAt
MTA3LDcgKzEwNyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVUaWxlcklmTmVlZGVkKCk7
CiAgICAgdm9pZCBzZXRUaWxpbmdPcHRpb24oVGlsaW5nT3B0aW9uKTsKIAotICAgIHZvaWQgcHJl
cGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50IHJpZ2h0
LCBpbnQgYm90dG9tKTsKKyAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wgaWRsZSwg
aW50IGxlZnQsIGludCB0b3AsIGludCByaWdodCwgaW50IGJvdHRvbSwgY29uc3QgUmVnaW9uJiBv
Y2NsdWRlZFRhcmdldFNwYWNlKTsKICAgICBJbnRSZWN0IGlkbGVQYWludFJlY3QoY29uc3QgSW50
UmVjdCYgdmlzaWJsZUxheWVyUmVjdCk7CiAKICAgICBVcGRhdGFibGVUaWxlKiB0aWxlQXQoaW50
LCBpbnQpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggNGZmODQz
NGIyMDBjOTJkNDhhMDhiZjkxYzE0YjI3ZjgyMTlkZGFiNi4uZmRmNTMxODhjYTVjMWYyNDA1YzA3
Y2EzYThlNWJjOThhN2JkYjk5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBA
IC00MjEsNyArNDIxLDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50Q29udGVudHNJZkRp
cnR5KExheWVyQ2hyb21pdW0qIGxheWVyLCBQYWludFR5cGUgcGFpbnQKICAgICBpZiAoUGFpbnRW
aXNpYmxlID09IHBhaW50VHlwZSkKICAgICAgICAgbGF5ZXItPnBhaW50Q29udGVudHNJZkRpcnR5
KG9jY2x1ZGVkU2NyZWVuU3BhY2UpOwogICAgIGVsc2UKLSAgICAgICAgbGF5ZXItPmlkbGVQYWlu
dENvbnRlbnRzSWZEaXJ0eSgpOworICAgICAgICBsYXllci0+aWRsZVBhaW50Q29udGVudHNJZkRp
cnR5KG9jY2x1ZGVkU2NyZWVuU3BhY2UpOwogfQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFp
bnRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UoTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3Vy
ZmFjZUxheWVyLCBQYWludFR5cGUgcGFpbnRUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5kZXggNDFmZTRmYjY1OWI5
NDA1MWM2N2VhYmYzZWVhOWMwODQ2NzZlZWFiNC4uZmJhYmY2Mzc0Y2VjOTkzNWM2MmM2OTk1YWM5
YmZhNmNlYTM0N2ZkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q0xheWVyVHJlZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC0xMDEyLDkgKzEwMTIsOSBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fcGFpbnRDb250ZW50c0NvdW50Kys7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lk
IGlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSgpCisgICAgdmlydHVhbCB2b2lkIGlkbGVQYWludENv
bnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIG9jY2x1ZGVkKQogICAgIHsKLSAgICAgICAgQ29u
dGVudExheWVyQ2hyb21pdW06OmlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSgpOworICAgICAgICBD
b250ZW50TGF5ZXJDaHJvbWl1bTo6aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KG9jY2x1ZGVkKTsK
ICAgICAgICAgbV9pZGxlUGFpbnRDb250ZW50c0NvdW50Kys7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNw
cAppbmRleCBiMDM1MGRiNDk1ZmI1NjJiMzU4MTQwODdlZjY0MTBkNzYxOTViYTc1Li40MjFiNGRm
MDUyM2RhZWExMDIyZDk4ZTJlZjhiNTA0ZjRhNTQ1OGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKQEAgLTYw
LDM0ICs2MCw0NyBAQCBjbGFzcyBGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlciA6IHB1YmxpYyBMYXll
clRleHR1cmVVcGRhdGVyIHsKIHB1YmxpYzoKICAgICBjbGFzcyBUZXh0dXJlIDogcHVibGljIExh
eWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgewogICAgIHB1YmxpYzoKLSAgICAgICAgVGV4dHVy
ZShQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKSA6IExheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmUodGV4dHVyZSkgeyB9CisgICAgICAgIFRleHR1cmUoUGFzc093blB0cjxNYW5h
Z2VkVGV4dHVyZT4gdGV4dHVyZSwgRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIqIHVwZGF0ZXIpCisg
ICAgICAgICAgICA6IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUodGV4dHVyZSkKKyAgICAg
ICAgICAgICwgbV91cGRhdGVyKHVwZGF0ZXIpCisgICAgICAgIHsKKyAgICAgICAgfQogICAgICAg
ICB2aXJ0dWFsIH5UZXh0dXJlKCkgeyB9CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJl
Y3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYs
IGNvbnN0IEludFJlY3QmKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVSZWN0KGNv
bnN0IEludFJlY3QmKSB7ICsrbV91cGRhdGVyLT5tX3ByZXBhcmVSZWN0Q291bnQ7IH0KKworICAg
IHByaXZhdGU6CisgICAgICAgIEZha2VMYXllclRleHR1cmVVcGRhdGVyKiBtX3VwZGF0ZXI7CiAg
ICAgfTsKIAotICAgIEZha2VMYXllclRleHR1cmVVcGRhdGVyKCkgOiBtX3ByZXBhcmVDb3VudCgw
KSB7IH0KKyAgICBGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpIDogbV9wcmVwYXJlQ291bnQoMCks
IG1fcHJlcGFyZVJlY3RDb3VudCgwKSB7IH0KICAgICB2aXJ0dWFsIH5GYWtlTGF5ZXJUZXh0dXJl
VXBkYXRlcigpIHsgfQogCiAgICAgLy8gU2V0cyB0aGUgcmVjdCB0byBpbnZhbGlkYXRlIGR1cmlu
ZyB0aGUgbmV4dCBjYWxsIHRvIHByZXBhcmVUb1VwZGF0ZSgpLiBBZnRlciB0aGUgbmV4dAogICAg
IC8vIGNhbGwgdG8gcHJlcGFyZVRvVXBkYXRlKCkgdGhlIHJlY3QgaXMgcmVzZXQuCiAgICAgdm9p
ZCBzZXRSZWN0VG9JbnZhbGlkYXRlKGNvbnN0IEludFJlY3QmLCBGYWtlVGlsZWRMYXllckNocm9t
aXVtKik7CiAKKyAgICB2b2lkIHNldE9wYXF1ZVBhaW50UmVjdChjb25zdCBJbnRSZWN0JiBvcGFx
dWVQYWludFJlY3QpIHsgbV9vcGFxdWVQYWludFJlY3QgPSBvcGFxdWVQYWludFJlY3Q7IH0KKwog
ICAgIC8vIE51bWJlciBvZiB0aW1lcyBwcmVwYXJlVG9VcGRhdGUgaGFzIGJlZW4gaW52b2tlZC4K
ICAgICBpbnQgcHJlcGFyZUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9wcmVwYXJlQ291bnQ7IH0K
ICAgICB2b2lkIGNsZWFyUHJlcGFyZUNvdW50KCkgeyBtX3ByZXBhcmVDb3VudCA9IDA7IH0KIAot
ICAgIHZvaWQgc2V0T3BhcXVlUGFpbnRSZWN0KGNvbnN0IEludFJlY3QmIG9wYXF1ZVBhaW50UmVj
dCkgeyBtX29wYXF1ZVBhaW50UmVjdCA9IG9wYXF1ZVBhaW50UmVjdDsgfQorICAgIC8vIE51bWJl
ciBvZiB0aW1lcyBwcmVwYXJlUmVjdCBoYXMgYmVlbiBpbnZva2VkIG9uIGEgdGV4dHVyZS4KKyAg
ICBpbnQgcHJlcGFyZVJlY3RDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlcGFyZVJlY3RDb3Vu
dDsgfQorICAgIHZvaWQgY2xlYXJQcmVwYXJlUmVjdENvdW50KCkgeyBtX3ByZXBhcmVSZWN0Q291
bnQgPSAwOyB9CiAKICAgICAvLyBMYXN0IHJlY3QgcGFzc2VkIHRvIHByZXBhcmVUb1VwZGF0ZSgp
LgogICAgIGNvbnN0IEludFJlY3QmIGxhc3RVcGRhdGVSZWN0KCkgIGNvbnN0IHsgcmV0dXJuIG1f
bGFzdFVwZGF0ZVJlY3Q7IH0KIAotICAgIHZpcnR1YWwgUGFzc093blB0cjxMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKiBtYW5hZ2VyKSB7
IHJldHVybiBhZG9wdFB0cihuZXcgVGV4dHVyZShNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKG1hbmFn
ZXIpKSk7IH0KKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZT4gY3JlYXRlVGV4dHVyZShUZXh0dXJlTWFuYWdlciogbWFuYWdlcikgeyByZXR1cm4gYWRv
cHRQdHIobmV3IFRleHR1cmUoTWFuYWdlZFRleHR1cmU6OmNyZWF0ZShtYW5hZ2VyKSwgdGhpcykp
OyB9CiAgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdD
M0RlbnVtKSB7IHJldHVybiBTYW1wbGVkVGV4ZWxGb3JtYXRSR0JBOyB9CiAgICAgdmlydHVhbCB2
b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50
U2l6ZSYsIGludCwgZmxvYXQsIEludFJlY3QqIHJlc3VsdGluZ09wYXF1ZVJlY3QpOwogCiBwcml2
YXRlOgogICAgIGludCBtX3ByZXBhcmVDb3VudDsKKyAgICBpbnQgbV9wcmVwYXJlUmVjdENvdW50
OwogICAgIEludFJlY3QgbV9yZWN0VG9JbnZhbGlkYXRlOwogICAgIEludFJlY3QgbV9sYXN0VXBk
YXRlUmVjdDsKICAgICBJbnRSZWN0IG1fb3BhcXVlUGFpbnRSZWN0OwpAQCAtMTI1LDE0ICsxMzgs
MTQgQEAgcHVibGljOgogICAgICAgICBUaWxlZExheWVyQ2hyb21pdW06OmludmFsaWRhdGVSZWN0
KHJlY3QpOwogICAgIH0KIAotICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3Qm
IHJlY3QpCisgICAgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29u
c3QgUmVnaW9uJiBvY2NsdWRlZCkKICAgICB7Ci0gICAgICAgIFRpbGVkTGF5ZXJDaHJvbWl1bTo6
cHJlcGFyZVRvVXBkYXRlKHJlY3QpOworICAgICAgICBUaWxlZExheWVyQ2hyb21pdW06OnByZXBh
cmVUb1VwZGF0ZShyZWN0LCBvY2NsdWRlZCk7CiAgICAgfQogCi0gICAgdm9pZCBwcmVwYXJlVG9V
cGRhdGVJZGxlKGNvbnN0IEludFJlY3QmIHJlY3QpCisgICAgdm9pZCBwcmVwYXJlVG9VcGRhdGVJ
ZGxlKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWQpCiAgICAgewot
ICAgICAgICBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlkbGUocmVjdCk7Cisg
ICAgICAgIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWRsZShyZWN0LCBvY2Ns
dWRlZCk7CiAgICAgfQogCiAgICAgYm9vbCBuZWVkc0lkbGVQYWludChjb25zdCBJbnRSZWN0JiBy
ZWN0KQpAQCAtMTQ5LDkgKzE2Miw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgVGV4dHVyZU1h
bmFnZXIqIHRleHR1cmVNYW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlTWFuYWdlcjsg
fQogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYg
Lyogb2NjbHVkZWRTY3JlZW5TcGFjZSAqLykKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50
c0lmRGlydHkoY29uc3QgUmVnaW9uJiBvY2NsdWRlZFNjcmVlblNwYWNlKQogICAgIHsKLSAgICAg
ICAgcHJlcGFyZVRvVXBkYXRlKHZpc2libGVMYXllclJlY3QoKSk7CisgICAgICAgIHByZXBhcmVU
b1VwZGF0ZSh2aXNpYmxlTGF5ZXJSZWN0KCksIG9jY2x1ZGVkU2NyZWVuU3BhY2UpOwogICAgIH0K
IAogcHJpdmF0ZToKQEAgLTIwNiw2ICsyMTksNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRl
c3QsIHB1c2hEaXJ0eVRpbGVzKQogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBs
YXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2Vy
LmdldCgpKSk7CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAg
UmVmUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwgPSBhZG9wdFJlZihuZXcgRmFr
ZUNDVGlsZWRMYXllckltcGwoMCkpOworICAgIFJlZ2lvbiBub09jY2x1c2lvbjsKIAogICAgIEZh
a2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7CiAgICAgQ0NUZXh0dXJlVXBkYXRl
ciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsKQEAgLTIxMyw3ICsyMjcsNyBAQCBURVNUKFRp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hEaXJ0eVRpbGVzKQogICAgIC8vIFRoZSB0aWxlIHNp
emUgaXMgMTAweDEwMCwgc28gdGhpcyBpbnZhbGlkYXRlcyBhbmQgdGhlbiBwYWludHMgdHdvIHRp
bGVzLgogICAgIGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSgxMDAsIDIwMCkpOwogICAgIGxheWVy
LT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7Ci0gICAgbGF5ZXItPnBy
ZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CisgICAgbGF5ZXItPnByZXBh
cmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgbm9PY2NsdXNpb24pOwogICAgIGxh
eWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwogICAgIGxheWVyLT5w
dXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAKQEAgLTIyNiw3ICsyNDAsNyBAQCBU
RVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hEaXJ0eVRpbGVzKQogICAgIC8vIEludmFs
aWRhdGVzIGJvdGggdGlsZXMuLi4KICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgw
LCAwLCAxMDAsIDIwMCkpOwogICAgIC8vIC4uLi5idXQgdGhlbiBvbmx5IHVwZGF0ZSBvbmUgb2Yg
dGhlbS4KLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAxMDAp
KTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCBu
b09jY2x1c2lvbik7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBk
YXRlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIApA
QCAtMjQ5LDEyICsyNjMsMTMgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoSWRs
ZVBhaW50VGlsZXMpCiAgICAgSW50U2l6ZSBjb250ZW50Qm91bmRzKDUwMCwgNTAwKTsKICAgICBJ
bnRSZWN0IGNvbnRlbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIGNvbnRlbnRCb3VuZHMpOwogICAg
IEludFJlY3QgdmlzaWJsZVJlY3QoMjAwLCAyMDAsIDEwMCwgMTAwKTsKKyAgICBSZWdpb24gbm9P
Y2NsdXNpb247CiAKICAgICAvLyBUaGlzIGludmFsaWRhdGVzIDI1IHRpbGVzIGFuZCB0aGVuIHBh
aW50cyBvbmUgdmlzaWJsZSB0aWxlLgogICAgIGxheWVyLT5zZXRCb3VuZHMoY29udGVudEJvdW5k
cyk7CiAgICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3QodmlzaWJsZVJlY3QpOwogICAgIGxh
eWVyLT5pbnZhbGlkYXRlUmVjdChjb250ZW50UmVjdCk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1Vw
ZGF0ZSh2aXNpYmxlUmVjdCk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZSh2aXNpYmxlUmVj
dCwgbm9PY2NsdXNpb24pOwogCiAgICAgLy8gV2Ugc2hvdWxkIG5lZWQgaWRsZS1wYWludGluZyBm
b3IgM3gzIHRpbGVzIGluIHRoZSBjZW50ZXIuCiAgICAgRVhQRUNUX1RSVUUobGF5ZXItPm5lZWRz
SWRsZVBhaW50KHZpc2libGVSZWN0KSk7CkBAIC0yNjksOSArMjg0LDkgQEAgVEVTVChUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCBwdXNoSWRsZVBhaW50VGlsZXMpCiAKICAgICAvLyBGb3IgdGhlIG5l
eHQgZm91ciB1cGRhdGVzLCB3ZSBzaG91bGQgZGV0ZWN0IHdlIHN0aWxsIG5lZWQgaWRsZSBwYWlu
dGluZy4KICAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKykgewotICAgICAgICBsYXllci0+
cHJlcGFyZVRvVXBkYXRlKHZpc2libGVSZWN0KTsKKyAgICAgICAgbGF5ZXItPnByZXBhcmVUb1Vw
ZGF0ZSh2aXNpYmxlUmVjdCwgbm9PY2NsdXNpb24pOwogICAgICAgICBFWFBFQ1RfVFJVRShsYXll
ci0+bmVlZHNJZGxlUGFpbnQodmlzaWJsZVJlY3QpKTsKLSAgICAgICAgbGF5ZXItPnByZXBhcmVU
b1VwZGF0ZUlkbGUodmlzaWJsZVJlY3QpOworICAgICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRl
SWRsZSh2aXNpYmxlUmVjdCwgbm9PY2NsdXNpb24pOwogICAgICAgICBsYXllci0+dXBkYXRlQ29t
cG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKICAgICAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0
aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKICAgICAgICAgdGV4dHVyZU1hbmFnZXItPnVucHJvdGVj
dEFsbFRleHR1cmVzKCk7CkBAIC0yOTksNiArMzE0LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21p
dW1UZXN0LCBpZGxlUGFpbnRPdXRPZk1lbW9yeSkKICAgICBJbnRTaXplIGNvbnRlbnRCb3VuZHMo
MzAwLCAzMDApOwogICAgIEludFJlY3QgY29udGVudFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgY29u
dGVudEJvdW5kcyk7CiAgICAgSW50UmVjdCB2aXNpYmxlUmVjdCgxMDAsIDEwMCwgMTAwLCAxMDAp
OworICAgIFJlZ2lvbiBub09jY2x1c2lvbjsKIAogICAgIC8vIFdlIGhhdmUgZW5vdWdoIG1lbW9y
eSBmb3Igb25seSB0aGUgdmlzaWJsZSByZWN0LCBzbyB3ZSB3aWxsIHJ1biBvdXQgb2YgbWVtb3J5
IGluIGZpcnN0IGlkbGUgcGFpbnQuCiAgICAgaW50IG1lbW9yeUxpbWl0ID0gNCAqIDEwMCAqIDEw
MDsgLy8gMiB0aWxlcywgNCBieXRlcyBwZXIgcGl4ZWwuCkBAIC0zMTUsNyArMzMxLDcgQEAgVEVT
VChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRPdXRPZk1lbW9yeSkKICAgICBsYXll
ci0+c2V0Qm91bmRzKGNvbnRlbnRCb3VuZHMpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJS
ZWN0KHZpc2libGVSZWN0KTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoY29udGVudFJlY3Qp
OwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUodmlzaWJsZVJlY3QpOworICAgIGxheWVyLT5w
cmVwYXJlVG9VcGRhdGUodmlzaWJsZVJlY3QsIG5vT2NjbHVzaW9uKTsKIAogICAgIC8vIFdlIHNo
b3VsZCBuZWVkIGlkbGUtcGFpbnRpbmcgZm9yIDN4MyB0aWxlcyBzdXJvdW5kaW5nIHZpc2libGUg
dGlsZS4KICAgICBFWFBFQ1RfVFJVRShsYXllci0+bmVlZHNJZGxlUGFpbnQodmlzaWJsZVJlY3Qp
KTsKQEAgLTMyNyw4ICszNDMsOCBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQ
YWludE91dE9mTWVtb3J5KQogICAgIEVYUEVDVF9UUlVFKGxheWVySW1wbC0+aGFzVGlsZUF0KDEs
IDEpKTsKIAogICAgIHRleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RBbGxUZXh0dXJlcygpOwotICAg
IGxheWVyLT5wcmVwYXJlVG9VcGRhdGUodmlzaWJsZVJlY3QpOwotICAgIGxheWVyLT5wcmVwYXJl
VG9VcGRhdGVJZGxlKHZpc2libGVSZWN0KTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKHZp
c2libGVSZWN0LCBub09jY2x1c2lvbik7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZUlkbGUo
dmlzaWJsZVJlY3QsIG5vT2NjbHVzaW9uKTsKIAogICAgIC8vIFdlIHNob3VsZG4ndCBzaWduYWwg
d2UgbmVlZCBhbm90aGVyIGlkbGUgcGFpbnQgYWZ0ZXIgd2UgcnVuIG91dCBvZiBtZW1vcnkuCiAg
ICAgRVhQRUNUX0ZBTFNFKGxheWVyLT5uZWVkc0lkbGVQYWludCh2aXNpYmxlUmVjdCkpOwpAQCAt
MzQzLDYgKzM1OSw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaW52YWxpZGF0ZUZy
b21QcmVwYXJlKQogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFk
b3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7
CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgUmVmUHRyPEZh
a2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwgPSBhZG9wdFJlZihuZXcgRmFrZUNDVGlsZWRM
YXllckltcGwoMCkpOworICAgIFJlZ2lvbiBub09jY2x1c2lvbjsKIAogICAgIEZha2VUZXh0dXJl
QWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7CiAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVy
KCZ0ZXh0dXJlQWxsb2NhdG9yKTsKQEAgLTM1MCw3ICszNjcsNyBAQCBURVNUKFRpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QsIGludmFsaWRhdGVGcm9tUHJlcGFyZSkKICAgICAvLyBUaGUgdGlsZSBzaXpl
IGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxl
cy4KICAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAyMDApKTsKICAgICBsYXllci0+
aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwotICAgIGxheWVyLT5wcmVw
YXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOworICAgIGxheWVyLT5wcmVwYXJl
VG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIG5vT2NjbHVzaW9uKTsKICAgICBsYXll
ci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKICAgICBsYXllci0+cHVz
aFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCkBAIC0zNjMsMTggKzM4MCwxOCBAQCBU
RVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGludmFsaWRhdGVGcm9tUHJlcGFyZSkKICAgICBs
YXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQcmVwYXJlQ291bnQoKTsKICAg
ICAvLyBJbnZva2UgcHJlcGFyZVRvVXBkYXRlIGFnYWluLiBBcyB0aGUgbGF5ZXIgaXMgdmFsaWQg
cHJlcGFyZVRvVXBkYXRlIHNob3VsZG4ndCBiZSBpbnZva2VkIG9uCiAgICAgLy8gdGhlIExheWVy
VGV4dHVyZVVwZGF0ZXIuCi0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAs
IDEwMCwgMjAwKSk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEw
MCwgMjAwKSwgbm9PY2NsdXNpb24pOwogICAgIEVYUEVDVF9FUSgwLCBsYXllci0+ZmFrZUxheWVy
VGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZUNvdW50KCkpOwogCiAgICAgbGF5ZXItPmludmFsaWRh
dGVSZWN0KEludFJlY3QoMCwgMCwgNTAsIDUwKSk7CiAgICAgLy8gc2V0UmVjdFRvSW52YWxpZGF0
ZSB0cmlnZ2VycyBpbnZhbGlkYXRlUmVjdCgpIGJlaW5nIGludm9rZWQgZnJvbSBwcmVwYXJlVG9V
cGRhdGUuCiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNldFJlY3RUb0lu
dmFsaWRhdGUoSW50UmVjdCgyNSwgMjUsIDUwLCA1MCksIGxheWVyLmdldCgpKTsKICAgICBsYXll
ci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQcmVwYXJlQ291bnQoKTsKLSAgICBs
YXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKKyAgICBsYXll
ci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCBub09jY2x1c2lvbik7
CiAgICAgRVhQRUNUX0VRKDEsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVw
YXJlQ291bnQoKSk7CiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFy
UHJlcGFyZUNvdW50KCk7CiAgICAgLy8gVGhlIGxheWVyIHNob3VsZCBzdGlsbCBiZSBpbnZhbGlk
IGFzIHByZXBhcmVUb1VwZGF0ZSBpbnZva2VkIGludmFsaWRhdGUuCi0gICAgbGF5ZXItPnByZXBh
cmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CisgICAgbGF5ZXItPnByZXBhcmVU
b1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgbm9PY2NsdXNpb24pOwogICAgIEVYUEVD
VF9FUSgxLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZUNvdW50KCkp
OwogfQogCkBAIC0zODUsNiArNDAyLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2
ZXJpZnlVcGRhdGVSZWN0V2hlbkNvbnRlbnRCb3VuZHNBcmVTY2FsZWQpCiAKICAgICBPd25QdHI8
VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0
KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXll
cldpdGhTY2FsZWRCb3VuZHM+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyV2l0
aFNjYWxlZEJvdW5kcyh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOworICAgIFJlZ2lvbiBub09jY2x1
c2lvbjsKIAogICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7CiAgICAg
Q0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsKQEAgLTM5OSwyMCAr
NDE3LDIwIEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdmVyaWZ5VXBkYXRlUmVjdFdo
ZW5Db250ZW50Qm91bmRzQXJlU2NhbGVkKQogICAgIC8vIE9uIGZpcnN0IHVwZGF0ZSwgdGhlIHVw
ZGF0ZVJlY3QgaW5jbHVkZXMgYWxsIHRpbGVzLCBldmVuIGJleW9uZCB0aGUgYm91bmRhcmllcyBv
ZiB0aGUgbGF5ZXIuCiAgICAgLy8gSG93ZXZlciwgaXQgc2hvdWxkIHN0aWxsIGJlIGluIGxheWVy
IHNwYWNlLCBub3QgY29udGVudCBzcGFjZS4KICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoY29u
dGVudEJvdW5kcyk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzKTsK
KyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMsIG5vT2NjbHVzaW9uKTsK
ICAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKICAgICBF
WFBFQ1RfRkxPQVRfUkVDVF9FUShGbG9hdFJlY3QoMCwgMCwgMzAwLCAzMDAgKiAwLjgpLCBsYXll
ci0+dXBkYXRlUmVjdCgpKTsKIAogICAgIC8vIEFmdGVyIHRoZSB0aWxlcyBhcmUgdXBkYXRlZCBv
bmNlLCBhbm90aGVyIGludmFsaWRhdGUgb25seSBuZWVkcyB0byB1cGRhdGUgdGhlIGJvdW5kcyBv
ZiB0aGUgbGF5ZXIuCiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KGNvbnRlbnRCb3VuZHMpOwot
ICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcyk7CisgICAgbGF5ZXItPnBy
ZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzLCBub09jY2x1c2lvbik7CiAgICAgbGF5ZXItPnVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAgICAgRVhQRUNUX0ZMT0FUX1JF
Q1RfRVEoRmxvYXRSZWN0KGxheWVyQm91bmRzKSwgbGF5ZXItPnVwZGF0ZVJlY3QoKSk7CiAKICAg
ICAvLyBQYXJ0aWFsIHJlLXBhaW50IHNob3VsZCBhbHNvIGJlIHJlcHJlc2VudGVkIGJ5IHRoZSB1
cGRhdGVSZWN0IGluIGxheWVyIHNwYWNlLCBub3QgY29udGVudCBzcGFjZS4KICAgICBJbnRSZWN0
IHBhcnRpYWxEYW1hZ2UoMzAsIDEwMCwgMTAsIDEwKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJl
Y3QocGFydGlhbERhbWFnZSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91
bmRzKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMsIG5vT2NjbHVz
aW9uKTsKICAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsK
ICAgICBFWFBFQ1RfRkxPQVRfUkVDVF9FUShGbG9hdFJlY3QoNDUsIDgwLCAxNSwgOCksIGxheWVy
LT51cGRhdGVSZWN0KCkpOwogfQpAQCAtNDc4LDYgKzQ5Niw3IEBAIFRFU1QoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgbGF5ZXJBZGRzU2VsZlRvT2NjbHVkZWRSZWdpb24pCiAgICAgLy8gVGhlIHRp
bGUgc2l6ZSBpcyAxMDB4MTAwLCBzbyB0aGlzIGludmFsaWRhdGVzIGFuZCB0aGVuIHBhaW50cyB0
d28gdGlsZXMgaW4gdmFyaW91cyB3YXlzLgogCiAgICAgUmVnaW9uIG9jY2x1ZGVkOworICAgIFJl
Z2lvbiBub09jY2x1c2lvbjsKICAgICBJbnRSZWN0IGNvbnRlbnRCb3VuZHMgPSBJbnRSZWN0KDAs
IDAsIDEwMCwgMjAwKTsKICAgICBJbnRSZWN0IHZpc2libGVCb3VuZHMgPSBJbnRSZWN0KDAsIDAs
IDEwMCwgMTUwKTsKIApAQCAtNDkyLDcgKzUxMSw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVt
VGVzdCwgbGF5ZXJBZGRzU2VsZlRvT2NjbHVkZWRSZWdpb24pCiAgICAgLy8gSWYgdGhlIGxheWVy
IGlzIG9wYXF1ZSB0aGVuIHRoZSBvY2NsdWRlZCByZWdpb24gc2hvdWxkIGJlIHRoZSB3aG9sZSBs
YXllcidzIHZpc2libGUgcmVnaW9uLgogICAgIGxheWVyLT5zZXRPcGFxdWUodHJ1ZSk7CiAgICAg
bGF5ZXItPmludmFsaWRhdGVSZWN0KGNvbnRlbnRCb3VuZHMpOwotICAgIGxheWVyLT5wcmVwYXJl
VG9VcGRhdGUoY29udGVudEJvdW5kcyk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250
ZW50Qm91bmRzLCBub09jY2x1c2lvbik7CiAKICAgICBvY2NsdWRlZCA9IFJlZ2lvbigpOwogICAg
IGxheWVyLT5hZGRTZWxmVG9PY2NsdWRlZFNjcmVlblNwYWNlKG9jY2x1ZGVkKTsKQEAgLTUwMiw3
ICs1MjEsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGxheWVyQWRkc1NlbGZUb09j
Y2x1ZGVkUmVnaW9uKQogICAgIC8vIElmIHRoZSBsYXllciBpcyBub3Qgb3BhcXVlIHRoZW4gdGhl
IG9jY2x1ZGVkIHJlZ2lvbiBzaG91bGQgYmUgZW1wdHkuCiAgICAgbGF5ZXItPnNldE9wYXF1ZShm
YWxzZSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KGNvbnRlbnRCb3VuZHMpOwotICAgIGxh
eWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcyk7CisgICAgbGF5ZXItPnByZXBhcmVU
b1VwZGF0ZShjb250ZW50Qm91bmRzLCBub09jY2x1c2lvbik7CiAKICAgICBvY2NsdWRlZCA9IFJl
Z2lvbigpOwogICAgIGxheWVyLT5hZGRTZWxmVG9PY2NsdWRlZFNjcmVlblNwYWNlKG9jY2x1ZGVk
KTsKQEAgLTUxMyw3ICs1MzIsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGxheWVy
QWRkc1NlbGZUb09jY2x1ZGVkUmVnaW9uKQogICAgIEludFJlY3Qgb3BhcXVlUGFpbnRSZWN0ID0g
SW50UmVjdCgxMCwgMTAsIDkwLCAxOTApOwogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBk
YXRlcigpLT5zZXRPcGFxdWVQYWludFJlY3Qob3BhcXVlUGFpbnRSZWN0KTsKICAgICBsYXllci0+
aW52YWxpZGF0ZVJlY3QoY29udGVudEJvdW5kcyk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0
ZShjb250ZW50Qm91bmRzKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3Vu
ZHMsIG5vT2NjbHVzaW9uKTsKIAogICAgIG9jY2x1ZGVkID0gUmVnaW9uKCk7CiAgICAgbGF5ZXIt
PmFkZFNlbGZUb09jY2x1ZGVkU2NyZWVuU3BhY2Uob2NjbHVkZWQpOwpAQCAtNTIyLDcgKzU0MSw3
IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgbGF5ZXJBZGRzU2VsZlRvT2NjbHVkZWRS
ZWdpb24pCiAKICAgICAvLyBJZiB3ZSBwYWludCBhZ2FpbiB3aXRob3V0IGludmFsaWRhdGluZywg
dGhlIHNhbWUgc3R1ZmYgc2hvdWxkIGJlIG9jY2x1ZGVkLgogICAgIGxheWVyLT5mYWtlTGF5ZXJU
ZXh0dXJlVXBkYXRlcigpLT5zZXRPcGFxdWVQYWludFJlY3QoSW50UmVjdCgpKTsKLSAgICBsYXll
ci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMpOworICAgIGxheWVyLT5wcmVwYXJlVG9V
cGRhdGUoY29udGVudEJvdW5kcywgbm9PY2NsdXNpb24pOwogCiAgICAgb2NjbHVkZWQgPSBSZWdp
b24oKTsKICAgICBsYXllci0+YWRkU2VsZlRvT2NjbHVkZWRTY3JlZW5TcGFjZShvY2NsdWRlZCk7
CkBAIC01MzksNyArNTU4LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBsYXllckFk
ZHNTZWxmVG9PY2NsdWRlZFJlZ2lvbikKICAgICBzY3JlZW5TcGFjZVRyYW5zZm9ybSAqPSB0cmFu
c2Zvcm07CiAgICAgc2NyZWVuU3BhY2VUcmFuc2Zvcm0udHJhbnNsYXRlKC1jb250ZW50Qm91bmRz
LndpZHRoKCkgLyAyLjAsIC1jb250ZW50Qm91bmRzLmhlaWdodCgpIC8gMi4wKTsKICAgICBsYXll
ci0+c2V0U2NyZWVuU3BhY2VUcmFuc2Zvcm0oc2NyZWVuU3BhY2VUcmFuc2Zvcm0pOwotICAgIGxh
eWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcyk7CisgICAgbGF5ZXItPnByZXBhcmVU
b1VwZGF0ZShjb250ZW50Qm91bmRzLCBub09jY2x1c2lvbik7CiAKICAgICBvY2NsdWRlZCA9IFJl
Z2lvbigpOwogICAgIGxheWVyLT5hZGRTZWxmVG9PY2NsdWRlZFNjcmVlblNwYWNlKG9jY2x1ZGVk
KTsKQEAgLTU1NCw3ICs1NzMsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGxheWVy
QWRkc1NlbGZUb09jY2x1ZGVkUmVnaW9uKQogICAgIHNjcmVlblNwYWNlVHJhbnNmb3JtICo9IHRy
YW5zZm9ybTsKICAgICBzY3JlZW5TcGFjZVRyYW5zZm9ybS50cmFuc2xhdGUoLWNvbnRlbnRCb3Vu
ZHMud2lkdGgoKSAvIDIuMCwgLWNvbnRlbnRCb3VuZHMuaGVpZ2h0KCkgLyAyLjApOwogICAgIGxh
eWVyLT5zZXRTY3JlZW5TcGFjZVRyYW5zZm9ybShzY3JlZW5TcGFjZVRyYW5zZm9ybSk7Ci0gICAg
bGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzKTsKKyAgICBsYXllci0+cHJlcGFy
ZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMsIG5vT2NjbHVzaW9uKTsKIAogICAgIG9jY2x1ZGVkID0g
UmVnaW9uKCk7CiAgICAgbGF5ZXItPmFkZFNlbGZUb09jY2x1ZGVkU2NyZWVuU3BhY2Uob2NjbHVk
ZWQpOwpAQCAtNTY0LDQgKzU4MywxNzggQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBs
YXllckFkZHNTZWxmVG9PY2NsdWRlZFJlZ2lvbikKICAgICBFWFBFQ1RfRVEoMHUsIG9jY2x1ZGVk
LnJlY3RzKCkuc2l6ZSgpKTsKIH0KIAorVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxl
c1BhaW50ZWRXaXRob3V0T2NjbHVzaW9uKQoreworICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4g
dGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAyKjEw
MjQqMTAyNCwgMTAyNCk7CisgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVy
ID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0
KCkpKTsKKyAgICBSZWdpb24gb2NjbHVkZWQ7CisKKyAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEw
MHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxlcy4KKyAg
ICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAyMDApKTsKKworICAgIGxheWVyLT5pbnZh
bGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CisgICAgbGF5ZXItPnByZXBhcmVU
b1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgb2NjbHVkZWQpOworICAgIEVYUEVDVF9F
USgyLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgp
KTsKK30KKworVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2Nj
bHVzaW9uKQoreworICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBU
ZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAyKjEwMjQqMTAyNCwgMTAyNCk7Cisg
ICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZh
a2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKKyAgICBSZWdpb24g
b2NjbHVkZWQ7CisKKyAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAuCisKKyAgICBsYXll
ci0+c2V0Qm91bmRzKEludFNpemUoNjAwLCA2MDApKTsKKworICAgIG9jY2x1ZGVkID0gSW50UmVj
dCgyMDAsIDIwMCwgMzAwLCAxMDApOworICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KElu
dFJlY3QoSW50UG9pbnQoKSwgbGF5ZXItPmJvdW5kcygpKSk7CisgICAgbGF5ZXItPmludmFsaWRh
dGVSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBk
YXRlKEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCBvY2NsdWRlZCk7CisgICAgRVhQRUNUX0VRKDM2
LTMsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkp
OworCisgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyUHJlcGFyZVJl
Y3RDb3VudCgpOworCisgICAgb2NjbHVkZWQgPSBJbnRSZWN0KDI1MCwgMjAwLCAzMDAsIDEwMCk7
CisgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKKyAg
ICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCBvY2NsdWRl
ZCk7CisgICAgRVhQRUNUX0VRKDM2LTIsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigp
LT5wcmVwYXJlUmVjdENvdW50KCkpOworCisgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRh
dGVyKCktPmNsZWFyUHJlcGFyZVJlY3RDb3VudCgpOworCisgICAgb2NjbHVkZWQgPSBJbnRSZWN0
KDI1MCwgMjUwLCAzMDAsIDEwMCk7CisgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3Qo
MCwgMCwgNjAwLCA2MDApKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwg
MCwgNjAwLCA2MDApLCBvY2NsdWRlZCk7CisgICAgRVhQRUNUX0VRKDM2LCBsYXllci0+ZmFrZUxh
eWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKK30KKworVEVTVChUaWxl
ZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kVmlzaWJsaXR5
Q29uc3RyYWludHMpCit7CisgICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdl
ciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDIqMTAyNCoxMDI0LCAxMDI0
KTsKKyAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihu
ZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOworICAgIFJl
Z2lvbiBvY2NsdWRlZDsKKworICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMC4KKworICAg
IGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSg2MDAsIDYwMCkpOworCisgICAgLy8gVGhlIHBhcnRp
YWxseSBvY2NsdWRlZCB0aWxlcyAoYnkgdGhlIDE1MCBvY2NsdXNpb24gaGVpZ2h0KSBhcmUgdmlz
aWJsZSBiZXlvbmQgdGhlIG9jY2x1c2lvbiwgc28gbm90IGN1bGxlZC4KKyAgICBvY2NsdWRlZCA9
IEludFJlY3QoMjAwLCAyMDAsIDMwMCwgMTUwKTsKKyAgICBsYXllci0+c2V0VmlzaWJsZUxheWVy
UmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgMzYwKSk7CisgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0
KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKElu
dFJlY3QoMCwgMCwgNjAwLCA2MDApLCBvY2NsdWRlZCk7CisgICAgRVhQRUNUX0VRKDM2LTMsIGxh
eWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOworCisg
ICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyUHJlcGFyZVJlY3RDb3Vu
dCgpOworCisgICAgLy8gTm93IHRoZSB2aXNpYmxlIHJlZ2lvbiBzdG9wcyBhdCB0aGUgZWRnZSBv
ZiB0aGUgb2NjbHVzaW9uIHNvIHRoZSBwYXJ0bHkgdmlzaWJsZSB0aWxlcyBiZWNvbWUgZnVsbHkg
b2NjbHVkZWQuCisgICAgb2NjbHVkZWQgPSBJbnRSZWN0KDIwMCwgMjAwLCAzMDAsIDE1MCk7Cisg
ICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDM1MCkpOwor
ICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CisgICAg
bGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgb2NjbHVkZWQp
OworICAgIEVYUEVDVF9FUSgzNi02LCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+
cHJlcGFyZVJlY3RDb3VudCgpKTsKKworICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRl
cigpLT5jbGVhclByZXBhcmVSZWN0Q291bnQoKTsKKworICAgIC8vIE5vdyB0aGUgdmlzaWJsZSBy
ZWdpb24gaXMgZXZlbiBzbWFsbGVyIHRoYW4gdGhlIG9jY2x1c2lvbiwgaXQgc2hvdWxkIGhhdmUg
dGhlIHNhbWUgcmVzdWx0LgorICAgIG9jY2x1ZGVkID0gSW50UmVjdCgyMDAsIDIwMCwgMzAwLCAx
NTApOworICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoMCwgMCwgNjAwLCAz
NDApKTsKKyAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkp
OworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksIG9j
Y2x1ZGVkKTsKKyAgICBFWFBFQ1RfRVEoMzYtNiwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRh
dGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7Cit9CisKK1RFU1QoVGlsZWRMYXllckNocm9taXVt
VGVzdCwgdGlsZXNOb3RQYWludGVkV2l0aG91dEludmFsaWRhdGlvbikKK3sKKyAgICBPd25QdHI8
VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0
KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOworICAgIFJlZlB0cjxGYWtlVGlsZWRMYXll
ckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRl
eHR1cmVNYW5hZ2VyLmdldCgpKSk7CisgICAgUmVnaW9uIG9jY2x1ZGVkOworCisgICAgLy8gVGhl
IHRpbGUgc2l6ZSBpcyAxMDB4MTAwLgorCisgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDYw
MCwgNjAwKSk7CisKKyAgICBvY2NsdWRlZCA9IEludFJlY3QoMjAwLCAyMDAsIDMwMCwgMTAwKTsK
KyAgICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7
CisgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKKyAg
ICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCBvY2NsdWRl
ZCk7CisgICAgRVhQRUNUX0VRKDM2LTMsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigp
LT5wcmVwYXJlUmVjdENvdW50KCkpOworCisgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRh
dGVyKCktPmNsZWFyUHJlcGFyZVJlY3RDb3VudCgpOworCisgICAgLy8gUmVwYWludCB3aXRob3V0
IG1hcmtpbmcgaXQgZGlydHkuCisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAs
IDAsIDYwMCwgNjAwKSwgb2NjbHVkZWQpOworICAgIEVYUEVDVF9FUSgwLCBsYXllci0+ZmFrZUxh
eWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKK30KKworVEVTVChUaWxl
ZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kVHJhbnNmb3Jt
cykKK3sKKyAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVy
ZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOworICAgIFJl
ZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGls
ZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CisgICAgUmVnaW9uIG9jY2x1
ZGVkOworCisgICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLgorCisgICAgLy8gVGhpcyBt
YWtlcyBzdXJlIHRoZSBwYWludGluZyB3b3JrcyB3aGVuIHRoZSBvY2NsdWRlZCByZWdpb24gKGlu
IHNjcmVlbiBzcGFjZSkKKyAgICAvLyBpcyB0cmFuc2Zvcm1lZCBkaWZmZXJlbnRseSB0aGFuIHRo
ZSBsYXllci4KKyAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoNjAwLCA2MDApKTsKKyAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBzY3JlZW5UcmFuc2Zvcm07CisgICAgc2NyZWVuVHJhbnNmb3Jt
LnNjYWxlKDAuNSk7CisgICAgbGF5ZXItPnNldFNjcmVlblNwYWNlVHJhbnNmb3JtKHNjcmVlblRy
YW5zZm9ybSk7CisKKyAgICBvY2NsdWRlZCA9IEludFJlY3QoMTAwLCAxMDAsIDE1MCwgNTApOwor
ICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXIt
PmJvdW5kcygpKSk7CisgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgNjAw
LCA2MDApKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNjAwLCA2
MDApLCBvY2NsdWRlZCk7CisgICAgRVhQRUNUX0VRKDM2LTMsIGxheWVyLT5mYWtlTGF5ZXJUZXh0
dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOworfQorCitURVNUKFRpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb25BbmRTY2FsaW5nKQoreworICAg
IE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6
Y3JlYXRlKDQqMTAyNCoxMDI0LCAyKjEwMjQqMTAyNCwgMTAyNCk7CisgICAgUmVmUHRyPEZha2VU
aWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hy
b21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKKyAgICBSZWdpb24gb2NjbHVkZWQ7CisKKyAg
ICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAuCisKKyAgICAvLyBUaGlzIG1ha2VzIHN1cmUg
dGhlIHBhaW50aW5nIHdvcmtzIHdoZW4gdGhlIGNvbnRlbnQgc3BhY2UgaXMgc2NhbGVkIHRvCisg
ICAgLy8gYSBkaWZmZXJlbnQgbGF5ZXIgc3BhY2UuIEluIHRoaXMgY2FzZSB0aWxlcyBhcmUgc2Nh
bGVkIHRvIGJlIDIwMHgyMDAKKyAgICAvLyBwaXhlbHMsIHdoaWNoIG1lYW5zIG5vbmUgc2hvdWxk
IGJlIG9jY2x1ZGVkLgorICAgIGxheWVyLT5zZXRDb250ZW50c1NjYWxlKDAuNSk7CisgICAgbGF5
ZXItPnNldEJvdW5kcyhJbnRTaXplKDYwMCwgNjAwKSk7CisKKyAgICBvY2NsdWRlZCA9IEludFJl
Y3QoMjAwLCAyMDAsIDMwMCwgMTAwKTsKKyAgICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdChJ
bnRSZWN0KEludFBvaW50KCksIGxheWVyLT5ib3VuZHMoKSkpOworICAgIGxheWVyLT5pbnZhbGlk
YXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CisgICAgbGF5ZXItPnByZXBhcmVUb1Vw
ZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgb2NjbHVkZWQpOworICAgIC8vIFRoZSBjb250
ZW50IGlzIGhhbGYgdGhlIHNpemUgb2YgdGhlIGxheWVyIChzbyB0aGUgbnVtYmVyIG9mIHRpbGVz
IGlzIGZld2VyKS4KKyAgICAvLyBJbiB0aGlzIGNhc2UsIHRoZSBjb250ZW50IGlzIDMwMHgzMDAs
IGFuZCBzaW5jZSB0aGUgdGlsZSBzaXplIGlzIDEwMCwgdGhlCisgICAgLy8gbnVtYmVyIG9mIHRp
bGVzIDN4My4KKyAgICBFWFBFQ1RfRVEoOSwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVy
KCktPnByZXBhcmVSZWN0Q291bnQoKSk7CisKKyAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVw
ZGF0ZXIoKS0+Y2xlYXJQcmVwYXJlUmVjdENvdW50KCk7CisKKyAgICAvLyBUaGlzIG1ha2VzIHN1
cmUgdGhlIHBhaW50aW5nIHdvcmtzIHdoZW4gdGhlIGNvbnRlbnQgc3BhY2UgaXMgc2NhbGVkIHRv
CisgICAgLy8gYSBkaWZmZXJlbnQgbGF5ZXIgc3BhY2UuIEluIHRoaXMgY2FzZSB0aGUgb2NjbHVk
ZWQgcmVnaW9uIGNhdGNoZXMgdGhlCisgICAgLy8gYmxvd24gdXAgdGlsZXMuCisgICAgb2NjbHVk
ZWQgPSBJbnRSZWN0KDIwMCwgMjAwLCAzMDAsIDIwMCk7CisgICAgbGF5ZXItPnNldFZpc2libGVM
YXllclJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBsYXllci0+Ym91bmRzKCkpKTsKKyAgICBsYXll
ci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOworICAgIGxheWVyLT5w
cmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksIG9jY2x1ZGVkKTsKKyAgICBF
WFBFQ1RfRVEoOS0xLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJl
Y3RDb3VudCgpKTsKKworICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVh
clByZXBhcmVSZWN0Q291bnQoKTsKKworICAgIC8vIFRoaXMgbWFrZXMgc3VyZSBjb250ZW50IHNj
YWxpbmcgYW5kIHRyYW5zZm9ybXMgd29yayB0b2dldGhlci4KKyAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBzY3JlZW5UcmFuc2Zvcm07CisgICAgc2NyZWVuVHJhbnNmb3JtLnNjYWxlKDAuNSk7Cisg
ICAgbGF5ZXItPnNldFNjcmVlblNwYWNlVHJhbnNmb3JtKHNjcmVlblRyYW5zZm9ybSk7CisKKyAg
ICBvY2NsdWRlZCA9IEludFJlY3QoMTAwLCAxMDAsIDE1MCwgMTAwKTsKKyAgICBsYXllci0+c2V0
VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KEludFBvaW50KCksIGxheWVyLT5ib3VuZHMoKSkpOwor
ICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CisgICAg
bGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgb2NjbHVkZWQp
OworICAgIEVYUEVDVF9FUSg5LTEsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5w
cmVwYXJlUmVjdENvdW50KCkpOworfQorCiB9IC8vIG5hbWVzcGFjZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125879</attachid>
            <date>2012-02-07 11:08:28 -0800</date>
            <delta_ts>2012-03-02 13:59:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76838-20120207140827.patch</filename>
            <type>text/plain</type>
            <size>40779</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2OTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWM5MDBmMGQ3NzE4ZDAw
NTE0MjE4NDA3Y2QwMzNjMWI4MzFmMGUxYi4uYWQ5Y2RjZjU5NzkyNTBiMDJlMzA4YWVhODRlNzRi
M2Y0ZWNmNDA3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTAyLTA3ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQ3Vs
bCBvY2NsdWRlZCB0aWxlcyBkdXJpbmcgcGFpbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc2ODM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTmV3IHVuaXQgdGVzdHMgaW4gVGlsZWRMYXllckNocm9taXVt
VGVzdC5jcHAKKworICAgICAgICBXZSB0cmFjayBvY2NsdXNpb24gZHVyaW5nIHRoZSBwYWludCBw
cm9jZXNzIGFscmVhZHksIG5vdyBzdG9wIHBhaW50aW5nCisgICAgICAgIHRpbGVzIHRoYXQgYXJl
IGtub3duIHRvIGJlIGZ1bGx5IG9jY2x1ZGVkLiBBbGwgY3VsbGVkIHRpbGVzIHdpbGwgZ2V0IHRo
ZQorICAgICAgICBoaWdoZXN0IHByaW9yaXR5IGZvciBwcmUtcGFpbnRpbmcgYXQgdGhpcyB0aW1l
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hy
b21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OnBhaW50
Q29udGVudHNJZkRpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRMYXllckNocm9taXVt
OjppZGxlUGFpbnRDb250ZW50c0lmRGlydHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmg6CisgICAgICAgIChDb250ZW50TGF5ZXJD
aHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXll
ckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJDaHJvbWl1bTo6cGFp
bnRDb250ZW50c0lmRGlydHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OmlkbGVQ
YWludENvbnRlbnRzSWZEaXJ0eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVGlsZWRMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJD
aHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRM
YXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRM
YXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZGxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFRpbGVkTGF5
ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6cGFp
bnRDb250ZW50c0lmRGlydHkpOgorCiAyMDEyLTAyLTA3ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5y
ZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCBy
MTA2OTM1LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAyMTNkY2ZjNDMwYjAzMjdjNmZk
ZDRmOTcyZDJjMDI0Y2Y2MDI4NWQ2Li43MTgyNDg1NzEzY2VkMzk5NzUxMGM0NjZiYTI0ODE2ODBj
NWJkNDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEy
LTAyLTA3ICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtj
aHJvbWl1bV0gQ3VsbCBvY2NsdWRlZCB0aWxlcyBkdXJpbmcgcGFpbnQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2ODM4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RU
ZXN0LmNwcDoKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJh
Y2tpbmc6OmlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSk6CisgICAgICAgICogdGVzdHMvVGlsZWRM
YXllckNocm9taXVtVGVzdC5jcHA6CisgICAgICAgIChXVEY6OkZha2VMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlOjpUZXh0dXJlKToKKyAgICAgICAgKFdURjo6RmFrZUxheWVyVGV4dHVyZVVw
ZGF0ZXI6OlRleHR1cmU6OnByZXBhcmVSZWN0KToKKyAgICAgICAgKFRleHR1cmUpOgorICAgICAg
ICAoV1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIp
OgorICAgICAgICAoV1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6c2V0T3BhcXVlUGFpbnRS
ZWN0KToKKyAgICAgICAgKEZha2VMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKFdURjo6
RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVSZWN0Q291bnQpOgorICAgICAgICAoV1RG
OjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y2xlYXJQcmVwYXJlUmVjdENvdW50KToKKyAgICAg
ICAgKFdURjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZVRleHR1cmUpOgorICAgICAg
ICAoV1RGOjpGYWtlVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGUpOgorICAgICAg
ICAoV1RGOjpGYWtlVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZGxlKToKKyAg
ICAgICAgKFdURjo6RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkp
OgorICAgICAgICAoV1RGOjpURVNUKToKKyAgICAgICAgKFdURik6CisKIDIwMTItMDItMDcgIFNo
ZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDY5MzUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1
bS5jcHAKaW5kZXggYWE3ZmI1Y2Y0NmIwNjI1N2ZmNWJmMjM1ZmIzYmYwNzg0NTM1NDk5Zi4uMDVm
NzQyNzFhMTc4ODQ3MWFmZGI3ZjlhMDcxOGFiMTZkNzE2YTc3ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRl
bnRMYXllckNocm9taXVtLmNwcApAQCAtOTMsNyArOTMsNyBAQCBib29sIENvbnRlbnRMYXllckNo
cm9taXVtOjpkcmF3c0NvbnRlbnQoKSBjb25zdAogICAgIHJldHVybiBUaWxlZExheWVyQ2hyb21p
dW06OmRyYXdzQ29udGVudCgpICYmIG1fZGVsZWdhdGU7CiB9CiAKLXZvaWQgQ29udGVudExheWVy
Q2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgLyogb2NjbHVkZWRT
Y3JlZW5TcGFjZSAqLykKK3ZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJ
ZkRpcnR5KGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSkKIHsKICAgICB1cGRhdGVU
aWxlU2l6ZUFuZFRpbGluZ09wdGlvbigpOwogICAgIGNyZWF0ZVRleHR1cmVVcGRhdGVySWZOZWVk
ZWQoKTsKQEAgLTEwNSwxMSArMTA1LDExIEBAIHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OnBh
aW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgLyogb2NjbHVkZWRTY3JlZW5TCiAgICAg
aWYgKGRyYXdzQ29udGVudCgpKQogICAgICAgICBsYXllclJlY3QgPSB2aXNpYmxlTGF5ZXJSZWN0
KCk7CiAKLSAgICBwcmVwYXJlVG9VcGRhdGUobGF5ZXJSZWN0KTsKKyAgICBwcmVwYXJlVG9VcGRh
dGUobGF5ZXJSZWN0LCBvY2NsdWRlZFNjcmVlblNwYWNlKTsKICAgICBtX25lZWRzRGlzcGxheSA9
IGZhbHNlOwogfQogCi12b2lkIENvbnRlbnRMYXllckNocm9taXVtOjppZGxlUGFpbnRDb250ZW50
c0lmRGlydHkoKQordm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6aWRsZVBhaW50Q29udGVudHNJ
ZkRpcnR5KGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSkKIHsKICAgICBpZiAoIWRy
YXdzQ29udGVudCgpKQogICAgICAgICByZXR1cm47CkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBD
b250ZW50TGF5ZXJDaHJvbWl1bTo6aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KCkKICAgICBpZiAo
bGF5ZXJSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJlcGFyZVRvVXBk
YXRlSWRsZShsYXllclJlY3QpOworICAgIHByZXBhcmVUb1VwZGF0ZUlkbGUobGF5ZXJSZWN0LCBv
Y2NsdWRlZFNjcmVlblNwYWNlKTsKICAgICBpZiAobmVlZHNJZGxlUGFpbnQobGF5ZXJSZWN0KSkK
ICAgICAgICAgc2V0TmVlZHNDb21taXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1
bS5oCmluZGV4IDNlODY4NmQwYTBkYmNlMmMxZThjNjFiNjAxODE0MDI2Mzc2NmJmMjMuLmZhNTkw
MWUyYWQyZDk1MDI2YTYyMDE4YzhjZDYxZTY4NGU3NDJhZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExh
eWVyQ2hyb21pdW0uaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJv
b2wgZHJhd3NDb250ZW50KCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJ
ZkRpcnR5KGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSk7Ci0gICAgdmlydHVhbCB2
b2lkIGlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSgpOworICAgIHZpcnR1YWwgdm9pZCBpZGxlUGFp
bnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uJiBvY2NsdWRlZFNjcmVlblNwYWNlKTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBzZXRPcGFxdWUoYm9vbCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hy
b21pdW0uY3BwCmluZGV4IDFlNDRlODcwMjNmZWQ1ZjQ2OTM1ZGY3YzNmYmQzNjJlNTRhYjA0Mjku
LjYxMWFiMmE2YTY1ODA1Mzk1NmU4YjhlZDMyODBkZmIxYjAwZGIwNTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1h
Z2VMYXllckNocm9taXVtLmNwcApAQCAtMTU4LDcgKzE1OCw3IEBAIHZvaWQgSW1hZ2VMYXllckNo
cm9taXVtOjpzZXRDb250ZW50cyhJbWFnZSogY29udGVudHMpCiAgICAgc2V0TmVlZHNEaXNwbGF5
KCk7CiB9CiAKLXZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eShj
b25zdCBSZWdpb24mIC8qIG9jY2x1ZGVkU2NyZWVuU3BhY2UgKi8pCit2b2lkIEltYWdlTGF5ZXJD
aHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uJiBvY2NsdWRlZFNjcmVl
blNwYWNlKQogewogICAgIGNyZWF0ZVRleHR1cmVVcGRhdGVySWZOZWVkZWQoKTsKICAgICBpZiAo
bV9uZWVkc0Rpc3BsYXkpIHsKQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIEltYWdlTGF5ZXJDaHJv
bWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uJiAvKiBvY2NsdWRlZFNjcmVl
blNwYQogICAgICAgICBtX25lZWRzRGlzcGxheSA9IGZhbHNlOwogICAgIH0KIAotICAgIHByZXBh
cmVUb1VwZGF0ZSh2aXNpYmxlTGF5ZXJSZWN0KCkpOworICAgIHByZXBhcmVUb1VwZGF0ZSh2aXNp
YmxlTGF5ZXJSZWN0KCksIG9jY2x1ZGVkU2NyZWVuU3BhY2UpOwogfQogCiB2b2lkIEltYWdlTGF5
ZXJDaHJvbWl1bTo6Y3JlYXRlVGV4dHVyZVVwZGF0ZXJJZk5lZWRlZCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVt
LmgKaW5kZXggYTA3NTgxMzFmYmZlMjM0NjkwYjI3MzNhZWM2YmEyZjhhMTRkMGNhNy4uZDRlZmRl
YzhiNzk1NjkzZTVjNWJlOGIzZTM1MDU4NTYzZjkwYzg1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaApA
QCAtMTU1LDcgKzE1NSw3IEBAIHB1YmxpYzoKICAgICAvLyBUaGVzZSBtZXRob2RzIHR5cGljYWxs
eSBuZWVkIHRvIGJlIG92ZXJ3cml0dGVuIGJ5IGRlcml2ZWQgY2xhc3Nlcy4KICAgICB2aXJ0dWFs
IGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9pc0RyYXdhYmxlOyB9CiAgICAg
dmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgLyogb2NjbHVk
ZWRTY3JlZW5TcGFjZSAqLykgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGlkbGVQYWludENvbnRlbnRz
SWZEaXJ0eSgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBpZGxlUGFpbnRDb250ZW50c0lmRGlydHko
Y29uc3QgUmVnaW9uJiAvKiBvY2NsdWRlZFNjcmVlblNwYWNlICovKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4
dHVyZVVwZGF0ZXImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0SXNNYXNrKGJvb2wpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCB1bnJlc2VydmVDb250ZW50c1RleHR1cmUoKSB7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJD
aHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9U
aWxlZExheWVyQ2hyb21pdW0uY3BwCmluZGV4IGM5MWRkNWRmYjQyZTUwZjA1OTNjYmExYzMyNzc3
ZWM1OTI5MTZkODEuLjY2MDc0NDg5NGJjMmQzYmI2ZjA5MDlmYzMzZTYzZDIyMjM5ZTQ3YTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVk
TGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1
ZGUgIk1hdGhFeHRyYXMuaCIKICNpbmNsdWRlICJSZWdpb24uaCIKICNpbmNsdWRlICJUZXh0U3Ry
ZWFtLmgiCisjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJJbXBs
LmgiCiAjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgImNjL0NDVGls
ZWRMYXllckltcGwuaCIKQEAgLTM1MSw3ICszNTIsNyBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1
bTo6cHJvdGVjdFRpbGVUZXh0dXJlcyhjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpCiAgICAgfQog
fQogCi12b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBp
ZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50IHJpZ2h0LCBpbnQgYm90dG9tKQordm9pZCBUaWxl
ZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wgaWRsZSwgaW50IGxlZnQs
IGludCB0b3AsIGludCByaWdodCwgaW50IGJvdHRvbSwgY29uc3QgUmVnaW9uJiBvY2NsdWRlZFNj
cmVlblNwYWNlKQogewogICAgIC8vIFJlc2V0IG1fdXBkYXRlUmVjdCBmb3IgYWxsIHRpbGVzLgog
ICAgIGZvciAoQ0NMYXllclRpbGluZ0RhdGE6OlRpbGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIg
PSBtX3RpbGVyLT50aWxlcygpLmJlZ2luKCk7IGl0ZXIgIT0gbV90aWxlci0+dGlsZXMoKS5lbmQo
KTsgKytpdGVyKSB7CkBAIC0zNjEsNiArMzYyLDkgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06
OnByZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wgaWRsZSwgaW50IGxlZnQsIGludCB0b3AsIGludAog
CiAgICAgY3JlYXRlVGV4dHVyZVVwZGF0ZXJJZk5lZWRlZCgpOwogCisgICAgLy8gVGlsZXMgYXJl
IGluIHRoZSBsYXllcidzIGNvbnRlbnQgc3BhY2UsIHRoZSBvY2NsdWRlZCByZWdpb24gaXMgaW4g
c2NyZWVuIHNwYWNlLgorICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNvbnRlbnRUb1NjcmVlblNw
YWNlID0gY29udGVudFRvU2NyZWVuU3BhY2VUcmFuc2Zvcm0oKTsKKwogICAgIC8vIENyZWF0ZSB0
aWxlcyBhcyBuZWVkZWQsIGV4cGFuZGluZyBhIGRpcnR5IHJlY3QgdG8gY29udGFpbiBhbGwKICAg
ICAvLyB0aGUgZGlydHkgcmVnaW9ucyBjdXJyZW50bHkgYmVpbmcgZHJhd24uIEFsbCBkaXJ0eSB0
aWxlcyB0aGF0IGFyZSB0byBiZSBwYWludGVkCiAgICAgLy8gZ2V0IHRoZWlyIG1fdXBkYXRlUmVj
dCBzZXQgdG8gbV9kaXJ0eVJlY3QgYW5kIG1fZGlydHlSZWN0IGNsZWFyZWQuIFRoaXMgd2F5IGlm
CkBAIC0zNzIsMTMgKzM3NiwyNSBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRv
VXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50CiAgICAgICAgICAg
ICBpZiAoIXRpbGUpCiAgICAgICAgICAgICAgICAgdGlsZSA9IGNyZWF0ZVRpbGUoaSwgaik7CiAK
KyAgICAgICAgICAgIC8vIFdoZW4gbm90IGlkbGUgcGFpbnRpbmcsIGlmIHRoZSB0aWxlIGlzIG9j
Y2x1ZGVkIGRvbid0IHJlc2VydmUgYSB0ZXh0dXJlIG9yIG1hcmsgaXQgZm9yIHVwZGF0ZS4gVGhp
cyB3aWxsIGFsc28gYXZvaWQgcGFpbnRpbmcKKyAgICAgICAgICAgIC8vIHRoZSB0aWxlIGluIHRo
ZSBuZXh0IGxvb3AsIGJlbG93LgorICAgICAgICAgICAgaWYgKCFpZGxlKSB7CisgICAgICAgICAg
ICAgICAgSW50UmVjdCB2aXNpYmxlVGlsZVJlY3QgPSBpbnRlcnNlY3Rpb24obV90aWxlci0+dGls
ZUJvdW5kcyhpLCBqKSwgdmlzaWJsZUxheWVyUmVjdCgpKTsKKyAgICAgICAgICAgICAgICBpZiAo
b2NjbHVkZWRTY3JlZW5TcGFjZS5jb250YWlucyhjb250ZW50VG9TY3JlZW5TcGFjZS5tYXBSZWN0
KHZpc2libGVUaWxlUmVjdCkpKSB7CisgICAgICAgICAgICAgICAgICAgIFRSQUNFX0VWRU5UKCJU
aWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzOjpjdWxsaW5nT2NjbHVkZWRU
aWxlIiwgdGhpcywgMCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgLy8gRG8gcG9zdCBjb21taXQg
ZGVsZXRpb24gb2YgY3VycmVudCB0ZXh0dXJlIHdoZW4gcGFydGlhbCB0ZXh0dXJlCiAgICAgICAg
ICAgICAvLyB1cGRhdGVzIGFyZSBub3QgdXNlZC4KICAgICAgICAgICAgIGlmICh0aWxlLT5pc0Rp
cnR5KCkgJiYgbGF5ZXJUcmVlSG9zdCgpICYmICFsYXllclRyZWVIb3N0KCktPnNldHRpbmdzKCku
cGFydGlhbFRleHR1cmVVcGRhdGVzKQogICAgICAgICAgICAgICAgIGxheWVyVHJlZUhvc3QoKS0+
ZGVsZXRlVGV4dHVyZUFmdGVyQ29tbWl0KHRpbGUtPm1hbmFnZWRUZXh0dXJlKCktPnN0ZWFsKCkp
OwogCi0gICAgICAgICAgICBpZiAoIXRpbGUtPm1hbmFnZWRUZXh0dXJlKCktPmlzVmFsaWQobV90
aWxlci0+dGlsZVNpemUoKSwgbV90ZXh0dXJlRm9ybWF0KSkKKyAgICAgICAgICAgIGlmICghdGls
ZS0+bWFuYWdlZFRleHR1cmUoKS0+aXNWYWxpZChtX3RpbGVyLT50aWxlU2l6ZSgpLCBtX3RleHR1
cmVGb3JtYXQpKSB7CisgICAgICAgICAgICAgICAgLy8gU2V0cyB0aGUgZGlydHkgcmVjdCB0byBh
IGZ1bGwtc2l6ZWQgdGlsZSB3aXRoIGJvcmRlciB0ZXhlbHMuCiAgICAgICAgICAgICAgICAgdGls
ZS0+bV9kaXJ0eVJlY3QgPSBtX3RpbGVyLT50aWxlUmVjdCh0aWxlKTsKKyAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgaWYgKCF0aWxlLT5tYW5hZ2VkVGV4dHVyZSgpLT5yZXNlcnZlKG1fdGls
ZXItPnRpbGVTaXplKCksIG1fdGV4dHVyZUZvcm1hdCkpIHsKICAgICAgICAgICAgICAgICBtX3Nr
aXBzSWRsZVBhaW50ID0gdHJ1ZTsKQEAgLTQzMyw3ICs0NDksNyBAQCB2b2lkIFRpbGVkTGF5ZXJD
aHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRv
cCwgaW50CiAgICAgICAgICAgICBpZiAodGlsZVBhaW50ZWRPcGFxdWVSZWN0ICE9IHRpbGVQYWlu
dGVkUmVjdCB8fCAhdGlsZS0+bV9vcGFxdWVSZWN0LmNvbnRhaW5zKHRpbGVQYWludGVkT3BhcXVl
UmVjdCkpCiAgICAgICAgICAgICAgICAgdGlsZS0+bV9vcGFxdWVSZWN0ID0gdGlsZVBhaW50ZWRP
cGFxdWVSZWN0OwogCi0gICAgICAgICAgICAvLyBVc2UgbV91cGRhdGVSZWN0IGFzIGNvcHlBbmRD
bGVhckRpcnR5IGFib3ZlIG1vdmVkIHRoZSBleGlzdGluZyBkaXJ0eSByZWN0IHRvIG1fdXBkYXRl
UmVjdC4KKyAgICAgICAgICAgIC8vIFVzZSBtX3VwZGF0ZVJlY3QgYXMgY29weUFuZENsZWFyRGly
dHkgYWJvdmUgbW92ZWQgdGhlIGV4aXN0aW5nIGRpcnR5IHJlY3QgdG8gbV91cGRhdGVSZWN0IGlm
IHRoZSB0aWxlIGlzbid0IGN1bGxlZC4KICAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIGRpcnR5
UmVjdCA9IHRpbGUtPm1fdXBkYXRlUmVjdDsKICAgICAgICAgICAgIGlmIChkaXJ0eVJlY3QuaXNF
bXB0eSgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtNTEwLDcgKzUyNiw3IEBAIHZv
aWQgVGlsZWRMYXllckNocm9taXVtOjphZGRTZWxmVG9PY2NsdWRlZFNjcmVlblNwYWNlKFJlZ2lv
biYgb2NjbHVkZWRTY3JlZW5TcGFjCiAgICAgfQogfQogCi12b2lkIFRpbGVkTGF5ZXJDaHJvbWl1
bTo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCkKK3ZvaWQgVGlsZWRM
YXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0LCBj
b25zdCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVuU3BhY2UpCiB7CiAgICAgbV9za2lwc0RyYXcgPSBm
YWxzZTsKICAgICBtX3NraXBzSWRsZVBhaW50ID0gZmFsc2U7CkBAIC01MjUsMTAgKzU0MSwxMCBA
QCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3Qm
IGxheWVyUmVjdCkKICAgICBpbnQgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tOwogICAgIG1fdGls
ZXItPmxheWVyUmVjdFRvVGlsZUluZGljZXMobGF5ZXJSZWN0LCBsZWZ0LCB0b3AsIHJpZ2h0LCBi
b3R0b20pOwogCi0gICAgcHJlcGFyZVRvVXBkYXRlVGlsZXMoZmFsc2UsIGxlZnQsIHRvcCwgcmln
aHQsIGJvdHRvbSk7CisgICAgcHJlcGFyZVRvVXBkYXRlVGlsZXMoZmFsc2UsIGxlZnQsIHRvcCwg
cmlnaHQsIGJvdHRvbSwgb2NjbHVkZWRTY3JlZW5TcGFjZSk7CiB9CiAKLXZvaWQgVGlsZWRMYXll
ckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZGxlKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCkK
K3ZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZGxlKGNvbnN0IEludFJl
Y3QmIGxheWVyUmVjdCwgY29uc3QgUmVnaW9uJiBvY2NsdWRlZFNjcmVlblNwYWNlKQogewogICAg
IC8vIEFib3J0IGlmIHdlIGhhdmUgYWxyZWFkeSBwcmVwYXJlZCBhIHBhaW50IG9yIHJ1biBvdXQg
b2YgbWVtb3J5LgogICAgIGlmIChtX3NraXBzSWRsZVBhaW50IHx8ICFtX3BhaW50UmVjdC5pc0Vt
cHR5KCkpCkBAIC01NDYsMzMgKzU2MiwzOSBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJl
cGFyZVRvVXBkYXRlSWRsZShjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpCiAgICAgSW50UmVjdCBp
ZGxlUGFpbnRMYXllclJlY3QgPSBpZGxlUGFpbnRSZWN0KGxheWVyUmVjdCk7CiAgICAgcHJvdGVj
dFRpbGVUZXh0dXJlcyhpZGxlUGFpbnRMYXllclJlY3QpOwogCi0gICAgLy8gRXhwYW5kIG91dHdh
cmRzIHVudGlsIHdlIGZpbmQgYSBkaXJ0eSByb3cgb3IgY29sdW1uIHRvIHVwZGF0ZS4KICAgICBp
bnQgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tOwogICAgIG1fdGlsZXItPmxheWVyUmVjdFRvVGls
ZUluZGljZXMobGF5ZXJSZWN0LCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20pOworCisgICAgLy8g
UHJlcGFpbnQgYW55dGhpbmcgdGhhdCB3YXMgb2NjbHVkZWQgYnV0IGluc2lkZSB0aGUgbGF5ZXIn
cyB2aXNpYmxlIHJlZ2lvbi4KKyAgICBwcmVwYXJlVG9VcGRhdGVUaWxlcyh0cnVlLCBsZWZ0LCBi
b3R0b20sIHJpZ2h0LCBib3R0b20sIG9jY2x1ZGVkU2NyZWVuU3BhY2UpOworICAgIGlmICghbV9w
YWludFJlY3QuaXNFbXB0eSgpIHx8IG1fc2tpcHNJZGxlUGFpbnQpCisgICAgICAgIHJldHVybjsK
KworICAgIC8vIEV4cGFuZCBvdXR3YXJkcyB1bnRpbCB3ZSBmaW5kIGEgZGlydHkgcm93IG9yIGNv
bHVtbiB0byB1cGRhdGUuCiAgICAgaW50IHByZXBhaW50TGVmdCwgcHJlcGFpbnRUb3AsIHByZXBh
aW50UmlnaHQsIHByZXBhaW50Qm90dG9tOwogICAgIG1fdGlsZXItPmxheWVyUmVjdFRvVGlsZUlu
ZGljZXMoaWRsZVBhaW50TGF5ZXJSZWN0LCBwcmVwYWludExlZnQsIHByZXBhaW50VG9wLCBwcmVw
YWludFJpZ2h0LCBwcmVwYWludEJvdHRvbSk7CiAgICAgd2hpbGUgKCFtX3NraXBzSWRsZVBhaW50
ICYmIChsZWZ0ID4gcHJlcGFpbnRMZWZ0IHx8IHRvcCA+IHByZXBhaW50VG9wIHx8IHJpZ2h0IDwg
cHJlcGFpbnRSaWdodCB8fCBib3R0b20gPCBwcmVwYWludEJvdHRvbSkpIHsKICAgICAgICAgaWYg
KGJvdHRvbSA8IHByZXBhaW50Qm90dG9tKSB7CiAgICAgICAgICAgICArK2JvdHRvbTsKLSAgICAg
ICAgICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKHRydWUsIGxlZnQsIGJvdHRvbSwgcmlnaHQsIGJv
dHRvbSk7CisgICAgICAgICAgICBwcmVwYXJlVG9VcGRhdGVUaWxlcyh0cnVlLCBsZWZ0LCBib3R0
b20sIHJpZ2h0LCBib3R0b20sIG9jY2x1ZGVkU2NyZWVuU3BhY2UpOwogICAgICAgICAgICAgaWYg
KCFtX3BhaW50UmVjdC5pc0VtcHR5KCkgfHwgbV9za2lwc0lkbGVQYWludCkKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAodG9wID4gcHJlcGFpbnRUb3ApIHsK
ICAgICAgICAgICAgIC0tdG9wOwotICAgICAgICAgICAgcHJlcGFyZVRvVXBkYXRlVGlsZXModHJ1
ZSwgbGVmdCwgdG9wLCByaWdodCwgdG9wKTsKKyAgICAgICAgICAgIHByZXBhcmVUb1VwZGF0ZVRp
bGVzKHRydWUsIGxlZnQsIHRvcCwgcmlnaHQsIHRvcCwgb2NjbHVkZWRTY3JlZW5TcGFjZSk7CiAg
ICAgICAgICAgICBpZiAoIW1fcGFpbnRSZWN0LmlzRW1wdHkoKSB8fCBtX3NraXBzSWRsZVBhaW50
KQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGlmIChsZWZ0ID4g
cHJlcGFpbnRMZWZ0KSB7CiAgICAgICAgICAgICAtLWxlZnQ7Ci0gICAgICAgICAgICBwcmVwYXJl
VG9VcGRhdGVUaWxlcyh0cnVlLCBsZWZ0LCB0b3AsIGxlZnQsIGJvdHRvbSk7CisgICAgICAgICAg
ICBwcmVwYXJlVG9VcGRhdGVUaWxlcyh0cnVlLCBsZWZ0LCB0b3AsIGxlZnQsIGJvdHRvbSwgb2Nj
bHVkZWRTY3JlZW5TcGFjZSk7CiAgICAgICAgICAgICBpZiAoIW1fcGFpbnRSZWN0LmlzRW1wdHko
KSB8fCBtX3NraXBzSWRsZVBhaW50KQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGlmIChyaWdodCA8IHByZXBhaW50UmlnaHQpIHsKICAgICAgICAgICAgICsrcmln
aHQ7Ci0gICAgICAgICAgICBwcmVwYXJlVG9VcGRhdGVUaWxlcyh0cnVlLCByaWdodCwgdG9wLCBy
aWdodCwgYm90dG9tKTsKKyAgICAgICAgICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKHRydWUsIHJp
Z2h0LCB0b3AsIHJpZ2h0LCBib3R0b20sIG9jY2x1ZGVkU2NyZWVuU3BhY2UpOwogICAgICAgICAg
ICAgaWYgKCFtX3BhaW50UmVjdC5pc0VtcHR5KCkgfHwgbV9za2lwc0lkbGVQYWludCkKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaApp
bmRleCA0NjE5MmZlNWQyNTZlNmUyN2VmYTFmNmFmOTBhNzhkNmRmODIwOTg0Li4yYWM1YTJlYzI3
ZjNhMmY1NzBhYWY2MGY2ZmFlOGVlMzIxN2U1M2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21p
dW0uaApAQCAtODcsMTAgKzg3LDEwIEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGludmFsaWRhdGVS
ZWN0KGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCk7CiAKICAgICAvLyBQcmVwYXJlIGRhdGEgbmVl
ZGVkIHRvIHVwZGF0ZSB0ZXh0dXJlcyB0aGF0IGludGVyc2VjdCB3aXRoIGxheWVyUmVjdC4KLSAg
ICB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpOworICAgIHZv
aWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3QgUmVnaW9u
JiBvY2NsdWRlZFRhcmdldFNwYWNlKTsKIAogICAgIC8vIFNhbWUgYXMgYWJvdmUsIGJ1dCB0aGlz
IHdpbGwgdHJ5IHRvIHBhaW50IGFkZGl0aW9uYWwgc3Vycm91bmRpbmcgY29udGVudCBpZiBpZGxl
LgotICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlSWRsZShjb25zdCBJbnRSZWN0JiBsYXllclJlY3Qp
OworICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlSWRsZShjb25zdCBJbnRSZWN0JiBsYXllclJlY3Qs
IGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRUYXJnZXRTcGFjZSk7CiAKICAgICAvLyBBZnRlciBwcmVw
YXJpbmcgYW4gdXBkYXRlLCByZXR1cm5zIHRydWUgaWYgbW9yZSBwcmUtcGFpbnRpbmcgaXMgbmVl
ZGVkLgogICAgIGJvb2wgbmVlZHNJZGxlUGFpbnQoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KTsK
QEAgLTEwNyw3ICsxMDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlVGlsZXJJZk5lZWRl
ZCgpOwogICAgIHZvaWQgc2V0VGlsaW5nT3B0aW9uKFRpbGluZ09wdGlvbik7CiAKLSAgICB2b2lk
IHByZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wgaWRsZSwgaW50IGxlZnQsIGludCB0b3AsIGludCBy
aWdodCwgaW50IGJvdHRvbSk7CisgICAgdm9pZCBwcmVwYXJlVG9VcGRhdGVUaWxlcyhib29sIGlk
bGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQgcmlnaHQsIGludCBib3R0b20sIGNvbnN0IFJlZ2lv
biYgb2NjbHVkZWRUYXJnZXRTcGFjZSk7CiAgICAgSW50UmVjdCBpZGxlUGFpbnRSZWN0KGNvbnN0
IEludFJlY3QmIHZpc2libGVMYXllclJlY3QpOwogCiAgICAgVXBkYXRhYmxlVGlsZSogdGlsZUF0
KGludCwgaW50KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IDUw
ZDc2YTVlOGM1NDJkNzYwYjFjNjkwMDUwZDY2ODM0ZmI3OTg1MTguLjY3ZmQ3MGE4Y2U4NWE3Yzhl
YjMzMDFiMTM5N2IxOGE1NDIzMTJlNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNw
cApAQCAtNDU1LDcgKzQ1NSw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludENvbnRlbnRz
SWZEaXJ0eShMYXllckNocm9taXVtKiBsYXllciwgUGFpbnRUeXBlIHBhaW50CiAgICAgaWYgKFBh
aW50VmlzaWJsZSA9PSBwYWludFR5cGUpCiAgICAgICAgIGxheWVyLT5wYWludENvbnRlbnRzSWZE
aXJ0eShvY2NsdWRlZFNjcmVlblNwYWNlKTsKICAgICBlbHNlCi0gICAgICAgIGxheWVyLT5pZGxl
UGFpbnRDb250ZW50c0lmRGlydHkoKTsKKyAgICAgICAgbGF5ZXItPmlkbGVQYWludENvbnRlbnRz
SWZEaXJ0eShvY2NsdWRlZFNjcmVlblNwYWNlKTsKIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6
OnBhaW50TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0qIHJlbmRl
clN1cmZhY2VMYXllciwgUGFpbnRUeXBlIHBhaW50VHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCmluZGV4IDIwMDg2MTNj
ZDg5ZDUzZmE1OWRjZWE5NWY1MmU2ZjM1N2YzYWM4NmIuLjM5YzAwMzlkYjgzMTA5YzNkMGJjNDFi
YjE4YjEzNGQ4YjBkMjk0MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcApAQCAtMTAxMiw5ICsxMDEyLDkgQEAgcHVibGlj
OgogICAgICAgICBtX3BhaW50Q29udGVudHNDb3VudCsrOwogICAgIH0KIAotICAgIHZpcnR1YWwg
dm9pZCBpZGxlUGFpbnRDb250ZW50c0lmRGlydHkoKQorICAgIHZpcnR1YWwgdm9pZCBpZGxlUGFp
bnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uJiBvY2NsdWRlZCkKICAgICB7Ci0gICAgICAg
IENvbnRlbnRMYXllckNocm9taXVtOjppZGxlUGFpbnRDb250ZW50c0lmRGlydHkoKTsKKyAgICAg
ICAgQ29udGVudExheWVyQ2hyb21pdW06OmlkbGVQYWludENvbnRlbnRzSWZEaXJ0eShvY2NsdWRl
ZCk7CiAgICAgICAgIG1faWRsZVBhaW50Q29udGVudHNDb3VudCsrOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVz
dC5jcHAKaW5kZXggNjA2OWZkMTgxMzg4YmI1NDY5ZDliNjEzZjhjNzUzZDZhNWJmYjg5OS4uYjFh
ZmY1NWM0NzAwMDQ5ODc0YmU5ZDc3NDI2NzYyMmNjMmU3YjdhOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBA
IC02MCwzNCArNjAsNDcgQEAgY2xhc3MgRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMg
TGF5ZXJUZXh0dXJlVXBkYXRlciB7CiBwdWJsaWM6CiAgICAgY2xhc3MgVGV4dHVyZSA6IHB1Ymxp
YyBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFRl
eHR1cmUoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkgOiBMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlKHRleHR1cmUpIHsgfQorICAgICAgICBUZXh0dXJlKFBhc3NPd25QdHI8
TWFuYWdlZFRleHR1cmU+IHRleHR1cmUsIEZha2VMYXllclRleHR1cmVVcGRhdGVyKiB1cGRhdGVy
KQorICAgICAgICAgICAgOiBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKHRleHR1cmUpCisg
ICAgICAgICAgICAsIG1fdXBkYXRlcih1cGRhdGVyKQorICAgICAgICB7CisgICAgICAgIH0KICAg
ICAgICAgdmlydHVhbCB+VGV4dHVyZSgpIHsgfQogCiAgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJl
Y3QmLCBjb25zdCBJbnRSZWN0JikgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlUmVj
dChjb25zdCBJbnRSZWN0JikgeyArK21fdXBkYXRlci0+bV9wcmVwYXJlUmVjdENvdW50OyB9CisK
KyAgICBwcml2YXRlOgorICAgICAgICBGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlciogbV91cGRhdGVy
OwogICAgIH07CiAKLSAgICBGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpIDogbV9wcmVwYXJlQ291
bnQoMCkgeyB9CisgICAgRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKSA6IG1fcHJlcGFyZUNvdW50
KDApLCBtX3ByZXBhcmVSZWN0Q291bnQoMCkgeyB9CiAgICAgdmlydHVhbCB+RmFrZUxheWVyVGV4
dHVyZVVwZGF0ZXIoKSB7IH0KIAogICAgIC8vIFNldHMgdGhlIHJlY3QgdG8gaW52YWxpZGF0ZSBk
dXJpbmcgdGhlIG5leHQgY2FsbCB0byBwcmVwYXJlVG9VcGRhdGUoKS4gQWZ0ZXIgdGhlIG5leHQK
ICAgICAvLyBjYWxsIHRvIHByZXBhcmVUb1VwZGF0ZSgpIHRoZSByZWN0IGlzIHJlc2V0LgogICAg
IHZvaWQgc2V0UmVjdFRvSW52YWxpZGF0ZShjb25zdCBJbnRSZWN0JiwgRmFrZVRpbGVkTGF5ZXJD
aHJvbWl1bSopOwogCisgICAgdm9pZCBzZXRPcGFxdWVQYWludFJlY3QoY29uc3QgSW50UmVjdCYg
b3BhcXVlUGFpbnRSZWN0KSB7IG1fb3BhcXVlUGFpbnRSZWN0ID0gb3BhcXVlUGFpbnRSZWN0OyB9
CisKICAgICAvLyBOdW1iZXIgb2YgdGltZXMgcHJlcGFyZVRvVXBkYXRlIGhhcyBiZWVuIGludm9r
ZWQuCiAgICAgaW50IHByZXBhcmVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlcGFyZUNvdW50
OyB9CiAgICAgdm9pZCBjbGVhclByZXBhcmVDb3VudCgpIHsgbV9wcmVwYXJlQ291bnQgPSAwOyB9
CiAKLSAgICB2b2lkIHNldE9wYXF1ZVBhaW50UmVjdChjb25zdCBJbnRSZWN0JiBvcGFxdWVQYWlu
dFJlY3QpIHsgbV9vcGFxdWVQYWludFJlY3QgPSBvcGFxdWVQYWludFJlY3Q7IH0KKyAgICAvLyBO
dW1iZXIgb2YgdGltZXMgcHJlcGFyZVJlY3QgaGFzIGJlZW4gaW52b2tlZCBvbiBhIHRleHR1cmUu
CisgICAgaW50IHByZXBhcmVSZWN0Q291bnQoKSBjb25zdCB7IHJldHVybiBtX3ByZXBhcmVSZWN0
Q291bnQ7IH0KKyAgICB2b2lkIGNsZWFyUHJlcGFyZVJlY3RDb3VudCgpIHsgbV9wcmVwYXJlUmVj
dENvdW50ID0gMDsgfQogCiAgICAgLy8gTGFzdCByZWN0IHBhc3NlZCB0byBwcmVwYXJlVG9VcGRh
dGUoKS4KICAgICBjb25zdCBJbnRSZWN0JiBsYXN0VXBkYXRlUmVjdCgpICBjb25zdCB7IHJldHVy
biBtX2xhc3RVcGRhdGVSZWN0OyB9CiAKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8TGF5ZXJUZXh0
dXJlVXBkYXRlcjo6VGV4dHVyZT4gY3JlYXRlVGV4dHVyZShUZXh0dXJlTWFuYWdlciogbWFuYWdl
cikgeyByZXR1cm4gYWRvcHRQdHIobmV3IFRleHR1cmUoTWFuYWdlZFRleHR1cmU6OmNyZWF0ZSht
YW5hZ2VyKSkpOyB9CisgICAgdmlydHVhbCBQYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4dHVyZU1hbmFnZXIqIG1hbmFnZXIpIHsgcmV0dXJu
IGFkb3B0UHRyKG5ldyBUZXh0dXJlKE1hbmFnZWRUZXh0dXJlOjpjcmVhdGUobWFuYWdlciksIHRo
aXMpKTsgfQogICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1h
dChHQzNEZW51bSkgeyByZXR1cm4gU2FtcGxlZFRleGVsRm9ybWF0UkdCQTsgfQogICAgIHZpcnR1
YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0
IEludFNpemUmLCBpbnQsIGZsb2F0LCBJbnRSZWN0KiByZXN1bHRpbmdPcGFxdWVSZWN0KTsKIAog
cHJpdmF0ZToKICAgICBpbnQgbV9wcmVwYXJlQ291bnQ7CisgICAgaW50IG1fcHJlcGFyZVJlY3RD
b3VudDsKICAgICBJbnRSZWN0IG1fcmVjdFRvSW52YWxpZGF0ZTsKICAgICBJbnRSZWN0IG1fbGFz
dFVwZGF0ZVJlY3Q7CiAgICAgSW50UmVjdCBtX29wYXF1ZVBhaW50UmVjdDsKQEAgLTEyNSwxNCAr
MTM4LDE0IEBAIHB1YmxpYzoKICAgICAgICAgVGlsZWRMYXllckNocm9taXVtOjppbnZhbGlkYXRl
UmVjdChyZWN0KTsKICAgICB9CiAKLSAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRS
ZWN0JiByZWN0KQorICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIHJlY3Qs
IGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWQpCiAgICAgewotICAgICAgICBUaWxlZExheWVyQ2hyb21p
dW06OnByZXBhcmVUb1VwZGF0ZShyZWN0KTsKKyAgICAgICAgVGlsZWRMYXllckNocm9taXVtOjpw
cmVwYXJlVG9VcGRhdGUocmVjdCwgb2NjbHVkZWQpOwogICAgIH0KIAotICAgIHZvaWQgcHJlcGFy
ZVRvVXBkYXRlSWRsZShjb25zdCBJbnRSZWN0JiByZWN0KQorICAgIHZvaWQgcHJlcGFyZVRvVXBk
YXRlSWRsZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBSZWdpb24mIG9jY2x1ZGVkKQogICAg
IHsKLSAgICAgICAgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZGxlKHJlY3Qp
OworICAgICAgICBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlkbGUocmVjdCwg
b2NjbHVkZWQpOwogICAgIH0KIAogICAgIGJvb2wgbmVlZHNJZGxlUGFpbnQoY29uc3QgSW50UmVj
dCYgcmVjdCkKQEAgLTE0OSw5ICsxNjIsOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFRleHR1
cmVNYW5hZ2VyKiB0ZXh0dXJlTWFuYWdlcigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZU1hbmFn
ZXI7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdp
b24mIC8qIG9jY2x1ZGVkU2NyZWVuU3BhY2UgKi8pCisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29u
dGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSkKICAgICB7Ci0g
ICAgICAgIHByZXBhcmVUb1VwZGF0ZSh2aXNpYmxlTGF5ZXJSZWN0KCkpOworICAgICAgICBwcmVw
YXJlVG9VcGRhdGUodmlzaWJsZUxheWVyUmVjdCgpLCBvY2NsdWRlZFNjcmVlblNwYWNlKTsKICAg
ICB9CiAKIHByaXZhdGU6CkBAIC0yMDgsNiArMjIxLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21p
dW1UZXN0LCBwdXNoRGlydHlUaWxlcykKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1
bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFu
YWdlci5nZXQoKSkpOwogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwog
ICAgIFJlZlB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsID0gYWRvcHRSZWYobmV3
IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDApKTsKKyAgICBSZWdpb24gbm9PY2NsdXNpb247CiAKICAg
ICBGYWtlVGV4dHVyZUFsbG9jYXRvciB0ZXh0dXJlQWxsb2NhdG9yOwogICAgIENDVGV4dHVyZVVw
ZGF0ZXIgdXBkYXRlcigmdGV4dHVyZUFsbG9jYXRvcik7CkBAIC0yMTUsNyArMjI5LDcgQEAgVEVT
VChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoRGlydHlUaWxlcykKICAgICAvLyBUaGUgdGls
ZSBzaXplIGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3
byB0aWxlcy4KICAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAyMDApKTsKICAgICBs
YXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwotICAgIGxheWVy
LT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOworICAgIGxheWVyLT5w
cmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIG5vT2NjbHVzaW9uKTsKICAg
ICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKICAgICBsYXll
ci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCkBAIC0yMjgsNyArMjQyLDcg
QEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoRGlydHlUaWxlcykKICAgICAvLyBJ
bnZhbGlkYXRlcyBib3RoIHRpbGVzLi4uCiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJl
Y3QoMCwgMCwgMTAwLCAyMDApKTsKICAgICAvLyAuLi4uYnV0IHRoZW4gb25seSB1cGRhdGUgb25l
IG9mIHRoZW0uCi0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwg
MTAwKSk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMTAw
KSwgbm9PY2NsdXNpb24pOwogICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAs
IHVwZGF0ZXIpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7
CiAKQEAgLTI1MSwxMiArMjY1LDEzIEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVz
aElkbGVQYWludFRpbGVzKQogICAgIEludFNpemUgY29udGVudEJvdW5kcyg1MDAsIDUwMCk7CiAg
ICAgSW50UmVjdCBjb250ZW50UmVjdChJbnRQb2ludDo6emVybygpLCBjb250ZW50Qm91bmRzKTsK
ICAgICBJbnRSZWN0IHZpc2libGVSZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCk7CisgICAgUmVnaW9u
IG5vT2NjbHVzaW9uOwogCiAgICAgLy8gVGhpcyBpbnZhbGlkYXRlcyAyNSB0aWxlcyBhbmQgdGhl
biBwYWludHMgb25lIHZpc2libGUgdGlsZS4KICAgICBsYXllci0+c2V0Qm91bmRzKGNvbnRlbnRC
b3VuZHMpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KHZpc2libGVSZWN0KTsKICAg
ICBsYXllci0+aW52YWxpZGF0ZVJlY3QoY29udGVudFJlY3QpOwotICAgIGxheWVyLT5wcmVwYXJl
VG9VcGRhdGUodmlzaWJsZVJlY3QpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUodmlzaWJs
ZVJlY3QsIG5vT2NjbHVzaW9uKTsKIAogICAgIC8vIFdlIHNob3VsZCBuZWVkIGlkbGUtcGFpbnRp
bmcgZm9yIDN4MyB0aWxlcyBpbiB0aGUgY2VudGVyLgogICAgIEVYUEVDVF9UUlVFKGxheWVyLT5u
ZWVkc0lkbGVQYWludCh2aXNpYmxlUmVjdCkpOwpAQCAtMjcxLDkgKzI4Niw5IEBAIFRFU1QoVGls
ZWRMYXllckNocm9taXVtVGVzdCwgcHVzaElkbGVQYWludFRpbGVzKQogCiAgICAgLy8gRm9yIHRo
ZSBuZXh0IGZvdXIgdXBkYXRlcywgd2Ugc2hvdWxkIGRldGVjdCB3ZSBzdGlsbCBuZWVkIGlkbGUg
cGFpbnRpbmcuCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBpKyspIHsKLSAgICAgICAgbGF5
ZXItPnByZXBhcmVUb1VwZGF0ZSh2aXNpYmxlUmVjdCk7CisgICAgICAgIGxheWVyLT5wcmVwYXJl
VG9VcGRhdGUodmlzaWJsZVJlY3QsIG5vT2NjbHVzaW9uKTsKICAgICAgICAgRVhQRUNUX1RSVUUo
bGF5ZXItPm5lZWRzSWRsZVBhaW50KHZpc2libGVSZWN0KSk7Ci0gICAgICAgIGxheWVyLT5wcmVw
YXJlVG9VcGRhdGVJZGxlKHZpc2libGVSZWN0KTsKKyAgICAgICAgbGF5ZXItPnByZXBhcmVUb1Vw
ZGF0ZUlkbGUodmlzaWJsZVJlY3QsIG5vT2NjbHVzaW9uKTsKICAgICAgICAgbGF5ZXItPnVwZGF0
ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAgICAgICAgIGxheWVyLT5wdXNoUHJv
cGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAgICAgICAgIHRleHR1cmVNYW5hZ2VyLT51bnBy
b3RlY3RBbGxUZXh0dXJlcygpOwpAQCAtMzAxLDYgKzMxNiw3IEBAIFRFU1QoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgaWRsZVBhaW50T3V0T2ZNZW1vcnkpCiAgICAgSW50U2l6ZSBjb250ZW50Qm91
bmRzKDMwMCwgMzAwKTsKICAgICBJbnRSZWN0IGNvbnRlbnRSZWN0KEludFBvaW50Ojp6ZXJvKCks
IGNvbnRlbnRCb3VuZHMpOwogICAgIEludFJlY3QgdmlzaWJsZVJlY3QoMTAwLCAxMDAsIDEwMCwg
MTAwKTsKKyAgICBSZWdpb24gbm9PY2NsdXNpb247CiAKICAgICAvLyBXZSBoYXZlIGVub3VnaCBt
ZW1vcnkgZm9yIG9ubHkgdGhlIHZpc2libGUgcmVjdCwgc28gd2Ugd2lsbCBydW4gb3V0IG9mIG1l
bW9yeSBpbiBmaXJzdCBpZGxlIHBhaW50LgogICAgIGludCBtZW1vcnlMaW1pdCA9IDQgKiAxMDAg
KiAxMDA7IC8vIDIgdGlsZXMsIDQgYnl0ZXMgcGVyIHBpeGVsLgpAQCAtMzE3LDcgKzMzMyw3IEBA
IFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50T3V0T2ZNZW1vcnkpCiAgICAg
bGF5ZXItPnNldEJvdW5kcyhjb250ZW50Qm91bmRzKTsKICAgICBsYXllci0+c2V0VmlzaWJsZUxh
eWVyUmVjdCh2aXNpYmxlUmVjdCk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KGNvbnRlbnRS
ZWN0KTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKHZpc2libGVSZWN0KTsKKyAgICBsYXll
ci0+cHJlcGFyZVRvVXBkYXRlKHZpc2libGVSZWN0LCBub09jY2x1c2lvbik7CiAKICAgICAvLyBX
ZSBzaG91bGQgbmVlZCBpZGxlLXBhaW50aW5nIGZvciAzeDMgdGlsZXMgc3Vyb3VuZGluZyB2aXNp
YmxlIHRpbGUuCiAgICAgRVhQRUNUX1RSVUUobGF5ZXItPm5lZWRzSWRsZVBhaW50KHZpc2libGVS
ZWN0KSk7CkBAIC0zMjksOCArMzQ1LDggQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBp
ZGxlUGFpbnRPdXRPZk1lbW9yeSkKICAgICBFWFBFQ1RfVFJVRShsYXllckltcGwtPmhhc1RpbGVB
dCgxLCAxKSk7CiAKICAgICB0ZXh0dXJlTWFuYWdlci0+dW5wcm90ZWN0QWxsVGV4dHVyZXMoKTsK
LSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKHZpc2libGVSZWN0KTsKLSAgICBsYXllci0+cHJl
cGFyZVRvVXBkYXRlSWRsZSh2aXNpYmxlUmVjdCk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0
ZSh2aXNpYmxlUmVjdCwgbm9PY2NsdXNpb24pOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGVJ
ZGxlKHZpc2libGVSZWN0LCBub09jY2x1c2lvbik7CiAKICAgICAvLyBXZSBzaG91bGRuJ3Qgc2ln
bmFsIHdlIG5lZWQgYW5vdGhlciBpZGxlIHBhaW50IGFmdGVyIHdlIHJ1biBvdXQgb2YgbWVtb3J5
LgogICAgIEVYUEVDVF9GQUxTRShsYXllci0+bmVlZHNJZGxlUGFpbnQodmlzaWJsZVJlY3QpKTsK
QEAgLTM0NSw2ICszNjEsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGludmFsaWRh
dGVGcm9tUHJlcGFyZSkKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIg
PSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQo
KSkpOwogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAgIFJlZlB0
cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsID0gYWRvcHRSZWYobmV3IEZha2VDQ1Rp
bGVkTGF5ZXJJbXBsKDApKTsKKyAgICBSZWdpb24gbm9PY2NsdXNpb247CiAKICAgICBGYWtlVGV4
dHVyZUFsbG9jYXRvciB0ZXh0dXJlQWxsb2NhdG9yOwogICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBk
YXRlcigmdGV4dHVyZUFsbG9jYXRvcik7CkBAIC0zNTIsNyArMzY5LDcgQEAgVEVTVChUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCBpbnZhbGlkYXRlRnJvbVByZXBhcmUpCiAgICAgLy8gVGhlIHRpbGUg
c2l6ZSBpcyAxMDB4MTAwLCBzbyB0aGlzIGludmFsaWRhdGVzIGFuZCB0aGVuIHBhaW50cyB0d28g
dGlsZXMuCiAgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDEwMCwgMjAwKSk7CiAgICAgbGF5
ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKLSAgICBsYXllci0+
cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKKyAgICBsYXllci0+cHJl
cGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCBub09jY2x1c2lvbik7CiAgICAg
bGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAgICAgbGF5ZXIt
PnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIApAQCAtMzY1LDE4ICszODIsMTgg
QEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpbnZhbGlkYXRlRnJvbVByZXBhcmUpCiAg
ICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyUHJlcGFyZUNvdW50KCk7
CiAgICAgLy8gSW52b2tlIHByZXBhcmVUb1VwZGF0ZSBhZ2Fpbi4gQXMgdGhlIGxheWVyIGlzIHZh
bGlkIHByZXBhcmVUb1VwZGF0ZSBzaG91bGRuJ3QgYmUgaW52b2tlZCBvbgogICAgIC8vIHRoZSBM
YXllclRleHR1cmVVcGRhdGVyLgotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgw
LCAwLCAxMDAsIDIwMCkpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAw
LCAxMDAsIDIwMCksIG5vT2NjbHVzaW9uKTsKICAgICBFWFBFQ1RfRVEoMCwgbGF5ZXItPmZha2VM
YXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVDb3VudCgpKTsKIAogICAgIGxheWVyLT5pbnZh
bGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDUwLCA1MCkpOwogICAgIC8vIHNldFJlY3RUb0ludmFs
aWRhdGUgdHJpZ2dlcnMgaW52YWxpZGF0ZVJlY3QoKSBiZWluZyBpbnZva2VkIGZyb20gcHJlcGFy
ZVRvVXBkYXRlLgogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRSZWN0
VG9JbnZhbGlkYXRlKEludFJlY3QoMjUsIDI1LCA1MCwgNTApLCBsYXllci5nZXQoKSk7CiAgICAg
bGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyUHJlcGFyZUNvdW50KCk7Ci0g
ICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CisgICAg
bGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgbm9PY2NsdXNp
b24pOwogICAgIEVYUEVDVF9FUSgxLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+
cHJlcGFyZUNvdW50KCkpOwogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5j
bGVhclByZXBhcmVDb3VudCgpOwogICAgIC8vIFRoZSBsYXllciBzaG91bGQgc3RpbGwgYmUgaW52
YWxpZCBhcyBwcmVwYXJlVG9VcGRhdGUgaW52b2tlZCBpbnZhbGlkYXRlLgotICAgIGxheWVyLT5w
cmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOworICAgIGxheWVyLT5wcmVw
YXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIG5vT2NjbHVzaW9uKTsKICAgICBF
WFBFQ1RfRVEoMSwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVDb3Vu
dCgpKTsKIH0KIApAQCAtMzg3LDYgKzQwNCw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVz
dCwgdmVyaWZ5VXBkYXRlUmVjdFdoZW5Db250ZW50Qm91bmRzQXJlU2NhbGVkKQogCiAgICAgT3du
UHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVh
dGUoNCoxMDI0KjEwMjQsIDIqMTAyNCoxMDI0LCAxMDI0KTsKICAgICBSZWZQdHI8RmFrZVRpbGVk
TGF5ZXJXaXRoU2NhbGVkQm91bmRzPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXll
cldpdGhTY2FsZWRCb3VuZHModGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKKyAgICBSZWdpb24gbm9P
Y2NsdXNpb247CiAKICAgICBGYWtlVGV4dHVyZUFsbG9jYXRvciB0ZXh0dXJlQWxsb2NhdG9yOwog
ICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcigmdGV4dHVyZUFsbG9jYXRvcik7CkBAIC00MDEs
MjAgKzQxOSwyMCBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZlcmlmeVVwZGF0ZVJl
Y3RXaGVuQ29udGVudEJvdW5kc0FyZVNjYWxlZCkKICAgICAvLyBPbiBmaXJzdCB1cGRhdGUsIHRo
ZSB1cGRhdGVSZWN0IGluY2x1ZGVzIGFsbCB0aWxlcywgZXZlbiBiZXlvbmQgdGhlIGJvdW5kYXJp
ZXMgb2YgdGhlIGxheWVyLgogICAgIC8vIEhvd2V2ZXIsIGl0IHNob3VsZCBzdGlsbCBiZSBpbiBs
YXllciBzcGFjZSwgbm90IGNvbnRlbnQgc3BhY2UuCiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0
KGNvbnRlbnRCb3VuZHMpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5k
cyk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzLCBub09jY2x1c2lv
bik7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAg
ICAgRVhQRUNUX0ZMT0FUX1JFQ1RfRVEoRmxvYXRSZWN0KDAsIDAsIDMwMCwgMzAwICogMC44KSwg
bGF5ZXItPnVwZGF0ZVJlY3QoKSk7CiAKICAgICAvLyBBZnRlciB0aGUgdGlsZXMgYXJlIHVwZGF0
ZWQgb25jZSwgYW5vdGhlciBpbnZhbGlkYXRlIG9ubHkgbmVlZHMgdG8gdXBkYXRlIHRoZSBib3Vu
ZHMgb2YgdGhlIGxheWVyLgogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChjb250ZW50Qm91bmRz
KTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMpOworICAgIGxheWVy
LT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcywgbm9PY2NsdXNpb24pOwogICAgIGxheWVy
LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwogICAgIEVYUEVDVF9GTE9B
VF9SRUNUX0VRKEZsb2F0UmVjdChsYXllckJvdW5kcyksIGxheWVyLT51cGRhdGVSZWN0KCkpOwog
CiAgICAgLy8gUGFydGlhbCByZS1wYWludCBzaG91bGQgYWxzbyBiZSByZXByZXNlbnRlZCBieSB0
aGUgdXBkYXRlUmVjdCBpbiBsYXllciBzcGFjZSwgbm90IGNvbnRlbnQgc3BhY2UuCiAgICAgSW50
UmVjdCBwYXJ0aWFsRGFtYWdlKDMwLCAxMDAsIDEwLCAxMCk7CiAgICAgbGF5ZXItPmludmFsaWRh
dGVSZWN0KHBhcnRpYWxEYW1hZ2UpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVu
dEJvdW5kcyk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzLCBub09j
Y2x1c2lvbik7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRl
cik7CiAgICAgRVhQRUNUX0ZMT0FUX1JFQ1RfRVEoRmxvYXRSZWN0KDQ1LCA4MCwgMTUsIDgpLCBs
YXllci0+dXBkYXRlUmVjdCgpKTsKIH0KQEAgLTQ4MCw2ICs0OTgsNyBAQCBURVNUKFRpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QsIGxheWVyQWRkc1NlbGZUb09jY2x1ZGVkUmVnaW9uKQogICAgIC8vIFRo
ZSB0aWxlIHNpemUgaXMgMTAweDEwMCwgc28gdGhpcyBpbnZhbGlkYXRlcyBhbmQgdGhlbiBwYWlu
dHMgdHdvIHRpbGVzIGluIHZhcmlvdXMgd2F5cy4KIAogICAgIFJlZ2lvbiBvY2NsdWRlZDsKKyAg
ICBSZWdpb24gbm9PY2NsdXNpb247CiAgICAgSW50UmVjdCBjb250ZW50Qm91bmRzID0gSW50UmVj
dCgwLCAwLCAxMDAsIDIwMCk7CiAgICAgSW50UmVjdCB2aXNpYmxlQm91bmRzID0gSW50UmVjdCgw
LCAwLCAxMDAsIDE1MCk7CiAKQEAgLTQ5NCw3ICs1MTMsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QsIGxheWVyQWRkc1NlbGZUb09jY2x1ZGVkUmVnaW9uKQogICAgIC8vIElmIHRoZSBs
YXllciBpcyBvcGFxdWUgdGhlbiB0aGUgb2NjbHVkZWQgcmVnaW9uIHNob3VsZCBiZSB0aGUgd2hv
bGUgbGF5ZXIncyB2aXNpYmxlIHJlZ2lvbi4KICAgICBsYXllci0+c2V0T3BhcXVlKHRydWUpOwog
ICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChjb250ZW50Qm91bmRzKTsKLSAgICBsYXllci0+cHJl
cGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUo
Y29udGVudEJvdW5kcywgbm9PY2NsdXNpb24pOwogCiAgICAgb2NjbHVkZWQgPSBSZWdpb24oKTsK
ICAgICBsYXllci0+YWRkU2VsZlRvT2NjbHVkZWRTY3JlZW5TcGFjZShvY2NsdWRlZCk7CkBAIC01
MDQsNyArNTIzLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBsYXllckFkZHNTZWxm
VG9PY2NsdWRlZFJlZ2lvbikKICAgICAvLyBJZiB0aGUgbGF5ZXIgaXMgbm90IG9wYXF1ZSB0aGVu
IHRoZSBvY2NsdWRlZCByZWdpb24gc2hvdWxkIGJlIGVtcHR5LgogICAgIGxheWVyLT5zZXRPcGFx
dWUoZmFsc2UpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChjb250ZW50Qm91bmRzKTsKLSAg
ICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMpOworICAgIGxheWVyLT5wcmVw
YXJlVG9VcGRhdGUoY29udGVudEJvdW5kcywgbm9PY2NsdXNpb24pOwogCiAgICAgb2NjbHVkZWQg
PSBSZWdpb24oKTsKICAgICBsYXllci0+YWRkU2VsZlRvT2NjbHVkZWRTY3JlZW5TcGFjZShvY2Ns
dWRlZCk7CkBAIC01MTUsNyArNTM0LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBs
YXllckFkZHNTZWxmVG9PY2NsdWRlZFJlZ2lvbikKICAgICBJbnRSZWN0IG9wYXF1ZVBhaW50UmVj
dCA9IEludFJlY3QoMTAsIDEwLCA5MCwgMTkwKTsKICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVy
ZVVwZGF0ZXIoKS0+c2V0T3BhcXVlUGFpbnRSZWN0KG9wYXF1ZVBhaW50UmVjdCk7CiAgICAgbGF5
ZXItPmludmFsaWRhdGVSZWN0KGNvbnRlbnRCb3VuZHMpOwotICAgIGxheWVyLT5wcmVwYXJlVG9V
cGRhdGUoY29udGVudEJvdW5kcyk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50
Qm91bmRzLCBub09jY2x1c2lvbik7CiAKICAgICBvY2NsdWRlZCA9IFJlZ2lvbigpOwogICAgIGxh
eWVyLT5hZGRTZWxmVG9PY2NsdWRlZFNjcmVlblNwYWNlKG9jY2x1ZGVkKTsKQEAgLTUyNCw3ICs1
NDMsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGxheWVyQWRkc1NlbGZUb09jY2x1
ZGVkUmVnaW9uKQogCiAgICAgLy8gSWYgd2UgcGFpbnQgYWdhaW4gd2l0aG91dCBpbnZhbGlkYXRp
bmcsIHRoZSBzYW1lIHN0dWZmIHNob3VsZCBiZSBvY2NsdWRlZC4KICAgICBsYXllci0+ZmFrZUxh
eWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0T3BhcXVlUGFpbnRSZWN0KEludFJlY3QoKSk7Ci0gICAg
bGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzKTsKKyAgICBsYXllci0+cHJlcGFy
ZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMsIG5vT2NjbHVzaW9uKTsKIAogICAgIG9jY2x1ZGVkID0g
UmVnaW9uKCk7CiAgICAgbGF5ZXItPmFkZFNlbGZUb09jY2x1ZGVkU2NyZWVuU3BhY2Uob2NjbHVk
ZWQpOwpAQCAtNTQxLDcgKzU2MCw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgbGF5
ZXJBZGRzU2VsZlRvT2NjbHVkZWRSZWdpb24pCiAgICAgc2NyZWVuU3BhY2VUcmFuc2Zvcm0gKj0g
dHJhbnNmb3JtOwogICAgIHNjcmVlblNwYWNlVHJhbnNmb3JtLnRyYW5zbGF0ZSgtY29udGVudEJv
dW5kcy53aWR0aCgpIC8gMi4wLCAtY29udGVudEJvdW5kcy5oZWlnaHQoKSAvIDIuMCk7CiAgICAg
bGF5ZXItPnNldFNjcmVlblNwYWNlVHJhbnNmb3JtKHNjcmVlblNwYWNlVHJhbnNmb3JtKTsKLSAg
ICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMpOworICAgIGxheWVyLT5wcmVw
YXJlVG9VcGRhdGUoY29udGVudEJvdW5kcywgbm9PY2NsdXNpb24pOwogCiAgICAgb2NjbHVkZWQg
PSBSZWdpb24oKTsKICAgICBsYXllci0+YWRkU2VsZlRvT2NjbHVkZWRTY3JlZW5TcGFjZShvY2Ns
dWRlZCk7CkBAIC01NTYsNyArNTc1LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBs
YXllckFkZHNTZWxmVG9PY2NsdWRlZFJlZ2lvbikKICAgICBzY3JlZW5TcGFjZVRyYW5zZm9ybSAq
PSB0cmFuc2Zvcm07CiAgICAgc2NyZWVuU3BhY2VUcmFuc2Zvcm0udHJhbnNsYXRlKC1jb250ZW50
Qm91bmRzLndpZHRoKCkgLyAyLjAsIC1jb250ZW50Qm91bmRzLmhlaWdodCgpIC8gMi4wKTsKICAg
ICBsYXllci0+c2V0U2NyZWVuU3BhY2VUcmFuc2Zvcm0oc2NyZWVuU3BhY2VUcmFuc2Zvcm0pOwot
ICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcyk7CisgICAgbGF5ZXItPnBy
ZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzLCBub09jY2x1c2lvbik7CiAKICAgICBvY2NsdWRl
ZCA9IFJlZ2lvbigpOwogICAgIGxheWVyLT5hZGRTZWxmVG9PY2NsdWRlZFNjcmVlblNwYWNlKG9j
Y2x1ZGVkKTsKQEAgLTU3MCwxMyArNTg5LDE4OCBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRl
c3QsIHJlc2l6ZVRvU21hbGxlcikKIHsKICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1
cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg2MCoxMDI0KjEwMjQsIDYwKjEwMjQq
MTAyNCwgMTAyNCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0g
YWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkp
KTsKKyAgICBSZWdpb24gbm9PY2NsdXNpb247CiAKICAgICBsYXllci0+c2V0Qm91bmRzKEludFNp
emUoNzAwLCA3MDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA3
MDAsIDcwMCkpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA3MDAs
IDcwMCkpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA3MDAsIDcw
MCksIG5vT2NjbHVzaW9uKTsKIAogICAgIGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSgyMDAsIDIw
MCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDIwMCwgMjAwKSk7
CiB9CiAKK1RFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aG91dE9j
Y2x1c2lvbikKK3sKKyAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0g
VGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOwor
ICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBG
YWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CisgICAgUmVnaW9u
IG9jY2x1ZGVkOworCisgICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLCBzbyB0aGlzIGlu
dmFsaWRhdGVzIGFuZCB0aGVuIHBhaW50cyB0d28gdGlsZXMuCisgICAgbGF5ZXItPnNldEJvdW5k
cyhJbnRTaXplKDEwMCwgMjAwKSk7CisKKyAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVj
dCgwLCAwLCAxMDAsIDIwMCkpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgw
LCAwLCAxMDAsIDIwMCksIG9jY2x1ZGVkKTsKKyAgICBFWFBFQ1RfRVEoMiwgbGF5ZXItPmZha2VM
YXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7Cit9CisKK1RFU1QoVGls
ZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbikKK3sKKyAgICBP
d25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNy
ZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOworICAgIFJlZlB0cjxGYWtlVGls
ZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9t
aXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CisgICAgUmVnaW9uIG9jY2x1ZGVkOworCisgICAg
Ly8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLgorCisgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRT
aXplKDYwMCwgNjAwKSk7CisKKyAgICBvY2NsdWRlZCA9IEludFJlY3QoMjAwLCAyMDAsIDMwMCwg
MTAwKTsKKyAgICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KEludFBvaW50KCks
IGxheWVyLT5ib3VuZHMoKSkpOworICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAs
IDAsIDYwMCwgNjAwKSk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAs
IDYwMCwgNjAwKSwgb2NjbHVkZWQpOworICAgIEVYUEVDVF9FUSgzNi0zLCBsYXllci0+ZmFrZUxh
eWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKKworICAgIGxheWVyLT5m
YWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVSZWN0Q291bnQoKTsKKworICAg
IG9jY2x1ZGVkID0gSW50UmVjdCgyNTAsIDIwMCwgMzAwLCAxMDApOworICAgIGxheWVyLT5pbnZh
bGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CisgICAgbGF5ZXItPnByZXBhcmVU
b1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgb2NjbHVkZWQpOworICAgIEVYUEVDVF9F
USgzNi0yLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3Vu
dCgpKTsKKworICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBh
cmVSZWN0Q291bnQoKTsKKworICAgIG9jY2x1ZGVkID0gSW50UmVjdCgyNTAsIDI1MCwgMzAwLCAx
MDApOworICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7
CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgb2Nj
bHVkZWQpOworICAgIEVYUEVDVF9FUSgzNiwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVy
KCktPnByZXBhcmVSZWN0Q291bnQoKSk7Cit9CisKK1RFU1QoVGlsZWRMYXllckNocm9taXVtVGVz
dCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFZpc2libGl0eUNvbnN0cmFpbnRzKQorewor
ICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdl
cjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAyKjEwMjQqMTAyNCwgMTAyNCk7CisgICAgUmVmUHRyPEZh
a2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVy
Q2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKKyAgICBSZWdpb24gb2NjbHVkZWQ7CisK
KyAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAuCisKKyAgICBsYXllci0+c2V0Qm91bmRz
KEludFNpemUoNjAwLCA2MDApKTsKKworICAgIC8vIFRoZSBwYXJ0aWFsbHkgb2NjbHVkZWQgdGls
ZXMgKGJ5IHRoZSAxNTAgb2NjbHVzaW9uIGhlaWdodCkgYXJlIHZpc2libGUgYmV5b25kIHRoZSBv
Y2NsdXNpb24sIHNvIG5vdCBjdWxsZWQuCisgICAgb2NjbHVkZWQgPSBJbnRSZWN0KDIwMCwgMjAw
LCAzMDAsIDE1MCk7CisgICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdCgwLCAw
LCA2MDAsIDM2MCkpOworICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYw
MCwgNjAwKSk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwg
NjAwKSwgb2NjbHVkZWQpOworICAgIEVYUEVDVF9FUSgzNi0zLCBsYXllci0+ZmFrZUxheWVyVGV4
dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKKworICAgIGxheWVyLT5mYWtlTGF5
ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVSZWN0Q291bnQoKTsKKworICAgIC8vIE5v
dyB0aGUgdmlzaWJsZSByZWdpb24gc3RvcHMgYXQgdGhlIGVkZ2Ugb2YgdGhlIG9jY2x1c2lvbiBz
byB0aGUgcGFydGx5IHZpc2libGUgdGlsZXMgYmVjb21lIGZ1bGx5IG9jY2x1ZGVkLgorICAgIG9j
Y2x1ZGVkID0gSW50UmVjdCgyMDAsIDIwMCwgMzAwLCAxNTApOworICAgIGxheWVyLT5zZXRWaXNp
YmxlTGF5ZXJSZWN0KEludFJlY3QoMCwgMCwgNjAwLCAzNTApKTsKKyAgICBsYXllci0+aW52YWxp
ZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOworICAgIGxheWVyLT5wcmVwYXJlVG9V
cGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksIG9jY2x1ZGVkKTsKKyAgICBFWFBFQ1RfRVEo
MzYtNiwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQo
KSk7CisKKyAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQcmVwYXJl
UmVjdENvdW50KCk7CisKKyAgICAvLyBOb3cgdGhlIHZpc2libGUgcmVnaW9uIGlzIGV2ZW4gc21h
bGxlciB0aGFuIHRoZSBvY2NsdXNpb24sIGl0IHNob3VsZCBoYXZlIHRoZSBzYW1lIHJlc3VsdC4K
KyAgICBvY2NsdWRlZCA9IEludFJlY3QoMjAwLCAyMDAsIDMwMCwgMTUwKTsKKyAgICBsYXllci0+
c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgMzQwKSk7CisgICAgbGF5ZXIt
PmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKKyAgICBsYXllci0+cHJl
cGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCBvY2NsdWRlZCk7CisgICAgRVhQ
RUNUX0VRKDM2LTYsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVj
dENvdW50KCkpOworfQorCitURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzTm90UGFp
bnRlZFdpdGhvdXRJbnZhbGlkYXRpb24pCit7CisgICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0
ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDIqMTAy
NCoxMDI0LCAxMDI0KTsKKyAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIg
PSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQo
KSkpOworICAgIFJlZ2lvbiBvY2NsdWRlZDsKKworICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAw
eDEwMC4KKworICAgIGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSg2MDAsIDYwMCkpOworCisgICAg
b2NjbHVkZWQgPSBJbnRSZWN0KDIwMCwgMjAwLCAzMDAsIDEwMCk7CisgICAgbGF5ZXItPnNldFZp
c2libGVMYXllclJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOworICAgIGxheWVyLT5pbnZh
bGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CisgICAgbGF5ZXItPnByZXBhcmVU
b1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgb2NjbHVkZWQpOworICAgIEVYUEVDVF9F
USgzNi0zLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3Vu
dCgpKTsKKworICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBh
cmVSZWN0Q291bnQoKTsKKworICAgIC8vIFJlcGFpbnQgd2l0aG91dCBtYXJraW5nIGl0IGRpcnR5
LgorICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksIG9j
Y2x1ZGVkKTsKKyAgICBFWFBFQ1RfRVEoMCwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVy
KCktPnByZXBhcmVSZWN0Q291bnQoKSk7Cit9CisKK1RFU1QoVGlsZWRMYXllckNocm9taXVtVGVz
dCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFRyYW5zZm9ybXMpCit7CisgICAgT3duUHRy
PFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUo
NCoxMDI0KjEwMjQsIDIqMTAyNCoxMDI0LCAxMDI0KTsKKyAgICBSZWZQdHI8RmFrZVRpbGVkTGF5
ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0
ZXh0dXJlTWFuYWdlci5nZXQoKSkpOworICAgIFJlZ2lvbiBvY2NsdWRlZDsKKworICAgIC8vIFRo
ZSB0aWxlIHNpemUgaXMgMTAweDEwMC4KKworICAgIC8vIFRoaXMgbWFrZXMgc3VyZSB0aGUgcGFp
bnRpbmcgd29ya3Mgd2hlbiB0aGUgb2NjbHVkZWQgcmVnaW9uIChpbiBzY3JlZW4gc3BhY2UpCisg
ICAgLy8gaXMgdHJhbnNmb3JtZWQgZGlmZmVyZW50bHkgdGhhbiB0aGUgbGF5ZXIuCisgICAgbGF5
ZXItPnNldEJvdW5kcyhJbnRTaXplKDYwMCwgNjAwKSk7CisgICAgVHJhbnNmb3JtYXRpb25NYXRy
aXggc2NyZWVuVHJhbnNmb3JtOworICAgIHNjcmVlblRyYW5zZm9ybS5zY2FsZSgwLjUpOworICAg
IGxheWVyLT5zZXRTY3JlZW5TcGFjZVRyYW5zZm9ybShzY3JlZW5UcmFuc2Zvcm0pOworCisgICAg
b2NjbHVkZWQgPSBJbnRSZWN0KDEwMCwgMTAwLCAxNTAsIDUwKTsKKyAgICBsYXllci0+c2V0Vmlz
aWJsZUxheWVyUmVjdChJbnRSZWN0KEludFBvaW50KCksIGxheWVyLT5ib3VuZHMoKSkpOworICAg
IGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CisgICAgbGF5
ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgb2NjbHVkZWQpOwor
ICAgIEVYUEVDVF9FUSgzNi0zLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJl
cGFyZVJlY3RDb3VudCgpKTsKK30KKworVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxl
c1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kU2NhbGluZykKK3sKKyAgICBPd25QdHI8VGV4dHVyZU1h
bmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAy
NCwgMioxMDI0KjEwMjQsIDEwMjQpOworICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVt
PiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5h
Z2VyLmdldCgpKSk7CisgICAgUmVnaW9uIG9jY2x1ZGVkOworCisgICAgLy8gVGhlIHRpbGUgc2l6
ZSBpcyAxMDB4MTAwLgorCisgICAgLy8gVGhpcyBtYWtlcyBzdXJlIHRoZSBwYWludGluZyB3b3Jr
cyB3aGVuIHRoZSBjb250ZW50IHNwYWNlIGlzIHNjYWxlZCB0bworICAgIC8vIGEgZGlmZmVyZW50
IGxheWVyIHNwYWNlLiBJbiB0aGlzIGNhc2UgdGlsZXMgYXJlIHNjYWxlZCB0byBiZSAyMDB4MjAw
CisgICAgLy8gcGl4ZWxzLCB3aGljaCBtZWFucyBub25lIHNob3VsZCBiZSBvY2NsdWRlZC4KKyAg
ICBsYXllci0+c2V0Q29udGVudHNTY2FsZSgwLjUpOworICAgIGxheWVyLT5zZXRCb3VuZHMoSW50
U2l6ZSg2MDAsIDYwMCkpOworCisgICAgb2NjbHVkZWQgPSBJbnRSZWN0KDIwMCwgMjAwLCAzMDAs
IDEwMCk7CisgICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdChJbnRQb2ludCgp
LCBsYXllci0+Ym91bmRzKCkpKTsKKyAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgw
LCAwLCA2MDAsIDYwMCkpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAw
LCA2MDAsIDYwMCksIG9jY2x1ZGVkKTsKKyAgICAvLyBUaGUgY29udGVudCBpcyBoYWxmIHRoZSBz
aXplIG9mIHRoZSBsYXllciAoc28gdGhlIG51bWJlciBvZiB0aWxlcyBpcyBmZXdlcikuCisgICAg
Ly8gSW4gdGhpcyBjYXNlLCB0aGUgY29udGVudCBpcyAzMDB4MzAwLCBhbmQgc2luY2UgdGhlIHRp
bGUgc2l6ZSBpcyAxMDAsIHRoZQorICAgIC8vIG51bWJlciBvZiB0aWxlcyAzeDMuCisgICAgRVhQ
RUNUX0VRKDksIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENv
dW50KCkpOworCisgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyUHJl
cGFyZVJlY3RDb3VudCgpOworCisgICAgLy8gVGhpcyBtYWtlcyBzdXJlIHRoZSBwYWludGluZyB3
b3JrcyB3aGVuIHRoZSBjb250ZW50IHNwYWNlIGlzIHNjYWxlZCB0bworICAgIC8vIGEgZGlmZmVy
ZW50IGxheWVyIHNwYWNlLiBJbiB0aGlzIGNhc2UgdGhlIG9jY2x1ZGVkIHJlZ2lvbiBjYXRjaGVz
IHRoZQorICAgIC8vIGJsb3duIHVwIHRpbGVzLgorICAgIG9jY2x1ZGVkID0gSW50UmVjdCgyMDAs
IDIwMCwgMzAwLCAyMDApOworICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3Qo
SW50UG9pbnQoKSwgbGF5ZXItPmJvdW5kcygpKSk7CisgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0
KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKElu
dFJlY3QoMCwgMCwgNjAwLCA2MDApLCBvY2NsdWRlZCk7CisgICAgRVhQRUNUX0VRKDktMSwgbGF5
ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CisKKyAg
ICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQcmVwYXJlUmVjdENvdW50
KCk7CisKKyAgICAvLyBUaGlzIG1ha2VzIHN1cmUgY29udGVudCBzY2FsaW5nIGFuZCB0cmFuc2Zv
cm1zIHdvcmsgdG9nZXRoZXIuCisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggc2NyZWVuVHJhbnNm
b3JtOworICAgIHNjcmVlblRyYW5zZm9ybS5zY2FsZSgwLjUpOworICAgIGxheWVyLT5zZXRTY3Jl
ZW5TcGFjZVRyYW5zZm9ybShzY3JlZW5UcmFuc2Zvcm0pOworCisgICAgb2NjbHVkZWQgPSBJbnRS
ZWN0KDEwMCwgMTAwLCAxNTAsIDEwMCk7CisgICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3Qo
SW50UmVjdChJbnRQb2ludCgpLCBsYXllci0+Ym91bmRzKCkpKTsKKyAgICBsYXllci0+aW52YWxp
ZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOworICAgIGxheWVyLT5wcmVwYXJlVG9V
cGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksIG9jY2x1ZGVkKTsKKyAgICBFWFBFQ1RfRVEo
OS0xLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgp
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129954</attachid>
            <date>2012-03-02 13:59:16 -0800</date>
            <delta_ts>2012-03-07 07:33:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76838-20120302165914.patch</filename>
            <type>text/plain</type>
            <size>58056</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5NTgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWE0NTRiYjQ5NzYyMjZk
NTU4MTM1YWU1NDg4ZmFjZDFjNWJiNTUwMy4uMzI4MGY5YmNhZDE2NmU1NDAxYmYyZGIwYjI0YjFi
ZGZmZmI3MTY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTAzLTAyICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQ3Vs
bCBvY2NsdWRlZCB0aWxlcyBkdXJpbmcgcGFpbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc2ODM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVXNpbmcgQ0NPY2NsdXNpb25UcmFja2VyIGluc3RlYWQgb2Yg
dGhlIG9sZCBjdXN0b20gcGFpbnQgb2NjbHVzaW9uCisgICAgICAgIHRyYWNraW5nLiBTdG9wcyBw
YWludGluZyB0aWxlcyB0aGF0IGFyZSBmdWxseSBvY2NsdWRlZC4KKworICAgICAgICBDQ09jY2x1
c2lvblRyYWNrZXIgb25seSB1c2VzIExheWVyOjpvcGFxdWUoKSBmb3IgZGV0ZXJtaW5pbmcKKyAg
ICAgICAgb2NjbHVzaW9uIHNvIGZhci4gVGhlIExheWVyOjphZGRTZWxmVG9PY2NsdWRlZFJlZ2lv
biBpcyBiZWluZworICAgICAgICByZXBsYWNlZCBieSBhIHN1cGVyaW9yIG1ldGhvZCBpbiBDQ09j
Y2x1c2lvblRyYWNrZXIgdGhhdCB3aWxsCisgICAgICAgIHdvcmsgZm9yIGJvdGggdGhyZWFkcywg
c28gcmVtb3ZpbmcgdGhhdCBzdXBwb3J0IGhlcmUuCisKKyAgICAgICAgVW5pdCB0ZXN0OiBUaWxl
ZExheWVyQ2hyb21pdW1UZXN0LmNwcAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRMYXllckNocm9taXVtOjppZGxlUGFpbnRDb250ZW50c0lmRGlydHkpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmg6Cisg
ICAgICAgIChDb250ZW50TGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6
OkxheWVyQ2hyb21pdW06OmlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSk6CisgICAgICAgIChMYXll
ckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExh
eWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpj
b250ZW50VG9MYXllclRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hy
b21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5
ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5
ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWRsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmg6CisgICAgICAgIChUaWxlZExheWVy
Q2hyb21pdW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnBhaW50
Q29udGVudHNJZkRpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6cGFp
bnRMYXllckNvbnRlbnRzKToKKwogMjAxMi0wMy0wMiAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3Jt
YW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dTdHJlYW1lcl0gbWVkaWEvbWVkaWEtY2FuLXBs
YXktZmxhYy1hdWRpby5odG1sIGZhaWxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGRm
MWMyNWVkNDk2NWI3YjBhZWE4YzM4ZTA4NGE4OGFhODJlODgzMDcuLmFjZmM1MjU0MTAxNmFiMmM4
YTVmZmMwZjhlYTA3NjkzZDBhYmY5YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjUgQEAKKzIwMTItMDMtMDIgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBDdWxsIG9jY2x1ZGVkIHRpbGVzIGR1cmluZyBwYWlu
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzY4MzgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHRlc3Rz
L0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJv
bWl1bVdpdGhVcGRhdGVUcmFja2luZzo6aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KToKKyAgICAg
ICAgKiB0ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKFdURjo6RmFr
ZUxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnByZXBhcmVSZWN0KToKKyAgICAgICAgKFdU
Rjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OkZha2VMYXllclRleHR1cmVVcGRhdGVyKToKKyAg
ICAgICAgKEZha2VMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKFdURjo6RmFrZUxheWVy
VGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVSZWN0Q291bnQpOgorICAgICAgICAoV1RGOjpGYWtlTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6Y2xlYXJQcmVwYXJlUmVjdENvdW50KToKKyAgICAgICAgKFdURjo6
RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVSZWN0KToKKyAgICAgICAgKFdURjo6RmFr
ZVRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKToKKyAgICAgICAgKFdURjo6RmFr
ZVRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWRsZSk6CisgICAgICAgIChXVEY6
OkZha2VUaWxlZExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KToKKyAgICAgICAg
KFdURjo6VEVTVCk6CisgICAgICAgIChXVEYpOgorCiAyMDEyLTAzLTAxICBDYWlvIE1hcmNlbG8g
ZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+CiAKICAgICAg
ICAgTWFrZSBwYXJzZXIgY29kZSBub3QgZGVwZW5kIG9uIE5hbWVkTm9kZU1hcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVy
Q2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q29udGVudExheWVyQ2hyb21pdW0uY3BwCmluZGV4IGFhN2ZiNWNmNDZiMDYyNTdmZjViZjIzNWZi
M2JmMDc4NDUzNTQ5OWYuLjA1Zjc0MjcxYTE3ODg0NzFhZmRiN2Y5YTA3MThhYjE2ZDcxNmE3N2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Nv
bnRlbnRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAg
Ym9vbCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6ZHJhd3NDb250ZW50KCkgY29uc3QKICAgICByZXR1
cm4gVGlsZWRMYXllckNocm9taXVtOjpkcmF3c0NvbnRlbnQoKSAmJiBtX2RlbGVnYXRlOwogfQog
Ci12b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBS
ZWdpb24mIC8qIG9jY2x1ZGVkU2NyZWVuU3BhY2UgKi8pCit2b2lkIENvbnRlbnRMYXllckNocm9t
aXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVuU3Bh
Y2UpCiB7CiAgICAgdXBkYXRlVGlsZVNpemVBbmRUaWxpbmdPcHRpb24oKTsKICAgICBjcmVhdGVU
ZXh0dXJlVXBkYXRlcklmTmVlZGVkKCk7CkBAIC0xMDUsMTEgKzEwNSwxMSBAQCB2b2lkIENvbnRl
bnRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIC8qIG9j
Y2x1ZGVkU2NyZWVuUwogICAgIGlmIChkcmF3c0NvbnRlbnQoKSkKICAgICAgICAgbGF5ZXJSZWN0
ID0gdmlzaWJsZUxheWVyUmVjdCgpOwogCi0gICAgcHJlcGFyZVRvVXBkYXRlKGxheWVyUmVjdCk7
CisgICAgcHJlcGFyZVRvVXBkYXRlKGxheWVyUmVjdCwgb2NjbHVkZWRTY3JlZW5TcGFjZSk7CiAg
ICAgbV9uZWVkc0Rpc3BsYXkgPSBmYWxzZTsKIH0KIAotdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1
bTo6aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KCkKK3ZvaWQgQ29udGVudExheWVyQ2hyb21pdW06
OmlkbGVQYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVuU3Bh
Y2UpCiB7CiAgICAgaWYgKCFkcmF3c0NvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTE4
LDcgKzExOCw3IEBAIHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OmlkbGVQYWludENvbnRlbnRz
SWZEaXJ0eSgpCiAgICAgaWYgKGxheWVyUmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIHByZXBhcmVUb1VwZGF0ZUlkbGUobGF5ZXJSZWN0KTsKKyAgICBwcmVwYXJlVG9VcGRh
dGVJZGxlKGxheWVyUmVjdCwgb2NjbHVkZWRTY3JlZW5TcGFjZSk7CiAgICAgaWYgKG5lZWRzSWRs
ZVBhaW50KGxheWVyUmVjdCkpCiAgICAgICAgIHNldE5lZWRzQ29tbWl0KCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5
ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q29udGVudExheWVyQ2hyb21pdW0uaAppbmRleCAzZTg2ODZkMGEwZGJjZTJjMWU4YzYxYjYwMTgx
NDAyNjM3NjZiZjIzLi5mYTU5MDFlMmFkMmQ5NTAyNmE2MjAxOGM4Y2Q2MWU2ODRlNzQyYWRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250
ZW50TGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0OwogICAgIHZpcnR1YWwg
dm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVuU3Bh
Y2UpOwotICAgIHZpcnR1YWwgdm9pZCBpZGxlUGFpbnRDb250ZW50c0lmRGlydHkoKTsKKyAgICB2
aXJ0dWFsIHZvaWQgaWRsZVBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgb2NjbHVk
ZWRTY3JlZW5TcGFjZSk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0T3BhcXVlKGJvb2wpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFn
ZUxheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcAppbmRleCAxZTQ0ZTg3MDIzZmVkNWY0NjkzNWRm
N2MzZmJkMzYyZTU0YWIwNDI5Li42MTFhYjJhNmE2NTgwNTM5NTZlOGI4ZWQzMjgwZGZiMWIwMGRi
MDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTE1OCw3ICsxNTgsNyBA
QCB2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHMoSW1hZ2UqIGNvbnRlbnRzKQog
ICAgIHNldE5lZWRzRGlzcGxheSgpOwogfQogCi12b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6cGFp
bnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uJiAvKiBvY2NsdWRlZFNjcmVlblNwYWNlICov
KQordm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJl
Z2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSkKIHsKICAgICBjcmVhdGVUZXh0dXJlVXBkYXRlcklm
TmVlZGVkKCk7CiAgICAgaWYgKG1fbmVlZHNEaXNwbGF5KSB7CkBAIC0xNjgsNyArMTY4LDcgQEAg
dm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lv
biYgLyogb2NjbHVkZWRTY3JlZW5TcGEKICAgICAgICAgbV9uZWVkc0Rpc3BsYXkgPSBmYWxzZTsK
ICAgICB9CiAKLSAgICBwcmVwYXJlVG9VcGRhdGUodmlzaWJsZUxheWVyUmVjdCgpKTsKKyAgICBw
cmVwYXJlVG9VcGRhdGUodmlzaWJsZUxheWVyUmVjdCgpLCBvY2NsdWRlZFNjcmVlblNwYWNlKTsK
IH0KIAogdm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OmNyZWF0ZVRleHR1cmVVcGRhdGVySWZOZWVk
ZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllckNocm9taXVtLmNwcAppbmRleCBiYTU5ZDllNTQ3ODllMGM1N2E1NjEyM2Zj
YjAwYTRkN2FhMjA5MDdmLi4yMzk4ODkwYzVhYTRmNTRlYWRmNjQyOThlYTEzZmE1ZTE5OTFjYWNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllckNocm9taXVtLmNwcApAQCAtNTc4LDM1ICs1NzgsNiBAQCB2b2lkIExheWVy
Q2hyb21pdW06OnNldENvbnRlbnRzU2NhbGUoZmxvYXQgY29udGVudHNTY2FsZSkKICAgICBzZXRO
ZWVkc0Rpc3BsYXkoKTsKIH0KIAotVHJhbnNmb3JtYXRpb25NYXRyaXggTGF5ZXJDaHJvbWl1bTo6
Y29udGVudFRvU2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSBjb25zdAotewotICAgIEludFNpemUgYm91
bmRzSW5MYXllclNwYWNlID0gYm91bmRzKCk7Ci0gICAgSW50U2l6ZSBib3VuZHNJbkNvbnRlbnRT
cGFjZSA9IGNvbnRlbnRCb3VuZHMoKTsKLQotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5z
Zm9ybSA9IHNjcmVlblNwYWNlVHJhbnNmb3JtKCk7Ci0KLSAgICAvLyBTY2FsZSBmcm9tIGNvbnRl
bnQgc3BhY2UgdG8gbGF5ZXIgc3BhY2UKLSAgICB0cmFuc2Zvcm0uc2NhbGVOb25Vbmlmb3JtKGJv
dW5kc0luTGF5ZXJTcGFjZS53aWR0aCgpIC8gc3RhdGljX2Nhc3Q8ZG91YmxlPihib3VuZHNJbkNv
bnRlbnRTcGFjZS53aWR0aCgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5k
c0luTGF5ZXJTcGFjZS5oZWlnaHQoKSAvIHN0YXRpY19jYXN0PGRvdWJsZT4oYm91bmRzSW5Db250
ZW50U3BhY2UuaGVpZ2h0KCkpKTsKLQotICAgIHJldHVybiB0cmFuc2Zvcm07Ci19Ci0KLXZvaWQg
TGF5ZXJDaHJvbWl1bTo6YWRkU2VsZlRvT2NjbHVkZWRTY3JlZW5TcGFjZShSZWdpb24mIG9jY2x1
ZGVkU2NyZWVuU3BhY2UpCi17Ci0gICAgaWYgKCFvcGFxdWUoKSB8fCBkcmF3T3BhY2l0eSgpICE9
IDEgfHwgIWlzUGFpbnRlZEF4aXNBbGlnbmVkSW5TY3JlZW4oKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgRmxvYXRSZWN0IHRhcmdldFJlY3QgPSBjb250ZW50VG9TY3JlZW5TcGFjZVRyYW5zZm9y
bSgpLm1hcFJlY3QoRmxvYXRSZWN0KHZpc2libGVMYXllclJlY3QoKSkpOwotICAgIG9jY2x1ZGVk
U2NyZWVuU3BhY2UudW5pdGUoZW5jbG9zZWRJbnRSZWN0KHRhcmdldFJlY3QpKTsKLX0KLQotYm9v
bCBMYXllckNocm9taXVtOjppc1BhaW50ZWRBeGlzQWxpZ25lZEluU2NyZWVuKCkgY29uc3QKLXsK
LSAgICBGbG9hdFF1YWQgcXVhZCA9IGNvbnRlbnRUb1NjcmVlblNwYWNlVHJhbnNmb3JtKCkubWFw
UXVhZChGbG9hdFF1YWQodmlzaWJsZUxheWVyUmVjdCgpKSk7Ci0gICAgcmV0dXJuIHF1YWQuaXNS
ZWN0aWxpbmVhcigpOwotfQotCiB2b2lkIExheWVyQ2hyb21pdW06OmNyZWF0ZVJlbmRlclN1cmZh
Y2UoKQogewogICAgIEFTU0VSVCghbV9yZW5kZXJTdXJmYWNlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaApp
bmRleCBhNTA4YzllNjgzMmY0MTcwYjAwY2U1MWI2NTJjZGM4NDY5NjBmNmI4Li4wY2UzYmEwZmEx
OTY0MTU2NDEzNmMxY2FiODg0MjdiYWIxODhkMzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC0x
NjEsNyArMTYxLDcgQEAgcHVibGljOgogICAgIC8vIFRoZXNlIG1ldGhvZHMgdHlwaWNhbGx5IG5l
ZWQgdG8gYmUgb3ZlcndyaXR0ZW4gYnkgZGVyaXZlZCBjbGFzc2VzLgogICAgIHZpcnR1YWwgYm9v
bCBkcmF3c0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2lzRHJhd2FibGU7IH0KICAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uJiAvKiBvY2NsdWRlZFNj
cmVlblNwYWNlICovKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgaWRsZVBhaW50Q29udGVudHNJZkRp
cnR5KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGlkbGVQYWludENvbnRlbnRzSWZEaXJ0eShjb25z
dCBSZWdpb24mIC8qIG9jY2x1ZGVkU2NyZWVuU3BhY2UgKi8pIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJl
VXBkYXRlciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRJc01hc2soYm9vbCkgeyB9CiAgICAg
dmlydHVhbCB2b2lkIHVucmVzZXJ2ZUNvbnRlbnRzVGV4dHVyZSgpIHsgfQpAQCAtMjAwLDExICsy
MDAsNiBAQCBwdWJsaWM6CiAgICAgZmxvYXQgY29udGVudHNTY2FsZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY29udGVudHNTY2FsZTsgfQogICAgIHZvaWQgc2V0Q29udGVudHNTY2FsZShmbG9hdCk7CiAK
LSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjb250ZW50VG9TY3JlZW5TcGFjZVRyYW5zZm9ybSgp
IGNvbnN0OwotCi0gICAgLy8gQWRkcyBhbnkgb3BhcXVlIHZpc2libGUgcGl4ZWxzIHRvIHRoZSBv
Y2NsdWRlZCByZWdpb24uCi0gICAgdmlydHVhbCB2b2lkIGFkZFNlbGZUb09jY2x1ZGVkU2NyZWVu
U3BhY2UoUmVnaW9uJiBvY2NsdWRlZFNjcmVlblNwYWNlKTsKLQogICAgIC8vIFJldHVybnMgdHJ1
ZSBpZiBhbnkgb2YgdGhlIGxheWVyJ3MgZGVzY2VuZGFudHMgaGFzIGNvbnRlbnQgdG8gZHJhdy4K
ICAgICBib29sIGRlc2NlbmRhbnREcmF3c0NvbnRlbnQoKTsKIApAQCAtMjM5LDggKzIzNCw2IEBA
IHByb3RlY3RlZDoKIAogICAgIExheWVyQ2hyb21pdW0oKTsKIAotICAgIGJvb2wgaXNQYWludGVk
QXhpc0FsaWduZWRJblNjcmVlbigpIGNvbnN0OwotCiAgICAgdm9pZCBzZXROZWVkc0NvbW1pdCgp
OwogCiAgICAgLy8gVGhpcyBmbGFnIGlzIHNldCB3aGVuIGxheWVyIG5lZWQgcmVwYWludGluZy91
cGRhdGluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCmluZGV4IGViYzlkNTVhYWY1
YzIyODJlZTZmNDJhOGQyM2E5YTk3ZmE3YzIzMTUuLjIzMTIxYmM3NTQ3YmZmMjU4NTdmMDMxNGM5
NzUwYzkxMTliZGIwOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcApAQCAtMzUs
NiArMzUsNyBAQAogI2luY2x1ZGUgIk1hdGhFeHRyYXMuaCIKICNpbmNsdWRlICJSZWdpb24uaCIK
ICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCisjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgogI2luY2x1
ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgog
I2luY2x1ZGUgImNjL0NDVGlsZWRMYXllckltcGwuaCIKQEAgLTM5NywxMCArMzk4LDIzIEBAIGJv
b2wgVGlsZWRMYXllckNocm9taXVtOjp0aWxlTmVlZHNCdWZmZXJlZFVwZGF0ZShVcGRhdGFibGVU
aWxlKiB0aWxlKQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFRpbGVkTGF5ZXJDaHJvbWl1
bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50
IHJpZ2h0LCBpbnQgYm90dG9tKQorLy8gRklYTUU6IFRoaXMgZ2V0cyByb2xsZWQgaW50byBDQ09j
Y2x1c2lvblRyYWNrZXIgd2hlbiB3ZSBzdG9wIHBhc3NpbmcgYXJvdW5kIFJlZ2lvbiBvYmplY3Rz
Lgorc3RhdGljIGlubGluZSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjb250ZW50VG9MYXllclRyYW5z
Zm9ybShjb25zdCBJbnRTaXplJiBib3VuZHNJbkxheWVyU3BhY2UsIGNvbnN0IEludFNpemUmIGJv
dW5kc0luQ29udGVudFNwYWNlKQoreworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9y
bTsKKyAgICAvLyBTY2FsZSBmcm9tIGNvbnRlbnQgc3BhY2UgdG8gbGF5ZXIgc3BhY2UKKyAgICB0
cmFuc2Zvcm0uc2NhbGVOb25Vbmlmb3JtKGJvdW5kc0luTGF5ZXJTcGFjZS53aWR0aCgpIC8gc3Rh
dGljX2Nhc3Q8ZG91YmxlPihib3VuZHNJbkNvbnRlbnRTcGFjZS53aWR0aCgpKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvdW5kc0luTGF5ZXJTcGFjZS5oZWlnaHQoKSAvIHN0YXRp
Y19jYXN0PGRvdWJsZT4oYm91bmRzSW5Db250ZW50U3BhY2UuaGVpZ2h0KCkpKTsKKyAgICByZXR1
cm4gdHJhbnNmb3JtOworfQorCit2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBk
YXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50IHJpZ2h0LCBpbnQgYm90
dG9tLCBjb25zdCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVuU3BhY2UpCiB7CiAgICAgY3JlYXRlVGV4
dHVyZVVwZGF0ZXJJZk5lZWRlZCgpOwogCisgICAgLy8gVGlsZXMgYXJlIGluIHRoZSBsYXllcidz
IGNvbnRlbnQgc3BhY2UsIHRoZSBvY2NsdWRlZCByZWdpb24gaXMgaW4gc2NyZWVuIHNwYWNlLgor
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNvbnRlbnRUb1NjcmVlblNwYWNlID0gc2NyZWVuU3Bh
Y2VUcmFuc2Zvcm0oKSAqIGNvbnRlbnRUb0xheWVyVHJhbnNmb3JtKGJvdW5kcygpLCBjb250ZW50
Qm91bmRzKCkpOworCiAgICAgLy8gQ3JlYXRlIHRpbGVzIGFzIG5lZWRlZCwgZXhwYW5kaW5nIGEg
ZGlydHkgcmVjdCB0byBjb250YWluIGFsbAogICAgIC8vIHRoZSBkaXJ0eSByZWdpb25zIGN1cnJl
bnRseSBiZWluZyBkcmF3bi4gQWxsIGRpcnR5IHRpbGVzIHRoYXQgYXJlIHRvIGJlIHBhaW50ZWQK
ICAgICAvLyBnZXQgdGhlaXIgbV91cGRhdGVSZWN0IHNldCB0byBtX2RpcnR5UmVjdCBhbmQgbV9k
aXJ0eVJlY3QgY2xlYXJlZC4gVGhpcyB3YXkgaWYKQEAgLTQxMiw2ICs0MjYsMTYgQEAgdm9pZCBU
aWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wgaWRsZSwgaW50IGxl
ZnQsIGludCB0b3AsIGludAogICAgICAgICAgICAgaWYgKCF0aWxlKQogICAgICAgICAgICAgICAg
IHRpbGUgPSBjcmVhdGVUaWxlKGksIGopOwogCisgICAgICAgICAgICAvLyBXaGVuIG5vdCBpZGxl
IHBhaW50aW5nLCBpZiB0aGUgdGlsZSBpcyBvY2NsdWRlZCBkb24ndCByZXNlcnZlIGEgdGV4dHVy
ZSBvciBtYXJrIGl0IGZvciB1cGRhdGUuIFRoaXMgd2lsbCBhbHNvIGF2b2lkIHBhaW50aW5nCisg
ICAgICAgICAgICAvLyB0aGUgdGlsZSBpbiB0aGUgbmV4dCBsb29wLCBiZWxvdy4KKyAgICAgICAg
ICAgIGlmICghaWRsZSkgeworICAgICAgICAgICAgICAgIEludFJlY3QgdmlzaWJsZVRpbGVSZWN0
ID0gaW50ZXJzZWN0aW9uKG1fdGlsZXItPnRpbGVCb3VuZHMoaSwgaiksIHZpc2libGVMYXllclJl
Y3QoKSk7CisgICAgICAgICAgICAgICAgaWYgKG9jY2x1ZGVkU2NyZWVuU3BhY2UuY29udGFpbnMo
Y29udGVudFRvU2NyZWVuU3BhY2UubWFwUmVjdCh2aXNpYmxlVGlsZVJlY3QpKSkgeworICAgICAg
ICAgICAgICAgICAgICBUUkFDRV9FVkVOVCgiVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9V
cGRhdGVUaWxlczo6dGlsZUN1bGxlZCIsIHRoaXMsIDApOworICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKICAgICAgICAgICAg
IC8vIEZJWE1FOiBEZWNpZGUgaWYgcGFydGlhbCB1cGRhdGUgc2hvdWxkIGJlIGFsbG93ZWQgYmFz
ZWQgb24gY29zdAogICAgICAgICAgICAgLy8gb2YgdXBkYXRlLiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzczNzYKICAgICAgICAgICAgIGlmICh0aWxlT25seU5lZWRz
UGFydGlhbFVwZGF0ZSh0aWxlKSAmJiBsYXllclRyZWVIb3N0KCkgJiYgbGF5ZXJUcmVlSG9zdCgp
LT5yZXF1ZXN0UGFydGlhbFRleHR1cmVVcGRhdGUoKSkKQEAgLTQxOSw4ICs0NDMsMTAgQEAgdm9p
ZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wgaWRsZSwgaW50
IGxlZnQsIGludCB0b3AsIGludAogICAgICAgICAgICAgZWxzZSBpZiAodGlsZU5lZWRzQnVmZmVy
ZWRVcGRhdGUodGlsZSkgJiYgbGF5ZXJUcmVlSG9zdCgpKQogICAgICAgICAgICAgICAgIGxheWVy
VHJlZUhvc3QoKS0+ZGVsZXRlVGV4dHVyZUFmdGVyQ29tbWl0KHRpbGUtPm1hbmFnZWRUZXh0dXJl
KCktPnN0ZWFsKCkpOwogCi0gICAgICAgICAgICBpZiAoIXRpbGUtPm1hbmFnZWRUZXh0dXJlKCkt
PmlzVmFsaWQobV90aWxlci0+dGlsZVNpemUoKSwgbV90ZXh0dXJlRm9ybWF0KSkKKyAgICAgICAg
ICAgIGlmICghdGlsZS0+bWFuYWdlZFRleHR1cmUoKS0+aXNWYWxpZChtX3RpbGVyLT50aWxlU2l6
ZSgpLCBtX3RleHR1cmVGb3JtYXQpKSB7CisgICAgICAgICAgICAgICAgLy8gU2V0cyB0aGUgZGly
dHkgcmVjdCB0byBhIGZ1bGwtc2l6ZWQgdGlsZSB3aXRoIGJvcmRlciB0ZXhlbHMuCiAgICAgICAg
ICAgICAgICAgdGlsZS0+bV9kaXJ0eVJlY3QgPSBtX3RpbGVyLT50aWxlUmVjdCh0aWxlKTsKKyAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCF0aWxlLT5tYW5hZ2VkVGV4dHVyZSgpLT5y
ZXNlcnZlKG1fdGlsZXItPnRpbGVTaXplKCksIG1fdGV4dHVyZUZvcm1hdCkpIHsKICAgICAgICAg
ICAgICAgICBtX3NraXBzSWRsZVBhaW50ID0gdHJ1ZTsKQEAgLTQ2OCw2ICs0OTQsMTEgQEAgdm9p
ZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wgaWRsZSwgaW50
IGxlZnQsIGludCB0b3AsIGludAogCiAgICAgICAgICAgICBJbnRSZWN0IHRpbGVSZWN0ID0gbV90
aWxlci0+dGlsZUJvdW5kcyhpLCBqKTsKIAorICAgICAgICAgICAgLy8gVXNlIG1fdXBkYXRlUmVj
dCBhcyBjb3B5QW5kQ2xlYXJEaXJ0eSBhYm92ZSBtb3ZlZCB0aGUgZXhpc3RpbmcgZGlydHkgcmVj
dCB0byBtX3VwZGF0ZVJlY3QgaWYgdGhlIHRpbGUgaXNuJ3QgY3VsbGVkLgorICAgICAgICAgICAg
Y29uc3QgSW50UmVjdCYgZGlydHlSZWN0ID0gdGlsZS0+bV91cGRhdGVSZWN0OworICAgICAgICAg
ICAgaWYgKGRpcnR5UmVjdC5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisK
ICAgICAgICAgICAgIC8vIFNhdmUgd2hhdCB3YXMgcGFpbnRlZCBvcGFxdWUgaW4gdGhlIHRpbGUu
IEtlZXAgdGhlIG9sZCBhcmVhIGlmIHRoZSBwYWludCBkaWRuJ3QgdG91Y2ggaXQsIGFuZCBkaWRu
J3QgcGFpbnQgc29tZQogICAgICAgICAgICAgLy8gb3RoZXIgcGFydCBvZiB0aGUgdGlsZSBvcGFx
dWUuCiAgICAgICAgICAgICBJbnRSZWN0IHRpbGVQYWludGVkUmVjdCA9IGludGVyc2VjdGlvbih0
aWxlUmVjdCwgbV9wYWludFJlY3QpOwpAQCAtNDgxLDExICs1MTIsNiBAQCB2b2lkIFRpbGVkTGF5
ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50
IHRvcCwgaW50CiAgICAgICAgICAgICAgICAgICAgIHRpbGUtPm1fb3BhcXVlUmVjdCA9IHRpbGVQ
YWludGVkT3BhcXVlUmVjdDsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgLy8gVXNlIG1f
dXBkYXRlUmVjdCBhcyBjb3B5QW5kQ2xlYXJEaXJ0eSBhYm92ZSBtb3ZlZCB0aGUgZXhpc3Rpbmcg
ZGlydHkgcmVjdCB0byBtX3VwZGF0ZVJlY3QuCi0gICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBk
aXJ0eVJlY3QgPSB0aWxlLT5tX3VwZGF0ZVJlY3Q7Ci0gICAgICAgICAgICBpZiAoZGlydHlSZWN0
LmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQogICAgICAgICAgICAgLy8g
c291cmNlUmVjdCBzdGFydHMgYXMgYSBmdWxsLXNpemVkIHRpbGUgd2l0aCBib3JkZXIgdGV4ZWxz
IGluY2x1ZGVkLgogICAgICAgICAgICAgSW50UmVjdCBzb3VyY2VSZWN0ID0gbV90aWxlci0+dGls
ZVJlY3QodGlsZSk7CiAgICAgICAgICAgICBzb3VyY2VSZWN0LmludGVyc2VjdChkaXJ0eVJlY3Qp
OwpAQCAtNTI5LDM3ICs1NTUsNiBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cmVzZXJ2ZVRl
eHR1cmVzKCkKICAgICB9CiB9CiAKLXZvaWQgVGlsZWRMYXllckNocm9taXVtOjphZGRTZWxmVG9P
Y2NsdWRlZFNjcmVlblNwYWNlKFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSkKLXsKLSAgICBp
ZiAobV9za2lwc0RyYXcgfHwgZHJhd09wYWNpdHkoKSAhPSAxIHx8ICFpc1BhaW50ZWRBeGlzQWxp
Z25lZEluU2NyZWVuKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChvcGFxdWUoKSkgewot
ICAgICAgICBMYXllckNocm9taXVtOjphZGRTZWxmVG9PY2NsdWRlZFNjcmVlblNwYWNlKG9jY2x1
ZGVkU2NyZWVuU3BhY2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgSW50UmVjdCB2
aXNpYmxlUmVjdCA9IHZpc2libGVMYXllclJlY3QoKTsKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBjb250ZW50VHJhbnNmb3JtID0gY29udGVudFRvU2NyZWVuU3BhY2VUcmFuc2Zvcm0oKTsKLQot
ICAgIC8vIEZJWE1FOiBDcmVhdGUvVXNlIGEgRmxvYXRSZWdpb24gZm9yIHRoZSBvY2NsdWRlZFNj
cmVlblNwYWNlLCBpbnN0ZWFkIG9mIGEgUmVnaW9uIGJhc2VkIG9uIGludHMsIHRvIGF2b2lkIHRo
aXMgc3RlcCBhbmQgZ2V0IGJldHRlciBhY2N1cmFjeSBiZXR3ZWVuIGxheWVycyBpbiB0YXJnZXQg
c3BhY2UuCi0gICAgUmVnaW9uIHRpbGVSZWdpb247Ci0gICAgaW50IGxlZnQsIHRvcCwgcmlnaHQs
IGJvdHRvbTsKLSAgICBtX3RpbGVyLT5sYXllclJlY3RUb1RpbGVJbmRpY2VzKHZpc2libGVMYXll
clJlY3QoKSwgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tKTsKLSAgICBmb3IgKGludCBqID0gdG9w
OyBqIDw9IGJvdHRvbTsgKytqKSB7Ci0gICAgICAgIGZvciAoaW50IGkgPSBsZWZ0OyBpIDw9IHJp
Z2h0OyArK2kpIHsKLSAgICAgICAgICAgIFVwZGF0YWJsZVRpbGUqIHRpbGUgPSB0aWxlQXQoaSwg
aik7Ci0gICAgICAgICAgICBpZiAodGlsZSkgewotICAgICAgICAgICAgICAgIEludFJlY3Qgdmlz
aWJsZVRpbGVPcGFxdWVSZWN0ID0gaW50ZXJzZWN0aW9uKHZpc2libGVSZWN0LCB0aWxlLT5tX29w
YXF1ZVJlY3QpOwotICAgICAgICAgICAgICAgIEZsb2F0UmVjdCBzY3JlZW5SZWN0ID0gY29udGVu
dFRyYW5zZm9ybS5tYXBSZWN0KEZsb2F0UmVjdCh2aXNpYmxlVGlsZU9wYXF1ZVJlY3QpKTsKLSAg
ICAgICAgICAgICAgICBJbnRSZWN0IHNjcmVlbkludFJlY3QgPSBlbmNsb3NlZEludFJlY3Qoc2Ny
ZWVuUmVjdCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFzY3JlZW5JbnRSZWN0LmlzRW1wdHkoKSkK
LSAgICAgICAgICAgICAgICAgICAgb2NjbHVkZWRTY3JlZW5TcGFjZS51bml0ZShzY3JlZW5JbnRS
ZWN0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQogdm9pZCBUaWxlZExh
eWVyQ2hyb21pdW06OnJlc2V0VXBkYXRlU3RhdGUoKQogewogICAgIC8vIFJlc2V0IG1fdXBkYXRl
UmVjdCBmb3IgYWxsIHRpbGVzLgpAQCAtNTcxLDcgKzU2Niw3IEBAIHZvaWQgVGlsZWRMYXllckNo
cm9taXVtOjpyZXNldFVwZGF0ZVN0YXRlKCkKICAgICB9CiB9CiAKLXZvaWQgVGlsZWRMYXllckNo
cm9taXVtOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQordm9pZCBU
aWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBsYXllclJl
Y3QsIGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSkKIHsKICAgICBtX3NraXBzRHJh
dyA9IGZhbHNlOwogICAgIG1fc2tpcHNJZGxlUGFpbnQgPSBmYWxzZTsKQEAgLTU4OCwxMCArNTgz
LDEwIEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50
UmVjdCYgbGF5ZXJSZWN0KQogICAgIGludCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b207CiAgICAg
bV90aWxlci0+bGF5ZXJSZWN0VG9UaWxlSW5kaWNlcyhsYXllclJlY3QsIGxlZnQsIHRvcCwgcmln
aHQsIGJvdHRvbSk7CiAKLSAgICBwcmVwYXJlVG9VcGRhdGVUaWxlcyhmYWxzZSwgbGVmdCwgdG9w
LCByaWdodCwgYm90dG9tKTsKKyAgICBwcmVwYXJlVG9VcGRhdGVUaWxlcyhmYWxzZSwgbGVmdCwg
dG9wLCByaWdodCwgYm90dG9tLCBvY2NsdWRlZFNjcmVlblNwYWNlKTsKIH0KIAotdm9pZCBUaWxl
ZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlkbGUoY29uc3QgSW50UmVjdCYgbGF5ZXJS
ZWN0KQordm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlkbGUoY29uc3Qg
SW50UmVjdCYgbGF5ZXJSZWN0LCBjb25zdCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVuU3BhY2UpCiB7
CiAgICAgLy8gQWJvcnQgaWYgd2UgaGF2ZSBhbHJlYWR5IHByZXBhcmVkIGEgcGFpbnQgb3IgcnVu
IG91dCBvZiBtZW1vcnkuCiAgICAgaWYgKG1fc2tpcHNJZGxlUGFpbnQgfHwgIW1fcGFpbnRSZWN0
LmlzRW1wdHkoKSkKQEAgLTYwOSwzMyArNjA0LDM5IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVt
OjpwcmVwYXJlVG9VcGRhdGVJZGxlKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCkKICAgICBJbnRS
ZWN0IGlkbGVQYWludExheWVyUmVjdCA9IGlkbGVQYWludFJlY3QobGF5ZXJSZWN0KTsKICAgICBw
cm90ZWN0VGlsZVRleHR1cmVzKGlkbGVQYWludExheWVyUmVjdCk7CiAKLSAgICAvLyBFeHBhbmQg
b3V0d2FyZHMgdW50aWwgd2UgZmluZCBhIGRpcnR5IHJvdyBvciBjb2x1bW4gdG8gdXBkYXRlLgog
ICAgIGludCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b207CiAgICAgbV90aWxlci0+bGF5ZXJSZWN0
VG9UaWxlSW5kaWNlcyhsYXllclJlY3QsIGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSk7CisKKyAg
ICAvLyBQcmVwYWludCBhbnl0aGluZyB0aGF0IHdhcyBvY2NsdWRlZCBidXQgaW5zaWRlIHRoZSBs
YXllcidzIHZpc2libGUgcmVnaW9uLgorICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKHRydWUsIGxl
ZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSwgb2NjbHVkZWRTY3JlZW5TcGFjZSk7CisgICAgaWYgKCFt
X3BhaW50UmVjdC5pc0VtcHR5KCkgfHwgbV9za2lwc0lkbGVQYWludCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgLy8gRXhwYW5kIG91dHdhcmRzIHVudGlsIHdlIGZpbmQgYSBkaXJ0eSByb3cgb3Ig
Y29sdW1uIHRvIHVwZGF0ZS4KICAgICBpbnQgcHJlcGFpbnRMZWZ0LCBwcmVwYWludFRvcCwgcHJl
cGFpbnRSaWdodCwgcHJlcGFpbnRCb3R0b207CiAgICAgbV90aWxlci0+bGF5ZXJSZWN0VG9UaWxl
SW5kaWNlcyhpZGxlUGFpbnRMYXllclJlY3QsIHByZXBhaW50TGVmdCwgcHJlcGFpbnRUb3AsIHBy
ZXBhaW50UmlnaHQsIHByZXBhaW50Qm90dG9tKTsKICAgICB3aGlsZSAoIW1fc2tpcHNJZGxlUGFp
bnQgJiYgKGxlZnQgPiBwcmVwYWludExlZnQgfHwgdG9wID4gcHJlcGFpbnRUb3AgfHwgcmlnaHQg
PCBwcmVwYWludFJpZ2h0IHx8IGJvdHRvbSA8IHByZXBhaW50Qm90dG9tKSkgewogICAgICAgICBp
ZiAoYm90dG9tIDwgcHJlcGFpbnRCb3R0b20pIHsKICAgICAgICAgICAgICsrYm90dG9tOwotICAg
ICAgICAgICAgcHJlcGFyZVRvVXBkYXRlVGlsZXModHJ1ZSwgbGVmdCwgYm90dG9tLCByaWdodCwg
Ym90dG9tKTsKKyAgICAgICAgICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKHRydWUsIGxlZnQsIGJv
dHRvbSwgcmlnaHQsIGJvdHRvbSwgb2NjbHVkZWRTY3JlZW5TcGFjZSk7CiAgICAgICAgICAgICBp
ZiAoIW1fcGFpbnRSZWN0LmlzRW1wdHkoKSB8fCBtX3NraXBzSWRsZVBhaW50KQogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGlmICh0b3AgPiBwcmVwYWludFRvcCkg
ewogICAgICAgICAgICAgLS10b3A7Ci0gICAgICAgICAgICBwcmVwYXJlVG9VcGRhdGVUaWxlcyh0
cnVlLCBsZWZ0LCB0b3AsIHJpZ2h0LCB0b3ApOworICAgICAgICAgICAgcHJlcGFyZVRvVXBkYXRl
VGlsZXModHJ1ZSwgbGVmdCwgdG9wLCByaWdodCwgdG9wLCBvY2NsdWRlZFNjcmVlblNwYWNlKTsK
ICAgICAgICAgICAgIGlmICghbV9wYWludFJlY3QuaXNFbXB0eSgpIHx8IG1fc2tpcHNJZGxlUGFp
bnQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGxlZnQg
PiBwcmVwYWludExlZnQpIHsKICAgICAgICAgICAgIC0tbGVmdDsKLSAgICAgICAgICAgIHByZXBh
cmVUb1VwZGF0ZVRpbGVzKHRydWUsIGxlZnQsIHRvcCwgbGVmdCwgYm90dG9tKTsKKyAgICAgICAg
ICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKHRydWUsIGxlZnQsIHRvcCwgbGVmdCwgYm90dG9tLCBv
Y2NsdWRlZFNjcmVlblNwYWNlKTsKICAgICAgICAgICAgIGlmICghbV9wYWludFJlY3QuaXNFbXB0
eSgpIHx8IG1fc2tpcHNJZGxlUGFpbnQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKHJpZ2h0IDwgcHJlcGFpbnRSaWdodCkgewogICAgICAgICAgICAgKyty
aWdodDsKLSAgICAgICAgICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKHRydWUsIHJpZ2h0LCB0b3As
IHJpZ2h0LCBib3R0b20pOworICAgICAgICAgICAgcHJlcGFyZVRvVXBkYXRlVGlsZXModHJ1ZSwg
cmlnaHQsIHRvcCwgcmlnaHQsIGJvdHRvbSwgb2NjbHVkZWRTY3JlZW5TcGFjZSk7CiAgICAgICAg
ICAgICBpZiAoIW1fcGFpbnRSZWN0LmlzRW1wdHkoKSB8fCBtX3NraXBzSWRsZVBhaW50KQogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5o
CmluZGV4IDZmYzdkMWQ5MmJjNWFiOTczNzZhYWJjMTE2ZDM0NDBjYzc5YThlZjUuLmM5MzZlNmRl
Yzc0MzBmNmEzNDM1NzE4NDVhMGZjM2Q5Nzc2MGZlYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJv
bWl1bS5oCkBAIC02Niw4ICs2Niw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCByZXNl
cnZlVGV4dHVyZXMoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGRTZWxmVG9PY2NsdWRlZFNjcmVl
blNwYWNlKFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSk7Ci0KIHByb3RlY3RlZDoKICAgICBU
aWxlZExheWVyQ2hyb21pdW0oKTsKIApAQCAtOTAsMTAgKzg4LDEwIEBAIHByb3RlY3RlZDoKICAg
ICB2b2lkIHJlc2V0VXBkYXRlU3RhdGUoKTsKIAogICAgIC8vIFByZXBhcmUgZGF0YSBuZWVkZWQg
dG8gdXBkYXRlIHRleHR1cmVzIHRoYXQgaW50ZXJzZWN0IHdpdGggbGF5ZXJSZWN0LgotICAgIHZv
aWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCk7CisgICAgdm9pZCBw
cmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0LCBjb25zdCBSZWdpb24mIG9j
Y2x1ZGVkVGFyZ2V0U3BhY2UpOwogCiAgICAgLy8gU2FtZSBhcyBhYm92ZSwgYnV0IHRoaXMgd2ls
bCB0cnkgdG8gcGFpbnQgYWRkaXRpb25hbCBzdXJyb3VuZGluZyBjb250ZW50IGlmIGlkbGUuCi0g
ICAgdm9pZCBwcmVwYXJlVG9VcGRhdGVJZGxlKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCk7Cisg
ICAgdm9pZCBwcmVwYXJlVG9VcGRhdGVJZGxlKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29u
c3QgUmVnaW9uJiBvY2NsdWRlZFRhcmdldFNwYWNlKTsKIAogICAgIC8vIEFmdGVyIHByZXBhcmlu
ZyBhbiB1cGRhdGUsIHJldHVybnMgdHJ1ZSBpZiBtb3JlIHByZS1wYWludGluZyBpcyBuZWVkZWQu
CiAgICAgYm9vbCBuZWVkc0lkbGVQYWludChjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpOwpAQCAt
MTEzLDcgKzExMSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCB0aWxlT25seU5lZWRzUGFydGlhbFVw
ZGF0ZShVcGRhdGFibGVUaWxlKik7CiAgICAgYm9vbCB0aWxlTmVlZHNCdWZmZXJlZFVwZGF0ZShV
cGRhdGFibGVUaWxlKik7CiAKLSAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wgaWRs
ZSwgaW50IGxlZnQsIGludCB0b3AsIGludCByaWdodCwgaW50IGJvdHRvbSk7CisgICAgdm9pZCBw
cmVwYXJlVG9VcGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQgcmln
aHQsIGludCBib3R0b20sIGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRUYXJnZXRTcGFjZSk7CiAgICAg
SW50UmVjdCBpZGxlUGFpbnRSZWN0KGNvbnN0IEludFJlY3QmIHZpc2libGVMYXllclJlY3QpOwog
CiAgICAgVXBkYXRhYmxlVGlsZSogdGlsZUF0KGludCwgaW50KSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IDdjY2I1ZmQ3MThjMjM3NzAwMzg4ZWFjMTk5OWRmZWY5
YmM2OGNiMDQuLmE5NzBjNjEwYmJiYWE3YjEzYjY4N2M5MmI3MTJlYjk5NTQwODQ4MzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUg
ImNjL0NDTGF5ZXJJdGVyYXRvci5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdENvbW1v
bi5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKKyNpbmNsdWRlICJjYy9D
Q09jY2x1c2lvblRyYWNrZXIuaCIKICNpbmNsdWRlICJjYy9DQ1NpbmdsZVRocmVhZFByb3h5Lmgi
CiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWQuaCIKICNpbmNsdWRlICJjYy9DQ1RocmVhZFByb3h5Lmgi
CkBAIC01MDMsNyArNTA0LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50Q29udGVudHNJ
ZkRpcnR5KExheWVyQ2hyb21pdW0qIGxheWVyLCBQYWludFR5cGUgcGFpbnQKICAgICBpZiAoUGFp
bnRWaXNpYmxlID09IHBhaW50VHlwZSkKICAgICAgICAgbGF5ZXItPnBhaW50Q29udGVudHNJZkRp
cnR5KG9jY2x1ZGVkU2NyZWVuU3BhY2UpOwogICAgIGVsc2UKLSAgICAgICAgbGF5ZXItPmlkbGVQ
YWludENvbnRlbnRzSWZEaXJ0eSgpOworICAgICAgICBsYXllci0+aWRsZVBhaW50Q29udGVudHNJ
ZkRpcnR5KG9jY2x1ZGVkU2NyZWVuU3BhY2UpOwogfQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6
cGFpbnRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UoTGF5ZXJDaHJvbWl1bSogcmVuZGVy
U3VyZmFjZUxheWVyLCBQYWludFR5cGUgcGFpbnRUeXBlKQpAQCAtNTMxLDgzICs1MzIsMjggQEAg
dm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNl
KExheWVyQ2hyb21pdW0qIHJlbmRlclMKICAgICB9CiB9CiAKLXN0cnVjdCBSZW5kZXJTdXJmYWNl
UmVnaW9uIHsKLSAgICBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHN1cmZhY2U7Ci0gICAgUmVnaW9u
IG9jY2x1ZGVkSW5TY3JlZW47Ci19OwotCi0vLyBBZGQgdGhlIHN1cmZhY2UgdG8gdGhlIHRvcCBv
ZiB0aGUgc3RhY2sgYW5kIGNvcHkgdGhlIG9jY2x1c2lvbiBmcm9tIHRoZSBvbGQgdG9wIG9mIHRo
ZSBzdGFjayB0byB0aGUgbmV3Lgotc3RhdGljIHZvaWQgZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNl
KFZlY3RvcjxSZW5kZXJTdXJmYWNlUmVnaW9uPiYgc3RhY2ssIFJlbmRlclN1cmZhY2VDaHJvbWl1
bSogbmV3VGFyZ2V0KQotewotICAgIGlmIChzdGFjay5pc0VtcHR5KCkpIHsKLSAgICAgICAgc3Rh
Y2suYXBwZW5kKFJlbmRlclN1cmZhY2VSZWdpb24oKSk7Ci0gICAgICAgIHN0YWNrLmxhc3QoKS5z
dXJmYWNlID0gbmV3VGFyZ2V0OwotICAgIH0gZWxzZSBpZiAoc3RhY2subGFzdCgpLnN1cmZhY2Ug
IT0gbmV3VGFyZ2V0KSB7Ci0gICAgICAgIC8vIElmIHdlIGFyZSBlbnRlcmluZyBhIHN1YnRyZWUg
dGhhdCBpcyBnb2luZyB0byBtb3ZlIHBpeGVscyBhcm91bmQsIHRoZW4gdGhlIG9jY2x1c2lvbiB3
ZSd2ZSBjb21wdXRlZAotICAgICAgICAvLyBzbyBmYXIgd29uJ3QgYXBwbHkgdG8gdGhlIHBpeGVs
cyB3ZSdyZSBkcmF3aW5nIGhlcmUgaW4gdGhlIHNhbWUgd2F5LiBXZSBkaXNjYXJkIHRoZSBvY2Ns
dXNpb24gdGh1cwotICAgICAgICAvLyBmYXIgdG8gYmUgc2FmZSwgYW5kIGVuc3VyZSB3ZSBkb24n
dCBjdWxsIGFueSBwaXhlbHMgdGhhdCBhcmUgbW92ZWQgc3VjaCB0aGF0IHRoZXkgYmVjb21lIHZp
c2libGUuCi0gICAgICAgIGNvbnN0IFJlbmRlclN1cmZhY2VDaHJvbWl1bSogb2xkQW5jZXN0b3JU
aGF0TW92ZXNQaXhlbHMgPSBzdGFjay5sYXN0KCkuc3VyZmFjZS0+bmVhcmVzdEFuY2VzdG9yVGhh
dE1vdmVzUGl4ZWxzKCk7Ci0gICAgICAgIGNvbnN0IFJlbmRlclN1cmZhY2VDaHJvbWl1bSogbmV3
QW5jZXN0b3JUaGF0TW92ZXNQaXhlbHMgPSBuZXdUYXJnZXQtPm5lYXJlc3RBbmNlc3RvclRoYXRN
b3Zlc1BpeGVscygpOwotICAgICAgICBib29sIGVudGVyaW5nU3VidHJlZVRoYXRNb3Zlc1BpeGVs
cyA9IG5ld0FuY2VzdG9yVGhhdE1vdmVzUGl4ZWxzICYmIG5ld0FuY2VzdG9yVGhhdE1vdmVzUGl4
ZWxzICE9IG9sZEFuY2VzdG9yVGhhdE1vdmVzUGl4ZWxzOwotCi0gICAgICAgIHN0YWNrLmFwcGVu
ZChSZW5kZXJTdXJmYWNlUmVnaW9uKCkpOwotICAgICAgICBzdGFjay5sYXN0KCkuc3VyZmFjZSA9
IG5ld1RhcmdldDsKLSAgICAgICAgaW50IGxhc3RJbmRleCA9IHN0YWNrLnNpemUoKSAtIDE7Ci0g
ICAgICAgIGlmICghZW50ZXJpbmdTdWJ0cmVlVGhhdE1vdmVzUGl4ZWxzKQotICAgICAgICAgICAg
c3RhY2tbbGFzdEluZGV4XS5vY2NsdWRlZEluU2NyZWVuID0gc3RhY2tbbGFzdEluZGV4IC0gMV0u
b2NjbHVkZWRJblNjcmVlbjsKLSAgICB9Ci19Ci0KLS8vIFBvcCB0aGUgdG9wIG9mIHRoZSBzdGFj
ayBvZmYsIHB1c2ggb24gdGhlIG5ldyBzdXJmYWNlLCBhbmQgbWVyZ2UgdGhlIG9sZCB0b3AncyBv
Y2NsdXNpb24gaW50byB0aGUgbmV3IHRvcCBzdXJmYWNlLgotc3RhdGljIHZvaWQgbGVhdmVUYXJn
ZXRSZW5kZXJTdXJmYWNlKFZlY3RvcjxSZW5kZXJTdXJmYWNlUmVnaW9uPiYgc3RhY2ssIFJlbmRl
clN1cmZhY2VDaHJvbWl1bSogbmV3VGFyZ2V0KQotewotICAgIGludCBsYXN0SW5kZXggPSBzdGFj
ay5zaXplKCkgLSAxOwotICAgIGJvb2wgc3VyZmFjZVdpbGxCZUF0VG9wQWZ0ZXJQb3AgPSBzdGFj
ay5zaXplKCkgPiAxICYmIHN0YWNrW2xhc3RJbmRleCAtIDFdLnN1cmZhY2UgPT0gbmV3VGFyZ2V0
OwotCi0gICAgaWYgKHN1cmZhY2VXaWxsQmVBdFRvcEFmdGVyUG9wKSB7Ci0gICAgICAgIC8vIE1l
cmdlIHRoZSB0b3Agb2YgdGhlIHN0YWNrIGRvd24uCi0gICAgICAgIHN0YWNrW2xhc3RJbmRleCAt
IDFdLm9jY2x1ZGVkSW5TY3JlZW4udW5pdGUoc3RhY2tbbGFzdEluZGV4XS5vY2NsdWRlZEluU2Ny
ZWVuKTsKLSAgICAgICAgc3RhY2sucmVtb3ZlTGFzdCgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAg
IC8vIFJlcGxhY2UgdGhlIHRvcCBvZiB0aGUgc3RhY2sgd2l0aCB0aGUgbmV3IHB1c2hlZCBzdXJm
YWNlLiBDb3B5IHRoZSBvY2NsdWRlZCByZWdpb24gdG8gdGhlIHRvcC4KLSAgICAgICAgc3RhY2su
bGFzdCgpLnN1cmZhY2UgPSBuZXdUYXJnZXQ7Ci0gICAgfQotfQotCiB2b2lkIENDTGF5ZXJUcmVl
SG9zdDo6cGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxh
eWVyTGlzdCwgUGFpbnRUeXBlIHBhaW50VHlwZSkKIHsKICAgICAvLyBVc2UgRnJvbnRUb0JhY2sg
dG8gYWxsb3cgZm9yIHRlc3Rpbmcgb2NjbHVzaW9uIGFuZCBwZXJmb3JtaW5nIGN1bGxpbmcgZHVy
aW5nIHRoZSB0cmVlIHdhbGsuCiAgICAgdHlwZWRlZiBDQ0xheWVySXRlcmF0b3I8TGF5ZXJDaHJv
bWl1bSwgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+LCBSZW5kZXJTdXJmYWNlQ2hyb21p
dW0sIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkZyb250VG9CYWNrPiBDQ0xheWVySXRlcmF0b3JU
eXBlOwogCi0gICAgLy8gVGhlIHN0YWNrIGhvbGRzIG9jY2x1ZGVkIHJlZ2lvbnMgZm9yIHN1YnRy
ZWVzIGluIHRoZSBSZW5kZXJTdXJmYWNlLUxheWVyIHRyZWUsIHNvIHRoYXQgd2hlbiB3ZSBsZWF2
ZSBhIHN1YnRyZWUgd2UgbWF5Ci0gICAgLy8gYXBwbHkgYSBtYXNrIHRvIGl0LCBidXQgbm90IHRv
IHRoZSBwYXJ0cyBvdXRzaWRlIHRoZSBzdWJ0cmVlLgotICAgIC8vIC0gVGhlIGZpcnN0IHRpbWUg
d2Ugc2VlIGEgbmV3IHN1YnRyZWUgdW5kZXIgYSB0YXJnZXQsIHdlIGFkZCB0aGF0IHRhcmdldCB0
byB0aGUgdG9wIG9mIHRoZSBzdGFjay4gVGhpcyBjYW4gaGFwcGVuIGFzIGEgbGF5ZXIgcmVwcmVz
ZW50aW5nIGl0c2VsZiwgb3IgYXMgYSB0YXJnZXQgc3VyZmFjZS4KLSAgICAvLyAtIFdoZW4gd2Ug
dmlzaXQgYSB0YXJnZXQgc3VyZmFjZSwgd2UgYXBwbHkgaXRzIG1hc2sgdG8gaXRzIHN1YnRyZWUs
IHdoaWNoIGlzIGF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrLgotICAgIC8vIC0gV2hlbiB3ZSB2aXNp
dCBhIGxheWVyIHJlcHJlc2VudGluZyBpdHNlbGYsIHdlIGFkZCBpdHMgb2NjbHVzaW9uIHRvIHRo
ZSBjdXJyZW50IHN1YnRyZWUsIHdoaWNoIGlzIGF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrLgotICAg
IC8vIC0gV2hlbiB3ZSB2aXNpdCBhIGxheWVyIHJlcHJlc2VudGluZyBhIGNvbnRyaWJ1dGluZyBz
dXJmYWNlLCB0aGUgY3VycmVudCB0YXJnZXQgd2lsbCBuZXZlciBiZSB0aGUgdG9wIG9mIHRoZSBz
dGFjayBzaW5jZSB3ZSBqdXN0IGNhbWUgZnJvbSB0aGUgY29udHJpYnV0aW5nIHN1cmZhY2UuCi0g
ICAgLy8gV2UgbWVyZ2UgdGhlIG9jY2x1c2lvbiBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjayB3aXRo
IHRoZSBuZXcgY3VycmVudCBzdWJ0cmVlLiBUaGlzIG5ldyB0YXJnZXQgaXMgcHVzaGVkIG9udG8g
dGhlIHN0YWNrIGlmIG5vdCBhbHJlYWR5IHRoZXJlLgotICAgIFZlY3RvcjxSZW5kZXJTdXJmYWNl
UmVnaW9uPiB0YXJnZXRTdXJmYWNlU3RhY2s7CisgICAgQ0NPY2NsdXNpb25UcmFja2VyIG9jY2x1
c2lvblRyYWNrZXI7IC8vIEZJWE1FOiBXaXRoIHNjaXNzb3IgaW4gb2NjbHVzaW9uVHJhY2tlciBw
YXNzOiAoSW50UmVjdChJbnRQb2ludCgpLCB2aWV3cG9ydFNpemUoKSkpOwogCiAgICAgQ0NMYXll
ckl0ZXJhdG9yVHlwZSBlbmQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjplbmQoJnJlbmRlclN1cmZh
Y2VMYXllckxpc3QpOwogICAgIGZvciAoQ0NMYXllckl0ZXJhdG9yVHlwZSBpdCA9IENDTGF5ZXJJ
dGVyYXRvclR5cGU6OmJlZ2luKCZyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsgaXQgIT0gZW5kOyAr
K2l0KSB7CiAgICAgICAgIGlmIChpdC5yZXByZXNlbnRzVGFyZ2V0UmVuZGVyU3VyZmFjZSgpKSB7
CiAgICAgICAgICAgICBBU1NFUlQoaXQtPnJlbmRlclN1cmZhY2UoKS0+ZHJhd09wYWNpdHkoKSk7
CiAKLSAgICAgICAgICAgIGVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZSh0YXJnZXRTdXJmYWNlU3Rh
Y2ssIGl0LT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICAgICAgb2NjbHVzaW9uVHJhY2tlci5m
aW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2UoKml0LCBpdC0+cmVuZGVyU3VyZmFjZSgpKTsKICAg
ICAgICAgICAgIHBhaW50TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKCppdCwgcGFpbnRU
eXBlKTsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBhZGQgdGhlIHJlcGxpY2EgbGF5ZXIgdG8gdGhl
IGN1cnJlbnQgb2NjbHVzaW9uCi0KLSAgICAgICAgICAgIGlmIChpdC0+bWFza0xheWVyKCkgfHwg
aXQtPnJlbmRlclN1cmZhY2UoKS0+ZHJhd09wYWNpdHkoKSA8IDEgfHwgaXQtPnJlbmRlclN1cmZh
Y2UoKS0+ZmlsdGVycygpLmhhc0ZpbHRlclRoYXRBZmZlY3RzT3BhY2l0eSgpKQotICAgICAgICAg
ICAgICAgIHRhcmdldFN1cmZhY2VTdGFjay5sYXN0KCkub2NjbHVkZWRJblNjcmVlbiA9IFJlZ2lv
bigpOwogICAgICAgICB9IGVsc2UgaWYgKGl0LnJlcHJlc2VudHNJdHNlbGYoKSkgewogICAgICAg
ICAgICAgQVNTRVJUKCFpdC0+Ym91bmRzKCkuaXNFbXB0eSgpKTsKIAotICAgICAgICAgICAgZW50
ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHRhcmdldFN1cmZhY2VTdGFjaywgaXQtPnRhcmdldFJlbmRl
clN1cmZhY2UoKSk7Ci0gICAgICAgICAgICBwYWludENvbnRlbnRzSWZEaXJ0eSgqaXQsIHBhaW50
VHlwZSwgdGFyZ2V0U3VyZmFjZVN0YWNrLmxhc3QoKS5vY2NsdWRlZEluU2NyZWVuKTsKLSAgICAg
ICAgICAgIGl0LT5hZGRTZWxmVG9PY2NsdWRlZFNjcmVlblNwYWNlKHRhcmdldFN1cmZhY2VTdGFj
ay5sYXN0KCkub2NjbHVkZWRJblNjcmVlbik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICBsZWF2ZVRhcmdldFJlbmRlclN1cmZhY2UodGFyZ2V0U3VyZmFjZVN0YWNrLCBpdC50YXJnZXRS
ZW5kZXJTdXJmYWNlTGF5ZXIoKS0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgfQorICAgICAg
ICAgICAgb2NjbHVzaW9uVHJhY2tlci5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UoaXQtPnRhcmdl
dFJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgICAgICBwYWludENvbnRlbnRzSWZEaXJ0eSgqaXQs
IHBhaW50VHlwZSwgb2NjbHVzaW9uVHJhY2tlci5jdXJyZW50T2NjbHVzaW9uSW5TY3JlZW5TcGFj
ZSgpKTsKKyAgICAgICAgICAgIG9jY2x1c2lvblRyYWNrZXIubWFya09jY2x1ZGVkQmVoaW5kTGF5
ZXIoKml0KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBvY2NsdXNpb25UcmFja2VyLmxl
YXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKGl0LnRhcmdldFJlbmRlclN1cmZhY2VMYXllcigpLT5y
ZW5kZXJTdXJmYWNlKCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5kZXggZDdkZDA1NTk1YmZlNTI2
YTUwN2U4YjcyZTQ4ZGE3YzE4Njc2MzQ5NS4uYTBmNDdkNmI5YzUwNDQ4MDkyN2I2OWEwYmU2Y2Fh
ZDRiNWQzMTg1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xh
eWVyVHJlZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
TGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC0xMTc1LDkgKzExNzUsOSBAQCBwdWJsaWM6CiAgICAg
ICAgIG1fcGFpbnRDb250ZW50c0NvdW50Kys7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGlk
bGVQYWludENvbnRlbnRzSWZEaXJ0eSgpCisgICAgdmlydHVhbCB2b2lkIGlkbGVQYWludENvbnRl
bnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIG9jY2x1ZGVkKQogICAgIHsKLSAgICAgICAgQ29udGVu
dExheWVyQ2hyb21pdW06OmlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSgpOworICAgICAgICBDb250
ZW50TGF5ZXJDaHJvbWl1bTo6aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KG9jY2x1ZGVkKTsKICAg
ICAgICAgbV9pZGxlUGFpbnRDb250ZW50c0NvdW50Kys7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcApp
bmRleCAzMWNkZjM1YjdlMWNlMmY4ZGY3ZDM1ODA2OTVhNDNlMmM5N2JiM2ViLi43OWQ4OTdiMDE1
NDdhNTg1NjgzYjIzNjNhNWU5ZThmMGU5MTUzMWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKQEAgLTY4LDYg
KzY4LDcgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5UZXh0dXJlKCkgeyB9CiAKICAgICAg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxs
b2NhdG9yKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmKSB7IG1fbGF5ZXItPnVwZGF0
ZVJlY3QoKTsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVJlY3QoY29uc3QgSW50UmVj
dCYpIHsgbV9sYXllci0+cHJlcGFyZVJlY3QoKTsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIqIG1fbGF5ZXI7CkBAIC03Niw2ICs3Nyw3IEBAIHB1Ymxp
YzoKICAgICBGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpCiAgICAgICAgIDogbV9wcmVwYXJlQ291
bnQoMCkKICAgICAgICAgLCBtX3VwZGF0ZUNvdW50KDApCisgICAgICAgICwgbV9wcmVwYXJlUmVj
dENvdW50KDApCiAgICAgewogICAgIH0KICAgICB2aXJ0dWFsIH5GYWtlTGF5ZXJUZXh0dXJlVXBk
YXRlcigpIHsgfQpAQCAtOTMsNiArOTUsMTEgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJVcGRh
dGVDb3VudCgpIHsgbV91cGRhdGVDb3VudCA9IDA7IH0KICAgICB2b2lkIHVwZGF0ZVJlY3QoKSB7
IG1fdXBkYXRlQ291bnQrKzsgfQogCisgICAgLy8gTnVtYmVyIG9mIHRpbWVzIHByZXBhcmVSZWN0
KCkgaGFzIGJlZW4gaW52b2tlZCBvbiBhIHRleHR1cmUuCisgICAgaW50IHByZXBhcmVSZWN0Q291
bnQoKSBjb25zdCB7IHJldHVybiBtX3ByZXBhcmVSZWN0Q291bnQ7IH0KKyAgICB2b2lkIGNsZWFy
UHJlcGFyZVJlY3RDb3VudCgpIHsgbV9wcmVwYXJlUmVjdENvdW50ID0gMDsgfQorICAgIHZvaWQg
cHJlcGFyZVJlY3QoKSB7IG1fcHJlcGFyZVJlY3RDb3VudCsrOyB9CisKICAgICB2b2lkIHNldE9w
YXF1ZVBhaW50UmVjdChjb25zdCBJbnRSZWN0JiBvcGFxdWVQYWludFJlY3QpIHsgbV9vcGFxdWVQ
YWludFJlY3QgPSBvcGFxdWVQYWludFJlY3Q7IH0KIAogICAgIC8vIExhc3QgcmVjdCBwYXNzZWQg
dG8gcHJlcGFyZVRvVXBkYXRlKCkuCkBAIC0xMDUsNiArMTEyLDcgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBpbnQgbV9wcmVwYXJlQ291bnQ7CiAgICAgaW50IG1fdXBkYXRlQ291bnQ7CisgICAg
aW50IG1fcHJlcGFyZVJlY3RDb3VudDsKICAgICBJbnRSZWN0IG1fcmVjdFRvSW52YWxpZGF0ZTsK
ICAgICBJbnRSZWN0IG1fbGFzdFVwZGF0ZVJlY3Q7CiAgICAgSW50UmVjdCBtX29wYXF1ZVBhaW50
UmVjdDsKQEAgLTE0MiwxNCArMTUwLDE0IEBAIHB1YmxpYzoKICAgICAgICAgVGlsZWRMYXllckNo
cm9taXVtOjppbnZhbGlkYXRlUmVjdChyZWN0KTsKICAgICB9CiAKLSAgICB2b2lkIHByZXBhcmVU
b1VwZGF0ZShjb25zdCBJbnRSZWN0JiByZWN0KQorICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNv
bnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWQpCiAgICAgewotICAgICAg
ICBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZShyZWN0KTsKKyAgICAgICAgVGls
ZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGUocmVjdCwgb2NjbHVkZWQpOwogICAgIH0K
IAotICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlSWRsZShjb25zdCBJbnRSZWN0JiByZWN0KQorICAg
IHZvaWQgcHJlcGFyZVRvVXBkYXRlSWRsZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBSZWdp
b24mIG9jY2x1ZGVkKQogICAgIHsKLSAgICAgICAgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJl
VG9VcGRhdGVJZGxlKHJlY3QpOworICAgICAgICBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVU
b1VwZGF0ZUlkbGUocmVjdCwgb2NjbHVkZWQpOwogICAgIH0KIAogICAgIGJvb2wgbmVlZHNJZGxl
UGFpbnQoY29uc3QgSW50UmVjdCYgcmVjdCkKQEAgLTE3NCw5ICsxODIsOSBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIFRleHR1cmVNYW5hZ2VyKiB0ZXh0dXJlTWFuYWdlcigpIGNvbnN0IHsgcmV0
dXJuIG1fdGV4dHVyZU1hbmFnZXI7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRz
SWZEaXJ0eShjb25zdCBSZWdpb24mIC8qIG9jY2x1ZGVkU2NyZWVuU3BhY2UgKi8pCisgICAgdmly
dHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3Jl
ZW5TcGFjZSkKICAgICB7Ci0gICAgICAgIHByZXBhcmVUb1VwZGF0ZSh2aXNpYmxlTGF5ZXJSZWN0
KCkpOworICAgICAgICBwcmVwYXJlVG9VcGRhdGUodmlzaWJsZUxheWVyUmVjdCgpLCBvY2NsdWRl
ZFNjcmVlblNwYWNlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0yMzIsNiArMjQwLDcgQEAgVEVT
VChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoRGlydHlUaWxlcykKICAgICBSZWZQdHI8RmFr
ZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJD
aHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRo
cmVhZCBpbXBsVGhyZWFkOwogICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJ
bXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgwKSkpOworICAgIFJlZ2lvbiBu
b09jY2x1c2lvbjsKIAogICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7
CiAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsKQEAgLTIz
OSw3ICsyNDgsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hEaXJ0eVRpbGVz
KQogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMCwgc28gdGhpcyBpbnZhbGlkYXRlcyBh
bmQgdGhlbiBwYWludHMgdHdvIHRpbGVzLgogICAgIGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSgx
MDAsIDIwMCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDEwMCwg
MjAwKSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAw
KSk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwg
bm9PY2NsdXNpb24pOwogICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVw
ZGF0ZXIpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAK
QEAgLTI1Miw3ICsyNjEsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hEaXJ0
eVRpbGVzKQogICAgIC8vIEludmFsaWRhdGVzIGJvdGggdGlsZXMuLi4KICAgICBsYXllci0+aW52
YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogICAgIC8vIC4uLi5idXQgdGhl
biBvbmx5IHVwZGF0ZSBvbmUgb2YgdGhlbS4KLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKElu
dFJlY3QoMCwgMCwgMTAwLCAxMDApKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJl
Y3QoMCwgMCwgMTAwLCAxMDApLCBub09jY2x1c2lvbik7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbXBv
c2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8o
bGF5ZXJJbXBsLmdldCgpKTsKIApAQCAtMjc1LDEyICsyODQsMTMgQEAgVEVTVChUaWxlZExheWVy
Q2hyb21pdW1UZXN0LCBwdXNoSWRsZVBhaW50VGlsZXMpCiAgICAgSW50U2l6ZSBjb250ZW50Qm91
bmRzKDUwMCwgNTAwKTsKICAgICBJbnRSZWN0IGNvbnRlbnRSZWN0KEludFBvaW50Ojp6ZXJvKCks
IGNvbnRlbnRCb3VuZHMpOwogICAgIEludFJlY3QgdmlzaWJsZVJlY3QoMjAwLCAyMDAsIDEwMCwg
MTAwKTsKKyAgICBSZWdpb24gbm9PY2NsdXNpb247CiAKICAgICAvLyBUaGlzIGludmFsaWRhdGVz
IDI1IHRpbGVzIGFuZCB0aGVuIHBhaW50cyBvbmUgdmlzaWJsZSB0aWxlLgogICAgIGxheWVyLT5z
ZXRCb3VuZHMoY29udGVudEJvdW5kcyk7CiAgICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3Qo
dmlzaWJsZVJlY3QpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChjb250ZW50UmVjdCk7Ci0g
ICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZSh2aXNpYmxlUmVjdCk7CisgICAgbGF5ZXItPnByZXBh
cmVUb1VwZGF0ZSh2aXNpYmxlUmVjdCwgbm9PY2NsdXNpb24pOwogCiAgICAgLy8gV2Ugc2hvdWxk
IG5lZWQgaWRsZS1wYWludGluZyBmb3IgM3gzIHRpbGVzIGluIHRoZSBjZW50ZXIuCiAgICAgRVhQ
RUNUX1RSVUUobGF5ZXItPm5lZWRzSWRsZVBhaW50KHZpc2libGVSZWN0KSk7CkBAIC0yOTUsOSAr
MzA1LDkgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoSWRsZVBhaW50VGlsZXMp
CiAKICAgICAvLyBGb3IgdGhlIG5leHQgZm91ciB1cGRhdGVzLCB3ZSBzaG91bGQgZGV0ZWN0IHdl
IHN0aWxsIG5lZWQgaWRsZSBwYWludGluZy4KICAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkr
KykgewotICAgICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKHZpc2libGVSZWN0KTsKKyAgICAg
ICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZSh2aXNpYmxlUmVjdCwgbm9PY2NsdXNpb24pOwogICAg
ICAgICBFWFBFQ1RfVFJVRShsYXllci0+bmVlZHNJZGxlUGFpbnQodmlzaWJsZVJlY3QpKTsKLSAg
ICAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZUlkbGUodmlzaWJsZVJlY3QpOworICAgICAgICBs
YXllci0+cHJlcGFyZVRvVXBkYXRlSWRsZSh2aXNpYmxlUmVjdCwgbm9PY2NsdXNpb24pOwogICAg
ICAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKICAgICAg
ICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKICAgICAgICAgdGV4
dHVyZU1hbmFnZXItPnVucHJvdGVjdEFsbFRleHR1cmVzKCk7CkBAIC0zMjcsNiArMzM3LDcgQEAg
VEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoVGlsZXNNYXJrZWREaXJ0eUR1cmluZ1Bh
aW50KQogCiAgICAgRmFrZVRleHR1cmVBbGxvY2F0b3IgdGV4dHVyZUFsbG9jYXRvcjsKICAgICBD
Q1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIoJnRleHR1cmVBbGxvY2F0b3IpOworICAgIFJlZ2lvbiBu
b09jY2x1c2lvbjsKIAogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMCwgc28gdGhpcyBp
bnZhbGlkYXRlcyBhbmQgdGhlbiBwYWludHMgdHdvIHRpbGVzLgogICAgIC8vIEhvd2V2ZXIsIGR1
cmluZyB0aGUgcGFpbnQsIHdlIGludmFsaWRhdGUgb25lIG9mIHRoZSB0aWxlcy4gVGhpcyBzaG91
bGQKQEAgLTMzNCw3ICszNDUsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hU
aWxlc01hcmtlZERpcnR5RHVyaW5nUGFpbnQpCiAgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRTaXpl
KDEwMCwgMjAwKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgMTAw
LCAyMDApKTsKICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0UmVjdFRv
SW52YWxpZGF0ZShJbnRSZWN0KDAsIDUwLCAxMDAsIDUwKSwgbGF5ZXIuZ2V0KCkpOwotICAgIGxh
eWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOworICAgIGxheWVy
LT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIG5vT2NjbHVzaW9uKTsK
ICAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKICAgICBs
YXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCkBAIC0zNTQsMTcgKzM2
NSwxOCBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hUaWxlc0xheWVyTWFya2Vk
RGlydHlEdXJpbmdQYWludE9uTmV4dExheWVyKQogCiAgICAgRmFrZVRleHR1cmVBbGxvY2F0b3Ig
dGV4dHVyZUFsbG9jYXRvcjsKICAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIoJnRleHR1cmVB
bGxvY2F0b3IpOworICAgIFJlZ2lvbiBub09jY2x1c2lvbjsKIAogICAgIGxheWVyMS0+c2V0Qm91
bmRzKEludFNpemUoMTAwLCAyMDApKTsKICAgICBsYXllcjEtPmludmFsaWRhdGVSZWN0KEludFJl
Y3QoMCwgMCwgMTAwLCAyMDApKTsKICAgICBsYXllcjItPnNldEJvdW5kcyhJbnRTaXplKDEwMCwg
MjAwKSk7CiAgICAgbGF5ZXIyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAw
KSk7CiAKLSAgICBsYXllcjEtPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAw
KSk7CisgICAgbGF5ZXIxLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCks
IG5vT2NjbHVzaW9uKTsKIAogICAgIC8vIEludmFsaWRhdGUgYSB0aWxlIG9uIGxheWVyMQogICAg
IGxheWVyMi0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0UmVjdFRvSW52YWxpZGF0ZShJ
bnRSZWN0KDAsIDUwLCAxMDAsIDUwKSwgbGF5ZXIxLmdldCgpKTsKLSAgICBsYXllcjItPnByZXBh
cmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CisgICAgbGF5ZXIyLT5wcmVwYXJl
VG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIG5vT2NjbHVzaW9uKTsKIAogICAgIGxh
eWVyMS0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKICAgICBsYXllcjIt
PnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CkBAIC0zOTAsNiArNDAyLDcg
QEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoVGlsZXNMYXllck1hcmtlZERpcnR5
RHVyaW5nUGFpbnRPblByZXZpb3VzTGF5ZXIKIAogICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIHRl
eHR1cmVBbGxvY2F0b3I7CiAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxs
b2NhdG9yKTsKKyAgICBSZWdpb24gbm9PY2NsdXNpb247CiAKICAgICBsYXllcjEtPnNldEJvdW5k
cyhJbnRTaXplKDEwMCwgMjAwKSk7CiAgICAgbGF5ZXIxLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0
KDAsIDAsIDEwMCwgMjAwKSk7CkBAIC0zOTgsOSArNDExLDkgQEAgVEVTVChUaWxlZExheWVyQ2hy
b21pdW1UZXN0LCBwdXNoVGlsZXNMYXllck1hcmtlZERpcnR5RHVyaW5nUGFpbnRPblByZXZpb3Vz
TGF5ZXIKIAogICAgIC8vIEludmFsaWRhdGUgYSB0aWxlIG9uIGxheWVyMgogICAgIGxheWVyMS0+
ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0UmVjdFRvSW52YWxpZGF0ZShJbnRSZWN0KDAs
IDUwLCAxMDAsIDUwKSwgbGF5ZXIyLmdldCgpKTsKLSAgICBsYXllcjEtPnByZXBhcmVUb1VwZGF0
ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CisgICAgbGF5ZXIxLT5wcmVwYXJlVG9VcGRhdGUo
SW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIG5vT2NjbHVzaW9uKTsKIAotICAgIGxheWVyMi0+cHJl
cGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKKyAgICBsYXllcjItPnByZXBh
cmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgbm9PY2NsdXNpb24pOwogCiAgICAg
bGF5ZXIxLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwogICAgIGxheWVy
Mi0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKQEAgLTQyMSw2ICs0MzQs
NyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE91dE9mTWVtb3J5KQog
ICAgIEludFNpemUgY29udGVudEJvdW5kcygzMDAsIDMwMCk7CiAgICAgSW50UmVjdCBjb250ZW50
UmVjdChJbnRQb2ludDo6emVybygpLCBjb250ZW50Qm91bmRzKTsKICAgICBJbnRSZWN0IHZpc2li
bGVSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCk7CisgICAgUmVnaW9uIG5vT2NjbHVzaW9uOwogCiAg
ICAgLy8gV2UgaGF2ZSBlbm91Z2ggbWVtb3J5IGZvciBvbmx5IHRoZSB2aXNpYmxlIHJlY3QsIHNv
IHdlIHdpbGwgcnVuIG91dCBvZiBtZW1vcnkgaW4gZmlyc3QgaWRsZSBwYWludC4KICAgICBpbnQg
bWVtb3J5TGltaXQgPSA0ICogMTAwICogMTAwOyAvLyAyIHRpbGVzLCA0IGJ5dGVzIHBlciBwaXhl
bC4KQEAgLTQzNyw3ICs0NTEsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQ
YWludE91dE9mTWVtb3J5KQogICAgIGxheWVyLT5zZXRCb3VuZHMoY29udGVudEJvdW5kcyk7CiAg
ICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3QodmlzaWJsZVJlY3QpOwogICAgIGxheWVyLT5p
bnZhbGlkYXRlUmVjdChjb250ZW50UmVjdCk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZSh2
aXNpYmxlUmVjdCk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZSh2aXNpYmxlUmVjdCwgbm9P
Y2NsdXNpb24pOwogCiAgICAgLy8gV2Ugc2hvdWxkIG5lZWQgaWRsZS1wYWludGluZyBmb3IgM3gz
IHRpbGVzIHN1cm91bmRpbmcgdmlzaWJsZSB0aWxlLgogICAgIEVYUEVDVF9UUlVFKGxheWVyLT5u
ZWVkc0lkbGVQYWludCh2aXNpYmxlUmVjdCkpOwpAQCAtNDQ5LDggKzQ2Myw4IEBAIFRFU1QoVGls
ZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50T3V0T2ZNZW1vcnkpCiAgICAgRVhQRUNUX1RS
VUUobGF5ZXJJbXBsLT5oYXNUaWxlQXQoMSwgMSkpOwogCiAgICAgdGV4dHVyZU1hbmFnZXItPnVu
cHJvdGVjdEFsbFRleHR1cmVzKCk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZSh2aXNpYmxl
UmVjdCk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZUlkbGUodmlzaWJsZVJlY3QpOworICAg
IGxheWVyLT5wcmVwYXJlVG9VcGRhdGUodmlzaWJsZVJlY3QsIG5vT2NjbHVzaW9uKTsKKyAgICBs
YXllci0+cHJlcGFyZVRvVXBkYXRlSWRsZSh2aXNpYmxlUmVjdCwgbm9PY2NsdXNpb24pOwogCiAg
ICAgLy8gV2Ugc2hvdWxkbid0IHNpZ25hbCB3ZSBuZWVkIGFub3RoZXIgaWRsZSBwYWludCBhZnRl
ciB3ZSBydW4gb3V0IG9mIG1lbW9yeS4KICAgICBFWFBFQ1RfRkFMU0UobGF5ZXItPm5lZWRzSWRs
ZVBhaW50KHZpc2libGVSZWN0KSk7CkBAIC00NjUsNiArNDc5LDcgQEAgVEVTVChUaWxlZExheWVy
Q2hyb21pdW1UZXN0LCBpbnZhbGlkYXRlRnJvbVByZXBhcmUpCiAgICAgUmVmUHRyPEZha2VUaWxl
ZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21p
dW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQg
aW1wbFRocmVhZDsKICAgICBPd25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1wbChh
ZG9wdFB0cihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpKTsKKyAgICBSZWdpb24gbm9PY2Ns
dXNpb247CiAKICAgICBGYWtlVGV4dHVyZUFsbG9jYXRvciB0ZXh0dXJlQWxsb2NhdG9yOwogICAg
IENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcigmdGV4dHVyZUFsbG9jYXRvcik7CkBAIC00NzIsNyAr
NDg3LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpbnZhbGlkYXRlRnJvbVByZXBh
cmUpCiAgICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLCBzbyB0aGlzIGludmFsaWRhdGVz
IGFuZCB0aGVuIHBhaW50cyB0d28gdGlsZXMuCiAgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRTaXpl
KDEwMCwgMjAwKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgMTAw
LCAyMDApKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAy
MDApKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDAp
LCBub09jY2x1c2lvbik7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwg
dXBkYXRlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsK
IApAQCAtNDg1LDE4ICs1MDAsMTggQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpbnZh
bGlkYXRlRnJvbVByZXBhcmUpCiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCkt
PmNsZWFyUHJlcGFyZUNvdW50KCk7CiAgICAgLy8gSW52b2tlIHByZXBhcmVUb1VwZGF0ZSBhZ2Fp
bi4gQXMgdGhlIGxheWVyIGlzIHZhbGlkIHByZXBhcmVUb1VwZGF0ZSBzaG91bGRuJ3QgYmUgaW52
b2tlZCBvbgogICAgIC8vIHRoZSBMYXllclRleHR1cmVVcGRhdGVyLgotICAgIGxheWVyLT5wcmVw
YXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOworICAgIGxheWVyLT5wcmVwYXJl
VG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIG5vT2NjbHVzaW9uKTsKICAgICBFWFBF
Q1RfRVEoMCwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVDb3VudCgp
KTsKIAogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDUwLCA1MCkpOwog
ICAgIC8vIHNldFJlY3RUb0ludmFsaWRhdGUgdHJpZ2dlcnMgaW52YWxpZGF0ZVJlY3QoKSBiZWlu
ZyBpbnZva2VkIGZyb20gcHJlcGFyZVRvVXBkYXRlLgogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0
dXJlVXBkYXRlcigpLT5zZXRSZWN0VG9JbnZhbGlkYXRlKEludFJlY3QoMjUsIDI1LCA1MCwgNTAp
LCBsYXllci5nZXQoKSk7CiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNs
ZWFyUHJlcGFyZUNvdW50KCk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAs
IDAsIDEwMCwgMjAwKSk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAs
IDEwMCwgMjAwKSwgbm9PY2NsdXNpb24pOwogICAgIEVYUEVDVF9FUSgxLCBsYXllci0+ZmFrZUxh
eWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZUNvdW50KCkpOwogICAgIGxheWVyLT5mYWtlTGF5
ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVDb3VudCgpOwogICAgIC8vIFRoZSBsYXll
ciBzaG91bGQgc3RpbGwgYmUgaW52YWxpZCBhcyBwcmVwYXJlVG9VcGRhdGUgaW52b2tlZCBpbnZh
bGlkYXRlLgotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIw
MCkpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCks
IG5vT2NjbHVzaW9uKTsKICAgICBFWFBFQ1RfRVEoMSwgbGF5ZXItPmZha2VMYXllclRleHR1cmVV
cGRhdGVyKCktPnByZXBhcmVDb3VudCgpKTsKIH0KIApAQCAtNTA3LDYgKzUyMiw3IEBAIFRFU1Qo
VGlsZWRMYXllckNocm9taXVtVGVzdCwgdmVyaWZ5VXBkYXRlUmVjdFdoZW5Db250ZW50Qm91bmRz
QXJlU2NhbGVkKQogCiAgICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9
IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDIqMTAyNCoxMDI0LCAxMDI0KTsK
ICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJXaXRoU2NhbGVkQm91bmRzPiBsYXllciA9IGFkb3B0
UmVmKG5ldyBGYWtlVGlsZWRMYXllcldpdGhTY2FsZWRCb3VuZHModGV4dHVyZU1hbmFnZXIuZ2V0
KCkpKTsKKyAgICBSZWdpb24gbm9PY2NsdXNpb247CiAKICAgICBGYWtlVGV4dHVyZUFsbG9jYXRv
ciB0ZXh0dXJlQWxsb2NhdG9yOwogICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcigmdGV4dHVy
ZUFsbG9jYXRvcik7CkBAIC01MjEsMjAgKzUzNywyMCBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QsIHZlcmlmeVVwZGF0ZVJlY3RXaGVuQ29udGVudEJvdW5kc0FyZVNjYWxlZCkKICAgICAv
LyBPbiBmaXJzdCB1cGRhdGUsIHRoZSB1cGRhdGVSZWN0IGluY2x1ZGVzIGFsbCB0aWxlcywgZXZl
biBiZXlvbmQgdGhlIGJvdW5kYXJpZXMgb2YgdGhlIGxheWVyLgogICAgIC8vIEhvd2V2ZXIsIGl0
IHNob3VsZCBzdGlsbCBiZSBpbiBsYXllciBzcGFjZSwgbm90IGNvbnRlbnQgc3BhY2UuCiAgICAg
bGF5ZXItPmludmFsaWRhdGVSZWN0KGNvbnRlbnRCb3VuZHMpOwotICAgIGxheWVyLT5wcmVwYXJl
VG9VcGRhdGUoY29udGVudEJvdW5kcyk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250
ZW50Qm91bmRzLCBub09jY2x1c2lvbik7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNv
dXJjZXMoMCwgdXBkYXRlcik7CiAgICAgRVhQRUNUX0ZMT0FUX1JFQ1RfRVEoRmxvYXRSZWN0KDAs
IDAsIDMwMCwgMzAwICogMC44KSwgbGF5ZXItPnVwZGF0ZVJlY3QoKSk7CiAKICAgICAvLyBBZnRl
ciB0aGUgdGlsZXMgYXJlIHVwZGF0ZWQgb25jZSwgYW5vdGhlciBpbnZhbGlkYXRlIG9ubHkgbmVl
ZHMgdG8gdXBkYXRlIHRoZSBib3VuZHMgb2YgdGhlIGxheWVyLgogICAgIGxheWVyLT5pbnZhbGlk
YXRlUmVjdChjb250ZW50Qm91bmRzKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRl
bnRCb3VuZHMpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcywgbm9P
Y2NsdXNpb24pOwogICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0
ZXIpOwogICAgIEVYUEVDVF9GTE9BVF9SRUNUX0VRKEZsb2F0UmVjdChsYXllckJvdW5kcyksIGxh
eWVyLT51cGRhdGVSZWN0KCkpOwogCiAgICAgLy8gUGFydGlhbCByZS1wYWludCBzaG91bGQgYWxz
byBiZSByZXByZXNlbnRlZCBieSB0aGUgdXBkYXRlUmVjdCBpbiBsYXllciBzcGFjZSwgbm90IGNv
bnRlbnQgc3BhY2UuCiAgICAgSW50UmVjdCBwYXJ0aWFsRGFtYWdlKDMwLCAxMDAsIDEwLCAxMCk7
CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KHBhcnRpYWxEYW1hZ2UpOwotICAgIGxheWVyLT5w
cmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcyk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0
ZShjb250ZW50Qm91bmRzLCBub09jY2x1c2lvbik7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAgICAgRVhQRUNUX0ZMT0FUX1JFQ1RfRVEoRmxvYXRS
ZWN0KDQ1LCA4MCwgMTUsIDgpLCBsYXllci0+dXBkYXRlUmVjdCgpKTsKIH0KQEAgLTU0OCw2ICs1
NjQsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZlcmlmeUludmFsaWRhdGlvbldo
ZW5Db250ZW50c1NjYWxlQ2hhbmdlcykKIAogICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1
cmVBbGxvY2F0b3I7CiAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2Nh
dG9yKTsKKyAgICBSZWdpb24gbm9PY2NsdXNpb247CiAKICAgICAvLyBDcmVhdGUgYSBsYXllciB3
aXRoIG9uZSB0aWxlLgogICAgIGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSgxMDAsIDEwMCkpOwpA
QCAtNTU3LDcgKzU3NCw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdmVyaWZ5SW52
YWxpZGF0aW9uV2hlbkNvbnRlbnRzU2NhbGVDaGFuZ2VzKQogICAgIEVYUEVDVF9GTE9BVF9SRUNU
X0VRKEZsb2F0UmVjdCgwLCAwLCAxMDAsIDEwMCksIGxheWVyLT5sYXN0TmVlZHNEaXNwbGF5UmVj
dCgpKTsKIAogICAgIC8vIFB1c2ggdGhlIHRpbGVzIHRvIHRoZSBpbXBsIHNpZGUgYW5kIGNoZWNr
IHRoYXQgdGhlcmUgaXMgZXhhY3RseSBvbmUuCi0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJ
bnRSZWN0KDAsIDAsIDEwMCwgMTAwKSk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRS
ZWN0KDAsIDAsIDEwMCwgMTAwKSwgbm9PY2NsdXNpb24pOwogICAgIGxheWVyLT51cGRhdGVDb21w
b3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1Rv
KGxheWVySW1wbC5nZXQoKSk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXJJbXBsLT5oYXNUaWxlQXQo
MCwgMCkpOwpAQCAtNTcxLDcgKzU4OCw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
dmVyaWZ5SW52YWxpZGF0aW9uV2hlbkNvbnRlbnRzU2NhbGVDaGFuZ2VzKQogICAgIEVYUEVDVF9G
TE9BVF9SRUNUX0VRKEZsb2F0UmVjdCgwLCAwLCAxMDAsIDEwMCksIGxheWVyLT5sYXN0TmVlZHNE
aXNwbGF5UmVjdCgpKTsKIAogICAgIC8vIFRoZSBpbXBsIHNpZGUgc2hvdWxkIGdldCAyeDIgdGls
ZXMgbm93LgotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAyMDAsIDIw
MCkpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAyMDAsIDIwMCks
IG5vT2NjbHVzaW9uKTsKICAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1
cGRhdGVyKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwog
ICAgIEVYUEVDVF9UUlVFKGxheWVySW1wbC0+aGFzVGlsZUF0KDAsIDApKTsKQEAgLTU4Miw3ICs1
OTksNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZlcmlmeUludmFsaWRhdGlvbldo
ZW5Db250ZW50c1NjYWxlQ2hhbmdlcykKICAgICAvLyBJbnZhbGlkYXRlIHRoZSBlbnRpcmUgbGF5
ZXIgYWdhaW4sIGJ1dCBkbyBub3QgcGFpbnQuIEFsbCB0aWxlcyBzaG91bGQgYmUgZ29uZSBub3cg
ZnJvbSB0aGUKICAgICAvLyBpbXBsIHNpZGUuCiAgICAgbGF5ZXItPnNldE5lZWRzRGlzcGxheSgp
OwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAwLCAwKSk7CisgICAg
bGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDAsIDApLCBub09jY2x1c2lvbik7
CiAgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAgICAg
bGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKICAgICBFWFBFQ1RfRkFM
U0UobGF5ZXJJbXBsLT5oYXNUaWxlQXQoMCwgMCkpOwpAQCAtNjQ0LDEzMiArNjYxLDE1IEBAIFRF
U1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgc2tpcHNEcmF3R2V0c1Jlc2V0KQogICAgIFdlYktp
dDo6V2ViQ29tcG9zaXRvcjo6c2h1dGRvd24oKTsKIH0KIAotVEVTVChUaWxlZExheWVyQ2hyb21p
dW1UZXN0LCBsYXllckFkZHNTZWxmVG9PY2NsdWRlZFJlZ2lvbikKLXsKLSAgICBPd25QdHI8VGV4
dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEw
MjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOwotICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNo
cm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1
cmVNYW5hZ2VyLmdldCgpKSk7Ci0KLSAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAsIHNv
IHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxlcyBpbiB2YXJpb3VzIHdh
eXMuCi0KLSAgICBSZWdpb24gb2NjbHVkZWQ7Ci0gICAgSW50UmVjdCBjb250ZW50Qm91bmRzID0g
SW50UmVjdCgwLCAwLCAxMDAsIDIwMCk7Ci0gICAgSW50UmVjdCB2aXNpYmxlQm91bmRzID0gSW50
UmVjdCgwLCAwLCAxMDAsIDE1MCk7Ci0KLSAgICBsYXllci0+c2V0Qm91bmRzKGNvbnRlbnRCb3Vu
ZHMuc2l6ZSgpKTsKLSAgICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdCh2aXNpYmxlQm91bmRz
KTsKLSAgICBsYXllci0+c2V0RHJhd09wYWNpdHkoMSk7Ci0KLSAgICAvLyBUaGUgc2NyZWVuU3Bh
Y2VUcmFuc2Zvcm0gaXMgdmVyaWZpZWQgaW4gQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdHMKLSAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBzY3JlZW5TcGFjZVRyYW5zZm9ybTsKLSAgICBsYXllci0+
c2V0U2NyZWVuU3BhY2VUcmFuc2Zvcm0oc2NyZWVuU3BhY2VUcmFuc2Zvcm0pOwotCi0gICAgLy8g
SWYgdGhlIGxheWVyIGlzIG9wYXF1ZSB0aGVuIHRoZSBvY2NsdWRlZCByZWdpb24gc2hvdWxkIGJl
IHRoZSB3aG9sZSBsYXllcidzIHZpc2libGUgcmVnaW9uLgotICAgIGxheWVyLT5zZXRPcGFxdWUo
dHJ1ZSk7Ci0gICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KGNvbnRlbnRCb3VuZHMpOwotICAgIGxh
eWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcyk7Ci0KLSAgICBvY2NsdWRlZCA9IFJl
Z2lvbigpOwotICAgIGxheWVyLT5hZGRTZWxmVG9PY2NsdWRlZFNjcmVlblNwYWNlKG9jY2x1ZGVk
KTsKLSAgICBFWFBFQ1RfRVFfUkVDVCh2aXNpYmxlQm91bmRzLCBvY2NsdWRlZC5ib3VuZHMoKSk7
Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2NsdWRlZC5yZWN0cygpLnNpemUoKSk7Ci0KLSAgICAvLyBJ
ZiB0aGUgbGF5ZXIgaXMgbm90IG9wYXF1ZSB0aGVuIHRoZSBvY2NsdWRlZCByZWdpb24gc2hvdWxk
IGJlIGVtcHR5LgotICAgIGxheWVyLT5zZXRPcGFxdWUoZmFsc2UpOwotICAgIGxheWVyLT5pbnZh
bGlkYXRlUmVjdChjb250ZW50Qm91bmRzKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNv
bnRlbnRCb3VuZHMpOwotCi0gICAgb2NjbHVkZWQgPSBSZWdpb24oKTsKLSAgICBsYXllci0+YWRk
U2VsZlRvT2NjbHVkZWRTY3JlZW5TcGFjZShvY2NsdWRlZCk7Ci0gICAgRVhQRUNUX0VRX1JFQ1Qo
SW50UmVjdCgpLCBvY2NsdWRlZC5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDB1LCBvY2NsdWRl
ZC5yZWN0cygpLnNpemUoKSk7Ci0KLSAgICAvLyBJZiB0aGUgbGF5ZXIgcGFpbnRzIG9wYXF1ZSBj
b250ZW50LCB0aGVuIHRoZSBvY2NsdWRlZCByZWdpb24gc2hvdWxkIG1hdGNoIHRoZSB2aXNpYmxl
IG9wYXF1ZSBjb250ZW50LgotICAgIEludFJlY3Qgb3BhcXVlUGFpbnRSZWN0ID0gSW50UmVjdCgx
MCwgMTAsIDkwLCAxOTApOwotICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5z
ZXRPcGFxdWVQYWludFJlY3Qob3BhcXVlUGFpbnRSZWN0KTsKLSAgICBsYXllci0+aW52YWxpZGF0
ZVJlY3QoY29udGVudEJvdW5kcyk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50
Qm91bmRzKTsKLQotICAgIG9jY2x1ZGVkID0gUmVnaW9uKCk7Ci0gICAgbGF5ZXItPmFkZFNlbGZU
b09jY2x1ZGVkU2NyZWVuU3BhY2Uob2NjbHVkZWQpOwotICAgIEVYUEVDVF9FUV9SRUNUKGludGVy
c2VjdGlvbihvcGFxdWVQYWludFJlY3QsIHZpc2libGVCb3VuZHMpLCBvY2NsdWRlZC5ib3VuZHMo
KSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2NsdWRlZC5yZWN0cygpLnNpemUoKSk7Ci0KLSAgICAv
LyBJZiB3ZSBwYWludCBhZ2FpbiB3aXRob3V0IGludmFsaWRhdGluZywgdGhlIHNhbWUgc3R1ZmYg
c2hvdWxkIGJlIG9jY2x1ZGVkLgotICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigp
LT5zZXRPcGFxdWVQYWludFJlY3QoSW50UmVjdCgpKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBk
YXRlKGNvbnRlbnRCb3VuZHMpOwotCi0gICAgb2NjbHVkZWQgPSBSZWdpb24oKTsKLSAgICBsYXll
ci0+YWRkU2VsZlRvT2NjbHVkZWRTY3JlZW5TcGFjZShvY2NsdWRlZCk7Ci0gICAgRVhQRUNUX0VR
X1JFQ1QoaW50ZXJzZWN0aW9uKG9wYXF1ZVBhaW50UmVjdCwgdmlzaWJsZUJvdW5kcyksIG9jY2x1
ZGVkLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1ZGVkLnJlY3RzKCkuc2l6ZSgp
KTsKLQotICAgIC8vIElmIHdlIHJlcGFpbnQgYSBub24tb3BhcXVlIHBhcnQgb2YgdGhlIHRpbGUs
IHRoZW4gaXQgc2hvdWxkbid0IGxvc2UgaXRzIG9wYXF1ZS1uZXNzLiBBbmQgb3RoZXIgdGlsZXMg
c2hvdWxkCi0gICAgLy8gbm90IGJlIGFmZmVjdGVkLgotICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0
dXJlVXBkYXRlcigpLT5zZXRPcGFxdWVQYWludFJlY3QoSW50UmVjdCgpKTsKLSAgICBsYXllci0+
aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxLCAxKSk7Ci0gICAgbGF5ZXItPnByZXBhcmVU
b1VwZGF0ZShjb250ZW50Qm91bmRzKTsKLQotICAgIG9jY2x1ZGVkID0gUmVnaW9uKCk7Ci0gICAg
bGF5ZXItPmFkZFNlbGZUb09jY2x1ZGVkU2NyZWVuU3BhY2Uob2NjbHVkZWQpOwotICAgIEVYUEVD
VF9FUV9SRUNUKGludGVyc2VjdGlvbihvcGFxdWVQYWludFJlY3QsIHZpc2libGVCb3VuZHMpLCBv
Y2NsdWRlZC5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2NsdWRlZC5yZWN0cygpLnNp
emUoKSk7Ci0KLSAgICAvLyBJZiB3ZSByZXBhaW50IGFuIG9wYXF1ZSBwYXJ0IG9mIHRoZSB0aWxl
LCB0aGVuIGl0IHNob3VsZCBsb3NlIGl0cyBvcGFxdWUtbmVzcy4gQnV0IG90aGVyIHRpbGVzIHNo
b3VsZCBzdGlsbAotICAgIC8vIG5vdCBiZSBhZmZlY3RlZC4KLSAgICBsYXllci0+ZmFrZUxheWVy
VGV4dHVyZVVwZGF0ZXIoKS0+c2V0T3BhcXVlUGFpbnRSZWN0KEludFJlY3QoKSk7Ci0gICAgbGF5
ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMTAsIDEwLCAxLCAxKSk7Ci0gICAgbGF5ZXItPnBy
ZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzKTsKLQotICAgIG9jY2x1ZGVkID0gUmVnaW9uKCk7
Ci0gICAgbGF5ZXItPmFkZFNlbGZUb09jY2x1ZGVkU2NyZWVuU3BhY2Uob2NjbHVkZWQpOwotICAg
IEVYUEVDVF9FUV9SRUNUKGludGVyc2VjdGlvbihJbnRSZWN0KDEwLCAxMDAsIDkwLCAxMDApLCB2
aXNpYmxlQm91bmRzKSwgb2NjbHVkZWQuYm91bmRzKCkpOwotICAgIEVYUEVDVF9FUSgxdSwgb2Nj
bHVkZWQucmVjdHMoKS5zaXplKCkpOwotCi0gICAgLy8gSWYgdGhlIGxheWVyIGlzIHRyYW5zZm9y
bWVkIHRoZW4gdGhlIHJlc3VsdGluZyBvY2NsdWRlZCBhcmVhIG5lZWRzIHRvIGJlIHRyYW5zZm9y
bWVkIHRvIGl0cyB0YXJnZXQgc3BhY2UuCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNm
b3JtOwotICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoY29udGVudEJvdW5kcy53aWR0aCgpIC8gMi4w
LCBjb250ZW50Qm91bmRzLmhlaWdodCgpIC8gMi4wKTsKLSAgICB0cmFuc2Zvcm0ucm90YXRlKDkw
KTsKLSAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKC1jb250ZW50Qm91bmRzLndpZHRoKCkgLyAyLjAs
IC1jb250ZW50Qm91bmRzLmhlaWdodCgpIC8gMi4wKTsKLSAgICB0cmFuc2Zvcm0udHJhbnNsYXRl
KDEwLCAxMCk7Ci0gICAgc2NyZWVuU3BhY2VUcmFuc2Zvcm0udHJhbnNsYXRlKGNvbnRlbnRCb3Vu
ZHMud2lkdGgoKSAvIDIuMCwgY29udGVudEJvdW5kcy5oZWlnaHQoKSAvIDIuMCk7Ci0gICAgc2Ny
ZWVuU3BhY2VUcmFuc2Zvcm0gKj0gdHJhbnNmb3JtOwotICAgIHNjcmVlblNwYWNlVHJhbnNmb3Jt
LnRyYW5zbGF0ZSgtY29udGVudEJvdW5kcy53aWR0aCgpIC8gMi4wLCAtY29udGVudEJvdW5kcy5o
ZWlnaHQoKSAvIDIuMCk7Ci0gICAgbGF5ZXItPnNldFNjcmVlblNwYWNlVHJhbnNmb3JtKHNjcmVl
blNwYWNlVHJhbnNmb3JtKTsKLSAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+
c2V0T3BhcXVlUGFpbnRSZWN0KG9wYXF1ZVBhaW50UmVjdCk7Ci0gICAgbGF5ZXItPmludmFsaWRh
dGVSZWN0KG9wYXF1ZVBhaW50UmVjdCk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250
ZW50Qm91bmRzKTsKLQotICAgIG9jY2x1ZGVkID0gUmVnaW9uKCk7Ci0gICAgbGF5ZXItPmFkZFNl
bGZUb09jY2x1ZGVkU2NyZWVuU3BhY2Uob2NjbHVkZWQpOwotICAgIEVYUEVDVF9FUV9SRUNUKHNj
cmVlblNwYWNlVHJhbnNmb3JtLm1hcFJlY3QoaW50ZXJzZWN0aW9uKG9wYXF1ZVBhaW50UmVjdCwg
dmlzaWJsZUJvdW5kcykpLCBvY2NsdWRlZC5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBv
Y2NsdWRlZC5yZWN0cygpLnNpemUoKSk7Ci0KLSAgICAvLyBCdXQgYSBub24tYXhpcy1hbGlnbmVk
IHRyYW5zZm9ybSBkb2VzIG5vdCBnZXQgY29uc2lkZXJlZCBmb3Igb2NjbHVzaW9uLgotICAgIHRy
YW5zZm9ybS50cmFuc2xhdGUoY29udGVudEJvdW5kcy53aWR0aCgpIC8gMi4wLCBjb250ZW50Qm91
bmRzLmhlaWdodCgpIC8gMi4wKTsKLSAgICB0cmFuc2Zvcm0ucm90YXRlKDUpOwotICAgIHRyYW5z
Zm9ybS50cmFuc2xhdGUoLWNvbnRlbnRCb3VuZHMud2lkdGgoKSAvIDIuMCwgLWNvbnRlbnRCb3Vu
ZHMuaGVpZ2h0KCkgLyAyLjApOwotICAgIHNjcmVlblNwYWNlVHJhbnNmb3JtLnRyYW5zbGF0ZShj
b250ZW50Qm91bmRzLndpZHRoKCkgLyAyLjAsIGNvbnRlbnRCb3VuZHMuaGVpZ2h0KCkgLyAyLjAp
OwotICAgIHNjcmVlblNwYWNlVHJhbnNmb3JtICo9IHRyYW5zZm9ybTsKLSAgICBzY3JlZW5TcGFj
ZVRyYW5zZm9ybS50cmFuc2xhdGUoLWNvbnRlbnRCb3VuZHMud2lkdGgoKSAvIDIuMCwgLWNvbnRl
bnRCb3VuZHMuaGVpZ2h0KCkgLyAyLjApOwotICAgIGxheWVyLT5zZXRTY3JlZW5TcGFjZVRyYW5z
Zm9ybShzY3JlZW5TcGFjZVRyYW5zZm9ybSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShj
b250ZW50Qm91bmRzKTsKLQotICAgIG9jY2x1ZGVkID0gUmVnaW9uKCk7Ci0gICAgbGF5ZXItPmFk
ZFNlbGZUb09jY2x1ZGVkU2NyZWVuU3BhY2Uob2NjbHVkZWQpOwotICAgIC8vIEZJWE1FOiBJZiB3
ZSBmaW5kIGFuIG9wYXF1ZSByZWN0IGNvbnRhaW5lZCBpbiB0aGUgcm90YXRlZCBub24tYXhpcy1h
bGlnbmVkIHJlY3QsIHRoZW4KLSAgICAvLyB0aGlzIHdvbid0IGJlIGFuIGVtcHR5IHJlc3VsdC4K
LSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KCksIG9jY2x1ZGVkLmJvdW5kcygpKTsKLSAgICBF
WFBFQ1RfRVEoMHUsIG9jY2x1ZGVkLnJlY3RzKCkuc2l6ZSgpKTsKLX0KLQogVEVTVChUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCByZXNpemVUb1NtYWxsZXIpCiB7CiAgICAgT3duUHRyPFRleHR1cmVN
YW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNjAqMTAyNCox
MDI0LCA2MCoxMDI0KjEwMjQsIDEwMjQpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9t
aXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVN
YW5hZ2VyLmdldCgpKSk7CisgICAgUmVnaW9uIG5vT2NjbHVzaW9uOwogCiAgICAgbGF5ZXItPnNl
dEJvdW5kcyhJbnRTaXplKDcwMCwgNzAwKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KElu
dFJlY3QoMCwgMCwgNzAwLCA3MDApKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJl
Y3QoMCwgMCwgNzAwLCA3MDApKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3Qo
MCwgMCwgNzAwLCA3MDApLCBub09jY2x1c2lvbik7CiAKICAgICBsYXllci0+c2V0Qm91bmRzKElu
dFNpemUoMjAwLCAyMDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAw
LCAyMDAsIDIwMCkpOwpAQCAtODQ2LDQgKzc0NiwxNzggQEAgVEVTVChUaWxlZExheWVyQ2hyb21p
dW1UZXN0LCBwYXJ0aWFsVXBkYXRlcykKICAgICBXZWJLaXQ6OldlYkNvbXBvc2l0b3I6OnNodXRk
b3duKCk7CiB9CiAKK1RFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0
aG91dE9jY2x1c2lvbikKK3sKKyAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5h
Z2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEw
MjQpOworICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVm
KG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CisgICAg
UmVnaW9uIG9jY2x1ZGVkOworCisgICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLCBzbyB0
aGlzIGludmFsaWRhdGVzIGFuZCB0aGVuIHBhaW50cyB0d28gdGlsZXMuCisgICAgbGF5ZXItPnNl
dEJvdW5kcyhJbnRTaXplKDEwMCwgMjAwKSk7CisKKyAgICBsYXllci0+aW52YWxpZGF0ZVJlY3Qo
SW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50
UmVjdCgwLCAwLCAxMDAsIDIwMCksIG9jY2x1ZGVkKTsKKyAgICBFWFBFQ1RfRVEoMiwgbGF5ZXIt
PmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7Cit9CisKK1RF
U1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbikKK3sK
KyAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFn
ZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOworICAgIFJlZlB0cjxG
YWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXll
ckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CisgICAgUmVnaW9uIG9jY2x1ZGVkOwor
CisgICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLgorCisgICAgbGF5ZXItPnNldEJvdW5k
cyhJbnRTaXplKDYwMCwgNjAwKSk7CisKKyAgICBvY2NsdWRlZCA9IEludFJlY3QoMjAwLCAyMDAs
IDMwMCwgMTAwKTsKKyAgICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KEludFBv
aW50KCksIGxheWVyLT5ib3VuZHMoKSkpOworICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRS
ZWN0KDAsIDAsIDYwMCwgNjAwKSk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0
KDAsIDAsIDYwMCwgNjAwKSwgb2NjbHVkZWQpOworICAgIEVYUEVDVF9FUSgzNi0zLCBsYXllci0+
ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKKworICAgIGxh
eWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVSZWN0Q291bnQoKTsK
KworICAgIG9jY2x1ZGVkID0gSW50UmVjdCgyNTAsIDIwMCwgMzAwLCAxMDApOworICAgIGxheWVy
LT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CisgICAgbGF5ZXItPnBy
ZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgb2NjbHVkZWQpOworICAgIEVY
UEVDVF9FUSgzNi0yLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJl
Y3RDb3VudCgpKTsKKworICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVh
clByZXBhcmVSZWN0Q291bnQoKTsKKworICAgIG9jY2x1ZGVkID0gSW50UmVjdCgyNTAsIDI1MCwg
MzAwLCAxMDApOworICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwg
NjAwKSk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAw
KSwgb2NjbHVkZWQpOworICAgIEVYUEVDVF9FUSgzNiwgbGF5ZXItPmZha2VMYXllclRleHR1cmVV
cGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7Cit9CisKK1RFU1QoVGlsZWRMYXllckNocm9t
aXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFZpc2libGl0eUNvbnN0cmFpbnRz
KQoreworICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJl
TWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAyKjEwMjQqMTAyNCwgMTAyNCk7CisgICAgUmVm
UHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxl
ZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKKyAgICBSZWdpb24gb2NjbHVk
ZWQ7CisKKyAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAuCisKKyAgICBsYXllci0+c2V0
Qm91bmRzKEludFNpemUoNjAwLCA2MDApKTsKKworICAgIC8vIFRoZSBwYXJ0aWFsbHkgb2NjbHVk
ZWQgdGlsZXMgKGJ5IHRoZSAxNTAgb2NjbHVzaW9uIGhlaWdodCkgYXJlIHZpc2libGUgYmV5b25k
IHRoZSBvY2NsdXNpb24sIHNvIG5vdCBjdWxsZWQuCisgICAgb2NjbHVkZWQgPSBJbnRSZWN0KDIw
MCwgMjAwLCAzMDAsIDE1MCk7CisgICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3QoSW50UmVj
dCgwLCAwLCA2MDAsIDM2MCkpOworICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAs
IDAsIDYwMCwgNjAwKSk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAs
IDYwMCwgNjAwKSwgb2NjbHVkZWQpOworICAgIEVYUEVDVF9FUSgzNi0zLCBsYXllci0+ZmFrZUxh
eWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKKworICAgIGxheWVyLT5m
YWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVSZWN0Q291bnQoKTsKKworICAg
IC8vIE5vdyB0aGUgdmlzaWJsZSByZWdpb24gc3RvcHMgYXQgdGhlIGVkZ2Ugb2YgdGhlIG9jY2x1
c2lvbiBzbyB0aGUgcGFydGx5IHZpc2libGUgdGlsZXMgYmVjb21lIGZ1bGx5IG9jY2x1ZGVkLgor
ICAgIG9jY2x1ZGVkID0gSW50UmVjdCgyMDAsIDIwMCwgMzAwLCAxNTApOworICAgIGxheWVyLT5z
ZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoMCwgMCwgNjAwLCAzNTApKTsKKyAgICBsYXllci0+
aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOworICAgIGxheWVyLT5wcmVw
YXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksIG9jY2x1ZGVkKTsKKyAgICBFWFBF
Q1RfRVEoMzYtNiwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0
Q291bnQoKSk7CisKKyAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQ
cmVwYXJlUmVjdENvdW50KCk7CisKKyAgICAvLyBOb3cgdGhlIHZpc2libGUgcmVnaW9uIGlzIGV2
ZW4gc21hbGxlciB0aGFuIHRoZSBvY2NsdXNpb24sIGl0IHNob3VsZCBoYXZlIHRoZSBzYW1lIHJl
c3VsdC4KKyAgICBvY2NsdWRlZCA9IEludFJlY3QoMjAwLCAyMDAsIDMwMCwgMTUwKTsKKyAgICBs
YXllci0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgMzQwKSk7CisgICAg
bGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKKyAgICBsYXll
ci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCBvY2NsdWRlZCk7Cisg
ICAgRVhQRUNUX0VRKDM2LTYsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVw
YXJlUmVjdENvdW50KCkpOworfQorCitURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVz
Tm90UGFpbnRlZFdpdGhvdXRJbnZhbGlkYXRpb24pCit7CisgICAgT3duUHRyPFRleHR1cmVNYW5h
Z2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQs
IDIqMTAyNCoxMDI0LCAxMDI0KTsKKyAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4g
bGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdl
ci5nZXQoKSkpOworICAgIFJlZ2lvbiBvY2NsdWRlZDsKKworICAgIC8vIFRoZSB0aWxlIHNpemUg
aXMgMTAweDEwMC4KKworICAgIGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSg2MDAsIDYwMCkpOwor
CisgICAgb2NjbHVkZWQgPSBJbnRSZWN0KDIwMCwgMjAwLCAzMDAsIDEwMCk7CisgICAgbGF5ZXIt
PnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOworICAgIGxheWVy
LT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CisgICAgbGF5ZXItPnBy
ZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgb2NjbHVkZWQpOworICAgIEVY
UEVDVF9FUSgzNi0zLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJl
Y3RDb3VudCgpKTsKKworICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVh
clByZXBhcmVSZWN0Q291bnQoKTsKKworICAgIC8vIFJlcGFpbnQgd2l0aG91dCBtYXJraW5nIGl0
IGRpcnR5LgorICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDYw
MCksIG9jY2x1ZGVkKTsKKyAgICBFWFBFQ1RfRVEoMCwgbGF5ZXItPmZha2VMYXllclRleHR1cmVV
cGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7Cit9CisKK1RFU1QoVGlsZWRMYXllckNocm9t
aXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFRyYW5zZm9ybXMpCit7CisgICAg
T3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpj
cmVhdGUoNCoxMDI0KjEwMjQsIDIqMTAyNCoxMDI0LCAxMDI0KTsKKyAgICBSZWZQdHI8RmFrZVRp
bGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJv
bWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOworICAgIFJlZ2lvbiBvY2NsdWRlZDsKKworICAg
IC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMC4KKworICAgIC8vIFRoaXMgbWFrZXMgc3VyZSB0
aGUgcGFpbnRpbmcgd29ya3Mgd2hlbiB0aGUgb2NjbHVkZWQgcmVnaW9uIChpbiBzY3JlZW4gc3Bh
Y2UpCisgICAgLy8gaXMgdHJhbnNmb3JtZWQgZGlmZmVyZW50bHkgdGhhbiB0aGUgbGF5ZXIuCisg
ICAgbGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDYwMCwgNjAwKSk7CisgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggc2NyZWVuVHJhbnNmb3JtOworICAgIHNjcmVlblRyYW5zZm9ybS5zY2FsZSgwLjUp
OworICAgIGxheWVyLT5zZXRTY3JlZW5TcGFjZVRyYW5zZm9ybShzY3JlZW5UcmFuc2Zvcm0pOwor
CisgICAgb2NjbHVkZWQgPSBJbnRSZWN0KDEwMCwgMTAwLCAxNTAsIDUwKTsKKyAgICBsYXllci0+
c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KEludFBvaW50KCksIGxheWVyLT5ib3VuZHMoKSkp
OworICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7Cisg
ICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgb2NjbHVk
ZWQpOworICAgIEVYUEVDVF9FUSgzNi0zLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIo
KS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKK30KKworVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0
LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kU2NhbGluZykKK3sKKyAgICBPd25QdHI8VGV4
dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEw
MjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOworICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNo
cm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1
cmVNYW5hZ2VyLmdldCgpKSk7CisgICAgUmVnaW9uIG9jY2x1ZGVkOworCisgICAgLy8gVGhlIHRp
bGUgc2l6ZSBpcyAxMDB4MTAwLgorCisgICAgLy8gVGhpcyBtYWtlcyBzdXJlIHRoZSBwYWludGlu
ZyB3b3JrcyB3aGVuIHRoZSBjb250ZW50IHNwYWNlIGlzIHNjYWxlZCB0bworICAgIC8vIGEgZGlm
ZmVyZW50IGxheWVyIHNwYWNlLiBJbiB0aGlzIGNhc2UgdGlsZXMgYXJlIHNjYWxlZCB0byBiZSAy
MDB4MjAwCisgICAgLy8gcGl4ZWxzLCB3aGljaCBtZWFucyBub25lIHNob3VsZCBiZSBvY2NsdWRl
ZC4KKyAgICBsYXllci0+c2V0Q29udGVudHNTY2FsZSgwLjUpOworICAgIGxheWVyLT5zZXRCb3Vu
ZHMoSW50U2l6ZSg2MDAsIDYwMCkpOworCisgICAgb2NjbHVkZWQgPSBJbnRSZWN0KDIwMCwgMjAw
LCAzMDAsIDEwMCk7CisgICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdChJbnRQ
b2ludCgpLCBsYXllci0+Ym91bmRzKCkpKTsKKyAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50
UmVjdCgwLCAwLCA2MDAsIDYwMCkpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVj
dCgwLCAwLCA2MDAsIDYwMCksIG9jY2x1ZGVkKTsKKyAgICAvLyBUaGUgY29udGVudCBpcyBoYWxm
IHRoZSBzaXplIG9mIHRoZSBsYXllciAoc28gdGhlIG51bWJlciBvZiB0aWxlcyBpcyBmZXdlciku
CisgICAgLy8gSW4gdGhpcyBjYXNlLCB0aGUgY29udGVudCBpcyAzMDB4MzAwLCBhbmQgc2luY2Ug
dGhlIHRpbGUgc2l6ZSBpcyAxMDAsIHRoZQorICAgIC8vIG51bWJlciBvZiB0aWxlcyAzeDMuCisg
ICAgRVhQRUNUX0VRKDksIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJl
UmVjdENvdW50KCkpOworCisgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNs
ZWFyUHJlcGFyZVJlY3RDb3VudCgpOworCisgICAgLy8gVGhpcyBtYWtlcyBzdXJlIHRoZSBwYWlu
dGluZyB3b3JrcyB3aGVuIHRoZSBjb250ZW50IHNwYWNlIGlzIHNjYWxlZCB0bworICAgIC8vIGEg
ZGlmZmVyZW50IGxheWVyIHNwYWNlLiBJbiB0aGlzIGNhc2UgdGhlIG9jY2x1ZGVkIHJlZ2lvbiBj
YXRjaGVzIHRoZQorICAgIC8vIGJsb3duIHVwIHRpbGVzLgorICAgIG9jY2x1ZGVkID0gSW50UmVj
dCgyMDAsIDIwMCwgMzAwLCAyMDApOworICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KElu
dFJlY3QoSW50UG9pbnQoKSwgbGF5ZXItPmJvdW5kcygpKSk7CisgICAgbGF5ZXItPmludmFsaWRh
dGVSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBk
YXRlKEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCBvY2NsdWRlZCk7CisgICAgRVhQRUNUX0VRKDkt
MSwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7
CisKKyAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQcmVwYXJlUmVj
dENvdW50KCk7CisKKyAgICAvLyBUaGlzIG1ha2VzIHN1cmUgY29udGVudCBzY2FsaW5nIGFuZCB0
cmFuc2Zvcm1zIHdvcmsgdG9nZXRoZXIuCisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggc2NyZWVu
VHJhbnNmb3JtOworICAgIHNjcmVlblRyYW5zZm9ybS5zY2FsZSgwLjUpOworICAgIGxheWVyLT5z
ZXRTY3JlZW5TcGFjZVRyYW5zZm9ybShzY3JlZW5UcmFuc2Zvcm0pOworCisgICAgb2NjbHVkZWQg
PSBJbnRSZWN0KDEwMCwgMTAwLCAxNTAsIDEwMCk7CisgICAgbGF5ZXItPnNldFZpc2libGVMYXll
clJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBsYXllci0+Ym91bmRzKCkpKTsKKyAgICBsYXllci0+
aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOworICAgIGxheWVyLT5wcmVw
YXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksIG9jY2x1ZGVkKTsKKyAgICBFWFBF
Q1RfRVEoOS0xLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RD
b3VudCgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130623</attachid>
            <date>2012-03-07 07:33:50 -0800</date>
            <delta_ts>2012-03-07 11:22:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76838-20120307103349.patch</filename>
            <type>text/plain</type>
            <size>58962</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMDUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTZkN2U1NjU4ZTIyYWZj
NmUxMjc1ZjlkNzk2ZTUxNTk0NjcyNGMwNy4uZmM4MGNlNWMyNDJiODZkNjk3YzZjMjM3YzljMDg2
Y2E3ZDRhZWZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTAzLTAyICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQ3Vs
bCBvY2NsdWRlZCB0aWxlcyBkdXJpbmcgcGFpbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc2ODM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVXNpbmcgQ0NPY2NsdXNpb25UcmFja2VyIGluc3RlYWQgb2Yg
dGhlIG9sZCBjdXN0b20gcGFpbnQgb2NjbHVzaW9uCisgICAgICAgIHRyYWNraW5nLiBTdG9wcyBw
YWludGluZyB0aWxlcyB3aGVuIGV2ZXJ5dGhpbmcgYmVpbmcgcGFpbnRlZCBpbiB0aGUKKyAgICAg
ICAgdGlsZSBpcyBvY2NsdWRlZC4KKworICAgICAgICBDQ09jY2x1c2lvblRyYWNrZXIgb25seSB1
c2VzIExheWVyOjpvcGFxdWUoKSBmb3IgZGV0ZXJtaW5pbmcKKyAgICAgICAgb2NjbHVzaW9uIHNv
IGZhci4gVGhlIExheWVyOjphZGRTZWxmVG9PY2NsdWRlZFJlZ2lvbiBpcyBiZWluZworICAgICAg
ICByZXBsYWNlZCBieSBhIHN1cGVyaW9yIG1ldGhvZCBpbiBDQ09jY2x1c2lvblRyYWNrZXIgdGhh
dCB3aWxsCisgICAgICAgIHdvcmsgZm9yIGJvdGggdGhyZWFkcywgc28gcmVtb3ZpbmcgdGhhdCBz
dXBwb3J0IGhlcmUuCisKKyAgICAgICAgVW5pdCB0ZXN0OiBUaWxlZExheWVyQ2hyb21pdW1UZXN0
LmNwcAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVy
Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OnBh
aW50Q29udGVudHNJZkRpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRMYXllckNocm9t
aXVtOjppZGxlUGFpbnRDb250ZW50c0lmRGlydHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmg6CisgICAgICAgIChDb250ZW50TGF5
ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VM
YXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJDaHJvbWl1bTo6
cGFpbnRDb250ZW50c0lmRGlydHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06Omlk
bGVQYWludENvbnRlbnRzSWZEaXJ0eSk6CisgICAgICAgIChMYXllckNocm9taXVtKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZW50VG9MYXllclRyYW5z
Zm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1Vw
ZGF0ZVRpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFy
ZVRvVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFy
ZVRvVXBkYXRlSWRsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGls
ZWRMYXllckNocm9taXVtLmg6CisgICAgICAgIChUaWxlZExheWVyQ2hyb21pdW0pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnBhaW50Q29udGVudHNJZkRpcnR5KToK
KyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6cGFpbnRMYXllckNvbnRlbnRzKToK
KwogMjAxMi0wMy0wNyAgQXJ1biBQYXRvbGUgIDxibWY4MzRAbW90b3JvbGEuY29tPgogCiAgICAg
ICAgIEhUTUxUcmFja0VsZW1lbnQuaWRsIGRvZXNuJ3QgaGF2ZSBkZWZhdWx0IGF0dHJpYnV0ZS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNjMyZmRmOWVhMmQ3MWNhOTk2NTA1YjgwNzMz
MGI2NWYxMWQyYzFkNi4uNGZlNWJiMTdiN2ZkZGY5MjIwYWU1YjIzMzdmMDgyYmUyOTVlYTk1ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMi0wMy0wMiAg
RGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IEN1bGwgb2NjbHVkZWQgdGlsZXMgZHVyaW5nIHBhaW50CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjgzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHA6
CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpp
ZGxlUGFpbnRDb250ZW50c0lmRGlydHkpOgorICAgICAgICAqIHRlc3RzL1RpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QuY3BwOgorICAgICAgICAoV1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZTo6cHJlcGFyZVJlY3QpOgorICAgICAgICAoV1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAoRmFrZUxheWVyVGV4dHVyZVVw
ZGF0ZXIpOgorICAgICAgICAoV1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVJl
Y3RDb3VudCk6CisgICAgICAgIChXVEY6OkZha2VMYXllclRleHR1cmVVcGRhdGVyOjpjbGVhclBy
ZXBhcmVSZWN0Q291bnQpOgorICAgICAgICAoV1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
cHJlcGFyZVJlY3QpOgorICAgICAgICAoV1RGOjpGYWtlVGlsZWRMYXllckNocm9taXVtOjpwcmVw
YXJlVG9VcGRhdGUpOgorICAgICAgICAoV1RGOjpGYWtlVGlsZWRMYXllckNocm9taXVtOjpwcmVw
YXJlVG9VcGRhdGVJZGxlKToKKyAgICAgICAgKFdURjo6RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bTo6
cGFpbnRDb250ZW50c0lmRGlydHkpOgorICAgICAgICAoV1RGOjpURVNUKToKKyAgICAgICAgKFdU
Rik6CisKIDIwMTItMDMtMDYgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgW2Nocm9taXVtXSBBZGQgY2xpcHBpbmcgdG8gc2Npc3NvciByZWN0IHRvIENDT2Nj
bHVzaW9uVHJhY2tlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCmluZGV4IGFh
N2ZiNWNmNDZiMDYyNTdmZjViZjIzNWZiM2JmMDc4NDUzNTQ5OWYuLjA1Zjc0MjcxYTE3ODg0NzFh
ZmRiN2Y5YTA3MThhYjE2ZDcxNmE3N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1
bS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgYm9vbCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6ZHJhd3ND
b250ZW50KCkgY29uc3QKICAgICByZXR1cm4gVGlsZWRMYXllckNocm9taXVtOjpkcmF3c0NvbnRl
bnQoKSAmJiBtX2RlbGVnYXRlOwogfQogCi12b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpwYWlu
dENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIC8qIG9jY2x1ZGVkU2NyZWVuU3BhY2UgKi8p
Cit2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBS
ZWdpb24mIG9jY2x1ZGVkU2NyZWVuU3BhY2UpCiB7CiAgICAgdXBkYXRlVGlsZVNpemVBbmRUaWxp
bmdPcHRpb24oKTsKICAgICBjcmVhdGVUZXh0dXJlVXBkYXRlcklmTmVlZGVkKCk7CkBAIC0xMDUs
MTEgKzEwNSwxMSBAQCB2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZE
aXJ0eShjb25zdCBSZWdpb24mIC8qIG9jY2x1ZGVkU2NyZWVuUwogICAgIGlmIChkcmF3c0NvbnRl
bnQoKSkKICAgICAgICAgbGF5ZXJSZWN0ID0gdmlzaWJsZUxheWVyUmVjdCgpOwogCi0gICAgcHJl
cGFyZVRvVXBkYXRlKGxheWVyUmVjdCk7CisgICAgcHJlcGFyZVRvVXBkYXRlKGxheWVyUmVjdCwg
b2NjbHVkZWRTY3JlZW5TcGFjZSk7CiAgICAgbV9uZWVkc0Rpc3BsYXkgPSBmYWxzZTsKIH0KIAot
dm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KCkKK3Zv
aWQgQ29udGVudExheWVyQ2hyb21pdW06OmlkbGVQYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBS
ZWdpb24mIG9jY2x1ZGVkU2NyZWVuU3BhY2UpCiB7CiAgICAgaWYgKCFkcmF3c0NvbnRlbnQoKSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMTE4LDcgKzExOCw3IEBAIHZvaWQgQ29udGVudExheWVyQ2hy
b21pdW06OmlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSgpCiAgICAgaWYgKGxheWVyUmVjdC5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHByZXBhcmVUb1VwZGF0ZUlkbGUobGF5ZXJS
ZWN0KTsKKyAgICBwcmVwYXJlVG9VcGRhdGVJZGxlKGxheWVyUmVjdCwgb2NjbHVkZWRTY3JlZW5T
cGFjZSk7CiAgICAgaWYgKG5lZWRzSWRsZVBhaW50KGxheWVyUmVjdCkpCiAgICAgICAgIHNldE5l
ZWRzQ29tbWl0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaAppbmRleCAzZTg2
ODZkMGEwZGJjZTJjMWU4YzYxYjYwMTgxNDAyNjM3NjZiZjIzLi5mYTU5MDFlMmFkMmQ5NTAyNmE2
MjAxOGM4Y2Q2MWU2ODRlNzQyYWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgK
QEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVu
dCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBS
ZWdpb24mIG9jY2x1ZGVkU2NyZWVuU3BhY2UpOwotICAgIHZpcnR1YWwgdm9pZCBpZGxlUGFpbnRD
b250ZW50c0lmRGlydHkoKTsKKyAgICB2aXJ0dWFsIHZvaWQgaWRsZVBhaW50Q29udGVudHNJZkRp
cnR5KGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSk7CiAKICAgICB2aXJ0dWFsIHZv
aWQgc2V0T3BhcXVlKGJvb2wpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcAppbmRl
eCAxZTQ0ZTg3MDIzZmVkNWY0NjkzNWRmN2MzZmJkMzYyZTU0YWIwNDI5Li42MTFhYjJhNmE2NTgw
NTM5NTZlOGI4ZWQzMjgwZGZiMWIwMGRiMDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1
bS5jcHAKQEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6c2V0Q29u
dGVudHMoSW1hZ2UqIGNvbnRlbnRzKQogICAgIHNldE5lZWRzRGlzcGxheSgpOwogfQogCi12b2lk
IEltYWdlTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uJiAv
KiBvY2NsdWRlZFNjcmVlblNwYWNlICovKQordm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OnBhaW50
Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSkKIHsKICAg
ICBjcmVhdGVUZXh0dXJlVXBkYXRlcklmTmVlZGVkKCk7CiAgICAgaWYgKG1fbmVlZHNEaXNwbGF5
KSB7CkBAIC0xNjgsNyArMTY4LDcgQEAgdm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OnBhaW50Q29u
dGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgLyogb2NjbHVkZWRTY3JlZW5TcGEKICAgICAgICAg
bV9uZWVkc0Rpc3BsYXkgPSBmYWxzZTsKICAgICB9CiAKLSAgICBwcmVwYXJlVG9VcGRhdGUodmlz
aWJsZUxheWVyUmVjdCgpKTsKKyAgICBwcmVwYXJlVG9VcGRhdGUodmlzaWJsZUxheWVyUmVjdCgp
LCBvY2NsdWRlZFNjcmVlblNwYWNlKTsKIH0KIAogdm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OmNy
ZWF0ZVRleHR1cmVVcGRhdGVySWZOZWVkZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAppbmRleCBi
YTU5ZDllNTQ3ODllMGM1N2E1NjEyM2ZjYjAwYTRkN2FhMjA5MDdmLi4yMzk4ODkwYzVhYTRmNTRl
YWRmNjQyOThlYTEzZmE1ZTE5OTFjYWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcApAQCAtNTc4
LDM1ICs1NzgsNiBAQCB2b2lkIExheWVyQ2hyb21pdW06OnNldENvbnRlbnRzU2NhbGUoZmxvYXQg
Y29udGVudHNTY2FsZSkKICAgICBzZXROZWVkc0Rpc3BsYXkoKTsKIH0KIAotVHJhbnNmb3JtYXRp
b25NYXRyaXggTGF5ZXJDaHJvbWl1bTo6Y29udGVudFRvU2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSBj
b25zdAotewotICAgIEludFNpemUgYm91bmRzSW5MYXllclNwYWNlID0gYm91bmRzKCk7Ci0gICAg
SW50U2l6ZSBib3VuZHNJbkNvbnRlbnRTcGFjZSA9IGNvbnRlbnRCb3VuZHMoKTsKLQotICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybSA9IHNjcmVlblNwYWNlVHJhbnNmb3JtKCk7Ci0K
LSAgICAvLyBTY2FsZSBmcm9tIGNvbnRlbnQgc3BhY2UgdG8gbGF5ZXIgc3BhY2UKLSAgICB0cmFu
c2Zvcm0uc2NhbGVOb25Vbmlmb3JtKGJvdW5kc0luTGF5ZXJTcGFjZS53aWR0aCgpIC8gc3RhdGlj
X2Nhc3Q8ZG91YmxlPihib3VuZHNJbkNvbnRlbnRTcGFjZS53aWR0aCgpKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvdW5kc0luTGF5ZXJTcGFjZS5oZWlnaHQoKSAvIHN0YXRpY19j
YXN0PGRvdWJsZT4oYm91bmRzSW5Db250ZW50U3BhY2UuaGVpZ2h0KCkpKTsKLQotICAgIHJldHVy
biB0cmFuc2Zvcm07Ci19Ci0KLXZvaWQgTGF5ZXJDaHJvbWl1bTo6YWRkU2VsZlRvT2NjbHVkZWRT
Y3JlZW5TcGFjZShSZWdpb24mIG9jY2x1ZGVkU2NyZWVuU3BhY2UpCi17Ci0gICAgaWYgKCFvcGFx
dWUoKSB8fCBkcmF3T3BhY2l0eSgpICE9IDEgfHwgIWlzUGFpbnRlZEF4aXNBbGlnbmVkSW5TY3Jl
ZW4oKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRmxvYXRSZWN0IHRhcmdldFJlY3QgPSBjb250
ZW50VG9TY3JlZW5TcGFjZVRyYW5zZm9ybSgpLm1hcFJlY3QoRmxvYXRSZWN0KHZpc2libGVMYXll
clJlY3QoKSkpOwotICAgIG9jY2x1ZGVkU2NyZWVuU3BhY2UudW5pdGUoZW5jbG9zZWRJbnRSZWN0
KHRhcmdldFJlY3QpKTsKLX0KLQotYm9vbCBMYXllckNocm9taXVtOjppc1BhaW50ZWRBeGlzQWxp
Z25lZEluU2NyZWVuKCkgY29uc3QKLXsKLSAgICBGbG9hdFF1YWQgcXVhZCA9IGNvbnRlbnRUb1Nj
cmVlblNwYWNlVHJhbnNmb3JtKCkubWFwUXVhZChGbG9hdFF1YWQodmlzaWJsZUxheWVyUmVjdCgp
KSk7Ci0gICAgcmV0dXJuIHF1YWQuaXNSZWN0aWxpbmVhcigpOwotfQotCiB2b2lkIExheWVyQ2hy
b21pdW06OmNyZWF0ZVJlbmRlclN1cmZhY2UoKQogewogICAgIEFTU0VSVCghbV9yZW5kZXJTdXJm
YWNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyQ2hyb21pdW0uaAppbmRleCBhNTA4YzllNjgzMmY0MTcwYjAwY2U1MWI2NTJj
ZGM4NDY5NjBmNmI4Li4wY2UzYmEwZmExOTY0MTU2NDEzNmMxY2FiODg0MjdiYWIxODhkMzc3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
ckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC0xNjEsNyArMTYxLDcgQEAgcHVibGljOgogICAgIC8vIFRo
ZXNlIG1ldGhvZHMgdHlwaWNhbGx5IG5lZWQgdG8gYmUgb3ZlcndyaXR0ZW4gYnkgZGVyaXZlZCBj
bGFzc2VzLgogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiBt
X2lzRHJhd2FibGU7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoY29u
c3QgUmVnaW9uJiAvKiBvY2NsdWRlZFNjcmVlblNwYWNlICovKSB7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgaWRsZVBhaW50Q29udGVudHNJZkRpcnR5KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGlkbGVQ
YWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIC8qIG9jY2x1ZGVkU2NyZWVuU3BhY2Ug
Ki8pIHsgfQogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBo
aWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBz
ZXRJc01hc2soYm9vbCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHVucmVzZXJ2ZUNvbnRlbnRzVGV4
dHVyZSgpIHsgfQpAQCAtMjAwLDExICsyMDAsNiBAQCBwdWJsaWM6CiAgICAgZmxvYXQgY29udGVu
dHNTY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNTY2FsZTsgfQogICAgIHZvaWQgc2V0
Q29udGVudHNTY2FsZShmbG9hdCk7CiAKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjb250ZW50
VG9TY3JlZW5TcGFjZVRyYW5zZm9ybSgpIGNvbnN0OwotCi0gICAgLy8gQWRkcyBhbnkgb3BhcXVl
IHZpc2libGUgcGl4ZWxzIHRvIHRoZSBvY2NsdWRlZCByZWdpb24uCi0gICAgdmlydHVhbCB2b2lk
IGFkZFNlbGZUb09jY2x1ZGVkU2NyZWVuU3BhY2UoUmVnaW9uJiBvY2NsdWRlZFNjcmVlblNwYWNl
KTsKLQogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBhbnkgb2YgdGhlIGxheWVyJ3MgZGVzY2VuZGFu
dHMgaGFzIGNvbnRlbnQgdG8gZHJhdy4KICAgICBib29sIGRlc2NlbmRhbnREcmF3c0NvbnRlbnQo
KTsKIApAQCAtMjM5LDggKzIzNCw2IEBAIHByb3RlY3RlZDoKIAogICAgIExheWVyQ2hyb21pdW0o
KTsKIAotICAgIGJvb2wgaXNQYWludGVkQXhpc0FsaWduZWRJblNjcmVlbigpIGNvbnN0OwotCiAg
ICAgdm9pZCBzZXROZWVkc0NvbW1pdCgpOwogCiAgICAgLy8gVGhpcyBmbGFnIGlzIHNldCB3aGVu
IGxheWVyIG5lZWQgcmVwYWludGluZy91cGRhdGluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21p
dW0uY3BwCmluZGV4IGViYzlkNTVhYWY1YzIyODJlZTZmNDJhOGQyM2E5YTk3ZmE3YzIzMTUuLjFi
MmQ5M2UwNTQ5ODFkNmE0MjY5YWZhZTI0NTkyNmYwZTgwNjRiYTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRM
YXllckNocm9taXVtLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIk1hdGhFeHRyYXMu
aCIKICNpbmNsdWRlICJSZWdpb24uaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCisjaW5jbHVk
ZSAiVHJhY2VFdmVudC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAi
Y2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgImNjL0NDVGlsZWRMYXllckltcGwuaCIK
QEAgLTM5NywxMCArMzk4LDIzIEBAIGJvb2wgVGlsZWRMYXllckNocm9taXVtOjp0aWxlTmVlZHNC
dWZmZXJlZFVwZGF0ZShVcGRhdGFibGVUaWxlKiB0aWxlKQogICAgIHJldHVybiB0cnVlOwogfQog
Ci12b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxl
LCBpbnQgbGVmdCwgaW50IHRvcCwgaW50IHJpZ2h0LCBpbnQgYm90dG9tKQorLy8gRklYTUU6IFRo
aXMgZ2V0cyByb2xsZWQgaW50byBDQ09jY2x1c2lvblRyYWNrZXIgd2hlbiB3ZSBzdG9wIHBhc3Np
bmcgYXJvdW5kIFJlZ2lvbiBvYmplY3RzLgorc3RhdGljIGlubGluZSBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBjb250ZW50VG9MYXllclRyYW5zZm9ybShjb25zdCBJbnRTaXplJiBib3VuZHNJbkxheWVy
U3BhY2UsIGNvbnN0IEludFNpemUmIGJvdW5kc0luQ29udGVudFNwYWNlKQoreworICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsKKyAgICAvLyBTY2FsZSBmcm9tIGNvbnRlbnQgc3Bh
Y2UgdG8gbGF5ZXIgc3BhY2UKKyAgICB0cmFuc2Zvcm0uc2NhbGVOb25Vbmlmb3JtKGJvdW5kc0lu
TGF5ZXJTcGFjZS53aWR0aCgpIC8gc3RhdGljX2Nhc3Q8ZG91YmxlPihib3VuZHNJbkNvbnRlbnRT
cGFjZS53aWR0aCgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5kc0luTGF5
ZXJTcGFjZS5oZWlnaHQoKSAvIHN0YXRpY19jYXN0PGRvdWJsZT4oYm91bmRzSW5Db250ZW50U3Bh
Y2UuaGVpZ2h0KCkpKTsKKyAgICByZXR1cm4gdHJhbnNmb3JtOworfQorCit2b2lkIFRpbGVkTGF5
ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50
IHRvcCwgaW50IHJpZ2h0LCBpbnQgYm90dG9tLCBjb25zdCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVu
U3BhY2UpCiB7CiAgICAgY3JlYXRlVGV4dHVyZVVwZGF0ZXJJZk5lZWRlZCgpOwogCisgICAgLy8g
VGlsZXMgYXJlIGluIHRoZSBsYXllcidzIGNvbnRlbnQgc3BhY2UsIHRoZSBvY2NsdWRlZCByZWdp
b24gaXMgaW4gc2NyZWVuIHNwYWNlLgorICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNvbnRlbnRU
b1NjcmVlblNwYWNlID0gc2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSAqIGNvbnRlbnRUb0xheWVyVHJh
bnNmb3JtKGJvdW5kcygpLCBjb250ZW50Qm91bmRzKCkpOworCiAgICAgLy8gQ3JlYXRlIHRpbGVz
IGFzIG5lZWRlZCwgZXhwYW5kaW5nIGEgZGlydHkgcmVjdCB0byBjb250YWluIGFsbAogICAgIC8v
IHRoZSBkaXJ0eSByZWdpb25zIGN1cnJlbnRseSBiZWluZyBkcmF3bi4gQWxsIGRpcnR5IHRpbGVz
IHRoYXQgYXJlIHRvIGJlIHBhaW50ZWQKICAgICAvLyBnZXQgdGhlaXIgbV91cGRhdGVSZWN0IHNl
dCB0byBtX2RpcnR5UmVjdCBhbmQgbV9kaXJ0eVJlY3QgY2xlYXJlZC4gVGhpcyB3YXkgaWYKQEAg
LTQxMiw2ICs0MjYsMTQgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0
ZVRpbGVzKGJvb2wgaWRsZSwgaW50IGxlZnQsIGludCB0b3AsIGludAogICAgICAgICAgICAgaWYg
KCF0aWxlKQogICAgICAgICAgICAgICAgIHRpbGUgPSBjcmVhdGVUaWxlKGksIGopOwogCisgICAg
ICAgICAgICAvLyBXaGVuIG5vdCBpZGxlIHBhaW50aW5nLCBpZiB0aGUgZGlydHkgcG9ydGlvbiBv
ZiB0aGUgdGlsZSBpcyBvY2NsdWRlZCwgZG9uJ3QgcmVzZXJ2ZSBhIHRleHR1cmUgb3IgbWFyayBp
dCBmb3IgdXBkYXRlLgorICAgICAgICAgICAgLy8gVGhpcyB3aWxsIGFsc28gYXZvaWQgcGFpbnRp
bmcgdGhlIHRpbGUgaW4gdGhlIG5leHQgbG9vcCwgYmVsb3cuCisgICAgICAgICAgICBpZiAoIWlk
bGUpIHsKKyAgICAgICAgICAgICAgICBJbnRSZWN0IHZpc2libGVEaXJ0eVJlY3QgPSBpbnRlcnNl
Y3Rpb24odGlsZS0+bV9kaXJ0eVJlY3QsIHZpc2libGVMYXllclJlY3QoKSk7CisgICAgICAgICAg
ICAgICAgaWYgKCF2aXNpYmxlRGlydHlSZWN0LmlzRW1wdHkoKSAmJiBvY2NsdWRlZFNjcmVlblNw
YWNlLmNvbnRhaW5zKGNvbnRlbnRUb1NjcmVlblNwYWNlLm1hcFJlY3QodmlzaWJsZURpcnR5UmVj
dCkpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKwogICAg
ICAgICAgICAgLy8gRklYTUU6IERlY2lkZSBpZiBwYXJ0aWFsIHVwZGF0ZSBzaG91bGQgYmUgYWxs
b3dlZCBiYXNlZCBvbiBjb3N0CiAgICAgICAgICAgICAvLyBvZiB1cGRhdGUuIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzM3NgogICAgICAgICAgICAgaWYgKHRpbGVP
bmx5TmVlZHNQYXJ0aWFsVXBkYXRlKHRpbGUpICYmIGxheWVyVHJlZUhvc3QoKSAmJiBsYXllclRy
ZWVIb3N0KCktPnJlcXVlc3RQYXJ0aWFsVGV4dHVyZVVwZGF0ZSgpKQpAQCAtNDE5LDggKzQ0MSwx
MCBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBp
ZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50CiAgICAgICAgICAgICBlbHNlIGlmICh0aWxlTmVl
ZHNCdWZmZXJlZFVwZGF0ZSh0aWxlKSAmJiBsYXllclRyZWVIb3N0KCkpCiAgICAgICAgICAgICAg
ICAgbGF5ZXJUcmVlSG9zdCgpLT5kZWxldGVUZXh0dXJlQWZ0ZXJDb21taXQodGlsZS0+bWFuYWdl
ZFRleHR1cmUoKS0+c3RlYWwoKSk7CiAKLSAgICAgICAgICAgIGlmICghdGlsZS0+bWFuYWdlZFRl
eHR1cmUoKS0+aXNWYWxpZChtX3RpbGVyLT50aWxlU2l6ZSgpLCBtX3RleHR1cmVGb3JtYXQpKQor
ICAgICAgICAgICAgaWYgKCF0aWxlLT5tYW5hZ2VkVGV4dHVyZSgpLT5pc1ZhbGlkKG1fdGlsZXIt
PnRpbGVTaXplKCksIG1fdGV4dHVyZUZvcm1hdCkpIHsKKyAgICAgICAgICAgICAgICAvLyBTZXRz
IHRoZSBkaXJ0eSByZWN0IHRvIGEgZnVsbC1zaXplZCB0aWxlIHdpdGggYm9yZGVyIHRleGVscy4K
ICAgICAgICAgICAgICAgICB0aWxlLT5tX2RpcnR5UmVjdCA9IG1fdGlsZXItPnRpbGVSZWN0KHRp
bGUpOworICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoIXRpbGUtPm1hbmFnZWRUZXh0
dXJlKCktPnJlc2VydmUobV90aWxlci0+dGlsZVNpemUoKSwgbV90ZXh0dXJlRm9ybWF0KSkgewog
ICAgICAgICAgICAgICAgIG1fc2tpcHNJZGxlUGFpbnQgPSB0cnVlOwpAQCAtNDY4LDYgKzQ5Miwx
MSBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBp
ZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50CiAKICAgICAgICAgICAgIEludFJlY3QgdGlsZVJl
Y3QgPSBtX3RpbGVyLT50aWxlQm91bmRzKGksIGopOwogCisgICAgICAgICAgICAvLyBVc2UgbV91
cGRhdGVSZWN0IGFzIGNvcHlBbmRDbGVhckRpcnR5IGFib3ZlIG1vdmVkIHRoZSBleGlzdGluZyBk
aXJ0eSByZWN0IHRvIG1fdXBkYXRlUmVjdCBpZiB0aGUgdGlsZSBpc24ndCBjdWxsZWQuCisgICAg
ICAgICAgICBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QgPSB0aWxlLT5tX3VwZGF0ZVJlY3Q7Cisg
ICAgICAgICAgICBpZiAoZGlydHlSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKwogICAgICAgICAgICAgLy8gU2F2ZSB3aGF0IHdhcyBwYWludGVkIG9wYXF1ZSBpbiB0
aGUgdGlsZS4gS2VlcCB0aGUgb2xkIGFyZWEgaWYgdGhlIHBhaW50IGRpZG4ndCB0b3VjaCBpdCwg
YW5kIGRpZG4ndCBwYWludCBzb21lCiAgICAgICAgICAgICAvLyBvdGhlciBwYXJ0IG9mIHRoZSB0
aWxlIG9wYXF1ZS4KICAgICAgICAgICAgIEludFJlY3QgdGlsZVBhaW50ZWRSZWN0ID0gaW50ZXJz
ZWN0aW9uKHRpbGVSZWN0LCBtX3BhaW50UmVjdCk7CkBAIC00ODEsMTEgKzUxMCw2IEBAIHZvaWQg
VGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBs
ZWZ0LCBpbnQgdG9wLCBpbnQKICAgICAgICAgICAgICAgICAgICAgdGlsZS0+bV9vcGFxdWVSZWN0
ID0gdGlsZVBhaW50ZWRPcGFxdWVSZWN0OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAv
LyBVc2UgbV91cGRhdGVSZWN0IGFzIGNvcHlBbmRDbGVhckRpcnR5IGFib3ZlIG1vdmVkIHRoZSBl
eGlzdGluZyBkaXJ0eSByZWN0IHRvIG1fdXBkYXRlUmVjdC4KLSAgICAgICAgICAgIGNvbnN0IElu
dFJlY3QmIGRpcnR5UmVjdCA9IHRpbGUtPm1fdXBkYXRlUmVjdDsKLSAgICAgICAgICAgIGlmIChk
aXJ0eVJlY3QuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCiAgICAgICAg
ICAgICAvLyBzb3VyY2VSZWN0IHN0YXJ0cyBhcyBhIGZ1bGwtc2l6ZWQgdGlsZSB3aXRoIGJvcmRl
ciB0ZXhlbHMgaW5jbHVkZWQuCiAgICAgICAgICAgICBJbnRSZWN0IHNvdXJjZVJlY3QgPSBtX3Rp
bGVyLT50aWxlUmVjdCh0aWxlKTsKICAgICAgICAgICAgIHNvdXJjZVJlY3QuaW50ZXJzZWN0KGRp
cnR5UmVjdCk7CkBAIC01MjksMzcgKzU1Myw2IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpy
ZXNlcnZlVGV4dHVyZXMoKQogICAgIH0KIH0KIAotdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OmFk
ZFNlbGZUb09jY2x1ZGVkU2NyZWVuU3BhY2UoUmVnaW9uJiBvY2NsdWRlZFNjcmVlblNwYWNlKQot
ewotICAgIGlmIChtX3NraXBzRHJhdyB8fCBkcmF3T3BhY2l0eSgpICE9IDEgfHwgIWlzUGFpbnRl
ZEF4aXNBbGlnbmVkSW5TY3JlZW4oKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG9wYXF1
ZSgpKSB7Ci0gICAgICAgIExheWVyQ2hyb21pdW06OmFkZFNlbGZUb09jY2x1ZGVkU2NyZWVuU3Bh
Y2Uob2NjbHVkZWRTY3JlZW5TcGFjZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBJ
bnRSZWN0IHZpc2libGVSZWN0ID0gdmlzaWJsZUxheWVyUmVjdCgpOwotICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4IGNvbnRlbnRUcmFuc2Zvcm0gPSBjb250ZW50VG9TY3JlZW5TcGFjZVRyYW5zZm9y
bSgpOwotCi0gICAgLy8gRklYTUU6IENyZWF0ZS9Vc2UgYSBGbG9hdFJlZ2lvbiBmb3IgdGhlIG9j
Y2x1ZGVkU2NyZWVuU3BhY2UsIGluc3RlYWQgb2YgYSBSZWdpb24gYmFzZWQgb24gaW50cywgdG8g
YXZvaWQgdGhpcyBzdGVwIGFuZCBnZXQgYmV0dGVyIGFjY3VyYWN5IGJldHdlZW4gbGF5ZXJzIGlu
IHRhcmdldCBzcGFjZS4KLSAgICBSZWdpb24gdGlsZVJlZ2lvbjsKLSAgICBpbnQgbGVmdCwgdG9w
LCByaWdodCwgYm90dG9tOwotICAgIG1fdGlsZXItPmxheWVyUmVjdFRvVGlsZUluZGljZXModmlz
aWJsZUxheWVyUmVjdCgpLCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20pOwotICAgIGZvciAoaW50
IGogPSB0b3A7IGogPD0gYm90dG9tOyArK2opIHsKLSAgICAgICAgZm9yIChpbnQgaSA9IGxlZnQ7
IGkgPD0gcmlnaHQ7ICsraSkgewotICAgICAgICAgICAgVXBkYXRhYmxlVGlsZSogdGlsZSA9IHRp
bGVBdChpLCBqKTsKLSAgICAgICAgICAgIGlmICh0aWxlKSB7Ci0gICAgICAgICAgICAgICAgSW50
UmVjdCB2aXNpYmxlVGlsZU9wYXF1ZVJlY3QgPSBpbnRlcnNlY3Rpb24odmlzaWJsZVJlY3QsIHRp
bGUtPm1fb3BhcXVlUmVjdCk7Ci0gICAgICAgICAgICAgICAgRmxvYXRSZWN0IHNjcmVlblJlY3Qg
PSBjb250ZW50VHJhbnNmb3JtLm1hcFJlY3QoRmxvYXRSZWN0KHZpc2libGVUaWxlT3BhcXVlUmVj
dCkpOwotICAgICAgICAgICAgICAgIEludFJlY3Qgc2NyZWVuSW50UmVjdCA9IGVuY2xvc2VkSW50
UmVjdChzY3JlZW5SZWN0KTsKLSAgICAgICAgICAgICAgICBpZiAoIXNjcmVlbkludFJlY3QuaXNF
bXB0eSgpKQotICAgICAgICAgICAgICAgICAgICBvY2NsdWRlZFNjcmVlblNwYWNlLnVuaXRlKHNj
cmVlbkludFJlY3QpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCiB2b2lk
IFRpbGVkTGF5ZXJDaHJvbWl1bTo6cmVzZXRVcGRhdGVTdGF0ZSgpCiB7CiAgICAgLy8gUmVzZXQg
bV91cGRhdGVSZWN0IGZvciBhbGwgdGlsZXMuCkBAIC01NzEsNyArNTY0LDcgQEAgdm9pZCBUaWxl
ZExheWVyQ2hyb21pdW06OnJlc2V0VXBkYXRlU3RhdGUoKQogICAgIH0KIH0KIAotdm9pZCBUaWxl
ZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBsYXllclJlY3Qp
Cit2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3Qm
IGxheWVyUmVjdCwgY29uc3QgUmVnaW9uJiBvY2NsdWRlZFNjcmVlblNwYWNlKQogewogICAgIG1f
c2tpcHNEcmF3ID0gZmFsc2U7CiAgICAgbV9za2lwc0lkbGVQYWludCA9IGZhbHNlOwpAQCAtNTg4
LDEwICs1ODEsMTAgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZShj
b25zdCBJbnRSZWN0JiBsYXllclJlY3QpCiAgICAgaW50IGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRv
bTsKICAgICBtX3RpbGVyLT5sYXllclJlY3RUb1RpbGVJbmRpY2VzKGxheWVyUmVjdCwgbGVmdCwg
dG9wLCByaWdodCwgYm90dG9tKTsKIAotICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKGZhbHNlLCBs
ZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20pOworICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKGZhbHNl
LCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20sIG9jY2x1ZGVkU2NyZWVuU3BhY2UpOwogfQogCi12
b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWRsZShjb25zdCBJbnRSZWN0
JiBsYXllclJlY3QpCit2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWRs
ZShjb25zdCBJbnRSZWN0JiBsYXllclJlY3QsIGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5T
cGFjZSkKIHsKICAgICAvLyBBYm9ydCBpZiB3ZSBoYXZlIGFscmVhZHkgcHJlcGFyZWQgYSBwYWlu
dCBvciBydW4gb3V0IG9mIG1lbW9yeS4KICAgICBpZiAobV9za2lwc0lkbGVQYWludCB8fCAhbV9w
YWludFJlY3QuaXNFbXB0eSgpKQpAQCAtNjA5LDMzICs2MDIsMzkgQEAgdm9pZCBUaWxlZExheWVy
Q2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlkbGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQog
ICAgIEludFJlY3QgaWRsZVBhaW50TGF5ZXJSZWN0ID0gaWRsZVBhaW50UmVjdChsYXllclJlY3Qp
OwogICAgIHByb3RlY3RUaWxlVGV4dHVyZXMoaWRsZVBhaW50TGF5ZXJSZWN0KTsKIAotICAgIC8v
IEV4cGFuZCBvdXR3YXJkcyB1bnRpbCB3ZSBmaW5kIGEgZGlydHkgcm93IG9yIGNvbHVtbiB0byB1
cGRhdGUuCiAgICAgaW50IGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbTsKICAgICBtX3RpbGVyLT5s
YXllclJlY3RUb1RpbGVJbmRpY2VzKGxheWVyUmVjdCwgbGVmdCwgdG9wLCByaWdodCwgYm90dG9t
KTsKKworICAgIC8vIFByZXBhaW50IGFueXRoaW5nIHRoYXQgd2FzIG9jY2x1ZGVkIGJ1dCBpbnNp
ZGUgdGhlIGxheWVyJ3MgdmlzaWJsZSByZWdpb24uCisgICAgcHJlcGFyZVRvVXBkYXRlVGlsZXMo
dHJ1ZSwgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tLCBvY2NsdWRlZFNjcmVlblNwYWNlKTsKKyAg
ICBpZiAoIW1fcGFpbnRSZWN0LmlzRW1wdHkoKSB8fCBtX3NraXBzSWRsZVBhaW50KQorICAgICAg
ICByZXR1cm47CisKKyAgICAvLyBFeHBhbmQgb3V0d2FyZHMgdW50aWwgd2UgZmluZCBhIGRpcnR5
IHJvdyBvciBjb2x1bW4gdG8gdXBkYXRlLgogICAgIGludCBwcmVwYWludExlZnQsIHByZXBhaW50
VG9wLCBwcmVwYWludFJpZ2h0LCBwcmVwYWludEJvdHRvbTsKICAgICBtX3RpbGVyLT5sYXllclJl
Y3RUb1RpbGVJbmRpY2VzKGlkbGVQYWludExheWVyUmVjdCwgcHJlcGFpbnRMZWZ0LCBwcmVwYWlu
dFRvcCwgcHJlcGFpbnRSaWdodCwgcHJlcGFpbnRCb3R0b20pOwogICAgIHdoaWxlICghbV9za2lw
c0lkbGVQYWludCAmJiAobGVmdCA+IHByZXBhaW50TGVmdCB8fCB0b3AgPiBwcmVwYWludFRvcCB8
fCByaWdodCA8IHByZXBhaW50UmlnaHQgfHwgYm90dG9tIDwgcHJlcGFpbnRCb3R0b20pKSB7CiAg
ICAgICAgIGlmIChib3R0b20gPCBwcmVwYWludEJvdHRvbSkgewogICAgICAgICAgICAgKytib3R0
b207Ci0gICAgICAgICAgICBwcmVwYXJlVG9VcGRhdGVUaWxlcyh0cnVlLCBsZWZ0LCBib3R0b20s
IHJpZ2h0LCBib3R0b20pOworICAgICAgICAgICAgcHJlcGFyZVRvVXBkYXRlVGlsZXModHJ1ZSwg
bGVmdCwgYm90dG9tLCByaWdodCwgYm90dG9tLCBvY2NsdWRlZFNjcmVlblNwYWNlKTsKICAgICAg
ICAgICAgIGlmICghbV9wYWludFJlY3QuaXNFbXB0eSgpIHx8IG1fc2tpcHNJZGxlUGFpbnQpCiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHRvcCA+IHByZXBh
aW50VG9wKSB7CiAgICAgICAgICAgICAtLXRvcDsKLSAgICAgICAgICAgIHByZXBhcmVUb1VwZGF0
ZVRpbGVzKHRydWUsIGxlZnQsIHRvcCwgcmlnaHQsIHRvcCk7CisgICAgICAgICAgICBwcmVwYXJl
VG9VcGRhdGVUaWxlcyh0cnVlLCBsZWZ0LCB0b3AsIHJpZ2h0LCB0b3AsIG9jY2x1ZGVkU2NyZWVu
U3BhY2UpOwogICAgICAgICAgICAgaWYgKCFtX3BhaW50UmVjdC5pc0VtcHR5KCkgfHwgbV9za2lw
c0lkbGVQYWludCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBp
ZiAobGVmdCA+IHByZXBhaW50TGVmdCkgewogICAgICAgICAgICAgLS1sZWZ0OwotICAgICAgICAg
ICAgcHJlcGFyZVRvVXBkYXRlVGlsZXModHJ1ZSwgbGVmdCwgdG9wLCBsZWZ0LCBib3R0b20pOwor
ICAgICAgICAgICAgcHJlcGFyZVRvVXBkYXRlVGlsZXModHJ1ZSwgbGVmdCwgdG9wLCBsZWZ0LCBi
b3R0b20sIG9jY2x1ZGVkU2NyZWVuU3BhY2UpOwogICAgICAgICAgICAgaWYgKCFtX3BhaW50UmVj
dC5pc0VtcHR5KCkgfHwgbV9za2lwc0lkbGVQYWludCkKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBpZiAocmlnaHQgPCBwcmVwYWludFJpZ2h0KSB7CiAgICAgICAg
ICAgICArK3JpZ2h0OwotICAgICAgICAgICAgcHJlcGFyZVRvVXBkYXRlVGlsZXModHJ1ZSwgcmln
aHQsIHRvcCwgcmlnaHQsIGJvdHRvbSk7CisgICAgICAgICAgICBwcmVwYXJlVG9VcGRhdGVUaWxl
cyh0cnVlLCByaWdodCwgdG9wLCByaWdodCwgYm90dG9tLCBvY2NsdWRlZFNjcmVlblNwYWNlKTsK
ICAgICAgICAgICAgIGlmICghbV9wYWludFJlY3QuaXNFbXB0eSgpIHx8IG1fc2tpcHNJZGxlUGFp
bnQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNo
cm9taXVtLmgKaW5kZXggNmZjN2QxZDkyYmM1YWI5NzM3NmFhYmMxMTZkMzQ0MGNjNzlhOGVmNS4u
YzkzNmU2ZGVjNzQzMGY2YTM0MzU3MTg0NWEwZmMzZDk3NzYwZmVhMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVt
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRM
YXllckNocm9taXVtLmgKQEAgLTY2LDggKzY2LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2
b2lkIHJlc2VydmVUZXh0dXJlcygpOwogCi0gICAgdmlydHVhbCB2b2lkIGFkZFNlbGZUb09jY2x1
ZGVkU2NyZWVuU3BhY2UoUmVnaW9uJiBvY2NsdWRlZFNjcmVlblNwYWNlKTsKLQogcHJvdGVjdGVk
OgogICAgIFRpbGVkTGF5ZXJDaHJvbWl1bSgpOwogCkBAIC05MCwxMCArODgsMTAgQEAgcHJvdGVj
dGVkOgogICAgIHZvaWQgcmVzZXRVcGRhdGVTdGF0ZSgpOwogCiAgICAgLy8gUHJlcGFyZSBkYXRh
IG5lZWRlZCB0byB1cGRhdGUgdGV4dHVyZXMgdGhhdCBpbnRlcnNlY3Qgd2l0aCBsYXllclJlY3Qu
Ci0gICAgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KTsKKyAg
ICB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBsYXllclJlY3QsIGNvbnN0IFJl
Z2lvbiYgb2NjbHVkZWRUYXJnZXRTcGFjZSk7CiAKICAgICAvLyBTYW1lIGFzIGFib3ZlLCBidXQg
dGhpcyB3aWxsIHRyeSB0byBwYWludCBhZGRpdGlvbmFsIHN1cnJvdW5kaW5nIGNvbnRlbnQgaWYg
aWRsZS4KLSAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZUlkbGUoY29uc3QgSW50UmVjdCYgbGF5ZXJS
ZWN0KTsKKyAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZUlkbGUoY29uc3QgSW50UmVjdCYgbGF5ZXJS
ZWN0LCBjb25zdCBSZWdpb24mIG9jY2x1ZGVkVGFyZ2V0U3BhY2UpOwogCiAgICAgLy8gQWZ0ZXIg
cHJlcGFyaW5nIGFuIHVwZGF0ZSwgcmV0dXJucyB0cnVlIGlmIG1vcmUgcHJlLXBhaW50aW5nIGlz
IG5lZWRlZC4KICAgICBib29sIG5lZWRzSWRsZVBhaW50KGNvbnN0IEludFJlY3QmIGxheWVyUmVj
dCk7CkBAIC0xMTMsNyArMTExLDcgQEAgcHJpdmF0ZToKICAgICBib29sIHRpbGVPbmx5TmVlZHNQ
YXJ0aWFsVXBkYXRlKFVwZGF0YWJsZVRpbGUqKTsKICAgICBib29sIHRpbGVOZWVkc0J1ZmZlcmVk
VXBkYXRlKFVwZGF0YWJsZVRpbGUqKTsKIAotICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlVGlsZXMo
Ym9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50IHJpZ2h0LCBpbnQgYm90dG9tKTsKKyAg
ICB2b2lkIHByZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wgaWRsZSwgaW50IGxlZnQsIGludCB0b3As
IGludCByaWdodCwgaW50IGJvdHRvbSwgY29uc3QgUmVnaW9uJiBvY2NsdWRlZFRhcmdldFNwYWNl
KTsKICAgICBJbnRSZWN0IGlkbGVQYWludFJlY3QoY29uc3QgSW50UmVjdCYgdmlzaWJsZUxheWVy
UmVjdCk7CiAKICAgICBVcGRhdGFibGVUaWxlKiB0aWxlQXQoaW50LCBpbnQpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggN2M2YmE1ZTQ3MDI1ZDU2NjQ0ZjBiZmFk
OTU4YWNlNzQxYmYwZmZkOC4uMzhlMDljNTY4MmYxZGYyNDVmOTVlOTk5NzQ5MTJmMWE1ZTAzNjc3
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAj
aW5jbHVkZSAiY2MvQ0NMYXllckl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVI
b3N0Q29tbW9uLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIgorI2luY2x1
ZGUgImNjL0NDT2NjbHVzaW9uVHJhY2tlci5oIgogI2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFk
UHJveHkuaCIKICNpbmNsdWRlICJjYy9DQ1RocmVhZC5oIgogI2luY2x1ZGUgImNjL0NDVGhyZWFk
UHJveHkuaCIKQEAgLTUwNiw3ICs1MDcsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRD
b250ZW50c0lmRGlydHkoTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIFBhaW50VHlwZSBwYWludAogICAg
IGlmIChQYWludFZpc2libGUgPT0gcGFpbnRUeXBlKQogICAgICAgICBsYXllci0+cGFpbnRDb250
ZW50c0lmRGlydHkob2NjbHVkZWRTY3JlZW5TcGFjZSk7CiAgICAgZWxzZQotICAgICAgICBsYXll
ci0+aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KCk7CisgICAgICAgIGxheWVyLT5pZGxlUGFpbnRD
b250ZW50c0lmRGlydHkob2NjbHVkZWRTY3JlZW5TcGFjZSk7CiB9CiAKIHZvaWQgQ0NMYXllclRy
ZWVIb3N0OjpwYWludE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9taXVt
KiByZW5kZXJTdXJmYWNlTGF5ZXIsIFBhaW50VHlwZSBwYWludFR5cGUpCkBAIC01MzQsODMgKzUz
NSwyOCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRNYXNrQW5kUmVwbGljYUZvclJlbmRl
clN1cmZhY2UoTGF5ZXJDaHJvbWl1bSogcmVuZGVyUwogICAgIH0KIH0KIAotc3RydWN0IFJlbmRl
clN1cmZhY2VSZWdpb24gewotICAgIFJlbmRlclN1cmZhY2VDaHJvbWl1bSogc3VyZmFjZTsKLSAg
ICBSZWdpb24gb2NjbHVkZWRJblNjcmVlbjsKLX07Ci0KLS8vIEFkZCB0aGUgc3VyZmFjZSB0byB0
aGUgdG9wIG9mIHRoZSBzdGFjayBhbmQgY29weSB0aGUgb2NjbHVzaW9uIGZyb20gdGhlIG9sZCB0
b3Agb2YgdGhlIHN0YWNrIHRvIHRoZSBuZXcuCi1zdGF0aWMgdm9pZCBlbnRlclRhcmdldFJlbmRl
clN1cmZhY2UoVmVjdG9yPFJlbmRlclN1cmZhY2VSZWdpb24+JiBzdGFjaywgUmVuZGVyU3VyZmFj
ZUNocm9taXVtKiBuZXdUYXJnZXQpCi17Ci0gICAgaWYgKHN0YWNrLmlzRW1wdHkoKSkgewotICAg
ICAgICBzdGFjay5hcHBlbmQoUmVuZGVyU3VyZmFjZVJlZ2lvbigpKTsKLSAgICAgICAgc3RhY2su
bGFzdCgpLnN1cmZhY2UgPSBuZXdUYXJnZXQ7Ci0gICAgfSBlbHNlIGlmIChzdGFjay5sYXN0KCku
c3VyZmFjZSAhPSBuZXdUYXJnZXQpIHsKLSAgICAgICAgLy8gSWYgd2UgYXJlIGVudGVyaW5nIGEg
c3VidHJlZSB0aGF0IGlzIGdvaW5nIHRvIG1vdmUgcGl4ZWxzIGFyb3VuZCwgdGhlbiB0aGUgb2Nj
bHVzaW9uIHdlJ3ZlIGNvbXB1dGVkCi0gICAgICAgIC8vIHNvIGZhciB3b24ndCBhcHBseSB0byB0
aGUgcGl4ZWxzIHdlJ3JlIGRyYXdpbmcgaGVyZSBpbiB0aGUgc2FtZSB3YXkuIFdlIGRpc2NhcmQg
dGhlIG9jY2x1c2lvbiB0aHVzCi0gICAgICAgIC8vIGZhciB0byBiZSBzYWZlLCBhbmQgZW5zdXJl
IHdlIGRvbid0IGN1bGwgYW55IHBpeGVscyB0aGF0IGFyZSBtb3ZlZCBzdWNoIHRoYXQgdGhleSBi
ZWNvbWUgdmlzaWJsZS4KLSAgICAgICAgY29uc3QgUmVuZGVyU3VyZmFjZUNocm9taXVtKiBvbGRB
bmNlc3RvclRoYXRNb3Zlc1BpeGVscyA9IHN0YWNrLmxhc3QoKS5zdXJmYWNlLT5uZWFyZXN0QW5j
ZXN0b3JUaGF0TW92ZXNQaXhlbHMoKTsKLSAgICAgICAgY29uc3QgUmVuZGVyU3VyZmFjZUNocm9t
aXVtKiBuZXdBbmNlc3RvclRoYXRNb3Zlc1BpeGVscyA9IG5ld1RhcmdldC0+bmVhcmVzdEFuY2Vz
dG9yVGhhdE1vdmVzUGl4ZWxzKCk7Ci0gICAgICAgIGJvb2wgZW50ZXJpbmdTdWJ0cmVlVGhhdE1v
dmVzUGl4ZWxzID0gbmV3QW5jZXN0b3JUaGF0TW92ZXNQaXhlbHMgJiYgbmV3QW5jZXN0b3JUaGF0
TW92ZXNQaXhlbHMgIT0gb2xkQW5jZXN0b3JUaGF0TW92ZXNQaXhlbHM7Ci0KLSAgICAgICAgc3Rh
Y2suYXBwZW5kKFJlbmRlclN1cmZhY2VSZWdpb24oKSk7Ci0gICAgICAgIHN0YWNrLmxhc3QoKS5z
dXJmYWNlID0gbmV3VGFyZ2V0OwotICAgICAgICBpbnQgbGFzdEluZGV4ID0gc3RhY2suc2l6ZSgp
IC0gMTsKLSAgICAgICAgaWYgKCFlbnRlcmluZ1N1YnRyZWVUaGF0TW92ZXNQaXhlbHMpCi0gICAg
ICAgICAgICBzdGFja1tsYXN0SW5kZXhdLm9jY2x1ZGVkSW5TY3JlZW4gPSBzdGFja1tsYXN0SW5k
ZXggLSAxXS5vY2NsdWRlZEluU2NyZWVuOwotICAgIH0KLX0KLQotLy8gUG9wIHRoZSB0b3Agb2Yg
dGhlIHN0YWNrIG9mZiwgcHVzaCBvbiB0aGUgbmV3IHN1cmZhY2UsIGFuZCBtZXJnZSB0aGUgb2xk
IHRvcCdzIG9jY2x1c2lvbiBpbnRvIHRoZSBuZXcgdG9wIHN1cmZhY2UuCi1zdGF0aWMgdm9pZCBs
ZWF2ZVRhcmdldFJlbmRlclN1cmZhY2UoVmVjdG9yPFJlbmRlclN1cmZhY2VSZWdpb24+JiBzdGFj
aywgUmVuZGVyU3VyZmFjZUNocm9taXVtKiBuZXdUYXJnZXQpCi17Ci0gICAgaW50IGxhc3RJbmRl
eCA9IHN0YWNrLnNpemUoKSAtIDE7Ci0gICAgYm9vbCBzdXJmYWNlV2lsbEJlQXRUb3BBZnRlclBv
cCA9IHN0YWNrLnNpemUoKSA+IDEgJiYgc3RhY2tbbGFzdEluZGV4IC0gMV0uc3VyZmFjZSA9PSBu
ZXdUYXJnZXQ7Ci0KLSAgICBpZiAoc3VyZmFjZVdpbGxCZUF0VG9wQWZ0ZXJQb3ApIHsKLSAgICAg
ICAgLy8gTWVyZ2UgdGhlIHRvcCBvZiB0aGUgc3RhY2sgZG93bi4KLSAgICAgICAgc3RhY2tbbGFz
dEluZGV4IC0gMV0ub2NjbHVkZWRJblNjcmVlbi51bml0ZShzdGFja1tsYXN0SW5kZXhdLm9jY2x1
ZGVkSW5TY3JlZW4pOwotICAgICAgICBzdGFjay5yZW1vdmVMYXN0KCk7Ci0gICAgfSBlbHNlIHsK
LSAgICAgICAgLy8gUmVwbGFjZSB0aGUgdG9wIG9mIHRoZSBzdGFjayB3aXRoIHRoZSBuZXcgcHVz
aGVkIHN1cmZhY2UuIENvcHkgdGhlIG9jY2x1ZGVkIHJlZ2lvbiB0byB0aGUgdG9wLgotICAgICAg
ICBzdGFjay5sYXN0KCkuc3VyZmFjZSA9IG5ld1RhcmdldDsKLSAgICB9Ci19Ci0KIHZvaWQgQ0NM
YXllclRyZWVIb3N0OjpwYWludExheWVyQ29udGVudHMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0LCBQYWludFR5cGUgcGFpbnRUeXBlKQogewogICAgIC8vIFVzZSBGcm9u
dFRvQmFjayB0byBhbGxvdyBmb3IgdGVzdGluZyBvY2NsdXNpb24gYW5kIHBlcmZvcm1pbmcgY3Vs
bGluZyBkdXJpbmcgdGhlIHRyZWUgd2Fsay4KICAgICB0eXBlZGVmIENDTGF5ZXJJdGVyYXRvcjxM
YXllckNocm9taXVtLCBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4sIFJlbmRlclN1cmZh
Y2VDaHJvbWl1bSwgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6RnJvbnRUb0JhY2s+IENDTGF5ZXJJ
dGVyYXRvclR5cGU7CiAKLSAgICAvLyBUaGUgc3RhY2sgaG9sZHMgb2NjbHVkZWQgcmVnaW9ucyBm
b3Igc3VidHJlZXMgaW4gdGhlIFJlbmRlclN1cmZhY2UtTGF5ZXIgdHJlZSwgc28gdGhhdCB3aGVu
IHdlIGxlYXZlIGEgc3VidHJlZSB3ZSBtYXkKLSAgICAvLyBhcHBseSBhIG1hc2sgdG8gaXQsIGJ1
dCBub3QgdG8gdGhlIHBhcnRzIG91dHNpZGUgdGhlIHN1YnRyZWUuCi0gICAgLy8gLSBUaGUgZmly
c3QgdGltZSB3ZSBzZWUgYSBuZXcgc3VidHJlZSB1bmRlciBhIHRhcmdldCwgd2UgYWRkIHRoYXQg
dGFyZ2V0IHRvIHRoZSB0b3Agb2YgdGhlIHN0YWNrLiBUaGlzIGNhbiBoYXBwZW4gYXMgYSBsYXll
ciByZXByZXNlbnRpbmcgaXRzZWxmLCBvciBhcyBhIHRhcmdldCBzdXJmYWNlLgotICAgIC8vIC0g
V2hlbiB3ZSB2aXNpdCBhIHRhcmdldCBzdXJmYWNlLCB3ZSBhcHBseSBpdHMgbWFzayB0byBpdHMg
c3VidHJlZSwgd2hpY2ggaXMgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suCi0gICAgLy8gLSBXaGVu
IHdlIHZpc2l0IGEgbGF5ZXIgcmVwcmVzZW50aW5nIGl0c2VsZiwgd2UgYWRkIGl0cyBvY2NsdXNp
b24gdG8gdGhlIGN1cnJlbnQgc3VidHJlZSwgd2hpY2ggaXMgYXQgdGhlIHRvcCBvZiB0aGUgc3Rh
Y2suCi0gICAgLy8gLSBXaGVuIHdlIHZpc2l0IGEgbGF5ZXIgcmVwcmVzZW50aW5nIGEgY29udHJp
YnV0aW5nIHN1cmZhY2UsIHRoZSBjdXJyZW50IHRhcmdldCB3aWxsIG5ldmVyIGJlIHRoZSB0b3Ag
b2YgdGhlIHN0YWNrIHNpbmNlIHdlIGp1c3QgY2FtZSBmcm9tIHRoZSBjb250cmlidXRpbmcgc3Vy
ZmFjZS4KLSAgICAvLyBXZSBtZXJnZSB0aGUgb2NjbHVzaW9uIGF0IHRoZSB0b3Agb2YgdGhlIHN0
YWNrIHdpdGggdGhlIG5ldyBjdXJyZW50IHN1YnRyZWUuIFRoaXMgbmV3IHRhcmdldCBpcyBwdXNo
ZWQgb250byB0aGUgc3RhY2sgaWYgbm90IGFscmVhZHkgdGhlcmUuCi0gICAgVmVjdG9yPFJlbmRl
clN1cmZhY2VSZWdpb24+IHRhcmdldFN1cmZhY2VTdGFjazsKKyAgICBDQ09jY2x1c2lvblRyYWNr
ZXIgb2NjbHVzaW9uVHJhY2tlcihJbnRSZWN0KEludFBvaW50KCksIHZpZXdwb3J0U2l6ZSgpKSk7
CiAKICAgICBDQ0xheWVySXRlcmF0b3JUeXBlIGVuZCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmVu
ZCgmcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAgICAgZm9yIChDQ0xheWVySXRlcmF0b3JUeXBl
IGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oJnJlbmRlclN1cmZhY2VMYXllckxpc3Qp
OyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgaWYgKGl0LnJlcHJlc2VudHNUYXJnZXRSZW5k
ZXJTdXJmYWNlKCkpIHsKICAgICAgICAgICAgIEFTU0VSVChpdC0+cmVuZGVyU3VyZmFjZSgpLT5k
cmF3T3BhY2l0eSgpKTsKIAotICAgICAgICAgICAgZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHRh
cmdldFN1cmZhY2VTdGFjaywgaXQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgICAgICBvY2Ns
dXNpb25UcmFja2VyLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZSgqaXQsIGl0LT5yZW5kZXJT
dXJmYWNlKCkpOwogICAgICAgICAgICAgcGFpbnRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZh
Y2UoKml0LCBwYWludFR5cGUpOwotICAgICAgICAgICAgLy8gRklYTUU6IGFkZCB0aGUgcmVwbGlj
YSBsYXllciB0byB0aGUgY3VycmVudCBvY2NsdXNpb24KLQotICAgICAgICAgICAgaWYgKGl0LT5t
YXNrTGF5ZXIoKSB8fCBpdC0+cmVuZGVyU3VyZmFjZSgpLT5kcmF3T3BhY2l0eSgpIDwgMSB8fCBp
dC0+cmVuZGVyU3VyZmFjZSgpLT5maWx0ZXJzKCkuaGFzRmlsdGVyVGhhdEFmZmVjdHNPcGFjaXR5
KCkpCi0gICAgICAgICAgICAgICAgdGFyZ2V0U3VyZmFjZVN0YWNrLmxhc3QoKS5vY2NsdWRlZElu
U2NyZWVuID0gUmVnaW9uKCk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXQucmVwcmVzZW50c0l0c2Vs
ZigpKSB7CiAgICAgICAgICAgICBBU1NFUlQoIWl0LT5ib3VuZHMoKS5pc0VtcHR5KCkpOwogCi0g
ICAgICAgICAgICBlbnRlclRhcmdldFJlbmRlclN1cmZhY2UodGFyZ2V0U3VyZmFjZVN0YWNrLCBp
dC0+dGFyZ2V0UmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgICAgIHBhaW50Q29udGVudHNJZkRp
cnR5KCppdCwgcGFpbnRUeXBlLCB0YXJnZXRTdXJmYWNlU3RhY2subGFzdCgpLm9jY2x1ZGVkSW5T
Y3JlZW4pOwotICAgICAgICAgICAgaXQtPmFkZFNlbGZUb09jY2x1ZGVkU2NyZWVuU3BhY2UodGFy
Z2V0U3VyZmFjZVN0YWNrLmxhc3QoKS5vY2NsdWRlZEluU2NyZWVuKTsKLSAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIGxlYXZlVGFyZ2V0UmVuZGVyU3VyZmFjZSh0YXJnZXRTdXJmYWNlU3Rh
Y2ssIGl0LnRhcmdldFJlbmRlclN1cmZhY2VMYXllcigpLT5yZW5kZXJTdXJmYWNlKCkpOwotICAg
ICAgICB9CisgICAgICAgICAgICBvY2NsdXNpb25UcmFja2VyLmVudGVyVGFyZ2V0UmVuZGVyU3Vy
ZmFjZShpdC0+dGFyZ2V0UmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgICAgIHBhaW50Q29udGVu
dHNJZkRpcnR5KCppdCwgcGFpbnRUeXBlLCBvY2NsdXNpb25UcmFja2VyLmN1cnJlbnRPY2NsdXNp
b25JblNjcmVlblNwYWNlKCkpOworICAgICAgICAgICAgb2NjbHVzaW9uVHJhY2tlci5tYXJrT2Nj
bHVkZWRCZWhpbmRMYXllcigqaXQpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG9jY2x1
c2lvblRyYWNrZXIubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UoaXQudGFyZ2V0UmVuZGVyU3Vy
ZmFjZUxheWVyKCktPnJlbmRlclN1cmZhY2UoKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAppbmRleCAw
NjJhNjk5YzM2MTU5NzI3NzA0MGI0OWExNjIwNzMxYzhiZjIzZWE2Li4xMjhiZDBiMGMyMzgzOTVj
ZDBjNjYzYzEwNWYwMWZmODc2NDBhNzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKQEAgLTExNzksOSArMTE3OSw5IEBA
IHB1YmxpYzoKICAgICAgICAgbV9wYWludENvbnRlbnRzQ291bnQrKzsKICAgICB9CiAKLSAgICB2
aXJ0dWFsIHZvaWQgaWRsZVBhaW50Q29udGVudHNJZkRpcnR5KCkKKyAgICB2aXJ0dWFsIHZvaWQg
aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWQpCiAgICAgewot
ICAgICAgICBDb250ZW50TGF5ZXJDaHJvbWl1bTo6aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KCk7
CisgICAgICAgIENvbnRlbnRMYXllckNocm9taXVtOjppZGxlUGFpbnRDb250ZW50c0lmRGlydHko
b2NjbHVkZWQpOwogICAgICAgICBtX2lkbGVQYWludENvbnRlbnRzQ291bnQrKzsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9t
aXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QuY3BwCmluZGV4IDMxY2RmMzViN2UxY2UyZjhkZjdkMzU4MDY5NWE0M2UyYzk3YmIz
ZWIuLmFmZGE1YzFjODNlMjczYjRjMDMwN2UxMmU0MmZiOWNkYjg5MTM4NzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0
LmNwcApAQCAtNjgsNiArNjgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgflRleHR1cmUo
KSB7IH0KIAogICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQz
RCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYpIHsg
bV9sYXllci0+dXBkYXRlUmVjdCgpOyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlUmVj
dChjb25zdCBJbnRSZWN0JikgeyBtX2xheWVyLT5wcmVwYXJlUmVjdCgpOyB9CiAKICAgICBwcml2
YXRlOgogICAgICAgICBGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlciogbV9sYXllcjsKQEAgLTc2LDYg
Kzc3LDcgQEAgcHVibGljOgogICAgIEZha2VMYXllclRleHR1cmVVcGRhdGVyKCkKICAgICAgICAg
OiBtX3ByZXBhcmVDb3VudCgwKQogICAgICAgICAsIG1fdXBkYXRlQ291bnQoMCkKKyAgICAgICAg
LCBtX3ByZXBhcmVSZWN0Q291bnQoMCkKICAgICB7CiAgICAgfQogICAgIHZpcnR1YWwgfkZha2VM
YXllclRleHR1cmVVcGRhdGVyKCkgeyB9CkBAIC05Myw2ICs5NSwxMSBAQCBwdWJsaWM6CiAgICAg
dm9pZCBjbGVhclVwZGF0ZUNvdW50KCkgeyBtX3VwZGF0ZUNvdW50ID0gMDsgfQogICAgIHZvaWQg
dXBkYXRlUmVjdCgpIHsgbV91cGRhdGVDb3VudCsrOyB9CiAKKyAgICAvLyBOdW1iZXIgb2YgdGlt
ZXMgcHJlcGFyZVJlY3QoKSBoYXMgYmVlbiBpbnZva2VkIG9uIGEgdGV4dHVyZS4KKyAgICBpbnQg
cHJlcGFyZVJlY3RDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlcGFyZVJlY3RDb3VudDsgfQor
ICAgIHZvaWQgY2xlYXJQcmVwYXJlUmVjdENvdW50KCkgeyBtX3ByZXBhcmVSZWN0Q291bnQgPSAw
OyB9CisgICAgdm9pZCBwcmVwYXJlUmVjdCgpIHsgbV9wcmVwYXJlUmVjdENvdW50Kys7IH0KKwog
ICAgIHZvaWQgc2V0T3BhcXVlUGFpbnRSZWN0KGNvbnN0IEludFJlY3QmIG9wYXF1ZVBhaW50UmVj
dCkgeyBtX29wYXF1ZVBhaW50UmVjdCA9IG9wYXF1ZVBhaW50UmVjdDsgfQogCiAgICAgLy8gTGFz
dCByZWN0IHBhc3NlZCB0byBwcmVwYXJlVG9VcGRhdGUoKS4KQEAgLTEwNSw2ICsxMTIsNyBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIGludCBtX3ByZXBhcmVDb3VudDsKICAgICBpbnQgbV91cGRh
dGVDb3VudDsKKyAgICBpbnQgbV9wcmVwYXJlUmVjdENvdW50OwogICAgIEludFJlY3QgbV9yZWN0
VG9JbnZhbGlkYXRlOwogICAgIEludFJlY3QgbV9sYXN0VXBkYXRlUmVjdDsKICAgICBJbnRSZWN0
IG1fb3BhcXVlUGFpbnRSZWN0OwpAQCAtMTQyLDE0ICsxNTAsMTQgQEAgcHVibGljOgogICAgICAg
ICBUaWxlZExheWVyQ2hyb21pdW06OmludmFsaWRhdGVSZWN0KHJlY3QpOwogICAgIH0KIAotICAg
IHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIHJlY3QpCisgICAgdm9pZCBwcmVw
YXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgUmVnaW9uJiBvY2NsdWRlZCkK
ICAgICB7Ci0gICAgICAgIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKHJlY3Qp
OworICAgICAgICBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZShyZWN0LCBvY2Ns
dWRlZCk7CiAgICAgfQogCi0gICAgdm9pZCBwcmVwYXJlVG9VcGRhdGVJZGxlKGNvbnN0IEludFJl
Y3QmIHJlY3QpCisgICAgdm9pZCBwcmVwYXJlVG9VcGRhdGVJZGxlKGNvbnN0IEludFJlY3QmIHJl
Y3QsIGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWQpCiAgICAgewotICAgICAgICBUaWxlZExheWVyQ2hy
b21pdW06OnByZXBhcmVUb1VwZGF0ZUlkbGUocmVjdCk7CisgICAgICAgIFRpbGVkTGF5ZXJDaHJv
bWl1bTo6cHJlcGFyZVRvVXBkYXRlSWRsZShyZWN0LCBvY2NsdWRlZCk7CiAgICAgfQogCiAgICAg
Ym9vbCBuZWVkc0lkbGVQYWludChjb25zdCBJbnRSZWN0JiByZWN0KQpAQCAtMTc0LDkgKzE4Miw5
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgVGV4dHVyZU1hbmFnZXIqIHRleHR1cmVNYW5hZ2Vy
KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlTWFuYWdlcjsgfQogCi0gICAgdmlydHVhbCB2b2lk
IHBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgLyogb2NjbHVkZWRTY3JlZW5TcGFj
ZSAqLykKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9u
JiBvY2NsdWRlZFNjcmVlblNwYWNlKQogICAgIHsKLSAgICAgICAgcHJlcGFyZVRvVXBkYXRlKHZp
c2libGVMYXllclJlY3QoKSk7CisgICAgICAgIHByZXBhcmVUb1VwZGF0ZSh2aXNpYmxlTGF5ZXJS
ZWN0KCksIG9jY2x1ZGVkU2NyZWVuU3BhY2UpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTIzMiw2
ICsyNDAsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hEaXJ0eVRpbGVzKQog
ICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBG
YWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgRGVidWdT
Y29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5
ZXJJbXBsPiBsYXllckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDApKSk7
CisgICAgUmVnaW9uIG5vT2NjbHVzaW9uOwogCiAgICAgRmFrZVRleHR1cmVBbGxvY2F0b3IgdGV4
dHVyZUFsbG9jYXRvcjsKICAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIoJnRleHR1cmVBbGxv
Y2F0b3IpOwpAQCAtMjM5LDcgKzI0OCw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
cHVzaERpcnR5VGlsZXMpCiAgICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLCBzbyB0aGlz
IGludmFsaWRhdGVzIGFuZCB0aGVuIHBhaW50cyB0d28gdGlsZXMuCiAgICAgbGF5ZXItPnNldEJv
dW5kcyhJbnRTaXplKDEwMCwgMjAwKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJl
Y3QoMCwgMCwgMTAwLCAyMDApKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3Qo
MCwgMCwgMTAwLCAyMDApKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwg
MCwgMTAwLCAyMDApLCBub09jY2x1c2lvbik7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJ
bXBsLmdldCgpKTsKIApAQCAtMjUyLDcgKzI2MSw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVt
VGVzdCwgcHVzaERpcnR5VGlsZXMpCiAgICAgLy8gSW52YWxpZGF0ZXMgYm90aCB0aWxlcy4uLgog
ICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAgICAg
Ly8gLi4uLmJ1dCB0aGVuIG9ubHkgdXBkYXRlIG9uZSBvZiB0aGVtLgotICAgIGxheWVyLT5wcmVw
YXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpOworICAgIGxheWVyLT5wcmVwYXJl
VG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCksIG5vT2NjbHVzaW9uKTsKICAgICBsYXll
ci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKICAgICBsYXllci0+cHVz
aFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCkBAIC0yNzUsMTIgKzI4NCwxMyBAQCBU
RVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hJZGxlUGFpbnRUaWxlcykKICAgICBJbnRT
aXplIGNvbnRlbnRCb3VuZHMoNTAwLCA1MDApOwogICAgIEludFJlY3QgY29udGVudFJlY3QoSW50
UG9pbnQ6Onplcm8oKSwgY29udGVudEJvdW5kcyk7CiAgICAgSW50UmVjdCB2aXNpYmxlUmVjdCgy
MDAsIDIwMCwgMTAwLCAxMDApOworICAgIFJlZ2lvbiBub09jY2x1c2lvbjsKIAogICAgIC8vIFRo
aXMgaW52YWxpZGF0ZXMgMjUgdGlsZXMgYW5kIHRoZW4gcGFpbnRzIG9uZSB2aXNpYmxlIHRpbGUu
CiAgICAgbGF5ZXItPnNldEJvdW5kcyhjb250ZW50Qm91bmRzKTsKICAgICBsYXllci0+c2V0Vmlz
aWJsZUxheWVyUmVjdCh2aXNpYmxlUmVjdCk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KGNv
bnRlbnRSZWN0KTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKHZpc2libGVSZWN0KTsKKyAg
ICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKHZpc2libGVSZWN0LCBub09jY2x1c2lvbik7CiAKICAg
ICAvLyBXZSBzaG91bGQgbmVlZCBpZGxlLXBhaW50aW5nIGZvciAzeDMgdGlsZXMgaW4gdGhlIGNl
bnRlci4KICAgICBFWFBFQ1RfVFJVRShsYXllci0+bmVlZHNJZGxlUGFpbnQodmlzaWJsZVJlY3Qp
KTsKQEAgLTI5NSw5ICszMDUsOSBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hJ
ZGxlUGFpbnRUaWxlcykKIAogICAgIC8vIEZvciB0aGUgbmV4dCBmb3VyIHVwZGF0ZXMsIHdlIHNo
b3VsZCBkZXRlY3Qgd2Ugc3RpbGwgbmVlZCBpZGxlIHBhaW50aW5nLgogICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgNDsgaSsrKSB7Ci0gICAgICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUodmlzaWJs
ZVJlY3QpOworICAgICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKHZpc2libGVSZWN0LCBub09j
Y2x1c2lvbik7CiAgICAgICAgIEVYUEVDVF9UUlVFKGxheWVyLT5uZWVkc0lkbGVQYWludCh2aXNp
YmxlUmVjdCkpOwotICAgICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlSWRsZSh2aXNpYmxlUmVj
dCk7CisgICAgICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGVJZGxlKHZpc2libGVSZWN0LCBub09j
Y2x1c2lvbik7CiAgICAgICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVw
ZGF0ZXIpOwogICAgICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkp
OwogICAgICAgICB0ZXh0dXJlTWFuYWdlci0+dW5wcm90ZWN0QWxsVGV4dHVyZXMoKTsKQEAgLTMy
Nyw2ICszMzcsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hUaWxlc01hcmtl
ZERpcnR5RHVyaW5nUGFpbnQpCiAKICAgICBGYWtlVGV4dHVyZUFsbG9jYXRvciB0ZXh0dXJlQWxs
b2NhdG9yOwogICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcigmdGV4dHVyZUFsbG9jYXRvcik7
CisgICAgUmVnaW9uIG5vT2NjbHVzaW9uOwogCiAgICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4
MTAwLCBzbyB0aGlzIGludmFsaWRhdGVzIGFuZCB0aGVuIHBhaW50cyB0d28gdGlsZXMuCiAgICAg
Ly8gSG93ZXZlciwgZHVyaW5nIHRoZSBwYWludCwgd2UgaW52YWxpZGF0ZSBvbmUgb2YgdGhlIHRp
bGVzLiBUaGlzIHNob3VsZApAQCAtMzM0LDcgKzM0NSw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9t
aXVtVGVzdCwgcHVzaFRpbGVzTWFya2VkRGlydHlEdXJpbmdQYWludCkKICAgICBsYXllci0+c2V0
Qm91bmRzKEludFNpemUoMTAwLCAyMDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50
UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRl
cigpLT5zZXRSZWN0VG9JbnZhbGlkYXRlKEludFJlY3QoMCwgNTAsIDEwMCwgNTApLCBsYXllci5n
ZXQoKSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAw
KSk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwg
bm9PY2NsdXNpb24pOwogICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVw
ZGF0ZXIpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAK
QEAgLTM1NCwxNyArMzY1LDE4IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaFRp
bGVzTGF5ZXJNYXJrZWREaXJ0eUR1cmluZ1BhaW50T25OZXh0TGF5ZXIpCiAKICAgICBGYWtlVGV4
dHVyZUFsbG9jYXRvciB0ZXh0dXJlQWxsb2NhdG9yOwogICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBk
YXRlcigmdGV4dHVyZUFsbG9jYXRvcik7CisgICAgUmVnaW9uIG5vT2NjbHVzaW9uOwogCiAgICAg
bGF5ZXIxLT5zZXRCb3VuZHMoSW50U2l6ZSgxMDAsIDIwMCkpOwogICAgIGxheWVyMS0+aW52YWxp
ZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogICAgIGxheWVyMi0+c2V0Qm91bmRz
KEludFNpemUoMTAwLCAyMDApKTsKICAgICBsYXllcjItPmludmFsaWRhdGVSZWN0KEludFJlY3Qo
MCwgMCwgMTAwLCAyMDApKTsKIAotICAgIGxheWVyMS0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3Qo
MCwgMCwgMTAwLCAyMDApKTsKKyAgICBsYXllcjEtPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAs
IDAsIDEwMCwgMjAwKSwgbm9PY2NsdXNpb24pOwogCiAgICAgLy8gSW52YWxpZGF0ZSBhIHRpbGUg
b24gbGF5ZXIxCiAgICAgbGF5ZXIyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRSZWN0
VG9JbnZhbGlkYXRlKEludFJlY3QoMCwgNTAsIDEwMCwgNTApLCBsYXllcjEuZ2V0KCkpOwotICAg
IGxheWVyMi0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKKyAgICBs
YXllcjItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgbm9PY2NsdXNp
b24pOwogCiAgICAgbGF5ZXIxLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIp
OwogICAgIGxheWVyMi0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKQEAg
LTM5MCw2ICs0MDIsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hUaWxlc0xh
eWVyTWFya2VkRGlydHlEdXJpbmdQYWludE9uUHJldmlvdXNMYXllcgogCiAgICAgRmFrZVRleHR1
cmVBbGxvY2F0b3IgdGV4dHVyZUFsbG9jYXRvcjsKICAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0
ZXIoJnRleHR1cmVBbGxvY2F0b3IpOworICAgIFJlZ2lvbiBub09jY2x1c2lvbjsKIAogICAgIGxh
eWVyMS0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAyMDApKTsKICAgICBsYXllcjEtPmludmFsaWRh
dGVSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKQEAgLTM5OCw5ICs0MTEsOSBAQCBURVNU
KFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hUaWxlc0xheWVyTWFya2VkRGlydHlEdXJpbmdQ
YWludE9uUHJldmlvdXNMYXllcgogCiAgICAgLy8gSW52YWxpZGF0ZSBhIHRpbGUgb24gbGF5ZXIy
CiAgICAgbGF5ZXIxLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRSZWN0VG9JbnZhbGlk
YXRlKEludFJlY3QoMCwgNTAsIDEwMCwgNTApLCBsYXllcjIuZ2V0KCkpOwotICAgIGxheWVyMS0+
cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKKyAgICBsYXllcjEtPnBy
ZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgbm9PY2NsdXNpb24pOwogCi0g
ICAgbGF5ZXIyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOworICAg
IGxheWVyMi0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCBub09jY2x1
c2lvbik7CiAKICAgICBsYXllcjEtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRl
cik7CiAgICAgbGF5ZXIyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwpA
QCAtNDIxLDYgKzQzNCw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50
T3V0T2ZNZW1vcnkpCiAgICAgSW50U2l6ZSBjb250ZW50Qm91bmRzKDMwMCwgMzAwKTsKICAgICBJ
bnRSZWN0IGNvbnRlbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIGNvbnRlbnRCb3VuZHMpOwogICAg
IEludFJlY3QgdmlzaWJsZVJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKTsKKyAgICBSZWdpb24gbm9P
Y2NsdXNpb247CiAKICAgICAvLyBXZSBoYXZlIGVub3VnaCBtZW1vcnkgZm9yIG9ubHkgdGhlIHZp
c2libGUgcmVjdCwgc28gd2Ugd2lsbCBydW4gb3V0IG9mIG1lbW9yeSBpbiBmaXJzdCBpZGxlIHBh
aW50LgogICAgIGludCBtZW1vcnlMaW1pdCA9IDQgKiAxMDAgKiAxMDA7IC8vIDIgdGlsZXMsIDQg
Ynl0ZXMgcGVyIHBpeGVsLgpAQCAtNDM3LDcgKzQ1MSw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9t
aXVtVGVzdCwgaWRsZVBhaW50T3V0T2ZNZW1vcnkpCiAgICAgbGF5ZXItPnNldEJvdW5kcyhjb250
ZW50Qm91bmRzKTsKICAgICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdCh2aXNpYmxlUmVjdCk7
CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KGNvbnRlbnRSZWN0KTsKLSAgICBsYXllci0+cHJl
cGFyZVRvVXBkYXRlKHZpc2libGVSZWN0KTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKHZp
c2libGVSZWN0LCBub09jY2x1c2lvbik7CiAKICAgICAvLyBXZSBzaG91bGQgbmVlZCBpZGxlLXBh
aW50aW5nIGZvciAzeDMgdGlsZXMgc3Vyb3VuZGluZyB2aXNpYmxlIHRpbGUuCiAgICAgRVhQRUNU
X1RSVUUobGF5ZXItPm5lZWRzSWRsZVBhaW50KHZpc2libGVSZWN0KSk7CkBAIC00NDksOCArNDYz
LDggQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRPdXRPZk1lbW9yeSkK
ICAgICBFWFBFQ1RfVFJVRShsYXllckltcGwtPmhhc1RpbGVBdCgxLCAxKSk7CiAKICAgICB0ZXh0
dXJlTWFuYWdlci0+dW5wcm90ZWN0QWxsVGV4dHVyZXMoKTsKLSAgICBsYXllci0+cHJlcGFyZVRv
VXBkYXRlKHZpc2libGVSZWN0KTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlSWRsZSh2aXNp
YmxlUmVjdCk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZSh2aXNpYmxlUmVjdCwgbm9PY2Ns
dXNpb24pOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGVJZGxlKHZpc2libGVSZWN0LCBub09j
Y2x1c2lvbik7CiAKICAgICAvLyBXZSBzaG91bGRuJ3Qgc2lnbmFsIHdlIG5lZWQgYW5vdGhlciBp
ZGxlIHBhaW50IGFmdGVyIHdlIHJ1biBvdXQgb2YgbWVtb3J5LgogICAgIEVYUEVDVF9GQUxTRShs
YXllci0+bmVlZHNJZGxlUGFpbnQodmlzaWJsZVJlY3QpKTsKQEAgLTQ2NSw2ICs0NzksNyBAQCBU
RVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGludmFsaWRhdGVGcm9tUHJlcGFyZSkKICAgICBS
ZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRp
bGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogICAgIERlYnVnU2NvcGVk
U2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1w
bD4gbGF5ZXJJbXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgwKSkpOworICAg
IFJlZ2lvbiBub09jY2x1c2lvbjsKIAogICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVB
bGxvY2F0b3I7CiAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9y
KTsKQEAgLTQ3Miw3ICs0ODcsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGludmFs
aWRhdGVGcm9tUHJlcGFyZSkKICAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAsIHNvIHRo
aXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxlcy4KICAgICBsYXllci0+c2V0
Qm91bmRzKEludFNpemUoMTAwLCAyMDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50
UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVj
dCgwLCAwLCAxMDAsIDIwMCkpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgw
LCAwLCAxMDAsIDIwMCksIG5vT2NjbHVzaW9uKTsKICAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRv
clJlc291cmNlcygwLCB1cGRhdGVyKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXll
ckltcGwuZ2V0KCkpOwogCkBAIC00ODUsMTggKzUwMCwxOCBAQCBURVNUKFRpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QsIGludmFsaWRhdGVGcm9tUHJlcGFyZSkKICAgICBsYXllci0+ZmFrZUxheWVyVGV4
dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQcmVwYXJlQ291bnQoKTsKICAgICAvLyBJbnZva2UgcHJlcGFy
ZVRvVXBkYXRlIGFnYWluLiBBcyB0aGUgbGF5ZXIgaXMgdmFsaWQgcHJlcGFyZVRvVXBkYXRlIHNo
b3VsZG4ndCBiZSBpbnZva2VkIG9uCiAgICAgLy8gdGhlIExheWVyVGV4dHVyZVVwZGF0ZXIuCi0g
ICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CisgICAg
bGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgbm9PY2NsdXNp
b24pOwogICAgIEVYUEVDVF9FUSgwLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+
cHJlcGFyZUNvdW50KCkpOwogCiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwg
MCwgNTAsIDUwKSk7CiAgICAgLy8gc2V0UmVjdFRvSW52YWxpZGF0ZSB0cmlnZ2VycyBpbnZhbGlk
YXRlUmVjdCgpIGJlaW5nIGludm9rZWQgZnJvbSBwcmVwYXJlVG9VcGRhdGUuCiAgICAgbGF5ZXIt
PmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNldFJlY3RUb0ludmFsaWRhdGUoSW50UmVjdCgy
NSwgMjUsIDUwLCA1MCksIGxheWVyLmdldCgpKTsKICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVy
ZVVwZGF0ZXIoKS0+Y2xlYXJQcmVwYXJlQ291bnQoKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBk
YXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRl
KEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCBub09jY2x1c2lvbik7CiAgICAgRVhQRUNUX0VRKDEs
IGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlQ291bnQoKSk7CiAgICAg
bGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyUHJlcGFyZUNvdW50KCk7CiAg
ICAgLy8gVGhlIGxheWVyIHNob3VsZCBzdGlsbCBiZSBpbnZhbGlkIGFzIHByZXBhcmVUb1VwZGF0
ZSBpbnZva2VkIGludmFsaWRhdGUuCi0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0
KDAsIDAsIDEwMCwgMjAwKSk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAs
IDAsIDEwMCwgMjAwKSwgbm9PY2NsdXNpb24pOwogICAgIEVYUEVDVF9FUSgxLCBsYXllci0+ZmFr
ZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZUNvdW50KCkpOwogfQogCkBAIC01MDcsNiAr
NTIyLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2ZXJpZnlVcGRhdGVSZWN0V2hl
bkNvbnRlbnRCb3VuZHNBcmVTY2FsZWQpCiAKICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRl
eHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0
KjEwMjQsIDEwMjQpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllcldpdGhTY2FsZWRCb3VuZHM+
IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyV2l0aFNjYWxlZEJvdW5kcyh0ZXh0
dXJlTWFuYWdlci5nZXQoKSkpOworICAgIFJlZ2lvbiBub09jY2x1c2lvbjsKIAogICAgIEZha2VU
ZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7CiAgICAgQ0NUZXh0dXJlVXBkYXRlciB1
cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsKQEAgLTUyMSwyMCArNTM3LDIwIEBAIFRFU1QoVGls
ZWRMYXllckNocm9taXVtVGVzdCwgdmVyaWZ5VXBkYXRlUmVjdFdoZW5Db250ZW50Qm91bmRzQXJl
U2NhbGVkKQogICAgIC8vIE9uIGZpcnN0IHVwZGF0ZSwgdGhlIHVwZGF0ZVJlY3QgaW5jbHVkZXMg
YWxsIHRpbGVzLCBldmVuIGJleW9uZCB0aGUgYm91bmRhcmllcyBvZiB0aGUgbGF5ZXIuCiAgICAg
Ly8gSG93ZXZlciwgaXQgc2hvdWxkIHN0aWxsIGJlIGluIGxheWVyIHNwYWNlLCBub3QgY29udGVu
dCBzcGFjZS4KICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoY29udGVudEJvdW5kcyk7Ci0gICAg
bGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzKTsKKyAgICBsYXllci0+cHJlcGFy
ZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMsIG5vT2NjbHVzaW9uKTsKICAgICBsYXllci0+dXBkYXRl
Q29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKICAgICBFWFBFQ1RfRkxPQVRfUkVDVF9F
UShGbG9hdFJlY3QoMCwgMCwgMzAwLCAzMDAgKiAwLjgpLCBsYXllci0+dXBkYXRlUmVjdCgpKTsK
IAogICAgIC8vIEFmdGVyIHRoZSB0aWxlcyBhcmUgdXBkYXRlZCBvbmNlLCBhbm90aGVyIGludmFs
aWRhdGUgb25seSBuZWVkcyB0byB1cGRhdGUgdGhlIGJvdW5kcyBvZiB0aGUgbGF5ZXIuCiAgICAg
bGF5ZXItPmludmFsaWRhdGVSZWN0KGNvbnRlbnRCb3VuZHMpOwotICAgIGxheWVyLT5wcmVwYXJl
VG9VcGRhdGUoY29udGVudEJvdW5kcyk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250
ZW50Qm91bmRzLCBub09jY2x1c2lvbik7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNv
dXJjZXMoMCwgdXBkYXRlcik7CiAgICAgRVhQRUNUX0ZMT0FUX1JFQ1RfRVEoRmxvYXRSZWN0KGxh
eWVyQm91bmRzKSwgbGF5ZXItPnVwZGF0ZVJlY3QoKSk7CiAKICAgICAvLyBQYXJ0aWFsIHJlLXBh
aW50IHNob3VsZCBhbHNvIGJlIHJlcHJlc2VudGVkIGJ5IHRoZSB1cGRhdGVSZWN0IGluIGxheWVy
IHNwYWNlLCBub3QgY29udGVudCBzcGFjZS4KICAgICBJbnRSZWN0IHBhcnRpYWxEYW1hZ2UoMzAs
IDEwMCwgMTAsIDEwKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QocGFydGlhbERhbWFnZSk7
Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzKTsKKyAgICBsYXllci0+
cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMsIG5vT2NjbHVzaW9uKTsKICAgICBsYXllci0+
dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKICAgICBFWFBFQ1RfRkxPQVRf
UkVDVF9FUShGbG9hdFJlY3QoNDUsIDgwLCAxNSwgOCksIGxheWVyLT51cGRhdGVSZWN0KCkpOwog
fQpAQCAtNTQ4LDYgKzU2NCw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdmVyaWZ5
SW52YWxpZGF0aW9uV2hlbkNvbnRlbnRzU2NhbGVDaGFuZ2VzKQogCiAgICAgRmFrZVRleHR1cmVB
bGxvY2F0b3IgdGV4dHVyZUFsbG9jYXRvcjsKICAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIo
JnRleHR1cmVBbGxvY2F0b3IpOworICAgIFJlZ2lvbiBub09jY2x1c2lvbjsKIAogICAgIC8vIENy
ZWF0ZSBhIGxheWVyIHdpdGggb25lIHRpbGUuCiAgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRTaXpl
KDEwMCwgMTAwKSk7CkBAIC01NTcsNyArNTc0LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1U
ZXN0LCB2ZXJpZnlJbnZhbGlkYXRpb25XaGVuQ29udGVudHNTY2FsZUNoYW5nZXMpCiAgICAgRVhQ
RUNUX0ZMT0FUX1JFQ1RfRVEoRmxvYXRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgbGF5ZXItPmxhc3RO
ZWVkc0Rpc3BsYXlSZWN0KCkpOwogCiAgICAgLy8gUHVzaCB0aGUgdGlsZXMgdG8gdGhlIGltcGwg
c2lkZSBhbmQgY2hlY2sgdGhhdCB0aGVyZSBpcyBleGFjdGx5IG9uZS4KLSAgICBsYXllci0+cHJl
cGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAxMDApKTsKKyAgICBsYXllci0+cHJlcGFy
ZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCBub09jY2x1c2lvbik7CiAgICAgbGF5
ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAgICAgbGF5ZXItPnB1
c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKICAgICBFWFBFQ1RfVFJVRShsYXllcklt
cGwtPmhhc1RpbGVBdCgwLCAwKSk7CkBAIC01NzEsNyArNTg4LDcgQEAgVEVTVChUaWxlZExheWVy
Q2hyb21pdW1UZXN0LCB2ZXJpZnlJbnZhbGlkYXRpb25XaGVuQ29udGVudHNTY2FsZUNoYW5nZXMp
CiAgICAgRVhQRUNUX0ZMT0FUX1JFQ1RfRVEoRmxvYXRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgbGF5
ZXItPmxhc3ROZWVkc0Rpc3BsYXlSZWN0KCkpOwogCiAgICAgLy8gVGhlIGltcGwgc2lkZSBzaG91
bGQgZ2V0IDJ4MiB0aWxlcyBub3cuCi0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0
KDAsIDAsIDIwMCwgMjAwKSk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAs
IDAsIDIwMCwgMjAwKSwgbm9PY2NsdXNpb24pOwogICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9y
UmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVy
SW1wbC5nZXQoKSk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXJJbXBsLT5oYXNUaWxlQXQoMCwgMCkp
OwpAQCAtNTgyLDcgKzU5OSw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdmVyaWZ5
SW52YWxpZGF0aW9uV2hlbkNvbnRlbnRzU2NhbGVDaGFuZ2VzKQogICAgIC8vIEludmFsaWRhdGUg
dGhlIGVudGlyZSBsYXllciBhZ2FpbiwgYnV0IGRvIG5vdCBwYWludC4gQWxsIHRpbGVzIHNob3Vs
ZCBiZSBnb25lIG5vdyBmcm9tIHRoZQogICAgIC8vIGltcGwgc2lkZS4KICAgICBsYXllci0+c2V0
TmVlZHNEaXNwbGF5KCk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAs
IDAsIDApKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMCwgMCks
IG5vT2NjbHVzaW9uKTsKICAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1
cGRhdGVyKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwog
ICAgIEVYUEVDVF9GQUxTRShsYXllckltcGwtPmhhc1RpbGVBdCgwLCAwKSk7CkBAIC02NDQsMTMy
ICs2NjEsMTUgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBza2lwc0RyYXdHZXRzUmVz
ZXQpCiAgICAgV2ViS2l0OjpXZWJDb21wb3NpdG9yOjpzaHV0ZG93bigpOwogfQogCi1URVNUKFRp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGxheWVyQWRkc1NlbGZUb09jY2x1ZGVkUmVnaW9uKQotewot
ICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdl
cjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAyKjEwMjQqMTAyNCwgMTAyNCk7Ci0gICAgUmVmUHRyPEZh
a2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVy
Q2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKLQotICAgIC8vIFRoZSB0aWxlIHNpemUg
aXMgMTAweDEwMCwgc28gdGhpcyBpbnZhbGlkYXRlcyBhbmQgdGhlbiBwYWludHMgdHdvIHRpbGVz
IGluIHZhcmlvdXMgd2F5cy4KLQotICAgIFJlZ2lvbiBvY2NsdWRlZDsKLSAgICBJbnRSZWN0IGNv
bnRlbnRCb3VuZHMgPSBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKTsKLSAgICBJbnRSZWN0IHZpc2li
bGVCb3VuZHMgPSBJbnRSZWN0KDAsIDAsIDEwMCwgMTUwKTsKLQotICAgIGxheWVyLT5zZXRCb3Vu
ZHMoY29udGVudEJvdW5kcy5zaXplKCkpOwotICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0
KHZpc2libGVCb3VuZHMpOwotICAgIGxheWVyLT5zZXREcmF3T3BhY2l0eSgxKTsKLQotICAgIC8v
IFRoZSBzY3JlZW5TcGFjZVRyYW5zZm9ybSBpcyB2ZXJpZmllZCBpbiBDQ0xheWVyVHJlZUhvc3RD
b21tb25UZXN0cwotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHNjcmVlblNwYWNlVHJhbnNmb3Jt
OwotICAgIGxheWVyLT5zZXRTY3JlZW5TcGFjZVRyYW5zZm9ybShzY3JlZW5TcGFjZVRyYW5zZm9y
bSk7Ci0KLSAgICAvLyBJZiB0aGUgbGF5ZXIgaXMgb3BhcXVlIHRoZW4gdGhlIG9jY2x1ZGVkIHJl
Z2lvbiBzaG91bGQgYmUgdGhlIHdob2xlIGxheWVyJ3MgdmlzaWJsZSByZWdpb24uCi0gICAgbGF5
ZXItPnNldE9wYXF1ZSh0cnVlKTsKLSAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoY29udGVudEJv
dW5kcyk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzKTsKLQotICAg
IG9jY2x1ZGVkID0gUmVnaW9uKCk7Ci0gICAgbGF5ZXItPmFkZFNlbGZUb09jY2x1ZGVkU2NyZWVu
U3BhY2Uob2NjbHVkZWQpOwotICAgIEVYUEVDVF9FUV9SRUNUKHZpc2libGVCb3VuZHMsIG9jY2x1
ZGVkLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1ZGVkLnJlY3RzKCkuc2l6ZSgp
KTsKLQotICAgIC8vIElmIHRoZSBsYXllciBpcyBub3Qgb3BhcXVlIHRoZW4gdGhlIG9jY2x1ZGVk
IHJlZ2lvbiBzaG91bGQgYmUgZW1wdHkuCi0gICAgbGF5ZXItPnNldE9wYXF1ZShmYWxzZSk7Ci0g
ICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KGNvbnRlbnRCb3VuZHMpOwotICAgIGxheWVyLT5wcmVw
YXJlVG9VcGRhdGUoY29udGVudEJvdW5kcyk7Ci0KLSAgICBvY2NsdWRlZCA9IFJlZ2lvbigpOwot
ICAgIGxheWVyLT5hZGRTZWxmVG9PY2NsdWRlZFNjcmVlblNwYWNlKG9jY2x1ZGVkKTsKLSAgICBF
WFBFQ1RfRVFfUkVDVChJbnRSZWN0KCksIG9jY2x1ZGVkLmJvdW5kcygpKTsKLSAgICBFWFBFQ1Rf
RVEoMHUsIG9jY2x1ZGVkLnJlY3RzKCkuc2l6ZSgpKTsKLQotICAgIC8vIElmIHRoZSBsYXllciBw
YWludHMgb3BhcXVlIGNvbnRlbnQsIHRoZW4gdGhlIG9jY2x1ZGVkIHJlZ2lvbiBzaG91bGQgbWF0
Y2ggdGhlIHZpc2libGUgb3BhcXVlIGNvbnRlbnQuCi0gICAgSW50UmVjdCBvcGFxdWVQYWludFJl
Y3QgPSBJbnRSZWN0KDEwLCAxMCwgOTAsIDE5MCk7Ci0gICAgbGF5ZXItPmZha2VMYXllclRleHR1
cmVVcGRhdGVyKCktPnNldE9wYXF1ZVBhaW50UmVjdChvcGFxdWVQYWludFJlY3QpOwotICAgIGxh
eWVyLT5pbnZhbGlkYXRlUmVjdChjb250ZW50Qm91bmRzKTsKLSAgICBsYXllci0+cHJlcGFyZVRv
VXBkYXRlKGNvbnRlbnRCb3VuZHMpOwotCi0gICAgb2NjbHVkZWQgPSBSZWdpb24oKTsKLSAgICBs
YXllci0+YWRkU2VsZlRvT2NjbHVkZWRTY3JlZW5TcGFjZShvY2NsdWRlZCk7Ci0gICAgRVhQRUNU
X0VRX1JFQ1QoaW50ZXJzZWN0aW9uKG9wYXF1ZVBhaW50UmVjdCwgdmlzaWJsZUJvdW5kcyksIG9j
Y2x1ZGVkLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1ZGVkLnJlY3RzKCkuc2l6
ZSgpKTsKLQotICAgIC8vIElmIHdlIHBhaW50IGFnYWluIHdpdGhvdXQgaW52YWxpZGF0aW5nLCB0
aGUgc2FtZSBzdHVmZiBzaG91bGQgYmUgb2NjbHVkZWQuCi0gICAgbGF5ZXItPmZha2VMYXllclRl
eHR1cmVVcGRhdGVyKCktPnNldE9wYXF1ZVBhaW50UmVjdChJbnRSZWN0KCkpOwotICAgIGxheWVy
LT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcyk7Ci0KLSAgICBvY2NsdWRlZCA9IFJlZ2lv
bigpOwotICAgIGxheWVyLT5hZGRTZWxmVG9PY2NsdWRlZFNjcmVlblNwYWNlKG9jY2x1ZGVkKTsK
LSAgICBFWFBFQ1RfRVFfUkVDVChpbnRlcnNlY3Rpb24ob3BhcXVlUGFpbnRSZWN0LCB2aXNpYmxl
Qm91bmRzKSwgb2NjbHVkZWQuYm91bmRzKCkpOwotICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVkZWQu
cmVjdHMoKS5zaXplKCkpOwotCi0gICAgLy8gSWYgd2UgcmVwYWludCBhIG5vbi1vcGFxdWUgcGFy
dCBvZiB0aGUgdGlsZSwgdGhlbiBpdCBzaG91bGRuJ3QgbG9zZSBpdHMgb3BhcXVlLW5lc3MuIEFu
ZCBvdGhlciB0aWxlcyBzaG91bGQKLSAgICAvLyBub3QgYmUgYWZmZWN0ZWQuCi0gICAgbGF5ZXIt
PmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNldE9wYXF1ZVBhaW50UmVjdChJbnRSZWN0KCkp
OwotICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDEsIDEpKTsKLSAgICBs
YXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMpOwotCi0gICAgb2NjbHVkZWQgPSBS
ZWdpb24oKTsKLSAgICBsYXllci0+YWRkU2VsZlRvT2NjbHVkZWRTY3JlZW5TcGFjZShvY2NsdWRl
ZCk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoaW50ZXJzZWN0aW9uKG9wYXF1ZVBhaW50UmVjdCwgdmlz
aWJsZUJvdW5kcyksIG9jY2x1ZGVkLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1
ZGVkLnJlY3RzKCkuc2l6ZSgpKTsKLQotICAgIC8vIElmIHdlIHJlcGFpbnQgYW4gb3BhcXVlIHBh
cnQgb2YgdGhlIHRpbGUsIHRoZW4gaXQgc2hvdWxkIGxvc2UgaXRzIG9wYXF1ZS1uZXNzLiBCdXQg
b3RoZXIgdGlsZXMgc2hvdWxkIHN0aWxsCi0gICAgLy8gbm90IGJlIGFmZmVjdGVkLgotICAgIGxh
eWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRPcGFxdWVQYWludFJlY3QoSW50UmVj
dCgpKTsKLSAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgxMCwgMTAsIDEsIDEpKTsK
LSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMpOwotCi0gICAgb2NjbHVk
ZWQgPSBSZWdpb24oKTsKLSAgICBsYXllci0+YWRkU2VsZlRvT2NjbHVkZWRTY3JlZW5TcGFjZShv
Y2NsdWRlZCk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoaW50ZXJzZWN0aW9uKEludFJlY3QoMTAsIDEw
MCwgOTAsIDEwMCksIHZpc2libGVCb3VuZHMpLCBvY2NsdWRlZC5ib3VuZHMoKSk7Ci0gICAgRVhQ
RUNUX0VRKDF1LCBvY2NsdWRlZC5yZWN0cygpLnNpemUoKSk7Ci0KLSAgICAvLyBJZiB0aGUgbGF5
ZXIgaXMgdHJhbnNmb3JtZWQgdGhlbiB0aGUgcmVzdWx0aW5nIG9jY2x1ZGVkIGFyZWEgbmVlZHMg
dG8gYmUgdHJhbnNmb3JtZWQgdG8gaXRzIHRhcmdldCBzcGFjZS4KLSAgICBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCB0cmFuc2Zvcm07Ci0gICAgdHJhbnNmb3JtLnRyYW5zbGF0ZShjb250ZW50Qm91bmRz
LndpZHRoKCkgLyAyLjAsIGNvbnRlbnRCb3VuZHMuaGVpZ2h0KCkgLyAyLjApOwotICAgIHRyYW5z
Zm9ybS5yb3RhdGUoOTApOwotICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoLWNvbnRlbnRCb3VuZHMu
d2lkdGgoKSAvIDIuMCwgLWNvbnRlbnRCb3VuZHMuaGVpZ2h0KCkgLyAyLjApOwotICAgIHRyYW5z
Zm9ybS50cmFuc2xhdGUoMTAsIDEwKTsKLSAgICBzY3JlZW5TcGFjZVRyYW5zZm9ybS50cmFuc2xh
dGUoY29udGVudEJvdW5kcy53aWR0aCgpIC8gMi4wLCBjb250ZW50Qm91bmRzLmhlaWdodCgpIC8g
Mi4wKTsKLSAgICBzY3JlZW5TcGFjZVRyYW5zZm9ybSAqPSB0cmFuc2Zvcm07Ci0gICAgc2NyZWVu
U3BhY2VUcmFuc2Zvcm0udHJhbnNsYXRlKC1jb250ZW50Qm91bmRzLndpZHRoKCkgLyAyLjAsIC1j
b250ZW50Qm91bmRzLmhlaWdodCgpIC8gMi4wKTsKLSAgICBsYXllci0+c2V0U2NyZWVuU3BhY2VU
cmFuc2Zvcm0oc2NyZWVuU3BhY2VUcmFuc2Zvcm0pOwotICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0
dXJlVXBkYXRlcigpLT5zZXRPcGFxdWVQYWludFJlY3Qob3BhcXVlUGFpbnRSZWN0KTsKLSAgICBs
YXllci0+aW52YWxpZGF0ZVJlY3Qob3BhcXVlUGFpbnRSZWN0KTsKLSAgICBsYXllci0+cHJlcGFy
ZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMpOwotCi0gICAgb2NjbHVkZWQgPSBSZWdpb24oKTsKLSAg
ICBsYXllci0+YWRkU2VsZlRvT2NjbHVkZWRTY3JlZW5TcGFjZShvY2NsdWRlZCk7Ci0gICAgRVhQ
RUNUX0VRX1JFQ1Qoc2NyZWVuU3BhY2VUcmFuc2Zvcm0ubWFwUmVjdChpbnRlcnNlY3Rpb24ob3Bh
cXVlUGFpbnRSZWN0LCB2aXNpYmxlQm91bmRzKSksIG9jY2x1ZGVkLmJvdW5kcygpKTsKLSAgICBF
WFBFQ1RfRVEoMXUsIG9jY2x1ZGVkLnJlY3RzKCkuc2l6ZSgpKTsKLQotICAgIC8vIEJ1dCBhIG5v
bi1heGlzLWFsaWduZWQgdHJhbnNmb3JtIGRvZXMgbm90IGdldCBjb25zaWRlcmVkIGZvciBvY2Ns
dXNpb24uCi0gICAgdHJhbnNmb3JtLnRyYW5zbGF0ZShjb250ZW50Qm91bmRzLndpZHRoKCkgLyAy
LjAsIGNvbnRlbnRCb3VuZHMuaGVpZ2h0KCkgLyAyLjApOwotICAgIHRyYW5zZm9ybS5yb3RhdGUo
NSk7Ci0gICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSgtY29udGVudEJvdW5kcy53aWR0aCgpIC8gMi4w
LCAtY29udGVudEJvdW5kcy5oZWlnaHQoKSAvIDIuMCk7Ci0gICAgc2NyZWVuU3BhY2VUcmFuc2Zv
cm0udHJhbnNsYXRlKGNvbnRlbnRCb3VuZHMud2lkdGgoKSAvIDIuMCwgY29udGVudEJvdW5kcy5o
ZWlnaHQoKSAvIDIuMCk7Ci0gICAgc2NyZWVuU3BhY2VUcmFuc2Zvcm0gKj0gdHJhbnNmb3JtOwot
ICAgIHNjcmVlblNwYWNlVHJhbnNmb3JtLnRyYW5zbGF0ZSgtY29udGVudEJvdW5kcy53aWR0aCgp
IC8gMi4wLCAtY29udGVudEJvdW5kcy5oZWlnaHQoKSAvIDIuMCk7Ci0gICAgbGF5ZXItPnNldFNj
cmVlblNwYWNlVHJhbnNmb3JtKHNjcmVlblNwYWNlVHJhbnNmb3JtKTsKLSAgICBsYXllci0+cHJl
cGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMpOwotCi0gICAgb2NjbHVkZWQgPSBSZWdpb24oKTsK
LSAgICBsYXllci0+YWRkU2VsZlRvT2NjbHVkZWRTY3JlZW5TcGFjZShvY2NsdWRlZCk7Ci0gICAg
Ly8gRklYTUU6IElmIHdlIGZpbmQgYW4gb3BhcXVlIHJlY3QgY29udGFpbmVkIGluIHRoZSByb3Rh
dGVkIG5vbi1heGlzLWFsaWduZWQgcmVjdCwgdGhlbgotICAgIC8vIHRoaXMgd29uJ3QgYmUgYW4g
ZW1wdHkgcmVzdWx0LgotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoKSwgb2NjbHVkZWQuYm91
bmRzKCkpOwotICAgIEVYUEVDVF9FUSgwdSwgb2NjbHVkZWQucmVjdHMoKS5zaXplKCkpOwotfQot
CiBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHJlc2l6ZVRvU21hbGxlcikKIHsKICAgICBP
d25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNy
ZWF0ZSg2MCoxMDI0KjEwMjQsIDYwKjEwMjQqMTAyNCwgMTAyNCk7CiAgICAgUmVmUHRyPEZha2VU
aWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hy
b21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKKyAgICBSZWdpb24gbm9PY2NsdXNpb247CiAK
ICAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoNzAwLCA3MDApKTsKICAgICBsYXllci0+aW52
YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA3MDAsIDcwMCkpOwotICAgIGxheWVyLT5wcmVwYXJl
VG9VcGRhdGUoSW50UmVjdCgwLCAwLCA3MDAsIDcwMCkpOworICAgIGxheWVyLT5wcmVwYXJlVG9V
cGRhdGUoSW50UmVjdCgwLCAwLCA3MDAsIDcwMCksIG5vT2NjbHVzaW9uKTsKIAogICAgIGxheWVy
LT5zZXRCb3VuZHMoSW50U2l6ZSgyMDAsIDIwMCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVj
dChJbnRSZWN0KDAsIDAsIDIwMCwgMjAwKSk7CkBAIC04NDYsNCArNzQ2LDIwMSBAQCBURVNUKFRp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHBhcnRpYWxVcGRhdGVzKQogICAgIFdlYktpdDo6V2ViQ29t
cG9zaXRvcjo6c2h1dGRvd24oKTsKIH0KIAorVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0
aWxlc1BhaW50ZWRXaXRob3V0T2NjbHVzaW9uKQoreworICAgIE93blB0cjxUZXh0dXJlTWFuYWdl
cj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAy
KjEwMjQqMTAyNCwgMTAyNCk7CisgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxh
eWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIu
Z2V0KCkpKTsKKyAgICBSZWdpb24gb2NjbHVkZWQ7CisKKyAgICAvLyBUaGUgdGlsZSBzaXplIGlz
IDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxlcy4K
KyAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAyMDApKTsKKworICAgIGxheWVyLT5p
bnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CisgICAgbGF5ZXItPnByZXBh
cmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgb2NjbHVkZWQpOworICAgIEVYUEVD
VF9FUSgyLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3Vu
dCgpKTsKK30KKworVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRo
T2NjbHVzaW9uKQoreworICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIg
PSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAyKjEwMjQqMTAyNCwgMTAyNCk7
CisgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3
IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKKyAgICBSZWdp
b24gb2NjbHVkZWQ7CisKKyAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAuCisKKyAgICBs
YXllci0+c2V0Qm91bmRzKEludFNpemUoNjAwLCA2MDApKTsKKworICAgIG9jY2x1ZGVkID0gSW50
UmVjdCgyMDAsIDIwMCwgMzAwLCAxMDApOworICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0
KEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXItPmJvdW5kcygpKSk7CisgICAgbGF5ZXItPmludmFs
aWRhdGVSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKKyAgICBsYXllci0+cHJlcGFyZVRv
VXBkYXRlKEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCBvY2NsdWRlZCk7CisgICAgRVhQRUNUX0VR
KDM2LTMsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50
KCkpOworCisgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyUHJlcGFy
ZVJlY3RDb3VudCgpOworCisgICAgb2NjbHVkZWQgPSBJbnRSZWN0KDI1MCwgMjAwLCAzMDAsIDEw
MCk7CisgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsK
KyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCBvY2Ns
dWRlZCk7CisgICAgRVhQRUNUX0VRKDM2LTIsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRl
cigpLT5wcmVwYXJlUmVjdENvdW50KCkpOworCisgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVV
cGRhdGVyKCktPmNsZWFyUHJlcGFyZVJlY3RDb3VudCgpOworCisgICAgb2NjbHVkZWQgPSBJbnRS
ZWN0KDI1MCwgMjUwLCAzMDAsIDEwMCk7CisgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJl
Y3QoMCwgMCwgNjAwLCA2MDApKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3Qo
MCwgMCwgNjAwLCA2MDApLCBvY2NsdWRlZCk7CisgICAgRVhQRUNUX0VRKDM2LCBsYXllci0+ZmFr
ZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKKworICAgIGxheWVy
LT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVSZWN0Q291bnQoKTsKKwor
ICAgIG9jY2x1ZGVkID0gSW50UmVjdCgyNTAsIDI1MCwgMzAwLCAxMDApOworICAgIGxheWVyLT5p
bnZhbGlkYXRlUmVjdChJbnRSZWN0KDI0OSwgMjQ5LCAzNTAsIDM1MCkpOworICAgIGxheWVyLT5w
cmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksIG9jY2x1ZGVkKTsKKyAgICBF
WFBFQ1RfRVEoMTYsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVj
dENvdW50KCkpOworCisgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFy
UHJlcGFyZVJlY3RDb3VudCgpOworCisgICAgLy8gSWYgdGhlIGludmFsaWRhdGlvbiBpbiBhIHRp
bGUgaXMgb2NjbHVkZWQgdGhlbiBpdCBzaG91bGRuJ3QgYmUgcGFpbnRlZC4KKworICAgIG9jY2x1
ZGVkID0gSW50UmVjdCgyNTAsIDI1MCwgMzAwLCAxMDApOworICAgIGxheWVyLT5pbnZhbGlkYXRl
UmVjdChJbnRSZWN0KDI0OSwgMjUwLCAzNTAsIDM1MCkpOworICAgIGxheWVyLT5wcmVwYXJlVG9V
cGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksIG9jY2x1ZGVkKTsKKyAgICBFWFBFQ1RfRVEo
MTQsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkp
OworCisgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyUHJlcGFyZVJl
Y3RDb3VudCgpOworCisgICAgb2NjbHVkZWQgPSBJbnRSZWN0KDI1MCwgMjUwLCAzMDAsIDEwMCk7
CisgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMjUwLCAyNTAsIDM1MCwgMzUwKSk7
CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgb2Nj
bHVkZWQpOworICAgIEVYUEVDVF9FUSgxMywgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVy
KCktPnByZXBhcmVSZWN0Q291bnQoKSk7Cit9CisKK1RFU1QoVGlsZWRMYXllckNocm9taXVtVGVz
dCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFZpc2libGl0eUNvbnN0cmFpbnRzKQorewor
ICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdl
cjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAyKjEwMjQqMTAyNCwgMTAyNCk7CisgICAgUmVmUHRyPEZh
a2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVy
Q2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKKyAgICBSZWdpb24gb2NjbHVkZWQ7CisK
KyAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAuCisKKyAgICBsYXllci0+c2V0Qm91bmRz
KEludFNpemUoNjAwLCA2MDApKTsKKworICAgIC8vIFRoZSBwYXJ0aWFsbHkgb2NjbHVkZWQgdGls
ZXMgKGJ5IHRoZSAxNTAgb2NjbHVzaW9uIGhlaWdodCkgYXJlIHZpc2libGUgYmV5b25kIHRoZSBv
Y2NsdXNpb24sIHNvIG5vdCBjdWxsZWQuCisgICAgb2NjbHVkZWQgPSBJbnRSZWN0KDIwMCwgMjAw
LCAzMDAsIDE1MCk7CisgICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdCgwLCAw
LCA2MDAsIDM2MCkpOworICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYw
MCwgNjAwKSk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwg
NjAwKSwgb2NjbHVkZWQpOworICAgIEVYUEVDVF9FUSgzNi0zLCBsYXllci0+ZmFrZUxheWVyVGV4
dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKKworICAgIGxheWVyLT5mYWtlTGF5
ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVSZWN0Q291bnQoKTsKKworICAgIC8vIE5v
dyB0aGUgdmlzaWJsZSByZWdpb24gc3RvcHMgYXQgdGhlIGVkZ2Ugb2YgdGhlIG9jY2x1c2lvbiBz
byB0aGUgcGFydGx5IHZpc2libGUgdGlsZXMgYmVjb21lIGZ1bGx5IG9jY2x1ZGVkLgorICAgIG9j
Y2x1ZGVkID0gSW50UmVjdCgyMDAsIDIwMCwgMzAwLCAxNTApOworICAgIGxheWVyLT5zZXRWaXNp
YmxlTGF5ZXJSZWN0KEludFJlY3QoMCwgMCwgNjAwLCAzNTApKTsKKyAgICBsYXllci0+aW52YWxp
ZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOworICAgIGxheWVyLT5wcmVwYXJlVG9V
cGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksIG9jY2x1ZGVkKTsKKyAgICBFWFBFQ1RfRVEo
MzYtNiwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQo
KSk7CisKKyAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQcmVwYXJl
UmVjdENvdW50KCk7CisKKyAgICAvLyBOb3cgdGhlIHZpc2libGUgcmVnaW9uIGlzIGV2ZW4gc21h
bGxlciB0aGFuIHRoZSBvY2NsdXNpb24sIGl0IHNob3VsZCBoYXZlIHRoZSBzYW1lIHJlc3VsdC4K
KyAgICBvY2NsdWRlZCA9IEludFJlY3QoMjAwLCAyMDAsIDMwMCwgMTUwKTsKKyAgICBsYXllci0+
c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgMzQwKSk7CisgICAgbGF5ZXIt
PmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKKyAgICBsYXllci0+cHJl
cGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCBvY2NsdWRlZCk7CisgICAgRVhQ
RUNUX0VRKDM2LTYsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVj
dENvdW50KCkpOworfQorCitURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzTm90UGFp
bnRlZFdpdGhvdXRJbnZhbGlkYXRpb24pCit7CisgICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0
ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDIqMTAy
NCoxMDI0LCAxMDI0KTsKKyAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIg
PSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQo
KSkpOworICAgIFJlZ2lvbiBvY2NsdWRlZDsKKworICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAw
eDEwMC4KKworICAgIGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSg2MDAsIDYwMCkpOworCisgICAg
b2NjbHVkZWQgPSBJbnRSZWN0KDIwMCwgMjAwLCAzMDAsIDEwMCk7CisgICAgbGF5ZXItPnNldFZp
c2libGVMYXllclJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOworICAgIGxheWVyLT5pbnZh
bGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CisgICAgbGF5ZXItPnByZXBhcmVU
b1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgb2NjbHVkZWQpOworICAgIEVYUEVDVF9F
USgzNi0zLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3Vu
dCgpKTsKKworICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBh
cmVSZWN0Q291bnQoKTsKKworICAgIC8vIFJlcGFpbnQgd2l0aG91dCBtYXJraW5nIGl0IGRpcnR5
LgorICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksIG9j
Y2x1ZGVkKTsKKyAgICBFWFBFQ1RfRVEoMCwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVy
KCktPnByZXBhcmVSZWN0Q291bnQoKSk7Cit9CisKK1RFU1QoVGlsZWRMYXllckNocm9taXVtVGVz
dCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFRyYW5zZm9ybXMpCit7CisgICAgT3duUHRy
PFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUo
NCoxMDI0KjEwMjQsIDIqMTAyNCoxMDI0LCAxMDI0KTsKKyAgICBSZWZQdHI8RmFrZVRpbGVkTGF5
ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0
ZXh0dXJlTWFuYWdlci5nZXQoKSkpOworICAgIFJlZ2lvbiBvY2NsdWRlZDsKKworICAgIC8vIFRo
ZSB0aWxlIHNpemUgaXMgMTAweDEwMC4KKworICAgIC8vIFRoaXMgbWFrZXMgc3VyZSB0aGUgcGFp
bnRpbmcgd29ya3Mgd2hlbiB0aGUgb2NjbHVkZWQgcmVnaW9uIChpbiBzY3JlZW4gc3BhY2UpCisg
ICAgLy8gaXMgdHJhbnNmb3JtZWQgZGlmZmVyZW50bHkgdGhhbiB0aGUgbGF5ZXIuCisgICAgbGF5
ZXItPnNldEJvdW5kcyhJbnRTaXplKDYwMCwgNjAwKSk7CisgICAgVHJhbnNmb3JtYXRpb25NYXRy
aXggc2NyZWVuVHJhbnNmb3JtOworICAgIHNjcmVlblRyYW5zZm9ybS5zY2FsZSgwLjUpOworICAg
IGxheWVyLT5zZXRTY3JlZW5TcGFjZVRyYW5zZm9ybShzY3JlZW5UcmFuc2Zvcm0pOworCisgICAg
b2NjbHVkZWQgPSBJbnRSZWN0KDEwMCwgMTAwLCAxNTAsIDUwKTsKKyAgICBsYXllci0+c2V0Vmlz
aWJsZUxheWVyUmVjdChJbnRSZWN0KEludFBvaW50KCksIGxheWVyLT5ib3VuZHMoKSkpOworICAg
IGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CisgICAgbGF5
ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgb2NjbHVkZWQpOwor
ICAgIEVYUEVDVF9FUSgzNi0zLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJl
cGFyZVJlY3RDb3VudCgpKTsKK30KKworVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxl
c1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kU2NhbGluZykKK3sKKyAgICBPd25QdHI8VGV4dHVyZU1h
bmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAy
NCwgMioxMDI0KjEwMjQsIDEwMjQpOworICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVt
PiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5h
Z2VyLmdldCgpKSk7CisgICAgUmVnaW9uIG9jY2x1ZGVkOworCisgICAgLy8gVGhlIHRpbGUgc2l6
ZSBpcyAxMDB4MTAwLgorCisgICAgLy8gVGhpcyBtYWtlcyBzdXJlIHRoZSBwYWludGluZyB3b3Jr
cyB3aGVuIHRoZSBjb250ZW50IHNwYWNlIGlzIHNjYWxlZCB0bworICAgIC8vIGEgZGlmZmVyZW50
IGxheWVyIHNwYWNlLiBJbiB0aGlzIGNhc2UgdGlsZXMgYXJlIHNjYWxlZCB0byBiZSAyMDB4MjAw
CisgICAgLy8gcGl4ZWxzLCB3aGljaCBtZWFucyBub25lIHNob3VsZCBiZSBvY2NsdWRlZC4KKyAg
ICBsYXllci0+c2V0Q29udGVudHNTY2FsZSgwLjUpOworICAgIGxheWVyLT5zZXRCb3VuZHMoSW50
U2l6ZSg2MDAsIDYwMCkpOworCisgICAgb2NjbHVkZWQgPSBJbnRSZWN0KDIwMCwgMjAwLCAzMDAs
IDEwMCk7CisgICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdChJbnRQb2ludCgp
LCBsYXllci0+Ym91bmRzKCkpKTsKKyAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgw
LCAwLCA2MDAsIDYwMCkpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAw
LCA2MDAsIDYwMCksIG9jY2x1ZGVkKTsKKyAgICAvLyBUaGUgY29udGVudCBpcyBoYWxmIHRoZSBz
aXplIG9mIHRoZSBsYXllciAoc28gdGhlIG51bWJlciBvZiB0aWxlcyBpcyBmZXdlcikuCisgICAg
Ly8gSW4gdGhpcyBjYXNlLCB0aGUgY29udGVudCBpcyAzMDB4MzAwLCBhbmQgc2luY2UgdGhlIHRp
bGUgc2l6ZSBpcyAxMDAsIHRoZQorICAgIC8vIG51bWJlciBvZiB0aWxlcyAzeDMuCisgICAgRVhQ
RUNUX0VRKDksIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENv
dW50KCkpOworCisgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyUHJl
cGFyZVJlY3RDb3VudCgpOworCisgICAgLy8gVGhpcyBtYWtlcyBzdXJlIHRoZSBwYWludGluZyB3
b3JrcyB3aGVuIHRoZSBjb250ZW50IHNwYWNlIGlzIHNjYWxlZCB0bworICAgIC8vIGEgZGlmZmVy
ZW50IGxheWVyIHNwYWNlLiBJbiB0aGlzIGNhc2UgdGhlIG9jY2x1ZGVkIHJlZ2lvbiBjYXRjaGVz
IHRoZQorICAgIC8vIGJsb3duIHVwIHRpbGVzLgorICAgIG9jY2x1ZGVkID0gSW50UmVjdCgyMDAs
IDIwMCwgMzAwLCAyMDApOworICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3Qo
SW50UG9pbnQoKSwgbGF5ZXItPmJvdW5kcygpKSk7CisgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0
KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKElu
dFJlY3QoMCwgMCwgNjAwLCA2MDApLCBvY2NsdWRlZCk7CisgICAgRVhQRUNUX0VRKDktMSwgbGF5
ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CisKKyAg
ICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQcmVwYXJlUmVjdENvdW50
KCk7CisKKyAgICAvLyBUaGlzIG1ha2VzIHN1cmUgY29udGVudCBzY2FsaW5nIGFuZCB0cmFuc2Zv
cm1zIHdvcmsgdG9nZXRoZXIuCisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggc2NyZWVuVHJhbnNm
b3JtOworICAgIHNjcmVlblRyYW5zZm9ybS5zY2FsZSgwLjUpOworICAgIGxheWVyLT5zZXRTY3Jl
ZW5TcGFjZVRyYW5zZm9ybShzY3JlZW5UcmFuc2Zvcm0pOworCisgICAgb2NjbHVkZWQgPSBJbnRS
ZWN0KDEwMCwgMTAwLCAxNTAsIDEwMCk7CisgICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3Qo
SW50UmVjdChJbnRQb2ludCgpLCBsYXllci0+Ym91bmRzKCkpKTsKKyAgICBsYXllci0+aW52YWxp
ZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOworICAgIGxheWVyLT5wcmVwYXJlVG9V
cGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksIG9jY2x1ZGVkKTsKKyAgICBFWFBFQ1RfRVEo
OS0xLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgp
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130655</attachid>
            <date>2012-03-07 11:23:11 -0800</date>
            <delta_ts>2012-03-07 12:46:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76838-20120307142309.patch</filename>
            <type>text/plain</type>
            <size>59863</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMDUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTZkN2U1NjU4ZTIyYWZj
NmUxMjc1ZjlkNzk2ZTUxNTk0NjcyNGMwNy4uMjk0ZWYxYzI0N2EyYzA0ZDhlOGFkODBkODNkNmUz
N2QzMzRlYjg2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTAzLTAyICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQ3Vs
bCBvY2NsdWRlZCB0aWxlcyBkdXJpbmcgcGFpbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc2ODM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVXNpbmcgQ0NPY2NsdXNpb25UcmFja2VyIGluc3RlYWQgb2Yg
dGhlIG9sZCBjdXN0b20gcGFpbnQgb2NjbHVzaW9uCisgICAgICAgIHRyYWNraW5nLiBTdG9wcyBw
YWludGluZyB0aWxlcyB3aGVuIHRoZSB0aWxlIGlzIG5vdCB2aXNpYmxlLgorCisgICAgICAgIEND
T2NjbHVzaW9uVHJhY2tlciBvbmx5IHVzZXMgTGF5ZXI6Om9wYXF1ZSgpIGZvciBkZXRlcm1pbmlu
ZworICAgICAgICBvY2NsdXNpb24gc28gZmFyLiBUaGUgTGF5ZXI6OmFkZFNlbGZUb09jY2x1ZGVk
UmVnaW9uIGlzIGJlaW5nCisgICAgICAgIHJlcGxhY2VkIGJ5IGEgc3VwZXJpb3IgbWV0aG9kIGlu
IENDT2NjbHVzaW9uVHJhY2tlciB0aGF0IHdpbGwKKyAgICAgICAgd29yayBmb3IgYm90aCB0aHJl
YWRzLCBzbyByZW1vdmluZyB0aGF0IHN1cHBvcnQgaGVyZS4KKworICAgICAgICBVbml0IHRlc3Q6
IFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OmlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0u
aDoKKyAgICAgICAgKENvbnRlbnRMYXllckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJDaHJvbWl1bTo6aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KToKKyAgICAgICAg
KExheWVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rp
bGVkTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OmNvbnRlbnRUb0xheWVyVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5
ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6VGls
ZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGls
ZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZGxlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFRpbGVk
TGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6
cGFpbnRDb250ZW50c0lmRGlydHkpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
OjpwYWludExheWVyQ29udGVudHMpOgorCiAyMDEyLTAzLTA3ICBBcnVuIFBhdG9sZSAgPGJtZjgz
NEBtb3Rvcm9sYS5jb20+CiAKICAgICAgICAgSFRNTFRyYWNrRWxlbWVudC5pZGwgZG9lc24ndCBo
YXZlIGRlZmF1bHQgYXR0cmlidXRlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA2MzJm
ZGY5ZWEyZDcxY2E5OTY1MDViODA3MzMwYjY1ZjExZDJjMWQ2Li40ZmU1YmIxN2I3ZmRkZjkyMjBh
ZTViMjMzN2YwODJiZTI5NWVhOTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI1IEBACisyMDEyLTAzLTAyICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFtjaHJvbWl1bV0gQ3VsbCBvY2NsdWRlZCB0aWxlcyBkdXJpbmcgcGFpbnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2ODM4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0cy9D
Q0xheWVyVHJlZUhvc3RUZXN0LmNwcDoKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21p
dW1XaXRoVXBkYXRlVHJhY2tpbmc6OmlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSk6CisgICAgICAg
ICogdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHA6CisgICAgICAgIChXVEY6OkZha2VM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpwcmVwYXJlUmVjdCk6CisgICAgICAgIChXVEY6
OkZha2VMYXllclRleHR1cmVVcGRhdGVyOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcik6CisgICAg
ICAgIChGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcik6CisgICAgICAgIChXVEY6OkZha2VMYXllclRl
eHR1cmVVcGRhdGVyOjpwcmVwYXJlUmVjdENvdW50KToKKyAgICAgICAgKFdURjo6RmFrZUxheWVy
VGV4dHVyZVVwZGF0ZXI6OmNsZWFyUHJlcGFyZVJlY3RDb3VudCk6CisgICAgICAgIChXVEY6OkZh
a2VMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlUmVjdCk6CisgICAgICAgIChXVEY6OkZha2VU
aWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZSk6CisgICAgICAgIChXVEY6OkZha2VU
aWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlkbGUpOgorICAgICAgICAoV1RGOjpG
YWtlVGlsZWRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSk6CisgICAgICAgIChX
VEY6OlRFU1QpOgorICAgICAgICAoV1RGKToKKwogMjAxMi0wMy0wNiAgRGFuYSBKYW5zZW5zICA8
ZGFuYWtqQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIEFkZCBjbGlwcGluZyB0
byBzY2lzc29yIHJlY3QgdG8gQ0NPY2NsdXNpb25UcmFja2VyCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5
ZXJDaHJvbWl1bS5jcHAKaW5kZXggYWE3ZmI1Y2Y0NmIwNjI1N2ZmNWJmMjM1ZmIzYmYwNzg0NTM1
NDk5Zi4uMDVmNzQyNzFhMTc4ODQ3MWFmZGI3ZjlhMDcxOGFiMTZkNzE2YTc3ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVy
Q2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcApAQCAtOTMsNyArOTMsNyBAQCBib29sIENvbnRl
bnRMYXllckNocm9taXVtOjpkcmF3c0NvbnRlbnQoKSBjb25zdAogICAgIHJldHVybiBUaWxlZExh
eWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgpICYmIG1fZGVsZWdhdGU7CiB9CiAKLXZvaWQgQ29u
dGVudExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgLyog
b2NjbHVkZWRTY3JlZW5TcGFjZSAqLykKK3ZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OnBhaW50
Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSkKIHsKICAg
ICB1cGRhdGVUaWxlU2l6ZUFuZFRpbGluZ09wdGlvbigpOwogICAgIGNyZWF0ZVRleHR1cmVVcGRh
dGVySWZOZWVkZWQoKTsKQEAgLTEwNSwxMSArMTA1LDExIEBAIHZvaWQgQ29udGVudExheWVyQ2hy
b21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgLyogb2NjbHVkZWRTY3Jl
ZW5TCiAgICAgaWYgKGRyYXdzQ29udGVudCgpKQogICAgICAgICBsYXllclJlY3QgPSB2aXNpYmxl
TGF5ZXJSZWN0KCk7CiAKLSAgICBwcmVwYXJlVG9VcGRhdGUobGF5ZXJSZWN0KTsKKyAgICBwcmVw
YXJlVG9VcGRhdGUobGF5ZXJSZWN0LCBvY2NsdWRlZFNjcmVlblNwYWNlKTsKICAgICBtX25lZWRz
RGlzcGxheSA9IGZhbHNlOwogfQogCi12b2lkIENvbnRlbnRMYXllckNocm9taXVtOjppZGxlUGFp
bnRDb250ZW50c0lmRGlydHkoKQordm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6aWRsZVBhaW50
Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSkKIHsKICAg
ICBpZiAoIWRyYXdzQ29udGVudCgpKQogICAgICAgICByZXR1cm47CkBAIC0xMTgsNyArMTE4LDcg
QEAgdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KCkK
ICAgICBpZiAobGF5ZXJSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJl
cGFyZVRvVXBkYXRlSWRsZShsYXllclJlY3QpOworICAgIHByZXBhcmVUb1VwZGF0ZUlkbGUobGF5
ZXJSZWN0LCBvY2NsdWRlZFNjcmVlblNwYWNlKTsKICAgICBpZiAobmVlZHNJZGxlUGFpbnQobGF5
ZXJSZWN0KSkKICAgICAgICAgc2V0TmVlZHNDb21taXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVt
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5
ZXJDaHJvbWl1bS5oCmluZGV4IDNlODY4NmQwYTBkYmNlMmMxZThjNjFiNjAxODE0MDI2Mzc2NmJm
MjMuLmZhNTkwMWUyYWQyZDk1MDI2YTYyMDE4YzhjZDYxZTY4NGU3NDJhZGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNo
cm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q29udGVudExheWVyQ2hyb21pdW0uaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50
Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSk7Ci0gICAg
dmlydHVhbCB2b2lkIGlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSgpOworICAgIHZpcnR1YWwgdm9p
ZCBpZGxlUGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uJiBvY2NsdWRlZFNjcmVlblNw
YWNlKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRPcGFxdWUoYm9vbCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJv
bWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFn
ZUxheWVyQ2hyb21pdW0uY3BwCmluZGV4IDFlNDRlODcwMjNmZWQ1ZjQ2OTM1ZGY3YzNmYmQzNjJl
NTRhYjA0MjkuLjYxMWFiMmE2YTY1ODA1Mzk1NmU4YjhlZDMyODBkZmIxYjAwZGIwNTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5
ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcApAQCAtMTU4LDcgKzE1OCw3IEBAIHZvaWQgSW1h
Z2VMYXllckNocm9taXVtOjpzZXRDb250ZW50cyhJbWFnZSogY29udGVudHMpCiAgICAgc2V0TmVl
ZHNEaXNwbGF5KCk7CiB9CiAKLXZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpwYWludENvbnRlbnRz
SWZEaXJ0eShjb25zdCBSZWdpb24mIC8qIG9jY2x1ZGVkU2NyZWVuU3BhY2UgKi8pCit2b2lkIElt
YWdlTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uJiBvY2Ns
dWRlZFNjcmVlblNwYWNlKQogewogICAgIGNyZWF0ZVRleHR1cmVVcGRhdGVySWZOZWVkZWQoKTsK
ICAgICBpZiAobV9uZWVkc0Rpc3BsYXkpIHsKQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIEltYWdl
TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uJiAvKiBvY2Ns
dWRlZFNjcmVlblNwYQogICAgICAgICBtX25lZWRzRGlzcGxheSA9IGZhbHNlOwogICAgIH0KIAot
ICAgIHByZXBhcmVUb1VwZGF0ZSh2aXNpYmxlTGF5ZXJSZWN0KCkpOworICAgIHByZXBhcmVUb1Vw
ZGF0ZSh2aXNpYmxlTGF5ZXJSZWN0KCksIG9jY2x1ZGVkU2NyZWVuU3BhY2UpOwogfQogCiB2b2lk
IEltYWdlTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlVGV4dHVyZVVwZGF0ZXJJZk5lZWRlZCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNo
cm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyQ2hyb21pdW0uY3BwCmluZGV4IGJhNTlkOWU1NDc4OWUwYzU3YTU2MTIzZmNiMDBhNGQ3YWEy
MDkwN2YuLjIzOTg4OTBjNWFhNGY1NGVhZGY2NDI5OGVhMTNmYTVlMTk5MWNhY2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21p
dW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyQ2hyb21pdW0uY3BwCkBAIC01NzgsMzUgKzU3OCw2IEBAIHZvaWQgTGF5ZXJDaHJvbWl1bTo6
c2V0Q29udGVudHNTY2FsZShmbG9hdCBjb250ZW50c1NjYWxlKQogICAgIHNldE5lZWRzRGlzcGxh
eSgpOwogfQogCi1UcmFuc2Zvcm1hdGlvbk1hdHJpeCBMYXllckNocm9taXVtOjpjb250ZW50VG9T
Y3JlZW5TcGFjZVRyYW5zZm9ybSgpIGNvbnN0Ci17Ci0gICAgSW50U2l6ZSBib3VuZHNJbkxheWVy
U3BhY2UgPSBib3VuZHMoKTsKLSAgICBJbnRTaXplIGJvdW5kc0luQ29udGVudFNwYWNlID0gY29u
dGVudEJvdW5kcygpOwotCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtID0gc2Ny
ZWVuU3BhY2VUcmFuc2Zvcm0oKTsKLQotICAgIC8vIFNjYWxlIGZyb20gY29udGVudCBzcGFjZSB0
byBsYXllciBzcGFjZQotICAgIHRyYW5zZm9ybS5zY2FsZU5vblVuaWZvcm0oYm91bmRzSW5MYXll
clNwYWNlLndpZHRoKCkgLyBzdGF0aWNfY2FzdDxkb3VibGU+KGJvdW5kc0luQ29udGVudFNwYWNl
LndpZHRoKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRzSW5MYXllclNw
YWNlLmhlaWdodCgpIC8gc3RhdGljX2Nhc3Q8ZG91YmxlPihib3VuZHNJbkNvbnRlbnRTcGFjZS5o
ZWlnaHQoKSkpOwotCi0gICAgcmV0dXJuIHRyYW5zZm9ybTsKLX0KLQotdm9pZCBMYXllckNocm9t
aXVtOjphZGRTZWxmVG9PY2NsdWRlZFNjcmVlblNwYWNlKFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5T
cGFjZSkKLXsKLSAgICBpZiAoIW9wYXF1ZSgpIHx8IGRyYXdPcGFjaXR5KCkgIT0gMSB8fCAhaXNQ
YWludGVkQXhpc0FsaWduZWRJblNjcmVlbigpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBGbG9h
dFJlY3QgdGFyZ2V0UmVjdCA9IGNvbnRlbnRUb1NjcmVlblNwYWNlVHJhbnNmb3JtKCkubWFwUmVj
dChGbG9hdFJlY3QodmlzaWJsZUxheWVyUmVjdCgpKSk7Ci0gICAgb2NjbHVkZWRTY3JlZW5TcGFj
ZS51bml0ZShlbmNsb3NlZEludFJlY3QodGFyZ2V0UmVjdCkpOwotfQotCi1ib29sIExheWVyQ2hy
b21pdW06OmlzUGFpbnRlZEF4aXNBbGlnbmVkSW5TY3JlZW4oKSBjb25zdAotewotICAgIEZsb2F0
UXVhZCBxdWFkID0gY29udGVudFRvU2NyZWVuU3BhY2VUcmFuc2Zvcm0oKS5tYXBRdWFkKEZsb2F0
UXVhZCh2aXNpYmxlTGF5ZXJSZWN0KCkpKTsKLSAgICByZXR1cm4gcXVhZC5pc1JlY3RpbGluZWFy
KCk7Ci19Ci0KIHZvaWQgTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlUmVuZGVyU3VyZmFjZSgpCiB7CiAg
ICAgQVNTRVJUKCFtX3JlbmRlclN1cmZhY2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCmluZGV4IGE1MDhj
OWU2ODMyZjQxNzBiMDBjZTUxYjY1MmNkYzg0Njk2MGY2YjguLjBjZTNiYTBmYTE5NjQxNTY0MTM2
YzFjYWI4ODQyN2JhYjE4OGQzNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKQEAgLTE2MSw3ICsxNjEs
NyBAQCBwdWJsaWM6CiAgICAgLy8gVGhlc2UgbWV0aG9kcyB0eXBpY2FsbHkgbmVlZCB0byBiZSBv
dmVyd3JpdHRlbiBieSBkZXJpdmVkIGNsYXNzZXMuCiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29u
dGVudCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEcmF3YWJsZTsgfQogICAgIHZpcnR1YWwgdm9pZCBw
YWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIC8qIG9jY2x1ZGVkU2NyZWVuU3BhY2Ug
Ki8pIHsgfQotICAgIHZpcnR1YWwgdm9pZCBpZGxlUGFpbnRDb250ZW50c0lmRGlydHkoKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgaWRsZVBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYg
Lyogb2NjbHVkZWRTY3JlZW5TcGFjZSAqLykgeyB9CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNv
bXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJikg
eyB9CiAgICAgdmlydHVhbCB2b2lkIHNldElzTWFzayhib29sKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgdW5yZXNlcnZlQ29udGVudHNUZXh0dXJlKCkgeyB9CkBAIC0yMDAsMTEgKzIwMCw2IEBAIHB1
YmxpYzoKICAgICBmbG9hdCBjb250ZW50c1NjYWxlKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50
c1NjYWxlOyB9CiAgICAgdm9pZCBzZXRDb250ZW50c1NjYWxlKGZsb2F0KTsKIAotICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IGNvbnRlbnRUb1NjcmVlblNwYWNlVHJhbnNmb3JtKCkgY29uc3Q7Ci0K
LSAgICAvLyBBZGRzIGFueSBvcGFxdWUgdmlzaWJsZSBwaXhlbHMgdG8gdGhlIG9jY2x1ZGVkIHJl
Z2lvbi4KLSAgICB2aXJ0dWFsIHZvaWQgYWRkU2VsZlRvT2NjbHVkZWRTY3JlZW5TcGFjZShSZWdp
b24mIG9jY2x1ZGVkU2NyZWVuU3BhY2UpOwotCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIGFueSBv
ZiB0aGUgbGF5ZXIncyBkZXNjZW5kYW50cyBoYXMgY29udGVudCB0byBkcmF3LgogICAgIGJvb2wg
ZGVzY2VuZGFudERyYXdzQ29udGVudCgpOwogCkBAIC0yMzksOCArMjM0LDYgQEAgcHJvdGVjdGVk
OgogCiAgICAgTGF5ZXJDaHJvbWl1bSgpOwogCi0gICAgYm9vbCBpc1BhaW50ZWRBeGlzQWxpZ25l
ZEluU2NyZWVuKCkgY29uc3Q7Ci0KICAgICB2b2lkIHNldE5lZWRzQ29tbWl0KCk7CiAKICAgICAv
LyBUaGlzIGZsYWcgaXMgc2V0IHdoZW4gbGF5ZXIgbmVlZCByZXBhaW50aW5nL3VwZGF0aW5nLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGls
ZWRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggZWJjOWQ1NWFhZjVjMjI4MmVlNmY0
MmE4ZDIzYTlhOTdmYTdjMjMxNS4uMDVmMWJmNDY0NmEwNjU3YzdjNmM5OWE1ODM2YzBmNGFlYTFi
M2QyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVGlsZWRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCkBAIC0zNSw2ICszNSw3IEBA
CiAjaW5jbHVkZSAiTWF0aEV4dHJhcy5oIgogI2luY2x1ZGUgIlJlZ2lvbi5oIgogI2luY2x1ZGUg
IlRleHRTdHJlYW0uaCIKKyNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCiAjaW5jbHVkZSAiY2MvQ0NM
YXllckltcGwuaCIKICNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAi
Y2MvQ0NUaWxlZExheWVySW1wbC5oIgpAQCAtMzk3LDEwICszOTgsMjMgQEAgYm9vbCBUaWxlZExh
eWVyQ2hyb21pdW06OnRpbGVOZWVkc0J1ZmZlcmVkVXBkYXRlKFVwZGF0YWJsZVRpbGUqIHRpbGUp
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJl
VG9VcGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQgcmlnaHQsIGlu
dCBib3R0b20pCisvLyBGSVhNRTogVGhpcyBnZXRzIHJvbGxlZCBpbnRvIENDT2NjbHVzaW9uVHJh
Y2tlciB3aGVuIHdlIHN0b3AgcGFzc2luZyBhcm91bmQgUmVnaW9uIG9iamVjdHMuCitzdGF0aWMg
aW5saW5lIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNvbnRlbnRUb0xheWVyVHJhbnNmb3JtKGNvbnN0
IEludFNpemUmIGJvdW5kc0luTGF5ZXJTcGFjZSwgY29uc3QgSW50U2l6ZSYgYm91bmRzSW5Db250
ZW50U3BhY2UpCit7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtOworICAgIC8v
IFNjYWxlIGZyb20gY29udGVudCBzcGFjZSB0byBsYXllciBzcGFjZQorICAgIHRyYW5zZm9ybS5z
Y2FsZU5vblVuaWZvcm0oYm91bmRzSW5MYXllclNwYWNlLndpZHRoKCkgLyBzdGF0aWNfY2FzdDxk
b3VibGU+KGJvdW5kc0luQ29udGVudFNwYWNlLndpZHRoKCkpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm91bmRzSW5MYXllclNwYWNlLmhlaWdodCgpIC8gc3RhdGljX2Nhc3Q8ZG91
YmxlPihib3VuZHNJbkNvbnRlbnRTcGFjZS5oZWlnaHQoKSkpOworICAgIHJldHVybiB0cmFuc2Zv
cm07Cit9CisKK3ZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVUaWxlcyhi
b29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQgcmlnaHQsIGludCBib3R0b20sIGNvbnN0
IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSkKIHsKICAgICBjcmVhdGVUZXh0dXJlVXBkYXRl
cklmTmVlZGVkKCk7CiAKKyAgICAvLyBUaWxlcyBhcmUgaW4gdGhlIGxheWVyJ3MgY29udGVudCBz
cGFjZSwgdGhlIG9jY2x1ZGVkIHJlZ2lvbiBpcyBpbiBzY3JlZW4gc3BhY2UuCisgICAgVHJhbnNm
b3JtYXRpb25NYXRyaXggY29udGVudFRvU2NyZWVuU3BhY2UgPSBzY3JlZW5TcGFjZVRyYW5zZm9y
bSgpICogY29udGVudFRvTGF5ZXJUcmFuc2Zvcm0oYm91bmRzKCksIGNvbnRlbnRCb3VuZHMoKSk7
CisKICAgICAvLyBDcmVhdGUgdGlsZXMgYXMgbmVlZGVkLCBleHBhbmRpbmcgYSBkaXJ0eSByZWN0
IHRvIGNvbnRhaW4gYWxsCiAgICAgLy8gdGhlIGRpcnR5IHJlZ2lvbnMgY3VycmVudGx5IGJlaW5n
IGRyYXduLiBBbGwgZGlydHkgdGlsZXMgdGhhdCBhcmUgdG8gYmUgcGFpbnRlZAogICAgIC8vIGdl
dCB0aGVpciBtX3VwZGF0ZVJlY3Qgc2V0IHRvIG1fZGlydHlSZWN0IGFuZCBtX2RpcnR5UmVjdCBj
bGVhcmVkLiBUaGlzIHdheSBpZgpAQCAtNDEyLDYgKzQyNiwxNSBAQCB2b2lkIFRpbGVkTGF5ZXJD
aHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRv
cCwgaW50CiAgICAgICAgICAgICBpZiAoIXRpbGUpCiAgICAgICAgICAgICAgICAgdGlsZSA9IGNy
ZWF0ZVRpbGUoaSwgaik7CiAKKyAgICAgICAgICAgIC8vIFdoZW4gbm90IGlkbGUgcGFpbnRpbmcs
IGlmIHRoZSB2aXNpYmxlIHJlZ2lvbiBvZiB0aGUgdGlsZSBpcyBvY2NsdWRlZCwgZG9uJ3QgcmVz
ZXJ2ZSBhIHRleHR1cmUgb3IgbWFyayBpdCBmb3IgdXBkYXRlLgorICAgICAgICAgICAgLy8gSWYg
YW55IHBhcnQgb2YgdGhlIHRpbGUgaXMgdmlzaWJsZSwgdGhlbiB3ZSBuZWVkIHRvIHBhaW50IGl0
IHNvIHRoZSB0aWxlIGlzIHB1c2hlZCB0byB0aGUgaW1wbCB0aHJlYWQuCisgICAgICAgICAgICAv
LyBUaGlzIHdpbGwgYWxzbyBhdm9pZCBwYWludGluZyB0aGUgdGlsZSBpbiB0aGUgbmV4dCBsb29w
LCBiZWxvdy4KKyAgICAgICAgICAgIGlmICghaWRsZSkgeworICAgICAgICAgICAgICAgIEludFJl
Y3QgdmlzaWJsZVRpbGVSZWN0ID0gaW50ZXJzZWN0aW9uKG1fdGlsZXItPnRpbGVCb3VuZHMoaSwg
aiksIHZpc2libGVMYXllclJlY3QoKSk7CisgICAgICAgICAgICAgICAgaWYgKG9jY2x1ZGVkU2Ny
ZWVuU3BhY2UuY29udGFpbnMoY29udGVudFRvU2NyZWVuU3BhY2UubWFwUmVjdCh2aXNpYmxlVGls
ZVJlY3QpKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisK
ICAgICAgICAgICAgIC8vIEZJWE1FOiBEZWNpZGUgaWYgcGFydGlhbCB1cGRhdGUgc2hvdWxkIGJl
IGFsbG93ZWQgYmFzZWQgb24gY29zdAogICAgICAgICAgICAgLy8gb2YgdXBkYXRlLiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzczNzYKICAgICAgICAgICAgIGlmICh0
aWxlT25seU5lZWRzUGFydGlhbFVwZGF0ZSh0aWxlKSAmJiBsYXllclRyZWVIb3N0KCkgJiYgbGF5
ZXJUcmVlSG9zdCgpLT5yZXF1ZXN0UGFydGlhbFRleHR1cmVVcGRhdGUoKSkKQEAgLTQxOSw4ICs0
NDIsMTAgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKGJv
b2wgaWRsZSwgaW50IGxlZnQsIGludCB0b3AsIGludAogICAgICAgICAgICAgZWxzZSBpZiAodGls
ZU5lZWRzQnVmZmVyZWRVcGRhdGUodGlsZSkgJiYgbGF5ZXJUcmVlSG9zdCgpKQogICAgICAgICAg
ICAgICAgIGxheWVyVHJlZUhvc3QoKS0+ZGVsZXRlVGV4dHVyZUFmdGVyQ29tbWl0KHRpbGUtPm1h
bmFnZWRUZXh0dXJlKCktPnN0ZWFsKCkpOwogCi0gICAgICAgICAgICBpZiAoIXRpbGUtPm1hbmFn
ZWRUZXh0dXJlKCktPmlzVmFsaWQobV90aWxlci0+dGlsZVNpemUoKSwgbV90ZXh0dXJlRm9ybWF0
KSkKKyAgICAgICAgICAgIGlmICghdGlsZS0+bWFuYWdlZFRleHR1cmUoKS0+aXNWYWxpZChtX3Rp
bGVyLT50aWxlU2l6ZSgpLCBtX3RleHR1cmVGb3JtYXQpKSB7CisgICAgICAgICAgICAgICAgLy8g
U2V0cyB0aGUgZGlydHkgcmVjdCB0byBhIGZ1bGwtc2l6ZWQgdGlsZSB3aXRoIGJvcmRlciB0ZXhl
bHMuCiAgICAgICAgICAgICAgICAgdGlsZS0+bV9kaXJ0eVJlY3QgPSBtX3RpbGVyLT50aWxlUmVj
dCh0aWxlKTsKKyAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCF0aWxlLT5tYW5hZ2Vk
VGV4dHVyZSgpLT5yZXNlcnZlKG1fdGlsZXItPnRpbGVTaXplKCksIG1fdGV4dHVyZUZvcm1hdCkp
IHsKICAgICAgICAgICAgICAgICBtX3NraXBzSWRsZVBhaW50ID0gdHJ1ZTsKQEAgLTQ2OCw2ICs0
OTMsMTEgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKGJv
b2wgaWRsZSwgaW50IGxlZnQsIGludCB0b3AsIGludAogCiAgICAgICAgICAgICBJbnRSZWN0IHRp
bGVSZWN0ID0gbV90aWxlci0+dGlsZUJvdW5kcyhpLCBqKTsKIAorICAgICAgICAgICAgLy8gVXNl
IG1fdXBkYXRlUmVjdCBhcyBjb3B5QW5kQ2xlYXJEaXJ0eSBhYm92ZSBtb3ZlZCB0aGUgZXhpc3Rp
bmcgZGlydHkgcmVjdCB0byBtX3VwZGF0ZVJlY3QgaWYgdGhlIHRpbGUgaXNuJ3QgY3VsbGVkLgor
ICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0ID0gdGlsZS0+bV91cGRhdGVSZWN0
OworICAgICAgICAgICAgaWYgKGRpcnR5UmVjdC5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAg
Y29udGludWU7CisKICAgICAgICAgICAgIC8vIFNhdmUgd2hhdCB3YXMgcGFpbnRlZCBvcGFxdWUg
aW4gdGhlIHRpbGUuIEtlZXAgdGhlIG9sZCBhcmVhIGlmIHRoZSBwYWludCBkaWRuJ3QgdG91Y2gg
aXQsIGFuZCBkaWRuJ3QgcGFpbnQgc29tZQogICAgICAgICAgICAgLy8gb3RoZXIgcGFydCBvZiB0
aGUgdGlsZSBvcGFxdWUuCiAgICAgICAgICAgICBJbnRSZWN0IHRpbGVQYWludGVkUmVjdCA9IGlu
dGVyc2VjdGlvbih0aWxlUmVjdCwgbV9wYWludFJlY3QpOwpAQCAtNDgxLDExICs1MTEsNiBAQCB2
b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBp
bnQgbGVmdCwgaW50IHRvcCwgaW50CiAgICAgICAgICAgICAgICAgICAgIHRpbGUtPm1fb3BhcXVl
UmVjdCA9IHRpbGVQYWludGVkT3BhcXVlUmVjdDsKICAgICAgICAgICAgIH0KIAotICAgICAgICAg
ICAgLy8gVXNlIG1fdXBkYXRlUmVjdCBhcyBjb3B5QW5kQ2xlYXJEaXJ0eSBhYm92ZSBtb3ZlZCB0
aGUgZXhpc3RpbmcgZGlydHkgcmVjdCB0byBtX3VwZGF0ZVJlY3QuCi0gICAgICAgICAgICBjb25z
dCBJbnRSZWN0JiBkaXJ0eVJlY3QgPSB0aWxlLT5tX3VwZGF0ZVJlY3Q7Ci0gICAgICAgICAgICBp
ZiAoZGlydHlSZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQogICAg
ICAgICAgICAgLy8gc291cmNlUmVjdCBzdGFydHMgYXMgYSBmdWxsLXNpemVkIHRpbGUgd2l0aCBi
b3JkZXIgdGV4ZWxzIGluY2x1ZGVkLgogICAgICAgICAgICAgSW50UmVjdCBzb3VyY2VSZWN0ID0g
bV90aWxlci0+dGlsZVJlY3QodGlsZSk7CiAgICAgICAgICAgICBzb3VyY2VSZWN0LmludGVyc2Vj
dChkaXJ0eVJlY3QpOwpAQCAtNTI5LDM3ICs1NTQsNiBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1
bTo6cmVzZXJ2ZVRleHR1cmVzKCkKICAgICB9CiB9CiAKLXZvaWQgVGlsZWRMYXllckNocm9taXVt
OjphZGRTZWxmVG9PY2NsdWRlZFNjcmVlblNwYWNlKFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFj
ZSkKLXsKLSAgICBpZiAobV9za2lwc0RyYXcgfHwgZHJhd09wYWNpdHkoKSAhPSAxIHx8ICFpc1Bh
aW50ZWRBeGlzQWxpZ25lZEluU2NyZWVuKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChv
cGFxdWUoKSkgewotICAgICAgICBMYXllckNocm9taXVtOjphZGRTZWxmVG9PY2NsdWRlZFNjcmVl
blNwYWNlKG9jY2x1ZGVkU2NyZWVuU3BhY2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgSW50UmVjdCB2aXNpYmxlUmVjdCA9IHZpc2libGVMYXllclJlY3QoKTsKLSAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBjb250ZW50VHJhbnNmb3JtID0gY29udGVudFRvU2NyZWVuU3BhY2VUcmFu
c2Zvcm0oKTsKLQotICAgIC8vIEZJWE1FOiBDcmVhdGUvVXNlIGEgRmxvYXRSZWdpb24gZm9yIHRo
ZSBvY2NsdWRlZFNjcmVlblNwYWNlLCBpbnN0ZWFkIG9mIGEgUmVnaW9uIGJhc2VkIG9uIGludHMs
IHRvIGF2b2lkIHRoaXMgc3RlcCBhbmQgZ2V0IGJldHRlciBhY2N1cmFjeSBiZXR3ZWVuIGxheWVy
cyBpbiB0YXJnZXQgc3BhY2UuCi0gICAgUmVnaW9uIHRpbGVSZWdpb247Ci0gICAgaW50IGxlZnQs
IHRvcCwgcmlnaHQsIGJvdHRvbTsKLSAgICBtX3RpbGVyLT5sYXllclJlY3RUb1RpbGVJbmRpY2Vz
KHZpc2libGVMYXllclJlY3QoKSwgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tKTsKLSAgICBmb3Ig
KGludCBqID0gdG9wOyBqIDw9IGJvdHRvbTsgKytqKSB7Ci0gICAgICAgIGZvciAoaW50IGkgPSBs
ZWZ0OyBpIDw9IHJpZ2h0OyArK2kpIHsKLSAgICAgICAgICAgIFVwZGF0YWJsZVRpbGUqIHRpbGUg
PSB0aWxlQXQoaSwgaik7Ci0gICAgICAgICAgICBpZiAodGlsZSkgewotICAgICAgICAgICAgICAg
IEludFJlY3QgdmlzaWJsZVRpbGVPcGFxdWVSZWN0ID0gaW50ZXJzZWN0aW9uKHZpc2libGVSZWN0
LCB0aWxlLT5tX29wYXF1ZVJlY3QpOwotICAgICAgICAgICAgICAgIEZsb2F0UmVjdCBzY3JlZW5S
ZWN0ID0gY29udGVudFRyYW5zZm9ybS5tYXBSZWN0KEZsb2F0UmVjdCh2aXNpYmxlVGlsZU9wYXF1
ZVJlY3QpKTsKLSAgICAgICAgICAgICAgICBJbnRSZWN0IHNjcmVlbkludFJlY3QgPSBlbmNsb3Nl
ZEludFJlY3Qoc2NyZWVuUmVjdCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFzY3JlZW5JbnRSZWN0
LmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgb2NjbHVkZWRTY3JlZW5TcGFjZS51bml0
ZShzY3JlZW5JbnRSZWN0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQog
dm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnJlc2V0VXBkYXRlU3RhdGUoKQogewogICAgIC8vIFJl
c2V0IG1fdXBkYXRlUmVjdCBmb3IgYWxsIHRpbGVzLgpAQCAtNTcxLDcgKzU2NSw3IEBAIHZvaWQg
VGlsZWRMYXllckNocm9taXVtOjpyZXNldFVwZGF0ZVN0YXRlKCkKICAgICB9CiB9CiAKLXZvaWQg
VGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgbGF5ZXJS
ZWN0KQordm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRS
ZWN0JiBsYXllclJlY3QsIGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSkKIHsKICAg
ICBtX3NraXBzRHJhdyA9IGZhbHNlOwogICAgIG1fc2tpcHNJZGxlUGFpbnQgPSBmYWxzZTsKQEAg
LTU4OCwxMCArNTgyLDEwIEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRh
dGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQogICAgIGludCBsZWZ0LCB0b3AsIHJpZ2h0LCBi
b3R0b207CiAgICAgbV90aWxlci0+bGF5ZXJSZWN0VG9UaWxlSW5kaWNlcyhsYXllclJlY3QsIGxl
ZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSk7CiAKLSAgICBwcmVwYXJlVG9VcGRhdGVUaWxlcyhmYWxz
ZSwgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tKTsKKyAgICBwcmVwYXJlVG9VcGRhdGVUaWxlcyhm
YWxzZSwgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tLCBvY2NsdWRlZFNjcmVlblNwYWNlKTsKIH0K
IAotdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlkbGUoY29uc3QgSW50
UmVjdCYgbGF5ZXJSZWN0KQordm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0
ZUlkbGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0LCBjb25zdCBSZWdpb24mIG9jY2x1ZGVkU2Ny
ZWVuU3BhY2UpCiB7CiAgICAgLy8gQWJvcnQgaWYgd2UgaGF2ZSBhbHJlYWR5IHByZXBhcmVkIGEg
cGFpbnQgb3IgcnVuIG91dCBvZiBtZW1vcnkuCiAgICAgaWYgKG1fc2tpcHNJZGxlUGFpbnQgfHwg
IW1fcGFpbnRSZWN0LmlzRW1wdHkoKSkKQEAgLTYwOSwzMyArNjAzLDM5IEBAIHZvaWQgVGlsZWRM
YXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZGxlKGNvbnN0IEludFJlY3QmIGxheWVyUmVj
dCkKICAgICBJbnRSZWN0IGlkbGVQYWludExheWVyUmVjdCA9IGlkbGVQYWludFJlY3QobGF5ZXJS
ZWN0KTsKICAgICBwcm90ZWN0VGlsZVRleHR1cmVzKGlkbGVQYWludExheWVyUmVjdCk7CiAKLSAg
ICAvLyBFeHBhbmQgb3V0d2FyZHMgdW50aWwgd2UgZmluZCBhIGRpcnR5IHJvdyBvciBjb2x1bW4g
dG8gdXBkYXRlLgogICAgIGludCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b207CiAgICAgbV90aWxl
ci0+bGF5ZXJSZWN0VG9UaWxlSW5kaWNlcyhsYXllclJlY3QsIGxlZnQsIHRvcCwgcmlnaHQsIGJv
dHRvbSk7CisKKyAgICAvLyBQcmVwYWludCBhbnl0aGluZyB0aGF0IHdhcyBvY2NsdWRlZCBidXQg
aW5zaWRlIHRoZSBsYXllcidzIHZpc2libGUgcmVnaW9uLgorICAgIHByZXBhcmVUb1VwZGF0ZVRp
bGVzKHRydWUsIGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSwgb2NjbHVkZWRTY3JlZW5TcGFjZSk7
CisgICAgaWYgKCFtX3BhaW50UmVjdC5pc0VtcHR5KCkgfHwgbV9za2lwc0lkbGVQYWludCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgLy8gRXhwYW5kIG91dHdhcmRzIHVudGlsIHdlIGZpbmQgYSBk
aXJ0eSByb3cgb3IgY29sdW1uIHRvIHVwZGF0ZS4KICAgICBpbnQgcHJlcGFpbnRMZWZ0LCBwcmVw
YWludFRvcCwgcHJlcGFpbnRSaWdodCwgcHJlcGFpbnRCb3R0b207CiAgICAgbV90aWxlci0+bGF5
ZXJSZWN0VG9UaWxlSW5kaWNlcyhpZGxlUGFpbnRMYXllclJlY3QsIHByZXBhaW50TGVmdCwgcHJl
cGFpbnRUb3AsIHByZXBhaW50UmlnaHQsIHByZXBhaW50Qm90dG9tKTsKICAgICB3aGlsZSAoIW1f
c2tpcHNJZGxlUGFpbnQgJiYgKGxlZnQgPiBwcmVwYWludExlZnQgfHwgdG9wID4gcHJlcGFpbnRU
b3AgfHwgcmlnaHQgPCBwcmVwYWludFJpZ2h0IHx8IGJvdHRvbSA8IHByZXBhaW50Qm90dG9tKSkg
ewogICAgICAgICBpZiAoYm90dG9tIDwgcHJlcGFpbnRCb3R0b20pIHsKICAgICAgICAgICAgICsr
Ym90dG9tOwotICAgICAgICAgICAgcHJlcGFyZVRvVXBkYXRlVGlsZXModHJ1ZSwgbGVmdCwgYm90
dG9tLCByaWdodCwgYm90dG9tKTsKKyAgICAgICAgICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKHRy
dWUsIGxlZnQsIGJvdHRvbSwgcmlnaHQsIGJvdHRvbSwgb2NjbHVkZWRTY3JlZW5TcGFjZSk7CiAg
ICAgICAgICAgICBpZiAoIW1fcGFpbnRSZWN0LmlzRW1wdHkoKSB8fCBtX3NraXBzSWRsZVBhaW50
KQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGlmICh0b3AgPiBw
cmVwYWludFRvcCkgewogICAgICAgICAgICAgLS10b3A7Ci0gICAgICAgICAgICBwcmVwYXJlVG9V
cGRhdGVUaWxlcyh0cnVlLCBsZWZ0LCB0b3AsIHJpZ2h0LCB0b3ApOworICAgICAgICAgICAgcHJl
cGFyZVRvVXBkYXRlVGlsZXModHJ1ZSwgbGVmdCwgdG9wLCByaWdodCwgdG9wLCBvY2NsdWRlZFNj
cmVlblNwYWNlKTsKICAgICAgICAgICAgIGlmICghbV9wYWludFJlY3QuaXNFbXB0eSgpIHx8IG1f
c2tpcHNJZGxlUGFpbnQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgaWYgKGxlZnQgPiBwcmVwYWludExlZnQpIHsKICAgICAgICAgICAgIC0tbGVmdDsKLSAgICAg
ICAgICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKHRydWUsIGxlZnQsIHRvcCwgbGVmdCwgYm90dG9t
KTsKKyAgICAgICAgICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKHRydWUsIGxlZnQsIHRvcCwgbGVm
dCwgYm90dG9tLCBvY2NsdWRlZFNjcmVlblNwYWNlKTsKICAgICAgICAgICAgIGlmICghbV9wYWlu
dFJlY3QuaXNFbXB0eSgpIHx8IG1fc2tpcHNJZGxlUGFpbnQpCiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHJpZ2h0IDwgcHJlcGFpbnRSaWdodCkgewogICAg
ICAgICAgICAgKytyaWdodDsKLSAgICAgICAgICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKHRydWUs
IHJpZ2h0LCB0b3AsIHJpZ2h0LCBib3R0b20pOworICAgICAgICAgICAgcHJlcGFyZVRvVXBkYXRl
VGlsZXModHJ1ZSwgcmlnaHQsIHRvcCwgcmlnaHQsIGJvdHRvbSwgb2NjbHVkZWRTY3JlZW5TcGFj
ZSk7CiAgICAgICAgICAgICBpZiAoIW1fcGFpbnRSZWN0LmlzRW1wdHkoKSB8fCBtX3NraXBzSWRs
ZVBhaW50KQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21p
dW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5
ZXJDaHJvbWl1bS5oCmluZGV4IDZmYzdkMWQ5MmJjNWFiOTczNzZhYWJjMTE2ZDM0NDBjYzc5YThl
ZjUuLmM5MzZlNmRlYzc0MzBmNmEzNDM1NzE4NDVhMGZjM2Q5Nzc2MGZlYTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJv
bWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rp
bGVkTGF5ZXJDaHJvbWl1bS5oCkBAIC02Niw4ICs2Niw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgdm9pZCByZXNlcnZlVGV4dHVyZXMoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGRTZWxmVG9P
Y2NsdWRlZFNjcmVlblNwYWNlKFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSk7Ci0KIHByb3Rl
Y3RlZDoKICAgICBUaWxlZExheWVyQ2hyb21pdW0oKTsKIApAQCAtOTAsMTAgKzg4LDEwIEBAIHBy
b3RlY3RlZDoKICAgICB2b2lkIHJlc2V0VXBkYXRlU3RhdGUoKTsKIAogICAgIC8vIFByZXBhcmUg
ZGF0YSBuZWVkZWQgdG8gdXBkYXRlIHRleHR1cmVzIHRoYXQgaW50ZXJzZWN0IHdpdGggbGF5ZXJS
ZWN0LgotICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCk7
CisgICAgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0LCBjb25z
dCBSZWdpb24mIG9jY2x1ZGVkVGFyZ2V0U3BhY2UpOwogCiAgICAgLy8gU2FtZSBhcyBhYm92ZSwg
YnV0IHRoaXMgd2lsbCB0cnkgdG8gcGFpbnQgYWRkaXRpb25hbCBzdXJyb3VuZGluZyBjb250ZW50
IGlmIGlkbGUuCi0gICAgdm9pZCBwcmVwYXJlVG9VcGRhdGVJZGxlKGNvbnN0IEludFJlY3QmIGxh
eWVyUmVjdCk7CisgICAgdm9pZCBwcmVwYXJlVG9VcGRhdGVJZGxlKGNvbnN0IEludFJlY3QmIGxh
eWVyUmVjdCwgY29uc3QgUmVnaW9uJiBvY2NsdWRlZFRhcmdldFNwYWNlKTsKIAogICAgIC8vIEFm
dGVyIHByZXBhcmluZyBhbiB1cGRhdGUsIHJldHVybnMgdHJ1ZSBpZiBtb3JlIHByZS1wYWludGlu
ZyBpcyBuZWVkZWQuCiAgICAgYm9vbCBuZWVkc0lkbGVQYWludChjb25zdCBJbnRSZWN0JiBsYXll
clJlY3QpOwpAQCAtMTEzLDcgKzExMSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCB0aWxlT25seU5l
ZWRzUGFydGlhbFVwZGF0ZShVcGRhdGFibGVUaWxlKik7CiAgICAgYm9vbCB0aWxlTmVlZHNCdWZm
ZXJlZFVwZGF0ZShVcGRhdGFibGVUaWxlKik7CiAKLSAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZVRp
bGVzKGJvb2wgaWRsZSwgaW50IGxlZnQsIGludCB0b3AsIGludCByaWdodCwgaW50IGJvdHRvbSk7
CisgICAgdm9pZCBwcmVwYXJlVG9VcGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQg
dG9wLCBpbnQgcmlnaHQsIGludCBib3R0b20sIGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRUYXJnZXRT
cGFjZSk7CiAgICAgSW50UmVjdCBpZGxlUGFpbnRSZWN0KGNvbnN0IEludFJlY3QmIHZpc2libGVM
YXllclJlY3QpOwogCiAgICAgVXBkYXRhYmxlVGlsZSogdGlsZUF0KGludCwgaW50KSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IDdjNmJhNWU0NzAyNWQ1NjY0NGYw
YmZhZDk1OGFjZTc0MWJmMGZmZDguLjM4ZTA5YzU2ODJmMWRmMjQ1Zjk1ZTk5OTc0OTEyZjFhNWUw
MzY3N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtMzUsNiArMzUsNyBA
QAogI2luY2x1ZGUgImNjL0NDTGF5ZXJJdGVyYXRvci5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJU
cmVlSG9zdENvbW1vbi5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKKyNp
bmNsdWRlICJjYy9DQ09jY2x1c2lvblRyYWNrZXIuaCIKICNpbmNsdWRlICJjYy9DQ1NpbmdsZVRo
cmVhZFByb3h5LmgiCiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWQuaCIKICNpbmNsdWRlICJjYy9DQ1Ro
cmVhZFByb3h5LmgiCkBAIC01MDYsNyArNTA3LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBh
aW50Q29udGVudHNJZkRpcnR5KExheWVyQ2hyb21pdW0qIGxheWVyLCBQYWludFR5cGUgcGFpbnQK
ICAgICBpZiAoUGFpbnRWaXNpYmxlID09IHBhaW50VHlwZSkKICAgICAgICAgbGF5ZXItPnBhaW50
Q29udGVudHNJZkRpcnR5KG9jY2x1ZGVkU2NyZWVuU3BhY2UpOwogICAgIGVsc2UKLSAgICAgICAg
bGF5ZXItPmlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSgpOworICAgICAgICBsYXllci0+aWRsZVBh
aW50Q29udGVudHNJZkRpcnR5KG9jY2x1ZGVkU2NyZWVuU3BhY2UpOwogfQogCiB2b2lkIENDTGF5
ZXJUcmVlSG9zdDo6cGFpbnRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UoTGF5ZXJDaHJv
bWl1bSogcmVuZGVyU3VyZmFjZUxheWVyLCBQYWludFR5cGUgcGFpbnRUeXBlKQpAQCAtNTM0LDgz
ICs1MzUsMjggQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TWFza0FuZFJlcGxpY2FGb3JS
ZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0qIHJlbmRlclMKICAgICB9CiB9CiAKLXN0cnVjdCBS
ZW5kZXJTdXJmYWNlUmVnaW9uIHsKLSAgICBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHN1cmZhY2U7
Ci0gICAgUmVnaW9uIG9jY2x1ZGVkSW5TY3JlZW47Ci19OwotCi0vLyBBZGQgdGhlIHN1cmZhY2Ug
dG8gdGhlIHRvcCBvZiB0aGUgc3RhY2sgYW5kIGNvcHkgdGhlIG9jY2x1c2lvbiBmcm9tIHRoZSBv
bGQgdG9wIG9mIHRoZSBzdGFjayB0byB0aGUgbmV3Lgotc3RhdGljIHZvaWQgZW50ZXJUYXJnZXRS
ZW5kZXJTdXJmYWNlKFZlY3RvcjxSZW5kZXJTdXJmYWNlUmVnaW9uPiYgc3RhY2ssIFJlbmRlclN1
cmZhY2VDaHJvbWl1bSogbmV3VGFyZ2V0KQotewotICAgIGlmIChzdGFjay5pc0VtcHR5KCkpIHsK
LSAgICAgICAgc3RhY2suYXBwZW5kKFJlbmRlclN1cmZhY2VSZWdpb24oKSk7Ci0gICAgICAgIHN0
YWNrLmxhc3QoKS5zdXJmYWNlID0gbmV3VGFyZ2V0OwotICAgIH0gZWxzZSBpZiAoc3RhY2subGFz
dCgpLnN1cmZhY2UgIT0gbmV3VGFyZ2V0KSB7Ci0gICAgICAgIC8vIElmIHdlIGFyZSBlbnRlcmlu
ZyBhIHN1YnRyZWUgdGhhdCBpcyBnb2luZyB0byBtb3ZlIHBpeGVscyBhcm91bmQsIHRoZW4gdGhl
IG9jY2x1c2lvbiB3ZSd2ZSBjb21wdXRlZAotICAgICAgICAvLyBzbyBmYXIgd29uJ3QgYXBwbHkg
dG8gdGhlIHBpeGVscyB3ZSdyZSBkcmF3aW5nIGhlcmUgaW4gdGhlIHNhbWUgd2F5LiBXZSBkaXNj
YXJkIHRoZSBvY2NsdXNpb24gdGh1cwotICAgICAgICAvLyBmYXIgdG8gYmUgc2FmZSwgYW5kIGVu
c3VyZSB3ZSBkb24ndCBjdWxsIGFueSBwaXhlbHMgdGhhdCBhcmUgbW92ZWQgc3VjaCB0aGF0IHRo
ZXkgYmVjb21lIHZpc2libGUuCi0gICAgICAgIGNvbnN0IFJlbmRlclN1cmZhY2VDaHJvbWl1bSog
b2xkQW5jZXN0b3JUaGF0TW92ZXNQaXhlbHMgPSBzdGFjay5sYXN0KCkuc3VyZmFjZS0+bmVhcmVz
dEFuY2VzdG9yVGhhdE1vdmVzUGl4ZWxzKCk7Ci0gICAgICAgIGNvbnN0IFJlbmRlclN1cmZhY2VD
aHJvbWl1bSogbmV3QW5jZXN0b3JUaGF0TW92ZXNQaXhlbHMgPSBuZXdUYXJnZXQtPm5lYXJlc3RB
bmNlc3RvclRoYXRNb3Zlc1BpeGVscygpOwotICAgICAgICBib29sIGVudGVyaW5nU3VidHJlZVRo
YXRNb3Zlc1BpeGVscyA9IG5ld0FuY2VzdG9yVGhhdE1vdmVzUGl4ZWxzICYmIG5ld0FuY2VzdG9y
VGhhdE1vdmVzUGl4ZWxzICE9IG9sZEFuY2VzdG9yVGhhdE1vdmVzUGl4ZWxzOwotCi0gICAgICAg
IHN0YWNrLmFwcGVuZChSZW5kZXJTdXJmYWNlUmVnaW9uKCkpOwotICAgICAgICBzdGFjay5sYXN0
KCkuc3VyZmFjZSA9IG5ld1RhcmdldDsKLSAgICAgICAgaW50IGxhc3RJbmRleCA9IHN0YWNrLnNp
emUoKSAtIDE7Ci0gICAgICAgIGlmICghZW50ZXJpbmdTdWJ0cmVlVGhhdE1vdmVzUGl4ZWxzKQot
ICAgICAgICAgICAgc3RhY2tbbGFzdEluZGV4XS5vY2NsdWRlZEluU2NyZWVuID0gc3RhY2tbbGFz
dEluZGV4IC0gMV0ub2NjbHVkZWRJblNjcmVlbjsKLSAgICB9Ci19Ci0KLS8vIFBvcCB0aGUgdG9w
IG9mIHRoZSBzdGFjayBvZmYsIHB1c2ggb24gdGhlIG5ldyBzdXJmYWNlLCBhbmQgbWVyZ2UgdGhl
IG9sZCB0b3AncyBvY2NsdXNpb24gaW50byB0aGUgbmV3IHRvcCBzdXJmYWNlLgotc3RhdGljIHZv
aWQgbGVhdmVUYXJnZXRSZW5kZXJTdXJmYWNlKFZlY3RvcjxSZW5kZXJTdXJmYWNlUmVnaW9uPiYg
c3RhY2ssIFJlbmRlclN1cmZhY2VDaHJvbWl1bSogbmV3VGFyZ2V0KQotewotICAgIGludCBsYXN0
SW5kZXggPSBzdGFjay5zaXplKCkgLSAxOwotICAgIGJvb2wgc3VyZmFjZVdpbGxCZUF0VG9wQWZ0
ZXJQb3AgPSBzdGFjay5zaXplKCkgPiAxICYmIHN0YWNrW2xhc3RJbmRleCAtIDFdLnN1cmZhY2Ug
PT0gbmV3VGFyZ2V0OwotCi0gICAgaWYgKHN1cmZhY2VXaWxsQmVBdFRvcEFmdGVyUG9wKSB7Ci0g
ICAgICAgIC8vIE1lcmdlIHRoZSB0b3Agb2YgdGhlIHN0YWNrIGRvd24uCi0gICAgICAgIHN0YWNr
W2xhc3RJbmRleCAtIDFdLm9jY2x1ZGVkSW5TY3JlZW4udW5pdGUoc3RhY2tbbGFzdEluZGV4XS5v
Y2NsdWRlZEluU2NyZWVuKTsKLSAgICAgICAgc3RhY2sucmVtb3ZlTGFzdCgpOwotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIC8vIFJlcGxhY2UgdGhlIHRvcCBvZiB0aGUgc3RhY2sgd2l0aCB0aGUgbmV3
IHB1c2hlZCBzdXJmYWNlLiBDb3B5IHRoZSBvY2NsdWRlZCByZWdpb24gdG8gdGhlIHRvcC4KLSAg
ICAgICAgc3RhY2subGFzdCgpLnN1cmZhY2UgPSBuZXdUYXJnZXQ7Ci0gICAgfQotfQotCiB2b2lk
IENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IExheWVyTGlzdCYgcmVu
ZGVyU3VyZmFjZUxheWVyTGlzdCwgUGFpbnRUeXBlIHBhaW50VHlwZSkKIHsKICAgICAvLyBVc2Ug
RnJvbnRUb0JhY2sgdG8gYWxsb3cgZm9yIHRlc3Rpbmcgb2NjbHVzaW9uIGFuZCBwZXJmb3JtaW5n
IGN1bGxpbmcgZHVyaW5nIHRoZSB0cmVlIHdhbGsuCiAgICAgdHlwZWRlZiBDQ0xheWVySXRlcmF0
b3I8TGF5ZXJDaHJvbWl1bSwgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+LCBSZW5kZXJT
dXJmYWNlQ2hyb21pdW0sIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkZyb250VG9CYWNrPiBDQ0xh
eWVySXRlcmF0b3JUeXBlOwogCi0gICAgLy8gVGhlIHN0YWNrIGhvbGRzIG9jY2x1ZGVkIHJlZ2lv
bnMgZm9yIHN1YnRyZWVzIGluIHRoZSBSZW5kZXJTdXJmYWNlLUxheWVyIHRyZWUsIHNvIHRoYXQg
d2hlbiB3ZSBsZWF2ZSBhIHN1YnRyZWUgd2UgbWF5Ci0gICAgLy8gYXBwbHkgYSBtYXNrIHRvIGl0
LCBidXQgbm90IHRvIHRoZSBwYXJ0cyBvdXRzaWRlIHRoZSBzdWJ0cmVlLgotICAgIC8vIC0gVGhl
IGZpcnN0IHRpbWUgd2Ugc2VlIGEgbmV3IHN1YnRyZWUgdW5kZXIgYSB0YXJnZXQsIHdlIGFkZCB0
aGF0IHRhcmdldCB0byB0aGUgdG9wIG9mIHRoZSBzdGFjay4gVGhpcyBjYW4gaGFwcGVuIGFzIGEg
bGF5ZXIgcmVwcmVzZW50aW5nIGl0c2VsZiwgb3IgYXMgYSB0YXJnZXQgc3VyZmFjZS4KLSAgICAv
LyAtIFdoZW4gd2UgdmlzaXQgYSB0YXJnZXQgc3VyZmFjZSwgd2UgYXBwbHkgaXRzIG1hc2sgdG8g
aXRzIHN1YnRyZWUsIHdoaWNoIGlzIGF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrLgotICAgIC8vIC0g
V2hlbiB3ZSB2aXNpdCBhIGxheWVyIHJlcHJlc2VudGluZyBpdHNlbGYsIHdlIGFkZCBpdHMgb2Nj
bHVzaW9uIHRvIHRoZSBjdXJyZW50IHN1YnRyZWUsIHdoaWNoIGlzIGF0IHRoZSB0b3Agb2YgdGhl
IHN0YWNrLgotICAgIC8vIC0gV2hlbiB3ZSB2aXNpdCBhIGxheWVyIHJlcHJlc2VudGluZyBhIGNv
bnRyaWJ1dGluZyBzdXJmYWNlLCB0aGUgY3VycmVudCB0YXJnZXQgd2lsbCBuZXZlciBiZSB0aGUg
dG9wIG9mIHRoZSBzdGFjayBzaW5jZSB3ZSBqdXN0IGNhbWUgZnJvbSB0aGUgY29udHJpYnV0aW5n
IHN1cmZhY2UuCi0gICAgLy8gV2UgbWVyZ2UgdGhlIG9jY2x1c2lvbiBhdCB0aGUgdG9wIG9mIHRo
ZSBzdGFjayB3aXRoIHRoZSBuZXcgY3VycmVudCBzdWJ0cmVlLiBUaGlzIG5ldyB0YXJnZXQgaXMg
cHVzaGVkIG9udG8gdGhlIHN0YWNrIGlmIG5vdCBhbHJlYWR5IHRoZXJlLgotICAgIFZlY3RvcjxS
ZW5kZXJTdXJmYWNlUmVnaW9uPiB0YXJnZXRTdXJmYWNlU3RhY2s7CisgICAgQ0NPY2NsdXNpb25U
cmFja2VyIG9jY2x1c2lvblRyYWNrZXIoSW50UmVjdChJbnRQb2ludCgpLCB2aWV3cG9ydFNpemUo
KSkpOwogCiAgICAgQ0NMYXllckl0ZXJhdG9yVHlwZSBlbmQgPSBDQ0xheWVySXRlcmF0b3JUeXBl
OjplbmQoJnJlbmRlclN1cmZhY2VMYXllckxpc3QpOwogICAgIGZvciAoQ0NMYXllckl0ZXJhdG9y
VHlwZSBpdCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmJlZ2luKCZyZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0KTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIGlmIChpdC5yZXByZXNlbnRzVGFyZ2V0
UmVuZGVyU3VyZmFjZSgpKSB7CiAgICAgICAgICAgICBBU1NFUlQoaXQtPnJlbmRlclN1cmZhY2Uo
KS0+ZHJhd09wYWNpdHkoKSk7CiAKLSAgICAgICAgICAgIGVudGVyVGFyZ2V0UmVuZGVyU3VyZmFj
ZSh0YXJnZXRTdXJmYWNlU3RhY2ssIGl0LT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICAgICAg
b2NjbHVzaW9uVHJhY2tlci5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2UoKml0LCBpdC0+cmVu
ZGVyU3VyZmFjZSgpKTsKICAgICAgICAgICAgIHBhaW50TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJT
dXJmYWNlKCppdCwgcGFpbnRUeXBlKTsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBhZGQgdGhlIHJl
cGxpY2EgbGF5ZXIgdG8gdGhlIGN1cnJlbnQgb2NjbHVzaW9uCi0KLSAgICAgICAgICAgIGlmIChp
dC0+bWFza0xheWVyKCkgfHwgaXQtPnJlbmRlclN1cmZhY2UoKS0+ZHJhd09wYWNpdHkoKSA8IDEg
fHwgaXQtPnJlbmRlclN1cmZhY2UoKS0+ZmlsdGVycygpLmhhc0ZpbHRlclRoYXRBZmZlY3RzT3Bh
Y2l0eSgpKQotICAgICAgICAgICAgICAgIHRhcmdldFN1cmZhY2VTdGFjay5sYXN0KCkub2NjbHVk
ZWRJblNjcmVlbiA9IFJlZ2lvbigpOwogICAgICAgICB9IGVsc2UgaWYgKGl0LnJlcHJlc2VudHNJ
dHNlbGYoKSkgewogICAgICAgICAgICAgQVNTRVJUKCFpdC0+Ym91bmRzKCkuaXNFbXB0eSgpKTsK
IAotICAgICAgICAgICAgZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHRhcmdldFN1cmZhY2VTdGFj
aywgaXQtPnRhcmdldFJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgICAgICBwYWludENvbnRlbnRz
SWZEaXJ0eSgqaXQsIHBhaW50VHlwZSwgdGFyZ2V0U3VyZmFjZVN0YWNrLmxhc3QoKS5vY2NsdWRl
ZEluU2NyZWVuKTsKLSAgICAgICAgICAgIGl0LT5hZGRTZWxmVG9PY2NsdWRlZFNjcmVlblNwYWNl
KHRhcmdldFN1cmZhY2VTdGFjay5sYXN0KCkub2NjbHVkZWRJblNjcmVlbik7Ci0gICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBsZWF2ZVRhcmdldFJlbmRlclN1cmZhY2UodGFyZ2V0U3VyZmFj
ZVN0YWNrLCBpdC50YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXIoKS0+cmVuZGVyU3VyZmFjZSgpKTsK
LSAgICAgICAgfQorICAgICAgICAgICAgb2NjbHVzaW9uVHJhY2tlci5lbnRlclRhcmdldFJlbmRl
clN1cmZhY2UoaXQtPnRhcmdldFJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgICAgICBwYWludENv
bnRlbnRzSWZEaXJ0eSgqaXQsIHBhaW50VHlwZSwgb2NjbHVzaW9uVHJhY2tlci5jdXJyZW50T2Nj
bHVzaW9uSW5TY3JlZW5TcGFjZSgpKTsKKyAgICAgICAgICAgIG9jY2x1c2lvblRyYWNrZXIubWFy
a09jY2x1ZGVkQmVoaW5kTGF5ZXIoKml0KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBv
Y2NsdXNpb25UcmFja2VyLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKGl0LnRhcmdldFJlbmRl
clN1cmZhY2VMYXllcigpLT5yZW5kZXJTdXJmYWNlKCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5k
ZXggMDYyYTY5OWMzNjE1OTcyNzcwNDBiNDlhMTYyMDczMWM4YmYyM2VhNi4uMTI4YmQwYjBjMjM4
Mzk1Y2QwYzY2M2MxMDVmMDFmZjg3NjQwYTc4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC0xMTc5LDkgKzExNzks
OSBAQCBwdWJsaWM6CiAgICAgICAgIG1fcGFpbnRDb250ZW50c0NvdW50Kys7CiAgICAgfQogCi0g
ICAgdmlydHVhbCB2b2lkIGlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSgpCisgICAgdmlydHVhbCB2
b2lkIGlkbGVQYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIG9jY2x1ZGVkKQogICAg
IHsKLSAgICAgICAgQ29udGVudExheWVyQ2hyb21pdW06OmlkbGVQYWludENvbnRlbnRzSWZEaXJ0
eSgpOworICAgICAgICBDb250ZW50TGF5ZXJDaHJvbWl1bTo6aWRsZVBhaW50Q29udGVudHNJZkRp
cnR5KG9jY2x1ZGVkKTsKICAgICAgICAgbV9pZGxlUGFpbnRDb250ZW50c0NvdW50Kys7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVy
Q2hyb21pdW1UZXN0LmNwcAppbmRleCAzMWNkZjM1YjdlMWNlMmY4ZGY3ZDM1ODA2OTVhNDNlMmM5
N2JiM2ViLi4wZGRhZWNhNDJjMDdhMzQ4YWQ3MDdjN2JjYWYwMDRmMTA3ZGU2ZmFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVt
VGVzdC5jcHAKQEAgLTY4LDYgKzY4LDcgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5UZXh0
dXJlKCkgeyB9CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250
ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3Qm
KSB7IG1fbGF5ZXItPnVwZGF0ZVJlY3QoKTsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFy
ZVJlY3QoY29uc3QgSW50UmVjdCYpIHsgbV9sYXllci0+cHJlcGFyZVJlY3QoKTsgfQogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIqIG1fbGF5ZXI7CkBAIC03
Niw2ICs3Nyw3IEBAIHB1YmxpYzoKICAgICBGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpCiAgICAg
ICAgIDogbV9wcmVwYXJlQ291bnQoMCkKICAgICAgICAgLCBtX3VwZGF0ZUNvdW50KDApCisgICAg
ICAgICwgbV9wcmVwYXJlUmVjdENvdW50KDApCiAgICAgewogICAgIH0KICAgICB2aXJ0dWFsIH5G
YWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpIHsgfQpAQCAtOTMsNiArOTUsMTEgQEAgcHVibGljOgog
ICAgIHZvaWQgY2xlYXJVcGRhdGVDb3VudCgpIHsgbV91cGRhdGVDb3VudCA9IDA7IH0KICAgICB2
b2lkIHVwZGF0ZVJlY3QoKSB7IG1fdXBkYXRlQ291bnQrKzsgfQogCisgICAgLy8gTnVtYmVyIG9m
IHRpbWVzIHByZXBhcmVSZWN0KCkgaGFzIGJlZW4gaW52b2tlZCBvbiBhIHRleHR1cmUuCisgICAg
aW50IHByZXBhcmVSZWN0Q291bnQoKSBjb25zdCB7IHJldHVybiBtX3ByZXBhcmVSZWN0Q291bnQ7
IH0KKyAgICB2b2lkIGNsZWFyUHJlcGFyZVJlY3RDb3VudCgpIHsgbV9wcmVwYXJlUmVjdENvdW50
ID0gMDsgfQorICAgIHZvaWQgcHJlcGFyZVJlY3QoKSB7IG1fcHJlcGFyZVJlY3RDb3VudCsrOyB9
CisKICAgICB2b2lkIHNldE9wYXF1ZVBhaW50UmVjdChjb25zdCBJbnRSZWN0JiBvcGFxdWVQYWlu
dFJlY3QpIHsgbV9vcGFxdWVQYWludFJlY3QgPSBvcGFxdWVQYWludFJlY3Q7IH0KIAogICAgIC8v
IExhc3QgcmVjdCBwYXNzZWQgdG8gcHJlcGFyZVRvVXBkYXRlKCkuCkBAIC0xMDUsNiArMTEyLDcg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICBpbnQgbV9wcmVwYXJlQ291bnQ7CiAgICAgaW50IG1f
dXBkYXRlQ291bnQ7CisgICAgaW50IG1fcHJlcGFyZVJlY3RDb3VudDsKICAgICBJbnRSZWN0IG1f
cmVjdFRvSW52YWxpZGF0ZTsKICAgICBJbnRSZWN0IG1fbGFzdFVwZGF0ZVJlY3Q7CiAgICAgSW50
UmVjdCBtX29wYXF1ZVBhaW50UmVjdDsKQEAgLTE0MiwxNCArMTUwLDE0IEBAIHB1YmxpYzoKICAg
ICAgICAgVGlsZWRMYXllckNocm9taXVtOjppbnZhbGlkYXRlUmVjdChyZWN0KTsKICAgICB9CiAK
LSAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiByZWN0KQorICAgIHZvaWQg
cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IFJlZ2lvbiYgb2NjbHVk
ZWQpCiAgICAgewotICAgICAgICBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZShy
ZWN0KTsKKyAgICAgICAgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGUocmVjdCwg
b2NjbHVkZWQpOwogICAgIH0KIAotICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlSWRsZShjb25zdCBJ
bnRSZWN0JiByZWN0KQorICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlSWRsZShjb25zdCBJbnRSZWN0
JiByZWN0LCBjb25zdCBSZWdpb24mIG9jY2x1ZGVkKQogICAgIHsKLSAgICAgICAgVGlsZWRMYXll
ckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZGxlKHJlY3QpOworICAgICAgICBUaWxlZExheWVy
Q2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlkbGUocmVjdCwgb2NjbHVkZWQpOwogICAgIH0KIAog
ICAgIGJvb2wgbmVlZHNJZGxlUGFpbnQoY29uc3QgSW50UmVjdCYgcmVjdCkKQEAgLTE3NCw5ICsx
ODIsOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFRleHR1cmVNYW5hZ2VyKiB0ZXh0dXJlTWFu
YWdlcigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZU1hbmFnZXI7IH0KIAotICAgIHZpcnR1YWwg
dm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIC8qIG9jY2x1ZGVkU2NyZWVu
U3BhY2UgKi8pCisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJl
Z2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSkKICAgICB7Ci0gICAgICAgIHByZXBhcmVUb1VwZGF0
ZSh2aXNpYmxlTGF5ZXJSZWN0KCkpOworICAgICAgICBwcmVwYXJlVG9VcGRhdGUodmlzaWJsZUxh
eWVyUmVjdCgpLCBvY2NsdWRlZFNjcmVlblNwYWNlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0y
MzIsNiArMjQwLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoRGlydHlUaWxl
cykKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihu
ZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogICAgIERl
YnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAgIE93blB0cjxGYWtlQ0NUaWxl
ZExheWVySW1wbD4gbGF5ZXJJbXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgw
KSkpOworICAgIFJlZ2lvbiBub09jY2x1c2lvbjsKIAogICAgIEZha2VUZXh0dXJlQWxsb2NhdG9y
IHRleHR1cmVBbGxvY2F0b3I7CiAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0dXJl
QWxsb2NhdG9yKTsKQEAgLTIzOSw3ICsyNDgsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRl
c3QsIHB1c2hEaXJ0eVRpbGVzKQogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMCwgc28g
dGhpcyBpbnZhbGlkYXRlcyBhbmQgdGhlbiBwYWludHMgdHdvIHRpbGVzLgogICAgIGxheWVyLT5z
ZXRCb3VuZHMoSW50U2l6ZSgxMDAsIDIwMCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJ
bnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRS
ZWN0KDAsIDAsIDEwMCwgMjAwKSk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0
KDAsIDAsIDEwMCwgMjAwKSwgbm9PY2NsdXNpb24pOwogICAgIGxheWVyLT51cGRhdGVDb21wb3Np
dG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxh
eWVySW1wbC5nZXQoKSk7CiAKQEAgLTI1Miw3ICsyNjEsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QsIHB1c2hEaXJ0eVRpbGVzKQogICAgIC8vIEludmFsaWRhdGVzIGJvdGggdGlsZXMu
Li4KICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwog
ICAgIC8vIC4uLi5idXQgdGhlbiBvbmx5IHVwZGF0ZSBvbmUgb2YgdGhlbS4KLSAgICBsYXllci0+
cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAxMDApKTsKKyAgICBsYXllci0+cHJl
cGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCBub09jY2x1c2lvbik7CiAgICAg
bGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAgICAgbGF5ZXIt
PnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIApAQCAtMjYxLDYgKzI3MCw0MyBA
QCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hEaXJ0eVRpbGVzKQogICAgIEVYUEVD
VF9GQUxTRShsYXllckltcGwtPmhhc1RpbGVBdCgwLCAxKSk7CiB9CiAKK1RFU1QoVGlsZWRMYXll
ckNocm9taXVtVGVzdCwgcHVzaE9jY2x1ZGVkRGlydHlUaWxlcykKK3sKKyAgICBPd25QdHI8VGV4
dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEw
MjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOworICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNo
cm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1
cmVNYW5hZ2VyLmdldCgpKSk7CisgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJl
YWQ7CisgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwoYWRvcHRQdHIo
bmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDApKSk7CisgICAgUmVnaW9uIG5vT2NjbHVzaW9uOwor
CisgICAgRmFrZVRleHR1cmVBbGxvY2F0b3IgdGV4dHVyZUFsbG9jYXRvcjsKKyAgICBDQ1RleHR1
cmVVcGRhdGVyIHVwZGF0ZXIoJnRleHR1cmVBbGxvY2F0b3IpOworCisgICAgLy8gVGhlIHRpbGUg
c2l6ZSBpcyAxMDB4MTAwLCBzbyB0aGlzIGludmFsaWRhdGVzIGFuZCB0aGVuIHBhaW50cyB0d28g
dGlsZXMuCisgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDEwMCwgMjAwKSk7CisgICAgbGF5
ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKKyAgICBsYXllci0+
cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCBub09jY2x1c2lvbik7Cisg
ICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5
ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKKworICAgIC8vIFdlIHNob3Vs
ZCBoYXZlIGJvdGggdGlsZXMgb24gdGhlIGltcGwgc2lkZS4KKyAgICBFWFBFQ1RfVFJVRShsYXll
ckltcGwtPmhhc1RpbGVBdCgwLCAwKSk7CisgICAgRVhQRUNUX1RSVUUobGF5ZXJJbXBsLT5oYXNU
aWxlQXQoMCwgMSkpOworCisgICAgdGV4dHVyZU1hbmFnZXItPnVucHJvdGVjdEFsbFRleHR1cmVz
KCk7CisKKyAgICAvLyBJbnZhbGlkYXRlcyBwYXJ0IG9mIHRoZSB0b3AgdGlsZS4uLgorICAgIGxh
eWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDUwLCA1MCkpOworICAgIC8vIC4uLi5i
dXQgdGhlIGFyZWEgaXMgb2NjbHVkZWQuCisgICAgUmVnaW9uIG9jY2x1c2lvbihJbnRSZWN0KDAs
IDAsIDUwLCA1MCkpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAx
MDAsIDEwMCksIG9jY2x1c2lvbik7CisgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJj
ZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdl
dCgpKTsKKworICAgIC8vIFdlIHNob3VsZCBzdGlsbCBoYXZlIGJvdGggdGlsZXMsIGFzIHBhcnQg
b2YgdGhlIHRvcCB0aWxlIGlzIHN0aWxsIHVub2NjbHVkZWQuCisgICAgRVhQRUNUX1RSVUUobGF5
ZXJJbXBsLT5oYXNUaWxlQXQoMCwgMCkpOworICAgIEVYUEVDVF9UUlVFKGxheWVySW1wbC0+aGFz
VGlsZUF0KDAsIDEpKTsKK30KKwogVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoSWRs
ZVBhaW50VGlsZXMpCiB7CiAgICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdl
ciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDIqMTAyNCoxMDI0LCAxMDI0
KTsKQEAgLTI3NSwxMiArMzIxLDEzIEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVz
aElkbGVQYWludFRpbGVzKQogICAgIEludFNpemUgY29udGVudEJvdW5kcyg1MDAsIDUwMCk7CiAg
ICAgSW50UmVjdCBjb250ZW50UmVjdChJbnRQb2ludDo6emVybygpLCBjb250ZW50Qm91bmRzKTsK
ICAgICBJbnRSZWN0IHZpc2libGVSZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCk7CisgICAgUmVnaW9u
IG5vT2NjbHVzaW9uOwogCiAgICAgLy8gVGhpcyBpbnZhbGlkYXRlcyAyNSB0aWxlcyBhbmQgdGhl
biBwYWludHMgb25lIHZpc2libGUgdGlsZS4KICAgICBsYXllci0+c2V0Qm91bmRzKGNvbnRlbnRC
b3VuZHMpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KHZpc2libGVSZWN0KTsKICAg
ICBsYXllci0+aW52YWxpZGF0ZVJlY3QoY29udGVudFJlY3QpOwotICAgIGxheWVyLT5wcmVwYXJl
VG9VcGRhdGUodmlzaWJsZVJlY3QpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUodmlzaWJs
ZVJlY3QsIG5vT2NjbHVzaW9uKTsKIAogICAgIC8vIFdlIHNob3VsZCBuZWVkIGlkbGUtcGFpbnRp
bmcgZm9yIDN4MyB0aWxlcyBpbiB0aGUgY2VudGVyLgogICAgIEVYUEVDVF9UUlVFKGxheWVyLT5u
ZWVkc0lkbGVQYWludCh2aXNpYmxlUmVjdCkpOwpAQCAtMjk1LDkgKzM0Miw5IEBAIFRFU1QoVGls
ZWRMYXllckNocm9taXVtVGVzdCwgcHVzaElkbGVQYWludFRpbGVzKQogCiAgICAgLy8gRm9yIHRo
ZSBuZXh0IGZvdXIgdXBkYXRlcywgd2Ugc2hvdWxkIGRldGVjdCB3ZSBzdGlsbCBuZWVkIGlkbGUg
cGFpbnRpbmcuCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBpKyspIHsKLSAgICAgICAgbGF5
ZXItPnByZXBhcmVUb1VwZGF0ZSh2aXNpYmxlUmVjdCk7CisgICAgICAgIGxheWVyLT5wcmVwYXJl
VG9VcGRhdGUodmlzaWJsZVJlY3QsIG5vT2NjbHVzaW9uKTsKICAgICAgICAgRVhQRUNUX1RSVUUo
bGF5ZXItPm5lZWRzSWRsZVBhaW50KHZpc2libGVSZWN0KSk7Ci0gICAgICAgIGxheWVyLT5wcmVw
YXJlVG9VcGRhdGVJZGxlKHZpc2libGVSZWN0KTsKKyAgICAgICAgbGF5ZXItPnByZXBhcmVUb1Vw
ZGF0ZUlkbGUodmlzaWJsZVJlY3QsIG5vT2NjbHVzaW9uKTsKICAgICAgICAgbGF5ZXItPnVwZGF0
ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAgICAgICAgIGxheWVyLT5wdXNoUHJv
cGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAgICAgICAgIHRleHR1cmVNYW5hZ2VyLT51bnBy
b3RlY3RBbGxUZXh0dXJlcygpOwpAQCAtMzI3LDYgKzM3NCw3IEBAIFRFU1QoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgcHVzaFRpbGVzTWFya2VkRGlydHlEdXJpbmdQYWludCkKIAogICAgIEZha2VU
ZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7CiAgICAgQ0NUZXh0dXJlVXBkYXRlciB1
cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsKKyAgICBSZWdpb24gbm9PY2NsdXNpb247CiAKICAg
ICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRo
ZW4gcGFpbnRzIHR3byB0aWxlcy4KICAgICAvLyBIb3dldmVyLCBkdXJpbmcgdGhlIHBhaW50LCB3
ZSBpbnZhbGlkYXRlIG9uZSBvZiB0aGUgdGlsZXMuIFRoaXMgc2hvdWxkCkBAIC0zMzQsNyArMzgy
LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoVGlsZXNNYXJrZWREaXJ0eUR1
cmluZ1BhaW50KQogICAgIGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSgxMDAsIDIwMCkpOwogICAg
IGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAgICAgbGF5
ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNldFJlY3RUb0ludmFsaWRhdGUoSW50UmVj
dCgwLCA1MCwgMTAwLCA1MCksIGxheWVyLmdldCgpKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBk
YXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRl
KEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCBub09jY2x1c2lvbik7CiAgICAgbGF5ZXItPnVwZGF0
ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0
aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIApAQCAtMzU0LDE3ICs0MDIsMTggQEAgVEVTVChUaWxl
ZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoVGlsZXNMYXllck1hcmtlZERpcnR5RHVyaW5nUGFpbnRP
bk5leHRMYXllcikKIAogICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7
CiAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsKKyAgICBS
ZWdpb24gbm9PY2NsdXNpb247CiAKICAgICBsYXllcjEtPnNldEJvdW5kcyhJbnRTaXplKDEwMCwg
MjAwKSk7CiAgICAgbGF5ZXIxLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAw
KSk7CiAgICAgbGF5ZXIyLT5zZXRCb3VuZHMoSW50U2l6ZSgxMDAsIDIwMCkpOwogICAgIGxheWVy
Mi0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogCi0gICAgbGF5ZXIx
LT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOworICAgIGxheWVyMS0+
cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCBub09jY2x1c2lvbik7CiAK
ICAgICAvLyBJbnZhbGlkYXRlIGEgdGlsZSBvbiBsYXllcjEKICAgICBsYXllcjItPmZha2VMYXll
clRleHR1cmVVcGRhdGVyKCktPnNldFJlY3RUb0ludmFsaWRhdGUoSW50UmVjdCgwLCA1MCwgMTAw
LCA1MCksIGxheWVyMS5nZXQoKSk7Ci0gICAgbGF5ZXIyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVj
dCgwLCAwLCAxMDAsIDIwMCkpOworICAgIGxheWVyMi0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3Qo
MCwgMCwgMTAwLCAyMDApLCBub09jY2x1c2lvbik7CiAKICAgICBsYXllcjEtPnVwZGF0ZUNvbXBv
c2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAgICAgbGF5ZXIyLT51cGRhdGVDb21wb3NpdG9y
UmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwpAQCAtMzkwLDYgKzQzOSw3IEBAIFRFU1QoVGlsZWRMYXll
ckNocm9taXVtVGVzdCwgcHVzaFRpbGVzTGF5ZXJNYXJrZWREaXJ0eUR1cmluZ1BhaW50T25QcmV2
aW91c0xheWVyCiAKICAgICBGYWtlVGV4dHVyZUFsbG9jYXRvciB0ZXh0dXJlQWxsb2NhdG9yOwog
ICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcigmdGV4dHVyZUFsbG9jYXRvcik7CisgICAgUmVn
aW9uIG5vT2NjbHVzaW9uOwogCiAgICAgbGF5ZXIxLT5zZXRCb3VuZHMoSW50U2l6ZSgxMDAsIDIw
MCkpOwogICAgIGxheWVyMS0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkp
OwpAQCAtMzk4LDkgKzQ0OCw5IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaFRp
bGVzTGF5ZXJNYXJrZWREaXJ0eUR1cmluZ1BhaW50T25QcmV2aW91c0xheWVyCiAKICAgICAvLyBJ
bnZhbGlkYXRlIGEgdGlsZSBvbiBsYXllcjIKICAgICBsYXllcjEtPmZha2VMYXllclRleHR1cmVV
cGRhdGVyKCktPnNldFJlY3RUb0ludmFsaWRhdGUoSW50UmVjdCgwLCA1MCwgMTAwLCA1MCksIGxh
eWVyMi5nZXQoKSk7Ci0gICAgbGF5ZXIxLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAx
MDAsIDIwMCkpOworICAgIGxheWVyMS0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAw
LCAyMDApLCBub09jY2x1c2lvbik7CiAKLSAgICBsYXllcjItPnByZXBhcmVUb1VwZGF0ZShJbnRS
ZWN0KDAsIDAsIDEwMCwgMjAwKSk7CisgICAgbGF5ZXIyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVj
dCgwLCAwLCAxMDAsIDIwMCksIG5vT2NjbHVzaW9uKTsKIAogICAgIGxheWVyMS0+dXBkYXRlQ29t
cG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKICAgICBsYXllcjItPnVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CkBAIC00MjEsNiArNDcxLDcgQEAgVEVTVChUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRPdXRPZk1lbW9yeSkKICAgICBJbnRTaXplIGNvbnRl
bnRCb3VuZHMoMzAwLCAzMDApOwogICAgIEludFJlY3QgY29udGVudFJlY3QoSW50UG9pbnQ6Onpl
cm8oKSwgY29udGVudEJvdW5kcyk7CiAgICAgSW50UmVjdCB2aXNpYmxlUmVjdCgxMDAsIDEwMCwg
MTAwLCAxMDApOworICAgIFJlZ2lvbiBub09jY2x1c2lvbjsKIAogICAgIC8vIFdlIGhhdmUgZW5v
dWdoIG1lbW9yeSBmb3Igb25seSB0aGUgdmlzaWJsZSByZWN0LCBzbyB3ZSB3aWxsIHJ1biBvdXQg
b2YgbWVtb3J5IGluIGZpcnN0IGlkbGUgcGFpbnQuCiAgICAgaW50IG1lbW9yeUxpbWl0ID0gNCAq
IDEwMCAqIDEwMDsgLy8gMiB0aWxlcywgNCBieXRlcyBwZXIgcGl4ZWwuCkBAIC00MzcsNyArNDg4
LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRPdXRPZk1lbW9yeSkK
ICAgICBsYXllci0+c2V0Qm91bmRzKGNvbnRlbnRCb3VuZHMpOwogICAgIGxheWVyLT5zZXRWaXNp
YmxlTGF5ZXJSZWN0KHZpc2libGVSZWN0KTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoY29u
dGVudFJlY3QpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUodmlzaWJsZVJlY3QpOworICAg
IGxheWVyLT5wcmVwYXJlVG9VcGRhdGUodmlzaWJsZVJlY3QsIG5vT2NjbHVzaW9uKTsKIAogICAg
IC8vIFdlIHNob3VsZCBuZWVkIGlkbGUtcGFpbnRpbmcgZm9yIDN4MyB0aWxlcyBzdXJvdW5kaW5n
IHZpc2libGUgdGlsZS4KICAgICBFWFBFQ1RfVFJVRShsYXllci0+bmVlZHNJZGxlUGFpbnQodmlz
aWJsZVJlY3QpKTsKQEAgLTQ0OSw4ICs1MDAsOCBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRl
c3QsIGlkbGVQYWludE91dE9mTWVtb3J5KQogICAgIEVYUEVDVF9UUlVFKGxheWVySW1wbC0+aGFz
VGlsZUF0KDEsIDEpKTsKIAogICAgIHRleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RBbGxUZXh0dXJl
cygpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUodmlzaWJsZVJlY3QpOwotICAgIGxheWVy
LT5wcmVwYXJlVG9VcGRhdGVJZGxlKHZpc2libGVSZWN0KTsKKyAgICBsYXllci0+cHJlcGFyZVRv
VXBkYXRlKHZpc2libGVSZWN0LCBub09jY2x1c2lvbik7CisgICAgbGF5ZXItPnByZXBhcmVUb1Vw
ZGF0ZUlkbGUodmlzaWJsZVJlY3QsIG5vT2NjbHVzaW9uKTsKIAogICAgIC8vIFdlIHNob3VsZG4n
dCBzaWduYWwgd2UgbmVlZCBhbm90aGVyIGlkbGUgcGFpbnQgYWZ0ZXIgd2UgcnVuIG91dCBvZiBt
ZW1vcnkuCiAgICAgRVhQRUNUX0ZBTFNFKGxheWVyLT5uZWVkc0lkbGVQYWludCh2aXNpYmxlUmVj
dCkpOwpAQCAtNDY1LDYgKzUxNiw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaW52
YWxpZGF0ZUZyb21QcmVwYXJlKQogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBs
YXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2Vy
LmdldCgpKSk7CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAg
T3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwoYWRvcHRQdHIobmV3IEZha2VD
Q1RpbGVkTGF5ZXJJbXBsKDApKSk7CisgICAgUmVnaW9uIG5vT2NjbHVzaW9uOwogCiAgICAgRmFr
ZVRleHR1cmVBbGxvY2F0b3IgdGV4dHVyZUFsbG9jYXRvcjsKICAgICBDQ1RleHR1cmVVcGRhdGVy
IHVwZGF0ZXIoJnRleHR1cmVBbGxvY2F0b3IpOwpAQCAtNDcyLDcgKzUyNCw3IEBAIFRFU1QoVGls
ZWRMYXllckNocm9taXVtVGVzdCwgaW52YWxpZGF0ZUZyb21QcmVwYXJlKQogICAgIC8vIFRoZSB0
aWxlIHNpemUgaXMgMTAweDEwMCwgc28gdGhpcyBpbnZhbGlkYXRlcyBhbmQgdGhlbiBwYWludHMg
dHdvIHRpbGVzLgogICAgIGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSgxMDAsIDIwMCkpOwogICAg
IGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7Ci0gICAgbGF5
ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CisgICAgbGF5ZXIt
PnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgbm9PY2NsdXNpb24pOwog
ICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwogICAgIGxh
eWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAKQEAgLTQ4NSwxOCArNTM3
LDE4IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaW52YWxpZGF0ZUZyb21QcmVwYXJl
KQogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVDb3Vu
dCgpOwogICAgIC8vIEludm9rZSBwcmVwYXJlVG9VcGRhdGUgYWdhaW4uIEFzIHRoZSBsYXllciBp
cyB2YWxpZCBwcmVwYXJlVG9VcGRhdGUgc2hvdWxkbid0IGJlIGludm9rZWQgb24KICAgICAvLyB0
aGUgTGF5ZXJUZXh0dXJlVXBkYXRlci4KLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJl
Y3QoMCwgMCwgMTAwLCAyMDApKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3Qo
MCwgMCwgMTAwLCAyMDApLCBub09jY2x1c2lvbik7CiAgICAgRVhQRUNUX0VRKDAsIGxheWVyLT5m
YWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlQ291bnQoKSk7CiAKICAgICBsYXllci0+
aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA1MCwgNTApKTsKICAgICAvLyBzZXRSZWN0VG9J
bnZhbGlkYXRlIHRyaWdnZXJzIGludmFsaWRhdGVSZWN0KCkgYmVpbmcgaW52b2tlZCBmcm9tIHBy
ZXBhcmVUb1VwZGF0ZS4KICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0
UmVjdFRvSW52YWxpZGF0ZShJbnRSZWN0KDI1LCAyNSwgNTAsIDUwKSwgbGF5ZXIuZ2V0KCkpOwog
ICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVDb3VudCgp
OwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwor
ICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIG5vT2Nj
bHVzaW9uKTsKICAgICBFWFBFQ1RfRVEoMSwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVy
KCktPnByZXBhcmVDb3VudCgpKTsKICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIo
KS0+Y2xlYXJQcmVwYXJlQ291bnQoKTsKICAgICAvLyBUaGUgbGF5ZXIgc2hvdWxkIHN0aWxsIGJl
IGludmFsaWQgYXMgcHJlcGFyZVRvVXBkYXRlIGludm9rZWQgaW52YWxpZGF0ZS4KLSAgICBsYXll
ci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKKyAgICBsYXllci0+
cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCBub09jY2x1c2lvbik7CiAg
ICAgRVhQRUNUX0VRKDEsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJl
Q291bnQoKSk7CiB9CiAKQEAgLTUwNyw2ICs1NTksNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QsIHZlcmlmeVVwZGF0ZVJlY3RXaGVuQ29udGVudEJvdW5kc0FyZVNjYWxlZCkKIAogICAg
IE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6
Y3JlYXRlKDQqMTAyNCoxMDI0LCAyKjEwMjQqMTAyNCwgMTAyNCk7CiAgICAgUmVmUHRyPEZha2VU
aWxlZExheWVyV2l0aFNjYWxlZEJvdW5kcz4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVk
TGF5ZXJXaXRoU2NhbGVkQm91bmRzKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CisgICAgUmVnaW9u
IG5vT2NjbHVzaW9uOwogCiAgICAgRmFrZVRleHR1cmVBbGxvY2F0b3IgdGV4dHVyZUFsbG9jYXRv
cjsKICAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIoJnRleHR1cmVBbGxvY2F0b3IpOwpAQCAt
NTIxLDIwICs1NzQsMjAgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2ZXJpZnlVcGRh
dGVSZWN0V2hlbkNvbnRlbnRCb3VuZHNBcmVTY2FsZWQpCiAgICAgLy8gT24gZmlyc3QgdXBkYXRl
LCB0aGUgdXBkYXRlUmVjdCBpbmNsdWRlcyBhbGwgdGlsZXMsIGV2ZW4gYmV5b25kIHRoZSBib3Vu
ZGFyaWVzIG9mIHRoZSBsYXllci4KICAgICAvLyBIb3dldmVyLCBpdCBzaG91bGQgc3RpbGwgYmUg
aW4gbGF5ZXIgc3BhY2UsIG5vdCBjb250ZW50IHNwYWNlLgogICAgIGxheWVyLT5pbnZhbGlkYXRl
UmVjdChjb250ZW50Qm91bmRzKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRC
b3VuZHMpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcywgbm9PY2Ns
dXNpb24pOwogICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIp
OwogICAgIEVYUEVDVF9GTE9BVF9SRUNUX0VRKEZsb2F0UmVjdCgwLCAwLCAzMDAsIDMwMCAqIDAu
OCksIGxheWVyLT51cGRhdGVSZWN0KCkpOwogCiAgICAgLy8gQWZ0ZXIgdGhlIHRpbGVzIGFyZSB1
cGRhdGVkIG9uY2UsIGFub3RoZXIgaW52YWxpZGF0ZSBvbmx5IG5lZWRzIHRvIHVwZGF0ZSB0aGUg
Ym91bmRzIG9mIHRoZSBsYXllci4KICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoY29udGVudEJv
dW5kcyk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzKTsKKyAgICBs
YXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMsIG5vT2NjbHVzaW9uKTsKICAgICBs
YXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKICAgICBFWFBFQ1Rf
RkxPQVRfUkVDVF9FUShGbG9hdFJlY3QobGF5ZXJCb3VuZHMpLCBsYXllci0+dXBkYXRlUmVjdCgp
KTsKIAogICAgIC8vIFBhcnRpYWwgcmUtcGFpbnQgc2hvdWxkIGFsc28gYmUgcmVwcmVzZW50ZWQg
YnkgdGhlIHVwZGF0ZVJlY3QgaW4gbGF5ZXIgc3BhY2UsIG5vdCBjb250ZW50IHNwYWNlLgogICAg
IEludFJlY3QgcGFydGlhbERhbWFnZSgzMCwgMTAwLCAxMCwgMTApOwogICAgIGxheWVyLT5pbnZh
bGlkYXRlUmVjdChwYXJ0aWFsRGFtYWdlKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNv
bnRlbnRCb3VuZHMpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcywg
bm9PY2NsdXNpb24pOwogICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVw
ZGF0ZXIpOwogICAgIEVYUEVDVF9GTE9BVF9SRUNUX0VRKEZsb2F0UmVjdCg0NSwgODAsIDE1LCA4
KSwgbGF5ZXItPnVwZGF0ZVJlY3QoKSk7CiB9CkBAIC01NDgsNiArNjAxLDcgQEAgVEVTVChUaWxl
ZExheWVyQ2hyb21pdW1UZXN0LCB2ZXJpZnlJbnZhbGlkYXRpb25XaGVuQ29udGVudHNTY2FsZUNo
YW5nZXMpCiAKICAgICBGYWtlVGV4dHVyZUFsbG9jYXRvciB0ZXh0dXJlQWxsb2NhdG9yOwogICAg
IENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcigmdGV4dHVyZUFsbG9jYXRvcik7CisgICAgUmVnaW9u
IG5vT2NjbHVzaW9uOwogCiAgICAgLy8gQ3JlYXRlIGEgbGF5ZXIgd2l0aCBvbmUgdGlsZS4KICAg
ICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAxMDApKTsKQEAgLTU1Nyw3ICs2MTEsNyBA
QCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZlcmlmeUludmFsaWRhdGlvbldoZW5Db250
ZW50c1NjYWxlQ2hhbmdlcykKICAgICBFWFBFQ1RfRkxPQVRfUkVDVF9FUShGbG9hdFJlY3QoMCwg
MCwgMTAwLCAxMDApLCBsYXllci0+bGFzdE5lZWRzRGlzcGxheVJlY3QoKSk7CiAKICAgICAvLyBQ
dXNoIHRoZSB0aWxlcyB0byB0aGUgaW1wbCBzaWRlIGFuZCBjaGVjayB0aGF0IHRoZXJlIGlzIGV4
YWN0bHkgb25lLgotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAs
IDEwMCkpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDEw
MCksIG5vT2NjbHVzaW9uKTsKICAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygw
LCB1cGRhdGVyKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkp
OwogICAgIEVYUEVDVF9UUlVFKGxheWVySW1wbC0+aGFzVGlsZUF0KDAsIDApKTsKQEAgLTU3MSw3
ICs2MjUsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZlcmlmeUludmFsaWRhdGlv
bldoZW5Db250ZW50c1NjYWxlQ2hhbmdlcykKICAgICBFWFBFQ1RfRkxPQVRfUkVDVF9FUShGbG9h
dFJlY3QoMCwgMCwgMTAwLCAxMDApLCBsYXllci0+bGFzdE5lZWRzRGlzcGxheVJlY3QoKSk7CiAK
ICAgICAvLyBUaGUgaW1wbCBzaWRlIHNob3VsZCBnZXQgMngyIHRpbGVzIG5vdy4KLSAgICBsYXll
ci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMjAwLCAyMDApKTsKKyAgICBsYXllci0+
cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMjAwLCAyMDApLCBub09jY2x1c2lvbik7CiAg
ICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAgICAgbGF5
ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKICAgICBFWFBFQ1RfVFJVRShs
YXllckltcGwtPmhhc1RpbGVBdCgwLCAwKSk7CkBAIC01ODIsNyArNjM2LDcgQEAgVEVTVChUaWxl
ZExheWVyQ2hyb21pdW1UZXN0LCB2ZXJpZnlJbnZhbGlkYXRpb25XaGVuQ29udGVudHNTY2FsZUNo
YW5nZXMpCiAgICAgLy8gSW52YWxpZGF0ZSB0aGUgZW50aXJlIGxheWVyIGFnYWluLCBidXQgZG8g
bm90IHBhaW50LiBBbGwgdGlsZXMgc2hvdWxkIGJlIGdvbmUgbm93IGZyb20gdGhlCiAgICAgLy8g
aW1wbCBzaWRlLgogICAgIGxheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKLSAgICBsYXllci0+cHJl
cGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMCwgMCkpOworICAgIGxheWVyLT5wcmVwYXJlVG9V
cGRhdGUoSW50UmVjdCgwLCAwLCAwLCAwKSwgbm9PY2NsdXNpb24pOwogICAgIGxheWVyLT51cGRh
dGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwogICAgIGxheWVyLT5wdXNoUHJvcGVy
dGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKGxheWVySW1wbC0+aGFz
VGlsZUF0KDAsIDApKTsKQEAgLTY0NCwxMzIgKzY5OCwxNSBAQCBURVNUKFRpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QsIHNraXBzRHJhd0dldHNSZXNldCkKICAgICBXZWJLaXQ6OldlYkNvbXBvc2l0b3I6
OnNodXRkb3duKCk7CiB9CiAKLVRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgbGF5ZXJBZGRz
U2VsZlRvT2NjbHVkZWRSZWdpb24pCi17Ci0gICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0
dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDIqMTAyNCox
MDI0LCAxMDI0KTsKLSAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBh
ZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkp
OwotCi0gICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLCBzbyB0aGlzIGludmFsaWRhdGVz
IGFuZCB0aGVuIHBhaW50cyB0d28gdGlsZXMgaW4gdmFyaW91cyB3YXlzLgotCi0gICAgUmVnaW9u
IG9jY2x1ZGVkOwotICAgIEludFJlY3QgY29udGVudEJvdW5kcyA9IEludFJlY3QoMCwgMCwgMTAw
LCAyMDApOwotICAgIEludFJlY3QgdmlzaWJsZUJvdW5kcyA9IEludFJlY3QoMCwgMCwgMTAwLCAx
NTApOwotCi0gICAgbGF5ZXItPnNldEJvdW5kcyhjb250ZW50Qm91bmRzLnNpemUoKSk7Ci0gICAg
bGF5ZXItPnNldFZpc2libGVMYXllclJlY3QodmlzaWJsZUJvdW5kcyk7Ci0gICAgbGF5ZXItPnNl
dERyYXdPcGFjaXR5KDEpOwotCi0gICAgLy8gVGhlIHNjcmVlblNwYWNlVHJhbnNmb3JtIGlzIHZl
cmlmaWVkIGluIENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3RzCi0gICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggc2NyZWVuU3BhY2VUcmFuc2Zvcm07Ci0gICAgbGF5ZXItPnNldFNjcmVlblNwYWNlVHJh
bnNmb3JtKHNjcmVlblNwYWNlVHJhbnNmb3JtKTsKLQotICAgIC8vIElmIHRoZSBsYXllciBpcyBv
cGFxdWUgdGhlbiB0aGUgb2NjbHVkZWQgcmVnaW9uIHNob3VsZCBiZSB0aGUgd2hvbGUgbGF5ZXIn
cyB2aXNpYmxlIHJlZ2lvbi4KLSAgICBsYXllci0+c2V0T3BhcXVlKHRydWUpOwotICAgIGxheWVy
LT5pbnZhbGlkYXRlUmVjdChjb250ZW50Qm91bmRzKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBk
YXRlKGNvbnRlbnRCb3VuZHMpOwotCi0gICAgb2NjbHVkZWQgPSBSZWdpb24oKTsKLSAgICBsYXll
ci0+YWRkU2VsZlRvT2NjbHVkZWRTY3JlZW5TcGFjZShvY2NsdWRlZCk7Ci0gICAgRVhQRUNUX0VR
X1JFQ1QodmlzaWJsZUJvdW5kcywgb2NjbHVkZWQuYm91bmRzKCkpOwotICAgIEVYUEVDVF9FUSgx
dSwgb2NjbHVkZWQucmVjdHMoKS5zaXplKCkpOwotCi0gICAgLy8gSWYgdGhlIGxheWVyIGlzIG5v
dCBvcGFxdWUgdGhlbiB0aGUgb2NjbHVkZWQgcmVnaW9uIHNob3VsZCBiZSBlbXB0eS4KLSAgICBs
YXllci0+c2V0T3BhcXVlKGZhbHNlKTsKLSAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoY29udGVu
dEJvdW5kcyk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzKTsKLQot
ICAgIG9jY2x1ZGVkID0gUmVnaW9uKCk7Ci0gICAgbGF5ZXItPmFkZFNlbGZUb09jY2x1ZGVkU2Ny
ZWVuU3BhY2Uob2NjbHVkZWQpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoKSwgb2NjbHVk
ZWQuYm91bmRzKCkpOwotICAgIEVYUEVDVF9FUSgwdSwgb2NjbHVkZWQucmVjdHMoKS5zaXplKCkp
OwotCi0gICAgLy8gSWYgdGhlIGxheWVyIHBhaW50cyBvcGFxdWUgY29udGVudCwgdGhlbiB0aGUg
b2NjbHVkZWQgcmVnaW9uIHNob3VsZCBtYXRjaCB0aGUgdmlzaWJsZSBvcGFxdWUgY29udGVudC4K
LSAgICBJbnRSZWN0IG9wYXF1ZVBhaW50UmVjdCA9IEludFJlY3QoMTAsIDEwLCA5MCwgMTkwKTsK
LSAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0T3BhcXVlUGFpbnRSZWN0
KG9wYXF1ZVBhaW50UmVjdCk7Ci0gICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KGNvbnRlbnRCb3Vu
ZHMpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcyk7Ci0KLSAgICBv
Y2NsdWRlZCA9IFJlZ2lvbigpOwotICAgIGxheWVyLT5hZGRTZWxmVG9PY2NsdWRlZFNjcmVlblNw
YWNlKG9jY2x1ZGVkKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChpbnRlcnNlY3Rpb24ob3BhcXVlUGFp
bnRSZWN0LCB2aXNpYmxlQm91bmRzKSwgb2NjbHVkZWQuYm91bmRzKCkpOwotICAgIEVYUEVDVF9F
USgxdSwgb2NjbHVkZWQucmVjdHMoKS5zaXplKCkpOwotCi0gICAgLy8gSWYgd2UgcGFpbnQgYWdh
aW4gd2l0aG91dCBpbnZhbGlkYXRpbmcsIHRoZSBzYW1lIHN0dWZmIHNob3VsZCBiZSBvY2NsdWRl
ZC4KLSAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0T3BhcXVlUGFpbnRS
ZWN0KEludFJlY3QoKSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRz
KTsKLQotICAgIG9jY2x1ZGVkID0gUmVnaW9uKCk7Ci0gICAgbGF5ZXItPmFkZFNlbGZUb09jY2x1
ZGVkU2NyZWVuU3BhY2Uob2NjbHVkZWQpOwotICAgIEVYUEVDVF9FUV9SRUNUKGludGVyc2VjdGlv
bihvcGFxdWVQYWludFJlY3QsIHZpc2libGVCb3VuZHMpLCBvY2NsdWRlZC5ib3VuZHMoKSk7Ci0g
ICAgRVhQRUNUX0VRKDF1LCBvY2NsdWRlZC5yZWN0cygpLnNpemUoKSk7Ci0KLSAgICAvLyBJZiB3
ZSByZXBhaW50IGEgbm9uLW9wYXF1ZSBwYXJ0IG9mIHRoZSB0aWxlLCB0aGVuIGl0IHNob3VsZG4n
dCBsb3NlIGl0cyBvcGFxdWUtbmVzcy4gQW5kIG90aGVyIHRpbGVzIHNob3VsZAotICAgIC8vIG5v
dCBiZSBhZmZlY3RlZC4KLSAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0
T3BhcXVlUGFpbnRSZWN0KEludFJlY3QoKSk7Ci0gICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KElu
dFJlY3QoMCwgMCwgMSwgMSkpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJv
dW5kcyk7Ci0KLSAgICBvY2NsdWRlZCA9IFJlZ2lvbigpOwotICAgIGxheWVyLT5hZGRTZWxmVG9P
Y2NsdWRlZFNjcmVlblNwYWNlKG9jY2x1ZGVkKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChpbnRlcnNl
Y3Rpb24ob3BhcXVlUGFpbnRSZWN0LCB2aXNpYmxlQm91bmRzKSwgb2NjbHVkZWQuYm91bmRzKCkp
OwotICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVkZWQucmVjdHMoKS5zaXplKCkpOwotCi0gICAgLy8g
SWYgd2UgcmVwYWludCBhbiBvcGFxdWUgcGFydCBvZiB0aGUgdGlsZSwgdGhlbiBpdCBzaG91bGQg
bG9zZSBpdHMgb3BhcXVlLW5lc3MuIEJ1dCBvdGhlciB0aWxlcyBzaG91bGQgc3RpbGwKLSAgICAv
LyBub3QgYmUgYWZmZWN0ZWQuCi0gICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCkt
PnNldE9wYXF1ZVBhaW50UmVjdChJbnRSZWN0KCkpOwotICAgIGxheWVyLT5pbnZhbGlkYXRlUmVj
dChJbnRSZWN0KDEwLCAxMCwgMSwgMSkpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29u
dGVudEJvdW5kcyk7Ci0KLSAgICBvY2NsdWRlZCA9IFJlZ2lvbigpOwotICAgIGxheWVyLT5hZGRT
ZWxmVG9PY2NsdWRlZFNjcmVlblNwYWNlKG9jY2x1ZGVkKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChp
bnRlcnNlY3Rpb24oSW50UmVjdCgxMCwgMTAwLCA5MCwgMTAwKSwgdmlzaWJsZUJvdW5kcyksIG9j
Y2x1ZGVkLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1ZGVkLnJlY3RzKCkuc2l6
ZSgpKTsKLQotICAgIC8vIElmIHRoZSBsYXllciBpcyB0cmFuc2Zvcm1lZCB0aGVuIHRoZSByZXN1
bHRpbmcgb2NjbHVkZWQgYXJlYSBuZWVkcyB0byBiZSB0cmFuc2Zvcm1lZCB0byBpdHMgdGFyZ2V0
IHNwYWNlLgotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsKLSAgICB0cmFuc2Zv
cm0udHJhbnNsYXRlKGNvbnRlbnRCb3VuZHMud2lkdGgoKSAvIDIuMCwgY29udGVudEJvdW5kcy5o
ZWlnaHQoKSAvIDIuMCk7Ci0gICAgdHJhbnNmb3JtLnJvdGF0ZSg5MCk7Ci0gICAgdHJhbnNmb3Jt
LnRyYW5zbGF0ZSgtY29udGVudEJvdW5kcy53aWR0aCgpIC8gMi4wLCAtY29udGVudEJvdW5kcy5o
ZWlnaHQoKSAvIDIuMCk7Ci0gICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSgxMCwgMTApOwotICAgIHNj
cmVlblNwYWNlVHJhbnNmb3JtLnRyYW5zbGF0ZShjb250ZW50Qm91bmRzLndpZHRoKCkgLyAyLjAs
IGNvbnRlbnRCb3VuZHMuaGVpZ2h0KCkgLyAyLjApOwotICAgIHNjcmVlblNwYWNlVHJhbnNmb3Jt
ICo9IHRyYW5zZm9ybTsKLSAgICBzY3JlZW5TcGFjZVRyYW5zZm9ybS50cmFuc2xhdGUoLWNvbnRl
bnRCb3VuZHMud2lkdGgoKSAvIDIuMCwgLWNvbnRlbnRCb3VuZHMuaGVpZ2h0KCkgLyAyLjApOwot
ICAgIGxheWVyLT5zZXRTY3JlZW5TcGFjZVRyYW5zZm9ybShzY3JlZW5TcGFjZVRyYW5zZm9ybSk7
Ci0gICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNldE9wYXF1ZVBhaW50UmVj
dChvcGFxdWVQYWludFJlY3QpOwotICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChvcGFxdWVQYWlu
dFJlY3QpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcyk7Ci0KLSAg
ICBvY2NsdWRlZCA9IFJlZ2lvbigpOwotICAgIGxheWVyLT5hZGRTZWxmVG9PY2NsdWRlZFNjcmVl
blNwYWNlKG9jY2x1ZGVkKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChzY3JlZW5TcGFjZVRyYW5zZm9y
bS5tYXBSZWN0KGludGVyc2VjdGlvbihvcGFxdWVQYWludFJlY3QsIHZpc2libGVCb3VuZHMpKSwg
b2NjbHVkZWQuYm91bmRzKCkpOwotICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVkZWQucmVjdHMoKS5z
aXplKCkpOwotCi0gICAgLy8gQnV0IGEgbm9uLWF4aXMtYWxpZ25lZCB0cmFuc2Zvcm0gZG9lcyBu
b3QgZ2V0IGNvbnNpZGVyZWQgZm9yIG9jY2x1c2lvbi4KLSAgICB0cmFuc2Zvcm0udHJhbnNsYXRl
KGNvbnRlbnRCb3VuZHMud2lkdGgoKSAvIDIuMCwgY29udGVudEJvdW5kcy5oZWlnaHQoKSAvIDIu
MCk7Ci0gICAgdHJhbnNmb3JtLnJvdGF0ZSg1KTsKLSAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKC1j
b250ZW50Qm91bmRzLndpZHRoKCkgLyAyLjAsIC1jb250ZW50Qm91bmRzLmhlaWdodCgpIC8gMi4w
KTsKLSAgICBzY3JlZW5TcGFjZVRyYW5zZm9ybS50cmFuc2xhdGUoY29udGVudEJvdW5kcy53aWR0
aCgpIC8gMi4wLCBjb250ZW50Qm91bmRzLmhlaWdodCgpIC8gMi4wKTsKLSAgICBzY3JlZW5TcGFj
ZVRyYW5zZm9ybSAqPSB0cmFuc2Zvcm07Ci0gICAgc2NyZWVuU3BhY2VUcmFuc2Zvcm0udHJhbnNs
YXRlKC1jb250ZW50Qm91bmRzLndpZHRoKCkgLyAyLjAsIC1jb250ZW50Qm91bmRzLmhlaWdodCgp
IC8gMi4wKTsKLSAgICBsYXllci0+c2V0U2NyZWVuU3BhY2VUcmFuc2Zvcm0oc2NyZWVuU3BhY2VU
cmFuc2Zvcm0pOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcyk7Ci0K
LSAgICBvY2NsdWRlZCA9IFJlZ2lvbigpOwotICAgIGxheWVyLT5hZGRTZWxmVG9PY2NsdWRlZFNj
cmVlblNwYWNlKG9jY2x1ZGVkKTsKLSAgICAvLyBGSVhNRTogSWYgd2UgZmluZCBhbiBvcGFxdWUg
cmVjdCBjb250YWluZWQgaW4gdGhlIHJvdGF0ZWQgbm9uLWF4aXMtYWxpZ25lZCByZWN0LCB0aGVu
Ci0gICAgLy8gdGhpcyB3b24ndCBiZSBhbiBlbXB0eSByZXN1bHQuCi0gICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCgpLCBvY2NsdWRlZC5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDB1LCBvY2Ns
dWRlZC5yZWN0cygpLnNpemUoKSk7Ci19Ci0KIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
cmVzaXplVG9TbWFsbGVyKQogewogICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1h
bmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDYwKjEwMjQqMTAyNCwgNjAqMTAyNCoxMDI0
LCAxMDI0KTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9w
dFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwor
ICAgIFJlZ2lvbiBub09jY2x1c2lvbjsKIAogICAgIGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSg3
MDAsIDcwMCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDcwMCwg
NzAwKSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDcwMCwgNzAw
KSk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDcwMCwgNzAwKSwg
bm9PY2NsdXNpb24pOwogCiAgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDIwMCwgMjAwKSk7
CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgMjAwLCAyMDApKTsKQEAg
LTg0Niw0ICs3ODMsMTc4IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcGFydGlhbFVw
ZGF0ZXMpCiAgICAgV2ViS2l0OjpXZWJDb21wb3NpdG9yOjpzaHV0ZG93bigpOwogfQogCitURVNU
KFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhvdXRPY2NsdXNpb24pCit7
CisgICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5h
Z2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDIqMTAyNCoxMDI0LCAxMDI0KTsKKyAgICBSZWZQdHI8
RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5
ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOworICAgIFJlZ2lvbiBvY2NsdWRlZDsK
KworICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMCwgc28gdGhpcyBpbnZhbGlkYXRlcyBh
bmQgdGhlbiBwYWludHMgdHdvIHRpbGVzLgorICAgIGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSgx
MDAsIDIwMCkpOworCisgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgMTAw
LCAyMDApKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAy
MDApLCBvY2NsdWRlZCk7CisgICAgRVhQRUNUX0VRKDIsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJl
VXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOworfQorCitURVNUKFRpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb24pCit7CisgICAgT3duUHRyPFRleHR1
cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0
KjEwMjQsIDIqMTAyNCoxMDI0LCAxMDI0KTsKKyAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJv
bWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJl
TWFuYWdlci5nZXQoKSkpOworICAgIFJlZ2lvbiBvY2NsdWRlZDsKKworICAgIC8vIFRoZSB0aWxl
IHNpemUgaXMgMTAweDEwMC4KKworICAgIGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSg2MDAsIDYw
MCkpOworCisgICAgb2NjbHVkZWQgPSBJbnRSZWN0KDIwMCwgMjAwLCAzMDAsIDEwMCk7CisgICAg
bGF5ZXItPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBsYXllci0+Ym91
bmRzKCkpKTsKKyAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYw
MCkpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCks
IG9jY2x1ZGVkKTsKKyAgICBFWFBFQ1RfRVEoMzYtMywgbGF5ZXItPmZha2VMYXllclRleHR1cmVV
cGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CisKKyAgICBsYXllci0+ZmFrZUxheWVyVGV4
dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQcmVwYXJlUmVjdENvdW50KCk7CisKKyAgICBvY2NsdWRlZCA9
IEludFJlY3QoMjUwLCAyMDAsIDMwMCwgMTAwKTsKKyAgICBsYXllci0+aW52YWxpZGF0ZVJlY3Qo
SW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50
UmVjdCgwLCAwLCA2MDAsIDYwMCksIG9jY2x1ZGVkKTsKKyAgICBFWFBFQ1RfRVEoMzYtMiwgbGF5
ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CisKKyAg
ICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQcmVwYXJlUmVjdENvdW50
KCk7CisKKyAgICBvY2NsdWRlZCA9IEludFJlY3QoMjUwLCAyNTAsIDMwMCwgMTAwKTsKKyAgICBs
YXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOworICAgIGxheWVy
LT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksIG9jY2x1ZGVkKTsKKyAg
ICBFWFBFQ1RfRVEoMzYsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJl
UmVjdENvdW50KCkpOworfQorCitURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFp
bnRlZFdpdGhPY2NsdXNpb25BbmRWaXNpYmxpdHlDb25zdHJhaW50cykKK3sKKyAgICBPd25QdHI8
VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0
KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOworICAgIFJlZlB0cjxGYWtlVGlsZWRMYXll
ckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRl
eHR1cmVNYW5hZ2VyLmdldCgpKSk7CisgICAgUmVnaW9uIG9jY2x1ZGVkOworCisgICAgLy8gVGhl
IHRpbGUgc2l6ZSBpcyAxMDB4MTAwLgorCisgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDYw
MCwgNjAwKSk7CisKKyAgICAvLyBUaGUgcGFydGlhbGx5IG9jY2x1ZGVkIHRpbGVzIChieSB0aGUg
MTUwIG9jY2x1c2lvbiBoZWlnaHQpIGFyZSB2aXNpYmxlIGJleW9uZCB0aGUgb2NjbHVzaW9uLCBz
byBub3QgY3VsbGVkLgorICAgIG9jY2x1ZGVkID0gSW50UmVjdCgyMDAsIDIwMCwgMzAwLCAxNTAp
OworICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoMCwgMCwgNjAwLCAzNjAp
KTsKKyAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOwor
ICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksIG9jY2x1
ZGVkKTsKKyAgICBFWFBFQ1RfRVEoMzYtMywgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVy
KCktPnByZXBhcmVSZWN0Q291bnQoKSk7CisKKyAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVw
ZGF0ZXIoKS0+Y2xlYXJQcmVwYXJlUmVjdENvdW50KCk7CisKKyAgICAvLyBOb3cgdGhlIHZpc2li
bGUgcmVnaW9uIHN0b3BzIGF0IHRoZSBlZGdlIG9mIHRoZSBvY2NsdXNpb24gc28gdGhlIHBhcnRs
eSB2aXNpYmxlIHRpbGVzIGJlY29tZSBmdWxseSBvY2NsdWRlZC4KKyAgICBvY2NsdWRlZCA9IElu
dFJlY3QoMjAwLCAyMDAsIDMwMCwgMTUwKTsKKyAgICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVj
dChJbnRSZWN0KDAsIDAsIDYwMCwgMzUwKSk7CisgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KElu
dFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJl
Y3QoMCwgMCwgNjAwLCA2MDApLCBvY2NsdWRlZCk7CisgICAgRVhQRUNUX0VRKDM2LTYsIGxheWVy
LT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOworCisgICAg
bGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyUHJlcGFyZVJlY3RDb3VudCgp
OworCisgICAgLy8gTm93IHRoZSB2aXNpYmxlIHJlZ2lvbiBpcyBldmVuIHNtYWxsZXIgdGhhbiB0
aGUgb2NjbHVzaW9uLCBpdCBzaG91bGQgaGF2ZSB0aGUgc2FtZSByZXN1bHQuCisgICAgb2NjbHVk
ZWQgPSBJbnRSZWN0KDIwMCwgMjAwLCAzMDAsIDE1MCk7CisgICAgbGF5ZXItPnNldFZpc2libGVM
YXllclJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDM0MCkpOworICAgIGxheWVyLT5pbnZhbGlkYXRl
UmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0
ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgb2NjbHVkZWQpOworICAgIEVYUEVDVF9FUSgzNi02
LCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsK
K30KKworVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc05vdFBhaW50ZWRXaXRob3V0
SW52YWxpZGF0aW9uKQoreworICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFn
ZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAyKjEwMjQqMTAyNCwgMTAy
NCk7CisgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYo
bmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKKyAgICBS
ZWdpb24gb2NjbHVkZWQ7CisKKyAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAuCisKKyAg
ICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoNjAwLCA2MDApKTsKKworICAgIG9jY2x1ZGVkID0g
SW50UmVjdCgyMDAsIDIwMCwgMzAwLCAxMDApOworICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJS
ZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKKyAgICBsYXllci0+aW52YWxpZGF0ZVJlY3Qo
SW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50
UmVjdCgwLCAwLCA2MDAsIDYwMCksIG9jY2x1ZGVkKTsKKyAgICBFWFBFQ1RfRVEoMzYtMywgbGF5
ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CisKKyAg
ICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQcmVwYXJlUmVjdENvdW50
KCk7CisKKyAgICAvLyBSZXBhaW50IHdpdGhvdXQgbWFya2luZyBpdCBkaXJ0eS4KKyAgICBsYXll
ci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCBvY2NsdWRlZCk7Cisg
ICAgRVhQRUNUX0VRKDAsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJl
UmVjdENvdW50KCkpOworfQorCitURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFp
bnRlZFdpdGhPY2NsdXNpb25BbmRUcmFuc2Zvcm1zKQoreworICAgIE93blB0cjxUZXh0dXJlTWFu
YWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0
LCAyKjEwMjQqMTAyNCwgMTAyNCk7CisgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+
IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFn
ZXIuZ2V0KCkpKTsKKyAgICBSZWdpb24gb2NjbHVkZWQ7CisKKyAgICAvLyBUaGUgdGlsZSBzaXpl
IGlzIDEwMHgxMDAuCisKKyAgICAvLyBUaGlzIG1ha2VzIHN1cmUgdGhlIHBhaW50aW5nIHdvcmtz
IHdoZW4gdGhlIG9jY2x1ZGVkIHJlZ2lvbiAoaW4gc2NyZWVuIHNwYWNlKQorICAgIC8vIGlzIHRy
YW5zZm9ybWVkIGRpZmZlcmVudGx5IHRoYW4gdGhlIGxheWVyLgorICAgIGxheWVyLT5zZXRCb3Vu
ZHMoSW50U2l6ZSg2MDAsIDYwMCkpOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHNjcmVlblRy
YW5zZm9ybTsKKyAgICBzY3JlZW5UcmFuc2Zvcm0uc2NhbGUoMC41KTsKKyAgICBsYXllci0+c2V0
U2NyZWVuU3BhY2VUcmFuc2Zvcm0oc2NyZWVuVHJhbnNmb3JtKTsKKworICAgIG9jY2x1ZGVkID0g
SW50UmVjdCgxMDAsIDEwMCwgMTUwLCA1MCk7CisgICAgbGF5ZXItPnNldFZpc2libGVMYXllclJl
Y3QoSW50UmVjdChJbnRQb2ludCgpLCBsYXllci0+Ym91bmRzKCkpKTsKKyAgICBsYXllci0+aW52
YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOworICAgIGxheWVyLT5wcmVwYXJl
VG9VcGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksIG9jY2x1ZGVkKTsKKyAgICBFWFBFQ1Rf
RVEoMzYtMywgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291
bnQoKSk7Cit9CisKK1RFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0
aE9jY2x1c2lvbkFuZFNjYWxpbmcpCit7CisgICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0
dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDIqMTAyNCox
MDI0LCAxMDI0KTsKKyAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBh
ZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkp
OworICAgIFJlZ2lvbiBvY2NsdWRlZDsKKworICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEw
MC4KKworICAgIC8vIFRoaXMgbWFrZXMgc3VyZSB0aGUgcGFpbnRpbmcgd29ya3Mgd2hlbiB0aGUg
Y29udGVudCBzcGFjZSBpcyBzY2FsZWQgdG8KKyAgICAvLyBhIGRpZmZlcmVudCBsYXllciBzcGFj
ZS4gSW4gdGhpcyBjYXNlIHRpbGVzIGFyZSBzY2FsZWQgdG8gYmUgMjAweDIwMAorICAgIC8vIHBp
eGVscywgd2hpY2ggbWVhbnMgbm9uZSBzaG91bGQgYmUgb2NjbHVkZWQuCisgICAgbGF5ZXItPnNl
dENvbnRlbnRzU2NhbGUoMC41KTsKKyAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoNjAwLCA2
MDApKTsKKworICAgIG9jY2x1ZGVkID0gSW50UmVjdCgyMDAsIDIwMCwgMzAwLCAxMDApOworICAg
IGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXItPmJv
dW5kcygpKSk7CisgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2
MDApKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNjAwLCA2MDAp
LCBvY2NsdWRlZCk7CisgICAgLy8gVGhlIGNvbnRlbnQgaXMgaGFsZiB0aGUgc2l6ZSBvZiB0aGUg
bGF5ZXIgKHNvIHRoZSBudW1iZXIgb2YgdGlsZXMgaXMgZmV3ZXIpLgorICAgIC8vIEluIHRoaXMg
Y2FzZSwgdGhlIGNvbnRlbnQgaXMgMzAweDMwMCwgYW5kIHNpbmNlIHRoZSB0aWxlIHNpemUgaXMg
MTAwLCB0aGUKKyAgICAvLyBudW1iZXIgb2YgdGlsZXMgM3gzLgorICAgIEVYUEVDVF9FUSg5LCBs
YXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKKwor
ICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVSZWN0Q291
bnQoKTsKKworICAgIC8vIFRoaXMgbWFrZXMgc3VyZSB0aGUgcGFpbnRpbmcgd29ya3Mgd2hlbiB0
aGUgY29udGVudCBzcGFjZSBpcyBzY2FsZWQgdG8KKyAgICAvLyBhIGRpZmZlcmVudCBsYXllciBz
cGFjZS4gSW4gdGhpcyBjYXNlIHRoZSBvY2NsdWRlZCByZWdpb24gY2F0Y2hlcyB0aGUKKyAgICAv
LyBibG93biB1cCB0aWxlcy4KKyAgICBvY2NsdWRlZCA9IEludFJlY3QoMjAwLCAyMDAsIDMwMCwg
MjAwKTsKKyAgICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KEludFBvaW50KCks
IGxheWVyLT5ib3VuZHMoKSkpOworICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAs
IDAsIDYwMCwgNjAwKSk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAs
IDYwMCwgNjAwKSwgb2NjbHVkZWQpOworICAgIEVYUEVDVF9FUSg5LTEsIGxheWVyLT5mYWtlTGF5
ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOworCisgICAgbGF5ZXItPmZh
a2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyUHJlcGFyZVJlY3RDb3VudCgpOworCisgICAg
Ly8gVGhpcyBtYWtlcyBzdXJlIGNvbnRlbnQgc2NhbGluZyBhbmQgdHJhbnNmb3JtcyB3b3JrIHRv
Z2V0aGVyLgorICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHNjcmVlblRyYW5zZm9ybTsKKyAgICBz
Y3JlZW5UcmFuc2Zvcm0uc2NhbGUoMC41KTsKKyAgICBsYXllci0+c2V0U2NyZWVuU3BhY2VUcmFu
c2Zvcm0oc2NyZWVuVHJhbnNmb3JtKTsKKworICAgIG9jY2x1ZGVkID0gSW50UmVjdCgxMDAsIDEw
MCwgMTUwLCAxMDApOworICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoSW50
UG9pbnQoKSwgbGF5ZXItPmJvdW5kcygpKSk7CisgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KElu
dFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJl
Y3QoMCwgMCwgNjAwLCA2MDApLCBvY2NsdWRlZCk7CisgICAgRVhQRUNUX0VRKDktMSwgbGF5ZXIt
PmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>