<?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>76740</bug_id>
          
          <creation_ts>2012-01-20 14:31:40 -0800</creation_ts>
          <short_desc>[Chromium] Avoid unnecessary full tile updates without breaking atomicity of commits.</short_desc>
          <delta_ts>2012-02-08 21:26:19 -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>WebCore Misc.</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>72672</dependson>
          <blocked>77376</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="David Reveman">reveman</reporter>
          <assigned_to name="David Reveman">reveman</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>danakj</cc>
    
    <cc>jamesr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>539793</commentid>
    <comment_count>0</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-01-20 14:31:40 -0800</bug_when>
    <thetext>https://bugs.webkit.org/show_bug.cgi?id=72672 makes commits atomic by performing full tile updates into textures not currently used by compositor thread. The final batch of texture uploads can be performed without this requirement and such an optimization is very useful as a significant portion of commits are small enough to fit in one texture upload batch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541034</commentid>
    <comment_count>1</comment_count>
      <attachid>123674</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-01-23 17:45:24 -0800</bug_when>
    <thetext>Created attachment 123674
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545179</commentid>
    <comment_count>2</comment_count>
      <attachid>123674</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-30 09:59:34 -0800</bug_when>
    <thetext>Comment on attachment 123674
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:56
&gt; +    explicit UpdatableTile(PassOwnPtr&lt;LayerTextureUpdater::Texture&gt; texture) : m_partialUpdate(0), m_texture(texture) { }

is 0 right for a bool?

&gt; Source/WebKit/chromium/tests/CCLayerTreeHostTest.cpp:1301
&gt; +        // Number of textures used for draw should always be one.

nit: two.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545188</commentid>
    <comment_count>3</comment_count>
      <attachid>124567</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-01-30 10:16:58 -0800</bug_when>
    <thetext>Created attachment 124567
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545189</commentid>
    <comment_count>4</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-01-30 10:20:03 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 123674 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=123674&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:56
&gt; &gt; +    explicit UpdatableTile(PassOwnPtr&lt;LayerTextureUpdater::Texture&gt; texture) : m_partialUpdate(0), m_texture(texture) { }
&gt; 
&gt; is 0 right for a bool?

fixed.

&gt; 
&gt; &gt; Source/WebKit/chromium/tests/CCLayerTreeHostTest.cpp:1301
&gt; &gt; +        // Number of textures used for draw should always be one.
&gt; 
&gt; nit: two.

fixed.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545404</commentid>
    <comment_count>5</comment_count>
      <attachid>123674</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-30 14:16:19 -0800</bug_when>
    <thetext>Comment on attachment 123674
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCTextureUpdater.cpp:87
&gt;  

So we don&apos;t forget: If the number of updates including partial updates in this batch exceeds the regular maximum number per-batch, early out to push all the partial updates off to a next batch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545509</commentid>
    <comment_count>6</comment_count>
      <attachid>124567</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-01-30 15:45:46 -0800</bug_when>
    <thetext>Comment on attachment 124567
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:70
&gt;      IntRect m_updateRect;
&gt; +    bool m_partialUpdate;

It seems like this boolean is redundant to m_updateRect.  m_updateRect is the not the full tile rect iff it&apos;s a partial update, yeah?

&gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:400
&gt; +            // Partial update doesn&apos;t apply to new textures.
&gt; +            if (!tile-&gt;managedTexture()-&gt;isValid(m_tiler-&gt;tileSize(), m_textureFormat)) {
&gt; +                partialUpdate = false;
&gt; +                newTexture = false;
&gt; +            }

nit: Can you call newTexture something clearer? It&apos;s kind of non-intuitive to read this code and see the new texture case set newTexture to false.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545510</commentid>
    <comment_count>7</comment_count>
      <attachid>124567</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-30 15:48:07 -0800</bug_when>
    <thetext>Comment on attachment 124567
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:70
&gt;&gt; +    bool m_partialUpdate;
&gt; 
&gt; It seems like this boolean is redundant to m_updateRect.  m_updateRect is the not the full tile rect iff it&apos;s a partial update, yeah?

maybe m_partialUpdate is a bad name? the LTH can apply restrictions to allow a limited number of partial updates to actually be done without double buffering. maybe m_doubleBufferedUpdate or something?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545571</commentid>
    <comment_count>8</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-01-30 16:25:16 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 124567 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=124567&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:70
&gt; &gt;      IntRect m_updateRect;
&gt; &gt; +    bool m_partialUpdate;
&gt; 
&gt; It seems like this boolean is redundant to m_updateRect.  m_updateRect is the not the full tile rect iff it&apos;s a partial update, yeah?

No, it&apos;s only a partial update if requestPartialTextureUpdate() returned true. I think Dana is right, this variable needs a better name.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:400
&gt; &gt; +            // Partial update doesn&apos;t apply to new textures.
&gt; &gt; +            if (!tile-&gt;managedTexture()-&gt;isValid(m_tiler-&gt;tileSize(), m_textureFormat)) {
&gt; &gt; +                partialUpdate = false;
&gt; &gt; +                newTexture = false;
&gt; &gt; +            }
&gt; 
&gt; nit: Can you call newTexture something clearer? It&apos;s kind of non-intuitive to read this code and see the new texture case set newTexture to false.

Will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545578</commentid>
    <comment_count>9</comment_count>
      <attachid>124625</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-01-30 16:30:51 -0800</bug_when>
    <thetext>Created attachment 124625
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545581</commentid>
    <comment_count>10</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-01-30 16:34:22 -0800</bug_when>
    <thetext>Latest patch makes sure partial updates are done separately. I&apos;ll fix the m_partialUpdate variable name tomorrow. In general this patch would be much cleaner if https://bugs.webkit.org/show_bug.cgi?id=72752 landed prior to it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545597</commentid>
    <comment_count>11</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-30 16:40:52 -0800</bug_when>
    <thetext>I don&apos;t think landing https://bugs.webkit.org/show_bug.cgi?id=72752 first is a good idea. https://bugs.webkit.org/show_bug.cgi?id=72752 will regress performance on the platforms where we need incremental uploads the most.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545648</commentid>
    <comment_count>12</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-30 17:37:52 -0800</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=124625&amp;action=review

&gt; Source/WebCore/platform/graphics/chromium/cc/CCTextureUpdater.cpp:89
&gt; +    if (m_partialEntries.size() &amp;&amp; index != m_entryIndex)

What about letting partial updates go on if they fit inside count? So 5-1-4 could become 5-5 at least?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547193</commentid>
    <comment_count>13</comment_count>
      <attachid>124969</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-02-01 10:39:28 -0800</bug_when>
    <thetext>Created attachment 124969
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547196</commentid>
    <comment_count>14</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-02-01 10:45:30 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=124625&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCTextureUpdater.cpp:89
&gt; &gt; +    if (m_partialEntries.size() &amp;&amp; index != m_entryIndex)
&gt; 
&gt; What about letting partial updates go on if they fit inside count? So 5-1-4 could become 5-5 at least?

Fixed in latest patch. Also added a unit test to verify this behavior.

I kept the m_partialUpdate variable name and instead restructured the code and added some comments to TiledLayerChromium.cpp which I hope makes things clear.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547199</commentid>
    <comment_count>15</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-02-01 10:46:27 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; I don&apos;t think landing https://bugs.webkit.org/show_bug.cgi?id=72752 first is a good idea. https://bugs.webkit.org/show_bug.cgi?id=72752 will regress performance on the platforms where we need incremental uploads the most.

That&apos;s fine. I&apos;ll make sure to clean this up after 72752 lands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551525</commentid>
    <comment_count>16</comment_count>
      <attachid>125950</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-02-07 16:13:25 -0800</bug_when>
    <thetext>Created attachment 125950
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551625</commentid>
    <comment_count>17</comment_count>
      <attachid>125969</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-02-07 17:53:21 -0800</bug_when>
    <thetext>Created attachment 125969
Patch

Remove &apos;using namespace std&apos; from header and use std::numeric_limits::max() instead of ~0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552393</commentid>
    <comment_count>18</comment_count>
      <attachid>125969</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-08 12:26:08 -0800</bug_when>
    <thetext>Comment on attachment 125969
Patch

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

This looks good, but I&apos;d really like to see some of the stuff in TiledLayerChromium::prepareToUpdateTiles() split out. Lots of nits but content looks good.

&gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:56
&gt; +    explicit UpdatableTile(PassOwnPtr&lt;LayerTextureUpdater::Texture&gt; texture) : m_partialUpdate(false), m_texture(texture) { }

one statement per line. expand this initialization out.

&gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:380
&gt; +            bool partialUpdate = false;

this is a lot of lines of code to add to an already large and hard-to-follow function. can you break any of this out into a helper?

&gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:384
&gt; +                // For tiles with valid textures, new textures need to be

the excessive line wrapping here makes this comment hard for me to read

&gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:400
&gt; +                ASSERT(layerTreeHost());

this ASSERT() isn&apos;t super valuable - we can never enter this function with a null LTH

&gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:405
&gt; +                // TODO(reveman): Decide if partial update should be allowed

webkit style is FIXME, not TODO(name)

&gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:417
&gt; +                ASSERT(layerTreeHost());

ASSERT() not helpful

&gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:418
&gt; +                ASSERT(tile-&gt;managedTexture()-&gt;isValid(m_tiler-&gt;tileSize(), m_textureFormat));

this is just ASSERT()ing on logic 20 lines up. maybe if this was a helper function it&apos;d be easier to structure the code so that things like this are more obvious?

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

one statement per line, so expand initialization

&gt; Source/WebKit/chromium/tests/TiledLayerChromiumTest.cpp:72
&gt; +    FakeLayerTextureUpdater() : m_prepareCount(0), m_updateCount(0) { }

expand</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552487</commentid>
    <comment_count>19</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-02-08 14:19:46 -0800</bug_when>
    <thetext>Thanks for looking at this.

(In reply to comment #18)
&gt; (From update of attachment 125969 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=125969&amp;action=review
&gt; 
&gt; This looks good, but I&apos;d really like to see some of the stuff in TiledLayerChromium::prepareToUpdateTiles() split out. Lots of nits but content looks good.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:56
&gt; &gt; +    explicit UpdatableTile(PassOwnPtr&lt;LayerTextureUpdater::Texture&gt; texture) : m_partialUpdate(false), m_texture(texture) { }
&gt; 
&gt; one statement per line. expand this initialization out.

fixed.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:380
&gt; &gt; +            bool partialUpdate = false;
&gt; 
&gt; this is a lot of lines of code to add to an already large and hard-to-follow function. can you break any of this out into a helper?

let me know what you think about the updated patch.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:384
&gt; &gt; +                // For tiles with valid textures, new textures need to be
&gt; 
&gt; the excessive line wrapping here makes this comment hard for me to read

I know there&apos;s no 80 column max in the webkit style but I can&apos;t make myself do that :) The new patch shouldn&apos;t have this problem.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:400
&gt; &gt; +                ASSERT(layerTreeHost());
&gt; 
&gt; this ASSERT() isn&apos;t super valuable - we can never enter this function with a null LTH

TiledLayerChromiumTest.pushDirtyTiles causes this to be entered with a null LTH somehow. Maybe just improper use by the unit test but I left the layerTreeHost() checks in the patch for now..

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:405
&gt; &gt; +                // TODO(reveman): Decide if partial update should be allowed
&gt; 
&gt; webkit style is FIXME, not TODO(name)

fixed.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:417
&gt; &gt; +                ASSERT(layerTreeHost());
&gt; 
&gt; ASSERT() not helpful

removed from latest patch.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:418
&gt; &gt; +                ASSERT(tile-&gt;managedTexture()-&gt;isValid(m_tiler-&gt;tileSize(), m_textureFormat));
&gt; 
&gt; this is just ASSERT()ing on logic 20 lines up. maybe if this was a helper function it&apos;d be easier to structure the code so that things like this are more obvious?

removed from latest patch.

&gt; 
&gt; &gt; Source/WebKit/chromium/tests/TiledLayerChromiumTest.cpp:63
&gt; &gt; +        Texture(FakeLayerTextureUpdater* layer, PassOwnPtr&lt;ManagedTexture&gt; texture) : LayerTextureUpdater::Texture(texture), m_layer(layer) { }
&gt; 
&gt; one statement per line, so expand initialization

fixed.

&gt; 
&gt; &gt; Source/WebKit/chromium/tests/TiledLayerChromiumTest.cpp:72
&gt; &gt; +    FakeLayerTextureUpdater() : m_prepareCount(0), m_updateCount(0) { }
&gt; 
&gt; expand

fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552488</commentid>
    <comment_count>20</comment_count>
      <attachid>126152</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-02-08 14:20:04 -0800</bug_when>
    <thetext>Created attachment 126152
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552496</commentid>
    <comment_count>21</comment_count>
      <attachid>126152</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-02-08 14:30:05 -0800</bug_when>
    <thetext>Comment on attachment 126152
Patch

I like :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552558</commentid>
    <comment_count>22</comment_count>
      <attachid>126152</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-08 15:38:59 -0800</bug_when>
    <thetext>Comment on attachment 126152
Patch

OK cool, the small functions make that bit a lot easier to read IMO.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552829</commentid>
    <comment_count>23</comment_count>
      <attachid>126152</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-08 21:26:13 -0800</bug_when>
    <thetext>Comment on attachment 126152
Patch

Clearing flags on attachment: 126152

Committed r107177: &lt;http://trac.webkit.org/changeset/107177&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552830</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-08 21:26:19 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123674</attachid>
            <date>2012-01-23 17:45:24 -0800</date>
            <delta_ts>2012-01-30 14:16:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76740-20120123204523.patch</filename>
            <type>text/plain</type>
            <size>26279</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NjIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTFiZGVjM2JkNzAwYmMz
YmVlODI4ZmFiOWM2YmY2YmNmMDJhN2YwYi4uNmVlYWQ4MjcxMjkwMzdmNWI0NzkwY2YxZmIxYjBj
MDQzNGU3YmQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEyLTAxLTIzICBEYXZp
ZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBB
dm9pZCB1bm5lY2Vzc2FyeSBmdWxsIHRpbGUgdXBkYXRlcyB3aXRob3V0IGJyZWFraW5nIGF0b21p
Y2l0eSBvZiBjb21taXRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzY3NDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBbGxvdyB0aGUgZmluYWwgYmF0Y2ggb2YgdGV4dHVyZSB1cGxvYWRzIHRvIGJlIHBl
cmZvcm1lZCB3aXRob3V0CisgICAgICAgIGFsbG9jYXRpbmcgbmV3IHRleHR1cmVzIGFuZCByZS1w
YWludGluZyBjb21wbGV0ZSB0aWxlcy4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIHRlc3RlZCBi
eSB0aGUgZm9sbG93aW5nIHVuaXQgdGVzdDoKKyAgICAgICAgLSBDQ0xheWVyVHJlZUhvc3RUZXN0
QXRvbWljQ29tbWl0V2l0aFBhcnRpYWxVcGRhdGUucnVuTXVsdGlUaHJlYWQKKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpVcGRhdGFibGVUaWxlOjpVcGRhdGFibGVUaWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpDQ0xheWVyVHJlZUhv
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Ojppbml0aWFsaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6cmVxdWVzdFBhcnRpYWxUZXh0dXJlVXBkYXRlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU2V0dGluZ3M6OkNDU2V0dGluZ3MpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5Lmg6CisgICAgICAg
IChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5OjptYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlcjo6YXBwZW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6OmFwcGVuZFBhcnRpYWwpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlcjo6aGFzTW9yZVVwZGF0ZXMpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlcjo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkND
VGV4dHVyZVVwZGF0ZXI6OmNsZWFyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVh
ZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDVGhyZWFkUHJveHk6Om1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oOgorCiAyMDEy
LTAxLTIzICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFdlYiBJbnNwZWN0b3I6IEluZGV4ZWREQk1vZGVsIHNob3VsZCBrZWVwIHRyYWNrIG9mIHJlcXVl
c3RzIHNlbnQgdG8gdGhlIGJhY2tlbmQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGFk
Y2RlODk2MDZkOTU5ZmE4YjA1ZmUyZWY2MWVmMTBhNmU2M2I4YTcuLmQ4YzFkY2E0NWI0NTlkNWE1
ZDk2NDM1NjQ4YmY0MTliOTNmNTU1NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjYgQEAKKzIwMTItMDEtMjMgIERhdmlkIFJldmVtYW4gIDxyZXZlbWFuQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIEF2b2lkIHVubmVjZXNzYXJ5IGZ1bGwgdGlsZSB1
cGRhdGVzIHdpdGhvdXQgYnJlYWtpbmcgYXRvbWljaXR5IG9mIGNvbW1pdHMuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Njc0MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBDQ0xheWVyVHJlZUhvc3RU
ZXN0QXRvbWljQ29tbWl0V2l0aFBhcnRpYWxVcGRhdGUgdGVzdCB0aGF0IHZlcmlmaWVzCisgICAg
ICAgIGF0b21pY2l0eSBvZiBjb21taXRzIHdpdGggcGFydGlhbCB1cGRhdGVzLgorCisgICAgICAg
ICogdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHA6CisgICAgICAgIChXVEY6OkNDTGF5ZXJU
cmVlSG9zdFRlc3RBdG9taWNDb21taXQ6OkNDTGF5ZXJUcmVlSG9zdFRlc3RBdG9taWNDb21taXQp
OgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0QXRvbWljQ29tbWl0OjpiZWdpblRl
c3QpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0QXRvbWljQ29tbWl0Ojpjb21t
aXRDb21wbGV0ZU9uQ0NUaHJlYWQpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0
QXRvbWljQ29tbWl0OjpsYXlvdXQpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0
QXRvbWljQ29tbWl0V2l0aFBhcnRpYWxVcGRhdGU6OkNDTGF5ZXJUcmVlSG9zdFRlc3RBdG9taWND
b21taXRXaXRoUGFydGlhbFVwZGF0ZSk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRl
c3RBdG9taWNDb21taXRXaXRoUGFydGlhbFVwZGF0ZTo6YmVnaW5UZXN0KToKKyAgICAgICAgKFdU
Rjo6Q0NMYXllclRyZWVIb3N0VGVzdEF0b21pY0NvbW1pdFdpdGhQYXJ0aWFsVXBkYXRlOjpjb21t
aXRDb21wbGV0ZU9uQ0NUaHJlYWQpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0
QXRvbWljQ29tbWl0V2l0aFBhcnRpYWxVcGRhdGU6OmRyYXdMYXllcnNPbkNDVGhyZWFkKToKKyAg
ICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdEF0b21pY0NvbW1pdFdpdGhQYXJ0aWFsVXBk
YXRlOjpsYXlvdXQpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0QXRvbWljQ29t
bWl0V2l0aFBhcnRpYWxVcGRhdGU6OmFmdGVyVGVzdCk6CisgICAgICAgIChXVEY6OlRFU1RfRik6
CisKIDIwMTItMDEtMjAgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgogCiAg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IFBhZ2VBZ2VudC5vcGVuKCkgZG9zZW4ndCBiZWxvbmcgdG8g
dGhlIHByb3RvY29sLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggOTJkMTAy
ZTMyMmEyMTgzNTVlMTU2ODFlNTAwNWFkMzJhMmUyYjZlNS4uZWFmNmE4NDg5NGM0NzdjYmIzOGE5
MzQzOTJiNTA4YjliOGUzNGM2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCkBA
IC01Myw3ICs1Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFVwZGF0YWJsZVRpbGUg
OiBwdWJsaWMgQ0NMYXllclRpbGluZ0RhdGE6OlRpbGUgewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFVwZGF0YWJsZVRpbGUpOwogcHVibGljOgotICAgIGV4cGxpY2l0IFVwZGF0YWJsZVRpbGUo
UGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlPiB0ZXh0dXJlKSA6IG1fdGV4
dHVyZSh0ZXh0dXJlKSB7IH0KKyAgICBleHBsaWNpdCBVcGRhdGFibGVUaWxlKFBhc3NPd25QdHI8
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gdGV4dHVyZSkgOiBtX3BhcnRpYWxVcGRhdGUo
MCksIG1fdGV4dHVyZSh0ZXh0dXJlKSB7IH0KIAogICAgIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7IH0KICAgICBNYW5hZ2Vk
VGV4dHVyZSogbWFuYWdlZFRleHR1cmUoKSB7IHJldHVybiBtX3RleHR1cmUtPnRleHR1cmUoKTsg
fQpAQCAtNjcsNiArNjcsNyBAQCBwdWJsaWM6CiAKICAgICBJbnRSZWN0IG1fZGlydHlSZWN0Owog
ICAgIEludFJlY3QgbV91cGRhdGVSZWN0OworICAgIGJvb2wgbV9wYXJ0aWFsVXBkYXRlOwogcHJp
dmF0ZToKICAgICBPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gbV90ZXh0dXJl
OwogfTsKQEAgLTIzNiw3ICsyMzcsMTAgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0
ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmUKICAgICAg
ICAgICAgIGlmIChwYWludE9mZnNldC55KCkgKyBkZXN0UmVjdC5oZWlnaHQoKSA+IG1fcGFpbnRS
ZWN0LmhlaWdodCgpKQogICAgICAgICAgICAgICAgIENSQVNIKCk7CiAKLSAgICAgICAgICAgIHVw
ZGF0ZXIuYXBwZW5kKHRpbGUtPnRleHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworICAg
ICAgICAgICAgaWYgKHRpbGUtPm1fcGFydGlhbFVwZGF0ZSkKKyAgICAgICAgICAgICAgICB1cGRh
dGVyLmFwcGVuZFBhcnRpYWwodGlsZS0+dGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdXBkYXRlci5hcHBlbmQodGlsZS0+
dGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAg
LTM2Nyw2ICszNzEsNyBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRl
VGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50CiAgICAgZm9yIChDQ0xheWVy
VGlsaW5nRGF0YTo6VGlsZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1fdGlsZXItPnRpbGVz
KCkuYmVnaW4oKTsgaXRlciAhPSBtX3RpbGVyLT50aWxlcygpLmVuZCgpOyArK2l0ZXIpIHsKICAg
ICAgICAgVXBkYXRhYmxlVGlsZSogdGlsZSA9IHN0YXRpY19jYXN0PFVwZGF0YWJsZVRpbGUqPihp
dGVyLT5zZWNvbmQuZ2V0KCkpOwogICAgICAgICB0aWxlLT5tX3VwZGF0ZVJlY3QgPSBJbnRSZWN0
KCk7CisgICAgICAgIHRpbGUtPm1fcGFydGlhbFVwZGF0ZSA9IGZhbHNlOwogICAgIH0KIAogICAg
IC8vIENyZWF0ZSB0aWxlcyBhcyBuZWVkZWQsIGV4cGFuZGluZyBhIGRpcnR5IHJlY3QgdG8gY29u
dGFpbiBhbGwKQEAgLTM4MCwxMCArMzg1LDQzIEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpw
cmVwYXJlVG9VcGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQKICAg
ICAgICAgICAgIGlmICghdGlsZSkKICAgICAgICAgICAgICAgICB0aWxlID0gY3JlYXRlVGlsZShp
LCBqKTsKIAotICAgICAgICAgICAgLy8gRG8gcG9zdCBjb21taXQgZGVsZXRpb24gb2YgY3VycmVu
dCB0ZXh0dXJlIHdoZW4gcGFydGlhbCB0ZXh0dXJlCi0gICAgICAgICAgICAvLyB1cGRhdGVzIGFy
ZSBub3QgdXNlZC4KLSAgICAgICAgICAgIGlmICh0aWxlLT5pc0RpcnR5KCkgJiYgbGF5ZXJUcmVl
SG9zdCgpICYmICFsYXllclRyZWVIb3N0KCktPnNldHRpbmdzKCkucGFydGlhbFRleHR1cmVVcGRh
dGVzKQorICAgICAgICAgICAgYm9vbCBuZXdUZXh0dXJlID0gdHJ1ZTsKKyAgICAgICAgICAgIGJv
b2wgcGFydGlhbFVwZGF0ZSA9IHRydWU7CisKKyAgICAgICAgICAgIGlmICghbGF5ZXJUcmVlSG9z
dCgpKSB7CisgICAgICAgICAgICAgICAgcGFydGlhbFVwZGF0ZSA9IGZhbHNlOworICAgICAgICAg
ICAgICAgIG5ld1RleHR1cmUgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
Ly8gUGFydGlhbCB1cGRhdGUgZG9lc24ndCBhcHBseSB0byBuZXcgdGV4dHVyZXMuCisgICAgICAg
ICAgICBpZiAoIXRpbGUtPm1hbmFnZWRUZXh0dXJlKCktPmlzVmFsaWQobV90aWxlci0+dGlsZVNp
emUoKSwgbV90ZXh0dXJlRm9ybWF0KSkgeworICAgICAgICAgICAgICAgIHBhcnRpYWxVcGRhdGUg
PSBmYWxzZTsKKyAgICAgICAgICAgICAgICBuZXdUZXh0dXJlID0gZmFsc2U7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIC8vIEF2b2lkIHBhcnRpYWwgdXBkYXRlIHdoZW4gdGlsZSBpcyBj
b21wbGV0ZWx5IGRhbWFnZWQuCisgICAgICAgICAgICBpZiAodGlsZS0+bV9kaXJ0eVJlY3QuY29u
dGFpbnMobV90aWxlci0+dGlsZVJlY3QodGlsZSkpKQorICAgICAgICAgICAgICAgIHBhcnRpYWxV
cGRhdGUgPSBmYWxzZTsKKworICAgICAgICAgICAgaWYgKHBhcnRpYWxVcGRhdGUpIHsKKyAgICAg
ICAgICAgICAgICBBU1NFUlQobGF5ZXJUcmVlSG9zdCgpKTsKKworICAgICAgICAgICAgICAgIC8v
IFRyeSB0byByZXF1ZXN0IHBhcnRpYWwgdGV4dHVyZSB1cGRhdGUuIFRoaXMgd2lsbCBmYWlsCisg
ICAgICAgICAgICAgICAgLy8gYW5kIGZvcmNlIHVzIHRvIHVzZSBhIG5ldyB0ZXh0dXJlIHdoZW4g
d2UgcmVhY2ggdGhlCisgICAgICAgICAgICAgICAgLy8gY3VycmVudCBtYXhpbXVtIHBhcnRpYWwg
dXBkYXRlIGNvdW50LgorICAgICAgICAgICAgICAgIGlmIChsYXllclRyZWVIb3N0KCktPnJlcXVl
c3RQYXJ0aWFsVGV4dHVyZVVwZGF0ZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIHRpbGUtPm1f
cGFydGlhbFVwZGF0ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIG5ld1RleHR1cmUgPSBm
YWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8v
IERvIHBvc3QgY29tbWl0IGRlbGV0aW9uIG9mIGN1cnJlbnQgdGV4dHVyZSB3aGVuIHBhcnRpYWwK
KyAgICAgICAgICAgIC8vIHRleHR1cmUgdXBkYXRlIGlzIG5vdCBwb3NzaWJsZS4KKyAgICAgICAg
ICAgIGlmIChuZXdUZXh0dXJlKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKGxheWVyVHJlZUhv
c3QoKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKHRpbGUtPm1hbmFnZWRUZXh0dXJlKCktPmlz
VmFsaWQobV90aWxlci0+dGlsZVNpemUoKSwgbV90ZXh0dXJlRm9ybWF0KSk7CiAgICAgICAgICAg
ICAgICAgbGF5ZXJUcmVlSG9zdCgpLT5kZWxldGVUZXh0dXJlQWZ0ZXJDb21taXQodGlsZS0+bWFu
YWdlZFRleHR1cmUoKS0+c3RlYWwoKSk7CisgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlm
ICghdGlsZS0+bWFuYWdlZFRleHR1cmUoKS0+aXNWYWxpZChtX3RpbGVyLT50aWxlU2l6ZSgpLCBt
X3RleHR1cmVGb3JtYXQpKQogICAgICAgICAgICAgICAgIHRpbGUtPm1fZGlydHlSZWN0ID0gbV90
aWxlci0+dGlsZVJlY3QodGlsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRl
eCBhMmZiODIyYzU2YmRiMzVmY2NkM2I5OWE0ZDE0ZGVlYThkOTEzMjhiLi43MmNiYTY5NmE0NTk5
NTU1OGI5YWZiMDc3YTRhYzdjY2VlNDk1YjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dC5jcHAKQEAgLTY5LDYgKzY5LDcgQEAgQ0NMYXllclRyZWVIb3N0OjpDQ0xheWVyVHJlZUhvc3Qo
Q0NMYXllclRyZWVIb3N0Q2xpZW50KiBjbGllbnQsIGNvbnN0IENDU2V0dGluZ3MKICAgICAsIG1f
bWluUGFnZVNjYWxlKDEpCiAgICAgLCBtX21heFBhZ2VTY2FsZSgxKQogICAgICwgbV90cmlnZ2Vy
SWRsZVBhaW50cyh0cnVlKQorICAgICwgbV9wYXJ0aWFsVGV4dHVyZVVwZGF0ZVJlcXVlc3RzKDAp
CiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgpKTsKICAgICBudW1MYXllclRy
ZWVJbnN0YW5jZXMrKzsKQEAgLTk2LDcgKzk3LDcgQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3Q6Omlu
aXRpYWxpemUoKQogICAgIG1fc2V0dGluZ3MuYWNjZWxlcmF0ZVBhaW50aW5nID0gbV9wcm94eS0+
bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLnVzaW5nQWNjZWxlcmF0ZWRQYWludGluZzsKIAog
ICAgIC8vIFVwZGF0ZSBtX3NldHRpbmdzIGJhc2VkIG9uIHBhcnRpYWwgdXBkYXRlIGNhcGFiaWxp
dHkuCi0gICAgbV9zZXR0aW5ncy5wYXJ0aWFsVGV4dHVyZVVwZGF0ZXMgPSBtX3NldHRpbmdzLnBh
cnRpYWxUZXh0dXJlVXBkYXRlcyAmJiBtX3Byb3h5LT5wYXJ0aWFsVGV4dHVyZVVwZGF0ZUNhcGFi
aWxpdHkoKTsKKyAgICBtX3NldHRpbmdzLm1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcyA9IG1pbiht
X3NldHRpbmdzLm1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcywgbV9wcm94eS0+bWF4UGFydGlhbFRl
eHR1cmVVcGRhdGVzKCkpOwogCiAgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyID0gVGV4dHVy
ZU1hbmFnZXI6OmNyZWF0ZShUZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXModmlld3BvcnRT
aXplKCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVGV4dHVyZU1hbmFnZXI6OnJlY2xhaW1MaW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSgpKSwK
QEAgLTM4Myw2ICszODQsOSBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKExh
eWVyQ2hyb21pdW0qIHJvb3RMYXllcikKICAgICAgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpj
YWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocm9vdExheWVyLCByb290TGF5ZXIs
IGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgbV91cGRhdGVMaXN0LCByb290UmVuZGVy
U3VyZmFjZS0+bGF5ZXJMaXN0KCksIGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0
dXJlU2l6ZSk7CiAgICAgfQogCisgICAgLy8gUmVzZXQgcGFydGlhbCB0ZXh0dXJlIHVwZGF0ZSBy
ZXF1ZXN0cy4KKyAgICBtX3BhcnRpYWxUZXh0dXJlVXBkYXRlUmVxdWVzdHMgPSAwOworCiAgICAg
cGFpbnRMYXllckNvbnRlbnRzKG1fdXBkYXRlTGlzdCwgUGFpbnRWaXNpYmxlKTsKICAgICBpZiAo
IW1fdHJpZ2dlcklkbGVQYWludHMpCiAgICAgICAgIHJldHVybjsKQEAgLTUxOCw2ICs1MjIsMTUg
QEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnN0b3BSYXRlTGltaXRlcihHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dCkKICAgICB9CiB9CiAKK2Jvb2wgQ0NMYXllclRyZWVIb3N0OjpyZXF1ZXN0UGFy
dGlhbFRleHR1cmVVcGRhdGUoKQoreworICAgIGlmIChtX3BhcnRpYWxUZXh0dXJlVXBkYXRlUmVx
dWVzdHMgPj0gbV9zZXR0aW5ncy5tYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIG1fcGFydGlhbFRleHR1cmVVcGRhdGVSZXF1ZXN0cysrOworICAg
IHJldHVybiB0cnVlOworfQorCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6ZGVsZXRlVGV4dHVyZUFm
dGVyQ29tbWl0KFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpCiB7CiAgICAgbV9k
ZWxldGVUZXh0dXJlQWZ0ZXJDb21taXRMaXN0LmFwcGVuZCh0ZXh0dXJlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0LmgKaW5kZXggZDkyYWRjMTY2YWU2N2UzYWYwNTQyOTUxMGM5N2QzZmUzNjgz
NTA5Zi4uYmZhYjkzNGIzZmIwYTc3ODE1MGIxNjZmNzFhZGJjYWY4NmM1Y2VlOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTc3LDcgKzc3LDcgQEAgc3RydWN0IENDU2V0dGluZ3Mg
ewogICAgICAgICAgICAgLCByZWZyZXNoUmF0ZSgwKQogICAgICAgICAgICAgLCBwZXJUaWxlUGFp
bnRpbmcoZmFsc2UpCiAgICAgICAgICAgICAsIHBhcnRpYWxTd2FwRW5hYmxlZChmYWxzZSkKLSAg
ICAgICAgICAgICwgcGFydGlhbFRleHR1cmVVcGRhdGVzKHRydWUpIHsgfQorICAgICAgICAgICAg
LCBtYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMoMCkgeyB9CiAKICAgICBib29sIGFjY2VsZXJhdGVQ
YWludGluZzsKICAgICBib29sIGNvbXBvc2l0ZU9mZnNjcmVlbjsKQEAgLTg2LDcgKzg2LDcgQEAg
c3RydWN0IENDU2V0dGluZ3MgewogICAgIGRvdWJsZSByZWZyZXNoUmF0ZTsKICAgICBib29sIHBl
clRpbGVQYWludGluZzsKICAgICBib29sIHBhcnRpYWxTd2FwRW5hYmxlZDsKLSAgICBib29sIHBh
cnRpYWxUZXh0dXJlVXBkYXRlczsKKyAgICBzaXplX3QgbWF4UGFydGlhbFRleHR1cmVVcGRhdGVz
OwogfTsKIAogLy8gUHJvdmlkZXMgaW5mb3JtYXRpb24gb24gYW4gSW1wbCdzIHJlbmRlcmluZyBj
YXBhYmlsaXRpZXMgYmFjayB0byB0aGUgQ0NMYXllclRyZWVIb3N0CkBAIC0xOTQsNiArMTk0LDcg
QEAgcHVibGljOgogICAgIHZvaWQgc3RhcnRSYXRlTGltaXRlcihHcmFwaGljc0NvbnRleHQzRCop
OwogICAgIHZvaWQgc3RvcFJhdGVMaW1pdGVyKEdyYXBoaWNzQ29udGV4dDNEKik7CiAKKyAgICBi
b29sIHJlcXVlc3RQYXJ0aWFsVGV4dHVyZVVwZGF0ZSgpOwogICAgIHZvaWQgZGVsZXRlVGV4dHVy
ZUFmdGVyQ29tbWl0KFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+KTsKIAogcHJvdGVjdGVkOgpA
QCAtMjQwLDYgKzI0MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3RyaWdnZXJJZGxlUGFpbnRz
OwogCiAgICAgVGV4dHVyZUxpc3QgbV9kZWxldGVUZXh0dXJlQWZ0ZXJDb21taXRMaXN0OworICAg
IHNpemVfdCBtX3BhcnRpYWxUZXh0dXJlVXBkYXRlUmVxdWVzdHM7CiB9OwogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5
LmgKaW5kZXggOTM3YzE1NGZmNjliYTg1M2JiZmM5MzQ1NmQ3NzY2NzEwYzcwYTIyNC4uNjhhYmM2
ZDc3NDM4NWYxN2JlNWU2Njk0ZWUzNWIxZGNkYTIzZGYzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaApAQCAtNzks
OSArNzksOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0KCkgPSAwOyAvLyBNdXN0
IGJlIGNhbGxlZCBiZWZvcmUgdXNpbmcgdGhlIHByb3h5LgogICAgIHZpcnR1YWwgdm9pZCBzdG9w
KCkgPSAwOyAvLyBNdXN0IGJlIGNhbGxlZCBiZWZvcmUgZGVsZXRpbmcgdGhlIHByb3h5LgogCi0g
ICAgLy8gV2hldGhlciBzdWItcmVnaW9ucyBvZiB0ZXh0dXJlcyBjYW4gYmUgdXBkYXRlZCBvciBp
ZiBjb21wbGV0ZSB0ZXh0dXJlCi0gICAgLy8gdXBkYXRlcyBhcmUgcmVxdWlyZWQuCi0gICAgdmly
dHVhbCBib29sIHBhcnRpYWxUZXh0dXJlVXBkYXRlQ2FwYWJpbGl0eSgpIGNvbnN0ID0gMDsKKyAg
ICAvLyBNYXhpbXVtIG51bWJlciBvZiBzdWItcmVnaW9uIHRleHR1cmUgdXBkYXRlcyBzdXBwb3J0
ZWQgZm9yIGVhY2ggY29tbWl0LgorICAgIHZpcnR1YWwgc2l6ZV90IG1heFBhcnRpYWxUZXh0dXJl
VXBkYXRlcygpIGNvbnN0ID0gMDsKIAogICAgIC8vIERlYnVnIGhvb2tzCiAjaWZuZGVmIE5ERUJV
RwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCmluZGV4IDRmYWEyMjk5OTEyYWVj
OWM0ZTZhYjRiYTcwMjdkODFjODA2ZDQ1ZWUuLjBmMmM1NmY1MWE0MDNkNDI4ODMzNjg4MDVlMmYy
OTNhYWY5OGQ5NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKQEAgLTI4
LDEwICsyOCwxMyBAQAogI2luY2x1ZGUgImNjL0NDQ29tcGxldGlvbkV2ZW50LmgiCiAjaW5jbHVk
ZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIgogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKKyNp
bmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdDsK
IAogY2xhc3MgQ0NTaW5nbGVUaHJlYWRQcm94eSA6IHB1YmxpYyBDQ1Byb3h5LCBDQ0xheWVyVHJl
ZUhvc3RJbXBsQ2xpZW50IHsKQEAgLTU0LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBzZXRWaXNpYmxlKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzdGFydCgpOwogICAgIHZp
cnR1YWwgdm9pZCBzdG9wKCk7Ci0gICAgdmlydHVhbCBib29sIHBhcnRpYWxUZXh0dXJlVXBkYXRl
Q2FwYWJpbGl0eSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIHNpemVfdCBt
YXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMoKSBjb25zdCB7IHJldHVybiBudW1lcmljX2xpbWl0czxz
aXplX3Q+OjptYXgoKTsgfQogCiAgICAgLy8gQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCBpbXBs
ZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgdm9pZCBvblN3YXBCdWZmZXJzQ29tcGxldGVPbkltcGxU
aHJlYWQoKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVw
ZGF0ZXIuY3BwCmluZGV4IDg3NDVjNGVhMGE3MTBiZGUxOGVkZTE4MjBmMzE0ZmRiOGNjODcyYWIu
LjZlZjBjYmM2NmM1Zjg4ZWJjNDdlNjQ1YTRkZjU4YTAyZWE4NTFhMmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC00OCw3ICs0OCw3IEBAIENDVGV4dHVyZVVwZGF0ZXI6
On5DQ1RleHR1cmVVcGRhdGVyKCkKIHsKIH0KIAotdm9pZCBDQ1RleHR1cmVVcGRhdGVyOjphcHBl
bmQoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYg
c291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit2b2lkIENDVGV4dHVyZVVwZGF0
ZXI6OmFwcGVuZChMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJ
bnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwgVmVjdG9yPFVwZGF0
ZUVudHJ5PiYgZW50cmllcykKIHsKICAgICBBU1NFUlQodGV4dHVyZSk7CiAKQEAgLTU2LDEyICs1
NiwyMiBAQCB2b2lkIENDVGV4dHVyZVVwZGF0ZXI6OmFwcGVuZChMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZQogICAgIGVudHJ5Lm1fdGV4dHVyZSA9IHRl
eHR1cmU7CiAgICAgZW50cnkubV9zb3VyY2VSZWN0ID0gc291cmNlUmVjdDsKICAgICBlbnRyeS5t
X2Rlc3RSZWN0ID0gZGVzdFJlY3Q7Ci0gICAgbV9lbnRyaWVzLmFwcGVuZChlbnRyeSk7CisgICAg
ZW50cmllcy5hcHBlbmQoZW50cnkpOworfQorCit2b2lkIENDVGV4dHVyZVVwZGF0ZXI6OmFwcGVu
ZChMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBz
b3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3sKKyAgICBhcHBlbmQodGV4dHVy
ZSwgc291cmNlUmVjdCwgZGVzdFJlY3QsIG1fZW50cmllcyk7Cit9CisKK3ZvaWQgQ0NUZXh0dXJl
VXBkYXRlcjo6YXBwZW5kUGFydGlhbChMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0
dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkK
K3sKKyAgICBhcHBlbmQodGV4dHVyZSwgc291cmNlUmVjdCwgZGVzdFJlY3QsIG1fcGFydGlhbEVu
dHJpZXMpOwogfQogCiBib29sIENDVGV4dHVyZVVwZGF0ZXI6Omhhc01vcmVVcGRhdGVzKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9lbnRyaWVzLnNpemUoKTsKKyAgICByZXR1cm4gbV9lbnRyaWVz
LnNpemUoKSB8fCBtX3BhcnRpYWxFbnRyaWVzLnNpemUoKTsKIH0KIAogYm9vbCBDQ1RleHR1cmVV
cGRhdGVyOjp1cGRhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHNpemVfdCBjb3VudCkK
QEAgLTc1LDYgKzg1LDEyIEBAIGJvb2wgQ0NUZXh0dXJlVXBkYXRlcjo6dXBkYXRlKEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0LCBzaXplX3QgY291bnQpCiAgICAgaWYgKG1heEluZGV4IDwgbV9l
bnRyaWVzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKKyAgICAvLyBQYXJ0aWFsIHVw
ZGF0ZXMgYXJlIGFsbCBkb25lIHdoaWxlIGlnbm9yaW5nIHxjb3VudHwgYXJndW1lbnQuCisgICAg
Zm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fcGFydGlhbEVudHJpZXMuc2l6ZSgpOyAr
K2luZGV4KSB7CisgICAgICAgIFVwZGF0ZUVudHJ5JiBlbnRyeSA9IG1fcGFydGlhbEVudHJpZXNb
aW5kZXhdOworICAgICAgICBlbnRyeS5tX3RleHR1cmUtPnVwZGF0ZVJlY3QoY29udGV4dCwgbV9h
bGxvY2F0b3IsIGVudHJ5Lm1fc291cmNlUmVjdCwgZW50cnkubV9kZXN0UmVjdCk7CisgICAgfQor
CiAgICAgLy8gSWYgbm8gZW50cmllcyBsZWZ0IHRvIHByb2Nlc3MsIGF1dG8tY2xlYXIuCiAgICAg
Y2xlYXIoKTsKICAgICByZXR1cm4gZmFsc2U7CkBAIC04NCw2ICsxMDAsNyBAQCB2b2lkIENDVGV4
dHVyZVVwZGF0ZXI6OmNsZWFyKCkKIHsKICAgICBtX2VudHJ5SW5kZXggPSAwOwogICAgIG1fZW50
cmllcy5jbGVhcigpOworICAgIG1fcGFydGlhbEVudHJpZXMuY2xlYXIoKTsKIH0KIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
ZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oCmluZGV4IGJmNzlhYzljMmUyMmVmYzVlZGE5YTY0ODI5
ZTJlZmNjZWMxNWJiMzAuLmRiYjUyYzliYWQyMDQzNGRkYmY3NGM2MjhhNDQ0NWU5ZDdlOTg3ZDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmgKQEAgLTQxLDYgKzQxLDcgQEAgcHVibGlj
OgogICAgIH5DQ1RleHR1cmVVcGRhdGVyKCk7CiAKICAgICB2b2lkIGFwcGVuZChMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50
UmVjdCYgZGVzdFJlY3QpOworICAgIHZvaWQgYXBwZW5kUGFydGlhbChMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYg
ZGVzdFJlY3QpOwogCiAgICAgYm9vbCBoYXNNb3JlVXBkYXRlcygpIGNvbnN0OwogCkBAIC01OCw5
ICs1OSwxMiBAQCBwcml2YXRlOgogICAgICAgICBJbnRSZWN0IG1fZGVzdFJlY3Q7CiAgICAgfTsK
IAorICAgIHN0YXRpYyB2b2lkIGFwcGVuZChMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwg
Y29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIFZlY3Rv
cjxVcGRhdGVFbnRyeT4mKTsKKwogICAgIFRleHR1cmVBbGxvY2F0b3IqIG1fYWxsb2NhdG9yOwog
ICAgIHNpemVfdCBtX2VudHJ5SW5kZXg7CiAgICAgVmVjdG9yPFVwZGF0ZUVudHJ5PiBtX2VudHJp
ZXM7CisgICAgVmVjdG9yPFVwZGF0ZUVudHJ5PiBtX3BhcnRpYWxFbnRyaWVzOwogfTsKIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAppbmRleCAyMGFjNTMxODBlOWFjYzE0NmQxNzY1NzFj
MmY2YjQ3ZDBkNTlkZjNmLi42NjJkNThhNzA3Zjk2ZDgxZWNiOWJmODhmNzgzOWJhY2JlZWIwMzc1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcApAQCAtNDMsNyArNDMsOSBAQCB1c2luZyBu
YW1lc3BhY2UgV1RGOwogCiBuYW1lc3BhY2UgewogCi1zdGF0aWMgY29uc3Qgc2l6ZV90IHRleHR1
cmVVcGRhdGVzUGVyRnJhbWUgPSAwOworLy8gTnVtYmVyIG9mIHRleHR1cmVzIHRvIHVwZGF0ZSB3
aXRoIGVhY2ggY2FsbCB0bworLy8gc2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcygp
Lgorc3RhdGljIGNvbnN0IHNpemVfdCB0ZXh0dXJlVXBkYXRlc1BlckZyYW1lID0gNTsKIAogfSAv
LyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKQEAgLTQ0NCw3ICs0NDYsNyBAQCB2b2lkIENDVGhyZWFk
UHJveHk6OnNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMoKQogewogICAgIFRSQUNF
X0VWRU5UKCJDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2Vz
IiwgdGhpcywgMCk7CiAgICAgQVNTRVJUKG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhy
ZWFkKTsKLSAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+dXBkYXRlKG1f
bGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgdGV4dHVyZVVwZGF0ZXNQZXJGcmFtZSA+IDAg
PyB0ZXh0dXJlVXBkYXRlc1BlckZyYW1lIDogOTk5OTkpOworICAgIG1fY3VycmVudFRleHR1cmVV
cGRhdGVyT25JbXBsVGhyZWFkLT51cGRhdGUobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgp
LCB0ZXh0dXJlVXBkYXRlc1BlckZyYW1lKTsKIH0KIAogdm9pZCBDQ1RocmVhZFByb3h5OjpzY2hl
ZHVsZWRBY3Rpb25Db21taXQoKQpAQCAtNTcwLDkgKzU3Miw5IEBAIHZvaWQgQ0NUaHJlYWRQcm94
eTo6bGF5ZXJUcmVlSG9zdENsb3NlZE9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29t
cGxldGlvCiAgICAgY29tcGxldGlvbi0+c2lnbmFsKCk7CiB9CiAKLWJvb2wgQ0NUaHJlYWRQcm94
eTo6cGFydGlhbFRleHR1cmVVcGRhdGVDYXBhYmlsaXR5KCkgY29uc3QKK3NpemVfdCBDQ1RocmVh
ZFByb3h5OjptYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMoKSBjb25zdAogewotICAgIHJldHVybiAh
dGV4dHVyZVVwZGF0ZXNQZXJGcmFtZTsKKyAgICByZXR1cm4gdGV4dHVyZVVwZGF0ZXNQZXJGcmFt
ZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCmlu
ZGV4IGExMWI1Mjc4NTk5MzFjZmI5OGY4NzI0YTUxMjQzYTA5YjRlY2MzYjkuLjg1MjlhNGU0Y2I3
MDA4M2NiZWQ4NzUyNDYxYTVmYjc2YTM3NjAyZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgK
QEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlKGJv
b2wpOwogICAgIHZpcnR1YWwgdm9pZCBzdGFydCgpOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCk7
Ci0gICAgdmlydHVhbCBib29sIHBhcnRpYWxUZXh0dXJlVXBkYXRlQ2FwYWJpbGl0eSgpIGNvbnN0
OworICAgIHZpcnR1YWwgc2l6ZV90IG1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcygpIGNvbnN0Owog
CiAgICAgLy8gQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCBpbXBsZW1lbnRhdGlvbgogICAgIHZp
cnR1YWwgdm9pZCBvblN3YXBCdWZmZXJzQ29tcGxldGVPbkltcGxUaHJlYWQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCmlu
ZGV4IDU4ZGU3NTliYjMzOTNiNWRlN2Q5ODYyMDZiN2NlZjkzZjdhYTJkNzEuLjcyNTBlMTg3ODMz
N2IwYzZmODU1MTU1OTdjNzM1OGQ3NjBiNzQ5ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcApAQCAtMTEzNSwxNiArMTEz
NSwxNSBAQCBwdWJsaWM6CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RUZXN0QXRvbWljQ29tbWl0IDog
cHVibGljIENDTGF5ZXJUcmVlSG9zdFRlc3QgewogcHVibGljOgogICAgIENDTGF5ZXJUcmVlSG9z
dFRlc3RBdG9taWNDb21taXQoKQotICAgICAgICA6IG1fdXBkYXRlQ2hlY2tMYXllcihDb250ZW50
TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Y3JlYXRlKCZtX2RlbGVnYXRlKSkKLSAg
ICAgICAgLCBtX251bUNvbW1pdHMoMCkKKyAgICAgICAgOiBtX2xheWVyKENvbnRlbnRMYXllckNo
cm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpjcmVhdGUoJm1fZGVsZWdhdGUpKQogICAgIHsKICAg
ICAgICAgLy8gTWFrZSBzdXJlIHBhcnRpYWwgdGV4dHVyZSB1cGRhdGVzIGFyZSB0dXJuZWQgb2Zm
LgotICAgICAgICBtX3NldHRpbmdzLnBhcnRpYWxUZXh0dXJlVXBkYXRlcyA9IGZhbHNlOworICAg
ICAgICBtX3NldHRpbmdzLm1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcyA9IDA7CiAgICAgfQogCiAg
ICAgdmlydHVhbCB2b2lkIGJlZ2luVGVzdCgpCiAgICAgewotICAgICAgICBtX2xheWVyVHJlZUhv
c3QtPnNldFJvb3RMYXllcihtX3VwZGF0ZUNoZWNrTGF5ZXIpOworICAgICAgICBtX2xheWVyVHJl
ZUhvc3QtPnNldFJvb3RMYXllcihtX2xheWVyKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5z
ZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgxMCwgMTApKTsKIAogICAgICAgICBwb3N0U2V0TmVlZHND
b21taXRUb01haW5UaHJlYWQoKTsKQEAgLTExNjEsNyArMTE2MCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIEVYUEVDVF9FUSgxLCBjb250ZXh0LT5udW1UZXh0dXJlcygpKTsKICAgICAgICAgICAg
IC8vIE51bWJlciBvZiB0ZXh0dXJlcyB1c2VkIGZvciBjb21taXQgc2hvdWxkIGJlIG9uZS4KICAg
ICAgICAgICAgIEVYUEVDVF9FUSgxLCBjb250ZXh0LT5udW1Vc2VkVGV4dHVyZXMoKSk7Ci0gICAg
ICAgICAgICAvLyBWZXJpZnkgdXNlZCB0ZXh0dXJlIGlzIGNvcnJlY3QuCisgICAgICAgICAgICAv
LyBWZXJpZnkgdGhhdCB1c2VkIHRleHR1cmUgaXMgY29ycmVjdC4KICAgICAgICAgICAgIEVYUEVD
VF9UUlVFKGNvbnRleHQtPnVzZWRUZXh0dXJlKGNvbnRleHQtPnRleHR1cmUoMCkpKTsKIAogICAg
ICAgICAgICAgY29udGV4dC0+cmVzZXRVc2VkVGV4dHVyZXMoKTsKQEAgLTEyMDIsNyArMTIwMSw3
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKQogICAgIHsKLSAgICAgICAg
bV91cGRhdGVDaGVja0xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKKyAgICAgICAgbV9sYXllci0+
c2V0TmVlZHNEaXNwbGF5KCk7CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIGFmdGVyVGVzdCgp
CkBAIC0xMjExLDggKzEyMTAsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgTW9ja0NvbnRl
bnRMYXllckRlbGVnYXRlIG1fZGVsZWdhdGU7Ci0gICAgUmVmUHRyPENvbnRlbnRMYXllckNocm9t
aXVtV2l0aFVwZGF0ZVRyYWNraW5nPiBtX3VwZGF0ZUNoZWNrTGF5ZXI7Ci0gICAgaW50IG1fbnVt
Q29tbWl0czsKKyAgICBSZWZQdHI8Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tp
bmc+IG1fbGF5ZXI7CiB9OwogCiBURVNUX0YoQ0NMYXllclRyZWVIb3N0VGVzdEF0b21pY0NvbW1p
dCwgcnVuTXVsdGlUaHJlYWQpCkBAIC0xMjIwLDQgKzEyMTgsMTMxIEBAIFRFU1RfRihDQ0xheWVy
VHJlZUhvc3RUZXN0QXRvbWljQ29tbWl0LCBydW5NdWx0aVRocmVhZCkKICAgICBydW5UZXN0KHRy
dWUpOwogfQogCitjbGFzcyBDQ0xheWVyVHJlZUhvc3RUZXN0QXRvbWljQ29tbWl0V2l0aFBhcnRp
YWxVcGRhdGUgOiBwdWJsaWMgQ0NMYXllclRyZWVIb3N0VGVzdCB7CitwdWJsaWM6CisgICAgQ0NM
YXllclRyZWVIb3N0VGVzdEF0b21pY0NvbW1pdFdpdGhQYXJ0aWFsVXBkYXRlKCkKKyAgICAgICAg
OiBtX3BhcmVudChDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Y3JlYXRl
KCZtX2RlbGVnYXRlKSkKKyAgICAgICAgLCBtX2NoaWxkKENvbnRlbnRMYXllckNocm9taXVtV2l0
aFVwZGF0ZVRyYWNraW5nOjpjcmVhdGUoJm1fZGVsZWdhdGUpKQorICAgICAgICAsIG1fbnVtQ29t
bWl0cygwKQorICAgIHsKKyAgICAgICAgLy8gQWxsb3cgb25lIHBhcnRpYWwgdGV4dHVyZSB1cGRh
dGUuCisgICAgICAgIG1fc2V0dGluZ3MubWF4UGFydGlhbFRleHR1cmVVcGRhdGVzID0gMTsKKyAg
ICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5UZXN0KCkKKyAgICB7CisgICAgICAgIG1fbGF5
ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKG1fcGFyZW50KTsKKyAgICAgICAgbV9sYXllclRyZWVI
b3N0LT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgxMCwgMTApKTsKKyAgICAgICAgbV9wYXJlbnQt
PmFkZENoaWxkKG1fY2hpbGQpOworICAgICAgICBtX2NoaWxkLT5zZXRPcGFjaXR5KDAuNSk7Cisg
ICAgICAgIG1fY2hpbGQtPnNldEJvdW5kcyhJbnRTaXplKDIwLCAyMCkpOworCisgICAgICAgIHBv
c3RTZXROZWVkc0NvbW1pdFRvTWFpblRocmVhZCgpOworICAgICAgICBwb3N0U2V0TmVlZHNSZWRy
YXdUb01haW5UaHJlYWQoKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxl
dGVPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGltcGwpCisgICAgeworICAgICAgICBD
b21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEV2l0aFRleHR1cmVUcmFja2luZyogY29u
dGV4dCA9IHN0YXRpY19jYXN0PENvbXBvc2l0b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RXaXRo
VGV4dHVyZVRyYWNraW5nKj4oR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpleHRyYWN0V2ViR3Jh
cGhpY3NDb250ZXh0M0QoaW1wbC0+Y29udGV4dCgpKSk7CisKKyAgICAgICAgc3dpdGNoIChpbXBs
LT5mcmFtZU51bWJlcigpKSB7CisgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICAgIC8vIE51bWJl
ciBvZiB0ZXh0dXJlcyBzaG91bGQgYmUgdHdvLgorICAgICAgICAgICAgRVhQRUNUX0VRKDIsIGNv
bnRleHQtPm51bVRleHR1cmVzKCkpOworICAgICAgICAgICAgLy8gTnVtYmVyIG9mIHRleHR1cmVz
IHVzZWQgZm9yIGNvbW1pdCBzaG91bGQgYmUgdHdvLgorICAgICAgICAgICAgRVhQRUNUX0VRKDIs
IGNvbnRleHQtPm51bVVzZWRUZXh0dXJlcygpKTsKKyAgICAgICAgICAgIC8vIFZlcmlmeSB0aGF0
IHVzZWQgdGV4dHVyZXMgYXJlIGNvcnJlY3QuCisgICAgICAgICAgICBFWFBFQ1RfVFJVRShjb250
ZXh0LT51c2VkVGV4dHVyZShjb250ZXh0LT50ZXh0dXJlKDApKSk7CisgICAgICAgICAgICBFWFBF
Q1RfVFJVRShjb250ZXh0LT51c2VkVGV4dHVyZShjb250ZXh0LT50ZXh0dXJlKDEpKSk7CisKKyAg
ICAgICAgICAgIGNvbnRleHQtPnJlc2V0VXNlZFRleHR1cmVzKCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgLy8gTnVtYmVyIG9mIHRleHR1cmVzIHNo
b3VsZCBiZSBmb3VyIGFzIHRoZSBmaXJzdCB0d28KKyAgICAgICAgICAgIC8vIHRleHR1cmVzIGFy
ZSB1c2VkIGJ5IHRoZSBpbXBsIHRocmVhZC4KKyAgICAgICAgICAgIEVYUEVDVF9FUSg0LCBjb250
ZXh0LT5udW1UZXh0dXJlcygpKTsKKyAgICAgICAgICAgIC8vIE51bWJlciBvZiB0ZXh0dXJlcyB1
c2VkIGZvciBjb21taXQgc2hvdWxkIHN0aWxsIGJlIHR3by4KKyAgICAgICAgICAgIEVYUEVDVF9F
USgyLCBjb250ZXh0LT5udW1Vc2VkVGV4dHVyZXMoKSk7CisgICAgICAgICAgICAvLyBGaXJzdCB0
d28gdGV4dHVyZXMgc2hvdWxkIG5vdCBoYXZlIGJlZW4gdXNlZC4KKyAgICAgICAgICAgIEVYUEVD
VF9GQUxTRShjb250ZXh0LT51c2VkVGV4dHVyZShjb250ZXh0LT50ZXh0dXJlKDApKSk7CisgICAg
ICAgICAgICBFWFBFQ1RfRkFMU0UoY29udGV4dC0+dXNlZFRleHR1cmUoY29udGV4dC0+dGV4dHVy
ZSgxKSkpOworICAgICAgICAgICAgLy8gTmV3IHRleHR1cmVzIHNob3VsZCBoYXZlIGJlZW4gdXNl
ZC4KKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKGNvbnRleHQtPnVzZWRUZXh0dXJlKGNvbnRleHQt
PnRleHR1cmUoMikpKTsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKGNvbnRleHQtPnVzZWRUZXh0
dXJlKGNvbnRleHQtPnRleHR1cmUoMykpKTsKKworICAgICAgICAgICAgY29udGV4dC0+cmVzZXRV
c2VkVGV4dHVyZXMoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDI6CisgICAg
ICAgICAgICAvLyBOdW1iZXIgb2YgdGV4dHVyZXMgc2hvdWxkIGJlIHRocmVlIGFzIHdlIGFsbG93
IG9uZQorICAgICAgICAgICAgLy8gcGFydGlhbCB1cGRhdGUgYW5kIHRoZSBmaXJzdCB0d28gdGV4
dHVyZXMgYXJlIHVzZWQgYnkKKyAgICAgICAgICAgIC8vIHRoZSBpbXBsIHRocmVhZC4KKyAgICAg
ICAgICAgIEVYUEVDVF9FUSgzLCBjb250ZXh0LT5udW1UZXh0dXJlcygpKTsKKyAgICAgICAgICAg
IC8vIE51bWJlciBvZiB0ZXh0dXJlcyB1c2VkIGZvciBjb21taXQgc2hvdWxkIHN0aWxsIGJlIHR3
by4KKyAgICAgICAgICAgIEVYUEVDVF9FUSgyLCBjb250ZXh0LT5udW1Vc2VkVGV4dHVyZXMoKSk7
CisgICAgICAgICAgICAvLyBGaXJzdCB0ZXh0dXJlIHNob3VsZCBub3QgaGF2ZSBiZWVuIHVzZWQu
CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UoY29udGV4dC0+dXNlZFRleHR1cmUoY29udGV4dC0+
dGV4dHVyZSgwKSkpOworICAgICAgICAgICAgLy8gU2Vjb25kIHRleHR1cmUgc2hvdWxkIGhhdmUg
YmVlbiB1c2VkLgorICAgICAgICAgICAgRVhQRUNUX1RSVUUoY29udGV4dC0+dXNlZFRleHR1cmUo
Y29udGV4dC0+dGV4dHVyZSgxKSkpOworICAgICAgICAgICAgLy8gTmV3IHRleHR1cmVzIHNob3Vs
ZCBoYXZlIGJlZW4gdXNlZC4KKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKGNvbnRleHQtPnVzZWRU
ZXh0dXJlKGNvbnRleHQtPnRleHR1cmUoMikpKTsKKworICAgICAgICAgICAgY29udGV4dC0+cmVz
ZXRVc2VkVGV4dHVyZXMoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzT25DQ1RocmVhZChD
Q0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKQorICAgIHsKKyAgICAgICAgQ29tcG9zaXRvckZha2VX
ZWJHcmFwaGljc0NvbnRleHQzRFdpdGhUZXh0dXJlVHJhY2tpbmcqIGNvbnRleHQgPSBzdGF0aWNf
Y2FzdDxDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEV2l0aFRleHR1cmVUcmFja2lu
Zyo+KEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0cmFjdFdlYkdyYXBoaWNzQ29udGV4dDNE
KGltcGwtPmNvbnRleHQoKSkpOworCisgICAgICAgIC8vIE51bWJlciBvZiB0ZXh0dXJlcyB1c2Vk
IGZvciBkcmF3IHNob3VsZCBhbHdheXMgYmUgb25lLgorICAgICAgICBFWFBFQ1RfRVEoMiwgY29u
dGV4dC0+bnVtVXNlZFRleHR1cmVzKCkpOworCisgICAgICAgIGlmIChpbXBsLT5mcmFtZU51bWJl
cigpIDwgMykgeworICAgICAgICAgICAgY29udGV4dC0+cmVzZXRVc2VkVGV4dHVyZXMoKTsKKyAg
ICAgICAgICAgIHBvc3RTZXROZWVkc0FuaW1hdGVBbmRDb21taXRUb01haW5UaHJlYWQoKTsKKyAg
ICAgICAgICAgIHBvc3RTZXROZWVkc1JlZHJhd1RvTWFpblRocmVhZCgpOworICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgbGF5
b3V0KCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAobV9udW1Db21taXRzKyspIHsKKyAgICAgICAg
Y2FzZSAwOgorICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICBtX3BhcmVudC0+c2V0TmVlZHNE
aXNwbGF5KCk7CisgICAgICAgICAgICBtX2NoaWxkLT5zZXROZWVkc0Rpc3BsYXkoKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAvLyBEYW1hZ2UgcGFy
dCBvZiBsYXllcnMuCisgICAgICAgICAgICBtX3BhcmVudC0+c2V0TmVlZHNEaXNwbGF5UmVjdChG
bG9hdFJlY3QoMCwgMCwgNSwgNSkpOworICAgICAgICAgICAgbV9jaGlsZC0+c2V0TmVlZHNEaXNw
bGF5UmVjdChGbG9hdFJlY3QoMCwgMCwgNSwgNSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGFmdGVyVGVz
dCgpCisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICBNb2NrQ29udGVudExheWVyRGVsZWdh
dGUgbV9kZWxlZ2F0ZTsKKyAgICBSZWZQdHI8Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRl
VHJhY2tpbmc+IG1fcGFyZW50OworICAgIFJlZlB0cjxDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhV
cGRhdGVUcmFja2luZz4gbV9jaGlsZDsKKyAgICBpbnQgbV9udW1Db21taXRzOworfTsKKworVEVT
VF9GKENDTGF5ZXJUcmVlSG9zdFRlc3RBdG9taWNDb21taXRXaXRoUGFydGlhbFVwZGF0ZSwgcnVu
TXVsdGlUaHJlYWQpCit7CisgICAgcnVuVGVzdCh0cnVlKTsKK30KKworCiB9IC8vIG5hbWVzcGFj
ZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124567</attachid>
            <date>2012-01-30 10:16:58 -0800</date>
            <delta_ts>2012-01-30 16:30:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76740-20120130131657.patch</filename>
            <type>text/plain</type>
            <size>26286</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NjIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTFiZGVjM2JkNzAwYmMz
YmVlODI4ZmFiOWM2YmY2YmNmMDJhN2YwYi4uNmFjMGI4OTEyYWEyMjEzODZkOWI1ZTg0MWM0M2Y5
MjljNTlmNDAwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEyLTAxLTMwICBEYXZp
ZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBB
dm9pZCB1bm5lY2Vzc2FyeSBmdWxsIHRpbGUgdXBkYXRlcyB3aXRob3V0IGJyZWFraW5nIGF0b21p
Y2l0eSBvZiBjb21taXRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzY3NDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBbGxvdyB0aGUgZmluYWwgYmF0Y2ggb2YgdGV4dHVyZSB1cGxvYWRzIHRvIGJlIHBl
cmZvcm1lZCB3aXRob3V0CisgICAgICAgIGFsbG9jYXRpbmcgbmV3IHRleHR1cmVzIGFuZCByZS1w
YWludGluZyBjb21wbGV0ZSB0aWxlcy4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIHRlc3RlZCBi
eSB0aGUgZm9sbG93aW5nIHVuaXQgdGVzdDoKKyAgICAgICAgLSBDQ0xheWVyVHJlZUhvc3RUZXN0
QXRvbWljQ29tbWl0V2l0aFBhcnRpYWxVcGRhdGUucnVuTXVsdGlUaHJlYWQKKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpVcGRhdGFibGVUaWxlOjpVcGRhdGFibGVUaWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpDQ0xheWVyVHJlZUhv
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Ojppbml0aWFsaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6cmVxdWVzdFBhcnRpYWxUZXh0dXJlVXBkYXRlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU2V0dGluZ3M6OkNDU2V0dGluZ3MpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5Lmg6CisgICAgICAg
IChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5OjptYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlcjo6YXBwZW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6OmFwcGVuZFBhcnRpYWwpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlcjo6aGFzTW9yZVVwZGF0ZXMpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlcjo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkND
VGV4dHVyZVVwZGF0ZXI6OmNsZWFyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVh
ZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDVGhyZWFkUHJveHk6Om1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oOgorCiAyMDEy
LTAxLTIzICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFdlYiBJbnNwZWN0b3I6IEluZGV4ZWREQk1vZGVsIHNob3VsZCBrZWVwIHRyYWNrIG9mIHJlcXVl
c3RzIHNlbnQgdG8gdGhlIGJhY2tlbmQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGFk
Y2RlODk2MDZkOTU5ZmE4YjA1ZmUyZWY2MWVmMTBhNmU2M2I4YTcuLjVmYTRhNjI3YjEzYWM3M2M2
ZmZmMmRmOGNiMWQwMTMxNTIyOGY2NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjYgQEAKKzIwMTItMDEtMzAgIERhdmlkIFJldmVtYW4gIDxyZXZlbWFuQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIEF2b2lkIHVubmVjZXNzYXJ5IGZ1bGwgdGlsZSB1
cGRhdGVzIHdpdGhvdXQgYnJlYWtpbmcgYXRvbWljaXR5IG9mIGNvbW1pdHMuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Njc0MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBDQ0xheWVyVHJlZUhvc3RU
ZXN0QXRvbWljQ29tbWl0V2l0aFBhcnRpYWxVcGRhdGUgdGVzdCB0aGF0IHZlcmlmaWVzCisgICAg
ICAgIGF0b21pY2l0eSBvZiBjb21taXRzIHdpdGggcGFydGlhbCB1cGRhdGVzLgorCisgICAgICAg
ICogdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHA6CisgICAgICAgIChXVEY6OkNDTGF5ZXJU
cmVlSG9zdFRlc3RBdG9taWNDb21taXQ6OkNDTGF5ZXJUcmVlSG9zdFRlc3RBdG9taWNDb21taXQp
OgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0QXRvbWljQ29tbWl0OjpiZWdpblRl
c3QpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0QXRvbWljQ29tbWl0Ojpjb21t
aXRDb21wbGV0ZU9uQ0NUaHJlYWQpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0
QXRvbWljQ29tbWl0OjpsYXlvdXQpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0
QXRvbWljQ29tbWl0V2l0aFBhcnRpYWxVcGRhdGU6OkNDTGF5ZXJUcmVlSG9zdFRlc3RBdG9taWND
b21taXRXaXRoUGFydGlhbFVwZGF0ZSk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRl
c3RBdG9taWNDb21taXRXaXRoUGFydGlhbFVwZGF0ZTo6YmVnaW5UZXN0KToKKyAgICAgICAgKFdU
Rjo6Q0NMYXllclRyZWVIb3N0VGVzdEF0b21pY0NvbW1pdFdpdGhQYXJ0aWFsVXBkYXRlOjpjb21t
aXRDb21wbGV0ZU9uQ0NUaHJlYWQpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0
QXRvbWljQ29tbWl0V2l0aFBhcnRpYWxVcGRhdGU6OmRyYXdMYXllcnNPbkNDVGhyZWFkKToKKyAg
ICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdEF0b21pY0NvbW1pdFdpdGhQYXJ0aWFsVXBk
YXRlOjpsYXlvdXQpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0QXRvbWljQ29t
bWl0V2l0aFBhcnRpYWxVcGRhdGU6OmFmdGVyVGVzdCk6CisgICAgICAgIChXVEY6OlRFU1RfRik6
CisKIDIwMTItMDEtMjAgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgogCiAg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IFBhZ2VBZ2VudC5vcGVuKCkgZG9zZW4ndCBiZWxvbmcgdG8g
dGhlIHByb3RvY29sLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggOTJkMTAy
ZTMyMmEyMTgzNTVlMTU2ODFlNTAwNWFkMzJhMmUyYjZlNS4uOWJjNjlhNzZjZDZkOTI4NTMzMzE4
YWVmMDY4MTgyZWM0MjgwMDYyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCkBA
IC01Myw3ICs1Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFVwZGF0YWJsZVRpbGUg
OiBwdWJsaWMgQ0NMYXllclRpbGluZ0RhdGE6OlRpbGUgewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFVwZGF0YWJsZVRpbGUpOwogcHVibGljOgotICAgIGV4cGxpY2l0IFVwZGF0YWJsZVRpbGUo
UGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlPiB0ZXh0dXJlKSA6IG1fdGV4
dHVyZSh0ZXh0dXJlKSB7IH0KKyAgICBleHBsaWNpdCBVcGRhdGFibGVUaWxlKFBhc3NPd25QdHI8
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gdGV4dHVyZSkgOiBtX3BhcnRpYWxVcGRhdGUo
ZmFsc2UpLCBtX3RleHR1cmUodGV4dHVyZSkgeyB9CiAKICAgICBMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJlLmdldCgpOyB9CiAgICAgTWFu
YWdlZFRleHR1cmUqIG1hbmFnZWRUZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJlLT50ZXh0dXJl
KCk7IH0KQEAgLTY3LDYgKzY3LDcgQEAgcHVibGljOgogCiAgICAgSW50UmVjdCBtX2RpcnR5UmVj
dDsKICAgICBJbnRSZWN0IG1fdXBkYXRlUmVjdDsKKyAgICBib29sIG1fcGFydGlhbFVwZGF0ZTsK
IHByaXZhdGU6CiAgICAgT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IG1fdGV4
dHVyZTsKIH07CkBAIC0yMzYsNyArMjM3LDEwIEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjp1
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlCiAg
ICAgICAgICAgICBpZiAocGFpbnRPZmZzZXQueSgpICsgZGVzdFJlY3QuaGVpZ2h0KCkgPiBtX3Bh
aW50UmVjdC5oZWlnaHQoKSkKICAgICAgICAgICAgICAgICBDUkFTSCgpOwogCi0gICAgICAgICAg
ICB1cGRhdGVyLmFwcGVuZCh0aWxlLT50ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsK
KyAgICAgICAgICAgIGlmICh0aWxlLT5tX3BhcnRpYWxVcGRhdGUpCisgICAgICAgICAgICAgICAg
dXBkYXRlci5hcHBlbmRQYXJ0aWFsKHRpbGUtPnRleHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJl
Y3QpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHVwZGF0ZXIuYXBwZW5kKHRp
bGUtPnRleHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwogICAgICAgICB9CiAgICAgfQog
CkBAIC0zNjcsNiArMzcxLDcgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1Vw
ZGF0ZVRpbGVzKGJvb2wgaWRsZSwgaW50IGxlZnQsIGludCB0b3AsIGludAogICAgIGZvciAoQ0NM
YXllclRpbGluZ0RhdGE6OlRpbGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX3RpbGVyLT50
aWxlcygpLmJlZ2luKCk7IGl0ZXIgIT0gbV90aWxlci0+dGlsZXMoKS5lbmQoKTsgKytpdGVyKSB7
CiAgICAgICAgIFVwZGF0YWJsZVRpbGUqIHRpbGUgPSBzdGF0aWNfY2FzdDxVcGRhdGFibGVUaWxl
Kj4oaXRlci0+c2Vjb25kLmdldCgpKTsKICAgICAgICAgdGlsZS0+bV91cGRhdGVSZWN0ID0gSW50
UmVjdCgpOworICAgICAgICB0aWxlLT5tX3BhcnRpYWxVcGRhdGUgPSBmYWxzZTsKICAgICB9CiAK
ICAgICAvLyBDcmVhdGUgdGlsZXMgYXMgbmVlZGVkLCBleHBhbmRpbmcgYSBkaXJ0eSByZWN0IHRv
IGNvbnRhaW4gYWxsCkBAIC0zODAsMTAgKzM4NSw0MyBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1
bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50
CiAgICAgICAgICAgICBpZiAoIXRpbGUpCiAgICAgICAgICAgICAgICAgdGlsZSA9IGNyZWF0ZVRp
bGUoaSwgaik7CiAKLSAgICAgICAgICAgIC8vIERvIHBvc3QgY29tbWl0IGRlbGV0aW9uIG9mIGN1
cnJlbnQgdGV4dHVyZSB3aGVuIHBhcnRpYWwgdGV4dHVyZQotICAgICAgICAgICAgLy8gdXBkYXRl
cyBhcmUgbm90IHVzZWQuCi0gICAgICAgICAgICBpZiAodGlsZS0+aXNEaXJ0eSgpICYmIGxheWVy
VHJlZUhvc3QoKSAmJiAhbGF5ZXJUcmVlSG9zdCgpLT5zZXR0aW5ncygpLnBhcnRpYWxUZXh0dXJl
VXBkYXRlcykKKyAgICAgICAgICAgIGJvb2wgbmV3VGV4dHVyZSA9IHRydWU7CisgICAgICAgICAg
ICBib29sIHBhcnRpYWxVcGRhdGUgPSB0cnVlOworCisgICAgICAgICAgICBpZiAoIWxheWVyVHJl
ZUhvc3QoKSkgeworICAgICAgICAgICAgICAgIHBhcnRpYWxVcGRhdGUgPSBmYWxzZTsKKyAgICAg
ICAgICAgICAgICBuZXdUZXh0dXJlID0gZmFsc2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIC8vIFBhcnRpYWwgdXBkYXRlIGRvZXNuJ3QgYXBwbHkgdG8gbmV3IHRleHR1cmVzLgorICAg
ICAgICAgICAgaWYgKCF0aWxlLT5tYW5hZ2VkVGV4dHVyZSgpLT5pc1ZhbGlkKG1fdGlsZXItPnRp
bGVTaXplKCksIG1fdGV4dHVyZUZvcm1hdCkpIHsKKyAgICAgICAgICAgICAgICBwYXJ0aWFsVXBk
YXRlID0gZmFsc2U7CisgICAgICAgICAgICAgICAgbmV3VGV4dHVyZSA9IGZhbHNlOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAvLyBBdm9pZCBwYXJ0aWFsIHVwZGF0ZSB3aGVuIHRpbGUg
aXMgY29tcGxldGVseSBkYW1hZ2VkLgorICAgICAgICAgICAgaWYgKHRpbGUtPm1fZGlydHlSZWN0
LmNvbnRhaW5zKG1fdGlsZXItPnRpbGVSZWN0KHRpbGUpKSkKKyAgICAgICAgICAgICAgICBwYXJ0
aWFsVXBkYXRlID0gZmFsc2U7CisKKyAgICAgICAgICAgIGlmIChwYXJ0aWFsVXBkYXRlKSB7Cisg
ICAgICAgICAgICAgICAgQVNTRVJUKGxheWVyVHJlZUhvc3QoKSk7CisKKyAgICAgICAgICAgICAg
ICAvLyBUcnkgdG8gcmVxdWVzdCBwYXJ0aWFsIHRleHR1cmUgdXBkYXRlLiBUaGlzIHdpbGwgZmFp
bAorICAgICAgICAgICAgICAgIC8vIGFuZCBmb3JjZSB1cyB0byB1c2UgYSBuZXcgdGV4dHVyZSB3
aGVuIHdlIHJlYWNoIHRoZQorICAgICAgICAgICAgICAgIC8vIGN1cnJlbnQgbWF4aW11bSBwYXJ0
aWFsIHVwZGF0ZSBjb3VudC4KKyAgICAgICAgICAgICAgICBpZiAobGF5ZXJUcmVlSG9zdCgpLT5y
ZXF1ZXN0UGFydGlhbFRleHR1cmVVcGRhdGUoKSkgeworICAgICAgICAgICAgICAgICAgICB0aWxl
LT5tX3BhcnRpYWxVcGRhdGUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBuZXdUZXh0dXJl
ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAvLyBEbyBwb3N0IGNvbW1pdCBkZWxldGlvbiBvZiBjdXJyZW50IHRleHR1cmUgd2hlbiBwYXJ0
aWFsCisgICAgICAgICAgICAvLyB0ZXh0dXJlIHVwZGF0ZSBpcyBub3QgcG9zc2libGUuCisgICAg
ICAgICAgICBpZiAobmV3VGV4dHVyZSkgeworICAgICAgICAgICAgICAgIEFTU0VSVChsYXllclRy
ZWVIb3N0KCkpOworICAgICAgICAgICAgICAgIEFTU0VSVCh0aWxlLT5tYW5hZ2VkVGV4dHVyZSgp
LT5pc1ZhbGlkKG1fdGlsZXItPnRpbGVTaXplKCksIG1fdGV4dHVyZUZvcm1hdCkpOwogICAgICAg
ICAgICAgICAgIGxheWVyVHJlZUhvc3QoKS0+ZGVsZXRlVGV4dHVyZUFmdGVyQ29tbWl0KHRpbGUt
Pm1hbmFnZWRUZXh0dXJlKCktPnN0ZWFsKCkpOworICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICBpZiAoIXRpbGUtPm1hbmFnZWRUZXh0dXJlKCktPmlzVmFsaWQobV90aWxlci0+dGlsZVNpemUo
KSwgbV90ZXh0dXJlRm9ybWF0KSkKICAgICAgICAgICAgICAgICB0aWxlLT5tX2RpcnR5UmVjdCA9
IG1fdGlsZXItPnRpbGVSZWN0KHRpbGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAK
aW5kZXggYTJmYjgyMmM1NmJkYjM1ZmNjZDNiOTlhNGQxNGRlZWE4ZDkxMzI4Yi4uNzJjYmE2OTZh
NDU5OTU1NThiOWFmYjA3N2E0YWM3Y2NlZTQ5NWIwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3QuY3BwCkBAIC02OSw2ICs2OSw3IEBAIENDTGF5ZXJUcmVlSG9zdDo6Q0NMYXllclRyZWVI
b3N0KENDTGF5ZXJUcmVlSG9zdENsaWVudCogY2xpZW50LCBjb25zdCBDQ1NldHRpbmdzCiAgICAg
LCBtX21pblBhZ2VTY2FsZSgxKQogICAgICwgbV9tYXhQYWdlU2NhbGUoMSkKICAgICAsIG1fdHJp
Z2dlcklkbGVQYWludHModHJ1ZSkKKyAgICAsIG1fcGFydGlhbFRleHR1cmVVcGRhdGVSZXF1ZXN0
cygwKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7CiAgICAgbnVtTGF5
ZXJUcmVlSW5zdGFuY2VzKys7CkBAIC05Niw3ICs5Nyw3IEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0
Ojppbml0aWFsaXplKCkKICAgICBtX3NldHRpbmdzLmFjY2VsZXJhdGVQYWludGluZyA9IG1fcHJv
eHktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS51c2luZ0FjY2VsZXJhdGVkUGFpbnRpbmc7
CiAKICAgICAvLyBVcGRhdGUgbV9zZXR0aW5ncyBiYXNlZCBvbiBwYXJ0aWFsIHVwZGF0ZSBjYXBh
YmlsaXR5LgotICAgIG1fc2V0dGluZ3MucGFydGlhbFRleHR1cmVVcGRhdGVzID0gbV9zZXR0aW5n
cy5wYXJ0aWFsVGV4dHVyZVVwZGF0ZXMgJiYgbV9wcm94eS0+cGFydGlhbFRleHR1cmVVcGRhdGVD
YXBhYmlsaXR5KCk7CisgICAgbV9zZXR0aW5ncy5tYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMgPSBt
aW4obV9zZXR0aW5ncy5tYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMsIG1fcHJveHktPm1heFBhcnRp
YWxUZXh0dXJlVXBkYXRlcygpKTsKIAogICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlciA9IFRl
eHR1cmVNYW5hZ2VyOjpjcmVhdGUoVGV4dHVyZU1hbmFnZXI6OmhpZ2hMaW1pdEJ5dGVzKHZpZXdw
b3J0U2l6ZSgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRleHR1cmVNYW5hZ2VyOjpyZWNsYWltTGltaXRCeXRlcyh2aWV3cG9ydFNpemUo
KSksCkBAIC0zODMsNiArMzg0LDkgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVy
cyhMYXllckNocm9taXVtKiByb290TGF5ZXIpCiAgICAgICAgIENDTGF5ZXJUcmVlSG9zdENvbW1v
bjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHJvb3RMYXllciwgcm9vdExh
eWVyLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIG1fdXBkYXRlTGlzdCwgcm9vdFJl
bmRlclN1cmZhY2UtPmxheWVyTGlzdCgpLCBsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkubWF4
VGV4dHVyZVNpemUpOwogICAgIH0KIAorICAgIC8vIFJlc2V0IHBhcnRpYWwgdGV4dHVyZSB1cGRh
dGUgcmVxdWVzdHMuCisgICAgbV9wYXJ0aWFsVGV4dHVyZVVwZGF0ZVJlcXVlc3RzID0gMDsKKwog
ICAgIHBhaW50TGF5ZXJDb250ZW50cyhtX3VwZGF0ZUxpc3QsIFBhaW50VmlzaWJsZSk7CiAgICAg
aWYgKCFtX3RyaWdnZXJJZGxlUGFpbnRzKQogICAgICAgICByZXR1cm47CkBAIC01MTgsNiArNTIy
LDE1IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpzdG9wUmF0ZUxpbWl0ZXIoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQpCiAgICAgfQogfQogCitib29sIENDTGF5ZXJUcmVlSG9zdDo6cmVxdWVz
dFBhcnRpYWxUZXh0dXJlVXBkYXRlKCkKK3sKKyAgICBpZiAobV9wYXJ0aWFsVGV4dHVyZVVwZGF0
ZVJlcXVlc3RzID49IG1fc2V0dGluZ3MubWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBtX3BhcnRpYWxUZXh0dXJlVXBkYXRlUmVxdWVzdHMrKzsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmRlbGV0ZVRleHR1
cmVBZnRlckNvbW1pdChQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKQogewogICAg
IG1fZGVsZXRlVGV4dHVyZUFmdGVyQ29tbWl0TGlzdC5hcHBlbmQodGV4dHVyZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IGQ5MmFkYzE2NmFlNjdlM2FmMDU0Mjk1MTBjOTdkM2Zl
MzY4MzUwOWYuLmJmYWI5MzRiM2ZiMGE3NzgxNTBiMTY2ZjcxYWRiY2FmODZjNWNlZTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC03Nyw3ICs3Nyw3IEBAIHN0cnVjdCBDQ1NldHRp
bmdzIHsKICAgICAgICAgICAgICwgcmVmcmVzaFJhdGUoMCkKICAgICAgICAgICAgICwgcGVyVGls
ZVBhaW50aW5nKGZhbHNlKQogICAgICAgICAgICAgLCBwYXJ0aWFsU3dhcEVuYWJsZWQoZmFsc2Up
Ci0gICAgICAgICAgICAsIHBhcnRpYWxUZXh0dXJlVXBkYXRlcyh0cnVlKSB7IH0KKyAgICAgICAg
ICAgICwgbWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKDApIHsgfQogCiAgICAgYm9vbCBhY2NlbGVy
YXRlUGFpbnRpbmc7CiAgICAgYm9vbCBjb21wb3NpdGVPZmZzY3JlZW47CkBAIC04Niw3ICs4Niw3
IEBAIHN0cnVjdCBDQ1NldHRpbmdzIHsKICAgICBkb3VibGUgcmVmcmVzaFJhdGU7CiAgICAgYm9v
bCBwZXJUaWxlUGFpbnRpbmc7CiAgICAgYm9vbCBwYXJ0aWFsU3dhcEVuYWJsZWQ7Ci0gICAgYm9v
bCBwYXJ0aWFsVGV4dHVyZVVwZGF0ZXM7CisgICAgc2l6ZV90IG1heFBhcnRpYWxUZXh0dXJlVXBk
YXRlczsKIH07CiAKIC8vIFByb3ZpZGVzIGluZm9ybWF0aW9uIG9uIGFuIEltcGwncyByZW5kZXJp
bmcgY2FwYWJpbGl0aWVzIGJhY2sgdG8gdGhlIENDTGF5ZXJUcmVlSG9zdApAQCAtMTk0LDYgKzE5
NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXJ0UmF0ZUxpbWl0ZXIoR3JhcGhpY3NDb250ZXh0
M0QqKTsKICAgICB2b2lkIHN0b3BSYXRlTGltaXRlcihHcmFwaGljc0NvbnRleHQzRCopOwogCisg
ICAgYm9vbCByZXF1ZXN0UGFydGlhbFRleHR1cmVVcGRhdGUoKTsKICAgICB2b2lkIGRlbGV0ZVRl
eHR1cmVBZnRlckNvbW1pdChQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPik7CiAKIHByb3RlY3Rl
ZDoKQEAgLTI0MCw2ICsyNDEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV90cmlnZ2VySWRsZVBh
aW50czsKIAogICAgIFRleHR1cmVMaXN0IG1fZGVsZXRlVGV4dHVyZUFmdGVyQ29tbWl0TGlzdDsK
KyAgICBzaXplX3QgbV9wYXJ0aWFsVGV4dHVyZVVwZGF0ZVJlcXVlc3RzOwogfTsKIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQ
cm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQ
cm94eS5oCmluZGV4IDkzN2MxNTRmZjY5YmE4NTNiYmZjOTM0NTZkNzc2NjcxMGM3MGEyMjQuLjY4
YWJjNmQ3NzQzODVmMTdiZTVlNjY5NGVlMzViMWRjZGEyM2RmMzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKQEAg
LTc5LDkgKzc5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzdGFydCgpID0gMDsgLy8g
TXVzdCBiZSBjYWxsZWQgYmVmb3JlIHVzaW5nIHRoZSBwcm94eS4KICAgICB2aXJ0dWFsIHZvaWQg
c3RvcCgpID0gMDsgLy8gTXVzdCBiZSBjYWxsZWQgYmVmb3JlIGRlbGV0aW5nIHRoZSBwcm94eS4K
IAotICAgIC8vIFdoZXRoZXIgc3ViLXJlZ2lvbnMgb2YgdGV4dHVyZXMgY2FuIGJlIHVwZGF0ZWQg
b3IgaWYgY29tcGxldGUgdGV4dHVyZQotICAgIC8vIHVwZGF0ZXMgYXJlIHJlcXVpcmVkLgotICAg
IHZpcnR1YWwgYm9vbCBwYXJ0aWFsVGV4dHVyZVVwZGF0ZUNhcGFiaWxpdHkoKSBjb25zdCA9IDA7
CisgICAgLy8gTWF4aW11bSBudW1iZXIgb2Ygc3ViLXJlZ2lvbiB0ZXh0dXJlIHVwZGF0ZXMgc3Vw
cG9ydGVkIGZvciBlYWNoIGNvbW1pdC4KKyAgICB2aXJ0dWFsIHNpemVfdCBtYXhQYXJ0aWFsVGV4
dHVyZVVwZGF0ZXMoKSBjb25zdCA9IDA7CiAKICAgICAvLyBEZWJ1ZyBob29rcwogI2lmbmRlZiBO
REVCVUcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAppbmRleCA0ZmFhMjI5OTkx
MmFlYzljNGU2YWI0YmE3MDI3ZDgxYzgwNmQ0NWVlLi4wZjJjNTZmNTFhNDAzZDQyODgzMzY4ODA1
ZTJmMjkzYWFmOThkOTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCkBA
IC0yOCwxMCArMjgsMTMgQEAKICNpbmNsdWRlICJjYy9DQ0NvbXBsZXRpb25FdmVudC5oIgogI2lu
Y2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKICNpbmNsdWRlICJjYy9DQ1Byb3h5Lmgi
CisjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCiBjbGFzcyBDQ0xheWVyVHJlZUhv
c3Q7CiAKIGNsYXNzIENDU2luZ2xlVGhyZWFkUHJveHkgOiBwdWJsaWMgQ0NQcm94eSwgQ0NMYXll
clRyZWVIb3N0SW1wbENsaWVudCB7CkBAIC01NCw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgc2V0VmlzaWJsZShib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc3RvcCgpOwotICAgIHZpcnR1YWwgYm9vbCBwYXJ0aWFsVGV4dHVyZVVw
ZGF0ZUNhcGFiaWxpdHkoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBzaXpl
X3QgbWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKCkgY29uc3QgeyByZXR1cm4gbnVtZXJpY19saW1p
dHM8c2l6ZV90Pjo6bWF4KCk7IH0KIAogICAgIC8vIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQg
aW1wbGVtZW50YXRpb24KICAgICB2aXJ0dWFsIHZvaWQgb25Td2FwQnVmZmVyc0NvbXBsZXRlT25J
bXBsVGhyZWFkKCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1
cmVVcGRhdGVyLmNwcAppbmRleCA4NzQ1YzRlYTBhNzEwYmRlMThlZGUxODIwZjMxNGZkYjhjYzg3
MmFiLi42ZWYwY2JjNjZjNWY4OGViYzQ3ZTY0NWE0ZGY1OGEwMmVhODUxYTJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVV
cGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcApAQCAtNDgsNyArNDgsNyBAQCBDQ1RleHR1cmVVcGRh
dGVyOjp+Q0NUZXh0dXJlVXBkYXRlcigpCiB7CiB9CiAKLXZvaWQgQ0NUZXh0dXJlVXBkYXRlcjo6
YXBwZW5kKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQordm9pZCBDQ1RleHR1cmVV
cGRhdGVyOjphcHBlbmQoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgY29u
c3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIFZlY3RvcjxV
cGRhdGVFbnRyeT4mIGVudHJpZXMpCiB7CiAgICAgQVNTRVJUKHRleHR1cmUpOwogCkBAIC01Niwx
MiArNTYsMjIgQEAgdm9pZCBDQ1RleHR1cmVVcGRhdGVyOjphcHBlbmQoTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmUKICAgICBlbnRyeS5tX3RleHR1cmUg
PSB0ZXh0dXJlOwogICAgIGVudHJ5Lm1fc291cmNlUmVjdCA9IHNvdXJjZVJlY3Q7CiAgICAgZW50
cnkubV9kZXN0UmVjdCA9IGRlc3RSZWN0OwotICAgIG1fZW50cmllcy5hcHBlbmQoZW50cnkpOwor
ICAgIGVudHJpZXMuYXBwZW5kKGVudHJ5KTsKK30KKwordm9pZCBDQ1RleHR1cmVVcGRhdGVyOjph
cHBlbmQoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVj
dCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit7CisgICAgYXBwZW5kKHRl
eHR1cmUsIHNvdXJjZVJlY3QsIGRlc3RSZWN0LCBtX2VudHJpZXMpOworfQorCit2b2lkIENDVGV4
dHVyZVVwZGF0ZXI6OmFwcGVuZFBhcnRpYWwoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSog
dGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJl
Y3QpCit7CisgICAgYXBwZW5kKHRleHR1cmUsIHNvdXJjZVJlY3QsIGRlc3RSZWN0LCBtX3BhcnRp
YWxFbnRyaWVzKTsKIH0KIAogYm9vbCBDQ1RleHR1cmVVcGRhdGVyOjpoYXNNb3JlVXBkYXRlcygp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZW50cmllcy5zaXplKCk7CisgICAgcmV0dXJuIG1fZW50
cmllcy5zaXplKCkgfHwgbV9wYXJ0aWFsRW50cmllcy5zaXplKCk7CiB9CiAKIGJvb2wgQ0NUZXh0
dXJlVXBkYXRlcjo6dXBkYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBzaXplX3QgY291
bnQpCkBAIC03NSw2ICs4NSwxMiBAQCBib29sIENDVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZShHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCwgc2l6ZV90IGNvdW50KQogICAgIGlmIChtYXhJbmRleCA8
IG1fZW50cmllcy5zaXplKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCisgICAgLy8gUGFydGlh
bCB1cGRhdGVzIGFyZSBhbGwgZG9uZSB3aGlsZSBpZ25vcmluZyB8Y291bnR8IGFyZ3VtZW50Lgor
ICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX3BhcnRpYWxFbnRyaWVzLnNpemUo
KTsgKytpbmRleCkgeworICAgICAgICBVcGRhdGVFbnRyeSYgZW50cnkgPSBtX3BhcnRpYWxFbnRy
aWVzW2luZGV4XTsKKyAgICAgICAgZW50cnkubV90ZXh0dXJlLT51cGRhdGVSZWN0KGNvbnRleHQs
IG1fYWxsb2NhdG9yLCBlbnRyeS5tX3NvdXJjZVJlY3QsIGVudHJ5Lm1fZGVzdFJlY3QpOworICAg
IH0KKwogICAgIC8vIElmIG5vIGVudHJpZXMgbGVmdCB0byBwcm9jZXNzLCBhdXRvLWNsZWFyLgog
ICAgIGNsZWFyKCk7CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODQsNiArMTAwLDcgQEAgdm9pZCBD
Q1RleHR1cmVVcGRhdGVyOjpjbGVhcigpCiB7CiAgICAgbV9lbnRyeUluZGV4ID0gMDsKICAgICBt
X2VudHJpZXMuY2xlYXIoKTsKKyAgICBtX3BhcnRpYWxFbnRyaWVzLmNsZWFyKCk7CiB9CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaAppbmRleCBiZjc5YWM5YzJlMjJlZmM1ZWRhOWE2
NDgyOWUyZWZjY2VjMTViYjMwLi5kYmI1MmM5YmFkMjA0MzRkZGJmNzRjNjI4YTQ0NDVlOWQ3ZTk4
N2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oCkBAIC00MSw2ICs0MSw3IEBAIHB1
YmxpYzoKICAgICB+Q0NUZXh0dXJlVXBkYXRlcigpOwogCiAgICAgdm9pZCBhcHBlbmQoTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0
IEludFJlY3QmIGRlc3RSZWN0KTsKKyAgICB2b2lkIGFwcGVuZFBhcnRpYWwoTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJl
Y3QmIGRlc3RSZWN0KTsKIAogICAgIGJvb2wgaGFzTW9yZVVwZGF0ZXMoKSBjb25zdDsKIApAQCAt
NTgsOSArNTksMTIgQEAgcHJpdmF0ZToKICAgICAgICAgSW50UmVjdCBtX2Rlc3RSZWN0OwogICAg
IH07CiAKKyAgICBzdGF0aWMgdm9pZCBhcHBlbmQoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVy
ZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LCBW
ZWN0b3I8VXBkYXRlRW50cnk+Jik7CisKICAgICBUZXh0dXJlQWxsb2NhdG9yKiBtX2FsbG9jYXRv
cjsKICAgICBzaXplX3QgbV9lbnRyeUluZGV4OwogICAgIFZlY3RvcjxVcGRhdGVFbnRyeT4gbV9l
bnRyaWVzOworICAgIFZlY3RvcjxVcGRhdGVFbnRyeT4gbV9wYXJ0aWFsRW50cmllczsKIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggMjBhYzUzMTgwZTlhY2MxNDZkMTc2
NTcxYzJmNmI0N2QwZDU5ZGYzZi4uNjYyZDU4YTcwN2Y5NmQ4MWVjYjliZjg4Zjc4MzliYWNiZWVi
MDM3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTQzLDcgKzQzLDkgQEAgdXNp
bmcgbmFtZXNwYWNlIFdURjsKIAogbmFtZXNwYWNlIHsKIAotc3RhdGljIGNvbnN0IHNpemVfdCB0
ZXh0dXJlVXBkYXRlc1BlckZyYW1lID0gMDsKKy8vIE51bWJlciBvZiB0ZXh0dXJlcyB0byB1cGRh
dGUgd2l0aCBlYWNoIGNhbGwgdG8KKy8vIHNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJj
ZXMoKS4KK3N0YXRpYyBjb25zdCBzaXplX3QgdGV4dHVyZVVwZGF0ZXNQZXJGcmFtZSA9IDU7CiAK
IH0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCkBAIC00NDQsNyArNDQ2LDcgQEAgdm9pZCBDQ1Ro
cmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKCkKIHsKICAgICBU
UkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291
cmNlcyIsIHRoaXMsIDApOwogICAgIEFTU0VSVChtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1w
bFRocmVhZCk7Ci0gICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQtPnVwZGF0
ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIHRleHR1cmVVcGRhdGVzUGVyRnJhbWUg
PiAwID8gdGV4dHVyZVVwZGF0ZXNQZXJGcmFtZSA6IDk5OTk5KTsKKyAgICBtX2N1cnJlbnRUZXh0
dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+dXBkYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRl
eHQoKSwgdGV4dHVyZVVwZGF0ZXNQZXJGcmFtZSk7CiB9CiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6
c2NoZWR1bGVkQWN0aW9uQ29tbWl0KCkKQEAgLTU3MCw5ICs1NzIsOSBAQCB2b2lkIENDVGhyZWFk
UHJveHk6OmxheWVyVHJlZUhvc3RDbG9zZWRPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQq
IGNvbXBsZXRpbwogICAgIGNvbXBsZXRpb24tPnNpZ25hbCgpOwogfQogCi1ib29sIENDVGhyZWFk
UHJveHk6OnBhcnRpYWxUZXh0dXJlVXBkYXRlQ2FwYWJpbGl0eSgpIGNvbnN0CitzaXplX3QgQ0NU
aHJlYWRQcm94eTo6bWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gIXRleHR1cmVVcGRhdGVzUGVyRnJhbWU7CisgICAgcmV0dXJuIHRleHR1cmVVcGRhdGVzUGVy
RnJhbWU7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHku
aAppbmRleCBhMTFiNTI3ODU5OTMxY2ZiOThmODcyNGE1MTI0M2EwOWI0ZWNjM2I5Li44NTI5YTRl
NGNiNzAwODNjYmVkODc1MjQ2MWE1ZmI3NmEzNzYwMmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94
eS5oCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJs
ZShib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3Rv
cCgpOwotICAgIHZpcnR1YWwgYm9vbCBwYXJ0aWFsVGV4dHVyZVVwZGF0ZUNhcGFiaWxpdHkoKSBj
b25zdDsKKyAgICB2aXJ0dWFsIHNpemVfdCBtYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMoKSBjb25z
dDsKIAogICAgIC8vIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQgaW1wbGVtZW50YXRpb24KICAg
ICB2aXJ0dWFsIHZvaWQgb25Td2FwQnVmZmVyc0NvbXBsZXRlT25JbXBsVGhyZWFkKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3Qu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNw
cAppbmRleCA1OGRlNzU5YmIzMzkzYjVkZTdkOTg2MjA2YjdjZWY5M2Y3YWEyZDcxLi4xYmYxZWIw
NmIxNDM4ZWViNWZjMjFkZTc1YTZhNGU1ZjIzMzRiYzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKQEAgLTExMzUsMTYg
KzExMzUsMTUgQEAgcHVibGljOgogY2xhc3MgQ0NMYXllclRyZWVIb3N0VGVzdEF0b21pY0NvbW1p
dCA6IHB1YmxpYyBDQ0xheWVyVHJlZUhvc3RUZXN0IHsKIHB1YmxpYzoKICAgICBDQ0xheWVyVHJl
ZUhvc3RUZXN0QXRvbWljQ29tbWl0KCkKLSAgICAgICAgOiBtX3VwZGF0ZUNoZWNrTGF5ZXIoQ29u
dGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OmNyZWF0ZSgmbV9kZWxlZ2F0ZSkp
Ci0gICAgICAgICwgbV9udW1Db21taXRzKDApCisgICAgICAgIDogbV9sYXllcihDb250ZW50TGF5
ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Y3JlYXRlKCZtX2RlbGVnYXRlKSkKICAgICB7
CiAgICAgICAgIC8vIE1ha2Ugc3VyZSBwYXJ0aWFsIHRleHR1cmUgdXBkYXRlcyBhcmUgdHVybmVk
IG9mZi4KLSAgICAgICAgbV9zZXR0aW5ncy5wYXJ0aWFsVGV4dHVyZVVwZGF0ZXMgPSBmYWxzZTsK
KyAgICAgICAgbV9zZXR0aW5ncy5tYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMgPSAwOwogICAgIH0K
IAogICAgIHZpcnR1YWwgdm9pZCBiZWdpblRlc3QoKQogICAgIHsKLSAgICAgICAgbV9sYXllclRy
ZWVIb3N0LT5zZXRSb290TGF5ZXIobV91cGRhdGVDaGVja0xheWVyKTsKKyAgICAgICAgbV9sYXll
clRyZWVIb3N0LT5zZXRSb290TGF5ZXIobV9sYXllcik7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9z
dC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMTAsIDEwKSk7CiAKICAgICAgICAgcG9zdFNldE5l
ZWRzQ29tbWl0VG9NYWluVGhyZWFkKCk7CkBAIC0xMTYxLDcgKzExNjAsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICBFWFBFQ1RfRVEoMSwgY29udGV4dC0+bnVtVGV4dHVyZXMoKSk7CiAgICAgICAg
ICAgICAvLyBOdW1iZXIgb2YgdGV4dHVyZXMgdXNlZCBmb3IgY29tbWl0IHNob3VsZCBiZSBvbmUu
CiAgICAgICAgICAgICBFWFBFQ1RfRVEoMSwgY29udGV4dC0+bnVtVXNlZFRleHR1cmVzKCkpOwot
ICAgICAgICAgICAgLy8gVmVyaWZ5IHVzZWQgdGV4dHVyZSBpcyBjb3JyZWN0LgorICAgICAgICAg
ICAgLy8gVmVyaWZ5IHRoYXQgdXNlZCB0ZXh0dXJlIGlzIGNvcnJlY3QuCiAgICAgICAgICAgICBF
WFBFQ1RfVFJVRShjb250ZXh0LT51c2VkVGV4dHVyZShjb250ZXh0LT50ZXh0dXJlKDApKSk7CiAK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlc2V0VXNlZFRleHR1cmVzKCk7CkBAIC0xMjAyLDcgKzEy
MDEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkKICAgICB7Ci0gICAg
ICAgIG1fdXBkYXRlQ2hlY2tMYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7CisgICAgICAgIG1fbGF5
ZXItPnNldE5lZWRzRGlzcGxheSgpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBhZnRlclRl
c3QoKQpAQCAtMTIxMSw4ICsxMjEwLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIE1vY2tD
b250ZW50TGF5ZXJEZWxlZ2F0ZSBtX2RlbGVnYXRlOwotICAgIFJlZlB0cjxDb250ZW50TGF5ZXJD
aHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZz4gbV91cGRhdGVDaGVja0xheWVyOwotICAgIGludCBt
X251bUNvbW1pdHM7CisgICAgUmVmUHRyPENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRy
YWNraW5nPiBtX2xheWVyOwogfTsKIAogVEVTVF9GKENDTGF5ZXJUcmVlSG9zdFRlc3RBdG9taWND
b21taXQsIHJ1bk11bHRpVGhyZWFkKQpAQCAtMTIyMCw0ICsxMjE4LDEzMSBAQCBURVNUX0YoQ0NM
YXllclRyZWVIb3N0VGVzdEF0b21pY0NvbW1pdCwgcnVuTXVsdGlUaHJlYWQpCiAgICAgcnVuVGVz
dCh0cnVlKTsKIH0KIAorY2xhc3MgQ0NMYXllclRyZWVIb3N0VGVzdEF0b21pY0NvbW1pdFdpdGhQ
YXJ0aWFsVXBkYXRlIDogcHVibGljIENDTGF5ZXJUcmVlSG9zdFRlc3QgeworcHVibGljOgorICAg
IENDTGF5ZXJUcmVlSG9zdFRlc3RBdG9taWNDb21taXRXaXRoUGFydGlhbFVwZGF0ZSgpCisgICAg
ICAgIDogbV9wYXJlbnQoQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OmNy
ZWF0ZSgmbV9kZWxlZ2F0ZSkpCisgICAgICAgICwgbV9jaGlsZChDb250ZW50TGF5ZXJDaHJvbWl1
bVdpdGhVcGRhdGVUcmFja2luZzo6Y3JlYXRlKCZtX2RlbGVnYXRlKSkKKyAgICAgICAgLCBtX251
bUNvbW1pdHMoMCkKKyAgICB7CisgICAgICAgIC8vIEFsbG93IG9uZSBwYXJ0aWFsIHRleHR1cmUg
dXBkYXRlLgorICAgICAgICBtX3NldHRpbmdzLm1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcyA9IDE7
CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGJlZ2luVGVzdCgpCisgICAgeworICAgICAgICBt
X2xheWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcihtX3BhcmVudCk7CisgICAgICAgIG1fbGF5ZXJU
cmVlSG9zdC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMTAsIDEwKSk7CisgICAgICAgIG1fcGFy
ZW50LT5hZGRDaGlsZChtX2NoaWxkKTsKKyAgICAgICAgbV9jaGlsZC0+c2V0T3BhY2l0eSgwLjUp
OworICAgICAgICBtX2NoaWxkLT5zZXRCb3VuZHMoSW50U2l6ZSgyMCwgMjApKTsKKworICAgICAg
ICBwb3N0U2V0TmVlZHNDb21taXRUb01haW5UaHJlYWQoKTsKKyAgICAgICAgcG9zdFNldE5lZWRz
UmVkcmF3VG9NYWluVGhyZWFkKCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGNvbW1pdENv
bXBsZXRlT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKQorICAgIHsKKyAgICAg
ICAgQ29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhUZXh0dXJlVHJhY2tpbmcq
IGNvbnRleHQgPSBzdGF0aWNfY2FzdDxDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNE
V2l0aFRleHR1cmVUcmFja2luZyo+KEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0cmFjdFdl
YkdyYXBoaWNzQ29udGV4dDNEKGltcGwtPmNvbnRleHQoKSkpOworCisgICAgICAgIHN3aXRjaCAo
aW1wbC0+ZnJhbWVOdW1iZXIoKSkgeworICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICAvLyBO
dW1iZXIgb2YgdGV4dHVyZXMgc2hvdWxkIGJlIHR3by4KKyAgICAgICAgICAgIEVYUEVDVF9FUSgy
LCBjb250ZXh0LT5udW1UZXh0dXJlcygpKTsKKyAgICAgICAgICAgIC8vIE51bWJlciBvZiB0ZXh0
dXJlcyB1c2VkIGZvciBjb21taXQgc2hvdWxkIGJlIHR3by4KKyAgICAgICAgICAgIEVYUEVDVF9F
USgyLCBjb250ZXh0LT5udW1Vc2VkVGV4dHVyZXMoKSk7CisgICAgICAgICAgICAvLyBWZXJpZnkg
dGhhdCB1c2VkIHRleHR1cmVzIGFyZSBjb3JyZWN0LgorICAgICAgICAgICAgRVhQRUNUX1RSVUUo
Y29udGV4dC0+dXNlZFRleHR1cmUoY29udGV4dC0+dGV4dHVyZSgwKSkpOworICAgICAgICAgICAg
RVhQRUNUX1RSVUUoY29udGV4dC0+dXNlZFRleHR1cmUoY29udGV4dC0+dGV4dHVyZSgxKSkpOwor
CisgICAgICAgICAgICBjb250ZXh0LT5yZXNldFVzZWRUZXh0dXJlcygpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgIC8vIE51bWJlciBvZiB0ZXh0dXJl
cyBzaG91bGQgYmUgZm91ciBhcyB0aGUgZmlyc3QgdHdvCisgICAgICAgICAgICAvLyB0ZXh0dXJl
cyBhcmUgdXNlZCBieSB0aGUgaW1wbCB0aHJlYWQuCisgICAgICAgICAgICBFWFBFQ1RfRVEoNCwg
Y29udGV4dC0+bnVtVGV4dHVyZXMoKSk7CisgICAgICAgICAgICAvLyBOdW1iZXIgb2YgdGV4dHVy
ZXMgdXNlZCBmb3IgY29tbWl0IHNob3VsZCBzdGlsbCBiZSB0d28uCisgICAgICAgICAgICBFWFBF
Q1RfRVEoMiwgY29udGV4dC0+bnVtVXNlZFRleHR1cmVzKCkpOworICAgICAgICAgICAgLy8gRmly
c3QgdHdvIHRleHR1cmVzIHNob3VsZCBub3QgaGF2ZSBiZWVuIHVzZWQuCisgICAgICAgICAgICBF
WFBFQ1RfRkFMU0UoY29udGV4dC0+dXNlZFRleHR1cmUoY29udGV4dC0+dGV4dHVyZSgwKSkpOwor
ICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGNvbnRleHQtPnVzZWRUZXh0dXJlKGNvbnRleHQtPnRl
eHR1cmUoMSkpKTsKKyAgICAgICAgICAgIC8vIE5ldyB0ZXh0dXJlcyBzaG91bGQgaGF2ZSBiZWVu
IHVzZWQuCisgICAgICAgICAgICBFWFBFQ1RfVFJVRShjb250ZXh0LT51c2VkVGV4dHVyZShjb250
ZXh0LT50ZXh0dXJlKDIpKSk7CisgICAgICAgICAgICBFWFBFQ1RfVFJVRShjb250ZXh0LT51c2Vk
VGV4dHVyZShjb250ZXh0LT50ZXh0dXJlKDMpKSk7CisKKyAgICAgICAgICAgIGNvbnRleHQtPnJl
c2V0VXNlZFRleHR1cmVzKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyOgor
ICAgICAgICAgICAgLy8gTnVtYmVyIG9mIHRleHR1cmVzIHNob3VsZCBiZSB0aHJlZSBhcyB3ZSBh
bGxvdyBvbmUKKyAgICAgICAgICAgIC8vIHBhcnRpYWwgdXBkYXRlIGFuZCB0aGUgZmlyc3QgdHdv
IHRleHR1cmVzIGFyZSB1c2VkIGJ5CisgICAgICAgICAgICAvLyB0aGUgaW1wbCB0aHJlYWQuCisg
ICAgICAgICAgICBFWFBFQ1RfRVEoMywgY29udGV4dC0+bnVtVGV4dHVyZXMoKSk7CisgICAgICAg
ICAgICAvLyBOdW1iZXIgb2YgdGV4dHVyZXMgdXNlZCBmb3IgY29tbWl0IHNob3VsZCBzdGlsbCBi
ZSB0d28uCisgICAgICAgICAgICBFWFBFQ1RfRVEoMiwgY29udGV4dC0+bnVtVXNlZFRleHR1cmVz
KCkpOworICAgICAgICAgICAgLy8gRmlyc3QgdGV4dHVyZSBzaG91bGQgbm90IGhhdmUgYmVlbiB1
c2VkLgorICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGNvbnRleHQtPnVzZWRUZXh0dXJlKGNvbnRl
eHQtPnRleHR1cmUoMCkpKTsKKyAgICAgICAgICAgIC8vIFNlY29uZCB0ZXh0dXJlIHNob3VsZCBo
YXZlIGJlZW4gdXNlZC4KKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKGNvbnRleHQtPnVzZWRUZXh0
dXJlKGNvbnRleHQtPnRleHR1cmUoMSkpKTsKKyAgICAgICAgICAgIC8vIE5ldyB0ZXh0dXJlcyBz
aG91bGQgaGF2ZSBiZWVuIHVzZWQuCisgICAgICAgICAgICBFWFBFQ1RfVFJVRShjb250ZXh0LT51
c2VkVGV4dHVyZShjb250ZXh0LT50ZXh0dXJlKDIpKSk7CisKKyAgICAgICAgICAgIGNvbnRleHQt
PnJlc2V0VXNlZFRleHR1cmVzKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NUaHJl
YWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkKKyAgICB7CisgICAgICAgIENvbXBvc2l0b3JG
YWtlV2ViR3JhcGhpY3NDb250ZXh0M0RXaXRoVGV4dHVyZVRyYWNraW5nKiBjb250ZXh0ID0gc3Rh
dGljX2Nhc3Q8Q29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhUZXh0dXJlVHJh
Y2tpbmcqPihHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmV4dHJhY3RXZWJHcmFwaGljc0NvbnRl
eHQzRChpbXBsLT5jb250ZXh0KCkpKTsKKworICAgICAgICAvLyBOdW1iZXIgb2YgdGV4dHVyZXMg
dXNlZCBmb3IgZHJhd2luZyBzaG91bGQgYWx3YXlzIGJlIHR3by4KKyAgICAgICAgRVhQRUNUX0VR
KDIsIGNvbnRleHQtPm51bVVzZWRUZXh0dXJlcygpKTsKKworICAgICAgICBpZiAoaW1wbC0+ZnJh
bWVOdW1iZXIoKSA8IDMpIHsKKyAgICAgICAgICAgIGNvbnRleHQtPnJlc2V0VXNlZFRleHR1cmVz
KCk7CisgICAgICAgICAgICBwb3N0U2V0TmVlZHNBbmltYXRlQW5kQ29tbWl0VG9NYWluVGhyZWFk
KCk7CisgICAgICAgICAgICBwb3N0U2V0TmVlZHNSZWRyYXdUb01haW5UaHJlYWQoKTsKKyAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAgfQorCisgICAgdmlydHVhbCB2
b2lkIGxheW91dCgpCisgICAgeworICAgICAgICBzd2l0Y2ggKG1fbnVtQ29tbWl0cysrKSB7Cisg
ICAgICAgIGNhc2UgMDoKKyAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgbV9wYXJlbnQtPnNl
dE5lZWRzRGlzcGxheSgpOworICAgICAgICAgICAgbV9jaGlsZC0+c2V0TmVlZHNEaXNwbGF5KCk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgLy8gRGFt
YWdlIHBhcnQgb2YgbGF5ZXJzLgorICAgICAgICAgICAgbV9wYXJlbnQtPnNldE5lZWRzRGlzcGxh
eVJlY3QoRmxvYXRSZWN0KDAsIDAsIDUsIDUpKTsKKyAgICAgICAgICAgIG1fY2hpbGQtPnNldE5l
ZWRzRGlzcGxheVJlY3QoRmxvYXRSZWN0KDAsIDAsIDUsIDUpKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBh
ZnRlclRlc3QoKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgTW9ja0NvbnRlbnRMYXll
ckRlbGVnYXRlIG1fZGVsZWdhdGU7CisgICAgUmVmUHRyPENvbnRlbnRMYXllckNocm9taXVtV2l0
aFVwZGF0ZVRyYWNraW5nPiBtX3BhcmVudDsKKyAgICBSZWZQdHI8Q29udGVudExheWVyQ2hyb21p
dW1XaXRoVXBkYXRlVHJhY2tpbmc+IG1fY2hpbGQ7CisgICAgaW50IG1fbnVtQ29tbWl0czsKK307
CisKK1RFU1RfRihDQ0xheWVyVHJlZUhvc3RUZXN0QXRvbWljQ29tbWl0V2l0aFBhcnRpYWxVcGRh
dGUsIHJ1bk11bHRpVGhyZWFkKQoreworICAgIHJ1blRlc3QodHJ1ZSk7Cit9CisKKwogfSAvLyBu
YW1lc3BhY2UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124625</attachid>
            <date>2012-01-30 16:30:51 -0800</date>
            <delta_ts>2012-02-01 10:39:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76740-20120130193050.patch</filename>
            <type>text/plain</type>
            <size>27232</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2Mjk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWI2ZjVkMGMxMTU5YzFi
YmI0ZTVlNjE1MWYxYjM2Y2Q3YWIxNzNmMC4uYzhlMjM1MjQwNWNjOGQxYmRjNjljZjA4M2ZhM2E5
NmUzOTZmOTcxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTAxLTMwICBEYXZp
ZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBB
dm9pZCB1bm5lY2Vzc2FyeSBmdWxsIHRpbGUgdXBkYXRlcyB3aXRob3V0IGJyZWFraW5nIGF0b21p
Y2l0eSBvZiBjb21taXRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzY3NDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBbGxvdyB0aGUgZmluYWwgYmF0Y2ggb2YgdGV4dHVyZSB1cGxvYWRzIHRvIGJlIHBl
cmZvcm1lZCB3aXRob3V0CisgICAgICAgIGFsbG9jYXRpbmcgbmV3IHRleHR1cmVzIGFuZCByZS1w
YWludGluZyBjb21wbGV0ZSB0aWxlcy4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIHRlc3RlZCBi
eSB0aGUgZm9sbG93aW5nIHVuaXQgdGVzdDoKKyAgICAgICAgLSBDQ0xheWVyVHJlZUhvc3RUZXN0
QXRvbWljQ29tbWl0V2l0aFBhcnRpYWxVcGRhdGUucnVuTXVsdGlUaHJlYWQKKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpVcGRhdGFibGVUaWxlOjpVcGRhdGFibGVUaWxlKToKKyAgICAgICAgKFVw
ZGF0YWJsZVRpbGUpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjp1cGRh
dGVDb21wb3NpdG9yUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJv
bWl1bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVyVHJlZUhvc3Q6OkNDTGF5ZXJUcmVlSG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
VHJlZUhvc3Q6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
Ojp1cGRhdGVMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpyZXF1
ZXN0UGFydGlhbFRleHR1cmVVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpDQ1NldHRpbmdzOjpDQ1NldHRpbmdzKToKKyAgICAgICAgKENDU2V0dGluZ3Mp
OgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0KToKKyAgICAgICAgKCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oOgorICAgICAgICAoQ0NQcm94eSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQ
cm94eS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRo
cmVhZFByb3h5OjptYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NUZXh0dXJlVXBkYXRlcjo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlcjo6YXBwZW5kUGFydGlhbCk6CisgICAgICAg
IChXZWJDb3JlOjpDQ1RleHR1cmVVcGRhdGVyOjpoYXNNb3JlVXBkYXRlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1RleHR1cmVVcGRhdGVyOjp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NU
ZXh0dXJlVXBkYXRlcjo6Y2xlYXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaDoKKyAgICAgICAgKENDVGV4dHVyZVVwZGF0ZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3Bw
OgorICAgICAgICAoV1RGKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNjaGVk
dWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJl
YWRQcm94eTo6bWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5Lmg6CisgICAgICAgIChDQ1RocmVhZFBy
b3h5KToKKwogMjAxMi0wMS0zMCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBDcmFzaCBpbiBwcmV2aW91c0xpbmVQb3NpdGlvbiB3aGVuIG1vdmluZyBpbnRvIGEg
cm9vdCBpbmxpbmUgYm94IHdpdGhvdXQgbGVhdmVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmlu
ZGV4IGQ3YWViZDk5ZjAzODEyMzA3ZDEyOWMwY2ZlY2VmMTU5ZDI4YzFkYjAuLmIyNWE0NTQ2MzQ5
NjYzNzFmNThmZTA1MGEwZjdmZTBlNGUxODNlOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjkgQEAKKzIwMTItMDEtMzAgIERhdmlkIFJldmVtYW4gIDxyZXZlbWFuQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIEF2b2lkIHVubmVjZXNzYXJ5IGZ1bGwg
dGlsZSB1cGRhdGVzIHdpdGhvdXQgYnJlYWtpbmcgYXRvbWljaXR5IG9mIGNvbW1pdHMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Njc0MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBDQ0xheWVyVHJl
ZUhvc3RUZXN0QXRvbWljQ29tbWl0V2l0aFBhcnRpYWxVcGRhdGUgdGVzdCB0aGF0IHZlcmlmaWVz
CisgICAgICAgIGF0b21pY2l0eSBvZiBjb21taXRzIHdpdGggcGFydGlhbCB1cGRhdGVzLgorCisg
ICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHA6CisgICAgICAgIChXVEY6OkND
TGF5ZXJUcmVlSG9zdFRlc3RBdG9taWNDb21taXQ6OkNDTGF5ZXJUcmVlSG9zdFRlc3RBdG9taWND
b21taXQpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0QXRvbWljQ29tbWl0Ojpi
ZWdpblRlc3QpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0QXRvbWljQ29tbWl0
Ojpjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhv
c3RUZXN0QXRvbWljQ29tbWl0OjpsYXlvdXQpOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0VGVz
dEF0b21pY0NvbW1pdCk6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3RUZXN0QXRvbWljQ29tbWl0
V2l0aFBhcnRpYWxVcGRhdGUpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0QXRv
bWljQ29tbWl0V2l0aFBhcnRpYWxVcGRhdGU6OkNDTGF5ZXJUcmVlSG9zdFRlc3RBdG9taWNDb21t
aXRXaXRoUGFydGlhbFVwZGF0ZSk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RB
dG9taWNDb21taXRXaXRoUGFydGlhbFVwZGF0ZTo6YmVnaW5UZXN0KToKKyAgICAgICAgKFdURjo6
Q0NMYXllclRyZWVIb3N0VGVzdEF0b21pY0NvbW1pdFdpdGhQYXJ0aWFsVXBkYXRlOjpjb21taXRD
b21wbGV0ZU9uQ0NUaHJlYWQpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0QXRv
bWljQ29tbWl0V2l0aFBhcnRpYWxVcGRhdGU6OmRyYXdMYXllcnNPbkNDVGhyZWFkKToKKyAgICAg
ICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdEF0b21pY0NvbW1pdFdpdGhQYXJ0aWFsVXBkYXRl
OjpsYXlvdXQpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0QXRvbWljQ29tbWl0
V2l0aFBhcnRpYWxVcGRhdGU6OmFmdGVyVGVzdCk6CisgICAgICAgIChXVEYpOgorICAgICAgICAo
V1RGOjpURVNUX0YpOgorCiAyMDEyLTAxLTMwICBBZHJpZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2ds
ZS5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBBbHdheXMgcHJlLXJlc2VydmUgc2Nyb2xsYmFy
IGFuZCBzY3JvbGwgY29ybmVyIHRleHR1cmVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNw
cAppbmRleCAxN2YxNGZjMzA4MDg5YWI0YWQwNzhhMTAwYTg5ODg4MWEwMTAzMDZlLi41YWU0OWMw
ZWY5Zjc5ZjM3YTNkZjM0N2MxOTY1MjZlNDBjZDZkYTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJD
aHJvbWl1bS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
VXBkYXRhYmxlVGlsZSA6IHB1YmxpYyBDQ0xheWVyVGlsaW5nRGF0YTo6VGlsZSB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoVXBkYXRhYmxlVGlsZSk7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQg
VXBkYXRhYmxlVGlsZShQYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IHRl
eHR1cmUpIDogbV90ZXh0dXJlKHRleHR1cmUpIHsgfQorICAgIGV4cGxpY2l0IFVwZGF0YWJsZVRp
bGUoUGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlPiB0ZXh0dXJlKSA6IG1f
cGFydGlhbFVwZGF0ZShmYWxzZSksIG1fdGV4dHVyZSh0ZXh0dXJlKSB7IH0KIAogICAgIExheWVy
VGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiBtX3RleHR1cmUuZ2V0
KCk7IH0KICAgICBNYW5hZ2VkVGV4dHVyZSogbWFuYWdlZFRleHR1cmUoKSB7IHJldHVybiBtX3Rl
eHR1cmUtPnRleHR1cmUoKTsgfQpAQCAtNjcsNiArNjcsNyBAQCBwdWJsaWM6CiAKICAgICBJbnRS
ZWN0IG1fZGlydHlSZWN0OwogICAgIEludFJlY3QgbV91cGRhdGVSZWN0OworICAgIGJvb2wgbV9w
YXJ0aWFsVXBkYXRlOwogcHJpdmF0ZToKICAgICBPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VGV4dHVyZT4gbV90ZXh0dXJlOwogfTsKQEAgLTIzMyw3ICsyMzQsMTAgQEAgdm9pZCBUaWxlZExh
eWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0Qq
LCBDQ1RleHR1cmUKICAgICAgICAgICAgIGlmIChwYWludE9mZnNldC55KCkgKyBkZXN0UmVjdC5o
ZWlnaHQoKSA+IG1fcGFpbnRSZWN0LmhlaWdodCgpKQogICAgICAgICAgICAgICAgIENSQVNIKCk7
CiAKLSAgICAgICAgICAgIHVwZGF0ZXIuYXBwZW5kKHRpbGUtPnRleHR1cmUoKSwgc291cmNlUmVj
dCwgZGVzdFJlY3QpOworICAgICAgICAgICAgaWYgKHRpbGUtPm1fcGFydGlhbFVwZGF0ZSkKKyAg
ICAgICAgICAgICAgICB1cGRhdGVyLmFwcGVuZFBhcnRpYWwodGlsZS0+dGV4dHVyZSgpLCBzb3Vy
Y2VSZWN0LCBkZXN0UmVjdCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdXBk
YXRlci5hcHBlbmQodGlsZS0+dGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CiAgICAg
ICAgIH0KICAgICB9CiAKQEAgLTM2OCw2ICszNzIsNyBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1
bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50
CiAgICAgZm9yIChDQ0xheWVyVGlsaW5nRGF0YTo6VGlsZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXRl
ciA9IG1fdGlsZXItPnRpbGVzKCkuYmVnaW4oKTsgaXRlciAhPSBtX3RpbGVyLT50aWxlcygpLmVu
ZCgpOyArK2l0ZXIpIHsKICAgICAgICAgVXBkYXRhYmxlVGlsZSogdGlsZSA9IHN0YXRpY19jYXN0
PFVwZGF0YWJsZVRpbGUqPihpdGVyLT5zZWNvbmQuZ2V0KCkpOwogICAgICAgICB0aWxlLT5tX3Vw
ZGF0ZVJlY3QgPSBJbnRSZWN0KCk7CisgICAgICAgIHRpbGUtPm1fcGFydGlhbFVwZGF0ZSA9IGZh
bHNlOwogICAgIH0KIAogICAgIC8vIENyZWF0ZSB0aWxlcyBhcyBuZWVkZWQsIGV4cGFuZGluZyBh
IGRpcnR5IHJlY3QgdG8gY29udGFpbiBhbGwKQEAgLTM4MSwxMCArMzg2LDQzIEBAIHZvaWQgVGls
ZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0
LCBpbnQgdG9wLCBpbnQKICAgICAgICAgICAgIGlmICghdGlsZSkKICAgICAgICAgICAgICAgICB0
aWxlID0gY3JlYXRlVGlsZShpLCBqKTsKIAotICAgICAgICAgICAgLy8gRG8gcG9zdCBjb21taXQg
ZGVsZXRpb24gb2YgY3VycmVudCB0ZXh0dXJlIHdoZW4gcGFydGlhbCB0ZXh0dXJlCi0gICAgICAg
ICAgICAvLyB1cGRhdGVzIGFyZSBub3QgdXNlZC4KLSAgICAgICAgICAgIGlmICh0aWxlLT5pc0Rp
cnR5KCkgJiYgbGF5ZXJUcmVlSG9zdCgpICYmICFsYXllclRyZWVIb3N0KCktPnNldHRpbmdzKCku
cGFydGlhbFRleHR1cmVVcGRhdGVzKQorICAgICAgICAgICAgYm9vbCBwYXJ0aWFsVXBkYXRlID0g
dHJ1ZTsKKyAgICAgICAgICAgIGJvb2wgZGVsZXRlQWZ0ZXJDb21taXQgPSB0cnVlOworCisgICAg
ICAgICAgICBpZiAoIWxheWVyVHJlZUhvc3QoKSkgeworICAgICAgICAgICAgICAgIHBhcnRpYWxV
cGRhdGUgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBkZWxldGVBZnRlckNvbW1pdCA9IGZhbHNl
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBQYXJ0aWFsIHVwZGF0ZSBkb2Vzbid0
IGFwcGx5IHRvIG5ldyB0ZXh0dXJlcy4KKyAgICAgICAgICAgIGlmICghdGlsZS0+bWFuYWdlZFRl
eHR1cmUoKS0+aXNWYWxpZChtX3RpbGVyLT50aWxlU2l6ZSgpLCBtX3RleHR1cmVGb3JtYXQpKSB7
CisgICAgICAgICAgICAgICAgcGFydGlhbFVwZGF0ZSA9IGZhbHNlOworICAgICAgICAgICAgICAg
IGRlbGV0ZUFmdGVyQ29tbWl0ID0gZmFsc2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IC8vIEF2b2lkIHBhcnRpYWwgdXBkYXRlIHdoZW4gdGlsZSBpcyBjb21wbGV0ZWx5IGRhbWFnZWQu
CisgICAgICAgICAgICBpZiAodGlsZS0+bV9kaXJ0eVJlY3QuY29udGFpbnMobV90aWxlci0+dGls
ZVJlY3QodGlsZSkpKQorICAgICAgICAgICAgICAgIHBhcnRpYWxVcGRhdGUgPSBmYWxzZTsKKwor
ICAgICAgICAgICAgaWYgKHRpbGUtPmlzRGlydHkoKSAmJiBwYXJ0aWFsVXBkYXRlKSB7CisgICAg
ICAgICAgICAgICAgQVNTRVJUKGxheWVyVHJlZUhvc3QoKSk7CisKKyAgICAgICAgICAgICAgICAv
LyBUcnkgdG8gcmVxdWVzdCBwYXJ0aWFsIHRleHR1cmUgdXBkYXRlLiBUaGlzIHdpbGwgZmFpbAor
ICAgICAgICAgICAgICAgIC8vIGFuZCBmb3JjZSB1cyB0byB1c2UgYSBuZXcgdGV4dHVyZSB3aGVu
IHdlIHJlYWNoIHRoZQorICAgICAgICAgICAgICAgIC8vIGN1cnJlbnQgbWF4aW11bSBwYXJ0aWFs
IHVwZGF0ZSBjb3VudC4KKyAgICAgICAgICAgICAgICBpZiAobGF5ZXJUcmVlSG9zdCgpLT5yZXF1
ZXN0UGFydGlhbFRleHR1cmVVcGRhdGUoKSkgeworICAgICAgICAgICAgICAgICAgICB0aWxlLT5t
X3BhcnRpYWxVcGRhdGUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBkZWxldGVBZnRlckNv
bW1pdCA9IGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgLy8gRG8gcG9zdCBjb21taXQgZGVsZXRpb24gb2YgY3VycmVudCB0ZXh0dXJlIHdoZW4g
cGFydGlhbAorICAgICAgICAgICAgLy8gdGV4dHVyZSB1cGRhdGUgaXMgbm90IHBvc3NpYmxlLgor
ICAgICAgICAgICAgaWYgKGRlbGV0ZUFmdGVyQ29tbWl0KSB7CisgICAgICAgICAgICAgICAgQVNT
RVJUKGxheWVyVHJlZUhvc3QoKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKHRpbGUtPm1hbmFn
ZWRUZXh0dXJlKCktPmlzVmFsaWQobV90aWxlci0+dGlsZVNpemUoKSwgbV90ZXh0dXJlRm9ybWF0
KSk7CiAgICAgICAgICAgICAgICAgbGF5ZXJUcmVlSG9zdCgpLT5kZWxldGVUZXh0dXJlQWZ0ZXJD
b21taXQodGlsZS0+bWFuYWdlZFRleHR1cmUoKS0+c3RlYWwoKSk7CisgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIGlmICghdGlsZS0+bWFuYWdlZFRleHR1cmUoKS0+aXNWYWxpZChtX3RpbGVy
LT50aWxlU2l6ZSgpLCBtX3RleHR1cmVGb3JtYXQpKQogICAgICAgICAgICAgICAgIHRpbGUtPm1f
ZGlydHlSZWN0ID0gbV90aWxlci0+dGlsZVJlY3QodGlsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0LmNwcAppbmRleCA2MmQ2Y2UyMzBmZDBmMWJjNmJhYmUyNDQwNjE1NGY2Nzk2YzRlMWJk
Li44MGQ1OTQ1OTc3YTNjNWZjYTk3Y2E0YjM3YWNmYTM1OTI1NWEzYTU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTY5LDYgKzY5LDcgQEAgQ0NMYXllclRyZWVIb3N0OjpD
Q0xheWVyVHJlZUhvc3QoQ0NMYXllclRyZWVIb3N0Q2xpZW50KiBjbGllbnQsIGNvbnN0IENDU2V0
dGluZ3MKICAgICAsIG1fbWluUGFnZVNjYWxlKDEpCiAgICAgLCBtX21heFBhZ2VTY2FsZSgxKQog
ICAgICwgbV90cmlnZ2VySWRsZVBhaW50cyh0cnVlKQorICAgICwgbV9wYXJ0aWFsVGV4dHVyZVVw
ZGF0ZVJlcXVlc3RzKDApCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgpKTsK
ICAgICBudW1MYXllclRyZWVJbnN0YW5jZXMrKzsKQEAgLTk2LDcgKzk3LDcgQEAgYm9vbCBDQ0xh
eWVyVHJlZUhvc3Q6OmluaXRpYWxpemUoKQogICAgIG1fc2V0dGluZ3MuYWNjZWxlcmF0ZVBhaW50
aW5nID0gbV9wcm94eS0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLnVzaW5nQWNjZWxlcmF0
ZWRQYWludGluZzsKIAogICAgIC8vIFVwZGF0ZSBtX3NldHRpbmdzIGJhc2VkIG9uIHBhcnRpYWwg
dXBkYXRlIGNhcGFiaWxpdHkuCi0gICAgbV9zZXR0aW5ncy5wYXJ0aWFsVGV4dHVyZVVwZGF0ZXMg
PSBtX3NldHRpbmdzLnBhcnRpYWxUZXh0dXJlVXBkYXRlcyAmJiBtX3Byb3h5LT5wYXJ0aWFsVGV4
dHVyZVVwZGF0ZUNhcGFiaWxpdHkoKTsKKyAgICBtX3NldHRpbmdzLm1heFBhcnRpYWxUZXh0dXJl
VXBkYXRlcyA9IG1pbihtX3NldHRpbmdzLm1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcywgbV9wcm94
eS0+bWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKCkpOwogCiAgICAgbV9jb250ZW50c1RleHR1cmVN
YW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZShUZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0
Qnl0ZXModmlld3BvcnRTaXplKCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZU1hbmFnZXI6OnJlY2xhaW1MaW1pdEJ5dGVzKHZp
ZXdwb3J0U2l6ZSgpKSwKQEAgLTM3OSw2ICszODAsOSBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6
dXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qIHJvb3RMYXllcikKICAgICAgICAgQ0NMYXllclRy
ZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocm9vdExh
eWVyLCByb290TGF5ZXIsIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgbV91cGRhdGVM
aXN0LCByb290UmVuZGVyU3VyZmFjZS0+bGF5ZXJMaXN0KCksIGxheWVyUmVuZGVyZXJDYXBhYmls
aXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSk7CiAgICAgfQogCisgICAgLy8gUmVzZXQgcGFydGlhbCB0
ZXh0dXJlIHVwZGF0ZSByZXF1ZXN0cy4KKyAgICBtX3BhcnRpYWxUZXh0dXJlVXBkYXRlUmVxdWVz
dHMgPSAwOworCiAgICAgcmVzZXJ2ZVRleHR1cmVzKCk7CiAKICAgICBwYWludExheWVyQ29udGVu
dHMobV91cGRhdGVMaXN0LCBQYWludFZpc2libGUpOwpAQCAtNTI5LDYgKzUzMywxNSBAQCB2b2lk
IENDTGF5ZXJUcmVlSG9zdDo6c3RvcFJhdGVMaW1pdGVyKEdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0KQogICAgIH0KIH0KIAorYm9vbCBDQ0xheWVyVHJlZUhvc3Q6OnJlcXVlc3RQYXJ0aWFsVGV4
dHVyZVVwZGF0ZSgpCit7CisgICAgaWYgKG1fcGFydGlhbFRleHR1cmVVcGRhdGVSZXF1ZXN0cyA+
PSBtX3NldHRpbmdzLm1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcykKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgbV9wYXJ0aWFsVGV4dHVyZVVwZGF0ZVJlcXVlc3RzKys7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpkZWxldGVUZXh0dXJlQWZ0ZXJDb21t
aXQoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkKIHsKICAgICBtX2RlbGV0ZVRl
eHR1cmVBZnRlckNvbW1pdExpc3QuYXBwZW5kKHRleHR1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3QuaAppbmRleCA4MWI1ZjI1MDVmMWI4NDUwYzZkYWQxM2NmMWM1ZTgzYzAxZjA4MGNjLi5h
N2E4N2I2M2FjY2IwOTk4Y2FlOTNjODAxZGNjYzRkYzI3NTBhZDc3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3QuaApAQCAtNzcsNyArNzcsNyBAQCBzdHJ1Y3QgQ0NTZXR0aW5ncyB7CiAgICAg
ICAgICAgICAsIHJlZnJlc2hSYXRlKDApCiAgICAgICAgICAgICAsIHBlclRpbGVQYWludGluZyhm
YWxzZSkKICAgICAgICAgICAgICwgcGFydGlhbFN3YXBFbmFibGVkKGZhbHNlKQotICAgICAgICAg
ICAgLCBwYXJ0aWFsVGV4dHVyZVVwZGF0ZXModHJ1ZSkgeyB9CisgICAgICAgICAgICAsIG1heFBh
cnRpYWxUZXh0dXJlVXBkYXRlcyh+MCkgeyB9CiAKICAgICBib29sIGFjY2VsZXJhdGVQYWludGlu
ZzsKICAgICBib29sIGNvbXBvc2l0ZU9mZnNjcmVlbjsKQEAgLTg2LDcgKzg2LDcgQEAgc3RydWN0
IENDU2V0dGluZ3MgewogICAgIGRvdWJsZSByZWZyZXNoUmF0ZTsKICAgICBib29sIHBlclRpbGVQ
YWludGluZzsKICAgICBib29sIHBhcnRpYWxTd2FwRW5hYmxlZDsKLSAgICBib29sIHBhcnRpYWxU
ZXh0dXJlVXBkYXRlczsKKyAgICBzaXplX3QgbWF4UGFydGlhbFRleHR1cmVVcGRhdGVzOwogfTsK
IAogLy8gUHJvdmlkZXMgaW5mb3JtYXRpb24gb24gYW4gSW1wbCdzIHJlbmRlcmluZyBjYXBhYmls
aXRpZXMgYmFjayB0byB0aGUgQ0NMYXllclRyZWVIb3N0CkBAIC0xOTQsNiArMTk0LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgc3RhcnRSYXRlTGltaXRlcihHcmFwaGljc0NvbnRleHQzRCopOwogICAg
IHZvaWQgc3RvcFJhdGVMaW1pdGVyKEdyYXBoaWNzQ29udGV4dDNEKik7CiAKKyAgICBib29sIHJl
cXVlc3RQYXJ0aWFsVGV4dHVyZVVwZGF0ZSgpOwogICAgIHZvaWQgZGVsZXRlVGV4dHVyZUFmdGVy
Q29tbWl0KFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+KTsKIAogcHJvdGVjdGVkOgpAQCAtMjQy
LDYgKzI0Myw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3RyaWdnZXJJZGxlUGFpbnRzOwogCiAg
ICAgVGV4dHVyZUxpc3QgbV9kZWxldGVUZXh0dXJlQWZ0ZXJDb21taXRMaXN0OworICAgIHNpemVf
dCBtX3BhcnRpYWxUZXh0dXJlVXBkYXRlUmVxdWVzdHM7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKaW5k
ZXggOTM3YzE1NGZmNjliYTg1M2JiZmM5MzQ1NmQ3NzY2NzEwYzcwYTIyNC4uNjhhYmM2ZDc3NDM4
NWYxN2JlNWU2Njk0ZWUzNWIxZGNkYTIzZGYzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaApAQCAtNzksOSArNzks
OCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0KCkgPSAwOyAvLyBNdXN0IGJlIGNh
bGxlZCBiZWZvcmUgdXNpbmcgdGhlIHByb3h5LgogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgPSAw
OyAvLyBNdXN0IGJlIGNhbGxlZCBiZWZvcmUgZGVsZXRpbmcgdGhlIHByb3h5LgogCi0gICAgLy8g
V2hldGhlciBzdWItcmVnaW9ucyBvZiB0ZXh0dXJlcyBjYW4gYmUgdXBkYXRlZCBvciBpZiBjb21w
bGV0ZSB0ZXh0dXJlCi0gICAgLy8gdXBkYXRlcyBhcmUgcmVxdWlyZWQuCi0gICAgdmlydHVhbCBi
b29sIHBhcnRpYWxUZXh0dXJlVXBkYXRlQ2FwYWJpbGl0eSgpIGNvbnN0ID0gMDsKKyAgICAvLyBN
YXhpbXVtIG51bWJlciBvZiBzdWItcmVnaW9uIHRleHR1cmUgdXBkYXRlcyBzdXBwb3J0ZWQgZm9y
IGVhY2ggY29tbWl0LgorICAgIHZpcnR1YWwgc2l6ZV90IG1heFBhcnRpYWxUZXh0dXJlVXBkYXRl
cygpIGNvbnN0ID0gMDsKIAogICAgIC8vIERlYnVnIGhvb2tzCiAjaWZuZGVmIE5ERUJVRwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
aW5nbGVUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCmluZGV4IDRmYWEyMjk5OTEyYWVjOWM0ZTZh
YjRiYTcwMjdkODFjODA2ZDQ1ZWUuLjBmMmM1NmY1MWE0MDNkNDI4ODMzNjg4MDVlMmYyOTNhYWY5
OGQ5NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKQEAgLTI4LDEwICsy
OCwxMyBAQAogI2luY2x1ZGUgImNjL0NDQ29tcGxldGlvbkV2ZW50LmgiCiAjaW5jbHVkZSAiY2Mv
Q0NMYXllclRyZWVIb3N0SW1wbC5oIgogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKKyNpbmNsdWRl
IDxsaW1pdHM+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdDsKIAogY2xh
c3MgQ0NTaW5nbGVUaHJlYWRQcm94eSA6IHB1YmxpYyBDQ1Byb3h5LCBDQ0xheWVyVHJlZUhvc3RJ
bXBsQ2xpZW50IHsKQEAgLTU0LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBz
ZXRWaXNpYmxlKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzdGFydCgpOwogICAgIHZpcnR1YWwg
dm9pZCBzdG9wKCk7Ci0gICAgdmlydHVhbCBib29sIHBhcnRpYWxUZXh0dXJlVXBkYXRlQ2FwYWJp
bGl0eSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIHNpemVfdCBtYXhQYXJ0
aWFsVGV4dHVyZVVwZGF0ZXMoKSBjb25zdCB7IHJldHVybiBudW1lcmljX2xpbWl0czxzaXplX3Q+
OjptYXgoKTsgfQogCiAgICAgLy8gQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCBpbXBsZW1lbnRh
dGlvbgogICAgIHZpcnR1YWwgdm9pZCBvblN3YXBCdWZmZXJzQ29tcGxldGVPbkltcGxUaHJlYWQo
KSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIu
Y3BwCmluZGV4IDg3NDVjNGVhMGE3MTBiZGUxOGVkZTE4MjBmMzE0ZmRiOGNjODcyYWIuLjRhNGM1
ZWU0ODI0MjZjMzlmNDRkODAyZmRkMDg0ZTk1NmMyM2VjNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4
dHVyZVVwZGF0ZXIuY3BwCkBAIC00OCw3ICs0OCw3IEBAIENDVGV4dHVyZVVwZGF0ZXI6On5DQ1Rl
eHR1cmVVcGRhdGVyKCkKIHsKIH0KIAotdm9pZCBDQ1RleHR1cmVVcGRhdGVyOjphcHBlbmQoTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit2b2lkIENDVGV4dHVyZVVwZGF0ZXI6OmFw
cGVuZChMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0
JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwgVmVjdG9yPFVwZGF0ZUVudHJ5
PiYgZW50cmllcykKIHsKICAgICBBU1NFUlQodGV4dHVyZSk7CiAKQEAgLTU2LDI0ICs1Niw0OSBA
QCB2b2lkIENDVGV4dHVyZVVwZGF0ZXI6OmFwcGVuZChMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZQogICAgIGVudHJ5Lm1fdGV4dHVyZSA9IHRleHR1cmU7
CiAgICAgZW50cnkubV9zb3VyY2VSZWN0ID0gc291cmNlUmVjdDsKICAgICBlbnRyeS5tX2Rlc3RS
ZWN0ID0gZGVzdFJlY3Q7Ci0gICAgbV9lbnRyaWVzLmFwcGVuZChlbnRyeSk7CisgICAgZW50cmll
cy5hcHBlbmQoZW50cnkpOworfQorCit2b2lkIENDVGV4dHVyZVVwZGF0ZXI6OmFwcGVuZChMYXll
clRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3sKKyAgICBhcHBlbmQodGV4dHVyZSwgc291
cmNlUmVjdCwgZGVzdFJlY3QsIG1fZW50cmllcyk7Cit9CisKK3ZvaWQgQ0NUZXh0dXJlVXBkYXRl
cjo6YXBwZW5kUGFydGlhbChMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBj
b25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3sKKyAg
ICBhcHBlbmQodGV4dHVyZSwgc291cmNlUmVjdCwgZGVzdFJlY3QsIG1fcGFydGlhbEVudHJpZXMp
OwogfQogCiBib29sIENDVGV4dHVyZVVwZGF0ZXI6Omhhc01vcmVVcGRhdGVzKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9lbnRyaWVzLnNpemUoKTsKKyAgICByZXR1cm4gbV9lbnRyaWVzLnNpemUo
KSB8fCBtX3BhcnRpYWxFbnRyaWVzLnNpemUoKTsKIH0KIAogYm9vbCBDQ1RleHR1cmVVcGRhdGVy
Ojp1cGRhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHNpemVfdCBjb3VudCkKIHsKKyAg
ICBzaXplX3QgaW5kZXg7CiAgICAgc2l6ZV90IG1heEluZGV4ID0gbWluKG1fZW50cnlJbmRleCAr
IGNvdW50LCBtX2VudHJpZXMuc2l6ZSgpKTsKLSAgICBmb3IgKDsgbV9lbnRyeUluZGV4IDwgbWF4
SW5kZXg7ICsrbV9lbnRyeUluZGV4KSB7Ci0gICAgICAgIFVwZGF0ZUVudHJ5JiBlbnRyeSA9IG1f
ZW50cmllc1ttX2VudHJ5SW5kZXhdOworICAgIGZvciAoaW5kZXggPSBtX2VudHJ5SW5kZXg7IGlu
ZGV4IDwgbWF4SW5kZXg7ICsraW5kZXgpIHsKKyAgICAgICAgVXBkYXRlRW50cnkmIGVudHJ5ID0g
bV9lbnRyaWVzW2luZGV4XTsKICAgICAgICAgZW50cnkubV90ZXh0dXJlLT51cGRhdGVSZWN0KGNv
bnRleHQsIG1fYWxsb2NhdG9yLCBlbnRyeS5tX3NvdXJjZVJlY3QsIGVudHJ5Lm1fZGVzdFJlY3Qp
OwogICAgIH0KIAotICAgIGlmIChtYXhJbmRleCA8IG1fZW50cmllcy5zaXplKCkpCisgICAgYm9v
bCBtb3JlVXBkYXRlcyA9IG1heEluZGV4IDwgbV9lbnRyaWVzLnNpemUoKTsKKworICAgIC8vIFBh
cnRpYWwgdXBkYXRlcyBzaG91bGQgYmUgZG9uZSBzZXBhcmF0ZWx5LgorICAgIGlmIChtX3BhcnRp
YWxFbnRyaWVzLnNpemUoKSAmJiBpbmRleCAhPSBtX2VudHJ5SW5kZXgpCisgICAgICAgIG1vcmVV
cGRhdGVzID0gdHJ1ZTsKKworICAgIGlmIChtb3JlVXBkYXRlcykgeworICAgICAgICBtX2VudHJ5
SW5kZXggPSBpbmRleDsKICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLy8gUGFy
dGlhbCB1cGRhdGVzIGFyZSBhbGwgZG9uZSB3aGlsZSBpZ25vcmluZyB8Y291bnR8IGFyZ3VtZW50
LgorICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IG1fcGFydGlhbEVudHJpZXMuc2l6ZSgpOyAr
K2luZGV4KSB7CisgICAgICAgIFVwZGF0ZUVudHJ5JiBlbnRyeSA9IG1fcGFydGlhbEVudHJpZXNb
aW5kZXhdOworICAgICAgICBlbnRyeS5tX3RleHR1cmUtPnVwZGF0ZVJlY3QoY29udGV4dCwgbV9h
bGxvY2F0b3IsIGVudHJ5Lm1fc291cmNlUmVjdCwgZW50cnkubV9kZXN0UmVjdCk7CisgICAgfQog
CiAgICAgLy8gSWYgbm8gZW50cmllcyBsZWZ0IHRvIHByb2Nlc3MsIGF1dG8tY2xlYXIuCiAgICAg
Y2xlYXIoKTsKQEAgLTg0LDYgKzEwOSw3IEBAIHZvaWQgQ0NUZXh0dXJlVXBkYXRlcjo6Y2xlYXIo
KQogewogICAgIG1fZW50cnlJbmRleCA9IDA7CiAgICAgbV9lbnRyaWVzLmNsZWFyKCk7CisgICAg
bV9wYXJ0aWFsRW50cmllcy5jbGVhcigpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRh
dGVyLmgKaW5kZXggYmY3OWFjOWMyZTIyZWZjNWVkYTlhNjQ4MjllMmVmY2NlYzE1YmIzMC4uZGJi
NTJjOWJhZDIwNDM0ZGRiZjc0YzYyOGE0NDQ1ZTlkN2U5ODdkMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4
dHVyZVVwZGF0ZXIuaApAQCAtNDEsNiArNDEsNyBAQCBwdWJsaWM6CiAgICAgfkNDVGV4dHVyZVVw
ZGF0ZXIoKTsKIAogICAgIHZvaWQgYXBwZW5kKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUq
LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7Cisg
ICAgdm9pZCBhcHBlbmRQYXJ0aWFsKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAKICAgICBi
b29sIGhhc01vcmVVcGRhdGVzKCkgY29uc3Q7CiAKQEAgLTU4LDkgKzU5LDEyIEBAIHByaXZhdGU6
CiAgICAgICAgIEludFJlY3QgbV9kZXN0UmVjdDsKICAgICB9OwogCisgICAgc3RhdGljIHZvaWQg
YXBwZW5kKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3Vy
Y2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwgVmVjdG9yPFVwZGF0ZUVudHJ5PiYpOwor
CiAgICAgVGV4dHVyZUFsbG9jYXRvciogbV9hbGxvY2F0b3I7CiAgICAgc2l6ZV90IG1fZW50cnlJ
bmRleDsKICAgICBWZWN0b3I8VXBkYXRlRW50cnk+IG1fZW50cmllczsKKyAgICBWZWN0b3I8VXBk
YXRlRW50cnk+IG1fcGFydGlhbEVudHJpZXM7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJv
eHkuY3BwCmluZGV4IDVlNmE4Zjg2MjYyZGY2MjQ0OTQyZTViNDJiNDJlYmFhODg4MzNhMmQuLjk3
ODg3NmUwNmNjYzQzZDkxZmY3MmU5MDg3MTc2OWEyMzIwZjVmMmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhy
ZWFkUHJveHkuY3BwCkBAIC00Myw3ICs0Myw5IEBAIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKIG5h
bWVzcGFjZSB7CiAKLXN0YXRpYyBjb25zdCBzaXplX3QgdGV4dHVyZVVwZGF0ZXNQZXJGcmFtZSA9
IDA7CisvLyBOdW1iZXIgb2YgdGV4dHVyZXMgdG8gdXBkYXRlIHdpdGggZWFjaCBjYWxsIHRvCisv
LyBzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKCkuCitzdGF0aWMgY29uc3Qgc2l6
ZV90IHRleHR1cmVVcGRhdGVzUGVyRnJhbWUgPSA1OwogCiB9IC8vIGFub255bW91cyBuYW1lc3Bh
Y2UKIApAQCAtNDQ0LDcgKzQ0Niw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0
aW9uVXBkYXRlTW9yZVJlc291cmNlcygpCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJv
eHk6OnNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMiLCB0aGlzLCAwKTsKICAgICBB
U1NFUlQobV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpOwotICAgIG1fY3VycmVu
dFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT51cGRhdGUobV9sYXllclRyZWVIb3N0SW1wbC0+
Y29udGV4dCgpLCB0ZXh0dXJlVXBkYXRlc1BlckZyYW1lID4gMCA/IHRleHR1cmVVcGRhdGVzUGVy
RnJhbWUgOiA5OTk5OSk7CisgICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQt
PnVwZGF0ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIHRleHR1cmVVcGRhdGVzUGVy
RnJhbWUpOwogfQogCiB2b2lkIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkNvbW1pdCgp
CkBAIC01NjksOSArNTcxLDkgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpsYXllclRyZWVIb3N0Q2xv
c2VkT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW8KICAgICBjb21wbGV0
aW9uLT5zaWduYWwoKTsKIH0KIAotYm9vbCBDQ1RocmVhZFByb3h5OjpwYXJ0aWFsVGV4dHVyZVVw
ZGF0ZUNhcGFiaWxpdHkoKSBjb25zdAorc2l6ZV90IENDVGhyZWFkUHJveHk6Om1heFBhcnRpYWxU
ZXh0dXJlVXBkYXRlcygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICF0ZXh0dXJlVXBkYXRlc1BlckZy
YW1lOworICAgIHJldHVybiB0ZXh0dXJlVXBkYXRlc1BlckZyYW1lOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKaW5kZXggYTExYjUyNzg1OTkzMWNm
Yjk4Zjg3MjRhNTEyNDNhMDliNGVjYzNiOS4uODUyOWE0ZTRjYjcwMDgzY2JlZDg3NTI0NjFhNWZi
NzZhMzc2MDJkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaApAQCAtNjIsNyArNjIsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFZpc2libGUoYm9vbCk7CiAgICAgdmlydHVhbCB2
b2lkIHN0YXJ0KCk7CiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKLSAgICB2aXJ0dWFsIGJvb2wg
cGFydGlhbFRleHR1cmVVcGRhdGVDYXBhYmlsaXR5KCkgY29uc3Q7CisgICAgdmlydHVhbCBzaXpl
X3QgbWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKCkgY29uc3Q7CiAKICAgICAvLyBDQ0xheWVyVHJl
ZUhvc3RJbXBsQ2xpZW50IGltcGxlbWVudGF0aW9uCiAgICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1
ZmZlcnNDb21wbGV0ZU9uSW1wbFRocmVhZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5kZXggMGNiMjYwNWU4YTZkM2Qz
MjJmY2ViMGZjNzNhYTdhZmU2OTQ5MjA5MC4uMWE4YjdlMjc0NGFiYmQ1N2FlNzc4M2FkZjM2NDg2
NmI5MzEyNzU1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xh
eWVyVHJlZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
TGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC0xMTQzLDE2ICsxMTQzLDE1IEBAIHB1YmxpYzoKIGNs
YXNzIENDTGF5ZXJUcmVlSG9zdFRlc3RBdG9taWNDb21taXQgOiBwdWJsaWMgQ0NMYXllclRyZWVI
b3N0VGVzdCB7CiBwdWJsaWM6CiAgICAgQ0NMYXllclRyZWVIb3N0VGVzdEF0b21pY0NvbW1pdCgp
Ci0gICAgICAgIDogbV91cGRhdGVDaGVja0xheWVyKENvbnRlbnRMYXllckNocm9taXVtV2l0aFVw
ZGF0ZVRyYWNraW5nOjpjcmVhdGUoJm1fZGVsZWdhdGUpKQotICAgICAgICAsIG1fbnVtQ29tbWl0
cygwKQorICAgICAgICA6IG1fbGF5ZXIoQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJh
Y2tpbmc6OmNyZWF0ZSgmbV9kZWxlZ2F0ZSkpCiAgICAgewogICAgICAgICAvLyBNYWtlIHN1cmUg
cGFydGlhbCB0ZXh0dXJlIHVwZGF0ZXMgYXJlIHR1cm5lZCBvZmYuCi0gICAgICAgIG1fc2V0dGlu
Z3MucGFydGlhbFRleHR1cmVVcGRhdGVzID0gZmFsc2U7CisgICAgICAgIG1fc2V0dGluZ3MubWF4
UGFydGlhbFRleHR1cmVVcGRhdGVzID0gMDsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgYmVn
aW5UZXN0KCkKICAgICB7Ci0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKG1f
dXBkYXRlQ2hlY2tMYXllcik7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVy
KG1fbGF5ZXIpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShJbnRT
aXplKDEwLCAxMCkpOwogCiAgICAgICAgIHBvc3RTZXROZWVkc0NvbW1pdFRvTWFpblRocmVhZCgp
OwpAQCAtMTE2OSw3ICsxMTY4LDcgQEAgcHVibGljOgogICAgICAgICAgICAgRVhQRUNUX0VRKDEs
IGNvbnRleHQtPm51bVRleHR1cmVzKCkpOwogICAgICAgICAgICAgLy8gTnVtYmVyIG9mIHRleHR1
cmVzIHVzZWQgZm9yIGNvbW1pdCBzaG91bGQgYmUgb25lLgogICAgICAgICAgICAgRVhQRUNUX0VR
KDEsIGNvbnRleHQtPm51bVVzZWRUZXh0dXJlcygpKTsKLSAgICAgICAgICAgIC8vIFZlcmlmeSB1
c2VkIHRleHR1cmUgaXMgY29ycmVjdC4KKyAgICAgICAgICAgIC8vIFZlcmlmeSB0aGF0IHVzZWQg
dGV4dHVyZSBpcyBjb3JyZWN0LgogICAgICAgICAgICAgRVhQRUNUX1RSVUUoY29udGV4dC0+dXNl
ZFRleHR1cmUoY29udGV4dC0+dGV4dHVyZSgwKSkpOwogCiAgICAgICAgICAgICBjb250ZXh0LT5y
ZXNldFVzZWRUZXh0dXJlcygpOwpAQCAtMTIxMCw3ICsxMjA5LDcgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCB2b2lkIGxheW91dCgpCiAgICAgewotICAgICAgICBtX3VwZGF0ZUNoZWNrTGF5ZXIt
PnNldE5lZWRzRGlzcGxheSgpOworICAgICAgICBtX2xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsK
ICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgYWZ0ZXJUZXN0KCkKQEAgLTEyMTksOCArMTIxOCw3
IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBNb2NrQ29udGVudExheWVyRGVsZWdhdGUgbV9k
ZWxlZ2F0ZTsKLSAgICBSZWZQdHI8Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tp
bmc+IG1fdXBkYXRlQ2hlY2tMYXllcjsKLSAgICBpbnQgbV9udW1Db21taXRzOworICAgIFJlZlB0
cjxDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZz4gbV9sYXllcjsKIH07CiAK
IFRFU1RfRihDQ0xheWVyVHJlZUhvc3RUZXN0QXRvbWljQ29tbWl0LCBydW5NdWx0aVRocmVhZCkK
QEAgLTEyMjgsNCArMTIyNiwxMzEgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdFRlc3RBdG9taWND
b21taXQsIHJ1bk11bHRpVGhyZWFkKQogICAgIHJ1blRlc3QodHJ1ZSk7CiB9CiAKK2NsYXNzIEND
TGF5ZXJUcmVlSG9zdFRlc3RBdG9taWNDb21taXRXaXRoUGFydGlhbFVwZGF0ZSA6IHB1YmxpYyBD
Q0xheWVyVHJlZUhvc3RUZXN0IHsKK3B1YmxpYzoKKyAgICBDQ0xheWVyVHJlZUhvc3RUZXN0QXRv
bWljQ29tbWl0V2l0aFBhcnRpYWxVcGRhdGUoKQorICAgICAgICA6IG1fcGFyZW50KENvbnRlbnRM
YXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpjcmVhdGUoJm1fZGVsZWdhdGUpKQorICAg
ICAgICAsIG1fY2hpbGQoQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OmNy
ZWF0ZSgmbV9kZWxlZ2F0ZSkpCisgICAgICAgICwgbV9udW1Db21taXRzKDApCisgICAgeworICAg
ICAgICAvLyBBbGxvdyBvbmUgcGFydGlhbCB0ZXh0dXJlIHVwZGF0ZS4KKyAgICAgICAgbV9zZXR0
aW5ncy5tYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMgPSAxOworICAgIH0KKworICAgIHZpcnR1YWwg
dm9pZCBiZWdpblRlc3QoKQorICAgIHsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRSb290
TGF5ZXIobV9wYXJlbnQpOworICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6
ZShJbnRTaXplKDEwLCAxMCkpOworICAgICAgICBtX3BhcmVudC0+YWRkQ2hpbGQobV9jaGlsZCk7
CisgICAgICAgIG1fY2hpbGQtPnNldE9wYWNpdHkoMC41KTsKKyAgICAgICAgbV9jaGlsZC0+c2V0
Qm91bmRzKEludFNpemUoMjAsIDIwKSk7CisKKyAgICAgICAgcG9zdFNldE5lZWRzQ29tbWl0VG9N
YWluVGhyZWFkKCk7CisgICAgICAgIHBvc3RTZXROZWVkc1JlZHJhd1RvTWFpblRocmVhZCgpOwor
ICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQoQ0NMYXll
clRyZWVIb3N0SW1wbCogaW1wbCkKKyAgICB7CisgICAgICAgIENvbXBvc2l0b3JGYWtlV2ViR3Jh
cGhpY3NDb250ZXh0M0RXaXRoVGV4dHVyZVRyYWNraW5nKiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8
Q29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhUZXh0dXJlVHJhY2tpbmcqPihH
cmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmV4dHJhY3RXZWJHcmFwaGljc0NvbnRleHQzRChpbXBs
LT5jb250ZXh0KCkpKTsKKworICAgICAgICBzd2l0Y2ggKGltcGwtPmZyYW1lTnVtYmVyKCkpIHsK
KyAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAgLy8gTnVtYmVyIG9mIHRleHR1cmVzIHNob3Vs
ZCBiZSB0d28uCisgICAgICAgICAgICBFWFBFQ1RfRVEoMiwgY29udGV4dC0+bnVtVGV4dHVyZXMo
KSk7CisgICAgICAgICAgICAvLyBOdW1iZXIgb2YgdGV4dHVyZXMgdXNlZCBmb3IgY29tbWl0IHNo
b3VsZCBiZSB0d28uCisgICAgICAgICAgICBFWFBFQ1RfRVEoMiwgY29udGV4dC0+bnVtVXNlZFRl
eHR1cmVzKCkpOworICAgICAgICAgICAgLy8gVmVyaWZ5IHRoYXQgdXNlZCB0ZXh0dXJlcyBhcmUg
Y29ycmVjdC4KKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKGNvbnRleHQtPnVzZWRUZXh0dXJlKGNv
bnRleHQtPnRleHR1cmUoMCkpKTsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKGNvbnRleHQtPnVz
ZWRUZXh0dXJlKGNvbnRleHQtPnRleHR1cmUoMSkpKTsKKworICAgICAgICAgICAgY29udGV4dC0+
cmVzZXRVc2VkVGV4dHVyZXMoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDE6
CisgICAgICAgICAgICAvLyBOdW1iZXIgb2YgdGV4dHVyZXMgc2hvdWxkIGJlIGZvdXIgYXMgdGhl
IGZpcnN0IHR3bworICAgICAgICAgICAgLy8gdGV4dHVyZXMgYXJlIHVzZWQgYnkgdGhlIGltcGwg
dGhyZWFkLgorICAgICAgICAgICAgRVhQRUNUX0VRKDQsIGNvbnRleHQtPm51bVRleHR1cmVzKCkp
OworICAgICAgICAgICAgLy8gTnVtYmVyIG9mIHRleHR1cmVzIHVzZWQgZm9yIGNvbW1pdCBzaG91
bGQgc3RpbGwgYmUgdHdvLgorICAgICAgICAgICAgRVhQRUNUX0VRKDIsIGNvbnRleHQtPm51bVVz
ZWRUZXh0dXJlcygpKTsKKyAgICAgICAgICAgIC8vIEZpcnN0IHR3byB0ZXh0dXJlcyBzaG91bGQg
bm90IGhhdmUgYmVlbiB1c2VkLgorICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGNvbnRleHQtPnVz
ZWRUZXh0dXJlKGNvbnRleHQtPnRleHR1cmUoMCkpKTsKKyAgICAgICAgICAgIEVYUEVDVF9GQUxT
RShjb250ZXh0LT51c2VkVGV4dHVyZShjb250ZXh0LT50ZXh0dXJlKDEpKSk7CisgICAgICAgICAg
ICAvLyBOZXcgdGV4dHVyZXMgc2hvdWxkIGhhdmUgYmVlbiB1c2VkLgorICAgICAgICAgICAgRVhQ
RUNUX1RSVUUoY29udGV4dC0+dXNlZFRleHR1cmUoY29udGV4dC0+dGV4dHVyZSgyKSkpOworICAg
ICAgICAgICAgRVhQRUNUX1RSVUUoY29udGV4dC0+dXNlZFRleHR1cmUoY29udGV4dC0+dGV4dHVy
ZSgzKSkpOworCisgICAgICAgICAgICBjb250ZXh0LT5yZXNldFVzZWRUZXh0dXJlcygpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIC8vIE51bWJlciBv
ZiB0ZXh0dXJlcyBzaG91bGQgYmUgdGhyZWUgYXMgd2UgYWxsb3cgb25lCisgICAgICAgICAgICAv
LyBwYXJ0aWFsIHVwZGF0ZSBhbmQgdGhlIGZpcnN0IHR3byB0ZXh0dXJlcyBhcmUgdXNlZCBieQor
ICAgICAgICAgICAgLy8gdGhlIGltcGwgdGhyZWFkLgorICAgICAgICAgICAgRVhQRUNUX0VRKDMs
IGNvbnRleHQtPm51bVRleHR1cmVzKCkpOworICAgICAgICAgICAgLy8gTnVtYmVyIG9mIHRleHR1
cmVzIHVzZWQgZm9yIGNvbW1pdCBzaG91bGQgc3RpbGwgYmUgdHdvLgorICAgICAgICAgICAgRVhQ
RUNUX0VRKDIsIGNvbnRleHQtPm51bVVzZWRUZXh0dXJlcygpKTsKKyAgICAgICAgICAgIC8vIEZp
cnN0IHRleHR1cmUgc2hvdWxkIG5vdCBoYXZlIGJlZW4gdXNlZC4KKyAgICAgICAgICAgIEVYUEVD
VF9GQUxTRShjb250ZXh0LT51c2VkVGV4dHVyZShjb250ZXh0LT50ZXh0dXJlKDApKSk7CisgICAg
ICAgICAgICAvLyBTZWNvbmQgdGV4dHVyZSBzaG91bGQgaGF2ZSBiZWVuIHVzZWQuCisgICAgICAg
ICAgICBFWFBFQ1RfVFJVRShjb250ZXh0LT51c2VkVGV4dHVyZShjb250ZXh0LT50ZXh0dXJlKDEp
KSk7CisgICAgICAgICAgICAvLyBOZXcgdGV4dHVyZXMgc2hvdWxkIGhhdmUgYmVlbiB1c2VkLgor
ICAgICAgICAgICAgRVhQRUNUX1RSVUUoY29udGV4dC0+dXNlZFRleHR1cmUoY29udGV4dC0+dGV4
dHVyZSgyKSkpOworCisgICAgICAgICAgICBjb250ZXh0LT5yZXNldFVzZWRUZXh0dXJlcygpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisg
ICAgdmlydHVhbCB2b2lkIGRyYXdMYXllcnNPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwq
IGltcGwpCisgICAgeworICAgICAgICBDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNE
V2l0aFRleHR1cmVUcmFja2luZyogY29udGV4dCA9IHN0YXRpY19jYXN0PENvbXBvc2l0b3JGYWtl
V2ViR3JhcGhpY3NDb250ZXh0M0RXaXRoVGV4dHVyZVRyYWNraW5nKj4oR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlOjpleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0QoaW1wbC0+Y29udGV4dCgpKSk7
CisKKyAgICAgICAgLy8gTnVtYmVyIG9mIHRleHR1cmVzIHVzZWQgZm9yIGRyYXdpbmcgc2hvdWxk
IGFsd2F5cyBiZSB0d28uCisgICAgICAgIEVYUEVDVF9FUSgyLCBjb250ZXh0LT5udW1Vc2VkVGV4
dHVyZXMoKSk7CisKKyAgICAgICAgaWYgKGltcGwtPmZyYW1lTnVtYmVyKCkgPCAzKSB7CisgICAg
ICAgICAgICBjb250ZXh0LT5yZXNldFVzZWRUZXh0dXJlcygpOworICAgICAgICAgICAgcG9zdFNl
dE5lZWRzQW5pbWF0ZUFuZENvbW1pdFRvTWFpblRocmVhZCgpOworICAgICAgICAgICAgcG9zdFNl
dE5lZWRzUmVkcmF3VG9NYWluVGhyZWFkKCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
ZW5kVGVzdCgpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKQorICAgIHsKKyAg
ICAgICAgc3dpdGNoIChtX251bUNvbW1pdHMrKykgeworICAgICAgICBjYXNlIDA6CisgICAgICAg
IGNhc2UgMToKKyAgICAgICAgICAgIG1fcGFyZW50LT5zZXROZWVkc0Rpc3BsYXkoKTsKKyAgICAg
ICAgICAgIG1fY2hpbGQtPnNldE5lZWRzRGlzcGxheSgpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIC8vIERhbWFnZSBwYXJ0IG9mIGxheWVycy4KKyAg
ICAgICAgICAgIG1fcGFyZW50LT5zZXROZWVkc0Rpc3BsYXlSZWN0KEZsb2F0UmVjdCgwLCAwLCA1
LCA1KSk7CisgICAgICAgICAgICBtX2NoaWxkLT5zZXROZWVkc0Rpc3BsYXlSZWN0KEZsb2F0UmVj
dCgwLCAwLCA1LCA1KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYWZ0ZXJUZXN0KCkKKyAgICB7CisgICAg
fQorCitwcml2YXRlOgorICAgIE1vY2tDb250ZW50TGF5ZXJEZWxlZ2F0ZSBtX2RlbGVnYXRlOwor
ICAgIFJlZlB0cjxDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZz4gbV9wYXJl
bnQ7CisgICAgUmVmUHRyPENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nPiBt
X2NoaWxkOworICAgIGludCBtX251bUNvbW1pdHM7Cit9OworCitURVNUX0YoQ0NMYXllclRyZWVI
b3N0VGVzdEF0b21pY0NvbW1pdFdpdGhQYXJ0aWFsVXBkYXRlLCBydW5NdWx0aVRocmVhZCkKK3sK
KyAgICBydW5UZXN0KHRydWUpOworfQorCisKIH0gLy8gbmFtZXNwYWNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124969</attachid>
            <date>2012-02-01 10:39:28 -0800</date>
            <delta_ts>2012-02-07 16:13:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76740-20120201133926.patch</filename>
            <type>text/plain</type>
            <size>35508</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NDM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2I4YTAwMmJmODRkZmFh
ZGI3ODNmOGQ0OTU4ODI3YzU0YzVjZTdhNC4uNTZjNGFmMjhlNjE0MjYxYWZjYTE1NmE4NDdhMmM2
ZGI3YjUwYmYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDEyLTAyLTAxICBEYXZp
ZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBB
dm9pZCB1bm5lY2Vzc2FyeSBmdWxsIHRpbGUgdXBkYXRlcyB3aXRob3V0IGJyZWFraW5nIGF0b21p
Y2l0eSBvZiBjb21taXRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzY3NDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBbGxvdyB0aGUgZmluYWwgYmF0Y2ggb2YgdGV4dHVyZSB1cGxvYWRzIHRvIGJlIHBl
cmZvcm1lZCB3aXRob3V0CisgICAgICAgIGFsbG9jYXRpbmcgbmV3IHRleHR1cmVzIGFuZCByZS1w
YWludGluZyBjb21wbGV0ZSB0aWxlcy4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIHRlc3RlZCBi
eSB0aGUgZm9sbG93aW5nIHVuaXQgdGVzdDoKKyAgICAgICAgLSBDQ0xheWVyVHJlZUhvc3RUZXN0
QXRvbWljQ29tbWl0V2l0aFBhcnRpYWxVcGRhdGUucnVuTXVsdGlUaHJlYWQKKyAgICAgICAgLSBU
aWxlZExheWVyQ2hyb21pdW1UZXN0LnBhcnRpYWxVcGRhdGVzCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VXBkYXRhYmxlVGlsZTo6VXBkYXRhYmxlVGlsZSk6CisgICAgICAgIChVcGRhdGFibGVU
aWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9z
aXRvclJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnBy
ZXBhcmVUb1VwZGF0ZVRpbGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVI
b3N0OjpDQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6dXBkYXRl
TGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6cmVxdWVzdFBhcnRp
YWxUZXh0dXJlVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NTZXR0aW5nczo6Q0NTZXR0aW5ncyk6CisgICAgICAgIChDQ1NldHRpbmdzKToKKyAgICAg
ICAgKENDTGF5ZXJUcmVlSG9zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NQcm94eS5oOgorICAgICAgICAoQ0NQcm94eSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0NvbW1pdCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5OjptYXhQYXJ0
aWFsVGV4dHVyZVVwZGF0ZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBk
YXRlcjo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NU
ZXh0dXJlVXBkYXRlcjo6YXBwZW5kUGFydGlhbCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RleHR1
cmVVcGRhdGVyOjpoYXNNb3JlVXBkYXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RleHR1cmVV
cGRhdGVyOjp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlcjo6Y2xl
YXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVw
ZGF0ZXIuaDoKKyAgICAgICAgKENDVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV1RGKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvblVwZGF0ZU1v
cmVSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6bWF4UGFydGlh
bFRleHR1cmVVcGRhdGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5Lmg6CisgICAgICAgIChDQ1RocmVhZFByb3h5KToKKwogMjAxMi0wMS0z
MSAgSGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIEFQSXMs
IGdldEVsZW1lbnRzQnlYWFggZmFtaWx5LCB0byBTaGFkb3dSb290IElETC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKaW5kZXggZDE0MmM2OTI2M2QzNTVjYmE5ZjdhOWQ2NzU3NzgzZmFlNGFkMzM1
My4uYmE1M2ViMjk3NWNhN2Q0OGM3MzM1NjViZmE0ZmQyNGFiMzQ5N2U0ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxMi0wMi0wMSAgRGF2aWQgUmV2ZW1h
biAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gQXZvaWQgdW5u
ZWNlc3NhcnkgZnVsbCB0aWxlIHVwZGF0ZXMgd2l0aG91dCBicmVha2luZyBhdG9taWNpdHkgb2Yg
Y29tbWl0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTc2NzQwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIENDTGF5ZXJUcmVlSG9zdFRlc3RBdG9taWNDb21taXRXaXRoUGFydGlhbFVwZGF0ZSBhbmQK
KyAgICAgICAgVGlsZWRMYXllckNocm9taXVtVGVzdC5wYXJ0aWFsVXBkYXRlcyB0ZXN0cyB0aGF0
IHZlcmlmaWVzCisgICAgICAgIGF0b21pY2l0eSBvZiBjb21taXRzIHdpdGggcGFydGlhbCB1cGRh
dGVzLgorCisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHA6CisgICAgICAg
IChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RBdG9taWNDb21taXQ6OkNDTGF5ZXJUcmVlSG9zdFRl
c3RBdG9taWNDb21taXQpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0QXRvbWlj
Q29tbWl0OjpiZWdpblRlc3QpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0QXRv
bWljQ29tbWl0Ojpjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQpOgorICAgICAgICAoV1RGOjpDQ0xh
eWVyVHJlZUhvc3RUZXN0QXRvbWljQ29tbWl0OjpsYXlvdXQpOgorICAgICAgICAoQ0NMYXllclRy
ZWVIb3N0VGVzdEF0b21pY0NvbW1pdCk6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3RUZXN0QXRv
bWljQ29tbWl0V2l0aFBhcnRpYWxVcGRhdGUpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhv
c3RUZXN0QXRvbWljQ29tbWl0V2l0aFBhcnRpYWxVcGRhdGU6OkNDTGF5ZXJUcmVlSG9zdFRlc3RB
dG9taWNDb21taXRXaXRoUGFydGlhbFVwZGF0ZSk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVl
SG9zdFRlc3RBdG9taWNDb21taXRXaXRoUGFydGlhbFVwZGF0ZTo6YmVnaW5UZXN0KToKKyAgICAg
ICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdEF0b21pY0NvbW1pdFdpdGhQYXJ0aWFsVXBkYXRl
Ojpjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhv
c3RUZXN0QXRvbWljQ29tbWl0V2l0aFBhcnRpYWxVcGRhdGU6OmRyYXdMYXllcnNPbkNDVGhyZWFk
KToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdEF0b21pY0NvbW1pdFdpdGhQYXJ0
aWFsVXBkYXRlOjpsYXlvdXQpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0QXRv
bWljQ29tbWl0V2l0aFBhcnRpYWxVcGRhdGU6OmFmdGVyVGVzdCk6CisgICAgICAgIChXVEYpOgor
ICAgICAgICAoV1RGOjpURVNUX0YpOgorICAgICAgICAqIHRlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QuY3BwOgorICAgICAgICAoV1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVy
ZTo6VGV4dHVyZSk6CisgICAgICAgIChXVEY6OkZha2VMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlOjp1cGRhdGVSZWN0KToKKyAgICAgICAgKFRleHR1cmUpOgorICAgICAgICAoV1RGOjpGYWtl
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAo
RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAoV1RGOjpGYWtlTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6dXBkYXRlQ291bnQpOgorICAgICAgICAoV1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6Y2xlYXJVcGRhdGVDb3VudCk6CisgICAgICAgIChXVEY6OkZha2VMYXllclRleHR1cmVV
cGRhdGVyOjp1cGRhdGVSZWN0KToKKyAgICAgICAgKFdURjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0
ZXI6OmNyZWF0ZVRleHR1cmUpOgorICAgICAgICAoV1RGOjpURVNUKToKKyAgICAgICAgKFdURik6
CisKIDIwMTItMDEtMzEgIEFtaSBGaXNjaG1hbiAgPGZpc2NobWFuQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBbY2hyb21pdW1dIGVuYWJsZSAtV2V4aXQtdGltZS1kZXN0cnVjdG9ycyBmb3Igd2Vi
a2l0IHVuaXQgdGVzdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDI4M2Fh
OGRkMDliYTIzZmQ3NDQzM2FjYTMyYTY3MzUzODgzYzlhMDAuLmU3YzA4NDAxMWE4YTU3Y2Q1Njkw
OGVhN2NmZWU0OTM3NzkzM2I4MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcApA
QCAtNTMsNyArNTMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBVcGRhdGFibGVUaWxl
IDogcHVibGljIENDTGF5ZXJUaWxpbmdEYXRhOjpUaWxlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShVcGRhdGFibGVUaWxlKTsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBVcGRhdGFibGVUaWxl
KFBhc3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gdGV4dHVyZSkgOiBtX3Rl
eHR1cmUodGV4dHVyZSkgeyB9CisgICAgZXhwbGljaXQgVXBkYXRhYmxlVGlsZShQYXNzT3duUHRy
PExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IHRleHR1cmUpIDogbV9wYXJ0aWFsVXBkYXRl
KGZhbHNlKSwgbV90ZXh0dXJlKHRleHR1cmUpIHsgfQogCiAgICAgTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZSogdGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQogICAgIE1h
bmFnZWRUZXh0dXJlKiBtYW5hZ2VkVGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS0+dGV4dHVy
ZSgpOyB9CkBAIC02OCw2ICs2OCw3IEBAIHB1YmxpYzoKICAgICBJbnRSZWN0IG1fZGlydHlSZWN0
OwogICAgIEludFJlY3QgbV91cGRhdGVSZWN0OwogICAgIEludFJlY3QgbV9vcGFxdWVSZWN0Owor
ICAgIGJvb2wgbV9wYXJ0aWFsVXBkYXRlOwogcHJpdmF0ZToKICAgICBPd25QdHI8TGF5ZXJUZXh0
dXJlVXBkYXRlcjo6VGV4dHVyZT4gbV90ZXh0dXJlOwogfTsKQEAgLTIzNCw3ICsyMzUsMTAgQEAg
dm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhp
Y3NDb250ZXh0M0QqLCBDQ1RleHR1cmUKICAgICAgICAgICAgIGlmIChwYWludE9mZnNldC55KCkg
KyBkZXN0UmVjdC5oZWlnaHQoKSA+IG1fcGFpbnRSZWN0LmhlaWdodCgpKQogICAgICAgICAgICAg
ICAgIENSQVNIKCk7CiAKLSAgICAgICAgICAgIHVwZGF0ZXIuYXBwZW5kKHRpbGUtPnRleHR1cmUo
KSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworICAgICAgICAgICAgaWYgKHRpbGUtPm1fcGFydGlh
bFVwZGF0ZSkKKyAgICAgICAgICAgICAgICB1cGRhdGVyLmFwcGVuZFBhcnRpYWwodGlsZS0+dGV4
dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgdXBkYXRlci5hcHBlbmQodGlsZS0+dGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0
UmVjdCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTM2OSw2ICszNzMsNyBAQCB2b2lkIFRpbGVk
TGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwg
aW50IHRvcCwgaW50CiAgICAgZm9yIChDQ0xheWVyVGlsaW5nRGF0YTo6VGlsZU1hcDo6Y29uc3Rf
aXRlcmF0b3IgaXRlciA9IG1fdGlsZXItPnRpbGVzKCkuYmVnaW4oKTsgaXRlciAhPSBtX3RpbGVy
LT50aWxlcygpLmVuZCgpOyArK2l0ZXIpIHsKICAgICAgICAgVXBkYXRhYmxlVGlsZSogdGlsZSA9
IHN0YXRpY19jYXN0PFVwZGF0YWJsZVRpbGUqPihpdGVyLT5zZWNvbmQuZ2V0KCkpOwogICAgICAg
ICB0aWxlLT5tX3VwZGF0ZVJlY3QgPSBJbnRSZWN0KCk7CisgICAgICAgIHRpbGUtPm1fcGFydGlh
bFVwZGF0ZSA9IGZhbHNlOwogICAgIH0KIAogICAgIC8vIENyZWF0ZSB0aWxlcyBhcyBuZWVkZWQs
IGV4cGFuZGluZyBhIGRpcnR5IHJlY3QgdG8gY29udGFpbiBhbGwKQEAgLTM4MiwxMCArMzg3LDQ3
IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVUaWxlcyhib29sIGlk
bGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQKICAgICAgICAgICAgIGlmICghdGlsZSkKICAgICAg
ICAgICAgICAgICB0aWxlID0gY3JlYXRlVGlsZShpLCBqKTsKIAotICAgICAgICAgICAgLy8gRG8g
cG9zdCBjb21taXQgZGVsZXRpb24gb2YgY3VycmVudCB0ZXh0dXJlIHdoZW4gcGFydGlhbCB0ZXh0
dXJlCi0gICAgICAgICAgICAvLyB1cGRhdGVzIGFyZSBub3QgdXNlZC4KLSAgICAgICAgICAgIGlm
ICh0aWxlLT5pc0RpcnR5KCkgJiYgbGF5ZXJUcmVlSG9zdCgpICYmICFsYXllclRyZWVIb3N0KCkt
PnNldHRpbmdzKCkucGFydGlhbFRleHR1cmVVcGRhdGVzKQorICAgICAgICAgICAgYm9vbCBwYXJ0
aWFsVXBkYXRlID0gZmFsc2U7CisgICAgICAgICAgICBib29sIGRlbGV0ZUFmdGVyQ29tbWl0ID0g
ZmFsc2U7CisKKyAgICAgICAgICAgIGlmIChsYXllclRyZWVIb3N0KCkgJiYgdGlsZS0+bWFuYWdl
ZFRleHR1cmUoKS0+aXNWYWxpZChtX3RpbGVyLT50aWxlU2l6ZSgpLCBtX3RleHR1cmVGb3JtYXQp
KSB7CisgICAgICAgICAgICAgICAgLy8gRm9yIHRpbGVzIHdpdGggdmFsaWQgdGV4dHVyZXMsIG5l
dyB0ZXh0dXJlcyBuZWVkIHRvIGJlCisgICAgICAgICAgICAgICAgLy8gYWxsb2NhdGVkIHRvIGd1
YXJhbnRlZSB0aGF0IHdlIGRvbid0IG1vZGlmeSB0ZXh0dXJlcworICAgICAgICAgICAgICAgIC8v
IGN1cnJlbnRseSB1c2VkIGZvciBkcmF3aW5nIGJ5IHRoZSBpbXBsIHRocmVhZC4gVGhlcmUncwor
ICAgICAgICAgICAgICAgIC8vIG9uZSBleGNlcHRpb24gdG8gdGhpcywgcGFydGlhbCB1cGRhdGVz
LiBQYXJ0aWFsIHVwZGF0ZXMKKyAgICAgICAgICAgICAgICAvLyBwcm92aWRlIGEgd2F5IHRvIHVw
ZGF0ZSBvbmx5IHBhcnQgb2YgYSB0ZXh0dXJlIHdoaWxlCisgICAgICAgICAgICAgICAgLy8gc3Rp
bGwgZ3VhcmFudGVlaW5nIHRoYXQgaXQncyBub3QgdXNlZCBmb3IgZHJhd2luZyBieQorICAgICAg
ICAgICAgICAgIC8vIHRoZSBpbXBsIHRocmVhZCBiZWZvcmUgdGhlIGNvbW1pdCBjb21wbGV0ZXMu
IFNlZSBiZWxvdy4KKyAgICAgICAgICAgICAgICBpZiAoQ0NQcm94eTo6aGFzSW1wbFRocmVhZCgp
KQorICAgICAgICAgICAgICAgICAgICBkZWxldGVBZnRlckNvbW1pdCA9IHRydWU7CisKKyAgICAg
ICAgICAgICAgICAvLyBJcyB0aGlzIGEgcGFydGlhbCB1cGRhdGU/CisgICAgICAgICAgICAgICAg
aWYgKCF0aWxlLT5tX2RpcnR5UmVjdC5jb250YWlucyhtX3RpbGVyLT50aWxlUmVjdCh0aWxlKSkp
CisgICAgICAgICAgICAgICAgICAgIHBhcnRpYWxVcGRhdGUgPSB0cnVlOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBpZiAodGlsZS0+aXNEaXJ0eSgpICYmIHBhcnRpYWxVcGRhdGUpIHsK
KyAgICAgICAgICAgICAgICBBU1NFUlQobGF5ZXJUcmVlSG9zdCgpKTsKKworICAgICAgICAgICAg
ICAgIC8vIFRyeSB0byByZXF1ZXN0IHBhcnRpYWwgdGV4dHVyZSB1cGRhdGUuIFRoaXMgd2lsbCBm
YWlsCisgICAgICAgICAgICAgICAgLy8gYW5kIGZvcmNlIHVzIHRvIHVzZSBhIHN0YW5kYXJkIGJ1
ZmZlcmVkIHRleHR1cmUgdXBkYXRlCisgICAgICAgICAgICAgICAgLy8gd2hlbiB3ZSByZWFjaCB0
aGUgbWF4aW11bSBwYXJ0aWFsIHVwZGF0ZSBjb3VudC4KKyAgICAgICAgICAgICAgICAvLyBUT0RP
KHJldmVtYW4pOiBEZWNpZGUgaWYgcGFydGlhbCB1cGRhdGUgc2hvdWxkIGJlIGFsbG93ZWQKKyAg
ICAgICAgICAgICAgICAvLyBiYXNlZCBvbiBjb3N0IG9mIHVwZGF0ZS4KKyAgICAgICAgICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzczNzYKKyAgICAg
ICAgICAgICAgICBpZiAobGF5ZXJUcmVlSG9zdCgpLT5yZXF1ZXN0UGFydGlhbFRleHR1cmVVcGRh
dGUoKSkgeworICAgICAgICAgICAgICAgICAgICB0aWxlLT5tX3BhcnRpYWxVcGRhdGUgPSB0cnVl
OworICAgICAgICAgICAgICAgICAgICBkZWxldGVBZnRlckNvbW1pdCA9IGZhbHNlOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gRGVsZXRlIGN1cnJl
bnQgdGV4dHVyZSBhZnRlciB0aGUgY29tbWl0IGNvbXBsZXRlcy4gSW1wbCB0aHJlYWQKKyAgICAg
ICAgICAgIC8vIG1pZ2h0IHVzZSB0aGUgdGV4dHVyZSB1bnRpbCB0aGVuLgorICAgICAgICAgICAg
aWYgKGRlbGV0ZUFmdGVyQ29tbWl0KSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKGxheWVyVHJl
ZUhvc3QoKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKHRpbGUtPm1hbmFnZWRUZXh0dXJlKCkt
PmlzVmFsaWQobV90aWxlci0+dGlsZVNpemUoKSwgbV90ZXh0dXJlRm9ybWF0KSk7CiAgICAgICAg
ICAgICAgICAgbGF5ZXJUcmVlSG9zdCgpLT5kZWxldGVUZXh0dXJlQWZ0ZXJDb21taXQodGlsZS0+
bWFuYWdlZFRleHR1cmUoKS0+c3RlYWwoKSk7CisgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
IGlmICghdGlsZS0+bWFuYWdlZFRleHR1cmUoKS0+aXNWYWxpZChtX3RpbGVyLT50aWxlU2l6ZSgp
LCBtX3RleHR1cmVGb3JtYXQpKQogICAgICAgICAgICAgICAgIHRpbGUtPm1fZGlydHlSZWN0ID0g
bV90aWxlci0+dGlsZVJlY3QodGlsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApp
bmRleCA0ZmY4NDM0YjIwMGM5MmQ0OGEwOGJmOTFjMTRiMjdmODIxOWRkYWI2Li5hNmNmMmQ5YzQy
NzAzZTg3YWJiOWNiNDRhMDRmN2QwZmY4YmE2NTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdC5jcHAKQEAgLTcwLDYgKzcwLDcgQEAgQ0NMYXllclRyZWVIb3N0OjpDQ0xheWVyVHJlZUhv
c3QoQ0NMYXllclRyZWVIb3N0Q2xpZW50KiBjbGllbnQsIGNvbnN0IENDU2V0dGluZ3MKICAgICAs
IG1fbWluUGFnZVNjYWxlKDEpCiAgICAgLCBtX21heFBhZ2VTY2FsZSgxKQogICAgICwgbV90cmln
Z2VySWRsZVBhaW50cyh0cnVlKQorICAgICwgbV9wYXJ0aWFsVGV4dHVyZVVwZGF0ZVJlcXVlc3Rz
KDApCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgpKTsKICAgICBudW1MYXll
clRyZWVJbnN0YW5jZXMrKzsKQEAgLTk3LDcgKzk4LDcgQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3Q6
OmluaXRpYWxpemUoKQogICAgIG1fc2V0dGluZ3MuYWNjZWxlcmF0ZVBhaW50aW5nID0gbV9wcm94
eS0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLnVzaW5nQWNjZWxlcmF0ZWRQYWludGluZzsK
IAogICAgIC8vIFVwZGF0ZSBtX3NldHRpbmdzIGJhc2VkIG9uIHBhcnRpYWwgdXBkYXRlIGNhcGFi
aWxpdHkuCi0gICAgbV9zZXR0aW5ncy5wYXJ0aWFsVGV4dHVyZVVwZGF0ZXMgPSBtX3NldHRpbmdz
LnBhcnRpYWxUZXh0dXJlVXBkYXRlcyAmJiBtX3Byb3h5LT5wYXJ0aWFsVGV4dHVyZVVwZGF0ZUNh
cGFiaWxpdHkoKTsKKyAgICBtX3NldHRpbmdzLm1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcyA9IG1p
bihtX3NldHRpbmdzLm1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcywgbV9wcm94eS0+bWF4UGFydGlh
bFRleHR1cmVVcGRhdGVzKCkpOwogCiAgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyID0gVGV4
dHVyZU1hbmFnZXI6OmNyZWF0ZShUZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXModmlld3Bv
cnRTaXplKCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVGV4dHVyZU1hbmFnZXI6OnJlY2xhaW1MaW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSgp
KSwKQEAgLTM4MCw2ICszODEsOSBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJz
KExheWVyQ2hyb21pdW0qIHJvb3RMYXllcikKICAgICAgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9u
OjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocm9vdExheWVyLCByb290TGF5
ZXIsIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgbV91cGRhdGVMaXN0LCByb290UmVu
ZGVyU3VyZmFjZS0+bGF5ZXJMaXN0KCksIGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhU
ZXh0dXJlU2l6ZSk7CiAgICAgfQogCisgICAgLy8gUmVzZXQgcGFydGlhbCB0ZXh0dXJlIHVwZGF0
ZSByZXF1ZXN0cy4KKyAgICBtX3BhcnRpYWxUZXh0dXJlVXBkYXRlUmVxdWVzdHMgPSAwOworCiAg
ICAgcmVzZXJ2ZVRleHR1cmVzKCk7CiAKICAgICBwYWludExheWVyQ29udGVudHMobV91cGRhdGVM
aXN0LCBQYWludFZpc2libGUpOwpAQCAtNTg4LDYgKzU5MiwxNSBAQCB2b2lkIENDTGF5ZXJUcmVl
SG9zdDo6c3RvcFJhdGVMaW1pdGVyKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQogICAgIH0K
IH0KIAorYm9vbCBDQ0xheWVyVHJlZUhvc3Q6OnJlcXVlc3RQYXJ0aWFsVGV4dHVyZVVwZGF0ZSgp
Cit7CisgICAgaWYgKG1fcGFydGlhbFRleHR1cmVVcGRhdGVSZXF1ZXN0cyA+PSBtX3NldHRpbmdz
Lm1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
bV9wYXJ0aWFsVGV4dHVyZVVwZGF0ZVJlcXVlc3RzKys7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
IHZvaWQgQ0NMYXllclRyZWVIb3N0OjpkZWxldGVUZXh0dXJlQWZ0ZXJDb21taXQoUGFzc093blB0
cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkKIHsKICAgICBtX2RlbGV0ZVRleHR1cmVBZnRlckNv
bW1pdExpc3QuYXBwZW5kKHRleHR1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAppbmRl
eCBmNTgyMDNkMTVlYjIwNDUwNzFjMmVmYTQ0OGJhNDBiZjE5YTU0Y2FhLi5lMjBmYTgzMmEyNDhl
YzBiZjhjY2NlY2YxYjliNTgzNDBiM2U4ODVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
aApAQCAtNzgsNyArNzgsNyBAQCBzdHJ1Y3QgQ0NTZXR0aW5ncyB7CiAgICAgICAgICAgICAsIHJl
ZnJlc2hSYXRlKDApCiAgICAgICAgICAgICAsIHBlclRpbGVQYWludGluZyhmYWxzZSkKICAgICAg
ICAgICAgICwgcGFydGlhbFN3YXBFbmFibGVkKGZhbHNlKQotICAgICAgICAgICAgLCBwYXJ0aWFs
VGV4dHVyZVVwZGF0ZXModHJ1ZSkgeyB9CisgICAgICAgICAgICAsIG1heFBhcnRpYWxUZXh0dXJl
VXBkYXRlcyh+MCkgeyB9CiAKICAgICBib29sIGFjY2VsZXJhdGVQYWludGluZzsKICAgICBib29s
IGNvbXBvc2l0ZU9mZnNjcmVlbjsKQEAgLTg3LDcgKzg3LDcgQEAgc3RydWN0IENDU2V0dGluZ3Mg
ewogICAgIGRvdWJsZSByZWZyZXNoUmF0ZTsKICAgICBib29sIHBlclRpbGVQYWludGluZzsKICAg
ICBib29sIHBhcnRpYWxTd2FwRW5hYmxlZDsKLSAgICBib29sIHBhcnRpYWxUZXh0dXJlVXBkYXRl
czsKKyAgICBzaXplX3QgbWF4UGFydGlhbFRleHR1cmVVcGRhdGVzOwogfTsKIAogLy8gUHJvdmlk
ZXMgaW5mb3JtYXRpb24gb24gYW4gSW1wbCdzIHJlbmRlcmluZyBjYXBhYmlsaXRpZXMgYmFjayB0
byB0aGUgQ0NMYXllclRyZWVIb3N0CkBAIC0xOTUsNiArMTk1LDcgQEAgcHVibGljOgogICAgIHZv
aWQgc3RhcnRSYXRlTGltaXRlcihHcmFwaGljc0NvbnRleHQzRCopOwogICAgIHZvaWQgc3RvcFJh
dGVMaW1pdGVyKEdyYXBoaWNzQ29udGV4dDNEKik7CiAKKyAgICBib29sIHJlcXVlc3RQYXJ0aWFs
VGV4dHVyZVVwZGF0ZSgpOwogICAgIHZvaWQgZGVsZXRlVGV4dHVyZUFmdGVyQ29tbWl0KFBhc3NP
d25QdHI8TWFuYWdlZFRleHR1cmU+KTsKIAogcHJvdGVjdGVkOgpAQCAtMjQzLDYgKzI0NCw3IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBtX3RyaWdnZXJJZGxlUGFpbnRzOwogCiAgICAgVGV4dHVyZUxp
c3QgbV9kZWxldGVUZXh0dXJlQWZ0ZXJDb21taXRMaXN0OworICAgIHNpemVfdCBtX3BhcnRpYWxU
ZXh0dXJlVXBkYXRlUmVxdWVzdHM7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKaW5kZXggOTM3YzE1NGZm
NjliYTg1M2JiZmM5MzQ1NmQ3NzY2NzEwYzcwYTIyNC4uNjhhYmM2ZDc3NDM4NWYxN2JlNWU2Njk0
ZWUzNWIxZGNkYTIzZGYzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaApAQCAtNzksOSArNzksOCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0KCkgPSAwOyAvLyBNdXN0IGJlIGNhbGxlZCBiZWZvcmUg
dXNpbmcgdGhlIHByb3h5LgogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgPSAwOyAvLyBNdXN0IGJl
IGNhbGxlZCBiZWZvcmUgZGVsZXRpbmcgdGhlIHByb3h5LgogCi0gICAgLy8gV2hldGhlciBzdWIt
cmVnaW9ucyBvZiB0ZXh0dXJlcyBjYW4gYmUgdXBkYXRlZCBvciBpZiBjb21wbGV0ZSB0ZXh0dXJl
Ci0gICAgLy8gdXBkYXRlcyBhcmUgcmVxdWlyZWQuCi0gICAgdmlydHVhbCBib29sIHBhcnRpYWxU
ZXh0dXJlVXBkYXRlQ2FwYWJpbGl0eSgpIGNvbnN0ID0gMDsKKyAgICAvLyBNYXhpbXVtIG51bWJl
ciBvZiBzdWItcmVnaW9uIHRleHR1cmUgdXBkYXRlcyBzdXBwb3J0ZWQgZm9yIGVhY2ggY29tbWl0
LgorICAgIHZpcnR1YWwgc2l6ZV90IG1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcygpIGNvbnN0ID0g
MDsKIAogICAgIC8vIERlYnVnIGhvb2tzCiAjaWZuZGVmIE5ERUJVRwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NpbmdsZVRocmVhZFByb3h5LmNwcAppbmRleCA3MmJlYzJhNzE2NjRhZjQzY2Q2NGQwMTRkMjhi
ODQyNjUwOTViMjAzLi43OWZhNjc4MGI5ZWE4ZWQ5OGEwYWYxOGE1ZjcwM2Y1ZjdiZmUzY2ZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NpbmdsZVRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcApAQCAtMTU1LDcgKzE1NSw4
IEBAIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6ZG9Db21taXQoKQogICAgICAgICBtX2xheWVy
VHJlZUhvc3QtPmJlZ2luQ29tbWl0T25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwuZ2V0
KCkpOwogICAgICAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIobV9sYXllclRyZWVIb3N0SW1w
bC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3Qt
PnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgp
LCB1cGRhdGVyKTsKLSAgICAgICAgd2hpbGUgKHVwZGF0ZXIudXBkYXRlKG1fbGF5ZXJUcmVlSG9z
dEltcGwtPmNvbnRleHQoKSwgMSkpIHsgfQorICAgICAgICB1cGRhdGVyLnVwZGF0ZShtX2xheWVy
VHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIG51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsK
KyAgICAgICAgQVNTRVJUKCF1cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOwogICAgICAgICBtX2xh
eWVyVHJlZUhvc3RJbXBsLT5zZXRWaXNpYmxlKG1fbGF5ZXJUcmVlSG9zdC0+dmlzaWJsZSgpKTsK
ICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5maW5pc2hDb21taXRPbkltcGxUaHJlYWQobV9sYXll
clRyZWVIb3N0SW1wbC5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHku
aAppbmRleCA0ZmFhMjI5OTkxMmFlYzljNGU2YWI0YmE3MDI3ZDgxYzgwNmQ0NWVlLi4wZjJjNTZm
NTFhNDAzZDQyODgzMzY4ODA1ZTJmMjkzYWFmOThkOTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5n
bGVUaHJlYWRQcm94eS5oCkBAIC0yOCwxMCArMjgsMTMgQEAKICNpbmNsdWRlICJjYy9DQ0NvbXBs
ZXRpb25FdmVudC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKICNpbmNs
dWRlICJjYy9DQ1Byb3h5LmgiCisjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCiBj
bGFzcyBDQ0xheWVyVHJlZUhvc3Q7CiAKIGNsYXNzIENDU2luZ2xlVGhyZWFkUHJveHkgOiBwdWJs
aWMgQ0NQcm94eSwgQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCB7CkBAIC01NCw3ICs1Nyw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZShib29sKTsKICAgICB2aXJ0dWFs
IHZvaWQgc3RhcnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpOwotICAgIHZpcnR1YWwgYm9v
bCBwYXJ0aWFsVGV4dHVyZVVwZGF0ZUNhcGFiaWxpdHkoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CisgICAgdmlydHVhbCBzaXplX3QgbWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKCkgY29uc3QgeyBy
ZXR1cm4gbnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk7IH0KIAogICAgIC8vIENDTGF5ZXJU
cmVlSG9zdEltcGxDbGllbnQgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0dWFsIHZvaWQgb25Td2Fw
QnVmZmVyc0NvbXBsZXRlT25JbXBsVGhyZWFkKCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcAppbmRleCA4NzQ1YzRlYTBhNzEwYmRlMThl
ZGUxODIwZjMxNGZkYjhjYzg3MmFiLi42NmUwOGM4YmQ5M2YxODI2YTM5YjU1M2MyOTY1MGE4M2Fj
MDllOGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcApAQCAtNDgsNyArNDgs
NyBAQCBDQ1RleHR1cmVVcGRhdGVyOjp+Q0NUZXh0dXJlVXBkYXRlcigpCiB7CiB9CiAKLXZvaWQg
Q0NUZXh0dXJlVXBkYXRlcjo6YXBwZW5kKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRl
eHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0
KQordm9pZCBDQ1RleHR1cmVVcGRhdGVyOjphcHBlbmQoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYg
ZGVzdFJlY3QsIFZlY3RvcjxVcGRhdGVFbnRyeT4mIGVudHJpZXMpCiB7CiAgICAgQVNTRVJUKHRl
eHR1cmUpOwogCkBAIC01NiwyNCArNTYsNTAgQEAgdm9pZCBDQ1RleHR1cmVVcGRhdGVyOjphcHBl
bmQoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmUKICAg
ICBlbnRyeS5tX3RleHR1cmUgPSB0ZXh0dXJlOwogICAgIGVudHJ5Lm1fc291cmNlUmVjdCA9IHNv
dXJjZVJlY3Q7CiAgICAgZW50cnkubV9kZXN0UmVjdCA9IGRlc3RSZWN0OwotICAgIG1fZW50cmll
cy5hcHBlbmQoZW50cnkpOworICAgIGVudHJpZXMuYXBwZW5kKGVudHJ5KTsKK30KKwordm9pZCBD
Q1RleHR1cmVVcGRhdGVyOjphcHBlbmQoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4
dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3Qp
Cit7CisgICAgYXBwZW5kKHRleHR1cmUsIHNvdXJjZVJlY3QsIGRlc3RSZWN0LCBtX2VudHJpZXMp
OworfQorCit2b2lkIENDVGV4dHVyZVVwZGF0ZXI6OmFwcGVuZFBhcnRpYWwoTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29u
c3QgSW50UmVjdCYgZGVzdFJlY3QpCit7CisgICAgYXBwZW5kKHRleHR1cmUsIHNvdXJjZVJlY3Qs
IGRlc3RSZWN0LCBtX3BhcnRpYWxFbnRyaWVzKTsKIH0KIAogYm9vbCBDQ1RleHR1cmVVcGRhdGVy
OjpoYXNNb3JlVXBkYXRlcygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZW50cmllcy5zaXplKCk7
CisgICAgcmV0dXJuIG1fZW50cmllcy5zaXplKCkgfHwgbV9wYXJ0aWFsRW50cmllcy5zaXplKCk7
CiB9CiAKIGJvb2wgQ0NUZXh0dXJlVXBkYXRlcjo6dXBkYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0LCBzaXplX3QgY291bnQpCiB7CisgICAgc2l6ZV90IGluZGV4OwogICAgIHNpemVfdCBt
YXhJbmRleCA9IG1pbihtX2VudHJ5SW5kZXggKyBjb3VudCwgbV9lbnRyaWVzLnNpemUoKSk7Ci0g
ICAgZm9yICg7IG1fZW50cnlJbmRleCA8IG1heEluZGV4OyArK21fZW50cnlJbmRleCkgewotICAg
ICAgICBVcGRhdGVFbnRyeSYgZW50cnkgPSBtX2VudHJpZXNbbV9lbnRyeUluZGV4XTsKKyAgICBm
b3IgKGluZGV4ID0gbV9lbnRyeUluZGV4OyBpbmRleCA8IG1heEluZGV4OyArK2luZGV4KSB7Cisg
ICAgICAgIFVwZGF0ZUVudHJ5JiBlbnRyeSA9IG1fZW50cmllc1tpbmRleF07CiAgICAgICAgIGVu
dHJ5Lm1fdGV4dHVyZS0+dXBkYXRlUmVjdChjb250ZXh0LCBtX2FsbG9jYXRvciwgZW50cnkubV9z
b3VyY2VSZWN0LCBlbnRyeS5tX2Rlc3RSZWN0KTsKICAgICB9CiAKLSAgICBpZiAobWF4SW5kZXgg
PCBtX2VudHJpZXMuc2l6ZSgpKQorICAgIGJvb2wgbW9yZVVwZGF0ZXMgPSBtYXhJbmRleCA8IG1f
ZW50cmllcy5zaXplKCk7CisKKyAgICBBU1NFUlQobV9wYXJ0aWFsRW50cmllcy5zaXplKCkgPD0g
Y291bnQpOworICAgIC8vIE1ha2Ugc3VyZSB0aGUgbnVtYmVyIG9mIHVwZGF0ZXMgaW5jbHVkaW5n
IHBhcnRpYWwgdXBkYXRlcyBhcmUgbm90IG1vcmUKKyAgICAvLyB0aGFuIHxjb3VudHwuCisgICAg
aWYgKChjb3VudCAtIChpbmRleCAtIG1fZW50cnlJbmRleCkpIDwgbV9wYXJ0aWFsRW50cmllcy5z
aXplKCkpCisgICAgICAgIG1vcmVVcGRhdGVzID0gdHJ1ZTsKKworICAgIGlmIChtb3JlVXBkYXRl
cykgeworICAgICAgICBtX2VudHJ5SW5kZXggPSBpbmRleDsKICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorCisgICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgbV9wYXJ0aWFsRW50cmllcy5z
aXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgVXBkYXRlRW50cnkmIGVudHJ5ID0gbV9wYXJ0aWFs
RW50cmllc1tpbmRleF07CisgICAgICAgIGVudHJ5Lm1fdGV4dHVyZS0+dXBkYXRlUmVjdChjb250
ZXh0LCBtX2FsbG9jYXRvciwgZW50cnkubV9zb3VyY2VSZWN0LCBlbnRyeS5tX2Rlc3RSZWN0KTsK
KyAgICB9CiAKICAgICAvLyBJZiBubyBlbnRyaWVzIGxlZnQgdG8gcHJvY2VzcywgYXV0by1jbGVh
ci4KICAgICBjbGVhcigpOwpAQCAtODQsNiArMTEwLDcgQEAgdm9pZCBDQ1RleHR1cmVVcGRhdGVy
OjpjbGVhcigpCiB7CiAgICAgbV9lbnRyeUluZGV4ID0gMDsKICAgICBtX2VudHJpZXMuY2xlYXIo
KTsKKyAgICBtX3BhcnRpYWxFbnRyaWVzLmNsZWFyKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4
dHVyZVVwZGF0ZXIuaAppbmRleCBiZjc5YWM5YzJlMjJlZmM1ZWRhOWE2NDgyOWUyZWZjY2VjMTVi
YjMwLi5kYmI1MmM5YmFkMjA0MzRkZGJmNzRjNjI4YTQ0NDVlOWQ3ZTk4N2QyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVV
cGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUZXh0dXJlVXBkYXRlci5oCkBAIC00MSw2ICs0MSw3IEBAIHB1YmxpYzoKICAgICB+Q0NU
ZXh0dXJlVXBkYXRlcigpOwogCiAgICAgdm9pZCBhcHBlbmQoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RS
ZWN0KTsKKyAgICB2b2lkIGFwcGVuZFBhcnRpYWwoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVy
ZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsK
IAogICAgIGJvb2wgaGFzTW9yZVVwZGF0ZXMoKSBjb25zdDsKIApAQCAtNTgsOSArNTksMTIgQEAg
cHJpdmF0ZToKICAgICAgICAgSW50UmVjdCBtX2Rlc3RSZWN0OwogICAgIH07CiAKKyAgICBzdGF0
aWMgdm9pZCBhcHBlbmQoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LCBWZWN0b3I8VXBkYXRlRW50
cnk+Jik7CisKICAgICBUZXh0dXJlQWxsb2NhdG9yKiBtX2FsbG9jYXRvcjsKICAgICBzaXplX3Qg
bV9lbnRyeUluZGV4OwogICAgIFZlY3RvcjxVcGRhdGVFbnRyeT4gbV9lbnRyaWVzOworICAgIFZl
Y3RvcjxVcGRhdGVFbnRyeT4gbV9wYXJ0aWFsRW50cmllczsKIH07CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJv
eHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5jcHAKaW5kZXggNWU2YThmODYyNjJkZjYyNDQ5NDJlNWI0MmI0MmViYWE4ODgz
M2EyZC4uOTc4ODc2ZTA2Y2NjNDNkOTFmZjcyZTkwODcxNzY5YTIzMjBmNWYyYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTQzLDcgKzQzLDkgQEAgdXNpbmcgbmFtZXNwYWNlIFdU
RjsKIAogbmFtZXNwYWNlIHsKIAotc3RhdGljIGNvbnN0IHNpemVfdCB0ZXh0dXJlVXBkYXRlc1Bl
ckZyYW1lID0gMDsKKy8vIE51bWJlciBvZiB0ZXh0dXJlcyB0byB1cGRhdGUgd2l0aCBlYWNoIGNh
bGwgdG8KKy8vIHNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMoKS4KK3N0YXRpYyBj
b25zdCBzaXplX3QgdGV4dHVyZVVwZGF0ZXNQZXJGcmFtZSA9IDU7CiAKIH0gLy8gYW5vbnltb3Vz
IG5hbWVzcGFjZQogCkBAIC00NDQsNyArNDQ2LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpzY2hl
ZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKCkKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NU
aHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcyIsIHRoaXMsIDAp
OwogICAgIEFTU0VSVChtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCk7Ci0gICAg
bV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQtPnVwZGF0ZShtX2xheWVyVHJlZUhv
c3RJbXBsLT5jb250ZXh0KCksIHRleHR1cmVVcGRhdGVzUGVyRnJhbWUgPiAwID8gdGV4dHVyZVVw
ZGF0ZXNQZXJGcmFtZSA6IDk5OTk5KTsKKyAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1w
bFRocmVhZC0+dXBkYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgdGV4dHVyZVVw
ZGF0ZXNQZXJGcmFtZSk7CiB9CiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9u
Q29tbWl0KCkKQEAgLTU2OSw5ICs1NzEsOSBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmxheWVyVHJl
ZUhvc3RDbG9zZWRPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpbwogICAg
IGNvbXBsZXRpb24tPnNpZ25hbCgpOwogfQogCi1ib29sIENDVGhyZWFkUHJveHk6OnBhcnRpYWxU
ZXh0dXJlVXBkYXRlQ2FwYWJpbGl0eSgpIGNvbnN0CitzaXplX3QgQ0NUaHJlYWRQcm94eTo6bWF4
UGFydGlhbFRleHR1cmVVcGRhdGVzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIXRleHR1cmVVcGRh
dGVzUGVyRnJhbWU7CisgICAgcmV0dXJuIHRleHR1cmVVcGRhdGVzUGVyRnJhbWU7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAppbmRleCBhMTFiNTI3
ODU5OTMxY2ZiOThmODcyNGE1MTI0M2EwOWI0ZWNjM2I5Li44NTI5YTRlNGNiNzAwODNjYmVkODc1
MjQ2MWE1ZmI3NmEzNzYwMmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCkBAIC02Miw3ICs2
Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZShib29sKTsKICAgICB2
aXJ0dWFsIHZvaWQgc3RhcnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpOwotICAgIHZpcnR1
YWwgYm9vbCBwYXJ0aWFsVGV4dHVyZVVwZGF0ZUNhcGFiaWxpdHkoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIHNpemVfdCBtYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMoKSBjb25zdDsKIAogICAgIC8vIEND
TGF5ZXJUcmVlSG9zdEltcGxDbGllbnQgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0dWFsIHZvaWQg
b25Td2FwQnVmZmVyc0NvbXBsZXRlT25JbXBsVGhyZWFkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAppbmRleCA0MWZlNGZi
NjU5Yjk0MDUxYzY3ZWFiZjNlZWE5YzA4NDY3NmVlYWI0Li4yNGZiOTZlYjhjMzkxYWIxZmMwMjA0
NDQ2NGE0Yjg2YjMwNzc1ZGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKQEAgLTExNDQsMTYgKzExNDQsMTUgQEAgcHVi
bGljOgogY2xhc3MgQ0NMYXllclRyZWVIb3N0VGVzdEF0b21pY0NvbW1pdCA6IHB1YmxpYyBDQ0xh
eWVyVHJlZUhvc3RUZXN0IHsKIHB1YmxpYzoKICAgICBDQ0xheWVyVHJlZUhvc3RUZXN0QXRvbWlj
Q29tbWl0KCkKLSAgICAgICAgOiBtX3VwZGF0ZUNoZWNrTGF5ZXIoQ29udGVudExheWVyQ2hyb21p
dW1XaXRoVXBkYXRlVHJhY2tpbmc6OmNyZWF0ZSgmbV9kZWxlZ2F0ZSkpCi0gICAgICAgICwgbV9u
dW1Db21taXRzKDApCisgICAgICAgIDogbV9sYXllcihDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhV
cGRhdGVUcmFja2luZzo6Y3JlYXRlKCZtX2RlbGVnYXRlKSkKICAgICB7CiAgICAgICAgIC8vIE1h
a2Ugc3VyZSBwYXJ0aWFsIHRleHR1cmUgdXBkYXRlcyBhcmUgdHVybmVkIG9mZi4KLSAgICAgICAg
bV9zZXR0aW5ncy5wYXJ0aWFsVGV4dHVyZVVwZGF0ZXMgPSBmYWxzZTsKKyAgICAgICAgbV9zZXR0
aW5ncy5tYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMgPSAwOwogICAgIH0KIAogICAgIHZpcnR1YWwg
dm9pZCBiZWdpblRlc3QoKQogICAgIHsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRSb290
TGF5ZXIobV91cGRhdGVDaGVja0xheWVyKTsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRS
b290TGF5ZXIobV9sYXllcik7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRT
aXplKEludFNpemUoMTAsIDEwKSk7CiAKICAgICAgICAgcG9zdFNldE5lZWRzQ29tbWl0VG9NYWlu
VGhyZWFkKCk7CkBAIC0xMTcwLDcgKzExNjksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBFWFBF
Q1RfRVEoMSwgY29udGV4dC0+bnVtVGV4dHVyZXMoKSk7CiAgICAgICAgICAgICAvLyBOdW1iZXIg
b2YgdGV4dHVyZXMgdXNlZCBmb3IgY29tbWl0IHNob3VsZCBiZSBvbmUuCiAgICAgICAgICAgICBF
WFBFQ1RfRVEoMSwgY29udGV4dC0+bnVtVXNlZFRleHR1cmVzKCkpOwotICAgICAgICAgICAgLy8g
VmVyaWZ5IHVzZWQgdGV4dHVyZSBpcyBjb3JyZWN0LgorICAgICAgICAgICAgLy8gVmVyaWZ5IHRo
YXQgdXNlZCB0ZXh0dXJlIGlzIGNvcnJlY3QuCiAgICAgICAgICAgICBFWFBFQ1RfVFJVRShjb250
ZXh0LT51c2VkVGV4dHVyZShjb250ZXh0LT50ZXh0dXJlKDApKSk7CiAKICAgICAgICAgICAgIGNv
bnRleHQtPnJlc2V0VXNlZFRleHR1cmVzKCk7CkBAIC0xMjExLDcgKzEyMTAsNyBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkKICAgICB7Ci0gICAgICAgIG1fdXBkYXRlQ2hl
Y2tMYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7CisgICAgICAgIG1fbGF5ZXItPnNldE5lZWRzRGlz
cGxheSgpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBhZnRlclRlc3QoKQpAQCAtMTIyMCw4
ICsxMjE5LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIE1vY2tDb250ZW50TGF5ZXJEZWxl
Z2F0ZSBtX2RlbGVnYXRlOwotICAgIFJlZlB0cjxDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRh
dGVUcmFja2luZz4gbV91cGRhdGVDaGVja0xheWVyOwotICAgIGludCBtX251bUNvbW1pdHM7Cisg
ICAgUmVmUHRyPENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nPiBtX2xheWVy
OwogfTsKIAogVEVTVF9GKENDTGF5ZXJUcmVlSG9zdFRlc3RBdG9taWNDb21taXQsIHJ1bk11bHRp
VGhyZWFkKQpAQCAtMTIyOSw2ICsxMjI3LDEzMiBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0VGVz
dEF0b21pY0NvbW1pdCwgcnVuTXVsdGlUaHJlYWQpCiAgICAgcnVuVGVzdCh0cnVlKTsKIH0KIAor
Y2xhc3MgQ0NMYXllclRyZWVIb3N0VGVzdEF0b21pY0NvbW1pdFdpdGhQYXJ0aWFsVXBkYXRlIDog
cHVibGljIENDTGF5ZXJUcmVlSG9zdFRlc3QgeworcHVibGljOgorICAgIENDTGF5ZXJUcmVlSG9z
dFRlc3RBdG9taWNDb21taXRXaXRoUGFydGlhbFVwZGF0ZSgpCisgICAgICAgIDogbV9wYXJlbnQo
Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OmNyZWF0ZSgmbV9kZWxlZ2F0
ZSkpCisgICAgICAgICwgbV9jaGlsZChDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFj
a2luZzo6Y3JlYXRlKCZtX2RlbGVnYXRlKSkKKyAgICAgICAgLCBtX251bUNvbW1pdHMoMCkKKyAg
ICB7CisgICAgICAgIC8vIEFsbG93IG9uZSBwYXJ0aWFsIHRleHR1cmUgdXBkYXRlLgorICAgICAg
ICBtX3NldHRpbmdzLm1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcyA9IDE7CisgICAgfQorCisgICAg
dmlydHVhbCB2b2lkIGJlZ2luVGVzdCgpCisgICAgeworICAgICAgICBtX2xheWVyVHJlZUhvc3Qt
PnNldFJvb3RMYXllcihtX3BhcmVudCk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Vmll
d3BvcnRTaXplKEludFNpemUoMTAsIDEwKSk7CisgICAgICAgIG1fcGFyZW50LT5hZGRDaGlsZCht
X2NoaWxkKTsKKyAgICAgICAgbV9jaGlsZC0+c2V0T3BhY2l0eSgwLjUpOworICAgICAgICBtX2No
aWxkLT5zZXRCb3VuZHMoSW50U2l6ZSgyMCwgMjApKTsKKworICAgICAgICBwb3N0U2V0TmVlZHND
b21taXRUb01haW5UaHJlYWQoKTsKKyAgICAgICAgcG9zdFNldE5lZWRzUmVkcmF3VG9NYWluVGhy
ZWFkKCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGNvbW1pdENvbXBsZXRlT25DQ1RocmVh
ZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKQorICAgIHsKKyAgICAgICAgQ29tcG9zaXRvckZh
a2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhUZXh0dXJlVHJhY2tpbmcqIGNvbnRleHQgPSBzdGF0
aWNfY2FzdDxDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEV2l0aFRleHR1cmVUcmFj
a2luZyo+KEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0cmFjdFdlYkdyYXBoaWNzQ29udGV4
dDNEKGltcGwtPmNvbnRleHQoKSkpOworCisgICAgICAgIHN3aXRjaCAoaW1wbC0+ZnJhbWVOdW1i
ZXIoKSkgeworICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICAvLyBOdW1iZXIgb2YgdGV4dHVy
ZXMgc2hvdWxkIGJlIHR3by4KKyAgICAgICAgICAgIEVYUEVDVF9FUSgyLCBjb250ZXh0LT5udW1U
ZXh0dXJlcygpKTsKKyAgICAgICAgICAgIC8vIE51bWJlciBvZiB0ZXh0dXJlcyB1c2VkIGZvciBj
b21taXQgc2hvdWxkIGJlIHR3by4KKyAgICAgICAgICAgIEVYUEVDVF9FUSgyLCBjb250ZXh0LT5u
dW1Vc2VkVGV4dHVyZXMoKSk7CisgICAgICAgICAgICAvLyBWZXJpZnkgdGhhdCB1c2VkIHRleHR1
cmVzIGFyZSBjb3JyZWN0LgorICAgICAgICAgICAgRVhQRUNUX1RSVUUoY29udGV4dC0+dXNlZFRl
eHR1cmUoY29udGV4dC0+dGV4dHVyZSgwKSkpOworICAgICAgICAgICAgRVhQRUNUX1RSVUUoY29u
dGV4dC0+dXNlZFRleHR1cmUoY29udGV4dC0+dGV4dHVyZSgxKSkpOworCisgICAgICAgICAgICBj
b250ZXh0LT5yZXNldFVzZWRUZXh0dXJlcygpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgMToKKyAgICAgICAgICAgIC8vIE51bWJlciBvZiB0ZXh0dXJlcyBzaG91bGQgYmUgZm91
ciBhcyB0aGUgZmlyc3QgdHdvCisgICAgICAgICAgICAvLyB0ZXh0dXJlcyBhcmUgdXNlZCBieSB0
aGUgaW1wbCB0aHJlYWQuCisgICAgICAgICAgICBFWFBFQ1RfRVEoNCwgY29udGV4dC0+bnVtVGV4
dHVyZXMoKSk7CisgICAgICAgICAgICAvLyBOdW1iZXIgb2YgdGV4dHVyZXMgdXNlZCBmb3IgY29t
bWl0IHNob3VsZCBzdGlsbCBiZSB0d28uCisgICAgICAgICAgICBFWFBFQ1RfRVEoMiwgY29udGV4
dC0+bnVtVXNlZFRleHR1cmVzKCkpOworICAgICAgICAgICAgLy8gRmlyc3QgdHdvIHRleHR1cmVz
IHNob3VsZCBub3QgaGF2ZSBiZWVuIHVzZWQuCisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UoY29u
dGV4dC0+dXNlZFRleHR1cmUoY29udGV4dC0+dGV4dHVyZSgwKSkpOworICAgICAgICAgICAgRVhQ
RUNUX0ZBTFNFKGNvbnRleHQtPnVzZWRUZXh0dXJlKGNvbnRleHQtPnRleHR1cmUoMSkpKTsKKyAg
ICAgICAgICAgIC8vIE5ldyB0ZXh0dXJlcyBzaG91bGQgaGF2ZSBiZWVuIHVzZWQuCisgICAgICAg
ICAgICBFWFBFQ1RfVFJVRShjb250ZXh0LT51c2VkVGV4dHVyZShjb250ZXh0LT50ZXh0dXJlKDIp
KSk7CisgICAgICAgICAgICBFWFBFQ1RfVFJVRShjb250ZXh0LT51c2VkVGV4dHVyZShjb250ZXh0
LT50ZXh0dXJlKDMpKSk7CisKKyAgICAgICAgICAgIGNvbnRleHQtPnJlc2V0VXNlZFRleHR1cmVz
KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgLy8g
TnVtYmVyIG9mIHRleHR1cmVzIHNob3VsZCBiZSB0aHJlZSBhcyB3ZSBhbGxvdyBvbmUKKyAgICAg
ICAgICAgIC8vIHBhcnRpYWwgdXBkYXRlIGFuZCB0aGUgZmlyc3QgdHdvIHRleHR1cmVzIGFyZSB1
c2VkIGJ5CisgICAgICAgICAgICAvLyB0aGUgaW1wbCB0aHJlYWQuCisgICAgICAgICAgICBFWFBF
Q1RfRVEoMywgY29udGV4dC0+bnVtVGV4dHVyZXMoKSk7CisgICAgICAgICAgICAvLyBOdW1iZXIg
b2YgdGV4dHVyZXMgdXNlZCBmb3IgY29tbWl0IHNob3VsZCBzdGlsbCBiZSB0d28uCisgICAgICAg
ICAgICBFWFBFQ1RfRVEoMiwgY29udGV4dC0+bnVtVXNlZFRleHR1cmVzKCkpOworICAgICAgICAg
ICAgLy8gRmlyc3QgdGV4dHVyZSBzaG91bGQgbm90IGhhdmUgYmVlbiB1c2VkLgorICAgICAgICAg
ICAgRVhQRUNUX0ZBTFNFKGNvbnRleHQtPnVzZWRUZXh0dXJlKGNvbnRleHQtPnRleHR1cmUoMCkp
KTsKKyAgICAgICAgICAgIC8vIFNlY29uZCB0ZXh0dXJlIHNob3VsZCBoYXZlIGJlZW4gdXNlZC4K
KyAgICAgICAgICAgIEVYUEVDVF9UUlVFKGNvbnRleHQtPnVzZWRUZXh0dXJlKGNvbnRleHQtPnRl
eHR1cmUoMSkpKTsKKyAgICAgICAgICAgIC8vIE5ldyB0ZXh0dXJlcyBzaG91bGQgaGF2ZSBiZWVu
IHVzZWQuCisgICAgICAgICAgICBFWFBFQ1RfVFJVRShjb250ZXh0LT51c2VkVGV4dHVyZShjb250
ZXh0LT50ZXh0dXJlKDIpKSk7CisKKyAgICAgICAgICAgIGNvbnRleHQtPnJlc2V0VXNlZFRleHR1
cmVzKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVI
b3N0SW1wbCogaW1wbCkKKyAgICB7CisgICAgICAgIENvbXBvc2l0b3JGYWtlV2ViR3JhcGhpY3ND
b250ZXh0M0RXaXRoVGV4dHVyZVRyYWNraW5nKiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Q29tcG9z
aXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhUZXh0dXJlVHJhY2tpbmcqPihHcmFwaGlj
c0NvbnRleHQzRFByaXZhdGU6OmV4dHJhY3RXZWJHcmFwaGljc0NvbnRleHQzRChpbXBsLT5jb250
ZXh0KCkpKTsKKworICAgICAgICAvLyBOdW1iZXIgb2YgdGV4dHVyZXMgdXNlZCBmb3IgZHJhd2lu
ZyBzaG91bGQgYWx3YXlzIGJlIHR3by4KKyAgICAgICAgRVhQRUNUX0VRKDIsIGNvbnRleHQtPm51
bVVzZWRUZXh0dXJlcygpKTsKKworICAgICAgICBpZiAoaW1wbC0+ZnJhbWVOdW1iZXIoKSA8IDMp
IHsKKyAgICAgICAgICAgIGNvbnRleHQtPnJlc2V0VXNlZFRleHR1cmVzKCk7CisgICAgICAgICAg
ICBwb3N0U2V0TmVlZHNBbmltYXRlQW5kQ29tbWl0VG9NYWluVGhyZWFkKCk7CisgICAgICAgICAg
ICBwb3N0U2V0TmVlZHNSZWRyYXdUb01haW5UaHJlYWQoKTsKKyAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICBlbmRUZXN0KCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGxheW91dCgpCisg
ICAgeworICAgICAgICBzd2l0Y2ggKG1fbnVtQ29tbWl0cysrKSB7CisgICAgICAgIGNhc2UgMDoK
KyAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgbV9wYXJlbnQtPnNldE5lZWRzRGlzcGxheSgp
OworICAgICAgICAgICAgbV9jaGlsZC0+c2V0TmVlZHNEaXNwbGF5KCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgLy8gRGFtYWdlIHBhcnQgb2YgbGF5
ZXJzLgorICAgICAgICAgICAgbV9wYXJlbnQtPnNldE5lZWRzRGlzcGxheVJlY3QoRmxvYXRSZWN0
KDAsIDAsIDUsIDUpKTsKKyAgICAgICAgICAgIG1fY2hpbGQtPnNldE5lZWRzRGlzcGxheVJlY3Qo
RmxvYXRSZWN0KDAsIDAsIDUsIDUpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBhZnRlclRlc3QoKQorICAg
IHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgTW9ja0NvbnRlbnRMYXllckRlbGVnYXRlIG1fZGVs
ZWdhdGU7CisgICAgUmVmUHRyPENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5n
PiBtX3BhcmVudDsKKyAgICBSZWZQdHI8Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJh
Y2tpbmc+IG1fY2hpbGQ7CisgICAgaW50IG1fbnVtQ29tbWl0czsKK307CisKK1RFU1RfRihDQ0xh
eWVyVHJlZUhvc3RUZXN0QXRvbWljQ29tbWl0V2l0aFBhcnRpYWxVcGRhdGUsIHJ1bk11bHRpVGhy
ZWFkKQoreworICAgIHJ1blRlc3QodHJ1ZSk7Cit9CisKICNkZWZpbmUgRVhQRUNUX0VRX1JFQ1Qo
YSwgYikgXAogICAgIEVYUEVDVF9FUShhLngoKSwgYi54KCkpOyBcCiAgICAgRVhQRUNUX0VRKGEu
eSgpLCBiLnkoKSk7IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
VGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IGIwMzUwZGI0OTVmYjU2MmIzNTgxNDA4
N2VmNjQxMGQ3NjE5NWJhNzUuLmRmNDQ0NWE0Nzk0MDVmMmQ0NzY4ODA2OGFmODkwMWJlNDMwZmEz
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNo
cm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExh
eWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtNjAsMTMgKzYwLDE2IEBAIGNsYXNzIEZha2VMYXllclRl
eHR1cmVVcGRhdGVyIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXIgewogcHVibGljOgogICAg
IGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CiAg
ICAgcHVibGljOgotICAgICAgICBUZXh0dXJlKFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRl
eHR1cmUpIDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJlKSB7IH0KKyAgICAg
ICAgVGV4dHVyZShGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlciogbGF5ZXIsIFBhc3NPd25QdHI8TWFu
YWdlZFRleHR1cmU+IHRleHR1cmUpIDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0
dXJlKSwgbV9sYXllcihsYXllcikgeyB9CiAgICAgICAgIHZpcnR1YWwgflRleHR1cmUoKSB7IH0K
IAotICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRl
eHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYpIHsgfQorICAg
ICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVB
bGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYpIHsgbV9sYXllci0+dXBk
YXRlUmVjdCgpOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBGYWtlTGF5ZXJUZXh0dXJlVXBk
YXRlciogbV9sYXllcjsKICAgICB9OwogCi0gICAgRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKSA6
IG1fcHJlcGFyZUNvdW50KDApIHsgfQorICAgIEZha2VMYXllclRleHR1cmVVcGRhdGVyKCkgOiBt
X3ByZXBhcmVDb3VudCgwKSwgbV91cGRhdGVDb3VudCgwKSB7IH0KICAgICB2aXJ0dWFsIH5GYWtl
TGF5ZXJUZXh0dXJlVXBkYXRlcigpIHsgfQogCiAgICAgLy8gU2V0cyB0aGUgcmVjdCB0byBpbnZh
bGlkYXRlIGR1cmluZyB0aGUgbmV4dCBjYWxsIHRvIHByZXBhcmVUb1VwZGF0ZSgpLiBBZnRlciB0
aGUgbmV4dApAQCAtNzcsMTcgKzgwLDIzIEBAIHB1YmxpYzoKICAgICBpbnQgcHJlcGFyZUNvdW50
KCkgY29uc3QgeyByZXR1cm4gbV9wcmVwYXJlQ291bnQ7IH0KICAgICB2b2lkIGNsZWFyUHJlcGFy
ZUNvdW50KCkgeyBtX3ByZXBhcmVDb3VudCA9IDA7IH0KIAorICAgIC8vIE51bWJlciBvZiB0aW1l
cyB1cGRhdGVSZWN0IGhhcyBiZWVuIGludm9rZWQuCisgICAgaW50IHVwZGF0ZUNvdW50KCkgY29u
c3QgeyByZXR1cm4gbV91cGRhdGVDb3VudDsgfQorICAgIHZvaWQgY2xlYXJVcGRhdGVDb3VudCgp
IHsgbV91cGRhdGVDb3VudCA9IDA7IH0KKyAgICB2b2lkIHVwZGF0ZVJlY3QoKSB7IG1fdXBkYXRl
Q291bnQrKzsgfQorCiAgICAgdm9pZCBzZXRPcGFxdWVQYWludFJlY3QoY29uc3QgSW50UmVjdCYg
b3BhcXVlUGFpbnRSZWN0KSB7IG1fb3BhcXVlUGFpbnRSZWN0ID0gb3BhcXVlUGFpbnRSZWN0OyB9
CiAKICAgICAvLyBMYXN0IHJlY3QgcGFzc2VkIHRvIHByZXBhcmVUb1VwZGF0ZSgpLgogICAgIGNv
bnN0IEludFJlY3QmIGxhc3RVcGRhdGVSZWN0KCkgIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFVwZGF0
ZVJlY3Q7IH0KIAotICAgIHZpcnR1YWwgUGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlPiBjcmVhdGVUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKiBtYW5hZ2VyKSB7IHJldHVybiBh
ZG9wdFB0cihuZXcgVGV4dHVyZShNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKG1hbmFnZXIpKSk7IH0K
KyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gY3Jl
YXRlVGV4dHVyZShUZXh0dXJlTWFuYWdlciogbWFuYWdlcikgeyByZXR1cm4gYWRvcHRQdHIobmV3
IFRleHR1cmUodGhpcywgTWFuYWdlZFRleHR1cmU6OmNyZWF0ZShtYW5hZ2VyKSkpOyB9CiAgICAg
dmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtKSB7
IHJldHVybiBTYW1wbGVkVGV4ZWxGb3JtYXRSR0JBOyB9CiAgICAgdmlydHVhbCB2b2lkIHByZXBh
cmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYsIGlu
dCwgZmxvYXQsIEludFJlY3QqIHJlc3VsdGluZ09wYXF1ZVJlY3QpOwogCiBwcml2YXRlOgogICAg
IGludCBtX3ByZXBhcmVDb3VudDsKKyAgICBpbnQgbV91cGRhdGVDb3VudDsKICAgICBJbnRSZWN0
IG1fcmVjdFRvSW52YWxpZGF0ZTsKICAgICBJbnRSZWN0IG1fbGFzdFVwZGF0ZVJlY3Q7CiAgICAg
SW50UmVjdCBtX29wYXF1ZVBhaW50UmVjdDsKQEAgLTU2NCw0ICs1NzMsNzQgQEAgVEVTVChUaWxl
ZExheWVyQ2hyb21pdW1UZXN0LCBsYXllckFkZHNTZWxmVG9PY2NsdWRlZFJlZ2lvbikKICAgICBF
WFBFQ1RfRVEoMHUsIG9jY2x1ZGVkLnJlY3RzKCkuc2l6ZSgpKTsKIH0KIAorVEVTVChUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCBwYXJ0aWFsVXBkYXRlcykKK3sKKyAgICBDQ1NldHRpbmdzIHNldHRp
bmdzOworICAgIHNldHRpbmdzLm1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcyA9IDQ7CisgICAgLy8g
SW5pdGlhbGl6ZSB3aXRob3V0IHRocmVhZGluZyBzdXBwb3J0LgorICAgIFdlYktpdDo6V2ViQ29t
cG9zaXRvcjo6aW5pdGlhbGl6ZSgwKTsKKyAgICBGYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50IGZh
a2VDQ0xheWVyVHJlZUhvc3RDbGllbnQ7CisgICAgUmVmUHRyPENDTGF5ZXJUcmVlSG9zdD4gY2NM
YXllclRyZWVIb3N0ID0gQ0NMYXllclRyZWVIb3N0OjpjcmVhdGUoJmZha2VDQ0xheWVyVHJlZUhv
c3RDbGllbnQsIHNldHRpbmdzKTsKKworICAgIC8vIENyZWF0ZSBvbmUgNTAwIHggMzAwIHRpbGVk
IGxheWVyLgorICAgIEludFNpemUgY29udGVudEJvdW5kcygzMDAsIDIwMCk7CisgICAgSW50UmVj
dCBjb250ZW50UmVjdChJbnRQb2ludDo6emVybygpLCBjb250ZW50Qm91bmRzKTsKKworICAgIFJl
ZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGls
ZWRMYXllckNocm9taXVtKGNjTGF5ZXJUcmVlSG9zdC0+Y29udGVudHNUZXh0dXJlTWFuYWdlcigp
KSk7CisgICAgbGF5ZXItPnNldEJvdW5kcyhjb250ZW50Qm91bmRzKTsKKyAgICBsYXllci0+c2V0
UG9zaXRpb24oRmxvYXRQb2ludCgxNTAsIDE1MCkpOworICAgIGxheWVyLT5pbnZhbGlkYXRlUmVj
dChjb250ZW50UmVjdCk7CisKKyAgICBGYWtlVGV4dHVyZUFsbG9jYXRvciB0ZXh0dXJlQWxsb2Nh
dG9yOworICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcigmdGV4dHVyZUFsbG9jYXRvcik7CisK
KyAgICBjY0xheWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcihsYXllcik7CisgICAgY2NMYXllclRy
ZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgzMDAsIDIwMCkpOworCisgICAgLy8gRnVs
bCB1cGRhdGUgb2YgYWxsIDYgdGlsZXMuCisgICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXll
cnMoKTsKKyAgICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY2NM
YXllclRyZWVIb3N0LT5jb250ZXh0KCksIHVwZGF0ZXIpOworICAgIHVwZGF0ZXIudXBkYXRlKDAs
IDQpOworICAgIEVYUEVDVF9FUSg0LCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+
dXBkYXRlQ291bnQoKSk7CisgICAgRVhQRUNUX1RSVUUodXBkYXRlci5oYXNNb3JlVXBkYXRlcygp
KTsKKyAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJVcGRhdGVDb3Vu
dCgpOworICAgIHVwZGF0ZXIudXBkYXRlKDAsIDQpOworICAgIEVYUEVDVF9FUSgyLCBsYXllci0+
ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlQ291bnQoKSk7CisgICAgRVhQRUNUX0ZB
TFNFKHVwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CisgICAgbGF5ZXItPmZha2VMYXllclRleHR1
cmVVcGRhdGVyKCktPmNsZWFyVXBkYXRlQ291bnQoKTsKKyAgICBjY0xheWVyVHJlZUhvc3QtPmNv
bW1pdENvbXBsZXRlKCk7CisKKyAgICAvLyBGdWxsIHVwZGF0ZSBvZiAzIHRpbGVzIGFuZCBwYXJ0
aWFsIHVwZGF0ZSBvZiAzIHRpbGVzLgorICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0
KDAsIDAsIDMwMCwgMTUwKSk7CisgICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsK
KyAgICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY2NMYXllclRy
ZWVIb3N0LT5jb250ZXh0KCksIHVwZGF0ZXIpOworICAgIHVwZGF0ZXIudXBkYXRlKDAsIDQpOwor
ICAgIEVYUEVDVF9FUSgzLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRl
Q291bnQoKSk7CisgICAgRVhQRUNUX1RSVUUodXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsKKyAg
ICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJVcGRhdGVDb3VudCgpOwor
ICAgIHVwZGF0ZXIudXBkYXRlKDAsIDQpOworICAgIEVYUEVDVF9FUSgzLCBsYXllci0+ZmFrZUxh
eWVyVGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlQ291bnQoKSk7CisgICAgRVhQRUNUX0ZBTFNFKHVw
ZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CisgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRh
dGVyKCktPmNsZWFyVXBkYXRlQ291bnQoKTsKKyAgICBjY0xheWVyVHJlZUhvc3QtPmNvbW1pdENv
bXBsZXRlKCk7CisKKyAgICAvLyBQYXJ0aWFsIHVwZGF0ZSBvZiA2IHRpbGVzLgorICAgIGxheWVy
LT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDUwLCA1MCwgMjAwLCAxMDApKTsKKyAgICBjY0xheWVy
VHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOworICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlQ29t
cG9zaXRvclJlc291cmNlcyhjY0xheWVyVHJlZUhvc3QtPmNvbnRleHQoKSwgdXBkYXRlcik7Cisg
ICAgdXBkYXRlci51cGRhdGUoMCwgNCk7CisgICAgRVhQRUNUX0VRKDIsIGxheWVyLT5mYWtlTGF5
ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3VudCgpKTsKKyAgICBFWFBFQ1RfVFJVRSh1cGRh
dGVyLmhhc01vcmVVcGRhdGVzKCkpOworICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRl
cigpLT5jbGVhclVwZGF0ZUNvdW50KCk7CisgICAgdXBkYXRlci51cGRhdGUoMCwgNCk7CisgICAg
RVhQRUNUX0VRKDQsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3Vu
dCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UodXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsKKyAgICBs
YXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJVcGRhdGVDb3VudCgpOworICAg
IGNjTGF5ZXJUcmVlSG9zdC0+Y29tbWl0Q29tcGxldGUoKTsKKworICAgIGNjTGF5ZXJUcmVlSG9z
dC0+c2V0Um9vdExheWVyKDApOworICAgIGNjTGF5ZXJUcmVlSG9zdC5jbGVhcigpOworICAgIFdl
YktpdDo6V2ViQ29tcG9zaXRvcjo6c2h1dGRvd24oKTsKK30KKwogfSAvLyBuYW1lc3BhY2UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125950</attachid>
            <date>2012-02-07 16:13:25 -0800</date>
            <delta_ts>2012-02-07 17:53:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76740-20120207191324.patch</filename>
            <type>text/plain</type>
            <size>35870</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2OTk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDc4NjkxZjc5ZjcwNjM2
Yjk0ODU2YWI3OGJhZThiODhiODMzNTYxMC4uNDg3MzljY2NmZWU5YTI5NGFhMmZjMjhlYjY1ZGE5
MTRjOWExNjA4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDEyLTAyLTA3ICBEYXZp
ZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBB
dm9pZCB1bm5lY2Vzc2FyeSBmdWxsIHRpbGUgdXBkYXRlcyB3aXRob3V0IGJyZWFraW5nIGF0b21p
Y2l0eSBvZiBjb21taXRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzY3NDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBbGxvdyB0aGUgZmluYWwgYmF0Y2ggb2YgdGV4dHVyZSB1cGxvYWRzIHRvIGJlIHBl
cmZvcm1lZCB3aXRob3V0CisgICAgICAgIGFsbG9jYXRpbmcgbmV3IHRleHR1cmVzIGFuZCByZS1w
YWludGluZyBjb21wbGV0ZSB0aWxlcy4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIHRlc3RlZCBi
eSB0aGUgZm9sbG93aW5nIHVuaXQgdGVzdDoKKyAgICAgICAgLSBDQ0xheWVyVHJlZUhvc3RUZXN0
QXRvbWljQ29tbWl0V2l0aFBhcnRpYWxVcGRhdGUucnVuTXVsdGlUaHJlYWQKKyAgICAgICAgLSBU
aWxlZExheWVyQ2hyb21pdW1UZXN0LnBhcnRpYWxVcGRhdGVzCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VXBkYXRhYmxlVGlsZTo6VXBkYXRhYmxlVGlsZSk6CisgICAgICAgIChVcGRhdGFibGVU
aWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9z
aXRvclJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnBy
ZXBhcmVUb1VwZGF0ZVRpbGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVI
b3N0OjpDQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJl
ZUhvc3Q6OnVwZGF0ZUxheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6
OnJlcXVlc3RQYXJ0aWFsVGV4dHVyZVVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNDU2V0dGluZ3M6OkNDU2V0dGluZ3MpOgorICAgICAgICAoQ0NTZXR0
aW5ncyk6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaDoKKyAgICAgICAgKENDUHJveHkpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6ZG9Db21taXQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHku
aDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQ
cm94eTo6bWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNDVGV4dHVyZVVwZGF0ZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6OmFwcGVuZFBhcnRpYWwpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NUZXh0dXJlVXBkYXRlcjo6aGFzTW9yZVVwZGF0ZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NUZXh0dXJlVXBkYXRlcjo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVy
ZVVwZGF0ZXI6OmNsZWFyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RleHR1cmVVcGRhdGVyLmg6CisgICAgICAgIChDQ1RleHR1cmVVcGRhdGVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcDoKKyAg
ICAgICAgKFdURik6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRB
Y3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJv
eHk6Om1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oOgorICAgICAgICAoQ0NUaHJlYWRQcm94eSk6
CisKIDIwMTItMDItMDcgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBbY2hyb21pdW1dIEFsbG93IHJldGFpbmluZyB0ZXh0dXJlIGFjcm9zcyBmcmFtZXMg
aW4gY29tcG9zaXRlZCB2aWRlbyBwbGF5YmFjayBhbmQgY29ycmVjdGx5IGhhbmRsZSBsb3N0IGNv
bnRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMWJjODU0M2VkMTBkNTEzM2Y0M2E0
NDgxMzE2NzE2OTNhYTdhMGJmZS4uYzAwNWExMGZjNDRhMzQwOTBlM2FmNjk4Y2I4NTdkYWY3ZjVi
OTJmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAxMi0w
Mi0wNyAgRGF2aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtD
aHJvbWl1bV0gQXZvaWQgdW5uZWNlc3NhcnkgZnVsbCB0aWxlIHVwZGF0ZXMgd2l0aG91dCBicmVh
a2luZyBhdG9taWNpdHkgb2YgY29tbWl0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTc2NzQwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIENDTGF5ZXJUcmVlSG9zdFRlc3RBdG9taWNDb21taXRXaXRo
UGFydGlhbFVwZGF0ZSBhbmQKKyAgICAgICAgVGlsZWRMYXllckNocm9taXVtVGVzdC5wYXJ0aWFs
VXBkYXRlcyB0ZXN0cyB0aGF0IHZlcmlmaWVzCisgICAgICAgIGF0b21pY2l0eSBvZiBjb21taXRz
IHdpdGggcGFydGlhbCB1cGRhdGVzLgorCisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0
VGVzdC5jcHA6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RBdG9taWNDb21taXQ6
OkNDTGF5ZXJUcmVlSG9zdFRlc3RBdG9taWNDb21taXQpOgorICAgICAgICAoV1RGOjpDQ0xheWVy
VHJlZUhvc3RUZXN0QXRvbWljQ29tbWl0OjpiZWdpblRlc3QpOgorICAgICAgICAoV1RGOjpDQ0xh
eWVyVHJlZUhvc3RUZXN0QXRvbWljQ29tbWl0Ojpjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQpOgor
ICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0QXRvbWljQ29tbWl0OjpsYXlvdXQpOgor
ICAgICAgICAoQ0NMYXllclRyZWVIb3N0VGVzdEF0b21pY0NvbW1pdCk6CisgICAgICAgIChDQ0xh
eWVyVHJlZUhvc3RUZXN0QXRvbWljQ29tbWl0V2l0aFBhcnRpYWxVcGRhdGUpOgorICAgICAgICAo
V1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0QXRvbWljQ29tbWl0V2l0aFBhcnRpYWxVcGRhdGU6OkND
TGF5ZXJUcmVlSG9zdFRlc3RBdG9taWNDb21taXRXaXRoUGFydGlhbFVwZGF0ZSk6CisgICAgICAg
IChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RBdG9taWNDb21taXRXaXRoUGFydGlhbFVwZGF0ZTo6
YmVnaW5UZXN0KToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdEF0b21pY0NvbW1p
dFdpdGhQYXJ0aWFsVXBkYXRlOjpjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQpOgorICAgICAgICAo
V1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0QXRvbWljQ29tbWl0V2l0aFBhcnRpYWxVcGRhdGU6OmRy
YXdMYXllcnNPbkNDVGhyZWFkKToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdEF0
b21pY0NvbW1pdFdpdGhQYXJ0aWFsVXBkYXRlOjpsYXlvdXQpOgorICAgICAgICAoV1RGOjpDQ0xh
eWVyVHJlZUhvc3RUZXN0QXRvbWljQ29tbWl0V2l0aFBhcnRpYWxVcGRhdGU6OmFmdGVyVGVzdCk6
CisgICAgICAgIChXVEYpOgorICAgICAgICAoV1RGOjpURVNUX0YpOgorICAgICAgICAqIHRlc3Rz
L1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgorICAgICAgICAoV1RGOjpGYWtlTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6VGV4dHVyZTo6VGV4dHVyZSk6CisgICAgICAgIChXVEY6OkZha2VMYXllclRl
eHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KToKKyAgICAgICAgKFRleHR1cmUpOgor
ICAgICAgICAoV1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6RmFrZUxheWVyVGV4dHVyZVVw
ZGF0ZXIpOgorICAgICAgICAoRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAoV1RG
OjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlQ291bnQpOgorICAgICAgICAoV1RGOjpG
YWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y2xlYXJVcGRhdGVDb3VudCk6CisgICAgICAgIChXVEY6
OkZha2VMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVSZWN0KToKKyAgICAgICAgKFdURjo6RmFr
ZUxheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZVRleHR1cmUpOgorICAgICAgICAoRmFrZVRpbGVk
TGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXVEY6OlRFU1QpOgorICAgICAgICAoV1RGKToKKwog
MjAxMi0wMi0wNyAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBbY2hyb21pdW1dIFVuaXQgdGVzdCBmb3IgYnVnICM3Nzk5NgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJD
aHJvbWl1bS5jcHAKaW5kZXggYzkxZGQ1ZGZiNDJlNTBmMDU5M2NiYTFjMzI3NzdlYzU5MjkxNmQ4
MS4uNTQ5MjI0YWZhZmY4YzkxZGFhMTJmMDhiYjdmNTBjYzRkZGYxNTE2YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9t
aXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9U
aWxlZExheWVyQ2hyb21pdW0uY3BwCkBAIC01Myw3ICs1Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIFVwZGF0YWJsZVRpbGUgOiBwdWJsaWMgQ0NMYXllclRpbGluZ0RhdGE6OlRpbGUg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFVwZGF0YWJsZVRpbGUpOwogcHVibGljOgotICAg
IGV4cGxpY2l0IFVwZGF0YWJsZVRpbGUoUGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlPiB0ZXh0dXJlKSA6IG1fdGV4dHVyZSh0ZXh0dXJlKSB7IH0KKyAgICBleHBsaWNpdCBV
cGRhdGFibGVUaWxlKFBhc3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gdGV4
dHVyZSkgOiBtX3BhcnRpYWxVcGRhdGUoZmFsc2UpLCBtX3RleHR1cmUodGV4dHVyZSkgeyB9CiAK
ICAgICBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90
ZXh0dXJlLmdldCgpOyB9CiAgICAgTWFuYWdlZFRleHR1cmUqIG1hbmFnZWRUZXh0dXJlKCkgeyBy
ZXR1cm4gbV90ZXh0dXJlLT50ZXh0dXJlKCk7IH0KQEAgLTY4LDYgKzY4LDcgQEAgcHVibGljOgog
ICAgIEludFJlY3QgbV9kaXJ0eVJlY3Q7CiAgICAgSW50UmVjdCBtX3VwZGF0ZVJlY3Q7CiAgICAg
SW50UmVjdCBtX29wYXF1ZVJlY3Q7CisgICAgYm9vbCBtX3BhcnRpYWxVcGRhdGU7CiBwcml2YXRl
OgogICAgIE93blB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlPiBtX3RleHR1cmU7CiB9
OwpAQCAtMjEwLDcgKzIxMSwxMCBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29t
cG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZQogICAgICAgICAg
ICAgaWYgKHBhaW50T2Zmc2V0LnkoKSArIGRlc3RSZWN0LmhlaWdodCgpID4gbV9wYWludFJlY3Qu
aGVpZ2h0KCkpCiAgICAgICAgICAgICAgICAgQ1JBU0goKTsKIAotICAgICAgICAgICAgdXBkYXRl
ci5hcHBlbmQodGlsZS0+dGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CisgICAgICAg
ICAgICBpZiAodGlsZS0+bV9wYXJ0aWFsVXBkYXRlKQorICAgICAgICAgICAgICAgIHVwZGF0ZXIu
YXBwZW5kUGFydGlhbCh0aWxlLT50ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB1cGRhdGVyLmFwcGVuZCh0aWxlLT50ZXh0
dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMzU3
LDYgKzM2MSw3IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVUaWxl
cyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQKICAgICBmb3IgKENDTGF5ZXJUaWxp
bmdEYXRhOjpUaWxlTWFwOjpjb25zdF9pdGVyYXRvciBpdGVyID0gbV90aWxlci0+dGlsZXMoKS5i
ZWdpbigpOyBpdGVyICE9IG1fdGlsZXItPnRpbGVzKCkuZW5kKCk7ICsraXRlcikgewogICAgICAg
ICBVcGRhdGFibGVUaWxlKiB0aWxlID0gc3RhdGljX2Nhc3Q8VXBkYXRhYmxlVGlsZSo+KGl0ZXIt
PnNlY29uZC5nZXQoKSk7CiAgICAgICAgIHRpbGUtPm1fdXBkYXRlUmVjdCA9IEludFJlY3QoKTsK
KyAgICAgICAgdGlsZS0+bV9wYXJ0aWFsVXBkYXRlID0gZmFsc2U7CiAgICAgfQogCiAgICAgY3Jl
YXRlVGV4dHVyZVVwZGF0ZXJJZk5lZWRlZCgpOwpAQCAtMzcyLDEwICszNzcsNDcgQEAgdm9pZCBU
aWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wgaWRsZSwgaW50IGxl
ZnQsIGludCB0b3AsIGludAogICAgICAgICAgICAgaWYgKCF0aWxlKQogICAgICAgICAgICAgICAg
IHRpbGUgPSBjcmVhdGVUaWxlKGksIGopOwogCi0gICAgICAgICAgICAvLyBEbyBwb3N0IGNvbW1p
dCBkZWxldGlvbiBvZiBjdXJyZW50IHRleHR1cmUgd2hlbiBwYXJ0aWFsIHRleHR1cmUKLSAgICAg
ICAgICAgIC8vIHVwZGF0ZXMgYXJlIG5vdCB1c2VkLgotICAgICAgICAgICAgaWYgKHRpbGUtPmlz
RGlydHkoKSAmJiBsYXllclRyZWVIb3N0KCkgJiYgIWxheWVyVHJlZUhvc3QoKS0+c2V0dGluZ3Mo
KS5wYXJ0aWFsVGV4dHVyZVVwZGF0ZXMpCisgICAgICAgICAgICBib29sIHBhcnRpYWxVcGRhdGUg
PSBmYWxzZTsKKyAgICAgICAgICAgIGJvb2wgZGVsZXRlQWZ0ZXJDb21taXQgPSBmYWxzZTsKKwor
ICAgICAgICAgICAgaWYgKGxheWVyVHJlZUhvc3QoKSAmJiB0aWxlLT5tYW5hZ2VkVGV4dHVyZSgp
LT5pc1ZhbGlkKG1fdGlsZXItPnRpbGVTaXplKCksIG1fdGV4dHVyZUZvcm1hdCkpIHsKKyAgICAg
ICAgICAgICAgICAvLyBGb3IgdGlsZXMgd2l0aCB2YWxpZCB0ZXh0dXJlcywgbmV3IHRleHR1cmVz
IG5lZWQgdG8gYmUKKyAgICAgICAgICAgICAgICAvLyBhbGxvY2F0ZWQgdG8gZ3VhcmFudGVlIHRo
YXQgd2UgZG9uJ3QgbW9kaWZ5IHRleHR1cmVzCisgICAgICAgICAgICAgICAgLy8gY3VycmVudGx5
IHVzZWQgZm9yIGRyYXdpbmcgYnkgdGhlIGltcGwgdGhyZWFkLiBUaGVyZSdzCisgICAgICAgICAg
ICAgICAgLy8gb25lIGV4Y2VwdGlvbiB0byB0aGlzLCBwYXJ0aWFsIHVwZGF0ZXMuIFBhcnRpYWwg
dXBkYXRlcworICAgICAgICAgICAgICAgIC8vIHByb3ZpZGUgYSB3YXkgdG8gdXBkYXRlIG9ubHkg
cGFydCBvZiBhIHRleHR1cmUgd2hpbGUKKyAgICAgICAgICAgICAgICAvLyBzdGlsbCBndWFyYW50
ZWVpbmcgdGhhdCBpdCdzIG5vdCB1c2VkIGZvciBkcmF3aW5nIGJ5CisgICAgICAgICAgICAgICAg
Ly8gdGhlIGltcGwgdGhyZWFkIGJlZm9yZSB0aGUgY29tbWl0IGNvbXBsZXRlcy4gU2VlIGJlbG93
LgorICAgICAgICAgICAgICAgIGlmIChDQ1Byb3h5OjpoYXNJbXBsVGhyZWFkKCkpCisgICAgICAg
ICAgICAgICAgICAgIGRlbGV0ZUFmdGVyQ29tbWl0ID0gdHJ1ZTsKKworICAgICAgICAgICAgICAg
IC8vIElzIHRoaXMgYSBwYXJ0aWFsIHVwZGF0ZT8KKyAgICAgICAgICAgICAgICBpZiAoIXRpbGUt
Pm1fZGlydHlSZWN0LmNvbnRhaW5zKG1fdGlsZXItPnRpbGVSZWN0KHRpbGUpKSkKKyAgICAgICAg
ICAgICAgICAgICAgcGFydGlhbFVwZGF0ZSA9IHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGlmICh0aWxlLT5pc0RpcnR5KCkgJiYgcGFydGlhbFVwZGF0ZSkgeworICAgICAgICAg
ICAgICAgIEFTU0VSVChsYXllclRyZWVIb3N0KCkpOworCisgICAgICAgICAgICAgICAgLy8gVHJ5
IHRvIHJlcXVlc3QgcGFydGlhbCB0ZXh0dXJlIHVwZGF0ZS4gVGhpcyB3aWxsIGZhaWwKKyAgICAg
ICAgICAgICAgICAvLyBhbmQgZm9yY2UgdXMgdG8gdXNlIGEgc3RhbmRhcmQgYnVmZmVyZWQgdGV4
dHVyZSB1cGRhdGUKKyAgICAgICAgICAgICAgICAvLyB3aGVuIHdlIHJlYWNoIHRoZSBtYXhpbXVt
IHBhcnRpYWwgdXBkYXRlIGNvdW50LgorICAgICAgICAgICAgICAgIC8vIFRPRE8ocmV2ZW1hbik6
IERlY2lkZSBpZiBwYXJ0aWFsIHVwZGF0ZSBzaG91bGQgYmUgYWxsb3dlZAorICAgICAgICAgICAg
ICAgIC8vIGJhc2VkIG9uIGNvc3Qgb2YgdXBkYXRlLgorICAgICAgICAgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzM3NgorICAgICAgICAgICAgICAg
IGlmIChsYXllclRyZWVIb3N0KCktPnJlcXVlc3RQYXJ0aWFsVGV4dHVyZVVwZGF0ZSgpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHRpbGUtPm1fcGFydGlhbFVwZGF0ZSA9IHRydWU7CisgICAgICAg
ICAgICAgICAgICAgIGRlbGV0ZUFmdGVyQ29tbWl0ID0gZmFsc2U7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBEZWxldGUgY3VycmVudCB0ZXh0dXJl
IGFmdGVyIHRoZSBjb21taXQgY29tcGxldGVzLiBJbXBsIHRocmVhZAorICAgICAgICAgICAgLy8g
bWlnaHQgdXNlIHRoZSB0ZXh0dXJlIHVudGlsIHRoZW4uCisgICAgICAgICAgICBpZiAoZGVsZXRl
QWZ0ZXJDb21taXQpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQobGF5ZXJUcmVlSG9zdCgpKTsK
KyAgICAgICAgICAgICAgICBBU1NFUlQodGlsZS0+bWFuYWdlZFRleHR1cmUoKS0+aXNWYWxpZCht
X3RpbGVyLT50aWxlU2l6ZSgpLCBtX3RleHR1cmVGb3JtYXQpKTsKICAgICAgICAgICAgICAgICBs
YXllclRyZWVIb3N0KCktPmRlbGV0ZVRleHR1cmVBZnRlckNvbW1pdCh0aWxlLT5tYW5hZ2VkVGV4
dHVyZSgpLT5zdGVhbCgpKTsKKyAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCF0aWxl
LT5tYW5hZ2VkVGV4dHVyZSgpLT5pc1ZhbGlkKG1fdGlsZXItPnRpbGVTaXplKCksIG1fdGV4dHVy
ZUZvcm1hdCkpCiAgICAgICAgICAgICAgICAgdGlsZS0+bV9kaXJ0eVJlY3QgPSBtX3RpbGVyLT50
aWxlUmVjdCh0aWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IDcwYzlj
ODIyYTgxYjc4ZDI5MjUyMDY3YzQ1ZWFjZmNiNjJiYTYyNTYuLjVlMTU3MTQ4NDNhNzQ2NWI0MzM1
MDkyYjYzMDNjMGIzOTliODk5NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApA
QCAtNzEsNiArNzEsNyBAQCBDQ0xheWVyVHJlZUhvc3Q6OkNDTGF5ZXJUcmVlSG9zdChDQ0xheWVy
VHJlZUhvc3RDbGllbnQqIGNsaWVudCwgY29uc3QgQ0NTZXR0aW5ncwogICAgICwgbV9taW5QYWdl
U2NhbGUoMSkKICAgICAsIG1fbWF4UGFnZVNjYWxlKDEpCiAgICAgLCBtX3RyaWdnZXJJZGxlUGFp
bnRzKHRydWUpCisgICAgLCBtX3BhcnRpYWxUZXh0dXJlVXBkYXRlUmVxdWVzdHMoMCkKIHsKICAg
ICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOwogICAgIG51bUxheWVyVHJlZUluc3Rh
bmNlcysrOwpAQCAtMTIwLDcgKzEyMSw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojppbml0aWFs
aXplTGF5ZXJSZW5kZXJlcigpCiAgICAgbV9zZXR0aW5ncy5hY2NlbGVyYXRlUGFpbnRpbmcgPSBt
X3Byb3h5LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkudXNpbmdBY2NlbGVyYXRlZFBhaW50
aW5nOwogCiAgICAgLy8gVXBkYXRlIG1fc2V0dGluZ3MgYmFzZWQgb24gcGFydGlhbCB1cGRhdGUg
Y2FwYWJpbGl0eS4KLSAgICBtX3NldHRpbmdzLnBhcnRpYWxUZXh0dXJlVXBkYXRlcyA9IG1fc2V0
dGluZ3MucGFydGlhbFRleHR1cmVVcGRhdGVzICYmIG1fcHJveHktPnBhcnRpYWxUZXh0dXJlVXBk
YXRlQ2FwYWJpbGl0eSgpOworICAgIG1fc2V0dGluZ3MubWF4UGFydGlhbFRleHR1cmVVcGRhdGVz
ID0gbWluKG1fc2V0dGluZ3MubWF4UGFydGlhbFRleHR1cmVVcGRhdGVzLCBtX3Byb3h5LT5tYXhQ
YXJ0aWFsVGV4dHVyZVVwZGF0ZXMoKSk7CiAKICAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXIg
PSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKFRleHR1cmVNYW5hZ2VyOjpoaWdoTGltaXRCeXRlcyh2
aWV3cG9ydFNpemUoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUZXh0dXJlTWFuYWdlcjo6cmVjbGFpbUxpbWl0Qnl0ZXModmlld3BvcnRT
aXplKCkpLApAQCAtNDE1LDYgKzQxNiw5IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVM
YXllcnMoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKQogICAgICAgICBDQ0xheWVyVHJlZUhvc3RD
b21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShyb290TGF5ZXIsIHJv
b3RMYXllciwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBtX3VwZGF0ZUxpc3QsIHJv
b3RSZW5kZXJTdXJmYWNlLT5sYXllckxpc3QoKSwgbGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygp
Lm1heFRleHR1cmVTaXplKTsKICAgICB9CiAKKyAgICAvLyBSZXNldCBwYXJ0aWFsIHRleHR1cmUg
dXBkYXRlIHJlcXVlc3RzLgorICAgIG1fcGFydGlhbFRleHR1cmVVcGRhdGVSZXF1ZXN0cyA9IDA7
CisKICAgICByZXNlcnZlVGV4dHVyZXMoKTsKIAogICAgIHBhaW50TGF5ZXJDb250ZW50cyhtX3Vw
ZGF0ZUxpc3QsIFBhaW50VmlzaWJsZSk7CkBAIC02MjMsNiArNjI3LDE1IEBAIHZvaWQgQ0NMYXll
clRyZWVIb3N0OjpzdG9wUmF0ZUxpbWl0ZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCiAg
ICAgfQogfQogCitib29sIENDTGF5ZXJUcmVlSG9zdDo6cmVxdWVzdFBhcnRpYWxUZXh0dXJlVXBk
YXRlKCkKK3sKKyAgICBpZiAobV9wYXJ0aWFsVGV4dHVyZVVwZGF0ZVJlcXVlc3RzID49IG1fc2V0
dGluZ3MubWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBtX3BhcnRpYWxUZXh0dXJlVXBkYXRlUmVxdWVzdHMrKzsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmRlbGV0ZVRleHR1cmVBZnRlckNvbW1pdChQYXNz
T3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKQogewogICAgIG1fZGVsZXRlVGV4dHVyZUFm
dGVyQ29tbWl0TGlzdC5hcHBlbmQodGV4dHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5o
CmluZGV4IGMzODEwYWIyNzVjM2QwMTdjZGZkN2MwODQzYjRhN2M3ZmNiOTk3MDQuLjcyNDcwYmI2
YzdkNjY1OGU3NWY5MjI0MjJhNWM2ZTEzMWJmNTM5YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdC5oCkBAIC03NCw3ICs3NCw3IEBAIHN0cnVjdCBDQ1NldHRpbmdzIHsKICAgICAgICAgICAg
ICwgcmVmcmVzaFJhdGUoMCkKICAgICAgICAgICAgICwgcGVyVGlsZVBhaW50aW5nKGZhbHNlKQog
ICAgICAgICAgICAgLCBwYXJ0aWFsU3dhcEVuYWJsZWQoZmFsc2UpCi0gICAgICAgICAgICAsIHBh
cnRpYWxUZXh0dXJlVXBkYXRlcyh0cnVlKSB7IH0KKyAgICAgICAgICAgICwgbWF4UGFydGlhbFRl
eHR1cmVVcGRhdGVzKH4wKSB7IH0KIAogICAgIGJvb2wgYWNjZWxlcmF0ZVBhaW50aW5nOwogICAg
IGJvb2wgY29tcG9zaXRlT2Zmc2NyZWVuOwpAQCAtODMsNyArODMsNyBAQCBzdHJ1Y3QgQ0NTZXR0
aW5ncyB7CiAgICAgZG91YmxlIHJlZnJlc2hSYXRlOwogICAgIGJvb2wgcGVyVGlsZVBhaW50aW5n
OwogICAgIGJvb2wgcGFydGlhbFN3YXBFbmFibGVkOwotICAgIGJvb2wgcGFydGlhbFRleHR1cmVV
cGRhdGVzOworICAgIHNpemVfdCBtYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXM7CiB9OwogCiAvLyBQ
cm92aWRlcyBpbmZvcm1hdGlvbiBvbiBhbiBJbXBsJ3MgcmVuZGVyaW5nIGNhcGFiaWxpdGllcyBi
YWNrIHRvIHRoZSBDQ0xheWVyVHJlZUhvc3QKQEAgLTE5Miw2ICsxOTIsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzdGFydFJhdGVMaW1pdGVyKEdyYXBoaWNzQ29udGV4dDNEKik7CiAgICAgdm9pZCBz
dG9wUmF0ZUxpbWl0ZXIoR3JhcGhpY3NDb250ZXh0M0QqKTsKIAorICAgIGJvb2wgcmVxdWVzdFBh
cnRpYWxUZXh0dXJlVXBkYXRlKCk7CiAgICAgdm9pZCBkZWxldGVUZXh0dXJlQWZ0ZXJDb21taXQo
UGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4pOwogCiBwcm90ZWN0ZWQ6CkBAIC0yNDMsNiArMjQ0
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fdHJpZ2dlcklkbGVQYWludHM7CiAKICAgICBUZXh0
dXJlTGlzdCBtX2RlbGV0ZVRleHR1cmVBZnRlckNvbW1pdExpc3Q7CisgICAgc2l6ZV90IG1fcGFy
dGlhbFRleHR1cmVVcGRhdGVSZXF1ZXN0czsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaAppbmRleCBhM2Fh
NzE2MDcxYzM0MmFiNjk4ZTNlMGU5M2QyMjk4MjM3M2U3NWZhLi40NGFhY2NlYjBhN2ZmNDRjODk2
MTk0Y2ZiOGQ4YmZiNTBiNGYxNzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCkBAIC04MCw5ICs4MCw4IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoKSA9IDA7IC8vIE11c3QgYmUgY2FsbGVkIGJl
Zm9yZSB1c2luZyB0aGUgcHJveHkuCiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKSA9IDA7IC8vIE11
c3QgYmUgY2FsbGVkIGJlZm9yZSBkZWxldGluZyB0aGUgcHJveHkuCiAKLSAgICAvLyBXaGV0aGVy
IHN1Yi1yZWdpb25zIG9mIHRleHR1cmVzIGNhbiBiZSB1cGRhdGVkIG9yIGlmIGNvbXBsZXRlIHRl
eHR1cmUKLSAgICAvLyB1cGRhdGVzIGFyZSByZXF1aXJlZC4KLSAgICB2aXJ0dWFsIGJvb2wgcGFy
dGlhbFRleHR1cmVVcGRhdGVDYXBhYmlsaXR5KCkgY29uc3QgPSAwOworICAgIC8vIE1heGltdW0g
bnVtYmVyIG9mIHN1Yi1yZWdpb24gdGV4dHVyZSB1cGRhdGVzIHN1cHBvcnRlZCBmb3IgZWFjaCBj
b21taXQuCisgICAgdmlydHVhbCBzaXplX3QgbWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKCkgY29u
c3QgPSAwOwogCiAgICAgLy8gRGVidWcgaG9va3MKICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRo
cmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCmluZGV4IGNiNjk2ZWQxNzdkYzVlYjQyOTNkOGQ3
OTAxMjFjMThlMGY1MjM0YTkuLjg2YjQ3MDgyYjMyZDIxYjI1NGM2OTIyNGQ2Yzc4MmE0ZTMyYmUw
N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCkBAIC0xNzAsNyAr
MTcwLDggQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0NvbW1pdCgpCiAgICAgICAgIG1f
bGF5ZXJUcmVlSG9zdC0+YmVnaW5Db21taXRPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1w
bC5nZXQoKSk7CiAgICAgICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcihtX2xheWVyVHJlZUhv
c3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSk7CiAgICAgICAgIG1fbGF5ZXJUcmVl
SG9zdC0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250
ZXh0KCksIHVwZGF0ZXIpOwotICAgICAgICB3aGlsZSAodXBkYXRlci51cGRhdGUobV9sYXllclRy
ZWVIb3N0SW1wbC0+Y29udGV4dCgpLCAxKSkgeyB9CisgICAgICAgIHVwZGF0ZXIudXBkYXRlKG1f
bGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgbnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4
KCkpOworICAgICAgICBBU1NFUlQoIXVwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CiAgICAgICAg
IG1fbGF5ZXJUcmVlSG9zdEltcGwtPnNldFZpc2libGUobV9sYXllclRyZWVIb3N0LT52aXNpYmxl
KCkpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmZpbmlzaENvbW1pdE9uSW1wbFRocmVhZCht
X2xheWVyVHJlZUhvc3RJbXBsLmdldCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQ
cm94eS5oCmluZGV4IGRhMWZlNDYxOTIxMWRlZGJkZDdlYTJkY2FhMzdjNjUzMjQ4ZmY0NjUuLjg0
ZmZiZjc1MDJkODM2OGNiZDA3ZGJhZWQ3YmRlYzYyNjRjMTU3NWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NpbmdsZVRocmVhZFByb3h5LmgKQEAgLTI4LDEwICsyOCwxMyBAQAogI2luY2x1ZGUgImNjL0ND
Q29tcGxldGlvbkV2ZW50LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIgog
I2luY2x1ZGUgImNjL0NDUHJveHkuaCIKKyNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8d3Rm
L093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7
CisKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdDsKIAogY2xhc3MgQ0NTaW5nbGVUaHJlYWRQcm94eSA6
IHB1YmxpYyBDQ1Byb3h5LCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50IHsKQEAgLTU1LDcgKzU4
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlKGJvb2wpOwogICAgIHZp
cnR1YWwgdm9pZCBzdGFydCgpOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCk7Ci0gICAgdmlydHVh
bCBib29sIHBhcnRpYWxUZXh0dXJlVXBkYXRlQ2FwYWJpbGl0eSgpIGNvbnN0IHsgcmV0dXJuIHRy
dWU7IH0KKyAgICB2aXJ0dWFsIHNpemVfdCBtYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMoKSBjb25z
dCB7IHJldHVybiBudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKTsgfQogCiAgICAgLy8gQ0NM
YXllclRyZWVIb3N0SW1wbENsaWVudCBpbXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgdm9pZCBv
blN3YXBCdWZmZXJzQ29tcGxldGVPbkltcGxUaHJlYWQoKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IDg3NDVjNGVhMGE3MTBi
ZGUxOGVkZTE4MjBmMzE0ZmRiOGNjODcyYWIuLjY2ZTA4YzhiZDkzZjE4MjZhMzliNTUzYzI5NjUw
YTgzYWMwOWU4ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC00OCw3
ICs0OCw3IEBAIENDVGV4dHVyZVVwZGF0ZXI6On5DQ1RleHR1cmVVcGRhdGVyKCkKIHsKIH0KIAot
dm9pZCBDQ1RleHR1cmVVcGRhdGVyOjphcHBlbmQoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVy
ZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVz
dFJlY3QpCit2b2lkIENDVGV4dHVyZVVwZGF0ZXI6OmFwcGVuZChMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRS
ZWN0JiBkZXN0UmVjdCwgVmVjdG9yPFVwZGF0ZUVudHJ5PiYgZW50cmllcykKIHsKICAgICBBU1NF
UlQodGV4dHVyZSk7CiAKQEAgLTU2LDI0ICs1Niw1MCBAQCB2b2lkIENDVGV4dHVyZVVwZGF0ZXI6
OmFwcGVuZChMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRS
ZQogICAgIGVudHJ5Lm1fdGV4dHVyZSA9IHRleHR1cmU7CiAgICAgZW50cnkubV9zb3VyY2VSZWN0
ID0gc291cmNlUmVjdDsKICAgICBlbnRyeS5tX2Rlc3RSZWN0ID0gZGVzdFJlY3Q7Ci0gICAgbV9l
bnRyaWVzLmFwcGVuZChlbnRyeSk7CisgICAgZW50cmllcy5hcHBlbmQoZW50cnkpOworfQorCit2
b2lkIENDVGV4dHVyZVVwZGF0ZXI6OmFwcGVuZChMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJl
KiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0
UmVjdCkKK3sKKyAgICBhcHBlbmQodGV4dHVyZSwgc291cmNlUmVjdCwgZGVzdFJlY3QsIG1fZW50
cmllcyk7Cit9CisKK3ZvaWQgQ0NUZXh0dXJlVXBkYXRlcjo6YXBwZW5kUGFydGlhbChMYXllclRl
eHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3sKKyAgICBhcHBlbmQodGV4dHVyZSwgc291cmNl
UmVjdCwgZGVzdFJlY3QsIG1fcGFydGlhbEVudHJpZXMpOwogfQogCiBib29sIENDVGV4dHVyZVVw
ZGF0ZXI6Omhhc01vcmVVcGRhdGVzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9lbnRyaWVzLnNp
emUoKTsKKyAgICByZXR1cm4gbV9lbnRyaWVzLnNpemUoKSB8fCBtX3BhcnRpYWxFbnRyaWVzLnNp
emUoKTsKIH0KIAogYm9vbCBDQ1RleHR1cmVVcGRhdGVyOjp1cGRhdGUoR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQsIHNpemVfdCBjb3VudCkKIHsKKyAgICBzaXplX3QgaW5kZXg7CiAgICAgc2l6
ZV90IG1heEluZGV4ID0gbWluKG1fZW50cnlJbmRleCArIGNvdW50LCBtX2VudHJpZXMuc2l6ZSgp
KTsKLSAgICBmb3IgKDsgbV9lbnRyeUluZGV4IDwgbWF4SW5kZXg7ICsrbV9lbnRyeUluZGV4KSB7
Ci0gICAgICAgIFVwZGF0ZUVudHJ5JiBlbnRyeSA9IG1fZW50cmllc1ttX2VudHJ5SW5kZXhdOwor
ICAgIGZvciAoaW5kZXggPSBtX2VudHJ5SW5kZXg7IGluZGV4IDwgbWF4SW5kZXg7ICsraW5kZXgp
IHsKKyAgICAgICAgVXBkYXRlRW50cnkmIGVudHJ5ID0gbV9lbnRyaWVzW2luZGV4XTsKICAgICAg
ICAgZW50cnkubV90ZXh0dXJlLT51cGRhdGVSZWN0KGNvbnRleHQsIG1fYWxsb2NhdG9yLCBlbnRy
eS5tX3NvdXJjZVJlY3QsIGVudHJ5Lm1fZGVzdFJlY3QpOwogICAgIH0KIAotICAgIGlmIChtYXhJ
bmRleCA8IG1fZW50cmllcy5zaXplKCkpCisgICAgYm9vbCBtb3JlVXBkYXRlcyA9IG1heEluZGV4
IDwgbV9lbnRyaWVzLnNpemUoKTsKKworICAgIEFTU0VSVChtX3BhcnRpYWxFbnRyaWVzLnNpemUo
KSA8PSBjb3VudCk7CisgICAgLy8gTWFrZSBzdXJlIHRoZSBudW1iZXIgb2YgdXBkYXRlcyBpbmNs
dWRpbmcgcGFydGlhbCB1cGRhdGVzIGFyZSBub3QgbW9yZQorICAgIC8vIHRoYW4gfGNvdW50fC4K
KyAgICBpZiAoKGNvdW50IC0gKGluZGV4IC0gbV9lbnRyeUluZGV4KSkgPCBtX3BhcnRpYWxFbnRy
aWVzLnNpemUoKSkKKyAgICAgICAgbW9yZVVwZGF0ZXMgPSB0cnVlOworCisgICAgaWYgKG1vcmVV
cGRhdGVzKSB7CisgICAgICAgIG1fZW50cnlJbmRleCA9IGluZGV4OwogICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisKKyAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBtX3BhcnRpYWxFbnRy
aWVzLnNpemUoKTsgKytpbmRleCkgeworICAgICAgICBVcGRhdGVFbnRyeSYgZW50cnkgPSBtX3Bh
cnRpYWxFbnRyaWVzW2luZGV4XTsKKyAgICAgICAgZW50cnkubV90ZXh0dXJlLT51cGRhdGVSZWN0
KGNvbnRleHQsIG1fYWxsb2NhdG9yLCBlbnRyeS5tX3NvdXJjZVJlY3QsIGVudHJ5Lm1fZGVzdFJl
Y3QpOworICAgIH0KIAogICAgIC8vIElmIG5vIGVudHJpZXMgbGVmdCB0byBwcm9jZXNzLCBhdXRv
LWNsZWFyLgogICAgIGNsZWFyKCk7CkBAIC04NCw2ICsxMTAsNyBAQCB2b2lkIENDVGV4dHVyZVVw
ZGF0ZXI6OmNsZWFyKCkKIHsKICAgICBtX2VudHJ5SW5kZXggPSAwOwogICAgIG1fZW50cmllcy5j
bGVhcigpOworICAgIG1fcGFydGlhbEVudHJpZXMuY2xlYXIoKTsKIH0KIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJl
VXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUZXh0dXJlVXBkYXRlci5oCmluZGV4IGJmNzlhYzljMmUyMmVmYzVlZGE5YTY0ODI5ZTJlZmNj
ZWMxNWJiMzAuLmRiYjUyYzliYWQyMDQzNGRkYmY3NGM2MjhhNDQ0NWU5ZDdlOTg3ZDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4
dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmgKQEAgLTQxLDYgKzQxLDcgQEAgcHVibGljOgogICAg
IH5DQ1RleHR1cmVVcGRhdGVyKCk7CiAKICAgICB2b2lkIGFwcGVuZChMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYg
ZGVzdFJlY3QpOworICAgIHZvaWQgYXBwZW5kUGFydGlhbChMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJl
Y3QpOwogCiAgICAgYm9vbCBoYXNNb3JlVXBkYXRlcygpIGNvbnN0OwogCkBAIC01OCw5ICs1OSwx
MiBAQCBwcml2YXRlOgogICAgICAgICBJbnRSZWN0IG1fZGVzdFJlY3Q7CiAgICAgfTsKIAorICAg
IHN0YXRpYyB2b2lkIGFwcGVuZChMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3Qg
SW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIFZlY3RvcjxVcGRh
dGVFbnRyeT4mKTsKKwogICAgIFRleHR1cmVBbGxvY2F0b3IqIG1fYWxsb2NhdG9yOwogICAgIHNp
emVfdCBtX2VudHJ5SW5kZXg7CiAgICAgVmVjdG9yPFVwZGF0ZUVudHJ5PiBtX2VudHJpZXM7Cisg
ICAgVmVjdG9yPFVwZGF0ZUVudHJ5PiBtX3BhcnRpYWxFbnRyaWVzOwogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJl
YWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5LmNwcAppbmRleCBmZDYzYmQ1YzBhM2Q4MmMxMjliYmI1OGUyNzZhMTAy
ODAwNjJkNTBlLi44Y2E4NTJkZGE2Yzg2ZmNhNzAxZTQ3YzNkNGExZTA1NmJjZGMwM2Y2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcApAQCAtNDMsNyArNDMsOSBAQCB1c2luZyBuYW1lc3Bh
Y2UgV1RGOwogCiBuYW1lc3BhY2UgewogCi1zdGF0aWMgY29uc3Qgc2l6ZV90IHRleHR1cmVVcGRh
dGVzUGVyRnJhbWUgPSAwOworLy8gTnVtYmVyIG9mIHRleHR1cmVzIHRvIHVwZGF0ZSB3aXRoIGVh
Y2ggY2FsbCB0bworLy8gc2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcygpLgorc3Rh
dGljIGNvbnN0IHNpemVfdCB0ZXh0dXJlVXBkYXRlc1BlckZyYW1lID0gNTsKIAogfSAvLyBhbm9u
eW1vdXMgbmFtZXNwYWNlCiAKQEAgLTQ2Miw3ICs0NjQsNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6
OnNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMoKQogewogICAgIFRSQUNFX0VWRU5U
KCJDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzIiwgdGhp
cywgMCk7CiAgICAgQVNTRVJUKG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKTsK
LSAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+dXBkYXRlKG1fbGF5ZXJU
cmVlSG9zdEltcGwtPmNvbnRleHQoKSwgdGV4dHVyZVVwZGF0ZXNQZXJGcmFtZSA+IDAgPyB0ZXh0
dXJlVXBkYXRlc1BlckZyYW1lIDogOTk5OTkpOworICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVy
T25JbXBsVGhyZWFkLT51cGRhdGUobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCB0ZXh0
dXJlVXBkYXRlc1BlckZyYW1lKTsKIH0KIAogdm9pZCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRB
Y3Rpb25Db21taXQoKQpAQCAtNTk1LDkgKzU5Nyw5IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6bGF5
ZXJUcmVlSG9zdENsb3NlZE9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlv
CiAgICAgY29tcGxldGlvbi0+c2lnbmFsKCk7CiB9CiAKLWJvb2wgQ0NUaHJlYWRQcm94eTo6cGFy
dGlhbFRleHR1cmVVcGRhdGVDYXBhYmlsaXR5KCkgY29uc3QKK3NpemVfdCBDQ1RocmVhZFByb3h5
OjptYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMoKSBjb25zdAogewotICAgIHJldHVybiAhdGV4dHVy
ZVVwZGF0ZXNQZXJGcmFtZTsKKyAgICByZXR1cm4gdGV4dHVyZVVwZGF0ZXNQZXJGcmFtZTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCmluZGV4IGI2
NWE2YzYwNGUyOTIzZmM4ZjA5Y2Y5YWM3ZjU1OTZkMGFiMGNkZDAuLmQzMDRhY2Q5NmNhZjEyYjgx
ZGEyYmMwMDI3ZGY0NDdmNzUyODBmOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKQEAgLTYz
LDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlKGJvb2wpOwog
ICAgIHZpcnR1YWwgdm9pZCBzdGFydCgpOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCk7Ci0gICAg
dmlydHVhbCBib29sIHBhcnRpYWxUZXh0dXJlVXBkYXRlQ2FwYWJpbGl0eSgpIGNvbnN0OworICAg
IHZpcnR1YWwgc2l6ZV90IG1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcygpIGNvbnN0OwogCiAgICAg
Ly8gQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCBpbXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwg
dm9pZCBvblN3YXBCdWZmZXJzQ29tcGxldGVPbkltcGxUaHJlYWQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCmluZGV4IGVk
Y2MwYjU2MDYyMWNjNDYxZmNmZGZlMWZiMTE1NDhhMDM2NTIzYWUuLmZjNDE0ZjczOTcxNDU4M2Fk
YTFhNjM1NmNhNDJhMDU4ZGYyMzQ1MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcApAQCAtMTE0NywxNiArMTE0NywxNSBA
QCBwdWJsaWM6CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RUZXN0QXRvbWljQ29tbWl0IDogcHVibGlj
IENDTGF5ZXJUcmVlSG9zdFRlc3QgewogcHVibGljOgogICAgIENDTGF5ZXJUcmVlSG9zdFRlc3RB
dG9taWNDb21taXQoKQotICAgICAgICA6IG1fdXBkYXRlQ2hlY2tMYXllcihDb250ZW50TGF5ZXJD
aHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Y3JlYXRlKCZtX2RlbGVnYXRlKSkKLSAgICAgICAg
LCBtX251bUNvbW1pdHMoMCkKKyAgICAgICAgOiBtX2xheWVyKENvbnRlbnRMYXllckNocm9taXVt
V2l0aFVwZGF0ZVRyYWNraW5nOjpjcmVhdGUoJm1fZGVsZWdhdGUpKQogICAgIHsKICAgICAgICAg
Ly8gTWFrZSBzdXJlIHBhcnRpYWwgdGV4dHVyZSB1cGRhdGVzIGFyZSB0dXJuZWQgb2ZmLgotICAg
ICAgICBtX3NldHRpbmdzLnBhcnRpYWxUZXh0dXJlVXBkYXRlcyA9IGZhbHNlOworICAgICAgICBt
X3NldHRpbmdzLm1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcyA9IDA7CiAgICAgfQogCiAgICAgdmly
dHVhbCB2b2lkIGJlZ2luVGVzdCgpCiAgICAgewotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNl
dFJvb3RMYXllcihtX3VwZGF0ZUNoZWNrTGF5ZXIpOworICAgICAgICBtX2xheWVyVHJlZUhvc3Qt
PnNldFJvb3RMYXllcihtX2xheWVyKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRWaWV3
cG9ydFNpemUoSW50U2l6ZSgxMCwgMTApKTsKIAogICAgICAgICBwb3N0U2V0TmVlZHNDb21taXRU
b01haW5UaHJlYWQoKTsKQEAgLTExNzMsNyArMTE3Miw3IEBAIHB1YmxpYzoKICAgICAgICAgICAg
IEVYUEVDVF9FUSgxLCBjb250ZXh0LT5udW1UZXh0dXJlcygpKTsKICAgICAgICAgICAgIC8vIE51
bWJlciBvZiB0ZXh0dXJlcyB1c2VkIGZvciBjb21taXQgc2hvdWxkIGJlIG9uZS4KICAgICAgICAg
ICAgIEVYUEVDVF9FUSgxLCBjb250ZXh0LT5udW1Vc2VkVGV4dHVyZXMoKSk7Ci0gICAgICAgICAg
ICAvLyBWZXJpZnkgdXNlZCB0ZXh0dXJlIGlzIGNvcnJlY3QuCisgICAgICAgICAgICAvLyBWZXJp
ZnkgdGhhdCB1c2VkIHRleHR1cmUgaXMgY29ycmVjdC4KICAgICAgICAgICAgIEVYUEVDVF9UUlVF
KGNvbnRleHQtPnVzZWRUZXh0dXJlKGNvbnRleHQtPnRleHR1cmUoMCkpKTsKIAogICAgICAgICAg
ICAgY29udGV4dC0+cmVzZXRVc2VkVGV4dHVyZXMoKTsKQEAgLTEyMTQsNyArMTIxMyw3IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKQogICAgIHsKLSAgICAgICAgbV91cGRh
dGVDaGVja0xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKKyAgICAgICAgbV9sYXllci0+c2V0TmVl
ZHNEaXNwbGF5KCk7CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIGFmdGVyVGVzdCgpCkBAIC0x
MjIzLDggKzEyMjIsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgTW9ja0NvbnRlbnRMYXll
ckRlbGVnYXRlIG1fZGVsZWdhdGU7Ci0gICAgUmVmUHRyPENvbnRlbnRMYXllckNocm9taXVtV2l0
aFVwZGF0ZVRyYWNraW5nPiBtX3VwZGF0ZUNoZWNrTGF5ZXI7Ci0gICAgaW50IG1fbnVtQ29tbWl0
czsKKyAgICBSZWZQdHI8Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc+IG1f
bGF5ZXI7CiB9OwogCiBURVNUX0YoQ0NMYXllclRyZWVIb3N0VGVzdEF0b21pY0NvbW1pdCwgcnVu
TXVsdGlUaHJlYWQpCkBAIC0xMjMyLDYgKzEyMzAsMTMyIEBAIFRFU1RfRihDQ0xheWVyVHJlZUhv
c3RUZXN0QXRvbWljQ29tbWl0LCBydW5NdWx0aVRocmVhZCkKICAgICBydW5UZXN0KHRydWUpOwog
fQogCitjbGFzcyBDQ0xheWVyVHJlZUhvc3RUZXN0QXRvbWljQ29tbWl0V2l0aFBhcnRpYWxVcGRh
dGUgOiBwdWJsaWMgQ0NMYXllclRyZWVIb3N0VGVzdCB7CitwdWJsaWM6CisgICAgQ0NMYXllclRy
ZWVIb3N0VGVzdEF0b21pY0NvbW1pdFdpdGhQYXJ0aWFsVXBkYXRlKCkKKyAgICAgICAgOiBtX3Bh
cmVudChDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Y3JlYXRlKCZtX2Rl
bGVnYXRlKSkKKyAgICAgICAgLCBtX2NoaWxkKENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0
ZVRyYWNraW5nOjpjcmVhdGUoJm1fZGVsZWdhdGUpKQorICAgICAgICAsIG1fbnVtQ29tbWl0cygw
KQorICAgIHsKKyAgICAgICAgLy8gQWxsb3cgb25lIHBhcnRpYWwgdGV4dHVyZSB1cGRhdGUuCisg
ICAgICAgIG1fc2V0dGluZ3MubWF4UGFydGlhbFRleHR1cmVVcGRhdGVzID0gMTsKKyAgICB9CisK
KyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5UZXN0KCkKKyAgICB7CisgICAgICAgIG1fbGF5ZXJUcmVl
SG9zdC0+c2V0Um9vdExheWVyKG1fcGFyZW50KTsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5z
ZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgxMCwgMTApKTsKKyAgICAgICAgbV9wYXJlbnQtPmFkZENo
aWxkKG1fY2hpbGQpOworICAgICAgICBtX2NoaWxkLT5zZXRPcGFjaXR5KDAuNSk7CisgICAgICAg
IG1fY2hpbGQtPnNldEJvdW5kcyhJbnRTaXplKDIwLCAyMCkpOworCisgICAgICAgIHBvc3RTZXRO
ZWVkc0NvbW1pdFRvTWFpblRocmVhZCgpOworICAgICAgICBwb3N0U2V0TmVlZHNSZWRyYXdUb01h
aW5UaHJlYWQoKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxldGVPbkND
VGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGltcGwpCisgICAgeworICAgICAgICBDb21wb3Np
dG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEV2l0aFRleHR1cmVUcmFja2luZyogY29udGV4dCA9
IHN0YXRpY19jYXN0PENvbXBvc2l0b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RXaXRoVGV4dHVy
ZVRyYWNraW5nKj4oR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpleHRyYWN0V2ViR3JhcGhpY3ND
b250ZXh0M0QoaW1wbC0+Y29udGV4dCgpKSk7CisKKyAgICAgICAgc3dpdGNoIChpbXBsLT5mcmFt
ZU51bWJlcigpKSB7CisgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICAgIC8vIE51bWJlciBvZiB0
ZXh0dXJlcyBzaG91bGQgYmUgdHdvLgorICAgICAgICAgICAgRVhQRUNUX0VRKDIsIGNvbnRleHQt
Pm51bVRleHR1cmVzKCkpOworICAgICAgICAgICAgLy8gTnVtYmVyIG9mIHRleHR1cmVzIHVzZWQg
Zm9yIGNvbW1pdCBzaG91bGQgYmUgdHdvLgorICAgICAgICAgICAgRVhQRUNUX0VRKDIsIGNvbnRl
eHQtPm51bVVzZWRUZXh0dXJlcygpKTsKKyAgICAgICAgICAgIC8vIFZlcmlmeSB0aGF0IHVzZWQg
dGV4dHVyZXMgYXJlIGNvcnJlY3QuCisgICAgICAgICAgICBFWFBFQ1RfVFJVRShjb250ZXh0LT51
c2VkVGV4dHVyZShjb250ZXh0LT50ZXh0dXJlKDApKSk7CisgICAgICAgICAgICBFWFBFQ1RfVFJV
RShjb250ZXh0LT51c2VkVGV4dHVyZShjb250ZXh0LT50ZXh0dXJlKDEpKSk7CisKKyAgICAgICAg
ICAgIGNvbnRleHQtPnJlc2V0VXNlZFRleHR1cmVzKCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSAxOgorICAgICAgICAgICAgLy8gTnVtYmVyIG9mIHRleHR1cmVzIHNob3VsZCBi
ZSBmb3VyIGFzIHRoZSBmaXJzdCB0d28KKyAgICAgICAgICAgIC8vIHRleHR1cmVzIGFyZSB1c2Vk
IGJ5IHRoZSBpbXBsIHRocmVhZC4KKyAgICAgICAgICAgIEVYUEVDVF9FUSg0LCBjb250ZXh0LT5u
dW1UZXh0dXJlcygpKTsKKyAgICAgICAgICAgIC8vIE51bWJlciBvZiB0ZXh0dXJlcyB1c2VkIGZv
ciBjb21taXQgc2hvdWxkIHN0aWxsIGJlIHR3by4KKyAgICAgICAgICAgIEVYUEVDVF9FUSgyLCBj
b250ZXh0LT5udW1Vc2VkVGV4dHVyZXMoKSk7CisgICAgICAgICAgICAvLyBGaXJzdCB0d28gdGV4
dHVyZXMgc2hvdWxkIG5vdCBoYXZlIGJlZW4gdXNlZC4KKyAgICAgICAgICAgIEVYUEVDVF9GQUxT
RShjb250ZXh0LT51c2VkVGV4dHVyZShjb250ZXh0LT50ZXh0dXJlKDApKSk7CisgICAgICAgICAg
ICBFWFBFQ1RfRkFMU0UoY29udGV4dC0+dXNlZFRleHR1cmUoY29udGV4dC0+dGV4dHVyZSgxKSkp
OworICAgICAgICAgICAgLy8gTmV3IHRleHR1cmVzIHNob3VsZCBoYXZlIGJlZW4gdXNlZC4KKyAg
ICAgICAgICAgIEVYUEVDVF9UUlVFKGNvbnRleHQtPnVzZWRUZXh0dXJlKGNvbnRleHQtPnRleHR1
cmUoMikpKTsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKGNvbnRleHQtPnVzZWRUZXh0dXJlKGNv
bnRleHQtPnRleHR1cmUoMykpKTsKKworICAgICAgICAgICAgY29udGV4dC0+cmVzZXRVc2VkVGV4
dHVyZXMoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDI6CisgICAgICAgICAg
ICAvLyBOdW1iZXIgb2YgdGV4dHVyZXMgc2hvdWxkIGJlIHRocmVlIGFzIHdlIGFsbG93IG9uZQor
ICAgICAgICAgICAgLy8gcGFydGlhbCB1cGRhdGUgYW5kIHRoZSBmaXJzdCB0d28gdGV4dHVyZXMg
YXJlIHVzZWQgYnkKKyAgICAgICAgICAgIC8vIHRoZSBpbXBsIHRocmVhZC4KKyAgICAgICAgICAg
IEVYUEVDVF9FUSgzLCBjb250ZXh0LT5udW1UZXh0dXJlcygpKTsKKyAgICAgICAgICAgIC8vIE51
bWJlciBvZiB0ZXh0dXJlcyB1c2VkIGZvciBjb21taXQgc2hvdWxkIHN0aWxsIGJlIHR3by4KKyAg
ICAgICAgICAgIEVYUEVDVF9FUSgyLCBjb250ZXh0LT5udW1Vc2VkVGV4dHVyZXMoKSk7CisgICAg
ICAgICAgICAvLyBGaXJzdCB0ZXh0dXJlIHNob3VsZCBub3QgaGF2ZSBiZWVuIHVzZWQuCisgICAg
ICAgICAgICBFWFBFQ1RfRkFMU0UoY29udGV4dC0+dXNlZFRleHR1cmUoY29udGV4dC0+dGV4dHVy
ZSgwKSkpOworICAgICAgICAgICAgLy8gU2Vjb25kIHRleHR1cmUgc2hvdWxkIGhhdmUgYmVlbiB1
c2VkLgorICAgICAgICAgICAgRVhQRUNUX1RSVUUoY29udGV4dC0+dXNlZFRleHR1cmUoY29udGV4
dC0+dGV4dHVyZSgxKSkpOworICAgICAgICAgICAgLy8gTmV3IHRleHR1cmVzIHNob3VsZCBoYXZl
IGJlZW4gdXNlZC4KKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKGNvbnRleHQtPnVzZWRUZXh0dXJl
KGNvbnRleHQtPnRleHR1cmUoMikpKTsKKworICAgICAgICAgICAgY29udGV4dC0+cmVzZXRVc2Vk
VGV4dHVyZXMoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzT25DQ1RocmVhZChDQ0xheWVy
VHJlZUhvc3RJbXBsKiBpbXBsKQorICAgIHsKKyAgICAgICAgQ29tcG9zaXRvckZha2VXZWJHcmFw
aGljc0NvbnRleHQzRFdpdGhUZXh0dXJlVHJhY2tpbmcqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxD
b21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEV2l0aFRleHR1cmVUcmFja2luZyo+KEdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0cmFjdFdlYkdyYXBoaWNzQ29udGV4dDNEKGltcGwt
PmNvbnRleHQoKSkpOworCisgICAgICAgIC8vIE51bWJlciBvZiB0ZXh0dXJlcyB1c2VkIGZvciBk
cmF3aW5nIHNob3VsZCBhbHdheXMgYmUgdHdvLgorICAgICAgICBFWFBFQ1RfRVEoMiwgY29udGV4
dC0+bnVtVXNlZFRleHR1cmVzKCkpOworCisgICAgICAgIGlmIChpbXBsLT5mcmFtZU51bWJlcigp
IDwgMykgeworICAgICAgICAgICAgY29udGV4dC0+cmVzZXRVc2VkVGV4dHVyZXMoKTsKKyAgICAg
ICAgICAgIHBvc3RTZXROZWVkc0FuaW1hdGVBbmRDb21taXRUb01haW5UaHJlYWQoKTsKKyAgICAg
ICAgICAgIHBvc3RTZXROZWVkc1JlZHJhd1RvTWFpblRocmVhZCgpOworICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0
KCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAobV9udW1Db21taXRzKyspIHsKKyAgICAgICAgY2Fz
ZSAwOgorICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICBtX3BhcmVudC0+c2V0TmVlZHNEaXNw
bGF5KCk7CisgICAgICAgICAgICBtX2NoaWxkLT5zZXROZWVkc0Rpc3BsYXkoKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAvLyBEYW1hZ2UgcGFydCBv
ZiBsYXllcnMuCisgICAgICAgICAgICBtX3BhcmVudC0+c2V0TmVlZHNEaXNwbGF5UmVjdChGbG9h
dFJlY3QoMCwgMCwgNSwgNSkpOworICAgICAgICAgICAgbV9jaGlsZC0+c2V0TmVlZHNEaXNwbGF5
UmVjdChGbG9hdFJlY3QoMCwgMCwgNSwgNSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGFmdGVyVGVzdCgp
CisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICBNb2NrQ29udGVudExheWVyRGVsZWdhdGUg
bV9kZWxlZ2F0ZTsKKyAgICBSZWZQdHI8Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJh
Y2tpbmc+IG1fcGFyZW50OworICAgIFJlZlB0cjxDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRh
dGVUcmFja2luZz4gbV9jaGlsZDsKKyAgICBpbnQgbV9udW1Db21taXRzOworfTsKKworVEVTVF9G
KENDTGF5ZXJUcmVlSG9zdFRlc3RBdG9taWNDb21taXRXaXRoUGFydGlhbFVwZGF0ZSwgcnVuTXVs
dGlUaHJlYWQpCit7CisgICAgcnVuVGVzdCh0cnVlKTsKK30KKwogI2RlZmluZSBFWFBFQ1RfRVFf
UkVDVChhLCBiKSBcCiAgICAgRVhQRUNUX0VRKGEueCgpLCBiLngoKSk7IFwKICAgICBFWFBFQ1Rf
RVEoYS55KCksIGIueSgpKTsgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggNjA2OWZkMTgxMzg4YmI1NDY5
ZDliNjEzZjhjNzUzZDZhNWJmYjg5OS4uMGFhZTFkNmRkZWNiZGM4YmU2MTQ0ZjQyZmNmZWVkMjgy
MTg1MTBlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExh
eWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Rp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC02MCwxMyArNjAsMTYgQEAgY2xhc3MgRmFrZUxh
eWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlciB7CiBwdWJsaWM6
CiAgICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJl
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFRleHR1cmUoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVy
ZT4gdGV4dHVyZSkgOiBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKHRleHR1cmUpIHsgfQor
ICAgICAgICBUZXh0dXJlKEZha2VMYXllclRleHR1cmVVcGRhdGVyKiBsYXllciwgUGFzc093blB0
cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkgOiBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJl
KHRleHR1cmUpLCBtX2xheWVyKGxheWVyKSB7IH0KICAgICAgICAgdmlydHVhbCB+VGV4dHVyZSgp
IHsgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNE
KiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRSZWN0JikgeyB9
CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4
dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRSZWN0JikgeyBtX2xheWVy
LT51cGRhdGVSZWN0KCk7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIEZha2VMYXllclRleHR1
cmVVcGRhdGVyKiBtX2xheWVyOwogICAgIH07CiAKLSAgICBGYWtlTGF5ZXJUZXh0dXJlVXBkYXRl
cigpIDogbV9wcmVwYXJlQ291bnQoMCkgeyB9CisgICAgRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIo
KSA6IG1fcHJlcGFyZUNvdW50KDApLCBtX3VwZGF0ZUNvdW50KDApIHsgfQogICAgIHZpcnR1YWwg
fkZha2VMYXllclRleHR1cmVVcGRhdGVyKCkgeyB9CiAKICAgICAvLyBTZXRzIHRoZSByZWN0IHRv
IGludmFsaWRhdGUgZHVyaW5nIHRoZSBuZXh0IGNhbGwgdG8gcHJlcGFyZVRvVXBkYXRlKCkuIEFm
dGVyIHRoZSBuZXh0CkBAIC03NywxNyArODAsMjMgQEAgcHVibGljOgogICAgIGludCBwcmVwYXJl
Q291bnQoKSBjb25zdCB7IHJldHVybiBtX3ByZXBhcmVDb3VudDsgfQogICAgIHZvaWQgY2xlYXJQ
cmVwYXJlQ291bnQoKSB7IG1fcHJlcGFyZUNvdW50ID0gMDsgfQogCisgICAgLy8gTnVtYmVyIG9m
IHRpbWVzIHVwZGF0ZVJlY3QgaGFzIGJlZW4gaW52b2tlZC4KKyAgICBpbnQgdXBkYXRlQ291bnQo
KSBjb25zdCB7IHJldHVybiBtX3VwZGF0ZUNvdW50OyB9CisgICAgdm9pZCBjbGVhclVwZGF0ZUNv
dW50KCkgeyBtX3VwZGF0ZUNvdW50ID0gMDsgfQorICAgIHZvaWQgdXBkYXRlUmVjdCgpIHsgbV91
cGRhdGVDb3VudCsrOyB9CisKICAgICB2b2lkIHNldE9wYXF1ZVBhaW50UmVjdChjb25zdCBJbnRS
ZWN0JiBvcGFxdWVQYWludFJlY3QpIHsgbV9vcGFxdWVQYWludFJlY3QgPSBvcGFxdWVQYWludFJl
Y3Q7IH0KIAogICAgIC8vIExhc3QgcmVjdCBwYXNzZWQgdG8gcHJlcGFyZVRvVXBkYXRlKCkuCiAg
ICAgY29uc3QgSW50UmVjdCYgbGFzdFVwZGF0ZVJlY3QoKSAgY29uc3QgeyByZXR1cm4gbV9sYXN0
VXBkYXRlUmVjdDsgfQogCi0gICAgdmlydHVhbCBQYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4dHVyZU1hbmFnZXIqIG1hbmFnZXIpIHsgcmV0
dXJuIGFkb3B0UHRyKG5ldyBUZXh0dXJlKE1hbmFnZWRUZXh0dXJlOjpjcmVhdGUobWFuYWdlcikp
KTsgfQorICAgIHZpcnR1YWwgUGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJl
PiBjcmVhdGVUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKiBtYW5hZ2VyKSB7IHJldHVybiBhZG9wdFB0
cihuZXcgVGV4dHVyZSh0aGlzLCBNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKG1hbmFnZXIpKSk7IH0K
ICAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVu
dW0pIHsgcmV0dXJuIFNhbXBsZWRUZXhlbEZvcm1hdFJHQkE7IH0KICAgICB2aXJ0dWFsIHZvaWQg
cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXpl
JiwgaW50LCBmbG9hdCwgSW50UmVjdCogcmVzdWx0aW5nT3BhcXVlUmVjdCk7CiAKIHByaXZhdGU6
CiAgICAgaW50IG1fcHJlcGFyZUNvdW50OworICAgIGludCBtX3VwZGF0ZUNvdW50OwogICAgIElu
dFJlY3QgbV9yZWN0VG9JbnZhbGlkYXRlOwogICAgIEludFJlY3QgbV9sYXN0VXBkYXRlUmVjdDsK
ICAgICBJbnRSZWN0IG1fb3BhcXVlUGFpbnRSZWN0OwpAQCAtMTU1LDggKzE2NCw2IEBAIHB1Ymxp
YzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZVRleHR1cmVVcGRh
dGVyKGNvbnN0IENDTGF5ZXJUcmVlSG9zdCopIHsgfQotCiAgICAgdmlydHVhbCBMYXllclRleHR1
cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlcigpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4g
bV9mYWtlVGV4dHVyZVVwZGF0ZXIuZ2V0KCk7CkBAIC01NzksNCArNTg2LDc1IEBAIFRFU1QoVGls
ZWRMYXllckNocm9taXVtVGVzdCwgcmVzaXplVG9TbWFsbGVyKQogICAgIGxheWVyLT5pbnZhbGlk
YXRlUmVjdChJbnRSZWN0KDAsIDAsIDIwMCwgMjAwKSk7CiB9CiAKK1RFU1QoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgcGFydGlhbFVwZGF0ZXMpCit7CisgICAgQ0NTZXR0aW5ncyBzZXR0aW5nczsK
KyAgICBzZXR0aW5ncy5tYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMgPSA0OworICAgIC8vIEluaXRp
YWxpemUgd2l0aG91dCB0aHJlYWRpbmcgc3VwcG9ydC4KKyAgICBXZWJLaXQ6OldlYkNvbXBvc2l0
b3I6OmluaXRpYWxpemUoMCk7CisgICAgRmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVudCBmYWtlQ0NM
YXllclRyZWVIb3N0Q2xpZW50OworICAgIFJlZlB0cjxDQ0xheWVyVHJlZUhvc3Q+IGNjTGF5ZXJU
cmVlSG9zdCA9IENDTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCZmYWtlQ0NMYXllclRyZWVIb3N0Q2xp
ZW50LCBzZXR0aW5ncyk7CisKKyAgICAvLyBDcmVhdGUgb25lIDUwMCB4IDMwMCB0aWxlZCBsYXll
ci4KKyAgICBJbnRTaXplIGNvbnRlbnRCb3VuZHMoMzAwLCAyMDApOworICAgIEludFJlY3QgY29u
dGVudFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgY29udGVudEJvdW5kcyk7CisKKyAgICBPd25QdHI8
VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg2
MCoxMDI0KjEwMjQsIDYwKjEwMjQqMTAyNCwgMTAyNCk7CisgICAgUmVmUHRyPEZha2VUaWxlZExh
eWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0o
dGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKKyAgICBsYXllci0+c2V0Qm91bmRzKGNvbnRlbnRCb3Vu
ZHMpOworICAgIGxheWVyLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KDE1MCwgMTUwKSk7CisgICAg
bGF5ZXItPmludmFsaWRhdGVSZWN0KGNvbnRlbnRSZWN0KTsKKworICAgIEZha2VUZXh0dXJlQWxs
b2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7CisgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0
ZXh0dXJlQWxsb2NhdG9yKTsKKworICAgIGNjTGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKGxh
eWVyKTsKKyAgICBjY0xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDMwMCwg
MjAwKSk7CisKKyAgICAvLyBGdWxsIHVwZGF0ZSBvZiBhbGwgNiB0aWxlcy4KKyAgICBjY0xheWVy
VHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOworICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlQ29t
cG9zaXRvclJlc291cmNlcyhjY0xheWVyVHJlZUhvc3QtPmNvbnRleHQoKSwgdXBkYXRlcik7Cisg
ICAgdXBkYXRlci51cGRhdGUoMCwgNCk7CisgICAgRVhQRUNUX0VRKDQsIGxheWVyLT5mYWtlTGF5
ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3VudCgpKTsKKyAgICBFWFBFQ1RfVFJVRSh1cGRh
dGVyLmhhc01vcmVVcGRhdGVzKCkpOworICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRl
cigpLT5jbGVhclVwZGF0ZUNvdW50KCk7CisgICAgdXBkYXRlci51cGRhdGUoMCwgNCk7CisgICAg
RVhQRUNUX0VRKDIsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3Vu
dCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UodXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsKKyAgICBs
YXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJVcGRhdGVDb3VudCgpOworICAg
IGNjTGF5ZXJUcmVlSG9zdC0+Y29tbWl0Q29tcGxldGUoKTsKKworICAgIC8vIEZ1bGwgdXBkYXRl
IG9mIDMgdGlsZXMgYW5kIHBhcnRpYWwgdXBkYXRlIG9mIDMgdGlsZXMuCisgICAgbGF5ZXItPmlu
dmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgMzAwLCAxNTApKTsKKyAgICBjY0xheWVyVHJlZUhv
c3QtPnVwZGF0ZUxheWVycygpOworICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlQ29tcG9zaXRv
clJlc291cmNlcyhjY0xheWVyVHJlZUhvc3QtPmNvbnRleHQoKSwgdXBkYXRlcik7CisgICAgdXBk
YXRlci51cGRhdGUoMCwgNCk7CisgICAgRVhQRUNUX0VRKDMsIGxheWVyLT5mYWtlTGF5ZXJUZXh0
dXJlVXBkYXRlcigpLT51cGRhdGVDb3VudCgpKTsKKyAgICBFWFBFQ1RfVFJVRSh1cGRhdGVyLmhh
c01vcmVVcGRhdGVzKCkpOworICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5j
bGVhclVwZGF0ZUNvdW50KCk7CisgICAgdXBkYXRlci51cGRhdGUoMCwgNCk7CisgICAgRVhQRUNU
X0VRKDMsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3VudCgpKTsK
KyAgICBFWFBFQ1RfRkFMU0UodXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsKKyAgICBsYXllci0+
ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJVcGRhdGVDb3VudCgpOworICAgIGNjTGF5
ZXJUcmVlSG9zdC0+Y29tbWl0Q29tcGxldGUoKTsKKworICAgIC8vIFBhcnRpYWwgdXBkYXRlIG9m
IDYgdGlsZXMuCisgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoNTAsIDUwLCAyMDAs
IDEwMCkpOworICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7CisgICAgY2NMYXll
clRyZWVIb3N0LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNjTGF5ZXJUcmVlSG9zdC0+Y29u
dGV4dCgpLCB1cGRhdGVyKTsKKyAgICB1cGRhdGVyLnVwZGF0ZSgwLCA0KTsKKyAgICBFWFBFQ1Rf
RVEoMiwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOwor
ICAgIEVYUEVDVF9UUlVFKHVwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CisgICAgbGF5ZXItPmZh
a2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyVXBkYXRlQ291bnQoKTsKKyAgICB1cGRhdGVy
LnVwZGF0ZSgwLCA0KTsKKyAgICBFWFBFQ1RfRVEoNCwgbGF5ZXItPmZha2VMYXllclRleHR1cmVV
cGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOworICAgIEVYUEVDVF9GQUxTRSh1cGRhdGVyLmhhc01v
cmVVcGRhdGVzKCkpOworICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVh
clVwZGF0ZUNvdW50KCk7CisgICAgY2NMYXllclRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgpOwor
CisgICAgY2NMYXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIoMCk7CisgICAgY2NMYXllclRyZWVI
b3N0LmNsZWFyKCk7CisgICAgV2ViS2l0OjpXZWJDb21wb3NpdG9yOjpzaHV0ZG93bigpOworfQor
CiB9IC8vIG5hbWVzcGFjZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125969</attachid>
            <date>2012-02-07 17:53:21 -0800</date>
            <delta_ts>2012-02-08 14:20:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76740-20120207205320.patch</filename>
            <type>text/plain</type>
            <size>36250</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2OTk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDc4NjkxZjc5ZjcwNjM2
Yjk0ODU2YWI3OGJhZThiODhiODMzNTYxMC4uN2ZiYWJkYWYxM2NjYTc5ZmUwNzdmYzI5OTYxN2Uw
MzQ1NGZlMjVlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEyLTAyLTA3ICBEYXZp
ZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBB
dm9pZCB1bm5lY2Vzc2FyeSBmdWxsIHRpbGUgdXBkYXRlcyB3aXRob3V0IGJyZWFraW5nIGF0b21p
Y2l0eSBvZiBjb21taXRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzY3NDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBbGxvdyB0aGUgZmluYWwgYmF0Y2ggb2YgdGV4dHVyZSB1cGxvYWRzIHRvIGJlIHBl
cmZvcm1lZCB3aXRob3V0CisgICAgICAgIGFsbG9jYXRpbmcgbmV3IHRleHR1cmVzIGFuZCByZS1w
YWludGluZyBjb21wbGV0ZSB0aWxlcy4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIHRlc3RlZCBi
eSB0aGUgZm9sbG93aW5nIHVuaXQgdGVzdDoKKyAgICAgICAgLSBDQ0xheWVyVHJlZUhvc3RUZXN0
QXRvbWljQ29tbWl0V2l0aFBhcnRpYWxVcGRhdGUucnVuTXVsdGlUaHJlYWQKKyAgICAgICAgLSBU
aWxlZExheWVyQ2hyb21pdW1UZXN0LnBhcnRpYWxVcGRhdGVzCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VXBkYXRhYmxlVGlsZTo6VXBkYXRhYmxlVGlsZSk6CisgICAgICAgIChVcGRhdGFibGVU
aWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9z
aXRvclJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnBy
ZXBhcmVUb1VwZGF0ZVRpbGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVI
b3N0OjpDQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJl
ZUhvc3Q6OnVwZGF0ZUxheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6
OnJlcXVlc3RQYXJ0aWFsVGV4dHVyZVVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNDU2V0dGluZ3M6OkNDU2V0dGluZ3MpOgorICAgICAgICAoQ0NTZXR0
aW5ncyk6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaDoKKyAgICAgICAgKENDUHJveHkpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6ZG9Db21taXQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHku
aDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhyZWFkUHJveHk6Om1heFBhcnRpYWxUZXh0
dXJlVXBkYXRlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
ZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RleHR1cmVVcGRhdGVyOjph
cHBlbmQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RleHR1cmVV
cGRhdGVyOjphcHBlbmRQYXJ0aWFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0
ZXI6Omhhc01vcmVVcGRhdGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6
OnVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RleHR1cmVVcGRhdGVyOjpjbGVhcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5o
OgorICAgICAgICAoQ0NUZXh0dXJlVXBkYXRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXVEYpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291
cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjptYXhQYXJ0aWFsVGV4dHVy
ZVVwZGF0ZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhy
ZWFkUHJveHkuaDoKKyAgICAgICAgKENDVGhyZWFkUHJveHkpOgorCiAyMDEyLTAyLTA3ICBKYW1l
cyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBB
bGxvdyByZXRhaW5pbmcgdGV4dHVyZSBhY3Jvc3MgZnJhbWVzIGluIGNvbXBvc2l0ZWQgdmlkZW8g
cGxheWJhY2sgYW5kIGNvcnJlY3RseSBoYW5kbGUgbG9zdCBjb250ZXh0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDFiYzg1NDNlZDEwZDUxMzNmNDNhNDQ4MTMxNjcxNjkzYWE3YTBiZmUu
LmMwMDVhMTBmYzQ0YTM0MDkwZTNhZjY5OGNiODU3ZGFmN2Y1YjkyZmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTItMDItMDcgIERhdmlkIFJldmVtYW4g
IDxyZXZlbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIEF2b2lkIHVubmVj
ZXNzYXJ5IGZ1bGwgdGlsZSB1cGRhdGVzIHdpdGhvdXQgYnJlYWtpbmcgYXRvbWljaXR5IG9mIGNv
bW1pdHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
Njc0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCBDQ0xheWVyVHJlZUhvc3RUZXN0QXRvbWljQ29tbWl0V2l0aFBhcnRpYWxVcGRhdGUgYW5kCisg
ICAgICAgIFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QucGFydGlhbFVwZGF0ZXMgdGVzdHMgdGhhdCB2
ZXJpZmllcworICAgICAgICBhdG9taWNpdHkgb2YgY29tbWl0cyB3aXRoIHBhcnRpYWwgdXBkYXRl
cy4KKworICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwOgorICAgICAgICAo
V1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0QXRvbWljQ29tbWl0OjpDQ0xheWVyVHJlZUhvc3RUZXN0
QXRvbWljQ29tbWl0KToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdEF0b21pY0Nv
bW1pdDo6YmVnaW5UZXN0KToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdEF0b21p
Y0NvbW1pdDo6Y29tbWl0Q29tcGxldGVPbkNDVGhyZWFkKToKKyAgICAgICAgKFdURjo6Q0NMYXll
clRyZWVIb3N0VGVzdEF0b21pY0NvbW1pdDo6bGF5b3V0KToKKyAgICAgICAgKENDTGF5ZXJUcmVl
SG9zdFRlc3RBdG9taWNDb21taXQpOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0VGVzdEF0b21p
Y0NvbW1pdFdpdGhQYXJ0aWFsVXBkYXRlKToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0
VGVzdEF0b21pY0NvbW1pdFdpdGhQYXJ0aWFsVXBkYXRlOjpDQ0xheWVyVHJlZUhvc3RUZXN0QXRv
bWljQ29tbWl0V2l0aFBhcnRpYWxVcGRhdGUpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhv
c3RUZXN0QXRvbWljQ29tbWl0V2l0aFBhcnRpYWxVcGRhdGU6OmJlZ2luVGVzdCk6CisgICAgICAg
IChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RBdG9taWNDb21taXRXaXRoUGFydGlhbFVwZGF0ZTo6
Y29tbWl0Q29tcGxldGVPbkNDVGhyZWFkKToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0
VGVzdEF0b21pY0NvbW1pdFdpdGhQYXJ0aWFsVXBkYXRlOjpkcmF3TGF5ZXJzT25DQ1RocmVhZCk6
CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RBdG9taWNDb21taXRXaXRoUGFydGlh
bFVwZGF0ZTo6bGF5b3V0KToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdEF0b21p
Y0NvbW1pdFdpdGhQYXJ0aWFsVXBkYXRlOjphZnRlclRlc3QpOgorICAgICAgICAoV1RGKToKKyAg
ICAgICAgKFdURjo6VEVTVF9GKToKKyAgICAgICAgKiB0ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1U
ZXN0LmNwcDoKKyAgICAgICAgKFdURjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6
OlRleHR1cmUpOgorICAgICAgICAoV1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVy
ZTo6dXBkYXRlUmVjdCk6CisgICAgICAgIChUZXh0dXJlKToKKyAgICAgICAgKFdURjo6RmFrZUxh
eWVyVGV4dHVyZVVwZGF0ZXI6OkZha2VMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKEZh
a2VMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKFdURjo6RmFrZUxheWVyVGV4dHVyZVVw
ZGF0ZXI6OnVwZGF0ZUNvdW50KToKKyAgICAgICAgKFdURjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0
ZXI6OmNsZWFyVXBkYXRlQ291bnQpOgorICAgICAgICAoV1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6dXBkYXRlUmVjdCk6CisgICAgICAgIChXVEY6OkZha2VMYXllclRleHR1cmVVcGRhdGVy
OjpjcmVhdGVUZXh0dXJlKToKKyAgICAgICAgKEZha2VUaWxlZExheWVyQ2hyb21pdW0pOgorICAg
ICAgICAoV1RGOjpURVNUKToKKyAgICAgICAgKFdURik6CisKIDIwMTItMDItMDcgIERhbmEgSmFu
c2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBVbml0IHRl
c3QgZm9yIGJ1ZyAjNzc5OTYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCmluZGV4IGM5
MWRkNWRmYjQyZTUwZjA1OTNjYmExYzMyNzc3ZWM1OTI5MTZkODEuLjU0OTIyNGFmYWZmOGM5MWRh
YTEyZjA4YmI3ZjUwY2M0ZGRmMTUxNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNw
cApAQCAtNTMsNyArNTMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBVcGRhdGFibGVU
aWxlIDogcHVibGljIENDTGF5ZXJUaWxpbmdEYXRhOjpUaWxlIHsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShVcGRhdGFibGVUaWxlKTsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBVcGRhdGFibGVU
aWxlKFBhc3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gdGV4dHVyZSkgOiBt
X3RleHR1cmUodGV4dHVyZSkgeyB9CisgICAgZXhwbGljaXQgVXBkYXRhYmxlVGlsZShQYXNzT3du
UHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IHRleHR1cmUpIDogbV9wYXJ0aWFsVXBk
YXRlKGZhbHNlKSwgbV90ZXh0dXJlKHRleHR1cmUpIHsgfQogCiAgICAgTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZSogdGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQogICAg
IE1hbmFnZWRUZXh0dXJlKiBtYW5hZ2VkVGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS0+dGV4
dHVyZSgpOyB9CkBAIC02OCw2ICs2OCw3IEBAIHB1YmxpYzoKICAgICBJbnRSZWN0IG1fZGlydHlS
ZWN0OwogICAgIEludFJlY3QgbV91cGRhdGVSZWN0OwogICAgIEludFJlY3QgbV9vcGFxdWVSZWN0
OworICAgIGJvb2wgbV9wYXJ0aWFsVXBkYXRlOwogcHJpdmF0ZToKICAgICBPd25QdHI8TGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gbV90ZXh0dXJlOwogfTsKQEAgLTIxMCw3ICsyMTEsMTAg
QEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3Jh
cGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmUKICAgICAgICAgICAgIGlmIChwYWludE9mZnNldC55
KCkgKyBkZXN0UmVjdC5oZWlnaHQoKSA+IG1fcGFpbnRSZWN0LmhlaWdodCgpKQogICAgICAgICAg
ICAgICAgIENSQVNIKCk7CiAKLSAgICAgICAgICAgIHVwZGF0ZXIuYXBwZW5kKHRpbGUtPnRleHR1
cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworICAgICAgICAgICAgaWYgKHRpbGUtPm1fcGFy
dGlhbFVwZGF0ZSkKKyAgICAgICAgICAgICAgICB1cGRhdGVyLmFwcGVuZFBhcnRpYWwodGlsZS0+
dGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgdXBkYXRlci5hcHBlbmQodGlsZS0+dGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBk
ZXN0UmVjdCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTM1Nyw2ICszNjEsNyBAQCB2b2lkIFRp
bGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVm
dCwgaW50IHRvcCwgaW50CiAgICAgZm9yIChDQ0xheWVyVGlsaW5nRGF0YTo6VGlsZU1hcDo6Y29u
c3RfaXRlcmF0b3IgaXRlciA9IG1fdGlsZXItPnRpbGVzKCkuYmVnaW4oKTsgaXRlciAhPSBtX3Rp
bGVyLT50aWxlcygpLmVuZCgpOyArK2l0ZXIpIHsKICAgICAgICAgVXBkYXRhYmxlVGlsZSogdGls
ZSA9IHN0YXRpY19jYXN0PFVwZGF0YWJsZVRpbGUqPihpdGVyLT5zZWNvbmQuZ2V0KCkpOwogICAg
ICAgICB0aWxlLT5tX3VwZGF0ZVJlY3QgPSBJbnRSZWN0KCk7CisgICAgICAgIHRpbGUtPm1fcGFy
dGlhbFVwZGF0ZSA9IGZhbHNlOwogICAgIH0KIAogICAgIGNyZWF0ZVRleHR1cmVVcGRhdGVySWZO
ZWVkZWQoKTsKQEAgLTM3MiwxMCArMzc3LDQ3IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpw
cmVwYXJlVG9VcGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQKICAg
ICAgICAgICAgIGlmICghdGlsZSkKICAgICAgICAgICAgICAgICB0aWxlID0gY3JlYXRlVGlsZShp
LCBqKTsKIAotICAgICAgICAgICAgLy8gRG8gcG9zdCBjb21taXQgZGVsZXRpb24gb2YgY3VycmVu
dCB0ZXh0dXJlIHdoZW4gcGFydGlhbCB0ZXh0dXJlCi0gICAgICAgICAgICAvLyB1cGRhdGVzIGFy
ZSBub3QgdXNlZC4KLSAgICAgICAgICAgIGlmICh0aWxlLT5pc0RpcnR5KCkgJiYgbGF5ZXJUcmVl
SG9zdCgpICYmICFsYXllclRyZWVIb3N0KCktPnNldHRpbmdzKCkucGFydGlhbFRleHR1cmVVcGRh
dGVzKQorICAgICAgICAgICAgYm9vbCBwYXJ0aWFsVXBkYXRlID0gZmFsc2U7CisgICAgICAgICAg
ICBib29sIGRlbGV0ZUFmdGVyQ29tbWl0ID0gZmFsc2U7CisKKyAgICAgICAgICAgIGlmIChsYXll
clRyZWVIb3N0KCkgJiYgdGlsZS0+bWFuYWdlZFRleHR1cmUoKS0+aXNWYWxpZChtX3RpbGVyLT50
aWxlU2l6ZSgpLCBtX3RleHR1cmVGb3JtYXQpKSB7CisgICAgICAgICAgICAgICAgLy8gRm9yIHRp
bGVzIHdpdGggdmFsaWQgdGV4dHVyZXMsIG5ldyB0ZXh0dXJlcyBuZWVkIHRvIGJlCisgICAgICAg
ICAgICAgICAgLy8gYWxsb2NhdGVkIHRvIGd1YXJhbnRlZSB0aGF0IHdlIGRvbid0IG1vZGlmeSB0
ZXh0dXJlcworICAgICAgICAgICAgICAgIC8vIGN1cnJlbnRseSB1c2VkIGZvciBkcmF3aW5nIGJ5
IHRoZSBpbXBsIHRocmVhZC4gVGhlcmUncworICAgICAgICAgICAgICAgIC8vIG9uZSBleGNlcHRp
b24gdG8gdGhpcywgcGFydGlhbCB1cGRhdGVzLiBQYXJ0aWFsIHVwZGF0ZXMKKyAgICAgICAgICAg
ICAgICAvLyBwcm92aWRlIGEgd2F5IHRvIHVwZGF0ZSBvbmx5IHBhcnQgb2YgYSB0ZXh0dXJlIHdo
aWxlCisgICAgICAgICAgICAgICAgLy8gc3RpbGwgZ3VhcmFudGVlaW5nIHRoYXQgaXQncyBub3Qg
dXNlZCBmb3IgZHJhd2luZyBieQorICAgICAgICAgICAgICAgIC8vIHRoZSBpbXBsIHRocmVhZCBi
ZWZvcmUgdGhlIGNvbW1pdCBjb21wbGV0ZXMuIFNlZSBiZWxvdy4KKyAgICAgICAgICAgICAgICBp
ZiAoQ0NQcm94eTo6aGFzSW1wbFRocmVhZCgpKQorICAgICAgICAgICAgICAgICAgICBkZWxldGVB
ZnRlckNvbW1pdCA9IHRydWU7CisKKyAgICAgICAgICAgICAgICAvLyBJcyB0aGlzIGEgcGFydGlh
bCB1cGRhdGU/CisgICAgICAgICAgICAgICAgaWYgKCF0aWxlLT5tX2RpcnR5UmVjdC5jb250YWlu
cyhtX3RpbGVyLT50aWxlUmVjdCh0aWxlKSkpCisgICAgICAgICAgICAgICAgICAgIHBhcnRpYWxV
cGRhdGUgPSB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAodGlsZS0+aXNE
aXJ0eSgpICYmIHBhcnRpYWxVcGRhdGUpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQobGF5ZXJU
cmVlSG9zdCgpKTsKKworICAgICAgICAgICAgICAgIC8vIFRyeSB0byByZXF1ZXN0IHBhcnRpYWwg
dGV4dHVyZSB1cGRhdGUuIFRoaXMgd2lsbCBmYWlsCisgICAgICAgICAgICAgICAgLy8gYW5kIGZv
cmNlIHVzIHRvIHVzZSBhIHN0YW5kYXJkIGJ1ZmZlcmVkIHRleHR1cmUgdXBkYXRlCisgICAgICAg
ICAgICAgICAgLy8gd2hlbiB3ZSByZWFjaCB0aGUgbWF4aW11bSBwYXJ0aWFsIHVwZGF0ZSBjb3Vu
dC4KKyAgICAgICAgICAgICAgICAvLyBUT0RPKHJldmVtYW4pOiBEZWNpZGUgaWYgcGFydGlhbCB1
cGRhdGUgc2hvdWxkIGJlIGFsbG93ZWQKKyAgICAgICAgICAgICAgICAvLyBiYXNlZCBvbiBjb3N0
IG9mIHVwZGF0ZS4KKyAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzczNzYKKyAgICAgICAgICAgICAgICBpZiAobGF5ZXJUcmVlSG9zdCgp
LT5yZXF1ZXN0UGFydGlhbFRleHR1cmVVcGRhdGUoKSkgeworICAgICAgICAgICAgICAgICAgICB0
aWxlLT5tX3BhcnRpYWxVcGRhdGUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBkZWxldGVB
ZnRlckNvbW1pdCA9IGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgLy8gRGVsZXRlIGN1cnJlbnQgdGV4dHVyZSBhZnRlciB0aGUgY29tbWl0IGNv
bXBsZXRlcy4gSW1wbCB0aHJlYWQKKyAgICAgICAgICAgIC8vIG1pZ2h0IHVzZSB0aGUgdGV4dHVy
ZSB1bnRpbCB0aGVuLgorICAgICAgICAgICAgaWYgKGRlbGV0ZUFmdGVyQ29tbWl0KSB7CisgICAg
ICAgICAgICAgICAgQVNTRVJUKGxheWVyVHJlZUhvc3QoKSk7CisgICAgICAgICAgICAgICAgQVNT
RVJUKHRpbGUtPm1hbmFnZWRUZXh0dXJlKCktPmlzVmFsaWQobV90aWxlci0+dGlsZVNpemUoKSwg
bV90ZXh0dXJlRm9ybWF0KSk7CiAgICAgICAgICAgICAgICAgbGF5ZXJUcmVlSG9zdCgpLT5kZWxl
dGVUZXh0dXJlQWZ0ZXJDb21taXQodGlsZS0+bWFuYWdlZFRleHR1cmUoKS0+c3RlYWwoKSk7Cisg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICghdGlsZS0+bWFuYWdlZFRleHR1cmUoKS0+
aXNWYWxpZChtX3RpbGVyLT50aWxlU2l6ZSgpLCBtX3RleHR1cmVGb3JtYXQpKQogICAgICAgICAg
ICAgICAgIHRpbGUtPm1fZGlydHlSZWN0ID0gbV90aWxlci0+dGlsZVJlY3QodGlsZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRleCA3MGM5YzgyMmE4MWI3OGQyOTI1MjA2N2M0
NWVhY2ZjYjYyYmE2MjU2Li4xNWEzMDc0ZWJiZTJlYjBlMTRiZmEyNmJiZjQyOTYwNGQxYzc1NGEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTM5LDYgKzM5LDggQEAKICNp
bmNsdWRlICJjYy9DQ1RocmVhZC5oIgogI2luY2x1ZGUgImNjL0NDVGhyZWFkUHJveHkuaCIKIAor
dXNpbmcgbmFtZXNwYWNlIHN0ZDsKKwogbmFtZXNwYWNlIHsKIHN0YXRpYyBpbnQgbnVtTGF5ZXJU
cmVlSW5zdGFuY2VzOwogfQpAQCAtNzEsNiArNzMsNyBAQCBDQ0xheWVyVHJlZUhvc3Q6OkNDTGF5
ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCwgY29uc3QgQ0NTZXR0aW5n
cwogICAgICwgbV9taW5QYWdlU2NhbGUoMSkKICAgICAsIG1fbWF4UGFnZVNjYWxlKDEpCiAgICAg
LCBtX3RyaWdnZXJJZGxlUGFpbnRzKHRydWUpCisgICAgLCBtX3BhcnRpYWxUZXh0dXJlVXBkYXRl
UmVxdWVzdHMoMCkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOwogICAg
IG51bUxheWVyVHJlZUluc3RhbmNlcysrOwpAQCAtMTIwLDcgKzEyMyw3IEBAIHZvaWQgQ0NMYXll
clRyZWVIb3N0Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlcigpCiAgICAgbV9zZXR0aW5ncy5hY2Nl
bGVyYXRlUGFpbnRpbmcgPSBtX3Byb3h5LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkudXNp
bmdBY2NlbGVyYXRlZFBhaW50aW5nOwogCiAgICAgLy8gVXBkYXRlIG1fc2V0dGluZ3MgYmFzZWQg
b24gcGFydGlhbCB1cGRhdGUgY2FwYWJpbGl0eS4KLSAgICBtX3NldHRpbmdzLnBhcnRpYWxUZXh0
dXJlVXBkYXRlcyA9IG1fc2V0dGluZ3MucGFydGlhbFRleHR1cmVVcGRhdGVzICYmIG1fcHJveHkt
PnBhcnRpYWxUZXh0dXJlVXBkYXRlQ2FwYWJpbGl0eSgpOworICAgIG1fc2V0dGluZ3MubWF4UGFy
dGlhbFRleHR1cmVVcGRhdGVzID0gbWluKG1fc2V0dGluZ3MubWF4UGFydGlhbFRleHR1cmVVcGRh
dGVzLCBtX3Byb3h5LT5tYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMoKSk7CiAKICAgICBtX2NvbnRl
bnRzVGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKFRleHR1cmVNYW5hZ2Vy
OjpoaWdoTGltaXRCeXRlcyh2aWV3cG9ydFNpemUoKSksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlTWFuYWdlcjo6cmVjbGFpbUxp
bWl0Qnl0ZXModmlld3BvcnRTaXplKCkpLApAQCAtNDE1LDYgKzQxOCw5IEBAIHZvaWQgQ0NMYXll
clRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKQogICAgICAg
ICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJp
bGl0eShyb290TGF5ZXIsIHJvb3RMYXllciwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4
LCBtX3VwZGF0ZUxpc3QsIHJvb3RSZW5kZXJTdXJmYWNlLT5sYXllckxpc3QoKSwgbGF5ZXJSZW5k
ZXJlckNhcGFiaWxpdGllcygpLm1heFRleHR1cmVTaXplKTsKICAgICB9CiAKKyAgICAvLyBSZXNl
dCBwYXJ0aWFsIHRleHR1cmUgdXBkYXRlIHJlcXVlc3RzLgorICAgIG1fcGFydGlhbFRleHR1cmVV
cGRhdGVSZXF1ZXN0cyA9IDA7CisKICAgICByZXNlcnZlVGV4dHVyZXMoKTsKIAogICAgIHBhaW50
TGF5ZXJDb250ZW50cyhtX3VwZGF0ZUxpc3QsIFBhaW50VmlzaWJsZSk7CkBAIC02MjMsNiArNjI5
LDE1IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpzdG9wUmF0ZUxpbWl0ZXIoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQpCiAgICAgfQogfQogCitib29sIENDTGF5ZXJUcmVlSG9zdDo6cmVxdWVz
dFBhcnRpYWxUZXh0dXJlVXBkYXRlKCkKK3sKKyAgICBpZiAobV9wYXJ0aWFsVGV4dHVyZVVwZGF0
ZVJlcXVlc3RzID49IG1fc2V0dGluZ3MubWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBtX3BhcnRpYWxUZXh0dXJlVXBkYXRlUmVxdWVzdHMrKzsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmRlbGV0ZVRleHR1
cmVBZnRlckNvbW1pdChQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKQogewogICAg
IG1fZGVsZXRlVGV4dHVyZUFmdGVyQ29tbWl0TGlzdC5hcHBlbmQodGV4dHVyZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IGMzODEwYWIyNzVjM2QwMTdjZGZkN2MwODQzYjRhN2M3
ZmNiOTk3MDQuLmU4MmYyOTgzMDQ3ZWZjYjEzYTA5OWY5YWRiNzUyZjJiMThhZWY1MTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiY2Mv
Q0NMYXllclRyZWVIb3N0Q29tbW9uLmgiCiAjaW5jbHVkZSAiY2MvQ0NQcm94eS5oIgogCisjaW5j
bHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtNzQsNyArNzUsNyBA
QCBzdHJ1Y3QgQ0NTZXR0aW5ncyB7CiAgICAgICAgICAgICAsIHJlZnJlc2hSYXRlKDApCiAgICAg
ICAgICAgICAsIHBlclRpbGVQYWludGluZyhmYWxzZSkKICAgICAgICAgICAgICwgcGFydGlhbFN3
YXBFbmFibGVkKGZhbHNlKQotICAgICAgICAgICAgLCBwYXJ0aWFsVGV4dHVyZVVwZGF0ZXModHJ1
ZSkgeyB9CisgICAgICAgICAgICAsIG1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcyhzdGQ6Om51bWVy
aWNfbGltaXRzPHNpemVfdD46Om1heCgpKSB7IH0KIAogICAgIGJvb2wgYWNjZWxlcmF0ZVBhaW50
aW5nOwogICAgIGJvb2wgY29tcG9zaXRlT2Zmc2NyZWVuOwpAQCAtODMsNyArODQsNyBAQCBzdHJ1
Y3QgQ0NTZXR0aW5ncyB7CiAgICAgZG91YmxlIHJlZnJlc2hSYXRlOwogICAgIGJvb2wgcGVyVGls
ZVBhaW50aW5nOwogICAgIGJvb2wgcGFydGlhbFN3YXBFbmFibGVkOwotICAgIGJvb2wgcGFydGlh
bFRleHR1cmVVcGRhdGVzOworICAgIHNpemVfdCBtYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXM7CiB9
OwogCiAvLyBQcm92aWRlcyBpbmZvcm1hdGlvbiBvbiBhbiBJbXBsJ3MgcmVuZGVyaW5nIGNhcGFi
aWxpdGllcyBiYWNrIHRvIHRoZSBDQ0xheWVyVHJlZUhvc3QKQEAgLTE5Miw2ICsxOTMsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzdGFydFJhdGVMaW1pdGVyKEdyYXBoaWNzQ29udGV4dDNEKik7CiAg
ICAgdm9pZCBzdG9wUmF0ZUxpbWl0ZXIoR3JhcGhpY3NDb250ZXh0M0QqKTsKIAorICAgIGJvb2wg
cmVxdWVzdFBhcnRpYWxUZXh0dXJlVXBkYXRlKCk7CiAgICAgdm9pZCBkZWxldGVUZXh0dXJlQWZ0
ZXJDb21taXQoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4pOwogCiBwcm90ZWN0ZWQ6CkBAIC0y
NDMsNiArMjQ1LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fdHJpZ2dlcklkbGVQYWludHM7CiAK
ICAgICBUZXh0dXJlTGlzdCBtX2RlbGV0ZVRleHR1cmVBZnRlckNvbW1pdExpc3Q7CisgICAgc2l6
ZV90IG1fcGFydGlhbFRleHR1cmVVcGRhdGVSZXF1ZXN0czsKIH07CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaApp
bmRleCBhM2FhNzE2MDcxYzM0MmFiNjk4ZTNlMGU5M2QyMjk4MjM3M2U3NWZhLi40NGFhY2NlYjBh
N2ZmNDRjODk2MTk0Y2ZiOGQ4YmZiNTBiNGYxNzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCkBAIC04MCw5ICs4
MCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoKSA9IDA7IC8vIE11c3QgYmUg
Y2FsbGVkIGJlZm9yZSB1c2luZyB0aGUgcHJveHkuCiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKSA9
IDA7IC8vIE11c3QgYmUgY2FsbGVkIGJlZm9yZSBkZWxldGluZyB0aGUgcHJveHkuCiAKLSAgICAv
LyBXaGV0aGVyIHN1Yi1yZWdpb25zIG9mIHRleHR1cmVzIGNhbiBiZSB1cGRhdGVkIG9yIGlmIGNv
bXBsZXRlIHRleHR1cmUKLSAgICAvLyB1cGRhdGVzIGFyZSByZXF1aXJlZC4KLSAgICB2aXJ0dWFs
IGJvb2wgcGFydGlhbFRleHR1cmVVcGRhdGVDYXBhYmlsaXR5KCkgY29uc3QgPSAwOworICAgIC8v
IE1heGltdW0gbnVtYmVyIG9mIHN1Yi1yZWdpb24gdGV4dHVyZSB1cGRhdGVzIHN1cHBvcnRlZCBm
b3IgZWFjaCBjb21taXQuCisgICAgdmlydHVhbCBzaXplX3QgbWF4UGFydGlhbFRleHR1cmVVcGRh
dGVzKCkgY29uc3QgPSAwOwogCiAgICAgLy8gRGVidWcgaG9va3MKICNpZm5kZWYgTkRFQlVHCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NpbmdsZVRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCmluZGV4IGNiNjk2ZWQxNzdkYzVl
YjQyOTNkOGQ3OTAxMjFjMThlMGY1MjM0YTkuLjZiNjI2NGRjZDQ0Nzc5MjA3MGZhZTM4YmM1MDMy
ZmNkNjZiYTI1MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCkBA
IC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1
ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogCit1c2luZyBuYW1lc3BhY2Ugc3RkOwogdXNpbmcgbmFt
ZXNwYWNlIFdURjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTcwLDcgKzE3MSw4IEBAIHZv
aWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6ZG9Db21taXQoKQogICAgICAgICBtX2xheWVyVHJlZUhv
c3QtPmJlZ2luQ29tbWl0T25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwuZ2V0KCkpOwog
ICAgICAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIobV9sYXllclRyZWVIb3N0SW1wbC0+Y29u
dGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0
ZUNvbXBvc2l0b3JSZXNvdXJjZXMobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCB1cGRh
dGVyKTsKLSAgICAgICAgd2hpbGUgKHVwZGF0ZXIudXBkYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwt
PmNvbnRleHQoKSwgMSkpIHsgfQorICAgICAgICB1cGRhdGVyLnVwZGF0ZShtX2xheWVyVHJlZUhv
c3RJbXBsLT5jb250ZXh0KCksIG51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsKKyAgICAg
ICAgQVNTRVJUKCF1cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOwogICAgICAgICBtX2xheWVyVHJl
ZUhvc3RJbXBsLT5zZXRWaXNpYmxlKG1fbGF5ZXJUcmVlSG9zdC0+dmlzaWJsZSgpKTsKICAgICAg
ICAgbV9sYXllclRyZWVIb3N0LT5maW5pc2hDb21taXRPbkltcGxUaHJlYWQobV9sYXllclRyZWVI
b3N0SW1wbC5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAppbmRl
eCBkYTFmZTQ2MTkyMTFkZWRiZGQ3ZWEyZGNhYTM3YzY1MzI0OGZmNDY1Li5hOTQ0MDVmM2Q5M2Vj
YTIwOGRlMjBmZGY4YmRhYzY5ZjA0OTdmMzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJl
YWRQcm94eS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiY2MvQ0NDb21wbGV0aW9uRXZl
bnQuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgiCiAjaW5jbHVkZSAiY2Mv
Q0NQcm94eS5oIgorI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU1LDcgKzU2LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBzZXRWaXNpYmxlKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzdGFydCgpOwogICAg
IHZpcnR1YWwgdm9pZCBzdG9wKCk7Ci0gICAgdmlydHVhbCBib29sIHBhcnRpYWxUZXh0dXJlVXBk
YXRlQ2FwYWJpbGl0eSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIHNpemVf
dCBtYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bWVyaWNf
bGltaXRzPHNpemVfdD46Om1heCgpOyB9CiAKICAgICAvLyBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xp
ZW50IGltcGxlbWVudGF0aW9uCiAgICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21wbGV0
ZU9uSW1wbFRocmVhZCgpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
ZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggODc0NWM0ZWEwYTcxMGJkZTE4ZWRlMTgyMGYzMTRmZGI4
Y2M4NzJhYi4uNjZlMDhjOGJkOTNmMTgyNmEzOWI1NTNjMjk2NTBhODNhYzA5ZThlYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0
dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgQ0NUZXh0dXJl
VXBkYXRlcjo6fkNDVGV4dHVyZVVwZGF0ZXIoKQogewogfQogCi12b2lkIENDVGV4dHVyZVVwZGF0
ZXI6OmFwcGVuZChMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJ
bnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQgQ0NUZXh0
dXJlVXBkYXRlcjo6YXBwZW5kKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUs
IGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LCBWZWN0
b3I8VXBkYXRlRW50cnk+JiBlbnRyaWVzKQogewogICAgIEFTU0VSVCh0ZXh0dXJlKTsKIApAQCAt
NTYsMjQgKzU2LDUwIEBAIHZvaWQgQ0NUZXh0dXJlVXBkYXRlcjo6YXBwZW5kKExheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlCiAgICAgZW50cnkubV90ZXh0
dXJlID0gdGV4dHVyZTsKICAgICBlbnRyeS5tX3NvdXJjZVJlY3QgPSBzb3VyY2VSZWN0OwogICAg
IGVudHJ5Lm1fZGVzdFJlY3QgPSBkZXN0UmVjdDsKLSAgICBtX2VudHJpZXMuYXBwZW5kKGVudHJ5
KTsKKyAgICBlbnRyaWVzLmFwcGVuZChlbnRyeSk7Cit9CisKK3ZvaWQgQ0NUZXh0dXJlVXBkYXRl
cjo6YXBwZW5kKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0IElu
dFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQoreworICAgIGFwcGVu
ZCh0ZXh0dXJlLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCwgbV9lbnRyaWVzKTsKK30KKwordm9pZCBD
Q1RleHR1cmVVcGRhdGVyOjphcHBlbmRQYXJ0aWFsKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRl
c3RSZWN0KQoreworICAgIGFwcGVuZCh0ZXh0dXJlLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCwgbV9w
YXJ0aWFsRW50cmllcyk7CiB9CiAKIGJvb2wgQ0NUZXh0dXJlVXBkYXRlcjo6aGFzTW9yZVVwZGF0
ZXMoKSBjb25zdAogewotICAgIHJldHVybiBtX2VudHJpZXMuc2l6ZSgpOworICAgIHJldHVybiBt
X2VudHJpZXMuc2l6ZSgpIHx8IG1fcGFydGlhbEVudHJpZXMuc2l6ZSgpOwogfQogCiBib29sIEND
VGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgc2l6ZV90
IGNvdW50KQogeworICAgIHNpemVfdCBpbmRleDsKICAgICBzaXplX3QgbWF4SW5kZXggPSBtaW4o
bV9lbnRyeUluZGV4ICsgY291bnQsIG1fZW50cmllcy5zaXplKCkpOwotICAgIGZvciAoOyBtX2Vu
dHJ5SW5kZXggPCBtYXhJbmRleDsgKyttX2VudHJ5SW5kZXgpIHsKLSAgICAgICAgVXBkYXRlRW50
cnkmIGVudHJ5ID0gbV9lbnRyaWVzW21fZW50cnlJbmRleF07CisgICAgZm9yIChpbmRleCA9IG1f
ZW50cnlJbmRleDsgaW5kZXggPCBtYXhJbmRleDsgKytpbmRleCkgeworICAgICAgICBVcGRhdGVF
bnRyeSYgZW50cnkgPSBtX2VudHJpZXNbaW5kZXhdOwogICAgICAgICBlbnRyeS5tX3RleHR1cmUt
PnVwZGF0ZVJlY3QoY29udGV4dCwgbV9hbGxvY2F0b3IsIGVudHJ5Lm1fc291cmNlUmVjdCwgZW50
cnkubV9kZXN0UmVjdCk7CiAgICAgfQogCi0gICAgaWYgKG1heEluZGV4IDwgbV9lbnRyaWVzLnNp
emUoKSkKKyAgICBib29sIG1vcmVVcGRhdGVzID0gbWF4SW5kZXggPCBtX2VudHJpZXMuc2l6ZSgp
OworCisgICAgQVNTRVJUKG1fcGFydGlhbEVudHJpZXMuc2l6ZSgpIDw9IGNvdW50KTsKKyAgICAv
LyBNYWtlIHN1cmUgdGhlIG51bWJlciBvZiB1cGRhdGVzIGluY2x1ZGluZyBwYXJ0aWFsIHVwZGF0
ZXMgYXJlIG5vdCBtb3JlCisgICAgLy8gdGhhbiB8Y291bnR8LgorICAgIGlmICgoY291bnQgLSAo
aW5kZXggLSBtX2VudHJ5SW5kZXgpKSA8IG1fcGFydGlhbEVudHJpZXMuc2l6ZSgpKQorICAgICAg
ICBtb3JlVXBkYXRlcyA9IHRydWU7CisKKyAgICBpZiAobW9yZVVwZGF0ZXMpIHsKKyAgICAgICAg
bV9lbnRyeUluZGV4ID0gaW5kZXg7CiAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAg
IGZvciAoaW5kZXggPSAwOyBpbmRleCA8IG1fcGFydGlhbEVudHJpZXMuc2l6ZSgpOyArK2luZGV4
KSB7CisgICAgICAgIFVwZGF0ZUVudHJ5JiBlbnRyeSA9IG1fcGFydGlhbEVudHJpZXNbaW5kZXhd
OworICAgICAgICBlbnRyeS5tX3RleHR1cmUtPnVwZGF0ZVJlY3QoY29udGV4dCwgbV9hbGxvY2F0
b3IsIGVudHJ5Lm1fc291cmNlUmVjdCwgZW50cnkubV9kZXN0UmVjdCk7CisgICAgfQogCiAgICAg
Ly8gSWYgbm8gZW50cmllcyBsZWZ0IHRvIHByb2Nlc3MsIGF1dG8tY2xlYXIuCiAgICAgY2xlYXIo
KTsKQEAgLTg0LDYgKzExMCw3IEBAIHZvaWQgQ0NUZXh0dXJlVXBkYXRlcjo6Y2xlYXIoKQogewog
ICAgIG1fZW50cnlJbmRleCA9IDA7CiAgICAgbV9lbnRyaWVzLmNsZWFyKCk7CisgICAgbV9wYXJ0
aWFsRW50cmllcy5jbGVhcigpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmgK
aW5kZXggYmY3OWFjOWMyZTIyZWZjNWVkYTlhNjQ4MjllMmVmY2NlYzE1YmIzMC4uZGJiNTJjOWJh
ZDIwNDM0ZGRiZjc0YzYyOGE0NDQ1ZTlkN2U5ODdkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVw
ZGF0ZXIuaApAQCAtNDEsNiArNDEsNyBAQCBwdWJsaWM6CiAgICAgfkNDVGV4dHVyZVVwZGF0ZXIo
KTsKIAogICAgIHZvaWQgYXBwZW5kKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisgICAgdm9p
ZCBhcHBlbmRQYXJ0aWFsKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRS
ZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAKICAgICBib29sIGhh
c01vcmVVcGRhdGVzKCkgY29uc3Q7CiAKQEAgLTU4LDkgKzU5LDEyIEBAIHByaXZhdGU6CiAgICAg
ICAgIEludFJlY3QgbV9kZXN0UmVjdDsKICAgICB9OwogCisgICAgc3RhdGljIHZvaWQgYXBwZW5k
KExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwgVmVjdG9yPFVwZGF0ZUVudHJ5PiYpOworCiAgICAg
VGV4dHVyZUFsbG9jYXRvciogbV9hbGxvY2F0b3I7CiAgICAgc2l6ZV90IG1fZW50cnlJbmRleDsK
ICAgICBWZWN0b3I8VXBkYXRlRW50cnk+IG1fZW50cmllczsKKyAgICBWZWN0b3I8VXBkYXRlRW50
cnk+IG1fcGFydGlhbEVudHJpZXM7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3Bw
CmluZGV4IGZkNjNiZDVjMGEzZDgyYzEyOWJiYjU4ZTI3NmExMDI4MDA2MmQ1MGUuLjhjYTg1MmRk
YTZjODZmY2E3MDFlNDdjM2Q0YTFlMDU2YmNkYzAzZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJv
eHkuY3BwCkBAIC00Myw3ICs0Myw5IEBAIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKIG5hbWVzcGFj
ZSB7CiAKLXN0YXRpYyBjb25zdCBzaXplX3QgdGV4dHVyZVVwZGF0ZXNQZXJGcmFtZSA9IDA7Cisv
LyBOdW1iZXIgb2YgdGV4dHVyZXMgdG8gdXBkYXRlIHdpdGggZWFjaCBjYWxsIHRvCisvLyBzY2hl
ZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKCkuCitzdGF0aWMgY29uc3Qgc2l6ZV90IHRl
eHR1cmVVcGRhdGVzUGVyRnJhbWUgPSA1OwogCiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKIApA
QCAtNDYyLDcgKzQ2NCw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uVXBk
YXRlTW9yZVJlc291cmNlcygpCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnNj
aGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMiLCB0aGlzLCAwKTsKICAgICBBU1NFUlQo
bV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpOwotICAgIG1fY3VycmVudFRleHR1
cmVVcGRhdGVyT25JbXBsVGhyZWFkLT51cGRhdGUobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4
dCgpLCB0ZXh0dXJlVXBkYXRlc1BlckZyYW1lID4gMCA/IHRleHR1cmVVcGRhdGVzUGVyRnJhbWUg
OiA5OTk5OSk7CisgICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQtPnVwZGF0
ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIHRleHR1cmVVcGRhdGVzUGVyRnJhbWUp
OwogfQogCiB2b2lkIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkNvbW1pdCgpCkBAIC01
OTUsOSArNTk3LDkgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpsYXllclRyZWVIb3N0Q2xvc2VkT25J
bXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW8KICAgICBjb21wbGV0aW9uLT5z
aWduYWwoKTsKIH0KIAotYm9vbCBDQ1RocmVhZFByb3h5OjpwYXJ0aWFsVGV4dHVyZVVwZGF0ZUNh
cGFiaWxpdHkoKSBjb25zdAorc2l6ZV90IENDVGhyZWFkUHJveHk6Om1heFBhcnRpYWxUZXh0dXJl
VXBkYXRlcygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICF0ZXh0dXJlVXBkYXRlc1BlckZyYW1lOwor
ICAgIHJldHVybiB0ZXh0dXJlVXBkYXRlc1BlckZyYW1lOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKaW5kZXggYjY1YTZjNjA0ZTI5MjNmYzhmMDlj
ZjlhYzdmNTU5NmQwYWIwY2RkMC4uZDMwNGFjZDk2Y2FmMTJiODFkYTJiYzAwMjdkZjQ0N2Y3NTI4
MGY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHNldFZpc2libGUoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHN0
YXJ0KCk7CiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKLSAgICB2aXJ0dWFsIGJvb2wgcGFydGlh
bFRleHR1cmVVcGRhdGVDYXBhYmlsaXR5KCkgY29uc3Q7CisgICAgdmlydHVhbCBzaXplX3QgbWF4
UGFydGlhbFRleHR1cmVVcGRhdGVzKCkgY29uc3Q7CiAKICAgICAvLyBDQ0xheWVyVHJlZUhvc3RJ
bXBsQ2xpZW50IGltcGxlbWVudGF0aW9uCiAgICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnND
b21wbGV0ZU9uSW1wbFRocmVhZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5kZXggZWRjYzBiNTYwNjIxY2M0NjFmY2Zk
ZmUxZmIxMTU0OGEwMzY1MjNhZS4uZmM0MTRmNzM5NzE0NTgzYWRhMWE2MzU2Y2E0MmEwNThkZjIz
NDUxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJl
ZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJU
cmVlSG9zdFRlc3QuY3BwCkBAIC0xMTQ3LDE2ICsxMTQ3LDE1IEBAIHB1YmxpYzoKIGNsYXNzIEND
TGF5ZXJUcmVlSG9zdFRlc3RBdG9taWNDb21taXQgOiBwdWJsaWMgQ0NMYXllclRyZWVIb3N0VGVz
dCB7CiBwdWJsaWM6CiAgICAgQ0NMYXllclRyZWVIb3N0VGVzdEF0b21pY0NvbW1pdCgpCi0gICAg
ICAgIDogbV91cGRhdGVDaGVja0xheWVyKENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRy
YWNraW5nOjpjcmVhdGUoJm1fZGVsZWdhdGUpKQotICAgICAgICAsIG1fbnVtQ29tbWl0cygwKQor
ICAgICAgICA6IG1fbGF5ZXIoQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6
OmNyZWF0ZSgmbV9kZWxlZ2F0ZSkpCiAgICAgewogICAgICAgICAvLyBNYWtlIHN1cmUgcGFydGlh
bCB0ZXh0dXJlIHVwZGF0ZXMgYXJlIHR1cm5lZCBvZmYuCi0gICAgICAgIG1fc2V0dGluZ3MucGFy
dGlhbFRleHR1cmVVcGRhdGVzID0gZmFsc2U7CisgICAgICAgIG1fc2V0dGluZ3MubWF4UGFydGlh
bFRleHR1cmVVcGRhdGVzID0gMDsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5UZXN0
KCkKICAgICB7Ci0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKG1fdXBkYXRl
Q2hlY2tMYXllcik7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKG1fbGF5
ZXIpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDEw
LCAxMCkpOwogCiAgICAgICAgIHBvc3RTZXROZWVkc0NvbW1pdFRvTWFpblRocmVhZCgpOwpAQCAt
MTE3Myw3ICsxMTcyLDcgQEAgcHVibGljOgogICAgICAgICAgICAgRVhQRUNUX0VRKDEsIGNvbnRl
eHQtPm51bVRleHR1cmVzKCkpOwogICAgICAgICAgICAgLy8gTnVtYmVyIG9mIHRleHR1cmVzIHVz
ZWQgZm9yIGNvbW1pdCBzaG91bGQgYmUgb25lLgogICAgICAgICAgICAgRVhQRUNUX0VRKDEsIGNv
bnRleHQtPm51bVVzZWRUZXh0dXJlcygpKTsKLSAgICAgICAgICAgIC8vIFZlcmlmeSB1c2VkIHRl
eHR1cmUgaXMgY29ycmVjdC4KKyAgICAgICAgICAgIC8vIFZlcmlmeSB0aGF0IHVzZWQgdGV4dHVy
ZSBpcyBjb3JyZWN0LgogICAgICAgICAgICAgRVhQRUNUX1RSVUUoY29udGV4dC0+dXNlZFRleHR1
cmUoY29udGV4dC0+dGV4dHVyZSgwKSkpOwogCiAgICAgICAgICAgICBjb250ZXh0LT5yZXNldFVz
ZWRUZXh0dXJlcygpOwpAQCAtMTIxNCw3ICsxMjEzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCB2b2lkIGxheW91dCgpCiAgICAgewotICAgICAgICBtX3VwZGF0ZUNoZWNrTGF5ZXItPnNldE5l
ZWRzRGlzcGxheSgpOworICAgICAgICBtX2xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKICAgICB9
CiAKICAgICB2aXJ0dWFsIHZvaWQgYWZ0ZXJUZXN0KCkKQEAgLTEyMjMsOCArMTIyMiw3IEBAIHB1
YmxpYzoKIAogcHJpdmF0ZToKICAgICBNb2NrQ29udGVudExheWVyRGVsZWdhdGUgbV9kZWxlZ2F0
ZTsKLSAgICBSZWZQdHI8Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc+IG1f
dXBkYXRlQ2hlY2tMYXllcjsKLSAgICBpbnQgbV9udW1Db21taXRzOworICAgIFJlZlB0cjxDb250
ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZz4gbV9sYXllcjsKIH07CiAKIFRFU1Rf
RihDQ0xheWVyVHJlZUhvc3RUZXN0QXRvbWljQ29tbWl0LCBydW5NdWx0aVRocmVhZCkKQEAgLTEy
MzIsNiArMTIzMCwxMzIgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdFRlc3RBdG9taWNDb21taXQs
IHJ1bk11bHRpVGhyZWFkKQogICAgIHJ1blRlc3QodHJ1ZSk7CiB9CiAKK2NsYXNzIENDTGF5ZXJU
cmVlSG9zdFRlc3RBdG9taWNDb21taXRXaXRoUGFydGlhbFVwZGF0ZSA6IHB1YmxpYyBDQ0xheWVy
VHJlZUhvc3RUZXN0IHsKK3B1YmxpYzoKKyAgICBDQ0xheWVyVHJlZUhvc3RUZXN0QXRvbWljQ29t
bWl0V2l0aFBhcnRpYWxVcGRhdGUoKQorICAgICAgICA6IG1fcGFyZW50KENvbnRlbnRMYXllckNo
cm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpjcmVhdGUoJm1fZGVsZWdhdGUpKQorICAgICAgICAs
IG1fY2hpbGQoQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OmNyZWF0ZSgm
bV9kZWxlZ2F0ZSkpCisgICAgICAgICwgbV9udW1Db21taXRzKDApCisgICAgeworICAgICAgICAv
LyBBbGxvdyBvbmUgcGFydGlhbCB0ZXh0dXJlIHVwZGF0ZS4KKyAgICAgICAgbV9zZXR0aW5ncy5t
YXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMgPSAxOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBi
ZWdpblRlc3QoKQorICAgIHsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIo
bV9wYXJlbnQpOworICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShJbnRT
aXplKDEwLCAxMCkpOworICAgICAgICBtX3BhcmVudC0+YWRkQ2hpbGQobV9jaGlsZCk7CisgICAg
ICAgIG1fY2hpbGQtPnNldE9wYWNpdHkoMC41KTsKKyAgICAgICAgbV9jaGlsZC0+c2V0Qm91bmRz
KEludFNpemUoMjAsIDIwKSk7CisKKyAgICAgICAgcG9zdFNldE5lZWRzQ29tbWl0VG9NYWluVGhy
ZWFkKCk7CisgICAgICAgIHBvc3RTZXROZWVkc1JlZHJhd1RvTWFpblRocmVhZCgpOworICAgIH0K
KworICAgIHZpcnR1YWwgdm9pZCBjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQoQ0NMYXllclRyZWVI
b3N0SW1wbCogaW1wbCkKKyAgICB7CisgICAgICAgIENvbXBvc2l0b3JGYWtlV2ViR3JhcGhpY3ND
b250ZXh0M0RXaXRoVGV4dHVyZVRyYWNraW5nKiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Q29tcG9z
aXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhUZXh0dXJlVHJhY2tpbmcqPihHcmFwaGlj
c0NvbnRleHQzRFByaXZhdGU6OmV4dHJhY3RXZWJHcmFwaGljc0NvbnRleHQzRChpbXBsLT5jb250
ZXh0KCkpKTsKKworICAgICAgICBzd2l0Y2ggKGltcGwtPmZyYW1lTnVtYmVyKCkpIHsKKyAgICAg
ICAgY2FzZSAwOgorICAgICAgICAgICAgLy8gTnVtYmVyIG9mIHRleHR1cmVzIHNob3VsZCBiZSB0
d28uCisgICAgICAgICAgICBFWFBFQ1RfRVEoMiwgY29udGV4dC0+bnVtVGV4dHVyZXMoKSk7Cisg
ICAgICAgICAgICAvLyBOdW1iZXIgb2YgdGV4dHVyZXMgdXNlZCBmb3IgY29tbWl0IHNob3VsZCBi
ZSB0d28uCisgICAgICAgICAgICBFWFBFQ1RfRVEoMiwgY29udGV4dC0+bnVtVXNlZFRleHR1cmVz
KCkpOworICAgICAgICAgICAgLy8gVmVyaWZ5IHRoYXQgdXNlZCB0ZXh0dXJlcyBhcmUgY29ycmVj
dC4KKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKGNvbnRleHQtPnVzZWRUZXh0dXJlKGNvbnRleHQt
PnRleHR1cmUoMCkpKTsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKGNvbnRleHQtPnVzZWRUZXh0
dXJlKGNvbnRleHQtPnRleHR1cmUoMSkpKTsKKworICAgICAgICAgICAgY29udGV4dC0+cmVzZXRV
c2VkVGV4dHVyZXMoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDE6CisgICAg
ICAgICAgICAvLyBOdW1iZXIgb2YgdGV4dHVyZXMgc2hvdWxkIGJlIGZvdXIgYXMgdGhlIGZpcnN0
IHR3bworICAgICAgICAgICAgLy8gdGV4dHVyZXMgYXJlIHVzZWQgYnkgdGhlIGltcGwgdGhyZWFk
LgorICAgICAgICAgICAgRVhQRUNUX0VRKDQsIGNvbnRleHQtPm51bVRleHR1cmVzKCkpOworICAg
ICAgICAgICAgLy8gTnVtYmVyIG9mIHRleHR1cmVzIHVzZWQgZm9yIGNvbW1pdCBzaG91bGQgc3Rp
bGwgYmUgdHdvLgorICAgICAgICAgICAgRVhQRUNUX0VRKDIsIGNvbnRleHQtPm51bVVzZWRUZXh0
dXJlcygpKTsKKyAgICAgICAgICAgIC8vIEZpcnN0IHR3byB0ZXh0dXJlcyBzaG91bGQgbm90IGhh
dmUgYmVlbiB1c2VkLgorICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGNvbnRleHQtPnVzZWRUZXh0
dXJlKGNvbnRleHQtPnRleHR1cmUoMCkpKTsKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRShjb250
ZXh0LT51c2VkVGV4dHVyZShjb250ZXh0LT50ZXh0dXJlKDEpKSk7CisgICAgICAgICAgICAvLyBO
ZXcgdGV4dHVyZXMgc2hvdWxkIGhhdmUgYmVlbiB1c2VkLgorICAgICAgICAgICAgRVhQRUNUX1RS
VUUoY29udGV4dC0+dXNlZFRleHR1cmUoY29udGV4dC0+dGV4dHVyZSgyKSkpOworICAgICAgICAg
ICAgRVhQRUNUX1RSVUUoY29udGV4dC0+dXNlZFRleHR1cmUoY29udGV4dC0+dGV4dHVyZSgzKSkp
OworCisgICAgICAgICAgICBjb250ZXh0LT5yZXNldFVzZWRUZXh0dXJlcygpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIC8vIE51bWJlciBvZiB0ZXh0
dXJlcyBzaG91bGQgYmUgdGhyZWUgYXMgd2UgYWxsb3cgb25lCisgICAgICAgICAgICAvLyBwYXJ0
aWFsIHVwZGF0ZSBhbmQgdGhlIGZpcnN0IHR3byB0ZXh0dXJlcyBhcmUgdXNlZCBieQorICAgICAg
ICAgICAgLy8gdGhlIGltcGwgdGhyZWFkLgorICAgICAgICAgICAgRVhQRUNUX0VRKDMsIGNvbnRl
eHQtPm51bVRleHR1cmVzKCkpOworICAgICAgICAgICAgLy8gTnVtYmVyIG9mIHRleHR1cmVzIHVz
ZWQgZm9yIGNvbW1pdCBzaG91bGQgc3RpbGwgYmUgdHdvLgorICAgICAgICAgICAgRVhQRUNUX0VR
KDIsIGNvbnRleHQtPm51bVVzZWRUZXh0dXJlcygpKTsKKyAgICAgICAgICAgIC8vIEZpcnN0IHRl
eHR1cmUgc2hvdWxkIG5vdCBoYXZlIGJlZW4gdXNlZC4KKyAgICAgICAgICAgIEVYUEVDVF9GQUxT
RShjb250ZXh0LT51c2VkVGV4dHVyZShjb250ZXh0LT50ZXh0dXJlKDApKSk7CisgICAgICAgICAg
ICAvLyBTZWNvbmQgdGV4dHVyZSBzaG91bGQgaGF2ZSBiZWVuIHVzZWQuCisgICAgICAgICAgICBF
WFBFQ1RfVFJVRShjb250ZXh0LT51c2VkVGV4dHVyZShjb250ZXh0LT50ZXh0dXJlKDEpKSk7Cisg
ICAgICAgICAgICAvLyBOZXcgdGV4dHVyZXMgc2hvdWxkIGhhdmUgYmVlbiB1c2VkLgorICAgICAg
ICAgICAgRVhQRUNUX1RSVUUoY29udGV4dC0+dXNlZFRleHR1cmUoY29udGV4dC0+dGV4dHVyZSgy
KSkpOworCisgICAgICAgICAgICBjb250ZXh0LT5yZXNldFVzZWRUZXh0dXJlcygpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgdmly
dHVhbCB2b2lkIGRyYXdMYXllcnNPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGltcGwp
CisgICAgeworICAgICAgICBDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEV2l0aFRl
eHR1cmVUcmFja2luZyogY29udGV4dCA9IHN0YXRpY19jYXN0PENvbXBvc2l0b3JGYWtlV2ViR3Jh
cGhpY3NDb250ZXh0M0RXaXRoVGV4dHVyZVRyYWNraW5nKj4oR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlOjpleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0QoaW1wbC0+Y29udGV4dCgpKSk7CisKKyAg
ICAgICAgLy8gTnVtYmVyIG9mIHRleHR1cmVzIHVzZWQgZm9yIGRyYXdpbmcgc2hvdWxkIGFsd2F5
cyBiZSB0d28uCisgICAgICAgIEVYUEVDVF9FUSgyLCBjb250ZXh0LT5udW1Vc2VkVGV4dHVyZXMo
KSk7CisKKyAgICAgICAgaWYgKGltcGwtPmZyYW1lTnVtYmVyKCkgPCAzKSB7CisgICAgICAgICAg
ICBjb250ZXh0LT5yZXNldFVzZWRUZXh0dXJlcygpOworICAgICAgICAgICAgcG9zdFNldE5lZWRz
QW5pbWF0ZUFuZENvbW1pdFRvTWFpblRocmVhZCgpOworICAgICAgICAgICAgcG9zdFNldE5lZWRz
UmVkcmF3VG9NYWluVGhyZWFkKCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgZW5kVGVz
dCgpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKQorICAgIHsKKyAgICAgICAg
c3dpdGNoIChtX251bUNvbW1pdHMrKykgeworICAgICAgICBjYXNlIDA6CisgICAgICAgIGNhc2Ug
MToKKyAgICAgICAgICAgIG1fcGFyZW50LT5zZXROZWVkc0Rpc3BsYXkoKTsKKyAgICAgICAgICAg
IG1fY2hpbGQtPnNldE5lZWRzRGlzcGxheSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgMjoKKyAgICAgICAgICAgIC8vIERhbWFnZSBwYXJ0IG9mIGxheWVycy4KKyAgICAgICAg
ICAgIG1fcGFyZW50LT5zZXROZWVkc0Rpc3BsYXlSZWN0KEZsb2F0UmVjdCgwLCAwLCA1LCA1KSk7
CisgICAgICAgICAgICBtX2NoaWxkLT5zZXROZWVkc0Rpc3BsYXlSZWN0KEZsb2F0UmVjdCgwLCAw
LCA1LCA1KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYWZ0ZXJUZXN0KCkKKyAgICB7CisgICAgfQorCitw
cml2YXRlOgorICAgIE1vY2tDb250ZW50TGF5ZXJEZWxlZ2F0ZSBtX2RlbGVnYXRlOworICAgIFJl
ZlB0cjxDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZz4gbV9wYXJlbnQ7Cisg
ICAgUmVmUHRyPENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nPiBtX2NoaWxk
OworICAgIGludCBtX251bUNvbW1pdHM7Cit9OworCitURVNUX0YoQ0NMYXllclRyZWVIb3N0VGVz
dEF0b21pY0NvbW1pdFdpdGhQYXJ0aWFsVXBkYXRlLCBydW5NdWx0aVRocmVhZCkKK3sKKyAgICBy
dW5UZXN0KHRydWUpOworfQorCiAjZGVmaW5lIEVYUEVDVF9FUV9SRUNUKGEsIGIpIFwKICAgICBF
WFBFQ1RfRVEoYS54KCksIGIueCgpKTsgXAogICAgIEVYUEVDVF9FUShhLnkoKSwgYi55KCkpOyBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hy
b21pdW1UZXN0LmNwcAppbmRleCA2MDY5ZmQxODEzODhiYjU0NjlkOWI2MTNmOGM3NTNkNmE1YmZi
ODk5Li4wYWFlMWQ2ZGRlY2JkYzhiZTYxNDRmNDJmY2ZlZWQyODIxODUxMGUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVz
dC5jcHAKQEAgLTYwLDEzICs2MCwxNiBAQCBjbGFzcyBGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlciA6
IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyIHsKIHB1YmxpYzoKICAgICBjbGFzcyBUZXh0dXJl
IDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgewogICAgIHB1YmxpYzoKLSAg
ICAgICAgVGV4dHVyZShQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKSA6IExheWVy
VGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUodGV4dHVyZSkgeyB9CisgICAgICAgIFRleHR1cmUoRmFr
ZUxheWVyVGV4dHVyZVVwZGF0ZXIqIGxheWVyLCBQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0
ZXh0dXJlKSA6IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUodGV4dHVyZSksIG1fbGF5ZXIo
bGF5ZXIpIHsgfQogICAgICAgICB2aXJ0dWFsIH5UZXh0dXJlKCkgeyB9CiAKLSAgICAgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9y
KiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmKSB7IH0KKyAgICAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29u
c3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmKSB7IG1fbGF5ZXItPnVwZGF0ZVJlY3QoKTsgfQor
CisgICAgcHJpdmF0ZToKKyAgICAgICAgRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIqIG1fbGF5ZXI7
CiAgICAgfTsKIAotICAgIEZha2VMYXllclRleHR1cmVVcGRhdGVyKCkgOiBtX3ByZXBhcmVDb3Vu
dCgwKSB7IH0KKyAgICBGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpIDogbV9wcmVwYXJlQ291bnQo
MCksIG1fdXBkYXRlQ291bnQoMCkgeyB9CiAgICAgdmlydHVhbCB+RmFrZUxheWVyVGV4dHVyZVVw
ZGF0ZXIoKSB7IH0KIAogICAgIC8vIFNldHMgdGhlIHJlY3QgdG8gaW52YWxpZGF0ZSBkdXJpbmcg
dGhlIG5leHQgY2FsbCB0byBwcmVwYXJlVG9VcGRhdGUoKS4gQWZ0ZXIgdGhlIG5leHQKQEAgLTc3
LDE3ICs4MCwyMyBAQCBwdWJsaWM6CiAgICAgaW50IHByZXBhcmVDb3VudCgpIGNvbnN0IHsgcmV0
dXJuIG1fcHJlcGFyZUNvdW50OyB9CiAgICAgdm9pZCBjbGVhclByZXBhcmVDb3VudCgpIHsgbV9w
cmVwYXJlQ291bnQgPSAwOyB9CiAKKyAgICAvLyBOdW1iZXIgb2YgdGltZXMgdXBkYXRlUmVjdCBo
YXMgYmVlbiBpbnZva2VkLgorICAgIGludCB1cGRhdGVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1f
dXBkYXRlQ291bnQ7IH0KKyAgICB2b2lkIGNsZWFyVXBkYXRlQ291bnQoKSB7IG1fdXBkYXRlQ291
bnQgPSAwOyB9CisgICAgdm9pZCB1cGRhdGVSZWN0KCkgeyBtX3VwZGF0ZUNvdW50Kys7IH0KKwog
ICAgIHZvaWQgc2V0T3BhcXVlUGFpbnRSZWN0KGNvbnN0IEludFJlY3QmIG9wYXF1ZVBhaW50UmVj
dCkgeyBtX29wYXF1ZVBhaW50UmVjdCA9IG9wYXF1ZVBhaW50UmVjdDsgfQogCiAgICAgLy8gTGFz
dCByZWN0IHBhc3NlZCB0byBwcmVwYXJlVG9VcGRhdGUoKS4KICAgICBjb25zdCBJbnRSZWN0JiBs
YXN0VXBkYXRlUmVjdCgpICBjb25zdCB7IHJldHVybiBtX2xhc3RVcGRhdGVSZWN0OyB9CiAKLSAg
ICB2aXJ0dWFsIFBhc3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gY3JlYXRl
VGV4dHVyZShUZXh0dXJlTWFuYWdlciogbWFuYWdlcikgeyByZXR1cm4gYWRvcHRQdHIobmV3IFRl
eHR1cmUoTWFuYWdlZFRleHR1cmU6OmNyZWF0ZShtYW5hZ2VyKSkpOyB9CisgICAgdmlydHVhbCBQ
YXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4
dHVyZU1hbmFnZXIqIG1hbmFnZXIpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBUZXh0dXJlKHRoaXMs
IE1hbmFnZWRUZXh0dXJlOjpjcmVhdGUobWFuYWdlcikpKTsgfQogICAgIHZpcnR1YWwgU2FtcGxl
ZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSkgeyByZXR1cm4gU2FtcGxl
ZFRleGVsRm9ybWF0UkdCQTsgfQogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29u
c3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmLCBpbnQsIGZsb2F0LCBJbnRS
ZWN0KiByZXN1bHRpbmdPcGFxdWVSZWN0KTsKIAogcHJpdmF0ZToKICAgICBpbnQgbV9wcmVwYXJl
Q291bnQ7CisgICAgaW50IG1fdXBkYXRlQ291bnQ7CiAgICAgSW50UmVjdCBtX3JlY3RUb0ludmFs
aWRhdGU7CiAgICAgSW50UmVjdCBtX2xhc3RVcGRhdGVSZWN0OwogICAgIEludFJlY3QgbV9vcGFx
dWVQYWludFJlY3Q7CkBAIC0xNTUsOCArMTY0LDYgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0
ZToKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVGV4dHVyZVVwZGF0ZXIoY29uc3QgQ0NMYXllclRy
ZWVIb3N0KikgeyB9Ci0KICAgICB2aXJ0dWFsIExheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVV
cGRhdGVyKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2Zha2VUZXh0dXJlVXBkYXRl
ci5nZXQoKTsKQEAgLTU3OSw0ICs1ODYsNzUgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0
LCByZXNpemVUb1NtYWxsZXIpCiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwg
MCwgMjAwLCAyMDApKTsKIH0KIAorVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwYXJ0aWFs
VXBkYXRlcykKK3sKKyAgICBDQ1NldHRpbmdzIHNldHRpbmdzOworICAgIHNldHRpbmdzLm1heFBh
cnRpYWxUZXh0dXJlVXBkYXRlcyA9IDQ7CisgICAgLy8gSW5pdGlhbGl6ZSB3aXRob3V0IHRocmVh
ZGluZyBzdXBwb3J0LgorICAgIFdlYktpdDo6V2ViQ29tcG9zaXRvcjo6aW5pdGlhbGl6ZSgwKTsK
KyAgICBGYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50IGZha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQ7
CisgICAgUmVmUHRyPENDTGF5ZXJUcmVlSG9zdD4gY2NMYXllclRyZWVIb3N0ID0gQ0NMYXllclRy
ZWVIb3N0OjpjcmVhdGUoJmZha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQsIHNldHRpbmdzKTsKKwor
ICAgIC8vIENyZWF0ZSBvbmUgNTAwIHggMzAwIHRpbGVkIGxheWVyLgorICAgIEludFNpemUgY29u
dGVudEJvdW5kcygzMDAsIDIwMCk7CisgICAgSW50UmVjdCBjb250ZW50UmVjdChJbnRQb2ludDo6
emVybygpLCBjb250ZW50Qm91bmRzKTsKKworICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4
dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDYwKjEwMjQqMTAyNCwgNjAqMTAy
NCoxMDI0LCAxMDI0KTsKKyAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIg
PSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQo
KSkpOworICAgIGxheWVyLT5zZXRCb3VuZHMoY29udGVudEJvdW5kcyk7CisgICAgbGF5ZXItPnNl
dFBvc2l0aW9uKEZsb2F0UG9pbnQoMTUwLCAxNTApKTsKKyAgICBsYXllci0+aW52YWxpZGF0ZVJl
Y3QoY29udGVudFJlY3QpOworCisgICAgRmFrZVRleHR1cmVBbGxvY2F0b3IgdGV4dHVyZUFsbG9j
YXRvcjsKKyAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIoJnRleHR1cmVBbGxvY2F0b3IpOwor
CisgICAgY2NMYXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIobGF5ZXIpOworICAgIGNjTGF5ZXJU
cmVlSG9zdC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMzAwLCAyMDApKTsKKworICAgIC8vIEZ1
bGwgdXBkYXRlIG9mIGFsbCA2IHRpbGVzLgorICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5
ZXJzKCk7CisgICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNj
TGF5ZXJUcmVlSG9zdC0+Y29udGV4dCgpLCB1cGRhdGVyKTsKKyAgICB1cGRhdGVyLnVwZGF0ZSgw
LCA0KTsKKyAgICBFWFBFQ1RfRVEoNCwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCkt
PnVwZGF0ZUNvdW50KCkpOworICAgIEVYUEVDVF9UUlVFKHVwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMo
KSk7CisgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyVXBkYXRlQ291
bnQoKTsKKyAgICB1cGRhdGVyLnVwZGF0ZSgwLCA0KTsKKyAgICBFWFBFQ1RfRVEoMiwgbGF5ZXIt
PmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOworICAgIEVYUEVDVF9G
QUxTRSh1cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOworICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0
dXJlVXBkYXRlcigpLT5jbGVhclVwZGF0ZUNvdW50KCk7CisgICAgY2NMYXllclRyZWVIb3N0LT5j
b21taXRDb21wbGV0ZSgpOworCisgICAgLy8gRnVsbCB1cGRhdGUgb2YgMyB0aWxlcyBhbmQgcGFy
dGlhbCB1cGRhdGUgb2YgMyB0aWxlcy4KKyAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVj
dCgwLCAwLCAzMDAsIDE1MCkpOworICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7
CisgICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNjTGF5ZXJU
cmVlSG9zdC0+Y29udGV4dCgpLCB1cGRhdGVyKTsKKyAgICB1cGRhdGVyLnVwZGF0ZSgwLCA0KTsK
KyAgICBFWFBFQ1RfRVEoMywgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnVwZGF0
ZUNvdW50KCkpOworICAgIEVYUEVDVF9UUlVFKHVwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7Cisg
ICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyVXBkYXRlQ291bnQoKTsK
KyAgICB1cGRhdGVyLnVwZGF0ZSgwLCA0KTsKKyAgICBFWFBFQ1RfRVEoMywgbGF5ZXItPmZha2VM
YXllclRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOworICAgIEVYUEVDVF9GQUxTRSh1
cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOworICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBk
YXRlcigpLT5jbGVhclVwZGF0ZUNvdW50KCk7CisgICAgY2NMYXllclRyZWVIb3N0LT5jb21taXRD
b21wbGV0ZSgpOworCisgICAgLy8gUGFydGlhbCB1cGRhdGUgb2YgNiB0aWxlcy4KKyAgICBsYXll
ci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCg1MCwgNTAsIDIwMCwgMTAwKSk7CisgICAgY2NMYXll
clRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKKyAgICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0ZUNv
bXBvc2l0b3JSZXNvdXJjZXMoY2NMYXllclRyZWVIb3N0LT5jb250ZXh0KCksIHVwZGF0ZXIpOwor
ICAgIHVwZGF0ZXIudXBkYXRlKDAsIDQpOworICAgIEVYUEVDVF9FUSgyLCBsYXllci0+ZmFrZUxh
eWVyVGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlQ291bnQoKSk7CisgICAgRVhQRUNUX1RSVUUodXBk
YXRlci5oYXNNb3JlVXBkYXRlcygpKTsKKyAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0
ZXIoKS0+Y2xlYXJVcGRhdGVDb3VudCgpOworICAgIHVwZGF0ZXIudXBkYXRlKDAsIDQpOworICAg
IEVYUEVDVF9FUSg0LCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlQ291
bnQoKSk7CisgICAgRVhQRUNUX0ZBTFNFKHVwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CisgICAg
bGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyVXBkYXRlQ291bnQoKTsKKyAg
ICBjY0xheWVyVHJlZUhvc3QtPmNvbW1pdENvbXBsZXRlKCk7CisKKyAgICBjY0xheWVyVHJlZUhv
c3QtPnNldFJvb3RMYXllcigwKTsKKyAgICBjY0xheWVyVHJlZUhvc3QuY2xlYXIoKTsKKyAgICBX
ZWJLaXQ6OldlYkNvbXBvc2l0b3I6OnNodXRkb3duKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126152</attachid>
            <date>2012-02-08 14:20:04 -0800</date>
            <delta_ts>2012-02-08 21:26:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76740-20120208172002.patch</filename>
            <type>text/plain</type>
            <size>36623</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3MTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWYzZTIxZWM2YjVjYmUz
MzRlZmVlNWIzY2JiNGFhYWYxOTljM2JhMi4uM2MyMzZkYjgzMzY0YzAwNWM5MTYwZTc0NzkwN2Y1
YzM1MWIxMDJiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDEyLTAyLTA4ICBEYXZp
ZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBB
dm9pZCB1bm5lY2Vzc2FyeSBmdWxsIHRpbGUgdXBkYXRlcyB3aXRob3V0IGJyZWFraW5nIGF0b21p
Y2l0eSBvZiBjb21taXRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzY3NDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBbGxvdyB0aGUgZmluYWwgYmF0Y2ggb2YgdGV4dHVyZSB1cGxvYWRzIHRvIGJlIHBl
cmZvcm1lZCB3aXRob3V0CisgICAgICAgIGFsbG9jYXRpbmcgbmV3IHRleHR1cmVzIGFuZCByZS1w
YWludGluZyBjb21wbGV0ZSB0aWxlcy4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIHRlc3RlZCBi
eSB0aGUgZm9sbG93aW5nIHVuaXQgdGVzdDoKKyAgICAgICAgLSBDQ0xheWVyVHJlZUhvc3RUZXN0
QXRvbWljQ29tbWl0V2l0aFBhcnRpYWxVcGRhdGUucnVuTXVsdGlUaHJlYWQKKyAgICAgICAgLSBU
aWxlZExheWVyQ2hyb21pdW1UZXN0LnBhcnRpYWxVcGRhdGVzCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VXBkYXRhYmxlVGlsZTo6VXBkYXRhYmxlVGlsZSk6CisgICAgICAgIChVcGRhdGFibGVU
aWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9z
aXRvclJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRp
bGVkTGF5ZXJDaHJvbWl1bTo6dGlsZU9ubHlOZWVkc1BhcnRpYWxVcGRhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjp0aWxlTmVlZHNCdWZmZXJlZFVwZGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21p
dW0uaDoKKyAgICAgICAgKFRpbGVkTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNDTGF5ZXJUcmVlSG9zdDo6Q0NMYXllclRyZWVIb3N0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdDo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NMYXllclRyZWVIb3N0OjpyZXF1ZXN0UGFydGlhbFRleHR1cmVVcGRhdGUpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0Lmg6CisgICAgICAgIChXZWJDb3JlOjpDQ1NldHRpbmdzOjpDQ1NldHRpbmdzKToK
KyAgICAgICAgKENDU2V0dGluZ3MpOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5Lmg6CisgICAgICAgIChD
Q1Byb3h5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Npbmds
ZVRocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhyZWFkUHJveHk6
OmRvQ29tbWl0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Np
bmdsZVRocmVhZFByb3h5Lmg6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5
OjptYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NU
ZXh0dXJlVXBkYXRlcjo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NUZXh0dXJlVXBkYXRlcjo6YXBwZW5kUGFydGlhbCk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1RleHR1cmVVcGRhdGVyOjpoYXNNb3JlVXBkYXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1RleHR1cmVVcGRhdGVyOjp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBk
YXRlcjo6Y2xlYXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGV4dHVyZVVwZGF0ZXIuaDoKKyAgICAgICAgKENDVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwOgorICAgICAg
ICAoV1RGKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlv
blVwZGF0ZU1vcmVSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6
bWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5Lmg6CisgICAgICAgIChDQ1RocmVhZFByb3h5KToKKwog
MjAxMi0wMi0wOCAgQW50b2luZSBMYWJvdXIgIDxwaW1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgTWFrZSBXZWJHTCBjb250ZXh0IGN1cnJlbnQgZWFybHkgdG8gY2hlY2sgdmFsaWRpdHkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMGE3ZDI4ZDVlMzNkNzFjYmJmZTRhYjQxM2JhZDUx
ZmQwMzAzYTUxNi4uYjhmMmE0OTBmMGU0NWRlMTFkNTRiZTY3MTkxZjQyMzhiMDJjZmVjZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAxMi0wMi0wOCAgRGF2
aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
QXZvaWQgdW5uZWNlc3NhcnkgZnVsbCB0aWxlIHVwZGF0ZXMgd2l0aG91dCBicmVha2luZyBhdG9t
aWNpdHkgb2YgY29tbWl0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTc2NzQwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIENDTGF5ZXJUcmVlSG9zdFRlc3RBdG9taWNDb21taXRXaXRoUGFydGlhbFVw
ZGF0ZSBhbmQKKyAgICAgICAgVGlsZWRMYXllckNocm9taXVtVGVzdC5wYXJ0aWFsVXBkYXRlcyB0
ZXN0cyB0aGF0IHZlcmlmaWVzCisgICAgICAgIGF0b21pY2l0eSBvZiBjb21taXRzIHdpdGggcGFy
dGlhbCB1cGRhdGVzLgorCisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHA6
CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RBdG9taWNDb21taXQ6OkNDTGF5ZXJU
cmVlSG9zdFRlc3RBdG9taWNDb21taXQpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RU
ZXN0QXRvbWljQ29tbWl0OjpiZWdpblRlc3QpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhv
c3RUZXN0QXRvbWljQ29tbWl0Ojpjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQpOgorICAgICAgICAo
V1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0QXRvbWljQ29tbWl0OjpsYXlvdXQpOgorICAgICAgICAo
Q0NMYXllclRyZWVIb3N0VGVzdEF0b21pY0NvbW1pdCk6CisgICAgICAgIChDQ0xheWVyVHJlZUhv
c3RUZXN0QXRvbWljQ29tbWl0V2l0aFBhcnRpYWxVcGRhdGUpOgorICAgICAgICAoV1RGOjpDQ0xh
eWVyVHJlZUhvc3RUZXN0QXRvbWljQ29tbWl0V2l0aFBhcnRpYWxVcGRhdGU6OkNDTGF5ZXJUcmVl
SG9zdFRlc3RBdG9taWNDb21taXRXaXRoUGFydGlhbFVwZGF0ZSk6CisgICAgICAgIChXVEY6OkND
TGF5ZXJUcmVlSG9zdFRlc3RBdG9taWNDb21taXRXaXRoUGFydGlhbFVwZGF0ZTo6YmVnaW5UZXN0
KToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdEF0b21pY0NvbW1pdFdpdGhQYXJ0
aWFsVXBkYXRlOjpjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQpOgorICAgICAgICAoV1RGOjpDQ0xh
eWVyVHJlZUhvc3RUZXN0QXRvbWljQ29tbWl0V2l0aFBhcnRpYWxVcGRhdGU6OmRyYXdMYXllcnNP
bkNDVGhyZWFkKToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdEF0b21pY0NvbW1p
dFdpdGhQYXJ0aWFsVXBkYXRlOjpsYXlvdXQpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhv
c3RUZXN0QXRvbWljQ29tbWl0V2l0aFBhcnRpYWxVcGRhdGU6OmFmdGVyVGVzdCk6CisgICAgICAg
IChXVEYpOgorICAgICAgICAoV1RGOjpURVNUX0YpOgorICAgICAgICAqIHRlc3RzL1RpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QuY3BwOgorICAgICAgICAoV1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZTo6VGV4dHVyZSk6CisgICAgICAgIChXVEY6OkZha2VMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KToKKyAgICAgICAgKFRleHR1cmUpOgorICAgICAgICAo
V1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIpOgor
ICAgICAgICAoRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAoV1RGOjpGYWtlTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlQ291bnQpOgorICAgICAgICAoV1RGOjpGYWtlTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6Y2xlYXJVcGRhdGVDb3VudCk6CisgICAgICAgIChXVEY6OkZha2VMYXll
clRleHR1cmVVcGRhdGVyOjp1cGRhdGVSZWN0KToKKyAgICAgICAgKFdURjo6RmFrZUxheWVyVGV4
dHVyZVVwZGF0ZXI6OmNyZWF0ZVRleHR1cmUpOgorICAgICAgICAoRmFrZVRpbGVkTGF5ZXJDaHJv
bWl1bSk6CisgICAgICAgIChXVEY6OlRFU1QpOgorICAgICAgICAoV1RGKToKKwogMjAxMi0wMi0w
OCAgTmljbyBXZWJlciAgPG5pY29sYXN3ZWJlckBnbXguZGU+CiAKICAgICAgICAgW2Nocm9taXVt
XSBNYWtlIGRlcGVuZGVuY3kgb24gQWNjZWxlcmF0ZS5mcmFtZXdvcmsgZXhwbGljaXQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExh
eWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVGlsZWRMYXllckNocm9taXVtLmNwcAppbmRleCBjOTFkZDVkZmI0MmU1MGYwNTkzY2JhMWMz
Mjc3N2VjNTkyOTE2ZDgxLi5kOWUyNDg3ZDgwYmFmMDIwYTRjMmJhMTVhMjQ3Y2U4YzYwYzA2YTQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9U
aWxlZExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTUzLDcgKzUzLDExIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFVwZGF0YWJsZVRpbGUgOiBwdWJsaWMgQ0NMYXllclRp
bGluZ0RhdGE6OlRpbGUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFVwZGF0YWJsZVRpbGUp
OwogcHVibGljOgotICAgIGV4cGxpY2l0IFVwZGF0YWJsZVRpbGUoUGFzc093blB0cjxMYXllclRl
eHR1cmVVcGRhdGVyOjpUZXh0dXJlPiB0ZXh0dXJlKSA6IG1fdGV4dHVyZSh0ZXh0dXJlKSB7IH0K
KyAgICBleHBsaWNpdCBVcGRhdGFibGVUaWxlKFBhc3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZT4gdGV4dHVyZSkKKyAgICAgICAgOiBtX3BhcnRpYWxVcGRhdGUoZmFsc2UpCisg
ICAgICAgICwgbV90ZXh0dXJlKHRleHR1cmUpCisgICAgeworICAgIH0KIAogICAgIExheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7
IH0KICAgICBNYW5hZ2VkVGV4dHVyZSogbWFuYWdlZFRleHR1cmUoKSB7IHJldHVybiBtX3RleHR1
cmUtPnRleHR1cmUoKTsgfQpAQCAtNjgsNiArNzIsNyBAQCBwdWJsaWM6CiAgICAgSW50UmVjdCBt
X2RpcnR5UmVjdDsKICAgICBJbnRSZWN0IG1fdXBkYXRlUmVjdDsKICAgICBJbnRSZWN0IG1fb3Bh
cXVlUmVjdDsKKyAgICBib29sIG1fcGFydGlhbFVwZGF0ZTsKIHByaXZhdGU6CiAgICAgT3duUHRy
PExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IG1fdGV4dHVyZTsKIH07CkBAIC0yMTAsNyAr
MjE1LDEwIEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlCiAgICAgICAgICAgICBpZiAocGFpbnRP
ZmZzZXQueSgpICsgZGVzdFJlY3QuaGVpZ2h0KCkgPiBtX3BhaW50UmVjdC5oZWlnaHQoKSkKICAg
ICAgICAgICAgICAgICBDUkFTSCgpOwogCi0gICAgICAgICAgICB1cGRhdGVyLmFwcGVuZCh0aWxl
LT50ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKKyAgICAgICAgICAgIGlmICh0aWxl
LT5tX3BhcnRpYWxVcGRhdGUpCisgICAgICAgICAgICAgICAgdXBkYXRlci5hcHBlbmRQYXJ0aWFs
KHRpbGUtPnRleHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIHVwZGF0ZXIuYXBwZW5kKHRpbGUtPnRleHR1cmUoKSwgc291cmNl
UmVjdCwgZGVzdFJlY3QpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0zNTEsMTIgKzM1OSw0MiBA
QCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJvdGVjdFRpbGVUZXh0dXJlcyhjb25zdCBJbnRS
ZWN0JiBsYXllclJlY3QpCiAgICAgfQogfQogCisvLyBSZXR1cm5zIHRydWUgaWYgdGlsZSBpcyBk
aXJ0eSBhbmQgb25seSBwYXJ0IG9mIGl0IG5lZWRzIHRvIGJlIHVwZGF0ZWQuCitib29sIFRpbGVk
TGF5ZXJDaHJvbWl1bTo6dGlsZU9ubHlOZWVkc1BhcnRpYWxVcGRhdGUoVXBkYXRhYmxlVGlsZSog
dGlsZSkKK3sKKyAgICBpZiAoIXRpbGUtPm1hbmFnZWRUZXh0dXJlKCktPmlzVmFsaWQobV90aWxl
ci0+dGlsZVNpemUoKSwgbV90ZXh0dXJlRm9ybWF0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgaWYgKCF0aWxlLT5pc0RpcnR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IHJldHVybiAhdGlsZS0+bV9kaXJ0eVJlY3QuY29udGFpbnMobV90aWxlci0+dGlsZVJlY3QodGls
ZSkpOworfQorCisvLyBEaXJ0eSB0aWxlcyB3aXRoIHZhbGlkIHRleHR1cmVzIG5lZWRzIGJ1ZmZl
cmVkIHVwZGF0ZSB0byBndWFyYW50ZWUgdGhhdAorLy8gd2UgZG9uJ3QgbW9kaWZ5IHRleHR1cmVz
IGN1cnJlbnRseSB1c2VkIGZvciBkcmF3aW5nIGJ5IHRoZSBpbXBsIHRocmVhZC4KK2Jvb2wgVGls
ZWRMYXllckNocm9taXVtOjp0aWxlTmVlZHNCdWZmZXJlZFVwZGF0ZShVcGRhdGFibGVUaWxlKiB0
aWxlKQoreworICAgIC8vIE5vIGltcGwgdGhyZWFkPy4KKyAgICBpZiAoIUNDUHJveHk6Omhhc0lt
cGxUaHJlYWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCF0aWxlLT5tYW5h
Z2VkVGV4dHVyZSgpLT5pc1ZhbGlkKG1fdGlsZXItPnRpbGVTaXplKCksIG1fdGV4dHVyZUZvcm1h
dCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghdGlsZS0+aXNEaXJ0eSgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBUaWxl
ZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wgaWRsZSwgaW50IGxlZnQs
IGludCB0b3AsIGludCByaWdodCwgaW50IGJvdHRvbSkKIHsKICAgICAvLyBSZXNldCBtX3VwZGF0
ZVJlY3QgZm9yIGFsbCB0aWxlcy4KICAgICBmb3IgKENDTGF5ZXJUaWxpbmdEYXRhOjpUaWxlTWFw
Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gbV90aWxlci0+dGlsZXMoKS5iZWdpbigpOyBpdGVyICE9
IG1fdGlsZXItPnRpbGVzKCkuZW5kKCk7ICsraXRlcikgewogICAgICAgICBVcGRhdGFibGVUaWxl
KiB0aWxlID0gc3RhdGljX2Nhc3Q8VXBkYXRhYmxlVGlsZSo+KGl0ZXItPnNlY29uZC5nZXQoKSk7
CiAgICAgICAgIHRpbGUtPm1fdXBkYXRlUmVjdCA9IEludFJlY3QoKTsKKyAgICAgICAgdGlsZS0+
bV9wYXJ0aWFsVXBkYXRlID0gZmFsc2U7CiAgICAgfQogCiAgICAgY3JlYXRlVGV4dHVyZVVwZGF0
ZXJJZk5lZWRlZCgpOwpAQCAtMzcyLDkgKzQxMCwxMSBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1
bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50
CiAgICAgICAgICAgICBpZiAoIXRpbGUpCiAgICAgICAgICAgICAgICAgdGlsZSA9IGNyZWF0ZVRp
bGUoaSwgaik7CiAKLSAgICAgICAgICAgIC8vIERvIHBvc3QgY29tbWl0IGRlbGV0aW9uIG9mIGN1
cnJlbnQgdGV4dHVyZSB3aGVuIHBhcnRpYWwgdGV4dHVyZQotICAgICAgICAgICAgLy8gdXBkYXRl
cyBhcmUgbm90IHVzZWQuCi0gICAgICAgICAgICBpZiAodGlsZS0+aXNEaXJ0eSgpICYmIGxheWVy
VHJlZUhvc3QoKSAmJiAhbGF5ZXJUcmVlSG9zdCgpLT5zZXR0aW5ncygpLnBhcnRpYWxUZXh0dXJl
VXBkYXRlcykKKyAgICAgICAgICAgIC8vIEZJWE1FOiBEZWNpZGUgaWYgcGFydGlhbCB1cGRhdGUg
c2hvdWxkIGJlIGFsbG93ZWQgYmFzZWQgb24gY29zdAorICAgICAgICAgICAgLy8gb2YgdXBkYXRl
LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzczNzYKKyAgICAgICAg
ICAgIGlmICh0aWxlT25seU5lZWRzUGFydGlhbFVwZGF0ZSh0aWxlKSAmJiBsYXllclRyZWVIb3N0
KCkgJiYgbGF5ZXJUcmVlSG9zdCgpLT5yZXF1ZXN0UGFydGlhbFRleHR1cmVVcGRhdGUoKSkKKyAg
ICAgICAgICAgICAgICB0aWxlLT5tX3BhcnRpYWxVcGRhdGUgPSB0cnVlOworICAgICAgICAgICAg
ZWxzZSBpZiAodGlsZU5lZWRzQnVmZmVyZWRVcGRhdGUodGlsZSkgJiYgbGF5ZXJUcmVlSG9zdCgp
KQogICAgICAgICAgICAgICAgIGxheWVyVHJlZUhvc3QoKS0+ZGVsZXRlVGV4dHVyZUFmdGVyQ29t
bWl0KHRpbGUtPm1hbmFnZWRUZXh0dXJlKCktPnN0ZWFsKCkpOwogCiAgICAgICAgICAgICBpZiAo
IXRpbGUtPm1hbmFnZWRUZXh0dXJlKCktPmlzVmFsaWQobV90aWxlci0+dGlsZVNpemUoKSwgbV90
ZXh0dXJlRm9ybWF0KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKaW5kZXggNDYxOTJmZTVk
MjU2ZTZlMjdlZmExZjZhZjkwYTc4ZDZkZjgyMDk4NC4uMmQ5OTk1MzY3YWQyNDM2YWZmYWZlNmRj
YzMyM2FmOTUzYWVkMzA3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKQEAgLTEwNyw2
ICsxMDcsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlVGlsZXJJZk5lZWRlZCgpOwogICAg
IHZvaWQgc2V0VGlsaW5nT3B0aW9uKFRpbGluZ09wdGlvbik7CiAKKyAgICBib29sIHRpbGVPbmx5
TmVlZHNQYXJ0aWFsVXBkYXRlKFVwZGF0YWJsZVRpbGUqKTsKKyAgICBib29sIHRpbGVOZWVkc0J1
ZmZlcmVkVXBkYXRlKFVwZGF0YWJsZVRpbGUqKTsKKwogICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRl
VGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50IHJpZ2h0LCBpbnQgYm90dG9t
KTsKICAgICBJbnRSZWN0IGlkbGVQYWludFJlY3QoY29uc3QgSW50UmVjdCYgdmlzaWJsZUxheWVy
UmVjdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IDcwYzljODIyYTgx
Yjc4ZDI5MjUyMDY3YzQ1ZWFjZmNiNjJiYTYyNTYuLjE1YTMwNzRlYmJlMmViMGUxNGJmYTI2YmJm
NDI5NjA0ZDFjNzU0YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtMzks
NiArMzksOCBAQAogI2luY2x1ZGUgImNjL0NDVGhyZWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NUaHJl
YWRQcm94eS5oIgogCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCiBuYW1lc3BhY2Ugewogc3RhdGlj
IGludCBudW1MYXllclRyZWVJbnN0YW5jZXM7CiB9CkBAIC03MSw2ICs3Myw3IEBAIENDTGF5ZXJU
cmVlSG9zdDo6Q0NMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdENsaWVudCogY2xpZW50LCBj
b25zdCBDQ1NldHRpbmdzCiAgICAgLCBtX21pblBhZ2VTY2FsZSgxKQogICAgICwgbV9tYXhQYWdl
U2NhbGUoMSkKICAgICAsIG1fdHJpZ2dlcklkbGVQYWludHModHJ1ZSkKKyAgICAsIG1fcGFydGlh
bFRleHR1cmVVcGRhdGVSZXF1ZXN0cygwKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5U
aHJlYWQoKSk7CiAgICAgbnVtTGF5ZXJUcmVlSW5zdGFuY2VzKys7CkBAIC0xMjAsNyArMTIzLDcg
QEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmluaXRpYWxpemVMYXllclJlbmRlcmVyKCkKICAgICBt
X3NldHRpbmdzLmFjY2VsZXJhdGVQYWludGluZyA9IG1fcHJveHktPmxheWVyUmVuZGVyZXJDYXBh
YmlsaXRpZXMoKS51c2luZ0FjY2VsZXJhdGVkUGFpbnRpbmc7CiAKICAgICAvLyBVcGRhdGUgbV9z
ZXR0aW5ncyBiYXNlZCBvbiBwYXJ0aWFsIHVwZGF0ZSBjYXBhYmlsaXR5LgotICAgIG1fc2V0dGlu
Z3MucGFydGlhbFRleHR1cmVVcGRhdGVzID0gbV9zZXR0aW5ncy5wYXJ0aWFsVGV4dHVyZVVwZGF0
ZXMgJiYgbV9wcm94eS0+cGFydGlhbFRleHR1cmVVcGRhdGVDYXBhYmlsaXR5KCk7CisgICAgbV9z
ZXR0aW5ncy5tYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMgPSBtaW4obV9zZXR0aW5ncy5tYXhQYXJ0
aWFsVGV4dHVyZVVwZGF0ZXMsIG1fcHJveHktPm1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcygpKTsK
IAogICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUo
VGV4dHVyZU1hbmFnZXI6OmhpZ2hMaW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSgpKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVNYW5h
Z2VyOjpyZWNsYWltTGltaXRCeXRlcyh2aWV3cG9ydFNpemUoKSksCkBAIC00MTUsNiArNDE4LDkg
QEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKiByb290
TGF5ZXIpCiAgICAgICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5z
Zm9ybXNBbmRWaXNpYmlsaXR5KHJvb3RMYXllciwgcm9vdExheWVyLCBpZGVudGl0eU1hdHJpeCwg
aWRlbnRpdHlNYXRyaXgsIG1fdXBkYXRlTGlzdCwgcm9vdFJlbmRlclN1cmZhY2UtPmxheWVyTGlz
dCgpLCBsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkubWF4VGV4dHVyZVNpemUpOwogICAgIH0K
IAorICAgIC8vIFJlc2V0IHBhcnRpYWwgdGV4dHVyZSB1cGRhdGUgcmVxdWVzdHMuCisgICAgbV9w
YXJ0aWFsVGV4dHVyZVVwZGF0ZVJlcXVlc3RzID0gMDsKKwogICAgIHJlc2VydmVUZXh0dXJlcygp
OwogCiAgICAgcGFpbnRMYXllckNvbnRlbnRzKG1fdXBkYXRlTGlzdCwgUGFpbnRWaXNpYmxlKTsK
QEAgLTYyMyw2ICs2MjksMTUgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnN0b3BSYXRlTGltaXRl
cihHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKICAgICB9CiB9CiAKK2Jvb2wgQ0NMYXllclRy
ZWVIb3N0OjpyZXF1ZXN0UGFydGlhbFRleHR1cmVVcGRhdGUoKQoreworICAgIGlmIChtX3BhcnRp
YWxUZXh0dXJlVXBkYXRlUmVxdWVzdHMgPj0gbV9zZXR0aW5ncy5tYXhQYXJ0aWFsVGV4dHVyZVVw
ZGF0ZXMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fcGFydGlhbFRleHR1cmVVcGRh
dGVSZXF1ZXN0cysrOworICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIENDTGF5ZXJUcmVlSG9z
dDo6ZGVsZXRlVGV4dHVyZUFmdGVyQ29tbWl0KFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRl
eHR1cmUpCiB7CiAgICAgbV9kZWxldGVUZXh0dXJlQWZ0ZXJDb21taXRMaXN0LmFwcGVuZCh0ZXh0
dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKaW5kZXggYzM4MTBhYjI3NWMzZDAxN2Nk
ZmQ3YzA4NDNiNGE3YzdmY2I5OTcwNC4uZTgyZjI5ODMwNDdlZmNiMTNhMDk5ZjlhZGI3NTJmMmIx
OGFlZjUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTMzLDYgKzMzLDcgQEAK
ICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uaCIKICNpbmNsdWRlICJjYy9DQ1By
b3h5LmgiCiAKKyNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBA
IC03NCw3ICs3NSw3IEBAIHN0cnVjdCBDQ1NldHRpbmdzIHsKICAgICAgICAgICAgICwgcmVmcmVz
aFJhdGUoMCkKICAgICAgICAgICAgICwgcGVyVGlsZVBhaW50aW5nKGZhbHNlKQogICAgICAgICAg
ICAgLCBwYXJ0aWFsU3dhcEVuYWJsZWQoZmFsc2UpCi0gICAgICAgICAgICAsIHBhcnRpYWxUZXh0
dXJlVXBkYXRlcyh0cnVlKSB7IH0KKyAgICAgICAgICAgICwgbWF4UGFydGlhbFRleHR1cmVVcGRh
dGVzKHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpIHsgfQogCiAgICAgYm9vbCBh
Y2NlbGVyYXRlUGFpbnRpbmc7CiAgICAgYm9vbCBjb21wb3NpdGVPZmZzY3JlZW47CkBAIC04Myw3
ICs4NCw3IEBAIHN0cnVjdCBDQ1NldHRpbmdzIHsKICAgICBkb3VibGUgcmVmcmVzaFJhdGU7CiAg
ICAgYm9vbCBwZXJUaWxlUGFpbnRpbmc7CiAgICAgYm9vbCBwYXJ0aWFsU3dhcEVuYWJsZWQ7Ci0g
ICAgYm9vbCBwYXJ0aWFsVGV4dHVyZVVwZGF0ZXM7CisgICAgc2l6ZV90IG1heFBhcnRpYWxUZXh0
dXJlVXBkYXRlczsKIH07CiAKIC8vIFByb3ZpZGVzIGluZm9ybWF0aW9uIG9uIGFuIEltcGwncyBy
ZW5kZXJpbmcgY2FwYWJpbGl0aWVzIGJhY2sgdG8gdGhlIENDTGF5ZXJUcmVlSG9zdApAQCAtMTky
LDYgKzE5Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXJ0UmF0ZUxpbWl0ZXIoR3JhcGhpY3ND
b250ZXh0M0QqKTsKICAgICB2b2lkIHN0b3BSYXRlTGltaXRlcihHcmFwaGljc0NvbnRleHQzRCop
OwogCisgICAgYm9vbCByZXF1ZXN0UGFydGlhbFRleHR1cmVVcGRhdGUoKTsKICAgICB2b2lkIGRl
bGV0ZVRleHR1cmVBZnRlckNvbW1pdChQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPik7CiAKIHBy
b3RlY3RlZDoKQEAgLTI0Myw2ICsyNDUsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV90cmlnZ2Vy
SWRsZVBhaW50czsKIAogICAgIFRleHR1cmVMaXN0IG1fZGVsZXRlVGV4dHVyZUFmdGVyQ29tbWl0
TGlzdDsKKyAgICBzaXplX3QgbV9wYXJ0aWFsVGV4dHVyZVVwZGF0ZVJlcXVlc3RzOwogfTsKIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NQcm94eS5oCmluZGV4IGEzYWE3MTYwNzFjMzQyYWI2OThlM2UwZTkzZDIyOTgyMzczZTc1
ZmEuLjQ0YWFjY2ViMGE3ZmY0NGM4OTYxOTRjZmI4ZDhiZmI1MGI0ZjE3OWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5
LmgKQEAgLTgwLDkgKzgwLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzdGFydCgpID0g
MDsgLy8gTXVzdCBiZSBjYWxsZWQgYmVmb3JlIHVzaW5nIHRoZSBwcm94eS4KICAgICB2aXJ0dWFs
IHZvaWQgc3RvcCgpID0gMDsgLy8gTXVzdCBiZSBjYWxsZWQgYmVmb3JlIGRlbGV0aW5nIHRoZSBw
cm94eS4KIAotICAgIC8vIFdoZXRoZXIgc3ViLXJlZ2lvbnMgb2YgdGV4dHVyZXMgY2FuIGJlIHVw
ZGF0ZWQgb3IgaWYgY29tcGxldGUgdGV4dHVyZQotICAgIC8vIHVwZGF0ZXMgYXJlIHJlcXVpcmVk
LgotICAgIHZpcnR1YWwgYm9vbCBwYXJ0aWFsVGV4dHVyZVVwZGF0ZUNhcGFiaWxpdHkoKSBjb25z
dCA9IDA7CisgICAgLy8gTWF4aW11bSBudW1iZXIgb2Ygc3ViLXJlZ2lvbiB0ZXh0dXJlIHVwZGF0
ZXMgc3VwcG9ydGVkIGZvciBlYWNoIGNvbW1pdC4KKyAgICB2aXJ0dWFsIHNpemVfdCBtYXhQYXJ0
aWFsVGV4dHVyZVVwZGF0ZXMoKSBjb25zdCA9IDA7CiAKICAgICAvLyBEZWJ1ZyBob29rcwogI2lm
bmRlZiBOREVCVUcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKaW5kZXgg
Y2I2OTZlZDE3N2RjNWViNDI5M2Q4ZDc5MDEyMWMxOGUwZjUyMzRhOS4uNmI2MjY0ZGNkNDQ3Nzky
MDcwZmFlMzhiYzUwMzJmY2Q2NmJhMjUyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJl
YWRQcm94eS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRh
dGVyLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBz
dGQ7CiB1c2luZyBuYW1lc3BhY2UgV1RGOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNzAs
NyArMTcxLDggQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0NvbW1pdCgpCiAgICAgICAg
IG1fbGF5ZXJUcmVlSG9zdC0+YmVnaW5Db21taXRPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0
SW1wbC5nZXQoKSk7CiAgICAgICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcihtX2xheWVyVHJl
ZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSk7CiAgICAgICAgIG1fbGF5ZXJU
cmVlSG9zdC0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhtX2xheWVyVHJlZUhvc3RJbXBsLT5j
b250ZXh0KCksIHVwZGF0ZXIpOwotICAgICAgICB3aGlsZSAodXBkYXRlci51cGRhdGUobV9sYXll
clRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCAxKSkgeyB9CisgICAgICAgIHVwZGF0ZXIudXBkYXRl
KG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgbnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6
bWF4KCkpOworICAgICAgICBBU1NFUlQoIXVwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CiAgICAg
ICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnNldFZpc2libGUobV9sYXllclRyZWVIb3N0LT52aXNp
YmxlKCkpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmZpbmlzaENvbW1pdE9uSW1wbFRocmVh
ZChtX2xheWVyVHJlZUhvc3RJbXBsLmdldCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJl
YWRQcm94eS5oCmluZGV4IGRhMWZlNDYxOTIxMWRlZGJkZDdlYTJkY2FhMzdjNjUzMjQ4ZmY0NjUu
LmE5NDQwNWYzZDkzZWNhMjA4ZGUyMGZkZjhiZGFjNjlmMDQ5N2YzNzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFk
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJjYy9D
Q0NvbXBsZXRpb25FdmVudC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIK
ICNpbmNsdWRlICJjYy9DQ1Byb3h5LmgiCisjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHd0
Zi9Pd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTUsNyArNTYsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFZpc2libGUoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lk
IHN0YXJ0KCk7CiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKLSAgICB2aXJ0dWFsIGJvb2wgcGFy
dGlhbFRleHR1cmVVcGRhdGVDYXBhYmlsaXR5KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAg
IHZpcnR1YWwgc2l6ZV90IG1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcygpIGNvbnN0IHsgcmV0dXJu
IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk7IH0KIAogICAgIC8vIENDTGF5ZXJU
cmVlSG9zdEltcGxDbGllbnQgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0dWFsIHZvaWQgb25Td2Fw
QnVmZmVyc0NvbXBsZXRlT25JbXBsVGhyZWFkKCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcAppbmRleCA4NzQ1YzRlYTBhNzEwYmRlMThl
ZGUxODIwZjMxNGZkYjhjYzg3MmFiLi42NmUwOGM4YmQ5M2YxODI2YTM5YjU1M2MyOTY1MGE4M2Fj
MDllOGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcApAQCAtNDgsNyArNDgs
NyBAQCBDQ1RleHR1cmVVcGRhdGVyOjp+Q0NUZXh0dXJlVXBkYXRlcigpCiB7CiB9CiAKLXZvaWQg
Q0NUZXh0dXJlVXBkYXRlcjo6YXBwZW5kKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRl
eHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0
KQordm9pZCBDQ1RleHR1cmVVcGRhdGVyOjphcHBlbmQoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYg
ZGVzdFJlY3QsIFZlY3RvcjxVcGRhdGVFbnRyeT4mIGVudHJpZXMpCiB7CiAgICAgQVNTRVJUKHRl
eHR1cmUpOwogCkBAIC01NiwyNCArNTYsNTAgQEAgdm9pZCBDQ1RleHR1cmVVcGRhdGVyOjphcHBl
bmQoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmUKICAg
ICBlbnRyeS5tX3RleHR1cmUgPSB0ZXh0dXJlOwogICAgIGVudHJ5Lm1fc291cmNlUmVjdCA9IHNv
dXJjZVJlY3Q7CiAgICAgZW50cnkubV9kZXN0UmVjdCA9IGRlc3RSZWN0OwotICAgIG1fZW50cmll
cy5hcHBlbmQoZW50cnkpOworICAgIGVudHJpZXMuYXBwZW5kKGVudHJ5KTsKK30KKwordm9pZCBD
Q1RleHR1cmVVcGRhdGVyOjphcHBlbmQoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4
dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3Qp
Cit7CisgICAgYXBwZW5kKHRleHR1cmUsIHNvdXJjZVJlY3QsIGRlc3RSZWN0LCBtX2VudHJpZXMp
OworfQorCit2b2lkIENDVGV4dHVyZVVwZGF0ZXI6OmFwcGVuZFBhcnRpYWwoTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29u
c3QgSW50UmVjdCYgZGVzdFJlY3QpCit7CisgICAgYXBwZW5kKHRleHR1cmUsIHNvdXJjZVJlY3Qs
IGRlc3RSZWN0LCBtX3BhcnRpYWxFbnRyaWVzKTsKIH0KIAogYm9vbCBDQ1RleHR1cmVVcGRhdGVy
OjpoYXNNb3JlVXBkYXRlcygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZW50cmllcy5zaXplKCk7
CisgICAgcmV0dXJuIG1fZW50cmllcy5zaXplKCkgfHwgbV9wYXJ0aWFsRW50cmllcy5zaXplKCk7
CiB9CiAKIGJvb2wgQ0NUZXh0dXJlVXBkYXRlcjo6dXBkYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0LCBzaXplX3QgY291bnQpCiB7CisgICAgc2l6ZV90IGluZGV4OwogICAgIHNpemVfdCBt
YXhJbmRleCA9IG1pbihtX2VudHJ5SW5kZXggKyBjb3VudCwgbV9lbnRyaWVzLnNpemUoKSk7Ci0g
ICAgZm9yICg7IG1fZW50cnlJbmRleCA8IG1heEluZGV4OyArK21fZW50cnlJbmRleCkgewotICAg
ICAgICBVcGRhdGVFbnRyeSYgZW50cnkgPSBtX2VudHJpZXNbbV9lbnRyeUluZGV4XTsKKyAgICBm
b3IgKGluZGV4ID0gbV9lbnRyeUluZGV4OyBpbmRleCA8IG1heEluZGV4OyArK2luZGV4KSB7Cisg
ICAgICAgIFVwZGF0ZUVudHJ5JiBlbnRyeSA9IG1fZW50cmllc1tpbmRleF07CiAgICAgICAgIGVu
dHJ5Lm1fdGV4dHVyZS0+dXBkYXRlUmVjdChjb250ZXh0LCBtX2FsbG9jYXRvciwgZW50cnkubV9z
b3VyY2VSZWN0LCBlbnRyeS5tX2Rlc3RSZWN0KTsKICAgICB9CiAKLSAgICBpZiAobWF4SW5kZXgg
PCBtX2VudHJpZXMuc2l6ZSgpKQorICAgIGJvb2wgbW9yZVVwZGF0ZXMgPSBtYXhJbmRleCA8IG1f
ZW50cmllcy5zaXplKCk7CisKKyAgICBBU1NFUlQobV9wYXJ0aWFsRW50cmllcy5zaXplKCkgPD0g
Y291bnQpOworICAgIC8vIE1ha2Ugc3VyZSB0aGUgbnVtYmVyIG9mIHVwZGF0ZXMgaW5jbHVkaW5n
IHBhcnRpYWwgdXBkYXRlcyBhcmUgbm90IG1vcmUKKyAgICAvLyB0aGFuIHxjb3VudHwuCisgICAg
aWYgKChjb3VudCAtIChpbmRleCAtIG1fZW50cnlJbmRleCkpIDwgbV9wYXJ0aWFsRW50cmllcy5z
aXplKCkpCisgICAgICAgIG1vcmVVcGRhdGVzID0gdHJ1ZTsKKworICAgIGlmIChtb3JlVXBkYXRl
cykgeworICAgICAgICBtX2VudHJ5SW5kZXggPSBpbmRleDsKICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorCisgICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgbV9wYXJ0aWFsRW50cmllcy5z
aXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgVXBkYXRlRW50cnkmIGVudHJ5ID0gbV9wYXJ0aWFs
RW50cmllc1tpbmRleF07CisgICAgICAgIGVudHJ5Lm1fdGV4dHVyZS0+dXBkYXRlUmVjdChjb250
ZXh0LCBtX2FsbG9jYXRvciwgZW50cnkubV9zb3VyY2VSZWN0LCBlbnRyeS5tX2Rlc3RSZWN0KTsK
KyAgICB9CiAKICAgICAvLyBJZiBubyBlbnRyaWVzIGxlZnQgdG8gcHJvY2VzcywgYXV0by1jbGVh
ci4KICAgICBjbGVhcigpOwpAQCAtODQsNiArMTEwLDcgQEAgdm9pZCBDQ1RleHR1cmVVcGRhdGVy
OjpjbGVhcigpCiB7CiAgICAgbV9lbnRyeUluZGV4ID0gMDsKICAgICBtX2VudHJpZXMuY2xlYXIo
KTsKKyAgICBtX3BhcnRpYWxFbnRyaWVzLmNsZWFyKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4
dHVyZVVwZGF0ZXIuaAppbmRleCBiZjc5YWM5YzJlMjJlZmM1ZWRhOWE2NDgyOWUyZWZjY2VjMTVi
YjMwLi5kYmI1MmM5YmFkMjA0MzRkZGJmNzRjNjI4YTQ0NDVlOWQ3ZTk4N2QyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVV
cGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUZXh0dXJlVXBkYXRlci5oCkBAIC00MSw2ICs0MSw3IEBAIHB1YmxpYzoKICAgICB+Q0NU
ZXh0dXJlVXBkYXRlcigpOwogCiAgICAgdm9pZCBhcHBlbmQoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RS
ZWN0KTsKKyAgICB2b2lkIGFwcGVuZFBhcnRpYWwoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVy
ZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsK
IAogICAgIGJvb2wgaGFzTW9yZVVwZGF0ZXMoKSBjb25zdDsKIApAQCAtNTgsOSArNTksMTIgQEAg
cHJpdmF0ZToKICAgICAgICAgSW50UmVjdCBtX2Rlc3RSZWN0OwogICAgIH07CiAKKyAgICBzdGF0
aWMgdm9pZCBhcHBlbmQoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LCBWZWN0b3I8VXBkYXRlRW50
cnk+Jik7CisKICAgICBUZXh0dXJlQWxsb2NhdG9yKiBtX2FsbG9jYXRvcjsKICAgICBzaXplX3Qg
bV9lbnRyeUluZGV4OwogICAgIFZlY3RvcjxVcGRhdGVFbnRyeT4gbV9lbnRyaWVzOworICAgIFZl
Y3RvcjxVcGRhdGVFbnRyeT4gbV9wYXJ0aWFsRW50cmllczsKIH07CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJv
eHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5jcHAKaW5kZXggZmQ2M2JkNWMwYTNkODJjMTI5YmJiNThlMjc2YTEwMjgwMDYy
ZDUwZS4uOGNhODUyZGRhNmM4NmZjYTcwMWU0N2MzZDRhMWUwNTZiY2RjMDNmNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTQzLDcgKzQzLDkgQEAgdXNpbmcgbmFtZXNwYWNlIFdU
RjsKIAogbmFtZXNwYWNlIHsKIAotc3RhdGljIGNvbnN0IHNpemVfdCB0ZXh0dXJlVXBkYXRlc1Bl
ckZyYW1lID0gMDsKKy8vIE51bWJlciBvZiB0ZXh0dXJlcyB0byB1cGRhdGUgd2l0aCBlYWNoIGNh
bGwgdG8KKy8vIHNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMoKS4KK3N0YXRpYyBj
b25zdCBzaXplX3QgdGV4dHVyZVVwZGF0ZXNQZXJGcmFtZSA9IDU7CiAKIH0gLy8gYW5vbnltb3Vz
IG5hbWVzcGFjZQogCkBAIC00NjIsNyArNDY0LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpzY2hl
ZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKCkKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NU
aHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcyIsIHRoaXMsIDAp
OwogICAgIEFTU0VSVChtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCk7Ci0gICAg
bV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQtPnVwZGF0ZShtX2xheWVyVHJlZUhv
c3RJbXBsLT5jb250ZXh0KCksIHRleHR1cmVVcGRhdGVzUGVyRnJhbWUgPiAwID8gdGV4dHVyZVVw
ZGF0ZXNQZXJGcmFtZSA6IDk5OTk5KTsKKyAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1w
bFRocmVhZC0+dXBkYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgdGV4dHVyZVVw
ZGF0ZXNQZXJGcmFtZSk7CiB9CiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9u
Q29tbWl0KCkKQEAgLTU5NSw5ICs1OTcsOSBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmxheWVyVHJl
ZUhvc3RDbG9zZWRPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpbwogICAg
IGNvbXBsZXRpb24tPnNpZ25hbCgpOwogfQogCi1ib29sIENDVGhyZWFkUHJveHk6OnBhcnRpYWxU
ZXh0dXJlVXBkYXRlQ2FwYWJpbGl0eSgpIGNvbnN0CitzaXplX3QgQ0NUaHJlYWRQcm94eTo6bWF4
UGFydGlhbFRleHR1cmVVcGRhdGVzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIXRleHR1cmVVcGRh
dGVzUGVyRnJhbWU7CisgICAgcmV0dXJuIHRleHR1cmVVcGRhdGVzUGVyRnJhbWU7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAppbmRleCBiNjVhNmM2
MDRlMjkyM2ZjOGYwOWNmOWFjN2Y1NTk2ZDBhYjBjZGQwLi5kMzA0YWNkOTZjYWYxMmI4MWRhMmJj
MDAyN2RmNDQ3Zjc1MjgwZjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCkBAIC02Myw3ICs2
Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZShib29sKTsKICAgICB2
aXJ0dWFsIHZvaWQgc3RhcnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpOwotICAgIHZpcnR1
YWwgYm9vbCBwYXJ0aWFsVGV4dHVyZVVwZGF0ZUNhcGFiaWxpdHkoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIHNpemVfdCBtYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMoKSBjb25zdDsKIAogICAgIC8vIEND
TGF5ZXJUcmVlSG9zdEltcGxDbGllbnQgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0dWFsIHZvaWQg
b25Td2FwQnVmZmVyc0NvbXBsZXRlT25JbXBsVGhyZWFkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAppbmRleCBlZGNjMGI1
NjA2MjFjYzQ2MWZjZmRmZTFmYjExNTQ4YTAzNjUyM2FlLi5mYzQxNGY3Mzk3MTQ1ODNhZGExYTYz
NTZjYTQyYTA1OGRmMjM0NTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKQEAgLTExNDcsMTYgKzExNDcsMTUgQEAgcHVi
bGljOgogY2xhc3MgQ0NMYXllclRyZWVIb3N0VGVzdEF0b21pY0NvbW1pdCA6IHB1YmxpYyBDQ0xh
eWVyVHJlZUhvc3RUZXN0IHsKIHB1YmxpYzoKICAgICBDQ0xheWVyVHJlZUhvc3RUZXN0QXRvbWlj
Q29tbWl0KCkKLSAgICAgICAgOiBtX3VwZGF0ZUNoZWNrTGF5ZXIoQ29udGVudExheWVyQ2hyb21p
dW1XaXRoVXBkYXRlVHJhY2tpbmc6OmNyZWF0ZSgmbV9kZWxlZ2F0ZSkpCi0gICAgICAgICwgbV9u
dW1Db21taXRzKDApCisgICAgICAgIDogbV9sYXllcihDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhV
cGRhdGVUcmFja2luZzo6Y3JlYXRlKCZtX2RlbGVnYXRlKSkKICAgICB7CiAgICAgICAgIC8vIE1h
a2Ugc3VyZSBwYXJ0aWFsIHRleHR1cmUgdXBkYXRlcyBhcmUgdHVybmVkIG9mZi4KLSAgICAgICAg
bV9zZXR0aW5ncy5wYXJ0aWFsVGV4dHVyZVVwZGF0ZXMgPSBmYWxzZTsKKyAgICAgICAgbV9zZXR0
aW5ncy5tYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMgPSAwOwogICAgIH0KIAogICAgIHZpcnR1YWwg
dm9pZCBiZWdpblRlc3QoKQogICAgIHsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRSb290
TGF5ZXIobV91cGRhdGVDaGVja0xheWVyKTsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRS
b290TGF5ZXIobV9sYXllcik7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRT
aXplKEludFNpemUoMTAsIDEwKSk7CiAKICAgICAgICAgcG9zdFNldE5lZWRzQ29tbWl0VG9NYWlu
VGhyZWFkKCk7CkBAIC0xMTczLDcgKzExNzIsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBFWFBF
Q1RfRVEoMSwgY29udGV4dC0+bnVtVGV4dHVyZXMoKSk7CiAgICAgICAgICAgICAvLyBOdW1iZXIg
b2YgdGV4dHVyZXMgdXNlZCBmb3IgY29tbWl0IHNob3VsZCBiZSBvbmUuCiAgICAgICAgICAgICBF
WFBFQ1RfRVEoMSwgY29udGV4dC0+bnVtVXNlZFRleHR1cmVzKCkpOwotICAgICAgICAgICAgLy8g
VmVyaWZ5IHVzZWQgdGV4dHVyZSBpcyBjb3JyZWN0LgorICAgICAgICAgICAgLy8gVmVyaWZ5IHRo
YXQgdXNlZCB0ZXh0dXJlIGlzIGNvcnJlY3QuCiAgICAgICAgICAgICBFWFBFQ1RfVFJVRShjb250
ZXh0LT51c2VkVGV4dHVyZShjb250ZXh0LT50ZXh0dXJlKDApKSk7CiAKICAgICAgICAgICAgIGNv
bnRleHQtPnJlc2V0VXNlZFRleHR1cmVzKCk7CkBAIC0xMjE0LDcgKzEyMTMsNyBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkKICAgICB7Ci0gICAgICAgIG1fdXBkYXRlQ2hl
Y2tMYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7CisgICAgICAgIG1fbGF5ZXItPnNldE5lZWRzRGlz
cGxheSgpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBhZnRlclRlc3QoKQpAQCAtMTIyMyw4
ICsxMjIyLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIE1vY2tDb250ZW50TGF5ZXJEZWxl
Z2F0ZSBtX2RlbGVnYXRlOwotICAgIFJlZlB0cjxDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRh
dGVUcmFja2luZz4gbV91cGRhdGVDaGVja0xheWVyOwotICAgIGludCBtX251bUNvbW1pdHM7Cisg
ICAgUmVmUHRyPENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nPiBtX2xheWVy
OwogfTsKIAogVEVTVF9GKENDTGF5ZXJUcmVlSG9zdFRlc3RBdG9taWNDb21taXQsIHJ1bk11bHRp
VGhyZWFkKQpAQCAtMTIzMiw2ICsxMjMwLDEzMiBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0VGVz
dEF0b21pY0NvbW1pdCwgcnVuTXVsdGlUaHJlYWQpCiAgICAgcnVuVGVzdCh0cnVlKTsKIH0KIAor
Y2xhc3MgQ0NMYXllclRyZWVIb3N0VGVzdEF0b21pY0NvbW1pdFdpdGhQYXJ0aWFsVXBkYXRlIDog
cHVibGljIENDTGF5ZXJUcmVlSG9zdFRlc3QgeworcHVibGljOgorICAgIENDTGF5ZXJUcmVlSG9z
dFRlc3RBdG9taWNDb21taXRXaXRoUGFydGlhbFVwZGF0ZSgpCisgICAgICAgIDogbV9wYXJlbnQo
Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OmNyZWF0ZSgmbV9kZWxlZ2F0
ZSkpCisgICAgICAgICwgbV9jaGlsZChDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFj
a2luZzo6Y3JlYXRlKCZtX2RlbGVnYXRlKSkKKyAgICAgICAgLCBtX251bUNvbW1pdHMoMCkKKyAg
ICB7CisgICAgICAgIC8vIEFsbG93IG9uZSBwYXJ0aWFsIHRleHR1cmUgdXBkYXRlLgorICAgICAg
ICBtX3NldHRpbmdzLm1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcyA9IDE7CisgICAgfQorCisgICAg
dmlydHVhbCB2b2lkIGJlZ2luVGVzdCgpCisgICAgeworICAgICAgICBtX2xheWVyVHJlZUhvc3Qt
PnNldFJvb3RMYXllcihtX3BhcmVudCk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Vmll
d3BvcnRTaXplKEludFNpemUoMTAsIDEwKSk7CisgICAgICAgIG1fcGFyZW50LT5hZGRDaGlsZCht
X2NoaWxkKTsKKyAgICAgICAgbV9jaGlsZC0+c2V0T3BhY2l0eSgwLjUpOworICAgICAgICBtX2No
aWxkLT5zZXRCb3VuZHMoSW50U2l6ZSgyMCwgMjApKTsKKworICAgICAgICBwb3N0U2V0TmVlZHND
b21taXRUb01haW5UaHJlYWQoKTsKKyAgICAgICAgcG9zdFNldE5lZWRzUmVkcmF3VG9NYWluVGhy
ZWFkKCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGNvbW1pdENvbXBsZXRlT25DQ1RocmVh
ZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKQorICAgIHsKKyAgICAgICAgQ29tcG9zaXRvckZh
a2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhUZXh0dXJlVHJhY2tpbmcqIGNvbnRleHQgPSBzdGF0
aWNfY2FzdDxDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEV2l0aFRleHR1cmVUcmFj
a2luZyo+KEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0cmFjdFdlYkdyYXBoaWNzQ29udGV4
dDNEKGltcGwtPmNvbnRleHQoKSkpOworCisgICAgICAgIHN3aXRjaCAoaW1wbC0+ZnJhbWVOdW1i
ZXIoKSkgeworICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICAvLyBOdW1iZXIgb2YgdGV4dHVy
ZXMgc2hvdWxkIGJlIHR3by4KKyAgICAgICAgICAgIEVYUEVDVF9FUSgyLCBjb250ZXh0LT5udW1U
ZXh0dXJlcygpKTsKKyAgICAgICAgICAgIC8vIE51bWJlciBvZiB0ZXh0dXJlcyB1c2VkIGZvciBj
b21taXQgc2hvdWxkIGJlIHR3by4KKyAgICAgICAgICAgIEVYUEVDVF9FUSgyLCBjb250ZXh0LT5u
dW1Vc2VkVGV4dHVyZXMoKSk7CisgICAgICAgICAgICAvLyBWZXJpZnkgdGhhdCB1c2VkIHRleHR1
cmVzIGFyZSBjb3JyZWN0LgorICAgICAgICAgICAgRVhQRUNUX1RSVUUoY29udGV4dC0+dXNlZFRl
eHR1cmUoY29udGV4dC0+dGV4dHVyZSgwKSkpOworICAgICAgICAgICAgRVhQRUNUX1RSVUUoY29u
dGV4dC0+dXNlZFRleHR1cmUoY29udGV4dC0+dGV4dHVyZSgxKSkpOworCisgICAgICAgICAgICBj
b250ZXh0LT5yZXNldFVzZWRUZXh0dXJlcygpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgMToKKyAgICAgICAgICAgIC8vIE51bWJlciBvZiB0ZXh0dXJlcyBzaG91bGQgYmUgZm91
ciBhcyB0aGUgZmlyc3QgdHdvCisgICAgICAgICAgICAvLyB0ZXh0dXJlcyBhcmUgdXNlZCBieSB0
aGUgaW1wbCB0aHJlYWQuCisgICAgICAgICAgICBFWFBFQ1RfRVEoNCwgY29udGV4dC0+bnVtVGV4
dHVyZXMoKSk7CisgICAgICAgICAgICAvLyBOdW1iZXIgb2YgdGV4dHVyZXMgdXNlZCBmb3IgY29t
bWl0IHNob3VsZCBzdGlsbCBiZSB0d28uCisgICAgICAgICAgICBFWFBFQ1RfRVEoMiwgY29udGV4
dC0+bnVtVXNlZFRleHR1cmVzKCkpOworICAgICAgICAgICAgLy8gRmlyc3QgdHdvIHRleHR1cmVz
IHNob3VsZCBub3QgaGF2ZSBiZWVuIHVzZWQuCisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UoY29u
dGV4dC0+dXNlZFRleHR1cmUoY29udGV4dC0+dGV4dHVyZSgwKSkpOworICAgICAgICAgICAgRVhQ
RUNUX0ZBTFNFKGNvbnRleHQtPnVzZWRUZXh0dXJlKGNvbnRleHQtPnRleHR1cmUoMSkpKTsKKyAg
ICAgICAgICAgIC8vIE5ldyB0ZXh0dXJlcyBzaG91bGQgaGF2ZSBiZWVuIHVzZWQuCisgICAgICAg
ICAgICBFWFBFQ1RfVFJVRShjb250ZXh0LT51c2VkVGV4dHVyZShjb250ZXh0LT50ZXh0dXJlKDIp
KSk7CisgICAgICAgICAgICBFWFBFQ1RfVFJVRShjb250ZXh0LT51c2VkVGV4dHVyZShjb250ZXh0
LT50ZXh0dXJlKDMpKSk7CisKKyAgICAgICAgICAgIGNvbnRleHQtPnJlc2V0VXNlZFRleHR1cmVz
KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgLy8g
TnVtYmVyIG9mIHRleHR1cmVzIHNob3VsZCBiZSB0aHJlZSBhcyB3ZSBhbGxvdyBvbmUKKyAgICAg
ICAgICAgIC8vIHBhcnRpYWwgdXBkYXRlIGFuZCB0aGUgZmlyc3QgdHdvIHRleHR1cmVzIGFyZSB1
c2VkIGJ5CisgICAgICAgICAgICAvLyB0aGUgaW1wbCB0aHJlYWQuCisgICAgICAgICAgICBFWFBF
Q1RfRVEoMywgY29udGV4dC0+bnVtVGV4dHVyZXMoKSk7CisgICAgICAgICAgICAvLyBOdW1iZXIg
b2YgdGV4dHVyZXMgdXNlZCBmb3IgY29tbWl0IHNob3VsZCBzdGlsbCBiZSB0d28uCisgICAgICAg
ICAgICBFWFBFQ1RfRVEoMiwgY29udGV4dC0+bnVtVXNlZFRleHR1cmVzKCkpOworICAgICAgICAg
ICAgLy8gRmlyc3QgdGV4dHVyZSBzaG91bGQgbm90IGhhdmUgYmVlbiB1c2VkLgorICAgICAgICAg
ICAgRVhQRUNUX0ZBTFNFKGNvbnRleHQtPnVzZWRUZXh0dXJlKGNvbnRleHQtPnRleHR1cmUoMCkp
KTsKKyAgICAgICAgICAgIC8vIFNlY29uZCB0ZXh0dXJlIHNob3VsZCBoYXZlIGJlZW4gdXNlZC4K
KyAgICAgICAgICAgIEVYUEVDVF9UUlVFKGNvbnRleHQtPnVzZWRUZXh0dXJlKGNvbnRleHQtPnRl
eHR1cmUoMSkpKTsKKyAgICAgICAgICAgIC8vIE5ldyB0ZXh0dXJlcyBzaG91bGQgaGF2ZSBiZWVu
IHVzZWQuCisgICAgICAgICAgICBFWFBFQ1RfVFJVRShjb250ZXh0LT51c2VkVGV4dHVyZShjb250
ZXh0LT50ZXh0dXJlKDIpKSk7CisKKyAgICAgICAgICAgIGNvbnRleHQtPnJlc2V0VXNlZFRleHR1
cmVzKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVI
b3N0SW1wbCogaW1wbCkKKyAgICB7CisgICAgICAgIENvbXBvc2l0b3JGYWtlV2ViR3JhcGhpY3ND
b250ZXh0M0RXaXRoVGV4dHVyZVRyYWNraW5nKiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Q29tcG9z
aXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhUZXh0dXJlVHJhY2tpbmcqPihHcmFwaGlj
c0NvbnRleHQzRFByaXZhdGU6OmV4dHJhY3RXZWJHcmFwaGljc0NvbnRleHQzRChpbXBsLT5jb250
ZXh0KCkpKTsKKworICAgICAgICAvLyBOdW1iZXIgb2YgdGV4dHVyZXMgdXNlZCBmb3IgZHJhd2lu
ZyBzaG91bGQgYWx3YXlzIGJlIHR3by4KKyAgICAgICAgRVhQRUNUX0VRKDIsIGNvbnRleHQtPm51
bVVzZWRUZXh0dXJlcygpKTsKKworICAgICAgICBpZiAoaW1wbC0+ZnJhbWVOdW1iZXIoKSA8IDMp
IHsKKyAgICAgICAgICAgIGNvbnRleHQtPnJlc2V0VXNlZFRleHR1cmVzKCk7CisgICAgICAgICAg
ICBwb3N0U2V0TmVlZHNBbmltYXRlQW5kQ29tbWl0VG9NYWluVGhyZWFkKCk7CisgICAgICAgICAg
ICBwb3N0U2V0TmVlZHNSZWRyYXdUb01haW5UaHJlYWQoKTsKKyAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICBlbmRUZXN0KCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGxheW91dCgpCisg
ICAgeworICAgICAgICBzd2l0Y2ggKG1fbnVtQ29tbWl0cysrKSB7CisgICAgICAgIGNhc2UgMDoK
KyAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgbV9wYXJlbnQtPnNldE5lZWRzRGlzcGxheSgp
OworICAgICAgICAgICAgbV9jaGlsZC0+c2V0TmVlZHNEaXNwbGF5KCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgLy8gRGFtYWdlIHBhcnQgb2YgbGF5
ZXJzLgorICAgICAgICAgICAgbV9wYXJlbnQtPnNldE5lZWRzRGlzcGxheVJlY3QoRmxvYXRSZWN0
KDAsIDAsIDUsIDUpKTsKKyAgICAgICAgICAgIG1fY2hpbGQtPnNldE5lZWRzRGlzcGxheVJlY3Qo
RmxvYXRSZWN0KDAsIDAsIDUsIDUpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBhZnRlclRlc3QoKQorICAg
IHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgTW9ja0NvbnRlbnRMYXllckRlbGVnYXRlIG1fZGVs
ZWdhdGU7CisgICAgUmVmUHRyPENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5n
PiBtX3BhcmVudDsKKyAgICBSZWZQdHI8Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJh
Y2tpbmc+IG1fY2hpbGQ7CisgICAgaW50IG1fbnVtQ29tbWl0czsKK307CisKK1RFU1RfRihDQ0xh
eWVyVHJlZUhvc3RUZXN0QXRvbWljQ29tbWl0V2l0aFBhcnRpYWxVcGRhdGUsIHJ1bk11bHRpVGhy
ZWFkKQoreworICAgIHJ1blRlc3QodHJ1ZSk7Cit9CisKICNkZWZpbmUgRVhQRUNUX0VRX1JFQ1Qo
YSwgYikgXAogICAgIEVYUEVDVF9FUShhLngoKSwgYi54KCkpOyBcCiAgICAgRVhQRUNUX0VRKGEu
eSgpLCBiLnkoKSk7IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
VGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IDYwNjlmZDE4MTM4OGJiNTQ2OWQ5YjYx
M2Y4Yzc1M2Q2YTViZmI4OTkuLmZjZDM4NzhhNjZhNjNiOGY5NjA2Yjk1NDNhZjcxMTI2OTIxYzVl
NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNo
cm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExh
eWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtNjAsMTMgKzYwLDI0IEBAIGNsYXNzIEZha2VMYXllclRl
eHR1cmVVcGRhdGVyIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXIgewogcHVibGljOgogICAg
IGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CiAg
ICAgcHVibGljOgotICAgICAgICBUZXh0dXJlKFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRl
eHR1cmUpIDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJlKSB7IH0KKyAgICAg
ICAgVGV4dHVyZShGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlciogbGF5ZXIsIFBhc3NPd25QdHI8TWFu
YWdlZFRleHR1cmU+IHRleHR1cmUpCisgICAgICAgICAgICA6IExheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmUodGV4dHVyZSkKKyAgICAgICAgICAgICwgbV9sYXllcihsYXllcikKKyAgICAgICAg
eworICAgICAgICB9CiAgICAgICAgIHZpcnR1YWwgflRleHR1cmUoKSB7IH0KIAotICAgICAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0
b3IqLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYpIHsgfQorICAgICAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBj
b25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYpIHsgbV9sYXllci0+dXBkYXRlUmVjdCgpOyB9
CisKKyAgICBwcml2YXRlOgorICAgICAgICBGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlciogbV9sYXll
cjsKICAgICB9OwogCi0gICAgRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKSA6IG1fcHJlcGFyZUNv
dW50KDApIHsgfQorICAgIEZha2VMYXllclRleHR1cmVVcGRhdGVyKCkKKyAgICAgICAgOiBtX3By
ZXBhcmVDb3VudCgwKQorICAgICAgICAsIG1fdXBkYXRlQ291bnQoMCkKKyAgICB7CisgICAgfQog
ICAgIHZpcnR1YWwgfkZha2VMYXllclRleHR1cmVVcGRhdGVyKCkgeyB9CiAKICAgICAvLyBTZXRz
IHRoZSByZWN0IHRvIGludmFsaWRhdGUgZHVyaW5nIHRoZSBuZXh0IGNhbGwgdG8gcHJlcGFyZVRv
VXBkYXRlKCkuIEFmdGVyIHRoZSBuZXh0CkBAIC03NywxNyArODgsMjMgQEAgcHVibGljOgogICAg
IGludCBwcmVwYXJlQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3ByZXBhcmVDb3VudDsgfQogICAg
IHZvaWQgY2xlYXJQcmVwYXJlQ291bnQoKSB7IG1fcHJlcGFyZUNvdW50ID0gMDsgfQogCisgICAg
Ly8gTnVtYmVyIG9mIHRpbWVzIHVwZGF0ZVJlY3QgaGFzIGJlZW4gaW52b2tlZC4KKyAgICBpbnQg
dXBkYXRlQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3VwZGF0ZUNvdW50OyB9CisgICAgdm9pZCBj
bGVhclVwZGF0ZUNvdW50KCkgeyBtX3VwZGF0ZUNvdW50ID0gMDsgfQorICAgIHZvaWQgdXBkYXRl
UmVjdCgpIHsgbV91cGRhdGVDb3VudCsrOyB9CisKICAgICB2b2lkIHNldE9wYXF1ZVBhaW50UmVj
dChjb25zdCBJbnRSZWN0JiBvcGFxdWVQYWludFJlY3QpIHsgbV9vcGFxdWVQYWludFJlY3QgPSBv
cGFxdWVQYWludFJlY3Q7IH0KIAogICAgIC8vIExhc3QgcmVjdCBwYXNzZWQgdG8gcHJlcGFyZVRv
VXBkYXRlKCkuCiAgICAgY29uc3QgSW50UmVjdCYgbGFzdFVwZGF0ZVJlY3QoKSAgY29uc3QgeyBy
ZXR1cm4gbV9sYXN0VXBkYXRlUmVjdDsgfQogCi0gICAgdmlydHVhbCBQYXNzT3duUHRyPExheWVy
VGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4dHVyZU1hbmFnZXIqIG1h
bmFnZXIpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBUZXh0dXJlKE1hbmFnZWRUZXh0dXJlOjpjcmVh
dGUobWFuYWdlcikpKTsgfQorICAgIHZpcnR1YWwgUGFzc093blB0cjxMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKiBtYW5hZ2VyKSB7IHJl
dHVybiBhZG9wdFB0cihuZXcgVGV4dHVyZSh0aGlzLCBNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKG1h
bmFnZXIpKSk7IH0KICAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1hdCBzYW1wbGVkVGV4ZWxG
b3JtYXQoR0MzRGVudW0pIHsgcmV0dXJuIFNhbXBsZWRUZXhlbEZvcm1hdFJHQkE7IH0KICAgICB2
aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBj
b25zdCBJbnRTaXplJiwgaW50LCBmbG9hdCwgSW50UmVjdCogcmVzdWx0aW5nT3BhcXVlUmVjdCk7
CiAKIHByaXZhdGU6CiAgICAgaW50IG1fcHJlcGFyZUNvdW50OworICAgIGludCBtX3VwZGF0ZUNv
dW50OwogICAgIEludFJlY3QgbV9yZWN0VG9JbnZhbGlkYXRlOwogICAgIEludFJlY3QgbV9sYXN0
VXBkYXRlUmVjdDsKICAgICBJbnRSZWN0IG1fb3BhcXVlUGFpbnRSZWN0OwpAQCAtMTU1LDggKzE3
Miw2IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0
ZVRleHR1cmVVcGRhdGVyKGNvbnN0IENDTGF5ZXJUcmVlSG9zdCopIHsgfQotCiAgICAgdmlydHVh
bCBMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlcigpIGNvbnN0CiAgICAgewogICAg
ICAgICByZXR1cm4gbV9mYWtlVGV4dHVyZVVwZGF0ZXIuZ2V0KCk7CkBAIC01NzksNCArNTk0LDc1
IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcmVzaXplVG9TbWFsbGVyKQogICAgIGxh
eWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDIwMCwgMjAwKSk7CiB9CiAKK1RFU1Qo
VGlsZWRMYXllckNocm9taXVtVGVzdCwgcGFydGlhbFVwZGF0ZXMpCit7CisgICAgQ0NTZXR0aW5n
cyBzZXR0aW5nczsKKyAgICBzZXR0aW5ncy5tYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMgPSA0Owor
ICAgIC8vIEluaXRpYWxpemUgd2l0aG91dCB0aHJlYWRpbmcgc3VwcG9ydC4KKyAgICBXZWJLaXQ6
OldlYkNvbXBvc2l0b3I6OmluaXRpYWxpemUoMCk7CisgICAgRmFrZUNDTGF5ZXJUcmVlSG9zdENs
aWVudCBmYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50OworICAgIFJlZlB0cjxDQ0xheWVyVHJlZUhv
c3Q+IGNjTGF5ZXJUcmVlSG9zdCA9IENDTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCZmYWtlQ0NMYXll
clRyZWVIb3N0Q2xpZW50LCBzZXR0aW5ncyk7CisKKyAgICAvLyBDcmVhdGUgb25lIDUwMCB4IDMw
MCB0aWxlZCBsYXllci4KKyAgICBJbnRTaXplIGNvbnRlbnRCb3VuZHMoMzAwLCAyMDApOworICAg
IEludFJlY3QgY29udGVudFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgY29udGVudEJvdW5kcyk7CisK
KyAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFn
ZXI6OmNyZWF0ZSg2MCoxMDI0KjEwMjQsIDYwKjEwMjQqMTAyNCwgMTAyNCk7CisgICAgUmVmUHRy
PEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExh
eWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKKyAgICBsYXllci0+c2V0Qm91bmRz
KGNvbnRlbnRCb3VuZHMpOworICAgIGxheWVyLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KDE1MCwg
MTUwKSk7CisgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KGNvbnRlbnRSZWN0KTsKKworICAgIEZh
a2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7CisgICAgQ0NUZXh0dXJlVXBkYXRl
ciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsKKworICAgIGNjTGF5ZXJUcmVlSG9zdC0+c2V0
Um9vdExheWVyKGxheWVyKTsKKyAgICBjY0xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShJ
bnRTaXplKDMwMCwgMjAwKSk7CisKKyAgICAvLyBGdWxsIHVwZGF0ZSBvZiBhbGwgNiB0aWxlcy4K
KyAgICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOworICAgIGNjTGF5ZXJUcmVlSG9z
dC0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjY0xheWVyVHJlZUhvc3QtPmNvbnRleHQoKSwg
dXBkYXRlcik7CisgICAgdXBkYXRlci51cGRhdGUoMCwgNCk7CisgICAgRVhQRUNUX0VRKDQsIGxh
eWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3VudCgpKTsKKyAgICBFWFBF
Q1RfVFJVRSh1cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOworICAgIGxheWVyLT5mYWtlTGF5ZXJU
ZXh0dXJlVXBkYXRlcigpLT5jbGVhclVwZGF0ZUNvdW50KCk7CisgICAgdXBkYXRlci51cGRhdGUo
MCwgNCk7CisgICAgRVhQRUNUX0VRKDIsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigp
LT51cGRhdGVDb3VudCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UodXBkYXRlci5oYXNNb3JlVXBkYXRl
cygpKTsKKyAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJVcGRhdGVD
b3VudCgpOworICAgIGNjTGF5ZXJUcmVlSG9zdC0+Y29tbWl0Q29tcGxldGUoKTsKKworICAgIC8v
IEZ1bGwgdXBkYXRlIG9mIDMgdGlsZXMgYW5kIHBhcnRpYWwgdXBkYXRlIG9mIDMgdGlsZXMuCisg
ICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgMzAwLCAxNTApKTsKKyAgICBj
Y0xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOworICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcyhjY0xheWVyVHJlZUhvc3QtPmNvbnRleHQoKSwgdXBkYXRl
cik7CisgICAgdXBkYXRlci51cGRhdGUoMCwgNCk7CisgICAgRVhQRUNUX0VRKDMsIGxheWVyLT5m
YWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3VudCgpKTsKKyAgICBFWFBFQ1RfVFJV
RSh1cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOworICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJl
VXBkYXRlcigpLT5jbGVhclVwZGF0ZUNvdW50KCk7CisgICAgdXBkYXRlci51cGRhdGUoMCwgNCk7
CisgICAgRVhQRUNUX0VRKDMsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRh
dGVDb3VudCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UodXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsK
KyAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJVcGRhdGVDb3VudCgp
OworICAgIGNjTGF5ZXJUcmVlSG9zdC0+Y29tbWl0Q29tcGxldGUoKTsKKworICAgIC8vIFBhcnRp
YWwgdXBkYXRlIG9mIDYgdGlsZXMuCisgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3Qo
NTAsIDUwLCAyMDAsIDEwMCkpOworICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7
CisgICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNjTGF5ZXJU
cmVlSG9zdC0+Y29udGV4dCgpLCB1cGRhdGVyKTsKKyAgICB1cGRhdGVyLnVwZGF0ZSgwLCA0KTsK
KyAgICBFWFBFQ1RfRVEoMiwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnVwZGF0
ZUNvdW50KCkpOworICAgIEVYUEVDVF9UUlVFKHVwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7Cisg
ICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyVXBkYXRlQ291bnQoKTsK
KyAgICB1cGRhdGVyLnVwZGF0ZSgwLCA0KTsKKyAgICBFWFBFQ1RfRVEoNCwgbGF5ZXItPmZha2VM
YXllclRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOworICAgIEVYUEVDVF9GQUxTRSh1
cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOworICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBk
YXRlcigpLT5jbGVhclVwZGF0ZUNvdW50KCk7CisgICAgY2NMYXllclRyZWVIb3N0LT5jb21taXRD
b21wbGV0ZSgpOworCisgICAgY2NMYXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIoMCk7CisgICAg
Y2NMYXllclRyZWVIb3N0LmNsZWFyKCk7CisgICAgV2ViS2l0OjpXZWJDb21wb3NpdG9yOjpzaHV0
ZG93bigpOworfQorCiB9IC8vIG5hbWVzcGFjZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>