<?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>116604</bug_id>
          
          <creation_ts>2013-05-22 02:57:31 -0700</creation_ts>
          <short_desc>[BlackBerry] Fix style issues in BlackBerry accelerated compositing backend</short_desc>
          <delta_ts>2013-05-28 11:40:43 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit BlackBerry</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>116616</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Arvid Nilsson">anilsson</reporter>
          <assigned_to name="Arvid Nilsson">anilsson</assigned_to>
          <cc>anilsson</cc>
    
    <cc>anlo</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jpetsovits</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>892202</commentid>
    <comment_count>0</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-05-22 02:57:31 -0700</bug_when>
    <thetext>Remove &quot;get&quot; prefix from getters and remove dead code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>892211</commentid>
    <comment_count>1</comment_count>
      <attachid>202516</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-05-22 03:25:01 -0700</bug_when>
    <thetext>Created attachment 202516
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>892213</commentid>
    <comment_count>2</comment_count>
      <attachid>202516</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-05-22 03:45:42 -0700</bug_when>
    <thetext>Comment on attachment 202516
Patch

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

Nice cleanup!

&gt; Source/WebCore/platform/graphics/blackberry/LayerCompositingThread.cpp:150
&gt; +static FloatQuad transformLayerRect(const LayerCompositingThread* layer, const TransformationMatrix&amp; transform, const IntRect&amp; rect)

transformLayerRect sounds more like the parameters is modified instead of that a transformed rect is returned. Maybe transformedLayerRect would be clearer and consistent with other methods like transformedHolePunchRect()

&gt; Source/WebCore/platform/graphics/blackberry/LayerCompositingThread.cpp:156
&gt;      float x = -bounds.width() / 2.0 + rect.x();
&gt;      float y = -bounds.height() / 2.0 + rect.y();
&gt;      float w = rect.width();
&gt;      float h = rect.height();

You could probably fix this too. This could be FloatRect(-bounds.width() / 2.0 + rect.x(), -bounds.height() / 2.0 + rect.y(), rect.size());

&gt; Source/WebCore/platform/graphics/blackberry/LayerCompositingThread.cpp:158
&gt; +    result.setP1(transform.mapPoint(FloatPoint(x, y)));

Using a FloatRect this could just be minXMinYCorner()

&gt; Source/WebCore/platform/graphics/blackberry/LayerCompositingThread.cpp:159
&gt; +    result.setP2(transform.mapPoint(FloatPoint(x, y + h)));

minXMaxYCorner()

&gt; Source/WebCore/platform/graphics/blackberry/LayerCompositingThread.cpp:160
&gt; +    result.setP3(transform.mapPoint(FloatPoint(x + w, y + h)));

maxXMaxYCorner()

&gt; Source/WebCore/platform/graphics/blackberry/LayerCompositingThread.cpp:161
&gt; +    result.setP4(transform.mapPoint(FloatPoint(x + w, y)));

maxXMinYCorner()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>892243</commentid>
    <comment_count>3</comment_count>
      <attachid>202529</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-05-22 05:23:30 -0700</bug_when>
    <thetext>Created attachment 202529
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>892246</commentid>
    <comment_count>4</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-05-22 05:26:02 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Created an attachment (id=202529) [details]
&gt; Patch

I avoided the naming problem here by getting rid of the &quot;getTransformedRect&quot; method altogether.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>892268</commentid>
    <comment_count>5</comment_count>
      <attachid>202529</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-05-22 06:38:48 -0700</bug_when>
    <thetext>Comment on attachment 202529
Patch

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

&gt; Source/WebCore/platform/graphics/blackberry/LayerCompositingThread.cpp:245
&gt; +        FloatQuad surfaceQuad = drawTransform.mapQuad(FloatRect(-origin(), bounds()));

Oops, FloatQuad::FloatQuad(const FloatRect&amp;) puts the rect corners in the wrong positions, so the surface get &quot;rotated&quot; 90 degrees since the texture coords used no longer matches the corners...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>892274</commentid>
    <comment_count>6</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-05-22 06:57:00 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 202529 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=202529&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/blackberry/LayerCompositingThread.cpp:245
&gt; &gt; +        FloatQuad surfaceQuad = drawTransform.mapQuad(FloatRect(-origin(), bounds()));
&gt; 
&gt; Oops, FloatQuad::FloatQuad(const FloatRect&amp;) puts the rect corners in the wrong positions, so the surface get &quot;rotated&quot; 90 degrees since the texture coords used no longer matches the corners...

Using counterclockwise geometry like it used to do doesn&apos;t play well with the new culling code used with the BB::P::G::GraphicsContext. We switched to glFrontFace(GL_CW) to work with layers whose content is a display list, but kept some of the old CCW geometry for layers whose content isn&apos;t, like WebGL, masks and filters...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>892281</commentid>
    <comment_count>7</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-05-22 07:19:34 -0700</bug_when>
    <thetext>Alright, I&apos;ll need to go and fix bug #116616 first =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>893265</commentid>
    <comment_count>8</comment_count>
      <attachid>202803</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-05-24 04:33:45 -0700</bug_when>
    <thetext>Created attachment 202803
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>893267</commentid>
    <comment_count>9</comment_count>
      <attachid>202803</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-05-24 04:41:22 -0700</bug_when>
    <thetext>Comment on attachment 202803
Patch

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

&gt; Source/WebCore/ChangeLog:18
&gt; +        Also remove dead code related to LayerData::m_holePunchClipRect, which
&gt; +        was part of an eventually disabled fix for video clipping in iframes,
&gt; +        PR 99638. Since we now use AC layers for iframes, the bug is no longer
&gt; +        reproducible, and the dead code will never need to be enabled again.

Maybe you can split the patch since this dead code doesn&apos;t depend on changes on bug #116616, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>893270</commentid>
    <comment_count>10</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-05-24 04:45:58 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 202803 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=202803&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:18
&gt; &gt; +        Also remove dead code related to LayerData::m_holePunchClipRect, which
&gt; &gt; +        was part of an eventually disabled fix for video clipping in iframes,
&gt; &gt; +        PR 99638. Since we now use AC layers for iframes, the bug is no longer
&gt; &gt; +        reproducible, and the dead code will never need to be enabled again.
&gt; 
&gt; Maybe you can split the patch since this dead code doesn&apos;t depend on changes on bug #116616, right?

I think it makes sense to keep them together - dead code is really also a style issue I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894029</commentid>
    <comment_count>11</comment_count>
      <attachid>202803</attachid>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2013-05-27 08:05:53 -0700</bug_when>
    <thetext>Comment on attachment 202803
Patch

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

Looks safe and reasonable.

&gt; Source/WebCore/platform/graphics/blackberry/LayerCompositingThread.h:254
&gt;      // Vertex data for the bounds of this layer
&gt;      FloatQuad m_transformedBounds;
&gt;      // The bounding rectangle of the transformed layer
&gt; -    FloatRect m_drawRect;
&gt; +    FloatRect m_boundingBox;

If m_boundingBox is the .boundingBox() of m_transformedBounds, would it make sense to name the two of them in a very similar way? Such as making it m_transformedBoundingBox, for instance.

&gt; Source/WebCore/platform/graphics/blackberry/LayerRendererSurface.h:57
&gt; -    FloatRect drawRect() const;
&gt; +    // These use normalized device coordinates
&gt; +    FloatRect boundingBox() const;
&gt;      FloatQuad transformedBounds() const;

Same question as for the comment above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894066</commentid>
    <comment_count>12</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-05-27 09:00:01 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 202803 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=202803&amp;action=review
&gt; 
&gt; Looks safe and reasonable.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/blackberry/LayerCompositingThread.h:254
&gt; &gt;      // Vertex data for the bounds of this layer
&gt; &gt;      FloatQuad m_transformedBounds;
&gt; &gt;      // The bounding rectangle of the transformed layer
&gt; &gt; -    FloatRect m_drawRect;
&gt; &gt; +    FloatRect m_boundingBox;
&gt; 
&gt; If m_boundingBox is the .boundingBox() of m_transformedBounds, would it make sense to name the two of them in a very similar way? Such as making it m_transformedBoundingBox, for instance.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/blackberry/LayerRendererSurface.h:57
&gt; &gt; -    FloatRect drawRect() const;
&gt; &gt; +    // These use normalized device coordinates
&gt; &gt; +    FloatRect boundingBox() const;
&gt; &gt;      FloatQuad transformedBounds() const;
&gt; 
&gt; Same question as for the comment above.

There were two reasons I didn&apos;t name it &quot;m_transformedBoundingBox&quot; - I think the name is too long, and it&apos;s unclear whether it&apos;s the transformed bounding box, or the bounding box of the transformed bounding rect (when it is in fact the latter).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894068</commentid>
    <comment_count>13</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-05-27 09:02:31 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; (From update of attachment 202803 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=202803&amp;action=review
&gt; &gt; 
&gt; &gt; Looks safe and reasonable.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/blackberry/LayerCompositingThread.h:254
&gt; &gt; &gt;      // Vertex data for the bounds of this layer
&gt; &gt; &gt;      FloatQuad m_transformedBounds;
&gt; &gt; &gt;      // The bounding rectangle of the transformed layer
&gt; &gt; &gt; -    FloatRect m_drawRect;
&gt; &gt; &gt; +    FloatRect m_boundingBox;
&gt; &gt; 
&gt; &gt; If m_boundingBox is the .boundingBox() of m_transformedBounds, would it make sense to name the two of them in a very similar way? Such as making it m_transformedBoundingBox, for instance.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/blackberry/LayerRendererSurface.h:57
&gt; &gt; &gt; -    FloatRect drawRect() const;
&gt; &gt; &gt; +    // These use normalized device coordinates
&gt; &gt; &gt; +    FloatRect boundingBox() const;
&gt; &gt; &gt;      FloatQuad transformedBounds() const;
&gt; &gt; 
&gt; &gt; Same question as for the comment above.
&gt; 
&gt; There were two reasons I didn&apos;t name it &quot;m_transformedBoundingBox&quot; - I think the name is too long, and it&apos;s unclear whether it&apos;s the transformed bounding box, or the bounding box of the transformed bounding rect (when it is in fact the latter).

I would rather remove the &quot;transformed&quot; moniker from the other accessors in the future, in favor of something shorter, than adding it to more places. In an upcoming patch, &quot;geometry&quot; might be a more suitable name for the transformedBounds(), since it can be a polygon in some cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894271</commentid>
    <comment_count>14</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-05-28 02:39:32 -0700</bug_when>
    <thetext>I&apos;ve decided not to renable boundingBox() at this time, instead &quot;transformedBounds()&quot; will be renamed to &quot;geometry&quot; once it&apos;s a vector of 4D points (a polygon in homogeneous space).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894272</commentid>
    <comment_count>15</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-05-28 02:41:14 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; I&apos;ve decided not to renable boundingBox() at this time, instead &quot;transformedBounds()&quot; will be renamed to &quot;geometry&quot; once it&apos;s a vector of 4D points (a polygon in homogeneous space).

renable? I meant &quot;rename&quot;. Also, homogeneous space is something else than what I meant, should say &quot;vector of points, expressed in homogeneous coordinates&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894286</commentid>
    <comment_count>16</comment_count>
      <attachid>203035</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-05-28 03:32:26 -0700</bug_when>
    <thetext>Created attachment 203035
Patch

Rebased on top of changed dependency patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894403</commentid>
    <comment_count>17</comment_count>
      <attachid>203035</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-05-28 10:07:19 -0700</bug_when>
    <thetext>Comment on attachment 203035
Patch

Nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894425</commentid>
    <comment_count>18</comment_count>
      <attachid>203035</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-05-28 10:57:58 -0700</bug_when>
    <thetext>Comment on attachment 203035
Patch

This should apply now that the dependency has landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894437</commentid>
    <comment_count>19</comment_count>
      <attachid>203035</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-28 11:40:40 -0700</bug_when>
    <thetext>Comment on attachment 203035
Patch

Clearing flags on attachment: 203035

Committed r150817: &lt;http://trac.webkit.org/changeset/150817&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894438</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-28 11:40:43 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>202516</attachid>
            <date>2013-05-22 03:25:01 -0700</date>
            <delta_ts>2013-05-22 05:23:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-116604-20130522122345.patch</filename>
            <type>text/plain</type>
            <size>31451</size>
            <attacher name="Arvid Nilsson">anilsson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUwMjU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjVjOWRiOWI3NzJkMzcz
MjNmNDcyN2M1YjM4OGZkMTA5ZWNjYWFiNy4uMmM4ZDU3NzZmNzk5NjA0YmM4ZTA5ZGE2OWVjMTky
YmYyY2QzMWUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDEzLTA1LTIyICBBcnZp
ZCBOaWxzc29uICA8YW5pbHNzb25AcmltLmNvbT4KKworICAgICAgICBbQmxhY2tCZXJyeV0gRml4
IHN0eWxlIGlzc3VlcyBpbiBCbGFja0JlcnJ5IGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGJhY2tl
bmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjYw
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBSIDI3
MzU1MCwgOTk2MzgKKworICAgICAgICBSZW1vdmUgdGhlICJnZXQiIHByZWZpeCBmcm9tIGdldHRl
cnMgaW4gdGhlIFdlYktpdC0gYW5kIGNvbXBvc2l0aW5nLQorICAgICAgICB0aHJlYWQgbGF5ZXIg
Y2xhc3NlcywgYXMgd2VsbCBhcyBMYXllclJlbmRlcmVyU3VyZmFjZS4gQ2xhcmlmeSB3aGljaAor
ICAgICAgICBnZW9tZXRyeS1yZWxhdGVkIGdldHRlcnMgcmV0dXJuIG5vcm1hbGl6ZWQgZGV2aWNl
IGNvb3JkaW5hdGVzIGJ5IGFkZGluZworICAgICAgICBhIGNvbW1lbnQuCisKKyAgICAgICAgQWxz
byByZW1vdmUgZGVhZCBjb2RlIHJlbGF0ZWQgdG8gTGF5ZXJEYXRhOjptX2hvbGVQdW5jaENsaXBS
ZWN0LCB3aGljaAorICAgICAgICB3YXMgcGFydCBvZiBhbiBldmVudHVhbGx5IGRpc2FibGVkIGZp
eCBmb3IgdmlkZW8gY2xpcHBpbmcgaW4gaWZyYW1lcywKKyAgICAgICAgUFIgOTk2MzguIFNpbmNl
IHdlIG5vdyB1c2UgQUMgbGF5ZXJzIGZvciBpZnJhbWVzLCB0aGUgYnVnIGlzIG5vIGxvbmdlcgor
ICAgICAgICByZXByb2R1Y2libGUsIGFuZCB0aGUgZGVhZCBjb2RlIHdpbGwgbmV2ZXIgbmVlZCB0
byBiZSBlbmFibGVkIGFnYWluLgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvciwgbm8g
bmV3IHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9FR0xJ
bWFnZUxheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RUdMSW1hZ2VMYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50OjpkcmF3VGV4dHVyZXMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVh
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNvbXBvc2l0aW5nVGhyZWFkOjpzZXREcmF3
VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OnRyYW5zZm9ybUxheWVyUmVjdCk6IFJlbmFt
ZWQgZnJvbSAiZ2V0VHJhbnNmb3JtZWRSZWN0IiB0byB1c2UgYSB2ZXJiCisgICAgICAgIChXZWJD
b3JlOjpMYXllckNvbXBvc2l0aW5nVGhyZWFkOjp0cmFuc2Zvcm1lZEhvbGVQdW5jaFJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6ZHJhd1RleHR1cmVzKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OmRyYXdTdXJmYWNlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQ29tcG9zaXRpbmdU
aHJlYWQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OnN1Ymxh
eWVycyk6IFJlbW92ZWQgImdldCIgcHJlZml4CisgICAgICAgIChMYXllckNvbXBvc2l0aW5nVGhy
ZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OmJvdW5kaW5n
Qm94KTogUmVuYW1lZCBmcm9tICJnZXREcmF3UmVjdCIKKyAgICAgICAgKFdlYkNvcmU6OkxheWVy
Q29tcG9zaXRpbmdUaHJlYWQ6OnRyYW5zZm9ybWVkQm91bmRzKTogUmVtb3ZlZCAiZ2V0IiBwcmVm
aXgKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OnRyYW5zZm9ybWVk
SG9sZVB1bmNoUmVjdCk6IFJlbW92ZWQgImdldCIgcHJlZml4CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckRhdGEuaDoKKyAgICAgICAgKExheWVyRGF0YSk6IFJl
bW92ZWQgdW51c2VkIGRhdGEgbWVtYmVyICJtX2hvbGVQdW5jaENsaXBSZWN0IgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJGaWx0ZXJSZW5kZXJlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllckZpbHRlclJlbmRlcmVyOjphcHBseUFjdGlvbnMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJSZW5kZXJlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyOjpjb21wb3NpdGVMYXllcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlcjo6ZHJhd0RlYnVnQm9yZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyUmVuZGVyZXI6OmRyYXdIb2xlUHVuY2hSZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyUmVuZGVyZXI6OnByZXBhcmVGcmFtZVJlY3Vyc2l2ZSk6CisgICAgICAgIChXZWJD
b3JlOjpMYXllclJlbmRlcmVyOjp1cGRhdGVMYXllcnNSZWN1cnNpdmUpOgorICAgICAgICAoV2Vi
Q29yZTo6Y29sbGVjdDNEUHJlc2VydmluZ0xheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpMYXll
clJlbmRlcmVyOjpjb21wb3NpdGVMYXllcnNSZWN1cnNpdmUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJSZW5kZXJlclN1cmZhY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJSZW5kZXJlclN1cmZhY2U6OmJvdW5kaW5nQm94KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVuZGVyZXJTdXJmYWNlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyU3VyZmFjZTo6Ym91bmRpbmdCb3gpOiBSZW5hbWVk
IGZyb20gImRyYXdSZWN0IiBiZWNhdXNlIHRoYXQgc291bmRzIGxpa2UgYSB2ZXJiLCBhbmQgdGhp
cyBpcyBhIGdldHRlcgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5
ZXJXZWJLaXRUaHJlYWQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyV2ViS2l0VGhyZWFkOjpz
dWJsYXllcnMpOiBSZW1vdmVkICJnZXQiIHByZWZpeAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2JsYWNrYmVycnkvVmlkZW9MYXllcldlYktpdFRocmVhZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpWaWRlb0xheWVyV2ViS2l0VGhyZWFkOjpzZXRIb2xlUHVuY2hSZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlZpZGVvTGF5ZXJXZWJLaXRUaHJlYWQ6OmJvdW5kc0NoYW5nZWQpOgorCiAyMDEz
LTAzLTIyICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUkVH
UkVTU0lPTiAocjE0NjIzOSk6IFJlcHJvZHVjaWJsZSBjcmFzaCBpbiBXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCmlu
ZGV4IDZmMDc5YTY2NTA0OTYwNjg2ZTY1ODBkZmY5MDQ5ZTBiZWRhM2M3YmYuLmFmZjY1Yzg5YmQz
ZTE5YjY2MTNiOWNiZTdjMWIyMmFmZGFiOGNmNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEzLTA1LTIyICBBcnZpZCBOaWxzc29uICA8YW5pbHNz
b25AcmltLmNvbT4KKworICAgICAgICBbQmxhY2tCZXJyeV0gRml4IHN0eWxlIGlzc3VlcyBpbiBC
bGFja0JlcnJ5IGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGJhY2tlbmQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjYwNAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkYXB0IHRvIHRoZSByZW1vdmFsIG9m
ICJnZXQiIHByZWZpeCBmcm9tIGdldHRlcnMgaW4gdGhlIFdlYktpdC0gYW5kCisgICAgICAgIGNv
bXBvc2l0aW5nLXRocmVhZCBsYXllciBjbGFzc2VzLgorCisgICAgICAgICogQXBpL1dlYk92ZXJs
YXkuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJPdmVybGF5UHJpdmF0ZUNv
bXBvc2l0aW5nVGhyZWFkOjpwaXhlbFZpZXdwb3J0UmVjdCk6CisgICAgICAgICogQXBpL1dlYlBh
Z2VDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZUNv
bXBvc2l0b3JQcml2YXRlOjphdHRhY2hPdmVybGF5cyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpX
ZWJLaXQ6OldlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6cmVtb3ZlT3ZlcmxheSk6CisgICAgICAg
IChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6ZmluZEZpeGVk
RWxlbWVudFJlY3QpOgorCiAyMDEzLTA1LTE3ICBNaWtlIEZlbnRvbiAgPG1pZmVudG9uQHJpbS5j
b20+CiAKICAgICAgICAgW0JsYWNrQmVycnldIFJlbW92ZSBzdGFsZSBjb21tZW50IGZvciBzZWxl
Y3QgbW91c2UgaGFuZGxpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ibGFja2JlcnJ5L0VHTEltYWdlTGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0VHTEltYWdl
TGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudC5jcHAKaW5kZXggM2U0OGMyOTM1ZWNhMmU4ZTM1
NWQ0YWU3YWYzYTA1ZGM3ZTI0OTY5MS4uNjY4YWRmMjVhNTMzMWQwNDE2YTQ0MDNmZWYwODNlZmQ5
ODM0NTUzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxh
Y2tiZXJyeS9FR0xJbWFnZUxheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvRUdMSW1hZ2VMYXllckNv
bXBvc2l0aW5nVGhyZWFkQ2xpZW50LmNwcApAQCAtNTYsNyArNTYsNyBAQCB2b2lkIEVHTEltYWdl
TGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudDo6ZHJhd1RleHR1cmVzKExheWVyQ29tcG9zaXRp
bmdUaHJlYWQqCiAgICAgZ2xCbGVuZEZ1bmMoR0xfT05FLCBHTF9PTkVfTUlOVVNfU1JDX0FMUEhB
KTsKICAgICBnbFVzZVByb2dyYW0ocHJvZ3JhbS5tX3Byb2dyYW0pOwogICAgIGdsVW5pZm9ybTFm
KHByb2dyYW0ub3BhY2l0eUxvY2F0aW9uKCksIGxheWVyLT5kcmF3T3BhY2l0eSgpKTsKLSAgICBn
bFZlcnRleEF0dHJpYlBvaW50ZXIocHJvZ3JhbS5wb3NpdGlvbkxvY2F0aW9uKCksIDIsIEdMX0ZM
T0FULCBHTF9GQUxTRSwgMCwgJmxheWVyLT5nZXRUcmFuc2Zvcm1lZEJvdW5kcygpKTsKKyAgICBn
bFZlcnRleEF0dHJpYlBvaW50ZXIocHJvZ3JhbS5wb3NpdGlvbkxvY2F0aW9uKCksIDIsIEdMX0ZM
T0FULCBHTF9GQUxTRSwgMCwgJmxheWVyLT50cmFuc2Zvcm1lZEJvdW5kcygpKTsKICAgICBnbFZl
cnRleEF0dHJpYlBvaW50ZXIocHJvZ3JhbS50ZXhDb29yZExvY2F0aW9uKCksIDIsIEdMX0ZMT0FU
LCBHTF9GQUxTRSwgMCwgdXBzaWRlRG93bik7CiAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJF
XzJELCBtX3RleHR1cmVBY2Nlc3Nvci0+dGV4dHVyZUlEKCkpOwogICAgIGdsRHJhd0FycmF5cyhH
TF9UUklBTkdMRV9GQU4sIDAsIDQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBvc2l0aW5nVGhyZWFkLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1Ro
cmVhZC5jcHAKaW5kZXggYmQyMjlhOGRhODhmZmE3MzI5ZjFjYmFkMzg3ZjE1MDM4MDAxOTMyMC4u
YjczMGVlYzliNTM4ODM2NTY3ZTUxYzdkZTlmN2U0ODZlZTJjOTIzMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBvc2l0aW5n
VGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2Jl
cnJ5L0xheWVyQ29tcG9zaXRpbmdUaHJlYWQuY3BwCkBAIC01Myw4ICs1Myw2IEBACiAjaW5jbHVk
ZSA8QmxhY2tCZXJyeVBsYXRmb3JtTG9nLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4K
IAotI2RlZmluZSBERUJVR19WSURFT19DTElQUElORyAwCi0KIHVzaW5nIEJsYWNrQmVycnk6OlBs
YXRmb3JtOjpHcmFwaGljczo6R0xFUzJQcm9ncmFtOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC0xNDYsNjkgKzE0NCwyOSBAQCB2b2lkIExheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OnNldERyYXdU
cmFuc2Zvcm0oZG91YmxlIHNjYWxlLCBjb25zdCBUcmFuc2Zvcm1hdGlvbgogICAgIG1fdHJhbnNm
b3JtZWRCb3VuZHMuc2V0UDMobWF0cml4Lm1hcFBvaW50KEZsb2F0UG9pbnQoYngsIGJ5KSkpOwog
ICAgIG1fdHJhbnNmb3JtZWRCb3VuZHMuc2V0UDQobWF0cml4Lm1hcFBvaW50KEZsb2F0UG9pbnQo
YngsIC1ieSkpKTsKIAotICAgIG1fZHJhd1JlY3QgPSBtX3RyYW5zZm9ybWVkQm91bmRzLmJvdW5k
aW5nQm94KCk7CisgICAgbV9ib3VuZGluZ0JveCA9IG1fdHJhbnNmb3JtZWRCb3VuZHMuYm91bmRp
bmdCb3goKTsKIH0KIAotc3RhdGljIEZsb2F0UXVhZCBnZXRUcmFuc2Zvcm1lZFJlY3QoY29uc3Qg
SW50U2l6ZSYgYm91bmRzLCBjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgZHJhd1RyYW5zZm9ybSkKK3N0YXRpYyBGbG9hdFF1YWQgdHJhbnNmb3JtTGF5ZXJS
ZWN0KGNvbnN0IExheWVyQ29tcG9zaXRpbmdUaHJlYWQqIGxheWVyLCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBJbnRSZWN0JiByZWN0KQogeworICAgIEludFNp
emUgYm91bmRzID0gbGF5ZXItPmJvdW5kcygpOwogICAgIGZsb2F0IHggPSAtYm91bmRzLndpZHRo
KCkgLyAyLjAgKyByZWN0LngoKTsKICAgICBmbG9hdCB5ID0gLWJvdW5kcy5oZWlnaHQoKSAvIDIu
MCArIHJlY3QueSgpOwogICAgIGZsb2F0IHcgPSByZWN0LndpZHRoKCk7CiAgICAgZmxvYXQgaCA9
IHJlY3QuaGVpZ2h0KCk7CiAgICAgRmxvYXRRdWFkIHJlc3VsdDsKLSAgICByZXN1bHQuc2V0UDEo
ZHJhd1RyYW5zZm9ybS5tYXBQb2ludChGbG9hdFBvaW50KHgsIHkpKSk7Ci0gICAgcmVzdWx0LnNl
dFAyKGRyYXdUcmFuc2Zvcm0ubWFwUG9pbnQoRmxvYXRQb2ludCh4LCB5ICsgaCkpKTsKLSAgICBy
ZXN1bHQuc2V0UDMoZHJhd1RyYW5zZm9ybS5tYXBQb2ludChGbG9hdFBvaW50KHggKyB3LCB5ICsg
aCkpKTsKLSAgICByZXN1bHQuc2V0UDQoZHJhd1RyYW5zZm9ybS5tYXBQb2ludChGbG9hdFBvaW50
KHggKyB3LCB5KSkpOworICAgIHJlc3VsdC5zZXRQMSh0cmFuc2Zvcm0ubWFwUG9pbnQoRmxvYXRQ
b2ludCh4LCB5KSkpOworICAgIHJlc3VsdC5zZXRQMih0cmFuc2Zvcm0ubWFwUG9pbnQoRmxvYXRQ
b2ludCh4LCB5ICsgaCkpKTsKKyAgICByZXN1bHQuc2V0UDModHJhbnNmb3JtLm1hcFBvaW50KEZs
b2F0UG9pbnQoeCArIHcsIHkgKyBoKSkpOworICAgIHJlc3VsdC5zZXRQNCh0cmFuc2Zvcm0ubWFw
UG9pbnQoRmxvYXRQb2ludCh4ICsgdywgeSkpKTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
IAotRmxvYXRRdWFkIExheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OmdldFRyYW5zZm9ybWVkSG9sZVB1
bmNoUmVjdCgpIGNvbnN0CitGbG9hdFF1YWQgTGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6dHJhbnNm
b3JtZWRIb2xlUHVuY2hSZWN0KCkgY29uc3QKIHsKLSAgICAvLyBGSVhNRTogdGhlIGZvbGxvd2lu
ZyBsaW5lIGRpc2FibGVzIGNsaXBwaW5nIGEgdmlkZW8gaW4gYW4gaWZyYW1lIGkuZS4gdGhlIGZp
eCBhc3NvY2lhdGVkIHdpdGggUFIgOTk2MzguCi0gICAgLy8gU29tZSByZXZpc2VkIHRlc3QgY2Fz
ZSAoZS5nLiB2aWRlby1pZnJhbWUuaHRtbCkgc2hvdyB0aGF0IHRoZSBvcmlnaW5hbCBmaXggd29y
a3MgY29ycmVjdGx5IHdoZW4gc2Nyb2xsaW5nCi0gICAgLy8gdGhlIGNvbnRlbnRzIG9mIHRoZSBm
cmFtZSwgYnV0IGZhaWxzIHRvIGNsaXAgY29ycmVjdGx5IGlmIHRoZSBwYWdlIChtYWluIGZyYW1l
KSBpcyBzY3JvbGxlZC4KLSAgICBzdGF0aWMgYm9vbCBlbmFibGVWaWRlb0NsaXBwaW5nID0gZmFs
c2U7Ci0KLSAgICBpZiAoIW1lZGlhUGxheWVyKCkgfHwgIWVuYWJsZVZpZGVvQ2xpcHBpbmcpIHsK
LSAgICAgICAgLy8gbV9ob2xlUHVuY2hDbGlwUmVjdCBpcyB2YWxpZCBvbmx5IHdoZW4gdGhlcmUn
cyBhIG1lZGlhIHBsYXllci4KLSAgICAgICAgcmV0dXJuIGdldFRyYW5zZm9ybWVkUmVjdChtX2Jv
dW5kcywgbV9ob2xlUHVuY2hSZWN0LCBtX2RyYXdUcmFuc2Zvcm0pOwotICAgIH0KLQotICAgIC8v
IFRoZSBob2xlIHB1bmNoIHJlY3RhbmdsZSBtYXkgbmVlZCB0byBiZSBjbGlwcGVkLAotICAgIC8v
IGUuZy4gaWYgdGhlIDx2aWRlbz4gaXMgb24gYSBsYXllciB0aGF0J3MgaW5jbHVkZWQgYW5kIGNs
aXBwZWQgYnkgYW4gPGlmcmFtZT4uCi0KLSAgICAvLyBJbiBvcmRlciB0byBjbGlwIHdlIG5lZWQg
dG8gZGV0ZXJtaW5lIHRoZSBjdXJyZW50IHBvc2l0aW9uIG9mIHRoaXMgbGF5ZXIsIHdoaWNoCi0g
ICAgLy8gaXMgZW5jb2RlZCBpbiB0aGUgbV9kcmF3VHJhbnNmb3JtIHZhbHVlLCB3aGljaCB3YXMg
dXNlZCB0byBpbml0aWFsaXplIG1fZHJhd1JlY3QuCi0gICAgSW50UmVjdCBkcmF3UmVjdCA9IG1f
bGF5ZXJSZW5kZXJlci0+dG9Eb2N1bWVudFZpZXdwb3J0Q29vcmRpbmF0ZXMobV9kcmF3UmVjdCk7
Ci0KLSAgICAvLyBBc3NlcnQgdGhhdCBpbiB0aGlzIGNhc2UsIHdoZXJlIHRoZSBob2xlIHB1bmNo
IHJlY3RhbmdsZSBlcXVhbHMgdGhlIHNpemUgb2YgdGhlIGxheWVyLAotICAgIC8vIHRoZSBkcmF3
UmVjdCBoYXMgdGhlIHNhbWUgc2l6ZSBhcyB0aGUgaG9sZSBwdW5jaC4KLSAgICAvLyBBU1NFUlQo
ZHJhd1JlY3Quc2l6ZSgpID09IG1faG9sZVB1bmNoUmVjdC5zaXplKCkpOwotICAgIC8vIERvbid0
IGFzc2VydCBpdCBwcm9ncmFtdGljYWxseSB0aG91Z2ggYmVjYXVzZSB0aGVyZSBtYXkgYmUgb2Zm
LWJ5LW9uZSBlcnJvciBkdWUgdG8gcm91bmRpbmcgd2hlbiB0aGVyZSdzIHpvb21pbmcuCi0KLSAg
ICAvLyBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGRyYXdSZWN0IGFuZCBtX2hvbGVQdW5jaFJlY3Qg
aXMgdGhhdCBkcmF3UmVjdCBoYXMgYW4gYWNjdXJhdGUgcG9zaXRpb24KLSAgICAvLyBpbiBXZWJL
aXQgZG9jdW1lbnQgY29vcmRpbmF0ZXMsIHdoZXJlYXMgdGhlIG1faG9sZVB1bmNoUmVjdCBsb2Nh
dGlvbiBpcyAoMCwwKSBpLmUuIGl0J3MgcmVsYXRpdmUgdG8gdGhpcyBsYXllci4KLQotICAgIC8v
IENsaXAgdGhlIGRyYXdSZWN0LgotICAgIC8vIEJvdGggZHJhd1JlY3QgYW5kIG1faG9sZVB1bmNo
Q2xpcFJlY3QgYWxyZWFkeSBoYXZlIGNvcnJlY3QgbG9jYXRpb25zLCBpbiBXZWJLaXQgZG9jdW1l
bnQgY29vcmRpbmF0ZXMuCi0gICAgSW50UG9pbnQgbG9jYXRpb24gPSBkcmF3UmVjdC5sb2NhdGlv
bigpOwotICAgIGRyYXdSZWN0LmludGVyc2VjdChtX2hvbGVQdW5jaENsaXBSZWN0KTsKLQotICAg
IC8vIFNoaWZ0IHRoZSBjbGlwcGVkIGRyYXdSZWN0IHRvIGhhdmUgdGhlIHNhbWUga2luZCBvZiBs
b2NhdGVkLWF0LXplcm8gcG9zaXRpb24gYXMgdGhlIG9yaWdpbmFsIGhvbGVQdW5jaFJlY3QuCi0g
ICAgZHJhd1JlY3QubW92ZSgtbG9jYXRpb24ueCgpLCAtbG9jYXRpb24ueSgpKTsKLQotI2lmIERF
QlVHX1ZJREVPX0NMSVBQSU5HCi0gICAgSW50UmVjdCBkcmF3UmVjdEluV2ViS2l0RG9jdW1lbnRD
b29yZGluYXRpb24gPSBtX2xheWVyUmVuZGVyZXItPnRvV2ViS2l0RG9jdW1lbnRDb29yZGluYXRl
cyhtX2RyYXdSZWN0KTsKLSAgICBCQkxPRyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxJ
bmZvLCAiTGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6Z2V0VHJhbnNmb3JtZWRIb2xlUHVuY2hSZWN0
KCkgLSBkcmF3UmVjdD0oeD0lZCx5PSVkLHdpZHRoPSVkLGhlaWdodD0lZCkgY2xpcFJlY3Q9KHg9
JWQseT0lZCx3aWR0aD0lZCxoZWlnaHQ9JWQpIGNsaXBwZWRSZWN0PSh4PSVkLHk9JWQsd2lkdGg9
JWQsaGVpZ2h0PSVkKS4iLAotICAgICAgICBkcmF3UmVjdEluV2ViS2l0RG9jdW1lbnRDb29yZGlu
YXRpb24ueCgpLCBkcmF3UmVjdEluV2ViS2l0RG9jdW1lbnRDb29yZGluYXRpb24ueSgpLCBkcmF3
UmVjdEluV2ViS2l0RG9jdW1lbnRDb29yZGluYXRpb24ud2lkdGgoKSwgZHJhd1JlY3RJbldlYktp
dERvY3VtZW50Q29vcmRpbmF0aW9uLmhlaWdodCgpLAotICAgICAgICBtX2hvbGVQdW5jaENsaXBS
ZWN0LngoKSwgbV9ob2xlUHVuY2hDbGlwUmVjdC55KCksIG1faG9sZVB1bmNoQ2xpcFJlY3Qud2lk
dGgoKSwgbV9ob2xlUHVuY2hDbGlwUmVjdC5oZWlnaHQoKSwKLSAgICAgICAgZHJhd1JlY3QueCgp
LCBkcmF3UmVjdC55KCksIGRyYXdSZWN0LndpZHRoKCksIGRyYXdSZWN0LmhlaWdodCgpKTsKLSNl
bmRpZgotCi0gICAgcmV0dXJuIGdldFRyYW5zZm9ybWVkUmVjdChtX2JvdW5kcywgZHJhd1JlY3Qs
IG1fZHJhd1RyYW5zZm9ybSk7CisgICAgcmV0dXJuIHRyYW5zZm9ybUxheWVyUmVjdCh0aGlzLCBt
X2RyYXdUcmFuc2Zvcm0sIG1faG9sZVB1bmNoUmVjdCk7CiB9CiAKIHZvaWQgTGF5ZXJDb21wb3Np
dGluZ1RocmVhZDo6ZHJhd1RleHR1cmVzKGRvdWJsZSBzY2FsZSwgY29uc3QgR0xFUzJQcm9ncmFt
JiBwcm9ncmFtLCBjb25zdCBGbG9hdFJlY3QmIHZpc2libGVSZWN0KQpAQCAtMjUzLDcgKzIxMSw3
IEBAIHZvaWQgTGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6ZHJhd1RleHR1cmVzKGRvdWJsZSBzY2Fs
ZSwgY29uc3QgR0xFUzJQcm9ncmFtJiBwcm9nCiAgICAgICAgICAgICAgICAgICAgIC1tX3RyYW5z
Zm9ybWVkQm91bmRzLnAxKCkueSgpICogdnJoMiArIHZyaDIgKyB2aXNpYmxlUmVjdC55KCkpOwog
ICAgICAgICAgICAgICAgIHBhaW50UmVjdCA9IEludFJlY3Qocm91bmRlZEludFBvaW50KHApLCBt
X2JvdW5kcyk7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBwYWludFJlY3Qg
PSBtX2xheWVyUmVuZGVyZXItPnRvV2luZG93Q29vcmRpbmF0ZXMobV9kcmF3UmVjdCk7CisgICAg
ICAgICAgICAgICAgcGFpbnRSZWN0ID0gbV9sYXllclJlbmRlcmVyLT50b1dpbmRvd0Nvb3JkaW5h
dGVzKG1fYm91bmRpbmdCb3gpOwogCiAgICAgICAgICAgICBtX21lZGlhUGxheWVyLT5wYWludCgw
LCBwYWludFJlY3QpOwogICAgICAgICAgICAgTWVkaWFQbGF5ZXJQcml2YXRlKiBtcHAgPSBzdGF0
aWNfY2FzdDxNZWRpYVBsYXllclByaXZhdGUqPihtX21lZGlhUGxheWVyLT5wbGF0Zm9ybU1lZGlh
KCkubWVkaWEucW54TWVkaWFQbGF5ZXIpOwpAQCAtMjk5LDcgKzI1Nyw3IEBAIHZvaWQgTGF5ZXJD
b21wb3NpdGluZ1RocmVhZDo6ZHJhd1N1cmZhY2UoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IGRyYXdUcmFuc2ZvCiAgICAgICAgIGdsQmxlbmRGdW5jKEdMX09ORSwgR0xfT05FX01JTlVTX1NS
Q19BTFBIQSk7CiAgICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgc3VyZmFjZVRl
eElEKTsKIAotICAgICAgICBGbG9hdFF1YWQgc3VyZmFjZVF1YWQgPSBnZXRUcmFuc2Zvcm1lZFJl
Y3QobV9ib3VuZHMsIEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgbV9ib3VuZHMpLCBkcmF3VHJh
bnNmb3JtKTsKKyAgICAgICAgRmxvYXRRdWFkIHN1cmZhY2VRdWFkID0gdHJhbnNmb3JtTGF5ZXJS
ZWN0KHRoaXMsIGRyYXdUcmFuc2Zvcm0sIEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgbV9ib3Vu
ZHMpKTsKICAgICAgICAgZ2xVbmlmb3JtMWYocHJvZ3JhbS5vcGFjaXR5TG9jYXRpb24oKSwgbGF5
ZXJSZW5kZXJlclN1cmZhY2UoKS0+ZHJhd09wYWNpdHkoKSk7CiAgICAgICAgIGdsVmVydGV4QXR0
cmliUG9pbnRlcihwcm9ncmFtLnBvc2l0aW9uTG9jYXRpb24oKSwgMiwgR0xfRkxPQVQsIEdMX0ZB
TFNFLCAwLCAmc3VyZmFjZVF1YWQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQ29tcG9zaXRpbmdUaHJlYWQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1Ro
cmVhZC5oCmluZGV4IDBiMjAyY2FlNDVjZWE3YjYyZTM2ZWU0NjRiMDRiN2ViNTEwMDZlNTUuLjY3
ZmYxZTU3NTgzZjZiZjc5M2FlNzRkODI0MjhjNjA5MzAyNWUzYTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1Ro
cmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkv
TGF5ZXJDb21wb3NpdGluZ1RocmVhZC5oCkBAIC0xNTMsNyArMTUzLDcgQEAgcHVibGljOgogCiAg
ICAgY29uc3QgTGF5ZXJDb21wb3NpdGluZ1RocmVhZCogcm9vdExheWVyKCkgY29uc3Q7CiAgICAg
dm9pZCBzZXRTdWJsYXllcnMoY29uc3QgVmVjdG9yPFJlZlB0cjxMYXllckNvbXBvc2l0aW5nVGhy
ZWFkPiA+Jik7Ci0gICAgY29uc3QgVmVjdG9yPFJlZlB0cjxMYXllckNvbXBvc2l0aW5nVGhyZWFk
PiA+JiBnZXRTdWJsYXllcnMoKSBjb25zdCB7IHJldHVybiBtX3N1YmxheWVyczsgfQorICAgIGNv
bnN0IFZlY3RvcjxSZWZQdHI8TGF5ZXJDb21wb3NpdGluZ1RocmVhZD4gPiYgc3VibGF5ZXJzKCkg
Y29uc3QgeyByZXR1cm4gbV9zdWJsYXllcnM7IH0KICAgICB2b2lkIHNldFN1cGVybGF5ZXIoTGF5
ZXJDb21wb3NpdGluZ1RocmVhZCogc3VwZXJsYXllcikgeyBtX3N1cGVybGF5ZXIgPSBzdXBlcmxh
eWVyOyB9CiAgICAgTGF5ZXJDb21wb3NpdGluZ1RocmVhZCogc3VwZXJsYXllcigpIGNvbnN0IHsg
cmV0dXJuIG1fc3VwZXJsYXllcjsgfQogCkBAIC0xNzcsOSArMTc3LDEwIEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldFJlcGxpY2FMYXllcihMYXllckNvbXBvc2l0aW5nVGhyZWFkKiBsYXllcikgeyBt
X3JlcGxpY2FMYXllciA9IGxheWVyOyB9CiAgICAgTGF5ZXJDb21wb3NpdGluZ1RocmVhZCogcmVw
bGljYUxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9yZXBsaWNhTGF5ZXIuZ2V0KCk7IH0KIAotICAg
IEZsb2F0UmVjdCBnZXREcmF3UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZHJhd1JlY3Q7IH0KLSAg
ICBjb25zdCBGbG9hdFF1YWQmIGdldFRyYW5zZm9ybWVkQm91bmRzKCkgY29uc3QgeyByZXR1cm4g
bV90cmFuc2Zvcm1lZEJvdW5kczsgfQotICAgIEZsb2F0UXVhZCBnZXRUcmFuc2Zvcm1lZEhvbGVQ
dW5jaFJlY3QoKSBjb25zdDsKKyAgICAvLyBUaGVzZSB1c2Ugbm9ybWFsaXplZCBkZXZpY2UgY29v
cmRpbmF0ZXMKKyAgICBGbG9hdFJlY3QgYm91bmRpbmdCb3goKSBjb25zdCB7IHJldHVybiBtX2Jv
dW5kaW5nQm94OyB9CisgICAgY29uc3QgRmxvYXRRdWFkJiB0cmFuc2Zvcm1lZEJvdW5kcygpIGNv
bnN0IHsgcmV0dXJuIG1fdHJhbnNmb3JtZWRCb3VuZHM7IH0KKyAgICBGbG9hdFF1YWQgdHJhbnNm
b3JtZWRIb2xlUHVuY2hSZWN0KCkgY29uc3Q7CiAKICAgICB2b2lkIGRlbGV0ZVRleHR1cmVzKCk7
CiAKQEAgLTI0Nyw3ICsyNDgsNyBAQCBwcml2YXRlOgogICAgIC8vIFZlcnRleCBkYXRhIGZvciB0
aGUgYm91bmRzIG9mIHRoaXMgbGF5ZXIKICAgICBGbG9hdFF1YWQgbV90cmFuc2Zvcm1lZEJvdW5k
czsKICAgICAvLyBUaGUgYm91bmRpbmcgcmVjdGFuZ2xlIG9mIHRoZSB0cmFuc2Zvcm1lZCBsYXll
cgotICAgIEZsb2F0UmVjdCBtX2RyYXdSZWN0OworICAgIEZsb2F0UmVjdCBtX2JvdW5kaW5nQm94
OwogCiAgICAgT3duUHRyPExheWVyUmVuZGVyZXJTdXJmYWNlPiBtX2xheWVyUmVuZGVyZXJTdXJm
YWNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFj
a2JlcnJ5L0xheWVyRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxh
Y2tiZXJyeS9MYXllckRhdGEuaAppbmRleCA1YzI1OWUzZDViNzIzMGIxYTdhMjg2YzNhYjgzOTky
ZWE2Njc2NDU1Li4wM2E0YTM0MWNiZTM5NDc0ODhmZTcwOTZiODNlMzgyYTQxZWQ1NWU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVy
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkv
TGF5ZXJEYXRhLmgKQEAgLTIyNCw3ICsyMjQsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgUGx1Z2luVmll
dyogbV9wbHVnaW5WaWV3OwogI2lmIEVOQUJMRShWSURFTykKICAgICBNZWRpYVBsYXllciogbV9t
ZWRpYVBsYXllcjsKLSAgICBJbnRSZWN0IG1faG9sZVB1bmNoQ2xpcFJlY3Q7CiAjZW5kaWYKICAg
ICBJbnRSZWN0IG1faG9sZVB1bmNoUmVjdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckZpbHRlclJlbmRlcmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJGaWx0ZXJSZW5k
ZXJlci5jcHAKaW5kZXggNmNlN2FlYmRkZjVjZGU5YzJjZGZjZDBlNzFmMDc5NzQzMTc1OTM4YS4u
Nzg2ODdlNWVlYzY5NDViZTY1NjU4Yjg2MzE4ZTNmMTA1NzhjMDg2MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckZpbHRlclJlbmRl
cmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5
L0xheWVyRmlsdGVyUmVuZGVyZXIuY3BwCkBAIC03MDksNyArNzA5LDcgQEAgdm9pZCBMYXllckZp
bHRlclJlbmRlcmVyOjphcHBseUFjdGlvbnModW5zaWduZWQmIGZibywgTGF5ZXJDb21wb3NpdGlu
Z1RocmVhZCogbGEKIAogICAgIExheWVyUmVuZGVyZXJTdXJmYWNlKiBzdXJmYWNlID0gbGF5ZXIt
PmxheWVyUmVuZGVyZXJTdXJmYWNlKCk7CiAKLSAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIobV9w
b3NpdGlvbkxvY2F0aW9uLCAyLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsICZsYXllci0+Z2V0VHJh
bnNmb3JtZWRCb3VuZHMoKSk7CisgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKG1fcG9zaXRpb25M
b2NhdGlvbiwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCAmbGF5ZXItPnRyYW5zZm9ybWVkQm91
bmRzKCkpOwogICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkobV9wb3NpdGlvbkxvY2F0aW9u
KTsKICAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIobV90ZXhDb29yZExvY2F0aW9uLCAyLCBHTF9G
TE9BVCwgR0xfRkFMU0UsIDAsIHRleGNvb3Jkcyk7CiAgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJB
cnJheShtX3RleENvb3JkTG9jYXRpb24pOwpAQCAtNzY0LDcgKzc2NCw3IEBAIHZvaWQgTGF5ZXJG
aWx0ZXJSZW5kZXJlcjo6YXBwbHlBY3Rpb25zKHVuc2lnbmVkJiBmYm8sIExheWVyQ29tcG9zaXRp
bmdUaHJlYWQqIGxhCiAKICAgICAgICAgYWN0aW9uc1tpXS0+cmVzdG9yZVN0YXRlKCk7CiAKLSAg
ICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKG1fcG9zaXRpb25Mb2NhdGlvbiwgMiwgR0xfRkxP
QVQsIEdMX0ZBTFNFLCAwLCAmbGF5ZXItPmdldFRyYW5zZm9ybWVkQm91bmRzKCkgKTsKKyAgICAg
ICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKG1fcG9zaXRpb25Mb2NhdGlvbiwgMiwgR0xfRkxPQVQs
IEdMX0ZBTFNFLCAwLCAmbGF5ZXItPnRyYW5zZm9ybWVkQm91bmRzKCkpOwogICAgICAgICBnbEVu
YWJsZVZlcnRleEF0dHJpYkFycmF5KG1fcG9zaXRpb25Mb2NhdGlvbik7CiAgICAgICAgIGdsVmVy
dGV4QXR0cmliUG9pbnRlcihtX3RleENvb3JkTG9jYXRpb24sIDIsIEdMX0ZMT0FULCBHTF9GQUxT
RSwgMCwgdGV4Y29vcmRzKTsKICAgICAgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShtX3Rl
eENvb3JkTG9jYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYmxhY2tiZXJyeS9MYXllclJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJSZW5kZXJlci5jcHAKaW5kZXggZDdmYjBjMTM5
ZjEyNTY1NmEyMGI2ZGQ1OTA1OTkzYzVmYjdhODI4Ni4uOGE0NmM3N2Y2MmM2NTNjNThlNTc0N2Q4
ZTgyZTE3ZmVkYzEzOGExNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYmxhY2tiZXJyeS9MYXllclJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVuZGVyZXIuY3BwCkBAIC0zMDksNyAr
MzA5LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyOjpjb21wb3NpdGVMYXllcnMoY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgTGF5ZXJDb20KICAgICBtX3NjYWxlID0gbWF0cml4Lm0x
MSgpICogbV92aWV3cG9ydC53aWR0aCgpIC8gMjsKIAogICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJD
b21wb3NpdGluZ1RocmVhZD4gPiBzdXJmYWNlTGF5ZXJzOwotICAgIGNvbnN0IFZlY3RvcjxSZWZQ
dHI8TGF5ZXJDb21wb3NpdGluZ1RocmVhZD4gPiYgc3VibGF5ZXJzID0gcm9vdExheWVyLT5nZXRT
dWJsYXllcnMoKTsKKyAgICBjb25zdCBWZWN0b3I8UmVmUHRyPExheWVyQ29tcG9zaXRpbmdUaHJl
YWQ+ID4mIHN1YmxheWVycyA9IHJvb3RMYXllci0+c3VibGF5ZXJzKCk7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBzdWJsYXllcnMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgZmxvYXQgb3Bh
Y2l0eSA9IDE7CiAgICAgICAgIEZsb2F0UmVjdCBjbGlwUmVjdChtX2NsaXBSZWN0KTsKQEAgLTYw
MSw3ICs2MDEsNyBAQCB2b2lkIExheWVyUmVuZGVyZXI6OmRyYXdEZWJ1Z0JvcmRlcihMYXllckNv
bXBvc2l0aW5nVGhyZWFkKiBsYXllcikKICAgICBpZiAobGF5ZXJBbHJlYWR5T25TdXJmYWNlKGxh
eWVyKSkKICAgICAgICAgdHJhbnNmb3JtZWRCb3VuZHMgPSBsYXllci0+bGF5ZXJSZW5kZXJlclN1
cmZhY2UoKS0+dHJhbnNmb3JtZWRCb3VuZHMoKTsKICAgICBlbHNlCi0gICAgICAgIHRyYW5zZm9y
bWVkQm91bmRzID0gbGF5ZXItPmdldFRyYW5zZm9ybWVkQm91bmRzKCk7CisgICAgICAgIHRyYW5z
Zm9ybWVkQm91bmRzID0gbGF5ZXItPnRyYW5zZm9ybWVkQm91bmRzKCk7CiAKICAgICBjb25zdCBH
TEVTMlByb2dyYW0mIHByb2dyYW0gPSB1c2VQcm9ncmFtKENvbG9yUHJvZ3JhbSk7CiAgICAgZ2xW
ZXJ0ZXhBdHRyaWJQb2ludGVyKHByb2dyYW0ucG9zaXRpb25Mb2NhdGlvbigpLCAyLCBHTF9GTE9B
VCwgR0xfRkFMU0UsIDAsICZ0cmFuc2Zvcm1lZEJvdW5kcyk7CkBAIC02MTksNyArNjE5LDcgQEAg
dm9pZCBMYXllclJlbmRlcmVyOjpkcmF3SG9sZVB1bmNoUmVjdChMYXllckNvbXBvc2l0aW5nVGhy
ZWFkKiBsYXllcikKIAogICAgIGdsRW5hYmxlKEdMX0JMRU5EKTsKICAgICBnbEJsZW5kRnVuYyhH
TF9PTkUsIEdMX1pFUk8pOwotICAgIEZsb2F0UXVhZCBob2xlID0gbGF5ZXItPmdldFRyYW5zZm9y
bWVkSG9sZVB1bmNoUmVjdCgpOworICAgIEZsb2F0UXVhZCBob2xlID0gbGF5ZXItPnRyYW5zZm9y
bWVkSG9sZVB1bmNoUmVjdCgpOwogICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihwcm9ncmFtLnBv
c2l0aW9uTG9jYXRpb24oKSwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCAmaG9sZSk7CiAgICAg
Z2xEcmF3QXJyYXlzKEdMX1RSSUFOR0xFX0ZBTiwgMCwgNCk7CiAgICAgY2hlY2tHTEVycm9yKCk7
CkBAIC02NDYsNyArNjQ2LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyOjpwcmVwYXJlRnJhbWVSZWN1
cnNpdmUoTGF5ZXJDb21wb3NpdGluZ1RocmVhZCogbGF5ZXIsIGRvdWJsZQogICAgICAgICB9CiAg
ICAgfQogCi0gICAgY29uc3QgVmVjdG9yPFJlZlB0cjxMYXllckNvbXBvc2l0aW5nVGhyZWFkPiA+
JiBzdWJsYXllcnMgPSBsYXllci0+Z2V0U3VibGF5ZXJzKCk7CisgICAgY29uc3QgVmVjdG9yPFJl
ZlB0cjxMYXllckNvbXBvc2l0aW5nVGhyZWFkPiA+JiBzdWJsYXllcnMgPSBsYXllci0+c3VibGF5
ZXJzKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdWJsYXllcnMuc2l6ZSgpOyBpKysp
CiAgICAgICAgIHByZXBhcmVGcmFtZVJlY3Vyc2l2ZShzdWJsYXllcnNbaV0uZ2V0KCksIGFuaW1h
dGlvblRpbWUsIGlzQ29udGV4dEN1cnJlbnQpOwogfQpAQCAtNzg5LDEwICs3ODksMTAgQEAgdm9p
ZCBMYXllclJlbmRlcmVyOjp1cGRhdGVMYXllcnNSZWN1cnNpdmUoTGF5ZXJDb21wb3NpdGluZ1Ro
cmVhZCogbGF5ZXIsIGNvbnN0IFQKICAgICAgICAgICAgIHN1cmZhY2UtPnNldFJlcGxpY2FEcmF3
VHJhbnNmb3JtKHJlcGxpY2FNYXRyaXgpOwogICAgICAgICB9CiAKLSAgICAgICAgSW50UmVjdCBk
cmF3UmVjdCA9IGVuY2xvc2luZ0ludFJlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgYm91bmRz
KSk7Ci0gICAgICAgIHN1cmZhY2UtPnNldENvbnRlbnRSZWN0KGRyYXdSZWN0KTsKKyAgICAgICAg
SW50UmVjdCBjb250ZW50UmVjdCA9IGVuY2xvc2luZ0ludFJlY3QoRmxvYXRSZWN0KEZsb2F0UG9p
bnQ6Onplcm8oKSwgYm91bmRzKSk7CisgICAgICAgIHN1cmZhY2UtPnNldENvbnRlbnRSZWN0KGNv
bnRlbnRSZWN0KTsKIAotICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBwcm9qZWN0aW9uTWF0
cml4ID0gb3J0aG9NYXRyaXgoZHJhd1JlY3QueCgpLCBkcmF3UmVjdC5tYXhYKCksIGRyYXdSZWN0
LnkoKSwgZHJhd1JlY3QubWF4WSgpLCAtMTAwMCwgMTAwMCk7CisgICAgICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4IHByb2plY3Rpb25NYXRyaXggPSBvcnRob01hdHJpeChjb250ZW50UmVjdC54KCks
IGNvbnRlbnRSZWN0Lm1heFgoKSwgY29udGVudFJlY3QueSgpLCBjb250ZW50UmVjdC5tYXhZKCks
IC0xMDAwLCAxMDAwKTsKICAgICAgICAgLy8gVGhlIG9yaWdpbiBvZiB0aGUgbmV3IHN1cmZhY2Ug
aXMgdGhlIHVwcGVyIGxlZnQgY29ybmVyIG9mIHRoZSBsYXllci4KICAgICAgICAgVHJhbnNmb3Jt
YXRpb25NYXRyaXggZHJhd1RyYW5zZm9ybTsKICAgICAgICAgZHJhd1RyYW5zZm9ybS50cmFuc2xh
dGUzZCgwLjUgKiBib3VuZHMud2lkdGgoKSwgMC41ICogYm91bmRzLmhlaWdodCgpLCAwKTsKQEAg
LTgwNSwxOCArODA1LDE4IEBAIHZvaWQgTGF5ZXJSZW5kZXJlcjo6dXBkYXRlTGF5ZXJzUmVjdXJz
aXZlKExheWVyQ29tcG9zaXRpbmdUaHJlYWQqIGxheWVyLCBjb25zdCBUCiAgICAgbGF5ZXItPnNl
dERyYXdUcmFuc2Zvcm0obV9zY2FsZSwgbG9jYWxNYXRyaXgpOwogCiAjaWYgRU5BQkxFKFZJREVP
KQotICAgIGJvb2wgbGF5ZXJWaXNpYmxlID0gY2xpcFJlY3QuaW50ZXJzZWN0cyhsYXllci0+Z2V0
RHJhd1JlY3QoKSkgfHwgbGF5ZXItPm1lZGlhUGxheWVyKCk7CisgICAgYm9vbCBsYXllclZpc2li
bGUgPSBjbGlwUmVjdC5pbnRlcnNlY3RzKGxheWVyLT5ib3VuZGluZ0JveCgpKSB8fCBsYXllci0+
bWVkaWFQbGF5ZXIoKTsKICNlbHNlCi0gICAgYm9vbCBsYXllclZpc2libGUgPSBjbGlwUmVjdC5p
bnRlcnNlY3RzKGxheWVyLT5nZXREcmF3UmVjdCgpKTsKKyAgICBib29sIGxheWVyVmlzaWJsZSA9
IGNsaXBSZWN0LmludGVyc2VjdHMobGF5ZXItPmJvdW5kaW5nQm94KCkpOwogI2VuZGlmCiAKICAg
ICBpZiAobGF5ZXItPm5lZWRzVGV4dHVyZSgpICYmIGxheWVyVmlzaWJsZSkgewotICAgICAgICBJ
bnRSZWN0IGRpcnR5UmVjdCA9IHRvV2luZG93Q29vcmRpbmF0ZXMoaW50ZXJzZWN0aW9uKGxheWVy
LT5nZXREcmF3UmVjdCgpLCBjbGlwUmVjdCkpOworICAgICAgICBJbnRSZWN0IGRpcnR5UmVjdCA9
IHRvV2luZG93Q29vcmRpbmF0ZXMoaW50ZXJzZWN0aW9uKGxheWVyLT5ib3VuZGluZ0JveCgpLCBj
bGlwUmVjdCkpOwogICAgICAgICBtX2xhc3RSZW5kZXJpbmdSZXN1bHRzLmFkZERpcnR5UmVjdChk
aXJ0eVJlY3QpOwogICAgIH0KIAogICAgIGlmIChsYXllci0+bWFza3NUb0JvdW5kcygpKQotICAg
ICAgICBjbGlwUmVjdC5pbnRlcnNlY3QobGF5ZXItPmdldERyYXdSZWN0KCkpOworICAgICAgICBj
bGlwUmVjdC5pbnRlcnNlY3QobGF5ZXItPmJvdW5kaW5nQm94KCkpOwogCiAgICAgLy8gRmxhdHRl
biB0byAyRCBpZiB0aGUgbGF5ZXIgZG9lc24ndCBwcmVzZXJ2ZSAzRC4KICAgICBpZiAoIWxheWVy
LT5wcmVzZXJ2ZXMzRCgpKSB7CkBAIC04MzksNyArODM5LDcgQEAgdm9pZCBMYXllclJlbmRlcmVy
Ojp1cGRhdGVMYXllcnNSZWN1cnNpdmUoTGF5ZXJDb21wb3NpdGluZ1RocmVhZCogbGF5ZXIsIGNv
bnN0IFQKICAgICAvLyBNW3NdID0gTSAqIFRyWy1jZW50ZXJdCiAgICAgbG9jYWxNYXRyaXgudHJh
bnNsYXRlM2QoLWJvdW5kcy53aWR0aCgpICogMC41LCAtYm91bmRzLmhlaWdodCgpICogMC41LCAw
KTsKIAotICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8TGF5ZXJDb21wb3NpdGluZ1RocmVhZD4gPiYg
c3VibGF5ZXJzID0gbGF5ZXItPmdldFN1YmxheWVycygpOworICAgIGNvbnN0IFZlY3RvcjxSZWZQ
dHI8TGF5ZXJDb21wb3NpdGluZ1RocmVhZD4gPiYgc3VibGF5ZXJzID0gbGF5ZXItPnN1YmxheWVy
cygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3VibGF5ZXJzLnNpemUoKTsgaSsrKQog
ICAgICAgICB1cGRhdGVMYXllcnNSZWN1cnNpdmUoc3VibGF5ZXJzW2ldLmdldCgpLCBsb2NhbE1h
dHJpeCwgc3VyZmFjZUxheWVycywgb3BhY2l0eSwgY2xpcFJlY3QpOwogfQpAQCAtODU4LDEwICs4
NTgsMTAgQEAgc3RhdGljIHZvaWQgY29sbGVjdDNEUHJlc2VydmluZ0xheWVycyhWZWN0b3I8TGF5
ZXJDb21wb3NpdGluZ1RocmVhZCo+JiBsYXllcnMpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBsYXllcnMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgTGF5ZXJDb21wb3NpdGluZ1RocmVh
ZCogbGF5ZXIgPSBsYXllcnNbaV07Ci0gICAgICAgIGlmICghbGF5ZXItPnByZXNlcnZlczNEKCkg
fHwgIWxheWVyLT5nZXRTdWJsYXllcnMoKS5zaXplKCkpCisgICAgICAgIGlmICghbGF5ZXItPnBy
ZXNlcnZlczNEKCkgfHwgIWxheWVyLT5zdWJsYXllcnMoKS5zaXplKCkpCiAgICAgICAgICAgICBj
b250aW51ZTsKIAotICAgICAgICBWZWN0b3I8TGF5ZXJDb21wb3NpdGluZ1RocmVhZCo+IHN1Ymxh
eWVycyA9IHJhd1B0clZlY3RvckZyb21SZWZQdHJWZWN0b3IobGF5ZXItPmdldFN1YmxheWVycygp
KTsKKyAgICAgICAgVmVjdG9yPExheWVyQ29tcG9zaXRpbmdUaHJlYWQqPiBzdWJsYXllcnMgPSBy
YXdQdHJWZWN0b3JGcm9tUmVmUHRyVmVjdG9yKGxheWVyLT5zdWJsYXllcnMoKSk7CiAgICAgICAg
IGNvbGxlY3QzRFByZXNlcnZpbmdMYXllcnMoc3VibGF5ZXJzKTsKICAgICAgICAgbGF5ZXJzLmlu
c2VydChpKzEsIHN1YmxheWVycyk7CiAgICAgICAgIGkgKz0gc3VibGF5ZXJzLnNpemUoKTsKQEAg
LTg3Miw5ICs4NzIsOSBAQCB2b2lkIExheWVyUmVuZGVyZXI6OmNvbXBvc2l0ZUxheWVyc1JlY3Vy
c2l2ZShMYXllckNvbXBvc2l0aW5nVGhyZWFkKiBsYXllciwgaW50CiB7CiAgICAgRmxvYXRSZWN0
IHJlY3Q7CiAgICAgaWYgKGxheWVyQWxyZWFkeU9uU3VyZmFjZShsYXllcikpCi0gICAgICAgIHJl
Y3QgPSBsYXllci0+bGF5ZXJSZW5kZXJlclN1cmZhY2UoKS0+ZHJhd1JlY3QoKTsKKyAgICAgICAg
cmVjdCA9IGxheWVyLT5sYXllclJlbmRlcmVyU3VyZmFjZSgpLT5ib3VuZGluZ0JveCgpOwogICAg
IGVsc2UKLSAgICAgICAgcmVjdCA9IGxheWVyLT5nZXREcmF3UmVjdCgpOworICAgICAgICByZWN0
ID0gbGF5ZXItPmJvdW5kaW5nQm94KCk7CiAKICNpZiBFTkFCTEUoVklERU8pCiAgICAgYm9vbCBs
YXllclZpc2libGUgPSBjbGlwUmVjdC5pbnRlcnNlY3RzKHJlY3QpIHx8IGxheWVyLT5tZWRpYVBs
YXllcigpOwpAQCAtOTU5LDE4ICs5NTksMTggQEAgdm9pZCBMYXllclJlbmRlcmVyOjpjb21wb3Np
dGVMYXllcnNSZWN1cnNpdmUoTGF5ZXJDb21wb3NpdGluZ1RocmVhZCogbGF5ZXIsIGludAogICAg
ICAgICB1cGRhdGVTY2lzc29ySWZOZWVkZWQoY2xpcFJlY3QpOwogICAgICAgICBjb25zdCBHTEVT
MlByb2dyYW0mIHByb2dyYW0gPSB1c2VQcm9ncmFtKENvbG9yUHJvZ3JhbSk7CiAgICAgICAgIGds
Q29sb3JNYXNrKEdMX0ZBTFNFLCBHTF9GQUxTRSwgR0xfRkFMU0UsIEdMX0ZBTFNFKTsKLSAgICAg
ICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHByb2dyYW0ucG9zaXRpb25Mb2NhdGlvbigpLCAyLCBH
TF9GTE9BVCwgR0xfRkFMU0UsIDAsICZsYXllci0+Z2V0VHJhbnNmb3JtZWRCb3VuZHMoKSk7Cisg
ICAgICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihwcm9ncmFtLnBvc2l0aW9uTG9jYXRpb24oKSwg
MiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCAmbGF5ZXItPnRyYW5zZm9ybWVkQm91bmRzKCkpOwog
ICAgICAgICBnbERyYXdBcnJheXMoR0xfVFJJQU5HTEVfRkFOLCAwLCA0KTsKICAgICAgICAgZ2xD
b2xvck1hc2soR0xfVFJVRSwgR0xfVFJVRSwgR0xfVFJVRSwgR0xfVFJVRSk7CiAgICAgfQogCiAg
ICAgaWYgKGxheWVyLT5tYXNrc1RvQm91bmRzKCkpCi0gICAgICAgIGNsaXBSZWN0LmludGVyc2Vj
dChsYXllci0+Z2V0RHJhd1JlY3QoKSk7CisgICAgICAgIGNsaXBSZWN0LmludGVyc2VjdChsYXll
ci0+Ym91bmRpbmdCb3goKSk7CiAKICAgICAvLyBIZXJlLCB3ZSBuZWVkIHRvIHNvcnQgdGhlIHdo
b2xlIHN1YnRyZWUgb2YgbGF5ZXJzIHdpdGggcHJlc2VydmUtM2QuIEl0CiAgICAgLy8gYWZmZWN0
cyBhbGwgY2hpbGRyZW4sIGFuZCB0aGUgY2hpbGRyZW4gb2YgYW55IGNoaWxkcmVuIHdpdGggcHJl
c2VydmUtM2QsCiAgICAgLy8gYW5kIHNvIG9uLgotICAgIFZlY3RvcjxMYXllckNvbXBvc2l0aW5n
VGhyZWFkKj4gc3VibGF5ZXJzID0gcmF3UHRyVmVjdG9yRnJvbVJlZlB0clZlY3RvcihsYXllci0+
Z2V0U3VibGF5ZXJzKCkpOworICAgIFZlY3RvcjxMYXllckNvbXBvc2l0aW5nVGhyZWFkKj4gc3Vi
bGF5ZXJzID0gcmF3UHRyVmVjdG9yRnJvbVJlZlB0clZlY3RvcihsYXllci0+c3VibGF5ZXJzKCkp
OwogCiAgICAgYm9vbCBwcmVzZXJ2ZXMzRCA9IGxheWVyLT5wcmVzZXJ2ZXMzRCgpOwogICAgIGJv
b2wgc3VwZXJsYXllclByZXNlcnZlczNEID0gbGF5ZXItPnN1cGVybGF5ZXIoKSAmJiBsYXllci0+
c3VwZXJsYXllcigpLT5wcmVzZXJ2ZXMzRCgpOwpAQCAtMTAwMiw3ICsxMDAyLDcgQEAgdm9pZCBM
YXllclJlbmRlcmVyOjpjb21wb3NpdGVMYXllcnNSZWN1cnNpdmUoTGF5ZXJDb21wb3NpdGluZ1Ro
cmVhZCogbGF5ZXIsIGludAogICAgICAgICB1cGRhdGVTY2lzc29ySWZOZWVkZWQoY2xpcFJlY3Qp
OwogICAgICAgICBjb25zdCBHTEVTMlByb2dyYW0mIHByb2dyYW0gPSB1c2VQcm9ncmFtKENvbG9y
UHJvZ3JhbSk7CiAgICAgICAgIGdsQ29sb3JNYXNrKEdMX0ZBTFNFLCBHTF9GQUxTRSwgR0xfRkFM
U0UsIEdMX0ZBTFNFKTsKLSAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHByb2dyYW0ucG9z
aXRpb25Mb2NhdGlvbigpLCAyLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsICZsYXllci0+Z2V0VHJh
bnNmb3JtZWRCb3VuZHMoKSk7CisgICAgICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihwcm9ncmFt
LnBvc2l0aW9uTG9jYXRpb24oKSwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCAmbGF5ZXItPnRy
YW5zZm9ybWVkQm91bmRzKCkpOwogICAgICAgICBnbERyYXdBcnJheXMoR0xfVFJJQU5HTEVfRkFO
LCAwLCA0KTsKICAgICAgICAgZ2xDb2xvck1hc2soR0xfVFJVRSwgR0xfVFJVRSwgR0xfVFJVRSwg
R0xfVFJVRSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2JsYWNrYmVycnkvTGF5ZXJSZW5kZXJlclN1cmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclJlbmRlcmVyU3VyZmFjZS5jcHAKaW5kZXgg
M2ZmMDc4YWQ3NWJhODBhYmIwZjljNWEwNTQzYWM0OTRhZjM1ZTA0Ni4uMjBkMzEyOTQ0M2Y1M2Qz
YjA3N2MzYjE4ZWQxMDEyYmJiZWRiODYxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclJlbmRlcmVyU3VyZmFjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclJlbmRlcmVy
U3VyZmFjZS5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyU3VyZmFjZTo6
c2V0Q29udGVudFJlY3QoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpCiAgICAgbV9zaXplID0g
Y29udGVudFJlY3Quc2l6ZSgpOwogfQogCi1GbG9hdFJlY3QgTGF5ZXJSZW5kZXJlclN1cmZhY2U6
OmRyYXdSZWN0KCkgY29uc3QKK0Zsb2F0UmVjdCBMYXllclJlbmRlcmVyU3VyZmFjZTo6Ym91bmRp
bmdCb3goKSBjb25zdAogewogICAgIGZsb2F0IGJ4ID0gbV9zaXplLndpZHRoKCkgLyAyLjA7CiAg
ICAgZmxvYXQgYnkgPSBtX3NpemUuaGVpZ2h0KCkgLyAyLjA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVuZGVyZXJTdXJmYWNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVu
ZGVyZXJTdXJmYWNlLmgKaW5kZXggZTg5Njk1NTFhODc0MjhkZDJiOTU4NzhmNGE5ZTU0MzBlM2Y2
ZTAyOS4uOTgxOGFjNzNmYjkxYjgyNjYzYzExMWRmYWEzMzdkYzE3Y2YxMWRlNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclJlbmRl
cmVyU3VyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNr
YmVycnkvTGF5ZXJSZW5kZXJlclN1cmZhY2UuaApAQCAtNTAsNyArNTAsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRSZXBsaWNhRHJhd1RyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgbWF0cml4KSB7IG1fcmVwbGljYURyYXdUcmFuc2Zvcm0gPSBtYXRyaXg7IH0KICAgICBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcmVwbGljYURyYXdUcmFuc2Zvcm0oKSBjb25zdCB7IHJl
dHVybiBtX3JlcGxpY2FEcmF3VHJhbnNmb3JtOyB9CiAKLSAgICBGbG9hdFJlY3QgZHJhd1JlY3Qo
KSBjb25zdDsKKyAgICAvLyBUaGVzZSB1c2Ugbm9ybWFsaXplZCBkZXZpY2UgY29vcmRpbmF0ZXMK
KyAgICBGbG9hdFJlY3QgYm91bmRpbmdCb3goKSBjb25zdDsKICAgICBGbG9hdFF1YWQgdHJhbnNm
b3JtZWRCb3VuZHMoKSBjb25zdDsKIAogICAgIGJvb2wgZW5zdXJlVGV4dHVyZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllcldl
YktpdFRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJy
eS9MYXllcldlYktpdFRocmVhZC5oCmluZGV4IDAxYWY5ZjU4YTgzODA2YjQxOTg0N2YyMTM5ZGIz
YTc0ZWI3MjkzOTIuLmRkNTRmYzZhNjM2ODU4NGIwNWZmNWYxMWE3ZmMxZGNkNWJmNDU2ZDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5
ZXJXZWJLaXRUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9i
bGFja2JlcnJ5L0xheWVyV2ViS2l0VGhyZWFkLmgKQEAgLTExNSw3ICsxMTUsNyBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHNldFN1YmxheWVycyhjb25zdCBWZWN0b3I8UmVmUHRyPExheWVyV2ViS2l0
VGhyZWFkPiA+Jik7CiAKLSAgICBjb25zdCBWZWN0b3I8UmVmUHRyPExheWVyV2ViS2l0VGhyZWFk
PiA+JiBnZXRTdWJsYXllcnMoKSBjb25zdCB7IHJldHVybiBtX3N1YmxheWVyczsgfQorICAgIGNv
bnN0IFZlY3RvcjxSZWZQdHI8TGF5ZXJXZWJLaXRUaHJlYWQ+ID4mIHN1YmxheWVycygpIGNvbnN0
IHsgcmV0dXJuIG1fc3VibGF5ZXJzOyB9CiAKICAgICB2b2lkIHNldFN1YmxheWVyVHJhbnNmb3Jt
KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0pIHsgbV9zdWJsYXllclRyYW5z
Zm9ybSA9IHRyYW5zZm9ybTsgc2V0TmVlZHNDb21taXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L1ZpZGVvTGF5ZXJXZWJLaXRU
aHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9W
aWRlb0xheWVyV2ViS2l0VGhyZWFkLmNwcAppbmRleCAxZmVjMTIwZDJmNmVmYWZkZTkzNmZiZWFj
OTM5ZTlhNTk0MjAwOTJkLi5kN2E5NThhZGJiOTY2NDIwNGRlMjQ5MWNiMGE5MmY2MWU3N2I5OGRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5
L1ZpZGVvTGF5ZXJXZWJLaXRUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2JsYWNrYmVycnkvVmlkZW9MYXllcldlYktpdFRocmVhZC5jcHAKQEAgLTI3LDgg
KzI3LDYgQEAKIAogI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybUxvZy5oPgogCi0jZGVmaW5l
IERFQlVHX1ZJREVPX0NMSVBQSU5HIDAKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBWaWRlb0xh
eWVyV2ViS2l0VGhyZWFkOjpWaWRlb0xheWVyV2ViS2l0VGhyZWFkKE1lZGlhUGxheWVyKiBtZWRp
YVBsYXllcikKQEAgLTY0LDkgKzYyLDYgQEAgdm9pZCBWaWRlb0xheWVyV2ViS2l0VGhyZWFkOjpz
ZXRNZWRpYVBsYXllcihNZWRpYVBsYXllciogbWVkaWFQbGF5ZXIpCiB2b2lkIFZpZGVvTGF5ZXJX
ZWJLaXRUaHJlYWQ6OnNldEhvbGVQdW5jaFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAg
ICBtX2hvbGVQdW5jaFJlY3QgPSByZWN0OwotI2lmIERFQlVHX1ZJREVPX0NMSVBQSU5HCi0gICAg
QkJMT0coQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVsSW5mbywgIlZpZGVvTGF5ZXJXZWJL
aXRUaHJlYWQgbV9ob2xlUHVuY2hSZWN0PSh4PSVkLHk9JWQsd2lkdGg9JWQsaGVpZ2h0PSVkKS4i
LCBtX2hvbGVQdW5jaFJlY3QueCgpLCBtX2hvbGVQdW5jaFJlY3QueSgpLCBtX2hvbGVQdW5jaFJl
Y3Qud2lkdGgoKSwgbV9ob2xlUHVuY2hSZWN0LmhlaWdodCgpKTsKLSNlbmRpZgogICAgIHNldE5l
ZWRzQ29tbWl0KCk7CiB9CiAKQEAgLTg3LDE2ICs4Miw2IEBAIHZvaWQgVmlkZW9MYXllcldlYktp
dFRocmVhZDo6Ym91bmRzQ2hhbmdlZCgpCiAgICAgLy8gTm90ZSB0aGF0IGFsdGhvdWdoIHdlIGtu
b3cgdGhlICpzaXplKiBvZiB0aGlzIGxheWVyLCB3ZSB3b24ndCBrbm93IHRoZSBwb3NpdGlvbiBv
ZiB0aGlzIGxheWVyCiAgICAgLy8gdW50aWwgdGhlIExheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OnNl
dERyYXdUcmFuc2Zvcm0gbWV0aG9kIGlzIGNhbGxlZCBmcm9tIHRoZSBMYXllclJlbmRlcmVyLgog
ICAgIHNldEhvbGVQdW5jaFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBtX2JvdW5kcykp
OwotCi0gICAgLy8gQWxzbyBzZXQgYSBjbGlwcGluZyByZWN0YW5nbGUgZm9yIHRoaXMgaG9sZSBw
dW5jaCByZWN0YW5nbGUuCi0gICAgaWYgKEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbWVkaWFQbGF5
ZXIoKS0+ZnJhbWVWaWV3KCkpCi0gICAgICAgIG1faG9sZVB1bmNoQ2xpcFJlY3QgPSBmcmFtZVZp
ZXctPndpbmRvd0NsaXBSZWN0KCk7Ci0gICAgZWxzZQotICAgICAgICBtX2hvbGVQdW5jaENsaXBS
ZWN0ID0gaG9sZVB1bmNoUmVjdCgpOwotCi0jaWYgREVCVUdfVklERU9fQ0xJUFBJTkcKLSAgICBC
QkxPRyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiVmlkZW9MYXllcldlYktp
dFRocmVhZCBtX2hvbGVQdW5jaENsaXBSZWN0PSh4PSVkLHk9JWQsd2lkdGg9JWQsaGVpZ2h0PSVk
KS4iLCBtX2hvbGVQdW5jaENsaXBSZWN0LngoKSwgbV9ob2xlUHVuY2hDbGlwUmVjdC55KCksIG1f
aG9sZVB1bmNoQ2xpcFJlY3Qud2lkdGgoKSwgbV9ob2xlUHVuY2hDbGlwUmVjdC5oZWlnaHQoKSk7
Ci0jZW5kaWYKIH0KIAogdm9pZCBWaWRlb0xheWVyV2ViS2l0VGhyZWFkOjp1cGRhdGVUZXh0dXJl
Q29udGVudHNJZk5lZWRlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
QXBpL1dlYk92ZXJsYXkuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJPdmVy
bGF5LmNwcAppbmRleCBhZDRmNzA4NmZmYTQwNDg3MzJjNzllMTc0OTc0N2U5ZTI3M2FhMDMyLi4x
OWUxYTMxNzY3ZjcwOWU4ZDM2OGQyZWY4Y2MzYzkxZGIzMjA3YjkyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYk92ZXJsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9BcGkvV2ViT3ZlcmxheS5jcHAKQEAgLTYzMyw3ICs2MzMsNyBAQCB2b2lk
IFdlYk92ZXJsYXlQcml2YXRlQ29tcG9zaXRpbmdUaHJlYWQ6OnJlbW92ZUFuaW1hdGlvbihjb25z
dCBTdHJpbmcmIG5hbWUpCiBQbGF0Zm9ybTo6SW50UmVjdCBXZWJPdmVybGF5UHJpdmF0ZUNvbXBv
c2l0aW5nVGhyZWFkOjpwaXhlbFZpZXdwb3J0UmVjdCgpIGNvbnN0CiB7CiAgICAgaWYgKExheWVy
UmVuZGVyZXIqIHJlbmRlcmVyID0gbV9sYXllckNvbXBvc2l0aW5nVGhyZWFkLT5sYXllclJlbmRl
cmVyKCkpCi0gICAgICAgIHJldHVybiByZW5kZXJlci0+dG9QaXhlbFZpZXdwb3J0Q29vcmRpbmF0
ZXMobV9sYXllckNvbXBvc2l0aW5nVGhyZWFkLT5nZXREcmF3UmVjdCgpKTsKKyAgICAgICAgcmV0
dXJuIHJlbmRlcmVyLT50b1BpeGVsVmlld3BvcnRDb29yZGluYXRlcyhtX2xheWVyQ29tcG9zaXRp
bmdUaHJlYWQtPmJvdW5kaW5nQm94KCkpOwogCiAgICAgcmV0dXJuIFBsYXRmb3JtOjpJbnRSZWN0
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VD
b21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZUNvbXBv
c2l0b3IuY3BwCmluZGV4IDlhMGZjOGNlY2NjZjJkZDU4YThmN2YzMDUyZDgxOWYzNTI5YTQ2NjUu
LjVmMzJiNTZiZmRmYzJiYjYxN2JkZTZhYjZhNDNlMDg5MmE5NDliYzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZUNvbXBvc2l0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZUNvbXBvc2l0b3IuY3BwCkBAIC04Miw3
ICs4Miw3IEBAIHZvaWQgV2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlOjphdHRhY2hPdmVybGF5cyhM
YXllckNvbXBvc2l0aW5nVGhyZWFkKiBvdmVybGF5Um9vCiAgICAgaWYgKCFvdmVybGF5Um9vdCkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgY29uc3QgVmVjdG9yPFJlZlB0cjxMYXllckNvbXBvc2l0
aW5nVGhyZWFkPiA+JiBvdmVybGF5cyA9IG92ZXJsYXlSb290LT5nZXRTdWJsYXllcnMoKTsKKyAg
ICBjb25zdCBWZWN0b3I8UmVmUHRyPExheWVyQ29tcG9zaXRpbmdUaHJlYWQ+ID4mIG92ZXJsYXlz
ID0gb3ZlcmxheVJvb3QtPnN1YmxheWVycygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
b3ZlcmxheXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgTGF5ZXJDb21wb3NpdGluZ1RocmVhZCog
b3ZlcmxheSA9IG92ZXJsYXlzW2ldLmdldCgpOwogICAgICAgICBpZiAoTGF5ZXJDb21wb3NpdGlu
Z1RocmVhZENsaWVudCogY2xpZW50ID0gb3ZlcmxheS0+Y2xpZW50KCkpIHsKQEAgLTI3NSwxNCAr
Mjc1LDE0IEBAIHZvaWQgV2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlOjpyZW1vdmVPdmVybGF5KExh
eWVyQ29tcG9zaXRpbmdUaHJlYWQqIGxheWVyKQogCiAgICAgbGF5ZXItPnJlbW92ZUZyb21TdXBl
cmxheWVyKCk7CiAKLSAgICBpZiAobV9jb21wb3NpdGluZ1RocmVhZE92ZXJsYXlMYXllciAmJiBt
X2NvbXBvc2l0aW5nVGhyZWFkT3ZlcmxheUxheWVyLT5nZXRTdWJsYXllcnMoKS5pc0VtcHR5KCkp
CisgICAgaWYgKG1fY29tcG9zaXRpbmdUaHJlYWRPdmVybGF5TGF5ZXIgJiYgbV9jb21wb3NpdGlu
Z1RocmVhZE92ZXJsYXlMYXllci0+c3VibGF5ZXJzKCkuaXNFbXB0eSgpKQogICAgICAgICBtX2Nv
bXBvc2l0aW5nVGhyZWFkT3ZlcmxheUxheWVyLmNsZWFyKCk7CiB9CiAKIHZvaWQgV2ViUGFnZUNv
bXBvc2l0b3JQcml2YXRlOjpmaW5kRml4ZWRFbGVtZW50UmVjdChMYXllckNvbXBvc2l0aW5nVGhy
ZWFkKiBsYXllciwgV2ViQ29yZTo6SW50UmVjdCYgZml4ZWRFbGVtZW50UmVjdCkKIHsKICAgICBp
ZiAoKGxheWVyLT5oYXNGaXhlZENvbnRhaW5lcigpIHx8IGxheWVyLT5pc0ZpeGVkUG9zaXRpb24o
KSB8fCBsYXllci0+aGFzRml4ZWRBbmNlc3RvckluRE9NVHJlZSgpKSAmJiBsYXllci0+bGF5ZXJS
ZW5kZXJlcigpKSB7Ci0gICAgICAgIEludFJlY3QgZml4ZWRSZWN0ID0gbGF5ZXItPmxheWVyUmVu
ZGVyZXIoKS0+dG9QaXhlbFZpZXdwb3J0Q29vcmRpbmF0ZXMobGF5ZXItPmdldERyYXdSZWN0KCkp
OworICAgICAgICBJbnRSZWN0IGZpeGVkUmVjdCA9IGxheWVyLT5sYXllclJlbmRlcmVyKCktPnRv
UGl4ZWxWaWV3cG9ydENvb3JkaW5hdGVzKGxheWVyLT5ib3VuZGluZ0JveCgpKTsKICAgICAgICAg
Ly8gRklYTUU6IEl0J3MgcG9zc2libGUgdGhhdCB0aGUgcmVjdHMgZG9uJ3QgaW50ZXJzZWN0IG5v
dywgYnV0IHdpbGwgYmUgY29ubmVjdGVkIGJ5IGEgZml4ZWQgcmVjdCBmb3VuZCBsYXRlci4KICAg
ICAgICAgLy8gV2UgbmVlZCB0byBoYW5kbGUgaXQgYXMgd2VsbC4KICAgICAgICAgaWYgKGZpeGVk
RWxlbWVudFJlY3QuaXNFbXB0eSgpIHx8IGZpeGVkRWxlbWVudFJlY3QuaW50ZXJzZWN0cyhmaXhl
ZFJlY3QpKSAvLyBVbml0ZSByZWN0cyBpZiB0aGV5IGludGVyc2VjdCBlYWNoIG90aGVyLgpAQCAt
MjkxLDcgKzI5MSw3IEBAIHZvaWQgV2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlOjpmaW5kRml4ZWRF
bGVtZW50UmVjdChMYXllckNvbXBvc2l0aW5nVGhyZWFkKiBsYXllCiAgICAgICAgICAgICBmaXhl
ZEVsZW1lbnRSZWN0ID0gZml4ZWRSZWN0OwogICAgIH0KIAotICAgIGNvbnN0IFZlY3RvcjxSZWZQ
dHI8TGF5ZXJDb21wb3NpdGluZ1RocmVhZD4gPiYgc3VibGF5ZXJzID0gbGF5ZXItPmdldFN1Ymxh
eWVycygpOworICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8TGF5ZXJDb21wb3NpdGluZ1RocmVhZD4g
PiYgc3VibGF5ZXJzID0gbGF5ZXItPnN1YmxheWVycygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgc3VibGF5ZXJzLnNpemUoKTsgaSsrKQogICAgICAgICBmaW5kRml4ZWRFbGVtZW50UmVj
dChzdWJsYXllcnNbaV0uZ2V0KCksIGZpeGVkRWxlbWVudFJlY3QpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>202529</attachid>
            <date>2013-05-22 05:23:30 -0700</date>
            <delta_ts>2013-05-24 04:33:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-116604-20130522142214.patch</filename>
            <type>text/plain</type>
            <size>31483</size>
            <attacher name="Arvid Nilsson">anilsson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUwMjU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjVjOWRiOWI3NzJkMzcz
MjNmNDcyN2M1YjM4OGZkMTA5ZWNjYWFiNy4uMjlmM2U2NDI1NzFmOTM4MTRmZmNlODMyMDRhMjg0
ZmU2MzkyMzhlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDEzLTA1LTIyICBBcnZp
ZCBOaWxzc29uICA8YW5pbHNzb25AcmltLmNvbT4KKworICAgICAgICBbQmxhY2tCZXJyeV0gRml4
IHN0eWxlIGlzc3VlcyBpbiBCbGFja0JlcnJ5IGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGJhY2tl
bmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjYw
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBSIDI3
MzU1MCwgOTk2MzgKKworICAgICAgICBSZW1vdmUgdGhlICJnZXQiIHByZWZpeCBmcm9tIGdldHRl
cnMgaW4gdGhlIFdlYktpdC0gYW5kIGNvbXBvc2l0aW5nLQorICAgICAgICB0aHJlYWQgbGF5ZXIg
Y2xhc3NlcywgYXMgd2VsbCBhcyBMYXllclJlbmRlcmVyU3VyZmFjZS4gQ2xhcmlmeSB3aGljaAor
ICAgICAgICBnZW9tZXRyeS1yZWxhdGVkIGdldHRlcnMgcmV0dXJuIG5vcm1hbGl6ZWQgZGV2aWNl
IGNvb3JkaW5hdGVzIGJ5IGFkZGluZworICAgICAgICBhIGNvbW1lbnQuCisKKyAgICAgICAgQWxz
byByZW1vdmUgZGVhZCBjb2RlIHJlbGF0ZWQgdG8gTGF5ZXJEYXRhOjptX2hvbGVQdW5jaENsaXBS
ZWN0LCB3aGljaAorICAgICAgICB3YXMgcGFydCBvZiBhbiBldmVudHVhbGx5IGRpc2FibGVkIGZp
eCBmb3IgdmlkZW8gY2xpcHBpbmcgaW4gaWZyYW1lcywKKyAgICAgICAgUFIgOTk2MzguIFNpbmNl
IHdlIG5vdyB1c2UgQUMgbGF5ZXJzIGZvciBpZnJhbWVzLCB0aGUgYnVnIGlzIG5vIGxvbmdlcgor
ICAgICAgICByZXByb2R1Y2libGUsIGFuZCB0aGUgZGVhZCBjb2RlIHdpbGwgbmV2ZXIgbmVlZCB0
byBiZSBlbmFibGVkIGFnYWluLgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvciwgbm8g
bmV3IHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9FR0xJ
bWFnZUxheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RUdMSW1hZ2VMYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50OjpkcmF3VGV4dHVyZXMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVh
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNvbXBvc2l0aW5nVGhyZWFkOjpzZXREcmF3
VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OnRy
YW5zZm9ybWVkSG9sZVB1bmNoUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNvbXBvc2l0
aW5nVGhyZWFkOjpkcmF3VGV4dHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDb21wb3Np
dGluZ1RocmVhZDo6ZHJhd1N1cmZhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Js
YWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJDb21wb3NpdGluZ1RocmVhZDo6c3VibGF5ZXJzKTogUmVtb3ZlZCAiZ2V0IiBwcmVmaXgKKyAg
ICAgICAgKExheWVyQ29tcG9zaXRpbmdUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJD
b21wb3NpdGluZ1RocmVhZDo6Ym91bmRpbmdCb3gpOiBSZW5hbWVkIGZyb20gImdldERyYXdSZWN0
IgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6dHJhbnNmb3JtZWRC
b3VuZHMpOiBSZW1vdmVkICJnZXQiIHByZWZpeAorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDb21w
b3NpdGluZ1RocmVhZDo6dHJhbnNmb3JtZWRIb2xlUHVuY2hSZWN0KTogUmVtb3ZlZCAiZ2V0IiBw
cmVmaXgKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyRGF0YS5o
OgorICAgICAgICAoTGF5ZXJEYXRhKTogUmVtb3ZlZCB1bnVzZWQgZGF0YSBtZW1iZXIgIm1faG9s
ZVB1bmNoQ2xpcFJlY3QiCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9M
YXllckZpbHRlclJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyRmlsdGVyUmVu
ZGVyZXI6OmFwcGx5QWN0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2ti
ZXJyeS9MYXllclJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXI6
OmNvbXBvc2l0ZUxheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyOjpkcmF3
RGVidWdCb3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlcjo6ZHJhd0hvbGVQ
dW5jaFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlcjo6cHJlcGFyZUZyYW1l
UmVjdXJzaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXI6OnVwZGF0ZUxheWVy
c1JlY3Vyc2l2ZSk6CisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0M0RQcmVzZXJ2aW5nTGF5ZXJz
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXI6OmNvbXBvc2l0ZUxheWVyc1JlY3Vy
c2l2ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclJlbmRl
cmVyU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyU3VyZmFjZTo6
Ym91bmRpbmdCb3gpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5
ZXJSZW5kZXJlclN1cmZhY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJTdXJm
YWNlOjpib3VuZGluZ0JveCk6IFJlbmFtZWQgZnJvbSAiZHJhd1JlY3QiIGJlY2F1c2UgdGhhdCBz
b3VuZHMgbGlrZSBhIHZlcmIsIGFuZCB0aGlzIGlzIGEgZ2V0dGVyCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllcldlYktpdFRocmVhZC5oOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJXZWJLaXRUaHJlYWQ6OnN1YmxheWVycyk6IFJlbW92ZWQgImdldCIgcHJlZml4
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9WaWRlb0xheWVyV2ViS2l0
VGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJXZWJLaXRUaHJlYWQ6OnNl
dEhvbGVQdW5jaFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXllcldlYktpdFRocmVh
ZDo6Ym91bmRzQ2hhbmdlZCk6CisKIDIwMTMtMDMtMjIgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTQ2MjM5KTogUmVwcm9kdWNpYmxl
IGNyYXNoIGluIFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKaW5kZXggNmYwNzlhNjY1MDQ5NjA2ODZlNjU4MGRmZjkw
NDllMGJlZGEzYzdiZi4uYWZmNjVjODliZDNlMTliNjYxM2I5Y2JlN2MxYjIyYWZkYWI4Y2Y0NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTMtMDUt
MjIgIEFydmlkIE5pbHNzb24gIDxhbmlsc3NvbkByaW0uY29tPgorCisgICAgICAgIFtCbGFja0Jl
cnJ5XSBGaXggc3R5bGUgaXNzdWVzIGluIEJsYWNrQmVycnkgYWNjZWxlcmF0ZWQgY29tcG9zaXRp
bmcgYmFja2VuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTE2NjA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRhcHQgdG8gdGhlIHJlbW92YWwgb2YgImdldCIgcHJlZml4IGZyb20gZ2V0dGVycyBpbiB0
aGUgV2ViS2l0LSBhbmQKKyAgICAgICAgY29tcG9zaXRpbmctdGhyZWFkIGxheWVyIGNsYXNzZXMu
CisKKyAgICAgICAgKiBBcGkvV2ViT3ZlcmxheS5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpX
ZWJLaXQ6OldlYk92ZXJsYXlQcml2YXRlQ29tcG9zaXRpbmdUaHJlYWQ6OnBpeGVsVmlld3BvcnRS
ZWN0KToKKyAgICAgICAgKiBBcGkvV2ViUGFnZUNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoQmxh
Y2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6OmF0dGFjaE92ZXJsYXlz
KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRl
OjpyZW1vdmVPdmVybGF5KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZUNv
bXBvc2l0b3JQcml2YXRlOjpmaW5kRml4ZWRFbGVtZW50UmVjdCk6CisKIDIwMTMtMDUtMTcgIE1p
a2UgRmVudG9uICA8bWlmZW50b25AcmltLmNvbT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gUmVt
b3ZlIHN0YWxlIGNvbW1lbnQgZm9yIHNlbGVjdCBtb3VzZSBoYW5kbGluZy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvRUdMSW1hZ2VMYXll
ckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2JsYWNrYmVycnkvRUdMSW1hZ2VMYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50LmNw
cAppbmRleCAzZTQ4YzI5MzVlY2EyZThlMzU1ZDRhZTdhZjNhMDVkYzdlMjQ5NjkxLi42NjhhZGYy
NWE1MzMxZDA0MTZhNDQwM2ZlZjA4M2VmZDk4MzQ1NTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0VHTEltYWdlTGF5ZXJDb21wb3NpdGlu
Z1RocmVhZENsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YmxhY2tiZXJyeS9FR0xJbWFnZUxheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQuY3BwCkBAIC01
Niw3ICs1Niw3IEBAIHZvaWQgRUdMSW1hZ2VMYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50Ojpk
cmF3VGV4dHVyZXMoTGF5ZXJDb21wb3NpdGluZ1RocmVhZCoKICAgICBnbEJsZW5kRnVuYyhHTF9P
TkUsIEdMX09ORV9NSU5VU19TUkNfQUxQSEEpOwogICAgIGdsVXNlUHJvZ3JhbShwcm9ncmFtLm1f
cHJvZ3JhbSk7CiAgICAgZ2xVbmlmb3JtMWYocHJvZ3JhbS5vcGFjaXR5TG9jYXRpb24oKSwgbGF5
ZXItPmRyYXdPcGFjaXR5KCkpOwotICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihwcm9ncmFtLnBv
c2l0aW9uTG9jYXRpb24oKSwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCAmbGF5ZXItPmdldFRy
YW5zZm9ybWVkQm91bmRzKCkpOworICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihwcm9ncmFtLnBv
c2l0aW9uTG9jYXRpb24oKSwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCAmbGF5ZXItPnRyYW5z
Zm9ybWVkQm91bmRzKCkpOwogICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihwcm9ncmFtLnRleENv
b3JkTG9jYXRpb24oKSwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCB1cHNpZGVEb3duKTsKICAg
ICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1fdGV4dHVyZUFjY2Vzc29yLT50ZXh0dXJl
SUQoKSk7CiAgICAgZ2xEcmF3QXJyYXlzKEdMX1RSSUFOR0xFX0ZBTiwgMCwgNCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQ29t
cG9zaXRpbmdUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxh
Y2tiZXJyeS9MYXllckNvbXBvc2l0aW5nVGhyZWFkLmNwcAppbmRleCBiZDIyOWE4ZGE4OGZmYTcz
MjlmMWNiYWQzODdmMTUwMzgwMDE5MzIwLi4yNDM1ZWQ1MWMwM2M4NGYyODgyMWZhMDMwOThiYWQ4
MTkwNDdmZjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9i
bGFja2JlcnJ5L0xheWVyQ29tcG9zaXRpbmdUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5jcHAK
QEAgLTUzLDggKzUzLDYgQEAKICNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1Mb2cuaD4KICNp
bmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogCi0jZGVmaW5lIERFQlVHX1ZJREVPX0NMSVBQSU5H
IDAKLQogdXNpbmcgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpHTEVTMlByb2dyYW07
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE0Niw2OSArMTQ0LDE0IEBAIHZvaWQgTGF5ZXJD
b21wb3NpdGluZ1RocmVhZDo6c2V0RHJhd1RyYW5zZm9ybShkb3VibGUgc2NhbGUsIGNvbnN0IFRy
YW5zZm9ybWF0aW9uCiAgICAgbV90cmFuc2Zvcm1lZEJvdW5kcy5zZXRQMyhtYXRyaXgubWFwUG9p
bnQoRmxvYXRQb2ludChieCwgYnkpKSk7CiAgICAgbV90cmFuc2Zvcm1lZEJvdW5kcy5zZXRQNCht
YXRyaXgubWFwUG9pbnQoRmxvYXRQb2ludChieCwgLWJ5KSkpOwogCi0gICAgbV9kcmF3UmVjdCA9
IG1fdHJhbnNmb3JtZWRCb3VuZHMuYm91bmRpbmdCb3goKTsKLX0KLQotc3RhdGljIEZsb2F0UXVh
ZCBnZXRUcmFuc2Zvcm1lZFJlY3QoY29uc3QgSW50U2l6ZSYgYm91bmRzLCBjb25zdCBJbnRSZWN0
JiByZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9ybSkKLXsKLSAg
ICBmbG9hdCB4ID0gLWJvdW5kcy53aWR0aCgpIC8gMi4wICsgcmVjdC54KCk7Ci0gICAgZmxvYXQg
eSA9IC1ib3VuZHMuaGVpZ2h0KCkgLyAyLjAgKyByZWN0LnkoKTsKLSAgICBmbG9hdCB3ID0gcmVj
dC53aWR0aCgpOwotICAgIGZsb2F0IGggPSByZWN0LmhlaWdodCgpOwotICAgIEZsb2F0UXVhZCBy
ZXN1bHQ7Ci0gICAgcmVzdWx0LnNldFAxKGRyYXdUcmFuc2Zvcm0ubWFwUG9pbnQoRmxvYXRQb2lu
dCh4LCB5KSkpOwotICAgIHJlc3VsdC5zZXRQMihkcmF3VHJhbnNmb3JtLm1hcFBvaW50KEZsb2F0
UG9pbnQoeCwgeSArIGgpKSk7Ci0gICAgcmVzdWx0LnNldFAzKGRyYXdUcmFuc2Zvcm0ubWFwUG9p
bnQoRmxvYXRQb2ludCh4ICsgdywgeSArIGgpKSk7Ci0gICAgcmVzdWx0LnNldFA0KGRyYXdUcmFu
c2Zvcm0ubWFwUG9pbnQoRmxvYXRQb2ludCh4ICsgdywgeSkpKTsKLQotICAgIHJldHVybiByZXN1
bHQ7CisgICAgbV9ib3VuZGluZ0JveCA9IG1fdHJhbnNmb3JtZWRCb3VuZHMuYm91bmRpbmdCb3go
KTsKIH0KIAotCi1GbG9hdFF1YWQgTGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6Z2V0VHJhbnNmb3Jt
ZWRIb2xlUHVuY2hSZWN0KCkgY29uc3QKK0Zsb2F0UXVhZCBMYXllckNvbXBvc2l0aW5nVGhyZWFk
Ojp0cmFuc2Zvcm1lZEhvbGVQdW5jaFJlY3QoKSBjb25zdAogewotICAgIC8vIEZJWE1FOiB0aGUg
Zm9sbG93aW5nIGxpbmUgZGlzYWJsZXMgY2xpcHBpbmcgYSB2aWRlbyBpbiBhbiBpZnJhbWUgaS5l
LiB0aGUgZml4IGFzc29jaWF0ZWQgd2l0aCBQUiA5OTYzOC4KLSAgICAvLyBTb21lIHJldmlzZWQg
dGVzdCBjYXNlIChlLmcuIHZpZGVvLWlmcmFtZS5odG1sKSBzaG93IHRoYXQgdGhlIG9yaWdpbmFs
IGZpeCB3b3JrcyBjb3JyZWN0bHkgd2hlbiBzY3JvbGxpbmcKLSAgICAvLyB0aGUgY29udGVudHMg
b2YgdGhlIGZyYW1lLCBidXQgZmFpbHMgdG8gY2xpcCBjb3JyZWN0bHkgaWYgdGhlIHBhZ2UgKG1h
aW4gZnJhbWUpIGlzIHNjcm9sbGVkLgotICAgIHN0YXRpYyBib29sIGVuYWJsZVZpZGVvQ2xpcHBp
bmcgPSBmYWxzZTsKLQotICAgIGlmICghbWVkaWFQbGF5ZXIoKSB8fCAhZW5hYmxlVmlkZW9DbGlw
cGluZykgewotICAgICAgICAvLyBtX2hvbGVQdW5jaENsaXBSZWN0IGlzIHZhbGlkIG9ubHkgd2hl
biB0aGVyZSdzIGEgbWVkaWEgcGxheWVyLgotICAgICAgICByZXR1cm4gZ2V0VHJhbnNmb3JtZWRS
ZWN0KG1fYm91bmRzLCBtX2hvbGVQdW5jaFJlY3QsIG1fZHJhd1RyYW5zZm9ybSk7Ci0gICAgfQot
Ci0gICAgLy8gVGhlIGhvbGUgcHVuY2ggcmVjdGFuZ2xlIG1heSBuZWVkIHRvIGJlIGNsaXBwZWQs
Ci0gICAgLy8gZS5nLiBpZiB0aGUgPHZpZGVvPiBpcyBvbiBhIGxheWVyIHRoYXQncyBpbmNsdWRl
ZCBhbmQgY2xpcHBlZCBieSBhbiA8aWZyYW1lPi4KLQotICAgIC8vIEluIG9yZGVyIHRvIGNsaXAg
d2UgbmVlZCB0byBkZXRlcm1pbmUgdGhlIGN1cnJlbnQgcG9zaXRpb24gb2YgdGhpcyBsYXllciwg
d2hpY2gKLSAgICAvLyBpcyBlbmNvZGVkIGluIHRoZSBtX2RyYXdUcmFuc2Zvcm0gdmFsdWUsIHdo
aWNoIHdhcyB1c2VkIHRvIGluaXRpYWxpemUgbV9kcmF3UmVjdC4KLSAgICBJbnRSZWN0IGRyYXdS
ZWN0ID0gbV9sYXllclJlbmRlcmVyLT50b0RvY3VtZW50Vmlld3BvcnRDb29yZGluYXRlcyhtX2Ry
YXdSZWN0KTsKLQotICAgIC8vIEFzc2VydCB0aGF0IGluIHRoaXMgY2FzZSwgd2hlcmUgdGhlIGhv
bGUgcHVuY2ggcmVjdGFuZ2xlIGVxdWFscyB0aGUgc2l6ZSBvZiB0aGUgbGF5ZXIsCi0gICAgLy8g
dGhlIGRyYXdSZWN0IGhhcyB0aGUgc2FtZSBzaXplIGFzIHRoZSBob2xlIHB1bmNoLgotICAgIC8v
IEFTU0VSVChkcmF3UmVjdC5zaXplKCkgPT0gbV9ob2xlUHVuY2hSZWN0LnNpemUoKSk7Ci0gICAg
Ly8gRG9uJ3QgYXNzZXJ0IGl0IHByb2dyYW10aWNhbGx5IHRob3VnaCBiZWNhdXNlIHRoZXJlIG1h
eSBiZSBvZmYtYnktb25lIGVycm9yIGR1ZSB0byByb3VuZGluZyB3aGVuIHRoZXJlJ3Mgem9vbWlu
Zy4KLQotICAgIC8vIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gZHJhd1JlY3QgYW5kIG1faG9sZVB1
bmNoUmVjdCBpcyB0aGF0IGRyYXdSZWN0IGhhcyBhbiBhY2N1cmF0ZSBwb3NpdGlvbgotICAgIC8v
IGluIFdlYktpdCBkb2N1bWVudCBjb29yZGluYXRlcywgd2hlcmVhcyB0aGUgbV9ob2xlUHVuY2hS
ZWN0IGxvY2F0aW9uIGlzICgwLDApIGkuZS4gaXQncyByZWxhdGl2ZSB0byB0aGlzIGxheWVyLgot
Ci0gICAgLy8gQ2xpcCB0aGUgZHJhd1JlY3QuCi0gICAgLy8gQm90aCBkcmF3UmVjdCBhbmQgbV9o
b2xlUHVuY2hDbGlwUmVjdCBhbHJlYWR5IGhhdmUgY29ycmVjdCBsb2NhdGlvbnMsIGluIFdlYktp
dCBkb2N1bWVudCBjb29yZGluYXRlcy4KLSAgICBJbnRQb2ludCBsb2NhdGlvbiA9IGRyYXdSZWN0
LmxvY2F0aW9uKCk7Ci0gICAgZHJhd1JlY3QuaW50ZXJzZWN0KG1faG9sZVB1bmNoQ2xpcFJlY3Qp
OwotCi0gICAgLy8gU2hpZnQgdGhlIGNsaXBwZWQgZHJhd1JlY3QgdG8gaGF2ZSB0aGUgc2FtZSBr
aW5kIG9mIGxvY2F0ZWQtYXQtemVybyBwb3NpdGlvbiBhcyB0aGUgb3JpZ2luYWwgaG9sZVB1bmNo
UmVjdC4KLSAgICBkcmF3UmVjdC5tb3ZlKC1sb2NhdGlvbi54KCksIC1sb2NhdGlvbi55KCkpOwot
Ci0jaWYgREVCVUdfVklERU9fQ0xJUFBJTkcKLSAgICBJbnRSZWN0IGRyYXdSZWN0SW5XZWJLaXRE
b2N1bWVudENvb3JkaW5hdGlvbiA9IG1fbGF5ZXJSZW5kZXJlci0+dG9XZWJLaXREb2N1bWVudENv
b3JkaW5hdGVzKG1fZHJhd1JlY3QpOwotICAgIEJCTE9HKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpM
b2dMZXZlbEluZm8sICJMYXllckNvbXBvc2l0aW5nVGhyZWFkOjpnZXRUcmFuc2Zvcm1lZEhvbGVQ
dW5jaFJlY3QoKSAtIGRyYXdSZWN0PSh4PSVkLHk9JWQsd2lkdGg9JWQsaGVpZ2h0PSVkKSBjbGlw
UmVjdD0oeD0lZCx5PSVkLHdpZHRoPSVkLGhlaWdodD0lZCkgY2xpcHBlZFJlY3Q9KHg9JWQseT0l
ZCx3aWR0aD0lZCxoZWlnaHQ9JWQpLiIsCi0gICAgICAgIGRyYXdSZWN0SW5XZWJLaXREb2N1bWVu
dENvb3JkaW5hdGlvbi54KCksIGRyYXdSZWN0SW5XZWJLaXREb2N1bWVudENvb3JkaW5hdGlvbi55
KCksIGRyYXdSZWN0SW5XZWJLaXREb2N1bWVudENvb3JkaW5hdGlvbi53aWR0aCgpLCBkcmF3UmVj
dEluV2ViS2l0RG9jdW1lbnRDb29yZGluYXRpb24uaGVpZ2h0KCksCi0gICAgICAgIG1faG9sZVB1
bmNoQ2xpcFJlY3QueCgpLCBtX2hvbGVQdW5jaENsaXBSZWN0LnkoKSwgbV9ob2xlUHVuY2hDbGlw
UmVjdC53aWR0aCgpLCBtX2hvbGVQdW5jaENsaXBSZWN0LmhlaWdodCgpLAotICAgICAgICBkcmF3
UmVjdC54KCksIGRyYXdSZWN0LnkoKSwgZHJhd1JlY3Qud2lkdGgoKSwgZHJhd1JlY3QuaGVpZ2h0
KCkpOwotI2VuZGlmCi0KLSAgICByZXR1cm4gZ2V0VHJhbnNmb3JtZWRSZWN0KG1fYm91bmRzLCBk
cmF3UmVjdCwgbV9kcmF3VHJhbnNmb3JtKTsKKyAgICBGbG9hdFJlY3QgaG9sZVB1bmNoUmVjdCht
X2hvbGVQdW5jaFJlY3QpOworICAgIGhvbGVQdW5jaFJlY3QubW92ZUJ5KC1vcmlnaW4oKSk7Cisg
ICAgcmV0dXJuIG1fZHJhd1RyYW5zZm9ybS5tYXBRdWFkKGhvbGVQdW5jaFJlY3QpOwogfQogCiB2
b2lkIExheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OmRyYXdUZXh0dXJlcyhkb3VibGUgc2NhbGUsIGNv
bnN0IEdMRVMyUHJvZ3JhbSYgcHJvZ3JhbSwgY29uc3QgRmxvYXRSZWN0JiB2aXNpYmxlUmVjdCkK
QEAgLTI1Myw3ICsxOTYsNyBAQCB2b2lkIExheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OmRyYXdUZXh0
dXJlcyhkb3VibGUgc2NhbGUsIGNvbnN0IEdMRVMyUHJvZ3JhbSYgcHJvZwogICAgICAgICAgICAg
ICAgICAgICAtbV90cmFuc2Zvcm1lZEJvdW5kcy5wMSgpLnkoKSAqIHZyaDIgKyB2cmgyICsgdmlz
aWJsZVJlY3QueSgpKTsKICAgICAgICAgICAgICAgICBwYWludFJlY3QgPSBJbnRSZWN0KHJvdW5k
ZWRJbnRQb2ludChwKSwgbV9ib3VuZHMpOwogICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAg
ICAgICAgcGFpbnRSZWN0ID0gbV9sYXllclJlbmRlcmVyLT50b1dpbmRvd0Nvb3JkaW5hdGVzKG1f
ZHJhd1JlY3QpOworICAgICAgICAgICAgICAgIHBhaW50UmVjdCA9IG1fbGF5ZXJSZW5kZXJlci0+
dG9XaW5kb3dDb29yZGluYXRlcyhtX2JvdW5kaW5nQm94KTsKIAogICAgICAgICAgICAgbV9tZWRp
YVBsYXllci0+cGFpbnQoMCwgcGFpbnRSZWN0KTsKICAgICAgICAgICAgIE1lZGlhUGxheWVyUHJp
dmF0ZSogbXBwID0gc3RhdGljX2Nhc3Q8TWVkaWFQbGF5ZXJQcml2YXRlKj4obV9tZWRpYVBsYXll
ci0+cGxhdGZvcm1NZWRpYSgpLm1lZGlhLnFueE1lZGlhUGxheWVyKTsKQEAgLTI5OSw3ICsyNDIs
NyBAQCB2b2lkIExheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OmRyYXdTdXJmYWNlKGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmbwogICAgICAgICBnbEJsZW5kRnVuYyhHTF9PTkUs
IEdMX09ORV9NSU5VU19TUkNfQUxQSEEpOwogICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRV
UkVfMkQsIHN1cmZhY2VUZXhJRCk7CiAKLSAgICAgICAgRmxvYXRRdWFkIHN1cmZhY2VRdWFkID0g
Z2V0VHJhbnNmb3JtZWRSZWN0KG1fYm91bmRzLCBJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIG1f
Ym91bmRzKSwgZHJhd1RyYW5zZm9ybSk7CisgICAgICAgIEZsb2F0UXVhZCBzdXJmYWNlUXVhZCA9
IGRyYXdUcmFuc2Zvcm0ubWFwUXVhZChGbG9hdFJlY3QoLW9yaWdpbigpLCBib3VuZHMoKSkpOwog
ICAgICAgICBnbFVuaWZvcm0xZihwcm9ncmFtLm9wYWNpdHlMb2NhdGlvbigpLCBsYXllclJlbmRl
cmVyU3VyZmFjZSgpLT5kcmF3T3BhY2l0eSgpKTsKICAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2lu
dGVyKHByb2dyYW0ucG9zaXRpb25Mb2NhdGlvbigpLCAyLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAs
ICZzdXJmYWNlUXVhZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBvc2l0aW5nVGhyZWFkLmgK
aW5kZXggMGIyMDJjYWU0NWNlYTdiNjJlMzZlZTQ2NGIwNGI3ZWI1MTAwNmU1NS4uMDNlNGExODVi
OWQ0YWUxMTYxMjMyNjRjM2U0MmEzMDlhNzI1MWViMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBvc2l0aW5nVGhyZWFkLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNv
bXBvc2l0aW5nVGhyZWFkLmgKQEAgLTE1Myw3ICsxNTMsNyBAQCBwdWJsaWM6CiAKICAgICBjb25z
dCBMYXllckNvbXBvc2l0aW5nVGhyZWFkKiByb290TGF5ZXIoKSBjb25zdDsKICAgICB2b2lkIHNl
dFN1YmxheWVycyhjb25zdCBWZWN0b3I8UmVmUHRyPExheWVyQ29tcG9zaXRpbmdUaHJlYWQ+ID4m
KTsKLSAgICBjb25zdCBWZWN0b3I8UmVmUHRyPExheWVyQ29tcG9zaXRpbmdUaHJlYWQ+ID4mIGdl
dFN1YmxheWVycygpIGNvbnN0IHsgcmV0dXJuIG1fc3VibGF5ZXJzOyB9CisgICAgY29uc3QgVmVj
dG9yPFJlZlB0cjxMYXllckNvbXBvc2l0aW5nVGhyZWFkPiA+JiBzdWJsYXllcnMoKSBjb25zdCB7
IHJldHVybiBtX3N1YmxheWVyczsgfQogICAgIHZvaWQgc2V0U3VwZXJsYXllcihMYXllckNvbXBv
c2l0aW5nVGhyZWFkKiBzdXBlcmxheWVyKSB7IG1fc3VwZXJsYXllciA9IHN1cGVybGF5ZXI7IH0K
ICAgICBMYXllckNvbXBvc2l0aW5nVGhyZWFkKiBzdXBlcmxheWVyKCkgY29uc3QgeyByZXR1cm4g
bV9zdXBlcmxheWVyOyB9CiAKQEAgLTE2MSw2ICsxNjEsOSBAQCBwdWJsaWM6CiAgICAgTGF5ZXJS
ZW5kZXJlciogbGF5ZXJSZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJSZW5kZXJlcjsg
fQogICAgIHZvaWQgc2V0TGF5ZXJSZW5kZXJlcihMYXllclJlbmRlcmVyKik7CiAKKyAgICAvLyBU
aGUgZHJhdyB0cmFuc2Zvcm0gZXhwZWN0cyB0aGUgb3JpZ2luIHRvIGJlIGxvY2F0ZWQgYXQgdGhl
IGNlbnRlciBvZiB0aGUgbGF5ZXIuCisgICAgRmxvYXRQb2ludCBvcmlnaW4oKSBjb25zdCB7IHJl
dHVybiBGbG9hdFBvaW50KG1fYm91bmRzLndpZHRoKCkgLyAyLjBmLCBtX2JvdW5kcy5oZWlnaHQo
KSAvIDIuMGYpOyB9CisKICAgICB2b2lkIHNldERyYXdUcmFuc2Zvcm0oZG91YmxlIHNjYWxlLCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOwogICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiBkcmF3VHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9kcmF3VHJhbnNmb3JtOyB9CiAK
QEAgLTE3Nyw5ICsxODAsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UmVwbGljYUxheWVyKExh
eWVyQ29tcG9zaXRpbmdUaHJlYWQqIGxheWVyKSB7IG1fcmVwbGljYUxheWVyID0gbGF5ZXI7IH0K
ICAgICBMYXllckNvbXBvc2l0aW5nVGhyZWFkKiByZXBsaWNhTGF5ZXIoKSBjb25zdCB7IHJldHVy
biBtX3JlcGxpY2FMYXllci5nZXQoKTsgfQogCi0gICAgRmxvYXRSZWN0IGdldERyYXdSZWN0KCkg
Y29uc3QgeyByZXR1cm4gbV9kcmF3UmVjdDsgfQotICAgIGNvbnN0IEZsb2F0UXVhZCYgZ2V0VHJh
bnNmb3JtZWRCb3VuZHMoKSBjb25zdCB7IHJldHVybiBtX3RyYW5zZm9ybWVkQm91bmRzOyB9Ci0g
ICAgRmxvYXRRdWFkIGdldFRyYW5zZm9ybWVkSG9sZVB1bmNoUmVjdCgpIGNvbnN0OworICAgIC8v
IFRoZXNlIHVzZSBub3JtYWxpemVkIGRldmljZSBjb29yZGluYXRlcworICAgIEZsb2F0UmVjdCBi
b3VuZGluZ0JveCgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRpbmdCb3g7IH0KKyAgICBjb25zdCBG
bG9hdFF1YWQmIHRyYW5zZm9ybWVkQm91bmRzKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2Zvcm1l
ZEJvdW5kczsgfQorICAgIEZsb2F0UXVhZCB0cmFuc2Zvcm1lZEhvbGVQdW5jaFJlY3QoKSBjb25z
dDsKIAogICAgIHZvaWQgZGVsZXRlVGV4dHVyZXMoKTsKIApAQCAtMjQ3LDcgKzI1MSw3IEBAIHBy
aXZhdGU6CiAgICAgLy8gVmVydGV4IGRhdGEgZm9yIHRoZSBib3VuZHMgb2YgdGhpcyBsYXllcgog
ICAgIEZsb2F0UXVhZCBtX3RyYW5zZm9ybWVkQm91bmRzOwogICAgIC8vIFRoZSBib3VuZGluZyBy
ZWN0YW5nbGUgb2YgdGhlIHRyYW5zZm9ybWVkIGxheWVyCi0gICAgRmxvYXRSZWN0IG1fZHJhd1Jl
Y3Q7CisgICAgRmxvYXRSZWN0IG1fYm91bmRpbmdCb3g7CiAKICAgICBPd25QdHI8TGF5ZXJSZW5k
ZXJlclN1cmZhY2U+IG1fbGF5ZXJSZW5kZXJlclN1cmZhY2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJEYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyRGF0YS5oCmluZGV4
IDVjMjU5ZTNkNWI3MjMwYjFhN2EyODZjM2FiODM5OTJlYTY2NzY0NTUuLjAzYTRhMzQxY2JlMzk0
NzQ4OGZlNzA5NmI4M2UzODJhNDFlZDU1ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckRhdGEuaApAQCAtMjI0LDcgKzIy
NCw2IEBAIHByb3RlY3RlZDoKICAgICBQbHVnaW5WaWV3KiBtX3BsdWdpblZpZXc7CiAjaWYgRU5B
QkxFKFZJREVPKQogICAgIE1lZGlhUGxheWVyKiBtX21lZGlhUGxheWVyOwotICAgIEludFJlY3Qg
bV9ob2xlUHVuY2hDbGlwUmVjdDsKICNlbmRpZgogICAgIEludFJlY3QgbV9ob2xlUHVuY2hSZWN0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2Jl
cnJ5L0xheWVyRmlsdGVyUmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYmxhY2tiZXJyeS9MYXllckZpbHRlclJlbmRlcmVyLmNwcAppbmRleCA2Y2U3YWViZGRm
NWNkZTljMmNkZmNkMGU3MWYwNzk3NDMxNzU5MzhhLi43ODY4N2U1ZWVjNjk0NWJlNjU2NThiODYz
MThlM2YxMDU3OGMwODYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ibGFja2JlcnJ5L0xheWVyRmlsdGVyUmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJGaWx0ZXJSZW5kZXJlci5jcHAK
QEAgLTcwOSw3ICs3MDksNyBAQCB2b2lkIExheWVyRmlsdGVyUmVuZGVyZXI6OmFwcGx5QWN0aW9u
cyh1bnNpZ25lZCYgZmJvLCBMYXllckNvbXBvc2l0aW5nVGhyZWFkKiBsYQogCiAgICAgTGF5ZXJS
ZW5kZXJlclN1cmZhY2UqIHN1cmZhY2UgPSBsYXllci0+bGF5ZXJSZW5kZXJlclN1cmZhY2UoKTsK
IAotICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihtX3Bvc2l0aW9uTG9jYXRpb24sIDIsIEdMX0ZM
T0FULCBHTF9GQUxTRSwgMCwgJmxheWVyLT5nZXRUcmFuc2Zvcm1lZEJvdW5kcygpKTsKKyAgICBn
bFZlcnRleEF0dHJpYlBvaW50ZXIobV9wb3NpdGlvbkxvY2F0aW9uLCAyLCBHTF9GTE9BVCwgR0xf
RkFMU0UsIDAsICZsYXllci0+dHJhbnNmb3JtZWRCb3VuZHMoKSk7CiAgICAgZ2xFbmFibGVWZXJ0
ZXhBdHRyaWJBcnJheShtX3Bvc2l0aW9uTG9jYXRpb24pOwogICAgIGdsVmVydGV4QXR0cmliUG9p
bnRlcihtX3RleENvb3JkTG9jYXRpb24sIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgdGV4Y29v
cmRzKTsKICAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KG1fdGV4Q29vcmRMb2NhdGlvbik7
CkBAIC03NjQsNyArNzY0LDcgQEAgdm9pZCBMYXllckZpbHRlclJlbmRlcmVyOjphcHBseUFjdGlv
bnModW5zaWduZWQmIGZibywgTGF5ZXJDb21wb3NpdGluZ1RocmVhZCogbGEKIAogICAgICAgICBh
Y3Rpb25zW2ldLT5yZXN0b3JlU3RhdGUoKTsKIAotICAgICAgICBnbFZlcnRleEF0dHJpYlBvaW50
ZXIobV9wb3NpdGlvbkxvY2F0aW9uLCAyLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsICZsYXllci0+
Z2V0VHJhbnNmb3JtZWRCb3VuZHMoKSApOworICAgICAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIo
bV9wb3NpdGlvbkxvY2F0aW9uLCAyLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsICZsYXllci0+dHJh
bnNmb3JtZWRCb3VuZHMoKSk7CiAgICAgICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkobV9w
b3NpdGlvbkxvY2F0aW9uKTsKICAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKG1fdGV4Q29v
cmRMb2NhdGlvbiwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCB0ZXhjb29yZHMpOwogICAgICAg
ICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KG1fdGV4Q29vcmRMb2NhdGlvbik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVu
ZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9M
YXllclJlbmRlcmVyLmNwcAppbmRleCBkN2ZiMGMxMzlmMTI1NjU2YTIwYjZkZDU5MDU5OTNjNWZi
N2E4Mjg2Li44YTQ2Yzc3ZjYyYzY1M2M1OGU1NzQ3ZDhlODJlMTdmZWRjMTM4YTE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVu
ZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVy
cnkvTGF5ZXJSZW5kZXJlci5jcHAKQEAgLTMwOSw3ICszMDksNyBAQCB2b2lkIExheWVyUmVuZGVy
ZXI6OmNvbXBvc2l0ZUxheWVycyhjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4LCBM
YXllckNvbQogICAgIG1fc2NhbGUgPSBtYXRyaXgubTExKCkgKiBtX3ZpZXdwb3J0LndpZHRoKCkg
LyAyOwogCiAgICAgVmVjdG9yPFJlZlB0cjxMYXllckNvbXBvc2l0aW5nVGhyZWFkPiA+IHN1cmZh
Y2VMYXllcnM7Ci0gICAgY29uc3QgVmVjdG9yPFJlZlB0cjxMYXllckNvbXBvc2l0aW5nVGhyZWFk
PiA+JiBzdWJsYXllcnMgPSByb290TGF5ZXItPmdldFN1YmxheWVycygpOworICAgIGNvbnN0IFZl
Y3RvcjxSZWZQdHI8TGF5ZXJDb21wb3NpdGluZ1RocmVhZD4gPiYgc3VibGF5ZXJzID0gcm9vdExh
eWVyLT5zdWJsYXllcnMoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN1YmxheWVycy5z
aXplKCk7IGkrKykgewogICAgICAgICBmbG9hdCBvcGFjaXR5ID0gMTsKICAgICAgICAgRmxvYXRS
ZWN0IGNsaXBSZWN0KG1fY2xpcFJlY3QpOwpAQCAtNjAxLDcgKzYwMSw3IEBAIHZvaWQgTGF5ZXJS
ZW5kZXJlcjo6ZHJhd0RlYnVnQm9yZGVyKExheWVyQ29tcG9zaXRpbmdUaHJlYWQqIGxheWVyKQog
ICAgIGlmIChsYXllckFscmVhZHlPblN1cmZhY2UobGF5ZXIpKQogICAgICAgICB0cmFuc2Zvcm1l
ZEJvdW5kcyA9IGxheWVyLT5sYXllclJlbmRlcmVyU3VyZmFjZSgpLT50cmFuc2Zvcm1lZEJvdW5k
cygpOwogICAgIGVsc2UKLSAgICAgICAgdHJhbnNmb3JtZWRCb3VuZHMgPSBsYXllci0+Z2V0VHJh
bnNmb3JtZWRCb3VuZHMoKTsKKyAgICAgICAgdHJhbnNmb3JtZWRCb3VuZHMgPSBsYXllci0+dHJh
bnNmb3JtZWRCb3VuZHMoKTsKIAogICAgIGNvbnN0IEdMRVMyUHJvZ3JhbSYgcHJvZ3JhbSA9IHVz
ZVByb2dyYW0oQ29sb3JQcm9ncmFtKTsKICAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIocHJvZ3Jh
bS5wb3NpdGlvbkxvY2F0aW9uKCksIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgJnRyYW5zZm9y
bWVkQm91bmRzKTsKQEAgLTYxOSw3ICs2MTksNyBAQCB2b2lkIExheWVyUmVuZGVyZXI6OmRyYXdI
b2xlUHVuY2hSZWN0KExheWVyQ29tcG9zaXRpbmdUaHJlYWQqIGxheWVyKQogCiAgICAgZ2xFbmFi
bGUoR0xfQkxFTkQpOwogICAgIGdsQmxlbmRGdW5jKEdMX09ORSwgR0xfWkVSTyk7Ci0gICAgRmxv
YXRRdWFkIGhvbGUgPSBsYXllci0+Z2V0VHJhbnNmb3JtZWRIb2xlUHVuY2hSZWN0KCk7CisgICAg
RmxvYXRRdWFkIGhvbGUgPSBsYXllci0+dHJhbnNmb3JtZWRIb2xlUHVuY2hSZWN0KCk7CiAgICAg
Z2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHByb2dyYW0ucG9zaXRpb25Mb2NhdGlvbigpLCAyLCBHTF9G
TE9BVCwgR0xfRkFMU0UsIDAsICZob2xlKTsKICAgICBnbERyYXdBcnJheXMoR0xfVFJJQU5HTEVf
RkFOLCAwLCA0KTsKICAgICBjaGVja0dMRXJyb3IoKTsKQEAgLTY0Niw3ICs2NDYsNyBAQCB2b2lk
IExheWVyUmVuZGVyZXI6OnByZXBhcmVGcmFtZVJlY3Vyc2l2ZShMYXllckNvbXBvc2l0aW5nVGhy
ZWFkKiBsYXllciwgZG91YmxlCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBjb25zdCBWZWN0b3I8
UmVmUHRyPExheWVyQ29tcG9zaXRpbmdUaHJlYWQ+ID4mIHN1YmxheWVycyA9IGxheWVyLT5nZXRT
dWJsYXllcnMoKTsKKyAgICBjb25zdCBWZWN0b3I8UmVmUHRyPExheWVyQ29tcG9zaXRpbmdUaHJl
YWQ+ID4mIHN1YmxheWVycyA9IGxheWVyLT5zdWJsYXllcnMoKTsKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHN1YmxheWVycy5zaXplKCk7IGkrKykKICAgICAgICAgcHJlcGFyZUZyYW1lUmVj
dXJzaXZlKHN1YmxheWVyc1tpXS5nZXQoKSwgYW5pbWF0aW9uVGltZSwgaXNDb250ZXh0Q3VycmVu
dCk7CiB9CkBAIC03ODksMTAgKzc4OSwxMCBAQCB2b2lkIExheWVyUmVuZGVyZXI6OnVwZGF0ZUxh
eWVyc1JlY3Vyc2l2ZShMYXllckNvbXBvc2l0aW5nVGhyZWFkKiBsYXllciwgY29uc3QgVAogICAg
ICAgICAgICAgc3VyZmFjZS0+c2V0UmVwbGljYURyYXdUcmFuc2Zvcm0ocmVwbGljYU1hdHJpeCk7
CiAgICAgICAgIH0KIAotICAgICAgICBJbnRSZWN0IGRyYXdSZWN0ID0gZW5jbG9zaW5nSW50UmVj
dChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBib3VuZHMpKTsKLSAgICAgICAgc3VyZmFjZS0+c2V0
Q29udGVudFJlY3QoZHJhd1JlY3QpOworICAgICAgICBJbnRSZWN0IGNvbnRlbnRSZWN0ID0gZW5j
bG9zaW5nSW50UmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBib3VuZHMpKTsKKyAg
ICAgICAgc3VyZmFjZS0+c2V0Q29udGVudFJlY3QoY29udGVudFJlY3QpOwogCi0gICAgICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IHByb2plY3Rpb25NYXRyaXggPSBvcnRob01hdHJpeChkcmF3UmVj
dC54KCksIGRyYXdSZWN0Lm1heFgoKSwgZHJhd1JlY3QueSgpLCBkcmF3UmVjdC5tYXhZKCksIC0x
MDAwLCAxMDAwKTsKKyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcHJvamVjdGlvbk1hdHJp
eCA9IG9ydGhvTWF0cml4KGNvbnRlbnRSZWN0LngoKSwgY29udGVudFJlY3QubWF4WCgpLCBjb250
ZW50UmVjdC55KCksIGNvbnRlbnRSZWN0Lm1heFkoKSwgLTEwMDAsIDEwMDApOwogICAgICAgICAv
LyBUaGUgb3JpZ2luIG9mIHRoZSBuZXcgc3VyZmFjZSBpcyB0aGUgdXBwZXIgbGVmdCBjb3JuZXIg
b2YgdGhlIGxheWVyLgogICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBkcmF3VHJhbnNmb3Jt
OwogICAgICAgICBkcmF3VHJhbnNmb3JtLnRyYW5zbGF0ZTNkKDAuNSAqIGJvdW5kcy53aWR0aCgp
LCAwLjUgKiBib3VuZHMuaGVpZ2h0KCksIDApOwpAQCAtODA1LDE4ICs4MDUsMTggQEAgdm9pZCBM
YXllclJlbmRlcmVyOjp1cGRhdGVMYXllcnNSZWN1cnNpdmUoTGF5ZXJDb21wb3NpdGluZ1RocmVh
ZCogbGF5ZXIsIGNvbnN0IFQKICAgICBsYXllci0+c2V0RHJhd1RyYW5zZm9ybShtX3NjYWxlLCBs
b2NhbE1hdHJpeCk7CiAKICNpZiBFTkFCTEUoVklERU8pCi0gICAgYm9vbCBsYXllclZpc2libGUg
PSBjbGlwUmVjdC5pbnRlcnNlY3RzKGxheWVyLT5nZXREcmF3UmVjdCgpKSB8fCBsYXllci0+bWVk
aWFQbGF5ZXIoKTsKKyAgICBib29sIGxheWVyVmlzaWJsZSA9IGNsaXBSZWN0LmludGVyc2VjdHMo
bGF5ZXItPmJvdW5kaW5nQm94KCkpIHx8IGxheWVyLT5tZWRpYVBsYXllcigpOwogI2Vsc2UKLSAg
ICBib29sIGxheWVyVmlzaWJsZSA9IGNsaXBSZWN0LmludGVyc2VjdHMobGF5ZXItPmdldERyYXdS
ZWN0KCkpOworICAgIGJvb2wgbGF5ZXJWaXNpYmxlID0gY2xpcFJlY3QuaW50ZXJzZWN0cyhsYXll
ci0+Ym91bmRpbmdCb3goKSk7CiAjZW5kaWYKIAogICAgIGlmIChsYXllci0+bmVlZHNUZXh0dXJl
KCkgJiYgbGF5ZXJWaXNpYmxlKSB7Ci0gICAgICAgIEludFJlY3QgZGlydHlSZWN0ID0gdG9XaW5k
b3dDb29yZGluYXRlcyhpbnRlcnNlY3Rpb24obGF5ZXItPmdldERyYXdSZWN0KCksIGNsaXBSZWN0
KSk7CisgICAgICAgIEludFJlY3QgZGlydHlSZWN0ID0gdG9XaW5kb3dDb29yZGluYXRlcyhpbnRl
cnNlY3Rpb24obGF5ZXItPmJvdW5kaW5nQm94KCksIGNsaXBSZWN0KSk7CiAgICAgICAgIG1fbGFz
dFJlbmRlcmluZ1Jlc3VsdHMuYWRkRGlydHlSZWN0KGRpcnR5UmVjdCk7CiAgICAgfQogCiAgICAg
aWYgKGxheWVyLT5tYXNrc1RvQm91bmRzKCkpCi0gICAgICAgIGNsaXBSZWN0LmludGVyc2VjdChs
YXllci0+Z2V0RHJhd1JlY3QoKSk7CisgICAgICAgIGNsaXBSZWN0LmludGVyc2VjdChsYXllci0+
Ym91bmRpbmdCb3goKSk7CiAKICAgICAvLyBGbGF0dGVuIHRvIDJEIGlmIHRoZSBsYXllciBkb2Vz
bid0IHByZXNlcnZlIDNELgogICAgIGlmICghbGF5ZXItPnByZXNlcnZlczNEKCkpIHsKQEAgLTgz
OSw3ICs4MzksNyBAQCB2b2lkIExheWVyUmVuZGVyZXI6OnVwZGF0ZUxheWVyc1JlY3Vyc2l2ZShM
YXllckNvbXBvc2l0aW5nVGhyZWFkKiBsYXllciwgY29uc3QgVAogICAgIC8vIE1bc10gPSBNICog
VHJbLWNlbnRlcl0KICAgICBsb2NhbE1hdHJpeC50cmFuc2xhdGUzZCgtYm91bmRzLndpZHRoKCkg
KiAwLjUsIC1ib3VuZHMuaGVpZ2h0KCkgKiAwLjUsIDApOwogCi0gICAgY29uc3QgVmVjdG9yPFJl
ZlB0cjxMYXllckNvbXBvc2l0aW5nVGhyZWFkPiA+JiBzdWJsYXllcnMgPSBsYXllci0+Z2V0U3Vi
bGF5ZXJzKCk7CisgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxMYXllckNvbXBvc2l0aW5nVGhyZWFk
PiA+JiBzdWJsYXllcnMgPSBsYXllci0+c3VibGF5ZXJzKCk7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBzdWJsYXllcnMuc2l6ZSgpOyBpKyspCiAgICAgICAgIHVwZGF0ZUxheWVyc1JlY3Vy
c2l2ZShzdWJsYXllcnNbaV0uZ2V0KCksIGxvY2FsTWF0cml4LCBzdXJmYWNlTGF5ZXJzLCBvcGFj
aXR5LCBjbGlwUmVjdCk7CiB9CkBAIC04NTgsMTAgKzg1OCwxMCBAQCBzdGF0aWMgdm9pZCBjb2xs
ZWN0M0RQcmVzZXJ2aW5nTGF5ZXJzKFZlY3RvcjxMYXllckNvbXBvc2l0aW5nVGhyZWFkKj4mIGxh
eWVycykKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxheWVycy5zaXplKCk7ICsraSkg
ewogICAgICAgICBMYXllckNvbXBvc2l0aW5nVGhyZWFkKiBsYXllciA9IGxheWVyc1tpXTsKLSAg
ICAgICAgaWYgKCFsYXllci0+cHJlc2VydmVzM0QoKSB8fCAhbGF5ZXItPmdldFN1YmxheWVycygp
LnNpemUoKSkKKyAgICAgICAgaWYgKCFsYXllci0+cHJlc2VydmVzM0QoKSB8fCAhbGF5ZXItPnN1
YmxheWVycygpLnNpemUoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIFZlY3Rv
cjxMYXllckNvbXBvc2l0aW5nVGhyZWFkKj4gc3VibGF5ZXJzID0gcmF3UHRyVmVjdG9yRnJvbVJl
ZlB0clZlY3RvcihsYXllci0+Z2V0U3VibGF5ZXJzKCkpOworICAgICAgICBWZWN0b3I8TGF5ZXJD
b21wb3NpdGluZ1RocmVhZCo+IHN1YmxheWVycyA9IHJhd1B0clZlY3RvckZyb21SZWZQdHJWZWN0
b3IobGF5ZXItPnN1YmxheWVycygpKTsKICAgICAgICAgY29sbGVjdDNEUHJlc2VydmluZ0xheWVy
cyhzdWJsYXllcnMpOwogICAgICAgICBsYXllcnMuaW5zZXJ0KGkrMSwgc3VibGF5ZXJzKTsKICAg
ICAgICAgaSArPSBzdWJsYXllcnMuc2l6ZSgpOwpAQCAtODcyLDkgKzg3Miw5IEBAIHZvaWQgTGF5
ZXJSZW5kZXJlcjo6Y29tcG9zaXRlTGF5ZXJzUmVjdXJzaXZlKExheWVyQ29tcG9zaXRpbmdUaHJl
YWQqIGxheWVyLCBpbnQKIHsKICAgICBGbG9hdFJlY3QgcmVjdDsKICAgICBpZiAobGF5ZXJBbHJl
YWR5T25TdXJmYWNlKGxheWVyKSkKLSAgICAgICAgcmVjdCA9IGxheWVyLT5sYXllclJlbmRlcmVy
U3VyZmFjZSgpLT5kcmF3UmVjdCgpOworICAgICAgICByZWN0ID0gbGF5ZXItPmxheWVyUmVuZGVy
ZXJTdXJmYWNlKCktPmJvdW5kaW5nQm94KCk7CiAgICAgZWxzZQotICAgICAgICByZWN0ID0gbGF5
ZXItPmdldERyYXdSZWN0KCk7CisgICAgICAgIHJlY3QgPSBsYXllci0+Ym91bmRpbmdCb3goKTsK
IAogI2lmIEVOQUJMRShWSURFTykKICAgICBib29sIGxheWVyVmlzaWJsZSA9IGNsaXBSZWN0Lmlu
dGVyc2VjdHMocmVjdCkgfHwgbGF5ZXItPm1lZGlhUGxheWVyKCk7CkBAIC05NTksMTggKzk1OSwx
OCBAQCB2b2lkIExheWVyUmVuZGVyZXI6OmNvbXBvc2l0ZUxheWVyc1JlY3Vyc2l2ZShMYXllckNv
bXBvc2l0aW5nVGhyZWFkKiBsYXllciwgaW50CiAgICAgICAgIHVwZGF0ZVNjaXNzb3JJZk5lZWRl
ZChjbGlwUmVjdCk7CiAgICAgICAgIGNvbnN0IEdMRVMyUHJvZ3JhbSYgcHJvZ3JhbSA9IHVzZVBy
b2dyYW0oQ29sb3JQcm9ncmFtKTsKICAgICAgICAgZ2xDb2xvck1hc2soR0xfRkFMU0UsIEdMX0ZB
TFNFLCBHTF9GQUxTRSwgR0xfRkFMU0UpOwotICAgICAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIo
cHJvZ3JhbS5wb3NpdGlvbkxvY2F0aW9uKCksIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgJmxh
eWVyLT5nZXRUcmFuc2Zvcm1lZEJvdW5kcygpKTsKKyAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2lu
dGVyKHByb2dyYW0ucG9zaXRpb25Mb2NhdGlvbigpLCAyLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAs
ICZsYXllci0+dHJhbnNmb3JtZWRCb3VuZHMoKSk7CiAgICAgICAgIGdsRHJhd0FycmF5cyhHTF9U
UklBTkdMRV9GQU4sIDAsIDQpOwogICAgICAgICBnbENvbG9yTWFzayhHTF9UUlVFLCBHTF9UUlVF
LCBHTF9UUlVFLCBHTF9UUlVFKTsKICAgICB9CiAKICAgICBpZiAobGF5ZXItPm1hc2tzVG9Cb3Vu
ZHMoKSkKLSAgICAgICAgY2xpcFJlY3QuaW50ZXJzZWN0KGxheWVyLT5nZXREcmF3UmVjdCgpKTsK
KyAgICAgICAgY2xpcFJlY3QuaW50ZXJzZWN0KGxheWVyLT5ib3VuZGluZ0JveCgpKTsKIAogICAg
IC8vIEhlcmUsIHdlIG5lZWQgdG8gc29ydCB0aGUgd2hvbGUgc3VidHJlZSBvZiBsYXllcnMgd2l0
aCBwcmVzZXJ2ZS0zZC4gSXQKICAgICAvLyBhZmZlY3RzIGFsbCBjaGlsZHJlbiwgYW5kIHRoZSBj
aGlsZHJlbiBvZiBhbnkgY2hpbGRyZW4gd2l0aCBwcmVzZXJ2ZS0zZCwKICAgICAvLyBhbmQgc28g
b24uCi0gICAgVmVjdG9yPExheWVyQ29tcG9zaXRpbmdUaHJlYWQqPiBzdWJsYXllcnMgPSByYXdQ
dHJWZWN0b3JGcm9tUmVmUHRyVmVjdG9yKGxheWVyLT5nZXRTdWJsYXllcnMoKSk7CisgICAgVmVj
dG9yPExheWVyQ29tcG9zaXRpbmdUaHJlYWQqPiBzdWJsYXllcnMgPSByYXdQdHJWZWN0b3JGcm9t
UmVmUHRyVmVjdG9yKGxheWVyLT5zdWJsYXllcnMoKSk7CiAKICAgICBib29sIHByZXNlcnZlczNE
ID0gbGF5ZXItPnByZXNlcnZlczNEKCk7CiAgICAgYm9vbCBzdXBlcmxheWVyUHJlc2VydmVzM0Qg
PSBsYXllci0+c3VwZXJsYXllcigpICYmIGxheWVyLT5zdXBlcmxheWVyKCktPnByZXNlcnZlczNE
KCk7CkBAIC0xMDAyLDcgKzEwMDIsNyBAQCB2b2lkIExheWVyUmVuZGVyZXI6OmNvbXBvc2l0ZUxh
eWVyc1JlY3Vyc2l2ZShMYXllckNvbXBvc2l0aW5nVGhyZWFkKiBsYXllciwgaW50CiAgICAgICAg
IHVwZGF0ZVNjaXNzb3JJZk5lZWRlZChjbGlwUmVjdCk7CiAgICAgICAgIGNvbnN0IEdMRVMyUHJv
Z3JhbSYgcHJvZ3JhbSA9IHVzZVByb2dyYW0oQ29sb3JQcm9ncmFtKTsKICAgICAgICAgZ2xDb2xv
ck1hc2soR0xfRkFMU0UsIEdMX0ZBTFNFLCBHTF9GQUxTRSwgR0xfRkFMU0UpOwotICAgICAgICBn
bFZlcnRleEF0dHJpYlBvaW50ZXIocHJvZ3JhbS5wb3NpdGlvbkxvY2F0aW9uKCksIDIsIEdMX0ZM
T0FULCBHTF9GQUxTRSwgMCwgJmxheWVyLT5nZXRUcmFuc2Zvcm1lZEJvdW5kcygpKTsKKyAgICAg
ICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHByb2dyYW0ucG9zaXRpb25Mb2NhdGlvbigpLCAyLCBH
TF9GTE9BVCwgR0xfRkFMU0UsIDAsICZsYXllci0+dHJhbnNmb3JtZWRCb3VuZHMoKSk7CiAgICAg
ICAgIGdsRHJhd0FycmF5cyhHTF9UUklBTkdMRV9GQU4sIDAsIDQpOwogICAgICAgICBnbENvbG9y
TWFzayhHTF9UUlVFLCBHTF9UUlVFLCBHTF9UUlVFLCBHTF9UUlVFKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclJlbmRlcmVy
U3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5
L0xheWVyUmVuZGVyZXJTdXJmYWNlLmNwcAppbmRleCAzZmYwNzhhZDc1YmE4MGFiYjBmOWM1YTA1
NDNhYzQ5NGFmMzVlMDQ2Li4yMGQzMTI5NDQzZjUzZDNiMDc3YzNiMThlZDEwMTJiYmJlZGI4NjEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5
L0xheWVyUmVuZGVyZXJTdXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVuZGVyZXJTdXJmYWNlLmNwcApAQCAtNDUsNyArNDUs
NyBAQCB2b2lkIExheWVyUmVuZGVyZXJTdXJmYWNlOjpzZXRDb250ZW50UmVjdChjb25zdCBJbnRS
ZWN0JiBjb250ZW50UmVjdCkKICAgICBtX3NpemUgPSBjb250ZW50UmVjdC5zaXplKCk7CiB9CiAK
LUZsb2F0UmVjdCBMYXllclJlbmRlcmVyU3VyZmFjZTo6ZHJhd1JlY3QoKSBjb25zdAorRmxvYXRS
ZWN0IExheWVyUmVuZGVyZXJTdXJmYWNlOjpib3VuZGluZ0JveCgpIGNvbnN0CiB7CiAgICAgZmxv
YXQgYnggPSBtX3NpemUud2lkdGgoKSAvIDIuMDsKICAgICBmbG9hdCBieSA9IG1fc2l6ZS5oZWln
aHQoKSAvIDIuMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2JsYWNrYmVycnkvTGF5ZXJSZW5kZXJlclN1cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJSZW5kZXJlclN1cmZhY2UuaAppbmRleCBlODk2
OTU1MWE4NzQyOGRkMmI5NTg3OGY0YTllNTQzMGUzZjZlMDI5Li45ODE4YWM3M2ZiOTFiODI2NjNj
MTExZGZhYTMzN2RjMTdjZjExZGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVuZGVyZXJTdXJmYWNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclJlbmRlcmVyU3VyZmFj
ZS5oCkBAIC01MCw3ICs1MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFJlcGxpY2FEcmF3VHJh
bnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgpIHsgbV9yZXBsaWNhRHJh
d1RyYW5zZm9ybSA9IG1hdHJpeDsgfQogICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBy
ZXBsaWNhRHJhd1RyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVwbGljYURyYXdUcmFuc2Zv
cm07IH0KIAotICAgIEZsb2F0UmVjdCBkcmF3UmVjdCgpIGNvbnN0OworICAgIC8vIFRoZXNlIHVz
ZSBub3JtYWxpemVkIGRldmljZSBjb29yZGluYXRlcworICAgIEZsb2F0UmVjdCBib3VuZGluZ0Jv
eCgpIGNvbnN0OwogICAgIEZsb2F0UXVhZCB0cmFuc2Zvcm1lZEJvdW5kcygpIGNvbnN0OwogCiAg
ICAgYm9vbCBlbnN1cmVUZXh0dXJlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyV2ViS2l0VGhyZWFkLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyV2ViS2l0VGhyZWFkLmgKaW5k
ZXggMDFhZjlmNThhODM4MDZiNDE5ODQ3ZjIxMzlkYjNhNzRlYjcyOTM5Mi4uZGQ1NGZjNmE2MzY4
NTg0YjA1ZmY1ZjExYTdmYzFkY2Q1YmY0NTZkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllcldlYktpdFRocmVhZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJXZWJLaXRUaHJl
YWQuaApAQCAtMTE1LDcgKzExNSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0U3VibGF5ZXJz
KGNvbnN0IFZlY3RvcjxSZWZQdHI8TGF5ZXJXZWJLaXRUaHJlYWQ+ID4mKTsKIAotICAgIGNvbnN0
IFZlY3RvcjxSZWZQdHI8TGF5ZXJXZWJLaXRUaHJlYWQ+ID4mIGdldFN1YmxheWVycygpIGNvbnN0
IHsgcmV0dXJuIG1fc3VibGF5ZXJzOyB9CisgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxMYXllcldl
YktpdFRocmVhZD4gPiYgc3VibGF5ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9zdWJsYXllcnM7IH0K
IAogICAgIHZvaWQgc2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIHRyYW5zZm9ybSkgeyBtX3N1YmxheWVyVHJhbnNmb3JtID0gdHJhbnNmb3JtOyBzZXROZWVk
c0NvbW1pdCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2JsYWNrYmVycnkvVmlkZW9MYXllcldlYktpdFRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L1ZpZGVvTGF5ZXJXZWJLaXRUaHJlYWQuY3Bw
CmluZGV4IDFmZWMxMjBkMmY2ZWZhZmRlOTM2ZmJlYWM5MzllOWE1OTQyMDA5MmQuLmQ3YTk1OGFk
YmI5NjY0MjA0ZGUyNDkxY2IwYTkyZjYxZTc3Yjk4ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvVmlkZW9MYXllcldlYktpdFRocmVhZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9WaWRl
b0xheWVyV2ViS2l0VGhyZWFkLmNwcApAQCAtMjcsOCArMjcsNiBAQAogCiAjaW5jbHVkZSA8Qmxh
Y2tCZXJyeVBsYXRmb3JtTG9nLmg+CiAKLSNkZWZpbmUgREVCVUdfVklERU9fQ0xJUFBJTkcgMAot
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFZpZGVvTGF5ZXJXZWJLaXRUaHJlYWQ6OlZpZGVvTGF5
ZXJXZWJLaXRUaHJlYWQoTWVkaWFQbGF5ZXIqIG1lZGlhUGxheWVyKQpAQCAtNjQsOSArNjIsNiBA
QCB2b2lkIFZpZGVvTGF5ZXJXZWJLaXRUaHJlYWQ6OnNldE1lZGlhUGxheWVyKE1lZGlhUGxheWVy
KiBtZWRpYVBsYXllcikKIHZvaWQgVmlkZW9MYXllcldlYktpdFRocmVhZDo6c2V0SG9sZVB1bmNo
UmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIG1faG9sZVB1bmNoUmVjdCA9IHJlY3Q7
Ci0jaWYgREVCVUdfVklERU9fQ0xJUFBJTkcKLSAgICBCQkxPRyhCbGFja0JlcnJ5OjpQbGF0Zm9y
bTo6TG9nTGV2ZWxJbmZvLCAiVmlkZW9MYXllcldlYktpdFRocmVhZCBtX2hvbGVQdW5jaFJlY3Q9
KHg9JWQseT0lZCx3aWR0aD0lZCxoZWlnaHQ9JWQpLiIsIG1faG9sZVB1bmNoUmVjdC54KCksIG1f
aG9sZVB1bmNoUmVjdC55KCksIG1faG9sZVB1bmNoUmVjdC53aWR0aCgpLCBtX2hvbGVQdW5jaFJl
Y3QuaGVpZ2h0KCkpOwotI2VuZGlmCiAgICAgc2V0TmVlZHNDb21taXQoKTsKIH0KIApAQCAtODcs
MTYgKzgyLDYgQEAgdm9pZCBWaWRlb0xheWVyV2ViS2l0VGhyZWFkOjpib3VuZHNDaGFuZ2VkKCkK
ICAgICAvLyBOb3RlIHRoYXQgYWx0aG91Z2ggd2Uga25vdyB0aGUgKnNpemUqIG9mIHRoaXMgbGF5
ZXIsIHdlIHdvbid0IGtub3cgdGhlIHBvc2l0aW9uIG9mIHRoaXMgbGF5ZXIKICAgICAvLyB1bnRp
bCB0aGUgTGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6c2V0RHJhd1RyYW5zZm9ybSBtZXRob2QgaXMg
Y2FsbGVkIGZyb20gdGhlIExheWVyUmVuZGVyZXIuCiAgICAgc2V0SG9sZVB1bmNoUmVjdChJbnRS
ZWN0KEludFBvaW50Ojp6ZXJvKCksIG1fYm91bmRzKSk7Ci0KLSAgICAvLyBBbHNvIHNldCBhIGNs
aXBwaW5nIHJlY3RhbmdsZSBmb3IgdGhpcyBob2xlIHB1bmNoIHJlY3RhbmdsZS4KLSAgICBpZiAo
RnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtZWRpYVBsYXllcigpLT5mcmFtZVZpZXcoKSkKLSAgICAg
ICAgbV9ob2xlUHVuY2hDbGlwUmVjdCA9IGZyYW1lVmlldy0+d2luZG93Q2xpcFJlY3QoKTsKLSAg
ICBlbHNlCi0gICAgICAgIG1faG9sZVB1bmNoQ2xpcFJlY3QgPSBob2xlUHVuY2hSZWN0KCk7Ci0K
LSNpZiBERUJVR19WSURFT19DTElQUElORwotICAgIEJCTE9HKEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpMb2dMZXZlbEluZm8sICJWaWRlb0xheWVyV2ViS2l0VGhyZWFkIG1faG9sZVB1bmNoQ2xpcFJl
Y3Q9KHg9JWQseT0lZCx3aWR0aD0lZCxoZWlnaHQ9JWQpLiIsIG1faG9sZVB1bmNoQ2xpcFJlY3Qu
eCgpLCBtX2hvbGVQdW5jaENsaXBSZWN0LnkoKSwgbV9ob2xlUHVuY2hDbGlwUmVjdC53aWR0aCgp
LCBtX2hvbGVQdW5jaENsaXBSZWN0LmhlaWdodCgpKTsKLSNlbmRpZgogfQogCiB2b2lkIFZpZGVv
TGF5ZXJXZWJLaXRUaHJlYWQ6OnVwZGF0ZVRleHR1cmVDb250ZW50c0lmTmVlZGVkKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViT3ZlcmxheS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYk92ZXJsYXkuY3BwCmluZGV4IGFkNGY3MDg2ZmZh
NDA0ODczMmM3OWUxNzQ5NzQ3ZTllMjczYWEwMzIuLjE5ZTFhMzE3NjdmNzA5ZThkMzY4ZDJlZjhj
YzNjOTFkYjMyMDdiOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkv
V2ViT3ZlcmxheS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJPdmVy
bGF5LmNwcApAQCAtNjMzLDcgKzYzMyw3IEBAIHZvaWQgV2ViT3ZlcmxheVByaXZhdGVDb21wb3Np
dGluZ1RocmVhZDo6cmVtb3ZlQW5pbWF0aW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKIFBsYXRmb3Jt
OjpJbnRSZWN0IFdlYk92ZXJsYXlQcml2YXRlQ29tcG9zaXRpbmdUaHJlYWQ6OnBpeGVsVmlld3Bv
cnRSZWN0KCkgY29uc3QKIHsKICAgICBpZiAoTGF5ZXJSZW5kZXJlciogcmVuZGVyZXIgPSBtX2xh
eWVyQ29tcG9zaXRpbmdUaHJlYWQtPmxheWVyUmVuZGVyZXIoKSkKLSAgICAgICAgcmV0dXJuIHJl
bmRlcmVyLT50b1BpeGVsVmlld3BvcnRDb29yZGluYXRlcyhtX2xheWVyQ29tcG9zaXRpbmdUaHJl
YWQtPmdldERyYXdSZWN0KCkpOworICAgICAgICByZXR1cm4gcmVuZGVyZXItPnRvUGl4ZWxWaWV3
cG9ydENvb3JkaW5hdGVzKG1fbGF5ZXJDb21wb3NpdGluZ1RocmVhZC0+Ym91bmRpbmdCb3goKSk7
CiAKICAgICByZXR1cm4gUGxhdGZvcm06OkludFJlY3QoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZUNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlQ29tcG9zaXRvci5jcHAKaW5kZXggOWEwZmM4Y2Vj
Y2NmMmRkNThhOGY3ZjMwNTJkODE5ZjM1MjlhNDY2NS4uNWYzMmI1NmJmZGZjMmJiNjE3YmRlNmFi
NmE0M2UwODkyYTk0OWJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0Fw
aS9XZWJQYWdlQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0Fw
aS9XZWJQYWdlQ29tcG9zaXRvci5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBXZWJQYWdlQ29t
cG9zaXRvclByaXZhdGU6OmF0dGFjaE92ZXJsYXlzKExheWVyQ29tcG9zaXRpbmdUaHJlYWQqIG92
ZXJsYXlSb28KICAgICBpZiAoIW92ZXJsYXlSb290KQogICAgICAgICByZXR1cm47CiAKLSAgICBj
b25zdCBWZWN0b3I8UmVmUHRyPExheWVyQ29tcG9zaXRpbmdUaHJlYWQ+ID4mIG92ZXJsYXlzID0g
b3ZlcmxheVJvb3QtPmdldFN1YmxheWVycygpOworICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8TGF5
ZXJDb21wb3NpdGluZ1RocmVhZD4gPiYgb3ZlcmxheXMgPSBvdmVybGF5Um9vdC0+c3VibGF5ZXJz
KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvdmVybGF5cy5zaXplKCk7ICsraSkgewog
ICAgICAgICBMYXllckNvbXBvc2l0aW5nVGhyZWFkKiBvdmVybGF5ID0gb3ZlcmxheXNbaV0uZ2V0
KCk7CiAgICAgICAgIGlmIChMYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50KiBjbGllbnQgPSBv
dmVybGF5LT5jbGllbnQoKSkgewpAQCAtMjc1LDE0ICsyNzUsMTQgQEAgdm9pZCBXZWJQYWdlQ29t
cG9zaXRvclByaXZhdGU6OnJlbW92ZU92ZXJsYXkoTGF5ZXJDb21wb3NpdGluZ1RocmVhZCogbGF5
ZXIpCiAKICAgICBsYXllci0+cmVtb3ZlRnJvbVN1cGVybGF5ZXIoKTsKIAotICAgIGlmIChtX2Nv
bXBvc2l0aW5nVGhyZWFkT3ZlcmxheUxheWVyICYmIG1fY29tcG9zaXRpbmdUaHJlYWRPdmVybGF5
TGF5ZXItPmdldFN1YmxheWVycygpLmlzRW1wdHkoKSkKKyAgICBpZiAobV9jb21wb3NpdGluZ1Ro
cmVhZE92ZXJsYXlMYXllciAmJiBtX2NvbXBvc2l0aW5nVGhyZWFkT3ZlcmxheUxheWVyLT5zdWJs
YXllcnMoKS5pc0VtcHR5KCkpCiAgICAgICAgIG1fY29tcG9zaXRpbmdUaHJlYWRPdmVybGF5TGF5
ZXIuY2xlYXIoKTsKIH0KIAogdm9pZCBXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6OmZpbmRGaXhl
ZEVsZW1lbnRSZWN0KExheWVyQ29tcG9zaXRpbmdUaHJlYWQqIGxheWVyLCBXZWJDb3JlOjpJbnRS
ZWN0JiBmaXhlZEVsZW1lbnRSZWN0KQogewogICAgIGlmICgobGF5ZXItPmhhc0ZpeGVkQ29udGFp
bmVyKCkgfHwgbGF5ZXItPmlzRml4ZWRQb3NpdGlvbigpIHx8IGxheWVyLT5oYXNGaXhlZEFuY2Vz
dG9ySW5ET01UcmVlKCkpICYmIGxheWVyLT5sYXllclJlbmRlcmVyKCkpIHsKLSAgICAgICAgSW50
UmVjdCBmaXhlZFJlY3QgPSBsYXllci0+bGF5ZXJSZW5kZXJlcigpLT50b1BpeGVsVmlld3BvcnRD
b29yZGluYXRlcyhsYXllci0+Z2V0RHJhd1JlY3QoKSk7CisgICAgICAgIEludFJlY3QgZml4ZWRS
ZWN0ID0gbGF5ZXItPmxheWVyUmVuZGVyZXIoKS0+dG9QaXhlbFZpZXdwb3J0Q29vcmRpbmF0ZXMo
bGF5ZXItPmJvdW5kaW5nQm94KCkpOwogICAgICAgICAvLyBGSVhNRTogSXQncyBwb3NzaWJsZSB0
aGF0IHRoZSByZWN0cyBkb24ndCBpbnRlcnNlY3Qgbm93LCBidXQgd2lsbCBiZSBjb25uZWN0ZWQg
YnkgYSBmaXhlZCByZWN0IGZvdW5kIGxhdGVyLgogICAgICAgICAvLyBXZSBuZWVkIHRvIGhhbmRs
ZSBpdCBhcyB3ZWxsLgogICAgICAgICBpZiAoZml4ZWRFbGVtZW50UmVjdC5pc0VtcHR5KCkgfHwg
Zml4ZWRFbGVtZW50UmVjdC5pbnRlcnNlY3RzKGZpeGVkUmVjdCkpIC8vIFVuaXRlIHJlY3RzIGlm
IHRoZXkgaW50ZXJzZWN0IGVhY2ggb3RoZXIuCkBAIC0yOTEsNyArMjkxLDcgQEAgdm9pZCBXZWJQ
YWdlQ29tcG9zaXRvclByaXZhdGU6OmZpbmRGaXhlZEVsZW1lbnRSZWN0KExheWVyQ29tcG9zaXRp
bmdUaHJlYWQqIGxheWUKICAgICAgICAgICAgIGZpeGVkRWxlbWVudFJlY3QgPSBmaXhlZFJlY3Q7
CiAgICAgfQogCi0gICAgY29uc3QgVmVjdG9yPFJlZlB0cjxMYXllckNvbXBvc2l0aW5nVGhyZWFk
PiA+JiBzdWJsYXllcnMgPSBsYXllci0+Z2V0U3VibGF5ZXJzKCk7CisgICAgY29uc3QgVmVjdG9y
PFJlZlB0cjxMYXllckNvbXBvc2l0aW5nVGhyZWFkPiA+JiBzdWJsYXllcnMgPSBsYXllci0+c3Vi
bGF5ZXJzKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdWJsYXllcnMuc2l6ZSgpOyBp
KyspCiAgICAgICAgIGZpbmRGaXhlZEVsZW1lbnRSZWN0KHN1YmxheWVyc1tpXS5nZXQoKSwgZml4
ZWRFbGVtZW50UmVjdCk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>202803</attachid>
            <date>2013-05-24 04:33:45 -0700</date>
            <delta_ts>2013-05-28 03:32:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-116604-20130524133226.patch</filename>
            <type>text/plain</type>
            <size>30660</size>
            <attacher name="Arvid Nilsson">anilsson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ3MzkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTFjMDMyNzMzZmYxNmI2
YzBmNjdlYTVlMzQwMWRjZmFhNTZlZjNiYS4uNWY3ZjM3MDhjNjkwNDkxNmJjZjkwNjAwNjcyYTY3
ZTVkZmFjZmM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDEzLTA1LTIyICBBcnZp
ZCBOaWxzc29uICA8YW5pbHNzb25AcmltLmNvbT4KKworICAgICAgICBbQmxhY2tCZXJyeV0gRml4
IHN0eWxlIGlzc3VlcyBpbiBCbGFja0JlcnJ5IGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGJhY2tl
bmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjYw
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBSIDI3
MzU1MCwgOTk2MzgKKworICAgICAgICBSZW1vdmUgdGhlICJnZXQiIHByZWZpeCBmcm9tIGdldHRl
cnMgaW4gdGhlIFdlYktpdC0gYW5kIGNvbXBvc2l0aW5nLQorICAgICAgICB0aHJlYWQgbGF5ZXIg
Y2xhc3NlcywgYXMgd2VsbCBhcyBMYXllclJlbmRlcmVyU3VyZmFjZS4gQ2xhcmlmeSB3aGljaAor
ICAgICAgICBnZW9tZXRyeS1yZWxhdGVkIGdldHRlcnMgcmV0dXJuIG5vcm1hbGl6ZWQgZGV2aWNl
IGNvb3JkaW5hdGVzIGJ5IGFkZGluZworICAgICAgICBhIGNvbW1lbnQuCisKKyAgICAgICAgQWxz
byByZW1vdmUgZGVhZCBjb2RlIHJlbGF0ZWQgdG8gTGF5ZXJEYXRhOjptX2hvbGVQdW5jaENsaXBS
ZWN0LCB3aGljaAorICAgICAgICB3YXMgcGFydCBvZiBhbiBldmVudHVhbGx5IGRpc2FibGVkIGZp
eCBmb3IgdmlkZW8gY2xpcHBpbmcgaW4gaWZyYW1lcywKKyAgICAgICAgUFIgOTk2MzguIFNpbmNl
IHdlIG5vdyB1c2UgQUMgbGF5ZXJzIGZvciBpZnJhbWVzLCB0aGUgYnVnIGlzIG5vIGxvbmdlcgor
ICAgICAgICByZXByb2R1Y2libGUsIGFuZCB0aGUgZGVhZCBjb2RlIHdpbGwgbmV2ZXIgbmVlZCB0
byBiZSBlbmFibGVkIGFnYWluLgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvciwgbm8g
bmV3IHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9FR0xJ
bWFnZUxheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RUdMSW1hZ2VMYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50OjpkcmF3VGV4dHVyZXMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVh
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNvbXBvc2l0aW5nVGhyZWFkOjpzZXREcmF3
VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OnRy
YW5zZm9ybWVkSG9sZVB1bmNoUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNvbXBvc2l0
aW5nVGhyZWFkOjpkcmF3VGV4dHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDb21wb3Np
dGluZ1RocmVhZDo6ZHJhd1N1cmZhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Js
YWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJDb21wb3NpdGluZ1RocmVhZDo6c3VibGF5ZXJzKTogUmVtb3ZlZCAiZ2V0IiBwcmVmaXgKKyAg
ICAgICAgKExheWVyQ29tcG9zaXRpbmdUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJD
b21wb3NpdGluZ1RocmVhZDo6Ym91bmRpbmdCb3gpOiBSZW5hbWVkIGZyb20gImdldERyYXdSZWN0
IgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6dHJhbnNmb3JtZWRC
b3VuZHMpOiBSZW1vdmVkICJnZXQiIHByZWZpeAorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDb21w
b3NpdGluZ1RocmVhZDo6dHJhbnNmb3JtZWRIb2xlUHVuY2hSZWN0KTogUmVtb3ZlZCAiZ2V0IiBw
cmVmaXgKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyRGF0YS5o
OgorICAgICAgICAoTGF5ZXJEYXRhKTogUmVtb3ZlZCB1bnVzZWQgZGF0YSBtZW1iZXIgIm1faG9s
ZVB1bmNoQ2xpcFJlY3QiCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9M
YXllckZpbHRlclJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyRmlsdGVyUmVu
ZGVyZXI6OmFwcGx5QWN0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2ti
ZXJyeS9MYXllclJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXI6
OmNvbXBvc2l0ZUxheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyOjpkcmF3
RGVidWdCb3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlcjo6ZHJhd0hvbGVQ
dW5jaFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlcjo6cHJlcGFyZUZyYW1l
UmVjdXJzaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXI6OnVwZGF0ZUxheWVy
c1JlY3Vyc2l2ZSk6CisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0M0RQcmVzZXJ2aW5nTGF5ZXJz
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXI6OmNvbXBvc2l0ZUxheWVyc1JlY3Vy
c2l2ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclJlbmRl
cmVyU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyU3VyZmFjZTo6
Ym91bmRpbmdCb3gpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5
ZXJSZW5kZXJlclN1cmZhY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJTdXJm
YWNlOjpib3VuZGluZ0JveCk6IFJlbmFtZWQgZnJvbSAiZHJhd1JlY3QiIGJlY2F1c2UgdGhhdCBz
b3VuZHMgbGlrZSBhIHZlcmIsIGFuZCB0aGlzIGlzIGEgZ2V0dGVyCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllcldlYktpdFRocmVhZC5oOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJXZWJLaXRUaHJlYWQ6OnN1YmxheWVycyk6IFJlbW92ZWQgImdldCIgcHJlZml4
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9WaWRlb0xheWVyV2ViS2l0
VGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJXZWJLaXRUaHJlYWQ6OnNl
dEhvbGVQdW5jaFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXllcldlYktpdFRocmVh
ZDo6Ym91bmRzQ2hhbmdlZCk6CisKIDIwMTMtMDUtMjQgIEFydmlkIE5pbHNzb24gIDxhbmlsc3Nv
bkByaW0uY29tPgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBiYWNrZmFjZS12aXNpYmlsaXR5OiBo
aWRkZW4gZG9lc24ndCB3b3JrIHByb3Blcmx5IHdpdGggbWFza3MgYW5kIGZpbHRlcnMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQ2hhbmdlTG9nCmluZGV4IDUyY2Y5YzBlZjQ5YjI4YzI5YTAwODRmNThjZTEw
ZTYzMWM4NGNhOTUuLmViYTg3ZTEyY2E3MjQwOThmNzcwODE2MmEyMTNiNmU0MjIzZjMzNzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEzLTA1LTIy
ICBBcnZpZCBOaWxzc29uICA8YW5pbHNzb25AcmltLmNvbT4KKworICAgICAgICBbQmxhY2tCZXJy
eV0gRml4IHN0eWxlIGlzc3VlcyBpbiBCbGFja0JlcnJ5IGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5n
IGJhY2tlbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExNjYwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkYXB0IHRvIHRoZSByZW1vdmFsIG9mICJnZXQiIHByZWZpeCBmcm9tIGdldHRlcnMgaW4gdGhl
IFdlYktpdC0gYW5kCisgICAgICAgIGNvbXBvc2l0aW5nLXRocmVhZCBsYXllciBjbGFzc2VzLgor
CisgICAgICAgICogQXBpL1dlYk92ZXJsYXkuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2Vi
S2l0OjpXZWJPdmVybGF5UHJpdmF0ZUNvbXBvc2l0aW5nVGhyZWFkOjpwaXhlbFZpZXdwb3J0UmVj
dCk6CisgICAgICAgICogQXBpL1dlYlBhZ2VDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKEJsYWNr
QmVycnk6OldlYktpdDo6V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlOjphdHRhY2hPdmVybGF5cyk6
CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6
cmVtb3ZlT3ZlcmxheSk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VDb21w
b3NpdG9yUHJpdmF0ZTo6ZmluZEZpeGVkRWxlbWVudFJlY3QpOgorCiAyMDEzLTA1LTIxICBDYXJs
b3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbQmxhY2tC
ZXJyeV0gTWFrZSBQYWdlUG9wdXAgaW1wbGVtZW50YXRpb24gaW5kZXBlbmRlbnQgZnJvbSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2Jl
cnJ5L0VHTEltYWdlTGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0VHTEltYWdlTGF5ZXJDb21wb3NpdGlu
Z1RocmVhZENsaWVudC5jcHAKaW5kZXggMjgyN2U0M2UxYzBjNjlkMDU0MWFjOWY3MzRjMDBiMTVi
MDNlMGQwNC4uYTcwNzkxY2Q1NmIyZDUwNGViMTAxMmE3NDdjMTcxMWU3MGYyMjcwNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9FR0xJbWFn
ZUxheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvRUdMSW1hZ2VMYXllckNvbXBvc2l0aW5nVGhyZWFk
Q2xpZW50LmNwcApAQCAtNTYsNyArNTYsNyBAQCB2b2lkIEVHTEltYWdlTGF5ZXJDb21wb3NpdGlu
Z1RocmVhZENsaWVudDo6ZHJhd1RleHR1cmVzKExheWVyQ29tcG9zaXRpbmdUaHJlYWQqCiAgICAg
Z2xCbGVuZEZ1bmMoR0xfT05FLCBHTF9PTkVfTUlOVVNfU1JDX0FMUEhBKTsKICAgICBnbFVzZVBy
b2dyYW0ocHJvZ3JhbS5tX3Byb2dyYW0pOwogICAgIGdsVW5pZm9ybTFmKHByb2dyYW0ub3BhY2l0
eUxvY2F0aW9uKCksIGxheWVyLT5kcmF3T3BhY2l0eSgpKTsKLSAgICBnbFZlcnRleEF0dHJpYlBv
aW50ZXIocHJvZ3JhbS5wb3NpdGlvbkxvY2F0aW9uKCksIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwg
MCwgJmxheWVyLT5nZXRUcmFuc2Zvcm1lZEJvdW5kcygpKTsKKyAgICBnbFZlcnRleEF0dHJpYlBv
aW50ZXIocHJvZ3JhbS5wb3NpdGlvbkxvY2F0aW9uKCksIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwg
MCwgJmxheWVyLT50cmFuc2Zvcm1lZEJvdW5kcygpKTsKICAgICBnbFZlcnRleEF0dHJpYlBvaW50
ZXIocHJvZ3JhbS50ZXhDb29yZExvY2F0aW9uKCksIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwg
dXBzaWRlRG93bik7CiAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtX3RleHR1cmVB
Y2Nlc3Nvci0+dGV4dHVyZUlEKCkpOwogICAgIGdsRHJhd0FycmF5cyhHTF9UUklBTkdMRV9GQU4s
IDAsIDQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxh
Y2tiZXJyeS9MYXllckNvbXBvc2l0aW5nVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5jcHAKaW5kZXgg
ZWZiNzEzZjY0MjhjNjI4NjM5YjAzOGJlOWFhMzI3ZWFjYzk5MDExMi4uNjQ4MDhhNDE1NDU5ZTdi
MDU4NGRlYWJlYTdhNzE1M2VlZmZkOGY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBvc2l0aW5nVGhyZWFkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQ29tcG9z
aXRpbmdUaHJlYWQuY3BwCkBAIC01Myw4ICs1Myw2IEBACiAjaW5jbHVkZSA8QmxhY2tCZXJyeVBs
YXRmb3JtTG9nLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIAotI2RlZmluZSBERUJV
R19WSURFT19DTElQUElORyAwCi0KIHVzaW5nIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGlj
czo6R0xFUzJQcm9ncmFtOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMzksNjIgKzEzNywx
NCBAQCB2b2lkIExheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OnNldERyYXdUcmFuc2Zvcm0oZG91Ymxl
IHNjYWxlLCBjb25zdCBUcmFuc2Zvcm1hdGlvbgogICAgICAgICBib3VuZHNSZWN0LnNjYWxlKDEu
MCAvIHNjYWxlKTsKIAogICAgIG1fdHJhbnNmb3JtZWRCb3VuZHMgPSBtYXRyaXgubWFwUXVhZChi
b3VuZHNSZWN0KTsKLSAgICBtX2RyYXdSZWN0ID0gbV90cmFuc2Zvcm1lZEJvdW5kcy5ib3VuZGlu
Z0JveCgpOwotfQotCi1zdGF0aWMgRmxvYXRRdWFkIGdldFRyYW5zZm9ybWVkUmVjdChjb25zdCBJ
bnRTaXplJiBib3VuZHMsIGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBkcmF3VHJhbnNmb3JtKQotewotICAgIEZsb2F0UG9pbnQgb3JpZ2luKGJvdW5kcy53
aWR0aCgpIC8gMi4wZiwgYm91bmRzLmhlaWdodCgpIC8gMi4wZik7Ci0gICAgRmxvYXRSZWN0IGxh
eWVyUmVjdChyZWN0KTsKLSAgICBsYXllclJlY3QubW92ZUJ5KC1vcmlnaW4pOwotICAgIHJldHVy
biBkcmF3VHJhbnNmb3JtLm1hcFF1YWQobGF5ZXJSZWN0KTsKKyAgICBtX2JvdW5kaW5nQm94ID0g
bV90cmFuc2Zvcm1lZEJvdW5kcy5ib3VuZGluZ0JveCgpOwogfQogCi0KLUZsb2F0UXVhZCBMYXll
ckNvbXBvc2l0aW5nVGhyZWFkOjpnZXRUcmFuc2Zvcm1lZEhvbGVQdW5jaFJlY3QoKSBjb25zdAor
RmxvYXRRdWFkIExheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OnRyYW5zZm9ybWVkSG9sZVB1bmNoUmVj
dCgpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IHRoZSBmb2xsb3dpbmcgbGluZSBkaXNhYmxlcyBj
bGlwcGluZyBhIHZpZGVvIGluIGFuIGlmcmFtZSBpLmUuIHRoZSBmaXggYXNzb2NpYXRlZCB3aXRo
IFBSIDk5NjM4LgotICAgIC8vIFNvbWUgcmV2aXNlZCB0ZXN0IGNhc2UgKGUuZy4gdmlkZW8taWZy
YW1lLmh0bWwpIHNob3cgdGhhdCB0aGUgb3JpZ2luYWwgZml4IHdvcmtzIGNvcnJlY3RseSB3aGVu
IHNjcm9sbGluZwotICAgIC8vIHRoZSBjb250ZW50cyBvZiB0aGUgZnJhbWUsIGJ1dCBmYWlscyB0
byBjbGlwIGNvcnJlY3RseSBpZiB0aGUgcGFnZSAobWFpbiBmcmFtZSkgaXMgc2Nyb2xsZWQuCi0g
ICAgc3RhdGljIGJvb2wgZW5hYmxlVmlkZW9DbGlwcGluZyA9IGZhbHNlOwotCi0gICAgaWYgKCFt
ZWRpYVBsYXllcigpIHx8ICFlbmFibGVWaWRlb0NsaXBwaW5nKSB7Ci0gICAgICAgIC8vIG1faG9s
ZVB1bmNoQ2xpcFJlY3QgaXMgdmFsaWQgb25seSB3aGVuIHRoZXJlJ3MgYSBtZWRpYSBwbGF5ZXIu
Ci0gICAgICAgIHJldHVybiBnZXRUcmFuc2Zvcm1lZFJlY3QobV9ib3VuZHMsIG1faG9sZVB1bmNo
UmVjdCwgbV9kcmF3VHJhbnNmb3JtKTsKLSAgICB9Ci0KLSAgICAvLyBUaGUgaG9sZSBwdW5jaCBy
ZWN0YW5nbGUgbWF5IG5lZWQgdG8gYmUgY2xpcHBlZCwKLSAgICAvLyBlLmcuIGlmIHRoZSA8dmlk
ZW8+IGlzIG9uIGEgbGF5ZXIgdGhhdCdzIGluY2x1ZGVkIGFuZCBjbGlwcGVkIGJ5IGFuIDxpZnJh
bWU+LgotCi0gICAgLy8gSW4gb3JkZXIgdG8gY2xpcCB3ZSBuZWVkIHRvIGRldGVybWluZSB0aGUg
Y3VycmVudCBwb3NpdGlvbiBvZiB0aGlzIGxheWVyLCB3aGljaAotICAgIC8vIGlzIGVuY29kZWQg
aW4gdGhlIG1fZHJhd1RyYW5zZm9ybSB2YWx1ZSwgd2hpY2ggd2FzIHVzZWQgdG8gaW5pdGlhbGl6
ZSBtX2RyYXdSZWN0LgotICAgIEludFJlY3QgZHJhd1JlY3QgPSBtX2xheWVyUmVuZGVyZXItPnRv
RG9jdW1lbnRWaWV3cG9ydENvb3JkaW5hdGVzKG1fZHJhd1JlY3QpOwotCi0gICAgLy8gQXNzZXJ0
IHRoYXQgaW4gdGhpcyBjYXNlLCB3aGVyZSB0aGUgaG9sZSBwdW5jaCByZWN0YW5nbGUgZXF1YWxz
IHRoZSBzaXplIG9mIHRoZSBsYXllciwKLSAgICAvLyB0aGUgZHJhd1JlY3QgaGFzIHRoZSBzYW1l
IHNpemUgYXMgdGhlIGhvbGUgcHVuY2guCi0gICAgLy8gQVNTRVJUKGRyYXdSZWN0LnNpemUoKSA9
PSBtX2hvbGVQdW5jaFJlY3Quc2l6ZSgpKTsKLSAgICAvLyBEb24ndCBhc3NlcnQgaXQgcHJvZ3Jh
bXRpY2FsbHkgdGhvdWdoIGJlY2F1c2UgdGhlcmUgbWF5IGJlIG9mZi1ieS1vbmUgZXJyb3IgZHVl
IHRvIHJvdW5kaW5nIHdoZW4gdGhlcmUncyB6b29taW5nLgotCi0gICAgLy8gVGhlIGRpZmZlcmVu
Y2UgYmV0d2VlbiBkcmF3UmVjdCBhbmQgbV9ob2xlUHVuY2hSZWN0IGlzIHRoYXQgZHJhd1JlY3Qg
aGFzIGFuIGFjY3VyYXRlIHBvc2l0aW9uCi0gICAgLy8gaW4gV2ViS2l0IGRvY3VtZW50IGNvb3Jk
aW5hdGVzLCB3aGVyZWFzIHRoZSBtX2hvbGVQdW5jaFJlY3QgbG9jYXRpb24gaXMgKDAsMCkgaS5l
LiBpdCdzIHJlbGF0aXZlIHRvIHRoaXMgbGF5ZXIuCi0KLSAgICAvLyBDbGlwIHRoZSBkcmF3UmVj
dC4KLSAgICAvLyBCb3RoIGRyYXdSZWN0IGFuZCBtX2hvbGVQdW5jaENsaXBSZWN0IGFscmVhZHkg
aGF2ZSBjb3JyZWN0IGxvY2F0aW9ucywgaW4gV2ViS2l0IGRvY3VtZW50IGNvb3JkaW5hdGVzLgot
ICAgIEludFBvaW50IGxvY2F0aW9uID0gZHJhd1JlY3QubG9jYXRpb24oKTsKLSAgICBkcmF3UmVj
dC5pbnRlcnNlY3QobV9ob2xlUHVuY2hDbGlwUmVjdCk7Ci0KLSAgICAvLyBTaGlmdCB0aGUgY2xp
cHBlZCBkcmF3UmVjdCB0byBoYXZlIHRoZSBzYW1lIGtpbmQgb2YgbG9jYXRlZC1hdC16ZXJvIHBv
c2l0aW9uIGFzIHRoZSBvcmlnaW5hbCBob2xlUHVuY2hSZWN0LgotICAgIGRyYXdSZWN0Lm1vdmUo
LWxvY2F0aW9uLngoKSwgLWxvY2F0aW9uLnkoKSk7Ci0KLSNpZiBERUJVR19WSURFT19DTElQUElO
RwotICAgIEludFJlY3QgZHJhd1JlY3RJbldlYktpdERvY3VtZW50Q29vcmRpbmF0aW9uID0gbV9s
YXllclJlbmRlcmVyLT50b1dlYktpdERvY3VtZW50Q29vcmRpbmF0ZXMobV9kcmF3UmVjdCk7Ci0g
ICAgQkJMT0coQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVsSW5mbywgIkxheWVyQ29tcG9z
aXRpbmdUaHJlYWQ6OmdldFRyYW5zZm9ybWVkSG9sZVB1bmNoUmVjdCgpIC0gZHJhd1JlY3Q9KHg9
JWQseT0lZCx3aWR0aD0lZCxoZWlnaHQ9JWQpIGNsaXBSZWN0PSh4PSVkLHk9JWQsd2lkdGg9JWQs
aGVpZ2h0PSVkKSBjbGlwcGVkUmVjdD0oeD0lZCx5PSVkLHdpZHRoPSVkLGhlaWdodD0lZCkuIiwK
LSAgICAgICAgZHJhd1JlY3RJbldlYktpdERvY3VtZW50Q29vcmRpbmF0aW9uLngoKSwgZHJhd1Jl
Y3RJbldlYktpdERvY3VtZW50Q29vcmRpbmF0aW9uLnkoKSwgZHJhd1JlY3RJbldlYktpdERvY3Vt
ZW50Q29vcmRpbmF0aW9uLndpZHRoKCksIGRyYXdSZWN0SW5XZWJLaXREb2N1bWVudENvb3JkaW5h
dGlvbi5oZWlnaHQoKSwKLSAgICAgICAgbV9ob2xlUHVuY2hDbGlwUmVjdC54KCksIG1faG9sZVB1
bmNoQ2xpcFJlY3QueSgpLCBtX2hvbGVQdW5jaENsaXBSZWN0LndpZHRoKCksIG1faG9sZVB1bmNo
Q2xpcFJlY3QuaGVpZ2h0KCksCi0gICAgICAgIGRyYXdSZWN0LngoKSwgZHJhd1JlY3QueSgpLCBk
cmF3UmVjdC53aWR0aCgpLCBkcmF3UmVjdC5oZWlnaHQoKSk7Ci0jZW5kaWYKLQotICAgIHJldHVy
biBnZXRUcmFuc2Zvcm1lZFJlY3QobV9ib3VuZHMsIGRyYXdSZWN0LCBtX2RyYXdUcmFuc2Zvcm0p
OworICAgIEZsb2F0UmVjdCBob2xlUHVuY2hSZWN0KG1faG9sZVB1bmNoUmVjdCk7CisgICAgaG9s
ZVB1bmNoUmVjdC5tb3ZlQnkoLW9yaWdpbigpKTsKKyAgICByZXR1cm4gbV9kcmF3VHJhbnNmb3Jt
Lm1hcFF1YWQoaG9sZVB1bmNoUmVjdCk7CiB9CiAKIHZvaWQgTGF5ZXJDb21wb3NpdGluZ1RocmVh
ZDo6ZHJhd1RleHR1cmVzKGRvdWJsZSBzY2FsZSwgY29uc3QgR0xFUzJQcm9ncmFtJiBwcm9ncmFt
LCBjb25zdCBGbG9hdFJlY3QmIHZpc2libGVSZWN0KQpAQCAtMjM5LDcgKzE4OSw3IEBAIHZvaWQg
TGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6ZHJhd1RleHR1cmVzKGRvdWJsZSBzY2FsZSwgY29uc3Qg
R0xFUzJQcm9ncmFtJiBwcm9nCiAgICAgICAgICAgICAgICAgICAgIC1tX3RyYW5zZm9ybWVkQm91
bmRzLnAxKCkueSgpICogdnJoMiArIHZyaDIgKyB2aXNpYmxlUmVjdC55KCkpOwogICAgICAgICAg
ICAgICAgIHBhaW50UmVjdCA9IEludFJlY3Qocm91bmRlZEludFBvaW50KHApLCBtX2JvdW5kcyk7
CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBwYWludFJlY3QgPSBtX2xheWVy
UmVuZGVyZXItPnRvV2luZG93Q29vcmRpbmF0ZXMobV9kcmF3UmVjdCk7CisgICAgICAgICAgICAg
ICAgcGFpbnRSZWN0ID0gbV9sYXllclJlbmRlcmVyLT50b1dpbmRvd0Nvb3JkaW5hdGVzKG1fYm91
bmRpbmdCb3gpOwogCiAgICAgICAgICAgICBtX21lZGlhUGxheWVyLT5wYWludCgwLCBwYWludFJl
Y3QpOwogICAgICAgICAgICAgTWVkaWFQbGF5ZXJQcml2YXRlKiBtcHAgPSBzdGF0aWNfY2FzdDxN
ZWRpYVBsYXllclByaXZhdGUqPihtX21lZGlhUGxheWVyLT5wbGF0Zm9ybU1lZGlhKCkubWVkaWEu
cW54TWVkaWFQbGF5ZXIpOwpAQCAtMjg1LDcgKzIzNSw3IEBAIHZvaWQgTGF5ZXJDb21wb3NpdGlu
Z1RocmVhZDo6ZHJhd1N1cmZhY2UoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdUcmFu
c2ZvCiAgICAgICAgIGdsQmxlbmRGdW5jKEdMX09ORSwgR0xfT05FX01JTlVTX1NSQ19BTFBIQSk7
CiAgICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgc3VyZmFjZVRleElEKTsKIAot
ICAgICAgICBGbG9hdFF1YWQgc3VyZmFjZVF1YWQgPSBnZXRUcmFuc2Zvcm1lZFJlY3QobV9ib3Vu
ZHMsIEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgbV9ib3VuZHMpLCBkcmF3VHJhbnNmb3JtKTsK
KyAgICAgICAgRmxvYXRRdWFkIHN1cmZhY2VRdWFkID0gZHJhd1RyYW5zZm9ybS5tYXBRdWFkKEZs
b2F0UmVjdCgtb3JpZ2luKCksIGJvdW5kcygpKSk7CiAgICAgICAgIGdsVW5pZm9ybTFmKHByb2dy
YW0ub3BhY2l0eUxvY2F0aW9uKCksIGxheWVyUmVuZGVyZXJTdXJmYWNlKCktPmRyYXdPcGFjaXR5
KCkpOwogICAgICAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIocHJvZ3JhbS5wb3NpdGlvbkxvY2F0
aW9uKCksIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgJnN1cmZhY2VRdWFkKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNv
bXBvc2l0aW5nVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFj
a2JlcnJ5L0xheWVyQ29tcG9zaXRpbmdUaHJlYWQuaAppbmRleCBjOGMwZWRjNzIzMjViOGM4YTJl
OWZjNTQ2MDcxYzM3MTAxMzc5OGIyLi4wM2U0YTE4NWI5ZDRhZTExNjEyMzI2NGMzZTQyYTMwOWE3
MjUxZWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFj
a2JlcnJ5L0xheWVyQ29tcG9zaXRpbmdUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQ29tcG9zaXRpbmdUaHJlYWQuaApAQCAtMTUz
LDcgKzE1Myw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IExheWVyQ29tcG9zaXRpbmdUaHJlYWQq
IHJvb3RMYXllcigpIGNvbnN0OwogICAgIHZvaWQgc2V0U3VibGF5ZXJzKGNvbnN0IFZlY3RvcjxS
ZWZQdHI8TGF5ZXJDb21wb3NpdGluZ1RocmVhZD4gPiYpOwotICAgIGNvbnN0IFZlY3RvcjxSZWZQ
dHI8TGF5ZXJDb21wb3NpdGluZ1RocmVhZD4gPiYgZ2V0U3VibGF5ZXJzKCkgY29uc3QgeyByZXR1
cm4gbV9zdWJsYXllcnM7IH0KKyAgICBjb25zdCBWZWN0b3I8UmVmUHRyPExheWVyQ29tcG9zaXRp
bmdUaHJlYWQ+ID4mIHN1YmxheWVycygpIGNvbnN0IHsgcmV0dXJuIG1fc3VibGF5ZXJzOyB9CiAg
ICAgdm9pZCBzZXRTdXBlcmxheWVyKExheWVyQ29tcG9zaXRpbmdUaHJlYWQqIHN1cGVybGF5ZXIp
IHsgbV9zdXBlcmxheWVyID0gc3VwZXJsYXllcjsgfQogICAgIExheWVyQ29tcG9zaXRpbmdUaHJl
YWQqIHN1cGVybGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3N1cGVybGF5ZXI7IH0KIApAQCAtMTgw
LDkgKzE4MCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRSZXBsaWNhTGF5ZXIoTGF5ZXJDb21w
b3NpdGluZ1RocmVhZCogbGF5ZXIpIHsgbV9yZXBsaWNhTGF5ZXIgPSBsYXllcjsgfQogICAgIExh
eWVyQ29tcG9zaXRpbmdUaHJlYWQqIHJlcGxpY2FMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVw
bGljYUxheWVyLmdldCgpOyB9CiAKLSAgICBGbG9hdFJlY3QgZ2V0RHJhd1JlY3QoKSBjb25zdCB7
IHJldHVybiBtX2RyYXdSZWN0OyB9Ci0gICAgY29uc3QgRmxvYXRRdWFkJiBnZXRUcmFuc2Zvcm1l
ZEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNmb3JtZWRCb3VuZHM7IH0KLSAgICBGbG9h
dFF1YWQgZ2V0VHJhbnNmb3JtZWRIb2xlUHVuY2hSZWN0KCkgY29uc3Q7CisgICAgLy8gVGhlc2Ug
dXNlIG5vcm1hbGl6ZWQgZGV2aWNlIGNvb3JkaW5hdGVzCisgICAgRmxvYXRSZWN0IGJvdW5kaW5n
Qm94KCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZGluZ0JveDsgfQorICAgIGNvbnN0IEZsb2F0UXVh
ZCYgdHJhbnNmb3JtZWRCb3VuZHMoKSBjb25zdCB7IHJldHVybiBtX3RyYW5zZm9ybWVkQm91bmRz
OyB9CisgICAgRmxvYXRRdWFkIHRyYW5zZm9ybWVkSG9sZVB1bmNoUmVjdCgpIGNvbnN0OwogCiAg
ICAgdm9pZCBkZWxldGVUZXh0dXJlcygpOwogCkBAIC0yNTAsNyArMjUxLDcgQEAgcHJpdmF0ZToK
ICAgICAvLyBWZXJ0ZXggZGF0YSBmb3IgdGhlIGJvdW5kcyBvZiB0aGlzIGxheWVyCiAgICAgRmxv
YXRRdWFkIG1fdHJhbnNmb3JtZWRCb3VuZHM7CiAgICAgLy8gVGhlIGJvdW5kaW5nIHJlY3Rhbmds
ZSBvZiB0aGUgdHJhbnNmb3JtZWQgbGF5ZXIKLSAgICBGbG9hdFJlY3QgbV9kcmF3UmVjdDsKKyAg
ICBGbG9hdFJlY3QgbV9ib3VuZGluZ0JveDsKIAogICAgIE93blB0cjxMYXllclJlbmRlcmVyU3Vy
ZmFjZT4gbV9sYXllclJlbmRlcmVyU3VyZmFjZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckRhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJEYXRhLmgKaW5kZXggNWMyNTll
M2Q1YjcyMzBiMWE3YTI4NmMzYWI4Mzk5MmVhNjY3NjQ1NS4uMDNhNGEzNDFjYmUzOTQ3NDg4ZmU3
MDk2YjgzZTM4MmE0MWVkNTVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyRGF0YS5oCkBAIC0yMjQsNyArMjI0LDYgQEAg
cHJvdGVjdGVkOgogICAgIFBsdWdpblZpZXcqIG1fcGx1Z2luVmlldzsKICNpZiBFTkFCTEUoVklE
RU8pCiAgICAgTWVkaWFQbGF5ZXIqIG1fbWVkaWFQbGF5ZXI7Ci0gICAgSW50UmVjdCBtX2hvbGVQ
dW5jaENsaXBSZWN0OwogI2VuZGlmCiAgICAgSW50UmVjdCBtX2hvbGVQdW5jaFJlY3Q7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5
ZXJGaWx0ZXJSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9i
bGFja2JlcnJ5L0xheWVyRmlsdGVyUmVuZGVyZXIuY3BwCmluZGV4IGZhNGNhOWU1ZGVhNTFmYWZm
YzFhNzc0YzVlODcyN2UxZTVlMmExZjYuLjAxZGVhNmUyZjAzMmU3ZDEwY2U4MTRkOTVkYzllNmZh
NTMzYjAzZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Js
YWNrYmVycnkvTGF5ZXJGaWx0ZXJSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckZpbHRlclJlbmRlcmVyLmNwcApAQCAtNzA5
LDcgKzcwOSw3IEBAIHZvaWQgTGF5ZXJGaWx0ZXJSZW5kZXJlcjo6YXBwbHlBY3Rpb25zKHVuc2ln
bmVkJiBmYm8sIExheWVyQ29tcG9zaXRpbmdUaHJlYWQqIGxhCiAKICAgICBMYXllclJlbmRlcmVy
U3VyZmFjZSogc3VyZmFjZSA9IGxheWVyLT5sYXllclJlbmRlcmVyU3VyZmFjZSgpOwogCi0gICAg
Z2xWZXJ0ZXhBdHRyaWJQb2ludGVyKG1fcG9zaXRpb25Mb2NhdGlvbiwgMiwgR0xfRkxPQVQsIEdM
X0ZBTFNFLCAwLCAmbGF5ZXItPmdldFRyYW5zZm9ybWVkQm91bmRzKCkpOworICAgIGdsVmVydGV4
QXR0cmliUG9pbnRlcihtX3Bvc2l0aW9uTG9jYXRpb24sIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwg
MCwgJmxheWVyLT50cmFuc2Zvcm1lZEJvdW5kcygpKTsKICAgICBnbEVuYWJsZVZlcnRleEF0dHJp
YkFycmF5KG1fcG9zaXRpb25Mb2NhdGlvbik7CiAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKG1f
dGV4Q29vcmRMb2NhdGlvbiwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCB0ZXhjb29yZHMpOwog
ICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkobV90ZXhDb29yZExvY2F0aW9uKTsKQEAgLTc2
NCw3ICs3NjQsNyBAQCB2b2lkIExheWVyRmlsdGVyUmVuZGVyZXI6OmFwcGx5QWN0aW9ucyh1bnNp
Z25lZCYgZmJvLCBMYXllckNvbXBvc2l0aW5nVGhyZWFkKiBsYQogCiAgICAgICAgIGFjdGlvbnNb
aV0tPnJlc3RvcmVTdGF0ZSgpOwogCi0gICAgICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihtX3Bv
c2l0aW9uTG9jYXRpb24sIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgJmxheWVyLT5nZXRUcmFu
c2Zvcm1lZEJvdW5kcygpICk7CisgICAgICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihtX3Bvc2l0
aW9uTG9jYXRpb24sIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgJmxheWVyLT50cmFuc2Zvcm1l
ZEJvdW5kcygpKTsKICAgICAgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShtX3Bvc2l0aW9u
TG9jYXRpb24pOwogICAgICAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIobV90ZXhDb29yZExvY2F0
aW9uLCAyLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsIHRleGNvb3Jkcyk7CiAgICAgICAgIGdsRW5h
YmxlVmVydGV4QXR0cmliQXJyYXkobV90ZXhDb29yZExvY2F0aW9uKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJSZW5kZXJlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVu
ZGVyZXIuY3BwCmluZGV4IGU5YjRlM2JhYTFmMGYzMmVjMWY1ODg5YjQ1MGJmZDM2N2M3Njc3MzQu
LmJhZmFiOGRiOWE0ZWQ1NjdkZWM5ZmY0OGM3MTk3Mjg3NTgxY2ExOWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJSZW5kZXJlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXll
clJlbmRlcmVyLmNwcApAQCAtMzA5LDcgKzMwOSw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlcjo6Y29t
cG9zaXRlTGF5ZXJzKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIExheWVyQ29t
CiAgICAgbV9zY2FsZSA9IG1hdHJpeC5tMTEoKSAqIG1fdmlld3BvcnQud2lkdGgoKSAvIDI7CiAK
ICAgICBWZWN0b3I8UmVmUHRyPExheWVyQ29tcG9zaXRpbmdUaHJlYWQ+ID4gc3VyZmFjZUxheWVy
czsKLSAgICBjb25zdCBWZWN0b3I8UmVmUHRyPExheWVyQ29tcG9zaXRpbmdUaHJlYWQ+ID4mIHN1
YmxheWVycyA9IHJvb3RMYXllci0+Z2V0U3VibGF5ZXJzKCk7CisgICAgY29uc3QgVmVjdG9yPFJl
ZlB0cjxMYXllckNvbXBvc2l0aW5nVGhyZWFkPiA+JiBzdWJsYXllcnMgPSByb290TGF5ZXItPnN1
YmxheWVycygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3VibGF5ZXJzLnNpemUoKTsg
aSsrKSB7CiAgICAgICAgIGZsb2F0IG9wYWNpdHkgPSAxOwogICAgICAgICBGbG9hdFJlY3QgY2xp
cFJlY3QobV9jbGlwUmVjdCk7CkBAIC02MDcsNyArNjA3LDcgQEAgdm9pZCBMYXllclJlbmRlcmVy
OjpkcmF3RGVidWdCb3JkZXIoTGF5ZXJDb21wb3NpdGluZ1RocmVhZCogbGF5ZXIpCiAgICAgaWYg
KGxheWVyQWxyZWFkeU9uU3VyZmFjZShsYXllcikpCiAgICAgICAgIHRyYW5zZm9ybWVkQm91bmRz
ID0gbGF5ZXItPmxheWVyUmVuZGVyZXJTdXJmYWNlKCktPnRyYW5zZm9ybWVkQm91bmRzKCk7CiAg
ICAgZWxzZQotICAgICAgICB0cmFuc2Zvcm1lZEJvdW5kcyA9IGxheWVyLT5nZXRUcmFuc2Zvcm1l
ZEJvdW5kcygpOworICAgICAgICB0cmFuc2Zvcm1lZEJvdW5kcyA9IGxheWVyLT50cmFuc2Zvcm1l
ZEJvdW5kcygpOwogCiAgICAgY29uc3QgR0xFUzJQcm9ncmFtJiBwcm9ncmFtID0gdXNlUHJvZ3Jh
bShDb2xvclByb2dyYW0pOwogICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihwcm9ncmFtLnBvc2l0
aW9uTG9jYXRpb24oKSwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCAmdHJhbnNmb3JtZWRCb3Vu
ZHMpOwpAQCAtNjI1LDcgKzYyNSw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlcjo6ZHJhd0hvbGVQdW5j
aFJlY3QoTGF5ZXJDb21wb3NpdGluZ1RocmVhZCogbGF5ZXIpCiAKICAgICBnbEVuYWJsZShHTF9C
TEVORCk7CiAgICAgZ2xCbGVuZEZ1bmMoR0xfT05FLCBHTF9aRVJPKTsKLSAgICBGbG9hdFF1YWQg
aG9sZSA9IGxheWVyLT5nZXRUcmFuc2Zvcm1lZEhvbGVQdW5jaFJlY3QoKTsKKyAgICBGbG9hdFF1
YWQgaG9sZSA9IGxheWVyLT50cmFuc2Zvcm1lZEhvbGVQdW5jaFJlY3QoKTsKICAgICBnbFZlcnRl
eEF0dHJpYlBvaW50ZXIocHJvZ3JhbS5wb3NpdGlvbkxvY2F0aW9uKCksIDIsIEdMX0ZMT0FULCBH
TF9GQUxTRSwgMCwgJmhvbGUpOwogICAgIGdsRHJhd0FycmF5cyhHTF9UUklBTkdMRV9GQU4sIDAs
IDQpOwogICAgIGNoZWNrR0xFcnJvcigpOwpAQCAtNjUyLDcgKzY1Miw3IEBAIHZvaWQgTGF5ZXJS
ZW5kZXJlcjo6cHJlcGFyZUZyYW1lUmVjdXJzaXZlKExheWVyQ29tcG9zaXRpbmdUaHJlYWQqIGxh
eWVyLCBkb3VibGUKICAgICAgICAgfQogICAgIH0KIAotICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8
TGF5ZXJDb21wb3NpdGluZ1RocmVhZD4gPiYgc3VibGF5ZXJzID0gbGF5ZXItPmdldFN1YmxheWVy
cygpOworICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8TGF5ZXJDb21wb3NpdGluZ1RocmVhZD4gPiYg
c3VibGF5ZXJzID0gbGF5ZXItPnN1YmxheWVycygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgc3VibGF5ZXJzLnNpemUoKTsgaSsrKQogICAgICAgICBwcmVwYXJlRnJhbWVSZWN1cnNpdmUo
c3VibGF5ZXJzW2ldLmdldCgpLCBhbmltYXRpb25UaW1lLCBpc0NvbnRleHRDdXJyZW50KTsKIH0K
QEAgLTc5NSwxMCArNzk1LDEwIEBAIHZvaWQgTGF5ZXJSZW5kZXJlcjo6dXBkYXRlTGF5ZXJzUmVj
dXJzaXZlKExheWVyQ29tcG9zaXRpbmdUaHJlYWQqIGxheWVyLCBjb25zdCBUCiAgICAgICAgICAg
ICBzdXJmYWNlLT5zZXRSZXBsaWNhRHJhd1RyYW5zZm9ybShyZXBsaWNhTWF0cml4KTsKICAgICAg
ICAgfQogCi0gICAgICAgIEludFJlY3QgZHJhd1JlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KEZsb2F0
UmVjdChGbG9hdFBvaW50KCksIGJvdW5kcykpOwotICAgICAgICBzdXJmYWNlLT5zZXRDb250ZW50
UmVjdChkcmF3UmVjdCk7CisgICAgICAgIEludFJlY3QgY29udGVudFJlY3QgPSBlbmNsb3NpbmdJ
bnRSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIGJvdW5kcykpOworICAgICAgICBz
dXJmYWNlLT5zZXRDb250ZW50UmVjdChjb250ZW50UmVjdCk7CiAKLSAgICAgICAgVHJhbnNmb3Jt
YXRpb25NYXRyaXggcHJvamVjdGlvbk1hdHJpeCA9IG9ydGhvTWF0cml4KGRyYXdSZWN0LngoKSwg
ZHJhd1JlY3QubWF4WCgpLCBkcmF3UmVjdC55KCksIGRyYXdSZWN0Lm1heFkoKSwgLTEwMDAsIDEw
MDApOworICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBwcm9qZWN0aW9uTWF0cml4ID0gb3J0
aG9NYXRyaXgoY29udGVudFJlY3QueCgpLCBjb250ZW50UmVjdC5tYXhYKCksIGNvbnRlbnRSZWN0
LnkoKSwgY29udGVudFJlY3QubWF4WSgpLCAtMTAwMCwgMTAwMCk7CiAgICAgICAgIC8vIFRoZSBv
cmlnaW4gb2YgdGhlIG5ldyBzdXJmYWNlIGlzIHRoZSB1cHBlciBsZWZ0IGNvcm5lciBvZiB0aGUg
bGF5ZXIuCiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGRyYXdUcmFuc2Zvcm07CiAgICAg
ICAgIGRyYXdUcmFuc2Zvcm0udHJhbnNsYXRlM2QoMC41ICogYm91bmRzLndpZHRoKCksIDAuNSAq
IGJvdW5kcy5oZWlnaHQoKSwgMCk7CkBAIC04MTEsMTggKzgxMSwxOCBAQCB2b2lkIExheWVyUmVu
ZGVyZXI6OnVwZGF0ZUxheWVyc1JlY3Vyc2l2ZShMYXllckNvbXBvc2l0aW5nVGhyZWFkKiBsYXll
ciwgY29uc3QgVAogICAgIGxheWVyLT5zZXREcmF3VHJhbnNmb3JtKG1fc2NhbGUsIGxvY2FsTWF0
cml4KTsKIAogI2lmIEVOQUJMRShWSURFTykKLSAgICBib29sIGxheWVyVmlzaWJsZSA9IGNsaXBS
ZWN0LmludGVyc2VjdHMobGF5ZXItPmdldERyYXdSZWN0KCkpIHx8IGxheWVyLT5tZWRpYVBsYXll
cigpOworICAgIGJvb2wgbGF5ZXJWaXNpYmxlID0gY2xpcFJlY3QuaW50ZXJzZWN0cyhsYXllci0+
Ym91bmRpbmdCb3goKSkgfHwgbGF5ZXItPm1lZGlhUGxheWVyKCk7CiAjZWxzZQotICAgIGJvb2wg
bGF5ZXJWaXNpYmxlID0gY2xpcFJlY3QuaW50ZXJzZWN0cyhsYXllci0+Z2V0RHJhd1JlY3QoKSk7
CisgICAgYm9vbCBsYXllclZpc2libGUgPSBjbGlwUmVjdC5pbnRlcnNlY3RzKGxheWVyLT5ib3Vu
ZGluZ0JveCgpKTsKICNlbmRpZgogCiAgICAgaWYgKGxheWVyLT5uZWVkc1RleHR1cmUoKSAmJiBs
YXllclZpc2libGUpIHsKLSAgICAgICAgSW50UmVjdCBkaXJ0eVJlY3QgPSB0b1dpbmRvd0Nvb3Jk
aW5hdGVzKGludGVyc2VjdGlvbihsYXllci0+Z2V0RHJhd1JlY3QoKSwgY2xpcFJlY3QpKTsKKyAg
ICAgICAgSW50UmVjdCBkaXJ0eVJlY3QgPSB0b1dpbmRvd0Nvb3JkaW5hdGVzKGludGVyc2VjdGlv
bihsYXllci0+Ym91bmRpbmdCb3goKSwgY2xpcFJlY3QpKTsKICAgICAgICAgbV9sYXN0UmVuZGVy
aW5nUmVzdWx0cy5hZGREaXJ0eVJlY3QoZGlydHlSZWN0KTsKICAgICB9CiAKICAgICBpZiAobGF5
ZXItPm1hc2tzVG9Cb3VuZHMoKSkKLSAgICAgICAgY2xpcFJlY3QuaW50ZXJzZWN0KGxheWVyLT5n
ZXREcmF3UmVjdCgpKTsKKyAgICAgICAgY2xpcFJlY3QuaW50ZXJzZWN0KGxheWVyLT5ib3VuZGlu
Z0JveCgpKTsKIAogICAgIC8vIEZsYXR0ZW4gdG8gMkQgaWYgdGhlIGxheWVyIGRvZXNuJ3QgcHJl
c2VydmUgM0QuCiAgICAgaWYgKCFsYXllci0+cHJlc2VydmVzM0QoKSkgewpAQCAtODQ1LDcgKzg0
NSw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlcjo6dXBkYXRlTGF5ZXJzUmVjdXJzaXZlKExheWVyQ29t
cG9zaXRpbmdUaHJlYWQqIGxheWVyLCBjb25zdCBUCiAgICAgLy8gTVtzXSA9IE0gKiBUclstY2Vu
dGVyXQogICAgIGxvY2FsTWF0cml4LnRyYW5zbGF0ZTNkKC1ib3VuZHMud2lkdGgoKSAqIDAuNSwg
LWJvdW5kcy5oZWlnaHQoKSAqIDAuNSwgMCk7CiAKLSAgICBjb25zdCBWZWN0b3I8UmVmUHRyPExh
eWVyQ29tcG9zaXRpbmdUaHJlYWQ+ID4mIHN1YmxheWVycyA9IGxheWVyLT5nZXRTdWJsYXllcnMo
KTsKKyAgICBjb25zdCBWZWN0b3I8UmVmUHRyPExheWVyQ29tcG9zaXRpbmdUaHJlYWQ+ID4mIHN1
YmxheWVycyA9IGxheWVyLT5zdWJsYXllcnMoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHN1YmxheWVycy5zaXplKCk7IGkrKykKICAgICAgICAgdXBkYXRlTGF5ZXJzUmVjdXJzaXZlKHN1
YmxheWVyc1tpXS5nZXQoKSwgbG9jYWxNYXRyaXgsIHN1cmZhY2VMYXllcnMsIG9wYWNpdHksIGNs
aXBSZWN0KTsKIH0KQEAgLTg2NCwxMCArODY0LDEwIEBAIHN0YXRpYyB2b2lkIGNvbGxlY3QzRFBy
ZXNlcnZpbmdMYXllcnMoVmVjdG9yPExheWVyQ29tcG9zaXRpbmdUaHJlYWQqPiYgbGF5ZXJzKQog
ewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGF5ZXJzLnNpemUoKTsgKytpKSB7CiAgICAg
ICAgIExheWVyQ29tcG9zaXRpbmdUaHJlYWQqIGxheWVyID0gbGF5ZXJzW2ldOwotICAgICAgICBp
ZiAoIWxheWVyLT5wcmVzZXJ2ZXMzRCgpIHx8ICFsYXllci0+Z2V0U3VibGF5ZXJzKCkuc2l6ZSgp
KQorICAgICAgICBpZiAoIWxheWVyLT5wcmVzZXJ2ZXMzRCgpIHx8ICFsYXllci0+c3VibGF5ZXJz
KCkuc2l6ZSgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgVmVjdG9yPExheWVy
Q29tcG9zaXRpbmdUaHJlYWQqPiBzdWJsYXllcnMgPSByYXdQdHJWZWN0b3JGcm9tUmVmUHRyVmVj
dG9yKGxheWVyLT5nZXRTdWJsYXllcnMoKSk7CisgICAgICAgIFZlY3RvcjxMYXllckNvbXBvc2l0
aW5nVGhyZWFkKj4gc3VibGF5ZXJzID0gcmF3UHRyVmVjdG9yRnJvbVJlZlB0clZlY3RvcihsYXll
ci0+c3VibGF5ZXJzKCkpOwogICAgICAgICBjb2xsZWN0M0RQcmVzZXJ2aW5nTGF5ZXJzKHN1Ymxh
eWVycyk7CiAgICAgICAgIGxheWVycy5pbnNlcnQoaSsxLCBzdWJsYXllcnMpOwogICAgICAgICBp
ICs9IHN1YmxheWVycy5zaXplKCk7CkBAIC04NzgsOSArODc4LDkgQEAgdm9pZCBMYXllclJlbmRl
cmVyOjpjb21wb3NpdGVMYXllcnNSZWN1cnNpdmUoTGF5ZXJDb21wb3NpdGluZ1RocmVhZCogbGF5
ZXIsIGludAogewogICAgIEZsb2F0UmVjdCByZWN0OwogICAgIGlmIChsYXllckFscmVhZHlPblN1
cmZhY2UobGF5ZXIpKQotICAgICAgICByZWN0ID0gbGF5ZXItPmxheWVyUmVuZGVyZXJTdXJmYWNl
KCktPmRyYXdSZWN0KCk7CisgICAgICAgIHJlY3QgPSBsYXllci0+bGF5ZXJSZW5kZXJlclN1cmZh
Y2UoKS0+Ym91bmRpbmdCb3goKTsKICAgICBlbHNlCi0gICAgICAgIHJlY3QgPSBsYXllci0+Z2V0
RHJhd1JlY3QoKTsKKyAgICAgICAgcmVjdCA9IGxheWVyLT5ib3VuZGluZ0JveCgpOwogCiAjaWYg
RU5BQkxFKFZJREVPKQogICAgIGJvb2wgbGF5ZXJWaXNpYmxlID0gY2xpcFJlY3QuaW50ZXJzZWN0
cyhyZWN0KSB8fCBsYXllci0+bWVkaWFQbGF5ZXIoKTsKQEAgLTk2NSwxOCArOTY1LDE4IEBAIHZv
aWQgTGF5ZXJSZW5kZXJlcjo6Y29tcG9zaXRlTGF5ZXJzUmVjdXJzaXZlKExheWVyQ29tcG9zaXRp
bmdUaHJlYWQqIGxheWVyLCBpbnQKICAgICAgICAgdXBkYXRlU2Npc3NvcklmTmVlZGVkKGNsaXBS
ZWN0KTsKICAgICAgICAgY29uc3QgR0xFUzJQcm9ncmFtJiBwcm9ncmFtID0gdXNlUHJvZ3JhbShD
b2xvclByb2dyYW0pOwogICAgICAgICBnbENvbG9yTWFzayhHTF9GQUxTRSwgR0xfRkFMU0UsIEdM
X0ZBTFNFLCBHTF9GQUxTRSk7Ci0gICAgICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihwcm9ncmFt
LnBvc2l0aW9uTG9jYXRpb24oKSwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCAmbGF5ZXItPmdl
dFRyYW5zZm9ybWVkQm91bmRzKCkpOworICAgICAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIocHJv
Z3JhbS5wb3NpdGlvbkxvY2F0aW9uKCksIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgJmxheWVy
LT50cmFuc2Zvcm1lZEJvdW5kcygpKTsKICAgICAgICAgZ2xEcmF3QXJyYXlzKEdMX1RSSUFOR0xF
X0ZBTiwgMCwgNCk7CiAgICAgICAgIGdsQ29sb3JNYXNrKEdMX1RSVUUsIEdMX1RSVUUsIEdMX1RS
VUUsIEdMX1RSVUUpOwogICAgIH0KIAogICAgIGlmIChsYXllci0+bWFza3NUb0JvdW5kcygpKQot
ICAgICAgICBjbGlwUmVjdC5pbnRlcnNlY3QobGF5ZXItPmdldERyYXdSZWN0KCkpOworICAgICAg
ICBjbGlwUmVjdC5pbnRlcnNlY3QobGF5ZXItPmJvdW5kaW5nQm94KCkpOwogCiAgICAgLy8gSGVy
ZSwgd2UgbmVlZCB0byBzb3J0IHRoZSB3aG9sZSBzdWJ0cmVlIG9mIGxheWVycyB3aXRoIHByZXNl
cnZlLTNkLiBJdAogICAgIC8vIGFmZmVjdHMgYWxsIGNoaWxkcmVuLCBhbmQgdGhlIGNoaWxkcmVu
IG9mIGFueSBjaGlsZHJlbiB3aXRoIHByZXNlcnZlLTNkLAogICAgIC8vIGFuZCBzbyBvbi4KLSAg
ICBWZWN0b3I8TGF5ZXJDb21wb3NpdGluZ1RocmVhZCo+IHN1YmxheWVycyA9IHJhd1B0clZlY3Rv
ckZyb21SZWZQdHJWZWN0b3IobGF5ZXItPmdldFN1YmxheWVycygpKTsKKyAgICBWZWN0b3I8TGF5
ZXJDb21wb3NpdGluZ1RocmVhZCo+IHN1YmxheWVycyA9IHJhd1B0clZlY3RvckZyb21SZWZQdHJW
ZWN0b3IobGF5ZXItPnN1YmxheWVycygpKTsKIAogICAgIGJvb2wgcHJlc2VydmVzM0QgPSBsYXll
ci0+cHJlc2VydmVzM0QoKTsKICAgICBib29sIHN1cGVybGF5ZXJQcmVzZXJ2ZXMzRCA9IGxheWVy
LT5zdXBlcmxheWVyKCkgJiYgbGF5ZXItPnN1cGVybGF5ZXIoKS0+cHJlc2VydmVzM0QoKTsKQEAg
LTEwMDgsNyArMTAwOCw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlcjo6Y29tcG9zaXRlTGF5ZXJzUmVj
dXJzaXZlKExheWVyQ29tcG9zaXRpbmdUaHJlYWQqIGxheWVyLCBpbnQKICAgICAgICAgdXBkYXRl
U2Npc3NvcklmTmVlZGVkKGNsaXBSZWN0KTsKICAgICAgICAgY29uc3QgR0xFUzJQcm9ncmFtJiBw
cm9ncmFtID0gdXNlUHJvZ3JhbShDb2xvclByb2dyYW0pOwogICAgICAgICBnbENvbG9yTWFzayhH
TF9GQUxTRSwgR0xfRkFMU0UsIEdMX0ZBTFNFLCBHTF9GQUxTRSk7Ci0gICAgICAgIGdsVmVydGV4
QXR0cmliUG9pbnRlcihwcm9ncmFtLnBvc2l0aW9uTG9jYXRpb24oKSwgMiwgR0xfRkxPQVQsIEdM
X0ZBTFNFLCAwLCAmbGF5ZXItPmdldFRyYW5zZm9ybWVkQm91bmRzKCkpOworICAgICAgICBnbFZl
cnRleEF0dHJpYlBvaW50ZXIocHJvZ3JhbS5wb3NpdGlvbkxvY2F0aW9uKCksIDIsIEdMX0ZMT0FU
LCBHTF9GQUxTRSwgMCwgJmxheWVyLT50cmFuc2Zvcm1lZEJvdW5kcygpKTsKICAgICAgICAgZ2xE
cmF3QXJyYXlzKEdMX1RSSUFOR0xFX0ZBTiwgMCwgNCk7CiAgICAgICAgIGdsQ29sb3JNYXNrKEdM
X1RSVUUsIEdMX1RSVUUsIEdMX1RSVUUsIEdMX1RSVUUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVuZGVyZXJTdXJmYWNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJS
ZW5kZXJlclN1cmZhY2UuY3BwCmluZGV4IDVhZjY4ZGFjZjJkYTAwMjRjNzQ3MzU1NjI5MTZhNTYw
OGYyZmU3YWMuLmRmZDc0YjZjY2I0NTEwNjI0MjY1YWE4NzFjYzYxZGQzMDE5MGVjYzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJS
ZW5kZXJlclN1cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2JsYWNrYmVycnkvTGF5ZXJSZW5kZXJlclN1cmZhY2UuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHZv
aWQgTGF5ZXJSZW5kZXJlclN1cmZhY2U6OnNldENvbnRlbnRSZWN0KGNvbnN0IEludFJlY3QmIGNv
bnRlbnRSZWN0KQogICAgIG1fc2l6ZSA9IGNvbnRlbnRSZWN0LnNpemUoKTsKIH0KIAotRmxvYXRS
ZWN0IExheWVyUmVuZGVyZXJTdXJmYWNlOjpkcmF3UmVjdCgpIGNvbnN0CitGbG9hdFJlY3QgTGF5
ZXJSZW5kZXJlclN1cmZhY2U6OmJvdW5kaW5nQm94KCkgY29uc3QKIHsKICAgICBGbG9hdFJlY3Qg
cmVjdCA9IHRyYW5zZm9ybWVkQm91bmRzKCkuYm91bmRpbmdCb3goKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclJlbmRlcmVy
U3VyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9M
YXllclJlbmRlcmVyU3VyZmFjZS5oCmluZGV4IDU3ZmY4NjgzYmIwYmU2N2NjNGE3MDI4YTFjNzFh
NmExZGFhOWI0ZjkuLjYxYWI3ODdjYzlmNzdkMDVmNmRjYTRmODFhNmRkMDU0MmI4Y2VlMGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5
ZXJSZW5kZXJlclN1cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ibGFja2JlcnJ5L0xheWVyUmVuZGVyZXJTdXJmYWNlLmgKQEAgLTUyLDcgKzUyLDggQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0UmVwbGljYURyYXdUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIG1hdHJpeCkgeyBtX3JlcGxpY2FEcmF3VHJhbnNmb3JtID0gbWF0cml4OyB9CiAg
ICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHJlcGxpY2FEcmF3VHJhbnNmb3JtKCkgY29u
c3QgeyByZXR1cm4gbV9yZXBsaWNhRHJhd1RyYW5zZm9ybTsgfQogCi0gICAgRmxvYXRSZWN0IGRy
YXdSZWN0KCkgY29uc3Q7CisgICAgLy8gVGhlc2UgdXNlIG5vcm1hbGl6ZWQgZGV2aWNlIGNvb3Jk
aW5hdGVzCisgICAgRmxvYXRSZWN0IGJvdW5kaW5nQm94KCkgY29uc3Q7CiAgICAgRmxvYXRRdWFk
IHRyYW5zZm9ybWVkQm91bmRzKCkgY29uc3Q7CiAKICAgICBib29sIGVuc3VyZVRleHR1cmUoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkv
TGF5ZXJXZWJLaXRUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Js
YWNrYmVycnkvTGF5ZXJXZWJLaXRUaHJlYWQuaAppbmRleCAwMWFmOWY1OGE4MzgwNmI0MTk4NDdm
MjEzOWRiM2E3NGViNzI5MzkyLi5kZDU0ZmM2YTYzNjg1ODRiMDVmZjVmMTFhN2ZjMWRjZDViZjQ1
NmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2Jl
cnJ5L0xheWVyV2ViS2l0VGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYmxhY2tiZXJyeS9MYXllcldlYktpdFRocmVhZC5oCkBAIC0xMTUsNyArMTE1LDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCBzZXRTdWJsYXllcnMoY29uc3QgVmVjdG9yPFJlZlB0cjxMYXll
cldlYktpdFRocmVhZD4gPiYpOwogCi0gICAgY29uc3QgVmVjdG9yPFJlZlB0cjxMYXllcldlYktp
dFRocmVhZD4gPiYgZ2V0U3VibGF5ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9zdWJsYXllcnM7IH0K
KyAgICBjb25zdCBWZWN0b3I8UmVmUHRyPExheWVyV2ViS2l0VGhyZWFkPiA+JiBzdWJsYXllcnMo
KSBjb25zdCB7IHJldHVybiBtX3N1YmxheWVyczsgfQogCiAgICAgdm9pZCBzZXRTdWJsYXllclRy
YW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKSB7IG1fc3VibGF5
ZXJUcmFuc2Zvcm0gPSB0cmFuc2Zvcm07IHNldE5lZWRzQ29tbWl0KCk7IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9WaWRlb0xheWVy
V2ViS2l0VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNr
YmVycnkvVmlkZW9MYXllcldlYktpdFRocmVhZC5jcHAKaW5kZXggMWZlYzEyMGQyZjZlZmFmZGU5
MzZmYmVhYzkzOWU5YTU5NDIwMDkyZC4uZDdhOTU4YWRiYjk2NjQyMDRkZTI0OTFjYjBhOTJmNjFl
NzdiOThkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxh
Y2tiZXJyeS9WaWRlb0xheWVyV2ViS2l0VGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L1ZpZGVvTGF5ZXJXZWJLaXRUaHJlYWQuY3BwCkBA
IC0yNyw4ICsyNyw2IEBACiAKICNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1Mb2cuaD4KIAot
I2RlZmluZSBERUJVR19WSURFT19DTElQUElORyAwCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
VmlkZW9MYXllcldlYktpdFRocmVhZDo6VmlkZW9MYXllcldlYktpdFRocmVhZChNZWRpYVBsYXll
ciogbWVkaWFQbGF5ZXIpCkBAIC02NCw5ICs2Miw2IEBAIHZvaWQgVmlkZW9MYXllcldlYktpdFRo
cmVhZDo6c2V0TWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXIqIG1lZGlhUGxheWVyKQogdm9pZCBWaWRl
b0xheWVyV2ViS2l0VGhyZWFkOjpzZXRIb2xlUHVuY2hSZWN0KGNvbnN0IEludFJlY3QmIHJlY3Qp
CiB7CiAgICAgbV9ob2xlUHVuY2hSZWN0ID0gcmVjdDsKLSNpZiBERUJVR19WSURFT19DTElQUElO
RwotICAgIEJCTE9HKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbEluZm8sICJWaWRlb0xh
eWVyV2ViS2l0VGhyZWFkIG1faG9sZVB1bmNoUmVjdD0oeD0lZCx5PSVkLHdpZHRoPSVkLGhlaWdo
dD0lZCkuIiwgbV9ob2xlUHVuY2hSZWN0LngoKSwgbV9ob2xlUHVuY2hSZWN0LnkoKSwgbV9ob2xl
UHVuY2hSZWN0LndpZHRoKCksIG1faG9sZVB1bmNoUmVjdC5oZWlnaHQoKSk7Ci0jZW5kaWYKICAg
ICBzZXROZWVkc0NvbW1pdCgpOwogfQogCkBAIC04NywxNiArODIsNiBAQCB2b2lkIFZpZGVvTGF5
ZXJXZWJLaXRUaHJlYWQ6OmJvdW5kc0NoYW5nZWQoKQogICAgIC8vIE5vdGUgdGhhdCBhbHRob3Vn
aCB3ZSBrbm93IHRoZSAqc2l6ZSogb2YgdGhpcyBsYXllciwgd2Ugd29uJ3Qga25vdyB0aGUgcG9z
aXRpb24gb2YgdGhpcyBsYXllcgogICAgIC8vIHVudGlsIHRoZSBMYXllckNvbXBvc2l0aW5nVGhy
ZWFkOjpzZXREcmF3VHJhbnNmb3JtIG1ldGhvZCBpcyBjYWxsZWQgZnJvbSB0aGUgTGF5ZXJSZW5k
ZXJlci4KICAgICBzZXRIb2xlUHVuY2hSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgbV9i
b3VuZHMpKTsKLQotICAgIC8vIEFsc28gc2V0IGEgY2xpcHBpbmcgcmVjdGFuZ2xlIGZvciB0aGlz
IGhvbGUgcHVuY2ggcmVjdGFuZ2xlLgotICAgIGlmIChGcmFtZVZpZXcqIGZyYW1lVmlldyA9IG1l
ZGlhUGxheWVyKCktPmZyYW1lVmlldygpKQotICAgICAgICBtX2hvbGVQdW5jaENsaXBSZWN0ID0g
ZnJhbWVWaWV3LT53aW5kb3dDbGlwUmVjdCgpOwotICAgIGVsc2UKLSAgICAgICAgbV9ob2xlUHVu
Y2hDbGlwUmVjdCA9IGhvbGVQdW5jaFJlY3QoKTsKLQotI2lmIERFQlVHX1ZJREVPX0NMSVBQSU5H
Ci0gICAgQkJMT0coQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVsSW5mbywgIlZpZGVvTGF5
ZXJXZWJLaXRUaHJlYWQgbV9ob2xlUHVuY2hDbGlwUmVjdD0oeD0lZCx5PSVkLHdpZHRoPSVkLGhl
aWdodD0lZCkuIiwgbV9ob2xlUHVuY2hDbGlwUmVjdC54KCksIG1faG9sZVB1bmNoQ2xpcFJlY3Qu
eSgpLCBtX2hvbGVQdW5jaENsaXBSZWN0LndpZHRoKCksIG1faG9sZVB1bmNoQ2xpcFJlY3QuaGVp
Z2h0KCkpOwotI2VuZGlmCiB9CiAKIHZvaWQgVmlkZW9MYXllcldlYktpdFRocmVhZDo6dXBkYXRl
VGV4dHVyZUNvbnRlbnRzSWZOZWVkZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L0FwaS9XZWJPdmVybGF5LmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkv
V2ViT3ZlcmxheS5jcHAKaW5kZXggYWQ0ZjcwODZmZmE0MDQ4NzMyYzc5ZTE3NDk3NDdlOWUyNzNh
YTAzMi4uMTllMWEzMTc2N2Y3MDllOGQzNjhkMmVmOGNjM2M5MWRiMzIwN2I5MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJPdmVybGF5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYk92ZXJsYXkuY3BwCkBAIC02MzMsNyArNjMzLDcg
QEAgdm9pZCBXZWJPdmVybGF5UHJpdmF0ZUNvbXBvc2l0aW5nVGhyZWFkOjpyZW1vdmVBbmltYXRp
b24oY29uc3QgU3RyaW5nJiBuYW1lKQogUGxhdGZvcm06OkludFJlY3QgV2ViT3ZlcmxheVByaXZh
dGVDb21wb3NpdGluZ1RocmVhZDo6cGl4ZWxWaWV3cG9ydFJlY3QoKSBjb25zdAogewogICAgIGlm
IChMYXllclJlbmRlcmVyKiByZW5kZXJlciA9IG1fbGF5ZXJDb21wb3NpdGluZ1RocmVhZC0+bGF5
ZXJSZW5kZXJlcigpKQotICAgICAgICByZXR1cm4gcmVuZGVyZXItPnRvUGl4ZWxWaWV3cG9ydENv
b3JkaW5hdGVzKG1fbGF5ZXJDb21wb3NpdGluZ1RocmVhZC0+Z2V0RHJhd1JlY3QoKSk7CisgICAg
ICAgIHJldHVybiByZW5kZXJlci0+dG9QaXhlbFZpZXdwb3J0Q29vcmRpbmF0ZXMobV9sYXllckNv
bXBvc2l0aW5nVGhyZWFkLT5ib3VuZGluZ0JveCgpKTsKIAogICAgIHJldHVybiBQbGF0Zm9ybTo6
SW50UmVjdCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9X
ZWJQYWdlQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBh
Z2VDb21wb3NpdG9yLmNwcAppbmRleCA5YTBmYzhjZWNjY2YyZGQ1OGE4ZjdmMzA1MmQ4MTlmMzUy
OWE0NjY1Li41ZjMyYjU2YmZkZmMyYmI2MTdiZGU2YWI2YTQzZTA4OTJhOTQ5YmM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VDb21wb3NpdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VDb21wb3NpdG9yLmNwcApA
QCAtODIsNyArODIsNyBAQCB2b2lkIFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6YXR0YWNoT3Zl
cmxheXMoTGF5ZXJDb21wb3NpdGluZ1RocmVhZCogb3ZlcmxheVJvbwogICAgIGlmICghb3Zlcmxh
eVJvb3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8TGF5ZXJD
b21wb3NpdGluZ1RocmVhZD4gPiYgb3ZlcmxheXMgPSBvdmVybGF5Um9vdC0+Z2V0U3VibGF5ZXJz
KCk7CisgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxMYXllckNvbXBvc2l0aW5nVGhyZWFkPiA+JiBv
dmVybGF5cyA9IG92ZXJsYXlSb290LT5zdWJsYXllcnMoKTsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG92ZXJsYXlzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIExheWVyQ29tcG9zaXRpbmdU
aHJlYWQqIG92ZXJsYXkgPSBvdmVybGF5c1tpXS5nZXQoKTsKICAgICAgICAgaWYgKExheWVyQ29t
cG9zaXRpbmdUaHJlYWRDbGllbnQqIGNsaWVudCA9IG92ZXJsYXktPmNsaWVudCgpKSB7CkBAIC0y
NzUsMTQgKzI3NSwxNCBAQCB2b2lkIFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6cmVtb3ZlT3Zl
cmxheShMYXllckNvbXBvc2l0aW5nVGhyZWFkKiBsYXllcikKIAogICAgIGxheWVyLT5yZW1vdmVG
cm9tU3VwZXJsYXllcigpOwogCi0gICAgaWYgKG1fY29tcG9zaXRpbmdUaHJlYWRPdmVybGF5TGF5
ZXIgJiYgbV9jb21wb3NpdGluZ1RocmVhZE92ZXJsYXlMYXllci0+Z2V0U3VibGF5ZXJzKCkuaXNF
bXB0eSgpKQorICAgIGlmIChtX2NvbXBvc2l0aW5nVGhyZWFkT3ZlcmxheUxheWVyICYmIG1fY29t
cG9zaXRpbmdUaHJlYWRPdmVybGF5TGF5ZXItPnN1YmxheWVycygpLmlzRW1wdHkoKSkKICAgICAg
ICAgbV9jb21wb3NpdGluZ1RocmVhZE92ZXJsYXlMYXllci5jbGVhcigpOwogfQogCiB2b2lkIFdl
YlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6ZmluZEZpeGVkRWxlbWVudFJlY3QoTGF5ZXJDb21wb3Np
dGluZ1RocmVhZCogbGF5ZXIsIFdlYkNvcmU6OkludFJlY3QmIGZpeGVkRWxlbWVudFJlY3QpCiB7
CiAgICAgaWYgKChsYXllci0+aGFzRml4ZWRDb250YWluZXIoKSB8fCBsYXllci0+aXNGaXhlZFBv
c2l0aW9uKCkgfHwgbGF5ZXItPmhhc0ZpeGVkQW5jZXN0b3JJbkRPTVRyZWUoKSkgJiYgbGF5ZXIt
PmxheWVyUmVuZGVyZXIoKSkgewotICAgICAgICBJbnRSZWN0IGZpeGVkUmVjdCA9IGxheWVyLT5s
YXllclJlbmRlcmVyKCktPnRvUGl4ZWxWaWV3cG9ydENvb3JkaW5hdGVzKGxheWVyLT5nZXREcmF3
UmVjdCgpKTsKKyAgICAgICAgSW50UmVjdCBmaXhlZFJlY3QgPSBsYXllci0+bGF5ZXJSZW5kZXJl
cigpLT50b1BpeGVsVmlld3BvcnRDb29yZGluYXRlcyhsYXllci0+Ym91bmRpbmdCb3goKSk7CiAg
ICAgICAgIC8vIEZJWE1FOiBJdCdzIHBvc3NpYmxlIHRoYXQgdGhlIHJlY3RzIGRvbid0IGludGVy
c2VjdCBub3csIGJ1dCB3aWxsIGJlIGNvbm5lY3RlZCBieSBhIGZpeGVkIHJlY3QgZm91bmQgbGF0
ZXIuCiAgICAgICAgIC8vIFdlIG5lZWQgdG8gaGFuZGxlIGl0IGFzIHdlbGwuCiAgICAgICAgIGlm
IChmaXhlZEVsZW1lbnRSZWN0LmlzRW1wdHkoKSB8fCBmaXhlZEVsZW1lbnRSZWN0LmludGVyc2Vj
dHMoZml4ZWRSZWN0KSkgLy8gVW5pdGUgcmVjdHMgaWYgdGhleSBpbnRlcnNlY3QgZWFjaCBvdGhl
ci4KQEAgLTI5MSw3ICsyOTEsNyBAQCB2b2lkIFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6Zmlu
ZEZpeGVkRWxlbWVudFJlY3QoTGF5ZXJDb21wb3NpdGluZ1RocmVhZCogbGF5ZQogICAgICAgICAg
ICAgZml4ZWRFbGVtZW50UmVjdCA9IGZpeGVkUmVjdDsKICAgICB9CiAKLSAgICBjb25zdCBWZWN0
b3I8UmVmUHRyPExheWVyQ29tcG9zaXRpbmdUaHJlYWQ+ID4mIHN1YmxheWVycyA9IGxheWVyLT5n
ZXRTdWJsYXllcnMoKTsKKyAgICBjb25zdCBWZWN0b3I8UmVmUHRyPExheWVyQ29tcG9zaXRpbmdU
aHJlYWQ+ID4mIHN1YmxheWVycyA9IGxheWVyLT5zdWJsYXllcnMoKTsKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHN1YmxheWVycy5zaXplKCk7IGkrKykKICAgICAgICAgZmluZEZpeGVkRWxl
bWVudFJlY3Qoc3VibGF5ZXJzW2ldLmdldCgpLCBmaXhlZEVsZW1lbnRSZWN0KTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>203035</attachid>
            <date>2013-05-28 03:32:26 -0700</date>
            <delta_ts>2013-05-28 11:40:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-116604-20130528123059.patch</filename>
            <type>text/plain</type>
            <size>30658</size>
            <attacher name="Arvid Nilsson">anilsson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ3MzkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjI0ZDg2YTNlMzhmYTcw
MDFiNTBkZmMyNGRlYjM4OGY2YTBjMzZkNS4uZTg5MDcxNTU3ODFlNjdkOTFlYjBjZTlkYTQwNzAx
NzYxNGVkNTAwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDEzLTA1LTIyICBBcnZp
ZCBOaWxzc29uICA8YW5pbHNzb25AcmltLmNvbT4KKworICAgICAgICBbQmxhY2tCZXJyeV0gRml4
IHN0eWxlIGlzc3VlcyBpbiBCbGFja0JlcnJ5IGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGJhY2tl
bmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjYw
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBSIDI3
MzU1MCwgOTk2MzgKKworICAgICAgICBSZW1vdmUgdGhlICJnZXQiIHByZWZpeCBmcm9tIGdldHRl
cnMgaW4gdGhlIFdlYktpdC0gYW5kIGNvbXBvc2l0aW5nLQorICAgICAgICB0aHJlYWQgbGF5ZXIg
Y2xhc3NlcywgYXMgd2VsbCBhcyBMYXllclJlbmRlcmVyU3VyZmFjZS4gQ2xhcmlmeSB3aGljaAor
ICAgICAgICBnZW9tZXRyeS1yZWxhdGVkIGdldHRlcnMgcmV0dXJuIG5vcm1hbGl6ZWQgZGV2aWNl
IGNvb3JkaW5hdGVzIGJ5IGFkZGluZworICAgICAgICBhIGNvbW1lbnQuCisKKyAgICAgICAgQWxz
byByZW1vdmUgZGVhZCBjb2RlIHJlbGF0ZWQgdG8gTGF5ZXJEYXRhOjptX2hvbGVQdW5jaENsaXBS
ZWN0LCB3aGljaAorICAgICAgICB3YXMgcGFydCBvZiBhbiBldmVudHVhbGx5IGRpc2FibGVkIGZp
eCBmb3IgdmlkZW8gY2xpcHBpbmcgaW4gaWZyYW1lcywKKyAgICAgICAgUFIgOTk2MzguIFNpbmNl
IHdlIG5vdyB1c2UgQUMgbGF5ZXJzIGZvciBpZnJhbWVzLCB0aGUgYnVnIGlzIG5vIGxvbmdlcgor
ICAgICAgICByZXByb2R1Y2libGUsIGFuZCB0aGUgZGVhZCBjb2RlIHdpbGwgbmV2ZXIgbmVlZCB0
byBiZSBlbmFibGVkIGFnYWluLgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvciwgbm8g
bmV3IHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9FR0xJ
bWFnZUxheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RUdMSW1hZ2VMYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50OjpkcmF3VGV4dHVyZXMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVh
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNvbXBvc2l0aW5nVGhyZWFkOjpzZXREcmF3
VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OnRy
YW5zZm9ybWVkSG9sZVB1bmNoUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNvbXBvc2l0
aW5nVGhyZWFkOjpkcmF3VGV4dHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDb21wb3Np
dGluZ1RocmVhZDo6ZHJhd1N1cmZhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Js
YWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJDb21wb3NpdGluZ1RocmVhZDo6c3VibGF5ZXJzKTogUmVtb3ZlZCAiZ2V0IiBwcmVmaXgKKyAg
ICAgICAgKExheWVyQ29tcG9zaXRpbmdUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJD
b21wb3NpdGluZ1RocmVhZDo6Ym91bmRpbmdCb3gpOiBSZW5hbWVkIGZyb20gImdldERyYXdSZWN0
IgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6dHJhbnNmb3JtZWRC
b3VuZHMpOiBSZW1vdmVkICJnZXQiIHByZWZpeAorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDb21w
b3NpdGluZ1RocmVhZDo6dHJhbnNmb3JtZWRIb2xlUHVuY2hSZWN0KTogUmVtb3ZlZCAiZ2V0IiBw
cmVmaXgKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyRGF0YS5o
OgorICAgICAgICAoTGF5ZXJEYXRhKTogUmVtb3ZlZCB1bnVzZWQgZGF0YSBtZW1iZXIgIm1faG9s
ZVB1bmNoQ2xpcFJlY3QiCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9M
YXllckZpbHRlclJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyRmlsdGVyUmVu
ZGVyZXI6OmFwcGx5QWN0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2ti
ZXJyeS9MYXllclJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXI6
OmNvbXBvc2l0ZUxheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyOjpkcmF3
RGVidWdCb3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlcjo6ZHJhd0hvbGVQ
dW5jaFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlcjo6cHJlcGFyZUZyYW1l
UmVjdXJzaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXI6OnVwZGF0ZUxheWVy
c1JlY3Vyc2l2ZSk6CisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0M0RQcmVzZXJ2aW5nTGF5ZXJz
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXI6OmNvbXBvc2l0ZUxheWVyc1JlY3Vy
c2l2ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclJlbmRl
cmVyU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyU3VyZmFjZTo6
Ym91bmRpbmdCb3gpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5
ZXJSZW5kZXJlclN1cmZhY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJTdXJm
YWNlOjpib3VuZGluZ0JveCk6IFJlbmFtZWQgZnJvbSAiZHJhd1JlY3QiIGJlY2F1c2UgdGhhdCBz
b3VuZHMgbGlrZSBhIHZlcmIsIGFuZCB0aGlzIGlzIGEgZ2V0dGVyCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllcldlYktpdFRocmVhZC5oOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJXZWJLaXRUaHJlYWQ6OnN1YmxheWVycyk6IFJlbW92ZWQgImdldCIgcHJlZml4
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9WaWRlb0xheWVyV2ViS2l0
VGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJXZWJLaXRUaHJlYWQ6OnNl
dEhvbGVQdW5jaFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXllcldlYktpdFRocmVh
ZDo6Ym91bmRzQ2hhbmdlZCk6CisKIDIwMTMtMDUtMjQgIEFydmlkIE5pbHNzb24gIDxhbmlsc3Nv
bkByaW0uY29tPgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBiYWNrZmFjZS12aXNpYmlsaXR5OiBo
aWRkZW4gZG9lc24ndCB3b3JrIHByb3Blcmx5IHdpdGggbWFza3MgYW5kIGZpbHRlcnMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQ2hhbmdlTG9nCmluZGV4IDUyY2Y5YzBlZjQ5YjI4YzI5YTAwODRmNThjZTEw
ZTYzMWM4NGNhOTUuLmViYTg3ZTEyY2E3MjQwOThmNzcwODE2MmEyMTNiNmU0MjIzZjMzNzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEzLTA1LTIy
ICBBcnZpZCBOaWxzc29uICA8YW5pbHNzb25AcmltLmNvbT4KKworICAgICAgICBbQmxhY2tCZXJy
eV0gRml4IHN0eWxlIGlzc3VlcyBpbiBCbGFja0JlcnJ5IGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5n
IGJhY2tlbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExNjYwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkYXB0IHRvIHRoZSByZW1vdmFsIG9mICJnZXQiIHByZWZpeCBmcm9tIGdldHRlcnMgaW4gdGhl
IFdlYktpdC0gYW5kCisgICAgICAgIGNvbXBvc2l0aW5nLXRocmVhZCBsYXllciBjbGFzc2VzLgor
CisgICAgICAgICogQXBpL1dlYk92ZXJsYXkuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2Vi
S2l0OjpXZWJPdmVybGF5UHJpdmF0ZUNvbXBvc2l0aW5nVGhyZWFkOjpwaXhlbFZpZXdwb3J0UmVj
dCk6CisgICAgICAgICogQXBpL1dlYlBhZ2VDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKEJsYWNr
QmVycnk6OldlYktpdDo6V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlOjphdHRhY2hPdmVybGF5cyk6
CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6
cmVtb3ZlT3ZlcmxheSk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VDb21w
b3NpdG9yUHJpdmF0ZTo6ZmluZEZpeGVkRWxlbWVudFJlY3QpOgorCiAyMDEzLTA1LTIxICBDYXJs
b3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbQmxhY2tC
ZXJyeV0gTWFrZSBQYWdlUG9wdXAgaW1wbGVtZW50YXRpb24gaW5kZXBlbmRlbnQgZnJvbSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2Jl
cnJ5L0VHTEltYWdlTGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0VHTEltYWdlTGF5ZXJDb21wb3NpdGlu
Z1RocmVhZENsaWVudC5jcHAKaW5kZXggMjgyN2U0M2UxYzBjNjlkMDU0MWFjOWY3MzRjMDBiMTVi
MDNlMGQwNC4uYTcwNzkxY2Q1NmIyZDUwNGViMTAxMmE3NDdjMTcxMWU3MGYyMjcwNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9FR0xJbWFn
ZUxheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvRUdMSW1hZ2VMYXllckNvbXBvc2l0aW5nVGhyZWFk
Q2xpZW50LmNwcApAQCAtNTYsNyArNTYsNyBAQCB2b2lkIEVHTEltYWdlTGF5ZXJDb21wb3NpdGlu
Z1RocmVhZENsaWVudDo6ZHJhd1RleHR1cmVzKExheWVyQ29tcG9zaXRpbmdUaHJlYWQqCiAgICAg
Z2xCbGVuZEZ1bmMoR0xfT05FLCBHTF9PTkVfTUlOVVNfU1JDX0FMUEhBKTsKICAgICBnbFVzZVBy
b2dyYW0ocHJvZ3JhbS5tX3Byb2dyYW0pOwogICAgIGdsVW5pZm9ybTFmKHByb2dyYW0ub3BhY2l0
eUxvY2F0aW9uKCksIGxheWVyLT5kcmF3T3BhY2l0eSgpKTsKLSAgICBnbFZlcnRleEF0dHJpYlBv
aW50ZXIocHJvZ3JhbS5wb3NpdGlvbkxvY2F0aW9uKCksIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwg
MCwgJmxheWVyLT5nZXRUcmFuc2Zvcm1lZEJvdW5kcygpKTsKKyAgICBnbFZlcnRleEF0dHJpYlBv
aW50ZXIocHJvZ3JhbS5wb3NpdGlvbkxvY2F0aW9uKCksIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwg
MCwgJmxheWVyLT50cmFuc2Zvcm1lZEJvdW5kcygpKTsKICAgICBnbFZlcnRleEF0dHJpYlBvaW50
ZXIocHJvZ3JhbS50ZXhDb29yZExvY2F0aW9uKCksIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwg
dXBzaWRlRG93bik7CiAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtX3RleHR1cmVB
Y2Nlc3Nvci0+dGV4dHVyZUlEKCkpOwogICAgIGdsRHJhd0FycmF5cyhHTF9UUklBTkdMRV9GQU4s
IDAsIDQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxh
Y2tiZXJyeS9MYXllckNvbXBvc2l0aW5nVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5jcHAKaW5kZXgg
YjhmZjZmMTVjMzY0ZDUzMGNkZTNkMWQ2ZWYzNTYwOTRlY2U5YjM2Mi4uNTVhZWVmYWI3NjdjMzFi
MjkzMjQ3YTM1YzZmYzczZmVlZDI2NWU5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBvc2l0aW5nVGhyZWFkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQ29tcG9z
aXRpbmdUaHJlYWQuY3BwCkBAIC01Myw4ICs1Myw2IEBACiAjaW5jbHVkZSA8QmxhY2tCZXJyeVBs
YXRmb3JtTG9nLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIAotI2RlZmluZSBERUJV
R19WSURFT19DTElQUElORyAwCi0KIHVzaW5nIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGlj
czo6R0xFUzJQcm9ncmFtOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMzksNjIgKzEzNywx
NCBAQCB2b2lkIExheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OnNldERyYXdUcmFuc2Zvcm0oZG91Ymxl
IHNjYWxlLCBjb25zdCBUcmFuc2Zvcm1hdGlvbgogICAgICAgICBib3VuZHNSZWN0LnNjYWxlKDEg
LyBzY2FsZSk7CiAKICAgICBtX3RyYW5zZm9ybWVkQm91bmRzID0gbWF0cml4Lm1hcFF1YWQoYm91
bmRzUmVjdCk7Ci0gICAgbV9kcmF3UmVjdCA9IG1fdHJhbnNmb3JtZWRCb3VuZHMuYm91bmRpbmdC
b3goKTsKLX0KLQotc3RhdGljIEZsb2F0UXVhZCBnZXRUcmFuc2Zvcm1lZFJlY3QoY29uc3QgSW50
U2l6ZSYgYm91bmRzLCBjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgZHJhd1RyYW5zZm9ybSkKLXsKLSAgICBGbG9hdFBvaW50IG9yaWdpbihib3VuZHMud2lk
dGgoKSAvIDIuMGYsIGJvdW5kcy5oZWlnaHQoKSAvIDIuMGYpOwotICAgIEZsb2F0UmVjdCBsYXll
clJlY3QocmVjdCk7Ci0gICAgbGF5ZXJSZWN0Lm1vdmVCeSgtb3JpZ2luKTsKLSAgICByZXR1cm4g
ZHJhd1RyYW5zZm9ybS5tYXBRdWFkKGxheWVyUmVjdCk7CisgICAgbV9ib3VuZGluZ0JveCA9IG1f
dHJhbnNmb3JtZWRCb3VuZHMuYm91bmRpbmdCb3goKTsKIH0KIAotCi1GbG9hdFF1YWQgTGF5ZXJD
b21wb3NpdGluZ1RocmVhZDo6Z2V0VHJhbnNmb3JtZWRIb2xlUHVuY2hSZWN0KCkgY29uc3QKK0Zs
b2F0UXVhZCBMYXllckNvbXBvc2l0aW5nVGhyZWFkOjp0cmFuc2Zvcm1lZEhvbGVQdW5jaFJlY3Qo
KSBjb25zdAogewotICAgIC8vIEZJWE1FOiB0aGUgZm9sbG93aW5nIGxpbmUgZGlzYWJsZXMgY2xp
cHBpbmcgYSB2aWRlbyBpbiBhbiBpZnJhbWUgaS5lLiB0aGUgZml4IGFzc29jaWF0ZWQgd2l0aCBQ
UiA5OTYzOC4KLSAgICAvLyBTb21lIHJldmlzZWQgdGVzdCBjYXNlIChlLmcuIHZpZGVvLWlmcmFt
ZS5odG1sKSBzaG93IHRoYXQgdGhlIG9yaWdpbmFsIGZpeCB3b3JrcyBjb3JyZWN0bHkgd2hlbiBz
Y3JvbGxpbmcKLSAgICAvLyB0aGUgY29udGVudHMgb2YgdGhlIGZyYW1lLCBidXQgZmFpbHMgdG8g
Y2xpcCBjb3JyZWN0bHkgaWYgdGhlIHBhZ2UgKG1haW4gZnJhbWUpIGlzIHNjcm9sbGVkLgotICAg
IHN0YXRpYyBib29sIGVuYWJsZVZpZGVvQ2xpcHBpbmcgPSBmYWxzZTsKLQotICAgIGlmICghbWVk
aWFQbGF5ZXIoKSB8fCAhZW5hYmxlVmlkZW9DbGlwcGluZykgewotICAgICAgICAvLyBtX2hvbGVQ
dW5jaENsaXBSZWN0IGlzIHZhbGlkIG9ubHkgd2hlbiB0aGVyZSdzIGEgbWVkaWEgcGxheWVyLgot
ICAgICAgICByZXR1cm4gZ2V0VHJhbnNmb3JtZWRSZWN0KG1fYm91bmRzLCBtX2hvbGVQdW5jaFJl
Y3QsIG1fZHJhd1RyYW5zZm9ybSk7Ci0gICAgfQotCi0gICAgLy8gVGhlIGhvbGUgcHVuY2ggcmVj
dGFuZ2xlIG1heSBuZWVkIHRvIGJlIGNsaXBwZWQsCi0gICAgLy8gZS5nLiBpZiB0aGUgPHZpZGVv
PiBpcyBvbiBhIGxheWVyIHRoYXQncyBpbmNsdWRlZCBhbmQgY2xpcHBlZCBieSBhbiA8aWZyYW1l
Pi4KLQotICAgIC8vIEluIG9yZGVyIHRvIGNsaXAgd2UgbmVlZCB0byBkZXRlcm1pbmUgdGhlIGN1
cnJlbnQgcG9zaXRpb24gb2YgdGhpcyBsYXllciwgd2hpY2gKLSAgICAvLyBpcyBlbmNvZGVkIGlu
IHRoZSBtX2RyYXdUcmFuc2Zvcm0gdmFsdWUsIHdoaWNoIHdhcyB1c2VkIHRvIGluaXRpYWxpemUg
bV9kcmF3UmVjdC4KLSAgICBJbnRSZWN0IGRyYXdSZWN0ID0gbV9sYXllclJlbmRlcmVyLT50b0Rv
Y3VtZW50Vmlld3BvcnRDb29yZGluYXRlcyhtX2RyYXdSZWN0KTsKLQotICAgIC8vIEFzc2VydCB0
aGF0IGluIHRoaXMgY2FzZSwgd2hlcmUgdGhlIGhvbGUgcHVuY2ggcmVjdGFuZ2xlIGVxdWFscyB0
aGUgc2l6ZSBvZiB0aGUgbGF5ZXIsCi0gICAgLy8gdGhlIGRyYXdSZWN0IGhhcyB0aGUgc2FtZSBz
aXplIGFzIHRoZSBob2xlIHB1bmNoLgotICAgIC8vIEFTU0VSVChkcmF3UmVjdC5zaXplKCkgPT0g
bV9ob2xlUHVuY2hSZWN0LnNpemUoKSk7Ci0gICAgLy8gRG9uJ3QgYXNzZXJ0IGl0IHByb2dyYW10
aWNhbGx5IHRob3VnaCBiZWNhdXNlIHRoZXJlIG1heSBiZSBvZmYtYnktb25lIGVycm9yIGR1ZSB0
byByb3VuZGluZyB3aGVuIHRoZXJlJ3Mgem9vbWluZy4KLQotICAgIC8vIFRoZSBkaWZmZXJlbmNl
IGJldHdlZW4gZHJhd1JlY3QgYW5kIG1faG9sZVB1bmNoUmVjdCBpcyB0aGF0IGRyYXdSZWN0IGhh
cyBhbiBhY2N1cmF0ZSBwb3NpdGlvbgotICAgIC8vIGluIFdlYktpdCBkb2N1bWVudCBjb29yZGlu
YXRlcywgd2hlcmVhcyB0aGUgbV9ob2xlUHVuY2hSZWN0IGxvY2F0aW9uIGlzICgwLDApIGkuZS4g
aXQncyByZWxhdGl2ZSB0byB0aGlzIGxheWVyLgotCi0gICAgLy8gQ2xpcCB0aGUgZHJhd1JlY3Qu
Ci0gICAgLy8gQm90aCBkcmF3UmVjdCBhbmQgbV9ob2xlUHVuY2hDbGlwUmVjdCBhbHJlYWR5IGhh
dmUgY29ycmVjdCBsb2NhdGlvbnMsIGluIFdlYktpdCBkb2N1bWVudCBjb29yZGluYXRlcy4KLSAg
ICBJbnRQb2ludCBsb2NhdGlvbiA9IGRyYXdSZWN0LmxvY2F0aW9uKCk7Ci0gICAgZHJhd1JlY3Qu
aW50ZXJzZWN0KG1faG9sZVB1bmNoQ2xpcFJlY3QpOwotCi0gICAgLy8gU2hpZnQgdGhlIGNsaXBw
ZWQgZHJhd1JlY3QgdG8gaGF2ZSB0aGUgc2FtZSBraW5kIG9mIGxvY2F0ZWQtYXQtemVybyBwb3Np
dGlvbiBhcyB0aGUgb3JpZ2luYWwgaG9sZVB1bmNoUmVjdC4KLSAgICBkcmF3UmVjdC5tb3ZlKC1s
b2NhdGlvbi54KCksIC1sb2NhdGlvbi55KCkpOwotCi0jaWYgREVCVUdfVklERU9fQ0xJUFBJTkcK
LSAgICBJbnRSZWN0IGRyYXdSZWN0SW5XZWJLaXREb2N1bWVudENvb3JkaW5hdGlvbiA9IG1fbGF5
ZXJSZW5kZXJlci0+dG9XZWJLaXREb2N1bWVudENvb3JkaW5hdGVzKG1fZHJhd1JlY3QpOwotICAg
IEJCTE9HKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbEluZm8sICJMYXllckNvbXBvc2l0
aW5nVGhyZWFkOjpnZXRUcmFuc2Zvcm1lZEhvbGVQdW5jaFJlY3QoKSAtIGRyYXdSZWN0PSh4PSVk
LHk9JWQsd2lkdGg9JWQsaGVpZ2h0PSVkKSBjbGlwUmVjdD0oeD0lZCx5PSVkLHdpZHRoPSVkLGhl
aWdodD0lZCkgY2xpcHBlZFJlY3Q9KHg9JWQseT0lZCx3aWR0aD0lZCxoZWlnaHQ9JWQpLiIsCi0g
ICAgICAgIGRyYXdSZWN0SW5XZWJLaXREb2N1bWVudENvb3JkaW5hdGlvbi54KCksIGRyYXdSZWN0
SW5XZWJLaXREb2N1bWVudENvb3JkaW5hdGlvbi55KCksIGRyYXdSZWN0SW5XZWJLaXREb2N1bWVu
dENvb3JkaW5hdGlvbi53aWR0aCgpLCBkcmF3UmVjdEluV2ViS2l0RG9jdW1lbnRDb29yZGluYXRp
b24uaGVpZ2h0KCksCi0gICAgICAgIG1faG9sZVB1bmNoQ2xpcFJlY3QueCgpLCBtX2hvbGVQdW5j
aENsaXBSZWN0LnkoKSwgbV9ob2xlUHVuY2hDbGlwUmVjdC53aWR0aCgpLCBtX2hvbGVQdW5jaENs
aXBSZWN0LmhlaWdodCgpLAotICAgICAgICBkcmF3UmVjdC54KCksIGRyYXdSZWN0LnkoKSwgZHJh
d1JlY3Qud2lkdGgoKSwgZHJhd1JlY3QuaGVpZ2h0KCkpOwotI2VuZGlmCi0KLSAgICByZXR1cm4g
Z2V0VHJhbnNmb3JtZWRSZWN0KG1fYm91bmRzLCBkcmF3UmVjdCwgbV9kcmF3VHJhbnNmb3JtKTsK
KyAgICBGbG9hdFJlY3QgaG9sZVB1bmNoUmVjdChtX2hvbGVQdW5jaFJlY3QpOworICAgIGhvbGVQ
dW5jaFJlY3QubW92ZUJ5KC1vcmlnaW4oKSk7CisgICAgcmV0dXJuIG1fZHJhd1RyYW5zZm9ybS5t
YXBRdWFkKGhvbGVQdW5jaFJlY3QpOwogfQogCiB2b2lkIExheWVyQ29tcG9zaXRpbmdUaHJlYWQ6
OmRyYXdUZXh0dXJlcyhkb3VibGUgc2NhbGUsIGNvbnN0IEdMRVMyUHJvZ3JhbSYgcHJvZ3JhbSwg
Y29uc3QgRmxvYXRSZWN0JiB2aXNpYmxlUmVjdCkKQEAgLTIzOSw3ICsxODksNyBAQCB2b2lkIExh
eWVyQ29tcG9zaXRpbmdUaHJlYWQ6OmRyYXdUZXh0dXJlcyhkb3VibGUgc2NhbGUsIGNvbnN0IEdM
RVMyUHJvZ3JhbSYgcHJvZwogICAgICAgICAgICAgICAgICAgICAtbV90cmFuc2Zvcm1lZEJvdW5k
cy5wMSgpLnkoKSAqIHZyaDIgKyB2cmgyICsgdmlzaWJsZVJlY3QueSgpKTsKICAgICAgICAgICAg
ICAgICBwYWludFJlY3QgPSBJbnRSZWN0KHJvdW5kZWRJbnRQb2ludChwKSwgbV9ib3VuZHMpOwog
ICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgcGFpbnRSZWN0ID0gbV9sYXllclJl
bmRlcmVyLT50b1dpbmRvd0Nvb3JkaW5hdGVzKG1fZHJhd1JlY3QpOworICAgICAgICAgICAgICAg
IHBhaW50UmVjdCA9IG1fbGF5ZXJSZW5kZXJlci0+dG9XaW5kb3dDb29yZGluYXRlcyhtX2JvdW5k
aW5nQm94KTsKIAogICAgICAgICAgICAgbV9tZWRpYVBsYXllci0+cGFpbnQoMCwgcGFpbnRSZWN0
KTsKICAgICAgICAgICAgIE1lZGlhUGxheWVyUHJpdmF0ZSogbXBwID0gc3RhdGljX2Nhc3Q8TWVk
aWFQbGF5ZXJQcml2YXRlKj4obV9tZWRpYVBsYXllci0+cGxhdGZvcm1NZWRpYSgpLm1lZGlhLnFu
eE1lZGlhUGxheWVyKTsKQEAgLTI4NSw3ICsyMzUsNyBAQCB2b2lkIExheWVyQ29tcG9zaXRpbmdU
aHJlYWQ6OmRyYXdTdXJmYWNlKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNm
bwogICAgICAgICBnbEJsZW5kRnVuYyhHTF9PTkUsIEdMX09ORV9NSU5VU19TUkNfQUxQSEEpOwog
ICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHN1cmZhY2VUZXhJRCk7CiAKLSAg
ICAgICAgRmxvYXRRdWFkIHN1cmZhY2VRdWFkID0gZ2V0VHJhbnNmb3JtZWRSZWN0KG1fYm91bmRz
LCBJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIG1fYm91bmRzKSwgZHJhd1RyYW5zZm9ybSk7Cisg
ICAgICAgIEZsb2F0UXVhZCBzdXJmYWNlUXVhZCA9IGRyYXdUcmFuc2Zvcm0ubWFwUXVhZChGbG9h
dFJlY3QoLW9yaWdpbigpLCBib3VuZHMoKSkpOwogICAgICAgICBnbFVuaWZvcm0xZihwcm9ncmFt
Lm9wYWNpdHlMb2NhdGlvbigpLCBsYXllclJlbmRlcmVyU3VyZmFjZSgpLT5kcmF3T3BhY2l0eSgp
KTsKICAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHByb2dyYW0ucG9zaXRpb25Mb2NhdGlv
bigpLCAyLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsICZzdXJmYWNlUXVhZCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21w
b3NpdGluZ1RocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2ti
ZXJyeS9MYXllckNvbXBvc2l0aW5nVGhyZWFkLmgKaW5kZXggYzhjMGVkYzcyMzI1YjhjOGEyZTlm
YzU0NjA3MWMzNzEwMTM3OThiMi4uMDNlNGExODViOWQ0YWUxMTYxMjMyNjRjM2U0MmEzMDlhNzI1
MWViMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2ti
ZXJyeS9MYXllckNvbXBvc2l0aW5nVGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBvc2l0aW5nVGhyZWFkLmgKQEAgLTE1Myw3
ICsxNTMsNyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBMYXllckNvbXBvc2l0aW5nVGhyZWFkKiBy
b290TGF5ZXIoKSBjb25zdDsKICAgICB2b2lkIHNldFN1YmxheWVycyhjb25zdCBWZWN0b3I8UmVm
UHRyPExheWVyQ29tcG9zaXRpbmdUaHJlYWQ+ID4mKTsKLSAgICBjb25zdCBWZWN0b3I8UmVmUHRy
PExheWVyQ29tcG9zaXRpbmdUaHJlYWQ+ID4mIGdldFN1YmxheWVycygpIGNvbnN0IHsgcmV0dXJu
IG1fc3VibGF5ZXJzOyB9CisgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxMYXllckNvbXBvc2l0aW5n
VGhyZWFkPiA+JiBzdWJsYXllcnMoKSBjb25zdCB7IHJldHVybiBtX3N1YmxheWVyczsgfQogICAg
IHZvaWQgc2V0U3VwZXJsYXllcihMYXllckNvbXBvc2l0aW5nVGhyZWFkKiBzdXBlcmxheWVyKSB7
IG1fc3VwZXJsYXllciA9IHN1cGVybGF5ZXI7IH0KICAgICBMYXllckNvbXBvc2l0aW5nVGhyZWFk
KiBzdXBlcmxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9zdXBlcmxheWVyOyB9CiAKQEAgLTE4MCw5
ICsxODAsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UmVwbGljYUxheWVyKExheWVyQ29tcG9z
aXRpbmdUaHJlYWQqIGxheWVyKSB7IG1fcmVwbGljYUxheWVyID0gbGF5ZXI7IH0KICAgICBMYXll
ckNvbXBvc2l0aW5nVGhyZWFkKiByZXBsaWNhTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3JlcGxp
Y2FMYXllci5nZXQoKTsgfQogCi0gICAgRmxvYXRSZWN0IGdldERyYXdSZWN0KCkgY29uc3QgeyBy
ZXR1cm4gbV9kcmF3UmVjdDsgfQotICAgIGNvbnN0IEZsb2F0UXVhZCYgZ2V0VHJhbnNmb3JtZWRC
b3VuZHMoKSBjb25zdCB7IHJldHVybiBtX3RyYW5zZm9ybWVkQm91bmRzOyB9Ci0gICAgRmxvYXRR
dWFkIGdldFRyYW5zZm9ybWVkSG9sZVB1bmNoUmVjdCgpIGNvbnN0OworICAgIC8vIFRoZXNlIHVz
ZSBub3JtYWxpemVkIGRldmljZSBjb29yZGluYXRlcworICAgIEZsb2F0UmVjdCBib3VuZGluZ0Jv
eCgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRpbmdCb3g7IH0KKyAgICBjb25zdCBGbG9hdFF1YWQm
IHRyYW5zZm9ybWVkQm91bmRzKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2Zvcm1lZEJvdW5kczsg
fQorICAgIEZsb2F0UXVhZCB0cmFuc2Zvcm1lZEhvbGVQdW5jaFJlY3QoKSBjb25zdDsKIAogICAg
IHZvaWQgZGVsZXRlVGV4dHVyZXMoKTsKIApAQCAtMjUwLDcgKzI1MSw3IEBAIHByaXZhdGU6CiAg
ICAgLy8gVmVydGV4IGRhdGEgZm9yIHRoZSBib3VuZHMgb2YgdGhpcyBsYXllcgogICAgIEZsb2F0
UXVhZCBtX3RyYW5zZm9ybWVkQm91bmRzOwogICAgIC8vIFRoZSBib3VuZGluZyByZWN0YW5nbGUg
b2YgdGhlIHRyYW5zZm9ybWVkIGxheWVyCi0gICAgRmxvYXRSZWN0IG1fZHJhd1JlY3Q7CisgICAg
RmxvYXRSZWN0IG1fYm91bmRpbmdCb3g7CiAKICAgICBPd25QdHI8TGF5ZXJSZW5kZXJlclN1cmZh
Y2U+IG1fbGF5ZXJSZW5kZXJlclN1cmZhY2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyRGF0YS5oCmluZGV4IDVjMjU5ZTNk
NWI3MjMwYjFhN2EyODZjM2FiODM5OTJlYTY2NzY0NTUuLjAzYTRhMzQxY2JlMzk0NzQ4OGZlNzA5
NmI4M2UzODJhNDFlZDU1ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckRhdGEuaApAQCAtMjI0LDcgKzIyNCw2IEBAIHBy
b3RlY3RlZDoKICAgICBQbHVnaW5WaWV3KiBtX3BsdWdpblZpZXc7CiAjaWYgRU5BQkxFKFZJREVP
KQogICAgIE1lZGlhUGxheWVyKiBtX21lZGlhUGxheWVyOwotICAgIEludFJlY3QgbV9ob2xlUHVu
Y2hDbGlwUmVjdDsKICNlbmRpZgogICAgIEludFJlY3QgbV9ob2xlUHVuY2hSZWN0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVy
RmlsdGVyUmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxh
Y2tiZXJyeS9MYXllckZpbHRlclJlbmRlcmVyLmNwcAppbmRleCBmYTRjYTllNWRlYTUxZmFmZmMx
YTc3NGM1ZTg3MjdlMWU1ZTJhMWY2Li4wMWRlYTZlMmYwMzJlN2QxMGNlODE0ZDk1ZGM5ZTZmYTUz
M2IwM2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFj
a2JlcnJ5L0xheWVyRmlsdGVyUmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJGaWx0ZXJSZW5kZXJlci5jcHAKQEAgLTcwOSw3
ICs3MDksNyBAQCB2b2lkIExheWVyRmlsdGVyUmVuZGVyZXI6OmFwcGx5QWN0aW9ucyh1bnNpZ25l
ZCYgZmJvLCBMYXllckNvbXBvc2l0aW5nVGhyZWFkKiBsYQogCiAgICAgTGF5ZXJSZW5kZXJlclN1
cmZhY2UqIHN1cmZhY2UgPSBsYXllci0+bGF5ZXJSZW5kZXJlclN1cmZhY2UoKTsKIAotICAgIGds
VmVydGV4QXR0cmliUG9pbnRlcihtX3Bvc2l0aW9uTG9jYXRpb24sIDIsIEdMX0ZMT0FULCBHTF9G
QUxTRSwgMCwgJmxheWVyLT5nZXRUcmFuc2Zvcm1lZEJvdW5kcygpKTsKKyAgICBnbFZlcnRleEF0
dHJpYlBvaW50ZXIobV9wb3NpdGlvbkxvY2F0aW9uLCAyLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAs
ICZsYXllci0+dHJhbnNmb3JtZWRCb3VuZHMoKSk7CiAgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJB
cnJheShtX3Bvc2l0aW9uTG9jYXRpb24pOwogICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihtX3Rl
eENvb3JkTG9jYXRpb24sIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgdGV4Y29vcmRzKTsKICAg
ICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KG1fdGV4Q29vcmRMb2NhdGlvbik7CkBAIC03NjQs
NyArNzY0LDcgQEAgdm9pZCBMYXllckZpbHRlclJlbmRlcmVyOjphcHBseUFjdGlvbnModW5zaWdu
ZWQmIGZibywgTGF5ZXJDb21wb3NpdGluZ1RocmVhZCogbGEKIAogICAgICAgICBhY3Rpb25zW2ld
LT5yZXN0b3JlU3RhdGUoKTsKIAotICAgICAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIobV9wb3Np
dGlvbkxvY2F0aW9uLCAyLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsICZsYXllci0+Z2V0VHJhbnNm
b3JtZWRCb3VuZHMoKSApOworICAgICAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIobV9wb3NpdGlv
bkxvY2F0aW9uLCAyLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsICZsYXllci0+dHJhbnNmb3JtZWRC
b3VuZHMoKSk7CiAgICAgICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkobV9wb3NpdGlvbkxv
Y2F0aW9uKTsKICAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKG1fdGV4Q29vcmRMb2NhdGlv
biwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCB0ZXhjb29yZHMpOwogICAgICAgICBnbEVuYWJs
ZVZlcnRleEF0dHJpYkFycmF5KG1fdGV4Q29vcmRMb2NhdGlvbik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVuZGVyZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclJlbmRl
cmVyLmNwcAppbmRleCBkMGU0YTE1N2FlN2VlNjdiMzA3NGQ5MDhkNTljZDZlZWY4ZTFmOWI2Li5h
NmY1YzYwYmI4OTgzOGQwOTkzMWFlOGE1YTZjNzE5NjRkMDA0MzEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVuZGVyZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJS
ZW5kZXJlci5jcHAKQEAgLTMwOSw3ICszMDksNyBAQCB2b2lkIExheWVyUmVuZGVyZXI6OmNvbXBv
c2l0ZUxheWVycyhjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4LCBMYXllckNvbQog
ICAgIG1fc2NhbGUgPSBtYXRyaXgubTExKCkgKiBtX3ZpZXdwb3J0LndpZHRoKCkgLyAyOwogCiAg
ICAgVmVjdG9yPFJlZlB0cjxMYXllckNvbXBvc2l0aW5nVGhyZWFkPiA+IHN1cmZhY2VMYXllcnM7
Ci0gICAgY29uc3QgVmVjdG9yPFJlZlB0cjxMYXllckNvbXBvc2l0aW5nVGhyZWFkPiA+JiBzdWJs
YXllcnMgPSByb290TGF5ZXItPmdldFN1YmxheWVycygpOworICAgIGNvbnN0IFZlY3RvcjxSZWZQ
dHI8TGF5ZXJDb21wb3NpdGluZ1RocmVhZD4gPiYgc3VibGF5ZXJzID0gcm9vdExheWVyLT5zdWJs
YXllcnMoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN1YmxheWVycy5zaXplKCk7IGkr
KykgewogICAgICAgICBmbG9hdCBvcGFjaXR5ID0gMTsKICAgICAgICAgRmxvYXRSZWN0IGNsaXBS
ZWN0KG1fY2xpcFJlY3QpOwpAQCAtNjA3LDcgKzYwNyw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlcjo6
ZHJhd0RlYnVnQm9yZGVyKExheWVyQ29tcG9zaXRpbmdUaHJlYWQqIGxheWVyKQogICAgIGlmIChs
YXllckFscmVhZHlPblN1cmZhY2UobGF5ZXIpKQogICAgICAgICB0cmFuc2Zvcm1lZEJvdW5kcyA9
IGxheWVyLT5sYXllclJlbmRlcmVyU3VyZmFjZSgpLT50cmFuc2Zvcm1lZEJvdW5kcygpOwogICAg
IGVsc2UKLSAgICAgICAgdHJhbnNmb3JtZWRCb3VuZHMgPSBsYXllci0+Z2V0VHJhbnNmb3JtZWRC
b3VuZHMoKTsKKyAgICAgICAgdHJhbnNmb3JtZWRCb3VuZHMgPSBsYXllci0+dHJhbnNmb3JtZWRC
b3VuZHMoKTsKIAogICAgIGNvbnN0IEdMRVMyUHJvZ3JhbSYgcHJvZ3JhbSA9IHVzZVByb2dyYW0o
Q29sb3JQcm9ncmFtKTsKICAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIocHJvZ3JhbS5wb3NpdGlv
bkxvY2F0aW9uKCksIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgJnRyYW5zZm9ybWVkQm91bmRz
KTsKQEAgLTYyNSw3ICs2MjUsNyBAQCB2b2lkIExheWVyUmVuZGVyZXI6OmRyYXdIb2xlUHVuY2hS
ZWN0KExheWVyQ29tcG9zaXRpbmdUaHJlYWQqIGxheWVyKQogCiAgICAgZ2xFbmFibGUoR0xfQkxF
TkQpOwogICAgIGdsQmxlbmRGdW5jKEdMX09ORSwgR0xfWkVSTyk7Ci0gICAgRmxvYXRRdWFkIGhv
bGUgPSBsYXllci0+Z2V0VHJhbnNmb3JtZWRIb2xlUHVuY2hSZWN0KCk7CisgICAgRmxvYXRRdWFk
IGhvbGUgPSBsYXllci0+dHJhbnNmb3JtZWRIb2xlUHVuY2hSZWN0KCk7CiAgICAgZ2xWZXJ0ZXhB
dHRyaWJQb2ludGVyKHByb2dyYW0ucG9zaXRpb25Mb2NhdGlvbigpLCAyLCBHTF9GTE9BVCwgR0xf
RkFMU0UsIDAsICZob2xlKTsKICAgICBnbERyYXdBcnJheXMoR0xfVFJJQU5HTEVfRkFOLCAwLCA0
KTsKICAgICBjaGVja0dMRXJyb3IoKTsKQEAgLTY1Miw3ICs2NTIsNyBAQCB2b2lkIExheWVyUmVu
ZGVyZXI6OnByZXBhcmVGcmFtZVJlY3Vyc2l2ZShMYXllckNvbXBvc2l0aW5nVGhyZWFkKiBsYXll
ciwgZG91YmxlCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBjb25zdCBWZWN0b3I8UmVmUHRyPExh
eWVyQ29tcG9zaXRpbmdUaHJlYWQ+ID4mIHN1YmxheWVycyA9IGxheWVyLT5nZXRTdWJsYXllcnMo
KTsKKyAgICBjb25zdCBWZWN0b3I8UmVmUHRyPExheWVyQ29tcG9zaXRpbmdUaHJlYWQ+ID4mIHN1
YmxheWVycyA9IGxheWVyLT5zdWJsYXllcnMoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHN1YmxheWVycy5zaXplKCk7IGkrKykKICAgICAgICAgcHJlcGFyZUZyYW1lUmVjdXJzaXZlKHN1
YmxheWVyc1tpXS5nZXQoKSwgYW5pbWF0aW9uVGltZSwgaXNDb250ZXh0Q3VycmVudCk7CiB9CkBA
IC03OTUsMTAgKzc5NSwxMCBAQCB2b2lkIExheWVyUmVuZGVyZXI6OnVwZGF0ZUxheWVyc1JlY3Vy
c2l2ZShMYXllckNvbXBvc2l0aW5nVGhyZWFkKiBsYXllciwgY29uc3QgVAogICAgICAgICAgICAg
c3VyZmFjZS0+c2V0UmVwbGljYURyYXdUcmFuc2Zvcm0ocmVwbGljYU1hdHJpeCk7CiAgICAgICAg
IH0KIAotICAgICAgICBJbnRSZWN0IGRyYXdSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChGbG9hdFJl
Y3QoRmxvYXRQb2ludCgpLCBib3VuZHMpKTsKLSAgICAgICAgc3VyZmFjZS0+c2V0Q29udGVudFJl
Y3QoZHJhd1JlY3QpOworICAgICAgICBJbnRSZWN0IGNvbnRlbnRSZWN0ID0gZW5jbG9zaW5nSW50
UmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBib3VuZHMpKTsKKyAgICAgICAgc3Vy
ZmFjZS0+c2V0Q29udGVudFJlY3QoY29udGVudFJlY3QpOwogCi0gICAgICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4IHByb2plY3Rpb25NYXRyaXggPSBvcnRob01hdHJpeChkcmF3UmVjdC54KCksIGRy
YXdSZWN0Lm1heFgoKSwgZHJhd1JlY3QueSgpLCBkcmF3UmVjdC5tYXhZKCksIC0xMDAwLCAxMDAw
KTsKKyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcHJvamVjdGlvbk1hdHJpeCA9IG9ydGhv
TWF0cml4KGNvbnRlbnRSZWN0LngoKSwgY29udGVudFJlY3QubWF4WCgpLCBjb250ZW50UmVjdC55
KCksIGNvbnRlbnRSZWN0Lm1heFkoKSwgLTEwMDAsIDEwMDApOwogICAgICAgICAvLyBUaGUgb3Jp
Z2luIG9mIHRoZSBuZXcgc3VyZmFjZSBpcyB0aGUgdXBwZXIgbGVmdCBjb3JuZXIgb2YgdGhlIGxh
eWVyLgogICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBkcmF3VHJhbnNmb3JtOwogICAgICAg
ICBkcmF3VHJhbnNmb3JtLnRyYW5zbGF0ZTNkKDAuNSAqIGJvdW5kcy53aWR0aCgpLCAwLjUgKiBi
b3VuZHMuaGVpZ2h0KCksIDApOwpAQCAtODExLDE4ICs4MTEsMTggQEAgdm9pZCBMYXllclJlbmRl
cmVyOjp1cGRhdGVMYXllcnNSZWN1cnNpdmUoTGF5ZXJDb21wb3NpdGluZ1RocmVhZCogbGF5ZXIs
IGNvbnN0IFQKICAgICBsYXllci0+c2V0RHJhd1RyYW5zZm9ybShtX3NjYWxlLCBsb2NhbE1hdHJp
eCk7CiAKICNpZiBFTkFCTEUoVklERU8pCi0gICAgYm9vbCBsYXllclZpc2libGUgPSBjbGlwUmVj
dC5pbnRlcnNlY3RzKGxheWVyLT5nZXREcmF3UmVjdCgpKSB8fCBsYXllci0+bWVkaWFQbGF5ZXIo
KTsKKyAgICBib29sIGxheWVyVmlzaWJsZSA9IGNsaXBSZWN0LmludGVyc2VjdHMobGF5ZXItPmJv
dW5kaW5nQm94KCkpIHx8IGxheWVyLT5tZWRpYVBsYXllcigpOwogI2Vsc2UKLSAgICBib29sIGxh
eWVyVmlzaWJsZSA9IGNsaXBSZWN0LmludGVyc2VjdHMobGF5ZXItPmdldERyYXdSZWN0KCkpOwor
ICAgIGJvb2wgbGF5ZXJWaXNpYmxlID0gY2xpcFJlY3QuaW50ZXJzZWN0cyhsYXllci0+Ym91bmRp
bmdCb3goKSk7CiAjZW5kaWYKIAogICAgIGlmIChsYXllci0+bmVlZHNUZXh0dXJlKCkgJiYgbGF5
ZXJWaXNpYmxlKSB7Ci0gICAgICAgIEludFJlY3QgZGlydHlSZWN0ID0gdG9XaW5kb3dDb29yZGlu
YXRlcyhpbnRlcnNlY3Rpb24obGF5ZXItPmdldERyYXdSZWN0KCksIGNsaXBSZWN0KSk7CisgICAg
ICAgIEludFJlY3QgZGlydHlSZWN0ID0gdG9XaW5kb3dDb29yZGluYXRlcyhpbnRlcnNlY3Rpb24o
bGF5ZXItPmJvdW5kaW5nQm94KCksIGNsaXBSZWN0KSk7CiAgICAgICAgIG1fbGFzdFJlbmRlcmlu
Z1Jlc3VsdHMuYWRkRGlydHlSZWN0KGRpcnR5UmVjdCk7CiAgICAgfQogCiAgICAgaWYgKGxheWVy
LT5tYXNrc1RvQm91bmRzKCkpCi0gICAgICAgIGNsaXBSZWN0LmludGVyc2VjdChsYXllci0+Z2V0
RHJhd1JlY3QoKSk7CisgICAgICAgIGNsaXBSZWN0LmludGVyc2VjdChsYXllci0+Ym91bmRpbmdC
b3goKSk7CiAKICAgICAvLyBGbGF0dGVuIHRvIDJEIGlmIHRoZSBsYXllciBkb2Vzbid0IHByZXNl
cnZlIDNELgogICAgIGlmICghbGF5ZXItPnByZXNlcnZlczNEKCkpIHsKQEAgLTg0NSw3ICs4NDUs
NyBAQCB2b2lkIExheWVyUmVuZGVyZXI6OnVwZGF0ZUxheWVyc1JlY3Vyc2l2ZShMYXllckNvbXBv
c2l0aW5nVGhyZWFkKiBsYXllciwgY29uc3QgVAogICAgIC8vIE1bc10gPSBNICogVHJbLWNlbnRl
cl0KICAgICBsb2NhbE1hdHJpeC50cmFuc2xhdGUzZCgtYm91bmRzLndpZHRoKCkgKiAwLjUsIC1i
b3VuZHMuaGVpZ2h0KCkgKiAwLjUsIDApOwogCi0gICAgY29uc3QgVmVjdG9yPFJlZlB0cjxMYXll
ckNvbXBvc2l0aW5nVGhyZWFkPiA+JiBzdWJsYXllcnMgPSBsYXllci0+Z2V0U3VibGF5ZXJzKCk7
CisgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxMYXllckNvbXBvc2l0aW5nVGhyZWFkPiA+JiBzdWJs
YXllcnMgPSBsYXllci0+c3VibGF5ZXJzKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBz
dWJsYXllcnMuc2l6ZSgpOyBpKyspCiAgICAgICAgIHVwZGF0ZUxheWVyc1JlY3Vyc2l2ZShzdWJs
YXllcnNbaV0uZ2V0KCksIGxvY2FsTWF0cml4LCBzdXJmYWNlTGF5ZXJzLCBvcGFjaXR5LCBjbGlw
UmVjdCk7CiB9CkBAIC04NjQsMTAgKzg2NCwxMCBAQCBzdGF0aWMgdm9pZCBjb2xsZWN0M0RQcmVz
ZXJ2aW5nTGF5ZXJzKFZlY3RvcjxMYXllckNvbXBvc2l0aW5nVGhyZWFkKj4mIGxheWVycykKIHsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxheWVycy5zaXplKCk7ICsraSkgewogICAgICAg
ICBMYXllckNvbXBvc2l0aW5nVGhyZWFkKiBsYXllciA9IGxheWVyc1tpXTsKLSAgICAgICAgaWYg
KCFsYXllci0+cHJlc2VydmVzM0QoKSB8fCAhbGF5ZXItPmdldFN1YmxheWVycygpLnNpemUoKSkK
KyAgICAgICAgaWYgKCFsYXllci0+cHJlc2VydmVzM0QoKSB8fCAhbGF5ZXItPnN1YmxheWVycygp
LnNpemUoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIFZlY3RvcjxMYXllckNv
bXBvc2l0aW5nVGhyZWFkKj4gc3VibGF5ZXJzID0gcmF3UHRyVmVjdG9yRnJvbVJlZlB0clZlY3Rv
cihsYXllci0+Z2V0U3VibGF5ZXJzKCkpOworICAgICAgICBWZWN0b3I8TGF5ZXJDb21wb3NpdGlu
Z1RocmVhZCo+IHN1YmxheWVycyA9IHJhd1B0clZlY3RvckZyb21SZWZQdHJWZWN0b3IobGF5ZXIt
PnN1YmxheWVycygpKTsKICAgICAgICAgY29sbGVjdDNEUHJlc2VydmluZ0xheWVycyhzdWJsYXll
cnMpOwogICAgICAgICBsYXllcnMuaW5zZXJ0KGkrMSwgc3VibGF5ZXJzKTsKICAgICAgICAgaSAr
PSBzdWJsYXllcnMuc2l6ZSgpOwpAQCAtODc4LDkgKzg3OCw5IEBAIHZvaWQgTGF5ZXJSZW5kZXJl
cjo6Y29tcG9zaXRlTGF5ZXJzUmVjdXJzaXZlKExheWVyQ29tcG9zaXRpbmdUaHJlYWQqIGxheWVy
LCBpbnQKIHsKICAgICBGbG9hdFJlY3QgcmVjdDsKICAgICBpZiAobGF5ZXJBbHJlYWR5T25TdXJm
YWNlKGxheWVyKSkKLSAgICAgICAgcmVjdCA9IGxheWVyLT5sYXllclJlbmRlcmVyU3VyZmFjZSgp
LT5kcmF3UmVjdCgpOworICAgICAgICByZWN0ID0gbGF5ZXItPmxheWVyUmVuZGVyZXJTdXJmYWNl
KCktPmJvdW5kaW5nQm94KCk7CiAgICAgZWxzZQotICAgICAgICByZWN0ID0gbGF5ZXItPmdldERy
YXdSZWN0KCk7CisgICAgICAgIHJlY3QgPSBsYXllci0+Ym91bmRpbmdCb3goKTsKIAogI2lmIEVO
QUJMRShWSURFTykKICAgICBib29sIGxheWVyVmlzaWJsZSA9IGNsaXBSZWN0LmludGVyc2VjdHMo
cmVjdCkgfHwgbGF5ZXItPm1lZGlhUGxheWVyKCk7CkBAIC05NjUsMTggKzk2NSwxOCBAQCB2b2lk
IExheWVyUmVuZGVyZXI6OmNvbXBvc2l0ZUxheWVyc1JlY3Vyc2l2ZShMYXllckNvbXBvc2l0aW5n
VGhyZWFkKiBsYXllciwgaW50CiAgICAgICAgIHVwZGF0ZVNjaXNzb3JJZk5lZWRlZChjbGlwUmVj
dCk7CiAgICAgICAgIGNvbnN0IEdMRVMyUHJvZ3JhbSYgcHJvZ3JhbSA9IHVzZVByb2dyYW0oQ29s
b3JQcm9ncmFtKTsKICAgICAgICAgZ2xDb2xvck1hc2soR0xfRkFMU0UsIEdMX0ZBTFNFLCBHTF9G
QUxTRSwgR0xfRkFMU0UpOwotICAgICAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIocHJvZ3JhbS5w
b3NpdGlvbkxvY2F0aW9uKCksIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgJmxheWVyLT5nZXRU
cmFuc2Zvcm1lZEJvdW5kcygpKTsKKyAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHByb2dy
YW0ucG9zaXRpb25Mb2NhdGlvbigpLCAyLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsICZsYXllci0+
dHJhbnNmb3JtZWRCb3VuZHMoKSk7CiAgICAgICAgIGdsRHJhd0FycmF5cyhHTF9UUklBTkdMRV9G
QU4sIDAsIDQpOwogICAgICAgICBnbENvbG9yTWFzayhHTF9UUlVFLCBHTF9UUlVFLCBHTF9UUlVF
LCBHTF9UUlVFKTsKICAgICB9CiAKICAgICBpZiAobGF5ZXItPm1hc2tzVG9Cb3VuZHMoKSkKLSAg
ICAgICAgY2xpcFJlY3QuaW50ZXJzZWN0KGxheWVyLT5nZXREcmF3UmVjdCgpKTsKKyAgICAgICAg
Y2xpcFJlY3QuaW50ZXJzZWN0KGxheWVyLT5ib3VuZGluZ0JveCgpKTsKIAogICAgIC8vIEhlcmUs
IHdlIG5lZWQgdG8gc29ydCB0aGUgd2hvbGUgc3VidHJlZSBvZiBsYXllcnMgd2l0aCBwcmVzZXJ2
ZS0zZC4gSXQKICAgICAvLyBhZmZlY3RzIGFsbCBjaGlsZHJlbiwgYW5kIHRoZSBjaGlsZHJlbiBv
ZiBhbnkgY2hpbGRyZW4gd2l0aCBwcmVzZXJ2ZS0zZCwKICAgICAvLyBhbmQgc28gb24uCi0gICAg
VmVjdG9yPExheWVyQ29tcG9zaXRpbmdUaHJlYWQqPiBzdWJsYXllcnMgPSByYXdQdHJWZWN0b3JG
cm9tUmVmUHRyVmVjdG9yKGxheWVyLT5nZXRTdWJsYXllcnMoKSk7CisgICAgVmVjdG9yPExheWVy
Q29tcG9zaXRpbmdUaHJlYWQqPiBzdWJsYXllcnMgPSByYXdQdHJWZWN0b3JGcm9tUmVmUHRyVmVj
dG9yKGxheWVyLT5zdWJsYXllcnMoKSk7CiAKICAgICBib29sIHByZXNlcnZlczNEID0gbGF5ZXIt
PnByZXNlcnZlczNEKCk7CiAgICAgYm9vbCBzdXBlcmxheWVyUHJlc2VydmVzM0QgPSBsYXllci0+
c3VwZXJsYXllcigpICYmIGxheWVyLT5zdXBlcmxheWVyKCktPnByZXNlcnZlczNEKCk7CkBAIC0x
MDA4LDcgKzEwMDgsNyBAQCB2b2lkIExheWVyUmVuZGVyZXI6OmNvbXBvc2l0ZUxheWVyc1JlY3Vy
c2l2ZShMYXllckNvbXBvc2l0aW5nVGhyZWFkKiBsYXllciwgaW50CiAgICAgICAgIHVwZGF0ZVNj
aXNzb3JJZk5lZWRlZChjbGlwUmVjdCk7CiAgICAgICAgIGNvbnN0IEdMRVMyUHJvZ3JhbSYgcHJv
Z3JhbSA9IHVzZVByb2dyYW0oQ29sb3JQcm9ncmFtKTsKICAgICAgICAgZ2xDb2xvck1hc2soR0xf
RkFMU0UsIEdMX0ZBTFNFLCBHTF9GQUxTRSwgR0xfRkFMU0UpOwotICAgICAgICBnbFZlcnRleEF0
dHJpYlBvaW50ZXIocHJvZ3JhbS5wb3NpdGlvbkxvY2F0aW9uKCksIDIsIEdMX0ZMT0FULCBHTF9G
QUxTRSwgMCwgJmxheWVyLT5nZXRUcmFuc2Zvcm1lZEJvdW5kcygpKTsKKyAgICAgICAgZ2xWZXJ0
ZXhBdHRyaWJQb2ludGVyKHByb2dyYW0ucG9zaXRpb25Mb2NhdGlvbigpLCAyLCBHTF9GTE9BVCwg
R0xfRkFMU0UsIDAsICZsYXllci0+dHJhbnNmb3JtZWRCb3VuZHMoKSk7CiAgICAgICAgIGdsRHJh
d0FycmF5cyhHTF9UUklBTkdMRV9GQU4sIDAsIDQpOwogICAgICAgICBnbENvbG9yTWFzayhHTF9U
UlVFLCBHTF9UUlVFLCBHTF9UUlVFLCBHTF9UUlVFKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclJlbmRlcmVyU3VyZmFjZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVu
ZGVyZXJTdXJmYWNlLmNwcAppbmRleCA1YWY2OGRhY2YyZGEwMDI0Yzc0NzM1NTYyOTE2YTU2MDhm
MmZlN2FjLi5kZmQ3NGI2Y2NiNDUxMDYyNDI2NWFhODcxY2M2MWRkMzAxOTBlY2M0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVu
ZGVyZXJTdXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9i
bGFja2JlcnJ5L0xheWVyUmVuZGVyZXJTdXJmYWNlLmNwcApAQCAtNDUsNyArNDUsNyBAQCB2b2lk
IExheWVyUmVuZGVyZXJTdXJmYWNlOjpzZXRDb250ZW50UmVjdChjb25zdCBJbnRSZWN0JiBjb250
ZW50UmVjdCkKICAgICBtX3NpemUgPSBjb250ZW50UmVjdC5zaXplKCk7CiB9CiAKLUZsb2F0UmVj
dCBMYXllclJlbmRlcmVyU3VyZmFjZTo6ZHJhd1JlY3QoKSBjb25zdAorRmxvYXRSZWN0IExheWVy
UmVuZGVyZXJTdXJmYWNlOjpib3VuZGluZ0JveCgpIGNvbnN0CiB7CiAgICAgRmxvYXRSZWN0IHJl
Y3QgPSB0cmFuc2Zvcm1lZEJvdW5kcygpLmJvdW5kaW5nQm94KCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJSZW5kZXJlclN1
cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5
ZXJSZW5kZXJlclN1cmZhY2UuaAppbmRleCA1N2ZmODY4M2JiMGJlNjdjYzRhNzAyOGExYzcxYTZh
MWRhYTliNGY5Li42MWFiNzg3Y2M5Zjc3ZDA1ZjZkY2E0ZjgxYTZkZDA1NDJiOGNlZTBhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVy
UmVuZGVyZXJTdXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YmxhY2tiZXJyeS9MYXllclJlbmRlcmVyU3VyZmFjZS5oCkBAIC01Miw3ICs1Miw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFJlcGxpY2FEcmF3VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBtYXRyaXgpIHsgbV9yZXBsaWNhRHJhd1RyYW5zZm9ybSA9IG1hdHJpeDsgfQogICAg
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiByZXBsaWNhRHJhd1RyYW5zZm9ybSgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVwbGljYURyYXdUcmFuc2Zvcm07IH0KIAotICAgIEZsb2F0UmVjdCBkcmF3
UmVjdCgpIGNvbnN0OworICAgIC8vIFRoZXNlIHVzZSBub3JtYWxpemVkIGRldmljZSBjb29yZGlu
YXRlcworICAgIEZsb2F0UmVjdCBib3VuZGluZ0JveCgpIGNvbnN0OwogICAgIEZsb2F0UXVhZCB0
cmFuc2Zvcm1lZEJvdW5kcygpIGNvbnN0OwogCiAgICAgYm9vbCBlbnN1cmVUZXh0dXJlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xh
eWVyV2ViS2l0VGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFj
a2JlcnJ5L0xheWVyV2ViS2l0VGhyZWFkLmgKaW5kZXggMDFhZjlmNThhODM4MDZiNDE5ODQ3ZjIx
MzlkYjNhNzRlYjcyOTM5Mi4uZGQ1NGZjNmE2MzY4NTg0YjA1ZmY1ZjExYTdmYzFkY2Q1YmY0NTZk
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJy
eS9MYXllcldlYktpdFRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2JsYWNrYmVycnkvTGF5ZXJXZWJLaXRUaHJlYWQuaApAQCAtMTE1LDcgKzExNSw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgc2V0U3VibGF5ZXJzKGNvbnN0IFZlY3RvcjxSZWZQdHI8TGF5ZXJX
ZWJLaXRUaHJlYWQ+ID4mKTsKIAotICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8TGF5ZXJXZWJLaXRU
aHJlYWQ+ID4mIGdldFN1YmxheWVycygpIGNvbnN0IHsgcmV0dXJuIG1fc3VibGF5ZXJzOyB9Cisg
ICAgY29uc3QgVmVjdG9yPFJlZlB0cjxMYXllcldlYktpdFRocmVhZD4gPiYgc3VibGF5ZXJzKCkg
Y29uc3QgeyByZXR1cm4gbV9zdWJsYXllcnM7IH0KIAogICAgIHZvaWQgc2V0U3VibGF5ZXJUcmFu
c2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkgeyBtX3N1YmxheWVy
VHJhbnNmb3JtID0gdHJhbnNmb3JtOyBzZXROZWVkc0NvbW1pdCgpOyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvVmlkZW9MYXllcldl
YktpdFRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2Jl
cnJ5L1ZpZGVvTGF5ZXJXZWJLaXRUaHJlYWQuY3BwCmluZGV4IDFmZWMxMjBkMmY2ZWZhZmRlOTM2
ZmJlYWM5MzllOWE1OTQyMDA5MmQuLmQ3YTk1OGFkYmI5NjY0MjA0ZGUyNDkxY2IwYTkyZjYxZTc3
Yjk4ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNr
YmVycnkvVmlkZW9MYXllcldlYktpdFRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9WaWRlb0xheWVyV2ViS2l0VGhyZWFkLmNwcApAQCAt
MjcsOCArMjcsNiBAQAogCiAjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtTG9nLmg+CiAKLSNk
ZWZpbmUgREVCVUdfVklERU9fQ0xJUFBJTkcgMAotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFZp
ZGVvTGF5ZXJXZWJLaXRUaHJlYWQ6OlZpZGVvTGF5ZXJXZWJLaXRUaHJlYWQoTWVkaWFQbGF5ZXIq
IG1lZGlhUGxheWVyKQpAQCAtNjQsOSArNjIsNiBAQCB2b2lkIFZpZGVvTGF5ZXJXZWJLaXRUaHJl
YWQ6OnNldE1lZGlhUGxheWVyKE1lZGlhUGxheWVyKiBtZWRpYVBsYXllcikKIHZvaWQgVmlkZW9M
YXllcldlYktpdFRocmVhZDo6c2V0SG9sZVB1bmNoUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQog
ewogICAgIG1faG9sZVB1bmNoUmVjdCA9IHJlY3Q7Ci0jaWYgREVCVUdfVklERU9fQ0xJUFBJTkcK
LSAgICBCQkxPRyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiVmlkZW9MYXll
cldlYktpdFRocmVhZCBtX2hvbGVQdW5jaFJlY3Q9KHg9JWQseT0lZCx3aWR0aD0lZCxoZWlnaHQ9
JWQpLiIsIG1faG9sZVB1bmNoUmVjdC54KCksIG1faG9sZVB1bmNoUmVjdC55KCksIG1faG9sZVB1
bmNoUmVjdC53aWR0aCgpLCBtX2hvbGVQdW5jaFJlY3QuaGVpZ2h0KCkpOwotI2VuZGlmCiAgICAg
c2V0TmVlZHNDb21taXQoKTsKIH0KIApAQCAtODcsMTYgKzgyLDYgQEAgdm9pZCBWaWRlb0xheWVy
V2ViS2l0VGhyZWFkOjpib3VuZHNDaGFuZ2VkKCkKICAgICAvLyBOb3RlIHRoYXQgYWx0aG91Z2gg
d2Uga25vdyB0aGUgKnNpemUqIG9mIHRoaXMgbGF5ZXIsIHdlIHdvbid0IGtub3cgdGhlIHBvc2l0
aW9uIG9mIHRoaXMgbGF5ZXIKICAgICAvLyB1bnRpbCB0aGUgTGF5ZXJDb21wb3NpdGluZ1RocmVh
ZDo6c2V0RHJhd1RyYW5zZm9ybSBtZXRob2QgaXMgY2FsbGVkIGZyb20gdGhlIExheWVyUmVuZGVy
ZXIuCiAgICAgc2V0SG9sZVB1bmNoUmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIG1fYm91
bmRzKSk7Ci0KLSAgICAvLyBBbHNvIHNldCBhIGNsaXBwaW5nIHJlY3RhbmdsZSBmb3IgdGhpcyBo
b2xlIHB1bmNoIHJlY3RhbmdsZS4KLSAgICBpZiAoRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtZWRp
YVBsYXllcigpLT5mcmFtZVZpZXcoKSkKLSAgICAgICAgbV9ob2xlUHVuY2hDbGlwUmVjdCA9IGZy
YW1lVmlldy0+d2luZG93Q2xpcFJlY3QoKTsKLSAgICBlbHNlCi0gICAgICAgIG1faG9sZVB1bmNo
Q2xpcFJlY3QgPSBob2xlUHVuY2hSZWN0KCk7Ci0KLSNpZiBERUJVR19WSURFT19DTElQUElORwot
ICAgIEJCTE9HKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbEluZm8sICJWaWRlb0xheWVy
V2ViS2l0VGhyZWFkIG1faG9sZVB1bmNoQ2xpcFJlY3Q9KHg9JWQseT0lZCx3aWR0aD0lZCxoZWln
aHQ9JWQpLiIsIG1faG9sZVB1bmNoQ2xpcFJlY3QueCgpLCBtX2hvbGVQdW5jaENsaXBSZWN0Lnko
KSwgbV9ob2xlUHVuY2hDbGlwUmVjdC53aWR0aCgpLCBtX2hvbGVQdW5jaENsaXBSZWN0LmhlaWdo
dCgpKTsKLSNlbmRpZgogfQogCiB2b2lkIFZpZGVvTGF5ZXJXZWJLaXRUaHJlYWQ6OnVwZGF0ZVRl
eHR1cmVDb250ZW50c0lmTmVlZGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9BcGkvV2ViT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dl
Yk92ZXJsYXkuY3BwCmluZGV4IGFkNGY3MDg2ZmZhNDA0ODczMmM3OWUxNzQ5NzQ3ZTllMjczYWEw
MzIuLjE5ZTFhMzE3NjdmNzA5ZThkMzY4ZDJlZjhjYzNjOTFkYjMyMDdiOTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViT3ZlcmxheS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJPdmVybGF5LmNwcApAQCAtNjMzLDcgKzYzMyw3IEBA
IHZvaWQgV2ViT3ZlcmxheVByaXZhdGVDb21wb3NpdGluZ1RocmVhZDo6cmVtb3ZlQW5pbWF0aW9u
KGNvbnN0IFN0cmluZyYgbmFtZSkKIFBsYXRmb3JtOjpJbnRSZWN0IFdlYk92ZXJsYXlQcml2YXRl
Q29tcG9zaXRpbmdUaHJlYWQ6OnBpeGVsVmlld3BvcnRSZWN0KCkgY29uc3QKIHsKICAgICBpZiAo
TGF5ZXJSZW5kZXJlciogcmVuZGVyZXIgPSBtX2xheWVyQ29tcG9zaXRpbmdUaHJlYWQtPmxheWVy
UmVuZGVyZXIoKSkKLSAgICAgICAgcmV0dXJuIHJlbmRlcmVyLT50b1BpeGVsVmlld3BvcnRDb29y
ZGluYXRlcyhtX2xheWVyQ29tcG9zaXRpbmdUaHJlYWQtPmdldERyYXdSZWN0KCkpOworICAgICAg
ICByZXR1cm4gcmVuZGVyZXItPnRvUGl4ZWxWaWV3cG9ydENvb3JkaW5hdGVzKG1fbGF5ZXJDb21w
b3NpdGluZ1RocmVhZC0+Ym91bmRpbmdCb3goKSk7CiAKICAgICByZXR1cm4gUGxhdGZvcm06Oklu
dFJlY3QoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2Vi
UGFnZUNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdl
Q29tcG9zaXRvci5jcHAKaW5kZXggOWEwZmM4Y2VjY2NmMmRkNThhOGY3ZjMwNTJkODE5ZjM1Mjlh
NDY2NS4uNWYzMmI1NmJmZGZjMmJiNjE3YmRlNmFiNmE0M2UwODkyYTk0OWJjNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlQ29tcG9zaXRvci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlQ29tcG9zaXRvci5jcHAKQEAg
LTgyLDcgKzgyLDcgQEAgdm9pZCBXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6OmF0dGFjaE92ZXJs
YXlzKExheWVyQ29tcG9zaXRpbmdUaHJlYWQqIG92ZXJsYXlSb28KICAgICBpZiAoIW92ZXJsYXlS
b290KQogICAgICAgICByZXR1cm47CiAKLSAgICBjb25zdCBWZWN0b3I8UmVmUHRyPExheWVyQ29t
cG9zaXRpbmdUaHJlYWQ+ID4mIG92ZXJsYXlzID0gb3ZlcmxheVJvb3QtPmdldFN1YmxheWVycygp
OworICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8TGF5ZXJDb21wb3NpdGluZ1RocmVhZD4gPiYgb3Zl
cmxheXMgPSBvdmVybGF5Um9vdC0+c3VibGF5ZXJzKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBvdmVybGF5cy5zaXplKCk7ICsraSkgewogICAgICAgICBMYXllckNvbXBvc2l0aW5nVGhy
ZWFkKiBvdmVybGF5ID0gb3ZlcmxheXNbaV0uZ2V0KCk7CiAgICAgICAgIGlmIChMYXllckNvbXBv
c2l0aW5nVGhyZWFkQ2xpZW50KiBjbGllbnQgPSBvdmVybGF5LT5jbGllbnQoKSkgewpAQCAtMjc1
LDE0ICsyNzUsMTQgQEAgdm9pZCBXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6OnJlbW92ZU92ZXJs
YXkoTGF5ZXJDb21wb3NpdGluZ1RocmVhZCogbGF5ZXIpCiAKICAgICBsYXllci0+cmVtb3ZlRnJv
bVN1cGVybGF5ZXIoKTsKIAotICAgIGlmIChtX2NvbXBvc2l0aW5nVGhyZWFkT3ZlcmxheUxheWVy
ICYmIG1fY29tcG9zaXRpbmdUaHJlYWRPdmVybGF5TGF5ZXItPmdldFN1YmxheWVycygpLmlzRW1w
dHkoKSkKKyAgICBpZiAobV9jb21wb3NpdGluZ1RocmVhZE92ZXJsYXlMYXllciAmJiBtX2NvbXBv
c2l0aW5nVGhyZWFkT3ZlcmxheUxheWVyLT5zdWJsYXllcnMoKS5pc0VtcHR5KCkpCiAgICAgICAg
IG1fY29tcG9zaXRpbmdUaHJlYWRPdmVybGF5TGF5ZXIuY2xlYXIoKTsKIH0KIAogdm9pZCBXZWJQ
YWdlQ29tcG9zaXRvclByaXZhdGU6OmZpbmRGaXhlZEVsZW1lbnRSZWN0KExheWVyQ29tcG9zaXRp
bmdUaHJlYWQqIGxheWVyLCBXZWJDb3JlOjpJbnRSZWN0JiBmaXhlZEVsZW1lbnRSZWN0KQogewog
ICAgIGlmICgobGF5ZXItPmhhc0ZpeGVkQ29udGFpbmVyKCkgfHwgbGF5ZXItPmlzRml4ZWRQb3Np
dGlvbigpIHx8IGxheWVyLT5oYXNGaXhlZEFuY2VzdG9ySW5ET01UcmVlKCkpICYmIGxheWVyLT5s
YXllclJlbmRlcmVyKCkpIHsKLSAgICAgICAgSW50UmVjdCBmaXhlZFJlY3QgPSBsYXllci0+bGF5
ZXJSZW5kZXJlcigpLT50b1BpeGVsVmlld3BvcnRDb29yZGluYXRlcyhsYXllci0+Z2V0RHJhd1Jl
Y3QoKSk7CisgICAgICAgIEludFJlY3QgZml4ZWRSZWN0ID0gbGF5ZXItPmxheWVyUmVuZGVyZXIo
KS0+dG9QaXhlbFZpZXdwb3J0Q29vcmRpbmF0ZXMobGF5ZXItPmJvdW5kaW5nQm94KCkpOwogICAg
ICAgICAvLyBGSVhNRTogSXQncyBwb3NzaWJsZSB0aGF0IHRoZSByZWN0cyBkb24ndCBpbnRlcnNl
Y3Qgbm93LCBidXQgd2lsbCBiZSBjb25uZWN0ZWQgYnkgYSBmaXhlZCByZWN0IGZvdW5kIGxhdGVy
LgogICAgICAgICAvLyBXZSBuZWVkIHRvIGhhbmRsZSBpdCBhcyB3ZWxsLgogICAgICAgICBpZiAo
Zml4ZWRFbGVtZW50UmVjdC5pc0VtcHR5KCkgfHwgZml4ZWRFbGVtZW50UmVjdC5pbnRlcnNlY3Rz
KGZpeGVkUmVjdCkpIC8vIFVuaXRlIHJlY3RzIGlmIHRoZXkgaW50ZXJzZWN0IGVhY2ggb3RoZXIu
CkBAIC0yOTEsNyArMjkxLDcgQEAgdm9pZCBXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6OmZpbmRG
aXhlZEVsZW1lbnRSZWN0KExheWVyQ29tcG9zaXRpbmdUaHJlYWQqIGxheWUKICAgICAgICAgICAg
IGZpeGVkRWxlbWVudFJlY3QgPSBmaXhlZFJlY3Q7CiAgICAgfQogCi0gICAgY29uc3QgVmVjdG9y
PFJlZlB0cjxMYXllckNvbXBvc2l0aW5nVGhyZWFkPiA+JiBzdWJsYXllcnMgPSBsYXllci0+Z2V0
U3VibGF5ZXJzKCk7CisgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxMYXllckNvbXBvc2l0aW5nVGhy
ZWFkPiA+JiBzdWJsYXllcnMgPSBsYXllci0+c3VibGF5ZXJzKCk7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzdWJsYXllcnMuc2l6ZSgpOyBpKyspCiAgICAgICAgIGZpbmRGaXhlZEVsZW1l
bnRSZWN0KHN1YmxheWVyc1tpXS5nZXQoKSwgZml4ZWRFbGVtZW50UmVjdCk7CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>