<?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>91537</bug_id>
          
          <creation_ts>2012-07-17 13:42:24 -0700</creation_ts>
          <short_desc>[Chromium] Textures drawn during occlusion are incorrectly re-used when unoccluded.</short_desc>
          <delta_ts>2012-07-19 15:35:00 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter>zlieber</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>dglazkov</cc>
    
    <cc>enne</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>jamesr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>671547</commentid>
    <comment_count>0</comment_count>
    <who name="">zlieber</who>
    <bug_when>2012-07-17 13:42:24 -0700</bug_when>
    <thetext>Textures drawn during occlusion are incorrectly re-used when unoccluded.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671568</commentid>
    <comment_count>1</comment_count>
      <attachid>152819</attachid>
    <who name="">zlieber</who>
    <bug_when>2012-07-17 13:54:55 -0700</bug_when>
    <thetext>Created attachment 152819
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671595</commentid>
    <comment_count>2</comment_count>
      <attachid>152819</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-07-17 14:22:08 -0700</bug_when>
    <thetext>Comment on attachment 152819
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:630
&gt; +    contentsTexture-&gt;setIsComplete(!quad-&gt;hasExternalOcclusion());

I think this should go in drawRenderPass, since that is where the texture is actually drawn to. So the flag should be in CCRenderPass.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCQuadCuller.h:47
&gt; +    bool hasExternalOcclusion() { return m_hasExternalOcclusion; }

I think this &quot;hasExternalOcclusion&quot; name used throughout could be more descriptive. It makes lots of sense in the context of this diff, but if another person happened upon it, it would not be clear at all.

hasOcclusionFromOutsideTargetSurface.. hasOcclusionFromNonSibling.. I&apos;m not sure exactly what would be right.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCRenderPass.cpp:60
&gt; +    CCQuadCuller quadCuller(m_quadList, layer, occlusionTracker, layer-&gt;hasDebugBorders(), false);

please use a temporary variable instead of passing a boolean value directly.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCRenderPass.cpp:68
&gt; +    if (!m_targetSurface-&gt;hasExternalOcclusion())
&gt; +        m_targetSurface-&gt;setHasExternalOcclusion(quadCuller.hasExternalOcclusion());

Can we just set it on the render pass here instead?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCRenderPass.cpp:75
&gt; +    CCQuadCuller quadCuller(m_quadList, layer, occlusionTracker, layer-&gt;hasDebugBorders(), true);

please use a temporary variable instead of passing a boolean value directly.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCRenderSurface.h:164
&gt; +    bool m_hasExternalOcclusion;

I think belongs on RenderPass</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672358</commentid>
    <comment_count>3</comment_count>
      <attachid>153010</attachid>
    <who name="">zlieber</who>
    <bug_when>2012-07-18 07:29:58 -0700</bug_when>
    <thetext>Created attachment 153010
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672713</commentid>
    <comment_count>4</comment_count>
      <attachid>153010</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-18 13:41:56 -0700</bug_when>
    <thetext>Comment on attachment 153010
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        Textures drawn during occlusion are incorrectly re-used when unoccluded.

[chromium]

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:148
&gt; +        : CCScopedTexture(allocator),
&gt; +          m_isComplete(false)

style nit: Comma vertically aligned with colon.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCOcclusionTracker.cpp:445
&gt; +    if (hasOcclusionFromOutsideTargetSurface)
&gt; +        *hasOcclusionFromOutsideTargetSurface = (unoccludedInScreen != unoccludedInTarget);

I think you should be checking the occlusion on m_stack[lastIndex - 1].occlusionInScreen, which is the external occlusion for this surface prior to considering anything in the surface.  Any layers that draw into this target surface will update m_stack.last().occlusionInScreen as they go (if the transform to the screen is known), which muddles internal and external occlusion.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCQuadCuller.cpp:56
&gt; +    , m_forSurface(forSurface)

I feel like this just shifts complexity around, but doesn&apos;t result in any net simplification.  On the other hand, CCQuadCuller is so tied to the occlusion iteration that I can&apos;t come up with any example for when you&apos;d ever want to call append and appendSurface on the same quad culler.  Eh.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673049</commentid>
    <comment_count>5</comment_count>
      <attachid>153010</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-07-18 18:19:48 -0700</bug_when>
    <thetext>Comment on attachment 153010
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCQuadCuller.cpp:56
&gt;&gt; +    , m_forSurface(forSurface)
&gt; 
&gt; I feel like this just shifts complexity around, but doesn&apos;t result in any net simplification.  On the other hand, CCQuadCuller is so tied to the occlusion iteration that I can&apos;t come up with any example for when you&apos;d ever want to call append and appendSurface on the same quad culler.  Eh.

Ya you never will since its a temporary thing for the scope for the CCRenderPass::append___() methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673526</commentid>
    <comment_count>6</comment_count>
    <who name="">zlieber</who>
    <bug_when>2012-07-19 08:18:21 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCOcclusionTracker.cpp:445
&gt; &gt; +    if (hasOcclusionFromOutsideTargetSurface)
&gt; &gt; +        *hasOcclusionFromOutsideTargetSurface = (unoccludedInScreen != unoccludedInTarget);
&gt; 
&gt; I think you should be checking the occlusion on m_stack[lastIndex - 1].occlusionInScreen, which is the external occlusion for this surface prior to considering anything in the surface.  Any layers that draw into this target surface will update m_stack.last().occlusionInScreen as they go (if the transform to the screen is known), which muddles internal and external occlusion.

I think what you&apos;re proposing is essentially checking (external != 0), &quot;external&quot; being the external occlusion for the layer - right? What (I think) I&apos;m currently checking is (external + internal != internal). I&apos;d say the latter is a little bit more precise, even though with boolean flag the result will be the same.

If layer A occludes B partially in the surface, and both of them are occluded by layer E outside (but B&apos;s occlusion by E is smaller than B&apos;s occlusion by A), I would only get a positive result on A, whereas you would get it on both. With boolean flag I cannot see where this would fail; if we move to a rect instead, there may be benefit in only checking A, though I cannot think of an example right now.

Also I already have both rects computed anyhow, so it&apos;s simpler to implement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673597</commentid>
    <comment_count>7</comment_count>
      <attachid>153281</attachid>
    <who name="">zlieber</who>
    <bug_when>2012-07-19 09:50:27 -0700</bug_when>
    <thetext>Created attachment 153281
Patch

Added handling of early out in CCLTHi plus more unit tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673634</commentid>
    <comment_count>8</comment_count>
      <attachid>153294</attachid>
    <who name="">zlieber</who>
    <bug_when>2012-07-19 10:24:10 -0700</bug_when>
    <thetext>Created attachment 153294
Patch

Rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673643</commentid>
    <comment_count>9</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-19 10:31:44 -0700</bug_when>
    <thetext>Thanks for all of the explanation.  That makes a lot of sense.  :)

Can you also convince me that != is the correct operation here rather than  intersection(targetUnoccluded, screenUnoccluded) == targetUnoccluded?

The case I&apos;m thinking of is a surface that&apos;s rotated some non-zero amount.  It has no external occlusion, and it has internal occlusion that covers exactly half of it.  Now you&apos;re considering a layer that takes up the whole bounds of the surface.  There&apos;s no screen space occlusion because the layer is not rectilinear in screen space.  There&apos;s target space occlusion of half the layer.  However, since there&apos;s no external occlusion, you&apos;d want to set hasOcclusionFromOutsideTargetSurface to false, but a simple inequality would return true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673664</commentid>
    <comment_count>10</comment_count>
    <who name="">zlieber</who>
    <bug_when>2012-07-19 10:49:02 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Thanks for all of the explanation.  That makes a lot of sense.  :)
&gt; 
&gt; Can you also convince me that != is the correct operation here rather than  intersection(targetUnoccluded, screenUnoccluded) == targetUnoccluded?
&gt; 
&gt; The case I&apos;m thinking of is a surface that&apos;s rotated some non-zero amount.  It has no external occlusion, and it has internal occlusion that covers exactly half of it.  Now you&apos;re considering a layer that takes up the whole bounds of the surface.  There&apos;s no screen space occlusion because the layer is not rectilinear in screen space.  There&apos;s target space occlusion of half the layer.  However, since there&apos;s no external occlusion, you&apos;d want to set hasOcclusionFromOutsideTargetSurface to false, but a simple inequality would return true.

The assumption that I had is that targetUnoccluded will always be bigger than screenUnoccluded and include it entirely. If that assumption is correct, the two conditions are equivalent, so checking for their intersection is equivalent to checking for their equality.

In your example, wouldn&apos;t we have a very small screenUnoccluded resulting from bounding rect of target occlusion?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673673</commentid>
    <comment_count>11</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-19 10:53:51 -0700</bug_when>
    <thetext>(In reply to comment #10)

&gt; The assumption that I had is that targetUnoccluded will always be bigger than screenUnoccluded and include it entirely. If that assumption is correct, the two conditions are equivalent, so checking for their intersection is equivalent to checking for their equality.

Yeah, I&apos;m not sure you can make that assumption.
 
&gt; In your example, wouldn&apos;t we have a very small screenUnoccluded resulting from bounding rect of target occlusion?

Right now, no.  In CCOcclusionTrackerBase&lt;_,_&gt;::markOccludedBehindLayer (line 342), it early outs if the layer is not rectilinear in screen space before marking any screen space occlusion.  Even if that FIXME was addressed and the code did find the interior rect inside that rotated occlusion rect and marked that, then I think screenUnoccluded could still be bigger than targetUnoccluded.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673728</commentid>
    <comment_count>12</comment_count>
      <attachid>153294</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-19 11:32:30 -0700</bug_when>
    <thetext>Comment on attachment 153294
Patch

Attachment 153294 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13277934</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673757</commentid>
    <comment_count>13</comment_count>
    <who name="">zlieber</who>
    <bug_when>2012-07-19 12:00:19 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; 
&gt; &gt; The assumption that I had is that targetUnoccluded will always be bigger than screenUnoccluded and include it entirely. If that assumption is correct, the two conditions are equivalent, so checking for their intersection is equivalent to checking for their equality.
&gt; 
&gt; Yeah, I&apos;m not sure you can make that assumption.
&gt; 
&gt; &gt; In your example, wouldn&apos;t we have a very small screenUnoccluded resulting from bounding rect of target occlusion?
&gt; 
&gt; Right now, no.  In CCOcclusionTrackerBase&lt;_,_&gt;::markOccludedBehindLayer (line 342), it early outs if the layer is not rectilinear in screen space before marking any screen space occlusion.  Even if that FIXME was addressed and the code did find the interior rect inside that rotated occlusion rect and marked that, then I think screenUnoccluded could still be bigger than targetUnoccluded.

You are right, and I verified this with a unit test. I&apos;ll switch this to checking the intersection.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673835</commentid>
    <comment_count>14</comment_count>
      <attachid>153329</attachid>
    <who name="">zlieber</who>
    <bug_when>2012-07-19 13:00:53 -0700</bug_when>
    <thetext>Created attachment 153329
Patch

Changed condition in CCOcclusionTracker</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673851</commentid>
    <comment_count>15</comment_count>
      <attachid>153329</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-19 13:19:28 -0700</bug_when>
    <thetext>Comment on attachment 153329
Patch

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

R=me.  The tests are great.  :)

&gt; Source/WebCore/platform/graphics/chromium/cc/CCOcclusionTracker.cpp:455
&gt; +    if (hasOcclusionFromOutsideTargetSurface)
&gt; +        *hasOcclusionFromOutsideTargetSurface = (intersection(unoccludedInScreen, unoccludedInTarget) != unoccludedInTarget);
&gt; +
&gt; +    if (unoccludedInScreen.isEmpty())
&gt; +        return unoccludedInScreen;
&gt; +
&gt;      return intersection(unoccludedInScreen, unoccludedInTarget);

I don&apos;t think you need this second if statement.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCOcclusionTracker.cpp:512
&gt; +    if (unoccludedInScreen.isEmpty())
&gt; +        return unoccludedInScreen;
&gt; +

Nor this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673858</commentid>
    <comment_count>16</comment_count>
      <attachid>153329</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-19 13:25:01 -0700</bug_when>
    <thetext>Comment on attachment 153329
Patch

Attachment 153329 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13308024</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673896</commentid>
    <comment_count>17</comment_count>
      <attachid>153341</attachid>
    <who name="">zlieber</who>
    <bug_when>2012-07-19 14:00:46 -0700</bug_when>
    <thetext>Created attachment 153341
Patch

Removed redundant if, added missing CCQuadSink</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673897</commentid>
    <comment_count>18</comment_count>
      <attachid>153342</attachid>
    <who name="">zlieber</who>
    <bug_when>2012-07-19 14:02:51 -0700</bug_when>
    <thetext>Created attachment 153342
Patch

Re-upload with reviewer info</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673985</commentid>
    <comment_count>19</comment_count>
      <attachid>153342</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-19 15:34:54 -0700</bug_when>
    <thetext>Comment on attachment 153342
Patch

Clearing flags on attachment: 153342

Committed r123154: &lt;http://trac.webkit.org/changeset/123154&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673986</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-19 15:35:00 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152819</attachid>
            <date>2012-07-17 13:54:55 -0700</date>
            <delta_ts>2012-07-18 07:29:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91537-20120717165455.patch</filename>
            <type>text/plain</type>
            <size>73650</size>
            <attacher>zlieber</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyODYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDg3MTVkY2IxYWYwYzg0
NzBmZjhkNzMxYTVkN2M4MjFmMzE3NjNkMC4uNTA5MTgxYWMyNjc4OTMxZjJmZTQ5Zjk2NzA5ZDU0
MWRiNDk1NTYyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMiBAQAorMjAxMi0wNy0xNyAgWmVl
diBMaWViZXIgIDx6bGllYmVyQGNocm9taXVtLm9yZz4KKworICAgICAgICBUZXh0dXJlcyBkcmF3
biBkdXJpbmcgb2NjbHVzaW9uIGFyZSBpbmNvcnJlY3RseSByZS11c2VkIHdoZW4gdW5vY2NsdWRl
ZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxNTM3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGV0ZWN0
aW5nIGlmIGFueSBleHRlcm5hbCBvY2NsdXNpb24gb2NjdXJzIHdoZW4gZHJhd2luZyBhCisgICAg
ICAgIHRleHR1cmUuIElmIGV4dGVybmFsIG9jY2x1c2lvbiBoYXBwZW5zLCB0aGUgdGV4dHVyZSBp
cyBtYXJrZWQgYXMKKyAgICAgICAgImluY29tcGxldGUiIGluIExheWVyUmVuZGVyZXJDaHJvbWl1
bSwgYW5kIGlzIG5vdCBiZWluZyBjb25zaWRlcmVkCisgICAgICAgIGZvciByZS11c2UuCisKKyAg
ICAgICAgTWlub3IgcmVmYWN0b3Jpbmcgb2YgQ0NRdWFkQ3VsbGVyIC0gZXh0cmFjdGVkIGludGVy
ZmFjZQorICAgICAgICAoQ0NRdWFkU2luaykgYW5kIHVuaXRlZCBhcHBlbmQoKSBhbmQgYXBwZW5k
U3VyZmFjZSgpIG1ldGhvZHMuCisKKyAgICAgICAgQWRkZWQgdW5pdCB0ZXN0cyB0byB2ZXJpZnkg
dGhpcyBmaXg7IGFsc28gYWRkZWQgdGVzdCB0byB0cnkKKyAgICAgICAgY2xpcHBpbmcgaW5zdGVh
ZCBvZiBvY2NsdXNpb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoTGF5ZXJSZW5kZXJlckNocm9taXVt
OjpDYWNoZWRUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1
bTo6Q2FjaGVkVGV4dHVyZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6Q2FjaGVkVGV4dHVyZTo6fkNhY2hlZFRleHR1cmUpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpDYWNoZWRUZXh0dXJlOjppc0NvbXBsZXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Q2FjaGVkVGV4dHVyZTo6
c2V0SXNDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06
OkNhY2hlZFRleHR1cmU6OkNhY2hlZFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRlY2lkZVJlbmRlclBhc3NBbGxv
Y2F0aW9uc0ZvckZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1
bTo6aGF2ZUNhY2hlZFJlc291cmNlc0ZvclJlbmRlclBhc3NJZCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdSZW5kZXJQYXNzUXVhZCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmg6CisgICAg
ICAgIChMYXllclJlbmRlcmVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNDSU9TdXJmYWNlTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuaDoKKyAgICAgICAgKEND
SU9TdXJmYWNlTGF5ZXJJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6YXBw
ZW5kRGVidWdCb3JkZXJRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVySW1wbC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ0xheWVySW1wbDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAoQ0NMYXllckltcGwpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjo6OnVub2NjbHVkZWRDb250ZW50UmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjo6OnVub2NjbHVkZWRDb250cmlidXRpbmdTdXJmYWNlQ29udGVudFJlY3QpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NPY2NsdXNpb25UcmFja2VyLmg6CisgICAgICAgIChDQ09jY2x1c2lvblRyYWNrZXJCYXNl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NRdWFkQ3VsbGVyOjpDQ1F1YWRDdWxsZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NRdWFkQ3VsbGVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5oOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChDQ1F1YWRDdWxsZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NRdWFkQ3VsbGVy
Ojp+Q0NRdWFkQ3VsbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUXVhZEN1bGxlcjo6aGFzRXh0
ZXJuYWxPY2NsdXNpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUXVhZFNpbmsuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKENDUXVhZFNpbmspOgorICAgICAgICAoV2ViQ29yZTo6Q0NRdWFkU2luazo6fkNDUXVh
ZFNpbmspOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVy
UGFzcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3M6OkNDUmVuZGVyUGFzcyk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3M6OmFwcGVuZFF1YWRzRm9yTGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJQYXNzOjphcHBlbmRRdWFkc0ZvclJlbmRlclN1cmZh
Y2VMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5k
ZXJQYXNzRHJhd1F1YWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJQYXNzRHJhd1F1
YWQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3NEcmF3UXVhZDo6Q0NS
ZW5kZXJQYXNzRHJhd1F1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmg6CisgICAgICAgIChDQ1JlbmRlclBhc3NEcmF3UXVh
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3NEcmF3UXVhZDo6aGFzRXh0ZXJuYWxP
Y2NsdXNpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVu
ZGVyU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZhY2U6OkNDUmVu
ZGVyU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZhY2U6OmFwcGVuZFF1
YWRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1
cmZhY2UuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJT
dXJmYWNlOjpzZXRIYXNFeHRlcm5hbE9jY2x1c2lvbik6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jl
bmRlclN1cmZhY2U6Omhhc0V4dGVybmFsT2NjbHVzaW9uKToKKyAgICAgICAgKENDUmVuZGVyU3Vy
ZmFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxi
YXJMYXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY3JvbGxiYXJMYXllckltcGw6
OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1Njcm9sbGJhckxheWVySW1wbC5oOgorICAgICAgICAoQ0NTY3JvbGxiYXJMYXllckltcGwpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxheWVy
SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NvbGlkQ29sb3JMYXllckltcGw6OmFwcGVu
ZFF1YWRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlk
Q29sb3JMYXllckltcGwuaDoKKyAgICAgICAgKENDU29saWRDb2xvckxheWVySW1wbCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZUxheWVySW1wbDo6YXBwZW5kUXVhZHMpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1w
bC5oOgorICAgICAgICAoQ0NUZXh0dXJlTGF5ZXJJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNDVGlsZWRMYXllckltcGw6OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmg6CisgICAgICAgIChDQ1RpbGVk
TGF5ZXJJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Zp
ZGVvTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVmlkZW9MYXllckltcGw6OmFw
cGVuZFF1YWRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Zp
ZGVvTGF5ZXJJbXBsLmg6CisgICAgICAgIChDQ1ZpZGVvTGF5ZXJJbXBsKToKKwogMjAxMi0wNy0x
NyAgRW1pbCBBIEVrbHVuZCAgPGVhZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW5jb3JyZWN0
IG9mZnNldCB1c2VkIGZvciBzY3JvbGxXaWR0aC9IZWlnaHQgY2FsY3VsYXRpb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKaW5kZXggZjExNTE5ODk5YjBjMmQ1MmRhYTUzYTcxMDhhNzc0NTc4OTc5
YmIxNi4uOWE0NTc4YWQ3ZjU5NGE3MTg2NTcyN2NlYmY0MjY0YTA5OTg5NWVjYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0wNy0xNyAgWmVldiBMaWVi
ZXIgIDx6bGllYmVyQGNocm9taXVtLm9yZz4KKworICAgICAgICBUZXh0dXJlcyBkcmF3biBkdXJp
bmcgb2NjbHVzaW9uIGFyZSBpbmNvcnJlY3RseSByZS11c2VkIHdoZW4gdW5vY2NsdWRlZC4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxNTM3CisKKyAg
ICAgICAgQWRkZWQgdW5pdCB0ZXN0cyB0byB0ZXN0IHRleHR1cmUgY2FjaGluZyB3aXRoIGNsaXBw
aW5nIGFuZAorICAgICAgICBvY2NsdXNpb24uIFJlbW92ZWQgc29tZSBtaW5vciBjb2RlIGR1cGxp
Y2F0aW9uIHdoZW4gaW5pdGlhbGl6aW5nCisgICAgICAgIGxheWVycyBmb3IgdmFyaW91cyBzY2Vu
YXJpb3MuCisKKyAgICAgICAgTW9ja0NDUXVhZEN1bGxlciBjYW4gbm93IGltcGxlbWVudCBDQ1F1
YWRTaW5rLgorCisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwOgor
ICAgICAgICAqIHRlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL01v
Y2tDQ1F1YWRDdWxsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDQ1F1YWRDdWxsZXI6Ok1v
Y2tDQ1F1YWRDdWxsZXIpOgorCiAyMDEyLTA3LTE3ICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gIFJvbGxlZCBERVBTLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNo
cm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggYTcyNjc0MTQwZWFjNDA3YTI3MmI1ZjRiZGFk
NjYxNWU1NGJhNTQxYS4uZGFmYjk0YjM3ZWMyZDYyMDdlODg5YTM5YTNjMzQ1ZDhlNmIyMDllZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJSZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC0xMzMsNiArMTMzLDI2
IEBAIHByb3RlY3RlZDoKIAogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKK2NsYXNzIExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6Q2FjaGVkVGV4dHVyZSA6IHB1YmxpYyBDQ1Njb3BlZFRleHR1cmUg
eworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENhY2hlZFRleHR1cmUpOworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzT3duUHRyPENhY2hlZFRleHR1cmU+IGNyZWF0ZShUZXh0dXJlQWxsb2NhdG9y
KiBhbGxvY2F0b3IpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBDYWNoZWRUZXh0dXJlKGFsbG9jYXRv
cikpOyB9CisgICAgdmlydHVhbCB+Q2FjaGVkVGV4dHVyZSgpIHsgfQorCisgICAgYm9vbCBpc0Nv
bXBsZXRlKCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbXBsZXRlOyB9CisgICAgdm9pZCBzZXRJc0Nv
bXBsZXRlKGJvb2wgaXNDb21wbGV0ZSkgeyBtX2lzQ29tcGxldGUgPSBpc0NvbXBsZXRlOyB9CisK
K3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBDYWNoZWRUZXh0dXJlKFRleHR1cmVBbGxvY2F0b3Iq
IGFsbG9jYXRvcikKKyAgICAgICAgOiBDQ1Njb3BlZFRleHR1cmUoYWxsb2NhdG9yKSwKKyAgICAg
ICAgICBtX2lzQ29tcGxldGUoZmFsc2UpCisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICBi
b29sIG1faXNDb21wbGV0ZTsKK307CisKIFBhc3NPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9taXVt
PiBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNyZWF0ZShDQ1JlbmRlcmVyQ2xpZW50KiBjbGllbnQs
IFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlVXBsb2FkZXJPcHRpb24gdGV4
dHVyZVVwbG9hZGVyU2V0dGluZykKIHsKICAgICBPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9taXVt
PiBsYXllclJlbmRlcmVyKGFkb3B0UHRyKG5ldyBMYXllclJlbmRlcmVyQ2hyb21pdW0oY2xpZW50
LCBjb250ZXh0LCB0ZXh0dXJlVXBsb2FkZXJTZXR0aW5nKSkpOwpAQCAtMzE4LDcgKzMzOCw3IEBA
IHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkZWNpZGVSZW5kZXJQYXNzQWxsb2NhdGlvbnNG
b3JGcmFtZShjb25zdCBDQ1JlbmRlclBhCiAgICAgICAgIHBhc3Nlc0luRnJhbWUuc2V0KHJlbmRl
clBhc3Nlc0luRHJhd09yZGVyW2ldLT5pZCgpLCByZW5kZXJQYXNzZXNJbkRyYXdPcmRlcltpXSk7
CiAKICAgICBWZWN0b3I8aW50PiBwYXNzZXNUb0RlbGV0ZTsKLSAgICBIYXNoTWFwPGludCwgT3du
UHRyPENDU2NvcGVkVGV4dHVyZT4gPjo6Y29uc3RfaXRlcmF0b3IgcGFzc0l0ZXJhdG9yOworICAg
IEhhc2hNYXA8aW50LCBPd25QdHI8Q2FjaGVkVGV4dHVyZT4gPjo6Y29uc3RfaXRlcmF0b3IgcGFz
c0l0ZXJhdG9yOwogICAgIGZvciAocGFzc0l0ZXJhdG9yID0gbV9yZW5kZXJQYXNzVGV4dHVyZXMu
YmVnaW4oKTsgcGFzc0l0ZXJhdG9yICE9IG1fcmVuZGVyUGFzc1RleHR1cmVzLmVuZCgpOyArK3Bh
c3NJdGVyYXRvcikgewogICAgICAgICBjb25zdCBDQ1JlbmRlclBhc3MqIHJlbmRlclBhc3NJbkZy
YW1lID0gcGFzc2VzSW5GcmFtZS5nZXQocGFzc0l0ZXJhdG9yLT5maXJzdCk7CiAgICAgICAgIGlm
ICghcmVuZGVyUGFzc0luRnJhbWUpIHsKQEAgLTMyOCw3ICszNDgsNyBAQCB2b2lkIExheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6ZGVjaWRlUmVuZGVyUGFzc0FsbG9jYXRpb25zRm9yRnJhbWUoY29uc3Qg
Q0NSZW5kZXJQYQogCiAgICAgICAgIGNvbnN0IEludFNpemUmIHJlcXVpcmVkU2l6ZSA9IHJlbmRl
clBhc3NUZXh0dXJlU2l6ZShyZW5kZXJQYXNzSW5GcmFtZSk7CiAgICAgICAgIEdDM0RlbnVtIHJl
cXVpcmVkRm9ybWF0ID0gcmVuZGVyUGFzc1RleHR1cmVGb3JtYXQocmVuZGVyUGFzc0luRnJhbWUp
OwotICAgICAgICBDQ1Njb3BlZFRleHR1cmUqIHRleHR1cmUgPSBwYXNzSXRlcmF0b3ItPnNlY29u
ZC5nZXQoKTsKKyAgICAgICAgQ2FjaGVkVGV4dHVyZSogdGV4dHVyZSA9IHBhc3NJdGVyYXRvci0+
c2Vjb25kLmdldCgpOwogICAgICAgICBBU1NFUlQodGV4dHVyZSk7CiAKICAgICAgICAgaWYgKHRl
eHR1cmUtPmlkKCkgJiYgKHRleHR1cmUtPnNpemUoKSAhPSByZXF1aXJlZFNpemUgfHwgdGV4dHVy
ZS0+Zm9ybWF0KCkgIT0gcmVxdWlyZWRGb3JtYXQpKQpAQCAtMzQxLDcgKzM2MSw3IEBAIHZvaWQg
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkZWNpZGVSZW5kZXJQYXNzQWxsb2NhdGlvbnNGb3JGcmFt
ZShjb25zdCBDQ1JlbmRlclBhCiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlbmRlclBh
c3Nlc0luRHJhd09yZGVyLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmICghbV9yZW5kZXJQYXNz
VGV4dHVyZXMuY29udGFpbnMocmVuZGVyUGFzc2VzSW5EcmF3T3JkZXJbaV0tPmlkKCkpKSB7Ci0g
ICAgICAgICAgICBPd25QdHI8Q0NTY29wZWRUZXh0dXJlPiB0ZXh0dXJlID0gQ0NTY29wZWRUZXh0
dXJlOjpjcmVhdGUobV9pbXBsVGV4dHVyZUFsbG9jYXRvci5nZXQoKSk7CisgICAgICAgICAgICBP
d25QdHI8Q2FjaGVkVGV4dHVyZT4gdGV4dHVyZSA9IENhY2hlZFRleHR1cmU6OmNyZWF0ZShtX2lt
cGxUZXh0dXJlQWxsb2NhdG9yLmdldCgpKTsKICAgICAgICAgICAgIG1fcmVuZGVyUGFzc1RleHR1
cmVzLnNldChyZW5kZXJQYXNzZXNJbkRyYXdPcmRlcltpXS0+aWQoKSwgdGV4dHVyZS5yZWxlYXNl
KCkpOwogICAgICAgICB9CiAgICAgfQpAQCAtMzQ5LDggKzM2OSw4IEBAIHZvaWQgTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpkZWNpZGVSZW5kZXJQYXNzQWxsb2NhdGlvbnNGb3JGcmFtZShjb25zdCBD
Q1JlbmRlclBhCiAKIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpoYXZlQ2FjaGVkUmVzb3Vy
Y2VzRm9yUmVuZGVyUGFzc0lkKGludCBpZCkgY29uc3QKIHsKLSAgICBDQ1Njb3BlZFRleHR1cmUq
IHRleHR1cmUgPSBtX3JlbmRlclBhc3NUZXh0dXJlcy5nZXQoaWQpOwotICAgIHJldHVybiB0ZXh0
dXJlICYmIHRleHR1cmUtPmlkKCk7CisgICAgQ2FjaGVkVGV4dHVyZSogdGV4dHVyZSA9IG1fcmVu
ZGVyUGFzc1RleHR1cmVzLmdldChpZCk7CisgICAgcmV0dXJuIHRleHR1cmUgJiYgdGV4dHVyZS0+
aWQoKSAmJiB0ZXh0dXJlLT5pc0NvbXBsZXRlKCk7CiB9CiAKIHZvaWQgTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpiZWdpbkRyYXdpbmdGcmFtZShjb25zdCBDQ1JlbmRlclBhc3MqIHJvb3RSZW5kZXJQ
YXNzKQpAQCAtNTk0LDcgKzYxNCw3IEBAIFBhc3NPd25QdHI8Q0NTY29wZWRUZXh0dXJlPiBMYXll
clJlbmRlcmVyQ2hyb21pdW06OmRyYXdCYWNrZ3JvdW5kRmlsdGVycyhjb25zdCBDCiAKIHZvaWQg
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UmVuZGVyUGFzc1F1YWQoY29uc3QgQ0NSZW5kZXJQ
YXNzRHJhd1F1YWQqIHF1YWQpCiB7Ci0gICAgQ0NTY29wZWRUZXh0dXJlKiBjb250ZW50c1RleHR1
cmUgPSBtX3JlbmRlclBhc3NUZXh0dXJlcy5nZXQocXVhZC0+cmVuZGVyUGFzc0lkKCkpOworICAg
IENhY2hlZFRleHR1cmUqIGNvbnRlbnRzVGV4dHVyZSA9IG1fcmVuZGVyUGFzc1RleHR1cmVzLmdl
dChxdWFkLT5yZW5kZXJQYXNzSWQoKSk7CiAgICAgaWYgKCFjb250ZW50c1RleHR1cmUgfHwgIWNv
bnRlbnRzVGV4dHVyZS0+aWQoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC02MDcsNiArNjI3LDgg
QEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdSZW5kZXJQYXNzUXVhZChjb25zdCBD
Q1JlbmRlclBhc3NEcmF3UXVhZCogcXVhZCkKICAgICBpZiAoIWNvbnRlbnRzRGV2aWNlVHJhbnNm
b3JtLmlzSW52ZXJ0aWJsZSgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBjb250ZW50c1RleHR1
cmUtPnNldElzQ29tcGxldGUoIXF1YWQtPmhhc0V4dGVybmFsT2NjbHVzaW9uKCkpOworCiAgICAg
T3duUHRyPENDU2NvcGVkVGV4dHVyZT4gYmFja2dyb3VuZFRleHR1cmUgPSBkcmF3QmFja2dyb3Vu
ZEZpbHRlcnMocXVhZCwgY29udGVudHNEZXZpY2VUcmFuc2Zvcm0pOwogCiAgICAgLy8gRklYTUU6
IENhY2hlIHRoaXMgdmFsdWUgc28gdGhhdCB3ZSBkb24ndCBoYXZlIHRvIGRvIGl0IGZvciBib3Ro
IHRoZSBzdXJmYWNlIGFuZCBpdHMgcmVwbGljYS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmgKaW5kZXggNDE1NTIwZDdmZDllOTM4MWU2NWU1MDNmYTliNzNmYjVmOWQ5OGNjZC4uNzY4
ZDFkZjgyYjE1YTM2ZmUzZWJjYzk0ODZkZmRhMjIyYTg4ZWE2NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVt
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmgKQEAgLTE4MCw2ICsxODAsOCBAQCBwcml2YXRlOgogICAgIE93blB0
cjxHZW9tZXRyeUJpbmRpbmc+IG1fc2hhcmVkR2VvbWV0cnk7CiAgICAgRmxvYXRRdWFkIG1fc2hh
cmVkR2VvbWV0cnlRdWFkOwogCisgICAgY2xhc3MgQ2FjaGVkVGV4dHVyZTsKKwogICAgIC8vIFRo
aXMgYmxvY2sgb2YgYmluZGluZ3MgZGVmaW5lcyBhbGwgb2YgdGhlIHByb2dyYW1zIHVzZWQgYnkg
dGhlIGNvbXBvc2l0b3IgaXRzZWxmLgogCiAgICAgLy8gVGlsZWQgbGF5ZXIgc2hhZGVycy4KQEAg
LTI2NSw3ICsyNjcsNyBAQCBwcml2YXRlOgogICAgIE93blB0cjxUcmFja2luZ1RleHR1cmVBbGxv
Y2F0b3I+IG1fY29udGVudHNUZXh0dXJlQWxsb2NhdG9yOwogICAgIE93blB0cjxUcmFja2luZ1Rl
eHR1cmVBbGxvY2F0b3I+IG1faW1wbFRleHR1cmVBbGxvY2F0b3I7CiAKLSAgICBIYXNoTWFwPGlu
dCwgT3duUHRyPENDU2NvcGVkVGV4dHVyZT4gPiBtX3JlbmRlclBhc3NUZXh0dXJlczsKKyAgICBI
YXNoTWFwPGludCwgT3duUHRyPENhY2hlZFRleHR1cmU+ID4gbV9yZW5kZXJQYXNzVGV4dHVyZXM7
CiAKICAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBtX2NvbnRleHQ7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9T
dXJmYWNlTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmNwcAppbmRleCBkMTE1N2VkMDM3OTc5ODE1
NGFkMTE3YThlMjljMmMzNDA5MDExYTMyLi5iNDBkNThjNDBkNjA1MjM2MDk0YjM5ZDBhNjc4MDE4
NTY4NDg5ZThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuY3BwCkBA
IC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSAiY2MvQ0NHcmFwaGljc0NvbnRleHQuaCIKICNpbmNs
dWRlICJjYy9DQ0lPU3VyZmFjZURyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVI
b3N0SW1wbC5oIgotI2luY2x1ZGUgImNjL0NDUXVhZEN1bGxlci5oIgorI2luY2x1ZGUgImNjL0ND
UXVhZFNpbmsuaCIKICNpbmNsdWRlIDxwdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtOTYsNyArOTYsNyBAQCB2b2lkIENDSU9TdXJmYWNlTGF5
ZXJJbXBsOjp3aWxsRHJhdyhDQ1JlbmRlcmVyKiBsYXllclJlbmRlcmVyLCBDQ0dyYXBoaWNzQ29u
dGV4dAogICAgIH0KIH0KIAotdm9pZCBDQ0lPU3VyZmFjZUxheWVySW1wbDo6YXBwZW5kUXVhZHMo
Q0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1
YWRTdGF0ZSwgYm9vbCYpCit2b2lkIENDSU9TdXJmYWNlTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhD
Q1F1YWRTaW5rJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRT
dGF0ZSwgYm9vbCYpCiB7CiAgICAgSW50UmVjdCBxdWFkUmVjdChJbnRQb2ludCgpLCBjb250ZW50
Qm91bmRzKCkpOwogICAgIHF1YWRMaXN0LmFwcGVuZChDQ0lPU3VyZmFjZURyYXdRdWFkOjpjcmVh
dGUoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgbV9pb1N1cmZhY2VTaXplLCBtX2lvU3VyZmFj
ZVRleHR1cmVJZCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmgKaW5kZXgg
MjhhMzVjZDBmMjA4M2E4NjIxMDE3MTg3OWMxYjkyNmI1MmJkMDRlMi4uZTQ3MTMxYmI2NzJjY2Zm
ZTA2ZmUzMzg2NTg0MjA4YTc0Zjk5MWU5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxh
eWVySW1wbC5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0SU9TdXJm
YWNlUHJvcGVydGllcyh1bnNpZ25lZCBpb1N1cmZhY2VJZCwgY29uc3QgSW50U2l6ZSYpOwogCi0g
ICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYsIGNvbnN0IENDU2hhcmVk
UXVhZFN0YXRlKiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwg
Ym9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCB3aWxs
RHJhdyhDQ1JlbmRlcmVyKiwgQ0NHcmFwaGljc0NvbnRleHQqKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkTG9zZUNvbnRleHQoKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNw
cAppbmRleCA5NDM0ZGM1OWNkOGU5ZTU4NTYyZjRmNmI2MGI0OWVkNmQwNmZmZjUyLi5kMTA5MDlk
N2FjOTExMTA4ZGFkYTFlMzllYjg3ZGEzNzA1ZWI3N2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwu
Y3BwCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSAiY2MvQ0NMYXllclNvcnRlci5oIgogI2lu
Y2x1ZGUgImNjL0NDTWF0aFV0aWwuaCIKICNpbmNsdWRlICJjYy9DQ1Byb3h5LmgiCi0jaW5jbHVk
ZSAiY2MvQ0NRdWFkQ3VsbGVyLmgiCisjaW5jbHVkZSAiY2MvQ0NRdWFkU2luay5oIgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiB1c2luZyBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0
aW9uTWF0cml4OwpAQCAtMTc0LDcgKzE3NCw3IEBAIHZvaWQgQ0NMYXllckltcGw6OmRpZERyYXco
KQogI2VuZGlmCiB9CiAKLXZvaWQgQ0NMYXllckltcGw6OmFwcGVuZERlYnVnQm9yZGVyUXVhZChD
Q1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVh
ZFN0YXRlKSBjb25zdAordm9pZCBDQ0xheWVySW1wbDo6YXBwZW5kRGVidWdCb3JkZXJRdWFkKEND
UXVhZFNpbmsmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0
YXRlKSBjb25zdAogewogICAgIGlmICghaGFzRGVidWdCb3JkZXJzKCkpCiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVySW1wbC5oCmluZGV4IGE1Y2FjZDY0YmZmNGE2MTRiYzM1MTEwMWIwNWQw
YzI4NzBkMTFmYmMuLjc1N2Y5YzBlZThmODg2YTc2ZjE4Y2M3YjU5YjIxOWU5NmE1NTE0ZDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllckltcGwuaApAQCAtNDcsOCArNDcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBDQ0dyYXBoaWNzQ29udGV4dDsKIGNsYXNzIENDTGF5ZXJTb3J0ZXI7CiBjbGFzcyBD
Q0xheWVyVHJlZUhvc3RJbXBsOwotY2xhc3MgQ0NRdWFkQ3VsbGVyOwogY2xhc3MgQ0NSZW5kZXJl
cjsKK2NsYXNzIENDUXVhZFNpbms7CiBjbGFzcyBMYXllckNocm9taXVtOwogCiBjbGFzcyBDQ0xh
eWVySW1wbCA6IHB1YmxpYyBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckNsaWVudCB7CkBAIC05
Myw5ICs5Myw5IEBAIHB1YmxpYzoKICAgICAvLyB0aGUgbGF5ZXIgaXMgZGVzdHJveWVkLiBUbyBl
bmZvcmNlIHRoaXMsIGFueSBjbGFzcyB0aGF0IG92ZXJyaWRlcwogICAgIC8vIHdpbGxEcmF3L2Rp
ZERyYXcgbXVzdCBjYWxsIHRoZSBiYXNlIGNsYXNzIHZlcnNpb24uCiAgICAgdmlydHVhbCB2b2lk
IHdpbGxEcmF3KENDUmVuZGVyZXIqLCBDQ0dyYXBoaWNzQ29udGV4dCopOwotICAgIHZpcnR1YWwg
dm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSos
IGJvb2wmIGhhZE1pc3NpbmdUaWxlcykgeyB9CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRz
KENDUXVhZFNpbmsmLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wmIGhhZE1pc3NpbmdU
aWxlcykgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZERyYXcoKTsKLSAgICB2b2lkIGFwcGVuZERl
YnVnQm9yZGVyUXVhZChDQ1F1YWRDdWxsZXImLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSopIGNv
bnN0OworICAgIHZvaWQgYXBwZW5kRGVidWdCb3JkZXJRdWFkKENDUXVhZFNpbmsmLCBjb25zdCBD
Q1NoYXJlZFF1YWRTdGF0ZSopIGNvbnN0OwogCiAgICAgdmlydHVhbCB1bnNpZ25lZCBjb250ZW50
c1RleHR1cmVJZCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNw
cAppbmRleCAwZDAxNTkzY2Y4NzNiZTY3MmQzN2FlNzc4YjQ4ZjdjYTdkMTk5ZTJkLi40OWJlM2I1
YmViN2JkZWNkNDFhNDI5ZjU0ZjlkYTExNmZhOWM1ZTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2Nj
bHVzaW9uVHJhY2tlci5jcHAKQEAgLTQxNyw3ICs0MTcsNyBAQCBzdGF0aWMgaW5saW5lIEludFJl
Y3QgY29tcHV0ZVVub2NjbHVkZWRDb250ZW50UmVjdChjb25zdCBJbnRSZWN0JiBjb250ZW50UmVj
dCwgYwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1
cmZhY2VUeXBlPgotSW50UmVjdCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVu
ZGVyU3VyZmFjZVR5cGU+Ojp1bm9jY2x1ZGVkQ29udGVudFJlY3QoY29uc3QgTGF5ZXJUeXBlKiBs
YXllciwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpIGNvbnN0CitJbnRSZWN0IENDT2NjbHVz
aW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46OnVub2NjbHVkZWRD
b250ZW50UmVjdChjb25zdCBMYXllclR5cGUqIGxheWVyLCBjb25zdCBJbnRSZWN0JiBjb250ZW50
UmVjdCwgYm9vbCogaGFzRXh0ZXJuYWxPY2NsdXNpb24pIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFt
X3N0YWNrLmlzRW1wdHkoKSk7CiAgICAgaWYgKG1fc3RhY2suaXNFbXB0eSgpKQpAQCAtNDQxLDEx
ICs0NDEsMTQgQEAgSW50UmVjdCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVu
ZGVyU3VyZmFjZVR5cGU+Ojp1bm9jY2x1ZGVkQ29udGVudFIKICAgICBpZiAobGF5ZXJUcmFuc2Zv
cm1zVG9UYXJnZXRLbm93bihsYXllcikpCiAgICAgICAgIHVub2NjbHVkZWRJblRhcmdldCA9IGNv
bXB1dGVVbm9jY2x1ZGVkQ29udGVudFJlY3QoY29udGVudFJlY3QsIGNvbnRlbnRUb1RhcmdldFN1
cmZhY2VUcmFuc2Zvcm08TGF5ZXJUeXBlPihsYXllciksIGxheWVyU2Npc3NvclJlY3RJblRhcmdl
dFN1cmZhY2UobGF5ZXIpLCBtX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblRhcmdldCk7CiAKKyAg
ICBpZiAoaGFzRXh0ZXJuYWxPY2NsdXNpb24pCisgICAgICAgICpoYXNFeHRlcm5hbE9jY2x1c2lv
biA9ICh1bm9jY2x1ZGVkSW5TY3JlZW4gIT0gdW5vY2NsdWRlZEluVGFyZ2V0KTsKKwogICAgIHJl
dHVybiBpbnRlcnNlY3Rpb24odW5vY2NsdWRlZEluU2NyZWVuLCB1bm9jY2x1ZGVkSW5UYXJnZXQp
OwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZh
Y2VUeXBlPgotSW50UmVjdCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVy
U3VyZmFjZVR5cGU+Ojp1bm9jY2x1ZGVkQ29udHJpYnV0aW5nU3VyZmFjZUNvbnRlbnRSZWN0KGNv
bnN0IExheWVyVHlwZSogbGF5ZXIsIGJvb2wgZm9yUmVwbGljYSwgY29uc3QgSW50UmVjdCYgY29u
dGVudFJlY3QpIGNvbnN0CitJbnRSZWN0IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBl
LCBSZW5kZXJTdXJmYWNlVHlwZT46OnVub2NjbHVkZWRDb250cmlidXRpbmdTdXJmYWNlQ29udGVu
dFJlY3QoY29uc3QgTGF5ZXJUeXBlKiBsYXllciwgYm9vbCBmb3JSZXBsaWNhLCBjb25zdCBJbnRS
ZWN0JiBjb250ZW50UmVjdCwgYm9vbCogaGFzRXh0ZXJuYWxPY2NsdXNpb24pIGNvbnN0CiB7CiAg
ICAgQVNTRVJUKCFtX3N0YWNrLmlzRW1wdHkoKSk7CiAgICAgLy8gVGhlIGxheWVyIGlzIGEgY29u
dHJpYnV0aW5nIHJlbmRlclRhcmdldCBzbyBpdCBzaG91bGQgaGF2ZSBhIHN1cmZhY2UuCkBAIC00
OTYsNiArNDk5LDkgQEAgSW50UmVjdCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwg
UmVuZGVyU3VyZmFjZVR5cGU+Ojp1bm9jY2x1ZGVkQ29udHJpYnUKICAgICAgICAgICAgIHVub2Nj
bHVkZWRJblRhcmdldCA9IGNvbXB1dGVVbm9jY2x1ZGVkQ29udGVudFJlY3QoY29udGVudFJlY3Qs
IHRyYW5zZm9ybVRvVGFyZ2V0LCBzdXJmYWNlQ2xpcFJlY3QsIFJlZ2lvbigpKTsKICAgICB9CiAK
KyAgICBpZiAoaGFzRXh0ZXJuYWxPY2NsdXNpb24pCisgICAgICAgICpoYXNFeHRlcm5hbE9jY2x1
c2lvbiA9ICh1bm9jY2x1ZGVkSW5TY3JlZW4gIT0gdW5vY2NsdWRlZEluVGFyZ2V0KTsKKwogICAg
IHJldHVybiBpbnRlcnNlY3Rpb24odW5vY2NsdWRlZEluU2NyZWVuLCB1bm9jY2x1ZGVkSW5UYXJn
ZXQpOwogfQogCkBAIC01MTgsOCArNTI0LDggQEAgdGVtcGxhdGUgdm9pZCBDQ09jY2x1c2lvblRy
YWNrZXJCYXNlPExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1bT46OmZpbmkKIHRl
bXBsYXRlIHZvaWQgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllckNocm9taXVtLCBSZW5kZXJT
dXJmYWNlQ2hyb21pdW0+OjpsZWF2ZVRvUmVuZGVyVGFyZ2V0KGNvbnN0IExheWVyQ2hyb21pdW0q
IG5ld1RhcmdldCk7CiB0ZW1wbGF0ZSB2b2lkIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJD
aHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9taXVtPjo6bWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIo
Y29uc3QgTGF5ZXJDaHJvbWl1bSopOwogdGVtcGxhdGUgYm9vbCBDQ09jY2x1c2lvblRyYWNrZXJC
YXNlPExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1bT46Om9jY2x1ZGVkKGNvbnN0
IExheWVyQ2hyb21pdW0qLCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkgY29uc3Q7Ci10ZW1w
bGF0ZSBJbnRSZWN0IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJDaHJvbWl1bSwgUmVuZGVy
U3VyZmFjZUNocm9taXVtPjo6dW5vY2NsdWRlZENvbnRlbnRSZWN0KGNvbnN0IExheWVyQ2hyb21p
dW0qLCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkgY29uc3Q7Ci10ZW1wbGF0ZSBJbnRSZWN0
IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9t
aXVtPjo6dW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChjb25zdCBMYXll
ckNocm9taXVtKiwgYm9vbCBmb3JSZXBsaWNhLCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkg
Y29uc3Q7Cit0ZW1wbGF0ZSBJbnRSZWN0IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJDaHJv
bWl1bSwgUmVuZGVyU3VyZmFjZUNocm9taXVtPjo6dW5vY2NsdWRlZENvbnRlbnRSZWN0KGNvbnN0
IExheWVyQ2hyb21pdW0qLCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgYm9vbCogaGFzRXh0
ZXJuYWxPY2NsdXNpb24pIGNvbnN0OwordGVtcGxhdGUgSW50UmVjdCBDQ09jY2x1c2lvblRyYWNr
ZXJCYXNlPExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1bT46OnVub2NjbHVkZWRD
b250cmlidXRpbmdTdXJmYWNlQ29udGVudFJlY3QoY29uc3QgTGF5ZXJDaHJvbWl1bSosIGJvb2wg
Zm9yUmVwbGljYSwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGJvb2wqIGhhc0V4dGVybmFs
T2NjbHVzaW9uKSBjb25zdDsKIHRlbXBsYXRlIEludFJlY3QgQ0NPY2NsdXNpb25UcmFja2VyQmFz
ZTxMYXllckNocm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+OjpsYXllclNjaXNzb3JSZWN0
SW5UYXJnZXRTdXJmYWNlKGNvbnN0IExheWVyQ2hyb21pdW0qKSBjb25zdDsKIAogdGVtcGxhdGUg
Q0NPY2NsdXNpb25UcmFja2VyQmFzZTxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlPjo6Q0NP
Y2NsdXNpb25UcmFja2VyQmFzZShJbnRSZWN0IHNjaXNzb3JSZWN0SW5TY3JlZW5TcGFjZSwgYm9v
bCByZWNvcmRNZXRyaWNzRm9yRnJhbWUpOwpAQCAtNTMwLDggKzUzNiw4IEBAIHRlbXBsYXRlIHZv
aWQgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlPjo6
ZmluaXNoZWRSZW5kCiB0ZW1wbGF0ZSB2b2lkIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8Q0NMYXll
ckltcGwsIENDUmVuZGVyU3VyZmFjZT46OmxlYXZlVG9SZW5kZXJUYXJnZXQoY29uc3QgQ0NMYXll
ckltcGwqIG5ld1RhcmdldCk7CiB0ZW1wbGF0ZSB2b2lkIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8
Q0NMYXllckltcGwsIENDUmVuZGVyU3VyZmFjZT46Om1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNv
bnN0IENDTGF5ZXJJbXBsKik7CiB0ZW1wbGF0ZSBib29sIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8
Q0NMYXllckltcGwsIENDUmVuZGVyU3VyZmFjZT46Om9jY2x1ZGVkKGNvbnN0IENDTGF5ZXJJbXBs
KiwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpIGNvbnN0OwotdGVtcGxhdGUgSW50UmVjdCBD
Q09jY2x1c2lvblRyYWNrZXJCYXNlPENDTGF5ZXJJbXBsLCBDQ1JlbmRlclN1cmZhY2U+Ojp1bm9j
Y2x1ZGVkQ29udGVudFJlY3QoY29uc3QgQ0NMYXllckltcGwqLCBjb25zdCBJbnRSZWN0JiBjb250
ZW50UmVjdCkgY29uc3Q7Ci10ZW1wbGF0ZSBJbnRSZWN0IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8
Q0NMYXllckltcGwsIENDUmVuZGVyU3VyZmFjZT46OnVub2NjbHVkZWRDb250cmlidXRpbmdTdXJm
YWNlQ29udGVudFJlY3QoY29uc3QgQ0NMYXllckltcGwqLCBib29sIGZvclJlcGxpY2EsIGNvbnN0
IEludFJlY3QmIGNvbnRlbnRSZWN0KSBjb25zdDsKK3RlbXBsYXRlIEludFJlY3QgQ0NPY2NsdXNp
b25UcmFja2VyQmFzZTxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlPjo6dW5vY2NsdWRlZENv
bnRlbnRSZWN0KGNvbnN0IENDTGF5ZXJJbXBsKiwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3Qs
IGJvb2wqIGhhc0V4dGVybmFsT2NjbHVzaW9uKSBjb25zdDsKK3RlbXBsYXRlIEludFJlY3QgQ0NP
Y2NsdXNpb25UcmFja2VyQmFzZTxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlPjo6dW5vY2Ns
dWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChjb25zdCBDQ0xheWVySW1wbCosIGJv
b2wgZm9yUmVwbGljYSwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGJvb2wqIGhhc0V4dGVy
bmFsT2NjbHVzaW9uKSBjb25zdDsKIHRlbXBsYXRlIEludFJlY3QgQ0NPY2NsdXNpb25UcmFja2Vy
QmFzZTxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlPjo6bGF5ZXJTY2lzc29yUmVjdEluVGFy
Z2V0U3VyZmFjZShjb25zdCBDQ0xheWVySW1wbCopIGNvbnN0OwogCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJh
Y2tlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NP
Y2NsdXNpb25UcmFja2VyLmgKaW5kZXggYWU4NTc1MWVhMWY4MTJlYWI1YjQ0ZTUwMGZjNWE4OGI5
N2JmZmM1MS4uMTMyNmM5YTFhZTZhN2FjNWJmZDY4Y2NiZmMwMGUzYTg3OTBmNzg2NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2Ns
dXNpb25UcmFja2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmgKQEAgLTU2LDExICs1NiwxMSBAQCBwdWJsaWM6
CiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiByZWN0IGluIGNvbnRlbnQgc3BhY2Ug
Zm9yIHRoZSBsYXllciBpcyBmdWxseSBvY2NsdWRlZCBpbiBlaXRoZXIgc2NyZWVuIHNwYWNlIG9y
IHRoZSBsYXllcidzIHRhcmdldCBzdXJmYWNlLgogICAgIGJvb2wgb2NjbHVkZWQoY29uc3QgTGF5
ZXJUeXBlKiwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpIGNvbnN0OwogICAgIC8vIEdpdmVz
IGFuIHVub2NjbHVkZWQgc3ViLXJlY3Qgb2YgfGNvbnRlbnRSZWN0fCBpbiB0aGUgY29udGVudCBz
cGFjZSBvZiB0aGUgbGF5ZXIuIFVzZWQgd2hlbiBjb25zaWRlcmluZyBvY2NsdXNpb24gZm9yIGEg
bGF5ZXIgdGhhdCBwYWludHMvZHJhd3Mgc29tZXRoaW5nLgotICAgIEludFJlY3QgdW5vY2NsdWRl
ZENvbnRlbnRSZWN0KGNvbnN0IExheWVyVHlwZSosIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0
KSBjb25zdDsKKyAgICBJbnRSZWN0IHVub2NjbHVkZWRDb250ZW50UmVjdChjb25zdCBMYXllclR5
cGUqLCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgYm9vbCogaGFzRXh0ZXJuYWxPY2NsdXNp
b24gPSAwKSBjb25zdDsKIAogICAgIC8vIEdpdmVzIGFuIHVub2NjbHVkZWQgc3ViLXJlY3Qgb2Yg
fGNvbnRlbnRSZWN0fCBpbiB0aGUgY29udGVudCBzcGFjZSBvZiB0aGUgcmVuZGVyVGFyZ2V0IG93
bmVkIGJ5IHRoZSBsYXllci4KICAgICAvLyBVc2VkIHdoZW4gY29uc2lkZXJpbmcgb2NjbHVzaW9u
IGZvciBhIGNvbnRyaWJ1dGluZyBzdXJmYWNlIHRoYXQgaXMgcmVuZGVyaW5nIGludG8gYW5vdGhl
ciB0YXJnZXQuCi0gICAgSW50UmVjdCB1bm9jY2x1ZGVkQ29udHJpYnV0aW5nU3VyZmFjZUNvbnRl
bnRSZWN0KGNvbnN0IExheWVyVHlwZSosIGJvb2wgZm9yUmVwbGljYSwgY29uc3QgSW50UmVjdCYg
Y29udGVudFJlY3QpIGNvbnN0OworICAgIEludFJlY3QgdW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1
cmZhY2VDb250ZW50UmVjdChjb25zdCBMYXllclR5cGUqLCBib29sIGZvclJlcGxpY2EsIGNvbnN0
IEludFJlY3QmIGNvbnRlbnRSZWN0LCBib29sKiBoYXNFeHRlcm5hbE9jY2x1c2lvbiA9IDApIGNv
bnN0OwogCiAgICAgLy8gUmVwb3J0IG9wZXJhdGlvbnMgZm9yIHJlY29yZGluZyBvdmVyZHJhdyBt
ZXRyaWNzLgogICAgIENDT3ZlcmRyYXdNZXRyaWNzJiBvdmVyZHJhd01ldHJpY3MoKSBjb25zdCB7
IHJldHVybiAqbV9vdmVyZHJhd01ldHJpY3MuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIu
Y3BwCmluZGV4IDY1Zjc4Nzg4ZWQ0OWFlMjQyODVmN2RhY2NlYjcxZGUxZjQ5YTNlZjMuLjMxNGQw
MDdkYzYwZmE5NmIxYjIxYmZlNjg3NTdmNTc0MmZiZWNhYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3Vs
bGVyLmNwcApAQCAtMzMsNyArMzMsOSBAQAogI2luY2x1ZGUgIlNrQ29sb3IuaCIKICNpbmNsdWRl
ICJjYy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5o
IgorI2luY2x1ZGUgImNjL0NDT2NjbHVzaW9uVHJhY2tlci5oIgogI2luY2x1ZGUgImNjL0NDT3Zl
cmRyYXdNZXRyaWNzLmgiCisjaW5jbHVkZSAiY2MvQ0NSZW5kZXJQYXNzLmgiCiAjaW5jbHVkZSA8
cHVibGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7
CkBAIC00NiwxMSArNDgsMTMgQEAgc3RhdGljIGNvbnN0IGludCBkZWJ1Z1RpbGVCb3JkZXJDb2xv
clJlZCA9IDE2MDsKIHN0YXRpYyBjb25zdCBpbnQgZGVidWdUaWxlQm9yZGVyQ29sb3JHcmVlbiA9
IDEwMDsKIHN0YXRpYyBjb25zdCBpbnQgZGVidWdUaWxlQm9yZGVyQ29sb3JCbHVlID0gMDsKIAot
Q0NRdWFkQ3VsbGVyOjpDQ1F1YWRDdWxsZXIoQ0NRdWFkTGlzdCYgcXVhZExpc3QsIENDTGF5ZXJJ
bXBsKiBsYXllciwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VySW1wbCogb2NjbHVzaW9uVHJhY2tl
ciwgYm9vbCBzaG93Q3VsbGluZ1dpdGhEZWJ1Z0JvcmRlclF1YWRzKQorQ0NRdWFkQ3VsbGVyOjpD
Q1F1YWRDdWxsZXIoQ0NRdWFkTGlzdCYgcXVhZExpc3QsIENDTGF5ZXJJbXBsKiBsYXllciwgY29u
c3QgQ0NPY2NsdXNpb25UcmFja2VySW1wbCogb2NjbHVzaW9uVHJhY2tlciwgYm9vbCBzaG93Q3Vs
bGluZ1dpdGhEZWJ1Z0JvcmRlclF1YWRzLCBib29sIGZvclN1cmZhY2UpCiAgICAgOiBtX3F1YWRM
aXN0KHF1YWRMaXN0KQogICAgICwgbV9sYXllcihsYXllcikKICAgICAsIG1fb2NjbHVzaW9uVHJh
Y2tlcihvY2NsdXNpb25UcmFja2VyKQogICAgICwgbV9zaG93Q3VsbGluZ1dpdGhEZWJ1Z0JvcmRl
clF1YWRzKHNob3dDdWxsaW5nV2l0aERlYnVnQm9yZGVyUXVhZHMpCisgICAgLCBtX2ZvclN1cmZh
Y2UoZm9yU3VyZmFjZSkKKyAgICAsIG1faGFzRXh0ZXJuYWxPY2NsdXNpb24oZmFsc2UpCiB7CiB9
CiAKQEAgLTc4LDEzICs4MiwxNSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYXBwZW5kUXVhZEludGVy
bmFsKFBhc3NPd25QdHI8Q0NEcmF3UXVhZD4gcGFzc0RyYXdRdWFkLCBjb25zdAogCiBib29sIEND
UXVhZEN1bGxlcjo6YXBwZW5kKFBhc3NPd25QdHI8Q0NEcmF3UXVhZD4gcGFzc0RyYXdRdWFkKQog
ewotICAgIEludFJlY3QgY3VsbGVkUmVjdCA9IG1fb2NjbHVzaW9uVHJhY2tlci0+dW5vY2NsdWRl
ZENvbnRlbnRSZWN0KG1fbGF5ZXIsIHBhc3NEcmF3UXVhZC0+cXVhZFJlY3QoKSk7Ci0gICAgcmV0
dXJuIGFwcGVuZFF1YWRJbnRlcm5hbChwYXNzRHJhd1F1YWQsIGN1bGxlZFJlY3QsIG1fcXVhZExp
c3QsICptX29jY2x1c2lvblRyYWNrZXIsIG1fc2hvd0N1bGxpbmdXaXRoRGVidWdCb3JkZXJRdWFk
cyk7Ci19CisgICAgSW50UmVjdCBjdWxsZWRSZWN0OworICAgIGJvb2wgaGFzRXh0ZXJuYWxPY2Ns
dXNpb247CisKKyAgICBpZiAobV9mb3JTdXJmYWNlKQorICAgICAgICBjdWxsZWRSZWN0ID0gbV9v
Y2NsdXNpb25UcmFja2VyLT51bm9jY2x1ZGVkQ29udHJpYnV0aW5nU3VyZmFjZUNvbnRlbnRSZWN0
KG1fbGF5ZXIsIGZhbHNlLCBwYXNzRHJhd1F1YWQtPnF1YWRSZWN0KCksICZoYXNFeHRlcm5hbE9j
Y2x1c2lvbik7CisgICAgZWxzZQorICAgICAgICBjdWxsZWRSZWN0ID0gbV9vY2NsdXNpb25UcmFj
a2VyLT51bm9jY2x1ZGVkQ29udGVudFJlY3QobV9sYXllciwgcGFzc0RyYXdRdWFkLT5xdWFkUmVj
dCgpLCAmaGFzRXh0ZXJuYWxPY2NsdXNpb24pOworICAgIG1faGFzRXh0ZXJuYWxPY2NsdXNpb24g
fD0gaGFzRXh0ZXJuYWxPY2NsdXNpb247CiAKLWJvb2wgQ0NRdWFkQ3VsbGVyOjphcHBlbmRTdXJm
YWNlKFBhc3NPd25QdHI8Q0NEcmF3UXVhZD4gcGFzc0RyYXdRdWFkKQotewotICAgIEludFJlY3Qg
Y3VsbGVkUmVjdCA9IG1fb2NjbHVzaW9uVHJhY2tlci0+dW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1
cmZhY2VDb250ZW50UmVjdChtX2xheWVyLCBmYWxzZSwgcGFzc0RyYXdRdWFkLT5xdWFkUmVjdCgp
KTsKICAgICByZXR1cm4gYXBwZW5kUXVhZEludGVybmFsKHBhc3NEcmF3UXVhZCwgY3VsbGVkUmVj
dCwgbV9xdWFkTGlzdCwgKm1fb2NjbHVzaW9uVHJhY2tlciwgbV9zaG93Q3VsbGluZ1dpdGhEZWJ1
Z0JvcmRlclF1YWRzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuaAppbmRleCAyOTk5YjZhZDVh
Zjg0NDU1NDI3NGQ0NGUxYjk0NWY2Nzk4N2U1ZjYwLi44NGMwMDc5ZGMzYzM2OWVmZTVhZGJjZGRj
Njg3MmFhM2JjODg1YzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuaApAQCAtMjYsMjcgKzI2LDMz
IEBACiAjaWZuZGVmIENDUXVhZEN1bGxlcl9oCiAjZGVmaW5lIENDUXVhZEN1bGxlcl9oCiAKLSNp
bmNsdWRlICJjYy9DQ1JlbmRlclBhc3MuaCIKKyNpbmNsdWRlICJDQ1F1YWRTaW5rLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENDTGF5ZXJJbXBsOwotY2xhc3MgQ0NPdmVyZHJhd01l
dHJpY3M7CitjbGFzcyBDQ1JlbmRlclN1cmZhY2U7CitjbGFzcyBDQ1F1YWRMaXN0OwordGVtcGxh
dGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBTdXJmYWNlVHlwZT4KK2NsYXNzIENDT2Nj
bHVzaW9uVHJhY2tlckJhc2U7CiAKLWNsYXNzIENDUXVhZEN1bGxlciB7CitjbGFzcyBDQ1F1YWRD
dWxsZXIgOiBwdWJsaWMgQ0NRdWFkU2luayB7CiBwdWJsaWM6Ci0gICAgLy8gUGFzc2luZyAwIGZv
ciBDQ092ZXJkcmF3Q291bnRzKiBpcyB2YWxpZCwgYW5kIGRpc2FibGUgdGhlIGV4dHJhIGNvbXB1
dGF0aW9uCi0gICAgLy8gZG9uZSB0byBlc3RpbWF0ZSBvdmVyIGRyYXcgc3RhdGlzdGljcy4KLSAg
ICBDQ1F1YWRDdWxsZXIoQ0NRdWFkTGlzdCYsIENDTGF5ZXJJbXBsKiwgY29uc3QgQ0NPY2NsdXNp
b25UcmFja2VySW1wbCosIGJvb2wgc2hvd0N1bGxpbmdXaXRoRGVidWdCb3JkZXJRdWFkcyk7Cisg
ICAgQ0NRdWFkQ3VsbGVyKENDUXVhZExpc3QmLCBDQ0xheWVySW1wbCosIGNvbnN0IENDT2NjbHVz
aW9uVHJhY2tlckJhc2U8Q0NMYXllckltcGwsIENDUmVuZGVyU3VyZmFjZT4qLCBib29sIHNob3dD
dWxsaW5nV2l0aERlYnVnQm9yZGVyUXVhZHMsIGJvb2wgZm9yU3VyZmFjZSk7CisKKyAgICB2aXJ0
dWFsIH5DQ1F1YWRDdWxsZXIoKSB7IH0KIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgcXVh
ZCBpcyBhZGRlZCB0byB0aGUgbGlzdCwgYW5kIGZhbHNlIGlmIHRoZSBxdWFkIGlzIGVudGlyZWx5
IGN1bGxlZC4KLSAgICB2aXJ0dWFsIGJvb2wgYXBwZW5kKFBhc3NPd25QdHI8Q0NEcmF3UXVhZD4g
cGFzc0RyYXdRdWFkKTsKLSAgICB2aXJ0dWFsIGJvb2wgYXBwZW5kU3VyZmFjZShQYXNzT3duUHRy
PENDRHJhd1F1YWQ+IHBhc3NEcmF3UXVhZCk7CisgICAgdmlydHVhbCBib29sIGFwcGVuZChQYXNz
T3duUHRyPFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ+IHBhc3NEcmF3UXVhZCkgT1ZFUlJJREU7
CisKKyAgICBib29sIGhhc0V4dGVybmFsT2NjbHVzaW9uKCkgeyByZXR1cm4gbV9oYXNFeHRlcm5h
bE9jY2x1c2lvbjsgfQogCiBwcml2YXRlOgogICAgIENDUXVhZExpc3QmIG1fcXVhZExpc3Q7CiAg
ICAgQ0NMYXllckltcGwqIG1fbGF5ZXI7Ci0gICAgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VySW1w
bCogbV9vY2NsdXNpb25UcmFja2VyOworICAgIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8
Q0NMYXllckltcGwsIENDUmVuZGVyU3VyZmFjZT4qIG1fb2NjbHVzaW9uVHJhY2tlcjsKICAgICBi
b29sIG1fc2hvd0N1bGxpbmdXaXRoRGVidWdCb3JkZXJRdWFkczsKKyAgICBib29sIG1fZm9yU3Vy
ZmFjZTsKKyAgICBib29sIG1faGFzRXh0ZXJuYWxPY2NsdXNpb247CiB9OwogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRT
aW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1
YWRTaW5rLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZjJhOWM2MmFlMDZhNzE3NWNhYWFhNjM0OWI1NDkxNjEyN2Rh
NTg0YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUXVhZFNpbmsuaApAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBDQ1F1YWRTaW5rX2gKKyNkZWZpbmUgQ0NRdWFkU2lua19oCisKKyNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYkNvbXBvc2l0b3JRdWFk
OworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENDUXVhZFNpbmsgeworcHVibGlj
OgorICAgIHZpcnR1YWwgfkNDUXVhZFNpbmsoKSB7IH0KKworICAgIC8vIFJldHVybnMgdHJ1ZSBp
ZiB0aGUgcXVhZCBpcyBhZGRlZCB0byB0aGUgbGlzdCwgYW5kIGZhbHNlIGlmIHRoZSBxdWFkIGlz
IGVudGlyZWx5IGN1bGxlZC4KKyAgICB2aXJ0dWFsIGJvb2wgYXBwZW5kKFBhc3NPd25QdHI8V2Vi
S2l0OjpXZWJDb21wb3NpdG9yUXVhZD4gcGFzc0RyYXdRdWFkKSA9IDA7Cit9OworCit9CisjZW5k
aWYgLy8gQ0NRdWFkQ3VsbGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwCmluZGV4IDUzMjY2
NWZiZTc5OWJmNzE0YTZjMmE5ODQxMDE3YzI1MDhhOGY4NWQuLjQzN2Q2MGNjYzg1MjVmNjI4ZDc5
ODJiMWQ4MmY0MjMzOGI2ZjRiNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcApAQCAtMjks
NiArMjksNyBAQAogCiAjaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKICNpbmNsdWRlICJjYy9D
Q01hdGhVdGlsLmgiCisjaW5jbHVkZSAiY2MvQ0NPY2NsdXNpb25UcmFja2VyLmgiCiAjaW5jbHVk
ZSAiY2MvQ0NRdWFkQ3VsbGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NTaGFyZWRRdWFkU3RhdGUuaCIK
ICNpbmNsdWRlICJjYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5oIgpAQCAtNTAsMjMgKzUxLDI4IEBA
IENDUmVuZGVyUGFzczo6Q0NSZW5kZXJQYXNzKENDUmVuZGVyU3VyZmFjZSogdGFyZ2V0U3VyZmFj
ZSwgaW50IGlkKQogewogICAgIEFTU0VSVCh0YXJnZXRTdXJmYWNlKTsKICAgICBBU1NFUlQoaWQg
PiAwKTsKKworICAgIHRhcmdldFN1cmZhY2UtPnNldEhhc0V4dGVybmFsT2NjbHVzaW9uKGZhbHNl
KTsKIH0KIAogdm9pZCBDQ1JlbmRlclBhc3M6OmFwcGVuZFF1YWRzRm9yTGF5ZXIoQ0NMYXllcklt
cGwqIGxheWVyLCBDQ09jY2x1c2lvblRyYWNrZXJJbXBsKiBvY2NsdXNpb25UcmFja2VyLCBib29s
JiBoYWRNaXNzaW5nVGlsZXMpCiB7Ci0gICAgQ0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXIobV9xdWFk
TGlzdCwgbGF5ZXIsIG9jY2x1c2lvblRyYWNrZXIsIGxheWVyLT5oYXNEZWJ1Z0JvcmRlcnMoKSk7
CisgICAgQ0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXIobV9xdWFkTGlzdCwgbGF5ZXIsIG9jY2x1c2lv
blRyYWNrZXIsIGxheWVyLT5oYXNEZWJ1Z0JvcmRlcnMoKSwgZmFsc2UpOwogCiAgICAgT3duUHRy
PENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFkU3RhdGUgPSBsYXllci0+Y3JlYXRlU2hhcmVk
UXVhZFN0YXRlKCk7CiAgICAgbGF5ZXItPmFwcGVuZERlYnVnQm9yZGVyUXVhZChxdWFkQ3VsbGVy
LCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCkpOwogICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3Vs
bGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIGhhZE1pc3NpbmdUaWxlcyk7CiAgICAgbV9zaGFy
ZWRRdWFkU3RhdGVMaXN0LmFwcGVuZChzaGFyZWRRdWFkU3RhdGUucmVsZWFzZSgpKTsKKworICAg
IGlmICghbV90YXJnZXRTdXJmYWNlLT5oYXNFeHRlcm5hbE9jY2x1c2lvbigpKQorICAgICAgICBt
X3RhcmdldFN1cmZhY2UtPnNldEhhc0V4dGVybmFsT2NjbHVzaW9uKHF1YWRDdWxsZXIuaGFzRXh0
ZXJuYWxPY2NsdXNpb24oKSk7CiB9CiAKIHZvaWQgQ0NSZW5kZXJQYXNzOjphcHBlbmRRdWFkc0Zv
clJlbmRlclN1cmZhY2VMYXllcihDQ0xheWVySW1wbCogbGF5ZXIsIGNvbnN0IENDUmVuZGVyUGFz
cyogY29udHJpYnV0aW5nUmVuZGVyUGFzcywgQ0NPY2NsdXNpb25UcmFja2VySW1wbCogb2NjbHVz
aW9uVHJhY2tlcikKIHsKICAgICAvLyBGSVhNRTogcmVuZGVyIHN1cmZhY2UgbGF5ZXJzIHNob3Vs
ZCBiZSBhIENDTGF5ZXJJbXBsLWRlcml2ZWQgY2xhc3MgYW5kCiAgICAgLy8gbm90IGJlIGhhbmRs
ZWQgc3BlY2lhbGx5IGhlcmUuCi0gICAgQ0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXIobV9xdWFkTGlz
dCwgbGF5ZXIsIG9jY2x1c2lvblRyYWNrZXIsIGxheWVyLT5oYXNEZWJ1Z0JvcmRlcnMoKSk7Cisg
ICAgQ0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXIobV9xdWFkTGlzdCwgbGF5ZXIsIG9jY2x1c2lvblRy
YWNrZXIsIGxheWVyLT5oYXNEZWJ1Z0JvcmRlcnMoKSwgdHJ1ZSk7CiAKICAgICBDQ1JlbmRlclN1
cmZhY2UqIHN1cmZhY2UgPSBsYXllci0+cmVuZGVyU3VyZmFjZSgpOwogCkBAIC03NSw2ICs4MSw5
IEBAIHZvaWQgQ0NSZW5kZXJQYXNzOjphcHBlbmRRdWFkc0ZvclJlbmRlclN1cmZhY2VMYXllcihD
Q0xheWVySW1wbCogbGF5ZXIsIGNvbnN0IENDCiAgICAgc3VyZmFjZS0+YXBwZW5kUXVhZHMocXVh
ZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpLCBpc1JlcGxpY2EsIGNvbnRyaWJ1dGluZ1Jl
bmRlclBhc3MtPmlkKCkpOwogICAgIG1fc2hhcmVkUXVhZFN0YXRlTGlzdC5hcHBlbmQoc2hhcmVk
UXVhZFN0YXRlLnJlbGVhc2UoKSk7CiAKKyAgICBpZiAoIW1fdGFyZ2V0U3VyZmFjZS0+aGFzRXh0
ZXJuYWxPY2NsdXNpb24oKSkKKyAgICAgICAgbV90YXJnZXRTdXJmYWNlLT5zZXRIYXNFeHRlcm5h
bE9jY2x1c2lvbihxdWFkQ3VsbGVyLmhhc0V4dGVybmFsT2NjbHVzaW9uKCkpOworCiAgICAgaWYg
KCFsYXllci0+aGFzUmVwbGljYSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTgzLDYgKzkyLDkg
QEAgdm9pZCBDQ1JlbmRlclBhc3M6OmFwcGVuZFF1YWRzRm9yUmVuZGVyU3VyZmFjZUxheWVyKEND
TGF5ZXJJbXBsKiBsYXllciwgY29uc3QgQ0MKICAgICBpc1JlcGxpY2EgPSB0cnVlOwogICAgIHN1
cmZhY2UtPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHJlcGxpY2FTaGFyZWRRdWFkU3RhdGUuZ2V0
KCksIGlzUmVwbGljYSwgY29udHJpYnV0aW5nUmVuZGVyUGFzcy0+aWQoKSk7CiAgICAgbV9zaGFy
ZWRRdWFkU3RhdGVMaXN0LmFwcGVuZChyZXBsaWNhU2hhcmVkUXVhZFN0YXRlLnJlbGVhc2UoKSk7
CisKKyAgICBpZiAoIW1fdGFyZ2V0U3VyZmFjZS0+aGFzRXh0ZXJuYWxPY2NsdXNpb24oKSkKKyAg
ICAgICAgbV90YXJnZXRTdXJmYWNlLT5zZXRIYXNFeHRlcm5hbE9jY2x1c2lvbihxdWFkQ3VsbGVy
Lmhhc0V4dGVybmFsT2NjbHVzaW9uKCkpOwogfQogCiB2b2lkIENDUmVuZGVyUGFzczo6YXBwZW5k
UXVhZHNUb0ZpbGxTY3JlZW4oQ0NMYXllckltcGwqIHJvb3RMYXllciwgU2tDb2xvciBzY3JlZW5C
YWNrZ3JvdW5kQ29sb3IsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlckltcGwmIG9jY2x1c2lvblRy
YWNrZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5jcHAKaW5kZXggNTlh
YmZiYmNjMGEzZWJmZjBmOGFjYTA4OTM3MmE1MTVkNmFjMTk3NS4uZTk4MTk1N2JlODNhNmY1ZWRh
NzgwYmE4NmRmM2NhNGU5ZGJhYjI5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0Ry
YXdRdWFkLmNwcApAQCAtMzEsMTIgKzMxLDEyIEBAIHVzaW5nIFdlYktpdDo6V2ViQ29tcG9zaXRv
clF1YWQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc093blB0cjxDQ1JlbmRlclBhc3NE
cmF3UXVhZD4gQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6OmNyZWF0ZShjb25zdCBXZWJLaXQ6OldlYkNv
bXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYg
cXVhZFJlY3QsIGludCByZW5kZXJQYXNzSWQsIGJvb2wgaXNSZXBsaWNhLCBjb25zdCBXZWJLaXQ6
OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtLCBjb25zdCBXZWJLaXQ6Oldl
YkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0
aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMsIHVuc2lnbmVkIG1hc2tUZXh0dXJlSWQsIGNvbnN0IElu
dFJlY3QmIGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lKQorUGFzc093blB0cjxDQ1JlbmRl
clBhc3NEcmF3UXVhZD4gQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6OmNyZWF0ZShjb25zdCBXZWJLaXQ6
OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50
UmVjdCYgcXVhZFJlY3QsIGludCByZW5kZXJQYXNzSWQsIGJvb2wgaXNSZXBsaWNhLCBjb25zdCBX
ZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtLCBjb25zdCBXZWJL
aXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVy
T3BlcmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMsIHVuc2lnbmVkIG1hc2tUZXh0dXJlSWQsIGNv
bnN0IEludFJlY3QmIGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lLCBib29sIGhhc0V4dGVy
bmFsT2NjbHVzaW9uKQogewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NSZW5kZXJQYXNzRHJh
d1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgcmVuZGVyUGFzc0lkLCBpc1JlcGxpY2Es
IGRyYXdUcmFuc2Zvcm0sIGZpbHRlcnMsIGJhY2tncm91bmRGaWx0ZXJzLCBtYXNrVGV4dHVyZUlk
LCBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSkpOworICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgQ0NSZW5kZXJQYXNzRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgcmVuZGVy
UGFzc0lkLCBpc1JlcGxpY2EsIGRyYXdUcmFuc2Zvcm0sIGZpbHRlcnMsIGJhY2tncm91bmRGaWx0
ZXJzLCBtYXNrVGV4dHVyZUlkLCBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSwgaGFzRXh0
ZXJuYWxPY2NsdXNpb24pKTsKIH0KIAotQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6OkNDUmVuZGVyUGFz
c0RyYXdRdWFkKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSogc2hh
cmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgaW50IHJlbmRlclBhc3NJZCwg
Ym9vbCBpc1JlcGxpY2EsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRy
YXdUcmFuc2Zvcm0sIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycywg
Y29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycywgdW5z
aWduZWQgbWFza1RleHR1cmVJZCwgY29uc3QgSW50UmVjdCYgY29udGVudHNDaGFuZ2VkU2luY2VM
YXN0RnJhbWUpCitDQ1JlbmRlclBhc3NEcmF3UXVhZDo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQoY29u
c3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUs
IGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBpbnQgcmVuZGVyUGFzc0lkLCBib29sIGlzUmVwbGlj
YSwgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9ybSwg
Y29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzLCBjb25zdCBXZWJLaXQ6
OldlYkZpbHRlck9wZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0ZXJzLCB1bnNpZ25lZCBtYXNrVGV4
dHVyZUlkLCBjb25zdCBJbnRSZWN0JiBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSwgYm9v
bCBoYXNFeHRlcm5hbE9jY2x1c2lvbikKICAgICA6IFdlYkNvbXBvc2l0b3JRdWFkKHNoYXJlZFF1
YWRTdGF0ZSwgV2ViQ29tcG9zaXRvclF1YWQ6OlJlbmRlclBhc3MsIHF1YWRSZWN0KQogICAgICwg
bV9yZW5kZXJQYXNzSWQocmVuZGVyUGFzc0lkKQogICAgICwgbV9pc1JlcGxpY2EoaXNSZXBsaWNh
KQpAQCAtNDUsNiArNDUsNyBAQCBDQ1JlbmRlclBhc3NEcmF3UXVhZDo6Q0NSZW5kZXJQYXNzRHJh
d1F1YWQoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZAogICAgICwgbV9iYWNr
Z3JvdW5kRmlsdGVycyhiYWNrZ3JvdW5kRmlsdGVycykKICAgICAsIG1fbWFza1RleHR1cmVJZCht
YXNrVGV4dHVyZUlkKQogICAgICwgbV9jb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZShjb250
ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSkKKyAgICAsIG1faGFzRXh0ZXJuYWxPY2NsdXNpb24o
aGFzRXh0ZXJuYWxPY2NsdXNpb24pCiB7CiAgICAgQVNTRVJUKG1fcmVuZGVyUGFzc0lkID4gMCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuaAppbmRleCBhMTJmMjA0Y2E1
ZjYyODYyMTM0NzFkYjA0NTQ3MjdmZDgyYTRjMzlhLi4yNTkyNjA1NWE4OGRhYTMzYzM1ZjVhOWJk
NDAzNDE5M2I0ZDAzZTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmgK
QEAgLTM4LDEyICszOCwxMyBAQCBjbGFzcyBDQ1JlbmRlclBhc3M7CiBjbGFzcyBDQ1JlbmRlclBh
c3NEcmF3UXVhZCA6IHB1YmxpYyBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkIHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShDQ1JlbmRlclBhc3NEcmF3UXVhZCk7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NPd25QdHI8Q0NSZW5kZXJQYXNzRHJhd1F1YWQ+IGNyZWF0ZShjb25zdCBXZWJLaXQ6
OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgaW50IHJlbmRl
clBhc3NJZCwgYm9vbCBpc1JlcGxpY2EsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25N
YXRyaXgmLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMsIGNvbnN0
IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMsIHVuc2lnbmVk
IG1hc2tUZXh0dXJlSWQsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZy
YW1lKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxDQ1JlbmRlclBhc3NEcmF3UXVhZD4gY3JlYXRl
KGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJl
Y3QmLCBpbnQgcmVuZGVyUGFzc0lkLCBib29sIGlzUmVwbGljYSwgY29uc3QgV2ViS2l0OjpXZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYg
ZmlsdGVycywgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmls
dGVycywgdW5zaWduZWQgbWFza1RleHR1cmVJZCwgY29uc3QgSW50UmVjdCYgY29udGVudHNDaGFu
Z2VkU2luY2VMYXN0RnJhbWUsIGJvb2wgaGFzRXh0ZXJuYWxPY2NsdXNpb24pOwogCiAgICAgaW50
IHJlbmRlclBhc3NJZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyUGFzc0lkOyB9CiAgICAgYm9v
bCBpc1JlcGxpY2EoKSBjb25zdCB7IHJldHVybiBtX2lzUmVwbGljYTsgfQogICAgIHVuc2lnbmVk
IG1hc2tUZXh0dXJlSWQoKSBjb25zdCB7IHJldHVybiBtX21hc2tUZXh0dXJlSWQ7IH0KICAgICBj
b25zdCBJbnRSZWN0JiBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWU7IH0KKyAgICBib29sIGhhc0V4dGVy
bmFsT2NjbHVzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9oYXNFeHRlcm5hbE9jY2x1c2lvbjsgfQog
CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIHJlbW92ZWQgYW5kIHdlIHNob3VsZCBkcmF3
IHRoZSBSZW5kZXJQYXNzIHdpdGggdGhlIHF1YWRUcmFuc2Zvcm0uCiAgICAgY29uc3QgV2ViS2l0
OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJu
IG1fZHJhd1RyYW5zZm9ybTsgfQpAQCAtNTMsNyArNTQsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0
aWMgY29uc3QgQ0NSZW5kZXJQYXNzRHJhd1F1YWQqIG1hdGVyaWFsQ2FzdChjb25zdCBXZWJLaXQ6
OldlYkNvbXBvc2l0b3JRdWFkKik7CiBwcml2YXRlOgotICAgIENDUmVuZGVyUGFzc0RyYXdRdWFk
KGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJl
Y3QmLCBpbnQgcmVuZGVyUGFzc0lkLCBib29sIGlzUmVwbGljYSwgY29uc3QgV2ViS2l0OjpXZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYg
ZmlsdGVycywgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmls
dGVycywgdW5zaWduZWQgbWFza1RleHR1cmVJZCwgY29uc3QgSW50UmVjdCYgY29udGVudHNDaGFu
Z2VkU2luY2VMYXN0RnJhbWUpOworICAgIENDUmVuZGVyUGFzc0RyYXdRdWFkKGNvbnN0IFdlYktp
dDo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBpbnQgcmVu
ZGVyUGFzc0lkLCBib29sIGlzUmVwbGljYSwgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycywgY29u
c3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycywgdW5zaWdu
ZWQgbWFza1RleHR1cmVJZCwgY29uc3QgSW50UmVjdCYgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0
RnJhbWUsIGJvb2wgaGFzRXh0ZXJuYWxPY2NsdXNpb24pOwogCiAgICAgaW50IG1fcmVuZGVyUGFz
c0lkOwogICAgIGJvb2wgbV9pc1JlcGxpY2E7CkBAIC02Miw2ICs2Myw3IEBAIHByaXZhdGU6CiAg
ICAgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zIG1fYmFja2dyb3VuZEZpbHRlcnM7CiAgICAg
dW5zaWduZWQgbV9tYXNrVGV4dHVyZUlkOwogICAgIEludFJlY3QgbV9jb250ZW50c0NoYW5nZWRT
aW5jZUxhc3RGcmFtZTsKKyAgICBib29sIG1faGFzRXh0ZXJuYWxPY2NsdXNpb247CiB9OwogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1JlbmRlclN1cmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcAppbmRleCBlNzI2MDk2NmEwNzA4YTAyZTE5
ZTA4YzhlZWMyYTMwY2I5MzcxMTczLi45ODAyNWJmYzFiMDllZjg2ZDE0YzQ3MzRjOGMwNmIxNGYw
ODRhNTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAKQEAgLTM2LDcgKzM2LDcg
QEAKICNpbmNsdWRlICJjYy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9D
Q0xheWVySW1wbC5oIgogI2luY2x1ZGUgImNjL0NDTWF0aFV0aWwuaCIKLSNpbmNsdWRlICJjYy9D
Q1F1YWRDdWxsZXIuaCIKKyNpbmNsdWRlICJjYy9DQ1F1YWRTaW5rLmgiCiAjaW5jbHVkZSAiY2Mv
Q0NSZW5kZXJQYXNzRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ1NoYXJlZFF1YWRTdGF0ZS5o
IgogI2luY2x1ZGUgPHB1YmxpYy9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oPgpAQCAtNjUsNiAr
NjUsNyBAQCBDQ1JlbmRlclN1cmZhY2U6OkNDUmVuZGVyU3VyZmFjZShDQ0xheWVySW1wbCogb3du
aW5nTGF5ZXIpCiAgICAgLCBtX25lYXJlc3RBbmNlc3RvclRoYXRNb3Zlc1BpeGVscygwKQogICAg
ICwgbV90YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXJJbmRleEhpc3RvcnkoMCkKICAgICAsIG1fY3Vy
cmVudExheWVySW5kZXhIaXN0b3J5KDApCisgICAgLCBtX2hhc0V4dGVybmFsT2NjbHVzaW9uKGZh
bHNlKQogewogICAgIG1fZGFtYWdlVHJhY2tlciA9IENDRGFtYWdlVHJhY2tlcjo6Y3JlYXRlKCk7
CiB9CkBAIC0xODEsNyArMTgyLDcgQEAgRmxvYXRSZWN0IENDUmVuZGVyU3VyZmFjZTo6Y29tcHV0
ZVJvb3RTY2lzc29yUmVjdEluQ3VycmVudFN1cmZhY2UoY29uc3QgRmxvYXRSZWMKICAgICByZXR1
cm4gQ0NNYXRoVXRpbDo6cHJvamVjdENsaXBwZWRSZWN0KGludmVyc2VTY3JlZW5TcGFjZVRyYW5z
Zm9ybSwgcm9vdFNjaXNzb3JSZWN0KTsKIH0KIAotdm9pZCBDQ1JlbmRlclN1cmZhY2U6OmFwcGVu
ZFF1YWRzKENDUXVhZEN1bGxlciYgcXVhZExpc3QsIENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRR
dWFkU3RhdGUsIGJvb2wgZm9yUmVwbGljYSwgaW50IHJlbmRlclBhc3NJZCkKK3ZvaWQgQ0NSZW5k
ZXJTdXJmYWNlOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkTGlzdCwgQ0NTaGFyZWRRdWFk
U3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCBmb3JSZXBsaWNhLCBpbnQgcmVuZGVyUGFzc0lk
KQogewogICAgIEFTU0VSVCghZm9yUmVwbGljYSB8fCBtX293bmluZ0xheWVyLT5oYXNSZXBsaWNh
KCkpOwogCkBAIC0xOTAsNyArMTkxLDcgQEAgdm9pZCBDQ1JlbmRlclN1cmZhY2U6OmFwcGVuZFF1
YWRzKENDUXVhZEN1bGxlciYgcXVhZExpc3QsIENDU2hhcmVkUXVhZFN0YXRlKiBzaGEKICAgICAg
ICAgaW50IGdyZWVuID0gZm9yUmVwbGljYSA/ICBkZWJ1Z1JlcGxpY2FCb3JkZXJDb2xvckdyZWVu
IDogZGVidWdTdXJmYWNlQm9yZGVyQ29sb3JHcmVlbjsKICAgICAgICAgaW50IGJsdWUgPSBmb3JS
ZXBsaWNhID8gZGVidWdSZXBsaWNhQm9yZGVyQ29sb3JCbHVlIDogZGVidWdTdXJmYWNlQm9yZGVy
Q29sb3JCbHVlOwogICAgICAgICBTa0NvbG9yIGNvbG9yID0gU2tDb2xvclNldEFSR0IoZGVidWdT
dXJmYWNlQm9yZGVyQWxwaGEsIHJlZCwgZ3JlZW4sIGJsdWUpOwotICAgICAgICBxdWFkTGlzdC5h
cHBlbmRTdXJmYWNlKENDRGVidWdCb3JkZXJEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0
ZSwgY29udGVudFJlY3QoKSwgY29sb3IsIGRlYnVnU3VyZmFjZUJvcmRlcldpZHRoKSk7CisgICAg
ICAgIHF1YWRMaXN0LmFwcGVuZChDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRR
dWFkU3RhdGUsIGNvbnRlbnRSZWN0KCksIGNvbG9yLCBkZWJ1Z1N1cmZhY2VCb3JkZXJXaWR0aCkp
OwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBCeSB1c2luZyB0aGUgc2FtZSBSZW5kZXJTdXJmYWNl
IGZvciBib3RoIHRoZSBjb250ZW50IGFuZCBpdHMgcmVmbGVjdGlvbiwKQEAgLTIxNiw3ICsyMTcs
NyBAQCB2b2lkIENDUmVuZGVyU3VyZmFjZTo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFk
TGlzdCwgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYQogICAgIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVy
T3BlcmF0aW9ucyYgZmlsdGVycyA9IG1fb3duaW5nTGF5ZXItPmZpbHRlcnMoKTsKICAgICBjb25z
dCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0ZXJzID0gbV9vd25p
bmdMYXllci0+YmFja2dyb3VuZEZpbHRlcnMoKTsKIAotICAgIHF1YWRMaXN0LmFwcGVuZFN1cmZh
Y2UoQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIGNvbnRlbnRS
ZWN0KCksIHJlbmRlclBhc3NJZCwgZm9yUmVwbGljYSwgZHJhd1RyYW5zZm9ybSwgZmlsdGVycywg
YmFja2dyb3VuZEZpbHRlcnMsIG1hc2tUZXh0dXJlSWQsIGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFz
dEZyYW1lKSk7CisgICAgcXVhZExpc3QuYXBwZW5kKENDUmVuZGVyUGFzc0RyYXdRdWFkOjpjcmVh
dGUoc2hhcmVkUXVhZFN0YXRlLCBjb250ZW50UmVjdCgpLCByZW5kZXJQYXNzSWQsIGZvclJlcGxp
Y2EsIGRyYXdUcmFuc2Zvcm0sIGZpbHRlcnMsIGJhY2tncm91bmRGaWx0ZXJzLCBtYXNrVGV4dHVy
ZUlkLCBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSwgbV9oYXNFeHRlcm5hbE9jY2x1c2lv
bikpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oCmluZGV4IDlmN2Q4NzZlZWNl
ZjlkOWJmNjAxYTc5Y2IwNmFjYmE0MDdlZjM2MWYuLmM0YmJkNGI4NzNhMGU2ZGU2NTgwZTJkZGQw
ZWI5NDU1YTNiYmE1MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oCkBAIC0zOSw3ICsz
OSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDRGFtYWdlVHJhY2tlcjsKLWNs
YXNzIENDUXVhZEN1bGxlcjsKK2NsYXNzIENDUXVhZFNpbms7CiBjbGFzcyBDQ1JlbmRlclBhc3M7
CiBjbGFzcyBDQ0xheWVySW1wbDsKIGNsYXNzIExheWVyUmVuZGVyZXJDaHJvbWl1bTsKQEAgLTkx
LDYgKzkxLDkgQEAgcHVibGljOgogICAgIGJvb2wgc2NyZWVuU3BhY2VUcmFuc2Zvcm1zQXJlQW5p
bWF0aW5nKCkgY29uc3QgeyByZXR1cm4gbV9zY3JlZW5TcGFjZVRyYW5zZm9ybXNBcmVBbmltYXRp
bmc7IH0KICAgICB2b2lkIHNldFNjcmVlblNwYWNlVHJhbnNmb3Jtc0FyZUFuaW1hdGluZyhib29s
IGFuaW1hdGluZykgeyBtX3NjcmVlblNwYWNlVHJhbnNmb3Jtc0FyZUFuaW1hdGluZyA9IGFuaW1h
dGluZzsgfQogCisgICAgdm9pZCBzZXRIYXNFeHRlcm5hbE9jY2x1c2lvbihib29sIGhhc0V4dGVy
bmFsT2NjbHVzaW9uKSB7IG1faGFzRXh0ZXJuYWxPY2NsdXNpb24gPSBoYXNFeHRlcm5hbE9jY2x1
c2lvbjsgfQorICAgIGJvb2wgaGFzRXh0ZXJuYWxPY2NsdXNpb24oKSBjb25zdCB7IHJldHVybiBt
X2hhc0V4dGVybmFsT2NjbHVzaW9uOyB9CisKICAgICAvLyBVc2FnZTogdGhpcyBjbGlwUmVjdCBz
aG91bGQgbm90IGJlIHVzZWQgaWYgb25lIG9mIHRoZSB0d28gY29uZGl0aW9ucyBpcyB0cnVlOiAo
YSkgY2xpcFJlY3QoKSBpcyBlbXB0eSwgb3IgKGIpIG93bmluZ0xheWVyLT5wYXJlbnQoKS0+dXNl
c0xheWVyQ2xpcHBpbmcoKSBpcyBmYWxzZS4KICAgICB2b2lkIHNldENsaXBSZWN0KGNvbnN0IElu
dFJlY3QmKTsKICAgICBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2xpcFJlY3Q7IH0KQEAgLTExNyw3ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAgUGFzc093blB0cjxD
Q1NoYXJlZFF1YWRTdGF0ZT4gY3JlYXRlU2hhcmVkUXVhZFN0YXRlKCkgY29uc3Q7CiAgICAgUGFz
c093blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gY3JlYXRlUmVwbGljYVNoYXJlZFF1YWRTdGF0ZSgp
IGNvbnN0OwogCi0gICAgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImLCBDQ1NoYXJlZFF1
YWRTdGF0ZSosIGJvb2wgZm9yUmVwbGljYSwgaW50IHJlbmRlclBhc3NJZCk7CisgICAgdm9pZCBh
cHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiwgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sIGZvclJlcGxp
Y2EsIGludCByZW5kZXJQYXNzSWQpOwogCiAgICAgRmxvYXRSZWN0IGNvbXB1dGVSb290U2Npc3Nv
clJlY3RJbkN1cnJlbnRTdXJmYWNlKGNvbnN0IEZsb2F0UmVjdCYgcm9vdFNjaXNzb3JSZWN0KSBj
b25zdDsKIApAQCAtMTU3LDYgKzE2MCw5IEBAIHByaXZhdGU6CiAgICAgLy8gRm9yIENDTGF5ZXJJ
dGVyYXRvckFjdGlvbnMKICAgICBpbnQgbV90YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXJJbmRleEhp
c3Rvcnk7CiAgICAgaW50IG1fY3VycmVudExheWVySW5kZXhIaXN0b3J5OworCisgICAgYm9vbCBt
X2hhc0V4dGVybmFsT2NjbHVzaW9uOworCiAgICAgZnJpZW5kIHN0cnVjdCBDQ0xheWVySXRlcmF0
b3JBY3Rpb25zOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3Bw
CmluZGV4IGYzOGZiZGEwMWY2NmUzODA2MWQxMDZmYmMwYmMxYzA0MzYyODAzMTkuLjFlZDFkODky
YzhmYWQ0Y2Q4N2EwNjJmZmIyNzFjNzE5NjBiZDNhZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Nj
cm9sbGJhckxheWVySW1wbC5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIAogI2luY2x1ZGUgIlNjcm9s
bGJhclRoZW1lLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaCIKLSNpbmNs
dWRlICJjYy9DQ1F1YWRDdWxsZXIuaCIKKyNpbmNsdWRlICJjYy9DQ1F1YWRTaW5rLmgiCiAjaW5j
bHVkZSAiY2MvQ0NUZXh0dXJlRHJhd1F1YWQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
NjIsNyArNjIsNyBAQCBGbG9hdFJlY3QgdG9VVlJlY3QoY29uc3QgSW50UmVjdCYgciwgY29uc3Qg
SW50UmVjdCYgYm91bmRzKQogCiB9CiAKLXZvaWQgQ0NTY3JvbGxiYXJMYXllckltcGw6OmFwcGVu
ZFF1YWRzKENDUXVhZEN1bGxlciYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBz
aGFyZWRRdWFkU3RhdGUsIGJvb2wmKQordm9pZCBDQ1Njcm9sbGJhckxheWVySW1wbDo6YXBwZW5k
UXVhZHMoQ0NRdWFkU2luayYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFy
ZWRRdWFkU3RhdGUsIGJvb2wmKQogewogICAgIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlKiB0aGVt
ZSA9IHN0YXRpY19jYXN0PFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlKj4oU2Nyb2xsYmFyVGhlbWU6
OnRoZW1lKCkpOwogICAgIGlmICghdGhlbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXll
ckltcGwuaAppbmRleCBlY2UyYjk1NzE0MTRiZjQyNTZmZGI0ZWU0ZmQ1ZWExYzdjMDQ2ZjMxLi4w
Nzc5OTIxNzdlMGUyNjczYjkwYTE0NmIxMTBmMTQ5YmE2MWRjNDViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVy
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIEND
TGF5ZXJJbXBsKiBzY3JvbGxMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsTGF5ZXI7IH0K
ICAgICB2b2lkIHNldFNjcm9sbExheWVyKENDTGF5ZXJJbXBsKiBzY3JvbGxMYXllcikgeyBtX3Nj
cm9sbExheWVyID0gc2Nyb2xsTGF5ZXI7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFk
cyhDQ1F1YWRDdWxsZXImLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wmIGhhZE1pc3Np
bmdUaWxlcykgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZFNp
bmsmLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykgT1ZF
UlJJREU7CiAKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBDQ1Njcm9sbGJhckxheWVySW1wbChp
bnQgaWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxheWVySW1wbC5jcHAKaW5kZXgg
NGQ1MmMxNWRkNDJmMjNkYWFmZjZjNTQzOGJlNGY3OWVmNzg2NDZhMy4uZjUyYzc5N2MwMmY3NDg4
ZmI4ZDQwN2Y1MWYwZWRjOWY0NWE5OTI3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29s
b3JMYXllckltcGwuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAKICNpbmNsdWRlICJjYy9DQ1NvbGlk
Q29sb3JMYXllckltcGwuaCIKIAotI2luY2x1ZGUgImNjL0NDUXVhZEN1bGxlci5oIgorI2luY2x1
ZGUgImNjL0NDUXVhZFNpbmsuaCIKICNpbmNsdWRlICJjYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5o
IgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CkBAIC00OSw3ICs0OSw3IEBAIENDU29saWRDb2xvckxheWVySW1wbDo6fkNDU29saWRD
b2xvckxheWVySW1wbCgpCiB7CiB9CiAKLXZvaWQgQ0NTb2xpZENvbG9yTGF5ZXJJbXBsOjphcHBl
bmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSog
c2hhcmVkUXVhZFN0YXRlLCBib29sJikKK3ZvaWQgQ0NTb2xpZENvbG9yTGF5ZXJJbXBsOjphcHBl
bmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNo
YXJlZFF1YWRTdGF0ZSwgYm9vbCYpCiB7CiAgICAgLy8gV2UgY3JlYXRlIGEgc2VyaWVzIG9mIHNt
YWxsZXIgcXVhZHMgaW5zdGVhZCBvZiBqdXN0IG9uZSBsYXJnZSBvbmUgc28gdGhhdCB0aGUKICAg
ICAvLyBjdWxsZXIgY2FuIHJlZHVjZSB0aGUgdG90YWwgcGl4ZWxzIGRyYXduLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENv
bG9yTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NvbGlkQ29sb3JMYXllckltcGwuaAppbmRleCBlMzAwNTg0NWU2ZGU2YjIwZGFjNWZl
ZTY0OWE1MTU3MWY2YTEwYzM2Li43MTUzZjIxYWI4MmE3ODRhYzg1MGU4ZDYzYjg1YzIxMTZiNjg1
ZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NvbGlkQ29sb3JMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JMYXllckltcGwuaApAQCAtNDEsNyAr
NDEsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgfkNDU29saWRDb2xvckxheWVySW1w
bCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYsIGNvbnN0
IENDU2hhcmVkUXVhZFN0YXRlKiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYsIGNvbnN0IENDU2hhcmVkUXVh
ZFN0YXRlKiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVSUklERTsKIAogcHJvdGVjdGVkOgog
ICAgIGV4cGxpY2l0IENDU29saWRDb2xvckxheWVySW1wbChpbnQgaWQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5
ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGV4dHVyZUxheWVySW1wbC5jcHAKaW5kZXggNmRmMmZiNmJkNjRjNmQzNjllMDg5YzcxMTE2
MWNmOGIxYWFlNzkwZC4uNGM1ZmI5YWM4MzMyNTM2YTljYWE0NTA3YzM5MWVmYzc4NmY1NTliNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUZXh0dXJlTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwuY3BwCkBAIC0zMCw3ICszMCw3IEBA
CiAjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmgiCiAKICNpbmNsdWRlICJUZXh0U3Ry
ZWFtLmgiCi0jaW5jbHVkZSAiY2MvQ0NRdWFkQ3VsbGVyLmgiCisjaW5jbHVkZSAiY2MvQ0NRdWFk
U2luay5oIgogI2luY2x1ZGUgImNjL0NDVGV4dHVyZURyYXdRdWFkLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTQ4LDcgKzQ4LDcgQEAgQ0NUZXh0dXJlTGF5ZXJJbXBsOjp+Q0NUZXh0dXJl
TGF5ZXJJbXBsKCkKIHsKIH0KIAotdm9pZCBDQ1RleHR1cmVMYXllckltcGw6OmFwcGVuZFF1YWRz
KENDUXVhZEN1bGxlciYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRR
dWFkU3RhdGUsIGJvb2wmKQordm9pZCBDQ1RleHR1cmVMYXllckltcGw6OmFwcGVuZFF1YWRzKEND
UXVhZFNpbmsmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0
YXRlLCBib29sJikKIHsKICAgICBJbnRSZWN0IHF1YWRSZWN0KEludFBvaW50KCksIGNvbnRlbnRC
b3VuZHMoKSk7CiAgICAgcXVhZExpc3QuYXBwZW5kKENDVGV4dHVyZURyYXdRdWFkOjpjcmVhdGUo
c2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgbV90ZXh0dXJlSWQsIG1fcHJlbXVsdGlwbGllZEFs
cGhhLCBtX3V2UmVjdCwgbV9mbGlwcGVkKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1w
bC5oCmluZGV4IDRhYmRiNTFmZjkyOTkzOTMxODA5OWNmZGM4YTBkZDUxZmZlNmZjYmIuLmViOWU2
NjZhN2ZhMGY4MzlhMjI1MTY0ZDA5YWMzNWM4YWM2MzhhMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4
dHVyZUxheWVySW1wbC5oCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmly
dHVhbCB+Q0NUZXh0dXJlTGF5ZXJJbXBsKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVh
ZHMoQ0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiBoYWRNaXNz
aW5nVGlsZXMpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRT
aW5rJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpIE9W
RVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIGRpZExvc2VDb250ZXh0KCkgT1ZFUlJJREU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGlsZWRMYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAKaW5kZXggZGE5YTEwYTk5ZDhjN2JmMjJk
ODdjODQ3Yjk1N2YyMzUwZjVkM2U0ZS4uNWVlMmQ1NmRhZTFmNjczM2JiMjMxNWQ3NzQyYjE4MjEx
MTY0Mjc2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAKQEAgLTM1LDcgKzM1
LDcgQEAKICNpbmNsdWRlICJjYy9DQ0NoZWNrZXJib2FyZERyYXdRdWFkLmgiCiAjaW5jbHVkZSAi
Y2MvQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRpbGluZ0Rh
dGEuaCIKLSNpbmNsdWRlICJjYy9DQ1F1YWRDdWxsZXIuaCIKKyNpbmNsdWRlICJjYy9DQ1F1YWRT
aW5rLmgiCiAjaW5jbHVkZSAiY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuaCIKICNpbmNsdWRlICJj
Yy9DQ1RpbGVEcmF3UXVhZC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAt
MTIzLDcgKzEyMyw3IEBAIERyYXdhYmxlVGlsZSogQ0NUaWxlZExheWVySW1wbDo6Y3JlYXRlVGls
ZShpbnQgaSwgaW50IGopCiAgICAgcmV0dXJuIGFkZGVkVGlsZTsKIH0KIAotdm9pZCBDQ1RpbGVk
TGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1No
YXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpCit2
b2lkIENDVGlsZWRMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRMaXN0LCBj
b25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJiBoYWRNaXNzaW5n
VGlsZXMpCiB7CiAgICAgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QgPSB2aXNpYmxlQ29udGVu
dFJlY3QoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oCmluZGV4IDQwNTJmZTk3Y2Vj
MjMzNThkY2Y4OTcyYzQ1ZWUzYjZkNDFhNzM3NzEuLjU4NmMwNTQxYWY2ZmJhNWQ4NGFhNTgwZmM2
YTEyNGE3NzkwYzRkZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmgKQEAgLTQyLDcg
KzQyLDcgQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5DQ1RpbGVkTGF5ZXJJbXBsKCk7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NT
aGFyZWRRdWFkU3RhdGUqLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3Rh
dGUqLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB1bnNp
Z25lZCBjb250ZW50c1RleHR1cmVJZCgpIGNvbnN0IE9WRVJSSURFOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VmlkZW9MYXllckltcGwuY3BwCmluZGV4IGI1MjQ1OTZmMGRlYTYwNzdhNGM3NGE1NjFlNWU5OTQy
ZTFkZTE4NzMuLjkyOTFhNjBiYWFjMmI3NTNhNzE5ZTBlNWVmMjMzMGVjYjhmMTVlZjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlk
ZW9MYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwCkBAIC0zOSw3ICszOSw3IEBACiAjaW5jbHVk
ZSAiY2MvQ0NHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NQcm94eS5oIgotI2luY2x1ZGUgImNjL0NDUXVhZEN1bGxl
ci5oIgorI2luY2x1ZGUgImNjL0NDUXVhZFNpbmsuaCIKICNpbmNsdWRlICJjYy9DQ1N0cmVhbVZp
ZGVvRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ1RleHR1cmVEcmF3UXVhZC5oIgogI2luY2x1
ZGUgImNjL0NDWVVWVmlkZW9EcmF3UXVhZC5oIgpAQCAtMTczLDcgKzE3Myw3IEBAIHZvaWQgQ0NW
aWRlb0xheWVySW1wbDo6d2lsbERyYXdJbnRlcm5hbChDQ1JlbmRlcmVyKiBsYXllclJlbmRlcmVy
LCBDQ0dyYXBoaWNzQ29uCiAgICAgfQogfQogCi12b2lkIENDVmlkZW9MYXllckltcGw6OmFwcGVu
ZFF1YWRzKENDUXVhZEN1bGxlciYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBz
aGFyZWRRdWFkU3RhdGUsIGJvb2wmKQordm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjphcHBlbmRRdWFk
cyhDQ1F1YWRTaW5rJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1
YWRTdGF0ZSwgYm9vbCYpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NWaWRlb0xheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oCmluZGV4IGNkNWRiMDliY2QwNTZkOTAzYjVm
NWM3YmQzMjM4MDNkODNmNTdjMjIuLmViYjFkYzI2NzNjNzkyY2NhNTg3ZTg3NDhlNGVkYmViN2Ix
ZTM1YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVmlkZW9MYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmgKQEAgLTUxLDcgKzUxLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgfkNDVmlkZW9MYXllckltcGwoKTsKIAogICAgIHZpcnR1YWwg
dm9pZCB3aWxsRHJhdyhDQ1JlbmRlcmVyKiwgQ0NHcmFwaGljc0NvbnRleHQqKSBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFy
ZWRRdWFkU3RhdGUqLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUq
LCBib29sJiBoYWRNaXNzaW5nVGlsZXMpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaWRE
cmF3KCkgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgZHVtcExheWVyUHJvcGVydGllcyhU
ZXh0U3RyZWFtJiwgaW50IGluZGVudCkgY29uc3QgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCmlu
ZGV4IGU5YjlmMDI4MTNjY2IzY2YzYTllNTE4YzIyYmJkYTQ3NmNiYzNmNjAuLjE1Zjk0MTFiYjlj
Zjc1Y2ExNmYxY2FlNWY2OTc4YzE1YTYyZDVhYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpbmNsdWRlICJDQ0FuaW1hdGlvblRlc3RDb21tb24uaCIKICNpbmNsdWRl
ICJDQ0xheWVyVGVzdENvbW1vbi5oIgorI2luY2x1ZGUgIkNDTGF5ZXJUcmVlVGVzdENvbW1vbi5o
IgogI2luY2x1ZGUgIkNDVGVzdENvbW1vbi5oIgogI2luY2x1ZGUgIkZha2VXZWJHcmFwaGljc0Nv
bnRleHQzRC5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgpAQCAtMTE3MCw3
ICsxMTcxLDcgQEAgY2xhc3MgQmxlbmRTdGF0ZUNoZWNrTGF5ZXIgOiBwdWJsaWMgQ0NMYXllcklt
cGwgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEJsZW5kU3RhdGVDaGVja0xheWVy
PiBjcmVhdGUoaW50IGlkKSB7IHJldHVybiBhZG9wdFB0cihuZXcgQmxlbmRTdGF0ZUNoZWNrTGF5
ZXIoaWQpKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYg
cXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGJvb2wm
KSBPVkVSUklERQorICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFk
TGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCYpIE9W
RVJSSURFCiAgICAgewogICAgICAgICBtX3F1YWRzQXBwZW5kZWQgPSB0cnVlOwogCkBAIC0xNjk1
LDEwICsxNjk2LDEwIEBAIGNsYXNzIEZha2VMYXllcldpdGhRdWFkcyA6IHB1YmxpYyBDQ0xheWVy
SW1wbCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8RmFrZUxheWVyV2l0aFF1YWRz
PiBjcmVhdGUoaW50IGlkKSB7IHJldHVybiBhZG9wdFB0cihuZXcgRmFrZUxheWVyV2l0aFF1YWRz
KGlkKSk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1
YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJikg
T1ZFUlJJREUKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVhZExp
c3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGJvb2wmKSBPVkVS
UklERQogICAgIHsKICAgICAgICAgU2tDb2xvciBncmF5ID0gU2tDb2xvclNldFJHQigxMDAsIDEw
MCwgMTAwKTsKLSAgICAgICAgSW50UmVjdCBxdWFkUmVjdCgwLCAwLCA1LCA1KTsKKyAgICAgICAg
SW50UmVjdCBxdWFkUmVjdChJbnRQb2ludCgwLCAwKSwgY29udGVudEJvdW5kcygpKTsKICAgICAg
ICAgT3duUHRyPENDRHJhd1F1YWQ+IG15UXVhZCA9IENDU29saWRDb2xvckRyYXdRdWFkOjpjcmVh
dGUoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgZ3JheSk7CiAgICAgICAgIHF1YWRMaXN0LmFw
cGVuZChteVF1YWQucmVsZWFzZSgpKTsKICAgICB9CkBAIC0yNDY5LDYgKzI0NzAsMjEgQEAgVEVT
VF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBoYXNUcmFuc3BhcmVudEJhY2tncm91bmQpCiAg
ICAgTW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1vY2tDb250ZXh0KTsKIH0KIAor
c3RhdGljIHZvaWQgYWRkRHJhd2luZ0xheWVyVG8oQ0NMYXllckltcGwqIHBhcmVudCwgaW50IGlk
LCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QsIENDTGF5ZXJJbXBsKiogcmVzdWx0KQoreworICAg
IE93blB0cjxDQ0xheWVySW1wbD4gbGF5ZXIgPSBGYWtlTGF5ZXJXaXRoUXVhZHM6OmNyZWF0ZShp
ZCk7CisgICAgQ0NMYXllckltcGwqIGxheWVyUHRyID0gbGF5ZXIuZ2V0KCk7CisgICAgbGF5ZXJQ
dHItPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQoMCwgMCkpOworICAgIGxheWVyUHRyLT5zZXRQ
b3NpdGlvbihGbG9hdFBvaW50KGxheWVyUmVjdC5sb2NhdGlvbigpKSk7CisgICAgbGF5ZXJQdHIt
PnNldEJvdW5kcyhsYXllclJlY3Quc2l6ZSgpKTsKKyAgICBsYXllclB0ci0+c2V0Q29udGVudEJv
dW5kcyhsYXllclJlY3Quc2l6ZSgpKTsKKyAgICBsYXllclB0ci0+c2V0RHJhd3NDb250ZW50KHRy
dWUpOyAvLyBvbmx5IGNoaWxkcmVuIGRyYXcgY29udGVudAorICAgIGxheWVyUHRyLT5zZXRPcGFx
dWUodHJ1ZSk7CisgICAgcGFyZW50LT5hZGRDaGlsZChsYXllci5yZWxlYXNlKCkpOworICAgIGlm
IChyZXN1bHQpCisgICAgICAgICpyZXN1bHQgPSBsYXllclB0cjsKK30KKwogc3RhdGljIHZvaWQg
c2V0dXBMYXllcnNGb3JUZXh0dXJlQ2FjaGluZyhDQ0xheWVyVHJlZUhvc3RJbXBsKiBsYXllclRy
ZWVIb3N0SW1wbCwgQ0NMYXllckltcGwqJiByb290UHRyLCBDQ0xheWVySW1wbComIGludGVybWVk
aWF0ZUxheWVyUHRyLCBDQ0xheWVySW1wbComIHN1cmZhY2VMYXllclB0ciwgQ0NMYXllckltcGwq
JiBjaGlsZFB0ciwgY29uc3QgSW50U2l6ZSYgcm9vdFNpemUpCiB7CiAgICAgT3duUHRyPENDR3Jh
cGhpY3NDb250ZXh0PiBjb250ZXh0ID0gQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKGFkb3B0
UHRyKG5ldyBQYXJ0aWFsU3dhcENvbnRleHQpKTsKQEAgLTI0ODMsNTAgKzI0OTksMjAgQEAgc3Rh
dGljIHZvaWQgc2V0dXBMYXllcnNGb3JUZXh0dXJlQ2FjaGluZyhDQ0xheWVyVHJlZUhvc3RJbXBs
KiBsYXllclRyZWVIb3N0SW1wbCwKICAgICByb290LT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KDAs
IDApKTsKICAgICByb290LT5zZXRCb3VuZHMocm9vdFNpemUpOwogICAgIHJvb3QtPnNldENvbnRl
bnRCb3VuZHMocm9vdFNpemUpOwotICAgIHJvb3QtPnNldFZpc2libGVDb250ZW50UmVjdChJbnRS
ZWN0KEludFBvaW50KDAsIDApLCByb290U2l6ZSkpOwogICAgIHJvb3QtPnNldERyYXdzQ29udGVu
dCh0cnVlKTsKICAgICBsYXllclRyZWVIb3N0SW1wbC0+c2V0Um9vdExheWVyKHJvb3QucmVsZWFz
ZSgpKTsKIAotICAgIC8vIEludGVybWVkaWF0ZSBsYXllciBkb2VzIG5vdCBvd24gYSBzdXJmYWNl
LCBhbmQgZG9lcyBub3QgZHJhdyBjb250ZW50LgotICAgIE93blB0cjxDQ0xheWVySW1wbD4gaW50
ZXJtZWRpYXRlTGF5ZXIgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDIpOwotICAgIGludGVybWVkaWF0
ZUxheWVyUHRyID0gaW50ZXJtZWRpYXRlTGF5ZXIuZ2V0KCk7Ci0KLSAgICBpbnRlcm1lZGlhdGVM
YXllclB0ci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgwLCAwKSk7Ci0gICAgaW50ZXJtZWRp
YXRlTGF5ZXJQdHItPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQoMTAsIDEwKSk7Ci0gICAgaW50ZXJt
ZWRpYXRlTGF5ZXJQdHItPnNldEJvdW5kcyhyb290U2l6ZSk7Ci0gICAgaW50ZXJtZWRpYXRlTGF5
ZXJQdHItPnNldENvbnRlbnRCb3VuZHMocm9vdFNpemUpOwotICAgIGludGVybWVkaWF0ZUxheWVy
UHRyLT5zZXRWaXNpYmxlQ29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludCgwLCAwKSwgcm9vdFNp
emUpKTsKKyAgICBhZGREcmF3aW5nTGF5ZXJUbyhyb290UHRyLCAyLCBJbnRSZWN0KDEwLCAxMCwg
cm9vdFNpemUud2lkdGgoKSwgcm9vdFNpemUuaGVpZ2h0KCkpLCAmaW50ZXJtZWRpYXRlTGF5ZXJQ
dHIpOwogICAgIGludGVybWVkaWF0ZUxheWVyUHRyLT5zZXREcmF3c0NvbnRlbnQoZmFsc2UpOyAv
LyBvbmx5IGNoaWxkcmVuIGRyYXcgY29udGVudAotICAgIHJvb3RQdHItPmFkZENoaWxkKGludGVy
bWVkaWF0ZUxheWVyLnJlbGVhc2UoKSk7Ci0KLSAgICBPd25QdHI8Q0NMYXllckltcGw+IHN1cmZh
Y2VMYXllciA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMyk7Ci0gICAgc3VyZmFjZUxheWVyUHRyID0g
c3VyZmFjZUxheWVyLmdldCgpOwogCiAgICAgLy8gU3VyZmFjZSBsYXllciBpcyB0aGUgbGF5ZXIg
dGhhdCBjaGFuZ2VzIGl0cyBvcGFjaXR5CiAgICAgLy8gSXQgd2lsbCBjb250YWluIG90aGVyIGxh
eWVycyB0aGF0IGRyYXcgY29udGVudC4KLSAgICBJbnRTaXplIHN1cmZhY2VTaXplKHJvb3RTaXpl
LndpZHRoKCksIHJvb3RTaXplLmhlaWdodCgpKTsKLSAgICBzdXJmYWNlTGF5ZXJQdHItPnNldEFu
Y2hvclBvaW50KEZsb2F0UG9pbnQoMCwgMCkpOwotICAgIHN1cmZhY2VMYXllclB0ci0+c2V0UG9z
aXRpb24oRmxvYXRQb2ludCgxMCwgMTApKTsKLSAgICBzdXJmYWNlTGF5ZXJQdHItPnNldEJvdW5k
cyhzdXJmYWNlU2l6ZSk7Ci0gICAgc3VyZmFjZUxheWVyUHRyLT5zZXRDb250ZW50Qm91bmRzKHN1
cmZhY2VTaXplKTsKLSAgICBzdXJmYWNlTGF5ZXJQdHItPnNldFZpc2libGVDb250ZW50UmVjdChJ
bnRSZWN0KEludFBvaW50KDAsIDApLCBzdXJmYWNlU2l6ZSkpOworICAgIGFkZERyYXdpbmdMYXll
clRvKGludGVybWVkaWF0ZUxheWVyUHRyLCAzLCBJbnRSZWN0KDEwLCAxMCwgcm9vdFNpemUud2lk
dGgoKSwgcm9vdFNpemUuaGVpZ2h0KCkpLCAmc3VyZmFjZUxheWVyUHRyKTsKICAgICBzdXJmYWNl
TGF5ZXJQdHItPnNldERyYXdzQ29udGVudChmYWxzZSk7IC8vIG9ubHkgY2hpbGRyZW4gZHJhdyBj
b250ZW50CiAgICAgc3VyZmFjZUxheWVyUHRyLT5zZXRPcGFjaXR5KDAuNWYpOyAvLyBUaGlzIHdp
bGwgY2F1c2UgaXQgdG8gaGF2ZSBhIHN1cmZhY2UKLSAgICBpbnRlcm1lZGlhdGVMYXllclB0ci0+
YWRkQ2hpbGQoc3VyZmFjZUxheWVyLnJlbGVhc2UoKSk7CiAKICAgICAvLyBDaGlsZCBvZiB0aGUg
c3VyZmFjZSBsYXllciB3aWxsIHByb2R1Y2Ugc29tZSBxdWFkcwotICAgIE93blB0cjxGYWtlTGF5
ZXJXaXRoUXVhZHM+IGNoaWxkID0gRmFrZUxheWVyV2l0aFF1YWRzOjpjcmVhdGUoNCk7Ci0gICAg
Y2hpbGRQdHIgPSBjaGlsZC5nZXQoKTsKLQotICAgIEludFNpemUgY2hpbGRTaXplKHJvb3RTaXpl
LndpZHRoKCksIHJvb3RTaXplLmhlaWdodCgpKTsKLSAgICBjaGlsZFB0ci0+c2V0QW5jaG9yUG9p
bnQoRmxvYXRQb2ludCgwLCAwKSk7Ci0gICAgY2hpbGRQdHItPnNldFBvc2l0aW9uKEZsb2F0UG9p
bnQoNSwgNSkpOwotICAgIGNoaWxkUHRyLT5zZXRCb3VuZHMoY2hpbGRTaXplKTsKLSAgICBjaGls
ZFB0ci0+c2V0Q29udGVudEJvdW5kcyhjaGlsZFNpemUpOwotICAgIGNoaWxkUHRyLT5zZXRWaXNp
YmxlQ29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludCgwLCAwKSwgY2hpbGRTaXplKSk7Ci0gICAg
Y2hpbGRQdHItPnNldERyYXdzQ29udGVudCh0cnVlKTsKLQotICAgIHN1cmZhY2VMYXllclB0ci0+
YWRkQ2hpbGQoY2hpbGQucmVsZWFzZSgpKTsKKyAgICBhZGREcmF3aW5nTGF5ZXJUbyhzdXJmYWNl
TGF5ZXJQdHIsIDQsIEludFJlY3QoNSwgNSwgcm9vdFNpemUud2lkdGgoKSwgcm9vdFNpemUuaGVp
Z2h0KCkpLCAmY2hpbGRQdHIpOwogfQogCiBjbGFzcyBMYXllclJlbmRlcmVyQ2hyb21pdW1XaXRo
UmVsZWFzZVRleHR1cmVzIDogcHVibGljIExheWVyUmVuZGVyZXJDaHJvbWl1bSB7CkBAIC0yNTM0
LDYgKzI1MjAsMzM1IEBAIHB1YmxpYzoKICAgICB1c2luZyBMYXllclJlbmRlcmVyQ2hyb21pdW06
OnJlbGVhc2VSZW5kZXJQYXNzVGV4dHVyZXM7CiB9OwogCitURVNUX0YoQ0NMYXllclRyZWVIb3N0
SW1wbFRlc3QsIHRleHR1cmVDYWNoaW5nV2l0aENsaXBwaW5nKQoreworICAgIENDU2V0dGluZ3M6
OnNldFBhcnRpYWxTd2FwRW5hYmxlZCh0cnVlKTsKKworICAgIENDTGF5ZXJUcmVlU2V0dGluZ3Mg
c2V0dGluZ3M7CisgICAgT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IG15SG9zdEltcGwgPSBD
Q0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUoc2V0dGluZ3MsIHRoaXMpOworCisgICAgQ0NMYXll
ckltcGwqIHJvb3RQdHI7CisgICAgQ0NMYXllckltcGwqIHN1cmZhY2VMYXllclB0cjsKKworICAg
IE93blB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY29udGV4dCA9IENDR3JhcGhpY3NDb250ZXh0Ojpj
cmVhdGUzRChhZG9wdFB0cihuZXcgUGFydGlhbFN3YXBDb250ZXh0KSk7CisKKyAgICBJbnRTaXpl
IHJvb3RTaXplKDEwMCwgMTAwKTsKKworICAgIG15SG9zdEltcGwtPmluaXRpYWxpemVMYXllclJl
bmRlcmVyKGNvbnRleHQucmVsZWFzZSgpLCBVbnRocm90dGxlZFVwbG9hZGVyKTsKKyAgICBteUhv
c3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZShyb290U2l6ZS53aWR0aCgpLCByb290U2l6
ZS5oZWlnaHQoKSkpOworCisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiByb290ID0gQ0NMYXllcklt
cGw6OmNyZWF0ZSgxKTsKKyAgICByb290UHRyID0gcm9vdC5nZXQoKTsKKworICAgIHJvb3QtPnNl
dEFuY2hvclBvaW50KEZsb2F0UG9pbnQoMCwgMCkpOworICAgIHJvb3QtPnNldFBvc2l0aW9uKEZs
b2F0UG9pbnQoMCwgMCkpOworICAgIHJvb3QtPnNldEJvdW5kcyhyb290U2l6ZSk7CisgICAgcm9v
dC0+c2V0Q29udGVudEJvdW5kcyhyb290U2l6ZSk7CisgICAgcm9vdC0+c2V0RHJhd3NDb250ZW50
KHRydWUpOworICAgIHJvb3QtPnNldE1hc2tzVG9Cb3VuZHModHJ1ZSk7CisgICAgbXlIb3N0SW1w
bC0+c2V0Um9vdExheWVyKHJvb3QucmVsZWFzZSgpKTsKKworICAgIGFkZERyYXdpbmdMYXllclRv
KHJvb3RQdHIsIDMsIEludFJlY3QoMCwgMCwgcm9vdFNpemUud2lkdGgoKSwgcm9vdFNpemUuaGVp
Z2h0KCkpLCAmc3VyZmFjZUxheWVyUHRyKTsKKyAgICBzdXJmYWNlTGF5ZXJQdHItPnNldERyYXdz
Q29udGVudChmYWxzZSk7CisKKyAgICAvLyBTdXJmYWNlIGxheWVyIGlzIHRoZSBsYXllciB0aGF0
IGNoYW5nZXMgaXRzIG9wYWNpdHkKKyAgICAvLyBJdCB3aWxsIGNvbnRhaW4gb3RoZXIgbGF5ZXJz
IHRoYXQgZHJhdyBjb250ZW50LgorICAgIHN1cmZhY2VMYXllclB0ci0+c2V0T3BhY2l0eSgwLjVm
KTsgLy8gVGhpcyB3aWxsIGNhdXNlIGl0IHRvIGhhdmUgYSBzdXJmYWNlCisKKyAgICBhZGREcmF3
aW5nTGF5ZXJUbyhzdXJmYWNlTGF5ZXJQdHIsIDQsIEludFJlY3QoMCwgMCwgMTAwLCAzKSwgMCk7
CisgICAgYWRkRHJhd2luZ0xheWVyVG8oc3VyZmFjZUxheWVyUHRyLCA1LCBJbnRSZWN0KDAsIDk3
LCAxMDAsIDMpLCAwKTsKKworICAgIC8vIFJvdGF0aW9uIHdpbGwgcHV0IHBhcnQgb2YgdGhlIGNo
aWxkIG91c2lkZSB0aGUgYm91bmRzIG9mIHRoZSByb290IGxheWVyLgorICAgIC8vIE5ldmVydGhl
bGVzcywgdGhlIGNoaWxkIGxheWVycyBzaG91bGQgYmUgZHJhd24uCisgICAgV2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXggdHJhbnNmb3JtID0gc3VyZmFjZUxheWVyUHRyLT50cmFuc2Zvcm0oKTsKKyAg
ICB0cmFuc2Zvcm0udHJhbnNsYXRlKDUwLCA1MCk7CisgICAgdHJhbnNmb3JtLnJvdGF0ZSgzNSk7
CisgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSgtNTAsIC01MCk7CisgICAgc3VyZmFjZUxheWVyUHRy
LT5zZXRUcmFuc2Zvcm0odHJhbnNmb3JtKTsKKworICAgIHsKKyAgICAgICAgQ0NMYXllclRyZWVI
b3N0SW1wbDo6RnJhbWVEYXRhIGZyYW1lOworICAgICAgICBFWFBFQ1RfVFJVRShteUhvc3RJbXBs
LT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CisKKyAgICAgICAgLy8gTXVzdCByZWNlaXZlIHR3byBy
ZW5kZXIgcGFzc2VzLCBlYWNoIHdpdGggb25lIHF1YWQKKyAgICAgICAgQVNTRVJUX0VRKDJVLCBm
cmFtZS5yZW5kZXJQYXNzZXMuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKDJVLCBmcmFtZS5y
ZW5kZXJQYXNzZXNbMF0tPnF1YWRMaXN0KCkuc2l6ZSgpKTsKKyAgICAgICAgQVNTRVJUX0VRKDFV
LCBmcmFtZS5yZW5kZXJQYXNzZXNbMV0tPnF1YWRMaXN0KCkuc2l6ZSgpKTsKKworICAgICAgICAv
LyBWZXJpZnkgdGhhdCB0aGUgY2hpbGQgbGF5ZXJzIGhhdmUgYmVlbiBkcmF3biBlbnRpcmVseS4K
KyAgICAgICAgSW50UmVjdCBxdWFkVmlzaWJsZVJlY3QgPSBmcmFtZS5yZW5kZXJQYXNzZXNbMF0t
PnF1YWRMaXN0KClbMF0tPnF1YWRWaXNpYmxlUmVjdCgpOworICAgICAgICBFWFBFQ1RfSU5UX1JF
Q1RfRVEoSW50UmVjdCgwLCAwLCAxMDAsIDMpLCBxdWFkVmlzaWJsZVJlY3QpOworCisgICAgICAg
IHF1YWRWaXNpYmxlUmVjdCA9IGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+cXVhZExpc3QoKVsxXS0+
cXVhZFZpc2libGVSZWN0KCk7CisgICAgICAgIEVYUEVDVF9JTlRfUkVDVF9FUShJbnRSZWN0KDAs
IDAsIDEwMCwgMyksIHF1YWRWaXNpYmxlUmVjdCk7CisKKyAgICAgICAgRVhQRUNUX0VRKENDRHJh
d1F1YWQ6OlJlbmRlclBhc3MsIGZyYW1lLnJlbmRlclBhc3Nlc1sxXS0+cXVhZExpc3QoKVswXS0+
bWF0ZXJpYWwoKSk7CisgICAgICAgIENDUmVuZGVyUGFzc0RyYXdRdWFkKiBxdWFkID0gc3RhdGlj
X2Nhc3Q8Q0NSZW5kZXJQYXNzRHJhd1F1YWQqPihmcmFtZS5yZW5kZXJQYXNzZXNbMV0tPnF1YWRM
aXN0KClbMF0uZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRkFMU0UocXVhZC0+Y29udGVudHNDaGFu
Z2VkU2luY2VMYXN0RnJhbWUoKS5pc0VtcHR5KCkpOworCisgICAgICAgIG15SG9zdEltcGwtPmRy
YXdMYXllcnMoZnJhbWUpOworICAgICAgICBteUhvc3RJbXBsLT5kaWREcmF3QWxsTGF5ZXJzKGZy
YW1lKTsKKyAgICB9CisKKyAgICB0cmFuc2Zvcm0gPSBzdXJmYWNlTGF5ZXJQdHItPnRyYW5zZm9y
bSgpOworICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoNTAsIDUwKTsKKyAgICB0cmFuc2Zvcm0ucm90
YXRlKC0zNSk7CisgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSgtNTAsIC01MCk7CisgICAgc3VyZmFj
ZUxheWVyUHRyLT5zZXRUcmFuc2Zvcm0odHJhbnNmb3JtKTsKKworICAgIC8vIFRoZSBzdXJmYWNl
IGlzIG5vdyBhbGlnbmVkIGFnYWluLCBhbmQgdGhlIGNsaXBwZWQgcGFydHMgYXJlIGV4cG9zZWQu
CisgICAgLy8gVGhhdCBzaG91bGQgYmUgT0ssIGFzIHdlJ3ZlIGFscmVhZHkgdmVyaWZpZWQgdGhh
dCB0aGUgcXVhZHMgYXJlIGRyYXduIGluIGZ1bGwuCisgICAgLy8gVmVyaWZ5IHRoYXQgdGhlIHJl
bmRlciBwYXNzIGlzIHJlbW92ZWQuCisgICAgeworICAgICAgICBDQ0xheWVyVHJlZUhvc3RJbXBs
OjpGcmFtZURhdGEgZnJhbWU7CisgICAgICAgIEVYUEVDVF9UUlVFKG15SG9zdEltcGwtPnByZXBh
cmVUb0RyYXcoZnJhbWUpKTsKKworICAgICAgICAvLyBNdXN0IHJlY2VpdmUgYSBzaW5nbGUgcmVu
ZGVyIHBhc3MgdXNpbmcgYSBjYWNoZWQgdGV4dHVyZS4KKyAgICAgICAgQVNTRVJUX0VRKDFVLCBm
cmFtZS5yZW5kZXJQYXNzZXMuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKDFVLCBmcmFtZS5y
ZW5kZXJQYXNzZXNbMF0tPnF1YWRMaXN0KCkuc2l6ZSgpKTsKKworICAgICAgICBteUhvc3RJbXBs
LT5kcmF3TGF5ZXJzKGZyYW1lKTsKKyAgICAgICAgbXlIb3N0SW1wbC0+ZGlkRHJhd0FsbExheWVy
cyhmcmFtZSk7CisgICAgfQorfQorCitURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHRl
eHR1cmVDYWNoaW5nV2l0aE9jY2x1c2lvbikKK3sKKyAgICBDQ1NldHRpbmdzOjpzZXRQYXJ0aWFs
U3dhcEVuYWJsZWQoZmFsc2UpOworCisgICAgQ0NMYXllclRyZWVTZXR0aW5ncyBzZXR0aW5nczsK
KyAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gbXlIb3N0SW1wbCA9IENDTGF5ZXJUcmVl
SG9zdEltcGw6OmNyZWF0ZShzZXR0aW5ncywgdGhpcyk7CisKKyAgICAvLyBMYXllcnMgYXJlIHN0
cnVjdHVyZSBhcyBmb2xsb3dzOgorICAgIC8vCisgICAgLy8gIFIgKy0tIFMxICstIEwxMCAob3du
aW5nKQorICAgIC8vICAgIHwgICAgICArLSBMMTEKKyAgICAvLyAgICB8ICAgICAgKy0gTDEyCisg
ICAgLy8gICAgfAorICAgIC8vICAgICstLSBTMiArLSBMMjAgKG93bmluZykKKyAgICAvLyAgICAg
ICAgICAgKy0gTDIxCisgICAgLy8KKyAgICAvLyBPY2NsdXNpb246CisgICAgLy8gTDEyIG9jY2x1
ZGVzIEwxMSAoaW50ZXJuYWwpCisgICAgLy8gTDIwIG9jY2x1ZGVzIEwxMCAoZXh0ZXJuYWwpCisg
ICAgLy8gTDIxIG9jY2x1ZGVzIEwyMCAoaW50ZXJuYWwpCisKKyAgICBDQ0xheWVySW1wbCogcm9v
dFB0cjsKKyAgICBDQ0xheWVySW1wbCogbGF5ZXJTMVB0cjsKKyAgICBDQ0xheWVySW1wbCogbGF5
ZXJTMlB0cjsKKworICAgIE93blB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY29udGV4dCA9IENDR3Jh
cGhpY3NDb250ZXh0OjpjcmVhdGUzRChhZG9wdFB0cihuZXcgUGFydGlhbFN3YXBDb250ZXh0KSk7
CisKKyAgICBJbnRTaXplIHJvb3RTaXplKDEwMDAsIDEwMDApOworCisgICAgbXlIb3N0SW1wbC0+
aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY29udGV4dC5yZWxlYXNlKCksIFVudGhyb3R0bGVkVXBs
b2FkZXIpOworICAgIG15SG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKHJvb3RTaXpl
LndpZHRoKCksIHJvb3RTaXplLmhlaWdodCgpKSk7CisKKyAgICBPd25QdHI8Q0NMYXllckltcGw+
IHJvb3QgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDEpOworICAgIHJvb3RQdHIgPSByb290LmdldCgp
OworCisgICAgcm9vdC0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgwLCAwKSk7CisgICAgcm9v
dC0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCgwLCAwKSk7CisgICAgcm9vdC0+c2V0Qm91bmRzKHJv
b3RTaXplKTsKKyAgICByb290LT5zZXRDb250ZW50Qm91bmRzKHJvb3RTaXplKTsKKyAgICByb290
LT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7CisgICAgcm9vdC0+c2V0TWFza3NUb0JvdW5kcyh0cnVl
KTsKKyAgICBteUhvc3RJbXBsLT5zZXRSb290TGF5ZXIocm9vdC5yZWxlYXNlKCkpOworCisgICAg
YWRkRHJhd2luZ0xheWVyVG8ocm9vdFB0ciwgMiwgSW50UmVjdCgzMDAsIDMwMCwgMzAwLCAzMDAp
LCAmbGF5ZXJTMVB0cik7CisgICAgbGF5ZXJTMVB0ci0+c2V0Rm9yY2VSZW5kZXJTdXJmYWNlKHRy
dWUpOworCisgICAgYWRkRHJhd2luZ0xheWVyVG8obGF5ZXJTMVB0ciwgMywgSW50UmVjdCgxMCwg
MTAsIDEwLCAxMCksIDApOyAvLyBMMTEKKyAgICBhZGREcmF3aW5nTGF5ZXJUbyhsYXllclMxUHRy
LCA0LCBJbnRSZWN0KDAsIDAsIDMwLCAzMCksIDApOyAvLyBMMTIKKworICAgIGFkZERyYXdpbmdM
YXllclRvKHJvb3RQdHIsIDUsIEludFJlY3QoNTUwLCAyNTAsIDMwMCwgNDAwKSwgJmxheWVyUzJQ
dHIpOworICAgIGxheWVyUzJQdHItPnNldEZvcmNlUmVuZGVyU3VyZmFjZSh0cnVlKTsKKworICAg
IGFkZERyYXdpbmdMYXllclRvKGxheWVyUzJQdHIsIDYsIEludFJlY3QoMjAsIDIwLCA1LCA1KSwg
MCk7IC8vIEwyMQorCisgICAgLy8gSW5pdGlhbCBkcmF3IC0gbXVzdCByZWNlaXZlIGFsbCBxdWFk
cworICAgIHsKKyAgICAgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRhIGZyYW1lOwor
ICAgICAgICBFWFBFQ1RfVFJVRShteUhvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CisK
KyAgICAgICAgLy8gTXVzdCByZWNlaXZlIDMgcmVuZGVyIHBhc3Nlcy4KKyAgICAgICAgLy8gRm9y
IFJvb3QsIHRoZXJlIGFyZSAyIHF1YWRzOyBmb3IgUzEsIHRoZXJlIGFyZSAzIHF1YWRzOyBmb3Ig
UzIsIHRoZXJlIGlzIDEgcXVhZC4KKyAgICAgICAgQVNTRVJUX0VRKDNVLCBmcmFtZS5yZW5kZXJQ
YXNzZXMuc2l6ZSgpKTsKKworICAgICAgICBFWFBFQ1RfRVEoMlUsIGZyYW1lLnJlbmRlclBhc3Nl
c1swXS0+cXVhZExpc3QoKS5zaXplKCkpOworICAgICAgICBFWFBFQ1RfRVEoM1UsIGZyYW1lLnJl
bmRlclBhc3Nlc1sxXS0+cXVhZExpc3QoKS5zaXplKCkpOworICAgICAgICBFWFBFQ1RfRVEoMlUs
IGZyYW1lLnJlbmRlclBhc3Nlc1syXS0+cXVhZExpc3QoKS5zaXplKCkpOworCisgICAgICAgIG15
SG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOworICAgICAgICBteUhvc3RJbXBsLT5kaWREcmF3
QWxsTGF5ZXJzKGZyYW1lKTsKKyAgICB9CisKKyAgICAvLyAiVW5vY2NsdWRlIiBzdXJmYWNlIFMx
IGFuZCByZXBlYXQgZHJhdy4KKyAgICAvLyBNdXN0IHJlbW92ZSBTMidzIHJlbmRlciBwYXNzIHNp
bmNlIGl0J3MgY2FjaGVkOworICAgIC8vIE11c3Qga2VlcCBTMSBxdWFkcyBiZWNhdXNlIHRleHR1
cmUgY29udGFpbmVkIGV4dGVybmFsIG9jY2x1c2lvbi4KKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeCB0cmFuc2Zvcm0gPSBsYXllclMyUHRyLT50cmFuc2Zvcm0oKTsKKyAgICB0cmFuc2Zvcm0u
dHJhbnNsYXRlKDE1MCwgMTUwKTsKKyAgICBsYXllclMyUHRyLT5zZXRUcmFuc2Zvcm0odHJhbnNm
b3JtKTsKKyAgICB7CisgICAgICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSBmcmFt
ZTsKKyAgICAgICAgRVhQRUNUX1RSVUUobXlIb3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkp
OworCisgICAgICAgIC8vIE11c3QgcmVjZWl2ZSAyIHJlbmRlciBwYXNzZXMuCisgICAgICAgIC8v
IEZvciBSb290LCB0aGVyZSBhcmUgMiBxdWFkcworICAgICAgICAvLyBGb3IgUzEsIHRoZSBudW1i
ZXIgb2YgcXVhZHMgZGVwZW5kcyBvbiB3aGF0IGdvdCB1bm9jY2x1ZGVkLCBzbyBub3QgYXNzZXJ0
ZWQgYmV5b25kIGJlaW5nIHBvc2l0aXZlLgorICAgICAgICAvLyBGb3IgUzIsIHRoZXJlIGlzIG5v
IHJlbmRlciBwYXNzCisgICAgICAgIEFTU0VSVF9FUSgyVSwgZnJhbWUucmVuZGVyUGFzc2VzLnNp
emUoKSk7CisKKyAgICAgICAgRVhQRUNUX0dUKGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+cXVhZExp
c3QoKS5zaXplKCksIDBVKTsKKyAgICAgICAgRVhQRUNUX0VRKDJVLCBmcmFtZS5yZW5kZXJQYXNz
ZXNbMV0tPnF1YWRMaXN0KCkuc2l6ZSgpKTsKKworICAgICAgICBteUhvc3RJbXBsLT5kcmF3TGF5
ZXJzKGZyYW1lKTsKKyAgICAgICAgbXlIb3N0SW1wbC0+ZGlkRHJhd0FsbExheWVycyhmcmFtZSk7
CisgICAgfQorCisgICAgLy8gIlJlLW9jY2x1ZGUiIHN1cmZhY2UgUzEgYW5kIHJlcGVhdCBkcmF3
LgorICAgIC8vIE11c3QgcmVtb3ZlIFMxJ3MgcmVuZGVyIHBhc3Mgc2luY2UgaXQgaXMgbm93IGF2
YWlsYWJsZSBpbiBmdWxsLgorICAgIC8vIFMyIGhhcyBubyBjaGFuZ2Ugc28gbXVzdCBhbHNvIGJl
IHJlbW92ZWQuCisgICAgdHJhbnNmb3JtID0gbGF5ZXJTMlB0ci0+dHJhbnNmb3JtKCk7CisgICAg
dHJhbnNmb3JtLnRyYW5zbGF0ZSgtMTUsIC0xNSk7CisgICAgbGF5ZXJTMlB0ci0+c2V0VHJhbnNm
b3JtKHRyYW5zZm9ybSk7CisgICAgeworICAgICAgICBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFt
ZURhdGEgZnJhbWU7CisgICAgICAgIEVYUEVDVF9UUlVFKG15SG9zdEltcGwtPnByZXBhcmVUb0Ry
YXcoZnJhbWUpKTsKKworICAgICAgICAvLyBNdXN0IHJlY2VpdmUgMSByZW5kZXIgcGFzcyAtIGZv
ciB0aGUgcm9vdC4KKyAgICAgICAgQVNTRVJUX0VRKDFVLCBmcmFtZS5yZW5kZXJQYXNzZXMuc2l6
ZSgpKTsKKworICAgICAgICBFWFBFQ1RfRVEoMlUsIGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+cXVh
ZExpc3QoKS5zaXplKCkpOworCisgICAgICAgIG15SG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUp
OworICAgICAgICBteUhvc3RJbXBsLT5kaWREcmF3QWxsTGF5ZXJzKGZyYW1lKTsKKyAgICB9CisK
K30KKworVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCB0ZXh0dXJlQ2FjaGluZ1dpdGhP
Y2NsdXNpb25QYXJ0aWFsU3dhcCkKK3sKKyAgICBDQ1NldHRpbmdzOjpzZXRQYXJ0aWFsU3dhcEVu
YWJsZWQodHJ1ZSk7CisKKyAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNldHRpbmdzOworICAgIE93
blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBteUhvc3RJbXBsID0gQ0NMYXllclRyZWVIb3N0SW1w
bDo6Y3JlYXRlKHNldHRpbmdzLCB0aGlzKTsKKworICAgIC8vIExheWVycyBhcmUgc3RydWN0dXJl
IGFzIGZvbGxvd3M6CisgICAgLy8KKyAgICAvLyAgUiArLS0gUzEgKy0gTDEwIChvd25pbmcpCisg
ICAgLy8gICAgfCAgICAgICstIEwxMQorICAgIC8vICAgIHwgICAgICArLSBMMTIKKyAgICAvLyAg
ICB8CisgICAgLy8gICAgKy0tIFMyICstIEwyMCAob3duaW5nKQorICAgIC8vICAgICAgICAgICAr
LSBMMjEKKyAgICAvLworICAgIC8vIE9jY2x1c2lvbjoKKyAgICAvLyBMMTIgb2NjbHVkZXMgTDEx
IChpbnRlcm5hbCkKKyAgICAvLyBMMjAgb2NjbHVkZXMgTDEwIChleHRlcm5hbCkKKyAgICAvLyBM
MjEgb2NjbHVkZXMgTDIwIChpbnRlcm5hbCkKKworICAgIENDTGF5ZXJJbXBsKiByb290UHRyOwor
ICAgIENDTGF5ZXJJbXBsKiBsYXllclMxUHRyOworICAgIENDTGF5ZXJJbXBsKiBsYXllclMyUHRy
OworCisgICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjb250ZXh0ID0gQ0NHcmFwaGljc0Nv
bnRleHQ6OmNyZWF0ZTNEKGFkb3B0UHRyKG5ldyBQYXJ0aWFsU3dhcENvbnRleHQpKTsKKworICAg
IEludFNpemUgcm9vdFNpemUoMTAwMCwgMTAwMCk7CisKKyAgICBteUhvc3RJbXBsLT5pbml0aWFs
aXplTGF5ZXJSZW5kZXJlcihjb250ZXh0LnJlbGVhc2UoKSwgVW50aHJvdHRsZWRVcGxvYWRlcik7
CisgICAgbXlIb3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUocm9vdFNpemUud2lkdGgo
KSwgcm9vdFNpemUuaGVpZ2h0KCkpKTsKKworICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9
IENDTGF5ZXJJbXBsOjpjcmVhdGUoMSk7CisgICAgcm9vdFB0ciA9IHJvb3QuZ2V0KCk7CisKKyAg
ICByb290LT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50KDAsIDApKTsKKyAgICByb290LT5zZXRQ
b3NpdGlvbihGbG9hdFBvaW50KDAsIDApKTsKKyAgICByb290LT5zZXRCb3VuZHMocm9vdFNpemUp
OworICAgIHJvb3QtPnNldENvbnRlbnRCb3VuZHMocm9vdFNpemUpOworICAgIHJvb3QtPnNldERy
YXdzQ29udGVudCh0cnVlKTsKKyAgICByb290LT5zZXRNYXNrc1RvQm91bmRzKHRydWUpOworICAg
IG15SG9zdEltcGwtPnNldFJvb3RMYXllcihyb290LnJlbGVhc2UoKSk7CisKKyAgICBhZGREcmF3
aW5nTGF5ZXJUbyhyb290UHRyLCAyLCBJbnRSZWN0KDMwMCwgMzAwLCAzMDAsIDMwMCksICZsYXll
clMxUHRyKTsKKyAgICBsYXllclMxUHRyLT5zZXRGb3JjZVJlbmRlclN1cmZhY2UodHJ1ZSk7CisK
KyAgICBhZGREcmF3aW5nTGF5ZXJUbyhsYXllclMxUHRyLCAzLCBJbnRSZWN0KDEwLCAxMCwgMTAs
IDEwKSwgMCk7IC8vIEwxMQorICAgIGFkZERyYXdpbmdMYXllclRvKGxheWVyUzFQdHIsIDQsIElu
dFJlY3QoMCwgMCwgMzAsIDMwKSwgMCk7IC8vIEwxMgorCisgICAgYWRkRHJhd2luZ0xheWVyVG8o
cm9vdFB0ciwgNSwgSW50UmVjdCg1NTAsIDI1MCwgMzAwLCA0MDApLCAmbGF5ZXJTMlB0cik7Cisg
ICAgbGF5ZXJTMlB0ci0+c2V0Rm9yY2VSZW5kZXJTdXJmYWNlKHRydWUpOworCisgICAgYWRkRHJh
d2luZ0xheWVyVG8obGF5ZXJTMlB0ciwgNiwgSW50UmVjdCgyMCwgMjAsIDUsIDUpLCAwKTsgLy8g
TDIxCisKKyAgICAvLyBJbml0aWFsIGRyYXcgLSBtdXN0IHJlY2VpdmUgYWxsIHF1YWRzCisgICAg
eworICAgICAgICBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEgZnJhbWU7CisgICAgICAg
IEVYUEVDVF9UUlVFKG15SG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKKworICAgICAg
ICAvLyBNdXN0IHJlY2VpdmUgMyByZW5kZXIgcGFzc2VzLgorICAgICAgICAvLyBGb3IgUm9vdCwg
dGhlcmUgYXJlIDIgcXVhZHM7IGZvciBTMSwgdGhlcmUgYXJlIDMgcXVhZHM7IGZvciBTMiwgdGhl
cmUgaXMgMSBxdWFkLgorICAgICAgICBBU1NFUlRfRVEoM1UsIGZyYW1lLnJlbmRlclBhc3Nlcy5z
aXplKCkpOworCisgICAgICAgIEVYUEVDVF9FUSgyVSwgZnJhbWUucmVuZGVyUGFzc2VzWzBdLT5x
dWFkTGlzdCgpLnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUSgzVSwgZnJhbWUucmVuZGVyUGFz
c2VzWzFdLT5xdWFkTGlzdCgpLnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUSgyVSwgZnJhbWUu
cmVuZGVyUGFzc2VzWzJdLT5xdWFkTGlzdCgpLnNpemUoKSk7CisKKyAgICAgICAgbXlIb3N0SW1w
bC0+ZHJhd0xheWVycyhmcmFtZSk7CisgICAgICAgIG15SG9zdEltcGwtPmRpZERyYXdBbGxMYXll
cnMoZnJhbWUpOworICAgIH0KKworICAgIC8vICJVbm9jY2x1ZGUiIHN1cmZhY2UgUzEgYW5kIHJl
cGVhdCBkcmF3LgorICAgIC8vIE11c3QgcmVtb3ZlIFMyJ3MgcmVuZGVyIHBhc3Mgc2luY2UgaXQn
cyBjYWNoZWQ7CisgICAgLy8gTXVzdCBrZWVwIFMxIHF1YWRzIGJlY2F1c2UgdGV4dHVyZSBjb250
YWluZWQgZXh0ZXJuYWwgb2NjbHVzaW9uLgorICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHRy
YW5zZm9ybSA9IGxheWVyUzJQdHItPnRyYW5zZm9ybSgpOworICAgIHRyYW5zZm9ybS50cmFuc2xh
dGUoMTUwLCAxNTApOworICAgIGxheWVyUzJQdHItPnNldFRyYW5zZm9ybSh0cmFuc2Zvcm0pOwor
ICAgIHsKKyAgICAgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRhIGZyYW1lOworICAg
ICAgICBFWFBFQ1RfVFJVRShteUhvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CisKKyAg
ICAgICAgLy8gTXVzdCByZWNlaXZlIDIgcmVuZGVyIHBhc3Nlcy4KKyAgICAgICAgLy8gRm9yIFJv
b3QsIHRoZXJlIGFyZSAyIHF1YWRzCisgICAgICAgIC8vIEZvciBTMSwgdGhlIG51bWJlciBvZiBx
dWFkcyBkZXBlbmRzIG9uIHdoYXQgZ290IHVub2NjbHVkZWQsIHNvIG5vdCBhc3NlcnRlZCBiZXlv
bmQgYmVpbmcgcG9zaXRpdmUuCisgICAgICAgIC8vIEZvciBTMiwgdGhlcmUgaXMgbm8gcmVuZGVy
IHBhc3MKKyAgICAgICAgQVNTRVJUX0VRKDJVLCBmcmFtZS5yZW5kZXJQYXNzZXMuc2l6ZSgpKTsK
KworICAgICAgICBFWFBFQ1RfR1QoZnJhbWUucmVuZGVyUGFzc2VzWzBdLT5xdWFkTGlzdCgpLnNp
emUoKSwgMFUpOworICAgICAgICBFWFBFQ1RfRVEoMlUsIGZyYW1lLnJlbmRlclBhc3Nlc1sxXS0+
cXVhZExpc3QoKS5zaXplKCkpOworCisgICAgICAgIG15SG9zdEltcGwtPmRyYXdMYXllcnMoZnJh
bWUpOworICAgICAgICBteUhvc3RJbXBsLT5kaWREcmF3QWxsTGF5ZXJzKGZyYW1lKTsKKyAgICB9
CisKKyAgICAvLyAiUmUtb2NjbHVkZSIgc3VyZmFjZSBTMSBhbmQgcmVwZWF0IGRyYXcuCisgICAg
Ly8gTXVzdCByZW1vdmUgUzEncyByZW5kZXIgcGFzcyBzaW5jZSBpdCBpcyBub3cgYXZhaWxhYmxl
IGluIGZ1bGwuCisgICAgLy8gUzIgaGFzIG5vIGNoYW5nZSBzbyBtdXN0IGFsc28gYmUgcmVtb3Zl
ZC4KKyAgICAvLyBGSVhNRTogRHVlIHRvIHBhcnRpYWwgc3dhcCwgdGhlIHNjaXNzb3IgcmVjdCB3
aWxsIGNhdXNlIE9jY2x1c2lvblRyYWNrZXIKKyAgICAvLyB0byB0aGluayB0aGVyZSBpcyBhbiBl
eHRlcm5hbCBvY2NsdXNpb24gaW4gdGhlIHByZXZpb3VzIHN0ZXAuIFRoZXJlZm9yZSwKKyAgICAv
LyBTMSdzIHJlbmRlciBwYXNzIHdpbGwgbm90IGJlIHJlbW92ZWQuCisgICAgdHJhbnNmb3JtID0g
bGF5ZXJTMlB0ci0+dHJhbnNmb3JtKCk7CisgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSgtMTUsIC0x
NSk7CisgICAgbGF5ZXJTMlB0ci0+c2V0VHJhbnNmb3JtKHRyYW5zZm9ybSk7CisgICAgeworICAg
ICAgICBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEgZnJhbWU7CisgICAgICAgIEVYUEVD
VF9UUlVFKG15SG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKKworICAgICAgICAvLyAy
IFJlbmRlciBwYXNzZXMgLSBSb290IGFuZCBTMS4KKyAgICAgICAgQVNTRVJUX0VRKDJVLCBmcmFt
ZS5yZW5kZXJQYXNzZXMuc2l6ZSgpKTsKKworICAgICAgICAvLyBSZW5kZXIgcGFzcyBmb3IgUzEg
Y29udGFpbnMgbm8gcXVhZHMgYXMgdGhlIHNjaXNzb3IgcmVjdCBpcyBub3cgb2NjbHVkZWQuCisg
ICAgICAgIEVYUEVDVF9FUSgwVSwgZnJhbWUucmVuZGVyUGFzc2VzWzBdLT5xdWFkTGlzdCgpLnNp
emUoKSk7CisKKyAgICAgICAgLy8gUm9vdCBjb250YWlucyBTMiBvbmx5LCBhcyBTMSBkb2Vzbid0
IGhhdmUgYW55IGRhbWFnZS4KKyAgICAgICAgRVhQRUNUX0VRKDFVLCBmcmFtZS5yZW5kZXJQYXNz
ZXNbMV0tPnF1YWRMaXN0KCkuc2l6ZSgpKTsKKworICAgICAgICBteUhvc3RJbXBsLT5kcmF3TGF5
ZXJzKGZyYW1lKTsKKyAgICAgICAgbXlIb3N0SW1wbC0+ZGlkRHJhd0FsbExheWVycyhmcmFtZSk7
CisgICAgfQorCit9CisKIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgc3VyZmFjZVRl
eHR1cmVDYWNoaW5nKQogewogICAgIENDU2V0dGluZ3M6OnNldFBhcnRpYWxTd2FwRW5hYmxlZCh0
cnVlKTsKQEAgLTMwODAsNyArMzM5NSw3IEBAIHN0YXRpYyB2b2lkIGNvbmZpZ3VyZVJlbmRlclBh
c3NUZXN0RGF0YShjb25zdCBjaGFyKiB0ZXN0U2NyaXB0LCBSZW5kZXJQYXNzUmVtb3ZhCiAKICAg
ICAgICAgICAgICAgICBJbnRSZWN0IHF1YWRSZWN0ID0gSW50UmVjdCgwLCAwLCAxLCAxKTsKICAg
ICAgICAgICAgICAgICBJbnRSZWN0IGNvbnRlbnRzQ2hhbmdlZFJlY3QgPSBjb250ZW50c0NoYW5n
ZWQgPyBxdWFkUmVjdCA6IEludFJlY3QoKTsKLSAgICAgICAgICAgICAgICBPd25QdHI8Q0NSZW5k
ZXJQYXNzRHJhd1F1YWQ+IHF1YWQgPSBDQ1JlbmRlclBhc3NEcmF3UXVhZDo6Y3JlYXRlKHRlc3RE
YXRhLnNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgcXVhZFJlY3QsIG5ld1JlbmRlclBhc3NJZCwgaXNS
ZXBsaWNhLCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4KCksIFdlYktpdDo6V2ViRmls
dGVyT3BlcmF0aW9ucygpLCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMoKSwgMSwgY29udGVu
dHNDaGFuZ2VkUmVjdCk7CisgICAgICAgICAgICAgICAgT3duUHRyPENDUmVuZGVyUGFzc0RyYXdR
dWFkPiBxdWFkID0gQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6OmNyZWF0ZSh0ZXN0RGF0YS5zaGFyZWRR
dWFkU3RhdGUuZ2V0KCksIHF1YWRSZWN0LCBuZXdSZW5kZXJQYXNzSWQsIGlzUmVwbGljYSwgV2Vi
S2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlv
bnMoKSwgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zKCksIDEsIGNvbnRlbnRzQ2hhbmdlZFJl
Y3QsIGZhbHNlKTsKICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxDQ1Rlc3RSZW5kZXJQYXNz
Kj4ocmVuZGVyUGFzcy5nZXQoKSktPmFwcGVuZFF1YWQocXVhZC5yZWxlYXNlKCkpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q1F1YWRDdWxsZXJUZXN0LmNwcAppbmRleCBlMWQ5ZmIzNjc3ZjYwNTcxYmUwYmJmZDM4NDJiMzEz
MDkwNzc0ZjBkLi5mNTg3NjhlYjY5ODgxNTE3YjM2NWJjMmQ3MmRjMWQ5MDU0NTU0OGE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAK
QEAgLTk3LDcgKzk3LDcgQEAgc3RhdGljIFBhc3NPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gbWFr
ZUxheWVyKENDVGlsZWRMYXllckltcGwqIHBhcmVudCwgY29uc3QgV2UKIHN0YXRpYyB2b2lkIGFw
cGVuZFF1YWRzKENDUXVhZExpc3QmIHF1YWRMaXN0LCBWZWN0b3I8T3duUHRyPENDU2hhcmVkUXVh
ZFN0YXRlPiA+JiBzaGFyZWRTdGF0ZUxpc3QsIENDVGlsZWRMYXllckltcGwqIGxheWVyLCBDQ0xh
eWVySXRlcmF0b3JUeXBlJiBpdCwgQ0NPY2NsdXNpb25UcmFja2VySW1wbCYgb2NjbHVzaW9uVHJh
Y2tlcikKIHsKICAgICBvY2NsdXNpb25UcmFja2VyLmVudGVyTGF5ZXIoaXQpOwotICAgIENDUXVh
ZEN1bGxlciBxdWFkQ3VsbGVyKHF1YWRMaXN0LCBsYXllciwgJm9jY2x1c2lvblRyYWNrZXIsIGZh
bHNlKTsKKyAgICBDQ1F1YWRDdWxsZXIgcXVhZEN1bGxlcihxdWFkTGlzdCwgbGF5ZXIsICZvY2Ns
dXNpb25UcmFja2VyLCBmYWxzZSwgZmFsc2UpOwogICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0
ZT4gc2hhcmVkUXVhZFN0YXRlID0gbGF5ZXItPmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpOwogICAg
IGJvb2wgaGFkTWlzc2luZ1RpbGVzID0gZmFsc2U7CiAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1
YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgaGFkTWlzc2luZ1RpbGVzKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTW9ja0NDUXVhZEN1bGxlci5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Nb2NrQ0NRdWFkQ3VsbGVyLmgKaW5kZXggMzg1
NTA3ZTJjN2M0MWQyYTU5MWZiZTMzNmQwODcyMjUyNTkyOWMyYy4uMTVjYjE5ZDZjODI2YTU2YWEx
MGJkNGZmMmY2OGEwM2EwNWYxMGU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9Nb2NrQ0NRdWFkQ3VsbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9Nb2NrQ0NRdWFkQ3VsbGVyLmgKQEAgLTI3LDIxICsyNywxOSBAQAogCiAjaW5jbHVkZSAi
SW50UmVjdC5oIgogI2luY2x1ZGUgImNjL0NDRHJhd1F1YWQuaCIKLSNpbmNsdWRlICJjYy9DQ1F1
YWRDdWxsZXIuaCIKKyNpbmNsdWRlICJjYy9DQ1F1YWRTaW5rLmgiCiAjaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBNb2NrQ0NRdWFkQ3Vs
bGVyIDogcHVibGljIFdlYkNvcmU6OkNDUXVhZEN1bGxlciB7CitjbGFzcyBNb2NrQ0NRdWFkQ3Vs
bGVyIDogcHVibGljIFdlYkNvcmU6OkNDUXVhZFNpbmsgewogcHVibGljOgogICAgIE1vY2tDQ1F1
YWRDdWxsZXIoKQotICAgICAgICA6IENDUXVhZEN1bGxlcihtX3F1YWRMaXN0U3RvcmFnZSwgMCwg
MCwgZmFsc2UpCi0gICAgICAgICwgbV9hY3RpdmVRdWFkTGlzdChtX3F1YWRMaXN0U3RvcmFnZSkK
KyAgICAgICAgOiBtX2FjdGl2ZVF1YWRMaXN0KG1fcXVhZExpc3RTdG9yYWdlKQogICAgIHsgfQog
CiAgICAgZXhwbGljaXQgTW9ja0NDUXVhZEN1bGxlcihDQ1F1YWRMaXN0JiBleHRlcm5hbFF1YWRM
aXN0KQotICAgICAgICA6IENDUXVhZEN1bGxlcihleHRlcm5hbFF1YWRMaXN0LCAwLCAwLCBmYWxz
ZSkKLSAgICAgICAgLCBtX2FjdGl2ZVF1YWRMaXN0KGV4dGVybmFsUXVhZExpc3QpCisgICAgICAg
IDogbV9hY3RpdmVRdWFkTGlzdChleHRlcm5hbFF1YWRMaXN0KQogICAgIHsgfQogCiAgICAgdmly
dHVhbCBib29sIGFwcGVuZChXVEY6OlBhc3NPd25QdHI8V2ViQ29yZTo6Q0NEcmF3UXVhZD4gbmV3
UXVhZCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153010</attachid>
            <date>2012-07-18 07:29:58 -0700</date>
            <delta_ts>2012-07-19 09:50:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91537-20120718102957.patch</filename>
            <type>text/plain</type>
            <size>67362</size>
            <attacher>zlieber</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyODYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDg3MTVkY2IxYWYwYzg0
NzBmZjhkNzMxYTVkN2M4MjFmMzE3NjNkMC4uNTA5MTgxYWMyNjc4OTMxZjJmZTQ5Zjk2NzA5ZDU0
MWRiNDk1NTYyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMiBAQAorMjAxMi0wNy0xNyAgWmVl
diBMaWViZXIgIDx6bGllYmVyQGNocm9taXVtLm9yZz4KKworICAgICAgICBUZXh0dXJlcyBkcmF3
biBkdXJpbmcgb2NjbHVzaW9uIGFyZSBpbmNvcnJlY3RseSByZS11c2VkIHdoZW4gdW5vY2NsdWRl
ZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxNTM3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGV0ZWN0
aW5nIGlmIGFueSBleHRlcm5hbCBvY2NsdXNpb24gb2NjdXJzIHdoZW4gZHJhd2luZyBhCisgICAg
ICAgIHRleHR1cmUuIElmIGV4dGVybmFsIG9jY2x1c2lvbiBoYXBwZW5zLCB0aGUgdGV4dHVyZSBp
cyBtYXJrZWQgYXMKKyAgICAgICAgImluY29tcGxldGUiIGluIExheWVyUmVuZGVyZXJDaHJvbWl1
bSwgYW5kIGlzIG5vdCBiZWluZyBjb25zaWRlcmVkCisgICAgICAgIGZvciByZS11c2UuCisKKyAg
ICAgICAgTWlub3IgcmVmYWN0b3Jpbmcgb2YgQ0NRdWFkQ3VsbGVyIC0gZXh0cmFjdGVkIGludGVy
ZmFjZQorICAgICAgICAoQ0NRdWFkU2luaykgYW5kIHVuaXRlZCBhcHBlbmQoKSBhbmQgYXBwZW5k
U3VyZmFjZSgpIG1ldGhvZHMuCisKKyAgICAgICAgQWRkZWQgdW5pdCB0ZXN0cyB0byB2ZXJpZnkg
dGhpcyBmaXg7IGFsc28gYWRkZWQgdGVzdCB0byB0cnkKKyAgICAgICAgY2xpcHBpbmcgaW5zdGVh
ZCBvZiBvY2NsdXNpb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoTGF5ZXJSZW5kZXJlckNocm9taXVt
OjpDYWNoZWRUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1
bTo6Q2FjaGVkVGV4dHVyZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6Q2FjaGVkVGV4dHVyZTo6fkNhY2hlZFRleHR1cmUpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpDYWNoZWRUZXh0dXJlOjppc0NvbXBsZXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Q2FjaGVkVGV4dHVyZTo6
c2V0SXNDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06
OkNhY2hlZFRleHR1cmU6OkNhY2hlZFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRlY2lkZVJlbmRlclBhc3NBbGxv
Y2F0aW9uc0ZvckZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1
bTo6aGF2ZUNhY2hlZFJlc291cmNlc0ZvclJlbmRlclBhc3NJZCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdSZW5kZXJQYXNzUXVhZCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmg6CisgICAg
ICAgIChMYXllclJlbmRlcmVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNDSU9TdXJmYWNlTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuaDoKKyAgICAgICAgKEND
SU9TdXJmYWNlTGF5ZXJJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6YXBw
ZW5kRGVidWdCb3JkZXJRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVySW1wbC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ0xheWVySW1wbDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAoQ0NMYXllckltcGwpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjo6OnVub2NjbHVkZWRDb250ZW50UmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjo6OnVub2NjbHVkZWRDb250cmlidXRpbmdTdXJmYWNlQ29udGVudFJlY3QpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NPY2NsdXNpb25UcmFja2VyLmg6CisgICAgICAgIChDQ09jY2x1c2lvblRyYWNrZXJCYXNl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NRdWFkQ3VsbGVyOjpDQ1F1YWRDdWxsZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NRdWFkQ3VsbGVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5oOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChDQ1F1YWRDdWxsZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NRdWFkQ3VsbGVy
Ojp+Q0NRdWFkQ3VsbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUXVhZEN1bGxlcjo6aGFzRXh0
ZXJuYWxPY2NsdXNpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUXVhZFNpbmsuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKENDUXVhZFNpbmspOgorICAgICAgICAoV2ViQ29yZTo6Q0NRdWFkU2luazo6fkNDUXVh
ZFNpbmspOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVy
UGFzcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3M6OkNDUmVuZGVyUGFzcyk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3M6OmFwcGVuZFF1YWRzRm9yTGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJQYXNzOjphcHBlbmRRdWFkc0ZvclJlbmRlclN1cmZh
Y2VMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5k
ZXJQYXNzRHJhd1F1YWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJQYXNzRHJhd1F1
YWQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3NEcmF3UXVhZDo6Q0NS
ZW5kZXJQYXNzRHJhd1F1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmg6CisgICAgICAgIChDQ1JlbmRlclBhc3NEcmF3UXVh
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3NEcmF3UXVhZDo6aGFzRXh0ZXJuYWxP
Y2NsdXNpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVu
ZGVyU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZhY2U6OkNDUmVu
ZGVyU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZhY2U6OmFwcGVuZFF1
YWRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1
cmZhY2UuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJT
dXJmYWNlOjpzZXRIYXNFeHRlcm5hbE9jY2x1c2lvbik6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jl
bmRlclN1cmZhY2U6Omhhc0V4dGVybmFsT2NjbHVzaW9uKToKKyAgICAgICAgKENDUmVuZGVyU3Vy
ZmFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxi
YXJMYXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY3JvbGxiYXJMYXllckltcGw6
OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1Njcm9sbGJhckxheWVySW1wbC5oOgorICAgICAgICAoQ0NTY3JvbGxiYXJMYXllckltcGwpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxheWVy
SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NvbGlkQ29sb3JMYXllckltcGw6OmFwcGVu
ZFF1YWRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlk
Q29sb3JMYXllckltcGwuaDoKKyAgICAgICAgKENDU29saWRDb2xvckxheWVySW1wbCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZUxheWVySW1wbDo6YXBwZW5kUXVhZHMpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1w
bC5oOgorICAgICAgICAoQ0NUZXh0dXJlTGF5ZXJJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNDVGlsZWRMYXllckltcGw6OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmg6CisgICAgICAgIChDQ1RpbGVk
TGF5ZXJJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Zp
ZGVvTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVmlkZW9MYXllckltcGw6OmFw
cGVuZFF1YWRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Zp
ZGVvTGF5ZXJJbXBsLmg6CisgICAgICAgIChDQ1ZpZGVvTGF5ZXJJbXBsKToKKwogMjAxMi0wNy0x
NyAgRW1pbCBBIEVrbHVuZCAgPGVhZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW5jb3JyZWN0
IG9mZnNldCB1c2VkIGZvciBzY3JvbGxXaWR0aC9IZWlnaHQgY2FsY3VsYXRpb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKaW5kZXggZjExNTE5ODk5YjBjMmQ1MmRhYTUzYTcxMDhhNzc0NTc4OTc5
YmIxNi4uOWE0NTc4YWQ3ZjU5NGE3MTg2NTcyN2NlYmY0MjY0YTA5OTg5NWVjYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0wNy0xNyAgWmVldiBMaWVi
ZXIgIDx6bGllYmVyQGNocm9taXVtLm9yZz4KKworICAgICAgICBUZXh0dXJlcyBkcmF3biBkdXJp
bmcgb2NjbHVzaW9uIGFyZSBpbmNvcnJlY3RseSByZS11c2VkIHdoZW4gdW5vY2NsdWRlZC4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxNTM3CisKKyAg
ICAgICAgQWRkZWQgdW5pdCB0ZXN0cyB0byB0ZXN0IHRleHR1cmUgY2FjaGluZyB3aXRoIGNsaXBw
aW5nIGFuZAorICAgICAgICBvY2NsdXNpb24uIFJlbW92ZWQgc29tZSBtaW5vciBjb2RlIGR1cGxp
Y2F0aW9uIHdoZW4gaW5pdGlhbGl6aW5nCisgICAgICAgIGxheWVycyBmb3IgdmFyaW91cyBzY2Vu
YXJpb3MuCisKKyAgICAgICAgTW9ja0NDUXVhZEN1bGxlciBjYW4gbm93IGltcGxlbWVudCBDQ1F1
YWRTaW5rLgorCisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwOgor
ICAgICAgICAqIHRlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL01v
Y2tDQ1F1YWRDdWxsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDQ1F1YWRDdWxsZXI6Ok1v
Y2tDQ1F1YWRDdWxsZXIpOgorCiAyMDEyLTA3LTE3ICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gIFJvbGxlZCBERVBTLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNo
cm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggYTcyNjc0MTQwZWFjNDA3YTI3MmI1ZjRiZGFk
NjYxNWU1NGJhNTQxYS4uMzMxZWQ2YWNmNDMyNzgxNDZjZTk1ZDc5ZTE0NjJhZjlhY2ExYTBkMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJSZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC0xMzMsNiArMTMzLDI2
IEBAIHByb3RlY3RlZDoKIAogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKK2NsYXNzIExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6Q2FjaGVkVGV4dHVyZSA6IHB1YmxpYyBDQ1Njb3BlZFRleHR1cmUg
eworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENhY2hlZFRleHR1cmUpOworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzT3duUHRyPENhY2hlZFRleHR1cmU+IGNyZWF0ZShUZXh0dXJlQWxsb2NhdG9y
KiBhbGxvY2F0b3IpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBDYWNoZWRUZXh0dXJlKGFsbG9jYXRv
cikpOyB9CisgICAgdmlydHVhbCB+Q2FjaGVkVGV4dHVyZSgpIHsgfQorCisgICAgYm9vbCBpc0Nv
bXBsZXRlKCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbXBsZXRlOyB9CisgICAgdm9pZCBzZXRJc0Nv
bXBsZXRlKGJvb2wgaXNDb21wbGV0ZSkgeyBtX2lzQ29tcGxldGUgPSBpc0NvbXBsZXRlOyB9CisK
K3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBDYWNoZWRUZXh0dXJlKFRleHR1cmVBbGxvY2F0b3Iq
IGFsbG9jYXRvcikKKyAgICAgICAgOiBDQ1Njb3BlZFRleHR1cmUoYWxsb2NhdG9yKSwKKyAgICAg
ICAgICBtX2lzQ29tcGxldGUoZmFsc2UpCisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICBi
b29sIG1faXNDb21wbGV0ZTsKK307CisKIFBhc3NPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9taXVt
PiBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNyZWF0ZShDQ1JlbmRlcmVyQ2xpZW50KiBjbGllbnQs
IFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlVXBsb2FkZXJPcHRpb24gdGV4
dHVyZVVwbG9hZGVyU2V0dGluZykKIHsKICAgICBPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9taXVt
PiBsYXllclJlbmRlcmVyKGFkb3B0UHRyKG5ldyBMYXllclJlbmRlcmVyQ2hyb21pdW0oY2xpZW50
LCBjb250ZXh0LCB0ZXh0dXJlVXBsb2FkZXJTZXR0aW5nKSkpOwpAQCAtMzE4LDcgKzMzOCw3IEBA
IHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkZWNpZGVSZW5kZXJQYXNzQWxsb2NhdGlvbnNG
b3JGcmFtZShjb25zdCBDQ1JlbmRlclBhCiAgICAgICAgIHBhc3Nlc0luRnJhbWUuc2V0KHJlbmRl
clBhc3Nlc0luRHJhd09yZGVyW2ldLT5pZCgpLCByZW5kZXJQYXNzZXNJbkRyYXdPcmRlcltpXSk7
CiAKICAgICBWZWN0b3I8aW50PiBwYXNzZXNUb0RlbGV0ZTsKLSAgICBIYXNoTWFwPGludCwgT3du
UHRyPENDU2NvcGVkVGV4dHVyZT4gPjo6Y29uc3RfaXRlcmF0b3IgcGFzc0l0ZXJhdG9yOworICAg
IEhhc2hNYXA8aW50LCBPd25QdHI8Q2FjaGVkVGV4dHVyZT4gPjo6Y29uc3RfaXRlcmF0b3IgcGFz
c0l0ZXJhdG9yOwogICAgIGZvciAocGFzc0l0ZXJhdG9yID0gbV9yZW5kZXJQYXNzVGV4dHVyZXMu
YmVnaW4oKTsgcGFzc0l0ZXJhdG9yICE9IG1fcmVuZGVyUGFzc1RleHR1cmVzLmVuZCgpOyArK3Bh
c3NJdGVyYXRvcikgewogICAgICAgICBjb25zdCBDQ1JlbmRlclBhc3MqIHJlbmRlclBhc3NJbkZy
YW1lID0gcGFzc2VzSW5GcmFtZS5nZXQocGFzc0l0ZXJhdG9yLT5maXJzdCk7CiAgICAgICAgIGlm
ICghcmVuZGVyUGFzc0luRnJhbWUpIHsKQEAgLTMyOCw3ICszNDgsNyBAQCB2b2lkIExheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6ZGVjaWRlUmVuZGVyUGFzc0FsbG9jYXRpb25zRm9yRnJhbWUoY29uc3Qg
Q0NSZW5kZXJQYQogCiAgICAgICAgIGNvbnN0IEludFNpemUmIHJlcXVpcmVkU2l6ZSA9IHJlbmRl
clBhc3NUZXh0dXJlU2l6ZShyZW5kZXJQYXNzSW5GcmFtZSk7CiAgICAgICAgIEdDM0RlbnVtIHJl
cXVpcmVkRm9ybWF0ID0gcmVuZGVyUGFzc1RleHR1cmVGb3JtYXQocmVuZGVyUGFzc0luRnJhbWUp
OwotICAgICAgICBDQ1Njb3BlZFRleHR1cmUqIHRleHR1cmUgPSBwYXNzSXRlcmF0b3ItPnNlY29u
ZC5nZXQoKTsKKyAgICAgICAgQ2FjaGVkVGV4dHVyZSogdGV4dHVyZSA9IHBhc3NJdGVyYXRvci0+
c2Vjb25kLmdldCgpOwogICAgICAgICBBU1NFUlQodGV4dHVyZSk7CiAKICAgICAgICAgaWYgKHRl
eHR1cmUtPmlkKCkgJiYgKHRleHR1cmUtPnNpemUoKSAhPSByZXF1aXJlZFNpemUgfHwgdGV4dHVy
ZS0+Zm9ybWF0KCkgIT0gcmVxdWlyZWRGb3JtYXQpKQpAQCAtMzQxLDcgKzM2MSw3IEBAIHZvaWQg
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkZWNpZGVSZW5kZXJQYXNzQWxsb2NhdGlvbnNGb3JGcmFt
ZShjb25zdCBDQ1JlbmRlclBhCiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlbmRlclBh
c3Nlc0luRHJhd09yZGVyLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmICghbV9yZW5kZXJQYXNz
VGV4dHVyZXMuY29udGFpbnMocmVuZGVyUGFzc2VzSW5EcmF3T3JkZXJbaV0tPmlkKCkpKSB7Ci0g
ICAgICAgICAgICBPd25QdHI8Q0NTY29wZWRUZXh0dXJlPiB0ZXh0dXJlID0gQ0NTY29wZWRUZXh0
dXJlOjpjcmVhdGUobV9pbXBsVGV4dHVyZUFsbG9jYXRvci5nZXQoKSk7CisgICAgICAgICAgICBP
d25QdHI8Q2FjaGVkVGV4dHVyZT4gdGV4dHVyZSA9IENhY2hlZFRleHR1cmU6OmNyZWF0ZShtX2lt
cGxUZXh0dXJlQWxsb2NhdG9yLmdldCgpKTsKICAgICAgICAgICAgIG1fcmVuZGVyUGFzc1RleHR1
cmVzLnNldChyZW5kZXJQYXNzZXNJbkRyYXdPcmRlcltpXS0+aWQoKSwgdGV4dHVyZS5yZWxlYXNl
KCkpOwogICAgICAgICB9CiAgICAgfQpAQCAtMzQ5LDggKzM2OSw4IEBAIHZvaWQgTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpkZWNpZGVSZW5kZXJQYXNzQWxsb2NhdGlvbnNGb3JGcmFtZShjb25zdCBD
Q1JlbmRlclBhCiAKIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpoYXZlQ2FjaGVkUmVzb3Vy
Y2VzRm9yUmVuZGVyUGFzc0lkKGludCBpZCkgY29uc3QKIHsKLSAgICBDQ1Njb3BlZFRleHR1cmUq
IHRleHR1cmUgPSBtX3JlbmRlclBhc3NUZXh0dXJlcy5nZXQoaWQpOwotICAgIHJldHVybiB0ZXh0
dXJlICYmIHRleHR1cmUtPmlkKCk7CisgICAgQ2FjaGVkVGV4dHVyZSogdGV4dHVyZSA9IG1fcmVu
ZGVyUGFzc1RleHR1cmVzLmdldChpZCk7CisgICAgcmV0dXJuIHRleHR1cmUgJiYgdGV4dHVyZS0+
aWQoKSAmJiB0ZXh0dXJlLT5pc0NvbXBsZXRlKCk7CiB9CiAKIHZvaWQgTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpiZWdpbkRyYXdpbmdGcmFtZShjb25zdCBDQ1JlbmRlclBhc3MqIHJvb3RSZW5kZXJQ
YXNzKQpAQCAtNTk0LDcgKzYxNCw3IEBAIFBhc3NPd25QdHI8Q0NTY29wZWRUZXh0dXJlPiBMYXll
clJlbmRlcmVyQ2hyb21pdW06OmRyYXdCYWNrZ3JvdW5kRmlsdGVycyhjb25zdCBDCiAKIHZvaWQg
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UmVuZGVyUGFzc1F1YWQoY29uc3QgQ0NSZW5kZXJQ
YXNzRHJhd1F1YWQqIHF1YWQpCiB7Ci0gICAgQ0NTY29wZWRUZXh0dXJlKiBjb250ZW50c1RleHR1
cmUgPSBtX3JlbmRlclBhc3NUZXh0dXJlcy5nZXQocXVhZC0+cmVuZGVyUGFzc0lkKCkpOworICAg
IENhY2hlZFRleHR1cmUqIGNvbnRlbnRzVGV4dHVyZSA9IG1fcmVuZGVyUGFzc1RleHR1cmVzLmdl
dChxdWFkLT5yZW5kZXJQYXNzSWQoKSk7CiAgICAgaWYgKCFjb250ZW50c1RleHR1cmUgfHwgIWNv
bnRlbnRzVGV4dHVyZS0+aWQoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xMzc4LDkgKzEzOTgs
MTEgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnVzZVJlbmRlclBhc3MoY29uc3QgQ0NS
ZW5kZXJQYXNzKiByZW5kZXJQYXNzKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAg
ICBDQ1Njb3BlZFRleHR1cmUqIHRleHR1cmUgPSBtX3JlbmRlclBhc3NUZXh0dXJlcy5nZXQocmVu
ZGVyUGFzcy0+aWQoKSk7CisgICAgQ2FjaGVkVGV4dHVyZSogdGV4dHVyZSA9IG1fcmVuZGVyUGFz
c1RleHR1cmVzLmdldChyZW5kZXJQYXNzLT5pZCgpKTsKICAgICBBU1NFUlQodGV4dHVyZSk7CiAK
KyAgICB0ZXh0dXJlLT5zZXRJc0NvbXBsZXRlKCFyZW5kZXJQYXNzLT5oYXNPY2NsdXNpb25Gcm9t
T3V0c2lkZVRhcmdldFN1cmZhY2UoKSk7CisKICAgICBpZiAoIXRleHR1cmUtPmlkKCkgJiYgIXRl
eHR1cmUtPmFsbG9jYXRlKHJlbmRlclBhc3NUZXh0dXJlU2l6ZShyZW5kZXJQYXNzKSwgcmVuZGVy
UGFzc1RleHR1cmVGb3JtYXQocmVuZGVyUGFzcykpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKaW5kZXggNDE1NTIwZDdmZDllOTM4MWU2
NWU1MDNmYTliNzNmYjVmOWQ5OGNjZC4uNzY4ZDFkZjgyYjE1YTM2ZmUzZWJjYzk0ODZkZmRhMjIy
YTg4ZWE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKQEAgLTE4MCw2ICsx
ODAsOCBAQCBwcml2YXRlOgogICAgIE93blB0cjxHZW9tZXRyeUJpbmRpbmc+IG1fc2hhcmVkR2Vv
bWV0cnk7CiAgICAgRmxvYXRRdWFkIG1fc2hhcmVkR2VvbWV0cnlRdWFkOwogCisgICAgY2xhc3Mg
Q2FjaGVkVGV4dHVyZTsKKwogICAgIC8vIFRoaXMgYmxvY2sgb2YgYmluZGluZ3MgZGVmaW5lcyBh
bGwgb2YgdGhlIHByb2dyYW1zIHVzZWQgYnkgdGhlIGNvbXBvc2l0b3IgaXRzZWxmLgogCiAgICAg
Ly8gVGlsZWQgbGF5ZXIgc2hhZGVycy4KQEAgLTI2NSw3ICsyNjcsNyBAQCBwcml2YXRlOgogICAg
IE93blB0cjxUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I+IG1fY29udGVudHNUZXh0dXJlQWxsb2Nh
dG9yOwogICAgIE93blB0cjxUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I+IG1faW1wbFRleHR1cmVB
bGxvY2F0b3I7CiAKLSAgICBIYXNoTWFwPGludCwgT3duUHRyPENDU2NvcGVkVGV4dHVyZT4gPiBt
X3JlbmRlclBhc3NUZXh0dXJlczsKKyAgICBIYXNoTWFwPGludCwgT3duUHRyPENhY2hlZFRleHR1
cmU+ID4gbV9yZW5kZXJQYXNzVGV4dHVyZXM7CiAKICAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29u
dGV4dDNEKiBtX2NvbnRleHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlTGF5ZXJJbXBs
LmNwcAppbmRleCBkMTE1N2VkMDM3OTc5ODE1NGFkMTE3YThlMjljMmMzNDA5MDExYTMyLi5iNDBk
NThjNDBkNjA1MjM2MDk0YjM5ZDBhNjc4MDE4NTY4NDg5ZThjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVySW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NJT1N1cmZhY2VMYXllckltcGwuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSAiY2Mv
Q0NHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJjYy9DQ0lPU3VyZmFjZURyYXdRdWFkLmgi
CiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIgotI2luY2x1ZGUgImNjL0NDUXVh
ZEN1bGxlci5oIgorI2luY2x1ZGUgImNjL0NDUXVhZFNpbmsuaCIKICNpbmNsdWRlIDxwdWJsaWMv
V2ViR3JhcGhpY3NDb250ZXh0M0QuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtOTYsNyAr
OTYsNyBAQCB2b2lkIENDSU9TdXJmYWNlTGF5ZXJJbXBsOjp3aWxsRHJhdyhDQ1JlbmRlcmVyKiBs
YXllclJlbmRlcmVyLCBDQ0dyYXBoaWNzQ29udGV4dAogICAgIH0KIH0KIAotdm9pZCBDQ0lPU3Vy
ZmFjZUxheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3Qg
Q0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCYpCit2b2lkIENDSU9TdXJm
YWNlTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkTGlzdCwgY29uc3QgQ0NT
aGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCYpCiB7CiAgICAgSW50UmVjdCBx
dWFkUmVjdChJbnRQb2ludCgpLCBjb250ZW50Qm91bmRzKCkpOwogICAgIHF1YWRMaXN0LmFwcGVu
ZChDQ0lPU3VyZmFjZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwg
bV9pb1N1cmZhY2VTaXplLCBtX2lvU3VyZmFjZVRleHR1cmVJZCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXll
ckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
SU9TdXJmYWNlTGF5ZXJJbXBsLmgKaW5kZXggMjhhMzVjZDBmMjA4M2E4NjIxMDE3MTg3OWMxYjky
NmI1MmJkMDRlMi4uZTQ3MTMxYmI2NzJjY2ZmZTA2ZmUzMzg2NTg0MjA4YTc0Zjk5MWU5OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJ
T1N1cmZhY2VMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVySW1wbC5oCkBAIC00MSw3ICs0MSw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgc2V0SU9TdXJmYWNlUHJvcGVydGllcyh1bnNpZ25lZCBpb1N1cmZh
Y2VJZCwgY29uc3QgSW50U2l6ZSYpOwogCi0gICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKEND
UXVhZEN1bGxlciYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgYm9vbCYgaGFkTWlzc2luZ1Rp
bGVzKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYs
IGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVSUklE
RTsKIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhDQ1JlbmRlcmVyKiwgQ0NHcmFwaGljc0Nv
bnRleHQqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkTG9zZUNvbnRleHQoKSBPVkVS
UklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAppbmRleCA5NDM0ZGM1OWNkOGU5ZTU4NTYyZjRm
NmI2MGI0OWVkNmQwNmZmZjUyLi5kMTA5MDlkN2FjOTExMTA4ZGFkYTFlMzllYjg3ZGEzNzA1ZWI3
N2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVk
ZSAiY2MvQ0NMYXllclNvcnRlci5oIgogI2luY2x1ZGUgImNjL0NDTWF0aFV0aWwuaCIKICNpbmNs
dWRlICJjYy9DQ1Byb3h5LmgiCi0jaW5jbHVkZSAiY2MvQ0NRdWFkQ3VsbGVyLmgiCisjaW5jbHVk
ZSAiY2MvQ0NRdWFkU2luay5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiB1
c2luZyBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4OwpAQCAtMTc0LDcgKzE3NCw3IEBA
IHZvaWQgQ0NMYXllckltcGw6OmRpZERyYXcoKQogI2VuZGlmCiB9CiAKLXZvaWQgQ0NMYXllcklt
cGw6OmFwcGVuZERlYnVnQm9yZGVyUXVhZChDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBD
Q1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlKSBjb25zdAordm9pZCBDQ0xheWVySW1w
bDo6YXBwZW5kRGVidWdCb3JkZXJRdWFkKENDUXVhZFNpbmsmIHF1YWRMaXN0LCBjb25zdCBDQ1No
YXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlKSBjb25zdAogewogICAgIGlmICghaGFzRGVi
dWdCb3JkZXJzKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCmluZGV4IGE1
Y2FjZDY0YmZmNGE2MTRiYzM1MTEwMWIwNWQwYzI4NzBkMTFmYmMuLjc1N2Y5YzBlZThmODg2YTc2
ZjE4Y2M3YjU5YjIxOWU5NmE1NTE0ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaApAQCAtNDcsOCAr
NDcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDQ0dyYXBoaWNzQ29udGV4dDsKIGNs
YXNzIENDTGF5ZXJTb3J0ZXI7CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsOwotY2xhc3MgQ0NR
dWFkQ3VsbGVyOwogY2xhc3MgQ0NSZW5kZXJlcjsKK2NsYXNzIENDUXVhZFNpbms7CiBjbGFzcyBM
YXllckNocm9taXVtOwogCiBjbGFzcyBDQ0xheWVySW1wbCA6IHB1YmxpYyBDQ0xheWVyQW5pbWF0
aW9uQ29udHJvbGxlckNsaWVudCB7CkBAIC05Myw5ICs5Myw5IEBAIHB1YmxpYzoKICAgICAvLyB0
aGUgbGF5ZXIgaXMgZGVzdHJveWVkLiBUbyBlbmZvcmNlIHRoaXMsIGFueSBjbGFzcyB0aGF0IG92
ZXJyaWRlcwogICAgIC8vIHdpbGxEcmF3L2RpZERyYXcgbXVzdCBjYWxsIHRoZSBiYXNlIGNsYXNz
IHZlcnNpb24uCiAgICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3KENDUmVuZGVyZXIqLCBDQ0dyYXBo
aWNzQ29udGV4dCopOwotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXIm
LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZFNpbmsmLCBjb25zdCBDQ1NoYXJlZFF1
YWRTdGF0ZSosIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRp
ZERyYXcoKTsKLSAgICB2b2lkIGFwcGVuZERlYnVnQm9yZGVyUXVhZChDQ1F1YWRDdWxsZXImLCBj
b25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSopIGNvbnN0OworICAgIHZvaWQgYXBwZW5kRGVidWdCb3Jk
ZXJRdWFkKENDUXVhZFNpbmsmLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSopIGNvbnN0OwogCiAg
ICAgdmlydHVhbCB1bnNpZ25lZCBjb250ZW50c1RleHR1cmVJZCgpIGNvbnN0OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1
c2lvblRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNwcAppbmRleCAwZDAxNTkzY2Y4NzNiZTY3MmQzN2Fl
Nzc4YjQ4ZjdjYTdkMTk5ZTJkLi5hNjgzNzkyZTUxMWYzMDFhNzk0MzJkMjZhZTQxMjg2MWU0MWM5
N2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5jcHAKQEAgLTQxNyw3ICs0
MTcsNyBAQCBzdGF0aWMgaW5saW5lIEludFJlY3QgY29tcHV0ZVVub2NjbHVkZWRDb250ZW50UmVj
dChjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgYwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBM
YXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlPgotSW50UmVjdCBDQ09jY2x1c2lv
blRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+Ojp1bm9jY2x1ZGVkQ29u
dGVudFJlY3QoY29uc3QgTGF5ZXJUeXBlKiBsYXllciwgY29uc3QgSW50UmVjdCYgY29udGVudFJl
Y3QpIGNvbnN0CitJbnRSZWN0IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5k
ZXJTdXJmYWNlVHlwZT46OnVub2NjbHVkZWRDb250ZW50UmVjdChjb25zdCBMYXllclR5cGUqIGxh
eWVyLCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgYm9vbCogaGFzT2NjbHVzaW9uRnJvbU91
dHNpZGVUYXJnZXRTdXJmYWNlKSBjb25zdAogewogICAgIEFTU0VSVCghbV9zdGFjay5pc0VtcHR5
KCkpOwogICAgIGlmIChtX3N0YWNrLmlzRW1wdHkoKSkKQEAgLTQ0MSwxMSArNDQxLDE0IEBAIElu
dFJlY3QgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBl
Pjo6dW5vY2NsdWRlZENvbnRlbnRSCiAgICAgaWYgKGxheWVyVHJhbnNmb3Jtc1RvVGFyZ2V0S25v
d24obGF5ZXIpKQogICAgICAgICB1bm9jY2x1ZGVkSW5UYXJnZXQgPSBjb21wdXRlVW5vY2NsdWRl
ZENvbnRlbnRSZWN0KGNvbnRlbnRSZWN0LCBjb250ZW50VG9UYXJnZXRTdXJmYWNlVHJhbnNmb3Jt
PExheWVyVHlwZT4obGF5ZXIpLCBsYXllclNjaXNzb3JSZWN0SW5UYXJnZXRTdXJmYWNlKGxheWVy
KSwgbV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5UYXJnZXQpOwogCisgICAgaWYgKGhhc09jY2x1
c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSkKKyAgICAgICAgKmhhc09jY2x1c2lvbkZyb21P
dXRzaWRlVGFyZ2V0U3VyZmFjZSA9ICh1bm9jY2x1ZGVkSW5TY3JlZW4gIT0gdW5vY2NsdWRlZElu
VGFyZ2V0KTsKKwogICAgIHJldHVybiBpbnRlcnNlY3Rpb24odW5vY2NsdWRlZEluU2NyZWVuLCB1
bm9jY2x1ZGVkSW5UYXJnZXQpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5
cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlPgotSW50UmVjdCBDQ09jY2x1c2lvblRyYWNrZXJCYXNl
PExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+Ojp1bm9jY2x1ZGVkQ29udHJpYnV0aW5nU3Vy
ZmFjZUNvbnRlbnRSZWN0KGNvbnN0IExheWVyVHlwZSogbGF5ZXIsIGJvb2wgZm9yUmVwbGljYSwg
Y29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpIGNvbnN0CitJbnRSZWN0IENDT2NjbHVzaW9uVHJh
Y2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46OnVub2NjbHVkZWRDb250cmli
dXRpbmdTdXJmYWNlQ29udGVudFJlY3QoY29uc3QgTGF5ZXJUeXBlKiBsYXllciwgYm9vbCBmb3JS
ZXBsaWNhLCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgYm9vbCogaGFzT2NjbHVzaW9uRnJv
bU91dHNpZGVUYXJnZXRTdXJmYWNlKSBjb25zdAogewogICAgIEFTU0VSVCghbV9zdGFjay5pc0Vt
cHR5KCkpOwogICAgIC8vIFRoZSBsYXllciBpcyBhIGNvbnRyaWJ1dGluZyByZW5kZXJUYXJnZXQg
c28gaXQgc2hvdWxkIGhhdmUgYSBzdXJmYWNlLgpAQCAtNDk2LDYgKzQ5OSw5IEBAIEludFJlY3Qg
Q0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6dW5v
Y2NsdWRlZENvbnRyaWJ1CiAgICAgICAgICAgICB1bm9jY2x1ZGVkSW5UYXJnZXQgPSBjb21wdXRl
VW5vY2NsdWRlZENvbnRlbnRSZWN0KGNvbnRlbnRSZWN0LCB0cmFuc2Zvcm1Ub1RhcmdldCwgc3Vy
ZmFjZUNsaXBSZWN0LCBSZWdpb24oKSk7CiAgICAgfQogCisgICAgaWYgKGhhc09jY2x1c2lvbkZy
b21PdXRzaWRlVGFyZ2V0U3VyZmFjZSkKKyAgICAgICAgKmhhc09jY2x1c2lvbkZyb21PdXRzaWRl
VGFyZ2V0U3VyZmFjZSA9ICh1bm9jY2x1ZGVkSW5TY3JlZW4gIT0gdW5vY2NsdWRlZEluVGFyZ2V0
KTsKKwogICAgIHJldHVybiBpbnRlcnNlY3Rpb24odW5vY2NsdWRlZEluU2NyZWVuLCB1bm9jY2x1
ZGVkSW5UYXJnZXQpOwogfQogCkBAIC01MTgsOCArNTI0LDggQEAgdGVtcGxhdGUgdm9pZCBDQ09j
Y2x1c2lvblRyYWNrZXJCYXNlPExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1bT46
OmZpbmkKIHRlbXBsYXRlIHZvaWQgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllckNocm9taXVt
LCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+OjpsZWF2ZVRvUmVuZGVyVGFyZ2V0KGNvbnN0IExheWVy
Q2hyb21pdW0qIG5ld1RhcmdldCk7CiB0ZW1wbGF0ZSB2b2lkIENDT2NjbHVzaW9uVHJhY2tlckJh
c2U8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9taXVtPjo6bWFya09jY2x1ZGVkQmVo
aW5kTGF5ZXIoY29uc3QgTGF5ZXJDaHJvbWl1bSopOwogdGVtcGxhdGUgYm9vbCBDQ09jY2x1c2lv
blRyYWNrZXJCYXNlPExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1bT46Om9jY2x1
ZGVkKGNvbnN0IExheWVyQ2hyb21pdW0qLCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkgY29u
c3Q7Ci10ZW1wbGF0ZSBJbnRSZWN0IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJDaHJvbWl1
bSwgUmVuZGVyU3VyZmFjZUNocm9taXVtPjo6dW5vY2NsdWRlZENvbnRlbnRSZWN0KGNvbnN0IExh
eWVyQ2hyb21pdW0qLCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkgY29uc3Q7Ci10ZW1wbGF0
ZSBJbnRSZWN0IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3Vy
ZmFjZUNocm9taXVtPjo6dW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChj
b25zdCBMYXllckNocm9taXVtKiwgYm9vbCBmb3JSZXBsaWNhLCBjb25zdCBJbnRSZWN0JiBjb250
ZW50UmVjdCkgY29uc3Q7Cit0ZW1wbGF0ZSBJbnRSZWN0IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8
TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9taXVtPjo6dW5vY2NsdWRlZENvbnRlbnRS
ZWN0KGNvbnN0IExheWVyQ2hyb21pdW0qLCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgYm9v
bCogaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKSBjb25zdDsKK3RlbXBsYXRl
IEludFJlY3QgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllckNocm9taXVtLCBSZW5kZXJTdXJm
YWNlQ2hyb21pdW0+Ojp1bm9jY2x1ZGVkQ29udHJpYnV0aW5nU3VyZmFjZUNvbnRlbnRSZWN0KGNv
bnN0IExheWVyQ2hyb21pdW0qLCBib29sIGZvclJlcGxpY2EsIGNvbnN0IEludFJlY3QmIGNvbnRl
bnRSZWN0LCBib29sKiBoYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UpIGNvbnN0
OwogdGVtcGxhdGUgSW50UmVjdCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyQ2hyb21pdW0s
IFJlbmRlclN1cmZhY2VDaHJvbWl1bT46OmxheWVyU2Npc3NvclJlY3RJblRhcmdldFN1cmZhY2Uo
Y29uc3QgTGF5ZXJDaHJvbWl1bSopIGNvbnN0OwogCiB0ZW1wbGF0ZSBDQ09jY2x1c2lvblRyYWNr
ZXJCYXNlPENDTGF5ZXJJbXBsLCBDQ1JlbmRlclN1cmZhY2U+OjpDQ09jY2x1c2lvblRyYWNrZXJC
YXNlKEludFJlY3Qgc2Npc3NvclJlY3RJblNjcmVlblNwYWNlLCBib29sIHJlY29yZE1ldHJpY3NG
b3JGcmFtZSk7CkBAIC01MzAsOCArNTM2LDggQEAgdGVtcGxhdGUgdm9pZCBDQ09jY2x1c2lvblRy
YWNrZXJCYXNlPENDTGF5ZXJJbXBsLCBDQ1JlbmRlclN1cmZhY2U+OjpmaW5pc2hlZFJlbmQKIHRl
bXBsYXRlIHZvaWQgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxDQ0xheWVySW1wbCwgQ0NSZW5kZXJT
dXJmYWNlPjo6bGVhdmVUb1JlbmRlclRhcmdldChjb25zdCBDQ0xheWVySW1wbCogbmV3VGFyZ2V0
KTsKIHRlbXBsYXRlIHZvaWQgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxDQ0xheWVySW1wbCwgQ0NS
ZW5kZXJTdXJmYWNlPjo6bWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoY29uc3QgQ0NMYXllckltcGwq
KTsKIHRlbXBsYXRlIGJvb2wgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxDQ0xheWVySW1wbCwgQ0NS
ZW5kZXJTdXJmYWNlPjo6b2NjbHVkZWQoY29uc3QgQ0NMYXllckltcGwqLCBjb25zdCBJbnRSZWN0
JiBjb250ZW50UmVjdCkgY29uc3Q7Ci10ZW1wbGF0ZSBJbnRSZWN0IENDT2NjbHVzaW9uVHJhY2tl
ckJhc2U8Q0NMYXllckltcGwsIENDUmVuZGVyU3VyZmFjZT46OnVub2NjbHVkZWRDb250ZW50UmVj
dChjb25zdCBDQ0xheWVySW1wbCosIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KSBjb25zdDsK
LXRlbXBsYXRlIEludFJlY3QgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxDQ0xheWVySW1wbCwgQ0NS
ZW5kZXJTdXJmYWNlPjo6dW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChj
b25zdCBDQ0xheWVySW1wbCosIGJvb2wgZm9yUmVwbGljYSwgY29uc3QgSW50UmVjdCYgY29udGVu
dFJlY3QpIGNvbnN0OwordGVtcGxhdGUgSW50UmVjdCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPEND
TGF5ZXJJbXBsLCBDQ1JlbmRlclN1cmZhY2U+Ojp1bm9jY2x1ZGVkQ29udGVudFJlY3QoY29uc3Qg
Q0NMYXllckltcGwqLCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgYm9vbCogaGFzT2NjbHVz
aW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKSBjb25zdDsKK3RlbXBsYXRlIEludFJlY3QgQ0NP
Y2NsdXNpb25UcmFja2VyQmFzZTxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlPjo6dW5vY2Ns
dWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChjb25zdCBDQ0xheWVySW1wbCosIGJv
b2wgZm9yUmVwbGljYSwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGJvb2wqIGhhc09jY2x1
c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSkgY29uc3Q7CiB0ZW1wbGF0ZSBJbnRSZWN0IEND
T2NjbHVzaW9uVHJhY2tlckJhc2U8Q0NMYXllckltcGwsIENDUmVuZGVyU3VyZmFjZT46OmxheWVy
U2Npc3NvclJlY3RJblRhcmdldFN1cmZhY2UoY29uc3QgQ0NMYXllckltcGwqKSBjb25zdDsKIAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ09jY2x1c2lvblRyYWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5oCmluZGV4IGFlODU3NTFlYTFmODEyZWFi
NWI0NGU1MDBmYzVhODhiOTdiZmZjNTEuLjU3ZDk0ZDVlYzVlZTJmNzg4ZjBjYzM0YmNlNzIzMzQw
Y2RkN2RjZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5oCkBAIC01NiwxMSAr
NTYsMTEgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gcmVjdCBp
biBjb250ZW50IHNwYWNlIGZvciB0aGUgbGF5ZXIgaXMgZnVsbHkgb2NjbHVkZWQgaW4gZWl0aGVy
IHNjcmVlbiBzcGFjZSBvciB0aGUgbGF5ZXIncyB0YXJnZXQgc3VyZmFjZS4KICAgICBib29sIG9j
Y2x1ZGVkKGNvbnN0IExheWVyVHlwZSosIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KSBjb25z
dDsKICAgICAvLyBHaXZlcyBhbiB1bm9jY2x1ZGVkIHN1Yi1yZWN0IG9mIHxjb250ZW50UmVjdHwg
aW4gdGhlIGNvbnRlbnQgc3BhY2Ugb2YgdGhlIGxheWVyLiBVc2VkIHdoZW4gY29uc2lkZXJpbmcg
b2NjbHVzaW9uIGZvciBhIGxheWVyIHRoYXQgcGFpbnRzL2RyYXdzIHNvbWV0aGluZy4KLSAgICBJ
bnRSZWN0IHVub2NjbHVkZWRDb250ZW50UmVjdChjb25zdCBMYXllclR5cGUqLCBjb25zdCBJbnRS
ZWN0JiBjb250ZW50UmVjdCkgY29uc3Q7CisgICAgSW50UmVjdCB1bm9jY2x1ZGVkQ29udGVudFJl
Y3QoY29uc3QgTGF5ZXJUeXBlKiwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGJvb2wqIGhh
c09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSA9IDApIGNvbnN0OwogCiAgICAgLy8g
R2l2ZXMgYW4gdW5vY2NsdWRlZCBzdWItcmVjdCBvZiB8Y29udGVudFJlY3R8IGluIHRoZSBjb250
ZW50IHNwYWNlIG9mIHRoZSByZW5kZXJUYXJnZXQgb3duZWQgYnkgdGhlIGxheWVyLgogICAgIC8v
IFVzZWQgd2hlbiBjb25zaWRlcmluZyBvY2NsdXNpb24gZm9yIGEgY29udHJpYnV0aW5nIHN1cmZh
Y2UgdGhhdCBpcyByZW5kZXJpbmcgaW50byBhbm90aGVyIHRhcmdldC4KLSAgICBJbnRSZWN0IHVu
b2NjbHVkZWRDb250cmlidXRpbmdTdXJmYWNlQ29udGVudFJlY3QoY29uc3QgTGF5ZXJUeXBlKiwg
Ym9vbCBmb3JSZXBsaWNhLCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkgY29uc3Q7CisgICAg
SW50UmVjdCB1bm9jY2x1ZGVkQ29udHJpYnV0aW5nU3VyZmFjZUNvbnRlbnRSZWN0KGNvbnN0IExh
eWVyVHlwZSosIGJvb2wgZm9yUmVwbGljYSwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGJv
b2wqIGhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSA9IDApIGNvbnN0OwogCiAg
ICAgLy8gUmVwb3J0IG9wZXJhdGlvbnMgZm9yIHJlY29yZGluZyBvdmVyZHJhdyBtZXRyaWNzLgog
ICAgIENDT3ZlcmRyYXdNZXRyaWNzJiBvdmVyZHJhd01ldHJpY3MoKSBjb25zdCB7IHJldHVybiAq
bV9vdmVyZHJhd01ldHJpY3MuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwCmluZGV4
IDY1Zjc4Nzg4ZWQ0OWFlMjQyODVmN2RhY2NlYjcxZGUxZjQ5YTNlZjMuLjA2ODRmM2VlNTU1ZTJm
YmFhYWU0ZjRmZWE5YzQ2YjMwNmJmNWVjZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcApA
QCAtMzMsNyArMzMsOSBAQAogI2luY2x1ZGUgIlNrQ29sb3IuaCIKICNpbmNsdWRlICJjYy9DQ0Rl
YnVnQm9yZGVyRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgorI2luY2x1
ZGUgImNjL0NDT2NjbHVzaW9uVHJhY2tlci5oIgogI2luY2x1ZGUgImNjL0NDT3ZlcmRyYXdNZXRy
aWNzLmgiCisjaW5jbHVkZSAiY2MvQ0NSZW5kZXJQYXNzLmgiCiAjaW5jbHVkZSA8cHVibGljL1dl
YlRyYW5zZm9ybWF0aW9uTWF0cml4Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CkBAIC00Niwx
MSArNDgsMTMgQEAgc3RhdGljIGNvbnN0IGludCBkZWJ1Z1RpbGVCb3JkZXJDb2xvclJlZCA9IDE2
MDsKIHN0YXRpYyBjb25zdCBpbnQgZGVidWdUaWxlQm9yZGVyQ29sb3JHcmVlbiA9IDEwMDsKIHN0
YXRpYyBjb25zdCBpbnQgZGVidWdUaWxlQm9yZGVyQ29sb3JCbHVlID0gMDsKIAotQ0NRdWFkQ3Vs
bGVyOjpDQ1F1YWRDdWxsZXIoQ0NRdWFkTGlzdCYgcXVhZExpc3QsIENDTGF5ZXJJbXBsKiBsYXll
ciwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VySW1wbCogb2NjbHVzaW9uVHJhY2tlciwgYm9vbCBz
aG93Q3VsbGluZ1dpdGhEZWJ1Z0JvcmRlclF1YWRzKQorQ0NRdWFkQ3VsbGVyOjpDQ1F1YWRDdWxs
ZXIoQ0NRdWFkTGlzdCYgcXVhZExpc3QsIENDTGF5ZXJJbXBsKiBsYXllciwgY29uc3QgQ0NPY2Ns
dXNpb25UcmFja2VySW1wbCogb2NjbHVzaW9uVHJhY2tlciwgYm9vbCBzaG93Q3VsbGluZ1dpdGhE
ZWJ1Z0JvcmRlclF1YWRzLCBib29sIGZvclN1cmZhY2UpCiAgICAgOiBtX3F1YWRMaXN0KHF1YWRM
aXN0KQogICAgICwgbV9sYXllcihsYXllcikKICAgICAsIG1fb2NjbHVzaW9uVHJhY2tlcihvY2Ns
dXNpb25UcmFja2VyKQogICAgICwgbV9zaG93Q3VsbGluZ1dpdGhEZWJ1Z0JvcmRlclF1YWRzKHNo
b3dDdWxsaW5nV2l0aERlYnVnQm9yZGVyUXVhZHMpCisgICAgLCBtX2ZvclN1cmZhY2UoZm9yU3Vy
ZmFjZSkKKyAgICAsIG1faGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKGZhbHNl
KQogewogfQogCkBAIC03OCwxMyArODIsMTUgQEAgc3RhdGljIGlubGluZSBib29sIGFwcGVuZFF1
YWRJbnRlcm5hbChQYXNzT3duUHRyPENDRHJhd1F1YWQ+IHBhc3NEcmF3UXVhZCwgY29uc3QKIAog
Ym9vbCBDQ1F1YWRDdWxsZXI6OmFwcGVuZChQYXNzT3duUHRyPENDRHJhd1F1YWQ+IHBhc3NEcmF3
UXVhZCkKIHsKLSAgICBJbnRSZWN0IGN1bGxlZFJlY3QgPSBtX29jY2x1c2lvblRyYWNrZXItPnVu
b2NjbHVkZWRDb250ZW50UmVjdChtX2xheWVyLCBwYXNzRHJhd1F1YWQtPnF1YWRSZWN0KCkpOwot
ICAgIHJldHVybiBhcHBlbmRRdWFkSW50ZXJuYWwocGFzc0RyYXdRdWFkLCBjdWxsZWRSZWN0LCBt
X3F1YWRMaXN0LCAqbV9vY2NsdXNpb25UcmFja2VyLCBtX3Nob3dDdWxsaW5nV2l0aERlYnVnQm9y
ZGVyUXVhZHMpOwotfQorICAgIEludFJlY3QgY3VsbGVkUmVjdDsKKyAgICBib29sIGhhc09jY2x1
c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZTsKKworICAgIGlmIChtX2ZvclN1cmZhY2UpCisg
ICAgICAgIGN1bGxlZFJlY3QgPSBtX29jY2x1c2lvblRyYWNrZXItPnVub2NjbHVkZWRDb250cmli
dXRpbmdTdXJmYWNlQ29udGVudFJlY3QobV9sYXllciwgZmFsc2UsIHBhc3NEcmF3UXVhZC0+cXVh
ZFJlY3QoKSwgJmhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSk7CisgICAgZWxz
ZQorICAgICAgICBjdWxsZWRSZWN0ID0gbV9vY2NsdXNpb25UcmFja2VyLT51bm9jY2x1ZGVkQ29u
dGVudFJlY3QobV9sYXllciwgcGFzc0RyYXdRdWFkLT5xdWFkUmVjdCgpLCAmaGFzT2NjbHVzaW9u
RnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKTsKKyAgICBtX2hhc09jY2x1c2lvbkZyb21PdXRzaWRl
VGFyZ2V0U3VyZmFjZSB8PSBoYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2U7CiAK
LWJvb2wgQ0NRdWFkQ3VsbGVyOjphcHBlbmRTdXJmYWNlKFBhc3NPd25QdHI8Q0NEcmF3UXVhZD4g
cGFzc0RyYXdRdWFkKQotewotICAgIEludFJlY3QgY3VsbGVkUmVjdCA9IG1fb2NjbHVzaW9uVHJh
Y2tlci0+dW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChtX2xheWVyLCBm
YWxzZSwgcGFzc0RyYXdRdWFkLT5xdWFkUmVjdCgpKTsKICAgICByZXR1cm4gYXBwZW5kUXVhZElu
dGVybmFsKHBhc3NEcmF3UXVhZCwgY3VsbGVkUmVjdCwgbV9xdWFkTGlzdCwgKm1fb2NjbHVzaW9u
VHJhY2tlciwgbV9zaG93Q3VsbGluZ1dpdGhEZWJ1Z0JvcmRlclF1YWRzKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFk
Q3VsbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1F1YWRDdWxsZXIuaAppbmRleCAyOTk5YjZhZDVhZjg0NDU1NDI3NGQ0NGUxYjk0NWY2Nzk4N2U1
ZjYwLi43ZjA4MDI3ODI3ZGQ4ZGU1NWM3ODVjMjAwZTU3NTA1YTJjYWEwZDk4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxs
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1F1YWRDdWxsZXIuaApAQCAtMjYsMjcgKzI2LDMzIEBACiAjaWZuZGVmIENDUXVhZEN1bGxlcl9o
CiAjZGVmaW5lIENDUXVhZEN1bGxlcl9oCiAKLSNpbmNsdWRlICJjYy9DQ1JlbmRlclBhc3MuaCIK
KyNpbmNsdWRlICJDQ1F1YWRTaW5rLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEND
TGF5ZXJJbXBsOwotY2xhc3MgQ0NPdmVyZHJhd01ldHJpY3M7CitjbGFzcyBDQ1JlbmRlclN1cmZh
Y2U7CitjbGFzcyBDQ1F1YWRMaXN0OwordGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBl
bmFtZSBTdXJmYWNlVHlwZT4KK2NsYXNzIENDT2NjbHVzaW9uVHJhY2tlckJhc2U7CiAKLWNsYXNz
IENDUXVhZEN1bGxlciB7CitjbGFzcyBDQ1F1YWRDdWxsZXIgOiBwdWJsaWMgQ0NRdWFkU2luayB7
CiBwdWJsaWM6Ci0gICAgLy8gUGFzc2luZyAwIGZvciBDQ092ZXJkcmF3Q291bnRzKiBpcyB2YWxp
ZCwgYW5kIGRpc2FibGUgdGhlIGV4dHJhIGNvbXB1dGF0aW9uCi0gICAgLy8gZG9uZSB0byBlc3Rp
bWF0ZSBvdmVyIGRyYXcgc3RhdGlzdGljcy4KLSAgICBDQ1F1YWRDdWxsZXIoQ0NRdWFkTGlzdCYs
IENDTGF5ZXJJbXBsKiwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VySW1wbCosIGJvb2wgc2hvd0N1
bGxpbmdXaXRoRGVidWdCb3JkZXJRdWFkcyk7CisgICAgQ0NRdWFkQ3VsbGVyKENDUXVhZExpc3Qm
LCBDQ0xheWVySW1wbCosIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8Q0NMYXllckltcGws
IENDUmVuZGVyU3VyZmFjZT4qLCBib29sIHNob3dDdWxsaW5nV2l0aERlYnVnQm9yZGVyUXVhZHMs
IGJvb2wgZm9yU3VyZmFjZSk7CisKKyAgICB2aXJ0dWFsIH5DQ1F1YWRDdWxsZXIoKSB7IH0KIAog
ICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgcXVhZCBpcyBhZGRlZCB0byB0aGUgbGlzdCwgYW5k
IGZhbHNlIGlmIHRoZSBxdWFkIGlzIGVudGlyZWx5IGN1bGxlZC4KLSAgICB2aXJ0dWFsIGJvb2wg
YXBwZW5kKFBhc3NPd25QdHI8Q0NEcmF3UXVhZD4gcGFzc0RyYXdRdWFkKTsKLSAgICB2aXJ0dWFs
IGJvb2wgYXBwZW5kU3VyZmFjZShQYXNzT3duUHRyPENDRHJhd1F1YWQ+IHBhc3NEcmF3UXVhZCk7
CisgICAgdmlydHVhbCBib29sIGFwcGVuZChQYXNzT3duUHRyPFdlYktpdDo6V2ViQ29tcG9zaXRv
clF1YWQ+IHBhc3NEcmF3UXVhZCkgT1ZFUlJJREU7CisKKyAgICBib29sIGhhc09jY2x1c2lvbkZy
b21PdXRzaWRlVGFyZ2V0U3VyZmFjZSgpIHsgcmV0dXJuIG1faGFzT2NjbHVzaW9uRnJvbU91dHNp
ZGVUYXJnZXRTdXJmYWNlOyB9CiAKIHByaXZhdGU6CiAgICAgQ0NRdWFkTGlzdCYgbV9xdWFkTGlz
dDsKICAgICBDQ0xheWVySW1wbCogbV9sYXllcjsKLSAgICBjb25zdCBDQ09jY2x1c2lvblRyYWNr
ZXJJbXBsKiBtX29jY2x1c2lvblRyYWNrZXI7CisgICAgY29uc3QgQ0NPY2NsdXNpb25UcmFja2Vy
QmFzZTxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlPiogbV9vY2NsdXNpb25UcmFja2VyOwog
ICAgIGJvb2wgbV9zaG93Q3VsbGluZ1dpdGhEZWJ1Z0JvcmRlclF1YWRzOworICAgIGJvb2wgbV9m
b3JTdXJmYWNlOworICAgIGJvb2wgbV9oYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZh
Y2U7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1F1YWRTaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRTaW5rLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjJhOWM2MmFlMDZhNzE3
NWNhYWFhNjM0OWI1NDkxNjEyN2RhNTg0YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZFNpbmsuaApAQCAtMCwwICsx
LDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBDQ1F1YWRTaW5rX2gKKyNkZWZpbmUgQ0NRdWFkU2lua19o
CisKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2Ns
YXNzIFdlYkNvbXBvc2l0b3JRdWFkOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IENDUXVhZFNpbmsgeworcHVibGljOgorICAgIHZpcnR1YWwgfkNDUXVhZFNpbmsoKSB7IH0KKwor
ICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgcXVhZCBpcyBhZGRlZCB0byB0aGUgbGlzdCwgYW5k
IGZhbHNlIGlmIHRoZSBxdWFkIGlzIGVudGlyZWx5IGN1bGxlZC4KKyAgICB2aXJ0dWFsIGJvb2wg
YXBwZW5kKFBhc3NPd25QdHI8V2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZD4gcGFzc0RyYXdRdWFk
KSA9IDA7Cit9OworCit9CisjZW5kaWYgLy8gQ0NRdWFkQ3VsbGVyX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRl
clBhc3MuY3BwCmluZGV4IDUzMjY2NWZiZTc5OWJmNzE0YTZjMmE5ODQxMDE3YzI1MDhhOGY4NWQu
LjVhZjJlZjYzOTQ1YTZlZDVjNzcxYjA1NThlZmFhNmEyYmQ3YTU2MDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NS
ZW5kZXJQYXNzLmNwcApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiY2MvQ0NMYXllcklt
cGwuaCIKICNpbmNsdWRlICJjYy9DQ01hdGhVdGlsLmgiCisjaW5jbHVkZSAiY2MvQ0NPY2NsdXNp
b25UcmFja2VyLmgiCiAjaW5jbHVkZSAiY2MvQ0NRdWFkQ3VsbGVyLmgiCiAjaW5jbHVkZSAiY2Mv
Q0NTaGFyZWRRdWFkU3RhdGUuaCIKICNpbmNsdWRlICJjYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5o
IgpAQCAtNDcsNiArNDgsNyBAQCBDQ1JlbmRlclBhc3M6OkNDUmVuZGVyUGFzcyhDQ1JlbmRlclN1
cmZhY2UqIHRhcmdldFN1cmZhY2UsIGludCBpZCkKICAgICAsIG1fdGFyZ2V0U3VyZmFjZSh0YXJn
ZXRTdXJmYWNlKQogICAgICwgbV9mcmFtZWJ1ZmZlck91dHB1dFJlY3QodGFyZ2V0U3VyZmFjZS0+
Y29udGVudFJlY3QoKSkKICAgICAsIG1faGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKHRydWUpCisg
ICAgLCBtX2hhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZShmYWxzZSkKIHsKICAg
ICBBU1NFUlQodGFyZ2V0U3VyZmFjZSk7CiAgICAgQVNTRVJUKGlkID4gMCk7CkBAIC01NCwxOSAr
NTYsMjMgQEAgQ0NSZW5kZXJQYXNzOjpDQ1JlbmRlclBhc3MoQ0NSZW5kZXJTdXJmYWNlKiB0YXJn
ZXRTdXJmYWNlLCBpbnQgaWQpCiAKIHZvaWQgQ0NSZW5kZXJQYXNzOjphcHBlbmRRdWFkc0Zvckxh
eWVyKENDTGF5ZXJJbXBsKiBsYXllciwgQ0NPY2NsdXNpb25UcmFja2VySW1wbCogb2NjbHVzaW9u
VHJhY2tlciwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKQogewotICAgIENDUXVhZEN1bGxlciBxdWFk
Q3VsbGVyKG1fcXVhZExpc3QsIGxheWVyLCBvY2NsdXNpb25UcmFja2VyLCBsYXllci0+aGFzRGVi
dWdCb3JkZXJzKCkpOworICAgIGNvbnN0IGJvb2wgZm9yU3VyZmFjZSA9IGZhbHNlOworICAgIEND
UXVhZEN1bGxlciBxdWFkQ3VsbGVyKG1fcXVhZExpc3QsIGxheWVyLCBvY2NsdXNpb25UcmFja2Vy
LCBsYXllci0+aGFzRGVidWdCb3JkZXJzKCksIGZvclN1cmZhY2UpOwogCiAgICAgT3duUHRyPEND
U2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFkU3RhdGUgPSBsYXllci0+Y3JlYXRlU2hhcmVkUXVh
ZFN0YXRlKCk7CiAgICAgbGF5ZXItPmFwcGVuZERlYnVnQm9yZGVyUXVhZChxdWFkQ3VsbGVyLCBz
aGFyZWRRdWFkU3RhdGUuZ2V0KCkpOwogICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVy
LCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIGhhZE1pc3NpbmdUaWxlcyk7CiAgICAgbV9zaGFyZWRR
dWFkU3RhdGVMaXN0LmFwcGVuZChzaGFyZWRRdWFkU3RhdGUucmVsZWFzZSgpKTsKKworICAgIG1f
aGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlIHw9IHF1YWRDdWxsZXIuaGFzT2Nj
bHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKCk7CiB9CiAKIHZvaWQgQ0NSZW5kZXJQYXNz
OjphcHBlbmRRdWFkc0ZvclJlbmRlclN1cmZhY2VMYXllcihDQ0xheWVySW1wbCogbGF5ZXIsIGNv
bnN0IENDUmVuZGVyUGFzcyogY29udHJpYnV0aW5nUmVuZGVyUGFzcywgQ0NPY2NsdXNpb25UcmFj
a2VySW1wbCogb2NjbHVzaW9uVHJhY2tlcikKIHsKICAgICAvLyBGSVhNRTogcmVuZGVyIHN1cmZh
Y2UgbGF5ZXJzIHNob3VsZCBiZSBhIENDTGF5ZXJJbXBsLWRlcml2ZWQgY2xhc3MgYW5kCiAgICAg
Ly8gbm90IGJlIGhhbmRsZWQgc3BlY2lhbGx5IGhlcmUuCi0gICAgQ0NRdWFkQ3VsbGVyIHF1YWRD
dWxsZXIobV9xdWFkTGlzdCwgbGF5ZXIsIG9jY2x1c2lvblRyYWNrZXIsIGxheWVyLT5oYXNEZWJ1
Z0JvcmRlcnMoKSk7CisgICAgY29uc3QgYm9vbCBmb3JTdXJmYWNlID0gdHJ1ZTsKKyAgICBDQ1F1
YWRDdWxsZXIgcXVhZEN1bGxlcihtX3F1YWRMaXN0LCBsYXllciwgb2NjbHVzaW9uVHJhY2tlciwg
bGF5ZXItPmhhc0RlYnVnQm9yZGVycygpLCBmb3JTdXJmYWNlKTsKIAogICAgIENDUmVuZGVyU3Vy
ZmFjZSogc3VyZmFjZSA9IGxheWVyLT5yZW5kZXJTdXJmYWNlKCk7CiAKQEAgLTc1LDYgKzgxLDgg
QEAgdm9pZCBDQ1JlbmRlclBhc3M6OmFwcGVuZFF1YWRzRm9yUmVuZGVyU3VyZmFjZUxheWVyKEND
TGF5ZXJJbXBsKiBsYXllciwgY29uc3QgQ0MKICAgICBzdXJmYWNlLT5hcHBlbmRRdWFkcyhxdWFk
Q3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIGlzUmVwbGljYSwgY29udHJpYnV0aW5nUmVu
ZGVyUGFzcy0+aWQoKSk7CiAgICAgbV9zaGFyZWRRdWFkU3RhdGVMaXN0LmFwcGVuZChzaGFyZWRR
dWFkU3RhdGUucmVsZWFzZSgpKTsKIAorICAgIG1faGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJn
ZXRTdXJmYWNlIHw9IHF1YWRDdWxsZXIuaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJm
YWNlKCk7CisKICAgICBpZiAoIWxheWVyLT5oYXNSZXBsaWNhKCkpCiAgICAgICAgIHJldHVybjsK
IApAQCAtODMsNiArOTEsOCBAQCB2b2lkIENDUmVuZGVyUGFzczo6YXBwZW5kUXVhZHNGb3JSZW5k
ZXJTdXJmYWNlTGF5ZXIoQ0NMYXllckltcGwqIGxheWVyLCBjb25zdCBDQwogICAgIGlzUmVwbGlj
YSA9IHRydWU7CiAgICAgc3VyZmFjZS0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgcmVwbGljYVNo
YXJlZFF1YWRTdGF0ZS5nZXQoKSwgaXNSZXBsaWNhLCBjb250cmlidXRpbmdSZW5kZXJQYXNzLT5p
ZCgpKTsKICAgICBtX3NoYXJlZFF1YWRTdGF0ZUxpc3QuYXBwZW5kKHJlcGxpY2FTaGFyZWRRdWFk
U3RhdGUucmVsZWFzZSgpKTsKKworICAgIG1faGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRT
dXJmYWNlIHw9IHF1YWRDdWxsZXIuaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNl
KCk7CiB9CiAKIHZvaWQgQ0NSZW5kZXJQYXNzOjphcHBlbmRRdWFkc1RvRmlsbFNjcmVlbihDQ0xh
eWVySW1wbCogcm9vdExheWVyLCBTa0NvbG9yIHNjcmVlbkJhY2tncm91bmRDb2xvciwgY29uc3Qg
Q0NPY2NsdXNpb25UcmFja2VySW1wbCYgb2NjbHVzaW9uVHJhY2tlcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQ
YXNzLmgKaW5kZXggMDEwYTc2NzRiMGNlMmIyMmMwOTJhNjYwNmQ0MWNkMzQxYTFjOTdmNi4uYjA0
OTNkM2NjMGE2ZjNlZWRlY2U0NTgxNDJlOGQ0NjVhNjI1NWUwOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQ
YXNzLmgKQEAgLTcxLDYgKzcxLDggQEAgcHVibGljOgogICAgIGJvb2wgaGFzVHJhbnNwYXJlbnRC
YWNrZ3JvdW5kKCkgY29uc3QgeyByZXR1cm4gbV9oYXNUcmFuc3BhcmVudEJhY2tncm91bmQ7IH0K
ICAgICB2b2lkIHNldEhhc1RyYW5zcGFyZW50QmFja2dyb3VuZChib29sIHRyYW5zcGFyZW50KSB7
IG1faGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kID0gdHJhbnNwYXJlbnQ7IH0KIAorICAgIGJvb2wg
aGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKCkgY29uc3QgeyByZXR1cm4gbV9o
YXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2U7IH0KKwogcHJvdGVjdGVkOgogICAg
IENDUmVuZGVyUGFzcyhDQ1JlbmRlclN1cmZhY2UqLCBpbnQgaWQpOwogCkBAIC04MCw2ICs4Miw3
IEBAIHByb3RlY3RlZDoKICAgICBJbnRSZWN0IG1fZnJhbWVidWZmZXJPdXRwdXRSZWN0OwogICAg
IFZlY3RvcjxPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+ID4gbV9zaGFyZWRRdWFkU3RhdGVMaXN0
OwogICAgIGJvb2wgbV9oYXNUcmFuc3BhcmVudEJhY2tncm91bmQ7CisgICAgYm9vbCBtX2hhc09j
Y2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZTsKIH07CiAKIHR5cGVkZWYgVmVjdG9yPEND
UmVuZGVyUGFzcyo+IENDUmVuZGVyUGFzc0xpc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNl
LmNwcAppbmRleCBlNzI2MDk2NmEwNzA4YTAyZTE5ZTA4YzhlZWMyYTMwY2I5MzcxMTczLi5hNzBl
MDllM2QxOGU4N2VkMzQwMjhhNTRhYTU3YjQyMDdkNDNkMjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVu
ZGVyU3VyZmFjZS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJjYy9DQ0RlYnVnQm9y
ZGVyRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgogI2luY2x1ZGUgImNj
L0NDTWF0aFV0aWwuaCIKLSNpbmNsdWRlICJjYy9DQ1F1YWRDdWxsZXIuaCIKKyNpbmNsdWRlICJj
Yy9DQ1F1YWRTaW5rLmgiCiAjaW5jbHVkZSAiY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuaCIKICNp
bmNsdWRlICJjYy9DQ1NoYXJlZFF1YWRTdGF0ZS5oIgogI2luY2x1ZGUgPHB1YmxpYy9XZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeC5oPgpAQCAtMTgxLDcgKzE4MSw3IEBAIEZsb2F0UmVjdCBDQ1JlbmRl
clN1cmZhY2U6OmNvbXB1dGVSb290U2Npc3NvclJlY3RJbkN1cnJlbnRTdXJmYWNlKGNvbnN0IEZs
b2F0UmVjCiAgICAgcmV0dXJuIENDTWF0aFV0aWw6OnByb2plY3RDbGlwcGVkUmVjdChpbnZlcnNl
U2NyZWVuU3BhY2VUcmFuc2Zvcm0sIHJvb3RTY2lzc29yUmVjdCk7CiB9CiAKLXZvaWQgQ0NSZW5k
ZXJTdXJmYWNlOjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBDQ1NoYXJlZFF1
YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sIGZvclJlcGxpY2EsIGludCByZW5kZXJQYXNz
SWQpCit2b2lkIENDUmVuZGVyU3VyZmFjZTo6YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVhZExp
c3QsIENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGJvb2wgZm9yUmVwbGljYSwg
aW50IHJlbmRlclBhc3NJZCkKIHsKICAgICBBU1NFUlQoIWZvclJlcGxpY2EgfHwgbV9vd25pbmdM
YXllci0+aGFzUmVwbGljYSgpKTsKIApAQCAtMTkwLDcgKzE5MCw3IEBAIHZvaWQgQ0NSZW5kZXJT
dXJmYWNlOjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBDQ1NoYXJlZFF1YWRT
dGF0ZSogc2hhCiAgICAgICAgIGludCBncmVlbiA9IGZvclJlcGxpY2EgPyAgZGVidWdSZXBsaWNh
Qm9yZGVyQ29sb3JHcmVlbiA6IGRlYnVnU3VyZmFjZUJvcmRlckNvbG9yR3JlZW47CiAgICAgICAg
IGludCBibHVlID0gZm9yUmVwbGljYSA/IGRlYnVnUmVwbGljYUJvcmRlckNvbG9yQmx1ZSA6IGRl
YnVnU3VyZmFjZUJvcmRlckNvbG9yQmx1ZTsKICAgICAgICAgU2tDb2xvciBjb2xvciA9IFNrQ29s
b3JTZXRBUkdCKGRlYnVnU3VyZmFjZUJvcmRlckFscGhhLCByZWQsIGdyZWVuLCBibHVlKTsKLSAg
ICAgICAgcXVhZExpc3QuYXBwZW5kU3VyZmFjZShDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ6OmNyZWF0
ZShzaGFyZWRRdWFkU3RhdGUsIGNvbnRlbnRSZWN0KCksIGNvbG9yLCBkZWJ1Z1N1cmZhY2VCb3Jk
ZXJXaWR0aCkpOworICAgICAgICBxdWFkTGlzdC5hcHBlbmQoQ0NEZWJ1Z0JvcmRlckRyYXdRdWFk
OjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBjb250ZW50UmVjdCgpLCBjb2xvciwgZGVidWdTdXJm
YWNlQm9yZGVyV2lkdGgpKTsKICAgICB9CiAKICAgICAvLyBGSVhNRTogQnkgdXNpbmcgdGhlIHNh
bWUgUmVuZGVyU3VyZmFjZSBmb3IgYm90aCB0aGUgY29udGVudCBhbmQgaXRzIHJlZmxlY3Rpb24s
CkBAIC0yMTYsNyArMjE2LDcgQEAgdm9pZCBDQ1JlbmRlclN1cmZhY2U6OmFwcGVuZFF1YWRzKEND
UXVhZEN1bGxlciYgcXVhZExpc3QsIENDU2hhcmVkUXVhZFN0YXRlKiBzaGEKICAgICBjb25zdCBX
ZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMgPSBtX293bmluZ0xheWVyLT5maWx0
ZXJzKCk7CiAgICAgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5k
RmlsdGVycyA9IG1fb3duaW5nTGF5ZXItPmJhY2tncm91bmRGaWx0ZXJzKCk7CiAKLSAgICBxdWFk
TGlzdC5hcHBlbmRTdXJmYWNlKENDUmVuZGVyUGFzc0RyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVh
ZFN0YXRlLCBjb250ZW50UmVjdCgpLCByZW5kZXJQYXNzSWQsIGZvclJlcGxpY2EsIGRyYXdUcmFu
c2Zvcm0sIGZpbHRlcnMsIGJhY2tncm91bmRGaWx0ZXJzLCBtYXNrVGV4dHVyZUlkLCBjb250ZW50
c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSkpOworICAgIHF1YWRMaXN0LmFwcGVuZChDQ1JlbmRlclBh
c3NEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgY29udGVudFJlY3QoKSwgcmVuZGVy
UGFzc0lkLCBmb3JSZXBsaWNhLCBkcmF3VHJhbnNmb3JtLCBmaWx0ZXJzLCBiYWNrZ3JvdW5kRmls
dGVycywgbWFza1RleHR1cmVJZCwgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUpKTsKIH0K
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaAppbmRleCA5ZjdkODc2ZWVjZWY5ZDliZjYw
MWE3OWNiMDZhY2JhNDA3ZWYzNjFmLi4wYjhjNDA5YzU2OGVhNmUwODczMDljMzNmMThjZmVkMDcx
YzYwNDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaApAQCAtMzksNyArMzksNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQ0RhbWFnZVRyYWNrZXI7Ci1jbGFzcyBDQ1F1
YWRDdWxsZXI7CitjbGFzcyBDQ1F1YWRTaW5rOwogY2xhc3MgQ0NSZW5kZXJQYXNzOwogY2xhc3Mg
Q0NMYXllckltcGw7CiBjbGFzcyBMYXllclJlbmRlcmVyQ2hyb21pdW07CkBAIC0xMTcsNyArMTE3
LDcgQEAgcHVibGljOgogICAgIFBhc3NPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IGNyZWF0ZVNo
YXJlZFF1YWRTdGF0ZSgpIGNvbnN0OwogICAgIFBhc3NPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+
IGNyZWF0ZVJlcGxpY2FTaGFyZWRRdWFkU3RhdGUoKSBjb25zdDsKIAotICAgIHZvaWQgYXBwZW5k
UXVhZHMoQ0NRdWFkQ3VsbGVyJiwgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sIGZvclJlcGxpY2Es
IGludCByZW5kZXJQYXNzSWQpOworICAgIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYsIEND
U2hhcmVkUXVhZFN0YXRlKiwgYm9vbCBmb3JSZXBsaWNhLCBpbnQgcmVuZGVyUGFzc0lkKTsKIAog
ICAgIEZsb2F0UmVjdCBjb21wdXRlUm9vdFNjaXNzb3JSZWN0SW5DdXJyZW50U3VyZmFjZShjb25z
dCBGbG9hdFJlY3QmIHJvb3RTY2lzc29yUmVjdCkgY29uc3Q7CiAKQEAgLTE1Nyw2ICsxNTcsNyBA
QCBwcml2YXRlOgogICAgIC8vIEZvciBDQ0xheWVySXRlcmF0b3JBY3Rpb25zCiAgICAgaW50IG1f
dGFyZ2V0UmVuZGVyU3VyZmFjZUxheWVySW5kZXhIaXN0b3J5OwogICAgIGludCBtX2N1cnJlbnRM
YXllckluZGV4SGlzdG9yeTsKKwogICAgIGZyaWVuZCBzdHJ1Y3QgQ0NMYXllckl0ZXJhdG9yQWN0
aW9uczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcAppbmRl
eCBmMzhmYmRhMDFmNjZlMzgwNjFkMTA2ZmJjMGJjMWMwNDM2MjgwMzE5Li4xZWQxZDg5MmM4ZmFk
NGNkODdhMDYyZmZiMjcxYzcxOTYwYmQzYWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxi
YXJMYXllckltcGwuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAKICNpbmNsdWRlICJTY3JvbGxiYXJU
aGVtZS5oIgogI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlLmgiCi0jaW5jbHVkZSAi
Y2MvQ0NRdWFkQ3VsbGVyLmgiCisjaW5jbHVkZSAiY2MvQ0NRdWFkU2luay5oIgogI2luY2x1ZGUg
ImNjL0NDVGV4dHVyZURyYXdRdWFkLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTYyLDcg
KzYyLDcgQEAgRmxvYXRSZWN0IHRvVVZSZWN0KGNvbnN0IEludFJlY3QmIHIsIGNvbnN0IEludFJl
Y3QmIGJvdW5kcykKIAogfQogCi12b2lkIENDU2Nyb2xsYmFyTGF5ZXJJbXBsOjphcHBlbmRRdWFk
cyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVk
UXVhZFN0YXRlLCBib29sJikKK3ZvaWQgQ0NTY3JvbGxiYXJMYXllckltcGw6OmFwcGVuZFF1YWRz
KENDUXVhZFNpbmsmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVh
ZFN0YXRlLCBib29sJikKIHsKICAgICBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZSogdGhlbWUgPSBz
dGF0aWNfY2FzdDxTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZSo+KFNjcm9sbGJhclRoZW1lOjp0aGVt
ZSgpKTsKICAgICBpZiAoIXRoZW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBs
LmgKaW5kZXggZWNlMmI5NTcxNDE0YmY0MjU2ZmRiNGVlNGZkNWVhMWM3YzA0NmYzMS4uMDc3OTky
MTc3ZTBlMjY3M2I5MGExNDZiMTEwZjE0OWJhNjFkYzQ1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Nj
cm9sbGJhckxheWVySW1wbC5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICBDQ0xheWVy
SW1wbCogc2Nyb2xsTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbExheWVyOyB9CiAgICAg
dm9pZCBzZXRTY3JvbGxMYXllcihDQ0xheWVySW1wbCogc2Nyb2xsTGF5ZXIpIHsgbV9zY3JvbGxM
YXllciA9IHNjcm9sbExheWVyOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NR
dWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiBoYWRNaXNzaW5nVGls
ZXMpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiwg
Y29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpIE9WRVJSSURF
OwogCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQ0NTY3JvbGxiYXJMYXllckltcGwoaW50IGlk
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU29saWRDb2xvckxheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JMYXllckltcGwuY3BwCmluZGV4IDRkNTJj
MTVkZDQyZjIzZGFhZmY2YzU0MzhiZTRmNzllZjc4NjQ2YTMuLmY1MmM3OTdjMDJmNzQ4OGZiOGQ0
MDdmNTFmMGVkYzlmNDVhOTkyNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxheWVySW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5
ZXJJbXBsLmNwcApAQCAtMjksNyArMjksNyBAQAogCiAjaW5jbHVkZSAiY2MvQ0NTb2xpZENvbG9y
TGF5ZXJJbXBsLmgiCiAKLSNpbmNsdWRlICJjYy9DQ1F1YWRDdWxsZXIuaCIKKyNpbmNsdWRlICJj
Yy9DQ1F1YWRTaW5rLmgiCiAjaW5jbHVkZSAiY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuaCIKICNp
bmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgpAQCAtNDksNyArNDksNyBAQCBDQ1NvbGlkQ29sb3JMYXllckltcGw6On5DQ1NvbGlkQ29sb3JM
YXllckltcGwoKQogewogfQogCi12b2lkIENDU29saWRDb2xvckxheWVySW1wbDo6YXBwZW5kUXVh
ZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJl
ZFF1YWRTdGF0ZSwgYm9vbCYpCit2b2lkIENDU29saWRDb2xvckxheWVySW1wbDo6YXBwZW5kUXVh
ZHMoQ0NRdWFkU2luayYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRR
dWFkU3RhdGUsIGJvb2wmKQogewogICAgIC8vIFdlIGNyZWF0ZSBhIHNlcmllcyBvZiBzbWFsbGVy
IHF1YWRzIGluc3RlYWQgb2YganVzdCBvbmUgbGFyZ2Ugb25lIHNvIHRoYXQgdGhlCiAgICAgLy8g
Y3VsbGVyIGNhbiByZWR1Y2UgdGhlIHRvdGFsIHBpeGVscyBkcmF3bi4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxh
eWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTb2xpZENvbG9yTGF5ZXJJbXBsLmgKaW5kZXggZTMwMDU4NDVlNmRlNmIyMGRhYzVmZWU2NDlh
NTE1NzFmNmExMGMzNi4uNzE1M2YyMWFiODJhNzg0YWM4NTBlOGQ2M2I4NWMyMTE2YjY4NWY0MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTb2xpZENvbG9yTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmgKQEAgLTQxLDcgKzQxLDcg
QEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5DQ1NvbGlkQ29sb3JMYXllckltcGwoKTsK
IAotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImLCBjb25zdCBDQ1No
YXJlZFF1YWRTdGF0ZSosIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZFNpbmsmLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0
ZSosIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykgT1ZFUlJJREU7CiAKIHByb3RlY3RlZDoKICAgICBl
eHBsaWNpdCBDQ1NvbGlkQ29sb3JMYXllckltcGwoaW50IGlkKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1w
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Rl
eHR1cmVMYXllckltcGwuY3BwCmluZGV4IDZkZjJmYjZiZDY0YzZkMzY5ZTA4OWM3MTExNjFjZjhi
MWFhZTc5MGQuLjRjNWZiOWFjODMzMjUzNmE5Y2FhNDUwN2MzOTFlZmM3ODZmNTU5YjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4
dHVyZUxheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmNwcApAQCAtMzAsNyArMzAsNyBAQAogI2lu
Y2x1ZGUgImNjL0NDVGV4dHVyZUxheWVySW1wbC5oIgogCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5o
IgotI2luY2x1ZGUgImNjL0NDUXVhZEN1bGxlci5oIgorI2luY2x1ZGUgImNjL0NDUXVhZFNpbmsu
aCIKICNpbmNsdWRlICJjYy9DQ1RleHR1cmVEcmF3UXVhZC5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC00OCw3ICs0OCw3IEBAIENDVGV4dHVyZUxheWVySW1wbDo6fkNDVGV4dHVyZUxheWVy
SW1wbCgpCiB7CiB9CiAKLXZvaWQgQ0NUZXh0dXJlTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1
YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0
YXRlLCBib29sJikKK3ZvaWQgQ0NUZXh0dXJlTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRT
aW5rJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwg
Ym9vbCYpCiB7CiAgICAgSW50UmVjdCBxdWFkUmVjdChJbnRQb2ludCgpLCBjb250ZW50Qm91bmRz
KCkpOwogICAgIHF1YWRMaXN0LmFwcGVuZChDQ1RleHR1cmVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJl
ZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIG1fdGV4dHVyZUlkLCBtX3ByZW11bHRpcGxpZWRBbHBoYSwg
bV91dlJlY3QsIG1fZmxpcHBlZCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwuaApp
bmRleCA0YWJkYjUxZmY5Mjk5MzkzMTgwOTljZmRjOGEwZGQ1MWZmZTZmY2JiLi5lYjllNjY2YTdm
YTBmODM5YTIyNTE2NGQwOWFjMzVjOGFjNjM4YTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVM
YXllckltcGwuaApAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwg
fkNDVGV4dHVyZUxheWVySW1wbCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKEND
UXVhZEN1bGxlciYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgYm9vbCYgaGFkTWlzc2luZ1Rp
bGVzKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYs
IGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVSUklE
RTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRMb3NlQ29udGV4dCgpIE9WRVJSSURFOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Rp
bGVkTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCmluZGV4IGRhOWExMGE5OWQ4YzdiZjIyZDg3Yzg0
N2I5NTdmMjM1MGY1ZDNlNGUuLjVlZTJkNTZkYWUxZjY3MzNiYjIzMTVkNzc0MmIxODIxMTE2NDI3
NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGlsZWRMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCkBAIC0zNSw3ICszNSw3IEBA
CiAjaW5jbHVkZSAiY2MvQ0NDaGVja2VyYm9hcmREcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0ND
RGVidWdCb3JkZXJEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUaWxpbmdEYXRhLmgi
Ci0jaW5jbHVkZSAiY2MvQ0NRdWFkQ3VsbGVyLmgiCisjaW5jbHVkZSAiY2MvQ0NRdWFkU2luay5o
IgogI2luY2x1ZGUgImNjL0NDU29saWRDb2xvckRyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NU
aWxlRHJhd1F1YWQuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTEyMyw3
ICsxMjMsNyBAQCBEcmF3YWJsZVRpbGUqIENDVGlsZWRMYXllckltcGw6OmNyZWF0ZVRpbGUoaW50
IGksIGludCBqKQogICAgIHJldHVybiBhZGRlZFRpbGU7CiB9CiAKLXZvaWQgQ0NUaWxlZExheWVy
SW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRR
dWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKQordm9pZCBD
Q1RpbGVkTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkTGlzdCwgY29uc3Qg
Q0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCYgaGFkTWlzc2luZ1RpbGVz
KQogewogICAgIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0ID0gdmlzaWJsZUNvbnRlbnRSZWN0
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGlsZWRMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaAppbmRleCA0MDUyZmU5N2NlYzIzMzU4
ZGNmODk3MmM0NWVlM2I2ZDQxYTczNzcxLi41ODZjMDU0MWFmNmZiYTVkODRhYTU4MGZjNmExMjRh
Nzc5MGM0ZGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oCkBAIC00Miw3ICs0Miw3
IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVhbCB+Q0NUaWxlZExheWVySW1wbCgpOwogCi0g
ICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYsIGNvbnN0IENDU2hhcmVk
UXVhZFN0YXRlKiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwg
Ym9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdW5zaWduZWQg
Y29udGVudHNUZXh0dXJlSWQoKSBjb25zdCBPVkVSUklERTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVv
TGF5ZXJJbXBsLmNwcAppbmRleCBiNTI0NTk2ZjBkZWE2MDc3YTRjNzRhNTYxZTVlOTk0MmUxZGUx
ODczLi45MjkxYTYwYmFhYzJiNzUzYTcxOWUwZTVlZjIzMzBlY2I4ZjE1ZWYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5
ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcApAQCAtMzksNyArMzksNyBAQAogI2luY2x1ZGUgImNj
L0NDR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5o
IgogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKLSNpbmNsdWRlICJjYy9DQ1F1YWRDdWxsZXIuaCIK
KyNpbmNsdWRlICJjYy9DQ1F1YWRTaW5rLmgiCiAjaW5jbHVkZSAiY2MvQ0NTdHJlYW1WaWRlb0Ry
YXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlRHJhd1F1YWQuaCIKICNpbmNsdWRlICJj
Yy9DQ1lVVlZpZGVvRHJhd1F1YWQuaCIKQEAgLTE3Myw3ICsxNzMsNyBAQCB2b2lkIENDVmlkZW9M
YXllckltcGw6OndpbGxEcmF3SW50ZXJuYWwoQ0NSZW5kZXJlciogbGF5ZXJSZW5kZXJlciwgQ0NH
cmFwaGljc0NvbgogICAgIH0KIH0KIAotdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjphcHBlbmRRdWFk
cyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVk
UXVhZFN0YXRlLCBib29sJikKK3ZvaWQgQ0NWaWRlb0xheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NR
dWFkU2luayYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3Rh
dGUsIGJvb2wmKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VmlkZW9MYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVmlkZW9MYXllckltcGwuaAppbmRleCBjZDVkYjA5YmNkMDU2ZDkwM2I1ZjVjN2Jk
MzIzODAzZDgzZjU3YzIyLi5lYmIxZGMyNjczYzc5MmNjYTU4N2U4NzQ4ZTRlZGJlYjdiMWUzNWFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1ZpZGVvTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oCkBAIC01MSw3ICs1MSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5DQ1ZpZGVvTGF5ZXJJbXBsKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQg
d2lsbERyYXcoQ0NSZW5kZXJlciosIENDR3JhcGhpY3NDb250ZXh0KikgT1ZFUlJJREU7Ci0gICAg
dmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYsIGNvbnN0IENDU2hhcmVkUXVh
ZFN0YXRlKiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgYm9v
bCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRHJhdygp
IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIGR1bXBMYXllclByb3BlcnRpZXMoVGV4dFN0
cmVhbSYsIGludCBpbmRlbnQpIGNvbnN0IE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAppbmRleCBl
OWI5ZjAyODEzY2NiM2NmM2E5ZTUxOGMyMmJiZGE0NzZjYmMzZjYwLi5kNzkzNjczYWQyZmYwODQ1
ZTQxMDU5MWQ4NzhiYjZkYTRiZjBmY2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcApAQCAtMjgsNiArMjgs
NyBAQAogCiAjaW5jbHVkZSAiQ0NBbmltYXRpb25UZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSAiQ0NM
YXllclRlc3RDb21tb24uaCIKKyNpbmNsdWRlICJDQ0xheWVyVHJlZVRlc3RDb21tb24uaCIKICNp
bmNsdWRlICJDQ1Rlc3RDb21tb24uaCIKICNpbmNsdWRlICJGYWtlV2ViR3JhcGhpY3NDb250ZXh0
M0QuaCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKQEAgLTExNzAsNyArMTE3
MSw3IEBAIGNsYXNzIEJsZW5kU3RhdGVDaGVja0xheWVyIDogcHVibGljIENDTGF5ZXJJbXBsIHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxCbGVuZFN0YXRlQ2hlY2tMYXllcj4gY3Jl
YXRlKGludCBpZCkgeyByZXR1cm4gYWRvcHRQdHIobmV3IEJsZW5kU3RhdGVDaGVja0xheWVyKGlk
KSk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRM
aXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJikgT1ZF
UlJJREUKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVhZExpc3Qs
IGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGJvb2wmKSBPVkVSUklE
RQogICAgIHsKICAgICAgICAgbV9xdWFkc0FwcGVuZGVkID0gdHJ1ZTsKIApAQCAtMTY5NSwxMCAr
MTY5NiwxMCBAQCBjbGFzcyBGYWtlTGF5ZXJXaXRoUXVhZHMgOiBwdWJsaWMgQ0NMYXllckltcGwg
ewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEZha2VMYXllcldpdGhRdWFkcz4gY3Jl
YXRlKGludCBpZCkgeyByZXR1cm4gYWRvcHRQdHIobmV3IEZha2VMYXllcldpdGhRdWFkcyhpZCkp
OyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlz
dCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCYpIE9WRVJS
SURFCisgICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRMaXN0LCBj
b25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJikgT1ZFUlJJREUK
ICAgICB7CiAgICAgICAgIFNrQ29sb3IgZ3JheSA9IFNrQ29sb3JTZXRSR0IoMTAwLCAxMDAsIDEw
MCk7Ci0gICAgICAgIEludFJlY3QgcXVhZFJlY3QoMCwgMCwgNSwgNSk7CisgICAgICAgIEludFJl
Y3QgcXVhZFJlY3QoSW50UG9pbnQoMCwgMCksIGNvbnRlbnRCb3VuZHMoKSk7CiAgICAgICAgIE93
blB0cjxDQ0RyYXdRdWFkPiBteVF1YWQgPSBDQ1NvbGlkQ29sb3JEcmF3UXVhZDo6Y3JlYXRlKHNo
YXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIGdyYXkpOwogICAgICAgICBxdWFkTGlzdC5hcHBlbmQo
bXlRdWFkLnJlbGVhc2UoKSk7CiAgICAgfQpAQCAtMjQ2OSw2ICsyNDcwLDIxIEBAIFRFU1RfRihD
Q0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgaGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKQogICAgIE1v
Y2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtb2NrQ29udGV4dCk7CiB9CiAKK3N0YXRp
YyB2b2lkIGFkZERyYXdpbmdMYXllclRvKENDTGF5ZXJJbXBsKiBwYXJlbnQsIGludCBpZCwgY29u
c3QgSW50UmVjdCYgbGF5ZXJSZWN0LCBDQ0xheWVySW1wbCoqIHJlc3VsdCkKK3sKKyAgICBPd25Q
dHI8Q0NMYXllckltcGw+IGxheWVyID0gRmFrZUxheWVyV2l0aFF1YWRzOjpjcmVhdGUoaWQpOwor
ICAgIENDTGF5ZXJJbXBsKiBsYXllclB0ciA9IGxheWVyLmdldCgpOworICAgIGxheWVyUHRyLT5z
ZXRBbmNob3JQb2ludChGbG9hdFBvaW50KDAsIDApKTsKKyAgICBsYXllclB0ci0+c2V0UG9zaXRp
b24oRmxvYXRQb2ludChsYXllclJlY3QubG9jYXRpb24oKSkpOworICAgIGxheWVyUHRyLT5zZXRC
b3VuZHMobGF5ZXJSZWN0LnNpemUoKSk7CisgICAgbGF5ZXJQdHItPnNldENvbnRlbnRCb3VuZHMo
bGF5ZXJSZWN0LnNpemUoKSk7CisgICAgbGF5ZXJQdHItPnNldERyYXdzQ29udGVudCh0cnVlKTsg
Ly8gb25seSBjaGlsZHJlbiBkcmF3IGNvbnRlbnQKKyAgICBsYXllclB0ci0+c2V0T3BhcXVlKHRy
dWUpOworICAgIHBhcmVudC0+YWRkQ2hpbGQobGF5ZXIucmVsZWFzZSgpKTsKKyAgICBpZiAocmVz
dWx0KQorICAgICAgICAqcmVzdWx0ID0gbGF5ZXJQdHI7Cit9CisKIHN0YXRpYyB2b2lkIHNldHVw
TGF5ZXJzRm9yVGV4dHVyZUNhY2hpbmcoQ0NMYXllclRyZWVIb3N0SW1wbCogbGF5ZXJUcmVlSG9z
dEltcGwsIENDTGF5ZXJJbXBsKiYgcm9vdFB0ciwgQ0NMYXllckltcGwqJiBpbnRlcm1lZGlhdGVM
YXllclB0ciwgQ0NMYXllckltcGwqJiBzdXJmYWNlTGF5ZXJQdHIsIENDTGF5ZXJJbXBsKiYgY2hp
bGRQdHIsIGNvbnN0IEludFNpemUmIHJvb3RTaXplKQogewogICAgIE93blB0cjxDQ0dyYXBoaWNz
Q29udGV4dD4gY29udGV4dCA9IENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRChhZG9wdFB0cihu
ZXcgUGFydGlhbFN3YXBDb250ZXh0KSk7CkBAIC0yNDgzLDUwICsyNDk5LDIwIEBAIHN0YXRpYyB2
b2lkIHNldHVwTGF5ZXJzRm9yVGV4dHVyZUNhY2hpbmcoQ0NMYXllclRyZWVIb3N0SW1wbCogbGF5
ZXJUcmVlSG9zdEltcGwsCiAgICAgcm9vdC0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCgwLCAwKSk7
CiAgICAgcm9vdC0+c2V0Qm91bmRzKHJvb3RTaXplKTsKICAgICByb290LT5zZXRDb250ZW50Qm91
bmRzKHJvb3RTaXplKTsKLSAgICByb290LT5zZXRWaXNpYmxlQ29udGVudFJlY3QoSW50UmVjdChJ
bnRQb2ludCgwLCAwKSwgcm9vdFNpemUpKTsKICAgICByb290LT5zZXREcmF3c0NvbnRlbnQodHJ1
ZSk7CiAgICAgbGF5ZXJUcmVlSG9zdEltcGwtPnNldFJvb3RMYXllcihyb290LnJlbGVhc2UoKSk7
CiAKLSAgICAvLyBJbnRlcm1lZGlhdGUgbGF5ZXIgZG9lcyBub3Qgb3duIGEgc3VyZmFjZSwgYW5k
IGRvZXMgbm90IGRyYXcgY29udGVudC4KLSAgICBPd25QdHI8Q0NMYXllckltcGw+IGludGVybWVk
aWF0ZUxheWVyID0gQ0NMYXllckltcGw6OmNyZWF0ZSgyKTsKLSAgICBpbnRlcm1lZGlhdGVMYXll
clB0ciA9IGludGVybWVkaWF0ZUxheWVyLmdldCgpOwotCi0gICAgaW50ZXJtZWRpYXRlTGF5ZXJQ
dHItPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQoMCwgMCkpOwotICAgIGludGVybWVkaWF0ZUxh
eWVyUHRyLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KDEwLCAxMCkpOwotICAgIGludGVybWVkaWF0
ZUxheWVyUHRyLT5zZXRCb3VuZHMocm9vdFNpemUpOwotICAgIGludGVybWVkaWF0ZUxheWVyUHRy
LT5zZXRDb250ZW50Qm91bmRzKHJvb3RTaXplKTsKLSAgICBpbnRlcm1lZGlhdGVMYXllclB0ci0+
c2V0VmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQoMCwgMCksIHJvb3RTaXplKSk7
CisgICAgYWRkRHJhd2luZ0xheWVyVG8ocm9vdFB0ciwgMiwgSW50UmVjdCgxMCwgMTAsIHJvb3RT
aXplLndpZHRoKCksIHJvb3RTaXplLmhlaWdodCgpKSwgJmludGVybWVkaWF0ZUxheWVyUHRyKTsK
ICAgICBpbnRlcm1lZGlhdGVMYXllclB0ci0+c2V0RHJhd3NDb250ZW50KGZhbHNlKTsgLy8gb25s
eSBjaGlsZHJlbiBkcmF3IGNvbnRlbnQKLSAgICByb290UHRyLT5hZGRDaGlsZChpbnRlcm1lZGlh
dGVMYXllci5yZWxlYXNlKCkpOwotCi0gICAgT3duUHRyPENDTGF5ZXJJbXBsPiBzdXJmYWNlTGF5
ZXIgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDMpOwotICAgIHN1cmZhY2VMYXllclB0ciA9IHN1cmZh
Y2VMYXllci5nZXQoKTsKIAogICAgIC8vIFN1cmZhY2UgbGF5ZXIgaXMgdGhlIGxheWVyIHRoYXQg
Y2hhbmdlcyBpdHMgb3BhY2l0eQogICAgIC8vIEl0IHdpbGwgY29udGFpbiBvdGhlciBsYXllcnMg
dGhhdCBkcmF3IGNvbnRlbnQuCi0gICAgSW50U2l6ZSBzdXJmYWNlU2l6ZShyb290U2l6ZS53aWR0
aCgpLCByb290U2l6ZS5oZWlnaHQoKSk7Ci0gICAgc3VyZmFjZUxheWVyUHRyLT5zZXRBbmNob3JQ
b2ludChGbG9hdFBvaW50KDAsIDApKTsKLSAgICBzdXJmYWNlTGF5ZXJQdHItPnNldFBvc2l0aW9u
KEZsb2F0UG9pbnQoMTAsIDEwKSk7Ci0gICAgc3VyZmFjZUxheWVyUHRyLT5zZXRCb3VuZHMoc3Vy
ZmFjZVNpemUpOwotICAgIHN1cmZhY2VMYXllclB0ci0+c2V0Q29udGVudEJvdW5kcyhzdXJmYWNl
U2l6ZSk7Ci0gICAgc3VyZmFjZUxheWVyUHRyLT5zZXRWaXNpYmxlQ29udGVudFJlY3QoSW50UmVj
dChJbnRQb2ludCgwLCAwKSwgc3VyZmFjZVNpemUpKTsKKyAgICBhZGREcmF3aW5nTGF5ZXJUbyhp
bnRlcm1lZGlhdGVMYXllclB0ciwgMywgSW50UmVjdCgxMCwgMTAsIHJvb3RTaXplLndpZHRoKCks
IHJvb3RTaXplLmhlaWdodCgpKSwgJnN1cmZhY2VMYXllclB0cik7CiAgICAgc3VyZmFjZUxheWVy
UHRyLT5zZXREcmF3c0NvbnRlbnQoZmFsc2UpOyAvLyBvbmx5IGNoaWxkcmVuIGRyYXcgY29udGVu
dAogICAgIHN1cmZhY2VMYXllclB0ci0+c2V0T3BhY2l0eSgwLjVmKTsgLy8gVGhpcyB3aWxsIGNh
dXNlIGl0IHRvIGhhdmUgYSBzdXJmYWNlCi0gICAgaW50ZXJtZWRpYXRlTGF5ZXJQdHItPmFkZENo
aWxkKHN1cmZhY2VMYXllci5yZWxlYXNlKCkpOwogCiAgICAgLy8gQ2hpbGQgb2YgdGhlIHN1cmZh
Y2UgbGF5ZXIgd2lsbCBwcm9kdWNlIHNvbWUgcXVhZHMKLSAgICBPd25QdHI8RmFrZUxheWVyV2l0
aFF1YWRzPiBjaGlsZCA9IEZha2VMYXllcldpdGhRdWFkczo6Y3JlYXRlKDQpOwotICAgIGNoaWxk
UHRyID0gY2hpbGQuZ2V0KCk7Ci0KLSAgICBJbnRTaXplIGNoaWxkU2l6ZShyb290U2l6ZS53aWR0
aCgpLCByb290U2l6ZS5oZWlnaHQoKSk7Ci0gICAgY2hpbGRQdHItPnNldEFuY2hvclBvaW50KEZs
b2F0UG9pbnQoMCwgMCkpOwotICAgIGNoaWxkUHRyLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KDUs
IDUpKTsKLSAgICBjaGlsZFB0ci0+c2V0Qm91bmRzKGNoaWxkU2l6ZSk7Ci0gICAgY2hpbGRQdHIt
PnNldENvbnRlbnRCb3VuZHMoY2hpbGRTaXplKTsKLSAgICBjaGlsZFB0ci0+c2V0VmlzaWJsZUNv
bnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQoMCwgMCksIGNoaWxkU2l6ZSkpOwotICAgIGNoaWxk
UHRyLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7Ci0KLSAgICBzdXJmYWNlTGF5ZXJQdHItPmFkZENo
aWxkKGNoaWxkLnJlbGVhc2UoKSk7CisgICAgYWRkRHJhd2luZ0xheWVyVG8oc3VyZmFjZUxheWVy
UHRyLCA0LCBJbnRSZWN0KDUsIDUsIHJvb3RTaXplLndpZHRoKCksIHJvb3RTaXplLmhlaWdodCgp
KSwgJmNoaWxkUHRyKTsKIH0KIAogY2xhc3MgTGF5ZXJSZW5kZXJlckNocm9taXVtV2l0aFJlbGVh
c2VUZXh0dXJlcyA6IHB1YmxpYyBMYXllclJlbmRlcmVyQ2hyb21pdW0gewpAQCAtMjUzNCw2ICsy
NTIwLDMzNSBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZWxl
YXNlUmVuZGVyUGFzc1RleHR1cmVzOwogfTsKIAorVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxU
ZXN0LCB0ZXh0dXJlQ2FjaGluZ1dpdGhDbGlwcGluZykKK3sKKyAgICBDQ1NldHRpbmdzOjpzZXRQ
YXJ0aWFsU3dhcEVuYWJsZWQodHJ1ZSk7CisKKyAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNldHRp
bmdzOworICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBteUhvc3RJbXBsID0gQ0NMYXll
clRyZWVIb3N0SW1wbDo6Y3JlYXRlKHNldHRpbmdzLCB0aGlzKTsKKworICAgIENDTGF5ZXJJbXBs
KiByb290UHRyOworICAgIENDTGF5ZXJJbXBsKiBzdXJmYWNlTGF5ZXJQdHI7CisKKyAgICBPd25Q
dHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNvbnRleHQgPSBDQ0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRl
M0QoYWRvcHRQdHIobmV3IFBhcnRpYWxTd2FwQ29udGV4dCkpOworCisgICAgSW50U2l6ZSByb290
U2l6ZSgxMDAsIDEwMCk7CisKKyAgICBteUhvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJl
cihjb250ZXh0LnJlbGVhc2UoKSwgVW50aHJvdHRsZWRVcGxvYWRlcik7CisgICAgbXlIb3N0SW1w
bC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUocm9vdFNpemUud2lkdGgoKSwgcm9vdFNpemUuaGVp
Z2h0KCkpKTsKKworICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IENDTGF5ZXJJbXBsOjpj
cmVhdGUoMSk7CisgICAgcm9vdFB0ciA9IHJvb3QuZ2V0KCk7CisKKyAgICByb290LT5zZXRBbmNo
b3JQb2ludChGbG9hdFBvaW50KDAsIDApKTsKKyAgICByb290LT5zZXRQb3NpdGlvbihGbG9hdFBv
aW50KDAsIDApKTsKKyAgICByb290LT5zZXRCb3VuZHMocm9vdFNpemUpOworICAgIHJvb3QtPnNl
dENvbnRlbnRCb3VuZHMocm9vdFNpemUpOworICAgIHJvb3QtPnNldERyYXdzQ29udGVudCh0cnVl
KTsKKyAgICByb290LT5zZXRNYXNrc1RvQm91bmRzKHRydWUpOworICAgIG15SG9zdEltcGwtPnNl
dFJvb3RMYXllcihyb290LnJlbGVhc2UoKSk7CisKKyAgICBhZGREcmF3aW5nTGF5ZXJUbyhyb290
UHRyLCAzLCBJbnRSZWN0KDAsIDAsIHJvb3RTaXplLndpZHRoKCksIHJvb3RTaXplLmhlaWdodCgp
KSwgJnN1cmZhY2VMYXllclB0cik7CisgICAgc3VyZmFjZUxheWVyUHRyLT5zZXREcmF3c0NvbnRl
bnQoZmFsc2UpOworCisgICAgLy8gU3VyZmFjZSBsYXllciBpcyB0aGUgbGF5ZXIgdGhhdCBjaGFu
Z2VzIGl0cyBvcGFjaXR5CisgICAgLy8gSXQgd2lsbCBjb250YWluIG90aGVyIGxheWVycyB0aGF0
IGRyYXcgY29udGVudC4KKyAgICBzdXJmYWNlTGF5ZXJQdHItPnNldE9wYWNpdHkoMC41Zik7IC8v
IFRoaXMgd2lsbCBjYXVzZSBpdCB0byBoYXZlIGEgc3VyZmFjZQorCisgICAgYWRkRHJhd2luZ0xh
eWVyVG8oc3VyZmFjZUxheWVyUHRyLCA0LCBJbnRSZWN0KDAsIDAsIDEwMCwgMyksIDApOworICAg
IGFkZERyYXdpbmdMYXllclRvKHN1cmZhY2VMYXllclB0ciwgNSwgSW50UmVjdCgwLCA5NywgMTAw
LCAzKSwgMCk7CisKKyAgICAvLyBSb3RhdGlvbiB3aWxsIHB1dCBwYXJ0IG9mIHRoZSBjaGlsZCBv
dXNpZGUgdGhlIGJvdW5kcyBvZiB0aGUgcm9vdCBsYXllci4KKyAgICAvLyBOZXZlcnRoZWxlc3Ms
IHRoZSBjaGlsZCBsYXllcnMgc2hvdWxkIGJlIGRyYXduLgorICAgIFdlYlRyYW5zZm9ybWF0aW9u
TWF0cml4IHRyYW5zZm9ybSA9IHN1cmZhY2VMYXllclB0ci0+dHJhbnNmb3JtKCk7CisgICAgdHJh
bnNmb3JtLnRyYW5zbGF0ZSg1MCwgNTApOworICAgIHRyYW5zZm9ybS5yb3RhdGUoMzUpOworICAg
IHRyYW5zZm9ybS50cmFuc2xhdGUoLTUwLCAtNTApOworICAgIHN1cmZhY2VMYXllclB0ci0+c2V0
VHJhbnNmb3JtKHRyYW5zZm9ybSk7CisKKyAgICB7CisgICAgICAgIENDTGF5ZXJUcmVlSG9zdElt
cGw6OkZyYW1lRGF0YSBmcmFtZTsKKyAgICAgICAgRVhQRUNUX1RSVUUobXlIb3N0SW1wbC0+cHJl
cGFyZVRvRHJhdyhmcmFtZSkpOworCisgICAgICAgIC8vIE11c3QgcmVjZWl2ZSB0d28gcmVuZGVy
IHBhc3NlcywgZWFjaCB3aXRoIG9uZSBxdWFkCisgICAgICAgIEFTU0VSVF9FUSgyVSwgZnJhbWUu
cmVuZGVyUGFzc2VzLnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUSgyVSwgZnJhbWUucmVuZGVy
UGFzc2VzWzBdLT5xdWFkTGlzdCgpLnNpemUoKSk7CisgICAgICAgIEFTU0VSVF9FUSgxVSwgZnJh
bWUucmVuZGVyUGFzc2VzWzFdLT5xdWFkTGlzdCgpLnNpemUoKSk7CisKKyAgICAgICAgLy8gVmVy
aWZ5IHRoYXQgdGhlIGNoaWxkIGxheWVycyBoYXZlIGJlZW4gZHJhd24gZW50aXJlbHkuCisgICAg
ICAgIEludFJlY3QgcXVhZFZpc2libGVSZWN0ID0gZnJhbWUucmVuZGVyUGFzc2VzWzBdLT5xdWFk
TGlzdCgpWzBdLT5xdWFkVmlzaWJsZVJlY3QoKTsKKyAgICAgICAgRVhQRUNUX0lOVF9SRUNUX0VR
KEludFJlY3QoMCwgMCwgMTAwLCAzKSwgcXVhZFZpc2libGVSZWN0KTsKKworICAgICAgICBxdWFk
VmlzaWJsZVJlY3QgPSBmcmFtZS5yZW5kZXJQYXNzZXNbMF0tPnF1YWRMaXN0KClbMV0tPnF1YWRW
aXNpYmxlUmVjdCgpOworICAgICAgICBFWFBFQ1RfSU5UX1JFQ1RfRVEoSW50UmVjdCgwLCAwLCAx
MDAsIDMpLCBxdWFkVmlzaWJsZVJlY3QpOworCisgICAgICAgIEVYUEVDVF9FUShDQ0RyYXdRdWFk
OjpSZW5kZXJQYXNzLCBmcmFtZS5yZW5kZXJQYXNzZXNbMV0tPnF1YWRMaXN0KClbMF0tPm1hdGVy
aWFsKCkpOworICAgICAgICBDQ1JlbmRlclBhc3NEcmF3UXVhZCogcXVhZCA9IHN0YXRpY19jYXN0
PENDUmVuZGVyUGFzc0RyYXdRdWFkKj4oZnJhbWUucmVuZGVyUGFzc2VzWzFdLT5xdWFkTGlzdCgp
WzBdLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHF1YWQtPmNvbnRlbnRzQ2hhbmdlZFNp
bmNlTGFzdEZyYW1lKCkuaXNFbXB0eSgpKTsKKworICAgICAgICBteUhvc3RJbXBsLT5kcmF3TGF5
ZXJzKGZyYW1lKTsKKyAgICAgICAgbXlIb3N0SW1wbC0+ZGlkRHJhd0FsbExheWVycyhmcmFtZSk7
CisgICAgfQorCisgICAgdHJhbnNmb3JtID0gc3VyZmFjZUxheWVyUHRyLT50cmFuc2Zvcm0oKTsK
KyAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKDUwLCA1MCk7CisgICAgdHJhbnNmb3JtLnJvdGF0ZSgt
MzUpOworICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoLTUwLCAtNTApOworICAgIHN1cmZhY2VMYXll
clB0ci0+c2V0VHJhbnNmb3JtKHRyYW5zZm9ybSk7CisKKyAgICAvLyBUaGUgc3VyZmFjZSBpcyBu
b3cgYWxpZ25lZCBhZ2FpbiwgYW5kIHRoZSBjbGlwcGVkIHBhcnRzIGFyZSBleHBvc2VkLgorICAg
IC8vIFRoYXQgc2hvdWxkIGJlIE9LLCBhcyB3ZSd2ZSBhbHJlYWR5IHZlcmlmaWVkIHRoYXQgdGhl
IHF1YWRzIGFyZSBkcmF3biBpbiBmdWxsLgorICAgIC8vIFZlcmlmeSB0aGF0IHRoZSByZW5kZXIg
cGFzcyBpcyByZW1vdmVkLgorICAgIHsKKyAgICAgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJh
bWVEYXRhIGZyYW1lOworICAgICAgICBFWFBFQ1RfVFJVRShteUhvc3RJbXBsLT5wcmVwYXJlVG9E
cmF3KGZyYW1lKSk7CisKKyAgICAgICAgLy8gTXVzdCByZWNlaXZlIGEgc2luZ2xlIHJlbmRlciBw
YXNzIHVzaW5nIGEgY2FjaGVkIHRleHR1cmUuCisgICAgICAgIEFTU0VSVF9FUSgxVSwgZnJhbWUu
cmVuZGVyUGFzc2VzLnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxVSwgZnJhbWUucmVuZGVy
UGFzc2VzWzBdLT5xdWFkTGlzdCgpLnNpemUoKSk7CisKKyAgICAgICAgbXlIb3N0SW1wbC0+ZHJh
d0xheWVycyhmcmFtZSk7CisgICAgICAgIG15SG9zdEltcGwtPmRpZERyYXdBbGxMYXllcnMoZnJh
bWUpOworICAgIH0KK30KKworVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCB0ZXh0dXJl
Q2FjaGluZ1dpdGhPY2NsdXNpb24pCit7CisgICAgQ0NTZXR0aW5nczo6c2V0UGFydGlhbFN3YXBF
bmFibGVkKGZhbHNlKTsKKworICAgIENDTGF5ZXJUcmVlU2V0dGluZ3Mgc2V0dGluZ3M7CisgICAg
T3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IG15SG9zdEltcGwgPSBDQ0xheWVyVHJlZUhvc3RJ
bXBsOjpjcmVhdGUoc2V0dGluZ3MsIHRoaXMpOworCisgICAgLy8gTGF5ZXJzIGFyZSBzdHJ1Y3R1
cmUgYXMgZm9sbG93czoKKyAgICAvLworICAgIC8vICBSICstLSBTMSArLSBMMTAgKG93bmluZykK
KyAgICAvLyAgICB8ICAgICAgKy0gTDExCisgICAgLy8gICAgfCAgICAgICstIEwxMgorICAgIC8v
ICAgIHwKKyAgICAvLyAgICArLS0gUzIgKy0gTDIwIChvd25pbmcpCisgICAgLy8gICAgICAgICAg
ICstIEwyMQorICAgIC8vCisgICAgLy8gT2NjbHVzaW9uOgorICAgIC8vIEwxMiBvY2NsdWRlcyBM
MTEgKGludGVybmFsKQorICAgIC8vIEwyMCBvY2NsdWRlcyBMMTAgKGV4dGVybmFsKQorICAgIC8v
IEwyMSBvY2NsdWRlcyBMMjAgKGludGVybmFsKQorCisgICAgQ0NMYXllckltcGwqIHJvb3RQdHI7
CisgICAgQ0NMYXllckltcGwqIGxheWVyUzFQdHI7CisgICAgQ0NMYXllckltcGwqIGxheWVyUzJQ
dHI7CisKKyAgICBPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNvbnRleHQgPSBDQ0dyYXBoaWNz
Q29udGV4dDo6Y3JlYXRlM0QoYWRvcHRQdHIobmV3IFBhcnRpYWxTd2FwQ29udGV4dCkpOworCisg
ICAgSW50U2l6ZSByb290U2l6ZSgxMDAwLCAxMDAwKTsKKworICAgIG15SG9zdEltcGwtPmluaXRp
YWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQucmVsZWFzZSgpLCBVbnRocm90dGxlZFVwbG9hZGVy
KTsKKyAgICBteUhvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZShyb290U2l6ZS53aWR0
aCgpLCByb290U2l6ZS5oZWlnaHQoKSkpOworCisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiByb290
ID0gQ0NMYXllckltcGw6OmNyZWF0ZSgxKTsKKyAgICByb290UHRyID0gcm9vdC5nZXQoKTsKKwor
ICAgIHJvb3QtPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQoMCwgMCkpOworICAgIHJvb3QtPnNl
dFBvc2l0aW9uKEZsb2F0UG9pbnQoMCwgMCkpOworICAgIHJvb3QtPnNldEJvdW5kcyhyb290U2l6
ZSk7CisgICAgcm9vdC0+c2V0Q29udGVudEJvdW5kcyhyb290U2l6ZSk7CisgICAgcm9vdC0+c2V0
RHJhd3NDb250ZW50KHRydWUpOworICAgIHJvb3QtPnNldE1hc2tzVG9Cb3VuZHModHJ1ZSk7Cisg
ICAgbXlIb3N0SW1wbC0+c2V0Um9vdExheWVyKHJvb3QucmVsZWFzZSgpKTsKKworICAgIGFkZERy
YXdpbmdMYXllclRvKHJvb3RQdHIsIDIsIEludFJlY3QoMzAwLCAzMDAsIDMwMCwgMzAwKSwgJmxh
eWVyUzFQdHIpOworICAgIGxheWVyUzFQdHItPnNldEZvcmNlUmVuZGVyU3VyZmFjZSh0cnVlKTsK
KworICAgIGFkZERyYXdpbmdMYXllclRvKGxheWVyUzFQdHIsIDMsIEludFJlY3QoMTAsIDEwLCAx
MCwgMTApLCAwKTsgLy8gTDExCisgICAgYWRkRHJhd2luZ0xheWVyVG8obGF5ZXJTMVB0ciwgNCwg
SW50UmVjdCgwLCAwLCAzMCwgMzApLCAwKTsgLy8gTDEyCisKKyAgICBhZGREcmF3aW5nTGF5ZXJU
byhyb290UHRyLCA1LCBJbnRSZWN0KDU1MCwgMjUwLCAzMDAsIDQwMCksICZsYXllclMyUHRyKTsK
KyAgICBsYXllclMyUHRyLT5zZXRGb3JjZVJlbmRlclN1cmZhY2UodHJ1ZSk7CisKKyAgICBhZGRE
cmF3aW5nTGF5ZXJUbyhsYXllclMyUHRyLCA2LCBJbnRSZWN0KDIwLCAyMCwgNSwgNSksIDApOyAv
LyBMMjEKKworICAgIC8vIEluaXRpYWwgZHJhdyAtIG11c3QgcmVjZWl2ZSBhbGwgcXVhZHMKKyAg
ICB7CisgICAgICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSBmcmFtZTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUobXlIb3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworCisgICAg
ICAgIC8vIE11c3QgcmVjZWl2ZSAzIHJlbmRlciBwYXNzZXMuCisgICAgICAgIC8vIEZvciBSb290
LCB0aGVyZSBhcmUgMiBxdWFkczsgZm9yIFMxLCB0aGVyZSBhcmUgMyBxdWFkczsgZm9yIFMyLCB0
aGVyZSBpcyAxIHF1YWQuCisgICAgICAgIEFTU0VSVF9FUSgzVSwgZnJhbWUucmVuZGVyUGFzc2Vz
LnNpemUoKSk7CisKKyAgICAgICAgRVhQRUNUX0VRKDJVLCBmcmFtZS5yZW5kZXJQYXNzZXNbMF0t
PnF1YWRMaXN0KCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKDNVLCBmcmFtZS5yZW5kZXJQ
YXNzZXNbMV0tPnF1YWRMaXN0KCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKDJVLCBmcmFt
ZS5yZW5kZXJQYXNzZXNbMl0tPnF1YWRMaXN0KCkuc2l6ZSgpKTsKKworICAgICAgICBteUhvc3RJ
bXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKKyAgICAgICAgbXlIb3N0SW1wbC0+ZGlkRHJhd0FsbExh
eWVycyhmcmFtZSk7CisgICAgfQorCisgICAgLy8gIlVub2NjbHVkZSIgc3VyZmFjZSBTMSBhbmQg
cmVwZWF0IGRyYXcuCisgICAgLy8gTXVzdCByZW1vdmUgUzIncyByZW5kZXIgcGFzcyBzaW5jZSBp
dCdzIGNhY2hlZDsKKyAgICAvLyBNdXN0IGtlZXAgUzEgcXVhZHMgYmVjYXVzZSB0ZXh0dXJlIGNv
bnRhaW5lZCBleHRlcm5hbCBvY2NsdXNpb24uCisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgg
dHJhbnNmb3JtID0gbGF5ZXJTMlB0ci0+dHJhbnNmb3JtKCk7CisgICAgdHJhbnNmb3JtLnRyYW5z
bGF0ZSgxNTAsIDE1MCk7CisgICAgbGF5ZXJTMlB0ci0+c2V0VHJhbnNmb3JtKHRyYW5zZm9ybSk7
CisgICAgeworICAgICAgICBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEgZnJhbWU7Cisg
ICAgICAgIEVYUEVDVF9UUlVFKG15SG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKKwor
ICAgICAgICAvLyBNdXN0IHJlY2VpdmUgMiByZW5kZXIgcGFzc2VzLgorICAgICAgICAvLyBGb3Ig
Um9vdCwgdGhlcmUgYXJlIDIgcXVhZHMKKyAgICAgICAgLy8gRm9yIFMxLCB0aGUgbnVtYmVyIG9m
IHF1YWRzIGRlcGVuZHMgb24gd2hhdCBnb3QgdW5vY2NsdWRlZCwgc28gbm90IGFzc2VydGVkIGJl
eW9uZCBiZWluZyBwb3NpdGl2ZS4KKyAgICAgICAgLy8gRm9yIFMyLCB0aGVyZSBpcyBubyByZW5k
ZXIgcGFzcworICAgICAgICBBU1NFUlRfRVEoMlUsIGZyYW1lLnJlbmRlclBhc3Nlcy5zaXplKCkp
OworCisgICAgICAgIEVYUEVDVF9HVChmcmFtZS5yZW5kZXJQYXNzZXNbMF0tPnF1YWRMaXN0KCku
c2l6ZSgpLCAwVSk7CisgICAgICAgIEVYUEVDVF9FUSgyVSwgZnJhbWUucmVuZGVyUGFzc2VzWzFd
LT5xdWFkTGlzdCgpLnNpemUoKSk7CisKKyAgICAgICAgbXlIb3N0SW1wbC0+ZHJhd0xheWVycyhm
cmFtZSk7CisgICAgICAgIG15SG9zdEltcGwtPmRpZERyYXdBbGxMYXllcnMoZnJhbWUpOworICAg
IH0KKworICAgIC8vICJSZS1vY2NsdWRlIiBzdXJmYWNlIFMxIGFuZCByZXBlYXQgZHJhdy4KKyAg
ICAvLyBNdXN0IHJlbW92ZSBTMSdzIHJlbmRlciBwYXNzIHNpbmNlIGl0IGlzIG5vdyBhdmFpbGFi
bGUgaW4gZnVsbC4KKyAgICAvLyBTMiBoYXMgbm8gY2hhbmdlIHNvIG11c3QgYWxzbyBiZSByZW1v
dmVkLgorICAgIHRyYW5zZm9ybSA9IGxheWVyUzJQdHItPnRyYW5zZm9ybSgpOworICAgIHRyYW5z
Zm9ybS50cmFuc2xhdGUoLTE1LCAtMTUpOworICAgIGxheWVyUzJQdHItPnNldFRyYW5zZm9ybSh0
cmFuc2Zvcm0pOworICAgIHsKKyAgICAgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRh
IGZyYW1lOworICAgICAgICBFWFBFQ1RfVFJVRShteUhvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZy
YW1lKSk7CisKKyAgICAgICAgLy8gTXVzdCByZWNlaXZlIDEgcmVuZGVyIHBhc3MgLSBmb3IgdGhl
IHJvb3QuCisgICAgICAgIEFTU0VSVF9FUSgxVSwgZnJhbWUucmVuZGVyUGFzc2VzLnNpemUoKSk7
CisKKyAgICAgICAgRVhQRUNUX0VRKDJVLCBmcmFtZS5yZW5kZXJQYXNzZXNbMF0tPnF1YWRMaXN0
KCkuc2l6ZSgpKTsKKworICAgICAgICBteUhvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKKyAg
ICAgICAgbXlIb3N0SW1wbC0+ZGlkRHJhd0FsbExheWVycyhmcmFtZSk7CisgICAgfQorCit9CisK
K1RFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgdGV4dHVyZUNhY2hpbmdXaXRoT2NjbHVz
aW9uUGFydGlhbFN3YXApCit7CisgICAgQ0NTZXR0aW5nczo6c2V0UGFydGlhbFN3YXBFbmFibGVk
KHRydWUpOworCisgICAgQ0NMYXllclRyZWVTZXR0aW5ncyBzZXR0aW5nczsKKyAgICBPd25QdHI8
Q0NMYXllclRyZWVIb3N0SW1wbD4gbXlIb3N0SW1wbCA9IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNy
ZWF0ZShzZXR0aW5ncywgdGhpcyk7CisKKyAgICAvLyBMYXllcnMgYXJlIHN0cnVjdHVyZSBhcyBm
b2xsb3dzOgorICAgIC8vCisgICAgLy8gIFIgKy0tIFMxICstIEwxMCAob3duaW5nKQorICAgIC8v
ICAgIHwgICAgICArLSBMMTEKKyAgICAvLyAgICB8ICAgICAgKy0gTDEyCisgICAgLy8gICAgfAor
ICAgIC8vICAgICstLSBTMiArLSBMMjAgKG93bmluZykKKyAgICAvLyAgICAgICAgICAgKy0gTDIx
CisgICAgLy8KKyAgICAvLyBPY2NsdXNpb246CisgICAgLy8gTDEyIG9jY2x1ZGVzIEwxMSAoaW50
ZXJuYWwpCisgICAgLy8gTDIwIG9jY2x1ZGVzIEwxMCAoZXh0ZXJuYWwpCisgICAgLy8gTDIxIG9j
Y2x1ZGVzIEwyMCAoaW50ZXJuYWwpCisKKyAgICBDQ0xheWVySW1wbCogcm9vdFB0cjsKKyAgICBD
Q0xheWVySW1wbCogbGF5ZXJTMVB0cjsKKyAgICBDQ0xheWVySW1wbCogbGF5ZXJTMlB0cjsKKwor
ICAgIE93blB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY29udGV4dCA9IENDR3JhcGhpY3NDb250ZXh0
OjpjcmVhdGUzRChhZG9wdFB0cihuZXcgUGFydGlhbFN3YXBDb250ZXh0KSk7CisKKyAgICBJbnRT
aXplIHJvb3RTaXplKDEwMDAsIDEwMDApOworCisgICAgbXlIb3N0SW1wbC0+aW5pdGlhbGl6ZUxh
eWVyUmVuZGVyZXIoY29udGV4dC5yZWxlYXNlKCksIFVudGhyb3R0bGVkVXBsb2FkZXIpOworICAg
IG15SG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKHJvb3RTaXplLndpZHRoKCksIHJv
b3RTaXplLmhlaWdodCgpKSk7CisKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBDQ0xh
eWVySW1wbDo6Y3JlYXRlKDEpOworICAgIHJvb3RQdHIgPSByb290LmdldCgpOworCisgICAgcm9v
dC0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgwLCAwKSk7CisgICAgcm9vdC0+c2V0UG9zaXRp
b24oRmxvYXRQb2ludCgwLCAwKSk7CisgICAgcm9vdC0+c2V0Qm91bmRzKHJvb3RTaXplKTsKKyAg
ICByb290LT5zZXRDb250ZW50Qm91bmRzKHJvb3RTaXplKTsKKyAgICByb290LT5zZXREcmF3c0Nv
bnRlbnQodHJ1ZSk7CisgICAgcm9vdC0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKKyAgICBteUhv
c3RJbXBsLT5zZXRSb290TGF5ZXIocm9vdC5yZWxlYXNlKCkpOworCisgICAgYWRkRHJhd2luZ0xh
eWVyVG8ocm9vdFB0ciwgMiwgSW50UmVjdCgzMDAsIDMwMCwgMzAwLCAzMDApLCAmbGF5ZXJTMVB0
cik7CisgICAgbGF5ZXJTMVB0ci0+c2V0Rm9yY2VSZW5kZXJTdXJmYWNlKHRydWUpOworCisgICAg
YWRkRHJhd2luZ0xheWVyVG8obGF5ZXJTMVB0ciwgMywgSW50UmVjdCgxMCwgMTAsIDEwLCAxMCks
IDApOyAvLyBMMTEKKyAgICBhZGREcmF3aW5nTGF5ZXJUbyhsYXllclMxUHRyLCA0LCBJbnRSZWN0
KDAsIDAsIDMwLCAzMCksIDApOyAvLyBMMTIKKworICAgIGFkZERyYXdpbmdMYXllclRvKHJvb3RQ
dHIsIDUsIEludFJlY3QoNTUwLCAyNTAsIDMwMCwgNDAwKSwgJmxheWVyUzJQdHIpOworICAgIGxh
eWVyUzJQdHItPnNldEZvcmNlUmVuZGVyU3VyZmFjZSh0cnVlKTsKKworICAgIGFkZERyYXdpbmdM
YXllclRvKGxheWVyUzJQdHIsIDYsIEludFJlY3QoMjAsIDIwLCA1LCA1KSwgMCk7IC8vIEwyMQor
CisgICAgLy8gSW5pdGlhbCBkcmF3IC0gbXVzdCByZWNlaXZlIGFsbCBxdWFkcworICAgIHsKKyAg
ICAgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRhIGZyYW1lOworICAgICAgICBFWFBF
Q1RfVFJVRShteUhvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CisKKyAgICAgICAgLy8g
TXVzdCByZWNlaXZlIDMgcmVuZGVyIHBhc3Nlcy4KKyAgICAgICAgLy8gRm9yIFJvb3QsIHRoZXJl
IGFyZSAyIHF1YWRzOyBmb3IgUzEsIHRoZXJlIGFyZSAzIHF1YWRzOyBmb3IgUzIsIHRoZXJlIGlz
IDEgcXVhZC4KKyAgICAgICAgQVNTRVJUX0VRKDNVLCBmcmFtZS5yZW5kZXJQYXNzZXMuc2l6ZSgp
KTsKKworICAgICAgICBFWFBFQ1RfRVEoMlUsIGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+cXVhZExp
c3QoKS5zaXplKCkpOworICAgICAgICBFWFBFQ1RfRVEoM1UsIGZyYW1lLnJlbmRlclBhc3Nlc1sx
XS0+cXVhZExpc3QoKS5zaXplKCkpOworICAgICAgICBFWFBFQ1RfRVEoMlUsIGZyYW1lLnJlbmRl
clBhc3Nlc1syXS0+cXVhZExpc3QoKS5zaXplKCkpOworCisgICAgICAgIG15SG9zdEltcGwtPmRy
YXdMYXllcnMoZnJhbWUpOworICAgICAgICBteUhvc3RJbXBsLT5kaWREcmF3QWxsTGF5ZXJzKGZy
YW1lKTsKKyAgICB9CisKKyAgICAvLyAiVW5vY2NsdWRlIiBzdXJmYWNlIFMxIGFuZCByZXBlYXQg
ZHJhdy4KKyAgICAvLyBNdXN0IHJlbW92ZSBTMidzIHJlbmRlciBwYXNzIHNpbmNlIGl0J3MgY2Fj
aGVkOworICAgIC8vIE11c3Qga2VlcCBTMSBxdWFkcyBiZWNhdXNlIHRleHR1cmUgY29udGFpbmVk
IGV4dGVybmFsIG9jY2x1c2lvbi4KKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zv
cm0gPSBsYXllclMyUHRyLT50cmFuc2Zvcm0oKTsKKyAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKDE1
MCwgMTUwKTsKKyAgICBsYXllclMyUHRyLT5zZXRUcmFuc2Zvcm0odHJhbnNmb3JtKTsKKyAgICB7
CisgICAgICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSBmcmFtZTsKKyAgICAgICAg
RVhQRUNUX1RSVUUobXlIb3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworCisgICAgICAg
IC8vIE11c3QgcmVjZWl2ZSAyIHJlbmRlciBwYXNzZXMuCisgICAgICAgIC8vIEZvciBSb290LCB0
aGVyZSBhcmUgMiBxdWFkcworICAgICAgICAvLyBGb3IgUzEsIHRoZSBudW1iZXIgb2YgcXVhZHMg
ZGVwZW5kcyBvbiB3aGF0IGdvdCB1bm9jY2x1ZGVkLCBzbyBub3QgYXNzZXJ0ZWQgYmV5b25kIGJl
aW5nIHBvc2l0aXZlLgorICAgICAgICAvLyBGb3IgUzIsIHRoZXJlIGlzIG5vIHJlbmRlciBwYXNz
CisgICAgICAgIEFTU0VSVF9FUSgyVSwgZnJhbWUucmVuZGVyUGFzc2VzLnNpemUoKSk7CisKKyAg
ICAgICAgRVhQRUNUX0dUKGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+cXVhZExpc3QoKS5zaXplKCks
IDBVKTsKKyAgICAgICAgRVhQRUNUX0VRKDJVLCBmcmFtZS5yZW5kZXJQYXNzZXNbMV0tPnF1YWRM
aXN0KCkuc2l6ZSgpKTsKKworICAgICAgICBteUhvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsK
KyAgICAgICAgbXlIb3N0SW1wbC0+ZGlkRHJhd0FsbExheWVycyhmcmFtZSk7CisgICAgfQorCisg
ICAgLy8gIlJlLW9jY2x1ZGUiIHN1cmZhY2UgUzEgYW5kIHJlcGVhdCBkcmF3LgorICAgIC8vIE11
c3QgcmVtb3ZlIFMxJ3MgcmVuZGVyIHBhc3Mgc2luY2UgaXQgaXMgbm93IGF2YWlsYWJsZSBpbiBm
dWxsLgorICAgIC8vIFMyIGhhcyBubyBjaGFuZ2Ugc28gbXVzdCBhbHNvIGJlIHJlbW92ZWQuCisg
ICAgLy8gRklYTUU6IER1ZSB0byBwYXJ0aWFsIHN3YXAsIHRoZSBzY2lzc29yIHJlY3Qgd2lsbCBj
YXVzZSBPY2NsdXNpb25UcmFja2VyCisgICAgLy8gdG8gdGhpbmsgdGhlcmUgaXMgYW4gZXh0ZXJu
YWwgb2NjbHVzaW9uIGluIHRoZSBwcmV2aW91cyBzdGVwLiBUaGVyZWZvcmUsCisgICAgLy8gUzEn
cyByZW5kZXIgcGFzcyB3aWxsIG5vdCBiZSByZW1vdmVkLgorICAgIHRyYW5zZm9ybSA9IGxheWVy
UzJQdHItPnRyYW5zZm9ybSgpOworICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoLTE1LCAtMTUpOwor
ICAgIGxheWVyUzJQdHItPnNldFRyYW5zZm9ybSh0cmFuc2Zvcm0pOworICAgIHsKKyAgICAgICAg
Q0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRhIGZyYW1lOworICAgICAgICBFWFBFQ1RfVFJV
RShteUhvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CisKKyAgICAgICAgLy8gMiBSZW5k
ZXIgcGFzc2VzIC0gUm9vdCBhbmQgUzEuCisgICAgICAgIEFTU0VSVF9FUSgyVSwgZnJhbWUucmVu
ZGVyUGFzc2VzLnNpemUoKSk7CisKKyAgICAgICAgLy8gUmVuZGVyIHBhc3MgZm9yIFMxIGNvbnRh
aW5zIG5vIHF1YWRzIGFzIHRoZSBzY2lzc29yIHJlY3QgaXMgbm93IG9jY2x1ZGVkLgorICAgICAg
ICBFWFBFQ1RfRVEoMFUsIGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+cXVhZExpc3QoKS5zaXplKCkp
OworCisgICAgICAgIC8vIFJvb3QgY29udGFpbnMgUzIgb25seSwgYXMgUzEgZG9lc24ndCBoYXZl
IGFueSBkYW1hZ2UuCisgICAgICAgIEVYUEVDVF9FUSgxVSwgZnJhbWUucmVuZGVyUGFzc2VzWzFd
LT5xdWFkTGlzdCgpLnNpemUoKSk7CisKKyAgICAgICAgbXlIb3N0SW1wbC0+ZHJhd0xheWVycyhm
cmFtZSk7CisgICAgICAgIG15SG9zdEltcGwtPmRpZERyYXdBbGxMYXllcnMoZnJhbWUpOworICAg
IH0KKworfQorCiBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHN1cmZhY2VUZXh0dXJl
Q2FjaGluZykKIHsKICAgICBDQ1NldHRpbmdzOjpzZXRQYXJ0aWFsU3dhcEVuYWJsZWQodHJ1ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRl
c3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNw
cAppbmRleCBlMWQ5ZmIzNjc3ZjYwNTcxYmUwYmJmZDM4NDJiMzEzMDkwNzc0ZjBkLi5mNTg3Njhl
YjY5ODgxNTE3YjM2NWJjMmQ3MmRjMWQ5MDU0NTU0OGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAKQEAgLTk3LDcgKzk3LDcgQEAg
c3RhdGljIFBhc3NPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gbWFrZUxheWVyKENDVGlsZWRMYXll
ckltcGwqIHBhcmVudCwgY29uc3QgV2UKIHN0YXRpYyB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZExp
c3QmIHF1YWRMaXN0LCBWZWN0b3I8T3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiA+JiBzaGFyZWRT
dGF0ZUxpc3QsIENDVGlsZWRMYXllckltcGwqIGxheWVyLCBDQ0xheWVySXRlcmF0b3JUeXBlJiBp
dCwgQ0NPY2NsdXNpb25UcmFja2VySW1wbCYgb2NjbHVzaW9uVHJhY2tlcikKIHsKICAgICBvY2Ns
dXNpb25UcmFja2VyLmVudGVyTGF5ZXIoaXQpOwotICAgIENDUXVhZEN1bGxlciBxdWFkQ3VsbGVy
KHF1YWRMaXN0LCBsYXllciwgJm9jY2x1c2lvblRyYWNrZXIsIGZhbHNlKTsKKyAgICBDQ1F1YWRD
dWxsZXIgcXVhZEN1bGxlcihxdWFkTGlzdCwgbGF5ZXIsICZvY2NsdXNpb25UcmFja2VyLCBmYWxz
ZSwgZmFsc2UpOwogICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkUXVhZFN0YXRl
ID0gbGF5ZXItPmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpOwogICAgIGJvb2wgaGFkTWlzc2luZ1Rp
bGVzID0gZmFsc2U7CiAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1
YWRTdGF0ZS5nZXQoKSwgaGFkTWlzc2luZ1RpbGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvTW9ja0NDUXVhZEN1bGxlci5oIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9Nb2NrQ0NRdWFkQ3VsbGVyLmgKaW5kZXggMzg1NTA3ZTJjN2M0MWQyYTU5MWZi
ZTMzNmQwODcyMjUyNTkyOWMyYy4uMTVjYjE5ZDZjODI2YTU2YWExMGJkNGZmMmY2OGEwM2EwNWYx
MGU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Nb2NrQ0NRdWFk
Q3VsbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Nb2NrQ0NRdWFkQ3Vs
bGVyLmgKQEAgLTI3LDIxICsyNywxOSBAQAogCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1
ZGUgImNjL0NDRHJhd1F1YWQuaCIKLSNpbmNsdWRlICJjYy9DQ1F1YWRDdWxsZXIuaCIKKyNpbmNs
dWRlICJjYy9DQ1F1YWRTaW5rLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBNb2NrQ0NRdWFkQ3VsbGVyIDogcHVibGljIFdlYkNv
cmU6OkNDUXVhZEN1bGxlciB7CitjbGFzcyBNb2NrQ0NRdWFkQ3VsbGVyIDogcHVibGljIFdlYkNv
cmU6OkNDUXVhZFNpbmsgewogcHVibGljOgogICAgIE1vY2tDQ1F1YWRDdWxsZXIoKQotICAgICAg
ICA6IENDUXVhZEN1bGxlcihtX3F1YWRMaXN0U3RvcmFnZSwgMCwgMCwgZmFsc2UpCi0gICAgICAg
ICwgbV9hY3RpdmVRdWFkTGlzdChtX3F1YWRMaXN0U3RvcmFnZSkKKyAgICAgICAgOiBtX2FjdGl2
ZVF1YWRMaXN0KG1fcXVhZExpc3RTdG9yYWdlKQogICAgIHsgfQogCiAgICAgZXhwbGljaXQgTW9j
a0NDUXVhZEN1bGxlcihDQ1F1YWRMaXN0JiBleHRlcm5hbFF1YWRMaXN0KQotICAgICAgICA6IEND
UXVhZEN1bGxlcihleHRlcm5hbFF1YWRMaXN0LCAwLCAwLCBmYWxzZSkKLSAgICAgICAgLCBtX2Fj
dGl2ZVF1YWRMaXN0KGV4dGVybmFsUXVhZExpc3QpCisgICAgICAgIDogbV9hY3RpdmVRdWFkTGlz
dChleHRlcm5hbFF1YWRMaXN0KQogICAgIHsgfQogCiAgICAgdmlydHVhbCBib29sIGFwcGVuZChX
VEY6OlBhc3NPd25QdHI8V2ViQ29yZTo6Q0NEcmF3UXVhZD4gbmV3UXVhZCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153281</attachid>
            <date>2012-07-19 09:50:27 -0700</date>
            <delta_ts>2012-07-19 10:24:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91537-20120719125026.patch</filename>
            <type>text/plain</type>
            <size>80479</size>
            <attacher>zlieber</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyODYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDg3MTVkY2IxYWYwYzg0
NzBmZjhkNzMxYTVkN2M4MjFmMzE3NjNkMC4uNTZmNjFiN2YxNDE5MGU3NTc0ZmU5ZjUwMjY1N2Fj
OWYzNTU3Yzk5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMiBAQAorMjAxMi0wNy0xNyAgWmVl
diBMaWViZXIgIDx6bGllYmVyQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIFRl
eHR1cmVzIGRyYXduIGR1cmluZyBvY2NsdXNpb24gYXJlIGluY29ycmVjdGx5IHJlLXVzZWQgd2hl
biB1bm9jY2x1ZGVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTE1MzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBEZXRlY3RpbmcgaWYgYW55IGV4dGVybmFsIG9jY2x1c2lvbiBvY2N1cnMgd2hlbiBkcmF3
aW5nIGEKKyAgICAgICAgdGV4dHVyZS4gSWYgZXh0ZXJuYWwgb2NjbHVzaW9uIGhhcHBlbnMsIHRo
ZSB0ZXh0dXJlIGlzIG1hcmtlZCBhcworICAgICAgICAiaW5jb21wbGV0ZSIgaW4gTGF5ZXJSZW5k
ZXJlckNocm9taXVtLCBhbmQgaXMgbm90IGJlaW5nIGNvbnNpZGVyZWQKKyAgICAgICAgZm9yIHJl
LXVzZS4KKworICAgICAgICBNaW5vciByZWZhY3RvcmluZyBvZiBDQ1F1YWRDdWxsZXIgLSBleHRy
YWN0ZWQgaW50ZXJmYWNlCisgICAgICAgIChDQ1F1YWRTaW5rKSBhbmQgdW5pdGVkIGFwcGVuZCgp
IGFuZCBhcHBlbmRTdXJmYWNlKCkgbWV0aG9kcy4KKworICAgICAgICBBZGRlZCB1bml0IHRlc3Rz
IHRvIHZlcmlmeSB0aGlzIGZpeDsgYWxzbyBhZGRlZCB0ZXN0IHRvIHRyeQorICAgICAgICBjbGlw
cGluZyBpbnN0ZWFkIG9mIG9jY2x1c2lvbi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChMYXllclJlbmRl
cmVyQ2hyb21pdW06OkNhY2hlZFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpDYWNoZWRUZXh0dXJlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpDYWNoZWRUZXh0dXJlOjp+Q2FjaGVkVGV4dHVyZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OkNhY2hlZFRleHR1cmU6Omlz
Q29tcGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpDYWNo
ZWRUZXh0dXJlOjpzZXRJc0NvbXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6Q2FjaGVkVGV4dHVyZTo6Q2FjaGVkVGV4dHVyZSk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZGVjaWRlUmVu
ZGVyUGFzc0FsbG9jYXRpb25zRm9yRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpoYXZlQ2FjaGVkUmVzb3VyY2VzRm9yUmVuZGVyUGFzc0lkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclBhc3NRdWFkKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21p
dW0uaDoKKyAgICAgICAgKExheWVyUmVuZGVyZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NJT1N1cmZhY2VMYXllckltcGw6OmFwcGVuZFF1YWRzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVySW1wbC5oOgor
ICAgICAgICAoQ0NJT1N1cmZhY2VMYXllckltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJJbXBsOjphcHBlbmREZWJ1Z0JvcmRlclF1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyk6CisgICAgICAgIChDQ0xheWVy
SW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNp
b25UcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ojo6dW5vY2NsdWRlZENvbnRlbnRSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ojo6dW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250
ZW50UmVjdCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuaDoKKyAgICAgICAgKENDT2NjbHVzaW9u
VHJhY2tlckJhc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UXVhZEN1bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1F1YWRDdWxsZXI6OkNDUXVhZEN1
bGxlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ1F1YWRDdWxsZXI6OmFwcGVuZCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmg6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKENDUXVhZEN1bGxlcik6CisgICAgICAgIChXZWJDb3JlOjpD
Q1F1YWRDdWxsZXI6On5DQ1F1YWRDdWxsZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NRdWFkQ3Vs
bGVyOjpoYXNFeHRlcm5hbE9jY2x1c2lvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NRdWFkU2luay5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoQ0NRdWFkU2luayk6CisgICAgICAgIChXZWJDb3JlOjpDQ1F1YWRT
aW5rOjp+Q0NRdWFkU2luayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NSZW5kZXJQYXNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzczo6Q0NS
ZW5kZXJQYXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzczo6YXBwZW5kUXVhZHNG
b3JMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3M6OmFwcGVuZFF1YWRzRm9y
UmVuZGVyU3VyZmFjZUxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRl
clBhc3NEcmF3UXVhZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzc0Ry
YXdRdWFkOjpDQ1JlbmRlclBhc3NEcmF3UXVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuaDoKKyAgICAgICAgKENDUmVuZGVy
UGFzc0RyYXdRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzc0RyYXdRdWFkOjpo
YXNFeHRlcm5hbE9jY2x1c2lvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3Vy
ZmFjZTo6Q0NSZW5kZXJTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFj
ZTo6YXBwZW5kUXVhZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUmVuZGVyU3VyZmFjZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1JlbmRlclN1cmZhY2U6OnNldEhhc0V4dGVybmFsT2NjbHVzaW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6aGFzRXh0ZXJuYWxPY2NsdXNpb24pOgorICAgICAgICAo
Q0NSZW5kZXJTdXJmYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1Njcm9sbGJhckxheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1Njcm9sbGJh
ckxheWVySW1wbDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmg6CisgICAgICAgIChDQ1Njcm9sbGJhckxh
eWVySW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xp
ZENvbG9yTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU29saWRDb2xvckxheWVy
SW1wbDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU29saWRDb2xvckxheWVySW1wbC5oOgorICAgICAgICAoQ0NTb2xpZENvbG9yTGF5ZXJJ
bXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVM
YXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlTGF5ZXJJbXBsOjphcHBl
bmRRdWFkcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0
dXJlTGF5ZXJJbXBsLmg6CisgICAgICAgIChDQ1RleHR1cmVMYXllckltcGwpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NUaWxlZExheWVySW1wbDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaDoKKyAgICAg
ICAgKENDVGlsZWRMYXllckltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xh
eWVySW1wbDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVmlkZW9MYXllckltcGwuaDoKKyAgICAgICAgKENDVmlkZW9MYXllckltcGwpOgor
CiAyMDEyLTA3LTE3ICBFbWlsIEEgRWtsdW5kICA8ZWFlQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBJbmNvcnJlY3Qgb2Zmc2V0IHVzZWQgZm9yIHNjcm9sbFdpZHRoL0hlaWdodCBjYWxjdWxhdGlv
bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBmMTE1MTk4OTliMGMyZDUyZGFhNTNhNzEw
OGE3NzQ1Nzg5NzliYjE2Li5kN2EyZGI2OGQ0ZmE3MDEzYzZhMmRhOGE3ZGFhY2ViNjYxOTUwYTcx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTA3LTE3
ICBaZWV2IExpZWJlciAgPHpsaWViZXJAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1
bV0gVGV4dHVyZXMgZHJhd24gZHVyaW5nIG9jY2x1c2lvbiBhcmUgaW5jb3JyZWN0bHkgcmUtdXNl
ZCB3aGVuIHVub2NjbHVkZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05MTUzNworCisgICAgICAgIEFkZGVkIHVuaXQgdGVzdHMgdG8gdGVzdCB0ZXh0
dXJlIGNhY2hpbmcgd2l0aCBjbGlwcGluZyBhbmQKKyAgICAgICAgb2NjbHVzaW9uLiBSZW1vdmVk
IHNvbWUgbWlub3IgY29kZSBkdXBsaWNhdGlvbiB3aGVuIGluaXRpYWxpemluZworICAgICAgICBs
YXllcnMgZm9yIHZhcmlvdXMgc2NlbmFyaW9zLgorCisgICAgICAgIE1vY2tDQ1F1YWRDdWxsZXIg
Y2FuIG5vdyBpbXBsZW1lbnQgQ0NRdWFkU2luay4KKworICAgICAgICAqIHRlc3RzL0NDTGF5ZXJU
cmVlSG9zdEltcGxUZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNw
cDoKKyAgICAgICAgKiB0ZXN0cy9Nb2NrQ0NRdWFkQ3VsbGVyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrQ0NRdWFkQ3VsbGVyOjpNb2NrQ0NRdWFkQ3VsbGVyKToKKwogMjAxMi0wNy0xNyAgVG9u
eSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuICBSb2xs
ZWQgREVQUy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4IGE3MjY3
NDE0MGVhYzQwN2EyNzJiNWY0YmRhZDY2MTVlNTRiYTU0MWEuLmRiZDc1MmEyY2RhYmI4ZmZmMzEz
ZmU1OGY1NGRjZmM4NzEyYzdiZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVt
LmNwcApAQCAtMTMzLDYgKzEzMywyNiBAQCBwcm90ZWN0ZWQ6CiAKIH0gLy8gYW5vbnltb3VzIG5h
bWVzcGFjZQogCitjbGFzcyBMYXllclJlbmRlcmVyQ2hyb21pdW06OkNhY2hlZFRleHR1cmUgOiBw
dWJsaWMgQ0NTY29wZWRUZXh0dXJlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDYWNoZWRU
ZXh0dXJlKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxDYWNoZWRUZXh0dXJlPiBj
cmVhdGUoVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKSB7IHJldHVybiBhZG9wdFB0cihuZXcg
Q2FjaGVkVGV4dHVyZShhbGxvY2F0b3IpKTsgfQorICAgIHZpcnR1YWwgfkNhY2hlZFRleHR1cmUo
KSB7IH0KKworICAgIGJvb2wgaXNDb21wbGV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNDb21wbGV0
ZTsgfQorICAgIHZvaWQgc2V0SXNDb21wbGV0ZShib29sIGlzQ29tcGxldGUpIHsgbV9pc0NvbXBs
ZXRlID0gaXNDb21wbGV0ZTsgfQorCitwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgQ2FjaGVkVGV4
dHVyZShUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCisgICAgICAgIDogQ0NTY29wZWRUZXh0
dXJlKGFsbG9jYXRvcikKKyAgICAgICAgLCBtX2lzQ29tcGxldGUoZmFsc2UpCisgICAgeworICAg
IH0KKworcHJpdmF0ZToKKyAgICBib29sIG1faXNDb21wbGV0ZTsKK307CisKIFBhc3NPd25QdHI8
TGF5ZXJSZW5kZXJlckNocm9taXVtPiBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNyZWF0ZShDQ1Jl
bmRlcmVyQ2xpZW50KiBjbGllbnQsIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0
dXJlVXBsb2FkZXJPcHRpb24gdGV4dHVyZVVwbG9hZGVyU2V0dGluZykKIHsKICAgICBPd25QdHI8
TGF5ZXJSZW5kZXJlckNocm9taXVtPiBsYXllclJlbmRlcmVyKGFkb3B0UHRyKG5ldyBMYXllclJl
bmRlcmVyQ2hyb21pdW0oY2xpZW50LCBjb250ZXh0LCB0ZXh0dXJlVXBsb2FkZXJTZXR0aW5nKSkp
OwpAQCAtMzE4LDcgKzMzOCw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkZWNpZGVS
ZW5kZXJQYXNzQWxsb2NhdGlvbnNGb3JGcmFtZShjb25zdCBDQ1JlbmRlclBhCiAgICAgICAgIHBh
c3Nlc0luRnJhbWUuc2V0KHJlbmRlclBhc3Nlc0luRHJhd09yZGVyW2ldLT5pZCgpLCByZW5kZXJQ
YXNzZXNJbkRyYXdPcmRlcltpXSk7CiAKICAgICBWZWN0b3I8aW50PiBwYXNzZXNUb0RlbGV0ZTsK
LSAgICBIYXNoTWFwPGludCwgT3duUHRyPENDU2NvcGVkVGV4dHVyZT4gPjo6Y29uc3RfaXRlcmF0
b3IgcGFzc0l0ZXJhdG9yOworICAgIEhhc2hNYXA8aW50LCBPd25QdHI8Q2FjaGVkVGV4dHVyZT4g
Pjo6Y29uc3RfaXRlcmF0b3IgcGFzc0l0ZXJhdG9yOwogICAgIGZvciAocGFzc0l0ZXJhdG9yID0g
bV9yZW5kZXJQYXNzVGV4dHVyZXMuYmVnaW4oKTsgcGFzc0l0ZXJhdG9yICE9IG1fcmVuZGVyUGFz
c1RleHR1cmVzLmVuZCgpOyArK3Bhc3NJdGVyYXRvcikgewogICAgICAgICBjb25zdCBDQ1JlbmRl
clBhc3MqIHJlbmRlclBhc3NJbkZyYW1lID0gcGFzc2VzSW5GcmFtZS5nZXQocGFzc0l0ZXJhdG9y
LT5maXJzdCk7CiAgICAgICAgIGlmICghcmVuZGVyUGFzc0luRnJhbWUpIHsKQEAgLTMyOCw3ICsz
NDgsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZGVjaWRlUmVuZGVyUGFzc0FsbG9j
YXRpb25zRm9yRnJhbWUoY29uc3QgQ0NSZW5kZXJQYQogCiAgICAgICAgIGNvbnN0IEludFNpemUm
IHJlcXVpcmVkU2l6ZSA9IHJlbmRlclBhc3NUZXh0dXJlU2l6ZShyZW5kZXJQYXNzSW5GcmFtZSk7
CiAgICAgICAgIEdDM0RlbnVtIHJlcXVpcmVkRm9ybWF0ID0gcmVuZGVyUGFzc1RleHR1cmVGb3Jt
YXQocmVuZGVyUGFzc0luRnJhbWUpOwotICAgICAgICBDQ1Njb3BlZFRleHR1cmUqIHRleHR1cmUg
PSBwYXNzSXRlcmF0b3ItPnNlY29uZC5nZXQoKTsKKyAgICAgICAgQ2FjaGVkVGV4dHVyZSogdGV4
dHVyZSA9IHBhc3NJdGVyYXRvci0+c2Vjb25kLmdldCgpOwogICAgICAgICBBU1NFUlQodGV4dHVy
ZSk7CiAKICAgICAgICAgaWYgKHRleHR1cmUtPmlkKCkgJiYgKHRleHR1cmUtPnNpemUoKSAhPSBy
ZXF1aXJlZFNpemUgfHwgdGV4dHVyZS0+Zm9ybWF0KCkgIT0gcmVxdWlyZWRGb3JtYXQpKQpAQCAt
MzQxLDcgKzM2MSw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkZWNpZGVSZW5kZXJQ
YXNzQWxsb2NhdGlvbnNGb3JGcmFtZShjb25zdCBDQ1JlbmRlclBhCiAKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHJlbmRlclBhc3Nlc0luRHJhd09yZGVyLnNpemUoKTsgKytpKSB7CiAgICAg
ICAgIGlmICghbV9yZW5kZXJQYXNzVGV4dHVyZXMuY29udGFpbnMocmVuZGVyUGFzc2VzSW5EcmF3
T3JkZXJbaV0tPmlkKCkpKSB7Ci0gICAgICAgICAgICBPd25QdHI8Q0NTY29wZWRUZXh0dXJlPiB0
ZXh0dXJlID0gQ0NTY29wZWRUZXh0dXJlOjpjcmVhdGUobV9pbXBsVGV4dHVyZUFsbG9jYXRvci5n
ZXQoKSk7CisgICAgICAgICAgICBPd25QdHI8Q2FjaGVkVGV4dHVyZT4gdGV4dHVyZSA9IENhY2hl
ZFRleHR1cmU6OmNyZWF0ZShtX2ltcGxUZXh0dXJlQWxsb2NhdG9yLmdldCgpKTsKICAgICAgICAg
ICAgIG1fcmVuZGVyUGFzc1RleHR1cmVzLnNldChyZW5kZXJQYXNzZXNJbkRyYXdPcmRlcltpXS0+
aWQoKSwgdGV4dHVyZS5yZWxlYXNlKCkpOwogICAgICAgICB9CiAgICAgfQpAQCAtMzQ5LDggKzM2
OSw4IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkZWNpZGVSZW5kZXJQYXNzQWxsb2Nh
dGlvbnNGb3JGcmFtZShjb25zdCBDQ1JlbmRlclBhCiAKIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpoYXZlQ2FjaGVkUmVzb3VyY2VzRm9yUmVuZGVyUGFzc0lkKGludCBpZCkgY29uc3QKIHsK
LSAgICBDQ1Njb3BlZFRleHR1cmUqIHRleHR1cmUgPSBtX3JlbmRlclBhc3NUZXh0dXJlcy5nZXQo
aWQpOwotICAgIHJldHVybiB0ZXh0dXJlICYmIHRleHR1cmUtPmlkKCk7CisgICAgQ2FjaGVkVGV4
dHVyZSogdGV4dHVyZSA9IG1fcmVuZGVyUGFzc1RleHR1cmVzLmdldChpZCk7CisgICAgcmV0dXJu
IHRleHR1cmUgJiYgdGV4dHVyZS0+aWQoKSAmJiB0ZXh0dXJlLT5pc0NvbXBsZXRlKCk7CiB9CiAK
IHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpiZWdpbkRyYXdpbmdGcmFtZShjb25zdCBDQ1Jl
bmRlclBhc3MqIHJvb3RSZW5kZXJQYXNzKQpAQCAtNTk0LDcgKzYxNCw3IEBAIFBhc3NPd25QdHI8
Q0NTY29wZWRUZXh0dXJlPiBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdCYWNrZ3JvdW5kRmls
dGVycyhjb25zdCBDCiAKIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UmVuZGVyUGFz
c1F1YWQoY29uc3QgQ0NSZW5kZXJQYXNzRHJhd1F1YWQqIHF1YWQpCiB7Ci0gICAgQ0NTY29wZWRU
ZXh0dXJlKiBjb250ZW50c1RleHR1cmUgPSBtX3JlbmRlclBhc3NUZXh0dXJlcy5nZXQocXVhZC0+
cmVuZGVyUGFzc0lkKCkpOworICAgIENhY2hlZFRleHR1cmUqIGNvbnRlbnRzVGV4dHVyZSA9IG1f
cmVuZGVyUGFzc1RleHR1cmVzLmdldChxdWFkLT5yZW5kZXJQYXNzSWQoKSk7CiAgICAgaWYgKCFj
b250ZW50c1RleHR1cmUgfHwgIWNvbnRlbnRzVGV4dHVyZS0+aWQoKSkKICAgICAgICAgcmV0dXJu
OwogCkBAIC0xMzc4LDkgKzEzOTgsMTEgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnVz
ZVJlbmRlclBhc3MoY29uc3QgQ0NSZW5kZXJQYXNzKiByZW5kZXJQYXNzKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBDQ1Njb3BlZFRleHR1cmUqIHRleHR1cmUgPSBtX3JlbmRl
clBhc3NUZXh0dXJlcy5nZXQocmVuZGVyUGFzcy0+aWQoKSk7CisgICAgQ2FjaGVkVGV4dHVyZSog
dGV4dHVyZSA9IG1fcmVuZGVyUGFzc1RleHR1cmVzLmdldChyZW5kZXJQYXNzLT5pZCgpKTsKICAg
ICBBU1NFUlQodGV4dHVyZSk7CiAKKyAgICB0ZXh0dXJlLT5zZXRJc0NvbXBsZXRlKCFyZW5kZXJQ
YXNzLT5oYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UoKSk7CisKICAgICBpZiAo
IXRleHR1cmUtPmlkKCkgJiYgIXRleHR1cmUtPmFsbG9jYXRlKHJlbmRlclBhc3NUZXh0dXJlU2l6
ZShyZW5kZXJQYXNzKSwgcmVuZGVyUGFzc1RleHR1cmVGb3JtYXQocmVuZGVyUGFzcykpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKaW5k
ZXggNDE1NTIwZDdmZDllOTM4MWU2NWU1MDNmYTliNzNmYjVmOWQ5OGNjZC4uNzY4ZDFkZjgyYjE1
YTM2ZmUzZWJjYzk0ODZkZmRhMjIyYTg4ZWE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNo
cm9taXVtLmgKQEAgLTE4MCw2ICsxODAsOCBAQCBwcml2YXRlOgogICAgIE93blB0cjxHZW9tZXRy
eUJpbmRpbmc+IG1fc2hhcmVkR2VvbWV0cnk7CiAgICAgRmxvYXRRdWFkIG1fc2hhcmVkR2VvbWV0
cnlRdWFkOwogCisgICAgY2xhc3MgQ2FjaGVkVGV4dHVyZTsKKwogICAgIC8vIFRoaXMgYmxvY2sg
b2YgYmluZGluZ3MgZGVmaW5lcyBhbGwgb2YgdGhlIHByb2dyYW1zIHVzZWQgYnkgdGhlIGNvbXBv
c2l0b3IgaXRzZWxmLgogCiAgICAgLy8gVGlsZWQgbGF5ZXIgc2hhZGVycy4KQEAgLTI2NSw3ICsy
NjcsNyBAQCBwcml2YXRlOgogICAgIE93blB0cjxUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I+IG1f
Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yOwogICAgIE93blB0cjxUcmFja2luZ1RleHR1cmVBbGxv
Y2F0b3I+IG1faW1wbFRleHR1cmVBbGxvY2F0b3I7CiAKLSAgICBIYXNoTWFwPGludCwgT3duUHRy
PENDU2NvcGVkVGV4dHVyZT4gPiBtX3JlbmRlclBhc3NUZXh0dXJlczsKKyAgICBIYXNoTWFwPGlu
dCwgT3duUHRyPENhY2hlZFRleHR1cmU+ID4gbV9yZW5kZXJQYXNzVGV4dHVyZXM7CiAKICAgICBX
ZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBtX2NvbnRleHQ7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlTGF5
ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmNwcAppbmRleCBkMTE1N2VkMDM3OTc5ODE1NGFkMTE3YThl
MjljMmMzNDA5MDExYTMyLi5iNDBkNThjNDBkNjA1MjM2MDk0YjM5ZDBhNjc4MDE4NTY4NDg5ZThj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0lPU3VyZmFjZUxheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuY3BwCkBAIC0zNSw3ICsz
NSw3IEBACiAjaW5jbHVkZSAiY2MvQ0NHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJjYy9D
Q0lPU3VyZmFjZURyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5o
IgotI2luY2x1ZGUgImNjL0NDUXVhZEN1bGxlci5oIgorI2luY2x1ZGUgImNjL0NDUXVhZFNpbmsu
aCIKICNpbmNsdWRlIDxwdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtOTYsNyArOTYsNyBAQCB2b2lkIENDSU9TdXJmYWNlTGF5ZXJJbXBsOjp3
aWxsRHJhdyhDQ1JlbmRlcmVyKiBsYXllclJlbmRlcmVyLCBDQ0dyYXBoaWNzQ29udGV4dAogICAg
IH0KIH0KIAotdm9pZCBDQ0lPU3VyZmFjZUxheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3Vs
bGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwg
Ym9vbCYpCit2b2lkIENDSU9TdXJmYWNlTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5r
JiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9v
bCYpCiB7CiAgICAgSW50UmVjdCBxdWFkUmVjdChJbnRQb2ludCgpLCBjb250ZW50Qm91bmRzKCkp
OwogICAgIHF1YWRMaXN0LmFwcGVuZChDQ0lPU3VyZmFjZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVk
UXVhZFN0YXRlLCBxdWFkUmVjdCwgbV9pb1N1cmZhY2VTaXplLCBtX2lvU3VyZmFjZVRleHR1cmVJ
ZCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmgKaW5kZXggMjhhMzVjZDBm
MjA4M2E4NjIxMDE3MTg3OWMxYjkyNmI1MmJkMDRlMi4uZTQ3MTMxYmI2NzJjY2ZmZTA2ZmUzMzg2
NTg0MjA4YTc0Zjk5MWU5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVySW1wbC5o
CkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0SU9TdXJmYWNlUHJvcGVy
dGllcyh1bnNpZ25lZCBpb1N1cmZhY2VJZCwgY29uc3QgSW50U2l6ZSYpOwogCi0gICAgdmlydHVh
bCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRl
KiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBw
ZW5kUXVhZHMoQ0NRdWFkU2luayYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgYm9vbCYgaGFk
TWlzc2luZ1RpbGVzKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhDQ1Jl
bmRlcmVyKiwgQ0NHcmFwaGljc0NvbnRleHQqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkTG9zZUNvbnRleHQoKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAppbmRleCA5
NDM0ZGM1OWNkOGU5ZTU4NTYyZjRmNmI2MGI0OWVkNmQwNmZmZjUyLi5kMTA5MDlkN2FjOTExMTA4
ZGFkYTFlMzllYjg3ZGEzNzA1ZWI3N2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCkBAIC0z
NSw3ICszNSw3IEBACiAjaW5jbHVkZSAiY2MvQ0NMYXllclNvcnRlci5oIgogI2luY2x1ZGUgImNj
L0NDTWF0aFV0aWwuaCIKICNpbmNsdWRlICJjYy9DQ1Byb3h5LmgiCi0jaW5jbHVkZSAiY2MvQ0NR
dWFkQ3VsbGVyLmgiCisjaW5jbHVkZSAiY2MvQ0NRdWFkU2luay5oIgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCiB1c2luZyBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4
OwpAQCAtMTc0LDcgKzE3NCw3IEBAIHZvaWQgQ0NMYXllckltcGw6OmRpZERyYXcoKQogI2VuZGlm
CiB9CiAKLXZvaWQgQ0NMYXllckltcGw6OmFwcGVuZERlYnVnQm9yZGVyUXVhZChDQ1F1YWRDdWxs
ZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlKSBj
b25zdAordm9pZCBDQ0xheWVySW1wbDo6YXBwZW5kRGVidWdCb3JkZXJRdWFkKENDUXVhZFNpbmsm
IHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlKSBjb25z
dAogewogICAgIGlmICghaGFzRGVidWdCb3JkZXJzKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVySW1wbC5oCmluZGV4IGE1Y2FjZDY0YmZmNGE2MTRiYzM1MTEwMWIwNWQwYzI4NzBkMTFm
YmMuLjc1N2Y5YzBlZThmODg2YTc2ZjE4Y2M3YjU5YjIxOWU5NmE1NTE0ZDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBs
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllckltcGwuaApAQCAtNDcsOCArNDcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBD
Q0dyYXBoaWNzQ29udGV4dDsKIGNsYXNzIENDTGF5ZXJTb3J0ZXI7CiBjbGFzcyBDQ0xheWVyVHJl
ZUhvc3RJbXBsOwotY2xhc3MgQ0NRdWFkQ3VsbGVyOwogY2xhc3MgQ0NSZW5kZXJlcjsKK2NsYXNz
IENDUXVhZFNpbms7CiBjbGFzcyBMYXllckNocm9taXVtOwogCiBjbGFzcyBDQ0xheWVySW1wbCA6
IHB1YmxpYyBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckNsaWVudCB7CkBAIC05Myw5ICs5Myw5
IEBAIHB1YmxpYzoKICAgICAvLyB0aGUgbGF5ZXIgaXMgZGVzdHJveWVkLiBUbyBlbmZvcmNlIHRo
aXMsIGFueSBjbGFzcyB0aGF0IG92ZXJyaWRlcwogICAgIC8vIHdpbGxEcmF3L2RpZERyYXcgbXVz
dCBjYWxsIHRoZSBiYXNlIGNsYXNzIHZlcnNpb24uCiAgICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3
KENDUmVuZGVyZXIqLCBDQ0dyYXBoaWNzQ29udGV4dCopOwotICAgIHZpcnR1YWwgdm9pZCBhcHBl
bmRRdWFkcyhDQ1F1YWRDdWxsZXImLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wmIGhh
ZE1pc3NpbmdUaWxlcykgeyB9CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZFNp
bmsmLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykgeyB9
CiAgICAgdmlydHVhbCB2b2lkIGRpZERyYXcoKTsKLSAgICB2b2lkIGFwcGVuZERlYnVnQm9yZGVy
UXVhZChDQ1F1YWRDdWxsZXImLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSopIGNvbnN0OworICAg
IHZvaWQgYXBwZW5kRGVidWdCb3JkZXJRdWFkKENDUXVhZFNpbmsmLCBjb25zdCBDQ1NoYXJlZFF1
YWRTdGF0ZSopIGNvbnN0OwogCiAgICAgdmlydHVhbCB1bnNpZ25lZCBjb250ZW50c1RleHR1cmVJ
ZCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4
IDA0YmI3ODY3MTU5ZDc2ODgzMjA4Njk0OWM0YzkyODY3YmE0MThlOWIuLmM3ZDI5OWM3ODY2MjU0
N2VlMzEzMTFhMGRlYTlkZDkyMGMxNTI5Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdEltcGwuY3BwCkBAIC0zMjksMTEgKzMyOSwxNyBAQCBib29sIENDTGF5ZXJUcmVlSG9zdElt
cGw6OmNhbGN1bGF0ZVJlbmRlclBhc3NlcyhGcmFtZURhdGEmIGZyYW1lKQogICAgICAgICBpZiAo
aXQucmVwcmVzZW50c0NvbnRyaWJ1dGluZ1JlbmRlclN1cmZhY2UoKSAmJiAhaXQtPnJlbmRlclN1
cmZhY2UoKS0+c2Npc3NvclJlY3QoKS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIENDUmVuZGVy
UGFzcyogY29udHJpYnV0aW5nUmVuZGVyUGFzcyA9IHN1cmZhY2VQYXNzTWFwLmdldChpdC0+cmVu
ZGVyU3VyZmFjZSgpKTsKICAgICAgICAgICAgIHBhc3MtPmFwcGVuZFF1YWRzRm9yUmVuZGVyU3Vy
ZmFjZUxheWVyKCppdCwgY29udHJpYnV0aW5nUmVuZGVyUGFzcywgJm9jY2x1c2lvblRyYWNrZXIp
OwotICAgICAgICB9IGVsc2UgaWYgKGl0LnJlcHJlc2VudHNJdHNlbGYoKSAmJiAhb2NjbHVzaW9u
VHJhY2tlci5vY2NsdWRlZCgqaXQsIGl0LT52aXNpYmxlQ29udGVudFJlY3QoKSkgJiYgIWl0LT52
aXNpYmxlQ29udGVudFJlY3QoKS5pc0VtcHR5KCkgJiYgIWl0LT5zY2lzc29yUmVjdCgpLmlzRW1w
dHkoKSkgewotICAgICAgICAgICAgaXQtPndpbGxEcmF3KG1fbGF5ZXJSZW5kZXJlci5nZXQoKSwg
Y29udGV4dCgpKTsKLSAgICAgICAgICAgIGZyYW1lLndpbGxEcmF3TGF5ZXJzLmFwcGVuZCgqaXQp
OwotCi0gICAgICAgICAgICBwYXNzLT5hcHBlbmRRdWFkc0ZvckxheWVyKCppdCwgJm9jY2x1c2lv
blRyYWNrZXIsIGhhZE1pc3NpbmdUaWxlcyk7CisgICAgICAgIH0gZWxzZSBpZiAoaXQucmVwcmVz
ZW50c0l0c2VsZigpICYmICFpdC0+dmlzaWJsZUNvbnRlbnRSZWN0KCkuaXNFbXB0eSgpICYmICFp
dC0+c2Npc3NvclJlY3QoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGJvb2wgaGFzT2NjbHVz
aW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlOworICAgICAgICAgICAgaWYgKG9jY2x1c2lvblRy
YWNrZXIub2NjbHVkZWQoKml0LCBpdC0+dmlzaWJsZUNvbnRlbnRSZWN0KCksICZoYXNPY2NsdXNp
b25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UpKSB7CisgICAgICAgICAgICAgICAgaWYgKGhhc09j
Y2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSkKKyAgICAgICAgICAgICAgICAgICAgcGFz
cy0+c2V0SGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKGhhc09jY2x1c2lvbkZy
b21PdXRzaWRlVGFyZ2V0U3VyZmFjZSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGl0LT53aWxsRHJhdyhtX2xheWVyUmVuZGVyZXIuZ2V0KCksIGNvbnRleHQoKSk7Cisg
ICAgICAgICAgICAgICAgZnJhbWUud2lsbERyYXdMYXllcnMuYXBwZW5kKCppdCk7CisKKyAgICAg
ICAgICAgICAgICBwYXNzLT5hcHBlbmRRdWFkc0ZvckxheWVyKCppdCwgJm9jY2x1c2lvblRyYWNr
ZXIsIGhhZE1pc3NpbmdUaWxlcyk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAoaGFkTWlzc2luZ1RpbGVzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2Vy
LmNwcAppbmRleCAwZDAxNTkzY2Y4NzNiZTY3MmQzN2FlNzc4YjQ4ZjdjYTdkMTk5ZTJkLi5lMThi
ODczM2U5NzU0YzY2ZDYwMGI4M2Q4ZmFiNWU3MjUwNDc3YTY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
T2NjbHVzaW9uVHJhY2tlci5jcHAKQEAgLTM3Nyw4ICszNzcsMTEgQEAgc3RhdGljIGlubGluZSBi
b29sIHRlc3RDb250ZW50UmVjdE9jY2x1ZGVkKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBj
b25zdCBXZWIKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBSZW5k
ZXJTdXJmYWNlVHlwZT4KLWJvb2wgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJl
bmRlclN1cmZhY2VUeXBlPjo6b2NjbHVkZWQoY29uc3QgTGF5ZXJUeXBlKiBsYXllciwgY29uc3Qg
SW50UmVjdCYgY29udGVudFJlY3QpIGNvbnN0Citib29sIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8
TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46Om9jY2x1ZGVkKGNvbnN0IExheWVyVHlwZSog
bGF5ZXIsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBib29sKiBoYXNPY2NsdXNpb25Gcm9t
T3V0c2lkZVRhcmdldFN1cmZhY2UpIGNvbnN0CiB7CisgICAgaWYgKGhhc09jY2x1c2lvbkZyb21P
dXRzaWRlVGFyZ2V0U3VyZmFjZSkKKyAgICAgICAgKmhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFy
Z2V0U3VyZmFjZSA9IGZhbHNlOworCiAgICAgQVNTRVJUKCFtX3N0YWNrLmlzRW1wdHkoKSk7CiAg
ICAgaWYgKG1fc3RhY2suaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zODcs
MTAgKzM5MCwxNSBAQCBib29sIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5k
ZXJTdXJmYWNlVHlwZT46Om9jY2x1ZGVkKGNvbnN0IExheWVyVAogCiAgICAgQVNTRVJUKGxheWVy
LT5yZW5kZXJUYXJnZXQoKSA9PSBtX3N0YWNrLmxhc3QoKS50YXJnZXQpOwogCi0gICAgaWYgKGxh
eWVyVHJhbnNmb3Jtc1RvU2NyZWVuS25vd24obGF5ZXIpICYmIHRlc3RDb250ZW50UmVjdE9jY2x1
ZGVkKGNvbnRlbnRSZWN0LCBjb250ZW50VG9TY3JlZW5TcGFjZVRyYW5zZm9ybTxMYXllclR5cGU+
KGxheWVyKSwgbV9zY2lzc29yUmVjdEluU2NyZWVuU3BhY2UsIG1fc3RhY2subGFzdCgpLm9jY2x1
c2lvbkluU2NyZWVuKSkKLSAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgaWYgKGxheWVyVHJhbnNm
b3Jtc1RvVGFyZ2V0S25vd24obGF5ZXIpICYmIHRlc3RDb250ZW50UmVjdE9jY2x1ZGVkKGNvbnRl
bnRSZWN0LCBjb250ZW50VG9UYXJnZXRTdXJmYWNlVHJhbnNmb3JtPExheWVyVHlwZT4obGF5ZXIp
LCBsYXllclNjaXNzb3JSZWN0SW5UYXJnZXRTdXJmYWNlKGxheWVyKSwgbV9zdGFjay5sYXN0KCku
b2NjbHVzaW9uSW5UYXJnZXQpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChsYXll
clRyYW5zZm9ybXNUb1NjcmVlbktub3duKGxheWVyKSAmJiB0ZXN0Q29udGVudFJlY3RPY2NsdWRl
ZChjb250ZW50UmVjdCwgY29udGVudFRvU2NyZWVuU3BhY2VUcmFuc2Zvcm08TGF5ZXJUeXBlPihs
YXllciksIG1fc2Npc3NvclJlY3RJblNjcmVlblNwYWNlLCBtX3N0YWNrLmxhc3QoKS5vY2NsdXNp
b25JblNjcmVlbikpIHsKKyAgICAgICAgaWYgKGhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0
U3VyZmFjZSkKKyAgICAgICAgICAgICpoYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZh
Y2UgPSB0cnVlOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKQEAgLTQxNyw3ICs0MjUsNyBAQCBzdGF0aWMgaW5saW5lIEludFJlY3QgY29tcHV0
ZVVub2NjbHVkZWRDb250ZW50UmVjdChjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgYwogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBl
PgotSW50UmVjdCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFj
ZVR5cGU+Ojp1bm9jY2x1ZGVkQ29udGVudFJlY3QoY29uc3QgTGF5ZXJUeXBlKiBsYXllciwgY29u
c3QgSW50UmVjdCYgY29udGVudFJlY3QpIGNvbnN0CitJbnRSZWN0IENDT2NjbHVzaW9uVHJhY2tl
ckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46OnVub2NjbHVkZWRDb250ZW50UmVj
dChjb25zdCBMYXllclR5cGUqIGxheWVyLCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgYm9v
bCogaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKSBjb25zdAogewogICAgIEFT
U0VSVCghbV9zdGFjay5pc0VtcHR5KCkpOwogICAgIGlmIChtX3N0YWNrLmlzRW1wdHkoKSkKQEAg
LTQzNCwxOCArNDQyLDIxIEBAIEludFJlY3QgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5
cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6dW5vY2NsdWRlZENvbnRlbnRSCiAgICAgaWYgKGxheWVy
VHJhbnNmb3Jtc1RvU2NyZWVuS25vd24obGF5ZXIpKQogICAgICAgICB1bm9jY2x1ZGVkSW5TY3Jl
ZW4gPSBjb21wdXRlVW5vY2NsdWRlZENvbnRlbnRSZWN0KGNvbnRlbnRSZWN0LCBjb250ZW50VG9T
Y3JlZW5TcGFjZVRyYW5zZm9ybTxMYXllclR5cGU+KGxheWVyKSwgbV9zY2lzc29yUmVjdEluU2Ny
ZWVuU3BhY2UsIG1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluU2NyZWVuKTsKIAotICAgIGlmICh1
bm9jY2x1ZGVkSW5TY3JlZW4uaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gdW5vY2NsdWRlZElu
U2NyZWVuOwotCiAgICAgSW50UmVjdCB1bm9jY2x1ZGVkSW5UYXJnZXQgPSBjb250ZW50UmVjdDsK
ICAgICBpZiAobGF5ZXJUcmFuc2Zvcm1zVG9UYXJnZXRLbm93bihsYXllcikpCiAgICAgICAgIHVu
b2NjbHVkZWRJblRhcmdldCA9IGNvbXB1dGVVbm9jY2x1ZGVkQ29udGVudFJlY3QoY29udGVudFJl
Y3QsIGNvbnRlbnRUb1RhcmdldFN1cmZhY2VUcmFuc2Zvcm08TGF5ZXJUeXBlPihsYXllciksIGxh
eWVyU2Npc3NvclJlY3RJblRhcmdldFN1cmZhY2UobGF5ZXIpLCBtX3N0YWNrLmxhc3QoKS5vY2Ns
dXNpb25JblRhcmdldCk7CiAKKyAgICBpZiAoaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRT
dXJmYWNlKQorICAgICAgICAqaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlID0g
KHVub2NjbHVkZWRJblNjcmVlbiAhPSB1bm9jY2x1ZGVkSW5UYXJnZXQpOworCisgICAgaWYgKHVu
b2NjbHVkZWRJblNjcmVlbi5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB1bm9jY2x1ZGVkSW5T
Y3JlZW47CisKICAgICByZXR1cm4gaW50ZXJzZWN0aW9uKHVub2NjbHVkZWRJblNjcmVlbiwgdW5v
Y2NsdWRlZEluVGFyZ2V0KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBl
bmFtZSBSZW5kZXJTdXJmYWNlVHlwZT4KLUludFJlY3QgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxM
YXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6dW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZh
Y2VDb250ZW50UmVjdChjb25zdCBMYXllclR5cGUqIGxheWVyLCBib29sIGZvclJlcGxpY2EsIGNv
bnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KSBjb25zdAorSW50UmVjdCBDQ09jY2x1c2lvblRyYWNr
ZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+Ojp1bm9jY2x1ZGVkQ29udHJpYnV0
aW5nU3VyZmFjZUNvbnRlbnRSZWN0KGNvbnN0IExheWVyVHlwZSogbGF5ZXIsIGJvb2wgZm9yUmVw
bGljYSwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGJvb2wqIGhhc09jY2x1c2lvbkZyb21P
dXRzaWRlVGFyZ2V0U3VyZmFjZSkgY29uc3QKIHsKICAgICBBU1NFUlQoIW1fc3RhY2suaXNFbXB0
eSgpKTsKICAgICAvLyBUaGUgbGF5ZXIgaXMgYSBjb250cmlidXRpbmcgcmVuZGVyVGFyZ2V0IHNv
IGl0IHNob3VsZCBoYXZlIGEgc3VyZmFjZS4KQEAgLTQ4NCw5ICs0OTUsNiBAQCBJbnRSZWN0IEND
T2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46OnVub2Nj
bHVkZWRDb250cmlidQogICAgICAgICAgICAgdW5vY2NsdWRlZEluU2NyZWVuID0gY29tcHV0ZVVu
b2NjbHVkZWRDb250ZW50UmVjdChjb250ZW50UmVjdCwgdHJhbnNmb3JtVG9TY3JlZW4sIG1fc2Np
c3NvclJlY3RJblNjcmVlblNwYWNlLCBSZWdpb24oKSk7CiAgICAgfQogCi0gICAgaWYgKHVub2Nj
bHVkZWRJblNjcmVlbi5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB1bm9jY2x1ZGVkSW5TY3Jl
ZW47Ci0KICAgICBJbnRSZWN0IHVub2NjbHVkZWRJblRhcmdldCA9IGNvbnRlbnRSZWN0OwogICAg
IGlmIChzdXJmYWNlVHJhbnNmb3Jtc1RvVGFyZ2V0S25vd24oc3VyZmFjZSkpIHsKICAgICAgICAg
aWYgKGhhc09jY2x1c2lvbikgewpAQCAtNDk2LDYgKzUwNCwxMiBAQCBJbnRSZWN0IENDT2NjbHVz
aW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46OnVub2NjbHVkZWRD
b250cmlidQogICAgICAgICAgICAgdW5vY2NsdWRlZEluVGFyZ2V0ID0gY29tcHV0ZVVub2NjbHVk
ZWRDb250ZW50UmVjdChjb250ZW50UmVjdCwgdHJhbnNmb3JtVG9UYXJnZXQsIHN1cmZhY2VDbGlw
UmVjdCwgUmVnaW9uKCkpOwogICAgIH0KIAorICAgIGlmIChoYXNPY2NsdXNpb25Gcm9tT3V0c2lk
ZVRhcmdldFN1cmZhY2UpCisgICAgICAgICpoYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1
cmZhY2UgPSAodW5vY2NsdWRlZEluU2NyZWVuICE9IHVub2NjbHVkZWRJblRhcmdldCk7CisKKyAg
ICBpZiAodW5vY2NsdWRlZEluU2NyZWVuLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHVub2Nj
bHVkZWRJblNjcmVlbjsKKwogICAgIHJldHVybiBpbnRlcnNlY3Rpb24odW5vY2NsdWRlZEluU2Ny
ZWVuLCB1bm9jY2x1ZGVkSW5UYXJnZXQpOwogfQogCkBAIC01MTcsOSArNTMxLDkgQEAgdGVtcGxh
dGUgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZh
Y2VDaHJvbWl1bT46OmVudGUKIHRlbXBsYXRlIHZvaWQgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxM
YXllckNocm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+OjpmaW5pc2hlZFJlbmRlclRhcmdl
dChjb25zdCBMYXllckNocm9taXVtKiBmaW5pc2hlZFRhcmdldCk7CiB0ZW1wbGF0ZSB2b2lkIEND
T2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9taXVt
Pjo6bGVhdmVUb1JlbmRlclRhcmdldChjb25zdCBMYXllckNocm9taXVtKiBuZXdUYXJnZXQpOwog
dGVtcGxhdGUgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyQ2hyb21pdW0sIFJlbmRl
clN1cmZhY2VDaHJvbWl1bT46Om1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNvbnN0IExheWVyQ2hy
b21pdW0qKTsKLXRlbXBsYXRlIGJvb2wgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllckNocm9t
aXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+OjpvY2NsdWRlZChjb25zdCBMYXllckNocm9taXVt
KiwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpIGNvbnN0OwotdGVtcGxhdGUgSW50UmVjdCBD
Q09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1
bT46OnVub2NjbHVkZWRDb250ZW50UmVjdChjb25zdCBMYXllckNocm9taXVtKiwgY29uc3QgSW50
UmVjdCYgY29udGVudFJlY3QpIGNvbnN0OwotdGVtcGxhdGUgSW50UmVjdCBDQ09jY2x1c2lvblRy
YWNrZXJCYXNlPExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1bT46OnVub2NjbHVk
ZWRDb250cmlidXRpbmdTdXJmYWNlQ29udGVudFJlY3QoY29uc3QgTGF5ZXJDaHJvbWl1bSosIGJv
b2wgZm9yUmVwbGljYSwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpIGNvbnN0OwordGVtcGxh
dGUgYm9vbCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZh
Y2VDaHJvbWl1bT46Om9jY2x1ZGVkKGNvbnN0IExheWVyQ2hyb21pdW0qLCBjb25zdCBJbnRSZWN0
JiBjb250ZW50UmVjdCwgYm9vbCogaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNl
KSBjb25zdDsKK3RlbXBsYXRlIEludFJlY3QgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllckNo
cm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+Ojp1bm9jY2x1ZGVkQ29udGVudFJlY3QoY29u
c3QgTGF5ZXJDaHJvbWl1bSosIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBib29sKiBoYXNP
Y2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UpIGNvbnN0OwordGVtcGxhdGUgSW50UmVj
dCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJv
bWl1bT46OnVub2NjbHVkZWRDb250cmlidXRpbmdTdXJmYWNlQ29udGVudFJlY3QoY29uc3QgTGF5
ZXJDaHJvbWl1bSosIGJvb2wgZm9yUmVwbGljYSwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3Qs
IGJvb2wqIGhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSkgY29uc3Q7CiB0ZW1w
bGF0ZSBJbnRSZWN0IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJDaHJvbWl1bSwgUmVuZGVy
U3VyZmFjZUNocm9taXVtPjo6bGF5ZXJTY2lzc29yUmVjdEluVGFyZ2V0U3VyZmFjZShjb25zdCBM
YXllckNocm9taXVtKikgY29uc3Q7CiAKIHRlbXBsYXRlIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8
Q0NMYXllckltcGwsIENDUmVuZGVyU3VyZmFjZT46OkNDT2NjbHVzaW9uVHJhY2tlckJhc2UoSW50
UmVjdCBzY2lzc29yUmVjdEluU2NyZWVuU3BhY2UsIGJvb2wgcmVjb3JkTWV0cmljc0ZvckZyYW1l
KTsKQEAgLTUyOSw5ICs1NDMsOSBAQCB0ZW1wbGF0ZSB2b2lkIENDT2NjbHVzaW9uVHJhY2tlckJh
c2U8Q0NMYXllckltcGwsIENDUmVuZGVyU3VyZmFjZT46OmVudGVyUmVuZGVyVAogdGVtcGxhdGUg
dm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPENDTGF5ZXJJbXBsLCBDQ1JlbmRlclN1cmZhY2U+
OjpmaW5pc2hlZFJlbmRlclRhcmdldChjb25zdCBDQ0xheWVySW1wbCogZmluaXNoZWRUYXJnZXQp
OwogdGVtcGxhdGUgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPENDTGF5ZXJJbXBsLCBDQ1Jl
bmRlclN1cmZhY2U+OjpsZWF2ZVRvUmVuZGVyVGFyZ2V0KGNvbnN0IENDTGF5ZXJJbXBsKiBuZXdU
YXJnZXQpOwogdGVtcGxhdGUgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPENDTGF5ZXJJbXBs
LCBDQ1JlbmRlclN1cmZhY2U+OjptYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjb25zdCBDQ0xheWVy
SW1wbCopOwotdGVtcGxhdGUgYm9vbCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPENDTGF5ZXJJbXBs
LCBDQ1JlbmRlclN1cmZhY2U+OjpvY2NsdWRlZChjb25zdCBDQ0xheWVySW1wbCosIGNvbnN0IElu
dFJlY3QmIGNvbnRlbnRSZWN0KSBjb25zdDsKLXRlbXBsYXRlIEludFJlY3QgQ0NPY2NsdXNpb25U
cmFja2VyQmFzZTxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlPjo6dW5vY2NsdWRlZENvbnRl
bnRSZWN0KGNvbnN0IENDTGF5ZXJJbXBsKiwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpIGNv
bnN0OwotdGVtcGxhdGUgSW50UmVjdCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPENDTGF5ZXJJbXBs
LCBDQ1JlbmRlclN1cmZhY2U+Ojp1bm9jY2x1ZGVkQ29udHJpYnV0aW5nU3VyZmFjZUNvbnRlbnRS
ZWN0KGNvbnN0IENDTGF5ZXJJbXBsKiwgYm9vbCBmb3JSZXBsaWNhLCBjb25zdCBJbnRSZWN0JiBj
b250ZW50UmVjdCkgY29uc3Q7Cit0ZW1wbGF0ZSBib29sIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8
Q0NMYXllckltcGwsIENDUmVuZGVyU3VyZmFjZT46Om9jY2x1ZGVkKGNvbnN0IENDTGF5ZXJJbXBs
KiwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGJvb2wqIGhhc09jY2x1c2lvbkZyb21PdXRz
aWRlVGFyZ2V0U3VyZmFjZSkgY29uc3Q7Cit0ZW1wbGF0ZSBJbnRSZWN0IENDT2NjbHVzaW9uVHJh
Y2tlckJhc2U8Q0NMYXllckltcGwsIENDUmVuZGVyU3VyZmFjZT46OnVub2NjbHVkZWRDb250ZW50
UmVjdChjb25zdCBDQ0xheWVySW1wbCosIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBib29s
KiBoYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UpIGNvbnN0OwordGVtcGxhdGUg
SW50UmVjdCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPENDTGF5ZXJJbXBsLCBDQ1JlbmRlclN1cmZh
Y2U+Ojp1bm9jY2x1ZGVkQ29udHJpYnV0aW5nU3VyZmFjZUNvbnRlbnRSZWN0KGNvbnN0IENDTGF5
ZXJJbXBsKiwgYm9vbCBmb3JSZXBsaWNhLCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgYm9v
bCogaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKSBjb25zdDsKIHRlbXBsYXRl
IEludFJlY3QgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJm
YWNlPjo6bGF5ZXJTY2lzc29yUmVjdEluVGFyZ2V0U3VyZmFjZShjb25zdCBDQ0xheWVySW1wbCop
IGNvbnN0OwogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmgKaW5kZXggYWU4NTc1
MWVhMWY4MTJlYWI1YjQ0ZTUwMGZjNWE4OGI5N2JmZmM1MS4uYTYwMWI2ZDM5NTFhMTRmZWIzYWVk
MzMxYzU1NDM5YjYwN2Q5NDc0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmgK
QEAgLTU0LDEzICs1NCwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBsZWF2ZUxheWVyKGNvbnN0IEND
TGF5ZXJJdGVyYXRvclBvc2l0aW9uPExheWVyVHlwZT4mKTsKIAogICAgIC8vIFJldHVybnMgdHJ1
ZSBpZiB0aGUgZ2l2ZW4gcmVjdCBpbiBjb250ZW50IHNwYWNlIGZvciB0aGUgbGF5ZXIgaXMgZnVs
bHkgb2NjbHVkZWQgaW4gZWl0aGVyIHNjcmVlbiBzcGFjZSBvciB0aGUgbGF5ZXIncyB0YXJnZXQg
c3VyZmFjZS4KLSAgICBib29sIG9jY2x1ZGVkKGNvbnN0IExheWVyVHlwZSosIGNvbnN0IEludFJl
Y3QmIGNvbnRlbnRSZWN0KSBjb25zdDsKKyAgICBib29sIG9jY2x1ZGVkKGNvbnN0IExheWVyVHlw
ZSosIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBib29sKiBoYXNPY2NsdXNpb25Gcm9tT3V0
c2lkZVRhcmdldFN1cmZhY2UgPSAwKSBjb25zdDsKICAgICAvLyBHaXZlcyBhbiB1bm9jY2x1ZGVk
IHN1Yi1yZWN0IG9mIHxjb250ZW50UmVjdHwgaW4gdGhlIGNvbnRlbnQgc3BhY2Ugb2YgdGhlIGxh
eWVyLiBVc2VkIHdoZW4gY29uc2lkZXJpbmcgb2NjbHVzaW9uIGZvciBhIGxheWVyIHRoYXQgcGFp
bnRzL2RyYXdzIHNvbWV0aGluZy4KLSAgICBJbnRSZWN0IHVub2NjbHVkZWRDb250ZW50UmVjdChj
b25zdCBMYXllclR5cGUqLCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkgY29uc3Q7CisgICAg
SW50UmVjdCB1bm9jY2x1ZGVkQ29udGVudFJlY3QoY29uc3QgTGF5ZXJUeXBlKiwgY29uc3QgSW50
UmVjdCYgY29udGVudFJlY3QsIGJvb2wqIGhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3Vy
ZmFjZSA9IDApIGNvbnN0OwogCiAgICAgLy8gR2l2ZXMgYW4gdW5vY2NsdWRlZCBzdWItcmVjdCBv
ZiB8Y29udGVudFJlY3R8IGluIHRoZSBjb250ZW50IHNwYWNlIG9mIHRoZSByZW5kZXJUYXJnZXQg
b3duZWQgYnkgdGhlIGxheWVyLgogICAgIC8vIFVzZWQgd2hlbiBjb25zaWRlcmluZyBvY2NsdXNp
b24gZm9yIGEgY29udHJpYnV0aW5nIHN1cmZhY2UgdGhhdCBpcyByZW5kZXJpbmcgaW50byBhbm90
aGVyIHRhcmdldC4KLSAgICBJbnRSZWN0IHVub2NjbHVkZWRDb250cmlidXRpbmdTdXJmYWNlQ29u
dGVudFJlY3QoY29uc3QgTGF5ZXJUeXBlKiwgYm9vbCBmb3JSZXBsaWNhLCBjb25zdCBJbnRSZWN0
JiBjb250ZW50UmVjdCkgY29uc3Q7CisgICAgSW50UmVjdCB1bm9jY2x1ZGVkQ29udHJpYnV0aW5n
U3VyZmFjZUNvbnRlbnRSZWN0KGNvbnN0IExheWVyVHlwZSosIGJvb2wgZm9yUmVwbGljYSwgY29u
c3QgSW50UmVjdCYgY29udGVudFJlY3QsIGJvb2wqIGhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFy
Z2V0U3VyZmFjZSA9IDApIGNvbnN0OwogCiAgICAgLy8gUmVwb3J0IG9wZXJhdGlvbnMgZm9yIHJl
Y29yZGluZyBvdmVyZHJhdyBtZXRyaWNzLgogICAgIENDT3ZlcmRyYXdNZXRyaWNzJiBvdmVyZHJh
d01ldHJpY3MoKSBjb25zdCB7IHJldHVybiAqbV9vdmVyZHJhd01ldHJpY3MuZ2V0KCk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UXVhZEN1bGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1F1YWRDdWxsZXIuY3BwCmluZGV4IDY1Zjc4Nzg4ZWQ0OWFlMjQyODVmN2RhY2NlYjcx
ZGUxZjQ5YTNlZjMuLjA2ODRmM2VlNTU1ZTJmYmFhYWU0ZjRmZWE5YzQ2YjMwNmJmNWVjZGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UXVhZEN1bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcApAQCAtMzMsNyArMzMsOSBAQAogI2luY2x1ZGUgIlNr
Q29sb3IuaCIKICNpbmNsdWRlICJjYy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQuaCIKICNpbmNsdWRl
ICJjYy9DQ0xheWVySW1wbC5oIgorI2luY2x1ZGUgImNjL0NDT2NjbHVzaW9uVHJhY2tlci5oIgog
I2luY2x1ZGUgImNjL0NDT3ZlcmRyYXdNZXRyaWNzLmgiCisjaW5jbHVkZSAiY2MvQ0NSZW5kZXJQ
YXNzLmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4Lmg+CiAKIHVz
aW5nIG5hbWVzcGFjZSBzdGQ7CkBAIC00NiwxMSArNDgsMTMgQEAgc3RhdGljIGNvbnN0IGludCBk
ZWJ1Z1RpbGVCb3JkZXJDb2xvclJlZCA9IDE2MDsKIHN0YXRpYyBjb25zdCBpbnQgZGVidWdUaWxl
Qm9yZGVyQ29sb3JHcmVlbiA9IDEwMDsKIHN0YXRpYyBjb25zdCBpbnQgZGVidWdUaWxlQm9yZGVy
Q29sb3JCbHVlID0gMDsKIAotQ0NRdWFkQ3VsbGVyOjpDQ1F1YWRDdWxsZXIoQ0NRdWFkTGlzdCYg
cXVhZExpc3QsIENDTGF5ZXJJbXBsKiBsYXllciwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VySW1w
bCogb2NjbHVzaW9uVHJhY2tlciwgYm9vbCBzaG93Q3VsbGluZ1dpdGhEZWJ1Z0JvcmRlclF1YWRz
KQorQ0NRdWFkQ3VsbGVyOjpDQ1F1YWRDdWxsZXIoQ0NRdWFkTGlzdCYgcXVhZExpc3QsIENDTGF5
ZXJJbXBsKiBsYXllciwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VySW1wbCogb2NjbHVzaW9uVHJh
Y2tlciwgYm9vbCBzaG93Q3VsbGluZ1dpdGhEZWJ1Z0JvcmRlclF1YWRzLCBib29sIGZvclN1cmZh
Y2UpCiAgICAgOiBtX3F1YWRMaXN0KHF1YWRMaXN0KQogICAgICwgbV9sYXllcihsYXllcikKICAg
ICAsIG1fb2NjbHVzaW9uVHJhY2tlcihvY2NsdXNpb25UcmFja2VyKQogICAgICwgbV9zaG93Q3Vs
bGluZ1dpdGhEZWJ1Z0JvcmRlclF1YWRzKHNob3dDdWxsaW5nV2l0aERlYnVnQm9yZGVyUXVhZHMp
CisgICAgLCBtX2ZvclN1cmZhY2UoZm9yU3VyZmFjZSkKKyAgICAsIG1faGFzT2NjbHVzaW9uRnJv
bU91dHNpZGVUYXJnZXRTdXJmYWNlKGZhbHNlKQogewogfQogCkBAIC03OCwxMyArODIsMTUgQEAg
c3RhdGljIGlubGluZSBib29sIGFwcGVuZFF1YWRJbnRlcm5hbChQYXNzT3duUHRyPENDRHJhd1F1
YWQ+IHBhc3NEcmF3UXVhZCwgY29uc3QKIAogYm9vbCBDQ1F1YWRDdWxsZXI6OmFwcGVuZChQYXNz
T3duUHRyPENDRHJhd1F1YWQ+IHBhc3NEcmF3UXVhZCkKIHsKLSAgICBJbnRSZWN0IGN1bGxlZFJl
Y3QgPSBtX29jY2x1c2lvblRyYWNrZXItPnVub2NjbHVkZWRDb250ZW50UmVjdChtX2xheWVyLCBw
YXNzRHJhd1F1YWQtPnF1YWRSZWN0KCkpOwotICAgIHJldHVybiBhcHBlbmRRdWFkSW50ZXJuYWwo
cGFzc0RyYXdRdWFkLCBjdWxsZWRSZWN0LCBtX3F1YWRMaXN0LCAqbV9vY2NsdXNpb25UcmFja2Vy
LCBtX3Nob3dDdWxsaW5nV2l0aERlYnVnQm9yZGVyUXVhZHMpOwotfQorICAgIEludFJlY3QgY3Vs
bGVkUmVjdDsKKyAgICBib29sIGhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZTsK
KworICAgIGlmIChtX2ZvclN1cmZhY2UpCisgICAgICAgIGN1bGxlZFJlY3QgPSBtX29jY2x1c2lv
blRyYWNrZXItPnVub2NjbHVkZWRDb250cmlidXRpbmdTdXJmYWNlQ29udGVudFJlY3QobV9sYXll
ciwgZmFsc2UsIHBhc3NEcmF3UXVhZC0+cXVhZFJlY3QoKSwgJmhhc09jY2x1c2lvbkZyb21PdXRz
aWRlVGFyZ2V0U3VyZmFjZSk7CisgICAgZWxzZQorICAgICAgICBjdWxsZWRSZWN0ID0gbV9vY2Ns
dXNpb25UcmFja2VyLT51bm9jY2x1ZGVkQ29udGVudFJlY3QobV9sYXllciwgcGFzc0RyYXdRdWFk
LT5xdWFkUmVjdCgpLCAmaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKTsKKyAg
ICBtX2hhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSB8PSBoYXNPY2NsdXNpb25G
cm9tT3V0c2lkZVRhcmdldFN1cmZhY2U7CiAKLWJvb2wgQ0NRdWFkQ3VsbGVyOjphcHBlbmRTdXJm
YWNlKFBhc3NPd25QdHI8Q0NEcmF3UXVhZD4gcGFzc0RyYXdRdWFkKQotewotICAgIEludFJlY3Qg
Y3VsbGVkUmVjdCA9IG1fb2NjbHVzaW9uVHJhY2tlci0+dW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1
cmZhY2VDb250ZW50UmVjdChtX2xheWVyLCBmYWxzZSwgcGFzc0RyYXdRdWFkLT5xdWFkUmVjdCgp
KTsKICAgICByZXR1cm4gYXBwZW5kUXVhZEludGVybmFsKHBhc3NEcmF3UXVhZCwgY3VsbGVkUmVj
dCwgbV9xdWFkTGlzdCwgKm1fb2NjbHVzaW9uVHJhY2tlciwgbV9zaG93Q3VsbGluZ1dpdGhEZWJ1
Z0JvcmRlclF1YWRzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuaAppbmRleCAyOTk5YjZhZDVh
Zjg0NDU1NDI3NGQ0NGUxYjk0NWY2Nzk4N2U1ZjYwLi43ZjA4MDI3ODI3ZGQ4ZGU1NWM3ODVjMjAw
ZTU3NTA1YTJjYWEwZDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuaApAQCAtMjYsMjcgKzI2LDMz
IEBACiAjaWZuZGVmIENDUXVhZEN1bGxlcl9oCiAjZGVmaW5lIENDUXVhZEN1bGxlcl9oCiAKLSNp
bmNsdWRlICJjYy9DQ1JlbmRlclBhc3MuaCIKKyNpbmNsdWRlICJDQ1F1YWRTaW5rLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENDTGF5ZXJJbXBsOwotY2xhc3MgQ0NPdmVyZHJhd01l
dHJpY3M7CitjbGFzcyBDQ1JlbmRlclN1cmZhY2U7CitjbGFzcyBDQ1F1YWRMaXN0OwordGVtcGxh
dGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBTdXJmYWNlVHlwZT4KK2NsYXNzIENDT2Nj
bHVzaW9uVHJhY2tlckJhc2U7CiAKLWNsYXNzIENDUXVhZEN1bGxlciB7CitjbGFzcyBDQ1F1YWRD
dWxsZXIgOiBwdWJsaWMgQ0NRdWFkU2luayB7CiBwdWJsaWM6Ci0gICAgLy8gUGFzc2luZyAwIGZv
ciBDQ092ZXJkcmF3Q291bnRzKiBpcyB2YWxpZCwgYW5kIGRpc2FibGUgdGhlIGV4dHJhIGNvbXB1
dGF0aW9uCi0gICAgLy8gZG9uZSB0byBlc3RpbWF0ZSBvdmVyIGRyYXcgc3RhdGlzdGljcy4KLSAg
ICBDQ1F1YWRDdWxsZXIoQ0NRdWFkTGlzdCYsIENDTGF5ZXJJbXBsKiwgY29uc3QgQ0NPY2NsdXNp
b25UcmFja2VySW1wbCosIGJvb2wgc2hvd0N1bGxpbmdXaXRoRGVidWdCb3JkZXJRdWFkcyk7Cisg
ICAgQ0NRdWFkQ3VsbGVyKENDUXVhZExpc3QmLCBDQ0xheWVySW1wbCosIGNvbnN0IENDT2NjbHVz
aW9uVHJhY2tlckJhc2U8Q0NMYXllckltcGwsIENDUmVuZGVyU3VyZmFjZT4qLCBib29sIHNob3dD
dWxsaW5nV2l0aERlYnVnQm9yZGVyUXVhZHMsIGJvb2wgZm9yU3VyZmFjZSk7CisKKyAgICB2aXJ0
dWFsIH5DQ1F1YWRDdWxsZXIoKSB7IH0KIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgcXVh
ZCBpcyBhZGRlZCB0byB0aGUgbGlzdCwgYW5kIGZhbHNlIGlmIHRoZSBxdWFkIGlzIGVudGlyZWx5
IGN1bGxlZC4KLSAgICB2aXJ0dWFsIGJvb2wgYXBwZW5kKFBhc3NPd25QdHI8Q0NEcmF3UXVhZD4g
cGFzc0RyYXdRdWFkKTsKLSAgICB2aXJ0dWFsIGJvb2wgYXBwZW5kU3VyZmFjZShQYXNzT3duUHRy
PENDRHJhd1F1YWQ+IHBhc3NEcmF3UXVhZCk7CisgICAgdmlydHVhbCBib29sIGFwcGVuZChQYXNz
T3duUHRyPFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ+IHBhc3NEcmF3UXVhZCkgT1ZFUlJJREU7
CisKKyAgICBib29sIGhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSgpIHsgcmV0
dXJuIG1faGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlOyB9CiAKIHByaXZhdGU6
CiAgICAgQ0NRdWFkTGlzdCYgbV9xdWFkTGlzdDsKICAgICBDQ0xheWVySW1wbCogbV9sYXllcjsK
LSAgICBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXJJbXBsKiBtX29jY2x1c2lvblRyYWNrZXI7Cisg
ICAgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJm
YWNlPiogbV9vY2NsdXNpb25UcmFja2VyOwogICAgIGJvb2wgbV9zaG93Q3VsbGluZ1dpdGhEZWJ1
Z0JvcmRlclF1YWRzOworICAgIGJvb2wgbV9mb3JTdXJmYWNlOworICAgIGJvb2wgbV9oYXNPY2Ns
dXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2U7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRTaW5rLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRTaW5rLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZjJhOWM2MmFlMDZhNzE3NWNhYWFhNjM0OWI1NDkxNjEyN2RhNTg0YwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUXVhZFNpbmsuaApAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDQ1F1YWRT
aW5rX2gKKyNkZWZpbmUgQ0NRdWFkU2lua19oCisKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYkNvbXBvc2l0b3JRdWFkOworfQorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENDUXVhZFNpbmsgeworcHVibGljOgorICAgIHZp
cnR1YWwgfkNDUXVhZFNpbmsoKSB7IH0KKworICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgcXVh
ZCBpcyBhZGRlZCB0byB0aGUgbGlzdCwgYW5kIGZhbHNlIGlmIHRoZSBxdWFkIGlzIGVudGlyZWx5
IGN1bGxlZC4KKyAgICB2aXJ0dWFsIGJvb2wgYXBwZW5kKFBhc3NPd25QdHI8V2ViS2l0OjpXZWJD
b21wb3NpdG9yUXVhZD4gcGFzc0RyYXdRdWFkKSA9IDA7Cit9OworCit9CisjZW5kaWYgLy8gQ0NR
dWFkQ3VsbGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwCmluZGV4IDUzMjY2NWZiZTc5OWJm
NzE0YTZjMmE5ODQxMDE3YzI1MDhhOGY4NWQuLjVhZjJlZjYzOTQ1YTZlZDVjNzcxYjA1NThlZmFh
NmEyYmQ3YTU2MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcApAQCAtMjksNiArMjksNyBA
QAogCiAjaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKICNpbmNsdWRlICJjYy9DQ01hdGhVdGls
LmgiCisjaW5jbHVkZSAiY2MvQ0NPY2NsdXNpb25UcmFja2VyLmgiCiAjaW5jbHVkZSAiY2MvQ0NR
dWFkQ3VsbGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NTaGFyZWRRdWFkU3RhdGUuaCIKICNpbmNsdWRl
ICJjYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5oIgpAQCAtNDcsNiArNDgsNyBAQCBDQ1JlbmRlclBh
c3M6OkNDUmVuZGVyUGFzcyhDQ1JlbmRlclN1cmZhY2UqIHRhcmdldFN1cmZhY2UsIGludCBpZCkK
ICAgICAsIG1fdGFyZ2V0U3VyZmFjZSh0YXJnZXRTdXJmYWNlKQogICAgICwgbV9mcmFtZWJ1ZmZl
ck91dHB1dFJlY3QodGFyZ2V0U3VyZmFjZS0+Y29udGVudFJlY3QoKSkKICAgICAsIG1faGFzVHJh
bnNwYXJlbnRCYWNrZ3JvdW5kKHRydWUpCisgICAgLCBtX2hhc09jY2x1c2lvbkZyb21PdXRzaWRl
VGFyZ2V0U3VyZmFjZShmYWxzZSkKIHsKICAgICBBU1NFUlQodGFyZ2V0U3VyZmFjZSk7CiAgICAg
QVNTRVJUKGlkID4gMCk7CkBAIC01NCwxOSArNTYsMjMgQEAgQ0NSZW5kZXJQYXNzOjpDQ1JlbmRl
clBhc3MoQ0NSZW5kZXJTdXJmYWNlKiB0YXJnZXRTdXJmYWNlLCBpbnQgaWQpCiAKIHZvaWQgQ0NS
ZW5kZXJQYXNzOjphcHBlbmRRdWFkc0ZvckxheWVyKENDTGF5ZXJJbXBsKiBsYXllciwgQ0NPY2Ns
dXNpb25UcmFja2VySW1wbCogb2NjbHVzaW9uVHJhY2tlciwgYm9vbCYgaGFkTWlzc2luZ1RpbGVz
KQogewotICAgIENDUXVhZEN1bGxlciBxdWFkQ3VsbGVyKG1fcXVhZExpc3QsIGxheWVyLCBvY2Ns
dXNpb25UcmFja2VyLCBsYXllci0+aGFzRGVidWdCb3JkZXJzKCkpOworICAgIGNvbnN0IGJvb2wg
Zm9yU3VyZmFjZSA9IGZhbHNlOworICAgIENDUXVhZEN1bGxlciBxdWFkQ3VsbGVyKG1fcXVhZExp
c3QsIGxheWVyLCBvY2NsdXNpb25UcmFja2VyLCBsYXllci0+aGFzRGVidWdCb3JkZXJzKCksIGZv
clN1cmZhY2UpOwogCiAgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFkU3Rh
dGUgPSBsYXllci0+Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKCk7CiAgICAgbGF5ZXItPmFwcGVuZERl
YnVnQm9yZGVyUXVhZChxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCkpOwogICAgIGxh
eWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIGhhZE1p
c3NpbmdUaWxlcyk7CiAgICAgbV9zaGFyZWRRdWFkU3RhdGVMaXN0LmFwcGVuZChzaGFyZWRRdWFk
U3RhdGUucmVsZWFzZSgpKTsKKworICAgIG1faGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRT
dXJmYWNlIHw9IHF1YWRDdWxsZXIuaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNl
KCk7CiB9CiAKIHZvaWQgQ0NSZW5kZXJQYXNzOjphcHBlbmRRdWFkc0ZvclJlbmRlclN1cmZhY2VM
YXllcihDQ0xheWVySW1wbCogbGF5ZXIsIGNvbnN0IENDUmVuZGVyUGFzcyogY29udHJpYnV0aW5n
UmVuZGVyUGFzcywgQ0NPY2NsdXNpb25UcmFja2VySW1wbCogb2NjbHVzaW9uVHJhY2tlcikKIHsK
ICAgICAvLyBGSVhNRTogcmVuZGVyIHN1cmZhY2UgbGF5ZXJzIHNob3VsZCBiZSBhIENDTGF5ZXJJ
bXBsLWRlcml2ZWQgY2xhc3MgYW5kCiAgICAgLy8gbm90IGJlIGhhbmRsZWQgc3BlY2lhbGx5IGhl
cmUuCi0gICAgQ0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXIobV9xdWFkTGlzdCwgbGF5ZXIsIG9jY2x1
c2lvblRyYWNrZXIsIGxheWVyLT5oYXNEZWJ1Z0JvcmRlcnMoKSk7CisgICAgY29uc3QgYm9vbCBm
b3JTdXJmYWNlID0gdHJ1ZTsKKyAgICBDQ1F1YWRDdWxsZXIgcXVhZEN1bGxlcihtX3F1YWRMaXN0
LCBsYXllciwgb2NjbHVzaW9uVHJhY2tlciwgbGF5ZXItPmhhc0RlYnVnQm9yZGVycygpLCBmb3JT
dXJmYWNlKTsKIAogICAgIENDUmVuZGVyU3VyZmFjZSogc3VyZmFjZSA9IGxheWVyLT5yZW5kZXJT
dXJmYWNlKCk7CiAKQEAgLTc1LDYgKzgxLDggQEAgdm9pZCBDQ1JlbmRlclBhc3M6OmFwcGVuZFF1
YWRzRm9yUmVuZGVyU3VyZmFjZUxheWVyKENDTGF5ZXJJbXBsKiBsYXllciwgY29uc3QgQ0MKICAg
ICBzdXJmYWNlLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCks
IGlzUmVwbGljYSwgY29udHJpYnV0aW5nUmVuZGVyUGFzcy0+aWQoKSk7CiAgICAgbV9zaGFyZWRR
dWFkU3RhdGVMaXN0LmFwcGVuZChzaGFyZWRRdWFkU3RhdGUucmVsZWFzZSgpKTsKIAorICAgIG1f
aGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlIHw9IHF1YWRDdWxsZXIuaGFzT2Nj
bHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKCk7CisKICAgICBpZiAoIWxheWVyLT5oYXNS
ZXBsaWNhKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtODMsNiArOTEsOCBAQCB2b2lkIENDUmVu
ZGVyUGFzczo6YXBwZW5kUXVhZHNGb3JSZW5kZXJTdXJmYWNlTGF5ZXIoQ0NMYXllckltcGwqIGxh
eWVyLCBjb25zdCBDQwogICAgIGlzUmVwbGljYSA9IHRydWU7CiAgICAgc3VyZmFjZS0+YXBwZW5k
UXVhZHMocXVhZEN1bGxlciwgcmVwbGljYVNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgaXNSZXBsaWNh
LCBjb250cmlidXRpbmdSZW5kZXJQYXNzLT5pZCgpKTsKICAgICBtX3NoYXJlZFF1YWRTdGF0ZUxp
c3QuYXBwZW5kKHJlcGxpY2FTaGFyZWRRdWFkU3RhdGUucmVsZWFzZSgpKTsKKworICAgIG1faGFz
T2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlIHw9IHF1YWRDdWxsZXIuaGFzT2NjbHVz
aW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKCk7CiB9CiAKIHZvaWQgQ0NSZW5kZXJQYXNzOjph
cHBlbmRRdWFkc1RvRmlsbFNjcmVlbihDQ0xheWVySW1wbCogcm9vdExheWVyLCBTa0NvbG9yIHNj
cmVlbkJhY2tncm91bmRDb2xvciwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VySW1wbCYgb2NjbHVz
aW9uVHJhY2tlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmgKaW5kZXggMDEwYTc2NzRiMGNlMmIyMmMw
OTJhNjYwNmQ0MWNkMzQxYTFjOTdmNi4uODE2NDgxYzk3MzY1OTJkYjgyNDNkNzAyYmMzMTIxYmY2
MzJiNTM4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NSZW5kZXJQYXNzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmgKQEAgLTcxLDYgKzcxLDggQEAgcHVibGlj
OgogICAgIGJvb2wgaGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKCkgY29uc3QgeyByZXR1cm4gbV9o
YXNUcmFuc3BhcmVudEJhY2tncm91bmQ7IH0KICAgICB2b2lkIHNldEhhc1RyYW5zcGFyZW50QmFj
a2dyb3VuZChib29sIHRyYW5zcGFyZW50KSB7IG1faGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kID0g
dHJhbnNwYXJlbnQ7IH0KIAorICAgIGJvb2wgaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRT
dXJmYWNlKCkgY29uc3QgeyByZXR1cm4gbV9oYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1
cmZhY2U7IH0KKyAgICB2b2lkIHNldEhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFj
ZShib29sIGhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSkgeyBtX2hhc09jY2x1
c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSA9IGhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFy
Z2V0U3VyZmFjZTsgfQogcHJvdGVjdGVkOgogICAgIENDUmVuZGVyUGFzcyhDQ1JlbmRlclN1cmZh
Y2UqLCBpbnQgaWQpOwogCkBAIC04MCw2ICs4Miw3IEBAIHByb3RlY3RlZDoKICAgICBJbnRSZWN0
IG1fZnJhbWVidWZmZXJPdXRwdXRSZWN0OwogICAgIFZlY3RvcjxPd25QdHI8Q0NTaGFyZWRRdWFk
U3RhdGU+ID4gbV9zaGFyZWRRdWFkU3RhdGVMaXN0OwogICAgIGJvb2wgbV9oYXNUcmFuc3BhcmVu
dEJhY2tncm91bmQ7CisgICAgYm9vbCBtX2hhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3Vy
ZmFjZTsKIH07CiAKIHR5cGVkZWYgVmVjdG9yPENDUmVuZGVyUGFzcyo+IENDUmVuZGVyUGFzc0xp
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcAppbmRleCBlNzI2MDk2NmEwNzA4YTAy
ZTE5ZTA4YzhlZWMyYTMwY2I5MzcxMTczLi5hNzBlMDllM2QxOGU4N2VkMzQwMjhhNTRhYTU3YjQy
MDdkNDNkMjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAKQEAgLTM2LDcgKzM2
LDcgQEAKICNpbmNsdWRlICJjYy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQuaCIKICNpbmNsdWRlICJj
Yy9DQ0xheWVySW1wbC5oIgogI2luY2x1ZGUgImNjL0NDTWF0aFV0aWwuaCIKLSNpbmNsdWRlICJj
Yy9DQ1F1YWRDdWxsZXIuaCIKKyNpbmNsdWRlICJjYy9DQ1F1YWRTaW5rLmgiCiAjaW5jbHVkZSAi
Y2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ1NoYXJlZFF1YWRTdGF0
ZS5oIgogI2luY2x1ZGUgPHB1YmxpYy9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oPgpAQCAtMTgx
LDcgKzE4MSw3IEBAIEZsb2F0UmVjdCBDQ1JlbmRlclN1cmZhY2U6OmNvbXB1dGVSb290U2Npc3Nv
clJlY3RJbkN1cnJlbnRTdXJmYWNlKGNvbnN0IEZsb2F0UmVjCiAgICAgcmV0dXJuIENDTWF0aFV0
aWw6OnByb2plY3RDbGlwcGVkUmVjdChpbnZlcnNlU2NyZWVuU3BhY2VUcmFuc2Zvcm0sIHJvb3RT
Y2lzc29yUmVjdCk7CiB9CiAKLXZvaWQgQ0NSZW5kZXJTdXJmYWNlOjphcHBlbmRRdWFkcyhDQ1F1
YWRDdWxsZXImIHF1YWRMaXN0LCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBi
b29sIGZvclJlcGxpY2EsIGludCByZW5kZXJQYXNzSWQpCit2b2lkIENDUmVuZGVyU3VyZmFjZTo6
YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVhZExpc3QsIENDU2hhcmVkUXVhZFN0YXRlKiBzaGFy
ZWRRdWFkU3RhdGUsIGJvb2wgZm9yUmVwbGljYSwgaW50IHJlbmRlclBhc3NJZCkKIHsKICAgICBB
U1NFUlQoIWZvclJlcGxpY2EgfHwgbV9vd25pbmdMYXllci0+aGFzUmVwbGljYSgpKTsKIApAQCAt
MTkwLDcgKzE5MCw3IEBAIHZvaWQgQ0NSZW5kZXJTdXJmYWNlOjphcHBlbmRRdWFkcyhDQ1F1YWRD
dWxsZXImIHF1YWRMaXN0LCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhCiAgICAgICAgIGludCBncmVl
biA9IGZvclJlcGxpY2EgPyAgZGVidWdSZXBsaWNhQm9yZGVyQ29sb3JHcmVlbiA6IGRlYnVnU3Vy
ZmFjZUJvcmRlckNvbG9yR3JlZW47CiAgICAgICAgIGludCBibHVlID0gZm9yUmVwbGljYSA/IGRl
YnVnUmVwbGljYUJvcmRlckNvbG9yQmx1ZSA6IGRlYnVnU3VyZmFjZUJvcmRlckNvbG9yQmx1ZTsK
ICAgICAgICAgU2tDb2xvciBjb2xvciA9IFNrQ29sb3JTZXRBUkdCKGRlYnVnU3VyZmFjZUJvcmRl
ckFscGhhLCByZWQsIGdyZWVuLCBibHVlKTsKLSAgICAgICAgcXVhZExpc3QuYXBwZW5kU3VyZmFj
ZShDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIGNvbnRlbnRS
ZWN0KCksIGNvbG9yLCBkZWJ1Z1N1cmZhY2VCb3JkZXJXaWR0aCkpOworICAgICAgICBxdWFkTGlz
dC5hcHBlbmQoQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBj
b250ZW50UmVjdCgpLCBjb2xvciwgZGVidWdTdXJmYWNlQm9yZGVyV2lkdGgpKTsKICAgICB9CiAK
ICAgICAvLyBGSVhNRTogQnkgdXNpbmcgdGhlIHNhbWUgUmVuZGVyU3VyZmFjZSBmb3IgYm90aCB0
aGUgY29udGVudCBhbmQgaXRzIHJlZmxlY3Rpb24sCkBAIC0yMTYsNyArMjE2LDcgQEAgdm9pZCBD
Q1JlbmRlclN1cmZhY2U6OmFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYgcXVhZExpc3QsIENDU2hh
cmVkUXVhZFN0YXRlKiBzaGEKICAgICBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMm
IGZpbHRlcnMgPSBtX293bmluZ0xheWVyLT5maWx0ZXJzKCk7CiAgICAgY29uc3QgV2ViS2l0OjpX
ZWJGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycyA9IG1fb3duaW5nTGF5ZXItPmJh
Y2tncm91bmRGaWx0ZXJzKCk7CiAKLSAgICBxdWFkTGlzdC5hcHBlbmRTdXJmYWNlKENDUmVuZGVy
UGFzc0RyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBjb250ZW50UmVjdCgpLCByZW5k
ZXJQYXNzSWQsIGZvclJlcGxpY2EsIGRyYXdUcmFuc2Zvcm0sIGZpbHRlcnMsIGJhY2tncm91bmRG
aWx0ZXJzLCBtYXNrVGV4dHVyZUlkLCBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSkpOwor
ICAgIHF1YWRMaXN0LmFwcGVuZChDQ1JlbmRlclBhc3NEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1
YWRTdGF0ZSwgY29udGVudFJlY3QoKSwgcmVuZGVyUGFzc0lkLCBmb3JSZXBsaWNhLCBkcmF3VHJh
bnNmb3JtLCBmaWx0ZXJzLCBiYWNrZ3JvdW5kRmlsdGVycywgbWFza1RleHR1cmVJZCwgY29udGVu
dHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZh
Y2UuaAppbmRleCA5ZjdkODc2ZWVjZWY5ZDliZjYwMWE3OWNiMDZhY2JhNDA3ZWYzNjFmLi4wYjhj
NDA5YzU2OGVhNmUwODczMDljMzNmMThjZmVkMDcxYzYwNDlhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRl
clN1cmZhY2UuaApAQCAtMzksNyArMzksNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBDQ0RhbWFnZVRyYWNrZXI7Ci1jbGFzcyBDQ1F1YWRDdWxsZXI7CitjbGFzcyBDQ1F1YWRTaW5r
OwogY2xhc3MgQ0NSZW5kZXJQYXNzOwogY2xhc3MgQ0NMYXllckltcGw7CiBjbGFzcyBMYXllclJl
bmRlcmVyQ2hyb21pdW07CkBAIC0xMTcsNyArMTE3LDcgQEAgcHVibGljOgogICAgIFBhc3NPd25Q
dHI8Q0NTaGFyZWRRdWFkU3RhdGU+IGNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpIGNvbnN0OwogICAg
IFBhc3NPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IGNyZWF0ZVJlcGxpY2FTaGFyZWRRdWFkU3Rh
dGUoKSBjb25zdDsKIAotICAgIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiwgQ0NTaGFy
ZWRRdWFkU3RhdGUqLCBib29sIGZvclJlcGxpY2EsIGludCByZW5kZXJQYXNzSWQpOworICAgIHZv
aWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYsIENDU2hhcmVkUXVhZFN0YXRlKiwgYm9vbCBmb3JS
ZXBsaWNhLCBpbnQgcmVuZGVyUGFzc0lkKTsKIAogICAgIEZsb2F0UmVjdCBjb21wdXRlUm9vdFNj
aXNzb3JSZWN0SW5DdXJyZW50U3VyZmFjZShjb25zdCBGbG9hdFJlY3QmIHJvb3RTY2lzc29yUmVj
dCkgY29uc3Q7CiAKQEAgLTE1Nyw2ICsxNTcsNyBAQCBwcml2YXRlOgogICAgIC8vIEZvciBDQ0xh
eWVySXRlcmF0b3JBY3Rpb25zCiAgICAgaW50IG1fdGFyZ2V0UmVuZGVyU3VyZmFjZUxheWVySW5k
ZXhIaXN0b3J5OwogICAgIGludCBtX2N1cnJlbnRMYXllckluZGV4SGlzdG9yeTsKKwogICAgIGZy
aWVuZCBzdHJ1Y3QgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5
ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcAppbmRleCBmMzhmYmRhMDFmNjZlMzgwNjFkMTA2ZmJj
MGJjMWMwNDM2MjgwMzE5Li4xZWQxZDg5MmM4ZmFkNGNkODdhMDYyZmZiMjcxYzcxOTYwYmQzYWUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1Njcm9sbGJhckxheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3BwCkBAIC0zMSw3ICsz
MSw3IEBACiAKICNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZS5oIgogI2luY2x1ZGUgIlNjcm9sbGJh
clRoZW1lQ29tcG9zaXRlLmgiCi0jaW5jbHVkZSAiY2MvQ0NRdWFkQ3VsbGVyLmgiCisjaW5jbHVk
ZSAiY2MvQ0NRdWFkU2luay5oIgogI2luY2x1ZGUgImNjL0NDVGV4dHVyZURyYXdRdWFkLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTYyLDcgKzYyLDcgQEAgRmxvYXRSZWN0IHRvVVZSZWN0
KGNvbnN0IEludFJlY3QmIHIsIGNvbnN0IEludFJlY3QmIGJvdW5kcykKIAogfQogCi12b2lkIEND
U2Nyb2xsYmFyTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBj
b25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJikKK3ZvaWQgQ0NT
Y3JvbGxiYXJMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRMaXN0LCBjb25z
dCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJikKIHsKICAgICBTY3Jv
bGxiYXJUaGVtZUNvbXBvc2l0ZSogdGhlbWUgPSBzdGF0aWNfY2FzdDxTY3JvbGxiYXJUaGVtZUNv
bXBvc2l0ZSo+KFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpKTsKICAgICBpZiAoIXRoZW1lKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
Y3JvbGxiYXJMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmgKaW5kZXggZWNlMmI5NTcxNDE0YmY0MjU2
ZmRiNGVlNGZkNWVhMWM3YzA0NmYzMS4uMDc3OTkyMTc3ZTBlMjY3M2I5MGExNDZiMTEwZjE0OWJh
NjFkYzQ1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5oCkBAIC02MCw3
ICs2MCw3IEBAIHB1YmxpYzoKICAgICBDQ0xheWVySW1wbCogc2Nyb2xsTGF5ZXIoKSBjb25zdCB7
IHJldHVybiBtX3Njcm9sbExheWVyOyB9CiAgICAgdm9pZCBzZXRTY3JvbGxMYXllcihDQ0xheWVy
SW1wbCogc2Nyb2xsTGF5ZXIpIHsgbV9zY3JvbGxMYXllciA9IHNjcm9sbExheWVyOyB9CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRR
dWFkU3RhdGUqLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBi
b29sJiBoYWRNaXNzaW5nVGlsZXMpIE9WRVJSSURFOwogCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGlj
aXQgQ0NTY3JvbGxiYXJMYXllckltcGwoaW50IGlkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxheWVySW1wbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlk
Q29sb3JMYXllckltcGwuY3BwCmluZGV4IDRkNTJjMTVkZDQyZjIzZGFhZmY2YzU0MzhiZTRmNzll
Zjc4NjQ2YTMuLmY1MmM3OTdjMDJmNzQ4OGZiOGQ0MDdmNTFmMGVkYzlmNDVhOTkyNzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29s
aWRDb2xvckxheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmNwcApAQCAtMjksNyArMjksNyBA
QAogCiAjaW5jbHVkZSAiY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmgiCiAKLSNpbmNsdWRlICJj
Yy9DQ1F1YWRDdWxsZXIuaCIKKyNpbmNsdWRlICJjYy9DQ1F1YWRTaW5rLmgiCiAjaW5jbHVkZSAi
Y2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNDksNyArNDksNyBAQCBDQ1NvbGlk
Q29sb3JMYXllckltcGw6On5DQ1NvbGlkQ29sb3JMYXllckltcGwoKQogewogfQogCi12b2lkIEND
U29saWRDb2xvckxheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwg
Y29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCYpCit2b2lkIEND
U29saWRDb2xvckxheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVhZExpc3QsIGNv
bnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGJvb2wmKQogewogICAgIC8v
IFdlIGNyZWF0ZSBhIHNlcmllcyBvZiBzbWFsbGVyIHF1YWRzIGluc3RlYWQgb2YganVzdCBvbmUg
bGFyZ2Ugb25lIHNvIHRoYXQgdGhlCiAgICAgLy8gY3VsbGVyIGNhbiByZWR1Y2UgdGhlIHRvdGFs
IHBpeGVscyBkcmF3bi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmgKaW5k
ZXggZTMwMDU4NDVlNmRlNmIyMGRhYzVmZWU2NDlhNTE1NzFmNmExMGMzNi4uNzE1M2YyMWFiODJh
Nzg0YWM4NTBlOGQ2M2I4NWMyMTE2YjY4NWY0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENv
bG9yTGF5ZXJJbXBsLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0
dWFsIH5DQ1NvbGlkQ29sb3JMYXllckltcGwoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRR
dWFkcyhDQ1F1YWRDdWxsZXImLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wmIGhhZE1p
c3NpbmdUaWxlcykgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVh
ZFNpbmsmLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykg
T1ZFUlJJREU7CiAKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBDQ1NvbGlkQ29sb3JMYXllcklt
cGwoaW50IGlkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwuY3BwCmluZGV4IDZk
ZjJmYjZiZDY0YzZkMzY5ZTA4OWM3MTExNjFjZjhiMWFhZTc5MGQuLjRjNWZiOWFjODMzMjUzNmE5
Y2FhNDUwN2MzOTFlZmM3ODZmNTU5YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJ
bXBsLmNwcApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgImNjL0NDVGV4dHVyZUxheWVySW1w
bC5oIgogCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgotI2luY2x1ZGUgImNjL0NDUXVhZEN1bGxl
ci5oIgorI2luY2x1ZGUgImNjL0NDUXVhZFNpbmsuaCIKICNpbmNsdWRlICJjYy9DQ1RleHR1cmVE
cmF3UXVhZC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00OCw3ICs0OCw3IEBAIENDVGV4
dHVyZUxheWVySW1wbDo6fkNDVGV4dHVyZUxheWVySW1wbCgpCiB7CiB9CiAKLXZvaWQgQ0NUZXh0
dXJlTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBD
Q1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJikKK3ZvaWQgQ0NUZXh0dXJl
TGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFy
ZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCYpCiB7CiAgICAgSW50UmVjdCBxdWFk
UmVjdChJbnRQb2ludCgpLCBjb250ZW50Qm91bmRzKCkpOwogICAgIHF1YWRMaXN0LmFwcGVuZChD
Q1RleHR1cmVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIG1fdGV4
dHVyZUlkLCBtX3ByZW11bHRpcGxpZWRBbHBoYSwgbV91dlJlY3QsIG1fZmxpcHBlZCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
ZXh0dXJlTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwuaAppbmRleCA0YWJkYjUxZmY5Mjk5MzkzMTgwOTlj
ZmRjOGEwZGQ1MWZmZTZmY2JiLi5lYjllNjY2YTdmYTBmODM5YTIyNTE2NGQwOWFjMzVjOGFjNjM4
YTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RleHR1cmVMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwuaApAQCAtMzgsNyArMzgsNyBA
QCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgfkNDVGV4dHVyZUxheWVySW1wbCgpOwogCi0g
ICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYsIGNvbnN0IENDU2hhcmVk
UXVhZFN0YXRlKiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwg
Ym9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRM
b3NlQ29udGV4dCgpIE9WRVJSSURFOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3Bw
CmluZGV4IGRhOWExMGE5OWQ4YzdiZjIyZDg3Yzg0N2I5NTdmMjM1MGY1ZDNlNGUuLjVlZTJkNTZk
YWUxZjY3MzNiYjIzMTVkNzc0MmIxODIxMTE2NDI3NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRM
YXllckltcGwuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSAiY2MvQ0NDaGVja2VyYm9h
cmREcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDRGVidWdCb3JkZXJEcmF3UXVhZC5oIgogI2lu
Y2x1ZGUgImNjL0NDTGF5ZXJUaWxpbmdEYXRhLmgiCi0jaW5jbHVkZSAiY2MvQ0NRdWFkQ3VsbGVy
LmgiCisjaW5jbHVkZSAiY2MvQ0NRdWFkU2luay5oIgogI2luY2x1ZGUgImNjL0NDU29saWRDb2xv
ckRyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NUaWxlRHJhd1F1YWQuaCIKICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTEyMyw3ICsxMjMsNyBAQCBEcmF3YWJsZVRpbGUqIEND
VGlsZWRMYXllckltcGw6OmNyZWF0ZVRpbGUoaW50IGksIGludCBqKQogICAgIHJldHVybiBhZGRl
ZFRpbGU7CiB9CiAKLXZvaWQgQ0NUaWxlZExheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3Vs
bGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwg
Ym9vbCYgaGFkTWlzc2luZ1RpbGVzKQordm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjphcHBlbmRRdWFk
cyhDQ1F1YWRTaW5rJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1
YWRTdGF0ZSwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKQogewogICAgIGNvbnN0IEludFJlY3QmIGNv
bnRlbnRSZWN0ID0gdmlzaWJsZUNvbnRlbnRSZWN0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXll
ckltcGwuaAppbmRleCA0MDUyZmU5N2NlYzIzMzU4ZGNmODk3MmM0NWVlM2I2ZDQxYTczNzcxLi41
ODZjMDU0MWFmNmZiYTVkODRhYTU4MGZjNmExMjRhNzc5MGM0ZGU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBs
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aWxlZExheWVySW1wbC5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmly
dHVhbCB+Q0NUaWxlZExheWVySW1wbCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRz
KENDUXVhZEN1bGxlciYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgYm9vbCYgaGFkTWlzc2lu
Z1RpbGVzKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2lu
ayYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVS
UklERTsKIAogICAgIHZpcnR1YWwgdW5zaWduZWQgY29udGVudHNUZXh0dXJlSWQoKSBjb25zdCBP
VkVSUklERTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcAppbmRleCBiNTI0NTk2
ZjBkZWE2MDc3YTRjNzRhNTYxZTVlOTk0MmUxZGUxODczLi45MjkxYTYwYmFhYzJiNzUzYTcxOWUw
ZTVlZjIzMzBlY2I4ZjE1ZWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcApA
QCAtMzksNyArMzksNyBAQAogI2luY2x1ZGUgImNjL0NDR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5j
bHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIgogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIK
LSNpbmNsdWRlICJjYy9DQ1F1YWRDdWxsZXIuaCIKKyNpbmNsdWRlICJjYy9DQ1F1YWRTaW5rLmgi
CiAjaW5jbHVkZSAiY2MvQ0NTdHJlYW1WaWRlb0RyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NU
ZXh0dXJlRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ1lVVlZpZGVvRHJhd1F1YWQuaCIKQEAg
LTE3Myw3ICsxNzMsNyBAQCB2b2lkIENDVmlkZW9MYXllckltcGw6OndpbGxEcmF3SW50ZXJuYWwo
Q0NSZW5kZXJlciogbGF5ZXJSZW5kZXJlciwgQ0NHcmFwaGljc0NvbgogICAgIH0KIH0KIAotdm9p
ZCBDQ1ZpZGVvTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBj
b25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJikKK3ZvaWQgQ0NW
aWRlb0xheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVhZExpc3QsIGNvbnN0IEND
U2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGJvb2wmKQogewogICAgIEFTU0VSVChD
Q1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaApp
bmRleCBjZDVkYjA5YmNkMDU2ZDkwM2I1ZjVjN2JkMzIzODAzZDgzZjU3YzIyLi5lYmIxZGMyNjcz
Yzc5MmNjYTU4N2U4NzQ4ZTRlZGJlYjdiMWUzNWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVy
SW1wbC5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DQ1ZpZGVvTGF5
ZXJJbXBsKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERyYXcoQ0NSZW5kZXJlciosIENDR3Jh
cGhpY3NDb250ZXh0KikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKEND
UXVhZEN1bGxlciYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgYm9vbCYgaGFkTWlzc2luZ1Rp
bGVzKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYs
IGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRHJhdygpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2
b2lkIGR1bXBMYXllclByb3BlcnRpZXMoVGV4dFN0cmVhbSYsIGludCBpbmRlbnQpIGNvbnN0IE9W
RVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVy
VHJlZUhvc3RJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5
ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAppbmRleCBlOWI5ZjAyODEzY2NiM2NmM2E5ZTUxOGMyMmJi
ZGE0NzZjYmMzZjYwLi43NmEzYjFkZDgxOGExZTI5OTlhM2VkZDkyNTdkODk1NGYzODBkMDdkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdElt
cGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVl
SG9zdEltcGxUZXN0LmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ0NBbmltYXRp
b25UZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSAiQ0NMYXllclRlc3RDb21tb24uaCIKKyNpbmNsdWRl
ICJDQ0xheWVyVHJlZVRlc3RDb21tb24uaCIKICNpbmNsdWRlICJDQ1Rlc3RDb21tb24uaCIKICNp
bmNsdWRlICJGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJMYXllclJlbmRl
cmVyQ2hyb21pdW0uaCIKQEAgLTExNzAsNyArMTE3MSw3IEBAIGNsYXNzIEJsZW5kU3RhdGVDaGVj
a0xheWVyIDogcHVibGljIENDTGF5ZXJJbXBsIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093
blB0cjxCbGVuZFN0YXRlQ2hlY2tMYXllcj4gY3JlYXRlKGludCBpZCkgeyByZXR1cm4gYWRvcHRQ
dHIobmV3IEJsZW5kU3RhdGVDaGVja0xheWVyKGlkKSk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBh
cHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0
ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJikgT1ZFUlJJREUKKyAgICB2aXJ0dWFsIHZvaWQgYXBw
ZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBz
aGFyZWRRdWFkU3RhdGUsIGJvb2wmKSBPVkVSUklERQogICAgIHsKICAgICAgICAgbV9xdWFkc0Fw
cGVuZGVkID0gdHJ1ZTsKIApAQCAtMTY5NSwxMCArMTY5NiwxMCBAQCBjbGFzcyBGYWtlTGF5ZXJX
aXRoUXVhZHMgOiBwdWJsaWMgQ0NMYXllckltcGwgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNz
T3duUHRyPEZha2VMYXllcldpdGhRdWFkcz4gY3JlYXRlKGludCBpZCkgeyByZXR1cm4gYWRvcHRQ
dHIobmV3IEZha2VMYXllcldpdGhRdWFkcyhpZCkpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBw
ZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUq
IHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCYpIE9WRVJSSURFCisgICAgdmlydHVhbCB2b2lkIGFwcGVu
ZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hh
cmVkUXVhZFN0YXRlLCBib29sJikgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIFNrQ29sb3IgZ3Jh
eSA9IFNrQ29sb3JTZXRSR0IoMTAwLCAxMDAsIDEwMCk7Ci0gICAgICAgIEludFJlY3QgcXVhZFJl
Y3QoMCwgMCwgNSwgNSk7CisgICAgICAgIEludFJlY3QgcXVhZFJlY3QoSW50UG9pbnQoMCwgMCks
IGNvbnRlbnRCb3VuZHMoKSk7CiAgICAgICAgIE93blB0cjxDQ0RyYXdRdWFkPiBteVF1YWQgPSBD
Q1NvbGlkQ29sb3JEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIGdy
YXkpOwogICAgICAgICBxdWFkTGlzdC5hcHBlbmQobXlRdWFkLnJlbGVhc2UoKSk7CiAgICAgfQpA
QCAtMjQ2OSw2ICsyNDcwLDIxIEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgaGFz
VHJhbnNwYXJlbnRCYWNrZ3JvdW5kKQogICAgIE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRp
b25zKCZtb2NrQ29udGV4dCk7CiB9CiAKK3N0YXRpYyB2b2lkIGFkZERyYXdpbmdMYXllclRvKEND
TGF5ZXJJbXBsKiBwYXJlbnQsIGludCBpZCwgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0LCBDQ0xh
eWVySW1wbCoqIHJlc3VsdCkKK3sKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IGxheWVyID0gRmFr
ZUxheWVyV2l0aFF1YWRzOjpjcmVhdGUoaWQpOworICAgIENDTGF5ZXJJbXBsKiBsYXllclB0ciA9
IGxheWVyLmdldCgpOworICAgIGxheWVyUHRyLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50KDAs
IDApKTsKKyAgICBsYXllclB0ci0+c2V0UG9zaXRpb24oRmxvYXRQb2ludChsYXllclJlY3QubG9j
YXRpb24oKSkpOworICAgIGxheWVyUHRyLT5zZXRCb3VuZHMobGF5ZXJSZWN0LnNpemUoKSk7Cisg
ICAgbGF5ZXJQdHItPnNldENvbnRlbnRCb3VuZHMobGF5ZXJSZWN0LnNpemUoKSk7CisgICAgbGF5
ZXJQdHItPnNldERyYXdzQ29udGVudCh0cnVlKTsgLy8gb25seSBjaGlsZHJlbiBkcmF3IGNvbnRl
bnQKKyAgICBsYXllclB0ci0+c2V0T3BhcXVlKHRydWUpOworICAgIHBhcmVudC0+YWRkQ2hpbGQo
bGF5ZXIucmVsZWFzZSgpKTsKKyAgICBpZiAocmVzdWx0KQorICAgICAgICAqcmVzdWx0ID0gbGF5
ZXJQdHI7Cit9CisKIHN0YXRpYyB2b2lkIHNldHVwTGF5ZXJzRm9yVGV4dHVyZUNhY2hpbmcoQ0NM
YXllclRyZWVIb3N0SW1wbCogbGF5ZXJUcmVlSG9zdEltcGwsIENDTGF5ZXJJbXBsKiYgcm9vdFB0
ciwgQ0NMYXllckltcGwqJiBpbnRlcm1lZGlhdGVMYXllclB0ciwgQ0NMYXllckltcGwqJiBzdXJm
YWNlTGF5ZXJQdHIsIENDTGF5ZXJJbXBsKiYgY2hpbGRQdHIsIGNvbnN0IEludFNpemUmIHJvb3RT
aXplKQogewogICAgIE93blB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY29udGV4dCA9IENDR3JhcGhp
Y3NDb250ZXh0OjpjcmVhdGUzRChhZG9wdFB0cihuZXcgUGFydGlhbFN3YXBDb250ZXh0KSk7CkBA
IC0yNDgzLDUwICsyNDk5LDIwIEBAIHN0YXRpYyB2b2lkIHNldHVwTGF5ZXJzRm9yVGV4dHVyZUNh
Y2hpbmcoQ0NMYXllclRyZWVIb3N0SW1wbCogbGF5ZXJUcmVlSG9zdEltcGwsCiAgICAgcm9vdC0+
c2V0UG9zaXRpb24oRmxvYXRQb2ludCgwLCAwKSk7CiAgICAgcm9vdC0+c2V0Qm91bmRzKHJvb3RT
aXplKTsKICAgICByb290LT5zZXRDb250ZW50Qm91bmRzKHJvb3RTaXplKTsKLSAgICByb290LT5z
ZXRWaXNpYmxlQ29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludCgwLCAwKSwgcm9vdFNpemUpKTsK
ICAgICByb290LT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7CiAgICAgbGF5ZXJUcmVlSG9zdEltcGwt
PnNldFJvb3RMYXllcihyb290LnJlbGVhc2UoKSk7CiAKLSAgICAvLyBJbnRlcm1lZGlhdGUgbGF5
ZXIgZG9lcyBub3Qgb3duIGEgc3VyZmFjZSwgYW5kIGRvZXMgbm90IGRyYXcgY29udGVudC4KLSAg
ICBPd25QdHI8Q0NMYXllckltcGw+IGludGVybWVkaWF0ZUxheWVyID0gQ0NMYXllckltcGw6OmNy
ZWF0ZSgyKTsKLSAgICBpbnRlcm1lZGlhdGVMYXllclB0ciA9IGludGVybWVkaWF0ZUxheWVyLmdl
dCgpOwotCi0gICAgaW50ZXJtZWRpYXRlTGF5ZXJQdHItPnNldEFuY2hvclBvaW50KEZsb2F0UG9p
bnQoMCwgMCkpOwotICAgIGludGVybWVkaWF0ZUxheWVyUHRyLT5zZXRQb3NpdGlvbihGbG9hdFBv
aW50KDEwLCAxMCkpOwotICAgIGludGVybWVkaWF0ZUxheWVyUHRyLT5zZXRCb3VuZHMocm9vdFNp
emUpOwotICAgIGludGVybWVkaWF0ZUxheWVyUHRyLT5zZXRDb250ZW50Qm91bmRzKHJvb3RTaXpl
KTsKLSAgICBpbnRlcm1lZGlhdGVMYXllclB0ci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KEludFJl
Y3QoSW50UG9pbnQoMCwgMCksIHJvb3RTaXplKSk7CisgICAgYWRkRHJhd2luZ0xheWVyVG8ocm9v
dFB0ciwgMiwgSW50UmVjdCgxMCwgMTAsIHJvb3RTaXplLndpZHRoKCksIHJvb3RTaXplLmhlaWdo
dCgpKSwgJmludGVybWVkaWF0ZUxheWVyUHRyKTsKICAgICBpbnRlcm1lZGlhdGVMYXllclB0ci0+
c2V0RHJhd3NDb250ZW50KGZhbHNlKTsgLy8gb25seSBjaGlsZHJlbiBkcmF3IGNvbnRlbnQKLSAg
ICByb290UHRyLT5hZGRDaGlsZChpbnRlcm1lZGlhdGVMYXllci5yZWxlYXNlKCkpOwotCi0gICAg
T3duUHRyPENDTGF5ZXJJbXBsPiBzdXJmYWNlTGF5ZXIgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDMp
OwotICAgIHN1cmZhY2VMYXllclB0ciA9IHN1cmZhY2VMYXllci5nZXQoKTsKIAogICAgIC8vIFN1
cmZhY2UgbGF5ZXIgaXMgdGhlIGxheWVyIHRoYXQgY2hhbmdlcyBpdHMgb3BhY2l0eQogICAgIC8v
IEl0IHdpbGwgY29udGFpbiBvdGhlciBsYXllcnMgdGhhdCBkcmF3IGNvbnRlbnQuCi0gICAgSW50
U2l6ZSBzdXJmYWNlU2l6ZShyb290U2l6ZS53aWR0aCgpLCByb290U2l6ZS5oZWlnaHQoKSk7Ci0g
ICAgc3VyZmFjZUxheWVyUHRyLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50KDAsIDApKTsKLSAg
ICBzdXJmYWNlTGF5ZXJQdHItPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQoMTAsIDEwKSk7Ci0gICAg
c3VyZmFjZUxheWVyUHRyLT5zZXRCb3VuZHMoc3VyZmFjZVNpemUpOwotICAgIHN1cmZhY2VMYXll
clB0ci0+c2V0Q29udGVudEJvdW5kcyhzdXJmYWNlU2l6ZSk7Ci0gICAgc3VyZmFjZUxheWVyUHRy
LT5zZXRWaXNpYmxlQ29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludCgwLCAwKSwgc3VyZmFjZVNp
emUpKTsKKyAgICBhZGREcmF3aW5nTGF5ZXJUbyhpbnRlcm1lZGlhdGVMYXllclB0ciwgMywgSW50
UmVjdCgxMCwgMTAsIHJvb3RTaXplLndpZHRoKCksIHJvb3RTaXplLmhlaWdodCgpKSwgJnN1cmZh
Y2VMYXllclB0cik7CiAgICAgc3VyZmFjZUxheWVyUHRyLT5zZXREcmF3c0NvbnRlbnQoZmFsc2Up
OyAvLyBvbmx5IGNoaWxkcmVuIGRyYXcgY29udGVudAogICAgIHN1cmZhY2VMYXllclB0ci0+c2V0
T3BhY2l0eSgwLjVmKTsgLy8gVGhpcyB3aWxsIGNhdXNlIGl0IHRvIGhhdmUgYSBzdXJmYWNlCi0g
ICAgaW50ZXJtZWRpYXRlTGF5ZXJQdHItPmFkZENoaWxkKHN1cmZhY2VMYXllci5yZWxlYXNlKCkp
OwogCiAgICAgLy8gQ2hpbGQgb2YgdGhlIHN1cmZhY2UgbGF5ZXIgd2lsbCBwcm9kdWNlIHNvbWUg
cXVhZHMKLSAgICBPd25QdHI8RmFrZUxheWVyV2l0aFF1YWRzPiBjaGlsZCA9IEZha2VMYXllcldp
dGhRdWFkczo6Y3JlYXRlKDQpOwotICAgIGNoaWxkUHRyID0gY2hpbGQuZ2V0KCk7Ci0KLSAgICBJ
bnRTaXplIGNoaWxkU2l6ZShyb290U2l6ZS53aWR0aCgpLCByb290U2l6ZS5oZWlnaHQoKSk7Ci0g
ICAgY2hpbGRQdHItPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQoMCwgMCkpOwotICAgIGNoaWxk
UHRyLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KDUsIDUpKTsKLSAgICBjaGlsZFB0ci0+c2V0Qm91
bmRzKGNoaWxkU2l6ZSk7Ci0gICAgY2hpbGRQdHItPnNldENvbnRlbnRCb3VuZHMoY2hpbGRTaXpl
KTsKLSAgICBjaGlsZFB0ci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQo
MCwgMCksIGNoaWxkU2l6ZSkpOwotICAgIGNoaWxkUHRyLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7
Ci0KLSAgICBzdXJmYWNlTGF5ZXJQdHItPmFkZENoaWxkKGNoaWxkLnJlbGVhc2UoKSk7CisgICAg
YWRkRHJhd2luZ0xheWVyVG8oc3VyZmFjZUxheWVyUHRyLCA0LCBJbnRSZWN0KDUsIDUsIHJvb3RT
aXplLndpZHRoKCksIHJvb3RTaXplLmhlaWdodCgpKSwgJmNoaWxkUHRyKTsKIH0KIAogY2xhc3Mg
TGF5ZXJSZW5kZXJlckNocm9taXVtV2l0aFJlbGVhc2VUZXh0dXJlcyA6IHB1YmxpYyBMYXllclJl
bmRlcmVyQ2hyb21pdW0gewpAQCAtMjUzNCw2ICsyNTIwLDUzOSBAQCBwdWJsaWM6CiAgICAgdXNp
bmcgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZWxlYXNlUmVuZGVyUGFzc1RleHR1cmVzOwogfTsK
IAorVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCB0ZXh0dXJlQ2FjaGluZ1dpdGhDbGlw
cGluZykKK3sKKyAgICBDQ1NldHRpbmdzOjpzZXRQYXJ0aWFsU3dhcEVuYWJsZWQodHJ1ZSk7CisK
KyAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNldHRpbmdzOworICAgIE93blB0cjxDQ0xheWVyVHJl
ZUhvc3RJbXBsPiBteUhvc3RJbXBsID0gQ0NMYXllclRyZWVIb3N0SW1wbDo6Y3JlYXRlKHNldHRp
bmdzLCB0aGlzKTsKKworICAgIENDTGF5ZXJJbXBsKiByb290UHRyOworICAgIENDTGF5ZXJJbXBs
KiBzdXJmYWNlTGF5ZXJQdHI7CisKKyAgICBPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNvbnRl
eHQgPSBDQ0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRlM0QoYWRvcHRQdHIobmV3IFBhcnRpYWxTd2Fw
Q29udGV4dCkpOworCisgICAgSW50U2l6ZSByb290U2l6ZSgxMDAsIDEwMCk7CisKKyAgICBteUhv
c3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjb250ZXh0LnJlbGVhc2UoKSwgVW50aHJv
dHRsZWRVcGxvYWRlcik7CisgICAgbXlIb3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUo
cm9vdFNpemUud2lkdGgoKSwgcm9vdFNpemUuaGVpZ2h0KCkpKTsKKworICAgIE93blB0cjxDQ0xh
eWVySW1wbD4gcm9vdCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMSk7CisgICAgcm9vdFB0ciA9IHJv
b3QuZ2V0KCk7CisKKyAgICByb290LT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50KDAsIDApKTsK
KyAgICByb290LT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KDAsIDApKTsKKyAgICByb290LT5zZXRC
b3VuZHMocm9vdFNpemUpOworICAgIHJvb3QtPnNldENvbnRlbnRCb3VuZHMocm9vdFNpemUpOwor
ICAgIHJvb3QtPnNldERyYXdzQ29udGVudCh0cnVlKTsKKyAgICByb290LT5zZXRNYXNrc1RvQm91
bmRzKHRydWUpOworICAgIG15SG9zdEltcGwtPnNldFJvb3RMYXllcihyb290LnJlbGVhc2UoKSk7
CisKKyAgICBhZGREcmF3aW5nTGF5ZXJUbyhyb290UHRyLCAzLCBJbnRSZWN0KDAsIDAsIHJvb3RT
aXplLndpZHRoKCksIHJvb3RTaXplLmhlaWdodCgpKSwgJnN1cmZhY2VMYXllclB0cik7CisgICAg
c3VyZmFjZUxheWVyUHRyLT5zZXREcmF3c0NvbnRlbnQoZmFsc2UpOworCisgICAgLy8gU3VyZmFj
ZSBsYXllciBpcyB0aGUgbGF5ZXIgdGhhdCBjaGFuZ2VzIGl0cyBvcGFjaXR5CisgICAgLy8gSXQg
d2lsbCBjb250YWluIG90aGVyIGxheWVycyB0aGF0IGRyYXcgY29udGVudC4KKyAgICBzdXJmYWNl
TGF5ZXJQdHItPnNldE9wYWNpdHkoMC41Zik7IC8vIFRoaXMgd2lsbCBjYXVzZSBpdCB0byBoYXZl
IGEgc3VyZmFjZQorCisgICAgYWRkRHJhd2luZ0xheWVyVG8oc3VyZmFjZUxheWVyUHRyLCA0LCBJ
bnRSZWN0KDAsIDAsIDEwMCwgMyksIDApOworICAgIGFkZERyYXdpbmdMYXllclRvKHN1cmZhY2VM
YXllclB0ciwgNSwgSW50UmVjdCgwLCA5NywgMTAwLCAzKSwgMCk7CisKKyAgICAvLyBSb3RhdGlv
biB3aWxsIHB1dCBwYXJ0IG9mIHRoZSBjaGlsZCBvdXNpZGUgdGhlIGJvdW5kcyBvZiB0aGUgcm9v
dCBsYXllci4KKyAgICAvLyBOZXZlcnRoZWxlc3MsIHRoZSBjaGlsZCBsYXllcnMgc2hvdWxkIGJl
IGRyYXduLgorICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybSA9IHN1cmZhY2VM
YXllclB0ci0+dHJhbnNmb3JtKCk7CisgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSg1MCwgNTApOwor
ICAgIHRyYW5zZm9ybS5yb3RhdGUoMzUpOworICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoLTUwLCAt
NTApOworICAgIHN1cmZhY2VMYXllclB0ci0+c2V0VHJhbnNmb3JtKHRyYW5zZm9ybSk7CisKKyAg
ICB7CisgICAgICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSBmcmFtZTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUobXlIb3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworCisgICAg
ICAgIC8vIE11c3QgcmVjZWl2ZSB0d28gcmVuZGVyIHBhc3NlcywgZWFjaCB3aXRoIG9uZSBxdWFk
CisgICAgICAgIEFTU0VSVF9FUSgyVSwgZnJhbWUucmVuZGVyUGFzc2VzLnNpemUoKSk7CisgICAg
ICAgIEVYUEVDVF9FUSgyVSwgZnJhbWUucmVuZGVyUGFzc2VzWzBdLT5xdWFkTGlzdCgpLnNpemUo
KSk7CisgICAgICAgIEFTU0VSVF9FUSgxVSwgZnJhbWUucmVuZGVyUGFzc2VzWzFdLT5xdWFkTGlz
dCgpLnNpemUoKSk7CisKKyAgICAgICAgLy8gVmVyaWZ5IHRoYXQgdGhlIGNoaWxkIGxheWVycyBo
YXZlIGJlZW4gZHJhd24gZW50aXJlbHkuCisgICAgICAgIEludFJlY3QgcXVhZFZpc2libGVSZWN0
ID0gZnJhbWUucmVuZGVyUGFzc2VzWzBdLT5xdWFkTGlzdCgpWzBdLT5xdWFkVmlzaWJsZVJlY3Qo
KTsKKyAgICAgICAgRVhQRUNUX0lOVF9SRUNUX0VRKEludFJlY3QoMCwgMCwgMTAwLCAzKSwgcXVh
ZFZpc2libGVSZWN0KTsKKworICAgICAgICBxdWFkVmlzaWJsZVJlY3QgPSBmcmFtZS5yZW5kZXJQ
YXNzZXNbMF0tPnF1YWRMaXN0KClbMV0tPnF1YWRWaXNpYmxlUmVjdCgpOworICAgICAgICBFWFBF
Q1RfSU5UX1JFQ1RfRVEoSW50UmVjdCgwLCAwLCAxMDAsIDMpLCBxdWFkVmlzaWJsZVJlY3QpOwor
CisgICAgICAgIEVYUEVDVF9FUShDQ0RyYXdRdWFkOjpSZW5kZXJQYXNzLCBmcmFtZS5yZW5kZXJQ
YXNzZXNbMV0tPnF1YWRMaXN0KClbMF0tPm1hdGVyaWFsKCkpOworICAgICAgICBDQ1JlbmRlclBh
c3NEcmF3UXVhZCogcXVhZCA9IHN0YXRpY19jYXN0PENDUmVuZGVyUGFzc0RyYXdRdWFkKj4oZnJh
bWUucmVuZGVyUGFzc2VzWzFdLT5xdWFkTGlzdCgpWzBdLmdldCgpKTsKKyAgICAgICAgRVhQRUNU
X0ZBTFNFKHF1YWQtPmNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lKCkuaXNFbXB0eSgpKTsK
KworICAgICAgICBteUhvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKKyAgICAgICAgbXlIb3N0
SW1wbC0+ZGlkRHJhd0FsbExheWVycyhmcmFtZSk7CisgICAgfQorCisgICAgdHJhbnNmb3JtID0g
c3VyZmFjZUxheWVyUHRyLT50cmFuc2Zvcm0oKTsKKyAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKDUw
LCA1MCk7CisgICAgdHJhbnNmb3JtLnJvdGF0ZSgtMzUpOworICAgIHRyYW5zZm9ybS50cmFuc2xh
dGUoLTUwLCAtNTApOworICAgIHN1cmZhY2VMYXllclB0ci0+c2V0VHJhbnNmb3JtKHRyYW5zZm9y
bSk7CisKKyAgICAvLyBUaGUgc3VyZmFjZSBpcyBub3cgYWxpZ25lZCBhZ2FpbiwgYW5kIHRoZSBj
bGlwcGVkIHBhcnRzIGFyZSBleHBvc2VkLgorICAgIC8vIFRoYXQgc2hvdWxkIGJlIE9LLCBhcyB3
ZSd2ZSBhbHJlYWR5IHZlcmlmaWVkIHRoYXQgdGhlIHF1YWRzIGFyZSBkcmF3biBpbiBmdWxsLgor
ICAgIC8vIFZlcmlmeSB0aGF0IHRoZSByZW5kZXIgcGFzcyBpcyByZW1vdmVkLgorICAgIHsKKyAg
ICAgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRhIGZyYW1lOworICAgICAgICBFWFBF
Q1RfVFJVRShteUhvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CisKKyAgICAgICAgLy8g
TXVzdCByZWNlaXZlIGEgc2luZ2xlIHJlbmRlciBwYXNzIHVzaW5nIGEgY2FjaGVkIHRleHR1cmUu
CisgICAgICAgIEFTU0VSVF9FUSgxVSwgZnJhbWUucmVuZGVyUGFzc2VzLnNpemUoKSk7CisgICAg
ICAgIEVYUEVDVF9FUSgxVSwgZnJhbWUucmVuZGVyUGFzc2VzWzBdLT5xdWFkTGlzdCgpLnNpemUo
KSk7CisKKyAgICAgICAgbXlIb3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CisgICAgICAgIG15
SG9zdEltcGwtPmRpZERyYXdBbGxMYXllcnMoZnJhbWUpOworICAgIH0KK30KKworVEVTVF9GKEND
TGF5ZXJUcmVlSG9zdEltcGxUZXN0LCB0ZXh0dXJlQ2FjaGluZ1dpdGhPY2NsdXNpb24pCit7Cisg
ICAgQ0NTZXR0aW5nczo6c2V0UGFydGlhbFN3YXBFbmFibGVkKGZhbHNlKTsKKworICAgIENDTGF5
ZXJUcmVlU2V0dGluZ3Mgc2V0dGluZ3M7CisgICAgT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+
IG15SG9zdEltcGwgPSBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUoc2V0dGluZ3MsIHRoaXMp
OworCisgICAgLy8gTGF5ZXJzIGFyZSBzdHJ1Y3R1cmUgYXMgZm9sbG93czoKKyAgICAvLworICAg
IC8vICBSICstLSBTMSArLSBMMTAgKG93bmluZykKKyAgICAvLyAgICB8ICAgICAgKy0gTDExCisg
ICAgLy8gICAgfCAgICAgICstIEwxMgorICAgIC8vICAgIHwKKyAgICAvLyAgICArLS0gUzIgKy0g
TDIwIChvd25pbmcpCisgICAgLy8gICAgICAgICAgICstIEwyMQorICAgIC8vCisgICAgLy8gT2Nj
bHVzaW9uOgorICAgIC8vIEwxMiBvY2NsdWRlcyBMMTEgKGludGVybmFsKQorICAgIC8vIEwyMCBv
Y2NsdWRlcyBMMTAgKGV4dGVybmFsKQorICAgIC8vIEwyMSBvY2NsdWRlcyBMMjAgKGludGVybmFs
KQorCisgICAgQ0NMYXllckltcGwqIHJvb3RQdHI7CisgICAgQ0NMYXllckltcGwqIGxheWVyUzFQ
dHI7CisgICAgQ0NMYXllckltcGwqIGxheWVyUzJQdHI7CisKKyAgICBPd25QdHI8Q0NHcmFwaGlj
c0NvbnRleHQ+IGNvbnRleHQgPSBDQ0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRlM0QoYWRvcHRQdHIo
bmV3IFBhcnRpYWxTd2FwQ29udGV4dCkpOworCisgICAgSW50U2l6ZSByb290U2l6ZSgxMDAwLCAx
MDAwKTsKKworICAgIG15SG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQu
cmVsZWFzZSgpLCBVbnRocm90dGxlZFVwbG9hZGVyKTsKKyAgICBteUhvc3RJbXBsLT5zZXRWaWV3
cG9ydFNpemUoSW50U2l6ZShyb290U2l6ZS53aWR0aCgpLCByb290U2l6ZS5oZWlnaHQoKSkpOwor
CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiByb290ID0gQ0NMYXllckltcGw6OmNyZWF0ZSgxKTsK
KyAgICByb290UHRyID0gcm9vdC5nZXQoKTsKKworICAgIHJvb3QtPnNldEFuY2hvclBvaW50KEZs
b2F0UG9pbnQoMCwgMCkpOworICAgIHJvb3QtPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQoMCwgMCkp
OworICAgIHJvb3QtPnNldEJvdW5kcyhyb290U2l6ZSk7CisgICAgcm9vdC0+c2V0Q29udGVudEJv
dW5kcyhyb290U2l6ZSk7CisgICAgcm9vdC0+c2V0RHJhd3NDb250ZW50KHRydWUpOworICAgIHJv
b3QtPnNldE1hc2tzVG9Cb3VuZHModHJ1ZSk7CisgICAgbXlIb3N0SW1wbC0+c2V0Um9vdExheWVy
KHJvb3QucmVsZWFzZSgpKTsKKworICAgIGFkZERyYXdpbmdMYXllclRvKHJvb3RQdHIsIDIsIElu
dFJlY3QoMzAwLCAzMDAsIDMwMCwgMzAwKSwgJmxheWVyUzFQdHIpOworICAgIGxheWVyUzFQdHIt
PnNldEZvcmNlUmVuZGVyU3VyZmFjZSh0cnVlKTsKKworICAgIGFkZERyYXdpbmdMYXllclRvKGxh
eWVyUzFQdHIsIDMsIEludFJlY3QoMTAsIDEwLCAxMCwgMTApLCAwKTsgLy8gTDExCisgICAgYWRk
RHJhd2luZ0xheWVyVG8obGF5ZXJTMVB0ciwgNCwgSW50UmVjdCgwLCAwLCAzMCwgMzApLCAwKTsg
Ly8gTDEyCisKKyAgICBhZGREcmF3aW5nTGF5ZXJUbyhyb290UHRyLCA1LCBJbnRSZWN0KDU1MCwg
MjUwLCAzMDAsIDQwMCksICZsYXllclMyUHRyKTsKKyAgICBsYXllclMyUHRyLT5zZXRGb3JjZVJl
bmRlclN1cmZhY2UodHJ1ZSk7CisKKyAgICBhZGREcmF3aW5nTGF5ZXJUbyhsYXllclMyUHRyLCA2
LCBJbnRSZWN0KDIwLCAyMCwgNSwgNSksIDApOyAvLyBMMjEKKworICAgIC8vIEluaXRpYWwgZHJh
dyAtIG11c3QgcmVjZWl2ZSBhbGwgcXVhZHMKKyAgICB7CisgICAgICAgIENDTGF5ZXJUcmVlSG9z
dEltcGw6OkZyYW1lRGF0YSBmcmFtZTsKKyAgICAgICAgRVhQRUNUX1RSVUUobXlIb3N0SW1wbC0+
cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworCisgICAgICAgIC8vIE11c3QgcmVjZWl2ZSAzIHJlbmRl
ciBwYXNzZXMuCisgICAgICAgIC8vIEZvciBSb290LCB0aGVyZSBhcmUgMiBxdWFkczsgZm9yIFMx
LCB0aGVyZSBhcmUgMyBxdWFkczsgZm9yIFMyLCB0aGVyZSBpcyAxIHF1YWQuCisgICAgICAgIEFT
U0VSVF9FUSgzVSwgZnJhbWUucmVuZGVyUGFzc2VzLnNpemUoKSk7CisKKyAgICAgICAgRVhQRUNU
X0VRKDJVLCBmcmFtZS5yZW5kZXJQYXNzZXNbMF0tPnF1YWRMaXN0KCkuc2l6ZSgpKTsKKyAgICAg
ICAgRVhQRUNUX0VRKDNVLCBmcmFtZS5yZW5kZXJQYXNzZXNbMV0tPnF1YWRMaXN0KCkuc2l6ZSgp
KTsKKyAgICAgICAgRVhQRUNUX0VRKDJVLCBmcmFtZS5yZW5kZXJQYXNzZXNbMl0tPnF1YWRMaXN0
KCkuc2l6ZSgpKTsKKworICAgICAgICBteUhvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKKyAg
ICAgICAgbXlIb3N0SW1wbC0+ZGlkRHJhd0FsbExheWVycyhmcmFtZSk7CisgICAgfQorCisgICAg
Ly8gIlVub2NjbHVkZSIgc3VyZmFjZSBTMSBhbmQgcmVwZWF0IGRyYXcuCisgICAgLy8gTXVzdCBy
ZW1vdmUgUzIncyByZW5kZXIgcGFzcyBzaW5jZSBpdCdzIGNhY2hlZDsKKyAgICAvLyBNdXN0IGtl
ZXAgUzEgcXVhZHMgYmVjYXVzZSB0ZXh0dXJlIGNvbnRhaW5lZCBleHRlcm5hbCBvY2NsdXNpb24u
CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtID0gbGF5ZXJTMlB0ci0+dHJh
bnNmb3JtKCk7CisgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSgxNTAsIDE1MCk7CisgICAgbGF5ZXJT
MlB0ci0+c2V0VHJhbnNmb3JtKHRyYW5zZm9ybSk7CisgICAgeworICAgICAgICBDQ0xheWVyVHJl
ZUhvc3RJbXBsOjpGcmFtZURhdGEgZnJhbWU7CisgICAgICAgIEVYUEVDVF9UUlVFKG15SG9zdElt
cGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKKworICAgICAgICAvLyBNdXN0IHJlY2VpdmUgMiBy
ZW5kZXIgcGFzc2VzLgorICAgICAgICAvLyBGb3IgUm9vdCwgdGhlcmUgYXJlIDIgcXVhZHMKKyAg
ICAgICAgLy8gRm9yIFMxLCB0aGUgbnVtYmVyIG9mIHF1YWRzIGRlcGVuZHMgb24gd2hhdCBnb3Qg
dW5vY2NsdWRlZCwgc28gbm90IGFzc2VydGVkIGJleW9uZCBiZWluZyBwb3NpdGl2ZS4KKyAgICAg
ICAgLy8gRm9yIFMyLCB0aGVyZSBpcyBubyByZW5kZXIgcGFzcworICAgICAgICBBU1NFUlRfRVEo
MlUsIGZyYW1lLnJlbmRlclBhc3Nlcy5zaXplKCkpOworCisgICAgICAgIEVYUEVDVF9HVChmcmFt
ZS5yZW5kZXJQYXNzZXNbMF0tPnF1YWRMaXN0KCkuc2l6ZSgpLCAwVSk7CisgICAgICAgIEVYUEVD
VF9FUSgyVSwgZnJhbWUucmVuZGVyUGFzc2VzWzFdLT5xdWFkTGlzdCgpLnNpemUoKSk7CisKKyAg
ICAgICAgbXlIb3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CisgICAgICAgIG15SG9zdEltcGwt
PmRpZERyYXdBbGxMYXllcnMoZnJhbWUpOworICAgIH0KKworICAgIC8vICJSZS1vY2NsdWRlIiBz
dXJmYWNlIFMxIGFuZCByZXBlYXQgZHJhdy4KKyAgICAvLyBNdXN0IHJlbW92ZSBTMSdzIHJlbmRl
ciBwYXNzIHNpbmNlIGl0IGlzIG5vdyBhdmFpbGFibGUgaW4gZnVsbC4KKyAgICAvLyBTMiBoYXMg
bm8gY2hhbmdlIHNvIG11c3QgYWxzbyBiZSByZW1vdmVkLgorICAgIHRyYW5zZm9ybSA9IGxheWVy
UzJQdHItPnRyYW5zZm9ybSgpOworICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoLTE1LCAtMTUpOwor
ICAgIGxheWVyUzJQdHItPnNldFRyYW5zZm9ybSh0cmFuc2Zvcm0pOworICAgIHsKKyAgICAgICAg
Q0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRhIGZyYW1lOworICAgICAgICBFWFBFQ1RfVFJV
RShteUhvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CisKKyAgICAgICAgLy8gTXVzdCBy
ZWNlaXZlIDEgcmVuZGVyIHBhc3MgLSBmb3IgdGhlIHJvb3QuCisgICAgICAgIEFTU0VSVF9FUSgx
VSwgZnJhbWUucmVuZGVyUGFzc2VzLnNpemUoKSk7CisKKyAgICAgICAgRVhQRUNUX0VRKDJVLCBm
cmFtZS5yZW5kZXJQYXNzZXNbMF0tPnF1YWRMaXN0KCkuc2l6ZSgpKTsKKworICAgICAgICBteUhv
c3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKKyAgICAgICAgbXlIb3N0SW1wbC0+ZGlkRHJhd0Fs
bExheWVycyhmcmFtZSk7CisgICAgfQorCit9CisKK1RFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBs
VGVzdCwgdGV4dHVyZUNhY2hpbmdXaXRoT2NjbHVzaW9uRWFybHlPdXQpCit7CisgICAgQ0NTZXR0
aW5nczo6c2V0UGFydGlhbFN3YXBFbmFibGVkKGZhbHNlKTsKKworICAgIENDTGF5ZXJUcmVlU2V0
dGluZ3Mgc2V0dGluZ3M7CisgICAgT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IG15SG9zdElt
cGwgPSBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUoc2V0dGluZ3MsIHRoaXMpOworCisgICAg
Ly8gTGF5ZXJzIGFyZSBzdHJ1Y3R1cmUgYXMgZm9sbG93czoKKyAgICAvLworICAgIC8vICBSICst
LSBTMSArLSBMMTAgKG93bmluZywgbm9uIGRyYXdpbmcpCisgICAgLy8gICAgfCAgICAgICstIEwx
MSAoY29ybmVyLCB1bm9jY2x1ZGVkKQorICAgIC8vICAgIHwgICAgICArLSBMMTIgKGNvcm5lciwg
dW5vY2NsdWRlZCkKKyAgICAvLyAgICB8ICAgICAgKy0gTDEzIChjb3JuZXIsIHVub2NjbHVkZWQp
CisgICAgLy8gICAgfCAgICAgICstIEwxNCAoY29ybmVyLCBlbnRpcmVseSBvY2NsdWRlZCkKKyAg
ICAvLyAgICB8CisgICAgLy8gICAgKy0tIFMyICstIEwyMCAob3duaW5nLCBkcmF3aW5nKQorICAg
IC8vCisKKyAgICBDQ0xheWVySW1wbCogcm9vdFB0cjsKKyAgICBDQ0xheWVySW1wbCogbGF5ZXJT
MVB0cjsKKyAgICBDQ0xheWVySW1wbCogbGF5ZXJTMlB0cjsKKworICAgIE93blB0cjxDQ0dyYXBo
aWNzQ29udGV4dD4gY29udGV4dCA9IENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRChhZG9wdFB0
cihuZXcgUGFydGlhbFN3YXBDb250ZXh0KSk7CisKKyAgICBJbnRTaXplIHJvb3RTaXplKDEwMDAs
IDEwMDApOworCisgICAgbXlIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY29udGV4
dC5yZWxlYXNlKCksIFVudGhyb3R0bGVkVXBsb2FkZXIpOworICAgIG15SG9zdEltcGwtPnNldFZp
ZXdwb3J0U2l6ZShJbnRTaXplKHJvb3RTaXplLndpZHRoKCksIHJvb3RTaXplLmhlaWdodCgpKSk7
CisKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDEp
OworICAgIHJvb3RQdHIgPSByb290LmdldCgpOworCisgICAgcm9vdC0+c2V0QW5jaG9yUG9pbnQo
RmxvYXRQb2ludCgwLCAwKSk7CisgICAgcm9vdC0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCgwLCAw
KSk7CisgICAgcm9vdC0+c2V0Qm91bmRzKHJvb3RTaXplKTsKKyAgICByb290LT5zZXRDb250ZW50
Qm91bmRzKHJvb3RTaXplKTsKKyAgICByb290LT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7CisgICAg
cm9vdC0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKKyAgICBteUhvc3RJbXBsLT5zZXRSb290TGF5
ZXIocm9vdC5yZWxlYXNlKCkpOworCisgICAgYWRkRHJhd2luZ0xheWVyVG8ocm9vdFB0ciwgMiwg
SW50UmVjdCgwLCAwLCA4MDAsIDgwMCksICZsYXllclMxUHRyKTsKKyAgICBsYXllclMxUHRyLT5z
ZXRGb3JjZVJlbmRlclN1cmZhY2UodHJ1ZSk7CisgICAgbGF5ZXJTMVB0ci0+c2V0RHJhd3NDb250
ZW50KGZhbHNlKTsKKworICAgIGFkZERyYXdpbmdMYXllclRvKGxheWVyUzFQdHIsIDMsIEludFJl
Y3QoMCwgMCwgMzAwLCAzMDApLCAwKTsgLy8gTDExCisgICAgYWRkRHJhd2luZ0xheWVyVG8obGF5
ZXJTMVB0ciwgNCwgSW50UmVjdCgwLCA1MDAsIDMwMCwgMzAwKSwgMCk7IC8vIEwxMgorICAgIGFk
ZERyYXdpbmdMYXllclRvKGxheWVyUzFQdHIsIDUsIEludFJlY3QoNTAwLCAwLCAzMDAsIDMwMCks
IDApOyAvLyBMMTMKKyAgICBhZGREcmF3aW5nTGF5ZXJUbyhsYXllclMxUHRyLCA2LCBJbnRSZWN0
KDUwMCwgNTAwLCAzMDAsIDMwMCksIDApOyAvLyBMMTQKKyAgICBhZGREcmF3aW5nTGF5ZXJUbyhs
YXllclMxUHRyLCA5LCBJbnRSZWN0KDUwMCwgNTAwLCAzMDAsIDMwMCksIDApOyAvLyBMMTQKKwor
ICAgIGFkZERyYXdpbmdMYXllclRvKHJvb3RQdHIsIDcsIEludFJlY3QoNDUwLCA0NTAsIDQ1MCwg
NDUwKSwgJmxheWVyUzJQdHIpOworICAgIGxheWVyUzJQdHItPnNldEZvcmNlUmVuZGVyU3VyZmFj
ZSh0cnVlKTsKKworICAgIC8vIEluaXRpYWwgZHJhdyAtIG11c3QgcmVjZWl2ZSBhbGwgcXVhZHMK
KyAgICB7CisgICAgICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSBmcmFtZTsKKyAg
ICAgICAgRVhQRUNUX1RSVUUobXlIb3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworCisg
ICAgICAgIC8vIE11c3QgcmVjZWl2ZSAzIHJlbmRlciBwYXNzZXMuCisgICAgICAgIC8vIEZvciBS
b290LCB0aGVyZSBhcmUgMiBxdWFkczsgZm9yIFMxLCB0aGVyZSBhcmUgMyBxdWFkczsgZm9yIFMy
LCB0aGVyZSBpcyAxIHF1YWQuCisgICAgICAgIEFTU0VSVF9FUSgzVSwgZnJhbWUucmVuZGVyUGFz
c2VzLnNpemUoKSk7CisKKyAgICAgICAgRVhQRUNUX0VRKDFVLCBmcmFtZS5yZW5kZXJQYXNzZXNb
MF0tPnF1YWRMaXN0KCkuc2l6ZSgpKTsKKworICAgICAgICAvLyBMMTQgaXMgY3VsbGVkLCBzbyBv
bmx5IDMgcXVhZHMuCisgICAgICAgIEVYUEVDVF9FUSgzVSwgZnJhbWUucmVuZGVyUGFzc2VzWzFd
LT5xdWFkTGlzdCgpLnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUSgyVSwgZnJhbWUucmVuZGVy
UGFzc2VzWzJdLT5xdWFkTGlzdCgpLnNpemUoKSk7CisKKyAgICAgICAgbXlIb3N0SW1wbC0+ZHJh
d0xheWVycyhmcmFtZSk7CisgICAgICAgIG15SG9zdEltcGwtPmRpZERyYXdBbGxMYXllcnMoZnJh
bWUpOworICAgIH0KKworICAgIC8vICJVbm9jY2x1ZGUiIHN1cmZhY2UgUzEgYW5kIHJlcGVhdCBk
cmF3LgorICAgIC8vIE11c3QgcmVtb3ZlIFMyJ3MgcmVuZGVyIHBhc3Mgc2luY2UgaXQncyBjYWNo
ZWQ7CisgICAgLy8gTXVzdCBrZWVwIFMxIHF1YWRzIGJlY2F1c2UgdGV4dHVyZSBjb250YWluZWQg
ZXh0ZXJuYWwgb2NjbHVzaW9uLgorICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9y
bSA9IGxheWVyUzJQdHItPnRyYW5zZm9ybSgpOworICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoMTAw
LCAxMDApOworICAgIGxheWVyUzJQdHItPnNldFRyYW5zZm9ybSh0cmFuc2Zvcm0pOworICAgIHsK
KyAgICAgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRhIGZyYW1lOworICAgICAgICBF
WFBFQ1RfVFJVRShteUhvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CisKKyAgICAgICAg
Ly8gTXVzdCByZWNlaXZlIDIgcmVuZGVyIHBhc3Nlcy4KKyAgICAgICAgLy8gRm9yIFJvb3QsIHRo
ZXJlIGFyZSAyIHF1YWRzCisgICAgICAgIC8vIEZvciBTMSwgdGhlIG51bWJlciBvZiBxdWFkcyBk
ZXBlbmRzIG9uIHdoYXQgZ290IHVub2NjbHVkZWQsIHNvIG5vdCBhc3NlcnRlZCBiZXlvbmQgYmVp
bmcgcG9zaXRpdmUuCisgICAgICAgIC8vIEZvciBTMiwgdGhlcmUgaXMgbm8gcmVuZGVyIHBhc3MK
KyAgICAgICAgQVNTRVJUX0VRKDJVLCBmcmFtZS5yZW5kZXJQYXNzZXMuc2l6ZSgpKTsKKworICAg
ICAgICBFWFBFQ1RfR1QoZnJhbWUucmVuZGVyUGFzc2VzWzBdLT5xdWFkTGlzdCgpLnNpemUoKSwg
MFUpOworICAgICAgICBFWFBFQ1RfRVEoMlUsIGZyYW1lLnJlbmRlclBhc3Nlc1sxXS0+cXVhZExp
c3QoKS5zaXplKCkpOworCisgICAgICAgIG15SG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOwor
ICAgICAgICBteUhvc3RJbXBsLT5kaWREcmF3QWxsTGF5ZXJzKGZyYW1lKTsKKyAgICB9CisKKyAg
ICAvLyAiUmUtb2NjbHVkZSIgc3VyZmFjZSBTMSBhbmQgcmVwZWF0IGRyYXcuCisgICAgLy8gTXVz
dCByZW1vdmUgUzEncyByZW5kZXIgcGFzcyBzaW5jZSBpdCBpcyBub3cgYXZhaWxhYmxlIGluIGZ1
bGwuCisgICAgLy8gUzIgaGFzIG5vIGNoYW5nZSBzbyBtdXN0IGFsc28gYmUgcmVtb3ZlZC4KKyAg
ICB0cmFuc2Zvcm0gPSBsYXllclMyUHRyLT50cmFuc2Zvcm0oKTsKKyAgICB0cmFuc2Zvcm0udHJh
bnNsYXRlKC0xNSwgLTE1KTsKKyAgICBsYXllclMyUHRyLT5zZXRUcmFuc2Zvcm0odHJhbnNmb3Jt
KTsKKyAgICB7CisgICAgICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSBmcmFtZTsK
KyAgICAgICAgRVhQRUNUX1RSVUUobXlIb3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOwor
CisgICAgICAgIC8vIE11c3QgcmVjZWl2ZSAxIHJlbmRlciBwYXNzIC0gZm9yIHRoZSByb290Lgor
ICAgICAgICBBU1NFUlRfRVEoMVUsIGZyYW1lLnJlbmRlclBhc3Nlcy5zaXplKCkpOworCisgICAg
ICAgIEVYUEVDVF9FUSgyVSwgZnJhbWUucmVuZGVyUGFzc2VzWzBdLT5xdWFkTGlzdCgpLnNpemUo
KSk7CisKKyAgICAgICAgbXlIb3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CisgICAgICAgIG15
SG9zdEltcGwtPmRpZERyYXdBbGxMYXllcnMoZnJhbWUpOworICAgIH0KKworfQorCitURVNUX0Yo
Q0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHRleHR1cmVDYWNoaW5nV2l0aE9jY2x1c2lvbkV4dGVy
bmFsT3ZlckludGVybmFsKQoreworICAgIENDU2V0dGluZ3M6OnNldFBhcnRpYWxTd2FwRW5hYmxl
ZChmYWxzZSk7CisKKyAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNldHRpbmdzOworICAgIE93blB0
cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBteUhvc3RJbXBsID0gQ0NMYXllclRyZWVIb3N0SW1wbDo6
Y3JlYXRlKHNldHRpbmdzLCB0aGlzKTsKKworICAgIC8vIExheWVycyBhcmUgc3RydWN0dXJlZCBh
cyBmb2xsb3dzOgorICAgIC8vCisgICAgLy8gIFIgKy0tIFMxICstIEwxMCAob3duaW5nLCBkcmF3
aW5nKQorICAgIC8vICAgIHwgICAgICArLSBMMTEgKGNvcm5lciwgb2NjbHVkZWQgYnkgTDEyKQor
ICAgIC8vICAgIHwgICAgICArLSBMMTIgKG9wcG9zaXRlIGNvcm5lcikKKyAgICAvLyAgICB8Cisg
ICAgLy8gICAgKy0tIFMyICstIEwyMCAob3duaW5nLCBkcmF3aW5nKQorICAgIC8vCisKKyAgICBD
Q0xheWVySW1wbCogcm9vdFB0cjsKKyAgICBDQ0xheWVySW1wbCogbGF5ZXJTMVB0cjsKKyAgICBD
Q0xheWVySW1wbCogbGF5ZXJTMlB0cjsKKworICAgIE93blB0cjxDQ0dyYXBoaWNzQ29udGV4dD4g
Y29udGV4dCA9IENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRChhZG9wdFB0cihuZXcgUGFydGlh
bFN3YXBDb250ZXh0KSk7CisKKyAgICBJbnRTaXplIHJvb3RTaXplKDEwMDAsIDEwMDApOworCisg
ICAgbXlIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY29udGV4dC5yZWxlYXNlKCks
IFVudGhyb3R0bGVkVXBsb2FkZXIpOworICAgIG15SG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJ
bnRTaXplKHJvb3RTaXplLndpZHRoKCksIHJvb3RTaXplLmhlaWdodCgpKSk7CisKKyAgICBPd25Q
dHI8Q0NMYXllckltcGw+IHJvb3QgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDEpOworICAgIHJvb3RQ
dHIgPSByb290LmdldCgpOworCisgICAgcm9vdC0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgw
LCAwKSk7CisgICAgcm9vdC0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCgwLCAwKSk7CisgICAgcm9v
dC0+c2V0Qm91bmRzKHJvb3RTaXplKTsKKyAgICByb290LT5zZXRDb250ZW50Qm91bmRzKHJvb3RT
aXplKTsKKyAgICByb290LT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7CisgICAgcm9vdC0+c2V0TWFz
a3NUb0JvdW5kcyh0cnVlKTsKKyAgICBteUhvc3RJbXBsLT5zZXRSb290TGF5ZXIocm9vdC5yZWxl
YXNlKCkpOworCisgICAgYWRkRHJhd2luZ0xheWVyVG8ocm9vdFB0ciwgMiwgSW50UmVjdCgwLCAw
LCA0MDAsIDQwMCksICZsYXllclMxUHRyKTsKKyAgICBsYXllclMxUHRyLT5zZXRGb3JjZVJlbmRl
clN1cmZhY2UodHJ1ZSk7CisKKyAgICBhZGREcmF3aW5nTGF5ZXJUbyhsYXllclMxUHRyLCAzLCBJ
bnRSZWN0KDAsIDAsIDMwMCwgMzAwKSwgMCk7IC8vIEwxMQorICAgIGFkZERyYXdpbmdMYXllclRv
KGxheWVyUzFQdHIsIDQsIEludFJlY3QoMTAwLCAwLCAzMDAsIDMwMCksIDApOyAvLyBMMTIKKwor
ICAgIGFkZERyYXdpbmdMYXllclRvKHJvb3RQdHIsIDcsIEludFJlY3QoMjAwLCAwLCAzMDAsIDMw
MCksICZsYXllclMyUHRyKTsKKyAgICBsYXllclMyUHRyLT5zZXRGb3JjZVJlbmRlclN1cmZhY2Uo
dHJ1ZSk7CisKKyAgICAvLyBJbml0aWFsIGRyYXcgLSBtdXN0IHJlY2VpdmUgYWxsIHF1YWRzCisg
ICAgeworICAgICAgICBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEgZnJhbWU7CisgICAg
ICAgIEVYUEVDVF9UUlVFKG15SG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKKworICAg
ICAgICAvLyBNdXN0IHJlY2VpdmUgMyByZW5kZXIgcGFzc2VzLgorICAgICAgICAvLyBGb3IgUm9v
dCwgdGhlcmUgYXJlIDIgcXVhZHM7IGZvciBTMSwgdGhlcmUgYXJlIDMgcXVhZHM7IGZvciBTMiwg
dGhlcmUgaXMgMSBxdWFkLgorICAgICAgICBBU1NFUlRfRVEoM1UsIGZyYW1lLnJlbmRlclBhc3Nl
cy5zaXplKCkpOworCisgICAgICAgIEVYUEVDVF9FUSgxVSwgZnJhbWUucmVuZGVyUGFzc2VzWzBd
LT5xdWFkTGlzdCgpLnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUSgzVSwgZnJhbWUucmVuZGVy
UGFzc2VzWzFdLT5xdWFkTGlzdCgpLnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUSgyVSwgZnJh
bWUucmVuZGVyUGFzc2VzWzJdLT5xdWFkTGlzdCgpLnNpemUoKSk7CisKKyAgICAgICAgbXlIb3N0
SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CisgICAgICAgIG15SG9zdEltcGwtPmRpZERyYXdBbGxM
YXllcnMoZnJhbWUpOworICAgIH0KKworICAgIC8vICJVbm9jY2x1ZGUiIHN1cmZhY2UgUzEgYW5k
IHJlcGVhdCBkcmF3LgorICAgIC8vIE11c3QgcmVtb3ZlIFMyJ3MgcmVuZGVyIHBhc3Mgc2luY2Ug
aXQncyBjYWNoZWQ7CisgICAgLy8gTXVzdCBrZWVwIFMxIHF1YWRzIGJlY2F1c2UgdGV4dHVyZSBj
b250YWluZWQgZXh0ZXJuYWwgb2NjbHVzaW9uLgorICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4
IHRyYW5zZm9ybSA9IGxheWVyUzJQdHItPnRyYW5zZm9ybSgpOworICAgIHRyYW5zZm9ybS50cmFu
c2xhdGUoMzAwLCAwKTsKKyAgICBsYXllclMyUHRyLT5zZXRUcmFuc2Zvcm0odHJhbnNmb3JtKTsK
KyAgICB7CisgICAgICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSBmcmFtZTsKKyAg
ICAgICAgRVhQRUNUX1RSVUUobXlIb3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworCisg
ICAgICAgIC8vIE11c3QgcmVjZWl2ZSAyIHJlbmRlciBwYXNzZXMuCisgICAgICAgIC8vIEZvciBS
b290LCB0aGVyZSBhcmUgMiBxdWFkcworICAgICAgICAvLyBGb3IgUzEsIHRoZSBudW1iZXIgb2Yg
cXVhZHMgZGVwZW5kcyBvbiB3aGF0IGdvdCB1bm9jY2x1ZGVkLCBzbyBub3QgYXNzZXJ0ZWQgYmV5
b25kIGJlaW5nIHBvc2l0aXZlLgorICAgICAgICAvLyBGb3IgUzIsIHRoZXJlIGlzIG5vIHJlbmRl
ciBwYXNzCisgICAgICAgIEFTU0VSVF9FUSgyVSwgZnJhbWUucmVuZGVyUGFzc2VzLnNpemUoKSk7
CisKKyAgICAgICAgRVhQRUNUX0dUKGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+cXVhZExpc3QoKS5z
aXplKCksIDBVKTsKKyAgICAgICAgRVhQRUNUX0VRKDJVLCBmcmFtZS5yZW5kZXJQYXNzZXNbMV0t
PnF1YWRMaXN0KCkuc2l6ZSgpKTsKKworICAgICAgICBteUhvc3RJbXBsLT5kcmF3TGF5ZXJzKGZy
YW1lKTsKKyAgICAgICAgbXlIb3N0SW1wbC0+ZGlkRHJhd0FsbExheWVycyhmcmFtZSk7CisgICAg
fQorfQorCitURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHRleHR1cmVDYWNoaW5nV2l0
aE9jY2x1c2lvblBhcnRpYWxTd2FwKQoreworICAgIENDU2V0dGluZ3M6OnNldFBhcnRpYWxTd2Fw
RW5hYmxlZCh0cnVlKTsKKworICAgIENDTGF5ZXJUcmVlU2V0dGluZ3Mgc2V0dGluZ3M7CisgICAg
T3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IG15SG9zdEltcGwgPSBDQ0xheWVyVHJlZUhvc3RJ
bXBsOjpjcmVhdGUoc2V0dGluZ3MsIHRoaXMpOworCisgICAgLy8gTGF5ZXJzIGFyZSBzdHJ1Y3R1
cmUgYXMgZm9sbG93czoKKyAgICAvLworICAgIC8vICBSICstLSBTMSArLSBMMTAgKG93bmluZykK
KyAgICAvLyAgICB8ICAgICAgKy0gTDExCisgICAgLy8gICAgfCAgICAgICstIEwxMgorICAgIC8v
ICAgIHwKKyAgICAvLyAgICArLS0gUzIgKy0gTDIwIChvd25pbmcpCisgICAgLy8gICAgICAgICAg
ICstIEwyMQorICAgIC8vCisgICAgLy8gT2NjbHVzaW9uOgorICAgIC8vIEwxMiBvY2NsdWRlcyBM
MTEgKGludGVybmFsKQorICAgIC8vIEwyMCBvY2NsdWRlcyBMMTAgKGV4dGVybmFsKQorICAgIC8v
IEwyMSBvY2NsdWRlcyBMMjAgKGludGVybmFsKQorCisgICAgQ0NMYXllckltcGwqIHJvb3RQdHI7
CisgICAgQ0NMYXllckltcGwqIGxheWVyUzFQdHI7CisgICAgQ0NMYXllckltcGwqIGxheWVyUzJQ
dHI7CisKKyAgICBPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNvbnRleHQgPSBDQ0dyYXBoaWNz
Q29udGV4dDo6Y3JlYXRlM0QoYWRvcHRQdHIobmV3IFBhcnRpYWxTd2FwQ29udGV4dCkpOworCisg
ICAgSW50U2l6ZSByb290U2l6ZSgxMDAwLCAxMDAwKTsKKworICAgIG15SG9zdEltcGwtPmluaXRp
YWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQucmVsZWFzZSgpLCBVbnRocm90dGxlZFVwbG9hZGVy
KTsKKyAgICBteUhvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZShyb290U2l6ZS53aWR0
aCgpLCByb290U2l6ZS5oZWlnaHQoKSkpOworCisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiByb290
ID0gQ0NMYXllckltcGw6OmNyZWF0ZSgxKTsKKyAgICByb290UHRyID0gcm9vdC5nZXQoKTsKKwor
ICAgIHJvb3QtPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQoMCwgMCkpOworICAgIHJvb3QtPnNl
dFBvc2l0aW9uKEZsb2F0UG9pbnQoMCwgMCkpOworICAgIHJvb3QtPnNldEJvdW5kcyhyb290U2l6
ZSk7CisgICAgcm9vdC0+c2V0Q29udGVudEJvdW5kcyhyb290U2l6ZSk7CisgICAgcm9vdC0+c2V0
RHJhd3NDb250ZW50KHRydWUpOworICAgIHJvb3QtPnNldE1hc2tzVG9Cb3VuZHModHJ1ZSk7Cisg
ICAgbXlIb3N0SW1wbC0+c2V0Um9vdExheWVyKHJvb3QucmVsZWFzZSgpKTsKKworICAgIGFkZERy
YXdpbmdMYXllclRvKHJvb3RQdHIsIDIsIEludFJlY3QoMzAwLCAzMDAsIDMwMCwgMzAwKSwgJmxh
eWVyUzFQdHIpOworICAgIGxheWVyUzFQdHItPnNldEZvcmNlUmVuZGVyU3VyZmFjZSh0cnVlKTsK
KworICAgIGFkZERyYXdpbmdMYXllclRvKGxheWVyUzFQdHIsIDMsIEludFJlY3QoMTAsIDEwLCAx
MCwgMTApLCAwKTsgLy8gTDExCisgICAgYWRkRHJhd2luZ0xheWVyVG8obGF5ZXJTMVB0ciwgNCwg
SW50UmVjdCgwLCAwLCAzMCwgMzApLCAwKTsgLy8gTDEyCisKKyAgICBhZGREcmF3aW5nTGF5ZXJU
byhyb290UHRyLCA1LCBJbnRSZWN0KDU1MCwgMjUwLCAzMDAsIDQwMCksICZsYXllclMyUHRyKTsK
KyAgICBsYXllclMyUHRyLT5zZXRGb3JjZVJlbmRlclN1cmZhY2UodHJ1ZSk7CisKKyAgICBhZGRE
cmF3aW5nTGF5ZXJUbyhsYXllclMyUHRyLCA2LCBJbnRSZWN0KDIwLCAyMCwgNSwgNSksIDApOyAv
LyBMMjEKKworICAgIC8vIEluaXRpYWwgZHJhdyAtIG11c3QgcmVjZWl2ZSBhbGwgcXVhZHMKKyAg
ICB7CisgICAgICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSBmcmFtZTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUobXlIb3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworCisgICAg
ICAgIC8vIE11c3QgcmVjZWl2ZSAzIHJlbmRlciBwYXNzZXMuCisgICAgICAgIC8vIEZvciBSb290
LCB0aGVyZSBhcmUgMiBxdWFkczsgZm9yIFMxLCB0aGVyZSBhcmUgMyBxdWFkczsgZm9yIFMyLCB0
aGVyZSBpcyAxIHF1YWQuCisgICAgICAgIEFTU0VSVF9FUSgzVSwgZnJhbWUucmVuZGVyUGFzc2Vz
LnNpemUoKSk7CisKKyAgICAgICAgRVhQRUNUX0VRKDJVLCBmcmFtZS5yZW5kZXJQYXNzZXNbMF0t
PnF1YWRMaXN0KCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKDNVLCBmcmFtZS5yZW5kZXJQ
YXNzZXNbMV0tPnF1YWRMaXN0KCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKDJVLCBmcmFt
ZS5yZW5kZXJQYXNzZXNbMl0tPnF1YWRMaXN0KCkuc2l6ZSgpKTsKKworICAgICAgICBteUhvc3RJ
bXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKKyAgICAgICAgbXlIb3N0SW1wbC0+ZGlkRHJhd0FsbExh
eWVycyhmcmFtZSk7CisgICAgfQorCisgICAgLy8gIlVub2NjbHVkZSIgc3VyZmFjZSBTMSBhbmQg
cmVwZWF0IGRyYXcuCisgICAgLy8gTXVzdCByZW1vdmUgUzIncyByZW5kZXIgcGFzcyBzaW5jZSBp
dCdzIGNhY2hlZDsKKyAgICAvLyBNdXN0IGtlZXAgUzEgcXVhZHMgYmVjYXVzZSB0ZXh0dXJlIGNv
bnRhaW5lZCBleHRlcm5hbCBvY2NsdXNpb24uCisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgg
dHJhbnNmb3JtID0gbGF5ZXJTMlB0ci0+dHJhbnNmb3JtKCk7CisgICAgdHJhbnNmb3JtLnRyYW5z
bGF0ZSgxNTAsIDE1MCk7CisgICAgbGF5ZXJTMlB0ci0+c2V0VHJhbnNmb3JtKHRyYW5zZm9ybSk7
CisgICAgeworICAgICAgICBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEgZnJhbWU7Cisg
ICAgICAgIEVYUEVDVF9UUlVFKG15SG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKKwor
ICAgICAgICAvLyBNdXN0IHJlY2VpdmUgMiByZW5kZXIgcGFzc2VzLgorICAgICAgICAvLyBGb3Ig
Um9vdCwgdGhlcmUgYXJlIDIgcXVhZHMKKyAgICAgICAgLy8gRm9yIFMxLCB0aGUgbnVtYmVyIG9m
IHF1YWRzIGRlcGVuZHMgb24gd2hhdCBnb3QgdW5vY2NsdWRlZCwgc28gbm90IGFzc2VydGVkIGJl
eW9uZCBiZWluZyBwb3NpdGl2ZS4KKyAgICAgICAgLy8gRm9yIFMyLCB0aGVyZSBpcyBubyByZW5k
ZXIgcGFzcworICAgICAgICBBU1NFUlRfRVEoMlUsIGZyYW1lLnJlbmRlclBhc3Nlcy5zaXplKCkp
OworCisgICAgICAgIEVYUEVDVF9HVChmcmFtZS5yZW5kZXJQYXNzZXNbMF0tPnF1YWRMaXN0KCku
c2l6ZSgpLCAwVSk7CisgICAgICAgIEVYUEVDVF9FUSgyVSwgZnJhbWUucmVuZGVyUGFzc2VzWzFd
LT5xdWFkTGlzdCgpLnNpemUoKSk7CisKKyAgICAgICAgbXlIb3N0SW1wbC0+ZHJhd0xheWVycyhm
cmFtZSk7CisgICAgICAgIG15SG9zdEltcGwtPmRpZERyYXdBbGxMYXllcnMoZnJhbWUpOworICAg
IH0KKworICAgIC8vICJSZS1vY2NsdWRlIiBzdXJmYWNlIFMxIGFuZCByZXBlYXQgZHJhdy4KKyAg
ICAvLyBNdXN0IHJlbW92ZSBTMSdzIHJlbmRlciBwYXNzIHNpbmNlIGl0IGlzIG5vdyBhdmFpbGFi
bGUgaW4gZnVsbC4KKyAgICAvLyBTMiBoYXMgbm8gY2hhbmdlIHNvIG11c3QgYWxzbyBiZSByZW1v
dmVkLgorICAgIC8vIEZJWE1FOiBEdWUgdG8gcGFydGlhbCBzd2FwLCB0aGUgc2Npc3NvciByZWN0
IHdpbGwgY2F1c2UgT2NjbHVzaW9uVHJhY2tlcgorICAgIC8vIHRvIHRoaW5rIHRoZXJlIGlzIGFu
IGV4dGVybmFsIG9jY2x1c2lvbiBpbiB0aGUgcHJldmlvdXMgc3RlcC4gVGhlcmVmb3JlLAorICAg
IC8vIFMxJ3MgcmVuZGVyIHBhc3Mgd2lsbCBub3QgYmUgcmVtb3ZlZC4KKyAgICB0cmFuc2Zvcm0g
PSBsYXllclMyUHRyLT50cmFuc2Zvcm0oKTsKKyAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKC0xNSwg
LTE1KTsKKyAgICBsYXllclMyUHRyLT5zZXRUcmFuc2Zvcm0odHJhbnNmb3JtKTsKKyAgICB7Cisg
ICAgICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSBmcmFtZTsKKyAgICAgICAgRVhQ
RUNUX1RSVUUobXlIb3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworCisgICAgICAgIC8v
IDIgUmVuZGVyIHBhc3NlcyAtIFJvb3QgYW5kIFMxLgorICAgICAgICBBU1NFUlRfRVEoMlUsIGZy
YW1lLnJlbmRlclBhc3Nlcy5zaXplKCkpOworCisgICAgICAgIC8vIFJlbmRlciBwYXNzIGZvciBT
MSBjb250YWlucyBubyBxdWFkcyBhcyB0aGUgc2Npc3NvciByZWN0IGlzIG5vdyBvY2NsdWRlZC4K
KyAgICAgICAgRVhQRUNUX0VRKDBVLCBmcmFtZS5yZW5kZXJQYXNzZXNbMF0tPnF1YWRMaXN0KCku
c2l6ZSgpKTsKKworICAgICAgICAvLyBSb290IGNvbnRhaW5zIFMyIG9ubHksIGFzIFMxIGRvZXNu
J3QgaGF2ZSBhbnkgZGFtYWdlLgorICAgICAgICBFWFBFQ1RfRVEoMVUsIGZyYW1lLnJlbmRlclBh
c3Nlc1sxXS0+cXVhZExpc3QoKS5zaXplKCkpOworCisgICAgICAgIG15SG9zdEltcGwtPmRyYXdM
YXllcnMoZnJhbWUpOworICAgICAgICBteUhvc3RJbXBsLT5kaWREcmF3QWxsTGF5ZXJzKGZyYW1l
KTsKKyAgICB9CisKK30KKwogVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBzdXJmYWNl
VGV4dHVyZUNhY2hpbmcpCiB7CiAgICAgQ0NTZXR0aW5nczo6c2V0UGFydGlhbFN3YXBFbmFibGVk
KHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRD
dWxsZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVy
VGVzdC5jcHAKaW5kZXggZTFkOWZiMzY3N2Y2MDU3MWJlMGJiZmQzODQyYjMxMzA5MDc3NGYwZC4u
ZjU4NzY4ZWI2OTg4MTUxN2IzNjViYzJkNzJkYzFkOTA1NDU1NDhhNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwCkBAIC05Nyw3ICs5
Nyw3IEBAIHN0YXRpYyBQYXNzT3duUHRyPENDVGlsZWRMYXllckltcGw+IG1ha2VMYXllcihDQ1Rp
bGVkTGF5ZXJJbXBsKiBwYXJlbnQsIGNvbnN0IFdlCiBzdGF0aWMgdm9pZCBhcHBlbmRRdWFkcyhD
Q1F1YWRMaXN0JiBxdWFkTGlzdCwgVmVjdG9yPE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gPiYg
c2hhcmVkU3RhdGVMaXN0LCBDQ1RpbGVkTGF5ZXJJbXBsKiBsYXllciwgQ0NMYXllckl0ZXJhdG9y
VHlwZSYgaXQsIENDT2NjbHVzaW9uVHJhY2tlckltcGwmIG9jY2x1c2lvblRyYWNrZXIpCiB7CiAg
ICAgb2NjbHVzaW9uVHJhY2tlci5lbnRlckxheWVyKGl0KTsKLSAgICBDQ1F1YWRDdWxsZXIgcXVh
ZEN1bGxlcihxdWFkTGlzdCwgbGF5ZXIsICZvY2NsdXNpb25UcmFja2VyLCBmYWxzZSk7CisgICAg
Q0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXIocXVhZExpc3QsIGxheWVyLCAmb2NjbHVzaW9uVHJhY2tl
ciwgZmFsc2UsIGZhbHNlKTsKICAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFF1
YWRTdGF0ZSA9IGxheWVyLT5jcmVhdGVTaGFyZWRRdWFkU3RhdGUoKTsKICAgICBib29sIGhhZE1p
c3NpbmdUaWxlcyA9IGZhbHNlOwogICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBz
aGFyZWRRdWFkU3RhdGUuZ2V0KCksIGhhZE1pc3NpbmdUaWxlcyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL01vY2tDQ1F1YWRDdWxsZXIuaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvTW9ja0NDUXVhZEN1bGxlci5oCmluZGV4IDM4NTUwN2UyYzdjNDFk
MmE1OTFmYmUzMzZkMDg3MjI1MjU5MjljMmMuLjE1Y2IxOWQ2YzgyNmE1NmFhMTBiZDRmZjJmNjhh
MDNhMDVmMTBlNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTW9j
a0NDUXVhZEN1bGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTW9ja0ND
UXVhZEN1bGxlci5oCkBAIC0yNywyMSArMjcsMTkgQEAKIAogI2luY2x1ZGUgIkludFJlY3QuaCIK
ICNpbmNsdWRlICJjYy9DQ0RyYXdRdWFkLmgiCi0jaW5jbHVkZSAiY2MvQ0NRdWFkQ3VsbGVyLmgi
CisjaW5jbHVkZSAiY2MvQ0NRdWFkU2luay5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgTW9ja0NDUXVhZEN1bGxlciA6IHB1Ymxp
YyBXZWJDb3JlOjpDQ1F1YWRDdWxsZXIgeworY2xhc3MgTW9ja0NDUXVhZEN1bGxlciA6IHB1Ymxp
YyBXZWJDb3JlOjpDQ1F1YWRTaW5rIHsKIHB1YmxpYzoKICAgICBNb2NrQ0NRdWFkQ3VsbGVyKCkK
LSAgICAgICAgOiBDQ1F1YWRDdWxsZXIobV9xdWFkTGlzdFN0b3JhZ2UsIDAsIDAsIGZhbHNlKQot
ICAgICAgICAsIG1fYWN0aXZlUXVhZExpc3QobV9xdWFkTGlzdFN0b3JhZ2UpCisgICAgICAgIDog
bV9hY3RpdmVRdWFkTGlzdChtX3F1YWRMaXN0U3RvcmFnZSkKICAgICB7IH0KIAogICAgIGV4cGxp
Y2l0IE1vY2tDQ1F1YWRDdWxsZXIoQ0NRdWFkTGlzdCYgZXh0ZXJuYWxRdWFkTGlzdCkKLSAgICAg
ICAgOiBDQ1F1YWRDdWxsZXIoZXh0ZXJuYWxRdWFkTGlzdCwgMCwgMCwgZmFsc2UpCi0gICAgICAg
ICwgbV9hY3RpdmVRdWFkTGlzdChleHRlcm5hbFF1YWRMaXN0KQorICAgICAgICA6IG1fYWN0aXZl
UXVhZExpc3QoZXh0ZXJuYWxRdWFkTGlzdCkKICAgICB7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBh
cHBlbmQoV1RGOjpQYXNzT3duUHRyPFdlYkNvcmU6OkNDRHJhd1F1YWQ+IG5ld1F1YWQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153294</attachid>
            <date>2012-07-19 10:24:10 -0700</date>
            <delta_ts>2012-07-19 13:00:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91537-20120719132409.patch</filename>
            <type>text/plain</type>
            <size>78914</size>
            <attacher>zlieber</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWM5YjNkMDIzYjhiMTRl
YzkyNjQ2ZjhlYzJhYTViOGRmNGUwYjNkZi4uNzA3YjFiOGZhYzJiYzM5ZWU5MmI0YzA0MDFmZjE3
YmJjNTVkNzNkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMiBAQAorMjAxMi0wNy0xNyAgWmVl
diBMaWViZXIgIDx6bGllYmVyQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIFRl
eHR1cmVzIGRyYXduIGR1cmluZyBvY2NsdXNpb24gYXJlIGluY29ycmVjdGx5IHJlLXVzZWQgd2hl
biB1bm9jY2x1ZGVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTE1MzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBEZXRlY3RpbmcgaWYgYW55IGV4dGVybmFsIG9jY2x1c2lvbiBvY2N1cnMgd2hlbiBkcmF3
aW5nIGEKKyAgICAgICAgdGV4dHVyZS4gSWYgZXh0ZXJuYWwgb2NjbHVzaW9uIGhhcHBlbnMsIHRo
ZSB0ZXh0dXJlIGlzIG1hcmtlZCBhcworICAgICAgICAiaW5jb21wbGV0ZSIgaW4gTGF5ZXJSZW5k
ZXJlckNocm9taXVtLCBhbmQgaXMgbm90IGJlaW5nIGNvbnNpZGVyZWQKKyAgICAgICAgZm9yIHJl
LXVzZS4KKworICAgICAgICBNaW5vciByZWZhY3RvcmluZyBvZiBDQ1F1YWRDdWxsZXIgLSBleHRy
YWN0ZWQgaW50ZXJmYWNlCisgICAgICAgIChDQ1F1YWRTaW5rKSBhbmQgdW5pdGVkIGFwcGVuZCgp
IGFuZCBhcHBlbmRTdXJmYWNlKCkgbWV0aG9kcy4KKworICAgICAgICBBZGRlZCB1bml0IHRlc3Rz
IHRvIHZlcmlmeSB0aGlzIGZpeDsgYWxzbyBhZGRlZCB0ZXN0IHRvIHRyeQorICAgICAgICBjbGlw
cGluZyBpbnN0ZWFkIG9mIG9jY2x1c2lvbi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChMYXllclJlbmRl
cmVyQ2hyb21pdW06OkNhY2hlZFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpDYWNoZWRUZXh0dXJlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpDYWNoZWRUZXh0dXJlOjp+Q2FjaGVkVGV4dHVyZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OkNhY2hlZFRleHR1cmU6Omlz
Q29tcGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpDYWNo
ZWRUZXh0dXJlOjpzZXRJc0NvbXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6Q2FjaGVkVGV4dHVyZTo6Q2FjaGVkVGV4dHVyZSk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZGVjaWRlUmVu
ZGVyUGFzc0FsbG9jYXRpb25zRm9yRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpoYXZlQ2FjaGVkUmVzb3VyY2VzRm9yUmVuZGVyUGFzc0lkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclBhc3NRdWFkKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21p
dW0uaDoKKyAgICAgICAgKExheWVyUmVuZGVyZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NJT1N1cmZhY2VMYXllckltcGw6OmFwcGVuZFF1YWRzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVySW1wbC5oOgor
ICAgICAgICAoQ0NJT1N1cmZhY2VMYXllckltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJJbXBsOjphcHBlbmREZWJ1Z0JvcmRlclF1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyk6CisgICAgICAgIChDQ0xheWVy
SW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNp
b25UcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ojo6dW5vY2NsdWRlZENvbnRlbnRSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ojo6dW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250
ZW50UmVjdCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuaDoKKyAgICAgICAgKENDT2NjbHVzaW9u
VHJhY2tlckJhc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UXVhZEN1bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1F1YWRDdWxsZXI6OkNDUXVhZEN1
bGxlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ1F1YWRDdWxsZXI6OmFwcGVuZCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmg6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKENDUXVhZEN1bGxlcik6CisgICAgICAgIChXZWJDb3JlOjpD
Q1F1YWRDdWxsZXI6On5DQ1F1YWRDdWxsZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NRdWFkQ3Vs
bGVyOjpoYXNFeHRlcm5hbE9jY2x1c2lvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NRdWFkU2luay5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoQ0NRdWFkU2luayk6CisgICAgICAgIChXZWJDb3JlOjpDQ1F1YWRT
aW5rOjp+Q0NRdWFkU2luayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NSZW5kZXJQYXNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzczo6Q0NS
ZW5kZXJQYXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzczo6YXBwZW5kUXVhZHNG
b3JMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3M6OmFwcGVuZFF1YWRzRm9y
UmVuZGVyU3VyZmFjZUxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRl
clBhc3NEcmF3UXVhZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzc0Ry
YXdRdWFkOjpDQ1JlbmRlclBhc3NEcmF3UXVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuaDoKKyAgICAgICAgKENDUmVuZGVy
UGFzc0RyYXdRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzc0RyYXdRdWFkOjpo
YXNFeHRlcm5hbE9jY2x1c2lvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3Vy
ZmFjZTo6Q0NSZW5kZXJTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFj
ZTo6YXBwZW5kUXVhZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUmVuZGVyU3VyZmFjZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1JlbmRlclN1cmZhY2U6OnNldEhhc0V4dGVybmFsT2NjbHVzaW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6aGFzRXh0ZXJuYWxPY2NsdXNpb24pOgorICAgICAgICAo
Q0NSZW5kZXJTdXJmYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1Njcm9sbGJhckxheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1Njcm9sbGJh
ckxheWVySW1wbDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmg6CisgICAgICAgIChDQ1Njcm9sbGJhckxh
eWVySW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xp
ZENvbG9yTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU29saWRDb2xvckxheWVy
SW1wbDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU29saWRDb2xvckxheWVySW1wbC5oOgorICAgICAgICAoQ0NTb2xpZENvbG9yTGF5ZXJJ
bXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVM
YXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlTGF5ZXJJbXBsOjphcHBl
bmRRdWFkcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0
dXJlTGF5ZXJJbXBsLmg6CisgICAgICAgIChDQ1RleHR1cmVMYXllckltcGwpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NUaWxlZExheWVySW1wbDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaDoKKyAgICAg
ICAgKENDVGlsZWRMYXllckltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xh
eWVySW1wbDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVmlkZW9MYXllckltcGwuaDoKKyAgICAgICAgKENDVmlkZW9MYXllckltcGwpOgor
CiAyMDEyLTA3LTE5ICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgV2ViIEluc3BlY3RvcjogQ1BVIGJhcnMgYXJlIG5vdCBjbGVhcmVkIGFsb25nIHdpdGgg
dGhlIHJlc3Qgb2YgdGhlIHRpbWVsaW5lIHBhbmVsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmlu
ZGV4IGRmNDk3MTlkOWRlMmUyMzFiNjBhYjY0NTQ0ODYyN2JkMGUyMzg3NGEuLjQyYWEyN2IyNDRh
YzFlMGZjNGE1MjMxMDM4NDJhZGViMGEyMDFlNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDctMTcgIFplZXYgTGllYmVyICA8emxpZWJlckBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBUZXh0dXJlcyBkcmF3biBkdXJpbmcgb2Nj
bHVzaW9uIGFyZSBpbmNvcnJlY3RseSByZS11c2VkIHdoZW4gdW5vY2NsdWRlZC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxNTM3CisKKyAgICAgICAg
QWRkZWQgdW5pdCB0ZXN0cyB0byB0ZXN0IHRleHR1cmUgY2FjaGluZyB3aXRoIGNsaXBwaW5nIGFu
ZAorICAgICAgICBvY2NsdXNpb24uIFJlbW92ZWQgc29tZSBtaW5vciBjb2RlIGR1cGxpY2F0aW9u
IHdoZW4gaW5pdGlhbGl6aW5nCisgICAgICAgIGxheWVycyBmb3IgdmFyaW91cyBzY2VuYXJpb3Mu
CisKKyAgICAgICAgTW9ja0NDUXVhZEN1bGxlciBjYW4gbm93IGltcGxlbWVudCBDQ1F1YWRTaW5r
LgorCisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwOgorICAgICAg
ICAqIHRlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL01vY2tDQ1F1
YWRDdWxsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDQ1F1YWRDdWxsZXI6Ok1vY2tDQ1F1
YWRDdWxsZXIpOgorCiAyMDEyLTA3LTE5ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUm9sbCBvdXQgcjEyMTYxMCBhbmQgcjEyMjQ4NyB3aGljaCBtYXkgaGF2
ZSBiZWVuIGNhdXNpbmcgZmxha3kgY3Jhc2hlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJv
bWl1bS5jcHAKaW5kZXggNTdlYTk4MTJhNTYzOTQ3ZWY2MzE0OTNiMjdkNjMxOWU3MjExOTE0NS4u
ZTU2MzdhMGZjYTcwNWRiZDFkMWYwNzNhYWQ4MDNhMjZmNzZiZDE4NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC0xMzMsNiArMTMzLDI2IEBAIHByb3RlY3RlZDoK
IAogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKK2NsYXNzIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6Q2FjaGVkVGV4dHVyZSA6IHB1YmxpYyBDQ1Njb3BlZFRleHR1cmUgeworICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKENhY2hlZFRleHR1cmUpOworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3du
UHRyPENhY2hlZFRleHR1cmU+IGNyZWF0ZShDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJv
dmlkZXIpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBDYWNoZWRUZXh0dXJlKHJlc291cmNlUHJvdmlk
ZXIpKTsgfQorICAgIHZpcnR1YWwgfkNhY2hlZFRleHR1cmUoKSB7IH0KKworICAgIGJvb2wgaXND
b21wbGV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNDb21wbGV0ZTsgfQorICAgIHZvaWQgc2V0SXND
b21wbGV0ZShib29sIGlzQ29tcGxldGUpIHsgbV9pc0NvbXBsZXRlID0gaXNDb21wbGV0ZTsgfQor
Citwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgQ2FjaGVkVGV4dHVyZShDQ1Jlc291cmNlUHJvdmlk
ZXIqIHJlc291cmNlUHJvdmlkZXIpCisgICAgICAgIDogQ0NTY29wZWRUZXh0dXJlKHJlc291cmNl
UHJvdmlkZXIpCisgICAgICAgICwgbV9pc0NvbXBsZXRlKGZhbHNlKQorICAgIHsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgYm9vbCBtX2lzQ29tcGxldGU7Cit9OworCiBQYXNzT3duUHRyPExheWVy
UmVuZGVyZXJDaHJvbWl1bT4gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUoQ0NSZW5kZXJl
ckNsaWVudCogY2xpZW50LCBDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIsIFRl
eHR1cmVVcGxvYWRlck9wdGlvbiB0ZXh0dXJlVXBsb2FkZXJTZXR0aW5nKQogewogICAgIE93blB0
cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IGxheWVyUmVuZGVyZXIoYWRvcHRQdHIobmV3IExheWVy
UmVuZGVyZXJDaHJvbWl1bShjbGllbnQsIHJlc291cmNlUHJvdmlkZXIsIHRleHR1cmVVcGxvYWRl
clNldHRpbmcpKSk7CkBAIC0zMTksNyArMzM5LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21p
dW06OmRlY2lkZVJlbmRlclBhc3NBbGxvY2F0aW9uc0ZvckZyYW1lKGNvbnN0IENDUmVuZGVyUGEK
ICAgICAgICAgcGFzc2VzSW5GcmFtZS5zZXQocmVuZGVyUGFzc2VzSW5EcmF3T3JkZXJbaV0tPmlk
KCksIHJlbmRlclBhc3Nlc0luRHJhd09yZGVyW2ldKTsKIAogICAgIFZlY3RvcjxpbnQ+IHBhc3Nl
c1RvRGVsZXRlOwotICAgIEhhc2hNYXA8aW50LCBPd25QdHI8Q0NTY29wZWRUZXh0dXJlPiA+Ojpj
b25zdF9pdGVyYXRvciBwYXNzSXRlcmF0b3I7CisgICAgSGFzaE1hcDxpbnQsIE93blB0cjxDYWNo
ZWRUZXh0dXJlPiA+Ojpjb25zdF9pdGVyYXRvciBwYXNzSXRlcmF0b3I7CiAgICAgZm9yIChwYXNz
SXRlcmF0b3IgPSBtX3JlbmRlclBhc3NUZXh0dXJlcy5iZWdpbigpOyBwYXNzSXRlcmF0b3IgIT0g
bV9yZW5kZXJQYXNzVGV4dHVyZXMuZW5kKCk7ICsrcGFzc0l0ZXJhdG9yKSB7CiAgICAgICAgIGNv
bnN0IENDUmVuZGVyUGFzcyogcmVuZGVyUGFzc0luRnJhbWUgPSBwYXNzZXNJbkZyYW1lLmdldChw
YXNzSXRlcmF0b3ItPmZpcnN0KTsKICAgICAgICAgaWYgKCFyZW5kZXJQYXNzSW5GcmFtZSkgewpA
QCAtMzI5LDcgKzM0OSw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkZWNpZGVSZW5k
ZXJQYXNzQWxsb2NhdGlvbnNGb3JGcmFtZShjb25zdCBDQ1JlbmRlclBhCiAKICAgICAgICAgY29u
c3QgSW50U2l6ZSYgcmVxdWlyZWRTaXplID0gcmVuZGVyUGFzc1RleHR1cmVTaXplKHJlbmRlclBh
c3NJbkZyYW1lKTsKICAgICAgICAgR0MzRGVudW0gcmVxdWlyZWRGb3JtYXQgPSByZW5kZXJQYXNz
VGV4dHVyZUZvcm1hdChyZW5kZXJQYXNzSW5GcmFtZSk7Ci0gICAgICAgIENDU2NvcGVkVGV4dHVy
ZSogdGV4dHVyZSA9IHBhc3NJdGVyYXRvci0+c2Vjb25kLmdldCgpOworICAgICAgICBDYWNoZWRU
ZXh0dXJlKiB0ZXh0dXJlID0gcGFzc0l0ZXJhdG9yLT5zZWNvbmQuZ2V0KCk7CiAgICAgICAgIEFT
U0VSVCh0ZXh0dXJlKTsKIAogICAgICAgICBpZiAodGV4dHVyZS0+aWQoKSAmJiAodGV4dHVyZS0+
c2l6ZSgpICE9IHJlcXVpcmVkU2l6ZSB8fCB0ZXh0dXJlLT5mb3JtYXQoKSAhPSByZXF1aXJlZEZv
cm1hdCkpCkBAIC0zNDIsNyArMzYyLDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRl
Y2lkZVJlbmRlclBhc3NBbGxvY2F0aW9uc0ZvckZyYW1lKGNvbnN0IENDUmVuZGVyUGEKIAogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVuZGVyUGFzc2VzSW5EcmF3T3JkZXIuc2l6ZSgpOyAr
K2kpIHsKICAgICAgICAgaWYgKCFtX3JlbmRlclBhc3NUZXh0dXJlcy5jb250YWlucyhyZW5kZXJQ
YXNzZXNJbkRyYXdPcmRlcltpXS0+aWQoKSkpIHsKLSAgICAgICAgICAgIE93blB0cjxDQ1Njb3Bl
ZFRleHR1cmU+IHRleHR1cmUgPSBDQ1Njb3BlZFRleHR1cmU6OmNyZWF0ZShtX3Jlc291cmNlUHJv
dmlkZXIpOworICAgICAgICAgICAgT3duUHRyPENhY2hlZFRleHR1cmU+IHRleHR1cmUgPSBDYWNo
ZWRUZXh0dXJlOjpjcmVhdGUobV9yZXNvdXJjZVByb3ZpZGVyKTsKICAgICAgICAgICAgIG1fcmVu
ZGVyUGFzc1RleHR1cmVzLnNldChyZW5kZXJQYXNzZXNJbkRyYXdPcmRlcltpXS0+aWQoKSwgdGV4
dHVyZS5yZWxlYXNlKCkpOwogICAgICAgICB9CiAgICAgfQpAQCAtMzUwLDggKzM3MCw4IEBAIHZv
aWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkZWNpZGVSZW5kZXJQYXNzQWxsb2NhdGlvbnNGb3JG
cmFtZShjb25zdCBDQ1JlbmRlclBhCiAKIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpoYXZl
Q2FjaGVkUmVzb3VyY2VzRm9yUmVuZGVyUGFzc0lkKGludCBpZCkgY29uc3QKIHsKLSAgICBDQ1Nj
b3BlZFRleHR1cmUqIHRleHR1cmUgPSBtX3JlbmRlclBhc3NUZXh0dXJlcy5nZXQoaWQpOwotICAg
IHJldHVybiB0ZXh0dXJlICYmIHRleHR1cmUtPmlkKCk7CisgICAgQ2FjaGVkVGV4dHVyZSogdGV4
dHVyZSA9IG1fcmVuZGVyUGFzc1RleHR1cmVzLmdldChpZCk7CisgICAgcmV0dXJuIHRleHR1cmUg
JiYgdGV4dHVyZS0+aWQoKSAmJiB0ZXh0dXJlLT5pc0NvbXBsZXRlKCk7CiB9CiAKIHZvaWQgTGF5
ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3RnJhbWUoY29uc3QgQ0NSZW5kZXJQYXNzTGlzdCYgcmVu
ZGVyUGFzc2VzLCBjb25zdCBGbG9hdFJlY3QmIHJvb3RTY2lzc29yUmVjdCkKQEAgLTYxMCw3ICs2
MzAsNyBAQCBQYXNzT3duUHRyPENDU2NvcGVkVGV4dHVyZT4gTGF5ZXJSZW5kZXJlckNocm9taXVt
OjpkcmF3QmFja2dyb3VuZEZpbHRlcnMoY29uc3QgQwogCiB2b2lkIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6ZHJhd1JlbmRlclBhc3NRdWFkKGNvbnN0IENDUmVuZGVyUGFzc0RyYXdRdWFkKiBxdWFk
KQogewotICAgIENDU2NvcGVkVGV4dHVyZSogY29udGVudHNUZXh0dXJlID0gbV9yZW5kZXJQYXNz
VGV4dHVyZXMuZ2V0KHF1YWQtPnJlbmRlclBhc3NJZCgpKTsKKyAgICBDYWNoZWRUZXh0dXJlKiBj
b250ZW50c1RleHR1cmUgPSBtX3JlbmRlclBhc3NUZXh0dXJlcy5nZXQocXVhZC0+cmVuZGVyUGFz
c0lkKCkpOwogICAgIGlmICghY29udGVudHNUZXh0dXJlIHx8ICFjb250ZW50c1RleHR1cmUtPmlk
KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTQwOSw5ICsxNDI5LDExIEBAIGJvb2wgTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjp1c2VSZW5kZXJQYXNzKGNvbnN0IENDUmVuZGVyUGFzcyogcmVuZGVy
UGFzcykKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgQ0NTY29wZWRUZXh0dXJl
KiB0ZXh0dXJlID0gbV9yZW5kZXJQYXNzVGV4dHVyZXMuZ2V0KHJlbmRlclBhc3MtPmlkKCkpOwor
ICAgIENhY2hlZFRleHR1cmUqIHRleHR1cmUgPSBtX3JlbmRlclBhc3NUZXh0dXJlcy5nZXQocmVu
ZGVyUGFzcy0+aWQoKSk7CiAgICAgQVNTRVJUKHRleHR1cmUpOwogCisgICAgdGV4dHVyZS0+c2V0
SXNDb21wbGV0ZSghcmVuZGVyUGFzcy0+aGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJm
YWNlKCkpOworCiAgICAgaWYgKCF0ZXh0dXJlLT5pZCgpICYmICF0ZXh0dXJlLT5hbGxvY2F0ZShD
Q1JlbmRlcmVyOjpJbXBsUG9vbCwgcmVuZGVyUGFzc1RleHR1cmVTaXplKHJlbmRlclBhc3MpLCBy
ZW5kZXJQYXNzVGV4dHVyZUZvcm1hdChyZW5kZXJQYXNzKSwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpU
ZXh0dXJlVXNhZ2VGcmFtZWJ1ZmZlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAppbmRleCBjZDViMmNjMmIyOTIxNWNlMWVmNDYyNGM0
ZWIxY2Y0ODQ4YmM5Mjg3Li4xOThhZWY5YTM0MzkxNDIyY2Y0YjRmZTI2NDE4ZDc2ZGM0NTFhMDUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclJlbmRlcmVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaApAQCAtMTgyLDYgKzE4Miw4IEBA
IHByaXZhdGU6CiAgICAgT3duUHRyPEdlb21ldHJ5QmluZGluZz4gbV9zaGFyZWRHZW9tZXRyeTsK
ICAgICBGbG9hdFF1YWQgbV9zaGFyZWRHZW9tZXRyeVF1YWQ7CiAKKyAgICBjbGFzcyBDYWNoZWRU
ZXh0dXJlOworCiAgICAgLy8gVGhpcyBibG9jayBvZiBiaW5kaW5ncyBkZWZpbmVzIGFsbCBvZiB0
aGUgcHJvZ3JhbXMgdXNlZCBieSB0aGUgY29tcG9zaXRvciBpdHNlbGYuCiAKICAgICAvLyBUaWxl
ZCBsYXllciBzaGFkZXJzLgpAQCAtMjY2LDcgKzI2OCw3IEBAIHByaXZhdGU6CiAgICAgT3duUHRy
PEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcj4gbV90ZXh0dXJlQ29waWVyOwogICAgIE93blB0cjxU
ZXh0dXJlVXBsb2FkZXI+IG1fdGV4dHVyZVVwbG9hZGVyOwogCi0gICAgSGFzaE1hcDxpbnQsIE93
blB0cjxDQ1Njb3BlZFRleHR1cmU+ID4gbV9yZW5kZXJQYXNzVGV4dHVyZXM7CisgICAgSGFzaE1h
cDxpbnQsIE93blB0cjxDYWNoZWRUZXh0dXJlPiA+IG1fcmVuZGVyUGFzc1RleHR1cmVzOwogCiAg
ICAgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFj
ZUxheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0lPU3VyZmFjZUxheWVySW1wbC5jcHAKaW5kZXggNmRhYzJlN2E3NzI5M2FhODY4NTk0
NzEyZjBiMTM4MzdhOWUyYzczYi4uNDczZGUyNTliOGVhZWFiZGVkOWQ2ZWJlZjk3YjdjNDI2NWQx
Y2JkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmNwcApAQCAtMzUs
NyArMzUsNyBAQAogI2luY2x1ZGUgImNjL0NDR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAi
Y2MvQ0NJT1N1cmZhY2VEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdElt
cGwuaCIKLSNpbmNsdWRlICJjYy9DQ1F1YWRDdWxsZXIuaCIKKyNpbmNsdWRlICJjYy9DQ1F1YWRT
aW5rLmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBDQ0lPU3VyZmFjZUxheWVySW1w
bDo6d2lsbERyYXcoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQogICAgIH0K
IH0KIAotdm9pZCBDQ0lPU3VyZmFjZUxheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVy
JiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9v
bCYpCit2b2lkIENDSU9TdXJmYWNlTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBx
dWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCYp
CiB7CiAgICAgSW50UmVjdCBxdWFkUmVjdChJbnRQb2ludCgpLCBjb250ZW50Qm91bmRzKCkpOwog
ICAgIHF1YWRMaXN0LmFwcGVuZChDQ0lPU3VyZmFjZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVh
ZFN0YXRlLCBxdWFkUmVjdCwgbV9pb1N1cmZhY2VTaXplLCBtX2lvU3VyZmFjZVRleHR1cmVJZCwg
Q0NJT1N1cmZhY2VEcmF3UXVhZDo6RmxpcHBlZCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNl
TGF5ZXJJbXBsLmgKaW5kZXggNDIzNjg4MDljMTM0MzZjMDZhNGI3MjA0YWVkMTRiY2JmZTlhYzQ0
NS4uMDE4ODA0ZTE4MmNlYjAxNTAwY2JlNzU4NmUxNGUxNmZmZGUxMzkxYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VM
YXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0lPU3VyZmFjZUxheWVySW1wbC5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgc2V0SU9TdXJmYWNlUHJvcGVydGllcyh1bnNpZ25lZCBpb1N1cmZhY2VJZCwgY29u
c3QgSW50U2l6ZSYpOwogCi0gICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZEN1bGxl
ciYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYsIGNvbnN0IEND
U2hhcmVkUXVhZFN0YXRlKiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVSUklERTsKIAogICAg
IHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkTG9zZUNvbnRleHQoKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJ
bXBsLmNwcAppbmRleCBkYjI0YzA3ZTQ1YTljZmViMTc4NDhjMWRjYTM1YTE2ZTdjNDU1OWFkLi43
MTdkOTZkMTAxNmY1ZjY3MzY5NzIxNzYyNjM3NDlmMjkwZDNiMTMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
ckltcGwuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSAiY2MvQ0NMYXllclNvcnRlci5o
IgogI2luY2x1ZGUgImNjL0NDTWF0aFV0aWwuaCIKICNpbmNsdWRlICJjYy9DQ1Byb3h5LmgiCi0j
aW5jbHVkZSAiY2MvQ0NRdWFkQ3VsbGVyLmgiCisjaW5jbHVkZSAiY2MvQ0NRdWFkU2luay5oIgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiB1c2luZyBXZWJLaXQ6OldlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4OwpAQCAtMTc0LDcgKzE3NCw3IEBAIHZvaWQgQ0NMYXllckltcGw6OmRp
ZERyYXcoQ0NSZXNvdXJjZVByb3ZpZGVyKikKICNlbmRpZgogfQogCi12b2lkIENDTGF5ZXJJbXBs
OjphcHBlbmREZWJ1Z0JvcmRlclF1YWQoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NT
aGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSkgY29uc3QKK3ZvaWQgQ0NMYXllckltcGw6
OmFwcGVuZERlYnVnQm9yZGVyUXVhZChDQ1F1YWRTaW5rJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFy
ZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSkgY29uc3QKIHsKICAgICBpZiAoIWhhc0RlYnVn
Qm9yZGVycygpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaAppbmRleCA3MWU5
M2M1NzQ1ODA2NmE0Nzc1ODQzNGU1ZDg5OGI0MmZmNjQ2MzNkLi42MTk2YzJjNGQ1MDlmOGNhMTY3
NGQzMjZjMWIyYzllNWRhNjU1MzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKQEAgLTQ3LDggKzQ3
LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQ0xheWVyU29ydGVyOwogY2xhc3Mg
Q0NMYXllclRyZWVIb3N0SW1wbDsKLWNsYXNzIENDUXVhZEN1bGxlcjsKIGNsYXNzIENDUmVuZGVy
ZXI7CitjbGFzcyBDQ1F1YWRTaW5rOwogY2xhc3MgTGF5ZXJDaHJvbWl1bTsKIAogY2xhc3MgQ0NM
YXllckltcGwgOiBwdWJsaWMgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJDbGllbnQgewpAQCAt
OTMsOSArOTMsOSBAQCBwdWJsaWM6CiAgICAgLy8gdGhlIGxheWVyIGlzIGRlc3Ryb3llZC4gVG8g
ZW5mb3JjZSB0aGlzLCBhbnkgY2xhc3MgdGhhdCBvdmVycmlkZXMKICAgICAvLyB3aWxsRHJhdy9k
aWREcmF3IG11c3QgY2FsbCB0aGUgYmFzZSBjbGFzcyB2ZXJzaW9uLgogICAgIHZpcnR1YWwgdm9p
ZCB3aWxsRHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqKTsKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5k
UXVhZHMoQ0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiBoYWRN
aXNzaW5nVGlsZXMpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRTaW5r
JiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBkaWREcmF3KENDUmVzb3VyY2VQcm92aWRlciopOwotICAgIHZvaWQg
YXBwZW5kRGVidWdCb3JkZXJRdWFkKENDUXVhZEN1bGxlciYsIGNvbnN0IENDU2hhcmVkUXVhZFN0
YXRlKikgY29uc3Q7CisgICAgdm9pZCBhcHBlbmREZWJ1Z0JvcmRlclF1YWQoQ0NRdWFkU2luayYs
IGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIENDUmVzb3Vy
Y2VQcm92aWRlcjo6UmVzb3VyY2VJZCBjb250ZW50c1Jlc291cmNlSWQoKSBjb25zdDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAppbmRleCA2ZTc5MTRhNzQyNDAzNzQ3
MmU5OWVkNTcwMTkwZjgwMzQ3YzY2ZDA3Li43ZjEyNDA0MzJiOTc4NjIzZjIzYTRiMjBiMDExOTVj
MDhjNTI5Y2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAt
MzI4LDExICszMjgsMTYgQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5k
ZXJQYXNzZXMoRnJhbWVEYXRhJiBmcmFtZSkKICAgICAgICAgaWYgKGl0LnJlcHJlc2VudHNDb250
cmlidXRpbmdSZW5kZXJTdXJmYWNlKCkgJiYgIWl0LT5yZW5kZXJTdXJmYWNlKCktPnNjaXNzb3JS
ZWN0KCkuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBDQ1JlbmRlclBhc3MqIGNvbnRyaWJ1dGlu
Z1JlbmRlclBhc3MgPSBzdXJmYWNlUGFzc01hcC5nZXQoaXQtPnJlbmRlclN1cmZhY2UoKSk7CiAg
ICAgICAgICAgICBwYXNzLT5hcHBlbmRRdWFkc0ZvclJlbmRlclN1cmZhY2VMYXllcigqaXQsIGNv
bnRyaWJ1dGluZ1JlbmRlclBhc3MsICZvY2NsdXNpb25UcmFja2VyKTsKLSAgICAgICAgfSBlbHNl
IGlmIChpdC5yZXByZXNlbnRzSXRzZWxmKCkgJiYgIW9jY2x1c2lvblRyYWNrZXIub2NjbHVkZWQo
Kml0LCBpdC0+dmlzaWJsZUNvbnRlbnRSZWN0KCkpICYmICFpdC0+dmlzaWJsZUNvbnRlbnRSZWN0
KCkuaXNFbXB0eSgpICYmICFpdC0+c2Npc3NvclJlY3QoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAg
ICAgIGl0LT53aWxsRHJhdyhtX3Jlc291cmNlUHJvdmlkZXIuZ2V0KCkpOwotICAgICAgICAgICAg
ZnJhbWUud2lsbERyYXdMYXllcnMuYXBwZW5kKCppdCk7Ci0KLSAgICAgICAgICAgIHBhc3MtPmFw
cGVuZFF1YWRzRm9yTGF5ZXIoKml0LCAmb2NjbHVzaW9uVHJhY2tlciwgaGFkTWlzc2luZ1RpbGVz
KTsKKyAgICAgICAgfSBlbHNlIGlmIChpdC5yZXByZXNlbnRzSXRzZWxmKCkgJiYgIWl0LT52aXNp
YmxlQ29udGVudFJlY3QoKS5pc0VtcHR5KCkgJiYgIWl0LT5zY2lzc29yUmVjdCgpLmlzRW1wdHko
KSkgeworICAgICAgICAgICAgYm9vbCBoYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZh
Y2U7CisgICAgICAgICAgICBpZiAob2NjbHVzaW9uVHJhY2tlci5vY2NsdWRlZCgqaXQsIGl0LT52
aXNpYmxlQ29udGVudFJlY3QoKSwgJmhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFj
ZSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRT
dXJmYWNlKQorICAgICAgICAgICAgICAgICAgICBwYXNzLT5zZXRIYXNPY2NsdXNpb25Gcm9tT3V0
c2lkZVRhcmdldFN1cmZhY2UoaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaXQtPndpbGxEcmF3KG1fcmVz
b3VyY2VQcm92aWRlci5nZXQoKSk7CisgICAgICAgICAgICAgICAgZnJhbWUud2lsbERyYXdMYXll
cnMuYXBwZW5kKCppdCk7CisgICAgICAgICAgICAgICAgcGFzcy0+YXBwZW5kUXVhZHNGb3JMYXll
cigqaXQsICZvY2NsdXNpb25UcmFja2VyLCBoYWRNaXNzaW5nVGlsZXMpOworICAgICAgICAgICAg
fQogICAgICAgICB9CiAKICAgICAgICAgaWYgKGhhZE1pc3NpbmdUaWxlcykgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNp
b25UcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDT2NjbHVzaW9uVHJhY2tlci5jcHAKaW5kZXggMGQwMTU5M2NmODczYmU2NzJkMzdhZTc3
OGI0OGY3Y2E3ZDE5OWUyZC4uZTE4Yjg3MzNlOTc1NGM2NmQ2MDBiODNkOGZhYjVlNzI1MDQ3N2E2
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NPY2NsdXNpb25UcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuY3BwCkBAIC0zNzcsOCArMzc3
LDExIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCB0ZXN0Q29udGVudFJlY3RPY2NsdWRlZChjb25zdCBJ
bnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgV2ViCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIExh
eWVyVHlwZSwgdHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGU+Ci1ib29sIENDT2NjbHVzaW9uVHJh
Y2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46Om9jY2x1ZGVkKGNvbnN0IExh
eWVyVHlwZSogbGF5ZXIsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KSBjb25zdAorYm9vbCBD
Q09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+OjpvY2Ns
dWRlZChjb25zdCBMYXllclR5cGUqIGxheWVyLCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwg
Ym9vbCogaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKSBjb25zdAogeworICAg
IGlmIChoYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UpCisgICAgICAgICpoYXNP
Y2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UgPSBmYWxzZTsKKwogICAgIEFTU0VSVCgh
bV9zdGFjay5pc0VtcHR5KCkpOwogICAgIGlmIChtX3N0YWNrLmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMzg3LDEwICszOTAsMTUgQEAgYm9vbCBDQ09jY2x1c2lvblRyYWNr
ZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+OjpvY2NsdWRlZChjb25zdCBMYXll
clQKIAogICAgIEFTU0VSVChsYXllci0+cmVuZGVyVGFyZ2V0KCkgPT0gbV9zdGFjay5sYXN0KCku
dGFyZ2V0KTsKIAotICAgIGlmIChsYXllclRyYW5zZm9ybXNUb1NjcmVlbktub3duKGxheWVyKSAm
JiB0ZXN0Q29udGVudFJlY3RPY2NsdWRlZChjb250ZW50UmVjdCwgY29udGVudFRvU2NyZWVuU3Bh
Y2VUcmFuc2Zvcm08TGF5ZXJUeXBlPihsYXllciksIG1fc2Npc3NvclJlY3RJblNjcmVlblNwYWNl
LCBtX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblNjcmVlbikpCi0gICAgICAgIHJldHVybiB0cnVl
OwogICAgIGlmIChsYXllclRyYW5zZm9ybXNUb1RhcmdldEtub3duKGxheWVyKSAmJiB0ZXN0Q29u
dGVudFJlY3RPY2NsdWRlZChjb250ZW50UmVjdCwgY29udGVudFRvVGFyZ2V0U3VyZmFjZVRyYW5z
Zm9ybTxMYXllclR5cGU+KGxheWVyKSwgbGF5ZXJTY2lzc29yUmVjdEluVGFyZ2V0U3VyZmFjZShs
YXllciksIG1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluVGFyZ2V0KSkKICAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICBpZiAobGF5ZXJUcmFuc2Zvcm1zVG9TY3JlZW5Lbm93bihsYXllcikgJiYg
dGVzdENvbnRlbnRSZWN0T2NjbHVkZWQoY29udGVudFJlY3QsIGNvbnRlbnRUb1NjcmVlblNwYWNl
VHJhbnNmb3JtPExheWVyVHlwZT4obGF5ZXIpLCBtX3NjaXNzb3JSZWN0SW5TY3JlZW5TcGFjZSwg
bV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5TY3JlZW4pKSB7CisgICAgICAgIGlmIChoYXNPY2Ns
dXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UpCisgICAgICAgICAgICAqaGFzT2NjbHVzaW9u
RnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC00MTcsNyArNDI1LDcgQEAgc3RhdGlj
IGlubGluZSBJbnRSZWN0IGNvbXB1dGVVbm9jY2x1ZGVkQ29udGVudFJlY3QoY29uc3QgSW50UmVj
dCYgY29udGVudFJlY3QsIGMKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBl
bmFtZSBSZW5kZXJTdXJmYWNlVHlwZT4KLUludFJlY3QgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxM
YXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6dW5vY2NsdWRlZENvbnRlbnRSZWN0KGNvbnN0
IExheWVyVHlwZSogbGF5ZXIsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KSBjb25zdAorSW50
UmVjdCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+
Ojp1bm9jY2x1ZGVkQ29udGVudFJlY3QoY29uc3QgTGF5ZXJUeXBlKiBsYXllciwgY29uc3QgSW50
UmVjdCYgY29udGVudFJlY3QsIGJvb2wqIGhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3Vy
ZmFjZSkgY29uc3QKIHsKICAgICBBU1NFUlQoIW1fc3RhY2suaXNFbXB0eSgpKTsKICAgICBpZiAo
bV9zdGFjay5pc0VtcHR5KCkpCkBAIC00MzQsMTggKzQ0MiwyMSBAQCBJbnRSZWN0IENDT2NjbHVz
aW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46OnVub2NjbHVkZWRD
b250ZW50UgogICAgIGlmIChsYXllclRyYW5zZm9ybXNUb1NjcmVlbktub3duKGxheWVyKSkKICAg
ICAgICAgdW5vY2NsdWRlZEluU2NyZWVuID0gY29tcHV0ZVVub2NjbHVkZWRDb250ZW50UmVjdChj
b250ZW50UmVjdCwgY29udGVudFRvU2NyZWVuU3BhY2VUcmFuc2Zvcm08TGF5ZXJUeXBlPihsYXll
ciksIG1fc2Npc3NvclJlY3RJblNjcmVlblNwYWNlLCBtX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25J
blNjcmVlbik7CiAKLSAgICBpZiAodW5vY2NsdWRlZEluU2NyZWVuLmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuIHVub2NjbHVkZWRJblNjcmVlbjsKLQogICAgIEludFJlY3QgdW5vY2NsdWRlZElu
VGFyZ2V0ID0gY29udGVudFJlY3Q7CiAgICAgaWYgKGxheWVyVHJhbnNmb3Jtc1RvVGFyZ2V0S25v
d24obGF5ZXIpKQogICAgICAgICB1bm9jY2x1ZGVkSW5UYXJnZXQgPSBjb21wdXRlVW5vY2NsdWRl
ZENvbnRlbnRSZWN0KGNvbnRlbnRSZWN0LCBjb250ZW50VG9UYXJnZXRTdXJmYWNlVHJhbnNmb3Jt
PExheWVyVHlwZT4obGF5ZXIpLCBsYXllclNjaXNzb3JSZWN0SW5UYXJnZXRTdXJmYWNlKGxheWVy
KSwgbV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5UYXJnZXQpOwogCisgICAgaWYgKGhhc09jY2x1
c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSkKKyAgICAgICAgKmhhc09jY2x1c2lvbkZyb21P
dXRzaWRlVGFyZ2V0U3VyZmFjZSA9ICh1bm9jY2x1ZGVkSW5TY3JlZW4gIT0gdW5vY2NsdWRlZElu
VGFyZ2V0KTsKKworICAgIGlmICh1bm9jY2x1ZGVkSW5TY3JlZW4uaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gdW5vY2NsdWRlZEluU2NyZWVuOworCiAgICAgcmV0dXJuIGludGVyc2VjdGlvbih1
bm9jY2x1ZGVkSW5TY3JlZW4sIHVub2NjbHVkZWRJblRhcmdldCk7CiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGU+Ci1JbnRSZWN0IEND
T2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46OnVub2Nj
bHVkZWRDb250cmlidXRpbmdTdXJmYWNlQ29udGVudFJlY3QoY29uc3QgTGF5ZXJUeXBlKiBsYXll
ciwgYm9vbCBmb3JSZXBsaWNhLCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkgY29uc3QKK0lu
dFJlY3QgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBl
Pjo6dW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChjb25zdCBMYXllclR5
cGUqIGxheWVyLCBib29sIGZvclJlcGxpY2EsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBi
b29sKiBoYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UpIGNvbnN0CiB7CiAgICAg
QVNTRVJUKCFtX3N0YWNrLmlzRW1wdHkoKSk7CiAgICAgLy8gVGhlIGxheWVyIGlzIGEgY29udHJp
YnV0aW5nIHJlbmRlclRhcmdldCBzbyBpdCBzaG91bGQgaGF2ZSBhIHN1cmZhY2UuCkBAIC00ODQs
OSArNDk1LDYgQEAgSW50UmVjdCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVu
ZGVyU3VyZmFjZVR5cGU+Ojp1bm9jY2x1ZGVkQ29udHJpYnUKICAgICAgICAgICAgIHVub2NjbHVk
ZWRJblNjcmVlbiA9IGNvbXB1dGVVbm9jY2x1ZGVkQ29udGVudFJlY3QoY29udGVudFJlY3QsIHRy
YW5zZm9ybVRvU2NyZWVuLCBtX3NjaXNzb3JSZWN0SW5TY3JlZW5TcGFjZSwgUmVnaW9uKCkpOwog
ICAgIH0KIAotICAgIGlmICh1bm9jY2x1ZGVkSW5TY3JlZW4uaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gdW5vY2NsdWRlZEluU2NyZWVuOwotCiAgICAgSW50UmVjdCB1bm9jY2x1ZGVkSW5UYXJn
ZXQgPSBjb250ZW50UmVjdDsKICAgICBpZiAoc3VyZmFjZVRyYW5zZm9ybXNUb1RhcmdldEtub3du
KHN1cmZhY2UpKSB7CiAgICAgICAgIGlmIChoYXNPY2NsdXNpb24pIHsKQEAgLTQ5Niw2ICs1MDQs
MTIgQEAgSW50UmVjdCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3Vy
ZmFjZVR5cGU+Ojp1bm9jY2x1ZGVkQ29udHJpYnUKICAgICAgICAgICAgIHVub2NjbHVkZWRJblRh
cmdldCA9IGNvbXB1dGVVbm9jY2x1ZGVkQ29udGVudFJlY3QoY29udGVudFJlY3QsIHRyYW5zZm9y
bVRvVGFyZ2V0LCBzdXJmYWNlQ2xpcFJlY3QsIFJlZ2lvbigpKTsKICAgICB9CiAKKyAgICBpZiAo
aGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKQorICAgICAgICAqaGFzT2NjbHVz
aW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlID0gKHVub2NjbHVkZWRJblNjcmVlbiAhPSB1bm9j
Y2x1ZGVkSW5UYXJnZXQpOworCisgICAgaWYgKHVub2NjbHVkZWRJblNjcmVlbi5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiB1bm9jY2x1ZGVkSW5TY3JlZW47CisKICAgICByZXR1cm4gaW50ZXJz
ZWN0aW9uKHVub2NjbHVkZWRJblNjcmVlbiwgdW5vY2NsdWRlZEluVGFyZ2V0KTsKIH0KIApAQCAt
NTE3LDkgKzUzMSw5IEBAIHRlbXBsYXRlIHZvaWQgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXll
ckNocm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+OjplbnRlCiB0ZW1wbGF0ZSB2b2lkIEND
T2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9taXVt
Pjo6ZmluaXNoZWRSZW5kZXJUYXJnZXQoY29uc3QgTGF5ZXJDaHJvbWl1bSogZmluaXNoZWRUYXJn
ZXQpOwogdGVtcGxhdGUgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyQ2hyb21pdW0s
IFJlbmRlclN1cmZhY2VDaHJvbWl1bT46OmxlYXZlVG9SZW5kZXJUYXJnZXQoY29uc3QgTGF5ZXJD
aHJvbWl1bSogbmV3VGFyZ2V0KTsKIHRlbXBsYXRlIHZvaWQgQ0NPY2NsdXNpb25UcmFja2VyQmFz
ZTxMYXllckNocm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+OjptYXJrT2NjbHVkZWRCZWhp
bmRMYXllcihjb25zdCBMYXllckNocm9taXVtKik7Ci10ZW1wbGF0ZSBib29sIENDT2NjbHVzaW9u
VHJhY2tlckJhc2U8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9taXVtPjo6b2NjbHVk
ZWQoY29uc3QgTGF5ZXJDaHJvbWl1bSosIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KSBjb25z
dDsKLXRlbXBsYXRlIEludFJlY3QgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllckNocm9taXVt
LCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+Ojp1bm9jY2x1ZGVkQ29udGVudFJlY3QoY29uc3QgTGF5
ZXJDaHJvbWl1bSosIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KSBjb25zdDsKLXRlbXBsYXRl
IEludFJlY3QgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllckNocm9taXVtLCBSZW5kZXJTdXJm
YWNlQ2hyb21pdW0+Ojp1bm9jY2x1ZGVkQ29udHJpYnV0aW5nU3VyZmFjZUNvbnRlbnRSZWN0KGNv
bnN0IExheWVyQ2hyb21pdW0qLCBib29sIGZvclJlcGxpY2EsIGNvbnN0IEludFJlY3QmIGNvbnRl
bnRSZWN0KSBjb25zdDsKK3RlbXBsYXRlIGJvb2wgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXll
ckNocm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+OjpvY2NsdWRlZChjb25zdCBMYXllckNo
cm9taXVtKiwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGJvb2wqIGhhc09jY2x1c2lvbkZy
b21PdXRzaWRlVGFyZ2V0U3VyZmFjZSkgY29uc3Q7Cit0ZW1wbGF0ZSBJbnRSZWN0IENDT2NjbHVz
aW9uVHJhY2tlckJhc2U8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9taXVtPjo6dW5v
Y2NsdWRlZENvbnRlbnRSZWN0KGNvbnN0IExheWVyQ2hyb21pdW0qLCBjb25zdCBJbnRSZWN0JiBj
b250ZW50UmVjdCwgYm9vbCogaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKSBj
b25zdDsKK3RlbXBsYXRlIEludFJlY3QgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllckNocm9t
aXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+Ojp1bm9jY2x1ZGVkQ29udHJpYnV0aW5nU3VyZmFj
ZUNvbnRlbnRSZWN0KGNvbnN0IExheWVyQ2hyb21pdW0qLCBib29sIGZvclJlcGxpY2EsIGNvbnN0
IEludFJlY3QmIGNvbnRlbnRSZWN0LCBib29sKiBoYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdl
dFN1cmZhY2UpIGNvbnN0OwogdGVtcGxhdGUgSW50UmVjdCBDQ09jY2x1c2lvblRyYWNrZXJCYXNl
PExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1bT46OmxheWVyU2Npc3NvclJlY3RJ
blRhcmdldFN1cmZhY2UoY29uc3QgTGF5ZXJDaHJvbWl1bSopIGNvbnN0OwogCiB0ZW1wbGF0ZSBD
Q09jY2x1c2lvblRyYWNrZXJCYXNlPENDTGF5ZXJJbXBsLCBDQ1JlbmRlclN1cmZhY2U+OjpDQ09j
Y2x1c2lvblRyYWNrZXJCYXNlKEludFJlY3Qgc2Npc3NvclJlY3RJblNjcmVlblNwYWNlLCBib29s
IHJlY29yZE1ldHJpY3NGb3JGcmFtZSk7CkBAIC01MjksOSArNTQzLDkgQEAgdGVtcGxhdGUgdm9p
ZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPENDTGF5ZXJJbXBsLCBDQ1JlbmRlclN1cmZhY2U+Ojpl
bnRlclJlbmRlclQKIHRlbXBsYXRlIHZvaWQgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxDQ0xheWVy
SW1wbCwgQ0NSZW5kZXJTdXJmYWNlPjo6ZmluaXNoZWRSZW5kZXJUYXJnZXQoY29uc3QgQ0NMYXll
ckltcGwqIGZpbmlzaGVkVGFyZ2V0KTsKIHRlbXBsYXRlIHZvaWQgQ0NPY2NsdXNpb25UcmFja2Vy
QmFzZTxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlPjo6bGVhdmVUb1JlbmRlclRhcmdldChj
b25zdCBDQ0xheWVySW1wbCogbmV3VGFyZ2V0KTsKIHRlbXBsYXRlIHZvaWQgQ0NPY2NsdXNpb25U
cmFja2VyQmFzZTxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlPjo6bWFya09jY2x1ZGVkQmVo
aW5kTGF5ZXIoY29uc3QgQ0NMYXllckltcGwqKTsKLXRlbXBsYXRlIGJvb2wgQ0NPY2NsdXNpb25U
cmFja2VyQmFzZTxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlPjo6b2NjbHVkZWQoY29uc3Qg
Q0NMYXllckltcGwqLCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkgY29uc3Q7Ci10ZW1wbGF0
ZSBJbnRSZWN0IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8Q0NMYXllckltcGwsIENDUmVuZGVyU3Vy
ZmFjZT46OnVub2NjbHVkZWRDb250ZW50UmVjdChjb25zdCBDQ0xheWVySW1wbCosIGNvbnN0IElu
dFJlY3QmIGNvbnRlbnRSZWN0KSBjb25zdDsKLXRlbXBsYXRlIEludFJlY3QgQ0NPY2NsdXNpb25U
cmFja2VyQmFzZTxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlPjo6dW5vY2NsdWRlZENvbnRy
aWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChjb25zdCBDQ0xheWVySW1wbCosIGJvb2wgZm9yUmVw
bGljYSwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpIGNvbnN0OwordGVtcGxhdGUgYm9vbCBD
Q09jY2x1c2lvblRyYWNrZXJCYXNlPENDTGF5ZXJJbXBsLCBDQ1JlbmRlclN1cmZhY2U+OjpvY2Ns
dWRlZChjb25zdCBDQ0xheWVySW1wbCosIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBib29s
KiBoYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UpIGNvbnN0OwordGVtcGxhdGUg
SW50UmVjdCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPENDTGF5ZXJJbXBsLCBDQ1JlbmRlclN1cmZh
Y2U+Ojp1bm9jY2x1ZGVkQ29udGVudFJlY3QoY29uc3QgQ0NMYXllckltcGwqLCBjb25zdCBJbnRS
ZWN0JiBjb250ZW50UmVjdCwgYm9vbCogaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJm
YWNlKSBjb25zdDsKK3RlbXBsYXRlIEludFJlY3QgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxDQ0xh
eWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlPjo6dW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VD
b250ZW50UmVjdChjb25zdCBDQ0xheWVySW1wbCosIGJvb2wgZm9yUmVwbGljYSwgY29uc3QgSW50
UmVjdCYgY29udGVudFJlY3QsIGJvb2wqIGhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3Vy
ZmFjZSkgY29uc3Q7CiB0ZW1wbGF0ZSBJbnRSZWN0IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8Q0NM
YXllckltcGwsIENDUmVuZGVyU3VyZmFjZT46OmxheWVyU2Npc3NvclJlY3RJblRhcmdldFN1cmZh
Y2UoY29uc3QgQ0NMYXllckltcGwqKSBjb25zdDsKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9u
VHJhY2tlci5oCmluZGV4IGFlODU3NTFlYTFmODEyZWFiNWI0NGU1MDBmYzVhODhiOTdiZmZjNTEu
LmE2MDFiNmQzOTUxYTE0ZmViM2FlZDMzMWM1NTQzOWI2MDdkOTQ3NGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJh
Y2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDT2NjbHVzaW9uVHJhY2tlci5oCkBAIC01NCwxMyArNTQsMTMgQEAgcHVibGljOgogICAgIHZv
aWQgbGVhdmVMYXllcihjb25zdCBDQ0xheWVySXRlcmF0b3JQb3NpdGlvbjxMYXllclR5cGU+Jik7
CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIHJlY3QgaW4gY29udGVudCBzcGFj
ZSBmb3IgdGhlIGxheWVyIGlzIGZ1bGx5IG9jY2x1ZGVkIGluIGVpdGhlciBzY3JlZW4gc3BhY2Ug
b3IgdGhlIGxheWVyJ3MgdGFyZ2V0IHN1cmZhY2UuCi0gICAgYm9vbCBvY2NsdWRlZChjb25zdCBM
YXllclR5cGUqLCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkgY29uc3Q7CisgICAgYm9vbCBv
Y2NsdWRlZChjb25zdCBMYXllclR5cGUqLCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgYm9v
bCogaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlID0gMCkgY29uc3Q7CiAgICAg
Ly8gR2l2ZXMgYW4gdW5vY2NsdWRlZCBzdWItcmVjdCBvZiB8Y29udGVudFJlY3R8IGluIHRoZSBj
b250ZW50IHNwYWNlIG9mIHRoZSBsYXllci4gVXNlZCB3aGVuIGNvbnNpZGVyaW5nIG9jY2x1c2lv
biBmb3IgYSBsYXllciB0aGF0IHBhaW50cy9kcmF3cyBzb21ldGhpbmcuCi0gICAgSW50UmVjdCB1
bm9jY2x1ZGVkQ29udGVudFJlY3QoY29uc3QgTGF5ZXJUeXBlKiwgY29uc3QgSW50UmVjdCYgY29u
dGVudFJlY3QpIGNvbnN0OworICAgIEludFJlY3QgdW5vY2NsdWRlZENvbnRlbnRSZWN0KGNvbnN0
IExheWVyVHlwZSosIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBib29sKiBoYXNPY2NsdXNp
b25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UgPSAwKSBjb25zdDsKIAogICAgIC8vIEdpdmVzIGFu
IHVub2NjbHVkZWQgc3ViLXJlY3Qgb2YgfGNvbnRlbnRSZWN0fCBpbiB0aGUgY29udGVudCBzcGFj
ZSBvZiB0aGUgcmVuZGVyVGFyZ2V0IG93bmVkIGJ5IHRoZSBsYXllci4KICAgICAvLyBVc2VkIHdo
ZW4gY29uc2lkZXJpbmcgb2NjbHVzaW9uIGZvciBhIGNvbnRyaWJ1dGluZyBzdXJmYWNlIHRoYXQg
aXMgcmVuZGVyaW5nIGludG8gYW5vdGhlciB0YXJnZXQuCi0gICAgSW50UmVjdCB1bm9jY2x1ZGVk
Q29udHJpYnV0aW5nU3VyZmFjZUNvbnRlbnRSZWN0KGNvbnN0IExheWVyVHlwZSosIGJvb2wgZm9y
UmVwbGljYSwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpIGNvbnN0OworICAgIEludFJlY3Qg
dW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChjb25zdCBMYXllclR5cGUq
LCBib29sIGZvclJlcGxpY2EsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBib29sKiBoYXNP
Y2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UgPSAwKSBjb25zdDsKIAogICAgIC8vIFJl
cG9ydCBvcGVyYXRpb25zIGZvciByZWNvcmRpbmcgb3ZlcmRyYXcgbWV0cmljcy4KICAgICBDQ092
ZXJkcmF3TWV0cmljcyYgb3ZlcmRyYXdNZXRyaWNzKCkgY29uc3QgeyByZXR1cm4gKm1fb3ZlcmRy
YXdNZXRyaWNzLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcAppbmRleCA2NWY3ODc4
OGVkNDlhZTI0Mjg1ZjdkYWNjZWI3MWRlMWY0OWEzZWYzLi4wNjg0ZjNlZTU1NWUyZmJhYWFlNGY0
ZmVhOWM0NmIzMDZiZjVlY2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHAKQEAgLTMzLDcg
KzMzLDkgQEAKICNpbmNsdWRlICJTa0NvbG9yLmgiCiAjaW5jbHVkZSAiY2MvQ0NEZWJ1Z0JvcmRl
ckRyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKKyNpbmNsdWRlICJjYy9D
Q09jY2x1c2lvblRyYWNrZXIuaCIKICNpbmNsdWRlICJjYy9DQ092ZXJkcmF3TWV0cmljcy5oIgor
I2luY2x1ZGUgImNjL0NDUmVuZGVyUGFzcy5oIgogI2luY2x1ZGUgPHB1YmxpYy9XZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeC5oPgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwpAQCAtNDYsMTEgKzQ4LDEz
IEBAIHN0YXRpYyBjb25zdCBpbnQgZGVidWdUaWxlQm9yZGVyQ29sb3JSZWQgPSAxNjA7CiBzdGF0
aWMgY29uc3QgaW50IGRlYnVnVGlsZUJvcmRlckNvbG9yR3JlZW4gPSAxMDA7CiBzdGF0aWMgY29u
c3QgaW50IGRlYnVnVGlsZUJvcmRlckNvbG9yQmx1ZSA9IDA7CiAKLUNDUXVhZEN1bGxlcjo6Q0NR
dWFkQ3VsbGVyKENDUXVhZExpc3QmIHF1YWRMaXN0LCBDQ0xheWVySW1wbCogbGF5ZXIsIGNvbnN0
IENDT2NjbHVzaW9uVHJhY2tlckltcGwqIG9jY2x1c2lvblRyYWNrZXIsIGJvb2wgc2hvd0N1bGxp
bmdXaXRoRGVidWdCb3JkZXJRdWFkcykKK0NDUXVhZEN1bGxlcjo6Q0NRdWFkQ3VsbGVyKENDUXVh
ZExpc3QmIHF1YWRMaXN0LCBDQ0xheWVySW1wbCogbGF5ZXIsIGNvbnN0IENDT2NjbHVzaW9uVHJh
Y2tlckltcGwqIG9jY2x1c2lvblRyYWNrZXIsIGJvb2wgc2hvd0N1bGxpbmdXaXRoRGVidWdCb3Jk
ZXJRdWFkcywgYm9vbCBmb3JTdXJmYWNlKQogICAgIDogbV9xdWFkTGlzdChxdWFkTGlzdCkKICAg
ICAsIG1fbGF5ZXIobGF5ZXIpCiAgICAgLCBtX29jY2x1c2lvblRyYWNrZXIob2NjbHVzaW9uVHJh
Y2tlcikKICAgICAsIG1fc2hvd0N1bGxpbmdXaXRoRGVidWdCb3JkZXJRdWFkcyhzaG93Q3VsbGlu
Z1dpdGhEZWJ1Z0JvcmRlclF1YWRzKQorICAgICwgbV9mb3JTdXJmYWNlKGZvclN1cmZhY2UpCisg
ICAgLCBtX2hhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZShmYWxzZSkKIHsKIH0K
IApAQCAtNzgsMTMgKzgyLDE1IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBhcHBlbmRRdWFkSW50ZXJu
YWwoUGFzc093blB0cjxDQ0RyYXdRdWFkPiBwYXNzRHJhd1F1YWQsIGNvbnN0CiAKIGJvb2wgQ0NR
dWFkQ3VsbGVyOjphcHBlbmQoUGFzc093blB0cjxDQ0RyYXdRdWFkPiBwYXNzRHJhd1F1YWQpCiB7
Ci0gICAgSW50UmVjdCBjdWxsZWRSZWN0ID0gbV9vY2NsdXNpb25UcmFja2VyLT51bm9jY2x1ZGVk
Q29udGVudFJlY3QobV9sYXllciwgcGFzc0RyYXdRdWFkLT5xdWFkUmVjdCgpKTsKLSAgICByZXR1
cm4gYXBwZW5kUXVhZEludGVybmFsKHBhc3NEcmF3UXVhZCwgY3VsbGVkUmVjdCwgbV9xdWFkTGlz
dCwgKm1fb2NjbHVzaW9uVHJhY2tlciwgbV9zaG93Q3VsbGluZ1dpdGhEZWJ1Z0JvcmRlclF1YWRz
KTsKLX0KKyAgICBJbnRSZWN0IGN1bGxlZFJlY3Q7CisgICAgYm9vbCBoYXNPY2NsdXNpb25Gcm9t
T3V0c2lkZVRhcmdldFN1cmZhY2U7CisKKyAgICBpZiAobV9mb3JTdXJmYWNlKQorICAgICAgICBj
dWxsZWRSZWN0ID0gbV9vY2NsdXNpb25UcmFja2VyLT51bm9jY2x1ZGVkQ29udHJpYnV0aW5nU3Vy
ZmFjZUNvbnRlbnRSZWN0KG1fbGF5ZXIsIGZhbHNlLCBwYXNzRHJhd1F1YWQtPnF1YWRSZWN0KCks
ICZoYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UpOworICAgIGVsc2UKKyAgICAg
ICAgY3VsbGVkUmVjdCA9IG1fb2NjbHVzaW9uVHJhY2tlci0+dW5vY2NsdWRlZENvbnRlbnRSZWN0
KG1fbGF5ZXIsIHBhc3NEcmF3UXVhZC0+cXVhZFJlY3QoKSwgJmhhc09jY2x1c2lvbkZyb21PdXRz
aWRlVGFyZ2V0U3VyZmFjZSk7CisgICAgbV9oYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1
cmZhY2UgfD0gaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlOwogCi1ib29sIEND
UXVhZEN1bGxlcjo6YXBwZW5kU3VyZmFjZShQYXNzT3duUHRyPENDRHJhd1F1YWQ+IHBhc3NEcmF3
UXVhZCkKLXsKLSAgICBJbnRSZWN0IGN1bGxlZFJlY3QgPSBtX29jY2x1c2lvblRyYWNrZXItPnVu
b2NjbHVkZWRDb250cmlidXRpbmdTdXJmYWNlQ29udGVudFJlY3QobV9sYXllciwgZmFsc2UsIHBh
c3NEcmF3UXVhZC0+cXVhZFJlY3QoKSk7CiAgICAgcmV0dXJuIGFwcGVuZFF1YWRJbnRlcm5hbChw
YXNzRHJhd1F1YWQsIGN1bGxlZFJlY3QsIG1fcXVhZExpc3QsICptX29jY2x1c2lvblRyYWNrZXIs
IG1fc2hvd0N1bGxpbmdXaXRoRGVidWdCb3JkZXJRdWFkcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3Vs
bGVyLmgKaW5kZXggMjk5OWI2YWQ1YWY4NDQ1NTQyNzRkNDRlMWI5NDVmNjc5ODdlNWY2MC4uN2Yw
ODAyNzgyN2RkOGRlNTVjNzg1YzIwMGU1NzUwNWEyY2FhMGQ5OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3Vs
bGVyLmgKQEAgLTI2LDI3ICsyNiwzMyBAQAogI2lmbmRlZiBDQ1F1YWRDdWxsZXJfaAogI2RlZmlu
ZSBDQ1F1YWRDdWxsZXJfaAogCi0jaW5jbHVkZSAiY2MvQ0NSZW5kZXJQYXNzLmgiCisjaW5jbHVk
ZSAiQ0NRdWFkU2luay5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDQ0xheWVySW1w
bDsKLWNsYXNzIENDT3ZlcmRyYXdNZXRyaWNzOworY2xhc3MgQ0NSZW5kZXJTdXJmYWNlOworY2xh
c3MgQ0NRdWFkTGlzdDsKK3RlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgU3Vy
ZmFjZVR5cGU+CitjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJCYXNlOwogCi1jbGFzcyBDQ1F1YWRD
dWxsZXIgeworY2xhc3MgQ0NRdWFkQ3VsbGVyIDogcHVibGljIENDUXVhZFNpbmsgewogcHVibGlj
OgotICAgIC8vIFBhc3NpbmcgMCBmb3IgQ0NPdmVyZHJhd0NvdW50cyogaXMgdmFsaWQsIGFuZCBk
aXNhYmxlIHRoZSBleHRyYSBjb21wdXRhdGlvbgotICAgIC8vIGRvbmUgdG8gZXN0aW1hdGUgb3Zl
ciBkcmF3IHN0YXRpc3RpY3MuCi0gICAgQ0NRdWFkQ3VsbGVyKENDUXVhZExpc3QmLCBDQ0xheWVy
SW1wbCosIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlckltcGwqLCBib29sIHNob3dDdWxsaW5nV2l0
aERlYnVnQm9yZGVyUXVhZHMpOworICAgIENDUXVhZEN1bGxlcihDQ1F1YWRMaXN0JiwgQ0NMYXll
ckltcGwqLCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPENDTGF5ZXJJbXBsLCBDQ1JlbmRl
clN1cmZhY2U+KiwgYm9vbCBzaG93Q3VsbGluZ1dpdGhEZWJ1Z0JvcmRlclF1YWRzLCBib29sIGZv
clN1cmZhY2UpOworCisgICAgdmlydHVhbCB+Q0NRdWFkQ3VsbGVyKCkgeyB9CiAKICAgICAvLyBS
ZXR1cm5zIHRydWUgaWYgdGhlIHF1YWQgaXMgYWRkZWQgdG8gdGhlIGxpc3QsIGFuZCBmYWxzZSBp
ZiB0aGUgcXVhZCBpcyBlbnRpcmVseSBjdWxsZWQuCi0gICAgdmlydHVhbCBib29sIGFwcGVuZChQ
YXNzT3duUHRyPENDRHJhd1F1YWQ+IHBhc3NEcmF3UXVhZCk7Ci0gICAgdmlydHVhbCBib29sIGFw
cGVuZFN1cmZhY2UoUGFzc093blB0cjxDQ0RyYXdRdWFkPiBwYXNzRHJhd1F1YWQpOworICAgIHZp
cnR1YWwgYm9vbCBhcHBlbmQoUGFzc093blB0cjxXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkPiBw
YXNzRHJhd1F1YWQpIE9WRVJSSURFOworCisgICAgYm9vbCBoYXNPY2NsdXNpb25Gcm9tT3V0c2lk
ZVRhcmdldFN1cmZhY2UoKSB7IHJldHVybiBtX2hhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0
U3VyZmFjZTsgfQogCiBwcml2YXRlOgogICAgIENDUXVhZExpc3QmIG1fcXVhZExpc3Q7CiAgICAg
Q0NMYXllckltcGwqIG1fbGF5ZXI7Ci0gICAgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VySW1wbCog
bV9vY2NsdXNpb25UcmFja2VyOworICAgIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8Q0NM
YXllckltcGwsIENDUmVuZGVyU3VyZmFjZT4qIG1fb2NjbHVzaW9uVHJhY2tlcjsKICAgICBib29s
IG1fc2hvd0N1bGxpbmdXaXRoRGVidWdCb3JkZXJRdWFkczsKKyAgICBib29sIG1fZm9yU3VyZmFj
ZTsKKyAgICBib29sIG1faGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlOwogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJQYXNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHAKaW5kZXggZDM4OWYyYjMyNmViNjYzNmQ1M2I4
MjkwYmNmOWVhMWMyOTIxNDdjYS4uNzViNGUyZDY3YmY0YTg5ZWIxMDBjNjgwY2JmOTI3Y2U0YWUw
NjljZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJQYXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNp
bmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgogI2luY2x1ZGUgImNjL0NDTWF0aFV0aWwuaCIKKyNp
bmNsdWRlICJjYy9DQ09jY2x1c2lvblRyYWNrZXIuaCIKICNpbmNsdWRlICJjYy9DQ1F1YWRDdWxs
ZXIuaCIKICNpbmNsdWRlICJjYy9DQ1NoYXJlZFF1YWRTdGF0ZS5oIgogI2luY2x1ZGUgImNjL0ND
U29saWRDb2xvckRyYXdRdWFkLmgiCkBAIC00Nyw2ICs0OCw3IEBAIENDUmVuZGVyUGFzczo6Q0NS
ZW5kZXJQYXNzKENDUmVuZGVyU3VyZmFjZSogdGFyZ2V0U3VyZmFjZSwgaW50IGlkKQogICAgICwg
bV90YXJnZXRTdXJmYWNlKHRhcmdldFN1cmZhY2UpCiAgICAgLCBtX2ZyYW1lYnVmZmVyT3V0cHV0
UmVjdCh0YXJnZXRTdXJmYWNlLT5jb250ZW50UmVjdCgpKQogICAgICwgbV9oYXNUcmFuc3BhcmVu
dEJhY2tncm91bmQodHJ1ZSkKKyAgICAsIG1faGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRT
dXJmYWNlKGZhbHNlKQogewogICAgIEFTU0VSVCh0YXJnZXRTdXJmYWNlKTsKICAgICBBU1NFUlQo
aWQgPiAwKTsKQEAgLTU0LDE5ICs1NiwyMyBAQCBDQ1JlbmRlclBhc3M6OkNDUmVuZGVyUGFzcyhD
Q1JlbmRlclN1cmZhY2UqIHRhcmdldFN1cmZhY2UsIGludCBpZCkKIAogdm9pZCBDQ1JlbmRlclBh
c3M6OmFwcGVuZFF1YWRzRm9yTGF5ZXIoQ0NMYXllckltcGwqIGxheWVyLCBDQ09jY2x1c2lvblRy
YWNrZXJJbXBsKiBvY2NsdXNpb25UcmFja2VyLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpCiB7Ci0g
ICAgQ0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXIobV9xdWFkTGlzdCwgbGF5ZXIsIG9jY2x1c2lvblRy
YWNrZXIsIGxheWVyLT5oYXNEZWJ1Z0JvcmRlcnMoKSk7CisgICAgY29uc3QgYm9vbCBmb3JTdXJm
YWNlID0gZmFsc2U7CisgICAgQ0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXIobV9xdWFkTGlzdCwgbGF5
ZXIsIG9jY2x1c2lvblRyYWNrZXIsIGxheWVyLT5oYXNEZWJ1Z0JvcmRlcnMoKSwgZm9yU3VyZmFj
ZSk7CiAKICAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFF1YWRTdGF0ZSA9IGxh
eWVyLT5jcmVhdGVTaGFyZWRRdWFkU3RhdGUobV9zaGFyZWRRdWFkU3RhdGVMaXN0LnNpemUoKSk7
CiAgICAgbGF5ZXItPmFwcGVuZERlYnVnQm9yZGVyUXVhZChxdWFkQ3VsbGVyLCBzaGFyZWRRdWFk
U3RhdGUuZ2V0KCkpOwogICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRR
dWFkU3RhdGUuZ2V0KCksIGhhZE1pc3NpbmdUaWxlcyk7CiAgICAgbV9zaGFyZWRRdWFkU3RhdGVM
aXN0LmFwcGVuZChzaGFyZWRRdWFkU3RhdGUucmVsZWFzZSgpKTsKKworICAgIG1faGFzT2NjbHVz
aW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlIHw9IHF1YWRDdWxsZXIuaGFzT2NjbHVzaW9uRnJv
bU91dHNpZGVUYXJnZXRTdXJmYWNlKCk7CiB9CiAKIHZvaWQgQ0NSZW5kZXJQYXNzOjphcHBlbmRR
dWFkc0ZvclJlbmRlclN1cmZhY2VMYXllcihDQ0xheWVySW1wbCogbGF5ZXIsIGNvbnN0IENDUmVu
ZGVyUGFzcyogY29udHJpYnV0aW5nUmVuZGVyUGFzcywgQ0NPY2NsdXNpb25UcmFja2VySW1wbCog
b2NjbHVzaW9uVHJhY2tlcikKIHsKICAgICAvLyBGSVhNRTogcmVuZGVyIHN1cmZhY2UgbGF5ZXJz
IHNob3VsZCBiZSBhIENDTGF5ZXJJbXBsLWRlcml2ZWQgY2xhc3MgYW5kCiAgICAgLy8gbm90IGJl
IGhhbmRsZWQgc3BlY2lhbGx5IGhlcmUuCi0gICAgQ0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXIobV9x
dWFkTGlzdCwgbGF5ZXIsIG9jY2x1c2lvblRyYWNrZXIsIGxheWVyLT5oYXNEZWJ1Z0JvcmRlcnMo
KSk7CisgICAgY29uc3QgYm9vbCBmb3JTdXJmYWNlID0gdHJ1ZTsKKyAgICBDQ1F1YWRDdWxsZXIg
cXVhZEN1bGxlcihtX3F1YWRMaXN0LCBsYXllciwgb2NjbHVzaW9uVHJhY2tlciwgbGF5ZXItPmhh
c0RlYnVnQm9yZGVycygpLCBmb3JTdXJmYWNlKTsKIAogICAgIENDUmVuZGVyU3VyZmFjZSogc3Vy
ZmFjZSA9IGxheWVyLT5yZW5kZXJTdXJmYWNlKCk7CiAKQEAgLTc1LDYgKzgxLDggQEAgdm9pZCBD
Q1JlbmRlclBhc3M6OmFwcGVuZFF1YWRzRm9yUmVuZGVyU3VyZmFjZUxheWVyKENDTGF5ZXJJbXBs
KiBsYXllciwgY29uc3QgQ0MKICAgICBzdXJmYWNlLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBz
aGFyZWRRdWFkU3RhdGUuZ2V0KCksIGlzUmVwbGljYSwgY29udHJpYnV0aW5nUmVuZGVyUGFzcy0+
aWQoKSk7CiAgICAgbV9zaGFyZWRRdWFkU3RhdGVMaXN0LmFwcGVuZChzaGFyZWRRdWFkU3RhdGUu
cmVsZWFzZSgpKTsKIAorICAgIG1faGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNl
IHw9IHF1YWRDdWxsZXIuaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKCk7CisK
ICAgICBpZiAoIWxheWVyLT5oYXNSZXBsaWNhKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtODMs
NiArOTEsOCBAQCB2b2lkIENDUmVuZGVyUGFzczo6YXBwZW5kUXVhZHNGb3JSZW5kZXJTdXJmYWNl
TGF5ZXIoQ0NMYXllckltcGwqIGxheWVyLCBjb25zdCBDQwogICAgIGlzUmVwbGljYSA9IHRydWU7
CiAgICAgc3VyZmFjZS0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgcmVwbGljYVNoYXJlZFF1YWRT
dGF0ZS5nZXQoKSwgaXNSZXBsaWNhLCBjb250cmlidXRpbmdSZW5kZXJQYXNzLT5pZCgpKTsKICAg
ICBtX3NoYXJlZFF1YWRTdGF0ZUxpc3QuYXBwZW5kKHJlcGxpY2FTaGFyZWRRdWFkU3RhdGUucmVs
ZWFzZSgpKTsKKworICAgIG1faGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlIHw9
IHF1YWRDdWxsZXIuaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKCk7CiB9CiAK
IHZvaWQgQ0NSZW5kZXJQYXNzOjphcHBlbmRRdWFkc1RvRmlsbFNjcmVlbihDQ0xheWVySW1wbCog
cm9vdExheWVyLCBTa0NvbG9yIHNjcmVlbkJhY2tncm91bmRDb2xvciwgY29uc3QgQ0NPY2NsdXNp
b25UcmFja2VySW1wbCYgb2NjbHVzaW9uVHJhY2tlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmgKaW5k
ZXggMDEwYTc2NzRiMGNlMmIyMmMwOTJhNjYwNmQ0MWNkMzQxYTFjOTdmNi4uODE2NDgxYzk3MzY1
OTJkYjgyNDNkNzAyYmMzMTIxYmY2MzJiNTM4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmgKQEAg
LTcxLDYgKzcxLDggQEAgcHVibGljOgogICAgIGJvb2wgaGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5k
KCkgY29uc3QgeyByZXR1cm4gbV9oYXNUcmFuc3BhcmVudEJhY2tncm91bmQ7IH0KICAgICB2b2lk
IHNldEhhc1RyYW5zcGFyZW50QmFja2dyb3VuZChib29sIHRyYW5zcGFyZW50KSB7IG1faGFzVHJh
bnNwYXJlbnRCYWNrZ3JvdW5kID0gdHJhbnNwYXJlbnQ7IH0KIAorICAgIGJvb2wgaGFzT2NjbHVz
aW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKCkgY29uc3QgeyByZXR1cm4gbV9oYXNPY2NsdXNp
b25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2U7IH0KKyAgICB2b2lkIHNldEhhc09jY2x1c2lvbkZy
b21PdXRzaWRlVGFyZ2V0U3VyZmFjZShib29sIGhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0
U3VyZmFjZSkgeyBtX2hhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSA9IGhhc09j
Y2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZTsgfQogcHJvdGVjdGVkOgogICAgIENDUmVu
ZGVyUGFzcyhDQ1JlbmRlclN1cmZhY2UqLCBpbnQgaWQpOwogCkBAIC04MCw2ICs4Miw3IEBAIHBy
b3RlY3RlZDoKICAgICBJbnRSZWN0IG1fZnJhbWVidWZmZXJPdXRwdXRSZWN0OwogICAgIFZlY3Rv
cjxPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+ID4gbV9zaGFyZWRRdWFkU3RhdGVMaXN0OwogICAg
IGJvb2wgbV9oYXNUcmFuc3BhcmVudEJhY2tncm91bmQ7CisgICAgYm9vbCBtX2hhc09jY2x1c2lv
bkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZTsKIH07CiAKIHR5cGVkZWYgVmVjdG9yPENDUmVuZGVy
UGFzcyo+IENDUmVuZGVyUGFzc0xpc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcApp
bmRleCBlZmYwNjhhYjQ0ODljNDgwNzBkZTkxZDU2MjQwNWU2MzZkZTI0NzczLi4yMjQzNGMyMDNk
YjA4M2Q4NzBiMGJmNjBlZWY5NzRhZDhiYzI2ZjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3Vy
ZmFjZS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJjYy9DQ0RlYnVnQm9yZGVyRHJh
d1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgogI2luY2x1ZGUgImNjL0NDTWF0
aFV0aWwuaCIKLSNpbmNsdWRlICJjYy9DQ1F1YWRDdWxsZXIuaCIKKyNpbmNsdWRlICJjYy9DQ1F1
YWRTaW5rLmgiCiAjaW5jbHVkZSAiY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuaCIKICNpbmNsdWRl
ICJjYy9DQ1NoYXJlZFF1YWRTdGF0ZS5oIgogI2luY2x1ZGUgPHB1YmxpYy9XZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeC5oPgpAQCAtMTgxLDcgKzE4MSw3IEBAIEZsb2F0UmVjdCBDQ1JlbmRlclN1cmZh
Y2U6OmNvbXB1dGVSb290U2Npc3NvclJlY3RJbkN1cnJlbnRTdXJmYWNlKGNvbnN0IEZsb2F0UmVj
CiAgICAgcmV0dXJuIENDTWF0aFV0aWw6OnByb2plY3RDbGlwcGVkUmVjdChpbnZlcnNlU2NyZWVu
U3BhY2VUcmFuc2Zvcm0sIHJvb3RTY2lzc29yUmVjdCk7CiB9CiAKLXZvaWQgQ0NSZW5kZXJTdXJm
YWNlOjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBDQ1NoYXJlZFF1YWRTdGF0
ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sIGZvclJlcGxpY2EsIGludCByZW5kZXJQYXNzSWQpCit2
b2lkIENDUmVuZGVyU3VyZmFjZTo6YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVhZExpc3QsIEND
U2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGJvb2wgZm9yUmVwbGljYSwgaW50IHJl
bmRlclBhc3NJZCkKIHsKICAgICBBU1NFUlQoIWZvclJlcGxpY2EgfHwgbV9vd25pbmdMYXllci0+
aGFzUmVwbGljYSgpKTsKIApAQCAtMTkwLDcgKzE5MCw3IEBAIHZvaWQgQ0NSZW5kZXJTdXJmYWNl
OjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBDQ1NoYXJlZFF1YWRTdGF0ZSog
c2hhCiAgICAgICAgIGludCBncmVlbiA9IGZvclJlcGxpY2EgPyAgZGVidWdSZXBsaWNhQm9yZGVy
Q29sb3JHcmVlbiA6IGRlYnVnU3VyZmFjZUJvcmRlckNvbG9yR3JlZW47CiAgICAgICAgIGludCBi
bHVlID0gZm9yUmVwbGljYSA/IGRlYnVnUmVwbGljYUJvcmRlckNvbG9yQmx1ZSA6IGRlYnVnU3Vy
ZmFjZUJvcmRlckNvbG9yQmx1ZTsKICAgICAgICAgU2tDb2xvciBjb2xvciA9IFNrQ29sb3JTZXRB
UkdCKGRlYnVnU3VyZmFjZUJvcmRlckFscGhhLCByZWQsIGdyZWVuLCBibHVlKTsKLSAgICAgICAg
cXVhZExpc3QuYXBwZW5kU3VyZmFjZShDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ6OmNyZWF0ZShzaGFy
ZWRRdWFkU3RhdGUsIGNvbnRlbnRSZWN0KCksIGNvbG9yLCBkZWJ1Z1N1cmZhY2VCb3JkZXJXaWR0
aCkpOworICAgICAgICBxdWFkTGlzdC5hcHBlbmQoQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkOjpjcmVh
dGUoc2hhcmVkUXVhZFN0YXRlLCBjb250ZW50UmVjdCgpLCBjb2xvciwgZGVidWdTdXJmYWNlQm9y
ZGVyV2lkdGgpKTsKICAgICB9CiAKICAgICAvLyBGSVhNRTogQnkgdXNpbmcgdGhlIHNhbWUgUmVu
ZGVyU3VyZmFjZSBmb3IgYm90aCB0aGUgY29udGVudCBhbmQgaXRzIHJlZmxlY3Rpb24sCkBAIC0y
MTYsNyArMjE2LDcgQEAgdm9pZCBDQ1JlbmRlclN1cmZhY2U6OmFwcGVuZFF1YWRzKENDUXVhZEN1
bGxlciYgcXVhZExpc3QsIENDU2hhcmVkUXVhZFN0YXRlKiBzaGEKICAgICBjb25zdCBXZWJLaXQ6
OldlYkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMgPSBtX293bmluZ0xheWVyLT5maWx0ZXJzKCk7
CiAgICAgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVy
cyA9IG1fb3duaW5nTGF5ZXItPmJhY2tncm91bmRGaWx0ZXJzKCk7CiAKLSAgICBxdWFkTGlzdC5h
cHBlbmRTdXJmYWNlKENDUmVuZGVyUGFzc0RyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRl
LCBjb250ZW50UmVjdCgpLCByZW5kZXJQYXNzSWQsIGZvclJlcGxpY2EsIGRyYXdUcmFuc2Zvcm0s
IGZpbHRlcnMsIGJhY2tncm91bmRGaWx0ZXJzLCBtYXNrUmVzb3VyY2VJZCwgY29udGVudHNDaGFu
Z2VkU2luY2VMYXN0RnJhbWUpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoQ0NSZW5kZXJQYXNzRHJh
d1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIGNvbnRlbnRSZWN0KCksIHJlbmRlclBhc3NJ
ZCwgZm9yUmVwbGljYSwgZHJhd1RyYW5zZm9ybSwgZmlsdGVycywgYmFja2dyb3VuZEZpbHRlcnMs
IG1hc2tSZXNvdXJjZUlkLCBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSkpOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1JlbmRlclN1cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oCmluZGV4IDFhYzM0MDBhZjVjNGMwYmMyMjE1MjYw
ZDUzNzU4MDc1OWFjNzQ4MTYuLjc5ZmRhYzRlY2M5MDVmMTNhZTg3ODczNGIwNTE2NDAwYWZiZjVi
NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUmVuZGVyU3VyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oCkBAIC0zOSw3ICszOSw3IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDRGFtYWdlVHJhY2tlcjsKLWNsYXNzIENDUXVhZEN1
bGxlcjsKK2NsYXNzIENDUXVhZFNpbms7CiBjbGFzcyBDQ1JlbmRlclBhc3M7CiBjbGFzcyBDQ0xh
eWVySW1wbDsKIGNsYXNzIExheWVyUmVuZGVyZXJDaHJvbWl1bTsKQEAgLTExNyw3ICsxMTcsNyBA
QCBwdWJsaWM6CiAgICAgUGFzc093blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gY3JlYXRlU2hhcmVk
UXVhZFN0YXRlKGludCBpZCkgY29uc3Q7CiAgICAgUGFzc093blB0cjxDQ1NoYXJlZFF1YWRTdGF0
ZT4gY3JlYXRlUmVwbGljYVNoYXJlZFF1YWRTdGF0ZShpbnQgaWQpIGNvbnN0OwogCi0gICAgdm9p
ZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImLCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wgZm9y
UmVwbGljYSwgaW50IHJlbmRlclBhc3NJZCk7CisgICAgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRT
aW5rJiwgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sIGZvclJlcGxpY2EsIGludCByZW5kZXJQYXNz
SWQpOwogCiAgICAgRmxvYXRSZWN0IGNvbXB1dGVSb290U2Npc3NvclJlY3RJbkN1cnJlbnRTdXJm
YWNlKGNvbnN0IEZsb2F0UmVjdCYgcm9vdFNjaXNzb3JSZWN0KSBjb25zdDsKIApAQCAtMTU3LDYg
KzE1Nyw3IEBAIHByaXZhdGU6CiAgICAgLy8gRm9yIENDTGF5ZXJJdGVyYXRvckFjdGlvbnMKICAg
ICBpbnQgbV90YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXJJbmRleEhpc3Rvcnk7CiAgICAgaW50IG1f
Y3VycmVudExheWVySW5kZXhIaXN0b3J5OworCiAgICAgZnJpZW5kIHN0cnVjdCBDQ0xheWVySXRl
cmF0b3JBY3Rpb25zOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwu
Y3BwCmluZGV4IDY1MGU3NTFmOGM4OTRlZmY1NjFjNGVmN2NjMTdkYjAxY2U5NGNiZDMuLjFmY2Qx
ZGE4YmY0MWUyZDIyYjYxOGM5NDZjMjNlMzhjNDVjOTg4YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1Njcm9sbGJhckxheWVySW1wbC5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIAogI2luY2x1ZGUgIlNj
cm9sbGJhclRoZW1lLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaCIKLSNp
bmNsdWRlICJjYy9DQ1F1YWRDdWxsZXIuaCIKKyNpbmNsdWRlICJjYy9DQ1F1YWRTaW5rLmgiCiAj
aW5jbHVkZSAiY2MvQ0NUZXh0dXJlRHJhd1F1YWQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNjIsNyArNjIsNyBAQCBGbG9hdFJlY3QgdG9VVlJlY3QoY29uc3QgSW50UmVjdCYgciwgY29u
c3QgSW50UmVjdCYgYm91bmRzKQogCiB9CiAKLXZvaWQgQ0NTY3JvbGxiYXJMYXllckltcGw6OmFw
cGVuZFF1YWRzKENDUXVhZEN1bGxlciYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRl
KiBzaGFyZWRRdWFkU3RhdGUsIGJvb2wmKQordm9pZCBDQ1Njcm9sbGJhckxheWVySW1wbDo6YXBw
ZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBz
aGFyZWRRdWFkU3RhdGUsIGJvb2wmKQogewogICAgIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlKiB0
aGVtZSA9IHN0YXRpY19jYXN0PFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlKj4oU2Nyb2xsYmFyVGhl
bWU6OnRoZW1lKCkpOwogICAgIGlmICghdGhlbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJM
YXllckltcGwuaAppbmRleCAzMmE4MzVkOTAyYWM1YzM4MWNjMDIzZTQyZGYyODA3ZmU4NDA3MDUx
Li5mYWEzMzYxYmFkMzc1OTgwNGU4MDM0OGQ0MjIwZGViNjdiM2UwMDVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxh
eWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAg
IENDTGF5ZXJJbXBsKiBzY3JvbGxMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsTGF5ZXI7
IH0KICAgICB2b2lkIHNldFNjcm9sbExheWVyKENDTGF5ZXJJbXBsKiBzY3JvbGxMYXllcikgeyBt
X3Njcm9sbExheWVyID0gc2Nyb2xsTGF5ZXI7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRR
dWFkcyhDQ1F1YWRDdWxsZXImLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wmIGhhZE1p
c3NpbmdUaWxlcykgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVh
ZFNpbmsmLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykg
T1ZFUlJJREU7CiAKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBDQ1Njcm9sbGJhckxheWVySW1w
bChpbnQgaWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxheWVySW1wbC5jcHAKaW5k
ZXggNGQ1MmMxNWRkNDJmMjNkYWFmZjZjNTQzOGJlNGY3OWVmNzg2NDZhMy4uZjUyYzc5N2MwMmY3
NDg4ZmI4ZDQwN2Y1MWYwZWRjOWY0NWE5OTI3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlk
Q29sb3JMYXllckltcGwuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAKICNpbmNsdWRlICJjYy9DQ1Nv
bGlkQ29sb3JMYXllckltcGwuaCIKIAotI2luY2x1ZGUgImNjL0NDUXVhZEN1bGxlci5oIgorI2lu
Y2x1ZGUgImNjL0NDUXVhZFNpbmsuaCIKICNpbmNsdWRlICJjYy9DQ1NvbGlkQ29sb3JEcmF3UXVh
ZC5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CkBAIC00OSw3ICs0OSw3IEBAIENDU29saWRDb2xvckxheWVySW1wbDo6fkNDU29s
aWRDb2xvckxheWVySW1wbCgpCiB7CiB9CiAKLXZvaWQgQ0NTb2xpZENvbG9yTGF5ZXJJbXBsOjph
cHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0
ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJikKK3ZvaWQgQ0NTb2xpZENvbG9yTGF5ZXJJbXBsOjph
cHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUq
IHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCYpCiB7CiAgICAgLy8gV2UgY3JlYXRlIGEgc2VyaWVzIG9m
IHNtYWxsZXIgcXVhZHMgaW5zdGVhZCBvZiBqdXN0IG9uZSBsYXJnZSBvbmUgc28gdGhhdCB0aGUK
ICAgICAvLyBjdWxsZXIgY2FuIHJlZHVjZSB0aGUgdG90YWwgcGl4ZWxzIGRyYXduLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xp
ZENvbG9yTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NvbGlkQ29sb3JMYXllckltcGwuaAppbmRleCBlMzAwNTg0NWU2ZGU2YjIwZGFj
NWZlZTY0OWE1MTU3MWY2YTEwYzM2Li43MTUzZjIxYWI4MmE3ODRhYzg1MGU4ZDYzYjg1YzIxMTZi
Njg1ZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NvbGlkQ29sb3JMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JMYXllckltcGwuaApAQCAtNDEs
NyArNDEsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgfkNDU29saWRDb2xvckxheWVy
SW1wbCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYsIGNv
bnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYsIGNvbnN0IENDU2hhcmVk
UXVhZFN0YXRlKiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVSUklERTsKIAogcHJvdGVjdGVk
OgogICAgIGV4cGxpY2l0IENDU29saWRDb2xvckxheWVySW1wbChpbnQgaWQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJl
TGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGV4dHVyZUxheWVySW1wbC5jcHAKaW5kZXggNmZjOTE5OTYyMDAzMmY1MzIyZmU1YzJm
OTFmZDZhOGM3MjAyNTU4OC4uN2NiYmVjZTE2ODgzODc4YzQ5NzdkNGY5YWE0ODU2ZTgwMWNjYjE4
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwuY3BwCkBAIC0zMCw3ICszMCw3
IEBACiAjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmgiCiAKICNpbmNsdWRlICJUZXh0
U3RyZWFtLmgiCi0jaW5jbHVkZSAiY2MvQ0NRdWFkQ3VsbGVyLmgiCisjaW5jbHVkZSAiY2MvQ0NR
dWFkU2luay5oIgogI2luY2x1ZGUgImNjL0NDUmVuZGVyZXIuaCIKICNpbmNsdWRlICJjYy9DQ1Rl
eHR1cmVEcmF3UXVhZC5oIgogCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgQ0NUZXh0dXJlTGF5ZXJJ
bXBsOjp3aWxsRHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIpCiAgICAg
bV9leHRlcm5hbFRleHR1cmVSZXNvdXJjZSA9IHJlc291cmNlUHJvdmlkZXItPmNyZWF0ZVJlc291
cmNlRnJvbUV4dGVybmFsVGV4dHVyZShtX3RleHR1cmVJZCk7CiB9CiAKLXZvaWQgQ0NUZXh0dXJl
TGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1No
YXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJikKK3ZvaWQgQ0NUZXh0dXJlTGF5
ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRR
dWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCYpCiB7CiAgICAgQVNTRVJUKG1fZXh0ZXJu
YWxUZXh0dXJlUmVzb3VyY2UpOwogICAgIEludFJlY3QgcXVhZFJlY3QoSW50UG9pbnQoKSwgY29u
dGVudEJvdW5kcygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmgKaW5kZXggZTc0
OGIwMTMwOGE4ZWRiOTYyYTM4Zjk1NGRhMGQxYmRmOTY3OTM0MC4uZTU0NTMxNDhkY2NhNTA5Yjc5
M2U2OTQ1YmI2YmFkNzE4MTc2MGYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJbXBs
LmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkNDVGV4dHVyZUxheWVy
SW1wbCgpOwogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3KENDUmVzb3VyY2VQcm92aWRlciop
IE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImLCBj
b25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZFNpbmsmLCBjb25zdCBDQ1NoYXJl
ZFF1YWRTdGF0ZSosIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIGRpZERyYXcoQ0NSZXNvdXJjZVByb3ZpZGVyKikgT1ZFUlJJREU7CiAKICAgICB2aXJ0
dWFsIHZvaWQgZGlkTG9zZUNvbnRleHQoKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExh
eWVySW1wbC5jcHAKaW5kZXggYzllOWIyMjY0Yjk4ZDc4YTNmMGY0ODU1NWJmNzdmODA4MTAzNmJk
ZS4uZWU0OTY1MTg3OTBiYmQzYzE0MGZjMjMzY2E3Njg0ZDk2M2MxZjVkNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVy
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaWxlZExheWVySW1wbC5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJjYy9D
Q0NoZWNrZXJib2FyZERyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NEZWJ1Z0JvcmRlckRyYXdR
dWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRpbGluZ0RhdGEuaCIKLSNpbmNsdWRlICJjYy9D
Q1F1YWRDdWxsZXIuaCIKKyNpbmNsdWRlICJjYy9DQ1F1YWRTaW5rLmgiCiAjaW5jbHVkZSAiY2Mv
Q0NTb2xpZENvbG9yRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ1RpbGVEcmF3UXVhZC5oIgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMTIzLDcgKzEyMyw3IEBAIERyYXdh
YmxlVGlsZSogQ0NUaWxlZExheWVySW1wbDo6Y3JlYXRlVGlsZShpbnQgaSwgaW50IGopCiAgICAg
cmV0dXJuIGFkZGVkVGlsZTsKIH0KIAotdm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjphcHBlbmRRdWFk
cyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVk
UXVhZFN0YXRlLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpCit2b2lkIENDVGlsZWRMYXllckltcGw6
OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0
ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpCiB7CiAgICAgY29uc3Qg
SW50UmVjdCYgY29udGVudFJlY3QgPSB2aXNpYmxlQ29udGVudFJlY3QoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExh
eWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaWxlZExheWVySW1wbC5oCmluZGV4IDg3MWQ0ZTdkMTZhMTQ3YWU4YjQxNDI1NDBmMTdhYTRj
YjgzMGE4Y2YuLjAxNWZkYzMwNjI0ODcwMGE4NjJjMjI5ZWFjMzYzODliMWRlZGM0YzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGls
ZWRMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAg
IH0KICAgICB2aXJ0dWFsIH5DQ1RpbGVkTGF5ZXJJbXBsKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29s
JiBoYWRNaXNzaW5nVGlsZXMpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFk
cyhDQ1F1YWRTaW5rJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiBoYWRNaXNzaW5n
VGlsZXMpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291
cmNlSWQgY29udGVudHNSZXNvdXJjZUlkKCkgY29uc3QgT1ZFUlJJREU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXll
ckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NWaWRlb0xheWVySW1wbC5jcHAKaW5kZXggYWU1MzhjMmU1MzY5MzMxMjQ0NGNkNTA5ZTIzMTI4
MzFkODRhMzk1ZC4uZmEyMDFkMTEyNmJhNGJiMDllODY3YzU3MmMyMjliNzJkOTc5Yjk5NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NW
aWRlb0xheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNs
dWRlICJjYy9DQ0lPU3VyZmFjZURyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVI
b3N0SW1wbC5oIgogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKLSNpbmNsdWRlICJjYy9DQ1F1YWRD
dWxsZXIuaCIKKyNpbmNsdWRlICJjYy9DQ1F1YWRTaW5rLmgiCiAjaW5jbHVkZSAiY2MvQ0NSZXNv
dXJjZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NTdHJlYW1WaWRlb0RyYXdRdWFkLmgiCiAj
aW5jbHVkZSAiY2MvQ0NUZXh0dXJlRHJhd1F1YWQuaCIKQEAgLTE3Nyw3ICsxNzcsNyBAQCB2b2lk
IENDVmlkZW9MYXllckltcGw6OndpbGxEcmF3SW50ZXJuYWwoQ0NSZXNvdXJjZVByb3ZpZGVyKiBy
ZXNvdXJjZVByb3ZpZGVyKQogICAgICAgICBtX2V4dGVybmFsVGV4dHVyZVJlc291cmNlID0gcmVz
b3VyY2VQcm92aWRlci0+Y3JlYXRlUmVzb3VyY2VGcm9tRXh0ZXJuYWxUZXh0dXJlKG1fZnJhbWUt
PnRleHR1cmVJZCgpKTsKIH0KIAotdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhD
Q1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVh
ZFN0YXRlLCBib29sJikKK3ZvaWQgQ0NWaWRlb0xheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFk
U2luayYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUs
IGJvb2wmKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlk
ZW9MYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVmlkZW9MYXllckltcGwuaAppbmRleCA0Y2Y3Y2FiYjc2ZDkzY2VlODkyZjU0M2UyNWJj
NDllOTgxNGViNGIzLi40MTRjYTY4ZTM0Njg1NzQ2YzlhMDUzNTA5NTMzMDU4YmFlZDlmOGYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1ZpZGVvTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5DQ1ZpZGVvTGF5ZXJJbXBsKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgd2ls
bERyYXcoQ0NSZXNvdXJjZVByb3ZpZGVyKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGFw
cGVuZFF1YWRzKENDUXVhZEN1bGxlciYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgYm9vbCYg
aGFkTWlzc2luZ1RpbGVzKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMo
Q0NRdWFkU2luayYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgYm9vbCYgaGFkTWlzc2luZ1Rp
bGVzKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRHJhdyhDQ1Jlc291cmNlUHJvdmlk
ZXIqKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBkdW1wTGF5ZXJQcm9wZXJ0aWVzKFRl
eHRTdHJlYW0mLCBpbnQgaW5kZW50KSBjb25zdCBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKaW5k
ZXggNjRkZWQ3OTI4NjI4YWYyZDNiMzMyZDRhM2RmYjAyY2FmN2JiMmJkOS4uODExNWQ0ZjkzYWM3
ODJjZTNkYTk1YTUwYWVmY2U0MGZlOTUwMGQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKQEAgLTI4LDYg
KzI4LDcgQEAKIAogI2luY2x1ZGUgIkNDQW5pbWF0aW9uVGVzdENvbW1vbi5oIgogI2luY2x1ZGUg
IkNDTGF5ZXJUZXN0Q29tbW9uLmgiCisjaW5jbHVkZSAiQ0NMYXllclRyZWVUZXN0Q29tbW9uLmgi
CiAjaW5jbHVkZSAiQ0NUZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSAiRmFrZVdlYkdyYXBoaWNzQ29u
dGV4dDNELmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCkBAIC0xMTc1LDcg
KzExNzYsNyBAQCBjbGFzcyBCbGVuZFN0YXRlQ2hlY2tMYXllciA6IHB1YmxpYyBDQ0xheWVySW1w
bCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8QmxlbmRTdGF0ZUNoZWNrTGF5ZXI+
IGNyZWF0ZShpbnQgaWQsIENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlcikgeyBy
ZXR1cm4gYWRvcHRQdHIobmV3IEJsZW5kU3RhdGVDaGVja0xheWVyKGlkLCByZXNvdXJjZVByb3Zp
ZGVyKSk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1
YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJikg
T1ZFUlJJREUKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVhZExp
c3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGJvb2wmKSBPVkVS
UklERQogICAgIHsKICAgICAgICAgbV9xdWFkc0FwcGVuZGVkID0gdHJ1ZTsKIApAQCAtMTcwMiwx
MCArMTcwMywxMCBAQCBjbGFzcyBGYWtlTGF5ZXJXaXRoUXVhZHMgOiBwdWJsaWMgQ0NMYXllcklt
cGwgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEZha2VMYXllcldpdGhRdWFkcz4g
Y3JlYXRlKGludCBpZCkgeyByZXR1cm4gYWRvcHRQdHIobmV3IEZha2VMYXllcldpdGhRdWFkcyhp
ZCkpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFk
TGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCYpIE9W
RVJSSURFCisgICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRMaXN0
LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJikgT1ZFUlJJ
REUKICAgICB7CiAgICAgICAgIFNrQ29sb3IgZ3JheSA9IFNrQ29sb3JTZXRSR0IoMTAwLCAxMDAs
IDEwMCk7Ci0gICAgICAgIEludFJlY3QgcXVhZFJlY3QoMCwgMCwgNSwgNSk7CisgICAgICAgIElu
dFJlY3QgcXVhZFJlY3QoSW50UG9pbnQoMCwgMCksIGNvbnRlbnRCb3VuZHMoKSk7CiAgICAgICAg
IE93blB0cjxDQ0RyYXdRdWFkPiBteVF1YWQgPSBDQ1NvbGlkQ29sb3JEcmF3UXVhZDo6Y3JlYXRl
KHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIGdyYXkpOwogICAgICAgICBxdWFkTGlzdC5hcHBl
bmQobXlRdWFkLnJlbGVhc2UoKSk7CiAgICAgfQpAQCAtMjQ3Niw2ICsyNDc3LDIxIEBAIFRFU1Rf
RihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgaGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKQogICAg
IE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtb2NrQ29udGV4dCk7CiB9CiAKK3N0
YXRpYyB2b2lkIGFkZERyYXdpbmdMYXllclRvKENDTGF5ZXJJbXBsKiBwYXJlbnQsIGludCBpZCwg
Y29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0LCBDQ0xheWVySW1wbCoqIHJlc3VsdCkKK3sKKyAgICBP
d25QdHI8Q0NMYXllckltcGw+IGxheWVyID0gRmFrZUxheWVyV2l0aFF1YWRzOjpjcmVhdGUoaWQp
OworICAgIENDTGF5ZXJJbXBsKiBsYXllclB0ciA9IGxheWVyLmdldCgpOworICAgIGxheWVyUHRy
LT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50KDAsIDApKTsKKyAgICBsYXllclB0ci0+c2V0UG9z
aXRpb24oRmxvYXRQb2ludChsYXllclJlY3QubG9jYXRpb24oKSkpOworICAgIGxheWVyUHRyLT5z
ZXRCb3VuZHMobGF5ZXJSZWN0LnNpemUoKSk7CisgICAgbGF5ZXJQdHItPnNldENvbnRlbnRCb3Vu
ZHMobGF5ZXJSZWN0LnNpemUoKSk7CisgICAgbGF5ZXJQdHItPnNldERyYXdzQ29udGVudCh0cnVl
KTsgLy8gb25seSBjaGlsZHJlbiBkcmF3IGNvbnRlbnQKKyAgICBsYXllclB0ci0+c2V0T3BhcXVl
KHRydWUpOworICAgIHBhcmVudC0+YWRkQ2hpbGQobGF5ZXIucmVsZWFzZSgpKTsKKyAgICBpZiAo
cmVzdWx0KQorICAgICAgICAqcmVzdWx0ID0gbGF5ZXJQdHI7Cit9CisKIHN0YXRpYyB2b2lkIHNl
dHVwTGF5ZXJzRm9yVGV4dHVyZUNhY2hpbmcoQ0NMYXllclRyZWVIb3N0SW1wbCogbGF5ZXJUcmVl
SG9zdEltcGwsIENDTGF5ZXJJbXBsKiYgcm9vdFB0ciwgQ0NMYXllckltcGwqJiBpbnRlcm1lZGlh
dGVMYXllclB0ciwgQ0NMYXllckltcGwqJiBzdXJmYWNlTGF5ZXJQdHIsIENDTGF5ZXJJbXBsKiYg
Y2hpbGRQdHIsIGNvbnN0IEludFNpemUmIHJvb3RTaXplKQogewogICAgIE93blB0cjxDQ0dyYXBo
aWNzQ29udGV4dD4gY29udGV4dCA9IENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRChhZG9wdFB0
cihuZXcgUGFydGlhbFN3YXBDb250ZXh0KSk7CkBAIC0yNDkwLDUwICsyNTA2LDIwIEBAIHN0YXRp
YyB2b2lkIHNldHVwTGF5ZXJzRm9yVGV4dHVyZUNhY2hpbmcoQ0NMYXllclRyZWVIb3N0SW1wbCog
bGF5ZXJUcmVlSG9zdEltcGwsCiAgICAgcm9vdC0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCgwLCAw
KSk7CiAgICAgcm9vdC0+c2V0Qm91bmRzKHJvb3RTaXplKTsKICAgICByb290LT5zZXRDb250ZW50
Qm91bmRzKHJvb3RTaXplKTsKLSAgICByb290LT5zZXRWaXNpYmxlQ29udGVudFJlY3QoSW50UmVj
dChJbnRQb2ludCgwLCAwKSwgcm9vdFNpemUpKTsKICAgICByb290LT5zZXREcmF3c0NvbnRlbnQo
dHJ1ZSk7CiAgICAgbGF5ZXJUcmVlSG9zdEltcGwtPnNldFJvb3RMYXllcihyb290LnJlbGVhc2Uo
KSk7CiAKLSAgICAvLyBJbnRlcm1lZGlhdGUgbGF5ZXIgZG9lcyBub3Qgb3duIGEgc3VyZmFjZSwg
YW5kIGRvZXMgbm90IGRyYXcgY29udGVudC4KLSAgICBPd25QdHI8Q0NMYXllckltcGw+IGludGVy
bWVkaWF0ZUxheWVyID0gQ0NMYXllckltcGw6OmNyZWF0ZSgyKTsKLSAgICBpbnRlcm1lZGlhdGVM
YXllclB0ciA9IGludGVybWVkaWF0ZUxheWVyLmdldCgpOwotCi0gICAgaW50ZXJtZWRpYXRlTGF5
ZXJQdHItPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQoMCwgMCkpOwotICAgIGludGVybWVkaWF0
ZUxheWVyUHRyLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KDEwLCAxMCkpOwotICAgIGludGVybWVk
aWF0ZUxheWVyUHRyLT5zZXRCb3VuZHMocm9vdFNpemUpOwotICAgIGludGVybWVkaWF0ZUxheWVy
UHRyLT5zZXRDb250ZW50Qm91bmRzKHJvb3RTaXplKTsKLSAgICBpbnRlcm1lZGlhdGVMYXllclB0
ci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQoMCwgMCksIHJvb3RTaXpl
KSk7CisgICAgYWRkRHJhd2luZ0xheWVyVG8ocm9vdFB0ciwgMiwgSW50UmVjdCgxMCwgMTAsIHJv
b3RTaXplLndpZHRoKCksIHJvb3RTaXplLmhlaWdodCgpKSwgJmludGVybWVkaWF0ZUxheWVyUHRy
KTsKICAgICBpbnRlcm1lZGlhdGVMYXllclB0ci0+c2V0RHJhd3NDb250ZW50KGZhbHNlKTsgLy8g
b25seSBjaGlsZHJlbiBkcmF3IGNvbnRlbnQKLSAgICByb290UHRyLT5hZGRDaGlsZChpbnRlcm1l
ZGlhdGVMYXllci5yZWxlYXNlKCkpOwotCi0gICAgT3duUHRyPENDTGF5ZXJJbXBsPiBzdXJmYWNl
TGF5ZXIgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDMpOwotICAgIHN1cmZhY2VMYXllclB0ciA9IHN1
cmZhY2VMYXllci5nZXQoKTsKIAogICAgIC8vIFN1cmZhY2UgbGF5ZXIgaXMgdGhlIGxheWVyIHRo
YXQgY2hhbmdlcyBpdHMgb3BhY2l0eQogICAgIC8vIEl0IHdpbGwgY29udGFpbiBvdGhlciBsYXll
cnMgdGhhdCBkcmF3IGNvbnRlbnQuCi0gICAgSW50U2l6ZSBzdXJmYWNlU2l6ZShyb290U2l6ZS53
aWR0aCgpLCByb290U2l6ZS5oZWlnaHQoKSk7Ci0gICAgc3VyZmFjZUxheWVyUHRyLT5zZXRBbmNo
b3JQb2ludChGbG9hdFBvaW50KDAsIDApKTsKLSAgICBzdXJmYWNlTGF5ZXJQdHItPnNldFBvc2l0
aW9uKEZsb2F0UG9pbnQoMTAsIDEwKSk7Ci0gICAgc3VyZmFjZUxheWVyUHRyLT5zZXRCb3VuZHMo
c3VyZmFjZVNpemUpOwotICAgIHN1cmZhY2VMYXllclB0ci0+c2V0Q29udGVudEJvdW5kcyhzdXJm
YWNlU2l6ZSk7Ci0gICAgc3VyZmFjZUxheWVyUHRyLT5zZXRWaXNpYmxlQ29udGVudFJlY3QoSW50
UmVjdChJbnRQb2ludCgwLCAwKSwgc3VyZmFjZVNpemUpKTsKKyAgICBhZGREcmF3aW5nTGF5ZXJU
byhpbnRlcm1lZGlhdGVMYXllclB0ciwgMywgSW50UmVjdCgxMCwgMTAsIHJvb3RTaXplLndpZHRo
KCksIHJvb3RTaXplLmhlaWdodCgpKSwgJnN1cmZhY2VMYXllclB0cik7CiAgICAgc3VyZmFjZUxh
eWVyUHRyLT5zZXREcmF3c0NvbnRlbnQoZmFsc2UpOyAvLyBvbmx5IGNoaWxkcmVuIGRyYXcgY29u
dGVudAogICAgIHN1cmZhY2VMYXllclB0ci0+c2V0T3BhY2l0eSgwLjVmKTsgLy8gVGhpcyB3aWxs
IGNhdXNlIGl0IHRvIGhhdmUgYSBzdXJmYWNlCi0gICAgaW50ZXJtZWRpYXRlTGF5ZXJQdHItPmFk
ZENoaWxkKHN1cmZhY2VMYXllci5yZWxlYXNlKCkpOwogCiAgICAgLy8gQ2hpbGQgb2YgdGhlIHN1
cmZhY2UgbGF5ZXIgd2lsbCBwcm9kdWNlIHNvbWUgcXVhZHMKLSAgICBPd25QdHI8RmFrZUxheWVy
V2l0aFF1YWRzPiBjaGlsZCA9IEZha2VMYXllcldpdGhRdWFkczo6Y3JlYXRlKDQpOwotICAgIGNo
aWxkUHRyID0gY2hpbGQuZ2V0KCk7Ci0KLSAgICBJbnRTaXplIGNoaWxkU2l6ZShyb290U2l6ZS53
aWR0aCgpLCByb290U2l6ZS5oZWlnaHQoKSk7Ci0gICAgY2hpbGRQdHItPnNldEFuY2hvclBvaW50
KEZsb2F0UG9pbnQoMCwgMCkpOwotICAgIGNoaWxkUHRyLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50
KDUsIDUpKTsKLSAgICBjaGlsZFB0ci0+c2V0Qm91bmRzKGNoaWxkU2l6ZSk7Ci0gICAgY2hpbGRQ
dHItPnNldENvbnRlbnRCb3VuZHMoY2hpbGRTaXplKTsKLSAgICBjaGlsZFB0ci0+c2V0VmlzaWJs
ZUNvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQoMCwgMCksIGNoaWxkU2l6ZSkpOwotICAgIGNo
aWxkUHRyLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7Ci0KLSAgICBzdXJmYWNlTGF5ZXJQdHItPmFk
ZENoaWxkKGNoaWxkLnJlbGVhc2UoKSk7CisgICAgYWRkRHJhd2luZ0xheWVyVG8oc3VyZmFjZUxh
eWVyUHRyLCA0LCBJbnRSZWN0KDUsIDUsIHJvb3RTaXplLndpZHRoKCksIHJvb3RTaXplLmhlaWdo
dCgpKSwgJmNoaWxkUHRyKTsKIH0KIAogY2xhc3MgTGF5ZXJSZW5kZXJlckNocm9taXVtV2l0aFJl
bGVhc2VUZXh0dXJlcyA6IHB1YmxpYyBMYXllclJlbmRlcmVyQ2hyb21pdW0gewpAQCAtMjU0MSw2
ICsyNTI3LDUzOSBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpy
ZWxlYXNlUmVuZGVyUGFzc1RleHR1cmVzOwogfTsKIAorVEVTVF9GKENDTGF5ZXJUcmVlSG9zdElt
cGxUZXN0LCB0ZXh0dXJlQ2FjaGluZ1dpdGhDbGlwcGluZykKK3sKKyAgICBDQ1NldHRpbmdzOjpz
ZXRQYXJ0aWFsU3dhcEVuYWJsZWQodHJ1ZSk7CisKKyAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNl
dHRpbmdzOworICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBteUhvc3RJbXBsID0gQ0NM
YXllclRyZWVIb3N0SW1wbDo6Y3JlYXRlKHNldHRpbmdzLCB0aGlzKTsKKworICAgIENDTGF5ZXJJ
bXBsKiByb290UHRyOworICAgIENDTGF5ZXJJbXBsKiBzdXJmYWNlTGF5ZXJQdHI7CisKKyAgICBP
d25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNvbnRleHQgPSBDQ0dyYXBoaWNzQ29udGV4dDo6Y3Jl
YXRlM0QoYWRvcHRQdHIobmV3IFBhcnRpYWxTd2FwQ29udGV4dCkpOworCisgICAgSW50U2l6ZSBy
b290U2l6ZSgxMDAsIDEwMCk7CisKKyAgICBteUhvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5k
ZXJlcihjb250ZXh0LnJlbGVhc2UoKSwgVW50aHJvdHRsZWRVcGxvYWRlcik7CisgICAgbXlIb3N0
SW1wbC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUocm9vdFNpemUud2lkdGgoKSwgcm9vdFNpemUu
aGVpZ2h0KCkpKTsKKworICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IENDTGF5ZXJJbXBs
OjpjcmVhdGUoMSk7CisgICAgcm9vdFB0ciA9IHJvb3QuZ2V0KCk7CisKKyAgICByb290LT5zZXRB
bmNob3JQb2ludChGbG9hdFBvaW50KDAsIDApKTsKKyAgICByb290LT5zZXRQb3NpdGlvbihGbG9h
dFBvaW50KDAsIDApKTsKKyAgICByb290LT5zZXRCb3VuZHMocm9vdFNpemUpOworICAgIHJvb3Qt
PnNldENvbnRlbnRCb3VuZHMocm9vdFNpemUpOworICAgIHJvb3QtPnNldERyYXdzQ29udGVudCh0
cnVlKTsKKyAgICByb290LT5zZXRNYXNrc1RvQm91bmRzKHRydWUpOworICAgIG15SG9zdEltcGwt
PnNldFJvb3RMYXllcihyb290LnJlbGVhc2UoKSk7CisKKyAgICBhZGREcmF3aW5nTGF5ZXJUbyhy
b290UHRyLCAzLCBJbnRSZWN0KDAsIDAsIHJvb3RTaXplLndpZHRoKCksIHJvb3RTaXplLmhlaWdo
dCgpKSwgJnN1cmZhY2VMYXllclB0cik7CisgICAgc3VyZmFjZUxheWVyUHRyLT5zZXREcmF3c0Nv
bnRlbnQoZmFsc2UpOworCisgICAgLy8gU3VyZmFjZSBsYXllciBpcyB0aGUgbGF5ZXIgdGhhdCBj
aGFuZ2VzIGl0cyBvcGFjaXR5CisgICAgLy8gSXQgd2lsbCBjb250YWluIG90aGVyIGxheWVycyB0
aGF0IGRyYXcgY29udGVudC4KKyAgICBzdXJmYWNlTGF5ZXJQdHItPnNldE9wYWNpdHkoMC41Zik7
IC8vIFRoaXMgd2lsbCBjYXVzZSBpdCB0byBoYXZlIGEgc3VyZmFjZQorCisgICAgYWRkRHJhd2lu
Z0xheWVyVG8oc3VyZmFjZUxheWVyUHRyLCA0LCBJbnRSZWN0KDAsIDAsIDEwMCwgMyksIDApOwor
ICAgIGFkZERyYXdpbmdMYXllclRvKHN1cmZhY2VMYXllclB0ciwgNSwgSW50UmVjdCgwLCA5Nywg
MTAwLCAzKSwgMCk7CisKKyAgICAvLyBSb3RhdGlvbiB3aWxsIHB1dCBwYXJ0IG9mIHRoZSBjaGls
ZCBvdXNpZGUgdGhlIGJvdW5kcyBvZiB0aGUgcm9vdCBsYXllci4KKyAgICAvLyBOZXZlcnRoZWxl
c3MsIHRoZSBjaGlsZCBsYXllcnMgc2hvdWxkIGJlIGRyYXduLgorICAgIFdlYlRyYW5zZm9ybWF0
aW9uTWF0cml4IHRyYW5zZm9ybSA9IHN1cmZhY2VMYXllclB0ci0+dHJhbnNmb3JtKCk7CisgICAg
dHJhbnNmb3JtLnRyYW5zbGF0ZSg1MCwgNTApOworICAgIHRyYW5zZm9ybS5yb3RhdGUoMzUpOwor
ICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoLTUwLCAtNTApOworICAgIHN1cmZhY2VMYXllclB0ci0+
c2V0VHJhbnNmb3JtKHRyYW5zZm9ybSk7CisKKyAgICB7CisgICAgICAgIENDTGF5ZXJUcmVlSG9z
dEltcGw6OkZyYW1lRGF0YSBmcmFtZTsKKyAgICAgICAgRVhQRUNUX1RSVUUobXlIb3N0SW1wbC0+
cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworCisgICAgICAgIC8vIE11c3QgcmVjZWl2ZSB0d28gcmVu
ZGVyIHBhc3NlcywgZWFjaCB3aXRoIG9uZSBxdWFkCisgICAgICAgIEFTU0VSVF9FUSgyVSwgZnJh
bWUucmVuZGVyUGFzc2VzLnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUSgyVSwgZnJhbWUucmVu
ZGVyUGFzc2VzWzBdLT5xdWFkTGlzdCgpLnNpemUoKSk7CisgICAgICAgIEFTU0VSVF9FUSgxVSwg
ZnJhbWUucmVuZGVyUGFzc2VzWzFdLT5xdWFkTGlzdCgpLnNpemUoKSk7CisKKyAgICAgICAgLy8g
VmVyaWZ5IHRoYXQgdGhlIGNoaWxkIGxheWVycyBoYXZlIGJlZW4gZHJhd24gZW50aXJlbHkuCisg
ICAgICAgIEludFJlY3QgcXVhZFZpc2libGVSZWN0ID0gZnJhbWUucmVuZGVyUGFzc2VzWzBdLT5x
dWFkTGlzdCgpWzBdLT5xdWFkVmlzaWJsZVJlY3QoKTsKKyAgICAgICAgRVhQRUNUX0lOVF9SRUNU
X0VRKEludFJlY3QoMCwgMCwgMTAwLCAzKSwgcXVhZFZpc2libGVSZWN0KTsKKworICAgICAgICBx
dWFkVmlzaWJsZVJlY3QgPSBmcmFtZS5yZW5kZXJQYXNzZXNbMF0tPnF1YWRMaXN0KClbMV0tPnF1
YWRWaXNpYmxlUmVjdCgpOworICAgICAgICBFWFBFQ1RfSU5UX1JFQ1RfRVEoSW50UmVjdCgwLCAw
LCAxMDAsIDMpLCBxdWFkVmlzaWJsZVJlY3QpOworCisgICAgICAgIEVYUEVDVF9FUShDQ0RyYXdR
dWFkOjpSZW5kZXJQYXNzLCBmcmFtZS5yZW5kZXJQYXNzZXNbMV0tPnF1YWRMaXN0KClbMF0tPm1h
dGVyaWFsKCkpOworICAgICAgICBDQ1JlbmRlclBhc3NEcmF3UXVhZCogcXVhZCA9IHN0YXRpY19j
YXN0PENDUmVuZGVyUGFzc0RyYXdRdWFkKj4oZnJhbWUucmVuZGVyUGFzc2VzWzFdLT5xdWFkTGlz
dCgpWzBdLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHF1YWQtPmNvbnRlbnRzQ2hhbmdl
ZFNpbmNlTGFzdEZyYW1lKCkuaXNFbXB0eSgpKTsKKworICAgICAgICBteUhvc3RJbXBsLT5kcmF3
TGF5ZXJzKGZyYW1lKTsKKyAgICAgICAgbXlIb3N0SW1wbC0+ZGlkRHJhd0FsbExheWVycyhmcmFt
ZSk7CisgICAgfQorCisgICAgdHJhbnNmb3JtID0gc3VyZmFjZUxheWVyUHRyLT50cmFuc2Zvcm0o
KTsKKyAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKDUwLCA1MCk7CisgICAgdHJhbnNmb3JtLnJvdGF0
ZSgtMzUpOworICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoLTUwLCAtNTApOworICAgIHN1cmZhY2VM
YXllclB0ci0+c2V0VHJhbnNmb3JtKHRyYW5zZm9ybSk7CisKKyAgICAvLyBUaGUgc3VyZmFjZSBp
cyBub3cgYWxpZ25lZCBhZ2FpbiwgYW5kIHRoZSBjbGlwcGVkIHBhcnRzIGFyZSBleHBvc2VkLgor
ICAgIC8vIFRoYXQgc2hvdWxkIGJlIE9LLCBhcyB3ZSd2ZSBhbHJlYWR5IHZlcmlmaWVkIHRoYXQg
dGhlIHF1YWRzIGFyZSBkcmF3biBpbiBmdWxsLgorICAgIC8vIFZlcmlmeSB0aGF0IHRoZSByZW5k
ZXIgcGFzcyBpcyByZW1vdmVkLgorICAgIHsKKyAgICAgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6
RnJhbWVEYXRhIGZyYW1lOworICAgICAgICBFWFBFQ1RfVFJVRShteUhvc3RJbXBsLT5wcmVwYXJl
VG9EcmF3KGZyYW1lKSk7CisKKyAgICAgICAgLy8gTXVzdCByZWNlaXZlIGEgc2luZ2xlIHJlbmRl
ciBwYXNzIHVzaW5nIGEgY2FjaGVkIHRleHR1cmUuCisgICAgICAgIEFTU0VSVF9FUSgxVSwgZnJh
bWUucmVuZGVyUGFzc2VzLnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxVSwgZnJhbWUucmVu
ZGVyUGFzc2VzWzBdLT5xdWFkTGlzdCgpLnNpemUoKSk7CisKKyAgICAgICAgbXlIb3N0SW1wbC0+
ZHJhd0xheWVycyhmcmFtZSk7CisgICAgICAgIG15SG9zdEltcGwtPmRpZERyYXdBbGxMYXllcnMo
ZnJhbWUpOworICAgIH0KK30KKworVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCB0ZXh0
dXJlQ2FjaGluZ1dpdGhPY2NsdXNpb24pCit7CisgICAgQ0NTZXR0aW5nczo6c2V0UGFydGlhbFN3
YXBFbmFibGVkKGZhbHNlKTsKKworICAgIENDTGF5ZXJUcmVlU2V0dGluZ3Mgc2V0dGluZ3M7Cisg
ICAgT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IG15SG9zdEltcGwgPSBDQ0xheWVyVHJlZUhv
c3RJbXBsOjpjcmVhdGUoc2V0dGluZ3MsIHRoaXMpOworCisgICAgLy8gTGF5ZXJzIGFyZSBzdHJ1
Y3R1cmUgYXMgZm9sbG93czoKKyAgICAvLworICAgIC8vICBSICstLSBTMSArLSBMMTAgKG93bmlu
ZykKKyAgICAvLyAgICB8ICAgICAgKy0gTDExCisgICAgLy8gICAgfCAgICAgICstIEwxMgorICAg
IC8vICAgIHwKKyAgICAvLyAgICArLS0gUzIgKy0gTDIwIChvd25pbmcpCisgICAgLy8gICAgICAg
ICAgICstIEwyMQorICAgIC8vCisgICAgLy8gT2NjbHVzaW9uOgorICAgIC8vIEwxMiBvY2NsdWRl
cyBMMTEgKGludGVybmFsKQorICAgIC8vIEwyMCBvY2NsdWRlcyBMMTAgKGV4dGVybmFsKQorICAg
IC8vIEwyMSBvY2NsdWRlcyBMMjAgKGludGVybmFsKQorCisgICAgQ0NMYXllckltcGwqIHJvb3RQ
dHI7CisgICAgQ0NMYXllckltcGwqIGxheWVyUzFQdHI7CisgICAgQ0NMYXllckltcGwqIGxheWVy
UzJQdHI7CisKKyAgICBPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNvbnRleHQgPSBDQ0dyYXBo
aWNzQ29udGV4dDo6Y3JlYXRlM0QoYWRvcHRQdHIobmV3IFBhcnRpYWxTd2FwQ29udGV4dCkpOwor
CisgICAgSW50U2l6ZSByb290U2l6ZSgxMDAwLCAxMDAwKTsKKworICAgIG15SG9zdEltcGwtPmlu
aXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQucmVsZWFzZSgpLCBVbnRocm90dGxlZFVwbG9h
ZGVyKTsKKyAgICBteUhvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZShyb290U2l6ZS53
aWR0aCgpLCByb290U2l6ZS5oZWlnaHQoKSkpOworCisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBy
b290ID0gQ0NMYXllckltcGw6OmNyZWF0ZSgxKTsKKyAgICByb290UHRyID0gcm9vdC5nZXQoKTsK
KworICAgIHJvb3QtPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQoMCwgMCkpOworICAgIHJvb3Qt
PnNldFBvc2l0aW9uKEZsb2F0UG9pbnQoMCwgMCkpOworICAgIHJvb3QtPnNldEJvdW5kcyhyb290
U2l6ZSk7CisgICAgcm9vdC0+c2V0Q29udGVudEJvdW5kcyhyb290U2l6ZSk7CisgICAgcm9vdC0+
c2V0RHJhd3NDb250ZW50KHRydWUpOworICAgIHJvb3QtPnNldE1hc2tzVG9Cb3VuZHModHJ1ZSk7
CisgICAgbXlIb3N0SW1wbC0+c2V0Um9vdExheWVyKHJvb3QucmVsZWFzZSgpKTsKKworICAgIGFk
ZERyYXdpbmdMYXllclRvKHJvb3RQdHIsIDIsIEludFJlY3QoMzAwLCAzMDAsIDMwMCwgMzAwKSwg
JmxheWVyUzFQdHIpOworICAgIGxheWVyUzFQdHItPnNldEZvcmNlUmVuZGVyU3VyZmFjZSh0cnVl
KTsKKworICAgIGFkZERyYXdpbmdMYXllclRvKGxheWVyUzFQdHIsIDMsIEludFJlY3QoMTAsIDEw
LCAxMCwgMTApLCAwKTsgLy8gTDExCisgICAgYWRkRHJhd2luZ0xheWVyVG8obGF5ZXJTMVB0ciwg
NCwgSW50UmVjdCgwLCAwLCAzMCwgMzApLCAwKTsgLy8gTDEyCisKKyAgICBhZGREcmF3aW5nTGF5
ZXJUbyhyb290UHRyLCA1LCBJbnRSZWN0KDU1MCwgMjUwLCAzMDAsIDQwMCksICZsYXllclMyUHRy
KTsKKyAgICBsYXllclMyUHRyLT5zZXRGb3JjZVJlbmRlclN1cmZhY2UodHJ1ZSk7CisKKyAgICBh
ZGREcmF3aW5nTGF5ZXJUbyhsYXllclMyUHRyLCA2LCBJbnRSZWN0KDIwLCAyMCwgNSwgNSksIDAp
OyAvLyBMMjEKKworICAgIC8vIEluaXRpYWwgZHJhdyAtIG11c3QgcmVjZWl2ZSBhbGwgcXVhZHMK
KyAgICB7CisgICAgICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSBmcmFtZTsKKyAg
ICAgICAgRVhQRUNUX1RSVUUobXlIb3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworCisg
ICAgICAgIC8vIE11c3QgcmVjZWl2ZSAzIHJlbmRlciBwYXNzZXMuCisgICAgICAgIC8vIEZvciBS
b290LCB0aGVyZSBhcmUgMiBxdWFkczsgZm9yIFMxLCB0aGVyZSBhcmUgMyBxdWFkczsgZm9yIFMy
LCB0aGVyZSBpcyAxIHF1YWQuCisgICAgICAgIEFTU0VSVF9FUSgzVSwgZnJhbWUucmVuZGVyUGFz
c2VzLnNpemUoKSk7CisKKyAgICAgICAgRVhQRUNUX0VRKDJVLCBmcmFtZS5yZW5kZXJQYXNzZXNb
MF0tPnF1YWRMaXN0KCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKDNVLCBmcmFtZS5yZW5k
ZXJQYXNzZXNbMV0tPnF1YWRMaXN0KCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKDJVLCBm
cmFtZS5yZW5kZXJQYXNzZXNbMl0tPnF1YWRMaXN0KCkuc2l6ZSgpKTsKKworICAgICAgICBteUhv
c3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKKyAgICAgICAgbXlIb3N0SW1wbC0+ZGlkRHJhd0Fs
bExheWVycyhmcmFtZSk7CisgICAgfQorCisgICAgLy8gIlVub2NjbHVkZSIgc3VyZmFjZSBTMSBh
bmQgcmVwZWF0IGRyYXcuCisgICAgLy8gTXVzdCByZW1vdmUgUzIncyByZW5kZXIgcGFzcyBzaW5j
ZSBpdCdzIGNhY2hlZDsKKyAgICAvLyBNdXN0IGtlZXAgUzEgcXVhZHMgYmVjYXVzZSB0ZXh0dXJl
IGNvbnRhaW5lZCBleHRlcm5hbCBvY2NsdXNpb24uCisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRy
aXggdHJhbnNmb3JtID0gbGF5ZXJTMlB0ci0+dHJhbnNmb3JtKCk7CisgICAgdHJhbnNmb3JtLnRy
YW5zbGF0ZSgxNTAsIDE1MCk7CisgICAgbGF5ZXJTMlB0ci0+c2V0VHJhbnNmb3JtKHRyYW5zZm9y
bSk7CisgICAgeworICAgICAgICBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEgZnJhbWU7
CisgICAgICAgIEVYUEVDVF9UUlVFKG15SG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsK
KworICAgICAgICAvLyBNdXN0IHJlY2VpdmUgMiByZW5kZXIgcGFzc2VzLgorICAgICAgICAvLyBG
b3IgUm9vdCwgdGhlcmUgYXJlIDIgcXVhZHMKKyAgICAgICAgLy8gRm9yIFMxLCB0aGUgbnVtYmVy
IG9mIHF1YWRzIGRlcGVuZHMgb24gd2hhdCBnb3QgdW5vY2NsdWRlZCwgc28gbm90IGFzc2VydGVk
IGJleW9uZCBiZWluZyBwb3NpdGl2ZS4KKyAgICAgICAgLy8gRm9yIFMyLCB0aGVyZSBpcyBubyBy
ZW5kZXIgcGFzcworICAgICAgICBBU1NFUlRfRVEoMlUsIGZyYW1lLnJlbmRlclBhc3Nlcy5zaXpl
KCkpOworCisgICAgICAgIEVYUEVDVF9HVChmcmFtZS5yZW5kZXJQYXNzZXNbMF0tPnF1YWRMaXN0
KCkuc2l6ZSgpLCAwVSk7CisgICAgICAgIEVYUEVDVF9FUSgyVSwgZnJhbWUucmVuZGVyUGFzc2Vz
WzFdLT5xdWFkTGlzdCgpLnNpemUoKSk7CisKKyAgICAgICAgbXlIb3N0SW1wbC0+ZHJhd0xheWVy
cyhmcmFtZSk7CisgICAgICAgIG15SG9zdEltcGwtPmRpZERyYXdBbGxMYXllcnMoZnJhbWUpOwor
ICAgIH0KKworICAgIC8vICJSZS1vY2NsdWRlIiBzdXJmYWNlIFMxIGFuZCByZXBlYXQgZHJhdy4K
KyAgICAvLyBNdXN0IHJlbW92ZSBTMSdzIHJlbmRlciBwYXNzIHNpbmNlIGl0IGlzIG5vdyBhdmFp
bGFibGUgaW4gZnVsbC4KKyAgICAvLyBTMiBoYXMgbm8gY2hhbmdlIHNvIG11c3QgYWxzbyBiZSBy
ZW1vdmVkLgorICAgIHRyYW5zZm9ybSA9IGxheWVyUzJQdHItPnRyYW5zZm9ybSgpOworICAgIHRy
YW5zZm9ybS50cmFuc2xhdGUoLTE1LCAtMTUpOworICAgIGxheWVyUzJQdHItPnNldFRyYW5zZm9y
bSh0cmFuc2Zvcm0pOworICAgIHsKKyAgICAgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVE
YXRhIGZyYW1lOworICAgICAgICBFWFBFQ1RfVFJVRShteUhvc3RJbXBsLT5wcmVwYXJlVG9EcmF3
KGZyYW1lKSk7CisKKyAgICAgICAgLy8gTXVzdCByZWNlaXZlIDEgcmVuZGVyIHBhc3MgLSBmb3Ig
dGhlIHJvb3QuCisgICAgICAgIEFTU0VSVF9FUSgxVSwgZnJhbWUucmVuZGVyUGFzc2VzLnNpemUo
KSk7CisKKyAgICAgICAgRVhQRUNUX0VRKDJVLCBmcmFtZS5yZW5kZXJQYXNzZXNbMF0tPnF1YWRM
aXN0KCkuc2l6ZSgpKTsKKworICAgICAgICBteUhvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsK
KyAgICAgICAgbXlIb3N0SW1wbC0+ZGlkRHJhd0FsbExheWVycyhmcmFtZSk7CisgICAgfQorCit9
CisKK1RFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgdGV4dHVyZUNhY2hpbmdXaXRoT2Nj
bHVzaW9uRWFybHlPdXQpCit7CisgICAgQ0NTZXR0aW5nczo6c2V0UGFydGlhbFN3YXBFbmFibGVk
KGZhbHNlKTsKKworICAgIENDTGF5ZXJUcmVlU2V0dGluZ3Mgc2V0dGluZ3M7CisgICAgT3duUHRy
PENDTGF5ZXJUcmVlSG9zdEltcGw+IG15SG9zdEltcGwgPSBDQ0xheWVyVHJlZUhvc3RJbXBsOjpj
cmVhdGUoc2V0dGluZ3MsIHRoaXMpOworCisgICAgLy8gTGF5ZXJzIGFyZSBzdHJ1Y3R1cmUgYXMg
Zm9sbG93czoKKyAgICAvLworICAgIC8vICBSICstLSBTMSArLSBMMTAgKG93bmluZywgbm9uIGRy
YXdpbmcpCisgICAgLy8gICAgfCAgICAgICstIEwxMSAoY29ybmVyLCB1bm9jY2x1ZGVkKQorICAg
IC8vICAgIHwgICAgICArLSBMMTIgKGNvcm5lciwgdW5vY2NsdWRlZCkKKyAgICAvLyAgICB8ICAg
ICAgKy0gTDEzIChjb3JuZXIsIHVub2NjbHVkZWQpCisgICAgLy8gICAgfCAgICAgICstIEwxNCAo
Y29ybmVyLCBlbnRpcmVseSBvY2NsdWRlZCkKKyAgICAvLyAgICB8CisgICAgLy8gICAgKy0tIFMy
ICstIEwyMCAob3duaW5nLCBkcmF3aW5nKQorICAgIC8vCisKKyAgICBDQ0xheWVySW1wbCogcm9v
dFB0cjsKKyAgICBDQ0xheWVySW1wbCogbGF5ZXJTMVB0cjsKKyAgICBDQ0xheWVySW1wbCogbGF5
ZXJTMlB0cjsKKworICAgIE93blB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY29udGV4dCA9IENDR3Jh
cGhpY3NDb250ZXh0OjpjcmVhdGUzRChhZG9wdFB0cihuZXcgUGFydGlhbFN3YXBDb250ZXh0KSk7
CisKKyAgICBJbnRTaXplIHJvb3RTaXplKDEwMDAsIDEwMDApOworCisgICAgbXlIb3N0SW1wbC0+
aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY29udGV4dC5yZWxlYXNlKCksIFVudGhyb3R0bGVkVXBs
b2FkZXIpOworICAgIG15SG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKHJvb3RTaXpl
LndpZHRoKCksIHJvb3RTaXplLmhlaWdodCgpKSk7CisKKyAgICBPd25QdHI8Q0NMYXllckltcGw+
IHJvb3QgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDEpOworICAgIHJvb3RQdHIgPSByb290LmdldCgp
OworCisgICAgcm9vdC0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgwLCAwKSk7CisgICAgcm9v
dC0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCgwLCAwKSk7CisgICAgcm9vdC0+c2V0Qm91bmRzKHJv
b3RTaXplKTsKKyAgICByb290LT5zZXRDb250ZW50Qm91bmRzKHJvb3RTaXplKTsKKyAgICByb290
LT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7CisgICAgcm9vdC0+c2V0TWFza3NUb0JvdW5kcyh0cnVl
KTsKKyAgICBteUhvc3RJbXBsLT5zZXRSb290TGF5ZXIocm9vdC5yZWxlYXNlKCkpOworCisgICAg
YWRkRHJhd2luZ0xheWVyVG8ocm9vdFB0ciwgMiwgSW50UmVjdCgwLCAwLCA4MDAsIDgwMCksICZs
YXllclMxUHRyKTsKKyAgICBsYXllclMxUHRyLT5zZXRGb3JjZVJlbmRlclN1cmZhY2UodHJ1ZSk7
CisgICAgbGF5ZXJTMVB0ci0+c2V0RHJhd3NDb250ZW50KGZhbHNlKTsKKworICAgIGFkZERyYXdp
bmdMYXllclRvKGxheWVyUzFQdHIsIDMsIEludFJlY3QoMCwgMCwgMzAwLCAzMDApLCAwKTsgLy8g
TDExCisgICAgYWRkRHJhd2luZ0xheWVyVG8obGF5ZXJTMVB0ciwgNCwgSW50UmVjdCgwLCA1MDAs
IDMwMCwgMzAwKSwgMCk7IC8vIEwxMgorICAgIGFkZERyYXdpbmdMYXllclRvKGxheWVyUzFQdHIs
IDUsIEludFJlY3QoNTAwLCAwLCAzMDAsIDMwMCksIDApOyAvLyBMMTMKKyAgICBhZGREcmF3aW5n
TGF5ZXJUbyhsYXllclMxUHRyLCA2LCBJbnRSZWN0KDUwMCwgNTAwLCAzMDAsIDMwMCksIDApOyAv
LyBMMTQKKyAgICBhZGREcmF3aW5nTGF5ZXJUbyhsYXllclMxUHRyLCA5LCBJbnRSZWN0KDUwMCwg
NTAwLCAzMDAsIDMwMCksIDApOyAvLyBMMTQKKworICAgIGFkZERyYXdpbmdMYXllclRvKHJvb3RQ
dHIsIDcsIEludFJlY3QoNDUwLCA0NTAsIDQ1MCwgNDUwKSwgJmxheWVyUzJQdHIpOworICAgIGxh
eWVyUzJQdHItPnNldEZvcmNlUmVuZGVyU3VyZmFjZSh0cnVlKTsKKworICAgIC8vIEluaXRpYWwg
ZHJhdyAtIG11c3QgcmVjZWl2ZSBhbGwgcXVhZHMKKyAgICB7CisgICAgICAgIENDTGF5ZXJUcmVl
SG9zdEltcGw6OkZyYW1lRGF0YSBmcmFtZTsKKyAgICAgICAgRVhQRUNUX1RSVUUobXlIb3N0SW1w
bC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworCisgICAgICAgIC8vIE11c3QgcmVjZWl2ZSAzIHJl
bmRlciBwYXNzZXMuCisgICAgICAgIC8vIEZvciBSb290LCB0aGVyZSBhcmUgMiBxdWFkczsgZm9y
IFMxLCB0aGVyZSBhcmUgMyBxdWFkczsgZm9yIFMyLCB0aGVyZSBpcyAxIHF1YWQuCisgICAgICAg
IEFTU0VSVF9FUSgzVSwgZnJhbWUucmVuZGVyUGFzc2VzLnNpemUoKSk7CisKKyAgICAgICAgRVhQ
RUNUX0VRKDFVLCBmcmFtZS5yZW5kZXJQYXNzZXNbMF0tPnF1YWRMaXN0KCkuc2l6ZSgpKTsKKwor
ICAgICAgICAvLyBMMTQgaXMgY3VsbGVkLCBzbyBvbmx5IDMgcXVhZHMuCisgICAgICAgIEVYUEVD
VF9FUSgzVSwgZnJhbWUucmVuZGVyUGFzc2VzWzFdLT5xdWFkTGlzdCgpLnNpemUoKSk7CisgICAg
ICAgIEVYUEVDVF9FUSgyVSwgZnJhbWUucmVuZGVyUGFzc2VzWzJdLT5xdWFkTGlzdCgpLnNpemUo
KSk7CisKKyAgICAgICAgbXlIb3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CisgICAgICAgIG15
SG9zdEltcGwtPmRpZERyYXdBbGxMYXllcnMoZnJhbWUpOworICAgIH0KKworICAgIC8vICJVbm9j
Y2x1ZGUiIHN1cmZhY2UgUzEgYW5kIHJlcGVhdCBkcmF3LgorICAgIC8vIE11c3QgcmVtb3ZlIFMy
J3MgcmVuZGVyIHBhc3Mgc2luY2UgaXQncyBjYWNoZWQ7CisgICAgLy8gTXVzdCBrZWVwIFMxIHF1
YWRzIGJlY2F1c2UgdGV4dHVyZSBjb250YWluZWQgZXh0ZXJuYWwgb2NjbHVzaW9uLgorICAgIFdl
YlRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybSA9IGxheWVyUzJQdHItPnRyYW5zZm9ybSgp
OworICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoMTAwLCAxMDApOworICAgIGxheWVyUzJQdHItPnNl
dFRyYW5zZm9ybSh0cmFuc2Zvcm0pOworICAgIHsKKyAgICAgICAgQ0NMYXllclRyZWVIb3N0SW1w
bDo6RnJhbWVEYXRhIGZyYW1lOworICAgICAgICBFWFBFQ1RfVFJVRShteUhvc3RJbXBsLT5wcmVw
YXJlVG9EcmF3KGZyYW1lKSk7CisKKyAgICAgICAgLy8gTXVzdCByZWNlaXZlIDIgcmVuZGVyIHBh
c3Nlcy4KKyAgICAgICAgLy8gRm9yIFJvb3QsIHRoZXJlIGFyZSAyIHF1YWRzCisgICAgICAgIC8v
IEZvciBTMSwgdGhlIG51bWJlciBvZiBxdWFkcyBkZXBlbmRzIG9uIHdoYXQgZ290IHVub2NjbHVk
ZWQsIHNvIG5vdCBhc3NlcnRlZCBiZXlvbmQgYmVpbmcgcG9zaXRpdmUuCisgICAgICAgIC8vIEZv
ciBTMiwgdGhlcmUgaXMgbm8gcmVuZGVyIHBhc3MKKyAgICAgICAgQVNTRVJUX0VRKDJVLCBmcmFt
ZS5yZW5kZXJQYXNzZXMuc2l6ZSgpKTsKKworICAgICAgICBFWFBFQ1RfR1QoZnJhbWUucmVuZGVy
UGFzc2VzWzBdLT5xdWFkTGlzdCgpLnNpemUoKSwgMFUpOworICAgICAgICBFWFBFQ1RfRVEoMlUs
IGZyYW1lLnJlbmRlclBhc3Nlc1sxXS0+cXVhZExpc3QoKS5zaXplKCkpOworCisgICAgICAgIG15
SG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOworICAgICAgICBteUhvc3RJbXBsLT5kaWREcmF3
QWxsTGF5ZXJzKGZyYW1lKTsKKyAgICB9CisKKyAgICAvLyAiUmUtb2NjbHVkZSIgc3VyZmFjZSBT
MSBhbmQgcmVwZWF0IGRyYXcuCisgICAgLy8gTXVzdCByZW1vdmUgUzEncyByZW5kZXIgcGFzcyBz
aW5jZSBpdCBpcyBub3cgYXZhaWxhYmxlIGluIGZ1bGwuCisgICAgLy8gUzIgaGFzIG5vIGNoYW5n
ZSBzbyBtdXN0IGFsc28gYmUgcmVtb3ZlZC4KKyAgICB0cmFuc2Zvcm0gPSBsYXllclMyUHRyLT50
cmFuc2Zvcm0oKTsKKyAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKC0xNSwgLTE1KTsKKyAgICBsYXll
clMyUHRyLT5zZXRUcmFuc2Zvcm0odHJhbnNmb3JtKTsKKyAgICB7CisgICAgICAgIENDTGF5ZXJU
cmVlSG9zdEltcGw6OkZyYW1lRGF0YSBmcmFtZTsKKyAgICAgICAgRVhQRUNUX1RSVUUobXlIb3N0
SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworCisgICAgICAgIC8vIE11c3QgcmVjZWl2ZSAx
IHJlbmRlciBwYXNzIC0gZm9yIHRoZSByb290LgorICAgICAgICBBU1NFUlRfRVEoMVUsIGZyYW1l
LnJlbmRlclBhc3Nlcy5zaXplKCkpOworCisgICAgICAgIEVYUEVDVF9FUSgyVSwgZnJhbWUucmVu
ZGVyUGFzc2VzWzBdLT5xdWFkTGlzdCgpLnNpemUoKSk7CisKKyAgICAgICAgbXlIb3N0SW1wbC0+
ZHJhd0xheWVycyhmcmFtZSk7CisgICAgICAgIG15SG9zdEltcGwtPmRpZERyYXdBbGxMYXllcnMo
ZnJhbWUpOworICAgIH0KKworfQorCitURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHRl
eHR1cmVDYWNoaW5nV2l0aE9jY2x1c2lvbkV4dGVybmFsT3ZlckludGVybmFsKQoreworICAgIEND
U2V0dGluZ3M6OnNldFBhcnRpYWxTd2FwRW5hYmxlZChmYWxzZSk7CisKKyAgICBDQ0xheWVyVHJl
ZVNldHRpbmdzIHNldHRpbmdzOworICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBteUhv
c3RJbXBsID0gQ0NMYXllclRyZWVIb3N0SW1wbDo6Y3JlYXRlKHNldHRpbmdzLCB0aGlzKTsKKwor
ICAgIC8vIExheWVycyBhcmUgc3RydWN0dXJlZCBhcyBmb2xsb3dzOgorICAgIC8vCisgICAgLy8g
IFIgKy0tIFMxICstIEwxMCAob3duaW5nLCBkcmF3aW5nKQorICAgIC8vICAgIHwgICAgICArLSBM
MTEgKGNvcm5lciwgb2NjbHVkZWQgYnkgTDEyKQorICAgIC8vICAgIHwgICAgICArLSBMMTIgKG9w
cG9zaXRlIGNvcm5lcikKKyAgICAvLyAgICB8CisgICAgLy8gICAgKy0tIFMyICstIEwyMCAob3du
aW5nLCBkcmF3aW5nKQorICAgIC8vCisKKyAgICBDQ0xheWVySW1wbCogcm9vdFB0cjsKKyAgICBD
Q0xheWVySW1wbCogbGF5ZXJTMVB0cjsKKyAgICBDQ0xheWVySW1wbCogbGF5ZXJTMlB0cjsKKwor
ICAgIE93blB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY29udGV4dCA9IENDR3JhcGhpY3NDb250ZXh0
OjpjcmVhdGUzRChhZG9wdFB0cihuZXcgUGFydGlhbFN3YXBDb250ZXh0KSk7CisKKyAgICBJbnRT
aXplIHJvb3RTaXplKDEwMDAsIDEwMDApOworCisgICAgbXlIb3N0SW1wbC0+aW5pdGlhbGl6ZUxh
eWVyUmVuZGVyZXIoY29udGV4dC5yZWxlYXNlKCksIFVudGhyb3R0bGVkVXBsb2FkZXIpOworICAg
IG15SG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKHJvb3RTaXplLndpZHRoKCksIHJv
b3RTaXplLmhlaWdodCgpKSk7CisKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBDQ0xh
eWVySW1wbDo6Y3JlYXRlKDEpOworICAgIHJvb3RQdHIgPSByb290LmdldCgpOworCisgICAgcm9v
dC0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgwLCAwKSk7CisgICAgcm9vdC0+c2V0UG9zaXRp
b24oRmxvYXRQb2ludCgwLCAwKSk7CisgICAgcm9vdC0+c2V0Qm91bmRzKHJvb3RTaXplKTsKKyAg
ICByb290LT5zZXRDb250ZW50Qm91bmRzKHJvb3RTaXplKTsKKyAgICByb290LT5zZXREcmF3c0Nv
bnRlbnQodHJ1ZSk7CisgICAgcm9vdC0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKKyAgICBteUhv
c3RJbXBsLT5zZXRSb290TGF5ZXIocm9vdC5yZWxlYXNlKCkpOworCisgICAgYWRkRHJhd2luZ0xh
eWVyVG8ocm9vdFB0ciwgMiwgSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksICZsYXllclMxUHRyKTsK
KyAgICBsYXllclMxUHRyLT5zZXRGb3JjZVJlbmRlclN1cmZhY2UodHJ1ZSk7CisKKyAgICBhZGRE
cmF3aW5nTGF5ZXJUbyhsYXllclMxUHRyLCAzLCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSwgMCk7
IC8vIEwxMQorICAgIGFkZERyYXdpbmdMYXllclRvKGxheWVyUzFQdHIsIDQsIEludFJlY3QoMTAw
LCAwLCAzMDAsIDMwMCksIDApOyAvLyBMMTIKKworICAgIGFkZERyYXdpbmdMYXllclRvKHJvb3RQ
dHIsIDcsIEludFJlY3QoMjAwLCAwLCAzMDAsIDMwMCksICZsYXllclMyUHRyKTsKKyAgICBsYXll
clMyUHRyLT5zZXRGb3JjZVJlbmRlclN1cmZhY2UodHJ1ZSk7CisKKyAgICAvLyBJbml0aWFsIGRy
YXcgLSBtdXN0IHJlY2VpdmUgYWxsIHF1YWRzCisgICAgeworICAgICAgICBDQ0xheWVyVHJlZUhv
c3RJbXBsOjpGcmFtZURhdGEgZnJhbWU7CisgICAgICAgIEVYUEVDVF9UUlVFKG15SG9zdEltcGwt
PnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKKworICAgICAgICAvLyBNdXN0IHJlY2VpdmUgMyByZW5k
ZXIgcGFzc2VzLgorICAgICAgICAvLyBGb3IgUm9vdCwgdGhlcmUgYXJlIDIgcXVhZHM7IGZvciBT
MSwgdGhlcmUgYXJlIDMgcXVhZHM7IGZvciBTMiwgdGhlcmUgaXMgMSBxdWFkLgorICAgICAgICBB
U1NFUlRfRVEoM1UsIGZyYW1lLnJlbmRlclBhc3Nlcy5zaXplKCkpOworCisgICAgICAgIEVYUEVD
VF9FUSgxVSwgZnJhbWUucmVuZGVyUGFzc2VzWzBdLT5xdWFkTGlzdCgpLnNpemUoKSk7CisgICAg
ICAgIEVYUEVDVF9FUSgzVSwgZnJhbWUucmVuZGVyUGFzc2VzWzFdLT5xdWFkTGlzdCgpLnNpemUo
KSk7CisgICAgICAgIEVYUEVDVF9FUSgyVSwgZnJhbWUucmVuZGVyUGFzc2VzWzJdLT5xdWFkTGlz
dCgpLnNpemUoKSk7CisKKyAgICAgICAgbXlIb3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7Cisg
ICAgICAgIG15SG9zdEltcGwtPmRpZERyYXdBbGxMYXllcnMoZnJhbWUpOworICAgIH0KKworICAg
IC8vICJVbm9jY2x1ZGUiIHN1cmZhY2UgUzEgYW5kIHJlcGVhdCBkcmF3LgorICAgIC8vIE11c3Qg
cmVtb3ZlIFMyJ3MgcmVuZGVyIHBhc3Mgc2luY2UgaXQncyBjYWNoZWQ7CisgICAgLy8gTXVzdCBr
ZWVwIFMxIHF1YWRzIGJlY2F1c2UgdGV4dHVyZSBjb250YWluZWQgZXh0ZXJuYWwgb2NjbHVzaW9u
LgorICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybSA9IGxheWVyUzJQdHItPnRy
YW5zZm9ybSgpOworICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoMzAwLCAwKTsKKyAgICBsYXllclMy
UHRyLT5zZXRUcmFuc2Zvcm0odHJhbnNmb3JtKTsKKyAgICB7CisgICAgICAgIENDTGF5ZXJUcmVl
SG9zdEltcGw6OkZyYW1lRGF0YSBmcmFtZTsKKyAgICAgICAgRVhQRUNUX1RSVUUobXlIb3N0SW1w
bC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworCisgICAgICAgIC8vIE11c3QgcmVjZWl2ZSAyIHJl
bmRlciBwYXNzZXMuCisgICAgICAgIC8vIEZvciBSb290LCB0aGVyZSBhcmUgMiBxdWFkcworICAg
ICAgICAvLyBGb3IgUzEsIHRoZSBudW1iZXIgb2YgcXVhZHMgZGVwZW5kcyBvbiB3aGF0IGdvdCB1
bm9jY2x1ZGVkLCBzbyBub3QgYXNzZXJ0ZWQgYmV5b25kIGJlaW5nIHBvc2l0aXZlLgorICAgICAg
ICAvLyBGb3IgUzIsIHRoZXJlIGlzIG5vIHJlbmRlciBwYXNzCisgICAgICAgIEFTU0VSVF9FUSgy
VSwgZnJhbWUucmVuZGVyUGFzc2VzLnNpemUoKSk7CisKKyAgICAgICAgRVhQRUNUX0dUKGZyYW1l
LnJlbmRlclBhc3Nlc1swXS0+cXVhZExpc3QoKS5zaXplKCksIDBVKTsKKyAgICAgICAgRVhQRUNU
X0VRKDJVLCBmcmFtZS5yZW5kZXJQYXNzZXNbMV0tPnF1YWRMaXN0KCkuc2l6ZSgpKTsKKworICAg
ICAgICBteUhvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKKyAgICAgICAgbXlIb3N0SW1wbC0+
ZGlkRHJhd0FsbExheWVycyhmcmFtZSk7CisgICAgfQorfQorCitURVNUX0YoQ0NMYXllclRyZWVI
b3N0SW1wbFRlc3QsIHRleHR1cmVDYWNoaW5nV2l0aE9jY2x1c2lvblBhcnRpYWxTd2FwKQorewor
ICAgIENDU2V0dGluZ3M6OnNldFBhcnRpYWxTd2FwRW5hYmxlZCh0cnVlKTsKKworICAgIENDTGF5
ZXJUcmVlU2V0dGluZ3Mgc2V0dGluZ3M7CisgICAgT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+
IG15SG9zdEltcGwgPSBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUoc2V0dGluZ3MsIHRoaXMp
OworCisgICAgLy8gTGF5ZXJzIGFyZSBzdHJ1Y3R1cmUgYXMgZm9sbG93czoKKyAgICAvLworICAg
IC8vICBSICstLSBTMSArLSBMMTAgKG93bmluZykKKyAgICAvLyAgICB8ICAgICAgKy0gTDExCisg
ICAgLy8gICAgfCAgICAgICstIEwxMgorICAgIC8vICAgIHwKKyAgICAvLyAgICArLS0gUzIgKy0g
TDIwIChvd25pbmcpCisgICAgLy8gICAgICAgICAgICstIEwyMQorICAgIC8vCisgICAgLy8gT2Nj
bHVzaW9uOgorICAgIC8vIEwxMiBvY2NsdWRlcyBMMTEgKGludGVybmFsKQorICAgIC8vIEwyMCBv
Y2NsdWRlcyBMMTAgKGV4dGVybmFsKQorICAgIC8vIEwyMSBvY2NsdWRlcyBMMjAgKGludGVybmFs
KQorCisgICAgQ0NMYXllckltcGwqIHJvb3RQdHI7CisgICAgQ0NMYXllckltcGwqIGxheWVyUzFQ
dHI7CisgICAgQ0NMYXllckltcGwqIGxheWVyUzJQdHI7CisKKyAgICBPd25QdHI8Q0NHcmFwaGlj
c0NvbnRleHQ+IGNvbnRleHQgPSBDQ0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRlM0QoYWRvcHRQdHIo
bmV3IFBhcnRpYWxTd2FwQ29udGV4dCkpOworCisgICAgSW50U2l6ZSByb290U2l6ZSgxMDAwLCAx
MDAwKTsKKworICAgIG15SG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQu
cmVsZWFzZSgpLCBVbnRocm90dGxlZFVwbG9hZGVyKTsKKyAgICBteUhvc3RJbXBsLT5zZXRWaWV3
cG9ydFNpemUoSW50U2l6ZShyb290U2l6ZS53aWR0aCgpLCByb290U2l6ZS5oZWlnaHQoKSkpOwor
CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiByb290ID0gQ0NMYXllckltcGw6OmNyZWF0ZSgxKTsK
KyAgICByb290UHRyID0gcm9vdC5nZXQoKTsKKworICAgIHJvb3QtPnNldEFuY2hvclBvaW50KEZs
b2F0UG9pbnQoMCwgMCkpOworICAgIHJvb3QtPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQoMCwgMCkp
OworICAgIHJvb3QtPnNldEJvdW5kcyhyb290U2l6ZSk7CisgICAgcm9vdC0+c2V0Q29udGVudEJv
dW5kcyhyb290U2l6ZSk7CisgICAgcm9vdC0+c2V0RHJhd3NDb250ZW50KHRydWUpOworICAgIHJv
b3QtPnNldE1hc2tzVG9Cb3VuZHModHJ1ZSk7CisgICAgbXlIb3N0SW1wbC0+c2V0Um9vdExheWVy
KHJvb3QucmVsZWFzZSgpKTsKKworICAgIGFkZERyYXdpbmdMYXllclRvKHJvb3RQdHIsIDIsIElu
dFJlY3QoMzAwLCAzMDAsIDMwMCwgMzAwKSwgJmxheWVyUzFQdHIpOworICAgIGxheWVyUzFQdHIt
PnNldEZvcmNlUmVuZGVyU3VyZmFjZSh0cnVlKTsKKworICAgIGFkZERyYXdpbmdMYXllclRvKGxh
eWVyUzFQdHIsIDMsIEludFJlY3QoMTAsIDEwLCAxMCwgMTApLCAwKTsgLy8gTDExCisgICAgYWRk
RHJhd2luZ0xheWVyVG8obGF5ZXJTMVB0ciwgNCwgSW50UmVjdCgwLCAwLCAzMCwgMzApLCAwKTsg
Ly8gTDEyCisKKyAgICBhZGREcmF3aW5nTGF5ZXJUbyhyb290UHRyLCA1LCBJbnRSZWN0KDU1MCwg
MjUwLCAzMDAsIDQwMCksICZsYXllclMyUHRyKTsKKyAgICBsYXllclMyUHRyLT5zZXRGb3JjZVJl
bmRlclN1cmZhY2UodHJ1ZSk7CisKKyAgICBhZGREcmF3aW5nTGF5ZXJUbyhsYXllclMyUHRyLCA2
LCBJbnRSZWN0KDIwLCAyMCwgNSwgNSksIDApOyAvLyBMMjEKKworICAgIC8vIEluaXRpYWwgZHJh
dyAtIG11c3QgcmVjZWl2ZSBhbGwgcXVhZHMKKyAgICB7CisgICAgICAgIENDTGF5ZXJUcmVlSG9z
dEltcGw6OkZyYW1lRGF0YSBmcmFtZTsKKyAgICAgICAgRVhQRUNUX1RSVUUobXlIb3N0SW1wbC0+
cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworCisgICAgICAgIC8vIE11c3QgcmVjZWl2ZSAzIHJlbmRl
ciBwYXNzZXMuCisgICAgICAgIC8vIEZvciBSb290LCB0aGVyZSBhcmUgMiBxdWFkczsgZm9yIFMx
LCB0aGVyZSBhcmUgMyBxdWFkczsgZm9yIFMyLCB0aGVyZSBpcyAxIHF1YWQuCisgICAgICAgIEFT
U0VSVF9FUSgzVSwgZnJhbWUucmVuZGVyUGFzc2VzLnNpemUoKSk7CisKKyAgICAgICAgRVhQRUNU
X0VRKDJVLCBmcmFtZS5yZW5kZXJQYXNzZXNbMF0tPnF1YWRMaXN0KCkuc2l6ZSgpKTsKKyAgICAg
ICAgRVhQRUNUX0VRKDNVLCBmcmFtZS5yZW5kZXJQYXNzZXNbMV0tPnF1YWRMaXN0KCkuc2l6ZSgp
KTsKKyAgICAgICAgRVhQRUNUX0VRKDJVLCBmcmFtZS5yZW5kZXJQYXNzZXNbMl0tPnF1YWRMaXN0
KCkuc2l6ZSgpKTsKKworICAgICAgICBteUhvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKKyAg
ICAgICAgbXlIb3N0SW1wbC0+ZGlkRHJhd0FsbExheWVycyhmcmFtZSk7CisgICAgfQorCisgICAg
Ly8gIlVub2NjbHVkZSIgc3VyZmFjZSBTMSBhbmQgcmVwZWF0IGRyYXcuCisgICAgLy8gTXVzdCBy
ZW1vdmUgUzIncyByZW5kZXIgcGFzcyBzaW5jZSBpdCdzIGNhY2hlZDsKKyAgICAvLyBNdXN0IGtl
ZXAgUzEgcXVhZHMgYmVjYXVzZSB0ZXh0dXJlIGNvbnRhaW5lZCBleHRlcm5hbCBvY2NsdXNpb24u
CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtID0gbGF5ZXJTMlB0ci0+dHJh
bnNmb3JtKCk7CisgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSgxNTAsIDE1MCk7CisgICAgbGF5ZXJT
MlB0ci0+c2V0VHJhbnNmb3JtKHRyYW5zZm9ybSk7CisgICAgeworICAgICAgICBDQ0xheWVyVHJl
ZUhvc3RJbXBsOjpGcmFtZURhdGEgZnJhbWU7CisgICAgICAgIEVYUEVDVF9UUlVFKG15SG9zdElt
cGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKKworICAgICAgICAvLyBNdXN0IHJlY2VpdmUgMiBy
ZW5kZXIgcGFzc2VzLgorICAgICAgICAvLyBGb3IgUm9vdCwgdGhlcmUgYXJlIDIgcXVhZHMKKyAg
ICAgICAgLy8gRm9yIFMxLCB0aGUgbnVtYmVyIG9mIHF1YWRzIGRlcGVuZHMgb24gd2hhdCBnb3Qg
dW5vY2NsdWRlZCwgc28gbm90IGFzc2VydGVkIGJleW9uZCBiZWluZyBwb3NpdGl2ZS4KKyAgICAg
ICAgLy8gRm9yIFMyLCB0aGVyZSBpcyBubyByZW5kZXIgcGFzcworICAgICAgICBBU1NFUlRfRVEo
MlUsIGZyYW1lLnJlbmRlclBhc3Nlcy5zaXplKCkpOworCisgICAgICAgIEVYUEVDVF9HVChmcmFt
ZS5yZW5kZXJQYXNzZXNbMF0tPnF1YWRMaXN0KCkuc2l6ZSgpLCAwVSk7CisgICAgICAgIEVYUEVD
VF9FUSgyVSwgZnJhbWUucmVuZGVyUGFzc2VzWzFdLT5xdWFkTGlzdCgpLnNpemUoKSk7CisKKyAg
ICAgICAgbXlIb3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CisgICAgICAgIG15SG9zdEltcGwt
PmRpZERyYXdBbGxMYXllcnMoZnJhbWUpOworICAgIH0KKworICAgIC8vICJSZS1vY2NsdWRlIiBz
dXJmYWNlIFMxIGFuZCByZXBlYXQgZHJhdy4KKyAgICAvLyBNdXN0IHJlbW92ZSBTMSdzIHJlbmRl
ciBwYXNzIHNpbmNlIGl0IGlzIG5vdyBhdmFpbGFibGUgaW4gZnVsbC4KKyAgICAvLyBTMiBoYXMg
bm8gY2hhbmdlIHNvIG11c3QgYWxzbyBiZSByZW1vdmVkLgorICAgIC8vIEZJWE1FOiBEdWUgdG8g
cGFydGlhbCBzd2FwLCB0aGUgc2Npc3NvciByZWN0IHdpbGwgY2F1c2UgT2NjbHVzaW9uVHJhY2tl
cgorICAgIC8vIHRvIHRoaW5rIHRoZXJlIGlzIGFuIGV4dGVybmFsIG9jY2x1c2lvbiBpbiB0aGUg
cHJldmlvdXMgc3RlcC4gVGhlcmVmb3JlLAorICAgIC8vIFMxJ3MgcmVuZGVyIHBhc3Mgd2lsbCBu
b3QgYmUgcmVtb3ZlZC4KKyAgICB0cmFuc2Zvcm0gPSBsYXllclMyUHRyLT50cmFuc2Zvcm0oKTsK
KyAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKC0xNSwgLTE1KTsKKyAgICBsYXllclMyUHRyLT5zZXRU
cmFuc2Zvcm0odHJhbnNmb3JtKTsKKyAgICB7CisgICAgICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6
OkZyYW1lRGF0YSBmcmFtZTsKKyAgICAgICAgRVhQRUNUX1RSVUUobXlIb3N0SW1wbC0+cHJlcGFy
ZVRvRHJhdyhmcmFtZSkpOworCisgICAgICAgIC8vIDIgUmVuZGVyIHBhc3NlcyAtIFJvb3QgYW5k
IFMxLgorICAgICAgICBBU1NFUlRfRVEoMlUsIGZyYW1lLnJlbmRlclBhc3Nlcy5zaXplKCkpOwor
CisgICAgICAgIC8vIFJlbmRlciBwYXNzIGZvciBTMSBjb250YWlucyBubyBxdWFkcyBhcyB0aGUg
c2Npc3NvciByZWN0IGlzIG5vdyBvY2NsdWRlZC4KKyAgICAgICAgRVhQRUNUX0VRKDBVLCBmcmFt
ZS5yZW5kZXJQYXNzZXNbMF0tPnF1YWRMaXN0KCkuc2l6ZSgpKTsKKworICAgICAgICAvLyBSb290
IGNvbnRhaW5zIFMyIG9ubHksIGFzIFMxIGRvZXNuJ3QgaGF2ZSBhbnkgZGFtYWdlLgorICAgICAg
ICBFWFBFQ1RfRVEoMVUsIGZyYW1lLnJlbmRlclBhc3Nlc1sxXS0+cXVhZExpc3QoKS5zaXplKCkp
OworCisgICAgICAgIG15SG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOworICAgICAgICBteUhv
c3RJbXBsLT5kaWREcmF3QWxsTGF5ZXJzKGZyYW1lKTsKKyAgICB9CisKK30KKwogVEVTVF9GKEND
TGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBzdXJmYWNlVGV4dHVyZUNhY2hpbmcpCiB7CiAgICAgQ0NT
ZXR0aW5nczo6c2V0UGFydGlhbFN3YXBFbmFibGVkKHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAKaW5kZXggY2Q3YTM5NmJkMGQ3
NmUxYTUyZTM3MTMzM2U0Yzg0ZDU3NGVmMDU2ZC4uNTI2YWI0ZTU5MGEwM2U2OTVhN2ZjMjIwNmZh
ZGFjNzJkYmQ3YTMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q1F1YWRDdWxsZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
UXVhZEN1bGxlclRlc3QuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHN0YXRpYyBQYXNzT3duUHRyPEND
VGlsZWRMYXllckltcGw+IG1ha2VMYXllcihDQ1RpbGVkTGF5ZXJJbXBsKiBwYXJlbnQsIGNvbnN0
IFdlCiBzdGF0aWMgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRMaXN0JiBxdWFkTGlzdCwgVmVjdG9y
PE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gPiYgc2hhcmVkU3RhdGVMaXN0LCBDQ1RpbGVkTGF5
ZXJJbXBsKiBsYXllciwgQ0NMYXllckl0ZXJhdG9yVHlwZSYgaXQsIENDT2NjbHVzaW9uVHJhY2tl
ckltcGwmIG9jY2x1c2lvblRyYWNrZXIpCiB7CiAgICAgb2NjbHVzaW9uVHJhY2tlci5lbnRlckxh
eWVyKGl0KTsKLSAgICBDQ1F1YWRDdWxsZXIgcXVhZEN1bGxlcihxdWFkTGlzdCwgbGF5ZXIsICZv
Y2NsdXNpb25UcmFja2VyLCBmYWxzZSk7CisgICAgQ0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXIocXVh
ZExpc3QsIGxheWVyLCAmb2NjbHVzaW9uVHJhY2tlciwgZmFsc2UsIGZhbHNlKTsKICAgICBPd25Q
dHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFF1YWRTdGF0ZSA9IGxheWVyLT5jcmVhdGVTaGFy
ZWRRdWFkU3RhdGUoMCk7CiAgICAgYm9vbCBoYWRNaXNzaW5nVGlsZXMgPSBmYWxzZTsKICAgICBs
YXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpLCBoYWRN
aXNzaW5nVGlsZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9N
b2NrQ0NRdWFkQ3VsbGVyLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL01vY2tDQ1F1
YWRDdWxsZXIuaAppbmRleCAzODU1MDdlMmM3YzQxZDJhNTkxZmJlMzM2ZDA4NzIyNTI1OTI5YzJj
Li4xNWNiMTlkNmM4MjZhNTZhYTEwYmQ0ZmYyZjY4YTAzYTA1ZjEwZTZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL01vY2tDQ1F1YWRDdWxsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL01vY2tDQ1F1YWRDdWxsZXIuaApAQCAtMjcsMjEgKzI3
LDE5IEBACiAKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiY2MvQ0NEcmF3UXVhZC5o
IgotI2luY2x1ZGUgImNjL0NDUXVhZEN1bGxlci5oIgorI2luY2x1ZGUgImNjL0NDUXVhZFNpbmsu
aCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIE1vY2tDQ1F1YWRDdWxsZXIgOiBwdWJsaWMgV2ViQ29yZTo6Q0NRdWFkQ3VsbGVyIHsK
K2NsYXNzIE1vY2tDQ1F1YWRDdWxsZXIgOiBwdWJsaWMgV2ViQ29yZTo6Q0NRdWFkU2luayB7CiBw
dWJsaWM6CiAgICAgTW9ja0NDUXVhZEN1bGxlcigpCi0gICAgICAgIDogQ0NRdWFkQ3VsbGVyKG1f
cXVhZExpc3RTdG9yYWdlLCAwLCAwLCBmYWxzZSkKLSAgICAgICAgLCBtX2FjdGl2ZVF1YWRMaXN0
KG1fcXVhZExpc3RTdG9yYWdlKQorICAgICAgICA6IG1fYWN0aXZlUXVhZExpc3QobV9xdWFkTGlz
dFN0b3JhZ2UpCiAgICAgeyB9CiAKICAgICBleHBsaWNpdCBNb2NrQ0NRdWFkQ3VsbGVyKENDUXVh
ZExpc3QmIGV4dGVybmFsUXVhZExpc3QpCi0gICAgICAgIDogQ0NRdWFkQ3VsbGVyKGV4dGVybmFs
UXVhZExpc3QsIDAsIDAsIGZhbHNlKQotICAgICAgICAsIG1fYWN0aXZlUXVhZExpc3QoZXh0ZXJu
YWxRdWFkTGlzdCkKKyAgICAgICAgOiBtX2FjdGl2ZVF1YWRMaXN0KGV4dGVybmFsUXVhZExpc3Qp
CiAgICAgeyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgYXBwZW5kKFdURjo6UGFzc093blB0cjxXZWJD
b3JlOjpDQ0RyYXdRdWFkPiBuZXdRdWFkKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153329</attachid>
            <date>2012-07-19 13:00:53 -0700</date>
            <delta_ts>2012-07-19 14:00:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91537-20120719160053.patch</filename>
            <type>text/plain</type>
            <size>82183</size>
            <attacher>zlieber</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWM5YjNkMDIzYjhiMTRl
YzkyNjQ2ZjhlYzJhYTViOGRmNGUwYjNkZi4uNzA3YjFiOGZhYzJiYzM5ZWU5MmI0YzA0MDFmZjE3
YmJjNTVkNzNkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMiBAQAorMjAxMi0wNy0xNyAgWmVl
diBMaWViZXIgIDx6bGllYmVyQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIFRl
eHR1cmVzIGRyYXduIGR1cmluZyBvY2NsdXNpb24gYXJlIGluY29ycmVjdGx5IHJlLXVzZWQgd2hl
biB1bm9jY2x1ZGVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTE1MzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBEZXRlY3RpbmcgaWYgYW55IGV4dGVybmFsIG9jY2x1c2lvbiBvY2N1cnMgd2hlbiBkcmF3
aW5nIGEKKyAgICAgICAgdGV4dHVyZS4gSWYgZXh0ZXJuYWwgb2NjbHVzaW9uIGhhcHBlbnMsIHRo
ZSB0ZXh0dXJlIGlzIG1hcmtlZCBhcworICAgICAgICAiaW5jb21wbGV0ZSIgaW4gTGF5ZXJSZW5k
ZXJlckNocm9taXVtLCBhbmQgaXMgbm90IGJlaW5nIGNvbnNpZGVyZWQKKyAgICAgICAgZm9yIHJl
LXVzZS4KKworICAgICAgICBNaW5vciByZWZhY3RvcmluZyBvZiBDQ1F1YWRDdWxsZXIgLSBleHRy
YWN0ZWQgaW50ZXJmYWNlCisgICAgICAgIChDQ1F1YWRTaW5rKSBhbmQgdW5pdGVkIGFwcGVuZCgp
IGFuZCBhcHBlbmRTdXJmYWNlKCkgbWV0aG9kcy4KKworICAgICAgICBBZGRlZCB1bml0IHRlc3Rz
IHRvIHZlcmlmeSB0aGlzIGZpeDsgYWxzbyBhZGRlZCB0ZXN0IHRvIHRyeQorICAgICAgICBjbGlw
cGluZyBpbnN0ZWFkIG9mIG9jY2x1c2lvbi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChMYXllclJlbmRl
cmVyQ2hyb21pdW06OkNhY2hlZFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpDYWNoZWRUZXh0dXJlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpDYWNoZWRUZXh0dXJlOjp+Q2FjaGVkVGV4dHVyZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OkNhY2hlZFRleHR1cmU6Omlz
Q29tcGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpDYWNo
ZWRUZXh0dXJlOjpzZXRJc0NvbXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6Q2FjaGVkVGV4dHVyZTo6Q2FjaGVkVGV4dHVyZSk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZGVjaWRlUmVu
ZGVyUGFzc0FsbG9jYXRpb25zRm9yRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpoYXZlQ2FjaGVkUmVzb3VyY2VzRm9yUmVuZGVyUGFzc0lkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclBhc3NRdWFkKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21p
dW0uaDoKKyAgICAgICAgKExheWVyUmVuZGVyZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NJT1N1cmZhY2VMYXllckltcGw6OmFwcGVuZFF1YWRzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVySW1wbC5oOgor
ICAgICAgICAoQ0NJT1N1cmZhY2VMYXllckltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJJbXBsOjphcHBlbmREZWJ1Z0JvcmRlclF1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyk6CisgICAgICAgIChDQ0xheWVy
SW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNp
b25UcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ojo6dW5vY2NsdWRlZENvbnRlbnRSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ojo6dW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250
ZW50UmVjdCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuaDoKKyAgICAgICAgKENDT2NjbHVzaW9u
VHJhY2tlckJhc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UXVhZEN1bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1F1YWRDdWxsZXI6OkNDUXVhZEN1
bGxlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ1F1YWRDdWxsZXI6OmFwcGVuZCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmg6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKENDUXVhZEN1bGxlcik6CisgICAgICAgIChXZWJDb3JlOjpD
Q1F1YWRDdWxsZXI6On5DQ1F1YWRDdWxsZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NRdWFkQ3Vs
bGVyOjpoYXNFeHRlcm5hbE9jY2x1c2lvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NRdWFkU2luay5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoQ0NRdWFkU2luayk6CisgICAgICAgIChXZWJDb3JlOjpDQ1F1YWRT
aW5rOjp+Q0NRdWFkU2luayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NSZW5kZXJQYXNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzczo6Q0NS
ZW5kZXJQYXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzczo6YXBwZW5kUXVhZHNG
b3JMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3M6OmFwcGVuZFF1YWRzRm9y
UmVuZGVyU3VyZmFjZUxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRl
clBhc3NEcmF3UXVhZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzc0Ry
YXdRdWFkOjpDQ1JlbmRlclBhc3NEcmF3UXVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuaDoKKyAgICAgICAgKENDUmVuZGVy
UGFzc0RyYXdRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzc0RyYXdRdWFkOjpo
YXNFeHRlcm5hbE9jY2x1c2lvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3Vy
ZmFjZTo6Q0NSZW5kZXJTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFj
ZTo6YXBwZW5kUXVhZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUmVuZGVyU3VyZmFjZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1JlbmRlclN1cmZhY2U6OnNldEhhc0V4dGVybmFsT2NjbHVzaW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6aGFzRXh0ZXJuYWxPY2NsdXNpb24pOgorICAgICAgICAo
Q0NSZW5kZXJTdXJmYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1Njcm9sbGJhckxheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1Njcm9sbGJh
ckxheWVySW1wbDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmg6CisgICAgICAgIChDQ1Njcm9sbGJhckxh
eWVySW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xp
ZENvbG9yTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU29saWRDb2xvckxheWVy
SW1wbDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU29saWRDb2xvckxheWVySW1wbC5oOgorICAgICAgICAoQ0NTb2xpZENvbG9yTGF5ZXJJ
bXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVM
YXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlTGF5ZXJJbXBsOjphcHBl
bmRRdWFkcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0
dXJlTGF5ZXJJbXBsLmg6CisgICAgICAgIChDQ1RleHR1cmVMYXllckltcGwpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NUaWxlZExheWVySW1wbDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaDoKKyAgICAg
ICAgKENDVGlsZWRMYXllckltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xh
eWVySW1wbDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVmlkZW9MYXllckltcGwuaDoKKyAgICAgICAgKENDVmlkZW9MYXllckltcGwpOgor
CiAyMDEyLTA3LTE5ICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgV2ViIEluc3BlY3RvcjogQ1BVIGJhcnMgYXJlIG5vdCBjbGVhcmVkIGFsb25nIHdpdGgg
dGhlIHJlc3Qgb2YgdGhlIHRpbWVsaW5lIHBhbmVsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmlu
ZGV4IGRmNDk3MTlkOWRlMmUyMzFiNjBhYjY0NTQ0ODYyN2JkMGUyMzg3NGEuLjQyYWEyN2IyNDRh
YzFlMGZjNGE1MjMxMDM4NDJhZGViMGEyMDFlNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDctMTcgIFplZXYgTGllYmVyICA8emxpZWJlckBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBUZXh0dXJlcyBkcmF3biBkdXJpbmcgb2Nj
bHVzaW9uIGFyZSBpbmNvcnJlY3RseSByZS11c2VkIHdoZW4gdW5vY2NsdWRlZC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxNTM3CisKKyAgICAgICAg
QWRkZWQgdW5pdCB0ZXN0cyB0byB0ZXN0IHRleHR1cmUgY2FjaGluZyB3aXRoIGNsaXBwaW5nIGFu
ZAorICAgICAgICBvY2NsdXNpb24uIFJlbW92ZWQgc29tZSBtaW5vciBjb2RlIGR1cGxpY2F0aW9u
IHdoZW4gaW5pdGlhbGl6aW5nCisgICAgICAgIGxheWVycyBmb3IgdmFyaW91cyBzY2VuYXJpb3Mu
CisKKyAgICAgICAgTW9ja0NDUXVhZEN1bGxlciBjYW4gbm93IGltcGxlbWVudCBDQ1F1YWRTaW5r
LgorCisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwOgorICAgICAg
ICAqIHRlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL01vY2tDQ1F1
YWRDdWxsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDQ1F1YWRDdWxsZXI6Ok1vY2tDQ1F1
YWRDdWxsZXIpOgorCiAyMDEyLTA3LTE5ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUm9sbCBvdXQgcjEyMTYxMCBhbmQgcjEyMjQ4NyB3aGljaCBtYXkgaGF2
ZSBiZWVuIGNhdXNpbmcgZmxha3kgY3Jhc2hlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGRhYjMxNDA3
OTgyMjMwYjQwOWYxN2ZlNmJhMDgxNTE2NTE5MTA1NWMuLmY0NTgxZDlkMTk2Yzk1NWVjNzVhMzRm
Yjc0YWU0NDk1YmE4ODUwNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTgzNjAsNiArODM2MCw3IEBA
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0eUNh
bGN1bGF0b3IuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NQcm94eS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUHJveHkuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NRdWFkU2luay5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1F1YWRDdWxsZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1F1YWRDdWxsZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNo
cm9taXVtLmNwcAppbmRleCA1N2VhOTgxMmE1NjM5NDdlZjYzMTQ5M2IyN2Q2MzE5ZTcyMTE5MTQ1
Li5lNTYzN2EwZmNhNzA1ZGJkMWQxZjA3M2FhZDgwM2EyNmY3NmJkMTg3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hy
b21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKQEAgLTEzMyw2ICsxMzMsMjYgQEAgcHJvdGVjdGVk
OgogCiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKIAorY2xhc3MgTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpDYWNoZWRUZXh0dXJlIDogcHVibGljIENDU2NvcGVkVGV4dHVyZSB7CisgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoQ2FjaGVkVGV4dHVyZSk7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NP
d25QdHI8Q2FjaGVkVGV4dHVyZT4gY3JlYXRlKENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQ
cm92aWRlcikgeyByZXR1cm4gYWRvcHRQdHIobmV3IENhY2hlZFRleHR1cmUocmVzb3VyY2VQcm92
aWRlcikpOyB9CisgICAgdmlydHVhbCB+Q2FjaGVkVGV4dHVyZSgpIHsgfQorCisgICAgYm9vbCBp
c0NvbXBsZXRlKCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbXBsZXRlOyB9CisgICAgdm9pZCBzZXRJ
c0NvbXBsZXRlKGJvb2wgaXNDb21wbGV0ZSkgeyBtX2lzQ29tcGxldGUgPSBpc0NvbXBsZXRlOyB9
CisKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBDYWNoZWRUZXh0dXJlKENDUmVzb3VyY2VQcm92
aWRlciogcmVzb3VyY2VQcm92aWRlcikKKyAgICAgICAgOiBDQ1Njb3BlZFRleHR1cmUocmVzb3Vy
Y2VQcm92aWRlcikKKyAgICAgICAgLCBtX2lzQ29tcGxldGUoZmFsc2UpCisgICAgeworICAgIH0K
KworcHJpdmF0ZToKKyAgICBib29sIG1faXNDb21wbGV0ZTsKK307CisKIFBhc3NPd25QdHI8TGF5
ZXJSZW5kZXJlckNocm9taXVtPiBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNyZWF0ZShDQ1JlbmRl
cmVyQ2xpZW50KiBjbGllbnQsIENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlciwg
VGV4dHVyZVVwbG9hZGVyT3B0aW9uIHRleHR1cmVVcGxvYWRlclNldHRpbmcpCiB7CiAgICAgT3du
UHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gbGF5ZXJSZW5kZXJlcihhZG9wdFB0cihuZXcgTGF5
ZXJSZW5kZXJlckNocm9taXVtKGNsaWVudCwgcmVzb3VyY2VQcm92aWRlciwgdGV4dHVyZVVwbG9h
ZGVyU2V0dGluZykpKTsKQEAgLTMxOSw3ICszMzksNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6ZGVjaWRlUmVuZGVyUGFzc0FsbG9jYXRpb25zRm9yRnJhbWUoY29uc3QgQ0NSZW5kZXJQ
YQogICAgICAgICBwYXNzZXNJbkZyYW1lLnNldChyZW5kZXJQYXNzZXNJbkRyYXdPcmRlcltpXS0+
aWQoKSwgcmVuZGVyUGFzc2VzSW5EcmF3T3JkZXJbaV0pOwogCiAgICAgVmVjdG9yPGludD4gcGFz
c2VzVG9EZWxldGU7Ci0gICAgSGFzaE1hcDxpbnQsIE93blB0cjxDQ1Njb3BlZFRleHR1cmU+ID46
OmNvbnN0X2l0ZXJhdG9yIHBhc3NJdGVyYXRvcjsKKyAgICBIYXNoTWFwPGludCwgT3duUHRyPENh
Y2hlZFRleHR1cmU+ID46OmNvbnN0X2l0ZXJhdG9yIHBhc3NJdGVyYXRvcjsKICAgICBmb3IgKHBh
c3NJdGVyYXRvciA9IG1fcmVuZGVyUGFzc1RleHR1cmVzLmJlZ2luKCk7IHBhc3NJdGVyYXRvciAh
PSBtX3JlbmRlclBhc3NUZXh0dXJlcy5lbmQoKTsgKytwYXNzSXRlcmF0b3IpIHsKICAgICAgICAg
Y29uc3QgQ0NSZW5kZXJQYXNzKiByZW5kZXJQYXNzSW5GcmFtZSA9IHBhc3Nlc0luRnJhbWUuZ2V0
KHBhc3NJdGVyYXRvci0+Zmlyc3QpOwogICAgICAgICBpZiAoIXJlbmRlclBhc3NJbkZyYW1lKSB7
CkBAIC0zMjksNyArMzQ5LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRlY2lkZVJl
bmRlclBhc3NBbGxvY2F0aW9uc0ZvckZyYW1lKGNvbnN0IENDUmVuZGVyUGEKIAogICAgICAgICBj
b25zdCBJbnRTaXplJiByZXF1aXJlZFNpemUgPSByZW5kZXJQYXNzVGV4dHVyZVNpemUocmVuZGVy
UGFzc0luRnJhbWUpOwogICAgICAgICBHQzNEZW51bSByZXF1aXJlZEZvcm1hdCA9IHJlbmRlclBh
c3NUZXh0dXJlRm9ybWF0KHJlbmRlclBhc3NJbkZyYW1lKTsKLSAgICAgICAgQ0NTY29wZWRUZXh0
dXJlKiB0ZXh0dXJlID0gcGFzc0l0ZXJhdG9yLT5zZWNvbmQuZ2V0KCk7CisgICAgICAgIENhY2hl
ZFRleHR1cmUqIHRleHR1cmUgPSBwYXNzSXRlcmF0b3ItPnNlY29uZC5nZXQoKTsKICAgICAgICAg
QVNTRVJUKHRleHR1cmUpOwogCiAgICAgICAgIGlmICh0ZXh0dXJlLT5pZCgpICYmICh0ZXh0dXJl
LT5zaXplKCkgIT0gcmVxdWlyZWRTaXplIHx8IHRleHR1cmUtPmZvcm1hdCgpICE9IHJlcXVpcmVk
Rm9ybWF0KSkKQEAgLTM0Miw3ICszNjIsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
ZGVjaWRlUmVuZGVyUGFzc0FsbG9jYXRpb25zRm9yRnJhbWUoY29uc3QgQ0NSZW5kZXJQYQogCiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZW5kZXJQYXNzZXNJbkRyYXdPcmRlci5zaXplKCk7
ICsraSkgewogICAgICAgICBpZiAoIW1fcmVuZGVyUGFzc1RleHR1cmVzLmNvbnRhaW5zKHJlbmRl
clBhc3Nlc0luRHJhd09yZGVyW2ldLT5pZCgpKSkgewotICAgICAgICAgICAgT3duUHRyPENDU2Nv
cGVkVGV4dHVyZT4gdGV4dHVyZSA9IENDU2NvcGVkVGV4dHVyZTo6Y3JlYXRlKG1fcmVzb3VyY2VQ
cm92aWRlcik7CisgICAgICAgICAgICBPd25QdHI8Q2FjaGVkVGV4dHVyZT4gdGV4dHVyZSA9IENh
Y2hlZFRleHR1cmU6OmNyZWF0ZShtX3Jlc291cmNlUHJvdmlkZXIpOwogICAgICAgICAgICAgbV9y
ZW5kZXJQYXNzVGV4dHVyZXMuc2V0KHJlbmRlclBhc3Nlc0luRHJhd09yZGVyW2ldLT5pZCgpLCB0
ZXh0dXJlLnJlbGVhc2UoKSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0zNTAsOCArMzcwLDggQEAg
dm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRlY2lkZVJlbmRlclBhc3NBbGxvY2F0aW9uc0Zv
ckZyYW1lKGNvbnN0IENDUmVuZGVyUGEKIAogYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06Omhh
dmVDYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJQYXNzSWQoaW50IGlkKSBjb25zdAogewotICAgIEND
U2NvcGVkVGV4dHVyZSogdGV4dHVyZSA9IG1fcmVuZGVyUGFzc1RleHR1cmVzLmdldChpZCk7Ci0g
ICAgcmV0dXJuIHRleHR1cmUgJiYgdGV4dHVyZS0+aWQoKTsKKyAgICBDYWNoZWRUZXh0dXJlKiB0
ZXh0dXJlID0gbV9yZW5kZXJQYXNzVGV4dHVyZXMuZ2V0KGlkKTsKKyAgICByZXR1cm4gdGV4dHVy
ZSAmJiB0ZXh0dXJlLT5pZCgpICYmIHRleHR1cmUtPmlzQ29tcGxldGUoKTsKIH0KIAogdm9pZCBM
YXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdGcmFtZShjb25zdCBDQ1JlbmRlclBhc3NMaXN0JiBy
ZW5kZXJQYXNzZXMsIGNvbnN0IEZsb2F0UmVjdCYgcm9vdFNjaXNzb3JSZWN0KQpAQCAtNjEwLDcg
KzYzMCw3IEBAIFBhc3NPd25QdHI8Q0NTY29wZWRUZXh0dXJlPiBMYXllclJlbmRlcmVyQ2hyb21p
dW06OmRyYXdCYWNrZ3JvdW5kRmlsdGVycyhjb25zdCBDCiAKIHZvaWQgTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpkcmF3UmVuZGVyUGFzc1F1YWQoY29uc3QgQ0NSZW5kZXJQYXNzRHJhd1F1YWQqIHF1
YWQpCiB7Ci0gICAgQ0NTY29wZWRUZXh0dXJlKiBjb250ZW50c1RleHR1cmUgPSBtX3JlbmRlclBh
c3NUZXh0dXJlcy5nZXQocXVhZC0+cmVuZGVyUGFzc0lkKCkpOworICAgIENhY2hlZFRleHR1cmUq
IGNvbnRlbnRzVGV4dHVyZSA9IG1fcmVuZGVyUGFzc1RleHR1cmVzLmdldChxdWFkLT5yZW5kZXJQ
YXNzSWQoKSk7CiAgICAgaWYgKCFjb250ZW50c1RleHR1cmUgfHwgIWNvbnRlbnRzVGV4dHVyZS0+
aWQoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNDA5LDkgKzE0MjksMTEgQEAgYm9vbCBMYXll
clJlbmRlcmVyQ2hyb21pdW06OnVzZVJlbmRlclBhc3MoY29uc3QgQ0NSZW5kZXJQYXNzKiByZW5k
ZXJQYXNzKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBDQ1Njb3BlZFRleHR1
cmUqIHRleHR1cmUgPSBtX3JlbmRlclBhc3NUZXh0dXJlcy5nZXQocmVuZGVyUGFzcy0+aWQoKSk7
CisgICAgQ2FjaGVkVGV4dHVyZSogdGV4dHVyZSA9IG1fcmVuZGVyUGFzc1RleHR1cmVzLmdldChy
ZW5kZXJQYXNzLT5pZCgpKTsKICAgICBBU1NFUlQodGV4dHVyZSk7CiAKKyAgICB0ZXh0dXJlLT5z
ZXRJc0NvbXBsZXRlKCFyZW5kZXJQYXNzLT5oYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1
cmZhY2UoKSk7CisKICAgICBpZiAoIXRleHR1cmUtPmlkKCkgJiYgIXRleHR1cmUtPmFsbG9jYXRl
KENDUmVuZGVyZXI6OkltcGxQb29sLCByZW5kZXJQYXNzVGV4dHVyZVNpemUocmVuZGVyUGFzcyks
IHJlbmRlclBhc3NUZXh0dXJlRm9ybWF0KHJlbmRlclBhc3MpLCBDQ1Jlc291cmNlUHJvdmlkZXI6
OlRleHR1cmVVc2FnZUZyYW1lYnVmZmVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJl
bmRlcmVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCmluZGV4IGNkNWIyY2MyYjI5MjE1Y2UxZWY0NjI0
YzRlYjFjZjQ4NDhiYzkyODcuLjE5OGFlZjlhMzQzOTE0MjJjZjRiNGZlMjY0MThkNzZkYzQ1MWEw
NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBAIC0xODIsNiArMTgyLDgg
QEAgcHJpdmF0ZToKICAgICBPd25QdHI8R2VvbWV0cnlCaW5kaW5nPiBtX3NoYXJlZEdlb21ldHJ5
OwogICAgIEZsb2F0UXVhZCBtX3NoYXJlZEdlb21ldHJ5UXVhZDsKIAorICAgIGNsYXNzIENhY2hl
ZFRleHR1cmU7CisKICAgICAvLyBUaGlzIGJsb2NrIG9mIGJpbmRpbmdzIGRlZmluZXMgYWxsIG9m
IHRoZSBwcm9ncmFtcyB1c2VkIGJ5IHRoZSBjb21wb3NpdG9yIGl0c2VsZi4KIAogICAgIC8vIFRp
bGVkIGxheWVyIHNoYWRlcnMuCkBAIC0yNjYsNyArMjY4LDcgQEAgcHJpdmF0ZToKICAgICBPd25Q
dHI8QWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyPiBtX3RleHR1cmVDb3BpZXI7CiAgICAgT3duUHRy
PFRleHR1cmVVcGxvYWRlcj4gbV90ZXh0dXJlVXBsb2FkZXI7CiAKLSAgICBIYXNoTWFwPGludCwg
T3duUHRyPENDU2NvcGVkVGV4dHVyZT4gPiBtX3JlbmRlclBhc3NUZXh0dXJlczsKKyAgICBIYXNo
TWFwPGludCwgT3duUHRyPENhY2hlZFRleHR1cmU+ID4gbV9yZW5kZXJQYXNzVGV4dHVyZXM7CiAK
ICAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBtX2NvbnRleHQ7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJm
YWNlTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmNwcAppbmRleCA2ZGFjMmU3YTc3MjkzYWE4Njg1
OTQ3MTJmMGIxMzgzN2E5ZTJjNzNiLi40NzNkZTI1OWI4ZWFlYWJkZWQ5ZDZlYmVmOTdiN2M0MjY1
ZDFjYmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuY3BwCkBAIC0z
NSw3ICszNSw3IEBACiAjaW5jbHVkZSAiY2MvQ0NHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRl
ICJjYy9DQ0lPU3VyZmFjZURyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0
SW1wbC5oIgotI2luY2x1ZGUgImNjL0NDUXVhZEN1bGxlci5oIgorI2luY2x1ZGUgImNjL0NDUXVh
ZFNpbmsuaCIKICNpbmNsdWRlIDxwdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtOTYsNyArOTYsNyBAQCB2b2lkIENDSU9TdXJmYWNlTGF5ZXJJ
bXBsOjp3aWxsRHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIpCiAgICAg
fQogfQogCi12b2lkIENDSU9TdXJmYWNlTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxs
ZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBi
b29sJikKK3ZvaWQgQ0NJT1N1cmZhY2VMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsm
IHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29s
JikKIHsKICAgICBJbnRSZWN0IHF1YWRSZWN0KEludFBvaW50KCksIGNvbnRlbnRCb3VuZHMoKSk7
CiAgICAgcXVhZExpc3QuYXBwZW5kKENDSU9TdXJmYWNlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRR
dWFkU3RhdGUsIHF1YWRSZWN0LCBtX2lvU3VyZmFjZVNpemUsIG1faW9TdXJmYWNlVGV4dHVyZUlk
LCBDQ0lPU3VyZmFjZURyYXdRdWFkOjpGbGlwcGVkKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVySW1wbC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZh
Y2VMYXllckltcGwuaAppbmRleCA0MjM2ODgwOWMxMzQzNmMwNmE0YjcyMDRhZWQxNGJjYmZlOWFj
NDQ1Li4wMTg4MDRlMTgyY2ViMDE1MDBjYmU3NTg2ZTE0ZTE2ZmZkZTEzOTFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFj
ZUxheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgog
CiAgICAgdm9pZCBzZXRJT1N1cmZhY2VQcm9wZXJ0aWVzKHVuc2lnbmVkIGlvU3VyZmFjZUlkLCBj
b25zdCBJbnRTaXplJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3Vs
bGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiwgY29uc3Qg
Q0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpIE9WRVJSSURFOwogCiAg
ICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3KENDUmVzb3VyY2VQcm92aWRlciopIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRMb3NlQ29udGV4dCgpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
ckltcGwuY3BwCmluZGV4IGRiMjRjMDdlNDVhOWNmZWIxNzg0OGMxZGNhMzVhMTZlN2M0NTU5YWQu
LjcxN2Q5NmQxMDE2ZjVmNjczNjk3MjE3NjI2Mzc0OWYyOTBkM2IxMzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVySW1wbC5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJjYy9DQ0xheWVyU29ydGVy
LmgiCiAjaW5jbHVkZSAiY2MvQ0NNYXRoVXRpbC5oIgogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIK
LSNpbmNsdWRlICJjYy9DQ1F1YWRDdWxsZXIuaCIKKyNpbmNsdWRlICJjYy9DQ1F1YWRTaW5rLmgi
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIHVzaW5nIFdlYktpdDo6V2ViVHJh
bnNmb3JtYXRpb25NYXRyaXg7CkBAIC0xNzQsNyArMTc0LDcgQEAgdm9pZCBDQ0xheWVySW1wbDo6
ZGlkRHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqKQogI2VuZGlmCiB9CiAKLXZvaWQgQ0NMYXllcklt
cGw6OmFwcGVuZERlYnVnQm9yZGVyUXVhZChDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBD
Q1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlKSBjb25zdAordm9pZCBDQ0xheWVySW1w
bDo6YXBwZW5kRGVidWdCb3JkZXJRdWFkKENDUXVhZFNpbmsmIHF1YWRMaXN0LCBjb25zdCBDQ1No
YXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlKSBjb25zdAogewogICAgIGlmICghaGFzRGVi
dWdCb3JkZXJzKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCmluZGV4IDcx
ZTkzYzU3NDU4MDY2YTQ3NzU4NDM0ZTVkODk4YjQyZmY2NDYzM2QuLjYxOTZjMmM0ZDUwOWY4Y2Ex
Njc0ZDMyNmMxYjJjOWU1ZGE2NTUzMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaApAQCAtNDcsOCAr
NDcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDTGF5ZXJTb3J0ZXI7CiBjbGFz
cyBDQ0xheWVyVHJlZUhvc3RJbXBsOwotY2xhc3MgQ0NRdWFkQ3VsbGVyOwogY2xhc3MgQ0NSZW5k
ZXJlcjsKK2NsYXNzIENDUXVhZFNpbms7CiBjbGFzcyBMYXllckNocm9taXVtOwogCiBjbGFzcyBD
Q0xheWVySW1wbCA6IHB1YmxpYyBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckNsaWVudCB7CkBA
IC05Myw5ICs5Myw5IEBAIHB1YmxpYzoKICAgICAvLyB0aGUgbGF5ZXIgaXMgZGVzdHJveWVkLiBU
byBlbmZvcmNlIHRoaXMsIGFueSBjbGFzcyB0aGF0IG92ZXJyaWRlcwogICAgIC8vIHdpbGxEcmF3
L2RpZERyYXcgbXVzdCBjYWxsIHRoZSBiYXNlIGNsYXNzIHZlcnNpb24uCiAgICAgdmlydHVhbCB2
b2lkIHdpbGxEcmF3KENDUmVzb3VyY2VQcm92aWRlciopOwotICAgIHZpcnR1YWwgdm9pZCBhcHBl
bmRRdWFkcyhDQ1F1YWRDdWxsZXImLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wmIGhh
ZE1pc3NpbmdUaWxlcykgeyB9CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZFNp
bmsmLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykgeyB9
CiAgICAgdmlydHVhbCB2b2lkIGRpZERyYXcoQ0NSZXNvdXJjZVByb3ZpZGVyKik7Ci0gICAgdm9p
ZCBhcHBlbmREZWJ1Z0JvcmRlclF1YWQoQ0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFk
U3RhdGUqKSBjb25zdDsKKyAgICB2b2lkIGFwcGVuZERlYnVnQm9yZGVyUXVhZChDQ1F1YWRTaW5r
JiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqKSBjb25zdDsKIAogICAgIHZpcnR1YWwgQ0NSZXNv
dXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIGNvbnRlbnRzUmVzb3VyY2VJZCgpIGNvbnN0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4IDZlNzkxNGE3NDI0MDM3
NDcyZTk5ZWQ1NzAxOTBmODAzNDdjNjZkMDcuLjdmMTI0MDQzMmI5Nzg2MjNmMjNhNGIyMGIwMTE5
NWMwOGM1MjljYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBA
IC0zMjgsMTEgKzMyOCwxNiBAQCBib29sIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJl
bmRlclBhc3NlcyhGcmFtZURhdGEmIGZyYW1lKQogICAgICAgICBpZiAoaXQucmVwcmVzZW50c0Nv
bnRyaWJ1dGluZ1JlbmRlclN1cmZhY2UoKSAmJiAhaXQtPnJlbmRlclN1cmZhY2UoKS0+c2Npc3Nv
clJlY3QoKS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIENDUmVuZGVyUGFzcyogY29udHJpYnV0
aW5nUmVuZGVyUGFzcyA9IHN1cmZhY2VQYXNzTWFwLmdldChpdC0+cmVuZGVyU3VyZmFjZSgpKTsK
ICAgICAgICAgICAgIHBhc3MtPmFwcGVuZFF1YWRzRm9yUmVuZGVyU3VyZmFjZUxheWVyKCppdCwg
Y29udHJpYnV0aW5nUmVuZGVyUGFzcywgJm9jY2x1c2lvblRyYWNrZXIpOwotICAgICAgICB9IGVs
c2UgaWYgKGl0LnJlcHJlc2VudHNJdHNlbGYoKSAmJiAhb2NjbHVzaW9uVHJhY2tlci5vY2NsdWRl
ZCgqaXQsIGl0LT52aXNpYmxlQ29udGVudFJlY3QoKSkgJiYgIWl0LT52aXNpYmxlQ29udGVudFJl
Y3QoKS5pc0VtcHR5KCkgJiYgIWl0LT5zY2lzc29yUmVjdCgpLmlzRW1wdHkoKSkgewotICAgICAg
ICAgICAgaXQtPndpbGxEcmF3KG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSk7Ci0gICAgICAgICAg
ICBmcmFtZS53aWxsRHJhd0xheWVycy5hcHBlbmQoKml0KTsKLQotICAgICAgICAgICAgcGFzcy0+
YXBwZW5kUXVhZHNGb3JMYXllcigqaXQsICZvY2NsdXNpb25UcmFja2VyLCBoYWRNaXNzaW5nVGls
ZXMpOworICAgICAgICB9IGVsc2UgaWYgKGl0LnJlcHJlc2VudHNJdHNlbGYoKSAmJiAhaXQtPnZp
c2libGVDb250ZW50UmVjdCgpLmlzRW1wdHkoKSAmJiAhaXQtPnNjaXNzb3JSZWN0KCkuaXNFbXB0
eSgpKSB7CisgICAgICAgICAgICBib29sIGhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3Vy
ZmFjZTsKKyAgICAgICAgICAgIGlmIChvY2NsdXNpb25UcmFja2VyLm9jY2x1ZGVkKCppdCwgaXQt
PnZpc2libGVDb250ZW50UmVjdCgpLCAmaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJm
YWNlKSkgeworICAgICAgICAgICAgICAgIGlmIChoYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdl
dFN1cmZhY2UpCisgICAgICAgICAgICAgICAgICAgIHBhc3MtPnNldEhhc09jY2x1c2lvbkZyb21P
dXRzaWRlVGFyZ2V0U3VyZmFjZShoYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2Up
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpdC0+d2lsbERyYXcobV9y
ZXNvdXJjZVByb3ZpZGVyLmdldCgpKTsKKyAgICAgICAgICAgICAgICBmcmFtZS53aWxsRHJhd0xh
eWVycy5hcHBlbmQoKml0KTsKKyAgICAgICAgICAgICAgICBwYXNzLT5hcHBlbmRRdWFkc0Zvckxh
eWVyKCppdCwgJm9jY2x1c2lvblRyYWNrZXIsIGhhZE1pc3NpbmdUaWxlcyk7CisgICAgICAgICAg
ICB9CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoaGFkTWlzc2luZ1RpbGVzKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1
c2lvblRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNwcAppbmRleCAwZDAxNTkzY2Y4NzNiZTY3MmQzN2Fl
Nzc4YjQ4ZjdjYTdkMTk5ZTJkLi41ZDk0ZGYwNzhiNDRmN2I3YmFhNTQ0NzViYWExZDAxNTJmMzlh
NDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5jcHAKQEAgLTM3Nyw4ICsz
NzcsMTEgQEAgc3RhdGljIGlubGluZSBib29sIHRlc3RDb250ZW50UmVjdE9jY2x1ZGVkKGNvbnN0
IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBXZWIKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
TGF5ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZT4KLWJvb2wgQ0NPY2NsdXNpb25U
cmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6b2NjbHVkZWQoY29uc3Qg
TGF5ZXJUeXBlKiBsYXllciwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpIGNvbnN0Citib29s
IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46Om9j
Y2x1ZGVkKGNvbnN0IExheWVyVHlwZSogbGF5ZXIsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0
LCBib29sKiBoYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UpIGNvbnN0CiB7Cisg
ICAgaWYgKGhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSkKKyAgICAgICAgKmhh
c09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSA9IGZhbHNlOworCiAgICAgQVNTRVJU
KCFtX3N0YWNrLmlzRW1wdHkoKSk7CiAgICAgaWYgKG1fc3RhY2suaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0zODcsMTAgKzM5MCwxNSBAQCBib29sIENDT2NjbHVzaW9uVHJh
Y2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46Om9jY2x1ZGVkKGNvbnN0IExh
eWVyVAogCiAgICAgQVNTRVJUKGxheWVyLT5yZW5kZXJUYXJnZXQoKSA9PSBtX3N0YWNrLmxhc3Qo
KS50YXJnZXQpOwogCi0gICAgaWYgKGxheWVyVHJhbnNmb3Jtc1RvU2NyZWVuS25vd24obGF5ZXIp
ICYmIHRlc3RDb250ZW50UmVjdE9jY2x1ZGVkKGNvbnRlbnRSZWN0LCBjb250ZW50VG9TY3JlZW5T
cGFjZVRyYW5zZm9ybTxMYXllclR5cGU+KGxheWVyKSwgbV9zY2lzc29yUmVjdEluU2NyZWVuU3Bh
Y2UsIG1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluU2NyZWVuKSkKLSAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgaWYgKGxheWVyVHJhbnNmb3Jtc1RvVGFyZ2V0S25vd24obGF5ZXIpICYmIHRlc3RD
b250ZW50UmVjdE9jY2x1ZGVkKGNvbnRlbnRSZWN0LCBjb250ZW50VG9UYXJnZXRTdXJmYWNlVHJh
bnNmb3JtPExheWVyVHlwZT4obGF5ZXIpLCBsYXllclNjaXNzb3JSZWN0SW5UYXJnZXRTdXJmYWNl
KGxheWVyKSwgbV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5UYXJnZXQpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgIGlmIChsYXllclRyYW5zZm9ybXNUb1NjcmVlbktub3duKGxheWVyKSAm
JiB0ZXN0Q29udGVudFJlY3RPY2NsdWRlZChjb250ZW50UmVjdCwgY29udGVudFRvU2NyZWVuU3Bh
Y2VUcmFuc2Zvcm08TGF5ZXJUeXBlPihsYXllciksIG1fc2Npc3NvclJlY3RJblNjcmVlblNwYWNl
LCBtX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblNjcmVlbikpIHsKKyAgICAgICAgaWYgKGhhc09j
Y2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSkKKyAgICAgICAgICAgICpoYXNPY2NsdXNp
b25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UgPSB0cnVlOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTQxNyw3ICs0MjUsNyBAQCBzdGF0
aWMgaW5saW5lIEludFJlY3QgY29tcHV0ZVVub2NjbHVkZWRDb250ZW50UmVjdChjb25zdCBJbnRS
ZWN0JiBjb250ZW50UmVjdCwgYwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5
cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlPgotSW50UmVjdCBDQ09jY2x1c2lvblRyYWNrZXJCYXNl
PExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+Ojp1bm9jY2x1ZGVkQ29udGVudFJlY3QoY29u
c3QgTGF5ZXJUeXBlKiBsYXllciwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpIGNvbnN0CitJ
bnRSZWN0IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlw
ZT46OnVub2NjbHVkZWRDb250ZW50UmVjdChjb25zdCBMYXllclR5cGUqIGxheWVyLCBjb25zdCBJ
bnRSZWN0JiBjb250ZW50UmVjdCwgYm9vbCogaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRT
dXJmYWNlKSBjb25zdAogewogICAgIEFTU0VSVCghbV9zdGFjay5pc0VtcHR5KCkpOwogICAgIGlm
IChtX3N0YWNrLmlzRW1wdHkoKSkKQEAgLTQzNCwxOCArNDQyLDIxIEBAIEludFJlY3QgQ0NPY2Ns
dXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6dW5vY2NsdWRl
ZENvbnRlbnRSCiAgICAgaWYgKGxheWVyVHJhbnNmb3Jtc1RvU2NyZWVuS25vd24obGF5ZXIpKQog
ICAgICAgICB1bm9jY2x1ZGVkSW5TY3JlZW4gPSBjb21wdXRlVW5vY2NsdWRlZENvbnRlbnRSZWN0
KGNvbnRlbnRSZWN0LCBjb250ZW50VG9TY3JlZW5TcGFjZVRyYW5zZm9ybTxMYXllclR5cGU+KGxh
eWVyKSwgbV9zY2lzc29yUmVjdEluU2NyZWVuU3BhY2UsIG1fc3RhY2subGFzdCgpLm9jY2x1c2lv
bkluU2NyZWVuKTsKIAotICAgIGlmICh1bm9jY2x1ZGVkSW5TY3JlZW4uaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gdW5vY2NsdWRlZEluU2NyZWVuOwotCiAgICAgSW50UmVjdCB1bm9jY2x1ZGVk
SW5UYXJnZXQgPSBjb250ZW50UmVjdDsKICAgICBpZiAobGF5ZXJUcmFuc2Zvcm1zVG9UYXJnZXRL
bm93bihsYXllcikpCiAgICAgICAgIHVub2NjbHVkZWRJblRhcmdldCA9IGNvbXB1dGVVbm9jY2x1
ZGVkQ29udGVudFJlY3QoY29udGVudFJlY3QsIGNvbnRlbnRUb1RhcmdldFN1cmZhY2VUcmFuc2Zv
cm08TGF5ZXJUeXBlPihsYXllciksIGxheWVyU2Npc3NvclJlY3RJblRhcmdldFN1cmZhY2UobGF5
ZXIpLCBtX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblRhcmdldCk7CiAKKyAgICBpZiAoaGFzT2Nj
bHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKQorICAgICAgICAqaGFzT2NjbHVzaW9uRnJv
bU91dHNpZGVUYXJnZXRTdXJmYWNlID0gKGludGVyc2VjdGlvbih1bm9jY2x1ZGVkSW5TY3JlZW4s
IHVub2NjbHVkZWRJblRhcmdldCkgIT0gdW5vY2NsdWRlZEluVGFyZ2V0KTsKKworICAgIGlmICh1
bm9jY2x1ZGVkSW5TY3JlZW4uaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdW5vY2NsdWRlZElu
U2NyZWVuOworCiAgICAgcmV0dXJuIGludGVyc2VjdGlvbih1bm9jY2x1ZGVkSW5TY3JlZW4sIHVu
b2NjbHVkZWRJblRhcmdldCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZSwgdHlw
ZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGU+Ci1JbnRSZWN0IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8
TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46OnVub2NjbHVkZWRDb250cmlidXRpbmdTdXJm
YWNlQ29udGVudFJlY3QoY29uc3QgTGF5ZXJUeXBlKiBsYXllciwgYm9vbCBmb3JSZXBsaWNhLCBj
b25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkgY29uc3QKK0ludFJlY3QgQ0NPY2NsdXNpb25UcmFj
a2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6dW5vY2NsdWRlZENvbnRyaWJ1
dGluZ1N1cmZhY2VDb250ZW50UmVjdChjb25zdCBMYXllclR5cGUqIGxheWVyLCBib29sIGZvclJl
cGxpY2EsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBib29sKiBoYXNPY2NsdXNpb25Gcm9t
T3V0c2lkZVRhcmdldFN1cmZhY2UpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFtX3N0YWNrLmlzRW1w
dHkoKSk7CiAgICAgLy8gVGhlIGxheWVyIGlzIGEgY29udHJpYnV0aW5nIHJlbmRlclRhcmdldCBz
byBpdCBzaG91bGQgaGF2ZSBhIHN1cmZhY2UuCkBAIC00ODQsOSArNDk1LDYgQEAgSW50UmVjdCBD
Q09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+Ojp1bm9j
Y2x1ZGVkQ29udHJpYnUKICAgICAgICAgICAgIHVub2NjbHVkZWRJblNjcmVlbiA9IGNvbXB1dGVV
bm9jY2x1ZGVkQ29udGVudFJlY3QoY29udGVudFJlY3QsIHRyYW5zZm9ybVRvU2NyZWVuLCBtX3Nj
aXNzb3JSZWN0SW5TY3JlZW5TcGFjZSwgUmVnaW9uKCkpOwogICAgIH0KIAotICAgIGlmICh1bm9j
Y2x1ZGVkSW5TY3JlZW4uaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gdW5vY2NsdWRlZEluU2Ny
ZWVuOwotCiAgICAgSW50UmVjdCB1bm9jY2x1ZGVkSW5UYXJnZXQgPSBjb250ZW50UmVjdDsKICAg
ICBpZiAoc3VyZmFjZVRyYW5zZm9ybXNUb1RhcmdldEtub3duKHN1cmZhY2UpKSB7CiAgICAgICAg
IGlmIChoYXNPY2NsdXNpb24pIHsKQEAgLTQ5Niw2ICs1MDQsMTIgQEAgSW50UmVjdCBDQ09jY2x1
c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+Ojp1bm9jY2x1ZGVk
Q29udHJpYnUKICAgICAgICAgICAgIHVub2NjbHVkZWRJblRhcmdldCA9IGNvbXB1dGVVbm9jY2x1
ZGVkQ29udGVudFJlY3QoY29udGVudFJlY3QsIHRyYW5zZm9ybVRvVGFyZ2V0LCBzdXJmYWNlQ2xp
cFJlY3QsIFJlZ2lvbigpKTsKICAgICB9CiAKKyAgICBpZiAoaGFzT2NjbHVzaW9uRnJvbU91dHNp
ZGVUYXJnZXRTdXJmYWNlKQorICAgICAgICAqaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRT
dXJmYWNlID0gKGludGVyc2VjdGlvbih1bm9jY2x1ZGVkSW5TY3JlZW4sIHVub2NjbHVkZWRJblRh
cmdldCkgIT0gdW5vY2NsdWRlZEluVGFyZ2V0KTsKKworICAgIGlmICh1bm9jY2x1ZGVkSW5TY3Jl
ZW4uaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdW5vY2NsdWRlZEluU2NyZWVuOworCiAgICAg
cmV0dXJuIGludGVyc2VjdGlvbih1bm9jY2x1ZGVkSW5TY3JlZW4sIHVub2NjbHVkZWRJblRhcmdl
dCk7CiB9CiAKQEAgLTUxNyw5ICs1MzEsOSBAQCB0ZW1wbGF0ZSB2b2lkIENDT2NjbHVzaW9uVHJh
Y2tlckJhc2U8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9taXVtPjo6ZW50ZQogdGVt
cGxhdGUgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyQ2hyb21pdW0sIFJlbmRlclN1
cmZhY2VDaHJvbWl1bT46OmZpbmlzaGVkUmVuZGVyVGFyZ2V0KGNvbnN0IExheWVyQ2hyb21pdW0q
IGZpbmlzaGVkVGFyZ2V0KTsKIHRlbXBsYXRlIHZvaWQgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxM
YXllckNocm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+OjpsZWF2ZVRvUmVuZGVyVGFyZ2V0
KGNvbnN0IExheWVyQ2hyb21pdW0qIG5ld1RhcmdldCk7CiB0ZW1wbGF0ZSB2b2lkIENDT2NjbHVz
aW9uVHJhY2tlckJhc2U8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9taXVtPjo6bWFy
a09jY2x1ZGVkQmVoaW5kTGF5ZXIoY29uc3QgTGF5ZXJDaHJvbWl1bSopOwotdGVtcGxhdGUgYm9v
bCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJv
bWl1bT46Om9jY2x1ZGVkKGNvbnN0IExheWVyQ2hyb21pdW0qLCBjb25zdCBJbnRSZWN0JiBjb250
ZW50UmVjdCkgY29uc3Q7Ci10ZW1wbGF0ZSBJbnRSZWN0IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8
TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9taXVtPjo6dW5vY2NsdWRlZENvbnRlbnRS
ZWN0KGNvbnN0IExheWVyQ2hyb21pdW0qLCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkgY29u
c3Q7Ci10ZW1wbGF0ZSBJbnRSZWN0IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJDaHJvbWl1
bSwgUmVuZGVyU3VyZmFjZUNocm9taXVtPjo6dW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VD
b250ZW50UmVjdChjb25zdCBMYXllckNocm9taXVtKiwgYm9vbCBmb3JSZXBsaWNhLCBjb25zdCBJ
bnRSZWN0JiBjb250ZW50UmVjdCkgY29uc3Q7Cit0ZW1wbGF0ZSBib29sIENDT2NjbHVzaW9uVHJh
Y2tlckJhc2U8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9taXVtPjo6b2NjbHVkZWQo
Y29uc3QgTGF5ZXJDaHJvbWl1bSosIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBib29sKiBo
YXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UpIGNvbnN0OwordGVtcGxhdGUgSW50
UmVjdCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VD
aHJvbWl1bT46OnVub2NjbHVkZWRDb250ZW50UmVjdChjb25zdCBMYXllckNocm9taXVtKiwgY29u
c3QgSW50UmVjdCYgY29udGVudFJlY3QsIGJvb2wqIGhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFy
Z2V0U3VyZmFjZSkgY29uc3Q7Cit0ZW1wbGF0ZSBJbnRSZWN0IENDT2NjbHVzaW9uVHJhY2tlckJh
c2U8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9taXVtPjo6dW5vY2NsdWRlZENvbnRy
aWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChjb25zdCBMYXllckNocm9taXVtKiwgYm9vbCBmb3JS
ZXBsaWNhLCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgYm9vbCogaGFzT2NjbHVzaW9uRnJv
bU91dHNpZGVUYXJnZXRTdXJmYWNlKSBjb25zdDsKIHRlbXBsYXRlIEludFJlY3QgQ0NPY2NsdXNp
b25UcmFja2VyQmFzZTxMYXllckNocm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+OjpsYXll
clNjaXNzb3JSZWN0SW5UYXJnZXRTdXJmYWNlKGNvbnN0IExheWVyQ2hyb21pdW0qKSBjb25zdDsK
IAogdGVtcGxhdGUgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxDQ0xheWVySW1wbCwgQ0NSZW5kZXJT
dXJmYWNlPjo6Q0NPY2NsdXNpb25UcmFja2VyQmFzZShJbnRSZWN0IHNjaXNzb3JSZWN0SW5TY3Jl
ZW5TcGFjZSwgYm9vbCByZWNvcmRNZXRyaWNzRm9yRnJhbWUpOwpAQCAtNTI5LDkgKzU0Myw5IEBA
IHRlbXBsYXRlIHZvaWQgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxDQ0xheWVySW1wbCwgQ0NSZW5k
ZXJTdXJmYWNlPjo6ZW50ZXJSZW5kZXJUCiB0ZW1wbGF0ZSB2b2lkIENDT2NjbHVzaW9uVHJhY2tl
ckJhc2U8Q0NMYXllckltcGwsIENDUmVuZGVyU3VyZmFjZT46OmZpbmlzaGVkUmVuZGVyVGFyZ2V0
KGNvbnN0IENDTGF5ZXJJbXBsKiBmaW5pc2hlZFRhcmdldCk7CiB0ZW1wbGF0ZSB2b2lkIENDT2Nj
bHVzaW9uVHJhY2tlckJhc2U8Q0NMYXllckltcGwsIENDUmVuZGVyU3VyZmFjZT46OmxlYXZlVG9S
ZW5kZXJUYXJnZXQoY29uc3QgQ0NMYXllckltcGwqIG5ld1RhcmdldCk7CiB0ZW1wbGF0ZSB2b2lk
IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8Q0NMYXllckltcGwsIENDUmVuZGVyU3VyZmFjZT46Om1h
cmtPY2NsdWRlZEJlaGluZExheWVyKGNvbnN0IENDTGF5ZXJJbXBsKik7Ci10ZW1wbGF0ZSBib29s
IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8Q0NMYXllckltcGwsIENDUmVuZGVyU3VyZmFjZT46Om9j
Y2x1ZGVkKGNvbnN0IENDTGF5ZXJJbXBsKiwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpIGNv
bnN0OwotdGVtcGxhdGUgSW50UmVjdCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPENDTGF5ZXJJbXBs
LCBDQ1JlbmRlclN1cmZhY2U+Ojp1bm9jY2x1ZGVkQ29udGVudFJlY3QoY29uc3QgQ0NMYXllcklt
cGwqLCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkgY29uc3Q7Ci10ZW1wbGF0ZSBJbnRSZWN0
IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8Q0NMYXllckltcGwsIENDUmVuZGVyU3VyZmFjZT46OnVu
b2NjbHVkZWRDb250cmlidXRpbmdTdXJmYWNlQ29udGVudFJlY3QoY29uc3QgQ0NMYXllckltcGwq
LCBib29sIGZvclJlcGxpY2EsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KSBjb25zdDsKK3Rl
bXBsYXRlIGJvb2wgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxDQ0xheWVySW1wbCwgQ0NSZW5kZXJT
dXJmYWNlPjo6b2NjbHVkZWQoY29uc3QgQ0NMYXllckltcGwqLCBjb25zdCBJbnRSZWN0JiBjb250
ZW50UmVjdCwgYm9vbCogaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKSBjb25z
dDsKK3RlbXBsYXRlIEludFJlY3QgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxDQ0xheWVySW1wbCwg
Q0NSZW5kZXJTdXJmYWNlPjo6dW5vY2NsdWRlZENvbnRlbnRSZWN0KGNvbnN0IENDTGF5ZXJJbXBs
KiwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGJvb2wqIGhhc09jY2x1c2lvbkZyb21PdXRz
aWRlVGFyZ2V0U3VyZmFjZSkgY29uc3Q7Cit0ZW1wbGF0ZSBJbnRSZWN0IENDT2NjbHVzaW9uVHJh
Y2tlckJhc2U8Q0NMYXllckltcGwsIENDUmVuZGVyU3VyZmFjZT46OnVub2NjbHVkZWRDb250cmli
dXRpbmdTdXJmYWNlQ29udGVudFJlY3QoY29uc3QgQ0NMYXllckltcGwqLCBib29sIGZvclJlcGxp
Y2EsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBib29sKiBoYXNPY2NsdXNpb25Gcm9tT3V0
c2lkZVRhcmdldFN1cmZhY2UpIGNvbnN0OwogdGVtcGxhdGUgSW50UmVjdCBDQ09jY2x1c2lvblRy
YWNrZXJCYXNlPENDTGF5ZXJJbXBsLCBDQ1JlbmRlclN1cmZhY2U+OjpsYXllclNjaXNzb3JSZWN0
SW5UYXJnZXRTdXJmYWNlKGNvbnN0IENDTGF5ZXJJbXBsKikgY29uc3Q7CiAKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNp
b25UcmFja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ09jY2x1c2lvblRyYWNrZXIuaAppbmRleCBhZTg1NzUxZWExZjgxMmVhYjViNDRlNTAwZmM1
YTg4Yjk3YmZmYzUxLi5hNjAxYjZkMzk1MWExNGZlYjNhZWQzMzFjNTU0MzliNjA3ZDk0NzRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q09jY2x1c2lvblRyYWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuaApAQCAtNTQsMTMgKzU0LDEzIEBAIHB1
YmxpYzoKICAgICB2b2lkIGxlYXZlTGF5ZXIoY29uc3QgQ0NMYXllckl0ZXJhdG9yUG9zaXRpb248
TGF5ZXJUeXBlPiYpOwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiByZWN0IGlu
IGNvbnRlbnQgc3BhY2UgZm9yIHRoZSBsYXllciBpcyBmdWxseSBvY2NsdWRlZCBpbiBlaXRoZXIg
c2NyZWVuIHNwYWNlIG9yIHRoZSBsYXllcidzIHRhcmdldCBzdXJmYWNlLgotICAgIGJvb2wgb2Nj
bHVkZWQoY29uc3QgTGF5ZXJUeXBlKiwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpIGNvbnN0
OworICAgIGJvb2wgb2NjbHVkZWQoY29uc3QgTGF5ZXJUeXBlKiwgY29uc3QgSW50UmVjdCYgY29u
dGVudFJlY3QsIGJvb2wqIGhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSA9IDAp
IGNvbnN0OwogICAgIC8vIEdpdmVzIGFuIHVub2NjbHVkZWQgc3ViLXJlY3Qgb2YgfGNvbnRlbnRS
ZWN0fCBpbiB0aGUgY29udGVudCBzcGFjZSBvZiB0aGUgbGF5ZXIuIFVzZWQgd2hlbiBjb25zaWRl
cmluZyBvY2NsdXNpb24gZm9yIGEgbGF5ZXIgdGhhdCBwYWludHMvZHJhd3Mgc29tZXRoaW5nLgot
ICAgIEludFJlY3QgdW5vY2NsdWRlZENvbnRlbnRSZWN0KGNvbnN0IExheWVyVHlwZSosIGNvbnN0
IEludFJlY3QmIGNvbnRlbnRSZWN0KSBjb25zdDsKKyAgICBJbnRSZWN0IHVub2NjbHVkZWRDb250
ZW50UmVjdChjb25zdCBMYXllclR5cGUqLCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgYm9v
bCogaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlID0gMCkgY29uc3Q7CiAKICAg
ICAvLyBHaXZlcyBhbiB1bm9jY2x1ZGVkIHN1Yi1yZWN0IG9mIHxjb250ZW50UmVjdHwgaW4gdGhl
IGNvbnRlbnQgc3BhY2Ugb2YgdGhlIHJlbmRlclRhcmdldCBvd25lZCBieSB0aGUgbGF5ZXIuCiAg
ICAgLy8gVXNlZCB3aGVuIGNvbnNpZGVyaW5nIG9jY2x1c2lvbiBmb3IgYSBjb250cmlidXRpbmcg
c3VyZmFjZSB0aGF0IGlzIHJlbmRlcmluZyBpbnRvIGFub3RoZXIgdGFyZ2V0LgotICAgIEludFJl
Y3QgdW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChjb25zdCBMYXllclR5
cGUqLCBib29sIGZvclJlcGxpY2EsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KSBjb25zdDsK
KyAgICBJbnRSZWN0IHVub2NjbHVkZWRDb250cmlidXRpbmdTdXJmYWNlQ29udGVudFJlY3QoY29u
c3QgTGF5ZXJUeXBlKiwgYm9vbCBmb3JSZXBsaWNhLCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVj
dCwgYm9vbCogaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlID0gMCkgY29uc3Q7
CiAKICAgICAvLyBSZXBvcnQgb3BlcmF0aW9ucyBmb3IgcmVjb3JkaW5nIG92ZXJkcmF3IG1ldHJp
Y3MuCiAgICAgQ0NPdmVyZHJhd01ldHJpY3MmIG92ZXJkcmF3TWV0cmljcygpIGNvbnN0IHsgcmV0
dXJuICptX292ZXJkcmF3TWV0cmljcy5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHAK
aW5kZXggNjVmNzg3ODhlZDQ5YWUyNDI4NWY3ZGFjY2ViNzFkZTFmNDlhM2VmMy4uMDY4NGYzZWU1
NTVlMmZiYWFhZTRmNGZlYTljNDZiMzA2YmY1ZWNkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIu
Y3BwCkBAIC0zMyw3ICszMyw5IEBACiAjaW5jbHVkZSAiU2tDb2xvci5oIgogI2luY2x1ZGUgImNj
L0NDRGVidWdCb3JkZXJEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCisj
aW5jbHVkZSAiY2MvQ0NPY2NsdXNpb25UcmFja2VyLmgiCiAjaW5jbHVkZSAiY2MvQ0NPdmVyZHJh
d01ldHJpY3MuaCIKKyNpbmNsdWRlICJjYy9DQ1JlbmRlclBhc3MuaCIKICNpbmNsdWRlIDxwdWJs
aWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKQEAg
LTQ2LDExICs0OCwxMyBAQCBzdGF0aWMgY29uc3QgaW50IGRlYnVnVGlsZUJvcmRlckNvbG9yUmVk
ID0gMTYwOwogc3RhdGljIGNvbnN0IGludCBkZWJ1Z1RpbGVCb3JkZXJDb2xvckdyZWVuID0gMTAw
Owogc3RhdGljIGNvbnN0IGludCBkZWJ1Z1RpbGVCb3JkZXJDb2xvckJsdWUgPSAwOwogCi1DQ1F1
YWRDdWxsZXI6OkNDUXVhZEN1bGxlcihDQ1F1YWRMaXN0JiBxdWFkTGlzdCwgQ0NMYXllckltcGwq
IGxheWVyLCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXJJbXBsKiBvY2NsdXNpb25UcmFja2VyLCBi
b29sIHNob3dDdWxsaW5nV2l0aERlYnVnQm9yZGVyUXVhZHMpCitDQ1F1YWRDdWxsZXI6OkNDUXVh
ZEN1bGxlcihDQ1F1YWRMaXN0JiBxdWFkTGlzdCwgQ0NMYXllckltcGwqIGxheWVyLCBjb25zdCBD
Q09jY2x1c2lvblRyYWNrZXJJbXBsKiBvY2NsdXNpb25UcmFja2VyLCBib29sIHNob3dDdWxsaW5n
V2l0aERlYnVnQm9yZGVyUXVhZHMsIGJvb2wgZm9yU3VyZmFjZSkKICAgICA6IG1fcXVhZExpc3Qo
cXVhZExpc3QpCiAgICAgLCBtX2xheWVyKGxheWVyKQogICAgICwgbV9vY2NsdXNpb25UcmFja2Vy
KG9jY2x1c2lvblRyYWNrZXIpCiAgICAgLCBtX3Nob3dDdWxsaW5nV2l0aERlYnVnQm9yZGVyUXVh
ZHMoc2hvd0N1bGxpbmdXaXRoRGVidWdCb3JkZXJRdWFkcykKKyAgICAsIG1fZm9yU3VyZmFjZShm
b3JTdXJmYWNlKQorICAgICwgbV9oYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2Uo
ZmFsc2UpCiB7CiB9CiAKQEAgLTc4LDEzICs4MiwxNSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYXBw
ZW5kUXVhZEludGVybmFsKFBhc3NPd25QdHI8Q0NEcmF3UXVhZD4gcGFzc0RyYXdRdWFkLCBjb25z
dAogCiBib29sIENDUXVhZEN1bGxlcjo6YXBwZW5kKFBhc3NPd25QdHI8Q0NEcmF3UXVhZD4gcGFz
c0RyYXdRdWFkKQogewotICAgIEludFJlY3QgY3VsbGVkUmVjdCA9IG1fb2NjbHVzaW9uVHJhY2tl
ci0+dW5vY2NsdWRlZENvbnRlbnRSZWN0KG1fbGF5ZXIsIHBhc3NEcmF3UXVhZC0+cXVhZFJlY3Qo
KSk7Ci0gICAgcmV0dXJuIGFwcGVuZFF1YWRJbnRlcm5hbChwYXNzRHJhd1F1YWQsIGN1bGxlZFJl
Y3QsIG1fcXVhZExpc3QsICptX29jY2x1c2lvblRyYWNrZXIsIG1fc2hvd0N1bGxpbmdXaXRoRGVi
dWdCb3JkZXJRdWFkcyk7Ci19CisgICAgSW50UmVjdCBjdWxsZWRSZWN0OworICAgIGJvb2wgaGFz
T2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlOworCisgICAgaWYgKG1fZm9yU3VyZmFj
ZSkKKyAgICAgICAgY3VsbGVkUmVjdCA9IG1fb2NjbHVzaW9uVHJhY2tlci0+dW5vY2NsdWRlZENv
bnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChtX2xheWVyLCBmYWxzZSwgcGFzc0RyYXdRdWFk
LT5xdWFkUmVjdCgpLCAmaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKTsKKyAg
ICBlbHNlCisgICAgICAgIGN1bGxlZFJlY3QgPSBtX29jY2x1c2lvblRyYWNrZXItPnVub2NjbHVk
ZWRDb250ZW50UmVjdChtX2xheWVyLCBwYXNzRHJhd1F1YWQtPnF1YWRSZWN0KCksICZoYXNPY2Ns
dXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UpOworICAgIG1faGFzT2NjbHVzaW9uRnJvbU91
dHNpZGVUYXJnZXRTdXJmYWNlIHw9IGhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFj
ZTsKIAotYm9vbCBDQ1F1YWRDdWxsZXI6OmFwcGVuZFN1cmZhY2UoUGFzc093blB0cjxDQ0RyYXdR
dWFkPiBwYXNzRHJhd1F1YWQpCi17Ci0gICAgSW50UmVjdCBjdWxsZWRSZWN0ID0gbV9vY2NsdXNp
b25UcmFja2VyLT51bm9jY2x1ZGVkQ29udHJpYnV0aW5nU3VyZmFjZUNvbnRlbnRSZWN0KG1fbGF5
ZXIsIGZhbHNlLCBwYXNzRHJhd1F1YWQtPnF1YWRSZWN0KCkpOwogICAgIHJldHVybiBhcHBlbmRR
dWFkSW50ZXJuYWwocGFzc0RyYXdRdWFkLCBjdWxsZWRSZWN0LCBtX3F1YWRMaXN0LCAqbV9vY2Ns
dXNpb25UcmFja2VyLCBtX3Nob3dDdWxsaW5nV2l0aERlYnVnQm9yZGVyUXVhZHMpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1F1YWRDdWxsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUXVhZEN1bGxlci5oCmluZGV4IDI5OTliNmFkNWFmODQ0NTU0Mjc0ZDQ0ZTFiOTQ1ZjY3
OTg3ZTVmNjAuLjdmMDgwMjc4MjdkZDhkZTU1Yzc4NWMyMDBlNTc1MDVhMmNhYTBkOTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVh
ZEN1bGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUXVhZEN1bGxlci5oCkBAIC0yNiwyNyArMjYsMzMgQEAKICNpZm5kZWYgQ0NRdWFkQ3Vs
bGVyX2gKICNkZWZpbmUgQ0NRdWFkQ3VsbGVyX2gKIAotI2luY2x1ZGUgImNjL0NDUmVuZGVyUGFz
cy5oIgorI2luY2x1ZGUgIkNDUXVhZFNpbmsuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgQ0NMYXllckltcGw7Ci1jbGFzcyBDQ092ZXJkcmF3TWV0cmljczsKK2NsYXNzIENDUmVuZGVy
U3VyZmFjZTsKK2NsYXNzIENDUXVhZExpc3Q7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGUs
IHR5cGVuYW1lIFN1cmZhY2VUeXBlPgorY2xhc3MgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTsKIAot
Y2xhc3MgQ0NRdWFkQ3VsbGVyIHsKK2NsYXNzIENDUXVhZEN1bGxlciA6IHB1YmxpYyBDQ1F1YWRT
aW5rIHsKIHB1YmxpYzoKLSAgICAvLyBQYXNzaW5nIDAgZm9yIENDT3ZlcmRyYXdDb3VudHMqIGlz
IHZhbGlkLCBhbmQgZGlzYWJsZSB0aGUgZXh0cmEgY29tcHV0YXRpb24KLSAgICAvLyBkb25lIHRv
IGVzdGltYXRlIG92ZXIgZHJhdyBzdGF0aXN0aWNzLgotICAgIENDUXVhZEN1bGxlcihDQ1F1YWRM
aXN0JiwgQ0NMYXllckltcGwqLCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXJJbXBsKiwgYm9vbCBz
aG93Q3VsbGluZ1dpdGhEZWJ1Z0JvcmRlclF1YWRzKTsKKyAgICBDQ1F1YWRDdWxsZXIoQ0NRdWFk
TGlzdCYsIENDTGF5ZXJJbXBsKiwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxDQ0xheWVy
SW1wbCwgQ0NSZW5kZXJTdXJmYWNlPiosIGJvb2wgc2hvd0N1bGxpbmdXaXRoRGVidWdCb3JkZXJR
dWFkcywgYm9vbCBmb3JTdXJmYWNlKTsKKworICAgIHZpcnR1YWwgfkNDUXVhZEN1bGxlcigpIHsg
fQogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBxdWFkIGlzIGFkZGVkIHRvIHRoZSBsaXN0
LCBhbmQgZmFsc2UgaWYgdGhlIHF1YWQgaXMgZW50aXJlbHkgY3VsbGVkLgotICAgIHZpcnR1YWwg
Ym9vbCBhcHBlbmQoUGFzc093blB0cjxDQ0RyYXdRdWFkPiBwYXNzRHJhd1F1YWQpOwotICAgIHZp
cnR1YWwgYm9vbCBhcHBlbmRTdXJmYWNlKFBhc3NPd25QdHI8Q0NEcmF3UXVhZD4gcGFzc0RyYXdR
dWFkKTsKKyAgICB2aXJ0dWFsIGJvb2wgYXBwZW5kKFBhc3NPd25QdHI8V2ViS2l0OjpXZWJDb21w
b3NpdG9yUXVhZD4gcGFzc0RyYXdRdWFkKSBPVkVSUklERTsKKworICAgIGJvb2wgaGFzT2NjbHVz
aW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKCkgeyByZXR1cm4gbV9oYXNPY2NsdXNpb25Gcm9t
T3V0c2lkZVRhcmdldFN1cmZhY2U7IH0KIAogcHJpdmF0ZToKICAgICBDQ1F1YWRMaXN0JiBtX3F1
YWRMaXN0OwogICAgIENDTGF5ZXJJbXBsKiBtX2xheWVyOwotICAgIGNvbnN0IENDT2NjbHVzaW9u
VHJhY2tlckltcGwqIG1fb2NjbHVzaW9uVHJhY2tlcjsKKyAgICBjb25zdCBDQ09jY2x1c2lvblRy
YWNrZXJCYXNlPENDTGF5ZXJJbXBsLCBDQ1JlbmRlclN1cmZhY2U+KiBtX29jY2x1c2lvblRyYWNr
ZXI7CiAgICAgYm9vbCBtX3Nob3dDdWxsaW5nV2l0aERlYnVnQm9yZGVyUXVhZHM7CisgICAgYm9v
bCBtX2ZvclN1cmZhY2U7CisgICAgYm9vbCBtX2hhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0
U3VyZmFjZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwCmluZGV4IGQzODlmMmIz
MjZlYjY2MzZkNTNiODI5MGJjZjllYTFjMjkyMTQ3Y2EuLjc1YjRlMmQ2N2JmNGE4OWViMTAwYzY4
MGNiZjkyN2NlNGFlMDY5Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcApAQCAtMjksNiAr
MjksNyBAQAogCiAjaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKICNpbmNsdWRlICJjYy9DQ01h
dGhVdGlsLmgiCisjaW5jbHVkZSAiY2MvQ0NPY2NsdXNpb25UcmFja2VyLmgiCiAjaW5jbHVkZSAi
Y2MvQ0NRdWFkQ3VsbGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NTaGFyZWRRdWFkU3RhdGUuaCIKICNp
bmNsdWRlICJjYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5oIgpAQCAtNDcsNiArNDgsNyBAQCBDQ1Jl
bmRlclBhc3M6OkNDUmVuZGVyUGFzcyhDQ1JlbmRlclN1cmZhY2UqIHRhcmdldFN1cmZhY2UsIGlu
dCBpZCkKICAgICAsIG1fdGFyZ2V0U3VyZmFjZSh0YXJnZXRTdXJmYWNlKQogICAgICwgbV9mcmFt
ZWJ1ZmZlck91dHB1dFJlY3QodGFyZ2V0U3VyZmFjZS0+Y29udGVudFJlY3QoKSkKICAgICAsIG1f
aGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKHRydWUpCisgICAgLCBtX2hhc09jY2x1c2lvbkZyb21P
dXRzaWRlVGFyZ2V0U3VyZmFjZShmYWxzZSkKIHsKICAgICBBU1NFUlQodGFyZ2V0U3VyZmFjZSk7
CiAgICAgQVNTRVJUKGlkID4gMCk7CkBAIC01NCwxOSArNTYsMjMgQEAgQ0NSZW5kZXJQYXNzOjpD
Q1JlbmRlclBhc3MoQ0NSZW5kZXJTdXJmYWNlKiB0YXJnZXRTdXJmYWNlLCBpbnQgaWQpCiAKIHZv
aWQgQ0NSZW5kZXJQYXNzOjphcHBlbmRRdWFkc0ZvckxheWVyKENDTGF5ZXJJbXBsKiBsYXllciwg
Q0NPY2NsdXNpb25UcmFja2VySW1wbCogb2NjbHVzaW9uVHJhY2tlciwgYm9vbCYgaGFkTWlzc2lu
Z1RpbGVzKQogewotICAgIENDUXVhZEN1bGxlciBxdWFkQ3VsbGVyKG1fcXVhZExpc3QsIGxheWVy
LCBvY2NsdXNpb25UcmFja2VyLCBsYXllci0+aGFzRGVidWdCb3JkZXJzKCkpOworICAgIGNvbnN0
IGJvb2wgZm9yU3VyZmFjZSA9IGZhbHNlOworICAgIENDUXVhZEN1bGxlciBxdWFkQ3VsbGVyKG1f
cXVhZExpc3QsIGxheWVyLCBvY2NsdXNpb25UcmFja2VyLCBsYXllci0+aGFzRGVidWdCb3JkZXJz
KCksIGZvclN1cmZhY2UpOwogCiAgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRR
dWFkU3RhdGUgPSBsYXllci0+Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKG1fc2hhcmVkUXVhZFN0YXRl
TGlzdC5zaXplKCkpOwogICAgIGxheWVyLT5hcHBlbmREZWJ1Z0JvcmRlclF1YWQocXVhZEN1bGxl
ciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpKTsKICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1
bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpLCBoYWRNaXNzaW5nVGlsZXMpOwogICAgIG1fc2hh
cmVkUXVhZFN0YXRlTGlzdC5hcHBlbmQoc2hhcmVkUXVhZFN0YXRlLnJlbGVhc2UoKSk7CisKKyAg
ICBtX2hhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSB8PSBxdWFkQ3VsbGVyLmhh
c09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSgpOwogfQogCiB2b2lkIENDUmVuZGVy
UGFzczo6YXBwZW5kUXVhZHNGb3JSZW5kZXJTdXJmYWNlTGF5ZXIoQ0NMYXllckltcGwqIGxheWVy
LCBjb25zdCBDQ1JlbmRlclBhc3MqIGNvbnRyaWJ1dGluZ1JlbmRlclBhc3MsIENDT2NjbHVzaW9u
VHJhY2tlckltcGwqIG9jY2x1c2lvblRyYWNrZXIpCiB7CiAgICAgLy8gRklYTUU6IHJlbmRlciBz
dXJmYWNlIGxheWVycyBzaG91bGQgYmUgYSBDQ0xheWVySW1wbC1kZXJpdmVkIGNsYXNzIGFuZAog
ICAgIC8vIG5vdCBiZSBoYW5kbGVkIHNwZWNpYWxseSBoZXJlLgotICAgIENDUXVhZEN1bGxlciBx
dWFkQ3VsbGVyKG1fcXVhZExpc3QsIGxheWVyLCBvY2NsdXNpb25UcmFja2VyLCBsYXllci0+aGFz
RGVidWdCb3JkZXJzKCkpOworICAgIGNvbnN0IGJvb2wgZm9yU3VyZmFjZSA9IHRydWU7CisgICAg
Q0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXIobV9xdWFkTGlzdCwgbGF5ZXIsIG9jY2x1c2lvblRyYWNr
ZXIsIGxheWVyLT5oYXNEZWJ1Z0JvcmRlcnMoKSwgZm9yU3VyZmFjZSk7CiAKICAgICBDQ1JlbmRl
clN1cmZhY2UqIHN1cmZhY2UgPSBsYXllci0+cmVuZGVyU3VyZmFjZSgpOwogCkBAIC03NSw2ICs4
MSw4IEBAIHZvaWQgQ0NSZW5kZXJQYXNzOjphcHBlbmRRdWFkc0ZvclJlbmRlclN1cmZhY2VMYXll
cihDQ0xheWVySW1wbCogbGF5ZXIsIGNvbnN0IENDCiAgICAgc3VyZmFjZS0+YXBwZW5kUXVhZHMo
cXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpLCBpc1JlcGxpY2EsIGNvbnRyaWJ1dGlu
Z1JlbmRlclBhc3MtPmlkKCkpOwogICAgIG1fc2hhcmVkUXVhZFN0YXRlTGlzdC5hcHBlbmQoc2hh
cmVkUXVhZFN0YXRlLnJlbGVhc2UoKSk7CiAKKyAgICBtX2hhc09jY2x1c2lvbkZyb21PdXRzaWRl
VGFyZ2V0U3VyZmFjZSB8PSBxdWFkQ3VsbGVyLmhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0
U3VyZmFjZSgpOworCiAgICAgaWYgKCFsYXllci0+aGFzUmVwbGljYSgpKQogICAgICAgICByZXR1
cm47CiAKQEAgLTgzLDYgKzkxLDggQEAgdm9pZCBDQ1JlbmRlclBhc3M6OmFwcGVuZFF1YWRzRm9y
UmVuZGVyU3VyZmFjZUxheWVyKENDTGF5ZXJJbXBsKiBsYXllciwgY29uc3QgQ0MKICAgICBpc1Jl
cGxpY2EgPSB0cnVlOwogICAgIHN1cmZhY2UtPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHJlcGxp
Y2FTaGFyZWRRdWFkU3RhdGUuZ2V0KCksIGlzUmVwbGljYSwgY29udHJpYnV0aW5nUmVuZGVyUGFz
cy0+aWQoKSk7CiAgICAgbV9zaGFyZWRRdWFkU3RhdGVMaXN0LmFwcGVuZChyZXBsaWNhU2hhcmVk
UXVhZFN0YXRlLnJlbGVhc2UoKSk7CisKKyAgICBtX2hhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFy
Z2V0U3VyZmFjZSB8PSBxdWFkQ3VsbGVyLmhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3Vy
ZmFjZSgpOwogfQogCiB2b2lkIENDUmVuZGVyUGFzczo6YXBwZW5kUXVhZHNUb0ZpbGxTY3JlZW4o
Q0NMYXllckltcGwqIHJvb3RMYXllciwgU2tDb2xvciBzY3JlZW5CYWNrZ3JvdW5kQ29sb3IsIGNv
bnN0IENDT2NjbHVzaW9uVHJhY2tlckltcGwmIG9jY2x1c2lvblRyYWNrZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBh
c3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVu
ZGVyUGFzcy5oCmluZGV4IDAxMGE3Njc0YjBjZTJiMjJjMDkyYTY2MDZkNDFjZDM0MWExYzk3ZjYu
LjgxNjQ4MWM5NzM2NTkyZGI4MjQzZDcwMmJjMzEyMWJmNjMyYjUzOGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVu
ZGVyUGFzcy5oCkBAIC03MSw2ICs3MSw4IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1RyYW5zcGFy
ZW50QmFja2dyb3VuZCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5k
OyB9CiAgICAgdm9pZCBzZXRIYXNUcmFuc3BhcmVudEJhY2tncm91bmQoYm9vbCB0cmFuc3BhcmVu
dCkgeyBtX2hhc1RyYW5zcGFyZW50QmFja2dyb3VuZCA9IHRyYW5zcGFyZW50OyB9CiAKKyAgICBi
b29sIGhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSgpIGNvbnN0IHsgcmV0dXJu
IG1faGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlOyB9CisgICAgdm9pZCBzZXRI
YXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UoYm9vbCBoYXNPY2NsdXNpb25Gcm9t
T3V0c2lkZVRhcmdldFN1cmZhY2UpIHsgbV9oYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1
cmZhY2UgPSBoYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2U7IH0KIHByb3RlY3Rl
ZDoKICAgICBDQ1JlbmRlclBhc3MoQ0NSZW5kZXJTdXJmYWNlKiwgaW50IGlkKTsKIApAQCAtODAs
NiArODIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSW50UmVjdCBtX2ZyYW1lYnVmZmVyT3V0cHV0UmVj
dDsKICAgICBWZWN0b3I8T3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiA+IG1fc2hhcmVkUXVhZFN0
YXRlTGlzdDsKICAgICBib29sIG1faGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kOworICAgIGJvb2wg
bV9oYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2U7CiB9OwogCiB0eXBlZGVmIFZl
Y3RvcjxDQ1JlbmRlclBhc3MqPiBDQ1JlbmRlclBhc3NMaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVy
U3VyZmFjZS5jcHAKaW5kZXggZWZmMDY4YWI0NDg5YzQ4MDcwZGU5MWQ1NjI0MDVlNjM2ZGUyNDc3
My4uMjI0MzRjMjAzZGIwODNkODcwYjBiZjYwZWVmOTc0YWQ4YmMyNmYxNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJm
YWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1JlbmRlclN1cmZhY2UuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiY2MvQ0NE
ZWJ1Z0JvcmRlckRyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKICNpbmNs
dWRlICJjYy9DQ01hdGhVdGlsLmgiCi0jaW5jbHVkZSAiY2MvQ0NRdWFkQ3VsbGVyLmgiCisjaW5j
bHVkZSAiY2MvQ0NRdWFkU2luay5oIgogI2luY2x1ZGUgImNjL0NDUmVuZGVyUGFzc0RyYXdRdWFk
LmgiCiAjaW5jbHVkZSAiY2MvQ0NTaGFyZWRRdWFkU3RhdGUuaCIKICNpbmNsdWRlIDxwdWJsaWMv
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KQEAgLTE4MSw3ICsxODEsNyBAQCBGbG9hdFJlY3Qg
Q0NSZW5kZXJTdXJmYWNlOjpjb21wdXRlUm9vdFNjaXNzb3JSZWN0SW5DdXJyZW50U3VyZmFjZShj
b25zdCBGbG9hdFJlYwogICAgIHJldHVybiBDQ01hdGhVdGlsOjpwcm9qZWN0Q2xpcHBlZFJlY3Qo
aW52ZXJzZVNjcmVlblNwYWNlVHJhbnNmb3JtLCByb290U2Npc3NvclJlY3QpOwogfQogCi12b2lk
IENDUmVuZGVyU3VyZmFjZTo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgQ0NT
aGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCBmb3JSZXBsaWNhLCBpbnQgcmVu
ZGVyUGFzc0lkKQordm9pZCBDQ1JlbmRlclN1cmZhY2U6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsm
IHF1YWRMaXN0LCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sIGZvclJl
cGxpY2EsIGludCByZW5kZXJQYXNzSWQpCiB7CiAgICAgQVNTRVJUKCFmb3JSZXBsaWNhIHx8IG1f
b3duaW5nTGF5ZXItPmhhc1JlcGxpY2EoKSk7CiAKQEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lkIEND
UmVuZGVyU3VyZmFjZTo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgQ0NTaGFy
ZWRRdWFkU3RhdGUqIHNoYQogICAgICAgICBpbnQgZ3JlZW4gPSBmb3JSZXBsaWNhID8gIGRlYnVn
UmVwbGljYUJvcmRlckNvbG9yR3JlZW4gOiBkZWJ1Z1N1cmZhY2VCb3JkZXJDb2xvckdyZWVuOwog
ICAgICAgICBpbnQgYmx1ZSA9IGZvclJlcGxpY2EgPyBkZWJ1Z1JlcGxpY2FCb3JkZXJDb2xvckJs
dWUgOiBkZWJ1Z1N1cmZhY2VCb3JkZXJDb2xvckJsdWU7CiAgICAgICAgIFNrQ29sb3IgY29sb3Ig
PSBTa0NvbG9yU2V0QVJHQihkZWJ1Z1N1cmZhY2VCb3JkZXJBbHBoYSwgcmVkLCBncmVlbiwgYmx1
ZSk7Ci0gICAgICAgIHF1YWRMaXN0LmFwcGVuZFN1cmZhY2UoQ0NEZWJ1Z0JvcmRlckRyYXdRdWFk
OjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBjb250ZW50UmVjdCgpLCBjb2xvciwgZGVidWdTdXJm
YWNlQm9yZGVyV2lkdGgpKTsKKyAgICAgICAgcXVhZExpc3QuYXBwZW5kKENDRGVidWdCb3JkZXJE
cmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgY29udGVudFJlY3QoKSwgY29sb3IsIGRl
YnVnU3VyZmFjZUJvcmRlcldpZHRoKSk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IEJ5IHVzaW5n
IHRoZSBzYW1lIFJlbmRlclN1cmZhY2UgZm9yIGJvdGggdGhlIGNvbnRlbnQgYW5kIGl0cyByZWZs
ZWN0aW9uLApAQCAtMjE2LDcgKzIxNiw3IEBAIHZvaWQgQ0NSZW5kZXJTdXJmYWNlOjphcHBlbmRR
dWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhCiAgICAg
Y29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzID0gbV9vd25pbmdMYXll
ci0+ZmlsdGVycygpOwogICAgIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgYmFj
a2dyb3VuZEZpbHRlcnMgPSBtX293bmluZ0xheWVyLT5iYWNrZ3JvdW5kRmlsdGVycygpOwogCi0g
ICAgcXVhZExpc3QuYXBwZW5kU3VyZmFjZShDQ1JlbmRlclBhc3NEcmF3UXVhZDo6Y3JlYXRlKHNo
YXJlZFF1YWRTdGF0ZSwgY29udGVudFJlY3QoKSwgcmVuZGVyUGFzc0lkLCBmb3JSZXBsaWNhLCBk
cmF3VHJhbnNmb3JtLCBmaWx0ZXJzLCBiYWNrZ3JvdW5kRmlsdGVycywgbWFza1Jlc291cmNlSWQs
IGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lKSk7CisgICAgcXVhZExpc3QuYXBwZW5kKEND
UmVuZGVyUGFzc0RyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBjb250ZW50UmVjdCgp
LCByZW5kZXJQYXNzSWQsIGZvclJlcGxpY2EsIGRyYXdUcmFuc2Zvcm0sIGZpbHRlcnMsIGJhY2tn
cm91bmRGaWx0ZXJzLCBtYXNrUmVzb3VyY2VJZCwgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJh
bWUpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaAppbmRleCAxYWMzNDAwYWY1
YzRjMGJjMjIxNTI2MGQ1Mzc1ODA3NTlhYzc0ODE2Li43OWZkYWM0ZWNjOTA1ZjEzYWU4Nzg3MzRi
MDUxNjQwMGFmYmY1Yjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaApAQCAtMzksNyAr
MzksNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQ0RhbWFnZVRyYWNrZXI7Ci1j
bGFzcyBDQ1F1YWRDdWxsZXI7CitjbGFzcyBDQ1F1YWRTaW5rOwogY2xhc3MgQ0NSZW5kZXJQYXNz
OwogY2xhc3MgQ0NMYXllckltcGw7CiBjbGFzcyBMYXllclJlbmRlcmVyQ2hyb21pdW07CkBAIC0x
MTcsNyArMTE3LDcgQEAgcHVibGljOgogICAgIFBhc3NPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+
IGNyZWF0ZVNoYXJlZFF1YWRTdGF0ZShpbnQgaWQpIGNvbnN0OwogICAgIFBhc3NPd25QdHI8Q0NT
aGFyZWRRdWFkU3RhdGU+IGNyZWF0ZVJlcGxpY2FTaGFyZWRRdWFkU3RhdGUoaW50IGlkKSBjb25z
dDsKIAotICAgIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiwgQ0NTaGFyZWRRdWFkU3Rh
dGUqLCBib29sIGZvclJlcGxpY2EsIGludCByZW5kZXJQYXNzSWQpOworICAgIHZvaWQgYXBwZW5k
UXVhZHMoQ0NRdWFkU2luayYsIENDU2hhcmVkUXVhZFN0YXRlKiwgYm9vbCBmb3JSZXBsaWNhLCBp
bnQgcmVuZGVyUGFzc0lkKTsKIAogICAgIEZsb2F0UmVjdCBjb21wdXRlUm9vdFNjaXNzb3JSZWN0
SW5DdXJyZW50U3VyZmFjZShjb25zdCBGbG9hdFJlY3QmIHJvb3RTY2lzc29yUmVjdCkgY29uc3Q7
CiAKQEAgLTE1Nyw2ICsxNTcsNyBAQCBwcml2YXRlOgogICAgIC8vIEZvciBDQ0xheWVySXRlcmF0
b3JBY3Rpb25zCiAgICAgaW50IG1fdGFyZ2V0UmVuZGVyU3VyZmFjZUxheWVySW5kZXhIaXN0b3J5
OwogICAgIGludCBtX2N1cnJlbnRMYXllckluZGV4SGlzdG9yeTsKKwogICAgIGZyaWVuZCBzdHJ1
Y3QgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xs
YmFyTGF5ZXJJbXBsLmNwcAppbmRleCA2NTBlNzUxZjhjODk0ZWZmNTYxYzRlZjdjYzE3ZGIwMWNl
OTRjYmQzLi4xZmNkMWRhOGJmNDFlMmQyMmI2MThjOTQ2YzIzZTM4YzQ1Yzk4OGJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9s
bGJhckxheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAK
ICNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZS5oIgogI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lQ29t
cG9zaXRlLmgiCi0jaW5jbHVkZSAiY2MvQ0NRdWFkQ3VsbGVyLmgiCisjaW5jbHVkZSAiY2MvQ0NR
dWFkU2luay5oIgogI2luY2x1ZGUgImNjL0NDVGV4dHVyZURyYXdRdWFkLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTYyLDcgKzYyLDcgQEAgRmxvYXRSZWN0IHRvVVZSZWN0KGNvbnN0IElu
dFJlY3QmIHIsIGNvbnN0IEludFJlY3QmIGJvdW5kcykKIAogfQogCi12b2lkIENDU2Nyb2xsYmFy
TGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1No
YXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJikKK3ZvaWQgQ0NTY3JvbGxiYXJM
YXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJl
ZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJikKIHsKICAgICBTY3JvbGxiYXJUaGVt
ZUNvbXBvc2l0ZSogdGhlbWUgPSBzdGF0aWNfY2FzdDxTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZSo+
KFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpKTsKICAgICBpZiAoIXRoZW1lKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJM
YXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmgKaW5kZXggMzJhODM1ZDkwMmFjNWMzODFjYzAyM2U0MmRm
MjgwN2ZlODQwNzA1MS4uZmFhMzM2MWJhZDM3NTk4MDRlODAzNDhkNDIyMGRlYjY3YjNlMDA1YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTY3JvbGxiYXJMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5oCkBAIC02MCw3ICs2MCw3IEBA
IHB1YmxpYzoKICAgICBDQ0xheWVySW1wbCogc2Nyb2xsTGF5ZXIoKSBjb25zdCB7IHJldHVybiBt
X3Njcm9sbExheWVyOyB9CiAgICAgdm9pZCBzZXRTY3JvbGxMYXllcihDQ0xheWVySW1wbCogc2Ny
b2xsTGF5ZXIpIHsgbV9zY3JvbGxMYXllciA9IHNjcm9sbExheWVyOyB9CiAKLSAgICB2aXJ0dWFs
IHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUq
LCBib29sJiBoYWRNaXNzaW5nVGlsZXMpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBhcHBl
bmRRdWFkcyhDQ1F1YWRTaW5rJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiBoYWRN
aXNzaW5nVGlsZXMpIE9WRVJSSURFOwogCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQ0NTY3Jv
bGxiYXJMYXllckltcGwoaW50IGlkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxheWVySW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JMYXll
ckltcGwuY3BwCmluZGV4IDRkNTJjMTVkZDQyZjIzZGFhZmY2YzU0MzhiZTRmNzllZjc4NjQ2YTMu
LmY1MmM3OTdjMDJmNzQ4OGZiOGQ0MDdmNTFmMGVkYzlmNDVhOTkyNzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxh
eWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmNwcApAQCAtMjksNyArMjksNyBAQAogCiAjaW5j
bHVkZSAiY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmgiCiAKLSNpbmNsdWRlICJjYy9DQ1F1YWRD
dWxsZXIuaCIKKyNpbmNsdWRlICJjYy9DQ1F1YWRTaW5rLmgiCiAjaW5jbHVkZSAiY2MvQ0NTb2xp
ZENvbG9yRHJhd1F1YWQuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNDksNyArNDksNyBAQCBDQ1NvbGlkQ29sb3JMYXll
ckltcGw6On5DQ1NvbGlkQ29sb3JMYXllckltcGwoKQogewogfQogCi12b2lkIENDU29saWRDb2xv
ckxheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NT
aGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCYpCit2b2lkIENDU29saWRDb2xv
ckxheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVhZExpc3QsIGNvbnN0IENDU2hh
cmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGJvb2wmKQogewogICAgIC8vIFdlIGNyZWF0
ZSBhIHNlcmllcyBvZiBzbWFsbGVyIHF1YWRzIGluc3RlYWQgb2YganVzdCBvbmUgbGFyZ2Ugb25l
IHNvIHRoYXQgdGhlCiAgICAgLy8gY3VsbGVyIGNhbiByZWR1Y2UgdGhlIHRvdGFsIHBpeGVscyBk
cmF3bi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU29saWRDb2xvckxheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmgKaW5kZXggZTMwMDU4
NDVlNmRlNmIyMGRhYzVmZWU2NDlhNTE1NzFmNmExMGMzNi4uNzE1M2YyMWFiODJhNzg0YWM4NTBl
OGQ2M2I4NWMyMTE2YjY4NWY0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJ
bXBsLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5DQ1Nv
bGlkQ29sb3JMYXllckltcGwoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1
YWRDdWxsZXImLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wmIGhhZE1pc3NpbmdUaWxl
cykgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZFNpbmsmLCBj
b25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykgT1ZFUlJJREU7
CiAKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBDQ1NvbGlkQ29sb3JMYXllckltcGwoaW50IGlk
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGV4dHVyZUxheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwuY3BwCmluZGV4IDZmYzkxOTk2MjAw
MzJmNTMyMmZlNWMyZjkxZmQ2YThjNzIwMjU1ODguLjdjYmJlY2UxNjg4Mzg3OGM0OTc3ZDRmOWFh
NDg1NmU4MDFjY2IxODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmNwcApA
QCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgImNjL0NDVGV4dHVyZUxheWVySW1wbC5oIgogCiAj
aW5jbHVkZSAiVGV4dFN0cmVhbS5oIgotI2luY2x1ZGUgImNjL0NDUXVhZEN1bGxlci5oIgorI2lu
Y2x1ZGUgImNjL0NDUXVhZFNpbmsuaCIKICNpbmNsdWRlICJjYy9DQ1JlbmRlcmVyLmgiCiAjaW5j
bHVkZSAiY2MvQ0NUZXh0dXJlRHJhd1F1YWQuaCIKIApAQCAtNTYsNyArNTYsNyBAQCB2b2lkIEND
VGV4dHVyZUxheWVySW1wbDo6d2lsbERyYXcoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVBy
b3ZpZGVyKQogICAgIG1fZXh0ZXJuYWxUZXh0dXJlUmVzb3VyY2UgPSByZXNvdXJjZVByb3ZpZGVy
LT5jcmVhdGVSZXNvdXJjZUZyb21FeHRlcm5hbFRleHR1cmUobV90ZXh0dXJlSWQpOwogfQogCi12
b2lkIENDVGV4dHVyZUxheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlz
dCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCYpCit2b2lk
IENDVGV4dHVyZUxheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVhZExpc3QsIGNv
bnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGJvb2wmKQogewogICAgIEFT
U0VSVChtX2V4dGVybmFsVGV4dHVyZVJlc291cmNlKTsKICAgICBJbnRSZWN0IHF1YWRSZWN0KElu
dFBvaW50KCksIGNvbnRlbnRCb3VuZHMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1w
bC5oCmluZGV4IGU3NDhiMDEzMDhhOGVkYjk2MmEzOGY5NTRkYTBkMWJkZjk2NzkzNDAuLmU1NDUz
MTQ4ZGNjYTUwOWI3OTNlNjk0NWJiNmJhZDcxODE3NjBmMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4
dHVyZUxheWVySW1wbC5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5D
Q1RleHR1cmVMYXllckltcGwoKTsKIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhDQ1Jlc291
cmNlUHJvdmlkZXIqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NR
dWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiBoYWRNaXNzaW5nVGls
ZXMpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiwg
Y29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCBkaWREcmF3KENDUmVzb3VyY2VQcm92aWRlciopIE9WRVJSSURF
OwogCiAgICAgdmlydHVhbCB2b2lkIGRpZExvc2VDb250ZXh0KCkgT1ZFUlJJREU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVk
TGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGlsZWRMYXllckltcGwuY3BwCmluZGV4IGM5ZTliMjI2NGI5OGQ3OGEzZjBmNDg1NTVi
Zjc3ZjgwODEwMzZiZGUuLmVlNDk2NTE4NzkwYmJkM2MxNDBmYzIzM2NhNzY4NGQ5NjNjMWY1ZDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGlsZWRMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAj
aW5jbHVkZSAiY2MvQ0NDaGVja2VyYm9hcmREcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDRGVi
dWdCb3JkZXJEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUaWxpbmdEYXRhLmgiCi0j
aW5jbHVkZSAiY2MvQ0NRdWFkQ3VsbGVyLmgiCisjaW5jbHVkZSAiY2MvQ0NRdWFkU2luay5oIgog
I2luY2x1ZGUgImNjL0NDU29saWRDb2xvckRyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NUaWxl
RHJhd1F1YWQuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTEyMyw3ICsx
MjMsNyBAQCBEcmF3YWJsZVRpbGUqIENDVGlsZWRMYXllckltcGw6OmNyZWF0ZVRpbGUoaW50IGks
IGludCBqKQogICAgIHJldHVybiBhZGRlZFRpbGU7CiB9CiAKLXZvaWQgQ0NUaWxlZExheWVySW1w
bDo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFk
U3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKQordm9pZCBDQ1Rp
bGVkTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkTGlzdCwgY29uc3QgQ0NT
aGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKQog
ewogICAgIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0ID0gdmlzaWJsZUNvbnRlbnRSZWN0KCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGlsZWRMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaAppbmRleCA4NzFkNGU3ZDE2YTE0N2FlOGI0
MTQyNTQwZjE3YWE0Y2I4MzBhOGNmLi4wMTVmZGMzMDYyNDg3MDBhODYyYzIyOWVhYzM2Mzg5YjFk
ZWRjNGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oCkBAIC00Miw3ICs0Miw3IEBA
IHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVhbCB+Q0NUaWxlZExheWVySW1wbCgpOwogCi0gICAg
dmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYsIGNvbnN0IENDU2hhcmVkUXVh
ZFN0YXRlKiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgYm9v
bCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgQ0NSZXNvdXJjZVBy
b3ZpZGVyOjpSZXNvdXJjZUlkIGNvbnRlbnRzUmVzb3VyY2VJZCgpIGNvbnN0IE9WRVJSSURFOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwCmluZGV4IGFlNTM4YzJlNTM2OTMzMTI0
NDRjZDUwOWUyMzEyODMxZDg0YTM5NWQuLmZhMjAxZDExMjZiYTRiYjA5ZTg2N2M1NzJjMjI5Yjcy
ZDk3OWI5OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwCkBAIC0zNiw3ICsz
Niw3IEBACiAjaW5jbHVkZSAiY2MvQ0NJT1N1cmZhY2VEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNj
L0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKICNpbmNsdWRlICJjYy9DQ1Byb3h5LmgiCi0jaW5jbHVk
ZSAiY2MvQ0NRdWFkQ3VsbGVyLmgiCisjaW5jbHVkZSAiY2MvQ0NRdWFkU2luay5oIgogI2luY2x1
ZGUgImNjL0NDUmVzb3VyY2VQcm92aWRlci5oIgogI2luY2x1ZGUgImNjL0NDU3RyZWFtVmlkZW9E
cmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDVGV4dHVyZURyYXdRdWFkLmgiCkBAIC0xNzcsNyAr
MTc3LDcgQEAgdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjp3aWxsRHJhd0ludGVybmFsKENDUmVzb3Vy
Y2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlcikKICAgICAgICAgbV9leHRlcm5hbFRleHR1cmVS
ZXNvdXJjZSA9IHJlc291cmNlUHJvdmlkZXItPmNyZWF0ZVJlc291cmNlRnJvbUV4dGVybmFsVGV4
dHVyZShtX2ZyYW1lLT50ZXh0dXJlSWQoKSk7CiB9CiAKLXZvaWQgQ0NWaWRlb0xheWVySW1wbDo6
YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3Rh
dGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCYpCit2b2lkIENDVmlkZW9MYXllckltcGw6OmFwcGVu
ZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hh
cmVkUXVhZFN0YXRlLCBib29sJikKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFk
KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmgKaW5kZXggNGNmN2NhYmI3NmQ5M2Nl
ZTg5MmY1NDNlMjViYzQ5ZTk4MTRlYjRiMy4uNDE0Y2E2OGUzNDY4NTc0NmM5YTA1MzUwOTUzMzA1
OGJhZWQ5ZjhmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaApAQCAtNTEsNyArNTEs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q0NWaWRlb0xheWVySW1wbCgpOwogCiAgICAgdmly
dHVhbCB2b2lkIHdpbGxEcmF3KENDUmVzb3VyY2VQcm92aWRlciopIE9WRVJSSURFOwotICAgIHZp
cnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImLCBjb25zdCBDQ1NoYXJlZFF1YWRT
dGF0ZSosIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IGFwcGVuZFF1YWRzKENDUXVhZFNpbmsmLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wm
IGhhZE1pc3NpbmdUaWxlcykgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpZERyYXcoQ0NS
ZXNvdXJjZVByb3ZpZGVyKikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgZHVtcExheWVy
UHJvcGVydGllcyhUZXh0U3RyZWFtJiwgaW50IGluZGVudCkgY29uc3QgT1ZFUlJJREU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxU
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1w
bFRlc3QuY3BwCmluZGV4IDY0ZGVkNzkyODYyOGFmMmQzYjMzMmQ0YTNkZmIwMmNhZjdiYjJiZDku
LmRkNTI1ZmNiZjc3ODhmMjQwYzFiMmI0NmNiM2QxNWEzMzAxMjE1YjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3Qu
Y3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJDQ0FuaW1hdGlvblRlc3RDb21tb24u
aCIKICNpbmNsdWRlICJDQ0xheWVyVGVzdENvbW1vbi5oIgorI2luY2x1ZGUgIkNDTGF5ZXJUcmVl
VGVzdENvbW1vbi5oIgogI2luY2x1ZGUgIkNDVGVzdENvbW1vbi5oIgogI2luY2x1ZGUgIkZha2VX
ZWJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5o
IgpAQCAtMTE3NSw3ICsxMTc2LDcgQEAgY2xhc3MgQmxlbmRTdGF0ZUNoZWNrTGF5ZXIgOiBwdWJs
aWMgQ0NMYXllckltcGwgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEJsZW5kU3Rh
dGVDaGVja0xheWVyPiBjcmVhdGUoaW50IGlkLCBDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNl
UHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBCbGVuZFN0YXRlQ2hlY2tMYXllcihpZCwg
cmVzb3VyY2VQcm92aWRlcikpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NR
dWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRT
dGF0ZSwgYm9vbCYpIE9WRVJSSURFCisgICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVh
ZFNpbmsmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRl
LCBib29sJikgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIG1fcXVhZHNBcHBlbmRlZCA9IHRydWU7
CiAKQEAgLTE3MDIsMTAgKzE3MDMsMTAgQEAgY2xhc3MgRmFrZUxheWVyV2l0aFF1YWRzIDogcHVi
bGljIENDTGF5ZXJJbXBsIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxGYWtlTGF5
ZXJXaXRoUXVhZHM+IGNyZWF0ZShpbnQgaWQpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBGYWtlTGF5
ZXJXaXRoUXVhZHMoaWQpKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVh
ZEN1bGxlciYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3Rh
dGUsIGJvb2wmKSBPVkVSUklERQorICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRT
aW5rJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwg
Ym9vbCYpIE9WRVJSSURFCiAgICAgewogICAgICAgICBTa0NvbG9yIGdyYXkgPSBTa0NvbG9yU2V0
UkdCKDEwMCwgMTAwLCAxMDApOwotICAgICAgICBJbnRSZWN0IHF1YWRSZWN0KDAsIDAsIDUsIDUp
OworICAgICAgICBJbnRSZWN0IHF1YWRSZWN0KEludFBvaW50KDAsIDApLCBjb250ZW50Qm91bmRz
KCkpOwogICAgICAgICBPd25QdHI8Q0NEcmF3UXVhZD4gbXlRdWFkID0gQ0NTb2xpZENvbG9yRHJh
d1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBncmF5KTsKICAgICAgICAg
cXVhZExpc3QuYXBwZW5kKG15UXVhZC5yZWxlYXNlKCkpOwogICAgIH0KQEAgLTI0NzYsNiArMjQ3
NywyMSBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGhhc1RyYW5zcGFyZW50QmFj
a2dyb3VuZCkKICAgICBNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbW9ja0NvbnRl
eHQpOwogfQogCitzdGF0aWMgdm9pZCBhZGREcmF3aW5nTGF5ZXJUbyhDQ0xheWVySW1wbCogcGFy
ZW50LCBpbnQgaWQsIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgQ0NMYXllckltcGwqKiByZXN1
bHQpCit7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBsYXllciA9IEZha2VMYXllcldpdGhRdWFk
czo6Y3JlYXRlKGlkKTsKKyAgICBDQ0xheWVySW1wbCogbGF5ZXJQdHIgPSBsYXllci5nZXQoKTsK
KyAgICBsYXllclB0ci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgwLCAwKSk7CisgICAgbGF5
ZXJQdHItPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQobGF5ZXJSZWN0LmxvY2F0aW9uKCkpKTsKKyAg
ICBsYXllclB0ci0+c2V0Qm91bmRzKGxheWVyUmVjdC5zaXplKCkpOworICAgIGxheWVyUHRyLT5z
ZXRDb250ZW50Qm91bmRzKGxheWVyUmVjdC5zaXplKCkpOworICAgIGxheWVyUHRyLT5zZXREcmF3
c0NvbnRlbnQodHJ1ZSk7IC8vIG9ubHkgY2hpbGRyZW4gZHJhdyBjb250ZW50CisgICAgbGF5ZXJQ
dHItPnNldE9wYXF1ZSh0cnVlKTsKKyAgICBwYXJlbnQtPmFkZENoaWxkKGxheWVyLnJlbGVhc2Uo
KSk7CisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgKnJlc3VsdCA9IGxheWVyUHRyOworfQorCiBz
dGF0aWMgdm9pZCBzZXR1cExheWVyc0ZvclRleHR1cmVDYWNoaW5nKENDTGF5ZXJUcmVlSG9zdElt
cGwqIGxheWVyVHJlZUhvc3RJbXBsLCBDQ0xheWVySW1wbComIHJvb3RQdHIsIENDTGF5ZXJJbXBs
KiYgaW50ZXJtZWRpYXRlTGF5ZXJQdHIsIENDTGF5ZXJJbXBsKiYgc3VyZmFjZUxheWVyUHRyLCBD
Q0xheWVySW1wbComIGNoaWxkUHRyLCBjb25zdCBJbnRTaXplJiByb290U2l6ZSkKIHsKICAgICBP
d25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNvbnRleHQgPSBDQ0dyYXBoaWNzQ29udGV4dDo6Y3Jl
YXRlM0QoYWRvcHRQdHIobmV3IFBhcnRpYWxTd2FwQ29udGV4dCkpOwpAQCAtMjQ5MCw1MCArMjUw
NiwyMCBAQCBzdGF0aWMgdm9pZCBzZXR1cExheWVyc0ZvclRleHR1cmVDYWNoaW5nKENDTGF5ZXJU
cmVlSG9zdEltcGwqIGxheWVyVHJlZUhvc3RJbXBsLAogICAgIHJvb3QtPnNldFBvc2l0aW9uKEZs
b2F0UG9pbnQoMCwgMCkpOwogICAgIHJvb3QtPnNldEJvdW5kcyhyb290U2l6ZSk7CiAgICAgcm9v
dC0+c2V0Q29udGVudEJvdW5kcyhyb290U2l6ZSk7Ci0gICAgcm9vdC0+c2V0VmlzaWJsZUNvbnRl
bnRSZWN0KEludFJlY3QoSW50UG9pbnQoMCwgMCksIHJvb3RTaXplKSk7CiAgICAgcm9vdC0+c2V0
RHJhd3NDb250ZW50KHRydWUpOwogICAgIGxheWVyVHJlZUhvc3RJbXBsLT5zZXRSb290TGF5ZXIo
cm9vdC5yZWxlYXNlKCkpOwogCi0gICAgLy8gSW50ZXJtZWRpYXRlIGxheWVyIGRvZXMgbm90IG93
biBhIHN1cmZhY2UsIGFuZCBkb2VzIG5vdCBkcmF3IGNvbnRlbnQuCi0gICAgT3duUHRyPENDTGF5
ZXJJbXBsPiBpbnRlcm1lZGlhdGVMYXllciA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMik7Ci0gICAg
aW50ZXJtZWRpYXRlTGF5ZXJQdHIgPSBpbnRlcm1lZGlhdGVMYXllci5nZXQoKTsKLQotICAgIGlu
dGVybWVkaWF0ZUxheWVyUHRyLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50KDAsIDApKTsKLSAg
ICBpbnRlcm1lZGlhdGVMYXllclB0ci0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCgxMCwgMTApKTsK
LSAgICBpbnRlcm1lZGlhdGVMYXllclB0ci0+c2V0Qm91bmRzKHJvb3RTaXplKTsKLSAgICBpbnRl
cm1lZGlhdGVMYXllclB0ci0+c2V0Q29udGVudEJvdW5kcyhyb290U2l6ZSk7Ci0gICAgaW50ZXJt
ZWRpYXRlTGF5ZXJQdHItPnNldFZpc2libGVDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50KDAs
IDApLCByb290U2l6ZSkpOworICAgIGFkZERyYXdpbmdMYXllclRvKHJvb3RQdHIsIDIsIEludFJl
Y3QoMTAsIDEwLCByb290U2l6ZS53aWR0aCgpLCByb290U2l6ZS5oZWlnaHQoKSksICZpbnRlcm1l
ZGlhdGVMYXllclB0cik7CiAgICAgaW50ZXJtZWRpYXRlTGF5ZXJQdHItPnNldERyYXdzQ29udGVu
dChmYWxzZSk7IC8vIG9ubHkgY2hpbGRyZW4gZHJhdyBjb250ZW50Ci0gICAgcm9vdFB0ci0+YWRk
Q2hpbGQoaW50ZXJtZWRpYXRlTGF5ZXIucmVsZWFzZSgpKTsKLQotICAgIE93blB0cjxDQ0xheWVy
SW1wbD4gc3VyZmFjZUxheWVyID0gQ0NMYXllckltcGw6OmNyZWF0ZSgzKTsKLSAgICBzdXJmYWNl
TGF5ZXJQdHIgPSBzdXJmYWNlTGF5ZXIuZ2V0KCk7CiAKICAgICAvLyBTdXJmYWNlIGxheWVyIGlz
IHRoZSBsYXllciB0aGF0IGNoYW5nZXMgaXRzIG9wYWNpdHkKICAgICAvLyBJdCB3aWxsIGNvbnRh
aW4gb3RoZXIgbGF5ZXJzIHRoYXQgZHJhdyBjb250ZW50LgotICAgIEludFNpemUgc3VyZmFjZVNp
emUocm9vdFNpemUud2lkdGgoKSwgcm9vdFNpemUuaGVpZ2h0KCkpOwotICAgIHN1cmZhY2VMYXll
clB0ci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgwLCAwKSk7Ci0gICAgc3VyZmFjZUxheWVy
UHRyLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KDEwLCAxMCkpOwotICAgIHN1cmZhY2VMYXllclB0
ci0+c2V0Qm91bmRzKHN1cmZhY2VTaXplKTsKLSAgICBzdXJmYWNlTGF5ZXJQdHItPnNldENvbnRl
bnRCb3VuZHMoc3VyZmFjZVNpemUpOwotICAgIHN1cmZhY2VMYXllclB0ci0+c2V0VmlzaWJsZUNv
bnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQoMCwgMCksIHN1cmZhY2VTaXplKSk7CisgICAgYWRk
RHJhd2luZ0xheWVyVG8oaW50ZXJtZWRpYXRlTGF5ZXJQdHIsIDMsIEludFJlY3QoMTAsIDEwLCBy
b290U2l6ZS53aWR0aCgpLCByb290U2l6ZS5oZWlnaHQoKSksICZzdXJmYWNlTGF5ZXJQdHIpOwog
ICAgIHN1cmZhY2VMYXllclB0ci0+c2V0RHJhd3NDb250ZW50KGZhbHNlKTsgLy8gb25seSBjaGls
ZHJlbiBkcmF3IGNvbnRlbnQKICAgICBzdXJmYWNlTGF5ZXJQdHItPnNldE9wYWNpdHkoMC41Zik7
IC8vIFRoaXMgd2lsbCBjYXVzZSBpdCB0byBoYXZlIGEgc3VyZmFjZQotICAgIGludGVybWVkaWF0
ZUxheWVyUHRyLT5hZGRDaGlsZChzdXJmYWNlTGF5ZXIucmVsZWFzZSgpKTsKIAogICAgIC8vIENo
aWxkIG9mIHRoZSBzdXJmYWNlIGxheWVyIHdpbGwgcHJvZHVjZSBzb21lIHF1YWRzCi0gICAgT3du
UHRyPEZha2VMYXllcldpdGhRdWFkcz4gY2hpbGQgPSBGYWtlTGF5ZXJXaXRoUXVhZHM6OmNyZWF0
ZSg0KTsKLSAgICBjaGlsZFB0ciA9IGNoaWxkLmdldCgpOwotCi0gICAgSW50U2l6ZSBjaGlsZFNp
emUocm9vdFNpemUud2lkdGgoKSwgcm9vdFNpemUuaGVpZ2h0KCkpOwotICAgIGNoaWxkUHRyLT5z
ZXRBbmNob3JQb2ludChGbG9hdFBvaW50KDAsIDApKTsKLSAgICBjaGlsZFB0ci0+c2V0UG9zaXRp
b24oRmxvYXRQb2ludCg1LCA1KSk7Ci0gICAgY2hpbGRQdHItPnNldEJvdW5kcyhjaGlsZFNpemUp
OwotICAgIGNoaWxkUHRyLT5zZXRDb250ZW50Qm91bmRzKGNoaWxkU2l6ZSk7Ci0gICAgY2hpbGRQ
dHItPnNldFZpc2libGVDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50KDAsIDApLCBjaGlsZFNp
emUpKTsKLSAgICBjaGlsZFB0ci0+c2V0RHJhd3NDb250ZW50KHRydWUpOwotCi0gICAgc3VyZmFj
ZUxheWVyUHRyLT5hZGRDaGlsZChjaGlsZC5yZWxlYXNlKCkpOworICAgIGFkZERyYXdpbmdMYXll
clRvKHN1cmZhY2VMYXllclB0ciwgNCwgSW50UmVjdCg1LCA1LCByb290U2l6ZS53aWR0aCgpLCBy
b290U2l6ZS5oZWlnaHQoKSksICZjaGlsZFB0cik7CiB9CiAKIGNsYXNzIExheWVyUmVuZGVyZXJD
aHJvbWl1bVdpdGhSZWxlYXNlVGV4dHVyZXMgOiBwdWJsaWMgTGF5ZXJSZW5kZXJlckNocm9taXVt
IHsKQEAgLTI1NDEsNiArMjUyNyw2MTIgQEAgcHVibGljOgogICAgIHVzaW5nIExheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6cmVsZWFzZVJlbmRlclBhc3NUZXh0dXJlczsKIH07CiAKK1RFU1RfRihDQ0xh
eWVyVHJlZUhvc3RJbXBsVGVzdCwgdGV4dHVyZUNhY2hpbmdXaXRoQ2xpcHBpbmcpCit7CisgICAg
Q0NTZXR0aW5nczo6c2V0UGFydGlhbFN3YXBFbmFibGVkKHRydWUpOworCisgICAgQ0NMYXllclRy
ZWVTZXR0aW5ncyBzZXR0aW5nczsKKyAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gbXlI
b3N0SW1wbCA9IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShzZXR0aW5ncywgdGhpcyk7CisK
KyAgICBDQ0xheWVySW1wbCogcm9vdFB0cjsKKyAgICBDQ0xheWVySW1wbCogc3VyZmFjZUxheWVy
UHRyOworCisgICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjb250ZXh0ID0gQ0NHcmFwaGlj
c0NvbnRleHQ6OmNyZWF0ZTNEKGFkb3B0UHRyKG5ldyBQYXJ0aWFsU3dhcENvbnRleHQpKTsKKwor
ICAgIEludFNpemUgcm9vdFNpemUoMTAwLCAxMDApOworCisgICAgbXlIb3N0SW1wbC0+aW5pdGlh
bGl6ZUxheWVyUmVuZGVyZXIoY29udGV4dC5yZWxlYXNlKCksIFVudGhyb3R0bGVkVXBsb2FkZXIp
OworICAgIG15SG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKHJvb3RTaXplLndpZHRo
KCksIHJvb3RTaXplLmhlaWdodCgpKSk7CisKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3Qg
PSBDQ0xheWVySW1wbDo6Y3JlYXRlKDEpOworICAgIHJvb3RQdHIgPSByb290LmdldCgpOworCisg
ICAgcm9vdC0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgwLCAwKSk7CisgICAgcm9vdC0+c2V0
UG9zaXRpb24oRmxvYXRQb2ludCgwLCAwKSk7CisgICAgcm9vdC0+c2V0Qm91bmRzKHJvb3RTaXpl
KTsKKyAgICByb290LT5zZXRDb250ZW50Qm91bmRzKHJvb3RTaXplKTsKKyAgICByb290LT5zZXRE
cmF3c0NvbnRlbnQodHJ1ZSk7CisgICAgcm9vdC0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKKyAg
ICBteUhvc3RJbXBsLT5zZXRSb290TGF5ZXIocm9vdC5yZWxlYXNlKCkpOworCisgICAgYWRkRHJh
d2luZ0xheWVyVG8ocm9vdFB0ciwgMywgSW50UmVjdCgwLCAwLCByb290U2l6ZS53aWR0aCgpLCBy
b290U2l6ZS5oZWlnaHQoKSksICZzdXJmYWNlTGF5ZXJQdHIpOworICAgIHN1cmZhY2VMYXllclB0
ci0+c2V0RHJhd3NDb250ZW50KGZhbHNlKTsKKworICAgIC8vIFN1cmZhY2UgbGF5ZXIgaXMgdGhl
IGxheWVyIHRoYXQgY2hhbmdlcyBpdHMgb3BhY2l0eQorICAgIC8vIEl0IHdpbGwgY29udGFpbiBv
dGhlciBsYXllcnMgdGhhdCBkcmF3IGNvbnRlbnQuCisgICAgc3VyZmFjZUxheWVyUHRyLT5zZXRP
cGFjaXR5KDAuNWYpOyAvLyBUaGlzIHdpbGwgY2F1c2UgaXQgdG8gaGF2ZSBhIHN1cmZhY2UKKwor
ICAgIGFkZERyYXdpbmdMYXllclRvKHN1cmZhY2VMYXllclB0ciwgNCwgSW50UmVjdCgwLCAwLCAx
MDAsIDMpLCAwKTsKKyAgICBhZGREcmF3aW5nTGF5ZXJUbyhzdXJmYWNlTGF5ZXJQdHIsIDUsIElu
dFJlY3QoMCwgOTcsIDEwMCwgMyksIDApOworCisgICAgLy8gUm90YXRpb24gd2lsbCBwdXQgcGFy
dCBvZiB0aGUgY2hpbGQgb3VzaWRlIHRoZSBib3VuZHMgb2YgdGhlIHJvb3QgbGF5ZXIuCisgICAg
Ly8gTmV2ZXJ0aGVsZXNzLCB0aGUgY2hpbGQgbGF5ZXJzIHNob3VsZCBiZSBkcmF3bi4KKyAgICBX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm0gPSBzdXJmYWNlTGF5ZXJQdHItPnRyYW5z
Zm9ybSgpOworICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoNTAsIDUwKTsKKyAgICB0cmFuc2Zvcm0u
cm90YXRlKDM1KTsKKyAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKC01MCwgLTUwKTsKKyAgICBzdXJm
YWNlTGF5ZXJQdHItPnNldFRyYW5zZm9ybSh0cmFuc2Zvcm0pOworCisgICAgeworICAgICAgICBD
Q0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEgZnJhbWU7CisgICAgICAgIEVYUEVDVF9UUlVF
KG15SG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKKworICAgICAgICAvLyBNdXN0IHJl
Y2VpdmUgdHdvIHJlbmRlciBwYXNzZXMsIGVhY2ggd2l0aCBvbmUgcXVhZAorICAgICAgICBBU1NF
UlRfRVEoMlUsIGZyYW1lLnJlbmRlclBhc3Nlcy5zaXplKCkpOworICAgICAgICBFWFBFQ1RfRVEo
MlUsIGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+cXVhZExpc3QoKS5zaXplKCkpOworICAgICAgICBB
U1NFUlRfRVEoMVUsIGZyYW1lLnJlbmRlclBhc3Nlc1sxXS0+cXVhZExpc3QoKS5zaXplKCkpOwor
CisgICAgICAgIC8vIFZlcmlmeSB0aGF0IHRoZSBjaGlsZCBsYXllcnMgaGF2ZSBiZWVuIGRyYXdu
IGVudGlyZWx5LgorICAgICAgICBJbnRSZWN0IHF1YWRWaXNpYmxlUmVjdCA9IGZyYW1lLnJlbmRl
clBhc3Nlc1swXS0+cXVhZExpc3QoKVswXS0+cXVhZFZpc2libGVSZWN0KCk7CisgICAgICAgIEVY
UEVDVF9JTlRfUkVDVF9FUShJbnRSZWN0KDAsIDAsIDEwMCwgMyksIHF1YWRWaXNpYmxlUmVjdCk7
CisKKyAgICAgICAgcXVhZFZpc2libGVSZWN0ID0gZnJhbWUucmVuZGVyUGFzc2VzWzBdLT5xdWFk
TGlzdCgpWzFdLT5xdWFkVmlzaWJsZVJlY3QoKTsKKyAgICAgICAgRVhQRUNUX0lOVF9SRUNUX0VR
KEludFJlY3QoMCwgMCwgMTAwLCAzKSwgcXVhZFZpc2libGVSZWN0KTsKKworICAgICAgICBFWFBF
Q1RfRVEoQ0NEcmF3UXVhZDo6UmVuZGVyUGFzcywgZnJhbWUucmVuZGVyUGFzc2VzWzFdLT5xdWFk
TGlzdCgpWzBdLT5tYXRlcmlhbCgpKTsKKyAgICAgICAgQ0NSZW5kZXJQYXNzRHJhd1F1YWQqIHF1
YWQgPSBzdGF0aWNfY2FzdDxDQ1JlbmRlclBhc3NEcmF3UXVhZCo+KGZyYW1lLnJlbmRlclBhc3Nl
c1sxXS0+cXVhZExpc3QoKVswXS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShxdWFkLT5j
b250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSgpLmlzRW1wdHkoKSk7CisKKyAgICAgICAgbXlI
b3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CisgICAgICAgIG15SG9zdEltcGwtPmRpZERyYXdB
bGxMYXllcnMoZnJhbWUpOworICAgIH0KKworICAgIHRyYW5zZm9ybSA9IHN1cmZhY2VMYXllclB0
ci0+dHJhbnNmb3JtKCk7CisgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSg1MCwgNTApOworICAgIHRy
YW5zZm9ybS5yb3RhdGUoLTM1KTsKKyAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKC01MCwgLTUwKTsK
KyAgICBzdXJmYWNlTGF5ZXJQdHItPnNldFRyYW5zZm9ybSh0cmFuc2Zvcm0pOworCisgICAgLy8g
VGhlIHN1cmZhY2UgaXMgbm93IGFsaWduZWQgYWdhaW4sIGFuZCB0aGUgY2xpcHBlZCBwYXJ0cyBh
cmUgZXhwb3NlZC4KKyAgICAvLyBUaGF0IHNob3VsZCBiZSBPSywgYXMgd2UndmUgYWxyZWFkeSB2
ZXJpZmllZCB0aGF0IHRoZSBxdWFkcyBhcmUgZHJhd24gaW4gZnVsbC4KKyAgICAvLyBWZXJpZnkg
dGhhdCB0aGUgcmVuZGVyIHBhc3MgaXMgcmVtb3ZlZC4KKyAgICB7CisgICAgICAgIENDTGF5ZXJU
cmVlSG9zdEltcGw6OkZyYW1lRGF0YSBmcmFtZTsKKyAgICAgICAgRVhQRUNUX1RSVUUobXlIb3N0
SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworCisgICAgICAgIC8vIE11c3QgcmVjZWl2ZSBh
IHNpbmdsZSByZW5kZXIgcGFzcyB1c2luZyBhIGNhY2hlZCB0ZXh0dXJlLgorICAgICAgICBBU1NF
UlRfRVEoMVUsIGZyYW1lLnJlbmRlclBhc3Nlcy5zaXplKCkpOworICAgICAgICBFWFBFQ1RfRVEo
MVUsIGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+cXVhZExpc3QoKS5zaXplKCkpOworCisgICAgICAg
IG15SG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOworICAgICAgICBteUhvc3RJbXBsLT5kaWRE
cmF3QWxsTGF5ZXJzKGZyYW1lKTsKKyAgICB9Cit9CisKK1RFU1RfRihDQ0xheWVyVHJlZUhvc3RJ
bXBsVGVzdCwgdGV4dHVyZUNhY2hpbmdXaXRoT2NjbHVzaW9uKQoreworICAgIENDU2V0dGluZ3M6
OnNldFBhcnRpYWxTd2FwRW5hYmxlZChmYWxzZSk7CisKKyAgICBDQ0xheWVyVHJlZVNldHRpbmdz
IHNldHRpbmdzOworICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBteUhvc3RJbXBsID0g
Q0NMYXllclRyZWVIb3N0SW1wbDo6Y3JlYXRlKHNldHRpbmdzLCB0aGlzKTsKKworICAgIC8vIExh
eWVycyBhcmUgc3RydWN0dXJlIGFzIGZvbGxvd3M6CisgICAgLy8KKyAgICAvLyAgUiArLS0gUzEg
Ky0gTDEwIChvd25pbmcpCisgICAgLy8gICAgfCAgICAgICstIEwxMQorICAgIC8vICAgIHwgICAg
ICArLSBMMTIKKyAgICAvLyAgICB8CisgICAgLy8gICAgKy0tIFMyICstIEwyMCAob3duaW5nKQor
ICAgIC8vICAgICAgICAgICArLSBMMjEKKyAgICAvLworICAgIC8vIE9jY2x1c2lvbjoKKyAgICAv
LyBMMTIgb2NjbHVkZXMgTDExIChpbnRlcm5hbCkKKyAgICAvLyBMMjAgb2NjbHVkZXMgTDEwIChl
eHRlcm5hbCkKKyAgICAvLyBMMjEgb2NjbHVkZXMgTDIwIChpbnRlcm5hbCkKKworICAgIENDTGF5
ZXJJbXBsKiByb290UHRyOworICAgIENDTGF5ZXJJbXBsKiBsYXllclMxUHRyOworICAgIENDTGF5
ZXJJbXBsKiBsYXllclMyUHRyOworCisgICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjb250
ZXh0ID0gQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKGFkb3B0UHRyKG5ldyBQYXJ0aWFsU3dh
cENvbnRleHQpKTsKKworICAgIEludFNpemUgcm9vdFNpemUoMTAwMCwgMTAwMCk7CisKKyAgICBt
eUhvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjb250ZXh0LnJlbGVhc2UoKSwgVW50
aHJvdHRsZWRVcGxvYWRlcik7CisgICAgbXlIb3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKEludFNp
emUocm9vdFNpemUud2lkdGgoKSwgcm9vdFNpemUuaGVpZ2h0KCkpKTsKKworICAgIE93blB0cjxD
Q0xheWVySW1wbD4gcm9vdCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMSk7CisgICAgcm9vdFB0ciA9
IHJvb3QuZ2V0KCk7CisKKyAgICByb290LT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50KDAsIDAp
KTsKKyAgICByb290LT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KDAsIDApKTsKKyAgICByb290LT5z
ZXRCb3VuZHMocm9vdFNpemUpOworICAgIHJvb3QtPnNldENvbnRlbnRCb3VuZHMocm9vdFNpemUp
OworICAgIHJvb3QtPnNldERyYXdzQ29udGVudCh0cnVlKTsKKyAgICByb290LT5zZXRNYXNrc1Rv
Qm91bmRzKHRydWUpOworICAgIG15SG9zdEltcGwtPnNldFJvb3RMYXllcihyb290LnJlbGVhc2Uo
KSk7CisKKyAgICBhZGREcmF3aW5nTGF5ZXJUbyhyb290UHRyLCAyLCBJbnRSZWN0KDMwMCwgMzAw
LCAzMDAsIDMwMCksICZsYXllclMxUHRyKTsKKyAgICBsYXllclMxUHRyLT5zZXRGb3JjZVJlbmRl
clN1cmZhY2UodHJ1ZSk7CisKKyAgICBhZGREcmF3aW5nTGF5ZXJUbyhsYXllclMxUHRyLCAzLCBJ
bnRSZWN0KDEwLCAxMCwgMTAsIDEwKSwgMCk7IC8vIEwxMQorICAgIGFkZERyYXdpbmdMYXllclRv
KGxheWVyUzFQdHIsIDQsIEludFJlY3QoMCwgMCwgMzAsIDMwKSwgMCk7IC8vIEwxMgorCisgICAg
YWRkRHJhd2luZ0xheWVyVG8ocm9vdFB0ciwgNSwgSW50UmVjdCg1NTAsIDI1MCwgMzAwLCA0MDAp
LCAmbGF5ZXJTMlB0cik7CisgICAgbGF5ZXJTMlB0ci0+c2V0Rm9yY2VSZW5kZXJTdXJmYWNlKHRy
dWUpOworCisgICAgYWRkRHJhd2luZ0xheWVyVG8obGF5ZXJTMlB0ciwgNiwgSW50UmVjdCgyMCwg
MjAsIDUsIDUpLCAwKTsgLy8gTDIxCisKKyAgICAvLyBJbml0aWFsIGRyYXcgLSBtdXN0IHJlY2Vp
dmUgYWxsIHF1YWRzCisgICAgeworICAgICAgICBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURh
dGEgZnJhbWU7CisgICAgICAgIEVYUEVDVF9UUlVFKG15SG9zdEltcGwtPnByZXBhcmVUb0RyYXco
ZnJhbWUpKTsKKworICAgICAgICAvLyBNdXN0IHJlY2VpdmUgMyByZW5kZXIgcGFzc2VzLgorICAg
ICAgICAvLyBGb3IgUm9vdCwgdGhlcmUgYXJlIDIgcXVhZHM7IGZvciBTMSwgdGhlcmUgYXJlIDMg
cXVhZHM7IGZvciBTMiwgdGhlcmUgaXMgMSBxdWFkLgorICAgICAgICBBU1NFUlRfRVEoM1UsIGZy
YW1lLnJlbmRlclBhc3Nlcy5zaXplKCkpOworCisgICAgICAgIEVYUEVDVF9FUSgyVSwgZnJhbWUu
cmVuZGVyUGFzc2VzWzBdLT5xdWFkTGlzdCgpLnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUSgz
VSwgZnJhbWUucmVuZGVyUGFzc2VzWzFdLT5xdWFkTGlzdCgpLnNpemUoKSk7CisgICAgICAgIEVY
UEVDVF9FUSgyVSwgZnJhbWUucmVuZGVyUGFzc2VzWzJdLT5xdWFkTGlzdCgpLnNpemUoKSk7CisK
KyAgICAgICAgbXlIb3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CisgICAgICAgIG15SG9zdElt
cGwtPmRpZERyYXdBbGxMYXllcnMoZnJhbWUpOworICAgIH0KKworICAgIC8vICJVbm9jY2x1ZGUi
IHN1cmZhY2UgUzEgYW5kIHJlcGVhdCBkcmF3LgorICAgIC8vIE11c3QgcmVtb3ZlIFMyJ3MgcmVu
ZGVyIHBhc3Mgc2luY2UgaXQncyBjYWNoZWQ7CisgICAgLy8gTXVzdCBrZWVwIFMxIHF1YWRzIGJl
Y2F1c2UgdGV4dHVyZSBjb250YWluZWQgZXh0ZXJuYWwgb2NjbHVzaW9uLgorICAgIFdlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybSA9IGxheWVyUzJQdHItPnRyYW5zZm9ybSgpOworICAg
IHRyYW5zZm9ybS50cmFuc2xhdGUoMTUwLCAxNTApOworICAgIGxheWVyUzJQdHItPnNldFRyYW5z
Zm9ybSh0cmFuc2Zvcm0pOworICAgIHsKKyAgICAgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJh
bWVEYXRhIGZyYW1lOworICAgICAgICBFWFBFQ1RfVFJVRShteUhvc3RJbXBsLT5wcmVwYXJlVG9E
cmF3KGZyYW1lKSk7CisKKyAgICAgICAgLy8gTXVzdCByZWNlaXZlIDIgcmVuZGVyIHBhc3Nlcy4K
KyAgICAgICAgLy8gRm9yIFJvb3QsIHRoZXJlIGFyZSAyIHF1YWRzCisgICAgICAgIC8vIEZvciBT
MSwgdGhlIG51bWJlciBvZiBxdWFkcyBkZXBlbmRzIG9uIHdoYXQgZ290IHVub2NjbHVkZWQsIHNv
IG5vdCBhc3NlcnRlZCBiZXlvbmQgYmVpbmcgcG9zaXRpdmUuCisgICAgICAgIC8vIEZvciBTMiwg
dGhlcmUgaXMgbm8gcmVuZGVyIHBhc3MKKyAgICAgICAgQVNTRVJUX0VRKDJVLCBmcmFtZS5yZW5k
ZXJQYXNzZXMuc2l6ZSgpKTsKKworICAgICAgICBFWFBFQ1RfR1QoZnJhbWUucmVuZGVyUGFzc2Vz
WzBdLT5xdWFkTGlzdCgpLnNpemUoKSwgMFUpOworICAgICAgICBFWFBFQ1RfRVEoMlUsIGZyYW1l
LnJlbmRlclBhc3Nlc1sxXS0+cXVhZExpc3QoKS5zaXplKCkpOworCisgICAgICAgIG15SG9zdElt
cGwtPmRyYXdMYXllcnMoZnJhbWUpOworICAgICAgICBteUhvc3RJbXBsLT5kaWREcmF3QWxsTGF5
ZXJzKGZyYW1lKTsKKyAgICB9CisKKyAgICAvLyAiUmUtb2NjbHVkZSIgc3VyZmFjZSBTMSBhbmQg
cmVwZWF0IGRyYXcuCisgICAgLy8gTXVzdCByZW1vdmUgUzEncyByZW5kZXIgcGFzcyBzaW5jZSBp
dCBpcyBub3cgYXZhaWxhYmxlIGluIGZ1bGwuCisgICAgLy8gUzIgaGFzIG5vIGNoYW5nZSBzbyBt
dXN0IGFsc28gYmUgcmVtb3ZlZC4KKyAgICB0cmFuc2Zvcm0gPSBsYXllclMyUHRyLT50cmFuc2Zv
cm0oKTsKKyAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKC0xNSwgLTE1KTsKKyAgICBsYXllclMyUHRy
LT5zZXRUcmFuc2Zvcm0odHJhbnNmb3JtKTsKKyAgICB7CisgICAgICAgIENDTGF5ZXJUcmVlSG9z
dEltcGw6OkZyYW1lRGF0YSBmcmFtZTsKKyAgICAgICAgRVhQRUNUX1RSVUUobXlIb3N0SW1wbC0+
cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworCisgICAgICAgIC8vIE11c3QgcmVjZWl2ZSAxIHJlbmRl
ciBwYXNzIC0gZm9yIHRoZSByb290LgorICAgICAgICBBU1NFUlRfRVEoMVUsIGZyYW1lLnJlbmRl
clBhc3Nlcy5zaXplKCkpOworCisgICAgICAgIEVYUEVDVF9FUSgyVSwgZnJhbWUucmVuZGVyUGFz
c2VzWzBdLT5xdWFkTGlzdCgpLnNpemUoKSk7CisKKyAgICAgICAgbXlIb3N0SW1wbC0+ZHJhd0xh
eWVycyhmcmFtZSk7CisgICAgICAgIG15SG9zdEltcGwtPmRpZERyYXdBbGxMYXllcnMoZnJhbWUp
OworICAgIH0KKworfQorCitURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHRleHR1cmVD
YWNoaW5nV2l0aE9jY2x1c2lvbkVhcmx5T3V0KQoreworICAgIENDU2V0dGluZ3M6OnNldFBhcnRp
YWxTd2FwRW5hYmxlZChmYWxzZSk7CisKKyAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNldHRpbmdz
OworICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBteUhvc3RJbXBsID0gQ0NMYXllclRy
ZWVIb3N0SW1wbDo6Y3JlYXRlKHNldHRpbmdzLCB0aGlzKTsKKworICAgIC8vIExheWVycyBhcmUg
c3RydWN0dXJlIGFzIGZvbGxvd3M6CisgICAgLy8KKyAgICAvLyAgUiArLS0gUzEgKy0gTDEwIChv
d25pbmcsIG5vbiBkcmF3aW5nKQorICAgIC8vICAgIHwgICAgICArLSBMMTEgKGNvcm5lciwgdW5v
Y2NsdWRlZCkKKyAgICAvLyAgICB8ICAgICAgKy0gTDEyIChjb3JuZXIsIHVub2NjbHVkZWQpCisg
ICAgLy8gICAgfCAgICAgICstIEwxMyAoY29ybmVyLCB1bm9jY2x1ZGVkKQorICAgIC8vICAgIHwg
ICAgICArLSBMMTQgKGNvcm5lciwgZW50aXJlbHkgb2NjbHVkZWQpCisgICAgLy8gICAgfAorICAg
IC8vICAgICstLSBTMiArLSBMMjAgKG93bmluZywgZHJhd2luZykKKyAgICAvLworCisgICAgQ0NM
YXllckltcGwqIHJvb3RQdHI7CisgICAgQ0NMYXllckltcGwqIGxheWVyUzFQdHI7CisgICAgQ0NM
YXllckltcGwqIGxheWVyUzJQdHI7CisKKyAgICBPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNv
bnRleHQgPSBDQ0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRlM0QoYWRvcHRQdHIobmV3IFBhcnRpYWxT
d2FwQ29udGV4dCkpOworCisgICAgSW50U2l6ZSByb290U2l6ZSgxMDAwLCAxMDAwKTsKKworICAg
IG15SG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQucmVsZWFzZSgpLCBV
bnRocm90dGxlZFVwbG9hZGVyKTsKKyAgICBteUhvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50
U2l6ZShyb290U2l6ZS53aWR0aCgpLCByb290U2l6ZS5oZWlnaHQoKSkpOworCisgICAgT3duUHRy
PENDTGF5ZXJJbXBsPiByb290ID0gQ0NMYXllckltcGw6OmNyZWF0ZSgxKTsKKyAgICByb290UHRy
ID0gcm9vdC5nZXQoKTsKKworICAgIHJvb3QtPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQoMCwg
MCkpOworICAgIHJvb3QtPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQoMCwgMCkpOworICAgIHJvb3Qt
PnNldEJvdW5kcyhyb290U2l6ZSk7CisgICAgcm9vdC0+c2V0Q29udGVudEJvdW5kcyhyb290U2l6
ZSk7CisgICAgcm9vdC0+c2V0RHJhd3NDb250ZW50KHRydWUpOworICAgIHJvb3QtPnNldE1hc2tz
VG9Cb3VuZHModHJ1ZSk7CisgICAgbXlIb3N0SW1wbC0+c2V0Um9vdExheWVyKHJvb3QucmVsZWFz
ZSgpKTsKKworICAgIGFkZERyYXdpbmdMYXllclRvKHJvb3RQdHIsIDIsIEludFJlY3QoMCwgMCwg
ODAwLCA4MDApLCAmbGF5ZXJTMVB0cik7CisgICAgbGF5ZXJTMVB0ci0+c2V0Rm9yY2VSZW5kZXJT
dXJmYWNlKHRydWUpOworICAgIGxheWVyUzFQdHItPnNldERyYXdzQ29udGVudChmYWxzZSk7CisK
KyAgICBhZGREcmF3aW5nTGF5ZXJUbyhsYXllclMxUHRyLCAzLCBJbnRSZWN0KDAsIDAsIDMwMCwg
MzAwKSwgMCk7IC8vIEwxMQorICAgIGFkZERyYXdpbmdMYXllclRvKGxheWVyUzFQdHIsIDQsIElu
dFJlY3QoMCwgNTAwLCAzMDAsIDMwMCksIDApOyAvLyBMMTIKKyAgICBhZGREcmF3aW5nTGF5ZXJU
byhsYXllclMxUHRyLCA1LCBJbnRSZWN0KDUwMCwgMCwgMzAwLCAzMDApLCAwKTsgLy8gTDEzCisg
ICAgYWRkRHJhd2luZ0xheWVyVG8obGF5ZXJTMVB0ciwgNiwgSW50UmVjdCg1MDAsIDUwMCwgMzAw
LCAzMDApLCAwKTsgLy8gTDE0CisgICAgYWRkRHJhd2luZ0xheWVyVG8obGF5ZXJTMVB0ciwgOSwg
SW50UmVjdCg1MDAsIDUwMCwgMzAwLCAzMDApLCAwKTsgLy8gTDE0CisKKyAgICBhZGREcmF3aW5n
TGF5ZXJUbyhyb290UHRyLCA3LCBJbnRSZWN0KDQ1MCwgNDUwLCA0NTAsIDQ1MCksICZsYXllclMy
UHRyKTsKKyAgICBsYXllclMyUHRyLT5zZXRGb3JjZVJlbmRlclN1cmZhY2UodHJ1ZSk7CisKKyAg
ICAvLyBJbml0aWFsIGRyYXcgLSBtdXN0IHJlY2VpdmUgYWxsIHF1YWRzCisgICAgeworICAgICAg
ICBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEgZnJhbWU7CisgICAgICAgIEVYUEVDVF9U
UlVFKG15SG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKKworICAgICAgICAvLyBNdXN0
IHJlY2VpdmUgMyByZW5kZXIgcGFzc2VzLgorICAgICAgICAvLyBGb3IgUm9vdCwgdGhlcmUgYXJl
IDIgcXVhZHM7IGZvciBTMSwgdGhlcmUgYXJlIDMgcXVhZHM7IGZvciBTMiwgdGhlcmUgaXMgMSBx
dWFkLgorICAgICAgICBBU1NFUlRfRVEoM1UsIGZyYW1lLnJlbmRlclBhc3Nlcy5zaXplKCkpOwor
CisgICAgICAgIEVYUEVDVF9FUSgxVSwgZnJhbWUucmVuZGVyUGFzc2VzWzBdLT5xdWFkTGlzdCgp
LnNpemUoKSk7CisKKyAgICAgICAgLy8gTDE0IGlzIGN1bGxlZCwgc28gb25seSAzIHF1YWRzLgor
ICAgICAgICBFWFBFQ1RfRVEoM1UsIGZyYW1lLnJlbmRlclBhc3Nlc1sxXS0+cXVhZExpc3QoKS5z
aXplKCkpOworICAgICAgICBFWFBFQ1RfRVEoMlUsIGZyYW1lLnJlbmRlclBhc3Nlc1syXS0+cXVh
ZExpc3QoKS5zaXplKCkpOworCisgICAgICAgIG15SG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUp
OworICAgICAgICBteUhvc3RJbXBsLT5kaWREcmF3QWxsTGF5ZXJzKGZyYW1lKTsKKyAgICB9CisK
KyAgICAvLyAiVW5vY2NsdWRlIiBzdXJmYWNlIFMxIGFuZCByZXBlYXQgZHJhdy4KKyAgICAvLyBN
dXN0IHJlbW92ZSBTMidzIHJlbmRlciBwYXNzIHNpbmNlIGl0J3MgY2FjaGVkOworICAgIC8vIE11
c3Qga2VlcCBTMSBxdWFkcyBiZWNhdXNlIHRleHR1cmUgY29udGFpbmVkIGV4dGVybmFsIG9jY2x1
c2lvbi4KKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm0gPSBsYXllclMyUHRy
LT50cmFuc2Zvcm0oKTsKKyAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKDEwMCwgMTAwKTsKKyAgICBs
YXllclMyUHRyLT5zZXRUcmFuc2Zvcm0odHJhbnNmb3JtKTsKKyAgICB7CisgICAgICAgIENDTGF5
ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSBmcmFtZTsKKyAgICAgICAgRVhQRUNUX1RSVUUobXlI
b3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworCisgICAgICAgIC8vIE11c3QgcmVjZWl2
ZSAyIHJlbmRlciBwYXNzZXMuCisgICAgICAgIC8vIEZvciBSb290LCB0aGVyZSBhcmUgMiBxdWFk
cworICAgICAgICAvLyBGb3IgUzEsIHRoZSBudW1iZXIgb2YgcXVhZHMgZGVwZW5kcyBvbiB3aGF0
IGdvdCB1bm9jY2x1ZGVkLCBzbyBub3QgYXNzZXJ0ZWQgYmV5b25kIGJlaW5nIHBvc2l0aXZlLgor
ICAgICAgICAvLyBGb3IgUzIsIHRoZXJlIGlzIG5vIHJlbmRlciBwYXNzCisgICAgICAgIEFTU0VS
VF9FUSgyVSwgZnJhbWUucmVuZGVyUGFzc2VzLnNpemUoKSk7CisKKyAgICAgICAgRVhQRUNUX0dU
KGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+cXVhZExpc3QoKS5zaXplKCksIDBVKTsKKyAgICAgICAg
RVhQRUNUX0VRKDJVLCBmcmFtZS5yZW5kZXJQYXNzZXNbMV0tPnF1YWRMaXN0KCkuc2l6ZSgpKTsK
KworICAgICAgICBteUhvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKKyAgICAgICAgbXlIb3N0
SW1wbC0+ZGlkRHJhd0FsbExheWVycyhmcmFtZSk7CisgICAgfQorCisgICAgLy8gIlJlLW9jY2x1
ZGUiIHN1cmZhY2UgUzEgYW5kIHJlcGVhdCBkcmF3LgorICAgIC8vIE11c3QgcmVtb3ZlIFMxJ3Mg
cmVuZGVyIHBhc3Mgc2luY2UgaXQgaXMgbm93IGF2YWlsYWJsZSBpbiBmdWxsLgorICAgIC8vIFMy
IGhhcyBubyBjaGFuZ2Ugc28gbXVzdCBhbHNvIGJlIHJlbW92ZWQuCisgICAgdHJhbnNmb3JtID0g
bGF5ZXJTMlB0ci0+dHJhbnNmb3JtKCk7CisgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSgtMTUsIC0x
NSk7CisgICAgbGF5ZXJTMlB0ci0+c2V0VHJhbnNmb3JtKHRyYW5zZm9ybSk7CisgICAgeworICAg
ICAgICBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEgZnJhbWU7CisgICAgICAgIEVYUEVD
VF9UUlVFKG15SG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKKworICAgICAgICAvLyBN
dXN0IHJlY2VpdmUgMSByZW5kZXIgcGFzcyAtIGZvciB0aGUgcm9vdC4KKyAgICAgICAgQVNTRVJU
X0VRKDFVLCBmcmFtZS5yZW5kZXJQYXNzZXMuc2l6ZSgpKTsKKworICAgICAgICBFWFBFQ1RfRVEo
MlUsIGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+cXVhZExpc3QoKS5zaXplKCkpOworCisgICAgICAg
IG15SG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOworICAgICAgICBteUhvc3RJbXBsLT5kaWRE
cmF3QWxsTGF5ZXJzKGZyYW1lKTsKKyAgICB9Cit9CisKK1RFU1RfRihDQ0xheWVyVHJlZUhvc3RJ
bXBsVGVzdCwgdGV4dHVyZUNhY2hpbmdXaXRoT2NjbHVzaW9uRXh0ZXJuYWxPdmVySW50ZXJuYWwp
Cit7CisgICAgQ0NTZXR0aW5nczo6c2V0UGFydGlhbFN3YXBFbmFibGVkKGZhbHNlKTsKKworICAg
IENDTGF5ZXJUcmVlU2V0dGluZ3Mgc2V0dGluZ3M7CisgICAgT3duUHRyPENDTGF5ZXJUcmVlSG9z
dEltcGw+IG15SG9zdEltcGwgPSBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUoc2V0dGluZ3Ms
IHRoaXMpOworCisgICAgLy8gTGF5ZXJzIGFyZSBzdHJ1Y3R1cmVkIGFzIGZvbGxvd3M6CisgICAg
Ly8KKyAgICAvLyAgUiArLS0gUzEgKy0gTDEwIChvd25pbmcsIGRyYXdpbmcpCisgICAgLy8gICAg
fCAgICAgICstIEwxMSAoY29ybmVyLCBvY2NsdWRlZCBieSBMMTIpCisgICAgLy8gICAgfCAgICAg
ICstIEwxMiAob3Bwb3NpdGUgY29ybmVyKQorICAgIC8vICAgIHwKKyAgICAvLyAgICArLS0gUzIg
Ky0gTDIwIChvd25pbmcsIGRyYXdpbmcpCisgICAgLy8KKworICAgIENDTGF5ZXJJbXBsKiByb290
UHRyOworICAgIENDTGF5ZXJJbXBsKiBsYXllclMxUHRyOworICAgIENDTGF5ZXJJbXBsKiBsYXll
clMyUHRyOworCisgICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjb250ZXh0ID0gQ0NHcmFw
aGljc0NvbnRleHQ6OmNyZWF0ZTNEKGFkb3B0UHRyKG5ldyBQYXJ0aWFsU3dhcENvbnRleHQpKTsK
KworICAgIEludFNpemUgcm9vdFNpemUoMTAwMCwgMTAwMCk7CisKKyAgICBteUhvc3RJbXBsLT5p
bml0aWFsaXplTGF5ZXJSZW5kZXJlcihjb250ZXh0LnJlbGVhc2UoKSwgVW50aHJvdHRsZWRVcGxv
YWRlcik7CisgICAgbXlIb3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUocm9vdFNpemUu
d2lkdGgoKSwgcm9vdFNpemUuaGVpZ2h0KCkpKTsKKworICAgIE93blB0cjxDQ0xheWVySW1wbD4g
cm9vdCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMSk7CisgICAgcm9vdFB0ciA9IHJvb3QuZ2V0KCk7
CisKKyAgICByb290LT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50KDAsIDApKTsKKyAgICByb290
LT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KDAsIDApKTsKKyAgICByb290LT5zZXRCb3VuZHMocm9v
dFNpemUpOworICAgIHJvb3QtPnNldENvbnRlbnRCb3VuZHMocm9vdFNpemUpOworICAgIHJvb3Qt
PnNldERyYXdzQ29udGVudCh0cnVlKTsKKyAgICByb290LT5zZXRNYXNrc1RvQm91bmRzKHRydWUp
OworICAgIG15SG9zdEltcGwtPnNldFJvb3RMYXllcihyb290LnJlbGVhc2UoKSk7CisKKyAgICBh
ZGREcmF3aW5nTGF5ZXJUbyhyb290UHRyLCAyLCBJbnRSZWN0KDAsIDAsIDQwMCwgNDAwKSwgJmxh
eWVyUzFQdHIpOworICAgIGxheWVyUzFQdHItPnNldEZvcmNlUmVuZGVyU3VyZmFjZSh0cnVlKTsK
KworICAgIGFkZERyYXdpbmdMYXllclRvKGxheWVyUzFQdHIsIDMsIEludFJlY3QoMCwgMCwgMzAw
LCAzMDApLCAwKTsgLy8gTDExCisgICAgYWRkRHJhd2luZ0xheWVyVG8obGF5ZXJTMVB0ciwgNCwg
SW50UmVjdCgxMDAsIDAsIDMwMCwgMzAwKSwgMCk7IC8vIEwxMgorCisgICAgYWRkRHJhd2luZ0xh
eWVyVG8ocm9vdFB0ciwgNywgSW50UmVjdCgyMDAsIDAsIDMwMCwgMzAwKSwgJmxheWVyUzJQdHIp
OworICAgIGxheWVyUzJQdHItPnNldEZvcmNlUmVuZGVyU3VyZmFjZSh0cnVlKTsKKworICAgIC8v
IEluaXRpYWwgZHJhdyAtIG11c3QgcmVjZWl2ZSBhbGwgcXVhZHMKKyAgICB7CisgICAgICAgIEND
TGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSBmcmFtZTsKKyAgICAgICAgRVhQRUNUX1RSVUUo
bXlIb3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworCisgICAgICAgIC8vIE11c3QgcmVj
ZWl2ZSAzIHJlbmRlciBwYXNzZXMuCisgICAgICAgIC8vIEZvciBSb290LCB0aGVyZSBhcmUgMiBx
dWFkczsgZm9yIFMxLCB0aGVyZSBhcmUgMyBxdWFkczsgZm9yIFMyLCB0aGVyZSBpcyAxIHF1YWQu
CisgICAgICAgIEFTU0VSVF9FUSgzVSwgZnJhbWUucmVuZGVyUGFzc2VzLnNpemUoKSk7CisKKyAg
ICAgICAgRVhQRUNUX0VRKDFVLCBmcmFtZS5yZW5kZXJQYXNzZXNbMF0tPnF1YWRMaXN0KCkuc2l6
ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKDNVLCBmcmFtZS5yZW5kZXJQYXNzZXNbMV0tPnF1YWRM
aXN0KCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKDJVLCBmcmFtZS5yZW5kZXJQYXNzZXNb
Ml0tPnF1YWRMaXN0KCkuc2l6ZSgpKTsKKworICAgICAgICBteUhvc3RJbXBsLT5kcmF3TGF5ZXJz
KGZyYW1lKTsKKyAgICAgICAgbXlIb3N0SW1wbC0+ZGlkRHJhd0FsbExheWVycyhmcmFtZSk7Cisg
ICAgfQorCisgICAgLy8gIlVub2NjbHVkZSIgc3VyZmFjZSBTMSBhbmQgcmVwZWF0IGRyYXcuCisg
ICAgLy8gTXVzdCByZW1vdmUgUzIncyByZW5kZXIgcGFzcyBzaW5jZSBpdCdzIGNhY2hlZDsKKyAg
ICAvLyBNdXN0IGtlZXAgUzEgcXVhZHMgYmVjYXVzZSB0ZXh0dXJlIGNvbnRhaW5lZCBleHRlcm5h
bCBvY2NsdXNpb24uCisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtID0gbGF5
ZXJTMlB0ci0+dHJhbnNmb3JtKCk7CisgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSgzMDAsIDApOwor
ICAgIGxheWVyUzJQdHItPnNldFRyYW5zZm9ybSh0cmFuc2Zvcm0pOworICAgIHsKKyAgICAgICAg
Q0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRhIGZyYW1lOworICAgICAgICBFWFBFQ1RfVFJV
RShteUhvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CisKKyAgICAgICAgLy8gTXVzdCBy
ZWNlaXZlIDIgcmVuZGVyIHBhc3Nlcy4KKyAgICAgICAgLy8gRm9yIFJvb3QsIHRoZXJlIGFyZSAy
IHF1YWRzCisgICAgICAgIC8vIEZvciBTMSwgdGhlIG51bWJlciBvZiBxdWFkcyBkZXBlbmRzIG9u
IHdoYXQgZ290IHVub2NjbHVkZWQsIHNvIG5vdCBhc3NlcnRlZCBiZXlvbmQgYmVpbmcgcG9zaXRp
dmUuCisgICAgICAgIC8vIEZvciBTMiwgdGhlcmUgaXMgbm8gcmVuZGVyIHBhc3MKKyAgICAgICAg
QVNTRVJUX0VRKDJVLCBmcmFtZS5yZW5kZXJQYXNzZXMuc2l6ZSgpKTsKKworICAgICAgICBFWFBF
Q1RfR1QoZnJhbWUucmVuZGVyUGFzc2VzWzBdLT5xdWFkTGlzdCgpLnNpemUoKSwgMFUpOworICAg
ICAgICBFWFBFQ1RfRVEoMlUsIGZyYW1lLnJlbmRlclBhc3Nlc1sxXS0+cXVhZExpc3QoKS5zaXpl
KCkpOworCisgICAgICAgIG15SG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOworICAgICAgICBt
eUhvc3RJbXBsLT5kaWREcmF3QWxsTGF5ZXJzKGZyYW1lKTsKKyAgICB9Cit9CisKK1RFU1RfRihD
Q0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgdGV4dHVyZUNhY2hpbmdXaXRoT2NjbHVzaW9uRXh0ZXJu
YWxOb3RBbGlnbmVkKQoreworICAgIENDU2V0dGluZ3M6OnNldFBhcnRpYWxTd2FwRW5hYmxlZChm
YWxzZSk7CisKKyAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNldHRpbmdzOworICAgIE93blB0cjxD
Q0xheWVyVHJlZUhvc3RJbXBsPiBteUhvc3RJbXBsID0gQ0NMYXllclRyZWVIb3N0SW1wbDo6Y3Jl
YXRlKHNldHRpbmdzLCB0aGlzKTsKKworICAgIC8vIExheWVycyBhcmUgc3RydWN0dXJlZCBhcyBm
b2xsb3dzOgorICAgIC8vCisgICAgLy8gIFIgKy0tIFMxICstIEwxMCAocm90YXRlZCwgZHJhd2lu
ZykKKyAgICAvLyAgICAgICAgICAgKy0gTDExIChvY2N1cGllcyBoYWxmIHN1cmZhY2UpCisKKyAg
ICBDQ0xheWVySW1wbCogcm9vdFB0cjsKKyAgICBDQ0xheWVySW1wbCogbGF5ZXJTMVB0cjsKKwor
ICAgIE93blB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY29udGV4dCA9IENDR3JhcGhpY3NDb250ZXh0
OjpjcmVhdGUzRChhZG9wdFB0cihuZXcgUGFydGlhbFN3YXBDb250ZXh0KSk7CisKKyAgICBJbnRT
aXplIHJvb3RTaXplKDEwMDAsIDEwMDApOworCisgICAgbXlIb3N0SW1wbC0+aW5pdGlhbGl6ZUxh
eWVyUmVuZGVyZXIoY29udGV4dC5yZWxlYXNlKCksIFVudGhyb3R0bGVkVXBsb2FkZXIpOworICAg
IG15SG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKHJvb3RTaXplLndpZHRoKCksIHJv
b3RTaXplLmhlaWdodCgpKSk7CisKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBDQ0xh
eWVySW1wbDo6Y3JlYXRlKDEpOworICAgIHJvb3RQdHIgPSByb290LmdldCgpOworCisgICAgcm9v
dC0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgwLCAwKSk7CisgICAgcm9vdC0+c2V0UG9zaXRp
b24oRmxvYXRQb2ludCgwLCAwKSk7CisgICAgcm9vdC0+c2V0Qm91bmRzKHJvb3RTaXplKTsKKyAg
ICByb290LT5zZXRDb250ZW50Qm91bmRzKHJvb3RTaXplKTsKKyAgICByb290LT5zZXREcmF3c0Nv
bnRlbnQodHJ1ZSk7CisgICAgcm9vdC0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKKyAgICBteUhv
c3RJbXBsLT5zZXRSb290TGF5ZXIocm9vdC5yZWxlYXNlKCkpOworCisgICAgYWRkRHJhd2luZ0xh
eWVyVG8ocm9vdFB0ciwgMiwgSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksICZsYXllclMxUHRyKTsK
KyAgICBsYXllclMxUHRyLT5zZXRGb3JjZVJlbmRlclN1cmZhY2UodHJ1ZSk7CisgICAgV2ViVHJh
bnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtID0gbGF5ZXJTMVB0ci0+dHJhbnNmb3JtKCk7Cisg
ICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSgyMDAsIDIwMCk7CisgICAgdHJhbnNmb3JtLnJvdGF0ZSg0
NSk7CisgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSgtMjAwLCAtMjAwKTsKKyAgICBsYXllclMxUHRy
LT5zZXRUcmFuc2Zvcm0odHJhbnNmb3JtKTsKKworICAgIGFkZERyYXdpbmdMYXllclRvKGxheWVy
UzFQdHIsIDMsIEludFJlY3QoMjAwLCAwLCAyMDAsIDQwMCksIDApOyAvLyBMMTEKKworICAgIC8v
IEluaXRpYWwgZHJhdyAtIG11c3QgcmVjZWl2ZSBhbGwgcXVhZHMKKyAgICB7CisgICAgICAgIEND
TGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSBmcmFtZTsKKyAgICAgICAgRVhQRUNUX1RSVUUo
bXlIb3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworCisgICAgICAgIC8vIE11c3QgcmVj
ZWl2ZSAyIHJlbmRlciBwYXNzZXMuCisgICAgICAgIEFTU0VSVF9FUSgyVSwgZnJhbWUucmVuZGVy
UGFzc2VzLnNpemUoKSk7CisKKyAgICAgICAgRVhQRUNUX0VRKDJVLCBmcmFtZS5yZW5kZXJQYXNz
ZXNbMF0tPnF1YWRMaXN0KCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKDFVLCBmcmFtZS5y
ZW5kZXJQYXNzZXNbMV0tPnF1YWRMaXN0KCkuc2l6ZSgpKTsKKworICAgICAgICBteUhvc3RJbXBs
LT5kcmF3TGF5ZXJzKGZyYW1lKTsKKyAgICAgICAgbXlIb3N0SW1wbC0+ZGlkRHJhd0FsbExheWVy
cyhmcmFtZSk7CisgICAgfQorCisgICAgLy8gQ2hhbmdlIG9wYWNpdHkgYW5kIGRyYXcuIFZlcmlm
eSB3ZSB1c2VkIGNhY2hlZCB0ZXh0dXJlLgorICAgIGxheWVyUzFQdHItPnNldE9wYWNpdHkoMC4y
Zik7CisgICAgeworICAgICAgICBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEgZnJhbWU7
CisgICAgICAgIEVYUEVDVF9UUlVFKG15SG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsK
KworICAgICAgICAvLyBPbmUgcmVuZGVyIHBhc3MgbXVzdCBiZSBnb25lIGR1ZSB0byBjYWNoZWQg
dGV4dHVyZS4KKyAgICAgICAgQVNTRVJUX0VRKDFVLCBmcmFtZS5yZW5kZXJQYXNzZXMuc2l6ZSgp
KTsKKworICAgICAgICBFWFBFQ1RfRVEoMVUsIGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+cXVhZExp
c3QoKS5zaXplKCkpOworCisgICAgICAgIG15SG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOwor
ICAgICAgICBteUhvc3RJbXBsLT5kaWREcmF3QWxsTGF5ZXJzKGZyYW1lKTsKKyAgICB9Cit9CisK
K1RFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgdGV4dHVyZUNhY2hpbmdXaXRoT2NjbHVz
aW9uUGFydGlhbFN3YXApCit7CisgICAgQ0NTZXR0aW5nczo6c2V0UGFydGlhbFN3YXBFbmFibGVk
KHRydWUpOworCisgICAgQ0NMYXllclRyZWVTZXR0aW5ncyBzZXR0aW5nczsKKyAgICBPd25QdHI8
Q0NMYXllclRyZWVIb3N0SW1wbD4gbXlIb3N0SW1wbCA9IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNy
ZWF0ZShzZXR0aW5ncywgdGhpcyk7CisKKyAgICAvLyBMYXllcnMgYXJlIHN0cnVjdHVyZSBhcyBm
b2xsb3dzOgorICAgIC8vCisgICAgLy8gIFIgKy0tIFMxICstIEwxMCAob3duaW5nKQorICAgIC8v
ICAgIHwgICAgICArLSBMMTEKKyAgICAvLyAgICB8ICAgICAgKy0gTDEyCisgICAgLy8gICAgfAor
ICAgIC8vICAgICstLSBTMiArLSBMMjAgKG93bmluZykKKyAgICAvLyAgICAgICAgICAgKy0gTDIx
CisgICAgLy8KKyAgICAvLyBPY2NsdXNpb246CisgICAgLy8gTDEyIG9jY2x1ZGVzIEwxMSAoaW50
ZXJuYWwpCisgICAgLy8gTDIwIG9jY2x1ZGVzIEwxMCAoZXh0ZXJuYWwpCisgICAgLy8gTDIxIG9j
Y2x1ZGVzIEwyMCAoaW50ZXJuYWwpCisKKyAgICBDQ0xheWVySW1wbCogcm9vdFB0cjsKKyAgICBD
Q0xheWVySW1wbCogbGF5ZXJTMVB0cjsKKyAgICBDQ0xheWVySW1wbCogbGF5ZXJTMlB0cjsKKwor
ICAgIE93blB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY29udGV4dCA9IENDR3JhcGhpY3NDb250ZXh0
OjpjcmVhdGUzRChhZG9wdFB0cihuZXcgUGFydGlhbFN3YXBDb250ZXh0KSk7CisKKyAgICBJbnRT
aXplIHJvb3RTaXplKDEwMDAsIDEwMDApOworCisgICAgbXlIb3N0SW1wbC0+aW5pdGlhbGl6ZUxh
eWVyUmVuZGVyZXIoY29udGV4dC5yZWxlYXNlKCksIFVudGhyb3R0bGVkVXBsb2FkZXIpOworICAg
IG15SG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKHJvb3RTaXplLndpZHRoKCksIHJv
b3RTaXplLmhlaWdodCgpKSk7CisKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBDQ0xh
eWVySW1wbDo6Y3JlYXRlKDEpOworICAgIHJvb3RQdHIgPSByb290LmdldCgpOworCisgICAgcm9v
dC0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgwLCAwKSk7CisgICAgcm9vdC0+c2V0UG9zaXRp
b24oRmxvYXRQb2ludCgwLCAwKSk7CisgICAgcm9vdC0+c2V0Qm91bmRzKHJvb3RTaXplKTsKKyAg
ICByb290LT5zZXRDb250ZW50Qm91bmRzKHJvb3RTaXplKTsKKyAgICByb290LT5zZXREcmF3c0Nv
bnRlbnQodHJ1ZSk7CisgICAgcm9vdC0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKKyAgICBteUhv
c3RJbXBsLT5zZXRSb290TGF5ZXIocm9vdC5yZWxlYXNlKCkpOworCisgICAgYWRkRHJhd2luZ0xh
eWVyVG8ocm9vdFB0ciwgMiwgSW50UmVjdCgzMDAsIDMwMCwgMzAwLCAzMDApLCAmbGF5ZXJTMVB0
cik7CisgICAgbGF5ZXJTMVB0ci0+c2V0Rm9yY2VSZW5kZXJTdXJmYWNlKHRydWUpOworCisgICAg
YWRkRHJhd2luZ0xheWVyVG8obGF5ZXJTMVB0ciwgMywgSW50UmVjdCgxMCwgMTAsIDEwLCAxMCks
IDApOyAvLyBMMTEKKyAgICBhZGREcmF3aW5nTGF5ZXJUbyhsYXllclMxUHRyLCA0LCBJbnRSZWN0
KDAsIDAsIDMwLCAzMCksIDApOyAvLyBMMTIKKworICAgIGFkZERyYXdpbmdMYXllclRvKHJvb3RQ
dHIsIDUsIEludFJlY3QoNTUwLCAyNTAsIDMwMCwgNDAwKSwgJmxheWVyUzJQdHIpOworICAgIGxh
eWVyUzJQdHItPnNldEZvcmNlUmVuZGVyU3VyZmFjZSh0cnVlKTsKKworICAgIGFkZERyYXdpbmdM
YXllclRvKGxheWVyUzJQdHIsIDYsIEludFJlY3QoMjAsIDIwLCA1LCA1KSwgMCk7IC8vIEwyMQor
CisgICAgLy8gSW5pdGlhbCBkcmF3IC0gbXVzdCByZWNlaXZlIGFsbCBxdWFkcworICAgIHsKKyAg
ICAgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRhIGZyYW1lOworICAgICAgICBFWFBF
Q1RfVFJVRShteUhvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CisKKyAgICAgICAgLy8g
TXVzdCByZWNlaXZlIDMgcmVuZGVyIHBhc3Nlcy4KKyAgICAgICAgLy8gRm9yIFJvb3QsIHRoZXJl
IGFyZSAyIHF1YWRzOyBmb3IgUzEsIHRoZXJlIGFyZSAzIHF1YWRzOyBmb3IgUzIsIHRoZXJlIGlz
IDEgcXVhZC4KKyAgICAgICAgQVNTRVJUX0VRKDNVLCBmcmFtZS5yZW5kZXJQYXNzZXMuc2l6ZSgp
KTsKKworICAgICAgICBFWFBFQ1RfRVEoMlUsIGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+cXVhZExp
c3QoKS5zaXplKCkpOworICAgICAgICBFWFBFQ1RfRVEoM1UsIGZyYW1lLnJlbmRlclBhc3Nlc1sx
XS0+cXVhZExpc3QoKS5zaXplKCkpOworICAgICAgICBFWFBFQ1RfRVEoMlUsIGZyYW1lLnJlbmRl
clBhc3Nlc1syXS0+cXVhZExpc3QoKS5zaXplKCkpOworCisgICAgICAgIG15SG9zdEltcGwtPmRy
YXdMYXllcnMoZnJhbWUpOworICAgICAgICBteUhvc3RJbXBsLT5kaWREcmF3QWxsTGF5ZXJzKGZy
YW1lKTsKKyAgICB9CisKKyAgICAvLyAiVW5vY2NsdWRlIiBzdXJmYWNlIFMxIGFuZCByZXBlYXQg
ZHJhdy4KKyAgICAvLyBNdXN0IHJlbW92ZSBTMidzIHJlbmRlciBwYXNzIHNpbmNlIGl0J3MgY2Fj
aGVkOworICAgIC8vIE11c3Qga2VlcCBTMSBxdWFkcyBiZWNhdXNlIHRleHR1cmUgY29udGFpbmVk
IGV4dGVybmFsIG9jY2x1c2lvbi4KKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zv
cm0gPSBsYXllclMyUHRyLT50cmFuc2Zvcm0oKTsKKyAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKDE1
MCwgMTUwKTsKKyAgICBsYXllclMyUHRyLT5zZXRUcmFuc2Zvcm0odHJhbnNmb3JtKTsKKyAgICB7
CisgICAgICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSBmcmFtZTsKKyAgICAgICAg
RVhQRUNUX1RSVUUobXlIb3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworCisgICAgICAg
IC8vIE11c3QgcmVjZWl2ZSAyIHJlbmRlciBwYXNzZXMuCisgICAgICAgIC8vIEZvciBSb290LCB0
aGVyZSBhcmUgMiBxdWFkcworICAgICAgICAvLyBGb3IgUzEsIHRoZSBudW1iZXIgb2YgcXVhZHMg
ZGVwZW5kcyBvbiB3aGF0IGdvdCB1bm9jY2x1ZGVkLCBzbyBub3QgYXNzZXJ0ZWQgYmV5b25kIGJl
aW5nIHBvc2l0aXZlLgorICAgICAgICAvLyBGb3IgUzIsIHRoZXJlIGlzIG5vIHJlbmRlciBwYXNz
CisgICAgICAgIEFTU0VSVF9FUSgyVSwgZnJhbWUucmVuZGVyUGFzc2VzLnNpemUoKSk7CisKKyAg
ICAgICAgRVhQRUNUX0dUKGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+cXVhZExpc3QoKS5zaXplKCks
IDBVKTsKKyAgICAgICAgRVhQRUNUX0VRKDJVLCBmcmFtZS5yZW5kZXJQYXNzZXNbMV0tPnF1YWRM
aXN0KCkuc2l6ZSgpKTsKKworICAgICAgICBteUhvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsK
KyAgICAgICAgbXlIb3N0SW1wbC0+ZGlkRHJhd0FsbExheWVycyhmcmFtZSk7CisgICAgfQorCisg
ICAgLy8gIlJlLW9jY2x1ZGUiIHN1cmZhY2UgUzEgYW5kIHJlcGVhdCBkcmF3LgorICAgIC8vIE11
c3QgcmVtb3ZlIFMxJ3MgcmVuZGVyIHBhc3Mgc2luY2UgaXQgaXMgbm93IGF2YWlsYWJsZSBpbiBm
dWxsLgorICAgIC8vIFMyIGhhcyBubyBjaGFuZ2Ugc28gbXVzdCBhbHNvIGJlIHJlbW92ZWQuCisg
ICAgLy8gRklYTUU6IER1ZSB0byBwYXJ0aWFsIHN3YXAsIHRoZSBzY2lzc29yIHJlY3Qgd2lsbCBj
YXVzZSBPY2NsdXNpb25UcmFja2VyCisgICAgLy8gdG8gdGhpbmsgdGhlcmUgaXMgYW4gZXh0ZXJu
YWwgb2NjbHVzaW9uIGluIHRoZSBwcmV2aW91cyBzdGVwLiBUaGVyZWZvcmUsCisgICAgLy8gUzEn
cyByZW5kZXIgcGFzcyB3aWxsIG5vdCBiZSByZW1vdmVkLgorICAgIHRyYW5zZm9ybSA9IGxheWVy
UzJQdHItPnRyYW5zZm9ybSgpOworICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoLTE1LCAtMTUpOwor
ICAgIGxheWVyUzJQdHItPnNldFRyYW5zZm9ybSh0cmFuc2Zvcm0pOworICAgIHsKKyAgICAgICAg
Q0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRhIGZyYW1lOworICAgICAgICBFWFBFQ1RfVFJV
RShteUhvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CisKKyAgICAgICAgLy8gMiBSZW5k
ZXIgcGFzc2VzIC0gUm9vdCBhbmQgUzEuCisgICAgICAgIEFTU0VSVF9FUSgyVSwgZnJhbWUucmVu
ZGVyUGFzc2VzLnNpemUoKSk7CisKKyAgICAgICAgLy8gUmVuZGVyIHBhc3MgZm9yIFMxIGNvbnRh
aW5zIG5vIHF1YWRzIGFzIHRoZSBzY2lzc29yIHJlY3QgaXMgbm93IG9jY2x1ZGVkLgorICAgICAg
ICBFWFBFQ1RfRVEoMFUsIGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+cXVhZExpc3QoKS5zaXplKCkp
OworCisgICAgICAgIC8vIFJvb3QgY29udGFpbnMgUzIgb25seSwgYXMgUzEgZG9lc24ndCBoYXZl
IGFueSBkYW1hZ2UuCisgICAgICAgIEVYUEVDVF9FUSgxVSwgZnJhbWUucmVuZGVyUGFzc2VzWzFd
LT5xdWFkTGlzdCgpLnNpemUoKSk7CisKKyAgICAgICAgbXlIb3N0SW1wbC0+ZHJhd0xheWVycyhm
cmFtZSk7CisgICAgICAgIG15SG9zdEltcGwtPmRpZERyYXdBbGxMYXllcnMoZnJhbWUpOworICAg
IH0KKworfQorCiBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHN1cmZhY2VUZXh0dXJl
Q2FjaGluZykKIHsKICAgICBDQ1NldHRpbmdzOjpzZXRQYXJ0aWFsU3dhcEVuYWJsZWQodHJ1ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRl
c3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNw
cAppbmRleCBjZDdhMzk2YmQwZDc2ZTFhNTJlMzcxMzMzZTRjODRkNTc0ZWYwNTZkLi41MjZhYjRl
NTkwYTAzZTY5NWE3ZmMyMjA2ZmFkYWM3MmRiZDdhMzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAKQEAgLTk3LDcgKzk3LDcgQEAg
c3RhdGljIFBhc3NPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gbWFrZUxheWVyKENDVGlsZWRMYXll
ckltcGwqIHBhcmVudCwgY29uc3QgV2UKIHN0YXRpYyB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZExp
c3QmIHF1YWRMaXN0LCBWZWN0b3I8T3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiA+JiBzaGFyZWRT
dGF0ZUxpc3QsIENDVGlsZWRMYXllckltcGwqIGxheWVyLCBDQ0xheWVySXRlcmF0b3JUeXBlJiBp
dCwgQ0NPY2NsdXNpb25UcmFja2VySW1wbCYgb2NjbHVzaW9uVHJhY2tlcikKIHsKICAgICBvY2Ns
dXNpb25UcmFja2VyLmVudGVyTGF5ZXIoaXQpOwotICAgIENDUXVhZEN1bGxlciBxdWFkQ3VsbGVy
KHF1YWRMaXN0LCBsYXllciwgJm9jY2x1c2lvblRyYWNrZXIsIGZhbHNlKTsKKyAgICBDQ1F1YWRD
dWxsZXIgcXVhZEN1bGxlcihxdWFkTGlzdCwgbGF5ZXIsICZvY2NsdXNpb25UcmFja2VyLCBmYWxz
ZSwgZmFsc2UpOwogICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkUXVhZFN0YXRl
ID0gbGF5ZXItPmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgwKTsKICAgICBib29sIGhhZE1pc3NpbmdU
aWxlcyA9IGZhbHNlOwogICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRR
dWFkU3RhdGUuZ2V0KCksIGhhZE1pc3NpbmdUaWxlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL01vY2tDQ1F1YWRDdWxsZXIuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvTW9ja0NDUXVhZEN1bGxlci5oCmluZGV4IDM4NTUwN2UyYzdjNDFkMmE1OTFm
YmUzMzZkMDg3MjI1MjU5MjljMmMuLjE1Y2IxOWQ2YzgyNmE1NmFhMTBiZDRmZjJmNjhhMDNhMDVm
MTBlNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTW9ja0NDUXVh
ZEN1bGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTW9ja0NDUXVhZEN1
bGxlci5oCkBAIC0yNywyMSArMjcsMTkgQEAKIAogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNs
dWRlICJjYy9DQ0RyYXdRdWFkLmgiCi0jaW5jbHVkZSAiY2MvQ0NRdWFkQ3VsbGVyLmgiCisjaW5j
bHVkZSAiY2MvQ0NRdWFkU2luay5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgTW9ja0NDUXVhZEN1bGxlciA6IHB1YmxpYyBXZWJD
b3JlOjpDQ1F1YWRDdWxsZXIgeworY2xhc3MgTW9ja0NDUXVhZEN1bGxlciA6IHB1YmxpYyBXZWJD
b3JlOjpDQ1F1YWRTaW5rIHsKIHB1YmxpYzoKICAgICBNb2NrQ0NRdWFkQ3VsbGVyKCkKLSAgICAg
ICAgOiBDQ1F1YWRDdWxsZXIobV9xdWFkTGlzdFN0b3JhZ2UsIDAsIDAsIGZhbHNlKQotICAgICAg
ICAsIG1fYWN0aXZlUXVhZExpc3QobV9xdWFkTGlzdFN0b3JhZ2UpCisgICAgICAgIDogbV9hY3Rp
dmVRdWFkTGlzdChtX3F1YWRMaXN0U3RvcmFnZSkKICAgICB7IH0KIAogICAgIGV4cGxpY2l0IE1v
Y2tDQ1F1YWRDdWxsZXIoQ0NRdWFkTGlzdCYgZXh0ZXJuYWxRdWFkTGlzdCkKLSAgICAgICAgOiBD
Q1F1YWRDdWxsZXIoZXh0ZXJuYWxRdWFkTGlzdCwgMCwgMCwgZmFsc2UpCi0gICAgICAgICwgbV9h
Y3RpdmVRdWFkTGlzdChleHRlcm5hbFF1YWRMaXN0KQorICAgICAgICA6IG1fYWN0aXZlUXVhZExp
c3QoZXh0ZXJuYWxRdWFkTGlzdCkKICAgICB7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBhcHBlbmQo
V1RGOjpQYXNzT3duUHRyPFdlYkNvcmU6OkNDRHJhd1F1YWQ+IG5ld1F1YWQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153341</attachid>
            <date>2012-07-19 14:00:46 -0700</date>
            <delta_ts>2012-07-19 14:02:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91537-20120719170045.patch</filename>
            <type>text/plain</type>
            <size>84149</size>
            <attacher>zlieber</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWI0ZWY3Yjg1M2FhYjRh
MTA3ZjZkMjgyMGFlMGEwMDEyOGFlNDBiZS4uNzg1NTYyODNiNTM5NjU2MWYwMGY1YmM0NzI0Y2E4
MjBhOTNkY2M4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMiBAQAorMjAxMi0wNy0xNyAgWmVl
diBMaWViZXIgIDx6bGllYmVyQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIFRl
eHR1cmVzIGRyYXduIGR1cmluZyBvY2NsdXNpb24gYXJlIGluY29ycmVjdGx5IHJlLXVzZWQgd2hl
biB1bm9jY2x1ZGVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTE1MzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBEZXRlY3RpbmcgaWYgYW55IGV4dGVybmFsIG9jY2x1c2lvbiBvY2N1cnMgd2hlbiBkcmF3
aW5nIGEKKyAgICAgICAgdGV4dHVyZS4gSWYgZXh0ZXJuYWwgb2NjbHVzaW9uIGhhcHBlbnMsIHRo
ZSB0ZXh0dXJlIGlzIG1hcmtlZCBhcworICAgICAgICAiaW5jb21wbGV0ZSIgaW4gTGF5ZXJSZW5k
ZXJlckNocm9taXVtLCBhbmQgaXMgbm90IGJlaW5nIGNvbnNpZGVyZWQKKyAgICAgICAgZm9yIHJl
LXVzZS4KKworICAgICAgICBNaW5vciByZWZhY3RvcmluZyBvZiBDQ1F1YWRDdWxsZXIgLSBleHRy
YWN0ZWQgaW50ZXJmYWNlCisgICAgICAgIChDQ1F1YWRTaW5rKSBhbmQgdW5pdGVkIGFwcGVuZCgp
IGFuZCBhcHBlbmRTdXJmYWNlKCkgbWV0aG9kcy4KKworICAgICAgICBBZGRlZCB1bml0IHRlc3Rz
IHRvIHZlcmlmeSB0aGlzIGZpeDsgYWxzbyBhZGRlZCB0ZXN0IHRvIHRyeQorICAgICAgICBjbGlw
cGluZyBpbnN0ZWFkIG9mIG9jY2x1c2lvbi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChMYXllclJlbmRl
cmVyQ2hyb21pdW06OkNhY2hlZFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpDYWNoZWRUZXh0dXJlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpDYWNoZWRUZXh0dXJlOjp+Q2FjaGVkVGV4dHVyZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OkNhY2hlZFRleHR1cmU6Omlz
Q29tcGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpDYWNo
ZWRUZXh0dXJlOjpzZXRJc0NvbXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6Q2FjaGVkVGV4dHVyZTo6Q2FjaGVkVGV4dHVyZSk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZGVjaWRlUmVu
ZGVyUGFzc0FsbG9jYXRpb25zRm9yRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpoYXZlQ2FjaGVkUmVzb3VyY2VzRm9yUmVuZGVyUGFzc0lkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclBhc3NRdWFkKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21p
dW0uaDoKKyAgICAgICAgKExheWVyUmVuZGVyZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NJT1N1cmZhY2VMYXllckltcGw6OmFwcGVuZFF1YWRzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVySW1wbC5oOgor
ICAgICAgICAoQ0NJT1N1cmZhY2VMYXllckltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJJbXBsOjphcHBlbmREZWJ1Z0JvcmRlclF1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyk6CisgICAgICAgIChDQ0xheWVy
SW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNp
b25UcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ojo6dW5vY2NsdWRlZENvbnRlbnRSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ojo6dW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250
ZW50UmVjdCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuaDoKKyAgICAgICAgKENDT2NjbHVzaW9u
VHJhY2tlckJhc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UXVhZEN1bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1F1YWRDdWxsZXI6OkNDUXVhZEN1
bGxlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ1F1YWRDdWxsZXI6OmFwcGVuZCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmg6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKENDUXVhZEN1bGxlcik6CisgICAgICAgIChXZWJDb3JlOjpD
Q1F1YWRDdWxsZXI6On5DQ1F1YWRDdWxsZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NRdWFkQ3Vs
bGVyOjpoYXNFeHRlcm5hbE9jY2x1c2lvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NRdWFkU2luay5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoQ0NRdWFkU2luayk6CisgICAgICAgIChXZWJDb3JlOjpDQ1F1YWRT
aW5rOjp+Q0NRdWFkU2luayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NSZW5kZXJQYXNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzczo6Q0NS
ZW5kZXJQYXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzczo6YXBwZW5kUXVhZHNG
b3JMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3M6OmFwcGVuZFF1YWRzRm9y
UmVuZGVyU3VyZmFjZUxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRl
clBhc3NEcmF3UXVhZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzc0Ry
YXdRdWFkOjpDQ1JlbmRlclBhc3NEcmF3UXVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuaDoKKyAgICAgICAgKENDUmVuZGVy
UGFzc0RyYXdRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzc0RyYXdRdWFkOjpo
YXNFeHRlcm5hbE9jY2x1c2lvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3Vy
ZmFjZTo6Q0NSZW5kZXJTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFj
ZTo6YXBwZW5kUXVhZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUmVuZGVyU3VyZmFjZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1JlbmRlclN1cmZhY2U6OnNldEhhc0V4dGVybmFsT2NjbHVzaW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6aGFzRXh0ZXJuYWxPY2NsdXNpb24pOgorICAgICAgICAo
Q0NSZW5kZXJTdXJmYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1Njcm9sbGJhckxheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1Njcm9sbGJh
ckxheWVySW1wbDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmg6CisgICAgICAgIChDQ1Njcm9sbGJhckxh
eWVySW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xp
ZENvbG9yTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU29saWRDb2xvckxheWVy
SW1wbDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU29saWRDb2xvckxheWVySW1wbC5oOgorICAgICAgICAoQ0NTb2xpZENvbG9yTGF5ZXJJ
bXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVM
YXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlTGF5ZXJJbXBsOjphcHBl
bmRRdWFkcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0
dXJlTGF5ZXJJbXBsLmg6CisgICAgICAgIChDQ1RleHR1cmVMYXllckltcGwpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NUaWxlZExheWVySW1wbDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaDoKKyAgICAg
ICAgKENDVGlsZWRMYXllckltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xh
eWVySW1wbDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVmlkZW9MYXllckltcGwuaDoKKyAgICAgICAgKENDVmlkZW9MYXllckltcGwpOgor
CiAyMDEyLTA3LTE5ICBFcmlrIEFydmlkc3NvbiAgPGFydkBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgV2luZG93IHRvcCBzaG91bGQgbm90IGJlIHJlcGxhY2VhYmxlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCmluZGV4IDVmZDZjNmJiYjc5NThmOGU3N2ExYWFmYjQxNjY1MWE5NzNiMzA0MGIuLjky
MmY0ZThkNzg3NmQ3ZjM3ZDIzOTMyYjcwYzI5ZDliZjM4MTVhMDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDctMTcgIFplZXYgTGllYmVyICA8emxp
ZWJlckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBUZXh0dXJlcyBkcmF3biBk
dXJpbmcgb2NjbHVzaW9uIGFyZSBpbmNvcnJlY3RseSByZS11c2VkIHdoZW4gdW5vY2NsdWRlZC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxNTM3CisK
KyAgICAgICAgQWRkZWQgdW5pdCB0ZXN0cyB0byB0ZXN0IHRleHR1cmUgY2FjaGluZyB3aXRoIGNs
aXBwaW5nIGFuZAorICAgICAgICBvY2NsdXNpb24uIFJlbW92ZWQgc29tZSBtaW5vciBjb2RlIGR1
cGxpY2F0aW9uIHdoZW4gaW5pdGlhbGl6aW5nCisgICAgICAgIGxheWVycyBmb3IgdmFyaW91cyBz
Y2VuYXJpb3MuCisKKyAgICAgICAgTW9ja0NDUXVhZEN1bGxlciBjYW4gbm93IGltcGxlbWVudCBD
Q1F1YWRTaW5rLgorCisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3Bw
OgorICAgICAgICAqIHRlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwOgorICAgICAgICAqIHRlc3Rz
L01vY2tDQ1F1YWRDdWxsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDQ1F1YWRDdWxsZXI6
Ok1vY2tDQ1F1YWRDdWxsZXIpOgorCiAyMDEyLTA3LTE5ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBXZWJWaWV3IGlzIG1pc3NpbmcgaXNTZWxl
Y3Rpb25FZGl0YWJsZSBhbmQgYmFja2dyb3VuZENvbG9yIHdoaWNoIGFyZSB1c2VkIGJ5IGNocm9t
aXVtLWFuZHJvaWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBkYWIzMTQwNzk4MjIzMGI0MDlmMTdmZTZi
YTA4MTUxNjUxOTEwNTVjLi5mNDU4MWQ5ZDE5NmM5NTVlYzc1YTM0ZmI3NGFlNDQ5NWJhODg1MDY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCkBAIC04MzYwLDYgKzgzNjAsNyBAQAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdHlDYWxjdWxhdG9yLmgnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuY3BwJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgnLAorICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZFNpbmsuaCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNw
cCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3Vs
bGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVu
ZGVyUGFzcy5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXgg
NTdlYTk4MTJhNTYzOTQ3ZWY2MzE0OTNiMjdkNjMxOWU3MjExOTE0NS4uZTU2MzdhMGZjYTcwNWRi
ZDFkMWYwNzNhYWQ4MDNhMjZmNzZiZDE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hy
b21pdW0uY3BwCkBAIC0xMzMsNiArMTMzLDI2IEBAIHByb3RlY3RlZDoKIAogfSAvLyBhbm9ueW1v
dXMgbmFtZXNwYWNlCiAKK2NsYXNzIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Q2FjaGVkVGV4dHVy
ZSA6IHB1YmxpYyBDQ1Njb3BlZFRleHR1cmUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENh
Y2hlZFRleHR1cmUpOworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPENhY2hlZFRleHR1
cmU+IGNyZWF0ZShDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIpIHsgcmV0dXJu
IGFkb3B0UHRyKG5ldyBDYWNoZWRUZXh0dXJlKHJlc291cmNlUHJvdmlkZXIpKTsgfQorICAgIHZp
cnR1YWwgfkNhY2hlZFRleHR1cmUoKSB7IH0KKworICAgIGJvb2wgaXNDb21wbGV0ZSgpIGNvbnN0
IHsgcmV0dXJuIG1faXNDb21wbGV0ZTsgfQorICAgIHZvaWQgc2V0SXNDb21wbGV0ZShib29sIGlz
Q29tcGxldGUpIHsgbV9pc0NvbXBsZXRlID0gaXNDb21wbGV0ZTsgfQorCitwcm90ZWN0ZWQ6Cisg
ICAgZXhwbGljaXQgQ2FjaGVkVGV4dHVyZShDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJv
dmlkZXIpCisgICAgICAgIDogQ0NTY29wZWRUZXh0dXJlKHJlc291cmNlUHJvdmlkZXIpCisgICAg
ICAgICwgbV9pc0NvbXBsZXRlKGZhbHNlKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
Ym9vbCBtX2lzQ29tcGxldGU7Cit9OworCiBQYXNzT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1
bT4gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUoQ0NSZW5kZXJlckNsaWVudCogY2xpZW50
LCBDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIsIFRleHR1cmVVcGxvYWRlck9w
dGlvbiB0ZXh0dXJlVXBsb2FkZXJTZXR0aW5nKQogewogICAgIE93blB0cjxMYXllclJlbmRlcmVy
Q2hyb21pdW0+IGxheWVyUmVuZGVyZXIoYWRvcHRQdHIobmV3IExheWVyUmVuZGVyZXJDaHJvbWl1
bShjbGllbnQsIHJlc291cmNlUHJvdmlkZXIsIHRleHR1cmVVcGxvYWRlclNldHRpbmcpKSk7CkBA
IC0zMTksNyArMzM5LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRlY2lkZVJlbmRl
clBhc3NBbGxvY2F0aW9uc0ZvckZyYW1lKGNvbnN0IENDUmVuZGVyUGEKICAgICAgICAgcGFzc2Vz
SW5GcmFtZS5zZXQocmVuZGVyUGFzc2VzSW5EcmF3T3JkZXJbaV0tPmlkKCksIHJlbmRlclBhc3Nl
c0luRHJhd09yZGVyW2ldKTsKIAogICAgIFZlY3RvcjxpbnQ+IHBhc3Nlc1RvRGVsZXRlOwotICAg
IEhhc2hNYXA8aW50LCBPd25QdHI8Q0NTY29wZWRUZXh0dXJlPiA+Ojpjb25zdF9pdGVyYXRvciBw
YXNzSXRlcmF0b3I7CisgICAgSGFzaE1hcDxpbnQsIE93blB0cjxDYWNoZWRUZXh0dXJlPiA+Ojpj
b25zdF9pdGVyYXRvciBwYXNzSXRlcmF0b3I7CiAgICAgZm9yIChwYXNzSXRlcmF0b3IgPSBtX3Jl
bmRlclBhc3NUZXh0dXJlcy5iZWdpbigpOyBwYXNzSXRlcmF0b3IgIT0gbV9yZW5kZXJQYXNzVGV4
dHVyZXMuZW5kKCk7ICsrcGFzc0l0ZXJhdG9yKSB7CiAgICAgICAgIGNvbnN0IENDUmVuZGVyUGFz
cyogcmVuZGVyUGFzc0luRnJhbWUgPSBwYXNzZXNJbkZyYW1lLmdldChwYXNzSXRlcmF0b3ItPmZp
cnN0KTsKICAgICAgICAgaWYgKCFyZW5kZXJQYXNzSW5GcmFtZSkgewpAQCAtMzI5LDcgKzM0OSw3
IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkZWNpZGVSZW5kZXJQYXNzQWxsb2NhdGlv
bnNGb3JGcmFtZShjb25zdCBDQ1JlbmRlclBhCiAKICAgICAgICAgY29uc3QgSW50U2l6ZSYgcmVx
dWlyZWRTaXplID0gcmVuZGVyUGFzc1RleHR1cmVTaXplKHJlbmRlclBhc3NJbkZyYW1lKTsKICAg
ICAgICAgR0MzRGVudW0gcmVxdWlyZWRGb3JtYXQgPSByZW5kZXJQYXNzVGV4dHVyZUZvcm1hdChy
ZW5kZXJQYXNzSW5GcmFtZSk7Ci0gICAgICAgIENDU2NvcGVkVGV4dHVyZSogdGV4dHVyZSA9IHBh
c3NJdGVyYXRvci0+c2Vjb25kLmdldCgpOworICAgICAgICBDYWNoZWRUZXh0dXJlKiB0ZXh0dXJl
ID0gcGFzc0l0ZXJhdG9yLT5zZWNvbmQuZ2V0KCk7CiAgICAgICAgIEFTU0VSVCh0ZXh0dXJlKTsK
IAogICAgICAgICBpZiAodGV4dHVyZS0+aWQoKSAmJiAodGV4dHVyZS0+c2l6ZSgpICE9IHJlcXVp
cmVkU2l6ZSB8fCB0ZXh0dXJlLT5mb3JtYXQoKSAhPSByZXF1aXJlZEZvcm1hdCkpCkBAIC0zNDIs
NyArMzYyLDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRlY2lkZVJlbmRlclBhc3NB
bGxvY2F0aW9uc0ZvckZyYW1lKGNvbnN0IENDUmVuZGVyUGEKIAogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgcmVuZGVyUGFzc2VzSW5EcmF3T3JkZXIuc2l6ZSgpOyArK2kpIHsKICAgICAgICAg
aWYgKCFtX3JlbmRlclBhc3NUZXh0dXJlcy5jb250YWlucyhyZW5kZXJQYXNzZXNJbkRyYXdPcmRl
cltpXS0+aWQoKSkpIHsKLSAgICAgICAgICAgIE93blB0cjxDQ1Njb3BlZFRleHR1cmU+IHRleHR1
cmUgPSBDQ1Njb3BlZFRleHR1cmU6OmNyZWF0ZShtX3Jlc291cmNlUHJvdmlkZXIpOworICAgICAg
ICAgICAgT3duUHRyPENhY2hlZFRleHR1cmU+IHRleHR1cmUgPSBDYWNoZWRUZXh0dXJlOjpjcmVh
dGUobV9yZXNvdXJjZVByb3ZpZGVyKTsKICAgICAgICAgICAgIG1fcmVuZGVyUGFzc1RleHR1cmVz
LnNldChyZW5kZXJQYXNzZXNJbkRyYXdPcmRlcltpXS0+aWQoKSwgdGV4dHVyZS5yZWxlYXNlKCkp
OwogICAgICAgICB9CiAgICAgfQpAQCAtMzUwLDggKzM3MCw4IEBAIHZvaWQgTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpkZWNpZGVSZW5kZXJQYXNzQWxsb2NhdGlvbnNGb3JGcmFtZShjb25zdCBDQ1Jl
bmRlclBhCiAKIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpoYXZlQ2FjaGVkUmVzb3VyY2Vz
Rm9yUmVuZGVyUGFzc0lkKGludCBpZCkgY29uc3QKIHsKLSAgICBDQ1Njb3BlZFRleHR1cmUqIHRl
eHR1cmUgPSBtX3JlbmRlclBhc3NUZXh0dXJlcy5nZXQoaWQpOwotICAgIHJldHVybiB0ZXh0dXJl
ICYmIHRleHR1cmUtPmlkKCk7CisgICAgQ2FjaGVkVGV4dHVyZSogdGV4dHVyZSA9IG1fcmVuZGVy
UGFzc1RleHR1cmVzLmdldChpZCk7CisgICAgcmV0dXJuIHRleHR1cmUgJiYgdGV4dHVyZS0+aWQo
KSAmJiB0ZXh0dXJlLT5pc0NvbXBsZXRlKCk7CiB9CiAKIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpkcmF3RnJhbWUoY29uc3QgQ0NSZW5kZXJQYXNzTGlzdCYgcmVuZGVyUGFzc2VzLCBjb25z
dCBGbG9hdFJlY3QmIHJvb3RTY2lzc29yUmVjdCkKQEAgLTYxMCw3ICs2MzAsNyBAQCBQYXNzT3du
UHRyPENDU2NvcGVkVGV4dHVyZT4gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3QmFja2dyb3Vu
ZEZpbHRlcnMoY29uc3QgQwogCiB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JlbmRl
clBhc3NRdWFkKGNvbnN0IENDUmVuZGVyUGFzc0RyYXdRdWFkKiBxdWFkKQogewotICAgIENDU2Nv
cGVkVGV4dHVyZSogY29udGVudHNUZXh0dXJlID0gbV9yZW5kZXJQYXNzVGV4dHVyZXMuZ2V0KHF1
YWQtPnJlbmRlclBhc3NJZCgpKTsKKyAgICBDYWNoZWRUZXh0dXJlKiBjb250ZW50c1RleHR1cmUg
PSBtX3JlbmRlclBhc3NUZXh0dXJlcy5nZXQocXVhZC0+cmVuZGVyUGFzc0lkKCkpOwogICAgIGlm
ICghY29udGVudHNUZXh0dXJlIHx8ICFjb250ZW50c1RleHR1cmUtPmlkKCkpCiAgICAgICAgIHJl
dHVybjsKIApAQCAtMTQwOSw5ICsxNDI5LDExIEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVt
Ojp1c2VSZW5kZXJQYXNzKGNvbnN0IENDUmVuZGVyUGFzcyogcmVuZGVyUGFzcykKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgQ0NTY29wZWRUZXh0dXJlKiB0ZXh0dXJlID0gbV9y
ZW5kZXJQYXNzVGV4dHVyZXMuZ2V0KHJlbmRlclBhc3MtPmlkKCkpOworICAgIENhY2hlZFRleHR1
cmUqIHRleHR1cmUgPSBtX3JlbmRlclBhc3NUZXh0dXJlcy5nZXQocmVuZGVyUGFzcy0+aWQoKSk7
CiAgICAgQVNTRVJUKHRleHR1cmUpOwogCisgICAgdGV4dHVyZS0+c2V0SXNDb21wbGV0ZSghcmVu
ZGVyUGFzcy0+aGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKCkpOworCiAgICAg
aWYgKCF0ZXh0dXJlLT5pZCgpICYmICF0ZXh0dXJlLT5hbGxvY2F0ZShDQ1JlbmRlcmVyOjpJbXBs
UG9vbCwgcmVuZGVyUGFzc1RleHR1cmVTaXplKHJlbmRlclBhc3MpLCByZW5kZXJQYXNzVGV4dHVy
ZUZvcm1hdChyZW5kZXJQYXNzKSwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpUZXh0dXJlVXNhZ2VGcmFt
ZWJ1ZmZlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVy
Q2hyb21pdW0uaAppbmRleCBjZDViMmNjMmIyOTIxNWNlMWVmNDYyNGM0ZWIxY2Y0ODQ4YmM5Mjg3
Li4xOThhZWY5YTM0MzkxNDIyY2Y0YjRmZTI2NDE4ZDc2ZGM0NTFhMDUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hy
b21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclJlbmRlcmVyQ2hyb21pdW0uaApAQCAtMTgyLDYgKzE4Miw4IEBAIHByaXZhdGU6CiAgICAg
T3duUHRyPEdlb21ldHJ5QmluZGluZz4gbV9zaGFyZWRHZW9tZXRyeTsKICAgICBGbG9hdFF1YWQg
bV9zaGFyZWRHZW9tZXRyeVF1YWQ7CiAKKyAgICBjbGFzcyBDYWNoZWRUZXh0dXJlOworCiAgICAg
Ly8gVGhpcyBibG9jayBvZiBiaW5kaW5ncyBkZWZpbmVzIGFsbCBvZiB0aGUgcHJvZ3JhbXMgdXNl
ZCBieSB0aGUgY29tcG9zaXRvciBpdHNlbGYuCiAKICAgICAvLyBUaWxlZCBsYXllciBzaGFkZXJz
LgpAQCAtMjY2LDcgKzI2OCw3IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPEFjY2VsZXJhdGVkVGV4
dHVyZUNvcGllcj4gbV90ZXh0dXJlQ29waWVyOwogICAgIE93blB0cjxUZXh0dXJlVXBsb2FkZXI+
IG1fdGV4dHVyZVVwbG9hZGVyOwogCi0gICAgSGFzaE1hcDxpbnQsIE93blB0cjxDQ1Njb3BlZFRl
eHR1cmU+ID4gbV9yZW5kZXJQYXNzVGV4dHVyZXM7CisgICAgSGFzaE1hcDxpbnQsIE93blB0cjxD
YWNoZWRUZXh0dXJlPiA+IG1fcmVuZGVyUGFzc1RleHR1cmVzOwogCiAgICAgV2ViS2l0OjpXZWJH
cmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVySW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFj
ZUxheWVySW1wbC5jcHAKaW5kZXggNmRhYzJlN2E3NzI5M2FhODY4NTk0NzEyZjBiMTM4MzdhOWUy
YzczYi4uNDczZGUyNTliOGVhZWFiZGVkOWQ2ZWJlZjk3YjdjNDI2NWQxY2JkMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZh
Y2VMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmNwcApAQCAtMzUsNyArMzUsNyBAQAogI2lu
Y2x1ZGUgImNjL0NDR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiY2MvQ0NJT1N1cmZhY2VE
cmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKLSNpbmNsdWRl
ICJjYy9DQ1F1YWRDdWxsZXIuaCIKKyNpbmNsdWRlICJjYy9DQ1F1YWRTaW5rLmgiCiAjaW5jbHVk
ZSA8cHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBDQ0lPU3VyZmFjZUxheWVySW1wbDo6d2lsbERyYXcoQ0NS
ZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQogICAgIH0KIH0KIAotdm9pZCBDQ0lP
U3VyZmFjZUxheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29u
c3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCYpCit2b2lkIENDSU9T
dXJmYWNlTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkTGlzdCwgY29uc3Qg
Q0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCYpCiB7CiAgICAgSW50UmVj
dCBxdWFkUmVjdChJbnRQb2ludCgpLCBjb250ZW50Qm91bmRzKCkpOwogICAgIHF1YWRMaXN0LmFw
cGVuZChDQ0lPU3VyZmFjZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVj
dCwgbV9pb1N1cmZhY2VTaXplLCBtX2lvU3VyZmFjZVRleHR1cmVJZCwgQ0NJT1N1cmZhY2VEcmF3
UXVhZDo6RmxpcHBlZCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmgKaW5k
ZXggNDIzNjg4MDljMTM0MzZjMDZhNGI3MjA0YWVkMTRiY2JmZTlhYzQ0NS4uMDE4ODA0ZTE4MmNl
YjAxNTAwY2JlNzU4NmUxNGUxNmZmZGUxMzkxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFj
ZUxheWVySW1wbC5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0SU9T
dXJmYWNlUHJvcGVydGllcyh1bnNpZ25lZCBpb1N1cmZhY2VJZCwgY29uc3QgSW50U2l6ZSYpOwog
Ci0gICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYsIGNvbnN0IENDU2hh
cmVkUXVhZFN0YXRlKiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRl
KiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCB3
aWxsRHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkTG9zZUNvbnRleHQoKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAppbmRleCBk
YjI0YzA3ZTQ1YTljZmViMTc4NDhjMWRjYTM1YTE2ZTdjNDU1OWFkLi43MTdkOTZkMTAxNmY1ZjY3
MzY5NzIxNzYyNjM3NDlmMjkwZDNiMTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCkBAIC0z
NSw3ICszNSw3IEBACiAjaW5jbHVkZSAiY2MvQ0NMYXllclNvcnRlci5oIgogI2luY2x1ZGUgImNj
L0NDTWF0aFV0aWwuaCIKICNpbmNsdWRlICJjYy9DQ1Byb3h5LmgiCi0jaW5jbHVkZSAiY2MvQ0NR
dWFkQ3VsbGVyLmgiCisjaW5jbHVkZSAiY2MvQ0NRdWFkU2luay5oIgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCiB1c2luZyBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4
OwpAQCAtMTc0LDcgKzE3NCw3IEBAIHZvaWQgQ0NMYXllckltcGw6OmRpZERyYXcoQ0NSZXNvdXJj
ZVByb3ZpZGVyKikKICNlbmRpZgogfQogCi12b2lkIENDTGF5ZXJJbXBsOjphcHBlbmREZWJ1Z0Jv
cmRlclF1YWQoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUq
IHNoYXJlZFF1YWRTdGF0ZSkgY29uc3QKK3ZvaWQgQ0NMYXllckltcGw6OmFwcGVuZERlYnVnQm9y
ZGVyUXVhZChDQ1F1YWRTaW5rJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNo
YXJlZFF1YWRTdGF0ZSkgY29uc3QKIHsKICAgICBpZiAoIWhhc0RlYnVnQm9yZGVycygpKQogICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaAppbmRleCA3MWU5M2M1NzQ1ODA2NmE0Nzc1
ODQzNGU1ZDg5OGI0MmZmNjQ2MzNkLi42MTk2YzJjNGQ1MDlmOGNhMTY3NGQzMjZjMWIyYzllNWRh
NjU1MzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKQEAgLTQ3LDggKzQ3LDggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBDQ0xheWVyU29ydGVyOwogY2xhc3MgQ0NMYXllclRyZWVIb3N0
SW1wbDsKLWNsYXNzIENDUXVhZEN1bGxlcjsKIGNsYXNzIENDUmVuZGVyZXI7CitjbGFzcyBDQ1F1
YWRTaW5rOwogY2xhc3MgTGF5ZXJDaHJvbWl1bTsKIAogY2xhc3MgQ0NMYXllckltcGwgOiBwdWJs
aWMgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJDbGllbnQgewpAQCAtOTMsOSArOTMsOSBAQCBw
dWJsaWM6CiAgICAgLy8gdGhlIGxheWVyIGlzIGRlc3Ryb3llZC4gVG8gZW5mb3JjZSB0aGlzLCBh
bnkgY2xhc3MgdGhhdCBvdmVycmlkZXMKICAgICAvLyB3aWxsRHJhdy9kaWREcmF3IG11c3QgY2Fs
bCB0aGUgYmFzZSBjbGFzcyB2ZXJzaW9uLgogICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhDQ1Jl
c291cmNlUHJvdmlkZXIqKTsKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3Vs
bGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiwgY29uc3QgQ0NTaGFy
ZWRRdWFkU3RhdGUqLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBkaWREcmF3KENDUmVzb3VyY2VQcm92aWRlciopOwotICAgIHZvaWQgYXBwZW5kRGVidWdCb3Jk
ZXJRdWFkKENDUXVhZEN1bGxlciYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKikgY29uc3Q7Cisg
ICAgdm9pZCBhcHBlbmREZWJ1Z0JvcmRlclF1YWQoQ0NRdWFkU2luayYsIGNvbnN0IENDU2hhcmVk
UXVhZFN0YXRlKikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIENDUmVzb3VyY2VQcm92aWRlcjo6UmVz
b3VyY2VJZCBjb250ZW50c1Jlc291cmNlSWQoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1w
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3RJbXBsLmNwcAppbmRleCA2ZTc5MTRhNzQyNDAzNzQ3MmU5OWVkNTcwMTkwZjgw
MzQ3YzY2ZDA3Li43ZjEyNDA0MzJiOTc4NjIzZjIzYTRiMjBiMDExOTVjMDhjNTI5Y2JmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3RJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtMzI4LDExICszMjgsMTYg
QEAgYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMoRnJhbWVE
YXRhJiBmcmFtZSkKICAgICAgICAgaWYgKGl0LnJlcHJlc2VudHNDb250cmlidXRpbmdSZW5kZXJT
dXJmYWNlKCkgJiYgIWl0LT5yZW5kZXJTdXJmYWNlKCktPnNjaXNzb3JSZWN0KCkuaXNFbXB0eSgp
KSB7CiAgICAgICAgICAgICBDQ1JlbmRlclBhc3MqIGNvbnRyaWJ1dGluZ1JlbmRlclBhc3MgPSBz
dXJmYWNlUGFzc01hcC5nZXQoaXQtPnJlbmRlclN1cmZhY2UoKSk7CiAgICAgICAgICAgICBwYXNz
LT5hcHBlbmRRdWFkc0ZvclJlbmRlclN1cmZhY2VMYXllcigqaXQsIGNvbnRyaWJ1dGluZ1JlbmRl
clBhc3MsICZvY2NsdXNpb25UcmFja2VyKTsKLSAgICAgICAgfSBlbHNlIGlmIChpdC5yZXByZXNl
bnRzSXRzZWxmKCkgJiYgIW9jY2x1c2lvblRyYWNrZXIub2NjbHVkZWQoKml0LCBpdC0+dmlzaWJs
ZUNvbnRlbnRSZWN0KCkpICYmICFpdC0+dmlzaWJsZUNvbnRlbnRSZWN0KCkuaXNFbXB0eSgpICYm
ICFpdC0+c2Npc3NvclJlY3QoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGl0LT53aWxsRHJh
dyhtX3Jlc291cmNlUHJvdmlkZXIuZ2V0KCkpOwotICAgICAgICAgICAgZnJhbWUud2lsbERyYXdM
YXllcnMuYXBwZW5kKCppdCk7Ci0KLSAgICAgICAgICAgIHBhc3MtPmFwcGVuZFF1YWRzRm9yTGF5
ZXIoKml0LCAmb2NjbHVzaW9uVHJhY2tlciwgaGFkTWlzc2luZ1RpbGVzKTsKKyAgICAgICAgfSBl
bHNlIGlmIChpdC5yZXByZXNlbnRzSXRzZWxmKCkgJiYgIWl0LT52aXNpYmxlQ29udGVudFJlY3Qo
KS5pc0VtcHR5KCkgJiYgIWl0LT5zY2lzc29yUmVjdCgpLmlzRW1wdHkoKSkgeworICAgICAgICAg
ICAgYm9vbCBoYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2U7CisgICAgICAgICAg
ICBpZiAob2NjbHVzaW9uVHJhY2tlci5vY2NsdWRlZCgqaXQsIGl0LT52aXNpYmxlQ29udGVudFJl
Y3QoKSwgJmhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSkpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKQorICAgICAg
ICAgICAgICAgICAgICBwYXNzLT5zZXRIYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZh
Y2UoaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgaXQtPndpbGxEcmF3KG1fcmVzb3VyY2VQcm92aWRlci5n
ZXQoKSk7CisgICAgICAgICAgICAgICAgZnJhbWUud2lsbERyYXdMYXllcnMuYXBwZW5kKCppdCk7
CisgICAgICAgICAgICAgICAgcGFzcy0+YXBwZW5kUXVhZHNGb3JMYXllcigqaXQsICZvY2NsdXNp
b25UcmFja2VyLCBoYWRNaXNzaW5nVGlsZXMpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAK
ICAgICAgICAgaWYgKGhhZE1pc3NpbmdUaWxlcykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9u
VHJhY2tlci5jcHAKaW5kZXggMGQwMTU5M2NmODczYmU2NzJkMzdhZTc3OGI0OGY3Y2E3ZDE5OWUy
ZC4uMDA4M2FkMWRkNDJiOTQ4NzI4NTg3ZmZjMjFlZjlmOGY5ODY2YjZlYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25U
cmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuY3BwCkBAIC0zNzcsOCArMzc3LDExIEBAIHN0YXRpYyBp
bmxpbmUgYm9vbCB0ZXN0Q29udGVudFJlY3RPY2NsdWRlZChjb25zdCBJbnRSZWN0JiBjb250ZW50
UmVjdCwgY29uc3QgV2ViCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5h
bWUgUmVuZGVyU3VyZmFjZVR5cGU+Ci1ib29sIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJU
eXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46Om9jY2x1ZGVkKGNvbnN0IExheWVyVHlwZSogbGF5ZXIs
IGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KSBjb25zdAorYm9vbCBDQ09jY2x1c2lvblRyYWNr
ZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+OjpvY2NsdWRlZChjb25zdCBMYXll
clR5cGUqIGxheWVyLCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgYm9vbCogaGFzT2NjbHVz
aW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKSBjb25zdAogeworICAgIGlmIChoYXNPY2NsdXNp
b25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UpCisgICAgICAgICpoYXNPY2NsdXNpb25Gcm9tT3V0
c2lkZVRhcmdldFN1cmZhY2UgPSBmYWxzZTsKKwogICAgIEFTU0VSVCghbV9zdGFjay5pc0VtcHR5
KCkpOwogICAgIGlmIChtX3N0YWNrLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtMzg3LDEwICszOTAsMTUgQEAgYm9vbCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlw
ZSwgUmVuZGVyU3VyZmFjZVR5cGU+OjpvY2NsdWRlZChjb25zdCBMYXllclQKIAogICAgIEFTU0VS
VChsYXllci0+cmVuZGVyVGFyZ2V0KCkgPT0gbV9zdGFjay5sYXN0KCkudGFyZ2V0KTsKIAotICAg
IGlmIChsYXllclRyYW5zZm9ybXNUb1NjcmVlbktub3duKGxheWVyKSAmJiB0ZXN0Q29udGVudFJl
Y3RPY2NsdWRlZChjb250ZW50UmVjdCwgY29udGVudFRvU2NyZWVuU3BhY2VUcmFuc2Zvcm08TGF5
ZXJUeXBlPihsYXllciksIG1fc2Npc3NvclJlY3RJblNjcmVlblNwYWNlLCBtX3N0YWNrLmxhc3Qo
KS5vY2NsdXNpb25JblNjcmVlbikpCi0gICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmIChsYXll
clRyYW5zZm9ybXNUb1RhcmdldEtub3duKGxheWVyKSAmJiB0ZXN0Q29udGVudFJlY3RPY2NsdWRl
ZChjb250ZW50UmVjdCwgY29udGVudFRvVGFyZ2V0U3VyZmFjZVRyYW5zZm9ybTxMYXllclR5cGU+
KGxheWVyKSwgbGF5ZXJTY2lzc29yUmVjdEluVGFyZ2V0U3VyZmFjZShsYXllciksIG1fc3RhY2su
bGFzdCgpLm9jY2x1c2lvbkluVGFyZ2V0KSkKICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBp
ZiAobGF5ZXJUcmFuc2Zvcm1zVG9TY3JlZW5Lbm93bihsYXllcikgJiYgdGVzdENvbnRlbnRSZWN0
T2NjbHVkZWQoY29udGVudFJlY3QsIGNvbnRlbnRUb1NjcmVlblNwYWNlVHJhbnNmb3JtPExheWVy
VHlwZT4obGF5ZXIpLCBtX3NjaXNzb3JSZWN0SW5TY3JlZW5TcGFjZSwgbV9zdGFjay5sYXN0KCku
b2NjbHVzaW9uSW5TY3JlZW4pKSB7CisgICAgICAgIGlmIChoYXNPY2NsdXNpb25Gcm9tT3V0c2lk
ZVRhcmdldFN1cmZhY2UpCisgICAgICAgICAgICAqaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJn
ZXRTdXJmYWNlID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCkBAIC00MTcsNyArNDI1LDcgQEAgc3RhdGljIGlubGluZSBJbnRSZWN0
IGNvbXB1dGVVbm9jY2x1ZGVkQ29udGVudFJlY3QoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3Qs
IGMKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJm
YWNlVHlwZT4KLUludFJlY3QgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRl
clN1cmZhY2VUeXBlPjo6dW5vY2NsdWRlZENvbnRlbnRSZWN0KGNvbnN0IExheWVyVHlwZSogbGF5
ZXIsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KSBjb25zdAorSW50UmVjdCBDQ09jY2x1c2lv
blRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+Ojp1bm9jY2x1ZGVkQ29u
dGVudFJlY3QoY29uc3QgTGF5ZXJUeXBlKiBsYXllciwgY29uc3QgSW50UmVjdCYgY29udGVudFJl
Y3QsIGJvb2wqIGhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSkgY29uc3QKIHsK
ICAgICBBU1NFUlQoIW1fc3RhY2suaXNFbXB0eSgpKTsKICAgICBpZiAobV9zdGFjay5pc0VtcHR5
KCkpCkBAIC00MzQsMTggKzQ0MiwxOCBAQCBJbnRSZWN0IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8
TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46OnVub2NjbHVkZWRDb250ZW50UgogICAgIGlm
IChsYXllclRyYW5zZm9ybXNUb1NjcmVlbktub3duKGxheWVyKSkKICAgICAgICAgdW5vY2NsdWRl
ZEluU2NyZWVuID0gY29tcHV0ZVVub2NjbHVkZWRDb250ZW50UmVjdChjb250ZW50UmVjdCwgY29u
dGVudFRvU2NyZWVuU3BhY2VUcmFuc2Zvcm08TGF5ZXJUeXBlPihsYXllciksIG1fc2Npc3NvclJl
Y3RJblNjcmVlblNwYWNlLCBtX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblNjcmVlbik7CiAKLSAg
ICBpZiAodW5vY2NsdWRlZEluU2NyZWVuLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHVub2Nj
bHVkZWRJblNjcmVlbjsKLQogICAgIEludFJlY3QgdW5vY2NsdWRlZEluVGFyZ2V0ID0gY29udGVu
dFJlY3Q7CiAgICAgaWYgKGxheWVyVHJhbnNmb3Jtc1RvVGFyZ2V0S25vd24obGF5ZXIpKQogICAg
ICAgICB1bm9jY2x1ZGVkSW5UYXJnZXQgPSBjb21wdXRlVW5vY2NsdWRlZENvbnRlbnRSZWN0KGNv
bnRlbnRSZWN0LCBjb250ZW50VG9UYXJnZXRTdXJmYWNlVHJhbnNmb3JtPExheWVyVHlwZT4obGF5
ZXIpLCBsYXllclNjaXNzb3JSZWN0SW5UYXJnZXRTdXJmYWNlKGxheWVyKSwgbV9zdGFjay5sYXN0
KCkub2NjbHVzaW9uSW5UYXJnZXQpOwogCisgICAgaWYgKGhhc09jY2x1c2lvbkZyb21PdXRzaWRl
VGFyZ2V0U3VyZmFjZSkKKyAgICAgICAgKmhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3Vy
ZmFjZSA9IChpbnRlcnNlY3Rpb24odW5vY2NsdWRlZEluU2NyZWVuLCB1bm9jY2x1ZGVkSW5UYXJn
ZXQpICE9IHVub2NjbHVkZWRJblRhcmdldCk7CisKICAgICByZXR1cm4gaW50ZXJzZWN0aW9uKHVu
b2NjbHVkZWRJblNjcmVlbiwgdW5vY2NsdWRlZEluVGFyZ2V0KTsKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZT4KLUludFJlY3QgQ0NP
Y2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6dW5vY2Ns
dWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChjb25zdCBMYXllclR5cGUqIGxheWVy
LCBib29sIGZvclJlcGxpY2EsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KSBjb25zdAorSW50
UmVjdCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+
Ojp1bm9jY2x1ZGVkQ29udHJpYnV0aW5nU3VyZmFjZUNvbnRlbnRSZWN0KGNvbnN0IExheWVyVHlw
ZSogbGF5ZXIsIGJvb2wgZm9yUmVwbGljYSwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGJv
b2wqIGhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSkgY29uc3QKIHsKICAgICBB
U1NFUlQoIW1fc3RhY2suaXNFbXB0eSgpKTsKICAgICAvLyBUaGUgbGF5ZXIgaXMgYSBjb250cmli
dXRpbmcgcmVuZGVyVGFyZ2V0IHNvIGl0IHNob3VsZCBoYXZlIGEgc3VyZmFjZS4KQEAgLTQ4NCw5
ICs0OTIsNiBAQCBJbnRSZWN0IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5k
ZXJTdXJmYWNlVHlwZT46OnVub2NjbHVkZWRDb250cmlidQogICAgICAgICAgICAgdW5vY2NsdWRl
ZEluU2NyZWVuID0gY29tcHV0ZVVub2NjbHVkZWRDb250ZW50UmVjdChjb250ZW50UmVjdCwgdHJh
bnNmb3JtVG9TY3JlZW4sIG1fc2Npc3NvclJlY3RJblNjcmVlblNwYWNlLCBSZWdpb24oKSk7CiAg
ICAgfQogCi0gICAgaWYgKHVub2NjbHVkZWRJblNjcmVlbi5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybiB1bm9jY2x1ZGVkSW5TY3JlZW47Ci0KICAgICBJbnRSZWN0IHVub2NjbHVkZWRJblRhcmdl
dCA9IGNvbnRlbnRSZWN0OwogICAgIGlmIChzdXJmYWNlVHJhbnNmb3Jtc1RvVGFyZ2V0S25vd24o
c3VyZmFjZSkpIHsKICAgICAgICAgaWYgKGhhc09jY2x1c2lvbikgewpAQCAtNDk2LDYgKzUwMSw5
IEBAIEludFJlY3QgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZh
Y2VUeXBlPjo6dW5vY2NsdWRlZENvbnRyaWJ1CiAgICAgICAgICAgICB1bm9jY2x1ZGVkSW5UYXJn
ZXQgPSBjb21wdXRlVW5vY2NsdWRlZENvbnRlbnRSZWN0KGNvbnRlbnRSZWN0LCB0cmFuc2Zvcm1U
b1RhcmdldCwgc3VyZmFjZUNsaXBSZWN0LCBSZWdpb24oKSk7CiAgICAgfQogCisgICAgaWYgKGhh
c09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSkKKyAgICAgICAgKmhhc09jY2x1c2lv
bkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSA9IChpbnRlcnNlY3Rpb24odW5vY2NsdWRlZEluU2Ny
ZWVuLCB1bm9jY2x1ZGVkSW5UYXJnZXQpICE9IHVub2NjbHVkZWRJblRhcmdldCk7CisKICAgICBy
ZXR1cm4gaW50ZXJzZWN0aW9uKHVub2NjbHVkZWRJblNjcmVlbiwgdW5vY2NsdWRlZEluVGFyZ2V0
KTsKIH0KIApAQCAtNTE3LDkgKzUyNSw5IEBAIHRlbXBsYXRlIHZvaWQgQ0NPY2NsdXNpb25UcmFj
a2VyQmFzZTxMYXllckNocm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+OjplbnRlCiB0ZW1w
bGF0ZSB2b2lkIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3Vy
ZmFjZUNocm9taXVtPjo6ZmluaXNoZWRSZW5kZXJUYXJnZXQoY29uc3QgTGF5ZXJDaHJvbWl1bSog
ZmluaXNoZWRUYXJnZXQpOwogdGVtcGxhdGUgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExh
eWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1bT46OmxlYXZlVG9SZW5kZXJUYXJnZXQo
Y29uc3QgTGF5ZXJDaHJvbWl1bSogbmV3VGFyZ2V0KTsKIHRlbXBsYXRlIHZvaWQgQ0NPY2NsdXNp
b25UcmFja2VyQmFzZTxMYXllckNocm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+OjptYXJr
T2NjbHVkZWRCZWhpbmRMYXllcihjb25zdCBMYXllckNocm9taXVtKik7Ci10ZW1wbGF0ZSBib29s
IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9t
aXVtPjo6b2NjbHVkZWQoY29uc3QgTGF5ZXJDaHJvbWl1bSosIGNvbnN0IEludFJlY3QmIGNvbnRl
bnRSZWN0KSBjb25zdDsKLXRlbXBsYXRlIEludFJlY3QgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxM
YXllckNocm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+Ojp1bm9jY2x1ZGVkQ29udGVudFJl
Y3QoY29uc3QgTGF5ZXJDaHJvbWl1bSosIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KSBjb25z
dDsKLXRlbXBsYXRlIEludFJlY3QgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllckNocm9taXVt
LCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+Ojp1bm9jY2x1ZGVkQ29udHJpYnV0aW5nU3VyZmFjZUNv
bnRlbnRSZWN0KGNvbnN0IExheWVyQ2hyb21pdW0qLCBib29sIGZvclJlcGxpY2EsIGNvbnN0IElu
dFJlY3QmIGNvbnRlbnRSZWN0KSBjb25zdDsKK3RlbXBsYXRlIGJvb2wgQ0NPY2NsdXNpb25UcmFj
a2VyQmFzZTxMYXllckNocm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+OjpvY2NsdWRlZChj
b25zdCBMYXllckNocm9taXVtKiwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGJvb2wqIGhh
c09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSkgY29uc3Q7Cit0ZW1wbGF0ZSBJbnRS
ZWN0IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNo
cm9taXVtPjo6dW5vY2NsdWRlZENvbnRlbnRSZWN0KGNvbnN0IExheWVyQ2hyb21pdW0qLCBjb25z
dCBJbnRSZWN0JiBjb250ZW50UmVjdCwgYm9vbCogaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJn
ZXRTdXJmYWNlKSBjb25zdDsKK3RlbXBsYXRlIEludFJlY3QgQ0NPY2NsdXNpb25UcmFja2VyQmFz
ZTxMYXllckNocm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+Ojp1bm9jY2x1ZGVkQ29udHJp
YnV0aW5nU3VyZmFjZUNvbnRlbnRSZWN0KGNvbnN0IExheWVyQ2hyb21pdW0qLCBib29sIGZvclJl
cGxpY2EsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBib29sKiBoYXNPY2NsdXNpb25Gcm9t
T3V0c2lkZVRhcmdldFN1cmZhY2UpIGNvbnN0OwogdGVtcGxhdGUgSW50UmVjdCBDQ09jY2x1c2lv
blRyYWNrZXJCYXNlPExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1bT46OmxheWVy
U2Npc3NvclJlY3RJblRhcmdldFN1cmZhY2UoY29uc3QgTGF5ZXJDaHJvbWl1bSopIGNvbnN0Owog
CiB0ZW1wbGF0ZSBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPENDTGF5ZXJJbXBsLCBDQ1JlbmRlclN1
cmZhY2U+OjpDQ09jY2x1c2lvblRyYWNrZXJCYXNlKEludFJlY3Qgc2Npc3NvclJlY3RJblNjcmVl
blNwYWNlLCBib29sIHJlY29yZE1ldHJpY3NGb3JGcmFtZSk7CkBAIC01MjksOSArNTM3LDkgQEAg
dGVtcGxhdGUgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPENDTGF5ZXJJbXBsLCBDQ1JlbmRl
clN1cmZhY2U+OjplbnRlclJlbmRlclQKIHRlbXBsYXRlIHZvaWQgQ0NPY2NsdXNpb25UcmFja2Vy
QmFzZTxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlPjo6ZmluaXNoZWRSZW5kZXJUYXJnZXQo
Y29uc3QgQ0NMYXllckltcGwqIGZpbmlzaGVkVGFyZ2V0KTsKIHRlbXBsYXRlIHZvaWQgQ0NPY2Ns
dXNpb25UcmFja2VyQmFzZTxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlPjo6bGVhdmVUb1Jl
bmRlclRhcmdldChjb25zdCBDQ0xheWVySW1wbCogbmV3VGFyZ2V0KTsKIHRlbXBsYXRlIHZvaWQg
Q0NPY2NsdXNpb25UcmFja2VyQmFzZTxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlPjo6bWFy
a09jY2x1ZGVkQmVoaW5kTGF5ZXIoY29uc3QgQ0NMYXllckltcGwqKTsKLXRlbXBsYXRlIGJvb2wg
Q0NPY2NsdXNpb25UcmFja2VyQmFzZTxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlPjo6b2Nj
bHVkZWQoY29uc3QgQ0NMYXllckltcGwqLCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkgY29u
c3Q7Ci10ZW1wbGF0ZSBJbnRSZWN0IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8Q0NMYXllckltcGws
IENDUmVuZGVyU3VyZmFjZT46OnVub2NjbHVkZWRDb250ZW50UmVjdChjb25zdCBDQ0xheWVySW1w
bCosIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KSBjb25zdDsKLXRlbXBsYXRlIEludFJlY3Qg
Q0NPY2NsdXNpb25UcmFja2VyQmFzZTxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlPjo6dW5v
Y2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChjb25zdCBDQ0xheWVySW1wbCos
IGJvb2wgZm9yUmVwbGljYSwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpIGNvbnN0OwordGVt
cGxhdGUgYm9vbCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPENDTGF5ZXJJbXBsLCBDQ1JlbmRlclN1
cmZhY2U+OjpvY2NsdWRlZChjb25zdCBDQ0xheWVySW1wbCosIGNvbnN0IEludFJlY3QmIGNvbnRl
bnRSZWN0LCBib29sKiBoYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UpIGNvbnN0
OwordGVtcGxhdGUgSW50UmVjdCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPENDTGF5ZXJJbXBsLCBD
Q1JlbmRlclN1cmZhY2U+Ojp1bm9jY2x1ZGVkQ29udGVudFJlY3QoY29uc3QgQ0NMYXllckltcGwq
LCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgYm9vbCogaGFzT2NjbHVzaW9uRnJvbU91dHNp
ZGVUYXJnZXRTdXJmYWNlKSBjb25zdDsKK3RlbXBsYXRlIEludFJlY3QgQ0NPY2NsdXNpb25UcmFj
a2VyQmFzZTxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlPjo6dW5vY2NsdWRlZENvbnRyaWJ1
dGluZ1N1cmZhY2VDb250ZW50UmVjdChjb25zdCBDQ0xheWVySW1wbCosIGJvb2wgZm9yUmVwbGlj
YSwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGJvb2wqIGhhc09jY2x1c2lvbkZyb21PdXRz
aWRlVGFyZ2V0U3VyZmFjZSkgY29uc3Q7CiB0ZW1wbGF0ZSBJbnRSZWN0IENDT2NjbHVzaW9uVHJh
Y2tlckJhc2U8Q0NMYXllckltcGwsIENDUmVuZGVyU3VyZmFjZT46OmxheWVyU2Npc3NvclJlY3RJ
blRhcmdldFN1cmZhY2UoY29uc3QgQ0NMYXllckltcGwqKSBjb25zdDsKIAogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lv
blRyYWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDT2NjbHVzaW9uVHJhY2tlci5oCmluZGV4IGFlODU3NTFlYTFmODEyZWFiNWI0NGU1MDBmYzVh
ODhiOTdiZmZjNTEuLmE2MDFiNmQzOTUxYTE0ZmViM2FlZDMzMWM1NTQzOWI2MDdkOTQ3NGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
T2NjbHVzaW9uVHJhY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5oCkBAIC01NCwxMyArNTQsMTMgQEAgcHVi
bGljOgogICAgIHZvaWQgbGVhdmVMYXllcihjb25zdCBDQ0xheWVySXRlcmF0b3JQb3NpdGlvbjxM
YXllclR5cGU+Jik7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIHJlY3QgaW4g
Y29udGVudCBzcGFjZSBmb3IgdGhlIGxheWVyIGlzIGZ1bGx5IG9jY2x1ZGVkIGluIGVpdGhlciBz
Y3JlZW4gc3BhY2Ugb3IgdGhlIGxheWVyJ3MgdGFyZ2V0IHN1cmZhY2UuCi0gICAgYm9vbCBvY2Ns
dWRlZChjb25zdCBMYXllclR5cGUqLCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkgY29uc3Q7
CisgICAgYm9vbCBvY2NsdWRlZChjb25zdCBMYXllclR5cGUqLCBjb25zdCBJbnRSZWN0JiBjb250
ZW50UmVjdCwgYm9vbCogaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlID0gMCkg
Y29uc3Q7CiAgICAgLy8gR2l2ZXMgYW4gdW5vY2NsdWRlZCBzdWItcmVjdCBvZiB8Y29udGVudFJl
Y3R8IGluIHRoZSBjb250ZW50IHNwYWNlIG9mIHRoZSBsYXllci4gVXNlZCB3aGVuIGNvbnNpZGVy
aW5nIG9jY2x1c2lvbiBmb3IgYSBsYXllciB0aGF0IHBhaW50cy9kcmF3cyBzb21ldGhpbmcuCi0g
ICAgSW50UmVjdCB1bm9jY2x1ZGVkQ29udGVudFJlY3QoY29uc3QgTGF5ZXJUeXBlKiwgY29uc3Qg
SW50UmVjdCYgY29udGVudFJlY3QpIGNvbnN0OworICAgIEludFJlY3QgdW5vY2NsdWRlZENvbnRl
bnRSZWN0KGNvbnN0IExheWVyVHlwZSosIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBib29s
KiBoYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UgPSAwKSBjb25zdDsKIAogICAg
IC8vIEdpdmVzIGFuIHVub2NjbHVkZWQgc3ViLXJlY3Qgb2YgfGNvbnRlbnRSZWN0fCBpbiB0aGUg
Y29udGVudCBzcGFjZSBvZiB0aGUgcmVuZGVyVGFyZ2V0IG93bmVkIGJ5IHRoZSBsYXllci4KICAg
ICAvLyBVc2VkIHdoZW4gY29uc2lkZXJpbmcgb2NjbHVzaW9uIGZvciBhIGNvbnRyaWJ1dGluZyBz
dXJmYWNlIHRoYXQgaXMgcmVuZGVyaW5nIGludG8gYW5vdGhlciB0YXJnZXQuCi0gICAgSW50UmVj
dCB1bm9jY2x1ZGVkQ29udHJpYnV0aW5nU3VyZmFjZUNvbnRlbnRSZWN0KGNvbnN0IExheWVyVHlw
ZSosIGJvb2wgZm9yUmVwbGljYSwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpIGNvbnN0Owor
ICAgIEludFJlY3QgdW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChjb25z
dCBMYXllclR5cGUqLCBib29sIGZvclJlcGxpY2EsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0
LCBib29sKiBoYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UgPSAwKSBjb25zdDsK
IAogICAgIC8vIFJlcG9ydCBvcGVyYXRpb25zIGZvciByZWNvcmRpbmcgb3ZlcmRyYXcgbWV0cmlj
cy4KICAgICBDQ092ZXJkcmF3TWV0cmljcyYgb3ZlcmRyYXdNZXRyaWNzKCkgY29uc3QgeyByZXR1
cm4gKm1fb3ZlcmRyYXdNZXRyaWNzLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcApp
bmRleCA2NWY3ODc4OGVkNDlhZTI0Mjg1ZjdkYWNjZWI3MWRlMWY0OWEzZWYzLi4wNjg0ZjNlZTU1
NWUyZmJhYWFlNGY0ZmVhOWM0NmIzMDZiZjVlY2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5j
cHAKQEAgLTMzLDcgKzMzLDkgQEAKICNpbmNsdWRlICJTa0NvbG9yLmgiCiAjaW5jbHVkZSAiY2Mv
Q0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKKyNp
bmNsdWRlICJjYy9DQ09jY2x1c2lvblRyYWNrZXIuaCIKICNpbmNsdWRlICJjYy9DQ092ZXJkcmF3
TWV0cmljcy5oIgorI2luY2x1ZGUgImNjL0NDUmVuZGVyUGFzcy5oIgogI2luY2x1ZGUgPHB1Ymxp
Yy9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oPgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwpAQCAt
NDYsMTEgKzQ4LDEzIEBAIHN0YXRpYyBjb25zdCBpbnQgZGVidWdUaWxlQm9yZGVyQ29sb3JSZWQg
PSAxNjA7CiBzdGF0aWMgY29uc3QgaW50IGRlYnVnVGlsZUJvcmRlckNvbG9yR3JlZW4gPSAxMDA7
CiBzdGF0aWMgY29uc3QgaW50IGRlYnVnVGlsZUJvcmRlckNvbG9yQmx1ZSA9IDA7CiAKLUNDUXVh
ZEN1bGxlcjo6Q0NRdWFkQ3VsbGVyKENDUXVhZExpc3QmIHF1YWRMaXN0LCBDQ0xheWVySW1wbCog
bGF5ZXIsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlckltcGwqIG9jY2x1c2lvblRyYWNrZXIsIGJv
b2wgc2hvd0N1bGxpbmdXaXRoRGVidWdCb3JkZXJRdWFkcykKK0NDUXVhZEN1bGxlcjo6Q0NRdWFk
Q3VsbGVyKENDUXVhZExpc3QmIHF1YWRMaXN0LCBDQ0xheWVySW1wbCogbGF5ZXIsIGNvbnN0IEND
T2NjbHVzaW9uVHJhY2tlckltcGwqIG9jY2x1c2lvblRyYWNrZXIsIGJvb2wgc2hvd0N1bGxpbmdX
aXRoRGVidWdCb3JkZXJRdWFkcywgYm9vbCBmb3JTdXJmYWNlKQogICAgIDogbV9xdWFkTGlzdChx
dWFkTGlzdCkKICAgICAsIG1fbGF5ZXIobGF5ZXIpCiAgICAgLCBtX29jY2x1c2lvblRyYWNrZXIo
b2NjbHVzaW9uVHJhY2tlcikKICAgICAsIG1fc2hvd0N1bGxpbmdXaXRoRGVidWdCb3JkZXJRdWFk
cyhzaG93Q3VsbGluZ1dpdGhEZWJ1Z0JvcmRlclF1YWRzKQorICAgICwgbV9mb3JTdXJmYWNlKGZv
clN1cmZhY2UpCisgICAgLCBtX2hhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZShm
YWxzZSkKIHsKIH0KIApAQCAtNzgsMTMgKzgyLDE1IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBhcHBl
bmRRdWFkSW50ZXJuYWwoUGFzc093blB0cjxDQ0RyYXdRdWFkPiBwYXNzRHJhd1F1YWQsIGNvbnN0
CiAKIGJvb2wgQ0NRdWFkQ3VsbGVyOjphcHBlbmQoUGFzc093blB0cjxDQ0RyYXdRdWFkPiBwYXNz
RHJhd1F1YWQpCiB7Ci0gICAgSW50UmVjdCBjdWxsZWRSZWN0ID0gbV9vY2NsdXNpb25UcmFja2Vy
LT51bm9jY2x1ZGVkQ29udGVudFJlY3QobV9sYXllciwgcGFzc0RyYXdRdWFkLT5xdWFkUmVjdCgp
KTsKLSAgICByZXR1cm4gYXBwZW5kUXVhZEludGVybmFsKHBhc3NEcmF3UXVhZCwgY3VsbGVkUmVj
dCwgbV9xdWFkTGlzdCwgKm1fb2NjbHVzaW9uVHJhY2tlciwgbV9zaG93Q3VsbGluZ1dpdGhEZWJ1
Z0JvcmRlclF1YWRzKTsKLX0KKyAgICBJbnRSZWN0IGN1bGxlZFJlY3Q7CisgICAgYm9vbCBoYXNP
Y2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2U7CisKKyAgICBpZiAobV9mb3JTdXJmYWNl
KQorICAgICAgICBjdWxsZWRSZWN0ID0gbV9vY2NsdXNpb25UcmFja2VyLT51bm9jY2x1ZGVkQ29u
dHJpYnV0aW5nU3VyZmFjZUNvbnRlbnRSZWN0KG1fbGF5ZXIsIGZhbHNlLCBwYXNzRHJhd1F1YWQt
PnF1YWRSZWN0KCksICZoYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UpOworICAg
IGVsc2UKKyAgICAgICAgY3VsbGVkUmVjdCA9IG1fb2NjbHVzaW9uVHJhY2tlci0+dW5vY2NsdWRl
ZENvbnRlbnRSZWN0KG1fbGF5ZXIsIHBhc3NEcmF3UXVhZC0+cXVhZFJlY3QoKSwgJmhhc09jY2x1
c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSk7CisgICAgbV9oYXNPY2NsdXNpb25Gcm9tT3V0
c2lkZVRhcmdldFN1cmZhY2UgfD0gaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNl
OwogCi1ib29sIENDUXVhZEN1bGxlcjo6YXBwZW5kU3VyZmFjZShQYXNzT3duUHRyPENDRHJhd1F1
YWQ+IHBhc3NEcmF3UXVhZCkKLXsKLSAgICBJbnRSZWN0IGN1bGxlZFJlY3QgPSBtX29jY2x1c2lv
blRyYWNrZXItPnVub2NjbHVkZWRDb250cmlidXRpbmdTdXJmYWNlQ29udGVudFJlY3QobV9sYXll
ciwgZmFsc2UsIHBhc3NEcmF3UXVhZC0+cXVhZFJlY3QoKSk7CiAgICAgcmV0dXJuIGFwcGVuZFF1
YWRJbnRlcm5hbChwYXNzRHJhd1F1YWQsIGN1bGxlZFJlY3QsIG1fcXVhZExpc3QsICptX29jY2x1
c2lvblRyYWNrZXIsIG1fc2hvd0N1bGxpbmdXaXRoRGVidWdCb3JkZXJRdWFkcyk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UXVhZEN1bGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NRdWFkQ3VsbGVyLmgKaW5kZXggMjk5OWI2YWQ1YWY4NDQ1NTQyNzRkNDRlMWI5NDVmNjc5
ODdlNWY2MC4uN2YwODAyNzgyN2RkOGRlNTVjNzg1YzIwMGU1NzUwNWEyY2FhMGQ5OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFk
Q3VsbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NRdWFkQ3VsbGVyLmgKQEAgLTI2LDI3ICsyNiwzMyBAQAogI2lmbmRlZiBDQ1F1YWRDdWxs
ZXJfaAogI2RlZmluZSBDQ1F1YWRDdWxsZXJfaAogCi0jaW5jbHVkZSAiY2MvQ0NSZW5kZXJQYXNz
LmgiCisjaW5jbHVkZSAiQ0NRdWFkU2luay5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBDQ0xheWVySW1wbDsKLWNsYXNzIENDT3ZlcmRyYXdNZXRyaWNzOworY2xhc3MgQ0NSZW5kZXJT
dXJmYWNlOworY2xhc3MgQ0NRdWFkTGlzdDsKK3RlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZSwg
dHlwZW5hbWUgU3VyZmFjZVR5cGU+CitjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJCYXNlOwogCi1j
bGFzcyBDQ1F1YWRDdWxsZXIgeworY2xhc3MgQ0NRdWFkQ3VsbGVyIDogcHVibGljIENDUXVhZFNp
bmsgewogcHVibGljOgotICAgIC8vIFBhc3NpbmcgMCBmb3IgQ0NPdmVyZHJhd0NvdW50cyogaXMg
dmFsaWQsIGFuZCBkaXNhYmxlIHRoZSBleHRyYSBjb21wdXRhdGlvbgotICAgIC8vIGRvbmUgdG8g
ZXN0aW1hdGUgb3ZlciBkcmF3IHN0YXRpc3RpY3MuCi0gICAgQ0NRdWFkQ3VsbGVyKENDUXVhZExp
c3QmLCBDQ0xheWVySW1wbCosIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlckltcGwqLCBib29sIHNo
b3dDdWxsaW5nV2l0aERlYnVnQm9yZGVyUXVhZHMpOworICAgIENDUXVhZEN1bGxlcihDQ1F1YWRM
aXN0JiwgQ0NMYXllckltcGwqLCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPENDTGF5ZXJJ
bXBsLCBDQ1JlbmRlclN1cmZhY2U+KiwgYm9vbCBzaG93Q3VsbGluZ1dpdGhEZWJ1Z0JvcmRlclF1
YWRzLCBib29sIGZvclN1cmZhY2UpOworCisgICAgdmlydHVhbCB+Q0NRdWFkQ3VsbGVyKCkgeyB9
CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHF1YWQgaXMgYWRkZWQgdG8gdGhlIGxpc3Qs
IGFuZCBmYWxzZSBpZiB0aGUgcXVhZCBpcyBlbnRpcmVseSBjdWxsZWQuCi0gICAgdmlydHVhbCBi
b29sIGFwcGVuZChQYXNzT3duUHRyPENDRHJhd1F1YWQ+IHBhc3NEcmF3UXVhZCk7Ci0gICAgdmly
dHVhbCBib29sIGFwcGVuZFN1cmZhY2UoUGFzc093blB0cjxDQ0RyYXdRdWFkPiBwYXNzRHJhd1F1
YWQpOworICAgIHZpcnR1YWwgYm9vbCBhcHBlbmQoUGFzc093blB0cjxXZWJLaXQ6OldlYkNvbXBv
c2l0b3JRdWFkPiBwYXNzRHJhd1F1YWQpIE9WRVJSSURFOworCisgICAgYm9vbCBoYXNPY2NsdXNp
b25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UoKSB7IHJldHVybiBtX2hhc09jY2x1c2lvbkZyb21P
dXRzaWRlVGFyZ2V0U3VyZmFjZTsgfQogCiBwcml2YXRlOgogICAgIENDUXVhZExpc3QmIG1fcXVh
ZExpc3Q7CiAgICAgQ0NMYXllckltcGwqIG1fbGF5ZXI7Ci0gICAgY29uc3QgQ0NPY2NsdXNpb25U
cmFja2VySW1wbCogbV9vY2NsdXNpb25UcmFja2VyOworICAgIGNvbnN0IENDT2NjbHVzaW9uVHJh
Y2tlckJhc2U8Q0NMYXllckltcGwsIENDUmVuZGVyU3VyZmFjZT4qIG1fb2NjbHVzaW9uVHJhY2tl
cjsKICAgICBib29sIG1fc2hvd0N1bGxpbmdXaXRoRGVidWdCb3JkZXJRdWFkczsKKyAgICBib29s
IG1fZm9yU3VyZmFjZTsKKyAgICBib29sIG1faGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRT
dXJmYWNlOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkU2luay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkU2luay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyYTljNjJhZTA2
YTcxNzVjYWFhYTYzNDliNTQ5MTYxMjdkYTU4NGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRTaW5rLmgKQEAgLTAs
MCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ0NRdWFkU2lua19oCisjZGVmaW5lIENDUXVhZFNp
bmtfaAorCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CitjbGFzcyBXZWJDb21wb3NpdG9yUXVhZDsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBDQ1F1YWRTaW5rIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5DQ1F1YWRTaW5rKCkgeyB9
CisKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHF1YWQgaXMgYWRkZWQgdG8gdGhlIGxpc3Qs
IGFuZCBmYWxzZSBpZiB0aGUgcXVhZCBpcyBlbnRpcmVseSBjdWxsZWQuCisgICAgdmlydHVhbCBi
b29sIGFwcGVuZChQYXNzT3duUHRyPFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ+IHBhc3NEcmF3
UXVhZCkgPSAwOworfTsKKworfQorI2VuZGlmIC8vIENDUXVhZEN1bGxlcl9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBh
c3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NS
ZW5kZXJQYXNzLmNwcAppbmRleCBkMzg5ZjJiMzI2ZWI2NjM2ZDUzYjgyOTBiY2Y5ZWExYzI5MjE0
N2NhLi43NWI0ZTJkNjdiZjRhODllYjEwMGM2ODBjYmY5MjdjZTRhZTA2OWNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBh
c3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUmVuZGVyUGFzcy5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgImNjL0NDTGF5
ZXJJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NNYXRoVXRpbC5oIgorI2luY2x1ZGUgImNjL0NDT2Nj
bHVzaW9uVHJhY2tlci5oIgogI2luY2x1ZGUgImNjL0NDUXVhZEN1bGxlci5oIgogI2luY2x1ZGUg
ImNjL0NDU2hhcmVkUXVhZFN0YXRlLmgiCiAjaW5jbHVkZSAiY2MvQ0NTb2xpZENvbG9yRHJhd1F1
YWQuaCIKQEAgLTQ3LDYgKzQ4LDcgQEAgQ0NSZW5kZXJQYXNzOjpDQ1JlbmRlclBhc3MoQ0NSZW5k
ZXJTdXJmYWNlKiB0YXJnZXRTdXJmYWNlLCBpbnQgaWQpCiAgICAgLCBtX3RhcmdldFN1cmZhY2Uo
dGFyZ2V0U3VyZmFjZSkKICAgICAsIG1fZnJhbWVidWZmZXJPdXRwdXRSZWN0KHRhcmdldFN1cmZh
Y2UtPmNvbnRlbnRSZWN0KCkpCiAgICAgLCBtX2hhc1RyYW5zcGFyZW50QmFja2dyb3VuZCh0cnVl
KQorICAgICwgbV9oYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UoZmFsc2UpCiB7
CiAgICAgQVNTRVJUKHRhcmdldFN1cmZhY2UpOwogICAgIEFTU0VSVChpZCA+IDApOwpAQCAtNTQs
MTkgKzU2LDIzIEBAIENDUmVuZGVyUGFzczo6Q0NSZW5kZXJQYXNzKENDUmVuZGVyU3VyZmFjZSog
dGFyZ2V0U3VyZmFjZSwgaW50IGlkKQogCiB2b2lkIENDUmVuZGVyUGFzczo6YXBwZW5kUXVhZHNG
b3JMYXllcihDQ0xheWVySW1wbCogbGF5ZXIsIENDT2NjbHVzaW9uVHJhY2tlckltcGwqIG9jY2x1
c2lvblRyYWNrZXIsIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykKIHsKLSAgICBDQ1F1YWRDdWxsZXIg
cXVhZEN1bGxlcihtX3F1YWRMaXN0LCBsYXllciwgb2NjbHVzaW9uVHJhY2tlciwgbGF5ZXItPmhh
c0RlYnVnQm9yZGVycygpKTsKKyAgICBjb25zdCBib29sIGZvclN1cmZhY2UgPSBmYWxzZTsKKyAg
ICBDQ1F1YWRDdWxsZXIgcXVhZEN1bGxlcihtX3F1YWRMaXN0LCBsYXllciwgb2NjbHVzaW9uVHJh
Y2tlciwgbGF5ZXItPmhhc0RlYnVnQm9yZGVycygpLCBmb3JTdXJmYWNlKTsKIAogICAgIE93blB0
cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkUXVhZFN0YXRlID0gbGF5ZXItPmNyZWF0ZVNoYXJl
ZFF1YWRTdGF0ZShtX3NoYXJlZFF1YWRTdGF0ZUxpc3Quc2l6ZSgpKTsKICAgICBsYXllci0+YXBw
ZW5kRGVidWdCb3JkZXJRdWFkKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSk7CiAg
ICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwg
aGFkTWlzc2luZ1RpbGVzKTsKICAgICBtX3NoYXJlZFF1YWRTdGF0ZUxpc3QuYXBwZW5kKHNoYXJl
ZFF1YWRTdGF0ZS5yZWxlYXNlKCkpOworCisgICAgbV9oYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRh
cmdldFN1cmZhY2UgfD0gcXVhZEN1bGxlci5oYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1
cmZhY2UoKTsKIH0KIAogdm9pZCBDQ1JlbmRlclBhc3M6OmFwcGVuZFF1YWRzRm9yUmVuZGVyU3Vy
ZmFjZUxheWVyKENDTGF5ZXJJbXBsKiBsYXllciwgY29uc3QgQ0NSZW5kZXJQYXNzKiBjb250cmli
dXRpbmdSZW5kZXJQYXNzLCBDQ09jY2x1c2lvblRyYWNrZXJJbXBsKiBvY2NsdXNpb25UcmFja2Vy
KQogewogICAgIC8vIEZJWE1FOiByZW5kZXIgc3VyZmFjZSBsYXllcnMgc2hvdWxkIGJlIGEgQ0NM
YXllckltcGwtZGVyaXZlZCBjbGFzcyBhbmQKICAgICAvLyBub3QgYmUgaGFuZGxlZCBzcGVjaWFs
bHkgaGVyZS4KLSAgICBDQ1F1YWRDdWxsZXIgcXVhZEN1bGxlcihtX3F1YWRMaXN0LCBsYXllciwg
b2NjbHVzaW9uVHJhY2tlciwgbGF5ZXItPmhhc0RlYnVnQm9yZGVycygpKTsKKyAgICBjb25zdCBi
b29sIGZvclN1cmZhY2UgPSB0cnVlOworICAgIENDUXVhZEN1bGxlciBxdWFkQ3VsbGVyKG1fcXVh
ZExpc3QsIGxheWVyLCBvY2NsdXNpb25UcmFja2VyLCBsYXllci0+aGFzRGVidWdCb3JkZXJzKCks
IGZvclN1cmZhY2UpOwogCiAgICAgQ0NSZW5kZXJTdXJmYWNlKiBzdXJmYWNlID0gbGF5ZXItPnJl
bmRlclN1cmZhY2UoKTsKIApAQCAtNzUsNiArODEsOCBAQCB2b2lkIENDUmVuZGVyUGFzczo6YXBw
ZW5kUXVhZHNGb3JSZW5kZXJTdXJmYWNlTGF5ZXIoQ0NMYXllckltcGwqIGxheWVyLCBjb25zdCBD
QwogICAgIHN1cmZhY2UtPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5n
ZXQoKSwgaXNSZXBsaWNhLCBjb250cmlidXRpbmdSZW5kZXJQYXNzLT5pZCgpKTsKICAgICBtX3No
YXJlZFF1YWRTdGF0ZUxpc3QuYXBwZW5kKHNoYXJlZFF1YWRTdGF0ZS5yZWxlYXNlKCkpOwogCisg
ICAgbV9oYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UgfD0gcXVhZEN1bGxlci5o
YXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UoKTsKKwogICAgIGlmICghbGF5ZXIt
Pmhhc1JlcGxpY2EoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC04Myw2ICs5MSw4IEBAIHZvaWQg
Q0NSZW5kZXJQYXNzOjphcHBlbmRRdWFkc0ZvclJlbmRlclN1cmZhY2VMYXllcihDQ0xheWVySW1w
bCogbGF5ZXIsIGNvbnN0IENDCiAgICAgaXNSZXBsaWNhID0gdHJ1ZTsKICAgICBzdXJmYWNlLT5h
cHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCByZXBsaWNhU2hhcmVkUXVhZFN0YXRlLmdldCgpLCBpc1Jl
cGxpY2EsIGNvbnRyaWJ1dGluZ1JlbmRlclBhc3MtPmlkKCkpOwogICAgIG1fc2hhcmVkUXVhZFN0
YXRlTGlzdC5hcHBlbmQocmVwbGljYVNoYXJlZFF1YWRTdGF0ZS5yZWxlYXNlKCkpOworCisgICAg
bV9oYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UgfD0gcXVhZEN1bGxlci5oYXNP
Y2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UoKTsKIH0KIAogdm9pZCBDQ1JlbmRlclBh
c3M6OmFwcGVuZFF1YWRzVG9GaWxsU2NyZWVuKENDTGF5ZXJJbXBsKiByb290TGF5ZXIsIFNrQ29s
b3Igc2NyZWVuQmFja2dyb3VuZENvbG9yLCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXJJbXBsJiBv
Y2NsdXNpb25UcmFja2VyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuaAppbmRleCAwMTBhNzY3NGIwY2Uy
YjIyYzA5MmE2NjA2ZDQxY2QzNDFhMWM5N2Y2Li44MTY0ODFjOTczNjU5MmRiODI0M2Q3MDJiYzMx
MjFiZjYzMmI1MzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuaApAQCAtNzEsNiArNzEsOCBAQCBw
dWJsaWM6CiAgICAgYm9vbCBoYXNUcmFuc3BhcmVudEJhY2tncm91bmQoKSBjb25zdCB7IHJldHVy
biBtX2hhc1RyYW5zcGFyZW50QmFja2dyb3VuZDsgfQogICAgIHZvaWQgc2V0SGFzVHJhbnNwYXJl
bnRCYWNrZ3JvdW5kKGJvb2wgdHJhbnNwYXJlbnQpIHsgbV9oYXNUcmFuc3BhcmVudEJhY2tncm91
bmQgPSB0cmFuc3BhcmVudDsgfQogCisgICAgYm9vbCBoYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRh
cmdldFN1cmZhY2UoKSBjb25zdCB7IHJldHVybiBtX2hhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFy
Z2V0U3VyZmFjZTsgfQorICAgIHZvaWQgc2V0SGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRT
dXJmYWNlKGJvb2wgaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKSB7IG1faGFz
T2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlID0gaGFzT2NjbHVzaW9uRnJvbU91dHNp
ZGVUYXJnZXRTdXJmYWNlOyB9CiBwcm90ZWN0ZWQ6CiAgICAgQ0NSZW5kZXJQYXNzKENDUmVuZGVy
U3VyZmFjZSosIGludCBpZCk7CiAKQEAgLTgwLDYgKzgyLDcgQEAgcHJvdGVjdGVkOgogICAgIElu
dFJlY3QgbV9mcmFtZWJ1ZmZlck91dHB1dFJlY3Q7CiAgICAgVmVjdG9yPE93blB0cjxDQ1NoYXJl
ZFF1YWRTdGF0ZT4gPiBtX3NoYXJlZFF1YWRTdGF0ZUxpc3Q7CiAgICAgYm9vbCBtX2hhc1RyYW5z
cGFyZW50QmFja2dyb3VuZDsKKyAgICBib29sIG1faGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJn
ZXRTdXJmYWNlOwogfTsKIAogdHlwZWRlZiBWZWN0b3I8Q0NSZW5kZXJQYXNzKj4gQ0NSZW5kZXJQ
YXNzTGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwCmluZGV4IGVmZjA2OGFiNDQ4
OWM0ODA3MGRlOTFkNTYyNDA1ZTYzNmRlMjQ3NzMuLjIyNDM0YzIwM2RiMDgzZDg3MGIwYmY2MGVl
Zjk3NGFkOGJjMjZmMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcApAQCAtMzYs
NyArMzYsNyBAQAogI2luY2x1ZGUgImNjL0NDRGVidWdCb3JkZXJEcmF3UXVhZC5oIgogI2luY2x1
ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NNYXRoVXRpbC5oIgotI2luY2x1
ZGUgImNjL0NDUXVhZEN1bGxlci5oIgorI2luY2x1ZGUgImNjL0NDUXVhZFNpbmsuaCIKICNpbmNs
dWRlICJjYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDU2hhcmVkUXVh
ZFN0YXRlLmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4Lmg+CkBA
IC0xODEsNyArMTgxLDcgQEAgRmxvYXRSZWN0IENDUmVuZGVyU3VyZmFjZTo6Y29tcHV0ZVJvb3RT
Y2lzc29yUmVjdEluQ3VycmVudFN1cmZhY2UoY29uc3QgRmxvYXRSZWMKICAgICByZXR1cm4gQ0NN
YXRoVXRpbDo6cHJvamVjdENsaXBwZWRSZWN0KGludmVyc2VTY3JlZW5TcGFjZVRyYW5zZm9ybSwg
cm9vdFNjaXNzb3JSZWN0KTsKIH0KIAotdm9pZCBDQ1JlbmRlclN1cmZhY2U6OmFwcGVuZFF1YWRz
KENDUXVhZEN1bGxlciYgcXVhZExpc3QsIENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3Rh
dGUsIGJvb2wgZm9yUmVwbGljYSwgaW50IHJlbmRlclBhc3NJZCkKK3ZvaWQgQ0NSZW5kZXJTdXJm
YWNlOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkTGlzdCwgQ0NTaGFyZWRRdWFkU3RhdGUq
IHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCBmb3JSZXBsaWNhLCBpbnQgcmVuZGVyUGFzc0lkKQogewog
ICAgIEFTU0VSVCghZm9yUmVwbGljYSB8fCBtX293bmluZ0xheWVyLT5oYXNSZXBsaWNhKCkpOwog
CkBAIC0xOTAsNyArMTkwLDcgQEAgdm9pZCBDQ1JlbmRlclN1cmZhY2U6OmFwcGVuZFF1YWRzKEND
UXVhZEN1bGxlciYgcXVhZExpc3QsIENDU2hhcmVkUXVhZFN0YXRlKiBzaGEKICAgICAgICAgaW50
IGdyZWVuID0gZm9yUmVwbGljYSA/ICBkZWJ1Z1JlcGxpY2FCb3JkZXJDb2xvckdyZWVuIDogZGVi
dWdTdXJmYWNlQm9yZGVyQ29sb3JHcmVlbjsKICAgICAgICAgaW50IGJsdWUgPSBmb3JSZXBsaWNh
ID8gZGVidWdSZXBsaWNhQm9yZGVyQ29sb3JCbHVlIDogZGVidWdTdXJmYWNlQm9yZGVyQ29sb3JC
bHVlOwogICAgICAgICBTa0NvbG9yIGNvbG9yID0gU2tDb2xvclNldEFSR0IoZGVidWdTdXJmYWNl
Qm9yZGVyQWxwaGEsIHJlZCwgZ3JlZW4sIGJsdWUpOwotICAgICAgICBxdWFkTGlzdC5hcHBlbmRT
dXJmYWNlKENDRGVidWdCb3JkZXJEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgY29u
dGVudFJlY3QoKSwgY29sb3IsIGRlYnVnU3VyZmFjZUJvcmRlcldpZHRoKSk7CisgICAgICAgIHF1
YWRMaXN0LmFwcGVuZChDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3Rh
dGUsIGNvbnRlbnRSZWN0KCksIGNvbG9yLCBkZWJ1Z1N1cmZhY2VCb3JkZXJXaWR0aCkpOwogICAg
IH0KIAogICAgIC8vIEZJWE1FOiBCeSB1c2luZyB0aGUgc2FtZSBSZW5kZXJTdXJmYWNlIGZvciBi
b3RoIHRoZSBjb250ZW50IGFuZCBpdHMgcmVmbGVjdGlvbiwKQEAgLTIxNiw3ICsyMTYsNyBAQCB2
b2lkIENDUmVuZGVyU3VyZmFjZTo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwg
Q0NTaGFyZWRRdWFkU3RhdGUqIHNoYQogICAgIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0
aW9ucyYgZmlsdGVycyA9IG1fb3duaW5nTGF5ZXItPmZpbHRlcnMoKTsKICAgICBjb25zdCBXZWJL
aXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0ZXJzID0gbV9vd25pbmdMYXll
ci0+YmFja2dyb3VuZEZpbHRlcnMoKTsKIAotICAgIHF1YWRMaXN0LmFwcGVuZFN1cmZhY2UoQ0NS
ZW5kZXJQYXNzRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIGNvbnRlbnRSZWN0KCks
IHJlbmRlclBhc3NJZCwgZm9yUmVwbGljYSwgZHJhd1RyYW5zZm9ybSwgZmlsdGVycywgYmFja2dy
b3VuZEZpbHRlcnMsIG1hc2tSZXNvdXJjZUlkLCBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFt
ZSkpOworICAgIHF1YWRMaXN0LmFwcGVuZChDQ1JlbmRlclBhc3NEcmF3UXVhZDo6Y3JlYXRlKHNo
YXJlZFF1YWRTdGF0ZSwgY29udGVudFJlY3QoKSwgcmVuZGVyUGFzc0lkLCBmb3JSZXBsaWNhLCBk
cmF3VHJhbnNmb3JtLCBmaWx0ZXJzLCBiYWNrZ3JvdW5kRmlsdGVycywgbWFza1Jlc291cmNlSWQs
IGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFj
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5k
ZXJTdXJmYWNlLmgKaW5kZXggMWFjMzQwMGFmNWM0YzBiYzIyMTUyNjBkNTM3NTgwNzU5YWM3NDgx
Ni4uNzlmZGFjNGVjYzkwNWYxM2FlODc4NzM0YjA1MTY0MDBhZmJmNWI3NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJm
YWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NSZW5kZXJTdXJmYWNlLmgKQEAgLTM5LDcgKzM5LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgQ0NEYW1hZ2VUcmFja2VyOwotY2xhc3MgQ0NRdWFkQ3VsbGVyOworY2xhc3MgQ0NR
dWFkU2luazsKIGNsYXNzIENDUmVuZGVyUGFzczsKIGNsYXNzIENDTGF5ZXJJbXBsOwogY2xhc3Mg
TGF5ZXJSZW5kZXJlckNocm9taXVtOwpAQCAtMTE3LDcgKzExNyw3IEBAIHB1YmxpYzoKICAgICBQ
YXNzT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBjcmVhdGVTaGFyZWRRdWFkU3RhdGUoaW50IGlk
KSBjb25zdDsKICAgICBQYXNzT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBjcmVhdGVSZXBsaWNh
U2hhcmVkUXVhZFN0YXRlKGludCBpZCkgY29uc3Q7CiAKLSAgICB2b2lkIGFwcGVuZFF1YWRzKEND
UXVhZEN1bGxlciYsIENDU2hhcmVkUXVhZFN0YXRlKiwgYm9vbCBmb3JSZXBsaWNhLCBpbnQgcmVu
ZGVyUGFzc0lkKTsKKyAgICB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZFNpbmsmLCBDQ1NoYXJlZFF1
YWRTdGF0ZSosIGJvb2wgZm9yUmVwbGljYSwgaW50IHJlbmRlclBhc3NJZCk7CiAKICAgICBGbG9h
dFJlY3QgY29tcHV0ZVJvb3RTY2lzc29yUmVjdEluQ3VycmVudFN1cmZhY2UoY29uc3QgRmxvYXRS
ZWN0JiByb290U2Npc3NvclJlY3QpIGNvbnN0OwogCkBAIC0xNTcsNiArMTU3LDcgQEAgcHJpdmF0
ZToKICAgICAvLyBGb3IgQ0NMYXllckl0ZXJhdG9yQWN0aW9ucwogICAgIGludCBtX3RhcmdldFJl
bmRlclN1cmZhY2VMYXllckluZGV4SGlzdG9yeTsKICAgICBpbnQgbV9jdXJyZW50TGF5ZXJJbmRl
eEhpc3Rvcnk7CisKICAgICBmcmllbmQgc3RydWN0IENDTGF5ZXJJdGVyYXRvckFjdGlvbnM7CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5jcHAKaW5kZXggNjUwZTc1
MWY4Yzg5NGVmZjU2MWM0ZWY3Y2MxN2RiMDFjZTk0Y2JkMy4uMWZjZDFkYThiZjQxZTJkMjJiNjE4
Yzk0NmMyM2UzOGM0NWM5ODhiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJ
bXBsLmNwcApAQCAtMzEsNyArMzEsNyBAQAogCiAjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWUuaCIK
ICNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5oIgotI2luY2x1ZGUgImNjL0NDUXVh
ZEN1bGxlci5oIgorI2luY2x1ZGUgImNjL0NDUXVhZFNpbmsuaCIKICNpbmNsdWRlICJjYy9DQ1Rl
eHR1cmVEcmF3UXVhZC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02Miw3ICs2Miw3IEBA
IEZsb2F0UmVjdCB0b1VWUmVjdChjb25zdCBJbnRSZWN0JiByLCBjb25zdCBJbnRSZWN0JiBib3Vu
ZHMpCiAKIH0KIAotdm9pZCBDQ1Njcm9sbGJhckxheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFk
Q3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0
ZSwgYm9vbCYpCit2b2lkIENDU2Nyb2xsYmFyTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRT
aW5rJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwg
Ym9vbCYpCiB7CiAgICAgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUqIHRoZW1lID0gc3RhdGljX2Nh
c3Q8U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUqPihTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKSk7CiAg
ICAgaWYgKCF0aGVtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5oCmluZGV4
IDMyYTgzNWQ5MDJhYzVjMzgxY2MwMjNlNDJkZjI4MDdmZTg0MDcwNTEuLmZhYTMzNjFiYWQzNzU5
ODA0ZTgwMzQ4ZDQyMjBkZWI2N2IzZTAwNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJM
YXllckltcGwuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgQ0NMYXllckltcGwqIHNj
cm9sbExheWVyKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxMYXllcjsgfQogICAgIHZvaWQgc2V0
U2Nyb2xsTGF5ZXIoQ0NMYXllckltcGwqIHNjcm9sbExheWVyKSB7IG1fc2Nyb2xsTGF5ZXIgPSBz
Y3JvbGxMYXllcjsgfQogCi0gICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZEN1bGxl
ciYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYsIGNvbnN0IEND
U2hhcmVkUXVhZFN0YXRlKiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVSUklERTsKIAogcHJv
dGVjdGVkOgogICAgIGV4cGxpY2l0IENDU2Nyb2xsYmFyTGF5ZXJJbXBsKGludCBpZCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Nv
bGlkQ29sb3JMYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmNwcAppbmRleCA0ZDUyYzE1ZGQ0MmYy
M2RhYWZmNmM1NDM4YmU0Zjc5ZWY3ODY0NmEzLi5mNTJjNzk3YzAyZjc0ODhmYjhkNDA3ZjUxZjBl
ZGM5ZjQ1YTk5MjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxheWVySW1wbC5j
cHAKQEAgLTI5LDcgKzI5LDcgQEAKIAogI2luY2x1ZGUgImNjL0NDU29saWRDb2xvckxheWVySW1w
bC5oIgogCi0jaW5jbHVkZSAiY2MvQ0NRdWFkQ3VsbGVyLmgiCisjaW5jbHVkZSAiY2MvQ0NRdWFk
U2luay5oIgogI2luY2x1ZGUgImNjL0NDU29saWRDb2xvckRyYXdRdWFkLmgiCiAjaW5jbHVkZSA8
d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTQ5
LDcgKzQ5LDcgQEAgQ0NTb2xpZENvbG9yTGF5ZXJJbXBsOjp+Q0NTb2xpZENvbG9yTGF5ZXJJbXBs
KCkKIHsKIH0KIAotdm9pZCBDQ1NvbGlkQ29sb3JMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVh
ZEN1bGxlciYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3Rh
dGUsIGJvb2wmKQordm9pZCBDQ1NvbGlkQ29sb3JMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVh
ZFNpbmsmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRl
LCBib29sJikKIHsKICAgICAvLyBXZSBjcmVhdGUgYSBzZXJpZXMgb2Ygc21hbGxlciBxdWFkcyBp
bnN0ZWFkIG9mIGp1c3Qgb25lIGxhcmdlIG9uZSBzbyB0aGF0IHRoZQogICAgIC8vIGN1bGxlciBj
YW4gcmVkdWNlIHRoZSB0b3RhbCBwaXhlbHMgZHJhd24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JMYXllckltcGwu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRD
b2xvckxheWVySW1wbC5oCmluZGV4IGUzMDA1ODQ1ZTZkZTZiMjBkYWM1ZmVlNjQ5YTUxNTcxZjZh
MTBjMzYuLjcxNTNmMjFhYjgyYTc4NGFjODUwZThkNjNiODVjMjExNmI2ODVmNDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRD
b2xvckxheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU29saWRDb2xvckxheWVySW1wbC5oCkBAIC00MSw3ICs0MSw3IEBAIHB1Ymxp
YzoKICAgICB9CiAgICAgdmlydHVhbCB+Q0NTb2xpZENvbG9yTGF5ZXJJbXBsKCk7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFk
U3RhdGUqLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBhcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29s
JiBoYWRNaXNzaW5nVGlsZXMpIE9WRVJSSURFOwogCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQg
Q0NTb2xpZENvbG9yTGF5ZXJJbXBsKGludCBpZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5
ZXJJbXBsLmNwcAppbmRleCA2ZmM5MTk5NjIwMDMyZjUzMjJmZTVjMmY5MWZkNmE4YzcyMDI1NTg4
Li43Y2JiZWNlMTY4ODM4NzhjNDk3N2Q0ZjlhYTQ4NTZlODAxY2NiMTgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXll
ckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGV4dHVyZUxheWVySW1wbC5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJj
Yy9DQ1RleHR1cmVMYXllckltcGwuaCIKIAogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKLSNpbmNs
dWRlICJjYy9DQ1F1YWRDdWxsZXIuaCIKKyNpbmNsdWRlICJjYy9DQ1F1YWRTaW5rLmgiCiAjaW5j
bHVkZSAiY2MvQ0NSZW5kZXJlci5oIgogI2luY2x1ZGUgImNjL0NDVGV4dHVyZURyYXdRdWFkLmgi
CiAKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBDQ1RleHR1cmVMYXllckltcGw6OndpbGxEcmF3KEND
UmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlcikKICAgICBtX2V4dGVybmFsVGV4dHVy
ZVJlc291cmNlID0gcmVzb3VyY2VQcm92aWRlci0+Y3JlYXRlUmVzb3VyY2VGcm9tRXh0ZXJuYWxU
ZXh0dXJlKG1fdGV4dHVyZUlkKTsKIH0KIAotdm9pZCBDQ1RleHR1cmVMYXllckltcGw6OmFwcGVu
ZFF1YWRzKENDUXVhZEN1bGxlciYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBz
aGFyZWRRdWFkU3RhdGUsIGJvb2wmKQordm9pZCBDQ1RleHR1cmVMYXllckltcGw6OmFwcGVuZFF1
YWRzKENDUXVhZFNpbmsmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVk
UXVhZFN0YXRlLCBib29sJikKIHsKICAgICBBU1NFUlQobV9leHRlcm5hbFRleHR1cmVSZXNvdXJj
ZSk7CiAgICAgSW50UmVjdCBxdWFkUmVjdChJbnRQb2ludCgpLCBjb250ZW50Qm91bmRzKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUZXh0dXJlTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwuaAppbmRleCBlNzQ4YjAxMzA4YThlZGI5NjJh
MzhmOTU0ZGEwZDFiZGY5Njc5MzQwLi5lNTQ1MzE0OGRjY2E1MDliNzkzZTY5NDViYjZiYWQ3MTgx
NzYwZjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwuaApAQCAtMzksNyArMzks
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q0NUZXh0dXJlTGF5ZXJJbXBsKCk7CiAKICAgICB2
aXJ0dWFsIHZvaWQgd2lsbERyYXcoQ0NSZXNvdXJjZVByb3ZpZGVyKikgT1ZFUlJJREU7Ci0gICAg
dmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYsIGNvbnN0IENDU2hhcmVkUXVh
ZFN0YXRlKiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgYm9v
bCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRHJhdyhD
Q1Jlc291cmNlUHJvdmlkZXIqKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRMb3Nl
Q29udGV4dCgpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcAppbmRl
eCBjOWU5YjIyNjRiOThkNzhhM2YwZjQ4NTU1YmY3N2Y4MDgxMDM2YmRlLi5lZTQ5NjUxODc5MGJi
ZDNjMTQwZmMyMzNjYTc2ODRkOTYzYzFmNWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJ
bXBsLmNwcApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgImNjL0NDQ2hlY2tlcmJvYXJkRHJh
d1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQuaCIKICNpbmNsdWRl
ICJjYy9DQ0xheWVyVGlsaW5nRGF0YS5oIgotI2luY2x1ZGUgImNjL0NDUXVhZEN1bGxlci5oIgor
I2luY2x1ZGUgImNjL0NDUXVhZFNpbmsuaCIKICNpbmNsdWRlICJjYy9DQ1NvbGlkQ29sb3JEcmF3
UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDVGlsZURyYXdRdWFkLmgiCiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CkBAIC0xMjMsNyArMTIzLDcgQEAgRHJhd2FibGVUaWxlKiBDQ1RpbGVk
TGF5ZXJJbXBsOjpjcmVhdGVUaWxlKGludCBpLCBpbnQgaikKICAgICByZXR1cm4gYWRkZWRUaWxl
OwogfQogCi12b2lkIENDVGlsZWRMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYg
cXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGJvb2wm
IGhhZE1pc3NpbmdUaWxlcykKK3ZvaWQgQ0NUaWxlZExheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NR
dWFkU2luayYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3Rh
dGUsIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykKIHsKICAgICBjb25zdCBJbnRSZWN0JiBjb250ZW50
UmVjdCA9IHZpc2libGVDb250ZW50UmVjdCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBs
LmgKaW5kZXggODcxZDRlN2QxNmExNDdhZThiNDE0MjU0MGYxN2FhNGNiODMwYThjZi4uMDE1ZmRj
MzA2MjQ4NzAwYTg2MmMyMjllYWMzNjM4OWIxZGVkYzRjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRM
YXllckltcGwuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwg
fkNDVGlsZWRMYXllckltcGwoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1
YWRDdWxsZXImLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wmIGhhZE1pc3NpbmdUaWxl
cykgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZFNpbmsmLCBj
b25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykgT1ZFUlJJREU7
CiAKICAgICB2aXJ0dWFsIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBjb250ZW50c1Jl
c291cmNlSWQoKSBjb25zdCBPVkVSUklERTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBs
LmNwcAppbmRleCBhZTUzOGMyZTUzNjkzMzEyNDQ0Y2Q1MDllMjMxMjgzMWQ4NGEzOTVkLi5mYTIw
MWQxMTI2YmE0YmIwOWU4NjdjNTcyYzIyOWI3MmQ5NzliOTk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Zp
ZGVvTGF5ZXJJbXBsLmNwcApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgImNjL0NDSU9TdXJm
YWNlRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgiCiAjaW5j
bHVkZSAiY2MvQ0NQcm94eS5oIgotI2luY2x1ZGUgImNjL0NDUXVhZEN1bGxlci5oIgorI2luY2x1
ZGUgImNjL0NDUXVhZFNpbmsuaCIKICNpbmNsdWRlICJjYy9DQ1Jlc291cmNlUHJvdmlkZXIuaCIK
ICNpbmNsdWRlICJjYy9DQ1N0cmVhbVZpZGVvRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ1Rl
eHR1cmVEcmF3UXVhZC5oIgpAQCAtMTc3LDcgKzE3Nyw3IEBAIHZvaWQgQ0NWaWRlb0xheWVySW1w
bDo6d2lsbERyYXdJbnRlcm5hbChDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIp
CiAgICAgICAgIG1fZXh0ZXJuYWxUZXh0dXJlUmVzb3VyY2UgPSByZXNvdXJjZVByb3ZpZGVyLT5j
cmVhdGVSZXNvdXJjZUZyb21FeHRlcm5hbFRleHR1cmUobV9mcmFtZS0+dGV4dHVyZUlkKCkpOwog
fQogCi12b2lkIENDVmlkZW9MYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYgcXVh
ZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGJvb2wmKQor
dm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkTGlzdCwg
Y29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCYpCiB7CiAgICAg
QVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVy
SW1wbC5oCmluZGV4IDRjZjdjYWJiNzZkOTNjZWU4OTJmNTQzZTI1YmM0OWU5ODE0ZWI0YjMuLjQx
NGNhNjhlMzQ2ODU3NDZjOWEwNTM1MDk1MzMwNThiYWVkOWY4ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Zp
ZGVvTGF5ZXJJbXBsLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkND
VmlkZW9MYXllckltcGwoKTsKIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhDQ1Jlc291cmNl
UHJvdmlkZXIqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFk
Q3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiBoYWRNaXNzaW5nVGlsZXMp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiwgY29u
c3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWREcmF3KENDUmVzb3VyY2VQcm92aWRlciopIE9WRVJSSURFOwog
CiAgICAgdmlydHVhbCB2b2lkIGR1bXBMYXllclByb3BlcnRpZXMoVGV4dFN0cmVhbSYsIGludCBp
bmRlbnQpIGNvbnN0IE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAppbmRleCA2NGRlZDc5Mjg2Mjhh
ZjJkM2IzMzJkNGEzZGZiMDJjYWY3YmIyYmQ5Li5kZDUyNWZjYmY3Nzg4ZjI0MGMxYjJiNDZjYjNk
MTVhMzMwMTIxNWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
TGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5j
bHVkZSAiQ0NBbmltYXRpb25UZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSAiQ0NMYXllclRlc3RDb21t
b24uaCIKKyNpbmNsdWRlICJDQ0xheWVyVHJlZVRlc3RDb21tb24uaCIKICNpbmNsdWRlICJDQ1Rl
c3RDb21tb24uaCIKICNpbmNsdWRlICJGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNs
dWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKQEAgLTExNzUsNyArMTE3Niw3IEBAIGNsYXNz
IEJsZW5kU3RhdGVDaGVja0xheWVyIDogcHVibGljIENDTGF5ZXJJbXBsIHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc093blB0cjxCbGVuZFN0YXRlQ2hlY2tMYXllcj4gY3JlYXRlKGludCBpZCwg
Q0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFB0cihu
ZXcgQmxlbmRTdGF0ZUNoZWNrTGF5ZXIoaWQsIHJlc291cmNlUHJvdmlkZXIpKTsgfQogCi0gICAg
dmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYgcXVhZExpc3QsIGNvbnN0IEND
U2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGJvb2wmKSBPVkVSUklERQorICAgIHZp
cnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFy
ZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCYpIE9WRVJSSURFCiAgICAgewogICAg
ICAgICBtX3F1YWRzQXBwZW5kZWQgPSB0cnVlOwogCkBAIC0xNzAyLDEwICsxNzAzLDEwIEBAIGNs
YXNzIEZha2VMYXllcldpdGhRdWFkcyA6IHB1YmxpYyBDQ0xheWVySW1wbCB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFBhc3NPd25QdHI8RmFrZUxheWVyV2l0aFF1YWRzPiBjcmVhdGUoaW50IGlkKSB7
IHJldHVybiBhZG9wdFB0cihuZXcgRmFrZUxheWVyV2l0aFF1YWRzKGlkKSk7IH0KIAotICAgIHZp
cnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1No
YXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJikgT1ZFUlJJREUKKyAgICB2aXJ0
dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVk
UXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGJvb2wmKSBPVkVSUklERQogICAgIHsKICAgICAg
ICAgU2tDb2xvciBncmF5ID0gU2tDb2xvclNldFJHQigxMDAsIDEwMCwgMTAwKTsKLSAgICAgICAg
SW50UmVjdCBxdWFkUmVjdCgwLCAwLCA1LCA1KTsKKyAgICAgICAgSW50UmVjdCBxdWFkUmVjdChJ
bnRQb2ludCgwLCAwKSwgY29udGVudEJvdW5kcygpKTsKICAgICAgICAgT3duUHRyPENDRHJhd1F1
YWQ+IG15UXVhZCA9IENDU29saWRDb2xvckRyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRl
LCBxdWFkUmVjdCwgZ3JheSk7CiAgICAgICAgIHF1YWRMaXN0LmFwcGVuZChteVF1YWQucmVsZWFz
ZSgpKTsKICAgICB9CkBAIC0yNDc2LDYgKzI0NzcsMjEgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9z
dEltcGxUZXN0LCBoYXNUcmFuc3BhcmVudEJhY2tncm91bmQpCiAgICAgTW9jazo6VmVyaWZ5QW5k
Q2xlYXJFeHBlY3RhdGlvbnMoJm1vY2tDb250ZXh0KTsKIH0KIAorc3RhdGljIHZvaWQgYWRkRHJh
d2luZ0xheWVyVG8oQ0NMYXllckltcGwqIHBhcmVudCwgaW50IGlkLCBjb25zdCBJbnRSZWN0JiBs
YXllclJlY3QsIENDTGF5ZXJJbXBsKiogcmVzdWx0KQoreworICAgIE93blB0cjxDQ0xheWVySW1w
bD4gbGF5ZXIgPSBGYWtlTGF5ZXJXaXRoUXVhZHM6OmNyZWF0ZShpZCk7CisgICAgQ0NMYXllcklt
cGwqIGxheWVyUHRyID0gbGF5ZXIuZ2V0KCk7CisgICAgbGF5ZXJQdHItPnNldEFuY2hvclBvaW50
KEZsb2F0UG9pbnQoMCwgMCkpOworICAgIGxheWVyUHRyLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50
KGxheWVyUmVjdC5sb2NhdGlvbigpKSk7CisgICAgbGF5ZXJQdHItPnNldEJvdW5kcyhsYXllclJl
Y3Quc2l6ZSgpKTsKKyAgICBsYXllclB0ci0+c2V0Q29udGVudEJvdW5kcyhsYXllclJlY3Quc2l6
ZSgpKTsKKyAgICBsYXllclB0ci0+c2V0RHJhd3NDb250ZW50KHRydWUpOyAvLyBvbmx5IGNoaWxk
cmVuIGRyYXcgY29udGVudAorICAgIGxheWVyUHRyLT5zZXRPcGFxdWUodHJ1ZSk7CisgICAgcGFy
ZW50LT5hZGRDaGlsZChsYXllci5yZWxlYXNlKCkpOworICAgIGlmIChyZXN1bHQpCisgICAgICAg
ICpyZXN1bHQgPSBsYXllclB0cjsKK30KKwogc3RhdGljIHZvaWQgc2V0dXBMYXllcnNGb3JUZXh0
dXJlQ2FjaGluZyhDQ0xheWVyVHJlZUhvc3RJbXBsKiBsYXllclRyZWVIb3N0SW1wbCwgQ0NMYXll
ckltcGwqJiByb290UHRyLCBDQ0xheWVySW1wbComIGludGVybWVkaWF0ZUxheWVyUHRyLCBDQ0xh
eWVySW1wbComIHN1cmZhY2VMYXllclB0ciwgQ0NMYXllckltcGwqJiBjaGlsZFB0ciwgY29uc3Qg
SW50U2l6ZSYgcm9vdFNpemUpCiB7CiAgICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjb250
ZXh0ID0gQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKGFkb3B0UHRyKG5ldyBQYXJ0aWFsU3dh
cENvbnRleHQpKTsKQEAgLTI0OTAsNTAgKzI1MDYsMjAgQEAgc3RhdGljIHZvaWQgc2V0dXBMYXll
cnNGb3JUZXh0dXJlQ2FjaGluZyhDQ0xheWVyVHJlZUhvc3RJbXBsKiBsYXllclRyZWVIb3N0SW1w
bCwKICAgICByb290LT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KDAsIDApKTsKICAgICByb290LT5z
ZXRCb3VuZHMocm9vdFNpemUpOwogICAgIHJvb3QtPnNldENvbnRlbnRCb3VuZHMocm9vdFNpemUp
OwotICAgIHJvb3QtPnNldFZpc2libGVDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50KDAsIDAp
LCByb290U2l6ZSkpOwogICAgIHJvb3QtPnNldERyYXdzQ29udGVudCh0cnVlKTsKICAgICBsYXll
clRyZWVIb3N0SW1wbC0+c2V0Um9vdExheWVyKHJvb3QucmVsZWFzZSgpKTsKIAotICAgIC8vIElu
dGVybWVkaWF0ZSBsYXllciBkb2VzIG5vdCBvd24gYSBzdXJmYWNlLCBhbmQgZG9lcyBub3QgZHJh
dyBjb250ZW50LgotICAgIE93blB0cjxDQ0xheWVySW1wbD4gaW50ZXJtZWRpYXRlTGF5ZXIgPSBD
Q0xheWVySW1wbDo6Y3JlYXRlKDIpOwotICAgIGludGVybWVkaWF0ZUxheWVyUHRyID0gaW50ZXJt
ZWRpYXRlTGF5ZXIuZ2V0KCk7Ci0KLSAgICBpbnRlcm1lZGlhdGVMYXllclB0ci0+c2V0QW5jaG9y
UG9pbnQoRmxvYXRQb2ludCgwLCAwKSk7Ci0gICAgaW50ZXJtZWRpYXRlTGF5ZXJQdHItPnNldFBv
c2l0aW9uKEZsb2F0UG9pbnQoMTAsIDEwKSk7Ci0gICAgaW50ZXJtZWRpYXRlTGF5ZXJQdHItPnNl
dEJvdW5kcyhyb290U2l6ZSk7Ci0gICAgaW50ZXJtZWRpYXRlTGF5ZXJQdHItPnNldENvbnRlbnRC
b3VuZHMocm9vdFNpemUpOwotICAgIGludGVybWVkaWF0ZUxheWVyUHRyLT5zZXRWaXNpYmxlQ29u
dGVudFJlY3QoSW50UmVjdChJbnRQb2ludCgwLCAwKSwgcm9vdFNpemUpKTsKKyAgICBhZGREcmF3
aW5nTGF5ZXJUbyhyb290UHRyLCAyLCBJbnRSZWN0KDEwLCAxMCwgcm9vdFNpemUud2lkdGgoKSwg
cm9vdFNpemUuaGVpZ2h0KCkpLCAmaW50ZXJtZWRpYXRlTGF5ZXJQdHIpOwogICAgIGludGVybWVk
aWF0ZUxheWVyUHRyLT5zZXREcmF3c0NvbnRlbnQoZmFsc2UpOyAvLyBvbmx5IGNoaWxkcmVuIGRy
YXcgY29udGVudAotICAgIHJvb3RQdHItPmFkZENoaWxkKGludGVybWVkaWF0ZUxheWVyLnJlbGVh
c2UoKSk7Ci0KLSAgICBPd25QdHI8Q0NMYXllckltcGw+IHN1cmZhY2VMYXllciA9IENDTGF5ZXJJ
bXBsOjpjcmVhdGUoMyk7Ci0gICAgc3VyZmFjZUxheWVyUHRyID0gc3VyZmFjZUxheWVyLmdldCgp
OwogCiAgICAgLy8gU3VyZmFjZSBsYXllciBpcyB0aGUgbGF5ZXIgdGhhdCBjaGFuZ2VzIGl0cyBv
cGFjaXR5CiAgICAgLy8gSXQgd2lsbCBjb250YWluIG90aGVyIGxheWVycyB0aGF0IGRyYXcgY29u
dGVudC4KLSAgICBJbnRTaXplIHN1cmZhY2VTaXplKHJvb3RTaXplLndpZHRoKCksIHJvb3RTaXpl
LmhlaWdodCgpKTsKLSAgICBzdXJmYWNlTGF5ZXJQdHItPnNldEFuY2hvclBvaW50KEZsb2F0UG9p
bnQoMCwgMCkpOwotICAgIHN1cmZhY2VMYXllclB0ci0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCgx
MCwgMTApKTsKLSAgICBzdXJmYWNlTGF5ZXJQdHItPnNldEJvdW5kcyhzdXJmYWNlU2l6ZSk7Ci0g
ICAgc3VyZmFjZUxheWVyUHRyLT5zZXRDb250ZW50Qm91bmRzKHN1cmZhY2VTaXplKTsKLSAgICBz
dXJmYWNlTGF5ZXJQdHItPnNldFZpc2libGVDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50KDAs
IDApLCBzdXJmYWNlU2l6ZSkpOworICAgIGFkZERyYXdpbmdMYXllclRvKGludGVybWVkaWF0ZUxh
eWVyUHRyLCAzLCBJbnRSZWN0KDEwLCAxMCwgcm9vdFNpemUud2lkdGgoKSwgcm9vdFNpemUuaGVp
Z2h0KCkpLCAmc3VyZmFjZUxheWVyUHRyKTsKICAgICBzdXJmYWNlTGF5ZXJQdHItPnNldERyYXdz
Q29udGVudChmYWxzZSk7IC8vIG9ubHkgY2hpbGRyZW4gZHJhdyBjb250ZW50CiAgICAgc3VyZmFj
ZUxheWVyUHRyLT5zZXRPcGFjaXR5KDAuNWYpOyAvLyBUaGlzIHdpbGwgY2F1c2UgaXQgdG8gaGF2
ZSBhIHN1cmZhY2UKLSAgICBpbnRlcm1lZGlhdGVMYXllclB0ci0+YWRkQ2hpbGQoc3VyZmFjZUxh
eWVyLnJlbGVhc2UoKSk7CiAKICAgICAvLyBDaGlsZCBvZiB0aGUgc3VyZmFjZSBsYXllciB3aWxs
IHByb2R1Y2Ugc29tZSBxdWFkcwotICAgIE93blB0cjxGYWtlTGF5ZXJXaXRoUXVhZHM+IGNoaWxk
ID0gRmFrZUxheWVyV2l0aFF1YWRzOjpjcmVhdGUoNCk7Ci0gICAgY2hpbGRQdHIgPSBjaGlsZC5n
ZXQoKTsKLQotICAgIEludFNpemUgY2hpbGRTaXplKHJvb3RTaXplLndpZHRoKCksIHJvb3RTaXpl
LmhlaWdodCgpKTsKLSAgICBjaGlsZFB0ci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgwLCAw
KSk7Ci0gICAgY2hpbGRQdHItPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQoNSwgNSkpOwotICAgIGNo
aWxkUHRyLT5zZXRCb3VuZHMoY2hpbGRTaXplKTsKLSAgICBjaGlsZFB0ci0+c2V0Q29udGVudEJv
dW5kcyhjaGlsZFNpemUpOwotICAgIGNoaWxkUHRyLT5zZXRWaXNpYmxlQ29udGVudFJlY3QoSW50
UmVjdChJbnRQb2ludCgwLCAwKSwgY2hpbGRTaXplKSk7Ci0gICAgY2hpbGRQdHItPnNldERyYXdz
Q29udGVudCh0cnVlKTsKLQotICAgIHN1cmZhY2VMYXllclB0ci0+YWRkQ2hpbGQoY2hpbGQucmVs
ZWFzZSgpKTsKKyAgICBhZGREcmF3aW5nTGF5ZXJUbyhzdXJmYWNlTGF5ZXJQdHIsIDQsIEludFJl
Y3QoNSwgNSwgcm9vdFNpemUud2lkdGgoKSwgcm9vdFNpemUuaGVpZ2h0KCkpLCAmY2hpbGRQdHIp
OwogfQogCiBjbGFzcyBMYXllclJlbmRlcmVyQ2hyb21pdW1XaXRoUmVsZWFzZVRleHR1cmVzIDog
cHVibGljIExheWVyUmVuZGVyZXJDaHJvbWl1bSB7CkBAIC0yNTQxLDYgKzI1MjcsNjEyIEBAIHB1
YmxpYzoKICAgICB1c2luZyBMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbGVhc2VSZW5kZXJQYXNz
VGV4dHVyZXM7CiB9OwogCitURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHRleHR1cmVD
YWNoaW5nV2l0aENsaXBwaW5nKQoreworICAgIENDU2V0dGluZ3M6OnNldFBhcnRpYWxTd2FwRW5h
YmxlZCh0cnVlKTsKKworICAgIENDTGF5ZXJUcmVlU2V0dGluZ3Mgc2V0dGluZ3M7CisgICAgT3du
UHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IG15SG9zdEltcGwgPSBDQ0xheWVyVHJlZUhvc3RJbXBs
OjpjcmVhdGUoc2V0dGluZ3MsIHRoaXMpOworCisgICAgQ0NMYXllckltcGwqIHJvb3RQdHI7Cisg
ICAgQ0NMYXllckltcGwqIHN1cmZhY2VMYXllclB0cjsKKworICAgIE93blB0cjxDQ0dyYXBoaWNz
Q29udGV4dD4gY29udGV4dCA9IENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRChhZG9wdFB0cihu
ZXcgUGFydGlhbFN3YXBDb250ZXh0KSk7CisKKyAgICBJbnRTaXplIHJvb3RTaXplKDEwMCwgMTAw
KTsKKworICAgIG15SG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQucmVs
ZWFzZSgpLCBVbnRocm90dGxlZFVwbG9hZGVyKTsKKyAgICBteUhvc3RJbXBsLT5zZXRWaWV3cG9y
dFNpemUoSW50U2l6ZShyb290U2l6ZS53aWR0aCgpLCByb290U2l6ZS5oZWlnaHQoKSkpOworCisg
ICAgT3duUHRyPENDTGF5ZXJJbXBsPiByb290ID0gQ0NMYXllckltcGw6OmNyZWF0ZSgxKTsKKyAg
ICByb290UHRyID0gcm9vdC5nZXQoKTsKKworICAgIHJvb3QtPnNldEFuY2hvclBvaW50KEZsb2F0
UG9pbnQoMCwgMCkpOworICAgIHJvb3QtPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQoMCwgMCkpOwor
ICAgIHJvb3QtPnNldEJvdW5kcyhyb290U2l6ZSk7CisgICAgcm9vdC0+c2V0Q29udGVudEJvdW5k
cyhyb290U2l6ZSk7CisgICAgcm9vdC0+c2V0RHJhd3NDb250ZW50KHRydWUpOworICAgIHJvb3Qt
PnNldE1hc2tzVG9Cb3VuZHModHJ1ZSk7CisgICAgbXlIb3N0SW1wbC0+c2V0Um9vdExheWVyKHJv
b3QucmVsZWFzZSgpKTsKKworICAgIGFkZERyYXdpbmdMYXllclRvKHJvb3RQdHIsIDMsIEludFJl
Y3QoMCwgMCwgcm9vdFNpemUud2lkdGgoKSwgcm9vdFNpemUuaGVpZ2h0KCkpLCAmc3VyZmFjZUxh
eWVyUHRyKTsKKyAgICBzdXJmYWNlTGF5ZXJQdHItPnNldERyYXdzQ29udGVudChmYWxzZSk7CisK
KyAgICAvLyBTdXJmYWNlIGxheWVyIGlzIHRoZSBsYXllciB0aGF0IGNoYW5nZXMgaXRzIG9wYWNp
dHkKKyAgICAvLyBJdCB3aWxsIGNvbnRhaW4gb3RoZXIgbGF5ZXJzIHRoYXQgZHJhdyBjb250ZW50
LgorICAgIHN1cmZhY2VMYXllclB0ci0+c2V0T3BhY2l0eSgwLjVmKTsgLy8gVGhpcyB3aWxsIGNh
dXNlIGl0IHRvIGhhdmUgYSBzdXJmYWNlCisKKyAgICBhZGREcmF3aW5nTGF5ZXJUbyhzdXJmYWNl
TGF5ZXJQdHIsIDQsIEludFJlY3QoMCwgMCwgMTAwLCAzKSwgMCk7CisgICAgYWRkRHJhd2luZ0xh
eWVyVG8oc3VyZmFjZUxheWVyUHRyLCA1LCBJbnRSZWN0KDAsIDk3LCAxMDAsIDMpLCAwKTsKKwor
ICAgIC8vIFJvdGF0aW9uIHdpbGwgcHV0IHBhcnQgb2YgdGhlIGNoaWxkIG91c2lkZSB0aGUgYm91
bmRzIG9mIHRoZSByb290IGxheWVyLgorICAgIC8vIE5ldmVydGhlbGVzcywgdGhlIGNoaWxkIGxh
eWVycyBzaG91bGQgYmUgZHJhd24uCisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNm
b3JtID0gc3VyZmFjZUxheWVyUHRyLT50cmFuc2Zvcm0oKTsKKyAgICB0cmFuc2Zvcm0udHJhbnNs
YXRlKDUwLCA1MCk7CisgICAgdHJhbnNmb3JtLnJvdGF0ZSgzNSk7CisgICAgdHJhbnNmb3JtLnRy
YW5zbGF0ZSgtNTAsIC01MCk7CisgICAgc3VyZmFjZUxheWVyUHRyLT5zZXRUcmFuc2Zvcm0odHJh
bnNmb3JtKTsKKworICAgIHsKKyAgICAgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRh
IGZyYW1lOworICAgICAgICBFWFBFQ1RfVFJVRShteUhvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZy
YW1lKSk7CisKKyAgICAgICAgLy8gTXVzdCByZWNlaXZlIHR3byByZW5kZXIgcGFzc2VzLCBlYWNo
IHdpdGggb25lIHF1YWQKKyAgICAgICAgQVNTRVJUX0VRKDJVLCBmcmFtZS5yZW5kZXJQYXNzZXMu
c2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKDJVLCBmcmFtZS5yZW5kZXJQYXNzZXNbMF0tPnF1
YWRMaXN0KCkuc2l6ZSgpKTsKKyAgICAgICAgQVNTRVJUX0VRKDFVLCBmcmFtZS5yZW5kZXJQYXNz
ZXNbMV0tPnF1YWRMaXN0KCkuc2l6ZSgpKTsKKworICAgICAgICAvLyBWZXJpZnkgdGhhdCB0aGUg
Y2hpbGQgbGF5ZXJzIGhhdmUgYmVlbiBkcmF3biBlbnRpcmVseS4KKyAgICAgICAgSW50UmVjdCBx
dWFkVmlzaWJsZVJlY3QgPSBmcmFtZS5yZW5kZXJQYXNzZXNbMF0tPnF1YWRMaXN0KClbMF0tPnF1
YWRWaXNpYmxlUmVjdCgpOworICAgICAgICBFWFBFQ1RfSU5UX1JFQ1RfRVEoSW50UmVjdCgwLCAw
LCAxMDAsIDMpLCBxdWFkVmlzaWJsZVJlY3QpOworCisgICAgICAgIHF1YWRWaXNpYmxlUmVjdCA9
IGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+cXVhZExpc3QoKVsxXS0+cXVhZFZpc2libGVSZWN0KCk7
CisgICAgICAgIEVYUEVDVF9JTlRfUkVDVF9FUShJbnRSZWN0KDAsIDAsIDEwMCwgMyksIHF1YWRW
aXNpYmxlUmVjdCk7CisKKyAgICAgICAgRVhQRUNUX0VRKENDRHJhd1F1YWQ6OlJlbmRlclBhc3Ms
IGZyYW1lLnJlbmRlclBhc3Nlc1sxXS0+cXVhZExpc3QoKVswXS0+bWF0ZXJpYWwoKSk7CisgICAg
ICAgIENDUmVuZGVyUGFzc0RyYXdRdWFkKiBxdWFkID0gc3RhdGljX2Nhc3Q8Q0NSZW5kZXJQYXNz
RHJhd1F1YWQqPihmcmFtZS5yZW5kZXJQYXNzZXNbMV0tPnF1YWRMaXN0KClbMF0uZ2V0KCkpOwor
ICAgICAgICBFWFBFQ1RfRkFMU0UocXVhZC0+Y29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUo
KS5pc0VtcHR5KCkpOworCisgICAgICAgIG15SG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOwor
ICAgICAgICBteUhvc3RJbXBsLT5kaWREcmF3QWxsTGF5ZXJzKGZyYW1lKTsKKyAgICB9CisKKyAg
ICB0cmFuc2Zvcm0gPSBzdXJmYWNlTGF5ZXJQdHItPnRyYW5zZm9ybSgpOworICAgIHRyYW5zZm9y
bS50cmFuc2xhdGUoNTAsIDUwKTsKKyAgICB0cmFuc2Zvcm0ucm90YXRlKC0zNSk7CisgICAgdHJh
bnNmb3JtLnRyYW5zbGF0ZSgtNTAsIC01MCk7CisgICAgc3VyZmFjZUxheWVyUHRyLT5zZXRUcmFu
c2Zvcm0odHJhbnNmb3JtKTsKKworICAgIC8vIFRoZSBzdXJmYWNlIGlzIG5vdyBhbGlnbmVkIGFn
YWluLCBhbmQgdGhlIGNsaXBwZWQgcGFydHMgYXJlIGV4cG9zZWQuCisgICAgLy8gVGhhdCBzaG91
bGQgYmUgT0ssIGFzIHdlJ3ZlIGFscmVhZHkgdmVyaWZpZWQgdGhhdCB0aGUgcXVhZHMgYXJlIGRy
YXduIGluIGZ1bGwuCisgICAgLy8gVmVyaWZ5IHRoYXQgdGhlIHJlbmRlciBwYXNzIGlzIHJlbW92
ZWQuCisgICAgeworICAgICAgICBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEgZnJhbWU7
CisgICAgICAgIEVYUEVDVF9UUlVFKG15SG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsK
KworICAgICAgICAvLyBNdXN0IHJlY2VpdmUgYSBzaW5nbGUgcmVuZGVyIHBhc3MgdXNpbmcgYSBj
YWNoZWQgdGV4dHVyZS4KKyAgICAgICAgQVNTRVJUX0VRKDFVLCBmcmFtZS5yZW5kZXJQYXNzZXMu
c2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKDFVLCBmcmFtZS5yZW5kZXJQYXNzZXNbMF0tPnF1
YWRMaXN0KCkuc2l6ZSgpKTsKKworICAgICAgICBteUhvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1l
KTsKKyAgICAgICAgbXlIb3N0SW1wbC0+ZGlkRHJhd0FsbExheWVycyhmcmFtZSk7CisgICAgfQor
fQorCitURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHRleHR1cmVDYWNoaW5nV2l0aE9j
Y2x1c2lvbikKK3sKKyAgICBDQ1NldHRpbmdzOjpzZXRQYXJ0aWFsU3dhcEVuYWJsZWQoZmFsc2Up
OworCisgICAgQ0NMYXllclRyZWVTZXR0aW5ncyBzZXR0aW5nczsKKyAgICBPd25QdHI8Q0NMYXll
clRyZWVIb3N0SW1wbD4gbXlIb3N0SW1wbCA9IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShz
ZXR0aW5ncywgdGhpcyk7CisKKyAgICAvLyBMYXllcnMgYXJlIHN0cnVjdHVyZSBhcyBmb2xsb3dz
OgorICAgIC8vCisgICAgLy8gIFIgKy0tIFMxICstIEwxMCAob3duaW5nKQorICAgIC8vICAgIHwg
ICAgICArLSBMMTEKKyAgICAvLyAgICB8ICAgICAgKy0gTDEyCisgICAgLy8gICAgfAorICAgIC8v
ICAgICstLSBTMiArLSBMMjAgKG93bmluZykKKyAgICAvLyAgICAgICAgICAgKy0gTDIxCisgICAg
Ly8KKyAgICAvLyBPY2NsdXNpb246CisgICAgLy8gTDEyIG9jY2x1ZGVzIEwxMSAoaW50ZXJuYWwp
CisgICAgLy8gTDIwIG9jY2x1ZGVzIEwxMCAoZXh0ZXJuYWwpCisgICAgLy8gTDIxIG9jY2x1ZGVz
IEwyMCAoaW50ZXJuYWwpCisKKyAgICBDQ0xheWVySW1wbCogcm9vdFB0cjsKKyAgICBDQ0xheWVy
SW1wbCogbGF5ZXJTMVB0cjsKKyAgICBDQ0xheWVySW1wbCogbGF5ZXJTMlB0cjsKKworICAgIE93
blB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY29udGV4dCA9IENDR3JhcGhpY3NDb250ZXh0OjpjcmVh
dGUzRChhZG9wdFB0cihuZXcgUGFydGlhbFN3YXBDb250ZXh0KSk7CisKKyAgICBJbnRTaXplIHJv
b3RTaXplKDEwMDAsIDEwMDApOworCisgICAgbXlIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVu
ZGVyZXIoY29udGV4dC5yZWxlYXNlKCksIFVudGhyb3R0bGVkVXBsb2FkZXIpOworICAgIG15SG9z
dEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKHJvb3RTaXplLndpZHRoKCksIHJvb3RTaXpl
LmhlaWdodCgpKSk7CisKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBDQ0xheWVySW1w
bDo6Y3JlYXRlKDEpOworICAgIHJvb3RQdHIgPSByb290LmdldCgpOworCisgICAgcm9vdC0+c2V0
QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgwLCAwKSk7CisgICAgcm9vdC0+c2V0UG9zaXRpb24oRmxv
YXRQb2ludCgwLCAwKSk7CisgICAgcm9vdC0+c2V0Qm91bmRzKHJvb3RTaXplKTsKKyAgICByb290
LT5zZXRDb250ZW50Qm91bmRzKHJvb3RTaXplKTsKKyAgICByb290LT5zZXREcmF3c0NvbnRlbnQo
dHJ1ZSk7CisgICAgcm9vdC0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKKyAgICBteUhvc3RJbXBs
LT5zZXRSb290TGF5ZXIocm9vdC5yZWxlYXNlKCkpOworCisgICAgYWRkRHJhd2luZ0xheWVyVG8o
cm9vdFB0ciwgMiwgSW50UmVjdCgzMDAsIDMwMCwgMzAwLCAzMDApLCAmbGF5ZXJTMVB0cik7Cisg
ICAgbGF5ZXJTMVB0ci0+c2V0Rm9yY2VSZW5kZXJTdXJmYWNlKHRydWUpOworCisgICAgYWRkRHJh
d2luZ0xheWVyVG8obGF5ZXJTMVB0ciwgMywgSW50UmVjdCgxMCwgMTAsIDEwLCAxMCksIDApOyAv
LyBMMTEKKyAgICBhZGREcmF3aW5nTGF5ZXJUbyhsYXllclMxUHRyLCA0LCBJbnRSZWN0KDAsIDAs
IDMwLCAzMCksIDApOyAvLyBMMTIKKworICAgIGFkZERyYXdpbmdMYXllclRvKHJvb3RQdHIsIDUs
IEludFJlY3QoNTUwLCAyNTAsIDMwMCwgNDAwKSwgJmxheWVyUzJQdHIpOworICAgIGxheWVyUzJQ
dHItPnNldEZvcmNlUmVuZGVyU3VyZmFjZSh0cnVlKTsKKworICAgIGFkZERyYXdpbmdMYXllclRv
KGxheWVyUzJQdHIsIDYsIEludFJlY3QoMjAsIDIwLCA1LCA1KSwgMCk7IC8vIEwyMQorCisgICAg
Ly8gSW5pdGlhbCBkcmF3IC0gbXVzdCByZWNlaXZlIGFsbCBxdWFkcworICAgIHsKKyAgICAgICAg
Q0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRhIGZyYW1lOworICAgICAgICBFWFBFQ1RfVFJV
RShteUhvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CisKKyAgICAgICAgLy8gTXVzdCBy
ZWNlaXZlIDMgcmVuZGVyIHBhc3Nlcy4KKyAgICAgICAgLy8gRm9yIFJvb3QsIHRoZXJlIGFyZSAy
IHF1YWRzOyBmb3IgUzEsIHRoZXJlIGFyZSAzIHF1YWRzOyBmb3IgUzIsIHRoZXJlIGlzIDEgcXVh
ZC4KKyAgICAgICAgQVNTRVJUX0VRKDNVLCBmcmFtZS5yZW5kZXJQYXNzZXMuc2l6ZSgpKTsKKwor
ICAgICAgICBFWFBFQ1RfRVEoMlUsIGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+cXVhZExpc3QoKS5z
aXplKCkpOworICAgICAgICBFWFBFQ1RfRVEoM1UsIGZyYW1lLnJlbmRlclBhc3Nlc1sxXS0+cXVh
ZExpc3QoKS5zaXplKCkpOworICAgICAgICBFWFBFQ1RfRVEoMlUsIGZyYW1lLnJlbmRlclBhc3Nl
c1syXS0+cXVhZExpc3QoKS5zaXplKCkpOworCisgICAgICAgIG15SG9zdEltcGwtPmRyYXdMYXll
cnMoZnJhbWUpOworICAgICAgICBteUhvc3RJbXBsLT5kaWREcmF3QWxsTGF5ZXJzKGZyYW1lKTsK
KyAgICB9CisKKyAgICAvLyAiVW5vY2NsdWRlIiBzdXJmYWNlIFMxIGFuZCByZXBlYXQgZHJhdy4K
KyAgICAvLyBNdXN0IHJlbW92ZSBTMidzIHJlbmRlciBwYXNzIHNpbmNlIGl0J3MgY2FjaGVkOwor
ICAgIC8vIE11c3Qga2VlcCBTMSBxdWFkcyBiZWNhdXNlIHRleHR1cmUgY29udGFpbmVkIGV4dGVy
bmFsIG9jY2x1c2lvbi4KKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm0gPSBs
YXllclMyUHRyLT50cmFuc2Zvcm0oKTsKKyAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKDE1MCwgMTUw
KTsKKyAgICBsYXllclMyUHRyLT5zZXRUcmFuc2Zvcm0odHJhbnNmb3JtKTsKKyAgICB7CisgICAg
ICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSBmcmFtZTsKKyAgICAgICAgRVhQRUNU
X1RSVUUobXlIb3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworCisgICAgICAgIC8vIE11
c3QgcmVjZWl2ZSAyIHJlbmRlciBwYXNzZXMuCisgICAgICAgIC8vIEZvciBSb290LCB0aGVyZSBh
cmUgMiBxdWFkcworICAgICAgICAvLyBGb3IgUzEsIHRoZSBudW1iZXIgb2YgcXVhZHMgZGVwZW5k
cyBvbiB3aGF0IGdvdCB1bm9jY2x1ZGVkLCBzbyBub3QgYXNzZXJ0ZWQgYmV5b25kIGJlaW5nIHBv
c2l0aXZlLgorICAgICAgICAvLyBGb3IgUzIsIHRoZXJlIGlzIG5vIHJlbmRlciBwYXNzCisgICAg
ICAgIEFTU0VSVF9FUSgyVSwgZnJhbWUucmVuZGVyUGFzc2VzLnNpemUoKSk7CisKKyAgICAgICAg
RVhQRUNUX0dUKGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+cXVhZExpc3QoKS5zaXplKCksIDBVKTsK
KyAgICAgICAgRVhQRUNUX0VRKDJVLCBmcmFtZS5yZW5kZXJQYXNzZXNbMV0tPnF1YWRMaXN0KCku
c2l6ZSgpKTsKKworICAgICAgICBteUhvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKKyAgICAg
ICAgbXlIb3N0SW1wbC0+ZGlkRHJhd0FsbExheWVycyhmcmFtZSk7CisgICAgfQorCisgICAgLy8g
IlJlLW9jY2x1ZGUiIHN1cmZhY2UgUzEgYW5kIHJlcGVhdCBkcmF3LgorICAgIC8vIE11c3QgcmVt
b3ZlIFMxJ3MgcmVuZGVyIHBhc3Mgc2luY2UgaXQgaXMgbm93IGF2YWlsYWJsZSBpbiBmdWxsLgor
ICAgIC8vIFMyIGhhcyBubyBjaGFuZ2Ugc28gbXVzdCBhbHNvIGJlIHJlbW92ZWQuCisgICAgdHJh
bnNmb3JtID0gbGF5ZXJTMlB0ci0+dHJhbnNmb3JtKCk7CisgICAgdHJhbnNmb3JtLnRyYW5zbGF0
ZSgtMTUsIC0xNSk7CisgICAgbGF5ZXJTMlB0ci0+c2V0VHJhbnNmb3JtKHRyYW5zZm9ybSk7Cisg
ICAgeworICAgICAgICBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEgZnJhbWU7CisgICAg
ICAgIEVYUEVDVF9UUlVFKG15SG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKKworICAg
ICAgICAvLyBNdXN0IHJlY2VpdmUgMSByZW5kZXIgcGFzcyAtIGZvciB0aGUgcm9vdC4KKyAgICAg
ICAgQVNTRVJUX0VRKDFVLCBmcmFtZS5yZW5kZXJQYXNzZXMuc2l6ZSgpKTsKKworICAgICAgICBF
WFBFQ1RfRVEoMlUsIGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+cXVhZExpc3QoKS5zaXplKCkpOwor
CisgICAgICAgIG15SG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOworICAgICAgICBteUhvc3RJ
bXBsLT5kaWREcmF3QWxsTGF5ZXJzKGZyYW1lKTsKKyAgICB9CisKK30KKworVEVTVF9GKENDTGF5
ZXJUcmVlSG9zdEltcGxUZXN0LCB0ZXh0dXJlQ2FjaGluZ1dpdGhPY2NsdXNpb25FYXJseU91dCkK
K3sKKyAgICBDQ1NldHRpbmdzOjpzZXRQYXJ0aWFsU3dhcEVuYWJsZWQoZmFsc2UpOworCisgICAg
Q0NMYXllclRyZWVTZXR0aW5ncyBzZXR0aW5nczsKKyAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0
SW1wbD4gbXlIb3N0SW1wbCA9IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShzZXR0aW5ncywg
dGhpcyk7CisKKyAgICAvLyBMYXllcnMgYXJlIHN0cnVjdHVyZSBhcyBmb2xsb3dzOgorICAgIC8v
CisgICAgLy8gIFIgKy0tIFMxICstIEwxMCAob3duaW5nLCBub24gZHJhd2luZykKKyAgICAvLyAg
ICB8ICAgICAgKy0gTDExIChjb3JuZXIsIHVub2NjbHVkZWQpCisgICAgLy8gICAgfCAgICAgICst
IEwxMiAoY29ybmVyLCB1bm9jY2x1ZGVkKQorICAgIC8vICAgIHwgICAgICArLSBMMTMgKGNvcm5l
ciwgdW5vY2NsdWRlZCkKKyAgICAvLyAgICB8ICAgICAgKy0gTDE0IChjb3JuZXIsIGVudGlyZWx5
IG9jY2x1ZGVkKQorICAgIC8vICAgIHwKKyAgICAvLyAgICArLS0gUzIgKy0gTDIwIChvd25pbmcs
IGRyYXdpbmcpCisgICAgLy8KKworICAgIENDTGF5ZXJJbXBsKiByb290UHRyOworICAgIENDTGF5
ZXJJbXBsKiBsYXllclMxUHRyOworICAgIENDTGF5ZXJJbXBsKiBsYXllclMyUHRyOworCisgICAg
T3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjb250ZXh0ID0gQ0NHcmFwaGljc0NvbnRleHQ6OmNy
ZWF0ZTNEKGFkb3B0UHRyKG5ldyBQYXJ0aWFsU3dhcENvbnRleHQpKTsKKworICAgIEludFNpemUg
cm9vdFNpemUoMTAwMCwgMTAwMCk7CisKKyAgICBteUhvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJS
ZW5kZXJlcihjb250ZXh0LnJlbGVhc2UoKSwgVW50aHJvdHRsZWRVcGxvYWRlcik7CisgICAgbXlI
b3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUocm9vdFNpemUud2lkdGgoKSwgcm9vdFNp
emUuaGVpZ2h0KCkpKTsKKworICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IENDTGF5ZXJJ
bXBsOjpjcmVhdGUoMSk7CisgICAgcm9vdFB0ciA9IHJvb3QuZ2V0KCk7CisKKyAgICByb290LT5z
ZXRBbmNob3JQb2ludChGbG9hdFBvaW50KDAsIDApKTsKKyAgICByb290LT5zZXRQb3NpdGlvbihG
bG9hdFBvaW50KDAsIDApKTsKKyAgICByb290LT5zZXRCb3VuZHMocm9vdFNpemUpOworICAgIHJv
b3QtPnNldENvbnRlbnRCb3VuZHMocm9vdFNpemUpOworICAgIHJvb3QtPnNldERyYXdzQ29udGVu
dCh0cnVlKTsKKyAgICByb290LT5zZXRNYXNrc1RvQm91bmRzKHRydWUpOworICAgIG15SG9zdElt
cGwtPnNldFJvb3RMYXllcihyb290LnJlbGVhc2UoKSk7CisKKyAgICBhZGREcmF3aW5nTGF5ZXJU
byhyb290UHRyLCAyLCBJbnRSZWN0KDAsIDAsIDgwMCwgODAwKSwgJmxheWVyUzFQdHIpOworICAg
IGxheWVyUzFQdHItPnNldEZvcmNlUmVuZGVyU3VyZmFjZSh0cnVlKTsKKyAgICBsYXllclMxUHRy
LT5zZXREcmF3c0NvbnRlbnQoZmFsc2UpOworCisgICAgYWRkRHJhd2luZ0xheWVyVG8obGF5ZXJT
MVB0ciwgMywgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCksIDApOyAvLyBMMTEKKyAgICBhZGREcmF3
aW5nTGF5ZXJUbyhsYXllclMxUHRyLCA0LCBJbnRSZWN0KDAsIDUwMCwgMzAwLCAzMDApLCAwKTsg
Ly8gTDEyCisgICAgYWRkRHJhd2luZ0xheWVyVG8obGF5ZXJTMVB0ciwgNSwgSW50UmVjdCg1MDAs
IDAsIDMwMCwgMzAwKSwgMCk7IC8vIEwxMworICAgIGFkZERyYXdpbmdMYXllclRvKGxheWVyUzFQ
dHIsIDYsIEludFJlY3QoNTAwLCA1MDAsIDMwMCwgMzAwKSwgMCk7IC8vIEwxNAorICAgIGFkZERy
YXdpbmdMYXllclRvKGxheWVyUzFQdHIsIDksIEludFJlY3QoNTAwLCA1MDAsIDMwMCwgMzAwKSwg
MCk7IC8vIEwxNAorCisgICAgYWRkRHJhd2luZ0xheWVyVG8ocm9vdFB0ciwgNywgSW50UmVjdCg0
NTAsIDQ1MCwgNDUwLCA0NTApLCAmbGF5ZXJTMlB0cik7CisgICAgbGF5ZXJTMlB0ci0+c2V0Rm9y
Y2VSZW5kZXJTdXJmYWNlKHRydWUpOworCisgICAgLy8gSW5pdGlhbCBkcmF3IC0gbXVzdCByZWNl
aXZlIGFsbCBxdWFkcworICAgIHsKKyAgICAgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVE
YXRhIGZyYW1lOworICAgICAgICBFWFBFQ1RfVFJVRShteUhvc3RJbXBsLT5wcmVwYXJlVG9EcmF3
KGZyYW1lKSk7CisKKyAgICAgICAgLy8gTXVzdCByZWNlaXZlIDMgcmVuZGVyIHBhc3Nlcy4KKyAg
ICAgICAgLy8gRm9yIFJvb3QsIHRoZXJlIGFyZSAyIHF1YWRzOyBmb3IgUzEsIHRoZXJlIGFyZSAz
IHF1YWRzOyBmb3IgUzIsIHRoZXJlIGlzIDEgcXVhZC4KKyAgICAgICAgQVNTRVJUX0VRKDNVLCBm
cmFtZS5yZW5kZXJQYXNzZXMuc2l6ZSgpKTsKKworICAgICAgICBFWFBFQ1RfRVEoMVUsIGZyYW1l
LnJlbmRlclBhc3Nlc1swXS0+cXVhZExpc3QoKS5zaXplKCkpOworCisgICAgICAgIC8vIEwxNCBp
cyBjdWxsZWQsIHNvIG9ubHkgMyBxdWFkcy4KKyAgICAgICAgRVhQRUNUX0VRKDNVLCBmcmFtZS5y
ZW5kZXJQYXNzZXNbMV0tPnF1YWRMaXN0KCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKDJV
LCBmcmFtZS5yZW5kZXJQYXNzZXNbMl0tPnF1YWRMaXN0KCkuc2l6ZSgpKTsKKworICAgICAgICBt
eUhvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKKyAgICAgICAgbXlIb3N0SW1wbC0+ZGlkRHJh
d0FsbExheWVycyhmcmFtZSk7CisgICAgfQorCisgICAgLy8gIlVub2NjbHVkZSIgc3VyZmFjZSBT
MSBhbmQgcmVwZWF0IGRyYXcuCisgICAgLy8gTXVzdCByZW1vdmUgUzIncyByZW5kZXIgcGFzcyBz
aW5jZSBpdCdzIGNhY2hlZDsKKyAgICAvLyBNdXN0IGtlZXAgUzEgcXVhZHMgYmVjYXVzZSB0ZXh0
dXJlIGNvbnRhaW5lZCBleHRlcm5hbCBvY2NsdXNpb24uCisgICAgV2ViVHJhbnNmb3JtYXRpb25N
YXRyaXggdHJhbnNmb3JtID0gbGF5ZXJTMlB0ci0+dHJhbnNmb3JtKCk7CisgICAgdHJhbnNmb3Jt
LnRyYW5zbGF0ZSgxMDAsIDEwMCk7CisgICAgbGF5ZXJTMlB0ci0+c2V0VHJhbnNmb3JtKHRyYW5z
Zm9ybSk7CisgICAgeworICAgICAgICBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEgZnJh
bWU7CisgICAgICAgIEVYUEVDVF9UUlVFKG15SG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUp
KTsKKworICAgICAgICAvLyBNdXN0IHJlY2VpdmUgMiByZW5kZXIgcGFzc2VzLgorICAgICAgICAv
LyBGb3IgUm9vdCwgdGhlcmUgYXJlIDIgcXVhZHMKKyAgICAgICAgLy8gRm9yIFMxLCB0aGUgbnVt
YmVyIG9mIHF1YWRzIGRlcGVuZHMgb24gd2hhdCBnb3QgdW5vY2NsdWRlZCwgc28gbm90IGFzc2Vy
dGVkIGJleW9uZCBiZWluZyBwb3NpdGl2ZS4KKyAgICAgICAgLy8gRm9yIFMyLCB0aGVyZSBpcyBu
byByZW5kZXIgcGFzcworICAgICAgICBBU1NFUlRfRVEoMlUsIGZyYW1lLnJlbmRlclBhc3Nlcy5z
aXplKCkpOworCisgICAgICAgIEVYUEVDVF9HVChmcmFtZS5yZW5kZXJQYXNzZXNbMF0tPnF1YWRM
aXN0KCkuc2l6ZSgpLCAwVSk7CisgICAgICAgIEVYUEVDVF9FUSgyVSwgZnJhbWUucmVuZGVyUGFz
c2VzWzFdLT5xdWFkTGlzdCgpLnNpemUoKSk7CisKKyAgICAgICAgbXlIb3N0SW1wbC0+ZHJhd0xh
eWVycyhmcmFtZSk7CisgICAgICAgIG15SG9zdEltcGwtPmRpZERyYXdBbGxMYXllcnMoZnJhbWUp
OworICAgIH0KKworICAgIC8vICJSZS1vY2NsdWRlIiBzdXJmYWNlIFMxIGFuZCByZXBlYXQgZHJh
dy4KKyAgICAvLyBNdXN0IHJlbW92ZSBTMSdzIHJlbmRlciBwYXNzIHNpbmNlIGl0IGlzIG5vdyBh
dmFpbGFibGUgaW4gZnVsbC4KKyAgICAvLyBTMiBoYXMgbm8gY2hhbmdlIHNvIG11c3QgYWxzbyBi
ZSByZW1vdmVkLgorICAgIHRyYW5zZm9ybSA9IGxheWVyUzJQdHItPnRyYW5zZm9ybSgpOworICAg
IHRyYW5zZm9ybS50cmFuc2xhdGUoLTE1LCAtMTUpOworICAgIGxheWVyUzJQdHItPnNldFRyYW5z
Zm9ybSh0cmFuc2Zvcm0pOworICAgIHsKKyAgICAgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJh
bWVEYXRhIGZyYW1lOworICAgICAgICBFWFBFQ1RfVFJVRShteUhvc3RJbXBsLT5wcmVwYXJlVG9E
cmF3KGZyYW1lKSk7CisKKyAgICAgICAgLy8gTXVzdCByZWNlaXZlIDEgcmVuZGVyIHBhc3MgLSBm
b3IgdGhlIHJvb3QuCisgICAgICAgIEFTU0VSVF9FUSgxVSwgZnJhbWUucmVuZGVyUGFzc2VzLnNp
emUoKSk7CisKKyAgICAgICAgRVhQRUNUX0VRKDJVLCBmcmFtZS5yZW5kZXJQYXNzZXNbMF0tPnF1
YWRMaXN0KCkuc2l6ZSgpKTsKKworICAgICAgICBteUhvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1l
KTsKKyAgICAgICAgbXlIb3N0SW1wbC0+ZGlkRHJhd0FsbExheWVycyhmcmFtZSk7CisgICAgfQor
fQorCitURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHRleHR1cmVDYWNoaW5nV2l0aE9j
Y2x1c2lvbkV4dGVybmFsT3ZlckludGVybmFsKQoreworICAgIENDU2V0dGluZ3M6OnNldFBhcnRp
YWxTd2FwRW5hYmxlZChmYWxzZSk7CisKKyAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNldHRpbmdz
OworICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBteUhvc3RJbXBsID0gQ0NMYXllclRy
ZWVIb3N0SW1wbDo6Y3JlYXRlKHNldHRpbmdzLCB0aGlzKTsKKworICAgIC8vIExheWVycyBhcmUg
c3RydWN0dXJlZCBhcyBmb2xsb3dzOgorICAgIC8vCisgICAgLy8gIFIgKy0tIFMxICstIEwxMCAo
b3duaW5nLCBkcmF3aW5nKQorICAgIC8vICAgIHwgICAgICArLSBMMTEgKGNvcm5lciwgb2NjbHVk
ZWQgYnkgTDEyKQorICAgIC8vICAgIHwgICAgICArLSBMMTIgKG9wcG9zaXRlIGNvcm5lcikKKyAg
ICAvLyAgICB8CisgICAgLy8gICAgKy0tIFMyICstIEwyMCAob3duaW5nLCBkcmF3aW5nKQorICAg
IC8vCisKKyAgICBDQ0xheWVySW1wbCogcm9vdFB0cjsKKyAgICBDQ0xheWVySW1wbCogbGF5ZXJT
MVB0cjsKKyAgICBDQ0xheWVySW1wbCogbGF5ZXJTMlB0cjsKKworICAgIE93blB0cjxDQ0dyYXBo
aWNzQ29udGV4dD4gY29udGV4dCA9IENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRChhZG9wdFB0
cihuZXcgUGFydGlhbFN3YXBDb250ZXh0KSk7CisKKyAgICBJbnRTaXplIHJvb3RTaXplKDEwMDAs
IDEwMDApOworCisgICAgbXlIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY29udGV4
dC5yZWxlYXNlKCksIFVudGhyb3R0bGVkVXBsb2FkZXIpOworICAgIG15SG9zdEltcGwtPnNldFZp
ZXdwb3J0U2l6ZShJbnRTaXplKHJvb3RTaXplLndpZHRoKCksIHJvb3RTaXplLmhlaWdodCgpKSk7
CisKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDEp
OworICAgIHJvb3RQdHIgPSByb290LmdldCgpOworCisgICAgcm9vdC0+c2V0QW5jaG9yUG9pbnQo
RmxvYXRQb2ludCgwLCAwKSk7CisgICAgcm9vdC0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCgwLCAw
KSk7CisgICAgcm9vdC0+c2V0Qm91bmRzKHJvb3RTaXplKTsKKyAgICByb290LT5zZXRDb250ZW50
Qm91bmRzKHJvb3RTaXplKTsKKyAgICByb290LT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7CisgICAg
cm9vdC0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKKyAgICBteUhvc3RJbXBsLT5zZXRSb290TGF5
ZXIocm9vdC5yZWxlYXNlKCkpOworCisgICAgYWRkRHJhd2luZ0xheWVyVG8ocm9vdFB0ciwgMiwg
SW50UmVjdCgwLCAwLCA0MDAsIDQwMCksICZsYXllclMxUHRyKTsKKyAgICBsYXllclMxUHRyLT5z
ZXRGb3JjZVJlbmRlclN1cmZhY2UodHJ1ZSk7CisKKyAgICBhZGREcmF3aW5nTGF5ZXJUbyhsYXll
clMxUHRyLCAzLCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSwgMCk7IC8vIEwxMQorICAgIGFkZERy
YXdpbmdMYXllclRvKGxheWVyUzFQdHIsIDQsIEludFJlY3QoMTAwLCAwLCAzMDAsIDMwMCksIDAp
OyAvLyBMMTIKKworICAgIGFkZERyYXdpbmdMYXllclRvKHJvb3RQdHIsIDcsIEludFJlY3QoMjAw
LCAwLCAzMDAsIDMwMCksICZsYXllclMyUHRyKTsKKyAgICBsYXllclMyUHRyLT5zZXRGb3JjZVJl
bmRlclN1cmZhY2UodHJ1ZSk7CisKKyAgICAvLyBJbml0aWFsIGRyYXcgLSBtdXN0IHJlY2VpdmUg
YWxsIHF1YWRzCisgICAgeworICAgICAgICBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEg
ZnJhbWU7CisgICAgICAgIEVYUEVDVF9UUlVFKG15SG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJh
bWUpKTsKKworICAgICAgICAvLyBNdXN0IHJlY2VpdmUgMyByZW5kZXIgcGFzc2VzLgorICAgICAg
ICAvLyBGb3IgUm9vdCwgdGhlcmUgYXJlIDIgcXVhZHM7IGZvciBTMSwgdGhlcmUgYXJlIDMgcXVh
ZHM7IGZvciBTMiwgdGhlcmUgaXMgMSBxdWFkLgorICAgICAgICBBU1NFUlRfRVEoM1UsIGZyYW1l
LnJlbmRlclBhc3Nlcy5zaXplKCkpOworCisgICAgICAgIEVYUEVDVF9FUSgxVSwgZnJhbWUucmVu
ZGVyUGFzc2VzWzBdLT5xdWFkTGlzdCgpLnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUSgzVSwg
ZnJhbWUucmVuZGVyUGFzc2VzWzFdLT5xdWFkTGlzdCgpLnNpemUoKSk7CisgICAgICAgIEVYUEVD
VF9FUSgyVSwgZnJhbWUucmVuZGVyUGFzc2VzWzJdLT5xdWFkTGlzdCgpLnNpemUoKSk7CisKKyAg
ICAgICAgbXlIb3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CisgICAgICAgIG15SG9zdEltcGwt
PmRpZERyYXdBbGxMYXllcnMoZnJhbWUpOworICAgIH0KKworICAgIC8vICJVbm9jY2x1ZGUiIHN1
cmZhY2UgUzEgYW5kIHJlcGVhdCBkcmF3LgorICAgIC8vIE11c3QgcmVtb3ZlIFMyJ3MgcmVuZGVy
IHBhc3Mgc2luY2UgaXQncyBjYWNoZWQ7CisgICAgLy8gTXVzdCBrZWVwIFMxIHF1YWRzIGJlY2F1
c2UgdGV4dHVyZSBjb250YWluZWQgZXh0ZXJuYWwgb2NjbHVzaW9uLgorICAgIFdlYlRyYW5zZm9y
bWF0aW9uTWF0cml4IHRyYW5zZm9ybSA9IGxheWVyUzJQdHItPnRyYW5zZm9ybSgpOworICAgIHRy
YW5zZm9ybS50cmFuc2xhdGUoMzAwLCAwKTsKKyAgICBsYXllclMyUHRyLT5zZXRUcmFuc2Zvcm0o
dHJhbnNmb3JtKTsKKyAgICB7CisgICAgICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0
YSBmcmFtZTsKKyAgICAgICAgRVhQRUNUX1RSVUUobXlIb3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhm
cmFtZSkpOworCisgICAgICAgIC8vIE11c3QgcmVjZWl2ZSAyIHJlbmRlciBwYXNzZXMuCisgICAg
ICAgIC8vIEZvciBSb290LCB0aGVyZSBhcmUgMiBxdWFkcworICAgICAgICAvLyBGb3IgUzEsIHRo
ZSBudW1iZXIgb2YgcXVhZHMgZGVwZW5kcyBvbiB3aGF0IGdvdCB1bm9jY2x1ZGVkLCBzbyBub3Qg
YXNzZXJ0ZWQgYmV5b25kIGJlaW5nIHBvc2l0aXZlLgorICAgICAgICAvLyBGb3IgUzIsIHRoZXJl
IGlzIG5vIHJlbmRlciBwYXNzCisgICAgICAgIEFTU0VSVF9FUSgyVSwgZnJhbWUucmVuZGVyUGFz
c2VzLnNpemUoKSk7CisKKyAgICAgICAgRVhQRUNUX0dUKGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+
cXVhZExpc3QoKS5zaXplKCksIDBVKTsKKyAgICAgICAgRVhQRUNUX0VRKDJVLCBmcmFtZS5yZW5k
ZXJQYXNzZXNbMV0tPnF1YWRMaXN0KCkuc2l6ZSgpKTsKKworICAgICAgICBteUhvc3RJbXBsLT5k
cmF3TGF5ZXJzKGZyYW1lKTsKKyAgICAgICAgbXlIb3N0SW1wbC0+ZGlkRHJhd0FsbExheWVycyhm
cmFtZSk7CisgICAgfQorfQorCitURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHRleHR1
cmVDYWNoaW5nV2l0aE9jY2x1c2lvbkV4dGVybmFsTm90QWxpZ25lZCkKK3sKKyAgICBDQ1NldHRp
bmdzOjpzZXRQYXJ0aWFsU3dhcEVuYWJsZWQoZmFsc2UpOworCisgICAgQ0NMYXllclRyZWVTZXR0
aW5ncyBzZXR0aW5nczsKKyAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gbXlIb3N0SW1w
bCA9IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShzZXR0aW5ncywgdGhpcyk7CisKKyAgICAv
LyBMYXllcnMgYXJlIHN0cnVjdHVyZWQgYXMgZm9sbG93czoKKyAgICAvLworICAgIC8vICBSICst
LSBTMSArLSBMMTAgKHJvdGF0ZWQsIGRyYXdpbmcpCisgICAgLy8gICAgICAgICAgICstIEwxMSAo
b2NjdXBpZXMgaGFsZiBzdXJmYWNlKQorCisgICAgQ0NMYXllckltcGwqIHJvb3RQdHI7CisgICAg
Q0NMYXllckltcGwqIGxheWVyUzFQdHI7CisKKyAgICBPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+
IGNvbnRleHQgPSBDQ0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRlM0QoYWRvcHRQdHIobmV3IFBhcnRp
YWxTd2FwQ29udGV4dCkpOworCisgICAgSW50U2l6ZSByb290U2l6ZSgxMDAwLCAxMDAwKTsKKwor
ICAgIG15SG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQucmVsZWFzZSgp
LCBVbnRocm90dGxlZFVwbG9hZGVyKTsKKyAgICBteUhvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUo
SW50U2l6ZShyb290U2l6ZS53aWR0aCgpLCByb290U2l6ZS5oZWlnaHQoKSkpOworCisgICAgT3du
UHRyPENDTGF5ZXJJbXBsPiByb290ID0gQ0NMYXllckltcGw6OmNyZWF0ZSgxKTsKKyAgICByb290
UHRyID0gcm9vdC5nZXQoKTsKKworICAgIHJvb3QtPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQo
MCwgMCkpOworICAgIHJvb3QtPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQoMCwgMCkpOworICAgIHJv
b3QtPnNldEJvdW5kcyhyb290U2l6ZSk7CisgICAgcm9vdC0+c2V0Q29udGVudEJvdW5kcyhyb290
U2l6ZSk7CisgICAgcm9vdC0+c2V0RHJhd3NDb250ZW50KHRydWUpOworICAgIHJvb3QtPnNldE1h
c2tzVG9Cb3VuZHModHJ1ZSk7CisgICAgbXlIb3N0SW1wbC0+c2V0Um9vdExheWVyKHJvb3QucmVs
ZWFzZSgpKTsKKworICAgIGFkZERyYXdpbmdMYXllclRvKHJvb3RQdHIsIDIsIEludFJlY3QoMCwg
MCwgNDAwLCA0MDApLCAmbGF5ZXJTMVB0cik7CisgICAgbGF5ZXJTMVB0ci0+c2V0Rm9yY2VSZW5k
ZXJTdXJmYWNlKHRydWUpOworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybSA9
IGxheWVyUzFQdHItPnRyYW5zZm9ybSgpOworICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoMjAwLCAy
MDApOworICAgIHRyYW5zZm9ybS5yb3RhdGUoNDUpOworICAgIHRyYW5zZm9ybS50cmFuc2xhdGUo
LTIwMCwgLTIwMCk7CisgICAgbGF5ZXJTMVB0ci0+c2V0VHJhbnNmb3JtKHRyYW5zZm9ybSk7CisK
KyAgICBhZGREcmF3aW5nTGF5ZXJUbyhsYXllclMxUHRyLCAzLCBJbnRSZWN0KDIwMCwgMCwgMjAw
LCA0MDApLCAwKTsgLy8gTDExCisKKyAgICAvLyBJbml0aWFsIGRyYXcgLSBtdXN0IHJlY2VpdmUg
YWxsIHF1YWRzCisgICAgeworICAgICAgICBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEg
ZnJhbWU7CisgICAgICAgIEVYUEVDVF9UUlVFKG15SG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJh
bWUpKTsKKworICAgICAgICAvLyBNdXN0IHJlY2VpdmUgMiByZW5kZXIgcGFzc2VzLgorICAgICAg
ICBBU1NFUlRfRVEoMlUsIGZyYW1lLnJlbmRlclBhc3Nlcy5zaXplKCkpOworCisgICAgICAgIEVY
UEVDVF9FUSgyVSwgZnJhbWUucmVuZGVyUGFzc2VzWzBdLT5xdWFkTGlzdCgpLnNpemUoKSk7Cisg
ICAgICAgIEVYUEVDVF9FUSgxVSwgZnJhbWUucmVuZGVyUGFzc2VzWzFdLT5xdWFkTGlzdCgpLnNp
emUoKSk7CisKKyAgICAgICAgbXlIb3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CisgICAgICAg
IG15SG9zdEltcGwtPmRpZERyYXdBbGxMYXllcnMoZnJhbWUpOworICAgIH0KKworICAgIC8vIENo
YW5nZSBvcGFjaXR5IGFuZCBkcmF3LiBWZXJpZnkgd2UgdXNlZCBjYWNoZWQgdGV4dHVyZS4KKyAg
ICBsYXllclMxUHRyLT5zZXRPcGFjaXR5KDAuMmYpOworICAgIHsKKyAgICAgICAgQ0NMYXllclRy
ZWVIb3N0SW1wbDo6RnJhbWVEYXRhIGZyYW1lOworICAgICAgICBFWFBFQ1RfVFJVRShteUhvc3RJ
bXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CisKKyAgICAgICAgLy8gT25lIHJlbmRlciBwYXNz
IG11c3QgYmUgZ29uZSBkdWUgdG8gY2FjaGVkIHRleHR1cmUuCisgICAgICAgIEFTU0VSVF9FUSgx
VSwgZnJhbWUucmVuZGVyUGFzc2VzLnNpemUoKSk7CisKKyAgICAgICAgRVhQRUNUX0VRKDFVLCBm
cmFtZS5yZW5kZXJQYXNzZXNbMF0tPnF1YWRMaXN0KCkuc2l6ZSgpKTsKKworICAgICAgICBteUhv
c3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKKyAgICAgICAgbXlIb3N0SW1wbC0+ZGlkRHJhd0Fs
bExheWVycyhmcmFtZSk7CisgICAgfQorfQorCitURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRl
c3QsIHRleHR1cmVDYWNoaW5nV2l0aE9jY2x1c2lvblBhcnRpYWxTd2FwKQoreworICAgIENDU2V0
dGluZ3M6OnNldFBhcnRpYWxTd2FwRW5hYmxlZCh0cnVlKTsKKworICAgIENDTGF5ZXJUcmVlU2V0
dGluZ3Mgc2V0dGluZ3M7CisgICAgT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IG15SG9zdElt
cGwgPSBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUoc2V0dGluZ3MsIHRoaXMpOworCisgICAg
Ly8gTGF5ZXJzIGFyZSBzdHJ1Y3R1cmUgYXMgZm9sbG93czoKKyAgICAvLworICAgIC8vICBSICst
LSBTMSArLSBMMTAgKG93bmluZykKKyAgICAvLyAgICB8ICAgICAgKy0gTDExCisgICAgLy8gICAg
fCAgICAgICstIEwxMgorICAgIC8vICAgIHwKKyAgICAvLyAgICArLS0gUzIgKy0gTDIwIChvd25p
bmcpCisgICAgLy8gICAgICAgICAgICstIEwyMQorICAgIC8vCisgICAgLy8gT2NjbHVzaW9uOgor
ICAgIC8vIEwxMiBvY2NsdWRlcyBMMTEgKGludGVybmFsKQorICAgIC8vIEwyMCBvY2NsdWRlcyBM
MTAgKGV4dGVybmFsKQorICAgIC8vIEwyMSBvY2NsdWRlcyBMMjAgKGludGVybmFsKQorCisgICAg
Q0NMYXllckltcGwqIHJvb3RQdHI7CisgICAgQ0NMYXllckltcGwqIGxheWVyUzFQdHI7CisgICAg
Q0NMYXllckltcGwqIGxheWVyUzJQdHI7CisKKyAgICBPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+
IGNvbnRleHQgPSBDQ0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRlM0QoYWRvcHRQdHIobmV3IFBhcnRp
YWxTd2FwQ29udGV4dCkpOworCisgICAgSW50U2l6ZSByb290U2l6ZSgxMDAwLCAxMDAwKTsKKwor
ICAgIG15SG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQucmVsZWFzZSgp
LCBVbnRocm90dGxlZFVwbG9hZGVyKTsKKyAgICBteUhvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUo
SW50U2l6ZShyb290U2l6ZS53aWR0aCgpLCByb290U2l6ZS5oZWlnaHQoKSkpOworCisgICAgT3du
UHRyPENDTGF5ZXJJbXBsPiByb290ID0gQ0NMYXllckltcGw6OmNyZWF0ZSgxKTsKKyAgICByb290
UHRyID0gcm9vdC5nZXQoKTsKKworICAgIHJvb3QtPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQo
MCwgMCkpOworICAgIHJvb3QtPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQoMCwgMCkpOworICAgIHJv
b3QtPnNldEJvdW5kcyhyb290U2l6ZSk7CisgICAgcm9vdC0+c2V0Q29udGVudEJvdW5kcyhyb290
U2l6ZSk7CisgICAgcm9vdC0+c2V0RHJhd3NDb250ZW50KHRydWUpOworICAgIHJvb3QtPnNldE1h
c2tzVG9Cb3VuZHModHJ1ZSk7CisgICAgbXlIb3N0SW1wbC0+c2V0Um9vdExheWVyKHJvb3QucmVs
ZWFzZSgpKTsKKworICAgIGFkZERyYXdpbmdMYXllclRvKHJvb3RQdHIsIDIsIEludFJlY3QoMzAw
LCAzMDAsIDMwMCwgMzAwKSwgJmxheWVyUzFQdHIpOworICAgIGxheWVyUzFQdHItPnNldEZvcmNl
UmVuZGVyU3VyZmFjZSh0cnVlKTsKKworICAgIGFkZERyYXdpbmdMYXllclRvKGxheWVyUzFQdHIs
IDMsIEludFJlY3QoMTAsIDEwLCAxMCwgMTApLCAwKTsgLy8gTDExCisgICAgYWRkRHJhd2luZ0xh
eWVyVG8obGF5ZXJTMVB0ciwgNCwgSW50UmVjdCgwLCAwLCAzMCwgMzApLCAwKTsgLy8gTDEyCisK
KyAgICBhZGREcmF3aW5nTGF5ZXJUbyhyb290UHRyLCA1LCBJbnRSZWN0KDU1MCwgMjUwLCAzMDAs
IDQwMCksICZsYXllclMyUHRyKTsKKyAgICBsYXllclMyUHRyLT5zZXRGb3JjZVJlbmRlclN1cmZh
Y2UodHJ1ZSk7CisKKyAgICBhZGREcmF3aW5nTGF5ZXJUbyhsYXllclMyUHRyLCA2LCBJbnRSZWN0
KDIwLCAyMCwgNSwgNSksIDApOyAvLyBMMjEKKworICAgIC8vIEluaXRpYWwgZHJhdyAtIG11c3Qg
cmVjZWl2ZSBhbGwgcXVhZHMKKyAgICB7CisgICAgICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6OkZy
YW1lRGF0YSBmcmFtZTsKKyAgICAgICAgRVhQRUNUX1RSVUUobXlIb3N0SW1wbC0+cHJlcGFyZVRv
RHJhdyhmcmFtZSkpOworCisgICAgICAgIC8vIE11c3QgcmVjZWl2ZSAzIHJlbmRlciBwYXNzZXMu
CisgICAgICAgIC8vIEZvciBSb290LCB0aGVyZSBhcmUgMiBxdWFkczsgZm9yIFMxLCB0aGVyZSBh
cmUgMyBxdWFkczsgZm9yIFMyLCB0aGVyZSBpcyAxIHF1YWQuCisgICAgICAgIEFTU0VSVF9FUSgz
VSwgZnJhbWUucmVuZGVyUGFzc2VzLnNpemUoKSk7CisKKyAgICAgICAgRVhQRUNUX0VRKDJVLCBm
cmFtZS5yZW5kZXJQYXNzZXNbMF0tPnF1YWRMaXN0KCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNU
X0VRKDNVLCBmcmFtZS5yZW5kZXJQYXNzZXNbMV0tPnF1YWRMaXN0KCkuc2l6ZSgpKTsKKyAgICAg
ICAgRVhQRUNUX0VRKDJVLCBmcmFtZS5yZW5kZXJQYXNzZXNbMl0tPnF1YWRMaXN0KCkuc2l6ZSgp
KTsKKworICAgICAgICBteUhvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKKyAgICAgICAgbXlI
b3N0SW1wbC0+ZGlkRHJhd0FsbExheWVycyhmcmFtZSk7CisgICAgfQorCisgICAgLy8gIlVub2Nj
bHVkZSIgc3VyZmFjZSBTMSBhbmQgcmVwZWF0IGRyYXcuCisgICAgLy8gTXVzdCByZW1vdmUgUzIn
cyByZW5kZXIgcGFzcyBzaW5jZSBpdCdzIGNhY2hlZDsKKyAgICAvLyBNdXN0IGtlZXAgUzEgcXVh
ZHMgYmVjYXVzZSB0ZXh0dXJlIGNvbnRhaW5lZCBleHRlcm5hbCBvY2NsdXNpb24uCisgICAgV2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtID0gbGF5ZXJTMlB0ci0+dHJhbnNmb3JtKCk7
CisgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSgxNTAsIDE1MCk7CisgICAgbGF5ZXJTMlB0ci0+c2V0
VHJhbnNmb3JtKHRyYW5zZm9ybSk7CisgICAgeworICAgICAgICBDQ0xheWVyVHJlZUhvc3RJbXBs
OjpGcmFtZURhdGEgZnJhbWU7CisgICAgICAgIEVYUEVDVF9UUlVFKG15SG9zdEltcGwtPnByZXBh
cmVUb0RyYXcoZnJhbWUpKTsKKworICAgICAgICAvLyBNdXN0IHJlY2VpdmUgMiByZW5kZXIgcGFz
c2VzLgorICAgICAgICAvLyBGb3IgUm9vdCwgdGhlcmUgYXJlIDIgcXVhZHMKKyAgICAgICAgLy8g
Rm9yIFMxLCB0aGUgbnVtYmVyIG9mIHF1YWRzIGRlcGVuZHMgb24gd2hhdCBnb3QgdW5vY2NsdWRl
ZCwgc28gbm90IGFzc2VydGVkIGJleW9uZCBiZWluZyBwb3NpdGl2ZS4KKyAgICAgICAgLy8gRm9y
IFMyLCB0aGVyZSBpcyBubyByZW5kZXIgcGFzcworICAgICAgICBBU1NFUlRfRVEoMlUsIGZyYW1l
LnJlbmRlclBhc3Nlcy5zaXplKCkpOworCisgICAgICAgIEVYUEVDVF9HVChmcmFtZS5yZW5kZXJQ
YXNzZXNbMF0tPnF1YWRMaXN0KCkuc2l6ZSgpLCAwVSk7CisgICAgICAgIEVYUEVDVF9FUSgyVSwg
ZnJhbWUucmVuZGVyUGFzc2VzWzFdLT5xdWFkTGlzdCgpLnNpemUoKSk7CisKKyAgICAgICAgbXlI
b3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CisgICAgICAgIG15SG9zdEltcGwtPmRpZERyYXdB
bGxMYXllcnMoZnJhbWUpOworICAgIH0KKworICAgIC8vICJSZS1vY2NsdWRlIiBzdXJmYWNlIFMx
IGFuZCByZXBlYXQgZHJhdy4KKyAgICAvLyBNdXN0IHJlbW92ZSBTMSdzIHJlbmRlciBwYXNzIHNp
bmNlIGl0IGlzIG5vdyBhdmFpbGFibGUgaW4gZnVsbC4KKyAgICAvLyBTMiBoYXMgbm8gY2hhbmdl
IHNvIG11c3QgYWxzbyBiZSByZW1vdmVkLgorICAgIC8vIEZJWE1FOiBEdWUgdG8gcGFydGlhbCBz
d2FwLCB0aGUgc2Npc3NvciByZWN0IHdpbGwgY2F1c2UgT2NjbHVzaW9uVHJhY2tlcgorICAgIC8v
IHRvIHRoaW5rIHRoZXJlIGlzIGFuIGV4dGVybmFsIG9jY2x1c2lvbiBpbiB0aGUgcHJldmlvdXMg
c3RlcC4gVGhlcmVmb3JlLAorICAgIC8vIFMxJ3MgcmVuZGVyIHBhc3Mgd2lsbCBub3QgYmUgcmVt
b3ZlZC4KKyAgICB0cmFuc2Zvcm0gPSBsYXllclMyUHRyLT50cmFuc2Zvcm0oKTsKKyAgICB0cmFu
c2Zvcm0udHJhbnNsYXRlKC0xNSwgLTE1KTsKKyAgICBsYXllclMyUHRyLT5zZXRUcmFuc2Zvcm0o
dHJhbnNmb3JtKTsKKyAgICB7CisgICAgICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0
YSBmcmFtZTsKKyAgICAgICAgRVhQRUNUX1RSVUUobXlIb3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhm
cmFtZSkpOworCisgICAgICAgIC8vIDIgUmVuZGVyIHBhc3NlcyAtIFJvb3QgYW5kIFMxLgorICAg
ICAgICBBU1NFUlRfRVEoMlUsIGZyYW1lLnJlbmRlclBhc3Nlcy5zaXplKCkpOworCisgICAgICAg
IC8vIFJlbmRlciBwYXNzIGZvciBTMSBjb250YWlucyBubyBxdWFkcyBhcyB0aGUgc2Npc3NvciBy
ZWN0IGlzIG5vdyBvY2NsdWRlZC4KKyAgICAgICAgRVhQRUNUX0VRKDBVLCBmcmFtZS5yZW5kZXJQ
YXNzZXNbMF0tPnF1YWRMaXN0KCkuc2l6ZSgpKTsKKworICAgICAgICAvLyBSb290IGNvbnRhaW5z
IFMyIG9ubHksIGFzIFMxIGRvZXNuJ3QgaGF2ZSBhbnkgZGFtYWdlLgorICAgICAgICBFWFBFQ1Rf
RVEoMVUsIGZyYW1lLnJlbmRlclBhc3Nlc1sxXS0+cXVhZExpc3QoKS5zaXplKCkpOworCisgICAg
ICAgIG15SG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOworICAgICAgICBteUhvc3RJbXBsLT5k
aWREcmF3QWxsTGF5ZXJzKGZyYW1lKTsKKyAgICB9CisKK30KKwogVEVTVF9GKENDTGF5ZXJUcmVl
SG9zdEltcGxUZXN0LCBzdXJmYWNlVGV4dHVyZUNhY2hpbmcpCiB7CiAgICAgQ0NTZXR0aW5nczo6
c2V0UGFydGlhbFN3YXBFbmFibGVkKHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAKaW5kZXggY2Q3YTM5NmJkMGQ3NmUxYTUyZTM3
MTMzM2U0Yzg0ZDU3NGVmMDU2ZC4uNTI2YWI0ZTU5MGEwM2U2OTVhN2ZjMjIwNmZhZGFjNzJkYmQ3
YTMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxs
ZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxl
clRlc3QuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHN0YXRpYyBQYXNzT3duUHRyPENDVGlsZWRMYXll
ckltcGw+IG1ha2VMYXllcihDQ1RpbGVkTGF5ZXJJbXBsKiBwYXJlbnQsIGNvbnN0IFdlCiBzdGF0
aWMgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRMaXN0JiBxdWFkTGlzdCwgVmVjdG9yPE93blB0cjxD
Q1NoYXJlZFF1YWRTdGF0ZT4gPiYgc2hhcmVkU3RhdGVMaXN0LCBDQ1RpbGVkTGF5ZXJJbXBsKiBs
YXllciwgQ0NMYXllckl0ZXJhdG9yVHlwZSYgaXQsIENDT2NjbHVzaW9uVHJhY2tlckltcGwmIG9j
Y2x1c2lvblRyYWNrZXIpCiB7CiAgICAgb2NjbHVzaW9uVHJhY2tlci5lbnRlckxheWVyKGl0KTsK
LSAgICBDQ1F1YWRDdWxsZXIgcXVhZEN1bGxlcihxdWFkTGlzdCwgbGF5ZXIsICZvY2NsdXNpb25U
cmFja2VyLCBmYWxzZSk7CisgICAgQ0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXIocXVhZExpc3QsIGxh
eWVyLCAmb2NjbHVzaW9uVHJhY2tlciwgZmFsc2UsIGZhbHNlKTsKICAgICBPd25QdHI8Q0NTaGFy
ZWRRdWFkU3RhdGU+IHNoYXJlZFF1YWRTdGF0ZSA9IGxheWVyLT5jcmVhdGVTaGFyZWRRdWFkU3Rh
dGUoMCk7CiAgICAgYm9vbCBoYWRNaXNzaW5nVGlsZXMgPSBmYWxzZTsKICAgICBsYXllci0+YXBw
ZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpLCBoYWRNaXNzaW5nVGls
ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Nb2NrQ0NRdWFk
Q3VsbGVyLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL01vY2tDQ1F1YWRDdWxsZXIu
aAppbmRleCAzODU1MDdlMmM3YzQxZDJhNTkxZmJlMzM2ZDA4NzIyNTI1OTI5YzJjLi4xNWNiMTlk
NmM4MjZhNTZhYTEwYmQ0ZmYyZjY4YTAzYTA1ZjEwZTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL01vY2tDQ1F1YWRDdWxsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL01vY2tDQ1F1YWRDdWxsZXIuaApAQCAtMjcsMjEgKzI3LDE5IEBACiAK
ICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiY2MvQ0NEcmF3UXVhZC5oIgotI2luY2x1
ZGUgImNjL0NDUXVhZEN1bGxlci5oIgorI2luY2x1ZGUgImNjL0NDUXVhZFNpbmsuaCIKICNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIE1v
Y2tDQ1F1YWRDdWxsZXIgOiBwdWJsaWMgV2ViQ29yZTo6Q0NRdWFkQ3VsbGVyIHsKK2NsYXNzIE1v
Y2tDQ1F1YWRDdWxsZXIgOiBwdWJsaWMgV2ViQ29yZTo6Q0NRdWFkU2luayB7CiBwdWJsaWM6CiAg
ICAgTW9ja0NDUXVhZEN1bGxlcigpCi0gICAgICAgIDogQ0NRdWFkQ3VsbGVyKG1fcXVhZExpc3RT
dG9yYWdlLCAwLCAwLCBmYWxzZSkKLSAgICAgICAgLCBtX2FjdGl2ZVF1YWRMaXN0KG1fcXVhZExp
c3RTdG9yYWdlKQorICAgICAgICA6IG1fYWN0aXZlUXVhZExpc3QobV9xdWFkTGlzdFN0b3JhZ2Up
CiAgICAgeyB9CiAKICAgICBleHBsaWNpdCBNb2NrQ0NRdWFkQ3VsbGVyKENDUXVhZExpc3QmIGV4
dGVybmFsUXVhZExpc3QpCi0gICAgICAgIDogQ0NRdWFkQ3VsbGVyKGV4dGVybmFsUXVhZExpc3Qs
IDAsIDAsIGZhbHNlKQotICAgICAgICAsIG1fYWN0aXZlUXVhZExpc3QoZXh0ZXJuYWxRdWFkTGlz
dCkKKyAgICAgICAgOiBtX2FjdGl2ZVF1YWRMaXN0KGV4dGVybmFsUXVhZExpc3QpCiAgICAgeyB9
CiAKICAgICB2aXJ0dWFsIGJvb2wgYXBwZW5kKFdURjo6UGFzc093blB0cjxXZWJDb3JlOjpDQ0Ry
YXdRdWFkPiBuZXdRdWFkKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153342</attachid>
            <date>2012-07-19 14:02:51 -0700</date>
            <delta_ts>2012-07-19 15:34:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91537-20120719170250.patch</filename>
            <type>text/plain</type>
            <size>84190</size>
            <attacher>zlieber</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWI0ZWY3Yjg1M2FhYjRh
MTA3ZjZkMjgyMGFlMGEwMDEyOGFlNDBiZS4uOWE1Y2E0OGM3YmViZmQ0MmE1ZjRhNGU1YWEzYzhj
MzdhMjZkNDMxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMiBAQAorMjAxMi0wNy0xNyAgWmVl
diBMaWViZXIgIDx6bGllYmVyQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIFRl
eHR1cmVzIGRyYXduIGR1cmluZyBvY2NsdXNpb24gYXJlIGluY29ycmVjdGx5IHJlLXVzZWQgd2hl
biB1bm9jY2x1ZGVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTE1MzcKKworICAgICAgICBSZXZpZXdlZCBieSBBZHJpZW5uZSBXYWxrZXIuCisKKyAg
ICAgICAgRGV0ZWN0aW5nIGlmIGFueSBleHRlcm5hbCBvY2NsdXNpb24gb2NjdXJzIHdoZW4gZHJh
d2luZyBhCisgICAgICAgIHRleHR1cmUuIElmIGV4dGVybmFsIG9jY2x1c2lvbiBoYXBwZW5zLCB0
aGUgdGV4dHVyZSBpcyBtYXJrZWQgYXMKKyAgICAgICAgImluY29tcGxldGUiIGluIExheWVyUmVu
ZGVyZXJDaHJvbWl1bSwgYW5kIGlzIG5vdCBiZWluZyBjb25zaWRlcmVkCisgICAgICAgIGZvciBy
ZS11c2UuCisKKyAgICAgICAgTWlub3IgcmVmYWN0b3Jpbmcgb2YgQ0NRdWFkQ3VsbGVyIC0gZXh0
cmFjdGVkIGludGVyZmFjZQorICAgICAgICAoQ0NRdWFkU2luaykgYW5kIHVuaXRlZCBhcHBlbmQo
KSBhbmQgYXBwZW5kU3VyZmFjZSgpIG1ldGhvZHMuCisKKyAgICAgICAgQWRkZWQgdW5pdCB0ZXN0
cyB0byB2ZXJpZnkgdGhpcyBmaXg7IGFsc28gYWRkZWQgdGVzdCB0byB0cnkKKyAgICAgICAgY2xp
cHBpbmcgaW5zdGVhZCBvZiBvY2NsdXNpb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpDYWNoZWRUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6Q2FjaGVkVGV4dHVyZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Q2FjaGVkVGV4dHVyZTo6fkNhY2hlZFRleHR1cmUpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpDYWNoZWRUZXh0dXJlOjpp
c0NvbXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Q2Fj
aGVkVGV4dHVyZTo6c2V0SXNDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRl
cmVyQ2hyb21pdW06OkNhY2hlZFRleHR1cmU6OkNhY2hlZFRleHR1cmUpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRlY2lkZVJl
bmRlclBhc3NBbGxvY2F0aW9uc0ZvckZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6aGF2ZUNhY2hlZFJlc291cmNlc0ZvclJlbmRlclBhc3NJZCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdSZW5kZXJQYXNzUXVhZCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmg6CisgICAgICAgIChMYXllclJlbmRlcmVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNDSU9TdXJmYWNlTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuaDoK
KyAgICAgICAgKENDSU9TdXJmYWNlTGF5ZXJJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVySW1wbDo6YXBwZW5kRGVidWdCb3JkZXJRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAoQ0NMYXll
ckltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVz
aW9uVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjo6OnVub2NjbHVkZWRDb250ZW50UmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjo6OnVub2NjbHVkZWRDb250cmlidXRpbmdTdXJmYWNlQ29u
dGVudFJlY3QpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmg6CisgICAgICAgIChDQ09jY2x1c2lv
blRyYWNrZXJCYXNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1F1YWRDdWxsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NRdWFkQ3VsbGVyOjpDQ1F1YWRD
dWxsZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NRdWFkQ3VsbGVyOjphcHBlbmQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5oOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChDQ1F1YWRDdWxsZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NRdWFkQ3VsbGVyOjp+Q0NRdWFkQ3VsbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUXVhZEN1
bGxlcjo6aGFzRXh0ZXJuYWxPY2NsdXNpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUXVhZFNpbmsuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKENDUXVhZFNpbmspOgorICAgICAgICAoV2ViQ29yZTo6Q0NRdWFk
U2luazo6fkNDUXVhZFNpbmspOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUmVuZGVyUGFzcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3M6OkND
UmVuZGVyUGFzcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3M6OmFwcGVuZFF1YWRz
Rm9yTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJQYXNzOjphcHBlbmRRdWFkc0Zv
clJlbmRlclN1cmZhY2VMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5k
ZXJQYXNzRHJhd1F1YWQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3NE
cmF3UXVhZDo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmg6CisgICAgICAgIChDQ1JlbmRl
clBhc3NEcmF3UXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3NEcmF3UXVhZDo6
aGFzRXh0ZXJuYWxPY2NsdXNpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1
cmZhY2U6OkNDUmVuZGVyU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZh
Y2U6OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1JlbmRlclN1cmZhY2UuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NSZW5kZXJTdXJmYWNlOjpzZXRIYXNFeHRlcm5hbE9jY2x1c2lvbik6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1JlbmRlclN1cmZhY2U6Omhhc0V4dGVybmFsT2NjbHVzaW9uKToKKyAgICAgICAg
KENDUmVuZGVyU3VyZmFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY3JvbGxi
YXJMYXllckltcGw6OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5oOgorICAgICAgICAoQ0NTY3JvbGxiYXJM
YXllckltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29s
aWRDb2xvckxheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NvbGlkQ29sb3JMYXll
ckltcGw6OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NvbGlkQ29sb3JMYXllckltcGwuaDoKKyAgICAgICAgKENDU29saWRDb2xvckxheWVy
SW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJl
TGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZUxheWVySW1wbDo6YXBw
ZW5kUXVhZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4
dHVyZUxheWVySW1wbC5oOgorICAgICAgICAoQ0NUZXh0dXJlTGF5ZXJJbXBsKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNDVGlsZWRMYXllckltcGw6OmFwcGVuZFF1YWRzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmg6CisgICAg
ICAgIChDQ1RpbGVkTGF5ZXJJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVmlkZW9M
YXllckltcGw6OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmg6CisgICAgICAgIChDQ1ZpZGVvTGF5ZXJJbXBsKToK
KwogMjAxMi0wNy0xOSAgRXJpayBBcnZpZHNzb24gIDxhcnZAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFdpbmRvdyB0b3Agc2hvdWxkIG5vdCBiZSByZXBsYWNlYWJsZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwppbmRleCA1ZmQ2YzZiYmI3OTU4ZjhlNzdhMWFhZmI0MTY2NTFhOTczYjMwNDBiLi5m
MDI2NTE5OWU0OTI5MmM1MDMyNjVjOGJkYjdhM2I2Y2RhNjFmZTUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTA3LTE3ICBaZWV2IExpZWJlciAgPHps
aWViZXJAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gVGV4dHVyZXMgZHJhd24g
ZHVyaW5nIG9jY2x1c2lvbiBhcmUgaW5jb3JyZWN0bHkgcmUtdXNlZCB3aGVuIHVub2NjbHVkZWQu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTUzNwor
CisgICAgICAgIFJldmlld2VkIGJ5IEFkcmllbm5lIFdhbGtlci4KKworICAgICAgICBBZGRlZCB1
bml0IHRlc3RzIHRvIHRlc3QgdGV4dHVyZSBjYWNoaW5nIHdpdGggY2xpcHBpbmcgYW5kCisgICAg
ICAgIG9jY2x1c2lvbi4gUmVtb3ZlZCBzb21lIG1pbm9yIGNvZGUgZHVwbGljYXRpb24gd2hlbiBp
bml0aWFsaXppbmcKKyAgICAgICAgbGF5ZXJzIGZvciB2YXJpb3VzIHNjZW5hcmlvcy4KKworICAg
ICAgICBNb2NrQ0NRdWFkQ3VsbGVyIGNhbiBub3cgaW1wbGVtZW50IENDUXVhZFNpbmsuCisKKyAg
ICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHA6CisgICAgICAgICogdGVz
dHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvTW9ja0NDUXVhZEN1bGxl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NDUXVhZEN1bGxlcjo6TW9ja0NDUXVhZEN1bGxl
cik6CisKIDIwMTItMDctMTkgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBbQ2hyb21pdW1dIFdlYlZpZXcgaXMgbWlzc2luZyBpc1NlbGVjdGlvbkVkaXRhYmxlIGFu
ZCBiYWNrZ3JvdW5kQ29sb3Igd2hpY2ggYXJlIHVzZWQgYnkgY2hyb21pdW0tYW5kcm9pZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCmluZGV4IGRhYjMxNDA3OTgyMjMwYjQwOWYxN2ZlNmJhMDgxNTE2NTE5MTA1NWMu
LmY0NTgxZDlkMTk2Yzk1NWVjNzVhMzRmYjc0YWU0NDk1YmE4ODUwNjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKQEAgLTgzNjAsNiArODM2MCw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NQcmlvcml0eUNhbGN1bGF0b3IuaCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaCcsCisgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkU2luay5oJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuaCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcCcsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRleCA1N2VhOTgxMmE1NjM5NDdl
ZjYzMTQ5M2IyN2Q2MzE5ZTcyMTE5MTQ1Li5lNTYzN2EwZmNhNzA1ZGJkMWQxZjA3M2FhZDgwM2Ey
NmY3NmJkMTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKQEAgLTEz
Myw2ICsxMzMsMjYgQEAgcHJvdGVjdGVkOgogCiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKIAor
Y2xhc3MgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpDYWNoZWRUZXh0dXJlIDogcHVibGljIENDU2Nv
cGVkVGV4dHVyZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ2FjaGVkVGV4dHVyZSk7Citw
dWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q2FjaGVkVGV4dHVyZT4gY3JlYXRlKENDUmVz
b3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlcikgeyByZXR1cm4gYWRvcHRQdHIobmV3IENh
Y2hlZFRleHR1cmUocmVzb3VyY2VQcm92aWRlcikpOyB9CisgICAgdmlydHVhbCB+Q2FjaGVkVGV4
dHVyZSgpIHsgfQorCisgICAgYm9vbCBpc0NvbXBsZXRlKCkgY29uc3QgeyByZXR1cm4gbV9pc0Nv
bXBsZXRlOyB9CisgICAgdm9pZCBzZXRJc0NvbXBsZXRlKGJvb2wgaXNDb21wbGV0ZSkgeyBtX2lz
Q29tcGxldGUgPSBpc0NvbXBsZXRlOyB9CisKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBDYWNo
ZWRUZXh0dXJlKENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlcikKKyAgICAgICAg
OiBDQ1Njb3BlZFRleHR1cmUocmVzb3VyY2VQcm92aWRlcikKKyAgICAgICAgLCBtX2lzQ29tcGxl
dGUoZmFsc2UpCisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICBib29sIG1faXNDb21wbGV0
ZTsKK307CisKIFBhc3NPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBMYXllclJlbmRlcmVy
Q2hyb21pdW06OmNyZWF0ZShDQ1JlbmRlcmVyQ2xpZW50KiBjbGllbnQsIENDUmVzb3VyY2VQcm92
aWRlciogcmVzb3VyY2VQcm92aWRlciwgVGV4dHVyZVVwbG9hZGVyT3B0aW9uIHRleHR1cmVVcGxv
YWRlclNldHRpbmcpCiB7CiAgICAgT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gbGF5ZXJS
ZW5kZXJlcihhZG9wdFB0cihuZXcgTGF5ZXJSZW5kZXJlckNocm9taXVtKGNsaWVudCwgcmVzb3Vy
Y2VQcm92aWRlciwgdGV4dHVyZVVwbG9hZGVyU2V0dGluZykpKTsKQEAgLTMxOSw3ICszMzksNyBA
QCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZGVjaWRlUmVuZGVyUGFzc0FsbG9jYXRpb25z
Rm9yRnJhbWUoY29uc3QgQ0NSZW5kZXJQYQogICAgICAgICBwYXNzZXNJbkZyYW1lLnNldChyZW5k
ZXJQYXNzZXNJbkRyYXdPcmRlcltpXS0+aWQoKSwgcmVuZGVyUGFzc2VzSW5EcmF3T3JkZXJbaV0p
OwogCiAgICAgVmVjdG9yPGludD4gcGFzc2VzVG9EZWxldGU7Ci0gICAgSGFzaE1hcDxpbnQsIE93
blB0cjxDQ1Njb3BlZFRleHR1cmU+ID46OmNvbnN0X2l0ZXJhdG9yIHBhc3NJdGVyYXRvcjsKKyAg
ICBIYXNoTWFwPGludCwgT3duUHRyPENhY2hlZFRleHR1cmU+ID46OmNvbnN0X2l0ZXJhdG9yIHBh
c3NJdGVyYXRvcjsKICAgICBmb3IgKHBhc3NJdGVyYXRvciA9IG1fcmVuZGVyUGFzc1RleHR1cmVz
LmJlZ2luKCk7IHBhc3NJdGVyYXRvciAhPSBtX3JlbmRlclBhc3NUZXh0dXJlcy5lbmQoKTsgKytw
YXNzSXRlcmF0b3IpIHsKICAgICAgICAgY29uc3QgQ0NSZW5kZXJQYXNzKiByZW5kZXJQYXNzSW5G
cmFtZSA9IHBhc3Nlc0luRnJhbWUuZ2V0KHBhc3NJdGVyYXRvci0+Zmlyc3QpOwogICAgICAgICBp
ZiAoIXJlbmRlclBhc3NJbkZyYW1lKSB7CkBAIC0zMjksNyArMzQ5LDcgQEAgdm9pZCBMYXllclJl
bmRlcmVyQ2hyb21pdW06OmRlY2lkZVJlbmRlclBhc3NBbGxvY2F0aW9uc0ZvckZyYW1lKGNvbnN0
IENDUmVuZGVyUGEKIAogICAgICAgICBjb25zdCBJbnRTaXplJiByZXF1aXJlZFNpemUgPSByZW5k
ZXJQYXNzVGV4dHVyZVNpemUocmVuZGVyUGFzc0luRnJhbWUpOwogICAgICAgICBHQzNEZW51bSBy
ZXF1aXJlZEZvcm1hdCA9IHJlbmRlclBhc3NUZXh0dXJlRm9ybWF0KHJlbmRlclBhc3NJbkZyYW1l
KTsKLSAgICAgICAgQ0NTY29wZWRUZXh0dXJlKiB0ZXh0dXJlID0gcGFzc0l0ZXJhdG9yLT5zZWNv
bmQuZ2V0KCk7CisgICAgICAgIENhY2hlZFRleHR1cmUqIHRleHR1cmUgPSBwYXNzSXRlcmF0b3It
PnNlY29uZC5nZXQoKTsKICAgICAgICAgQVNTRVJUKHRleHR1cmUpOwogCiAgICAgICAgIGlmICh0
ZXh0dXJlLT5pZCgpICYmICh0ZXh0dXJlLT5zaXplKCkgIT0gcmVxdWlyZWRTaXplIHx8IHRleHR1
cmUtPmZvcm1hdCgpICE9IHJlcXVpcmVkRm9ybWF0KSkKQEAgLTM0Miw3ICszNjIsNyBAQCB2b2lk
IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZGVjaWRlUmVuZGVyUGFzc0FsbG9jYXRpb25zRm9yRnJh
bWUoY29uc3QgQ0NSZW5kZXJQYQogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZW5kZXJQ
YXNzZXNJbkRyYXdPcmRlci5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAoIW1fcmVuZGVyUGFz
c1RleHR1cmVzLmNvbnRhaW5zKHJlbmRlclBhc3Nlc0luRHJhd09yZGVyW2ldLT5pZCgpKSkgewot
ICAgICAgICAgICAgT3duUHRyPENDU2NvcGVkVGV4dHVyZT4gdGV4dHVyZSA9IENDU2NvcGVkVGV4
dHVyZTo6Y3JlYXRlKG1fcmVzb3VyY2VQcm92aWRlcik7CisgICAgICAgICAgICBPd25QdHI8Q2Fj
aGVkVGV4dHVyZT4gdGV4dHVyZSA9IENhY2hlZFRleHR1cmU6OmNyZWF0ZShtX3Jlc291cmNlUHJv
dmlkZXIpOwogICAgICAgICAgICAgbV9yZW5kZXJQYXNzVGV4dHVyZXMuc2V0KHJlbmRlclBhc3Nl
c0luRHJhd09yZGVyW2ldLT5pZCgpLCB0ZXh0dXJlLnJlbGVhc2UoKSk7CiAgICAgICAgIH0KICAg
ICB9CkBAIC0zNTAsOCArMzcwLDggQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRlY2lk
ZVJlbmRlclBhc3NBbGxvY2F0aW9uc0ZvckZyYW1lKGNvbnN0IENDUmVuZGVyUGEKIAogYm9vbCBM
YXllclJlbmRlcmVyQ2hyb21pdW06OmhhdmVDYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJQYXNzSWQo
aW50IGlkKSBjb25zdAogewotICAgIENDU2NvcGVkVGV4dHVyZSogdGV4dHVyZSA9IG1fcmVuZGVy
UGFzc1RleHR1cmVzLmdldChpZCk7Ci0gICAgcmV0dXJuIHRleHR1cmUgJiYgdGV4dHVyZS0+aWQo
KTsKKyAgICBDYWNoZWRUZXh0dXJlKiB0ZXh0dXJlID0gbV9yZW5kZXJQYXNzVGV4dHVyZXMuZ2V0
KGlkKTsKKyAgICByZXR1cm4gdGV4dHVyZSAmJiB0ZXh0dXJlLT5pZCgpICYmIHRleHR1cmUtPmlz
Q29tcGxldGUoKTsKIH0KIAogdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdGcmFtZShj
b25zdCBDQ1JlbmRlclBhc3NMaXN0JiByZW5kZXJQYXNzZXMsIGNvbnN0IEZsb2F0UmVjdCYgcm9v
dFNjaXNzb3JSZWN0KQpAQCAtNjEwLDcgKzYzMCw3IEBAIFBhc3NPd25QdHI8Q0NTY29wZWRUZXh0
dXJlPiBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdCYWNrZ3JvdW5kRmlsdGVycyhjb25zdCBD
CiAKIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UmVuZGVyUGFzc1F1YWQoY29uc3Qg
Q0NSZW5kZXJQYXNzRHJhd1F1YWQqIHF1YWQpCiB7Ci0gICAgQ0NTY29wZWRUZXh0dXJlKiBjb250
ZW50c1RleHR1cmUgPSBtX3JlbmRlclBhc3NUZXh0dXJlcy5nZXQocXVhZC0+cmVuZGVyUGFzc0lk
KCkpOworICAgIENhY2hlZFRleHR1cmUqIGNvbnRlbnRzVGV4dHVyZSA9IG1fcmVuZGVyUGFzc1Rl
eHR1cmVzLmdldChxdWFkLT5yZW5kZXJQYXNzSWQoKSk7CiAgICAgaWYgKCFjb250ZW50c1RleHR1
cmUgfHwgIWNvbnRlbnRzVGV4dHVyZS0+aWQoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNDA5
LDkgKzE0MjksMTEgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnVzZVJlbmRlclBhc3Mo
Y29uc3QgQ0NSZW5kZXJQYXNzKiByZW5kZXJQYXNzKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAKLSAgICBDQ1Njb3BlZFRleHR1cmUqIHRleHR1cmUgPSBtX3JlbmRlclBhc3NUZXh0dXJl
cy5nZXQocmVuZGVyUGFzcy0+aWQoKSk7CisgICAgQ2FjaGVkVGV4dHVyZSogdGV4dHVyZSA9IG1f
cmVuZGVyUGFzc1RleHR1cmVzLmdldChyZW5kZXJQYXNzLT5pZCgpKTsKICAgICBBU1NFUlQodGV4
dHVyZSk7CiAKKyAgICB0ZXh0dXJlLT5zZXRJc0NvbXBsZXRlKCFyZW5kZXJQYXNzLT5oYXNPY2Ns
dXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UoKSk7CisKICAgICBpZiAoIXRleHR1cmUtPmlk
KCkgJiYgIXRleHR1cmUtPmFsbG9jYXRlKENDUmVuZGVyZXI6OkltcGxQb29sLCByZW5kZXJQYXNz
VGV4dHVyZVNpemUocmVuZGVyUGFzcyksIHJlbmRlclBhc3NUZXh0dXJlRm9ybWF0KHJlbmRlclBh
c3MpLCBDQ1Jlc291cmNlUHJvdmlkZXI6OlRleHR1cmVVc2FnZUZyYW1lYnVmZmVyKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCmluZGV4
IGNkNWIyY2MyYjI5MjE1Y2UxZWY0NjI0YzRlYjFjZjQ4NDhiYzkyODcuLjE5OGFlZjlhMzQzOTE0
MjJjZjRiNGZlMjY0MThkNzZkYzQ1MWEwNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJv
bWl1bS5oCkBAIC0xODIsNiArMTgyLDggQEAgcHJpdmF0ZToKICAgICBPd25QdHI8R2VvbWV0cnlC
aW5kaW5nPiBtX3NoYXJlZEdlb21ldHJ5OwogICAgIEZsb2F0UXVhZCBtX3NoYXJlZEdlb21ldHJ5
UXVhZDsKIAorICAgIGNsYXNzIENhY2hlZFRleHR1cmU7CisKICAgICAvLyBUaGlzIGJsb2NrIG9m
IGJpbmRpbmdzIGRlZmluZXMgYWxsIG9mIHRoZSBwcm9ncmFtcyB1c2VkIGJ5IHRoZSBjb21wb3Np
dG9yIGl0c2VsZi4KIAogICAgIC8vIFRpbGVkIGxheWVyIHNoYWRlcnMuCkBAIC0yNjYsNyArMjY4
LDcgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8QWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyPiBtX3Rl
eHR1cmVDb3BpZXI7CiAgICAgT3duUHRyPFRleHR1cmVVcGxvYWRlcj4gbV90ZXh0dXJlVXBsb2Fk
ZXI7CiAKLSAgICBIYXNoTWFwPGludCwgT3duUHRyPENDU2NvcGVkVGV4dHVyZT4gPiBtX3JlbmRl
clBhc3NUZXh0dXJlczsKKyAgICBIYXNoTWFwPGludCwgT3duUHRyPENhY2hlZFRleHR1cmU+ID4g
bV9yZW5kZXJQYXNzVGV4dHVyZXM7CiAKICAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNE
KiBtX2NvbnRleHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmNwcApp
bmRleCA2ZGFjMmU3YTc3MjkzYWE4Njg1OTQ3MTJmMGIxMzgzN2E5ZTJjNzNiLi40NzNkZTI1OWI4
ZWFlYWJkZWQ5ZDZlYmVmOTdiN2M0MjY1ZDFjYmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVySW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1
cmZhY2VMYXllckltcGwuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSAiY2MvQ0NHcmFw
aGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJjYy9DQ0lPU3VyZmFjZURyYXdRdWFkLmgiCiAjaW5j
bHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIgotI2luY2x1ZGUgImNjL0NDUXVhZEN1bGxl
ci5oIgorI2luY2x1ZGUgImNjL0NDUXVhZFNpbmsuaCIKICNpbmNsdWRlIDxwdWJsaWMvV2ViR3Jh
cGhpY3NDb250ZXh0M0QuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtOTYsNyArOTYsNyBA
QCB2b2lkIENDSU9TdXJmYWNlTGF5ZXJJbXBsOjp3aWxsRHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIq
IHJlc291cmNlUHJvdmlkZXIpCiAgICAgfQogfQogCi12b2lkIENDSU9TdXJmYWNlTGF5ZXJJbXBs
OjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRT
dGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJikKK3ZvaWQgQ0NJT1N1cmZhY2VMYXllckltcGw6
OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0
ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJikKIHsKICAgICBJbnRSZWN0IHF1YWRSZWN0KEludFBv
aW50KCksIGNvbnRlbnRCb3VuZHMoKSk7CiAgICAgcXVhZExpc3QuYXBwZW5kKENDSU9TdXJmYWNl
RHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBtX2lvU3VyZmFjZVNp
emUsIG1faW9TdXJmYWNlVGV4dHVyZUlkLCBDQ0lPU3VyZmFjZURyYXdRdWFkOjpGbGlwcGVkKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0lPU3VyZmFjZUxheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuaAppbmRleCA0MjM2ODgwOWMxMzQz
NmMwNmE0YjcyMDRhZWQxNGJjYmZlOWFjNDQ1Li4wMTg4MDRlMTgyY2ViMDE1MDBjYmU3NTg2ZTE0
ZTE2ZmZkZTEzOTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmgKQEAg
LTQxLDcgKzQxLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRJT1N1cmZhY2VQcm9wZXJ0aWVz
KHVuc2lnbmVkIGlvU3VyZmFjZUlkLCBjb25zdCBJbnRTaXplJik7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBi
b29sJiBoYWRNaXNzaW5nVGlsZXMpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRR
dWFkcyhDQ1F1YWRTaW5rJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiBoYWRNaXNz
aW5nVGlsZXMpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3KENDUmVzb3Vy
Y2VQcm92aWRlciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaWRMb3NlQ29udGV4dCgp
IE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCmluZGV4IGRiMjRjMDdlNDVhOWNmZWIx
Nzg0OGMxZGNhMzVhMTZlN2M0NTU5YWQuLjcxN2Q5NmQxMDE2ZjVmNjczNjk3MjE3NjI2Mzc0OWYy
OTBkM2IxMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKICNp
bmNsdWRlICJjYy9DQ0xheWVyU29ydGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NNYXRoVXRpbC5oIgog
I2luY2x1ZGUgImNjL0NDUHJveHkuaCIKLSNpbmNsdWRlICJjYy9DQ1F1YWRDdWxsZXIuaCIKKyNp
bmNsdWRlICJjYy9DQ1F1YWRTaW5rLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKIHVzaW5nIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg7CkBAIC0xNzQsNyArMTc0
LDcgQEAgdm9pZCBDQ0xheWVySW1wbDo6ZGlkRHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqKQogI2Vu
ZGlmCiB9CiAKLXZvaWQgQ0NMYXllckltcGw6OmFwcGVuZERlYnVnQm9yZGVyUXVhZChDQ1F1YWRD
dWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRl
KSBjb25zdAordm9pZCBDQ0xheWVySW1wbDo6YXBwZW5kRGVidWdCb3JkZXJRdWFkKENDUXVhZFNp
bmsmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlKSBj
b25zdAogewogICAgIGlmICghaGFzRGVidWdCb3JkZXJzKCkpCiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVySW1wbC5oCmluZGV4IDcxZTkzYzU3NDU4MDY2YTQ3NzU4NDM0ZTVkODk4YjQyZmY2
NDYzM2QuLjYxOTZjMmM0ZDUwOWY4Y2ExNjc0ZDMyNmMxYjJjOWU1ZGE2NTUzMGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJ
bXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllckltcGwuaApAQCAtNDcsOCArNDcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIENDTGF5ZXJTb3J0ZXI7CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsOwotY2xhc3MgQ0NR
dWFkQ3VsbGVyOwogY2xhc3MgQ0NSZW5kZXJlcjsKK2NsYXNzIENDUXVhZFNpbms7CiBjbGFzcyBM
YXllckNocm9taXVtOwogCiBjbGFzcyBDQ0xheWVySW1wbCA6IHB1YmxpYyBDQ0xheWVyQW5pbWF0
aW9uQ29udHJvbGxlckNsaWVudCB7CkBAIC05Myw5ICs5Myw5IEBAIHB1YmxpYzoKICAgICAvLyB0
aGUgbGF5ZXIgaXMgZGVzdHJveWVkLiBUbyBlbmZvcmNlIHRoaXMsIGFueSBjbGFzcyB0aGF0IG92
ZXJyaWRlcwogICAgIC8vIHdpbGxEcmF3L2RpZERyYXcgbXVzdCBjYWxsIHRoZSBiYXNlIGNsYXNz
IHZlcnNpb24uCiAgICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3KENDUmVzb3VyY2VQcm92aWRlciop
OwotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImLCBjb25zdCBDQ1No
YXJlZFF1YWRTdGF0ZSosIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykgeyB9CisgICAgdmlydHVhbCB2
b2lkIGFwcGVuZFF1YWRzKENDUXVhZFNpbmsmLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJv
b2wmIGhhZE1pc3NpbmdUaWxlcykgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZERyYXcoQ0NSZXNv
dXJjZVByb3ZpZGVyKik7Ci0gICAgdm9pZCBhcHBlbmREZWJ1Z0JvcmRlclF1YWQoQ0NRdWFkQ3Vs
bGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqKSBjb25zdDsKKyAgICB2b2lkIGFwcGVuZERl
YnVnQm9yZGVyUXVhZChDQ1F1YWRTaW5rJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqKSBjb25z
dDsKIAogICAgIHZpcnR1YWwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIGNvbnRlbnRz
UmVzb3VyY2VJZCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
Y3BwCmluZGV4IDZlNzkxNGE3NDI0MDM3NDcyZTk5ZWQ1NzAxOTBmODAzNDdjNjZkMDcuLjdmMTI0
MDQzMmI5Nzg2MjNmMjNhNGIyMGIwMTE5NWMwOGM1MjljYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC0zMjgsMTEgKzMyOCwxNiBAQCBib29sIENDTGF5ZXJU
cmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJlbmRlclBhc3NlcyhGcmFtZURhdGEmIGZyYW1lKQogICAg
ICAgICBpZiAoaXQucmVwcmVzZW50c0NvbnRyaWJ1dGluZ1JlbmRlclN1cmZhY2UoKSAmJiAhaXQt
PnJlbmRlclN1cmZhY2UoKS0+c2Npc3NvclJlY3QoKS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAg
IENDUmVuZGVyUGFzcyogY29udHJpYnV0aW5nUmVuZGVyUGFzcyA9IHN1cmZhY2VQYXNzTWFwLmdl
dChpdC0+cmVuZGVyU3VyZmFjZSgpKTsKICAgICAgICAgICAgIHBhc3MtPmFwcGVuZFF1YWRzRm9y
UmVuZGVyU3VyZmFjZUxheWVyKCppdCwgY29udHJpYnV0aW5nUmVuZGVyUGFzcywgJm9jY2x1c2lv
blRyYWNrZXIpOwotICAgICAgICB9IGVsc2UgaWYgKGl0LnJlcHJlc2VudHNJdHNlbGYoKSAmJiAh
b2NjbHVzaW9uVHJhY2tlci5vY2NsdWRlZCgqaXQsIGl0LT52aXNpYmxlQ29udGVudFJlY3QoKSkg
JiYgIWl0LT52aXNpYmxlQ29udGVudFJlY3QoKS5pc0VtcHR5KCkgJiYgIWl0LT5zY2lzc29yUmVj
dCgpLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgaXQtPndpbGxEcmF3KG1fcmVzb3VyY2VQcm92
aWRlci5nZXQoKSk7Ci0gICAgICAgICAgICBmcmFtZS53aWxsRHJhd0xheWVycy5hcHBlbmQoKml0
KTsKLQotICAgICAgICAgICAgcGFzcy0+YXBwZW5kUXVhZHNGb3JMYXllcigqaXQsICZvY2NsdXNp
b25UcmFja2VyLCBoYWRNaXNzaW5nVGlsZXMpOworICAgICAgICB9IGVsc2UgaWYgKGl0LnJlcHJl
c2VudHNJdHNlbGYoKSAmJiAhaXQtPnZpc2libGVDb250ZW50UmVjdCgpLmlzRW1wdHkoKSAmJiAh
aXQtPnNjaXNzb3JSZWN0KCkuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBib29sIGhhc09jY2x1
c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZTsKKyAgICAgICAgICAgIGlmIChvY2NsdXNpb25U
cmFja2VyLm9jY2x1ZGVkKCppdCwgaXQtPnZpc2libGVDb250ZW50UmVjdCgpLCAmaGFzT2NjbHVz
aW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKSkgeworICAgICAgICAgICAgICAgIGlmIChoYXNP
Y2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UpCisgICAgICAgICAgICAgICAgICAgIHBh
c3MtPnNldEhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZShoYXNPY2NsdXNpb25G
cm9tT3V0c2lkZVRhcmdldFN1cmZhY2UpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBpdC0+d2lsbERyYXcobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpKTsKKyAgICAgICAg
ICAgICAgICBmcmFtZS53aWxsRHJhd0xheWVycy5hcHBlbmQoKml0KTsKKyAgICAgICAgICAgICAg
ICBwYXNzLT5hcHBlbmRRdWFkc0ZvckxheWVyKCppdCwgJm9jY2x1c2lvblRyYWNrZXIsIGhhZE1p
c3NpbmdUaWxlcyk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoaGFk
TWlzc2luZ1RpbGVzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNwcAppbmRl
eCAwZDAxNTkzY2Y4NzNiZTY3MmQzN2FlNzc4YjQ4ZjdjYTdkMTk5ZTJkLi4wMDgzYWQxZGQ0MmI5
NDg3Mjg1ODdmZmMyMWVmOWY4Zjk4NjZiNmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9u
VHJhY2tlci5jcHAKQEAgLTM3Nyw4ICszNzcsMTEgQEAgc3RhdGljIGlubGluZSBib29sIHRlc3RD
b250ZW50UmVjdE9jY2x1ZGVkKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBXZWIK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNl
VHlwZT4KLWJvb2wgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZh
Y2VUeXBlPjo6b2NjbHVkZWQoY29uc3QgTGF5ZXJUeXBlKiBsYXllciwgY29uc3QgSW50UmVjdCYg
Y29udGVudFJlY3QpIGNvbnN0Citib29sIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBl
LCBSZW5kZXJTdXJmYWNlVHlwZT46Om9jY2x1ZGVkKGNvbnN0IExheWVyVHlwZSogbGF5ZXIsIGNv
bnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBib29sKiBoYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRh
cmdldFN1cmZhY2UpIGNvbnN0CiB7CisgICAgaWYgKGhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFy
Z2V0U3VyZmFjZSkKKyAgICAgICAgKmhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFj
ZSA9IGZhbHNlOworCiAgICAgQVNTRVJUKCFtX3N0YWNrLmlzRW1wdHkoKSk7CiAgICAgaWYgKG1f
c3RhY2suaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zODcsMTAgKzM5MCwx
NSBAQCBib29sIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNl
VHlwZT46Om9jY2x1ZGVkKGNvbnN0IExheWVyVAogCiAgICAgQVNTRVJUKGxheWVyLT5yZW5kZXJU
YXJnZXQoKSA9PSBtX3N0YWNrLmxhc3QoKS50YXJnZXQpOwogCi0gICAgaWYgKGxheWVyVHJhbnNm
b3Jtc1RvU2NyZWVuS25vd24obGF5ZXIpICYmIHRlc3RDb250ZW50UmVjdE9jY2x1ZGVkKGNvbnRl
bnRSZWN0LCBjb250ZW50VG9TY3JlZW5TcGFjZVRyYW5zZm9ybTxMYXllclR5cGU+KGxheWVyKSwg
bV9zY2lzc29yUmVjdEluU2NyZWVuU3BhY2UsIG1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluU2Ny
ZWVuKSkKLSAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgaWYgKGxheWVyVHJhbnNmb3Jtc1RvVGFy
Z2V0S25vd24obGF5ZXIpICYmIHRlc3RDb250ZW50UmVjdE9jY2x1ZGVkKGNvbnRlbnRSZWN0LCBj
b250ZW50VG9UYXJnZXRTdXJmYWNlVHJhbnNmb3JtPExheWVyVHlwZT4obGF5ZXIpLCBsYXllclNj
aXNzb3JSZWN0SW5UYXJnZXRTdXJmYWNlKGxheWVyKSwgbV9zdGFjay5sYXN0KCkub2NjbHVzaW9u
SW5UYXJnZXQpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChsYXllclRyYW5zZm9y
bXNUb1NjcmVlbktub3duKGxheWVyKSAmJiB0ZXN0Q29udGVudFJlY3RPY2NsdWRlZChjb250ZW50
UmVjdCwgY29udGVudFRvU2NyZWVuU3BhY2VUcmFuc2Zvcm08TGF5ZXJUeXBlPihsYXllciksIG1f
c2Npc3NvclJlY3RJblNjcmVlblNwYWNlLCBtX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblNjcmVl
bikpIHsKKyAgICAgICAgaWYgKGhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSkK
KyAgICAgICAgICAgICpoYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UgPSB0cnVl
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
QEAgLTQxNyw3ICs0MjUsNyBAQCBzdGF0aWMgaW5saW5lIEludFJlY3QgY29tcHV0ZVVub2NjbHVk
ZWRDb250ZW50UmVjdChjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgYwogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlPgotSW50UmVj
dCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+Ojp1
bm9jY2x1ZGVkQ29udGVudFJlY3QoY29uc3QgTGF5ZXJUeXBlKiBsYXllciwgY29uc3QgSW50UmVj
dCYgY29udGVudFJlY3QpIGNvbnN0CitJbnRSZWN0IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5
ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46OnVub2NjbHVkZWRDb250ZW50UmVjdChjb25zdCBM
YXllclR5cGUqIGxheWVyLCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgYm9vbCogaGFzT2Nj
bHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKSBjb25zdAogewogICAgIEFTU0VSVCghbV9z
dGFjay5pc0VtcHR5KCkpOwogICAgIGlmIChtX3N0YWNrLmlzRW1wdHkoKSkKQEAgLTQzNCwxOCAr
NDQyLDE4IEBAIEludFJlY3QgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRl
clN1cmZhY2VUeXBlPjo6dW5vY2NsdWRlZENvbnRlbnRSCiAgICAgaWYgKGxheWVyVHJhbnNmb3Jt
c1RvU2NyZWVuS25vd24obGF5ZXIpKQogICAgICAgICB1bm9jY2x1ZGVkSW5TY3JlZW4gPSBjb21w
dXRlVW5vY2NsdWRlZENvbnRlbnRSZWN0KGNvbnRlbnRSZWN0LCBjb250ZW50VG9TY3JlZW5TcGFj
ZVRyYW5zZm9ybTxMYXllclR5cGU+KGxheWVyKSwgbV9zY2lzc29yUmVjdEluU2NyZWVuU3BhY2Us
IG1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluU2NyZWVuKTsKIAotICAgIGlmICh1bm9jY2x1ZGVk
SW5TY3JlZW4uaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gdW5vY2NsdWRlZEluU2NyZWVuOwot
CiAgICAgSW50UmVjdCB1bm9jY2x1ZGVkSW5UYXJnZXQgPSBjb250ZW50UmVjdDsKICAgICBpZiAo
bGF5ZXJUcmFuc2Zvcm1zVG9UYXJnZXRLbm93bihsYXllcikpCiAgICAgICAgIHVub2NjbHVkZWRJ
blRhcmdldCA9IGNvbXB1dGVVbm9jY2x1ZGVkQ29udGVudFJlY3QoY29udGVudFJlY3QsIGNvbnRl
bnRUb1RhcmdldFN1cmZhY2VUcmFuc2Zvcm08TGF5ZXJUeXBlPihsYXllciksIGxheWVyU2Npc3Nv
clJlY3RJblRhcmdldFN1cmZhY2UobGF5ZXIpLCBtX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblRh
cmdldCk7CiAKKyAgICBpZiAoaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKQor
ICAgICAgICAqaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlID0gKGludGVyc2Vj
dGlvbih1bm9jY2x1ZGVkSW5TY3JlZW4sIHVub2NjbHVkZWRJblRhcmdldCkgIT0gdW5vY2NsdWRl
ZEluVGFyZ2V0KTsKKwogICAgIHJldHVybiBpbnRlcnNlY3Rpb24odW5vY2NsdWRlZEluU2NyZWVu
LCB1bm9jY2x1ZGVkSW5UYXJnZXQpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGUs
IHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlPgotSW50UmVjdCBDQ09jY2x1c2lvblRyYWNrZXJC
YXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+Ojp1bm9jY2x1ZGVkQ29udHJpYnV0aW5n
U3VyZmFjZUNvbnRlbnRSZWN0KGNvbnN0IExheWVyVHlwZSogbGF5ZXIsIGJvb2wgZm9yUmVwbGlj
YSwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpIGNvbnN0CitJbnRSZWN0IENDT2NjbHVzaW9u
VHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46OnVub2NjbHVkZWRDb250
cmlidXRpbmdTdXJmYWNlQ29udGVudFJlY3QoY29uc3QgTGF5ZXJUeXBlKiBsYXllciwgYm9vbCBm
b3JSZXBsaWNhLCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgYm9vbCogaGFzT2NjbHVzaW9u
RnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKSBjb25zdAogewogICAgIEFTU0VSVCghbV9zdGFjay5p
c0VtcHR5KCkpOwogICAgIC8vIFRoZSBsYXllciBpcyBhIGNvbnRyaWJ1dGluZyByZW5kZXJUYXJn
ZXQgc28gaXQgc2hvdWxkIGhhdmUgYSBzdXJmYWNlLgpAQCAtNDg0LDkgKzQ5Miw2IEBAIEludFJl
Y3QgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6
dW5vY2NsdWRlZENvbnRyaWJ1CiAgICAgICAgICAgICB1bm9jY2x1ZGVkSW5TY3JlZW4gPSBjb21w
dXRlVW5vY2NsdWRlZENvbnRlbnRSZWN0KGNvbnRlbnRSZWN0LCB0cmFuc2Zvcm1Ub1NjcmVlbiwg
bV9zY2lzc29yUmVjdEluU2NyZWVuU3BhY2UsIFJlZ2lvbigpKTsKICAgICB9CiAKLSAgICBpZiAo
dW5vY2NsdWRlZEluU2NyZWVuLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHVub2NjbHVkZWRJ
blNjcmVlbjsKLQogICAgIEludFJlY3QgdW5vY2NsdWRlZEluVGFyZ2V0ID0gY29udGVudFJlY3Q7
CiAgICAgaWYgKHN1cmZhY2VUcmFuc2Zvcm1zVG9UYXJnZXRLbm93bihzdXJmYWNlKSkgewogICAg
ICAgICBpZiAoaGFzT2NjbHVzaW9uKSB7CkBAIC00OTYsNiArNTAxLDkgQEAgSW50UmVjdCBDQ09j
Y2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+Ojp1bm9jY2x1
ZGVkQ29udHJpYnUKICAgICAgICAgICAgIHVub2NjbHVkZWRJblRhcmdldCA9IGNvbXB1dGVVbm9j
Y2x1ZGVkQ29udGVudFJlY3QoY29udGVudFJlY3QsIHRyYW5zZm9ybVRvVGFyZ2V0LCBzdXJmYWNl
Q2xpcFJlY3QsIFJlZ2lvbigpKTsKICAgICB9CiAKKyAgICBpZiAoaGFzT2NjbHVzaW9uRnJvbU91
dHNpZGVUYXJnZXRTdXJmYWNlKQorICAgICAgICAqaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJn
ZXRTdXJmYWNlID0gKGludGVyc2VjdGlvbih1bm9jY2x1ZGVkSW5TY3JlZW4sIHVub2NjbHVkZWRJ
blRhcmdldCkgIT0gdW5vY2NsdWRlZEluVGFyZ2V0KTsKKwogICAgIHJldHVybiBpbnRlcnNlY3Rp
b24odW5vY2NsdWRlZEluU2NyZWVuLCB1bm9jY2x1ZGVkSW5UYXJnZXQpOwogfQogCkBAIC01MTcs
OSArNTI1LDkgQEAgdGVtcGxhdGUgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyQ2hy
b21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1bT46OmVudGUKIHRlbXBsYXRlIHZvaWQgQ0NPY2Ns
dXNpb25UcmFja2VyQmFzZTxMYXllckNocm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+Ojpm
aW5pc2hlZFJlbmRlclRhcmdldChjb25zdCBMYXllckNocm9taXVtKiBmaW5pc2hlZFRhcmdldCk7
CiB0ZW1wbGF0ZSB2b2lkIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJDaHJvbWl1bSwgUmVu
ZGVyU3VyZmFjZUNocm9taXVtPjo6bGVhdmVUb1JlbmRlclRhcmdldChjb25zdCBMYXllckNocm9t
aXVtKiBuZXdUYXJnZXQpOwogdGVtcGxhdGUgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExh
eWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1bT46Om1hcmtPY2NsdWRlZEJlaGluZExh
eWVyKGNvbnN0IExheWVyQ2hyb21pdW0qKTsKLXRlbXBsYXRlIGJvb2wgQ0NPY2NsdXNpb25UcmFj
a2VyQmFzZTxMYXllckNocm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+OjpvY2NsdWRlZChj
b25zdCBMYXllckNocm9taXVtKiwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpIGNvbnN0Owot
dGVtcGxhdGUgSW50UmVjdCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyQ2hyb21pdW0sIFJl
bmRlclN1cmZhY2VDaHJvbWl1bT46OnVub2NjbHVkZWRDb250ZW50UmVjdChjb25zdCBMYXllckNo
cm9taXVtKiwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpIGNvbnN0OwotdGVtcGxhdGUgSW50
UmVjdCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VD
aHJvbWl1bT46OnVub2NjbHVkZWRDb250cmlidXRpbmdTdXJmYWNlQ29udGVudFJlY3QoY29uc3Qg
TGF5ZXJDaHJvbWl1bSosIGJvb2wgZm9yUmVwbGljYSwgY29uc3QgSW50UmVjdCYgY29udGVudFJl
Y3QpIGNvbnN0OwordGVtcGxhdGUgYm9vbCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyQ2hy
b21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1bT46Om9jY2x1ZGVkKGNvbnN0IExheWVyQ2hyb21p
dW0qLCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgYm9vbCogaGFzT2NjbHVzaW9uRnJvbU91
dHNpZGVUYXJnZXRTdXJmYWNlKSBjb25zdDsKK3RlbXBsYXRlIEludFJlY3QgQ0NPY2NsdXNpb25U
cmFja2VyQmFzZTxMYXllckNocm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+Ojp1bm9jY2x1
ZGVkQ29udGVudFJlY3QoY29uc3QgTGF5ZXJDaHJvbWl1bSosIGNvbnN0IEludFJlY3QmIGNvbnRl
bnRSZWN0LCBib29sKiBoYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UpIGNvbnN0
OwordGVtcGxhdGUgSW50UmVjdCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyQ2hyb21pdW0s
IFJlbmRlclN1cmZhY2VDaHJvbWl1bT46OnVub2NjbHVkZWRDb250cmlidXRpbmdTdXJmYWNlQ29u
dGVudFJlY3QoY29uc3QgTGF5ZXJDaHJvbWl1bSosIGJvb2wgZm9yUmVwbGljYSwgY29uc3QgSW50
UmVjdCYgY29udGVudFJlY3QsIGJvb2wqIGhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3Vy
ZmFjZSkgY29uc3Q7CiB0ZW1wbGF0ZSBJbnRSZWN0IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5
ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9taXVtPjo6bGF5ZXJTY2lzc29yUmVjdEluVGFy
Z2V0U3VyZmFjZShjb25zdCBMYXllckNocm9taXVtKikgY29uc3Q7CiAKIHRlbXBsYXRlIENDT2Nj
bHVzaW9uVHJhY2tlckJhc2U8Q0NMYXllckltcGwsIENDUmVuZGVyU3VyZmFjZT46OkNDT2NjbHVz
aW9uVHJhY2tlckJhc2UoSW50UmVjdCBzY2lzc29yUmVjdEluU2NyZWVuU3BhY2UsIGJvb2wgcmVj
b3JkTWV0cmljc0ZvckZyYW1lKTsKQEAgLTUyOSw5ICs1MzcsOSBAQCB0ZW1wbGF0ZSB2b2lkIEND
T2NjbHVzaW9uVHJhY2tlckJhc2U8Q0NMYXllckltcGwsIENDUmVuZGVyU3VyZmFjZT46OmVudGVy
UmVuZGVyVAogdGVtcGxhdGUgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPENDTGF5ZXJJbXBs
LCBDQ1JlbmRlclN1cmZhY2U+OjpmaW5pc2hlZFJlbmRlclRhcmdldChjb25zdCBDQ0xheWVySW1w
bCogZmluaXNoZWRUYXJnZXQpOwogdGVtcGxhdGUgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNl
PENDTGF5ZXJJbXBsLCBDQ1JlbmRlclN1cmZhY2U+OjpsZWF2ZVRvUmVuZGVyVGFyZ2V0KGNvbnN0
IENDTGF5ZXJJbXBsKiBuZXdUYXJnZXQpOwogdGVtcGxhdGUgdm9pZCBDQ09jY2x1c2lvblRyYWNr
ZXJCYXNlPENDTGF5ZXJJbXBsLCBDQ1JlbmRlclN1cmZhY2U+OjptYXJrT2NjbHVkZWRCZWhpbmRM
YXllcihjb25zdCBDQ0xheWVySW1wbCopOwotdGVtcGxhdGUgYm9vbCBDQ09jY2x1c2lvblRyYWNr
ZXJCYXNlPENDTGF5ZXJJbXBsLCBDQ1JlbmRlclN1cmZhY2U+OjpvY2NsdWRlZChjb25zdCBDQ0xh
eWVySW1wbCosIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KSBjb25zdDsKLXRlbXBsYXRlIElu
dFJlY3QgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNl
Pjo6dW5vY2NsdWRlZENvbnRlbnRSZWN0KGNvbnN0IENDTGF5ZXJJbXBsKiwgY29uc3QgSW50UmVj
dCYgY29udGVudFJlY3QpIGNvbnN0OwotdGVtcGxhdGUgSW50UmVjdCBDQ09jY2x1c2lvblRyYWNr
ZXJCYXNlPENDTGF5ZXJJbXBsLCBDQ1JlbmRlclN1cmZhY2U+Ojp1bm9jY2x1ZGVkQ29udHJpYnV0
aW5nU3VyZmFjZUNvbnRlbnRSZWN0KGNvbnN0IENDTGF5ZXJJbXBsKiwgYm9vbCBmb3JSZXBsaWNh
LCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkgY29uc3Q7Cit0ZW1wbGF0ZSBib29sIENDT2Nj
bHVzaW9uVHJhY2tlckJhc2U8Q0NMYXllckltcGwsIENDUmVuZGVyU3VyZmFjZT46Om9jY2x1ZGVk
KGNvbnN0IENDTGF5ZXJJbXBsKiwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGJvb2wqIGhh
c09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSkgY29uc3Q7Cit0ZW1wbGF0ZSBJbnRS
ZWN0IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8Q0NMYXllckltcGwsIENDUmVuZGVyU3VyZmFjZT46
OnVub2NjbHVkZWRDb250ZW50UmVjdChjb25zdCBDQ0xheWVySW1wbCosIGNvbnN0IEludFJlY3Qm
IGNvbnRlbnRSZWN0LCBib29sKiBoYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2Up
IGNvbnN0OwordGVtcGxhdGUgSW50UmVjdCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPENDTGF5ZXJJ
bXBsLCBDQ1JlbmRlclN1cmZhY2U+Ojp1bm9jY2x1ZGVkQ29udHJpYnV0aW5nU3VyZmFjZUNvbnRl
bnRSZWN0KGNvbnN0IENDTGF5ZXJJbXBsKiwgYm9vbCBmb3JSZXBsaWNhLCBjb25zdCBJbnRSZWN0
JiBjb250ZW50UmVjdCwgYm9vbCogaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNl
KSBjb25zdDsKIHRlbXBsYXRlIEludFJlY3QgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxDQ0xheWVy
SW1wbCwgQ0NSZW5kZXJTdXJmYWNlPjo6bGF5ZXJTY2lzc29yUmVjdEluVGFyZ2V0U3VyZmFjZShj
b25zdCBDQ0xheWVySW1wbCopIGNvbnN0OwogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFj
a2VyLmgKaW5kZXggYWU4NTc1MWVhMWY4MTJlYWI1YjQ0ZTUwMGZjNWE4OGI5N2JmZmM1MS4uYTYw
MWI2ZDM5NTFhMTRmZWIzYWVkMzMxYzU1NDM5YjYwN2Q5NDc0YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2Vy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NP
Y2NsdXNpb25UcmFja2VyLmgKQEAgLTU0LDEzICs1NCwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBs
ZWF2ZUxheWVyKGNvbnN0IENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uPExheWVyVHlwZT4mKTsKIAog
ICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gcmVjdCBpbiBjb250ZW50IHNwYWNlIGZv
ciB0aGUgbGF5ZXIgaXMgZnVsbHkgb2NjbHVkZWQgaW4gZWl0aGVyIHNjcmVlbiBzcGFjZSBvciB0
aGUgbGF5ZXIncyB0YXJnZXQgc3VyZmFjZS4KLSAgICBib29sIG9jY2x1ZGVkKGNvbnN0IExheWVy
VHlwZSosIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KSBjb25zdDsKKyAgICBib29sIG9jY2x1
ZGVkKGNvbnN0IExheWVyVHlwZSosIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBib29sKiBo
YXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UgPSAwKSBjb25zdDsKICAgICAvLyBH
aXZlcyBhbiB1bm9jY2x1ZGVkIHN1Yi1yZWN0IG9mIHxjb250ZW50UmVjdHwgaW4gdGhlIGNvbnRl
bnQgc3BhY2Ugb2YgdGhlIGxheWVyLiBVc2VkIHdoZW4gY29uc2lkZXJpbmcgb2NjbHVzaW9uIGZv
ciBhIGxheWVyIHRoYXQgcGFpbnRzL2RyYXdzIHNvbWV0aGluZy4KLSAgICBJbnRSZWN0IHVub2Nj
bHVkZWRDb250ZW50UmVjdChjb25zdCBMYXllclR5cGUqLCBjb25zdCBJbnRSZWN0JiBjb250ZW50
UmVjdCkgY29uc3Q7CisgICAgSW50UmVjdCB1bm9jY2x1ZGVkQ29udGVudFJlY3QoY29uc3QgTGF5
ZXJUeXBlKiwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGJvb2wqIGhhc09jY2x1c2lvbkZy
b21PdXRzaWRlVGFyZ2V0U3VyZmFjZSA9IDApIGNvbnN0OwogCiAgICAgLy8gR2l2ZXMgYW4gdW5v
Y2NsdWRlZCBzdWItcmVjdCBvZiB8Y29udGVudFJlY3R8IGluIHRoZSBjb250ZW50IHNwYWNlIG9m
IHRoZSByZW5kZXJUYXJnZXQgb3duZWQgYnkgdGhlIGxheWVyLgogICAgIC8vIFVzZWQgd2hlbiBj
b25zaWRlcmluZyBvY2NsdXNpb24gZm9yIGEgY29udHJpYnV0aW5nIHN1cmZhY2UgdGhhdCBpcyBy
ZW5kZXJpbmcgaW50byBhbm90aGVyIHRhcmdldC4KLSAgICBJbnRSZWN0IHVub2NjbHVkZWRDb250
cmlidXRpbmdTdXJmYWNlQ29udGVudFJlY3QoY29uc3QgTGF5ZXJUeXBlKiwgYm9vbCBmb3JSZXBs
aWNhLCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkgY29uc3Q7CisgICAgSW50UmVjdCB1bm9j
Y2x1ZGVkQ29udHJpYnV0aW5nU3VyZmFjZUNvbnRlbnRSZWN0KGNvbnN0IExheWVyVHlwZSosIGJv
b2wgZm9yUmVwbGljYSwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGJvb2wqIGhhc09jY2x1
c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSA9IDApIGNvbnN0OwogCiAgICAgLy8gUmVwb3J0
IG9wZXJhdGlvbnMgZm9yIHJlY29yZGluZyBvdmVyZHJhdyBtZXRyaWNzLgogICAgIENDT3ZlcmRy
YXdNZXRyaWNzJiBvdmVyZHJhd01ldHJpY3MoKSBjb25zdCB7IHJldHVybiAqbV9vdmVyZHJhd01l
dHJpY3MuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwCmluZGV4IDY1Zjc4Nzg4ZWQ0
OWFlMjQyODVmN2RhY2NlYjcxZGUxZjQ5YTNlZjMuLjA2ODRmM2VlNTU1ZTJmYmFhYWU0ZjRmZWE5
YzQ2YjMwNmJmNWVjZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcApAQCAtMzMsNyArMzMs
OSBAQAogI2luY2x1ZGUgIlNrQ29sb3IuaCIKICNpbmNsdWRlICJjYy9DQ0RlYnVnQm9yZGVyRHJh
d1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgorI2luY2x1ZGUgImNjL0NDT2Nj
bHVzaW9uVHJhY2tlci5oIgogI2luY2x1ZGUgImNjL0NDT3ZlcmRyYXdNZXRyaWNzLmgiCisjaW5j
bHVkZSAiY2MvQ0NSZW5kZXJQYXNzLmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYlRyYW5zZm9ybWF0
aW9uTWF0cml4Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CkBAIC00NiwxMSArNDgsMTMgQEAg
c3RhdGljIGNvbnN0IGludCBkZWJ1Z1RpbGVCb3JkZXJDb2xvclJlZCA9IDE2MDsKIHN0YXRpYyBj
b25zdCBpbnQgZGVidWdUaWxlQm9yZGVyQ29sb3JHcmVlbiA9IDEwMDsKIHN0YXRpYyBjb25zdCBp
bnQgZGVidWdUaWxlQm9yZGVyQ29sb3JCbHVlID0gMDsKIAotQ0NRdWFkQ3VsbGVyOjpDQ1F1YWRD
dWxsZXIoQ0NRdWFkTGlzdCYgcXVhZExpc3QsIENDTGF5ZXJJbXBsKiBsYXllciwgY29uc3QgQ0NP
Y2NsdXNpb25UcmFja2VySW1wbCogb2NjbHVzaW9uVHJhY2tlciwgYm9vbCBzaG93Q3VsbGluZ1dp
dGhEZWJ1Z0JvcmRlclF1YWRzKQorQ0NRdWFkQ3VsbGVyOjpDQ1F1YWRDdWxsZXIoQ0NRdWFkTGlz
dCYgcXVhZExpc3QsIENDTGF5ZXJJbXBsKiBsYXllciwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2Vy
SW1wbCogb2NjbHVzaW9uVHJhY2tlciwgYm9vbCBzaG93Q3VsbGluZ1dpdGhEZWJ1Z0JvcmRlclF1
YWRzLCBib29sIGZvclN1cmZhY2UpCiAgICAgOiBtX3F1YWRMaXN0KHF1YWRMaXN0KQogICAgICwg
bV9sYXllcihsYXllcikKICAgICAsIG1fb2NjbHVzaW9uVHJhY2tlcihvY2NsdXNpb25UcmFja2Vy
KQogICAgICwgbV9zaG93Q3VsbGluZ1dpdGhEZWJ1Z0JvcmRlclF1YWRzKHNob3dDdWxsaW5nV2l0
aERlYnVnQm9yZGVyUXVhZHMpCisgICAgLCBtX2ZvclN1cmZhY2UoZm9yU3VyZmFjZSkKKyAgICAs
IG1faGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKGZhbHNlKQogewogfQogCkBA
IC03OCwxMyArODIsMTUgQEAgc3RhdGljIGlubGluZSBib29sIGFwcGVuZFF1YWRJbnRlcm5hbChQ
YXNzT3duUHRyPENDRHJhd1F1YWQ+IHBhc3NEcmF3UXVhZCwgY29uc3QKIAogYm9vbCBDQ1F1YWRD
dWxsZXI6OmFwcGVuZChQYXNzT3duUHRyPENDRHJhd1F1YWQ+IHBhc3NEcmF3UXVhZCkKIHsKLSAg
ICBJbnRSZWN0IGN1bGxlZFJlY3QgPSBtX29jY2x1c2lvblRyYWNrZXItPnVub2NjbHVkZWRDb250
ZW50UmVjdChtX2xheWVyLCBwYXNzRHJhd1F1YWQtPnF1YWRSZWN0KCkpOwotICAgIHJldHVybiBh
cHBlbmRRdWFkSW50ZXJuYWwocGFzc0RyYXdRdWFkLCBjdWxsZWRSZWN0LCBtX3F1YWRMaXN0LCAq
bV9vY2NsdXNpb25UcmFja2VyLCBtX3Nob3dDdWxsaW5nV2l0aERlYnVnQm9yZGVyUXVhZHMpOwot
fQorICAgIEludFJlY3QgY3VsbGVkUmVjdDsKKyAgICBib29sIGhhc09jY2x1c2lvbkZyb21PdXRz
aWRlVGFyZ2V0U3VyZmFjZTsKKworICAgIGlmIChtX2ZvclN1cmZhY2UpCisgICAgICAgIGN1bGxl
ZFJlY3QgPSBtX29jY2x1c2lvblRyYWNrZXItPnVub2NjbHVkZWRDb250cmlidXRpbmdTdXJmYWNl
Q29udGVudFJlY3QobV9sYXllciwgZmFsc2UsIHBhc3NEcmF3UXVhZC0+cXVhZFJlY3QoKSwgJmhh
c09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSk7CisgICAgZWxzZQorICAgICAgICBj
dWxsZWRSZWN0ID0gbV9vY2NsdXNpb25UcmFja2VyLT51bm9jY2x1ZGVkQ29udGVudFJlY3QobV9s
YXllciwgcGFzc0RyYXdRdWFkLT5xdWFkUmVjdCgpLCAmaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVU
YXJnZXRTdXJmYWNlKTsKKyAgICBtX2hhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFj
ZSB8PSBoYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2U7CiAKLWJvb2wgQ0NRdWFk
Q3VsbGVyOjphcHBlbmRTdXJmYWNlKFBhc3NPd25QdHI8Q0NEcmF3UXVhZD4gcGFzc0RyYXdRdWFk
KQotewotICAgIEludFJlY3QgY3VsbGVkUmVjdCA9IG1fb2NjbHVzaW9uVHJhY2tlci0+dW5vY2Ns
dWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChtX2xheWVyLCBmYWxzZSwgcGFzc0Ry
YXdRdWFkLT5xdWFkUmVjdCgpKTsKICAgICByZXR1cm4gYXBwZW5kUXVhZEludGVybmFsKHBhc3NE
cmF3UXVhZCwgY3VsbGVkUmVjdCwgbV9xdWFkTGlzdCwgKm1fb2NjbHVzaW9uVHJhY2tlciwgbV9z
aG93Q3VsbGluZ1dpdGhEZWJ1Z0JvcmRlclF1YWRzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIu
aAppbmRleCAyOTk5YjZhZDVhZjg0NDU1NDI3NGQ0NGUxYjk0NWY2Nzk4N2U1ZjYwLi43ZjA4MDI3
ODI3ZGQ4ZGU1NWM3ODVjMjAwZTU3NTA1YTJjYWEwZDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIu
aApAQCAtMjYsMjcgKzI2LDMzIEBACiAjaWZuZGVmIENDUXVhZEN1bGxlcl9oCiAjZGVmaW5lIEND
UXVhZEN1bGxlcl9oCiAKLSNpbmNsdWRlICJjYy9DQ1JlbmRlclBhc3MuaCIKKyNpbmNsdWRlICJD
Q1F1YWRTaW5rLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENDTGF5ZXJJbXBsOwot
Y2xhc3MgQ0NPdmVyZHJhd01ldHJpY3M7CitjbGFzcyBDQ1JlbmRlclN1cmZhY2U7CitjbGFzcyBD
Q1F1YWRMaXN0OwordGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBTdXJmYWNl
VHlwZT4KK2NsYXNzIENDT2NjbHVzaW9uVHJhY2tlckJhc2U7CiAKLWNsYXNzIENDUXVhZEN1bGxl
ciB7CitjbGFzcyBDQ1F1YWRDdWxsZXIgOiBwdWJsaWMgQ0NRdWFkU2luayB7CiBwdWJsaWM6Ci0g
ICAgLy8gUGFzc2luZyAwIGZvciBDQ092ZXJkcmF3Q291bnRzKiBpcyB2YWxpZCwgYW5kIGRpc2Fi
bGUgdGhlIGV4dHJhIGNvbXB1dGF0aW9uCi0gICAgLy8gZG9uZSB0byBlc3RpbWF0ZSBvdmVyIGRy
YXcgc3RhdGlzdGljcy4KLSAgICBDQ1F1YWRDdWxsZXIoQ0NRdWFkTGlzdCYsIENDTGF5ZXJJbXBs
KiwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VySW1wbCosIGJvb2wgc2hvd0N1bGxpbmdXaXRoRGVi
dWdCb3JkZXJRdWFkcyk7CisgICAgQ0NRdWFkQ3VsbGVyKENDUXVhZExpc3QmLCBDQ0xheWVySW1w
bCosIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8Q0NMYXllckltcGwsIENDUmVuZGVyU3Vy
ZmFjZT4qLCBib29sIHNob3dDdWxsaW5nV2l0aERlYnVnQm9yZGVyUXVhZHMsIGJvb2wgZm9yU3Vy
ZmFjZSk7CisKKyAgICB2aXJ0dWFsIH5DQ1F1YWRDdWxsZXIoKSB7IH0KIAogICAgIC8vIFJldHVy
bnMgdHJ1ZSBpZiB0aGUgcXVhZCBpcyBhZGRlZCB0byB0aGUgbGlzdCwgYW5kIGZhbHNlIGlmIHRo
ZSBxdWFkIGlzIGVudGlyZWx5IGN1bGxlZC4KLSAgICB2aXJ0dWFsIGJvb2wgYXBwZW5kKFBhc3NP
d25QdHI8Q0NEcmF3UXVhZD4gcGFzc0RyYXdRdWFkKTsKLSAgICB2aXJ0dWFsIGJvb2wgYXBwZW5k
U3VyZmFjZShQYXNzT3duUHRyPENDRHJhd1F1YWQ+IHBhc3NEcmF3UXVhZCk7CisgICAgdmlydHVh
bCBib29sIGFwcGVuZChQYXNzT3duUHRyPFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ+IHBhc3NE
cmF3UXVhZCkgT1ZFUlJJREU7CisKKyAgICBib29sIGhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFy
Z2V0U3VyZmFjZSgpIHsgcmV0dXJuIG1faGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJm
YWNlOyB9CiAKIHByaXZhdGU6CiAgICAgQ0NRdWFkTGlzdCYgbV9xdWFkTGlzdDsKICAgICBDQ0xh
eWVySW1wbCogbV9sYXllcjsKLSAgICBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXJJbXBsKiBtX29j
Y2x1c2lvblRyYWNrZXI7CisgICAgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxDQ0xheWVy
SW1wbCwgQ0NSZW5kZXJTdXJmYWNlPiogbV9vY2NsdXNpb25UcmFja2VyOwogICAgIGJvb2wgbV9z
aG93Q3VsbGluZ1dpdGhEZWJ1Z0JvcmRlclF1YWRzOworICAgIGJvb2wgbV9mb3JTdXJmYWNlOwor
ICAgIGJvb2wgbV9oYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2U7CiB9OwogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1F1YWRTaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1F1YWRTaW5rLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjJhOWM2MmFlMDZhNzE3NWNhYWFhNjM0OWI1
NDkxNjEyN2RhNTg0YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZFNpbmsuaApAQCAtMCwwICsxLDQ2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBDQ1F1YWRTaW5rX2gKKyNkZWZpbmUgQ0NRdWFkU2lua19oCisKKyNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYkNvbXBv
c2l0b3JRdWFkOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENDUXVhZFNpbmsg
eworcHVibGljOgorICAgIHZpcnR1YWwgfkNDUXVhZFNpbmsoKSB7IH0KKworICAgIC8vIFJldHVy
bnMgdHJ1ZSBpZiB0aGUgcXVhZCBpcyBhZGRlZCB0byB0aGUgbGlzdCwgYW5kIGZhbHNlIGlmIHRo
ZSBxdWFkIGlzIGVudGlyZWx5IGN1bGxlZC4KKyAgICB2aXJ0dWFsIGJvb2wgYXBwZW5kKFBhc3NP
d25QdHI8V2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZD4gcGFzc0RyYXdRdWFkKSA9IDA7Cit9Owor
Cit9CisjZW5kaWYgLy8gQ0NRdWFkQ3VsbGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwCmlu
ZGV4IGQzODlmMmIzMjZlYjY2MzZkNTNiODI5MGJjZjllYTFjMjkyMTQ3Y2EuLjc1YjRlMmQ2N2Jm
NGE4OWViMTAwYzY4MGNiZjkyN2NlNGFlMDY5Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNw
cApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKICNpbmNs
dWRlICJjYy9DQ01hdGhVdGlsLmgiCisjaW5jbHVkZSAiY2MvQ0NPY2NsdXNpb25UcmFja2VyLmgi
CiAjaW5jbHVkZSAiY2MvQ0NRdWFkQ3VsbGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NTaGFyZWRRdWFk
U3RhdGUuaCIKICNpbmNsdWRlICJjYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5oIgpAQCAtNDcsNiAr
NDgsNyBAQCBDQ1JlbmRlclBhc3M6OkNDUmVuZGVyUGFzcyhDQ1JlbmRlclN1cmZhY2UqIHRhcmdl
dFN1cmZhY2UsIGludCBpZCkKICAgICAsIG1fdGFyZ2V0U3VyZmFjZSh0YXJnZXRTdXJmYWNlKQog
ICAgICwgbV9mcmFtZWJ1ZmZlck91dHB1dFJlY3QodGFyZ2V0U3VyZmFjZS0+Y29udGVudFJlY3Qo
KSkKICAgICAsIG1faGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKHRydWUpCisgICAgLCBtX2hhc09j
Y2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZShmYWxzZSkKIHsKICAgICBBU1NFUlQodGFy
Z2V0U3VyZmFjZSk7CiAgICAgQVNTRVJUKGlkID4gMCk7CkBAIC01NCwxOSArNTYsMjMgQEAgQ0NS
ZW5kZXJQYXNzOjpDQ1JlbmRlclBhc3MoQ0NSZW5kZXJTdXJmYWNlKiB0YXJnZXRTdXJmYWNlLCBp
bnQgaWQpCiAKIHZvaWQgQ0NSZW5kZXJQYXNzOjphcHBlbmRRdWFkc0ZvckxheWVyKENDTGF5ZXJJ
bXBsKiBsYXllciwgQ0NPY2NsdXNpb25UcmFja2VySW1wbCogb2NjbHVzaW9uVHJhY2tlciwgYm9v
bCYgaGFkTWlzc2luZ1RpbGVzKQogewotICAgIENDUXVhZEN1bGxlciBxdWFkQ3VsbGVyKG1fcXVh
ZExpc3QsIGxheWVyLCBvY2NsdXNpb25UcmFja2VyLCBsYXllci0+aGFzRGVidWdCb3JkZXJzKCkp
OworICAgIGNvbnN0IGJvb2wgZm9yU3VyZmFjZSA9IGZhbHNlOworICAgIENDUXVhZEN1bGxlciBx
dWFkQ3VsbGVyKG1fcXVhZExpc3QsIGxheWVyLCBvY2NsdXNpb25UcmFja2VyLCBsYXllci0+aGFz
RGVidWdCb3JkZXJzKCksIGZvclN1cmZhY2UpOwogCiAgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0
YXRlPiBzaGFyZWRRdWFkU3RhdGUgPSBsYXllci0+Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKG1fc2hh
cmVkUXVhZFN0YXRlTGlzdC5zaXplKCkpOwogICAgIGxheWVyLT5hcHBlbmREZWJ1Z0JvcmRlclF1
YWQocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpKTsKICAgICBsYXllci0+YXBwZW5k
UXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpLCBoYWRNaXNzaW5nVGlsZXMp
OwogICAgIG1fc2hhcmVkUXVhZFN0YXRlTGlzdC5hcHBlbmQoc2hhcmVkUXVhZFN0YXRlLnJlbGVh
c2UoKSk7CisKKyAgICBtX2hhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSB8PSBx
dWFkQ3VsbGVyLmhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSgpOwogfQogCiB2
b2lkIENDUmVuZGVyUGFzczo6YXBwZW5kUXVhZHNGb3JSZW5kZXJTdXJmYWNlTGF5ZXIoQ0NMYXll
ckltcGwqIGxheWVyLCBjb25zdCBDQ1JlbmRlclBhc3MqIGNvbnRyaWJ1dGluZ1JlbmRlclBhc3Ms
IENDT2NjbHVzaW9uVHJhY2tlckltcGwqIG9jY2x1c2lvblRyYWNrZXIpCiB7CiAgICAgLy8gRklY
TUU6IHJlbmRlciBzdXJmYWNlIGxheWVycyBzaG91bGQgYmUgYSBDQ0xheWVySW1wbC1kZXJpdmVk
IGNsYXNzIGFuZAogICAgIC8vIG5vdCBiZSBoYW5kbGVkIHNwZWNpYWxseSBoZXJlLgotICAgIEND
UXVhZEN1bGxlciBxdWFkQ3VsbGVyKG1fcXVhZExpc3QsIGxheWVyLCBvY2NsdXNpb25UcmFja2Vy
LCBsYXllci0+aGFzRGVidWdCb3JkZXJzKCkpOworICAgIGNvbnN0IGJvb2wgZm9yU3VyZmFjZSA9
IHRydWU7CisgICAgQ0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXIobV9xdWFkTGlzdCwgbGF5ZXIsIG9j
Y2x1c2lvblRyYWNrZXIsIGxheWVyLT5oYXNEZWJ1Z0JvcmRlcnMoKSwgZm9yU3VyZmFjZSk7CiAK
ICAgICBDQ1JlbmRlclN1cmZhY2UqIHN1cmZhY2UgPSBsYXllci0+cmVuZGVyU3VyZmFjZSgpOwog
CkBAIC03NSw2ICs4MSw4IEBAIHZvaWQgQ0NSZW5kZXJQYXNzOjphcHBlbmRRdWFkc0ZvclJlbmRl
clN1cmZhY2VMYXllcihDQ0xheWVySW1wbCogbGF5ZXIsIGNvbnN0IENDCiAgICAgc3VyZmFjZS0+
YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpLCBpc1JlcGxpY2Es
IGNvbnRyaWJ1dGluZ1JlbmRlclBhc3MtPmlkKCkpOwogICAgIG1fc2hhcmVkUXVhZFN0YXRlTGlz
dC5hcHBlbmQoc2hhcmVkUXVhZFN0YXRlLnJlbGVhc2UoKSk7CiAKKyAgICBtX2hhc09jY2x1c2lv
bkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSB8PSBxdWFkQ3VsbGVyLmhhc09jY2x1c2lvbkZyb21P
dXRzaWRlVGFyZ2V0U3VyZmFjZSgpOworCiAgICAgaWYgKCFsYXllci0+aGFzUmVwbGljYSgpKQog
ICAgICAgICByZXR1cm47CiAKQEAgLTgzLDYgKzkxLDggQEAgdm9pZCBDQ1JlbmRlclBhc3M6OmFw
cGVuZFF1YWRzRm9yUmVuZGVyU3VyZmFjZUxheWVyKENDTGF5ZXJJbXBsKiBsYXllciwgY29uc3Qg
Q0MKICAgICBpc1JlcGxpY2EgPSB0cnVlOwogICAgIHN1cmZhY2UtPmFwcGVuZFF1YWRzKHF1YWRD
dWxsZXIsIHJlcGxpY2FTaGFyZWRRdWFkU3RhdGUuZ2V0KCksIGlzUmVwbGljYSwgY29udHJpYnV0
aW5nUmVuZGVyUGFzcy0+aWQoKSk7CiAgICAgbV9zaGFyZWRRdWFkU3RhdGVMaXN0LmFwcGVuZChy
ZXBsaWNhU2hhcmVkUXVhZFN0YXRlLnJlbGVhc2UoKSk7CisKKyAgICBtX2hhc09jY2x1c2lvbkZy
b21PdXRzaWRlVGFyZ2V0U3VyZmFjZSB8PSBxdWFkQ3VsbGVyLmhhc09jY2x1c2lvbkZyb21PdXRz
aWRlVGFyZ2V0U3VyZmFjZSgpOwogfQogCiB2b2lkIENDUmVuZGVyUGFzczo6YXBwZW5kUXVhZHNU
b0ZpbGxTY3JlZW4oQ0NMYXllckltcGwqIHJvb3RMYXllciwgU2tDb2xvciBzY3JlZW5CYWNrZ3Jv
dW5kQ29sb3IsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlckltcGwmIG9jY2x1c2lvblRyYWNrZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1JlbmRlclBhc3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUmVuZGVyUGFzcy5oCmluZGV4IDAxMGE3Njc0YjBjZTJiMjJjMDkyYTY2MDZkNDFj
ZDM0MWExYzk3ZjYuLjgxNjQ4MWM5NzM2NTkyZGI4MjQzZDcwMmJjMzEyMWJmNjMyYjUzOGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UmVuZGVyUGFzcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUmVuZGVyUGFzcy5oCkBAIC03MSw2ICs3MSw4IEBAIHB1YmxpYzoKICAgICBib29s
IGhhc1RyYW5zcGFyZW50QmFja2dyb3VuZCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzVHJhbnNwYXJl
bnRCYWNrZ3JvdW5kOyB9CiAgICAgdm9pZCBzZXRIYXNUcmFuc3BhcmVudEJhY2tncm91bmQoYm9v
bCB0cmFuc3BhcmVudCkgeyBtX2hhc1RyYW5zcGFyZW50QmFja2dyb3VuZCA9IHRyYW5zcGFyZW50
OyB9CiAKKyAgICBib29sIGhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSgpIGNv
bnN0IHsgcmV0dXJuIG1faGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlOyB9Cisg
ICAgdm9pZCBzZXRIYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UoYm9vbCBoYXNP
Y2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UpIHsgbV9oYXNPY2NsdXNpb25Gcm9tT3V0
c2lkZVRhcmdldFN1cmZhY2UgPSBoYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2U7
IH0KIHByb3RlY3RlZDoKICAgICBDQ1JlbmRlclBhc3MoQ0NSZW5kZXJTdXJmYWNlKiwgaW50IGlk
KTsKIApAQCAtODAsNiArODIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSW50UmVjdCBtX2ZyYW1lYnVm
ZmVyT3V0cHV0UmVjdDsKICAgICBWZWN0b3I8T3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiA+IG1f
c2hhcmVkUXVhZFN0YXRlTGlzdDsKICAgICBib29sIG1faGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5k
OworICAgIGJvb2wgbV9oYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2U7CiB9Owog
CiB0eXBlZGVmIFZlY3RvcjxDQ1JlbmRlclBhc3MqPiBDQ1JlbmRlclBhc3NMaXN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5k
ZXJTdXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAKaW5kZXggZWZmMDY4YWI0NDg5YzQ4MDcwZGU5MWQ1NjI0
MDVlNjM2ZGUyNDc3My4uMjI0MzRjMjAzZGIwODNkODcwYjBiZjYwZWVmOTc0YWQ4YmMyNmYxNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NSZW5kZXJTdXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAjaW5j
bHVkZSAiY2MvQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllcklt
cGwuaCIKICNpbmNsdWRlICJjYy9DQ01hdGhVdGlsLmgiCi0jaW5jbHVkZSAiY2MvQ0NRdWFkQ3Vs
bGVyLmgiCisjaW5jbHVkZSAiY2MvQ0NRdWFkU2luay5oIgogI2luY2x1ZGUgImNjL0NDUmVuZGVy
UGFzc0RyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NTaGFyZWRRdWFkU3RhdGUuaCIKICNpbmNs
dWRlIDxwdWJsaWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KQEAgLTE4MSw3ICsxODEsNyBA
QCBGbG9hdFJlY3QgQ0NSZW5kZXJTdXJmYWNlOjpjb21wdXRlUm9vdFNjaXNzb3JSZWN0SW5DdXJy
ZW50U3VyZmFjZShjb25zdCBGbG9hdFJlYwogICAgIHJldHVybiBDQ01hdGhVdGlsOjpwcm9qZWN0
Q2xpcHBlZFJlY3QoaW52ZXJzZVNjcmVlblNwYWNlVHJhbnNmb3JtLCByb290U2Npc3NvclJlY3Qp
OwogfQogCi12b2lkIENDUmVuZGVyU3VyZmFjZTo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBx
dWFkTGlzdCwgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCBmb3JSZXBs
aWNhLCBpbnQgcmVuZGVyUGFzc0lkKQordm9pZCBDQ1JlbmRlclN1cmZhY2U6OmFwcGVuZFF1YWRz
KENDUXVhZFNpbmsmIHF1YWRMaXN0LCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRl
LCBib29sIGZvclJlcGxpY2EsIGludCByZW5kZXJQYXNzSWQpCiB7CiAgICAgQVNTRVJUKCFmb3JS
ZXBsaWNhIHx8IG1fb3duaW5nTGF5ZXItPmhhc1JlcGxpY2EoKSk7CiAKQEAgLTE5MCw3ICsxOTAs
NyBAQCB2b2lkIENDUmVuZGVyU3VyZmFjZTo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFk
TGlzdCwgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYQogICAgICAgICBpbnQgZ3JlZW4gPSBmb3JSZXBs
aWNhID8gIGRlYnVnUmVwbGljYUJvcmRlckNvbG9yR3JlZW4gOiBkZWJ1Z1N1cmZhY2VCb3JkZXJD
b2xvckdyZWVuOwogICAgICAgICBpbnQgYmx1ZSA9IGZvclJlcGxpY2EgPyBkZWJ1Z1JlcGxpY2FC
b3JkZXJDb2xvckJsdWUgOiBkZWJ1Z1N1cmZhY2VCb3JkZXJDb2xvckJsdWU7CiAgICAgICAgIFNr
Q29sb3IgY29sb3IgPSBTa0NvbG9yU2V0QVJHQihkZWJ1Z1N1cmZhY2VCb3JkZXJBbHBoYSwgcmVk
LCBncmVlbiwgYmx1ZSk7Ci0gICAgICAgIHF1YWRMaXN0LmFwcGVuZFN1cmZhY2UoQ0NEZWJ1Z0Jv
cmRlckRyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBjb250ZW50UmVjdCgpLCBjb2xv
ciwgZGVidWdTdXJmYWNlQm9yZGVyV2lkdGgpKTsKKyAgICAgICAgcXVhZExpc3QuYXBwZW5kKEND
RGVidWdCb3JkZXJEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgY29udGVudFJlY3Qo
KSwgY29sb3IsIGRlYnVnU3VyZmFjZUJvcmRlcldpZHRoKSk7CiAgICAgfQogCiAgICAgLy8gRklY
TUU6IEJ5IHVzaW5nIHRoZSBzYW1lIFJlbmRlclN1cmZhY2UgZm9yIGJvdGggdGhlIGNvbnRlbnQg
YW5kIGl0cyByZWZsZWN0aW9uLApAQCAtMjE2LDcgKzIxNiw3IEBAIHZvaWQgQ0NSZW5kZXJTdXJm
YWNlOjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBDQ1NoYXJlZFF1YWRTdGF0
ZSogc2hhCiAgICAgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzID0g
bV9vd25pbmdMYXllci0+ZmlsdGVycygpOwogICAgIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3Bl
cmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMgPSBtX293bmluZ0xheWVyLT5iYWNrZ3JvdW5kRmls
dGVycygpOwogCi0gICAgcXVhZExpc3QuYXBwZW5kU3VyZmFjZShDQ1JlbmRlclBhc3NEcmF3UXVh
ZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgY29udGVudFJlY3QoKSwgcmVuZGVyUGFzc0lkLCBm
b3JSZXBsaWNhLCBkcmF3VHJhbnNmb3JtLCBmaWx0ZXJzLCBiYWNrZ3JvdW5kRmlsdGVycywgbWFz
a1Jlc291cmNlSWQsIGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lKSk7CisgICAgcXVhZExp
c3QuYXBwZW5kKENDUmVuZGVyUGFzc0RyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBj
b250ZW50UmVjdCgpLCByZW5kZXJQYXNzSWQsIGZvclJlcGxpY2EsIGRyYXdUcmFuc2Zvcm0sIGZp
bHRlcnMsIGJhY2tncm91bmRGaWx0ZXJzLCBtYXNrUmVzb3VyY2VJZCwgY29udGVudHNDaGFuZ2Vk
U2luY2VMYXN0RnJhbWUpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaAppbmRl
eCAxYWMzNDAwYWY1YzRjMGJjMjIxNTI2MGQ1Mzc1ODA3NTlhYzc0ODE2Li43OWZkYWM0ZWNjOTA1
ZjEzYWU4Nzg3MzRiMDUxNjQwMGFmYmY1Yjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2Uu
aApAQCAtMzksNyArMzksNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQ0RhbWFn
ZVRyYWNrZXI7Ci1jbGFzcyBDQ1F1YWRDdWxsZXI7CitjbGFzcyBDQ1F1YWRTaW5rOwogY2xhc3Mg
Q0NSZW5kZXJQYXNzOwogY2xhc3MgQ0NMYXllckltcGw7CiBjbGFzcyBMYXllclJlbmRlcmVyQ2hy
b21pdW07CkBAIC0xMTcsNyArMTE3LDcgQEAgcHVibGljOgogICAgIFBhc3NPd25QdHI8Q0NTaGFy
ZWRRdWFkU3RhdGU+IGNyZWF0ZVNoYXJlZFF1YWRTdGF0ZShpbnQgaWQpIGNvbnN0OwogICAgIFBh
c3NPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IGNyZWF0ZVJlcGxpY2FTaGFyZWRRdWFkU3RhdGUo
aW50IGlkKSBjb25zdDsKIAotICAgIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiwgQ0NT
aGFyZWRRdWFkU3RhdGUqLCBib29sIGZvclJlcGxpY2EsIGludCByZW5kZXJQYXNzSWQpOworICAg
IHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYsIENDU2hhcmVkUXVhZFN0YXRlKiwgYm9vbCBm
b3JSZXBsaWNhLCBpbnQgcmVuZGVyUGFzc0lkKTsKIAogICAgIEZsb2F0UmVjdCBjb21wdXRlUm9v
dFNjaXNzb3JSZWN0SW5DdXJyZW50U3VyZmFjZShjb25zdCBGbG9hdFJlY3QmIHJvb3RTY2lzc29y
UmVjdCkgY29uc3Q7CiAKQEAgLTE1Nyw2ICsxNTcsNyBAQCBwcml2YXRlOgogICAgIC8vIEZvciBD
Q0xheWVySXRlcmF0b3JBY3Rpb25zCiAgICAgaW50IG1fdGFyZ2V0UmVuZGVyU3VyZmFjZUxheWVy
SW5kZXhIaXN0b3J5OwogICAgIGludCBtX2N1cnJlbnRMYXllckluZGV4SGlzdG9yeTsKKwogICAg
IGZyaWVuZCBzdHJ1Y3QgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFy
TGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcAppbmRleCA2NTBlNzUxZjhjODk0ZWZmNTYxYzRl
ZjdjYzE3ZGIwMWNlOTRjYmQzLi4xZmNkMWRhOGJmNDFlMmQyMmI2MThjOTQ2YzIzZTM4YzQ1Yzk4
OGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3BwCkBAIC0zMSw3
ICszMSw3IEBACiAKICNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZS5oIgogI2luY2x1ZGUgIlNjcm9s
bGJhclRoZW1lQ29tcG9zaXRlLmgiCi0jaW5jbHVkZSAiY2MvQ0NRdWFkQ3VsbGVyLmgiCisjaW5j
bHVkZSAiY2MvQ0NRdWFkU2luay5oIgogI2luY2x1ZGUgImNjL0NDVGV4dHVyZURyYXdRdWFkLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTYyLDcgKzYyLDcgQEAgRmxvYXRSZWN0IHRvVVZS
ZWN0KGNvbnN0IEludFJlY3QmIHIsIGNvbnN0IEludFJlY3QmIGJvdW5kcykKIAogfQogCi12b2lk
IENDU2Nyb2xsYmFyTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0
LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJikKK3ZvaWQg
Q0NTY3JvbGxiYXJMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRMaXN0LCBj
b25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJikKIHsKICAgICBT
Y3JvbGxiYXJUaGVtZUNvbXBvc2l0ZSogdGhlbWUgPSBzdGF0aWNfY2FzdDxTY3JvbGxiYXJUaGVt
ZUNvbXBvc2l0ZSo+KFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpKTsKICAgICBpZiAoIXRoZW1lKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTY3JvbGxiYXJMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmgKaW5kZXggMzJhODM1ZDkwMmFjNWMz
ODFjYzAyM2U0MmRmMjgwN2ZlODQwNzA1MS4uZmFhMzM2MWJhZDM3NTk4MDRlODAzNDhkNDIyMGRl
YjY3YjNlMDA1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5oCkBAIC02
MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICBDQ0xheWVySW1wbCogc2Nyb2xsTGF5ZXIoKSBjb25z
dCB7IHJldHVybiBtX3Njcm9sbExheWVyOyB9CiAgICAgdm9pZCBzZXRTY3JvbGxMYXllcihDQ0xh
eWVySW1wbCogc2Nyb2xsTGF5ZXIpIHsgbV9zY3JvbGxMYXllciA9IHNjcm9sbExheWVyOyB9CiAK
LSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFy
ZWRRdWFkU3RhdGUqLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUq
LCBib29sJiBoYWRNaXNzaW5nVGlsZXMpIE9WRVJSSURFOwogCiBwcm90ZWN0ZWQ6CiAgICAgZXhw
bGljaXQgQ0NTY3JvbGxiYXJMYXllckltcGwoaW50IGlkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxheWVySW1w
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Nv
bGlkQ29sb3JMYXllckltcGwuY3BwCmluZGV4IDRkNTJjMTVkZDQyZjIzZGFhZmY2YzU0MzhiZTRm
NzllZjc4NjQ2YTMuLmY1MmM3OTdjMDJmNzQ4OGZiOGQ0MDdmNTFmMGVkYzlmNDVhOTkyNzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U29saWRDb2xvckxheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmNwcApAQCAtMjksNyArMjks
NyBAQAogCiAjaW5jbHVkZSAiY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmgiCiAKLSNpbmNsdWRl
ICJjYy9DQ1F1YWRDdWxsZXIuaCIKKyNpbmNsdWRlICJjYy9DQ1F1YWRTaW5rLmgiCiAjaW5jbHVk
ZSAiY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNDksNyArNDksNyBAQCBDQ1Nv
bGlkQ29sb3JMYXllckltcGw6On5DQ1NvbGlkQ29sb3JMYXllckltcGwoKQogewogfQogCi12b2lk
IENDU29saWRDb2xvckxheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlz
dCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCYpCit2b2lk
IENDU29saWRDb2xvckxheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVhZExpc3Qs
IGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGJvb2wmKQogewogICAg
IC8vIFdlIGNyZWF0ZSBhIHNlcmllcyBvZiBzbWFsbGVyIHF1YWRzIGluc3RlYWQgb2YganVzdCBv
bmUgbGFyZ2Ugb25lIHNvIHRoYXQgdGhlCiAgICAgLy8gY3VsbGVyIGNhbiByZWR1Y2UgdGhlIHRv
dGFsIHBpeGVscyBkcmF3bi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxheWVySW1wbC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmgK
aW5kZXggZTMwMDU4NDVlNmRlNmIyMGRhYzVmZWU2NDlhNTE1NzFmNmExMGMzNi4uNzE1M2YyMWFi
ODJhNzg0YWM4NTBlOGQ2M2I4NWMyMTE2YjY4NWY0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xp
ZENvbG9yTGF5ZXJJbXBsLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIH0KICAgICB2
aXJ0dWFsIH5DQ1NvbGlkQ29sb3JMYXllckltcGwoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhcHBl
bmRRdWFkcyhDQ1F1YWRDdWxsZXImLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wmIGhh
ZE1pc3NpbmdUaWxlcykgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKEND
UXVhZFNpbmsmLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wmIGhhZE1pc3NpbmdUaWxl
cykgT1ZFUlJJREU7CiAKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBDQ1NvbGlkQ29sb3JMYXll
ckltcGwoaW50IGlkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwuY3BwCmluZGV4
IDZmYzkxOTk2MjAwMzJmNTMyMmZlNWMyZjkxZmQ2YThjNzIwMjU1ODguLjdjYmJlY2UxNjg4Mzg3
OGM0OTc3ZDRmOWFhNDg1NmU4MDFjY2IxODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5
ZXJJbXBsLmNwcApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgImNjL0NDVGV4dHVyZUxheWVy
SW1wbC5oIgogCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgotI2luY2x1ZGUgImNjL0NDUXVhZEN1
bGxlci5oIgorI2luY2x1ZGUgImNjL0NDUXVhZFNpbmsuaCIKICNpbmNsdWRlICJjYy9DQ1JlbmRl
cmVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlRHJhd1F1YWQuaCIKIApAQCAtNTYsNyArNTYs
NyBAQCB2b2lkIENDVGV4dHVyZUxheWVySW1wbDo6d2lsbERyYXcoQ0NSZXNvdXJjZVByb3ZpZGVy
KiByZXNvdXJjZVByb3ZpZGVyKQogICAgIG1fZXh0ZXJuYWxUZXh0dXJlUmVzb3VyY2UgPSByZXNv
dXJjZVByb3ZpZGVyLT5jcmVhdGVSZXNvdXJjZUZyb21FeHRlcm5hbFRleHR1cmUobV90ZXh0dXJl
SWQpOwogfQogCi12b2lkIENDVGV4dHVyZUxheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3Vs
bGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwg
Ym9vbCYpCit2b2lkIENDVGV4dHVyZUxheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYg
cXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGJvb2wm
KQogewogICAgIEFTU0VSVChtX2V4dGVybmFsVGV4dHVyZVJlc291cmNlKTsKICAgICBJbnRSZWN0
IHF1YWRSZWN0KEludFBvaW50KCksIGNvbnRlbnRCb3VuZHMoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllcklt
cGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4
dHVyZUxheWVySW1wbC5oCmluZGV4IGU3NDhiMDEzMDhhOGVkYjk2MmEzOGY5NTRkYTBkMWJkZjk2
NzkzNDAuLmU1NDUzMTQ4ZGNjYTUwOWI3OTNlNjk0NWJiNmJhZDcxODE3NjBmMGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVy
ZUxheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5DQ1RleHR1cmVMYXllckltcGwoKTsKIAogICAgIHZpcnR1YWwgdm9pZCB3aWxs
RHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgYXBw
ZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiBo
YWRNaXNzaW5nVGlsZXMpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhD
Q1F1YWRTaW5rJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiBoYWRNaXNzaW5nVGls
ZXMpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaWREcmF3KENDUmVzb3VyY2VQcm92aWRl
ciopIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIGRpZExvc2VDb250ZXh0KCkgT1ZFUlJJ
REU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCmluZGV4IGM5ZTliMjI2NGI5OGQ3
OGEzZjBmNDg1NTViZjc3ZjgwODEwMzZiZGUuLmVlNDk2NTE4NzkwYmJkM2MxNDBmYzIzM2NhNzY4
NGQ5NjNjMWY1ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCkBAIC0zNSw3
ICszNSw3IEBACiAjaW5jbHVkZSAiY2MvQ0NDaGVja2VyYm9hcmREcmF3UXVhZC5oIgogI2luY2x1
ZGUgImNjL0NDRGVidWdCb3JkZXJEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUaWxp
bmdEYXRhLmgiCi0jaW5jbHVkZSAiY2MvQ0NRdWFkQ3VsbGVyLmgiCisjaW5jbHVkZSAiY2MvQ0NR
dWFkU2luay5oIgogI2luY2x1ZGUgImNjL0NDU29saWRDb2xvckRyYXdRdWFkLmgiCiAjaW5jbHVk
ZSAiY2MvQ0NUaWxlRHJhd1F1YWQuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
QEAgLTEyMyw3ICsxMjMsNyBAQCBEcmF3YWJsZVRpbGUqIENDVGlsZWRMYXllckltcGw6OmNyZWF0
ZVRpbGUoaW50IGksIGludCBqKQogICAgIHJldHVybiBhZGRlZFRpbGU7CiB9CiAKLXZvaWQgQ0NU
aWxlZExheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3Qg
Q0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCYgaGFkTWlzc2luZ1RpbGVz
KQordm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkTGlz
dCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCYgaGFkTWlz
c2luZ1RpbGVzKQogewogICAgIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0ID0gdmlzaWJsZUNv
bnRlbnRSZWN0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaAppbmRleCA4NzFkNGU3
ZDE2YTE0N2FlOGI0MTQyNTQwZjE3YWE0Y2I4MzBhOGNmLi4wMTVmZGMzMDYyNDg3MDBhODYyYzIy
OWVhYzM2Mzg5YjFkZWRjNGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oCkBAIC00
Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVhbCB+Q0NUaWxlZExheWVySW1w
bCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYsIGNvbnN0
IENDU2hhcmVkUXVhZFN0YXRlKiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYsIGNvbnN0IENDU2hhcmVkUXVh
ZFN0YXRlKiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwg
Q0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIGNvbnRlbnRzUmVzb3VyY2VJZCgpIGNvbnN0
IE9WRVJSSURFOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwCmluZGV4IGFlNTM4
YzJlNTM2OTMzMTI0NDRjZDUwOWUyMzEyODMxZDg0YTM5NWQuLmZhMjAxZDExMjZiYTRiYjA5ZTg2
N2M1NzJjMjI5YjcyZDk3OWI5OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3Bw
CkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiY2MvQ0NJT1N1cmZhY2VEcmF3UXVhZC5oIgog
I2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKICNpbmNsdWRlICJjYy9DQ1Byb3h5
LmgiCi0jaW5jbHVkZSAiY2MvQ0NRdWFkQ3VsbGVyLmgiCisjaW5jbHVkZSAiY2MvQ0NRdWFkU2lu
ay5oIgogI2luY2x1ZGUgImNjL0NDUmVzb3VyY2VQcm92aWRlci5oIgogI2luY2x1ZGUgImNjL0ND
U3RyZWFtVmlkZW9EcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDVGV4dHVyZURyYXdRdWFkLmgi
CkBAIC0xNzcsNyArMTc3LDcgQEAgdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjp3aWxsRHJhd0ludGVy
bmFsKENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlcikKICAgICAgICAgbV9leHRl
cm5hbFRleHR1cmVSZXNvdXJjZSA9IHJlc291cmNlUHJvdmlkZXItPmNyZWF0ZVJlc291cmNlRnJv
bUV4dGVybmFsVGV4dHVyZShtX2ZyYW1lLT50ZXh0dXJlSWQoKSk7CiB9CiAKLXZvaWQgQ0NWaWRl
b0xheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NT
aGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCYpCit2b2lkIENDVmlkZW9MYXll
ckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1
YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJikKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6
aXNJbXBsVGhyZWFkKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmgKaW5kZXggNGNm
N2NhYmI3NmQ5M2NlZTg5MmY1NDNlMjViYzQ5ZTk4MTRlYjRiMy4uNDE0Y2E2OGUzNDY4NTc0NmM5
YTA1MzUwOTUzMzA1OGJhZWQ5ZjhmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaApA
QCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q0NWaWRlb0xheWVySW1wbCgp
OwogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3KENDUmVzb3VyY2VQcm92aWRlciopIE9WRVJS
SURFOwotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImLCBjb25zdCBD
Q1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZFNpbmsmLCBjb25zdCBDQ1NoYXJlZFF1YWRT
dGF0ZSosIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IGRpZERyYXcoQ0NSZXNvdXJjZVByb3ZpZGVyKikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZv
aWQgZHVtcExheWVyUHJvcGVydGllcyhUZXh0U3RyZWFtJiwgaW50IGluZGVudCkgY29uc3QgT1ZF
UlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJU
cmVlSG9zdEltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXll
clRyZWVIb3N0SW1wbFRlc3QuY3BwCmluZGV4IDY0ZGVkNzkyODYyOGFmMmQzYjMzMmQ0YTNkZmIw
MmNhZjdiYjJiZDkuLmRkNTI1ZmNiZjc3ODhmMjQwYzFiMmI0NmNiM2QxNWEzMzAxMjE1YjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1w
bFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVI
b3N0SW1wbFRlc3QuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJDQ0FuaW1hdGlv
blRlc3RDb21tb24uaCIKICNpbmNsdWRlICJDQ0xheWVyVGVzdENvbW1vbi5oIgorI2luY2x1ZGUg
IkNDTGF5ZXJUcmVlVGVzdENvbW1vbi5oIgogI2luY2x1ZGUgIkNDVGVzdENvbW1vbi5oIgogI2lu
Y2x1ZGUgIkZha2VXZWJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVy
ZXJDaHJvbWl1bS5oIgpAQCAtMTE3NSw3ICsxMTc2LDcgQEAgY2xhc3MgQmxlbmRTdGF0ZUNoZWNr
TGF5ZXIgOiBwdWJsaWMgQ0NMYXllckltcGwgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3du
UHRyPEJsZW5kU3RhdGVDaGVja0xheWVyPiBjcmVhdGUoaW50IGlkLCBDQ1Jlc291cmNlUHJvdmlk
ZXIqIHJlc291cmNlUHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBCbGVuZFN0YXRlQ2hl
Y2tMYXllcihpZCwgcmVzb3VyY2VQcm92aWRlcikpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBw
ZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUq
IHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCYpIE9WRVJSSURFCisgICAgdmlydHVhbCB2b2lkIGFwcGVu
ZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hh
cmVkUXVhZFN0YXRlLCBib29sJikgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIG1fcXVhZHNBcHBl
bmRlZCA9IHRydWU7CiAKQEAgLTE3MDIsMTAgKzE3MDMsMTAgQEAgY2xhc3MgRmFrZUxheWVyV2l0
aFF1YWRzIDogcHVibGljIENDTGF5ZXJJbXBsIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093
blB0cjxGYWtlTGF5ZXJXaXRoUXVhZHM+IGNyZWF0ZShpbnQgaWQpIHsgcmV0dXJuIGFkb3B0UHRy
KG5ldyBGYWtlTGF5ZXJXaXRoUXVhZHMoaWQpKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGFwcGVu
ZFF1YWRzKENDUXVhZEN1bGxlciYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBz
aGFyZWRRdWFkU3RhdGUsIGJvb2wmKSBPVkVSUklERQorICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRR
dWFkcyhDQ1F1YWRTaW5rJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJl
ZFF1YWRTdGF0ZSwgYm9vbCYpIE9WRVJSSURFCiAgICAgewogICAgICAgICBTa0NvbG9yIGdyYXkg
PSBTa0NvbG9yU2V0UkdCKDEwMCwgMTAwLCAxMDApOwotICAgICAgICBJbnRSZWN0IHF1YWRSZWN0
KDAsIDAsIDUsIDUpOworICAgICAgICBJbnRSZWN0IHF1YWRSZWN0KEludFBvaW50KDAsIDApLCBj
b250ZW50Qm91bmRzKCkpOwogICAgICAgICBPd25QdHI8Q0NEcmF3UXVhZD4gbXlRdWFkID0gQ0NT
b2xpZENvbG9yRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBncmF5
KTsKICAgICAgICAgcXVhZExpc3QuYXBwZW5kKG15UXVhZC5yZWxlYXNlKCkpOwogICAgIH0KQEAg
LTI0NzYsNiArMjQ3NywyMSBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGhhc1Ry
YW5zcGFyZW50QmFja2dyb3VuZCkKICAgICBNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9u
cygmbW9ja0NvbnRleHQpOwogfQogCitzdGF0aWMgdm9pZCBhZGREcmF3aW5nTGF5ZXJUbyhDQ0xh
eWVySW1wbCogcGFyZW50LCBpbnQgaWQsIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgQ0NMYXll
ckltcGwqKiByZXN1bHQpCit7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBsYXllciA9IEZha2VM
YXllcldpdGhRdWFkczo6Y3JlYXRlKGlkKTsKKyAgICBDQ0xheWVySW1wbCogbGF5ZXJQdHIgPSBs
YXllci5nZXQoKTsKKyAgICBsYXllclB0ci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgwLCAw
KSk7CisgICAgbGF5ZXJQdHItPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQobGF5ZXJSZWN0LmxvY2F0
aW9uKCkpKTsKKyAgICBsYXllclB0ci0+c2V0Qm91bmRzKGxheWVyUmVjdC5zaXplKCkpOworICAg
IGxheWVyUHRyLT5zZXRDb250ZW50Qm91bmRzKGxheWVyUmVjdC5zaXplKCkpOworICAgIGxheWVy
UHRyLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7IC8vIG9ubHkgY2hpbGRyZW4gZHJhdyBjb250ZW50
CisgICAgbGF5ZXJQdHItPnNldE9wYXF1ZSh0cnVlKTsKKyAgICBwYXJlbnQtPmFkZENoaWxkKGxh
eWVyLnJlbGVhc2UoKSk7CisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgKnJlc3VsdCA9IGxheWVy
UHRyOworfQorCiBzdGF0aWMgdm9pZCBzZXR1cExheWVyc0ZvclRleHR1cmVDYWNoaW5nKENDTGF5
ZXJUcmVlSG9zdEltcGwqIGxheWVyVHJlZUhvc3RJbXBsLCBDQ0xheWVySW1wbComIHJvb3RQdHIs
IENDTGF5ZXJJbXBsKiYgaW50ZXJtZWRpYXRlTGF5ZXJQdHIsIENDTGF5ZXJJbXBsKiYgc3VyZmFj
ZUxheWVyUHRyLCBDQ0xheWVySW1wbComIGNoaWxkUHRyLCBjb25zdCBJbnRTaXplJiByb290U2l6
ZSkKIHsKICAgICBPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNvbnRleHQgPSBDQ0dyYXBoaWNz
Q29udGV4dDo6Y3JlYXRlM0QoYWRvcHRQdHIobmV3IFBhcnRpYWxTd2FwQ29udGV4dCkpOwpAQCAt
MjQ5MCw1MCArMjUwNiwyMCBAQCBzdGF0aWMgdm9pZCBzZXR1cExheWVyc0ZvclRleHR1cmVDYWNo
aW5nKENDTGF5ZXJUcmVlSG9zdEltcGwqIGxheWVyVHJlZUhvc3RJbXBsLAogICAgIHJvb3QtPnNl
dFBvc2l0aW9uKEZsb2F0UG9pbnQoMCwgMCkpOwogICAgIHJvb3QtPnNldEJvdW5kcyhyb290U2l6
ZSk7CiAgICAgcm9vdC0+c2V0Q29udGVudEJvdW5kcyhyb290U2l6ZSk7Ci0gICAgcm9vdC0+c2V0
VmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQoMCwgMCksIHJvb3RTaXplKSk7CiAg
ICAgcm9vdC0+c2V0RHJhd3NDb250ZW50KHRydWUpOwogICAgIGxheWVyVHJlZUhvc3RJbXBsLT5z
ZXRSb290TGF5ZXIocm9vdC5yZWxlYXNlKCkpOwogCi0gICAgLy8gSW50ZXJtZWRpYXRlIGxheWVy
IGRvZXMgbm90IG93biBhIHN1cmZhY2UsIGFuZCBkb2VzIG5vdCBkcmF3IGNvbnRlbnQuCi0gICAg
T3duUHRyPENDTGF5ZXJJbXBsPiBpbnRlcm1lZGlhdGVMYXllciA9IENDTGF5ZXJJbXBsOjpjcmVh
dGUoMik7Ci0gICAgaW50ZXJtZWRpYXRlTGF5ZXJQdHIgPSBpbnRlcm1lZGlhdGVMYXllci5nZXQo
KTsKLQotICAgIGludGVybWVkaWF0ZUxheWVyUHRyLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50
KDAsIDApKTsKLSAgICBpbnRlcm1lZGlhdGVMYXllclB0ci0+c2V0UG9zaXRpb24oRmxvYXRQb2lu
dCgxMCwgMTApKTsKLSAgICBpbnRlcm1lZGlhdGVMYXllclB0ci0+c2V0Qm91bmRzKHJvb3RTaXpl
KTsKLSAgICBpbnRlcm1lZGlhdGVMYXllclB0ci0+c2V0Q29udGVudEJvdW5kcyhyb290U2l6ZSk7
Ci0gICAgaW50ZXJtZWRpYXRlTGF5ZXJQdHItPnNldFZpc2libGVDb250ZW50UmVjdChJbnRSZWN0
KEludFBvaW50KDAsIDApLCByb290U2l6ZSkpOworICAgIGFkZERyYXdpbmdMYXllclRvKHJvb3RQ
dHIsIDIsIEludFJlY3QoMTAsIDEwLCByb290U2l6ZS53aWR0aCgpLCByb290U2l6ZS5oZWlnaHQo
KSksICZpbnRlcm1lZGlhdGVMYXllclB0cik7CiAgICAgaW50ZXJtZWRpYXRlTGF5ZXJQdHItPnNl
dERyYXdzQ29udGVudChmYWxzZSk7IC8vIG9ubHkgY2hpbGRyZW4gZHJhdyBjb250ZW50Ci0gICAg
cm9vdFB0ci0+YWRkQ2hpbGQoaW50ZXJtZWRpYXRlTGF5ZXIucmVsZWFzZSgpKTsKLQotICAgIE93
blB0cjxDQ0xheWVySW1wbD4gc3VyZmFjZUxheWVyID0gQ0NMYXllckltcGw6OmNyZWF0ZSgzKTsK
LSAgICBzdXJmYWNlTGF5ZXJQdHIgPSBzdXJmYWNlTGF5ZXIuZ2V0KCk7CiAKICAgICAvLyBTdXJm
YWNlIGxheWVyIGlzIHRoZSBsYXllciB0aGF0IGNoYW5nZXMgaXRzIG9wYWNpdHkKICAgICAvLyBJ
dCB3aWxsIGNvbnRhaW4gb3RoZXIgbGF5ZXJzIHRoYXQgZHJhdyBjb250ZW50LgotICAgIEludFNp
emUgc3VyZmFjZVNpemUocm9vdFNpemUud2lkdGgoKSwgcm9vdFNpemUuaGVpZ2h0KCkpOwotICAg
IHN1cmZhY2VMYXllclB0ci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgwLCAwKSk7Ci0gICAg
c3VyZmFjZUxheWVyUHRyLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KDEwLCAxMCkpOwotICAgIHN1
cmZhY2VMYXllclB0ci0+c2V0Qm91bmRzKHN1cmZhY2VTaXplKTsKLSAgICBzdXJmYWNlTGF5ZXJQ
dHItPnNldENvbnRlbnRCb3VuZHMoc3VyZmFjZVNpemUpOwotICAgIHN1cmZhY2VMYXllclB0ci0+
c2V0VmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQoMCwgMCksIHN1cmZhY2VTaXpl
KSk7CisgICAgYWRkRHJhd2luZ0xheWVyVG8oaW50ZXJtZWRpYXRlTGF5ZXJQdHIsIDMsIEludFJl
Y3QoMTAsIDEwLCByb290U2l6ZS53aWR0aCgpLCByb290U2l6ZS5oZWlnaHQoKSksICZzdXJmYWNl
TGF5ZXJQdHIpOwogICAgIHN1cmZhY2VMYXllclB0ci0+c2V0RHJhd3NDb250ZW50KGZhbHNlKTsg
Ly8gb25seSBjaGlsZHJlbiBkcmF3IGNvbnRlbnQKICAgICBzdXJmYWNlTGF5ZXJQdHItPnNldE9w
YWNpdHkoMC41Zik7IC8vIFRoaXMgd2lsbCBjYXVzZSBpdCB0byBoYXZlIGEgc3VyZmFjZQotICAg
IGludGVybWVkaWF0ZUxheWVyUHRyLT5hZGRDaGlsZChzdXJmYWNlTGF5ZXIucmVsZWFzZSgpKTsK
IAogICAgIC8vIENoaWxkIG9mIHRoZSBzdXJmYWNlIGxheWVyIHdpbGwgcHJvZHVjZSBzb21lIHF1
YWRzCi0gICAgT3duUHRyPEZha2VMYXllcldpdGhRdWFkcz4gY2hpbGQgPSBGYWtlTGF5ZXJXaXRo
UXVhZHM6OmNyZWF0ZSg0KTsKLSAgICBjaGlsZFB0ciA9IGNoaWxkLmdldCgpOwotCi0gICAgSW50
U2l6ZSBjaGlsZFNpemUocm9vdFNpemUud2lkdGgoKSwgcm9vdFNpemUuaGVpZ2h0KCkpOwotICAg
IGNoaWxkUHRyLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50KDAsIDApKTsKLSAgICBjaGlsZFB0
ci0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCg1LCA1KSk7Ci0gICAgY2hpbGRQdHItPnNldEJvdW5k
cyhjaGlsZFNpemUpOwotICAgIGNoaWxkUHRyLT5zZXRDb250ZW50Qm91bmRzKGNoaWxkU2l6ZSk7
Ci0gICAgY2hpbGRQdHItPnNldFZpc2libGVDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50KDAs
IDApLCBjaGlsZFNpemUpKTsKLSAgICBjaGlsZFB0ci0+c2V0RHJhd3NDb250ZW50KHRydWUpOwot
Ci0gICAgc3VyZmFjZUxheWVyUHRyLT5hZGRDaGlsZChjaGlsZC5yZWxlYXNlKCkpOworICAgIGFk
ZERyYXdpbmdMYXllclRvKHN1cmZhY2VMYXllclB0ciwgNCwgSW50UmVjdCg1LCA1LCByb290U2l6
ZS53aWR0aCgpLCByb290U2l6ZS5oZWlnaHQoKSksICZjaGlsZFB0cik7CiB9CiAKIGNsYXNzIExh
eWVyUmVuZGVyZXJDaHJvbWl1bVdpdGhSZWxlYXNlVGV4dHVyZXMgOiBwdWJsaWMgTGF5ZXJSZW5k
ZXJlckNocm9taXVtIHsKQEAgLTI1NDEsNiArMjUyNyw2MTIgQEAgcHVibGljOgogICAgIHVzaW5n
IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVsZWFzZVJlbmRlclBhc3NUZXh0dXJlczsKIH07CiAK
K1RFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgdGV4dHVyZUNhY2hpbmdXaXRoQ2xpcHBp
bmcpCit7CisgICAgQ0NTZXR0aW5nczo6c2V0UGFydGlhbFN3YXBFbmFibGVkKHRydWUpOworCisg
ICAgQ0NMYXllclRyZWVTZXR0aW5ncyBzZXR0aW5nczsKKyAgICBPd25QdHI8Q0NMYXllclRyZWVI
b3N0SW1wbD4gbXlIb3N0SW1wbCA9IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShzZXR0aW5n
cywgdGhpcyk7CisKKyAgICBDQ0xheWVySW1wbCogcm9vdFB0cjsKKyAgICBDQ0xheWVySW1wbCog
c3VyZmFjZUxheWVyUHRyOworCisgICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjb250ZXh0
ID0gQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKGFkb3B0UHRyKG5ldyBQYXJ0aWFsU3dhcENv
bnRleHQpKTsKKworICAgIEludFNpemUgcm9vdFNpemUoMTAwLCAxMDApOworCisgICAgbXlIb3N0
SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY29udGV4dC5yZWxlYXNlKCksIFVudGhyb3R0
bGVkVXBsb2FkZXIpOworICAgIG15SG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKHJv
b3RTaXplLndpZHRoKCksIHJvb3RTaXplLmhlaWdodCgpKSk7CisKKyAgICBPd25QdHI8Q0NMYXll
ckltcGw+IHJvb3QgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDEpOworICAgIHJvb3RQdHIgPSByb290
LmdldCgpOworCisgICAgcm9vdC0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgwLCAwKSk7Cisg
ICAgcm9vdC0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCgwLCAwKSk7CisgICAgcm9vdC0+c2V0Qm91
bmRzKHJvb3RTaXplKTsKKyAgICByb290LT5zZXRDb250ZW50Qm91bmRzKHJvb3RTaXplKTsKKyAg
ICByb290LT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7CisgICAgcm9vdC0+c2V0TWFza3NUb0JvdW5k
cyh0cnVlKTsKKyAgICBteUhvc3RJbXBsLT5zZXRSb290TGF5ZXIocm9vdC5yZWxlYXNlKCkpOwor
CisgICAgYWRkRHJhd2luZ0xheWVyVG8ocm9vdFB0ciwgMywgSW50UmVjdCgwLCAwLCByb290U2l6
ZS53aWR0aCgpLCByb290U2l6ZS5oZWlnaHQoKSksICZzdXJmYWNlTGF5ZXJQdHIpOworICAgIHN1
cmZhY2VMYXllclB0ci0+c2V0RHJhd3NDb250ZW50KGZhbHNlKTsKKworICAgIC8vIFN1cmZhY2Ug
bGF5ZXIgaXMgdGhlIGxheWVyIHRoYXQgY2hhbmdlcyBpdHMgb3BhY2l0eQorICAgIC8vIEl0IHdp
bGwgY29udGFpbiBvdGhlciBsYXllcnMgdGhhdCBkcmF3IGNvbnRlbnQuCisgICAgc3VyZmFjZUxh
eWVyUHRyLT5zZXRPcGFjaXR5KDAuNWYpOyAvLyBUaGlzIHdpbGwgY2F1c2UgaXQgdG8gaGF2ZSBh
IHN1cmZhY2UKKworICAgIGFkZERyYXdpbmdMYXllclRvKHN1cmZhY2VMYXllclB0ciwgNCwgSW50
UmVjdCgwLCAwLCAxMDAsIDMpLCAwKTsKKyAgICBhZGREcmF3aW5nTGF5ZXJUbyhzdXJmYWNlTGF5
ZXJQdHIsIDUsIEludFJlY3QoMCwgOTcsIDEwMCwgMyksIDApOworCisgICAgLy8gUm90YXRpb24g
d2lsbCBwdXQgcGFydCBvZiB0aGUgY2hpbGQgb3VzaWRlIHRoZSBib3VuZHMgb2YgdGhlIHJvb3Qg
bGF5ZXIuCisgICAgLy8gTmV2ZXJ0aGVsZXNzLCB0aGUgY2hpbGQgbGF5ZXJzIHNob3VsZCBiZSBk
cmF3bi4KKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm0gPSBzdXJmYWNlTGF5
ZXJQdHItPnRyYW5zZm9ybSgpOworICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoNTAsIDUwKTsKKyAg
ICB0cmFuc2Zvcm0ucm90YXRlKDM1KTsKKyAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKC01MCwgLTUw
KTsKKyAgICBzdXJmYWNlTGF5ZXJQdHItPnNldFRyYW5zZm9ybSh0cmFuc2Zvcm0pOworCisgICAg
eworICAgICAgICBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEgZnJhbWU7CisgICAgICAg
IEVYUEVDVF9UUlVFKG15SG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKKworICAgICAg
ICAvLyBNdXN0IHJlY2VpdmUgdHdvIHJlbmRlciBwYXNzZXMsIGVhY2ggd2l0aCBvbmUgcXVhZAor
ICAgICAgICBBU1NFUlRfRVEoMlUsIGZyYW1lLnJlbmRlclBhc3Nlcy5zaXplKCkpOworICAgICAg
ICBFWFBFQ1RfRVEoMlUsIGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+cXVhZExpc3QoKS5zaXplKCkp
OworICAgICAgICBBU1NFUlRfRVEoMVUsIGZyYW1lLnJlbmRlclBhc3Nlc1sxXS0+cXVhZExpc3Qo
KS5zaXplKCkpOworCisgICAgICAgIC8vIFZlcmlmeSB0aGF0IHRoZSBjaGlsZCBsYXllcnMgaGF2
ZSBiZWVuIGRyYXduIGVudGlyZWx5LgorICAgICAgICBJbnRSZWN0IHF1YWRWaXNpYmxlUmVjdCA9
IGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+cXVhZExpc3QoKVswXS0+cXVhZFZpc2libGVSZWN0KCk7
CisgICAgICAgIEVYUEVDVF9JTlRfUkVDVF9FUShJbnRSZWN0KDAsIDAsIDEwMCwgMyksIHF1YWRW
aXNpYmxlUmVjdCk7CisKKyAgICAgICAgcXVhZFZpc2libGVSZWN0ID0gZnJhbWUucmVuZGVyUGFz
c2VzWzBdLT5xdWFkTGlzdCgpWzFdLT5xdWFkVmlzaWJsZVJlY3QoKTsKKyAgICAgICAgRVhQRUNU
X0lOVF9SRUNUX0VRKEludFJlY3QoMCwgMCwgMTAwLCAzKSwgcXVhZFZpc2libGVSZWN0KTsKKwor
ICAgICAgICBFWFBFQ1RfRVEoQ0NEcmF3UXVhZDo6UmVuZGVyUGFzcywgZnJhbWUucmVuZGVyUGFz
c2VzWzFdLT5xdWFkTGlzdCgpWzBdLT5tYXRlcmlhbCgpKTsKKyAgICAgICAgQ0NSZW5kZXJQYXNz
RHJhd1F1YWQqIHF1YWQgPSBzdGF0aWNfY2FzdDxDQ1JlbmRlclBhc3NEcmF3UXVhZCo+KGZyYW1l
LnJlbmRlclBhc3Nlc1sxXS0+cXVhZExpc3QoKVswXS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9G
QUxTRShxdWFkLT5jb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSgpLmlzRW1wdHkoKSk7CisK
KyAgICAgICAgbXlIb3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CisgICAgICAgIG15SG9zdElt
cGwtPmRpZERyYXdBbGxMYXllcnMoZnJhbWUpOworICAgIH0KKworICAgIHRyYW5zZm9ybSA9IHN1
cmZhY2VMYXllclB0ci0+dHJhbnNmb3JtKCk7CisgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSg1MCwg
NTApOworICAgIHRyYW5zZm9ybS5yb3RhdGUoLTM1KTsKKyAgICB0cmFuc2Zvcm0udHJhbnNsYXRl
KC01MCwgLTUwKTsKKyAgICBzdXJmYWNlTGF5ZXJQdHItPnNldFRyYW5zZm9ybSh0cmFuc2Zvcm0p
OworCisgICAgLy8gVGhlIHN1cmZhY2UgaXMgbm93IGFsaWduZWQgYWdhaW4sIGFuZCB0aGUgY2xp
cHBlZCBwYXJ0cyBhcmUgZXhwb3NlZC4KKyAgICAvLyBUaGF0IHNob3VsZCBiZSBPSywgYXMgd2Un
dmUgYWxyZWFkeSB2ZXJpZmllZCB0aGF0IHRoZSBxdWFkcyBhcmUgZHJhd24gaW4gZnVsbC4KKyAg
ICAvLyBWZXJpZnkgdGhhdCB0aGUgcmVuZGVyIHBhc3MgaXMgcmVtb3ZlZC4KKyAgICB7CisgICAg
ICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSBmcmFtZTsKKyAgICAgICAgRVhQRUNU
X1RSVUUobXlIb3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworCisgICAgICAgIC8vIE11
c3QgcmVjZWl2ZSBhIHNpbmdsZSByZW5kZXIgcGFzcyB1c2luZyBhIGNhY2hlZCB0ZXh0dXJlLgor
ICAgICAgICBBU1NFUlRfRVEoMVUsIGZyYW1lLnJlbmRlclBhc3Nlcy5zaXplKCkpOworICAgICAg
ICBFWFBFQ1RfRVEoMVUsIGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+cXVhZExpc3QoKS5zaXplKCkp
OworCisgICAgICAgIG15SG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOworICAgICAgICBteUhv
c3RJbXBsLT5kaWREcmF3QWxsTGF5ZXJzKGZyYW1lKTsKKyAgICB9Cit9CisKK1RFU1RfRihDQ0xh
eWVyVHJlZUhvc3RJbXBsVGVzdCwgdGV4dHVyZUNhY2hpbmdXaXRoT2NjbHVzaW9uKQoreworICAg
IENDU2V0dGluZ3M6OnNldFBhcnRpYWxTd2FwRW5hYmxlZChmYWxzZSk7CisKKyAgICBDQ0xheWVy
VHJlZVNldHRpbmdzIHNldHRpbmdzOworICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBt
eUhvc3RJbXBsID0gQ0NMYXllclRyZWVIb3N0SW1wbDo6Y3JlYXRlKHNldHRpbmdzLCB0aGlzKTsK
KworICAgIC8vIExheWVycyBhcmUgc3RydWN0dXJlIGFzIGZvbGxvd3M6CisgICAgLy8KKyAgICAv
LyAgUiArLS0gUzEgKy0gTDEwIChvd25pbmcpCisgICAgLy8gICAgfCAgICAgICstIEwxMQorICAg
IC8vICAgIHwgICAgICArLSBMMTIKKyAgICAvLyAgICB8CisgICAgLy8gICAgKy0tIFMyICstIEwy
MCAob3duaW5nKQorICAgIC8vICAgICAgICAgICArLSBMMjEKKyAgICAvLworICAgIC8vIE9jY2x1
c2lvbjoKKyAgICAvLyBMMTIgb2NjbHVkZXMgTDExIChpbnRlcm5hbCkKKyAgICAvLyBMMjAgb2Nj
bHVkZXMgTDEwIChleHRlcm5hbCkKKyAgICAvLyBMMjEgb2NjbHVkZXMgTDIwIChpbnRlcm5hbCkK
KworICAgIENDTGF5ZXJJbXBsKiByb290UHRyOworICAgIENDTGF5ZXJJbXBsKiBsYXllclMxUHRy
OworICAgIENDTGF5ZXJJbXBsKiBsYXllclMyUHRyOworCisgICAgT3duUHRyPENDR3JhcGhpY3ND
b250ZXh0PiBjb250ZXh0ID0gQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKGFkb3B0UHRyKG5l
dyBQYXJ0aWFsU3dhcENvbnRleHQpKTsKKworICAgIEludFNpemUgcm9vdFNpemUoMTAwMCwgMTAw
MCk7CisKKyAgICBteUhvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjb250ZXh0LnJl
bGVhc2UoKSwgVW50aHJvdHRsZWRVcGxvYWRlcik7CisgICAgbXlIb3N0SW1wbC0+c2V0Vmlld3Bv
cnRTaXplKEludFNpemUocm9vdFNpemUud2lkdGgoKSwgcm9vdFNpemUuaGVpZ2h0KCkpKTsKKwor
ICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMSk7Cisg
ICAgcm9vdFB0ciA9IHJvb3QuZ2V0KCk7CisKKyAgICByb290LT5zZXRBbmNob3JQb2ludChGbG9h
dFBvaW50KDAsIDApKTsKKyAgICByb290LT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KDAsIDApKTsK
KyAgICByb290LT5zZXRCb3VuZHMocm9vdFNpemUpOworICAgIHJvb3QtPnNldENvbnRlbnRCb3Vu
ZHMocm9vdFNpemUpOworICAgIHJvb3QtPnNldERyYXdzQ29udGVudCh0cnVlKTsKKyAgICByb290
LT5zZXRNYXNrc1RvQm91bmRzKHRydWUpOworICAgIG15SG9zdEltcGwtPnNldFJvb3RMYXllcihy
b290LnJlbGVhc2UoKSk7CisKKyAgICBhZGREcmF3aW5nTGF5ZXJUbyhyb290UHRyLCAyLCBJbnRS
ZWN0KDMwMCwgMzAwLCAzMDAsIDMwMCksICZsYXllclMxUHRyKTsKKyAgICBsYXllclMxUHRyLT5z
ZXRGb3JjZVJlbmRlclN1cmZhY2UodHJ1ZSk7CisKKyAgICBhZGREcmF3aW5nTGF5ZXJUbyhsYXll
clMxUHRyLCAzLCBJbnRSZWN0KDEwLCAxMCwgMTAsIDEwKSwgMCk7IC8vIEwxMQorICAgIGFkZERy
YXdpbmdMYXllclRvKGxheWVyUzFQdHIsIDQsIEludFJlY3QoMCwgMCwgMzAsIDMwKSwgMCk7IC8v
IEwxMgorCisgICAgYWRkRHJhd2luZ0xheWVyVG8ocm9vdFB0ciwgNSwgSW50UmVjdCg1NTAsIDI1
MCwgMzAwLCA0MDApLCAmbGF5ZXJTMlB0cik7CisgICAgbGF5ZXJTMlB0ci0+c2V0Rm9yY2VSZW5k
ZXJTdXJmYWNlKHRydWUpOworCisgICAgYWRkRHJhd2luZ0xheWVyVG8obGF5ZXJTMlB0ciwgNiwg
SW50UmVjdCgyMCwgMjAsIDUsIDUpLCAwKTsgLy8gTDIxCisKKyAgICAvLyBJbml0aWFsIGRyYXcg
LSBtdXN0IHJlY2VpdmUgYWxsIHF1YWRzCisgICAgeworICAgICAgICBDQ0xheWVyVHJlZUhvc3RJ
bXBsOjpGcmFtZURhdGEgZnJhbWU7CisgICAgICAgIEVYUEVDVF9UUlVFKG15SG9zdEltcGwtPnBy
ZXBhcmVUb0RyYXcoZnJhbWUpKTsKKworICAgICAgICAvLyBNdXN0IHJlY2VpdmUgMyByZW5kZXIg
cGFzc2VzLgorICAgICAgICAvLyBGb3IgUm9vdCwgdGhlcmUgYXJlIDIgcXVhZHM7IGZvciBTMSwg
dGhlcmUgYXJlIDMgcXVhZHM7IGZvciBTMiwgdGhlcmUgaXMgMSBxdWFkLgorICAgICAgICBBU1NF
UlRfRVEoM1UsIGZyYW1lLnJlbmRlclBhc3Nlcy5zaXplKCkpOworCisgICAgICAgIEVYUEVDVF9F
USgyVSwgZnJhbWUucmVuZGVyUGFzc2VzWzBdLT5xdWFkTGlzdCgpLnNpemUoKSk7CisgICAgICAg
IEVYUEVDVF9FUSgzVSwgZnJhbWUucmVuZGVyUGFzc2VzWzFdLT5xdWFkTGlzdCgpLnNpemUoKSk7
CisgICAgICAgIEVYUEVDVF9FUSgyVSwgZnJhbWUucmVuZGVyUGFzc2VzWzJdLT5xdWFkTGlzdCgp
LnNpemUoKSk7CisKKyAgICAgICAgbXlIb3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CisgICAg
ICAgIG15SG9zdEltcGwtPmRpZERyYXdBbGxMYXllcnMoZnJhbWUpOworICAgIH0KKworICAgIC8v
ICJVbm9jY2x1ZGUiIHN1cmZhY2UgUzEgYW5kIHJlcGVhdCBkcmF3LgorICAgIC8vIE11c3QgcmVt
b3ZlIFMyJ3MgcmVuZGVyIHBhc3Mgc2luY2UgaXQncyBjYWNoZWQ7CisgICAgLy8gTXVzdCBrZWVw
IFMxIHF1YWRzIGJlY2F1c2UgdGV4dHVyZSBjb250YWluZWQgZXh0ZXJuYWwgb2NjbHVzaW9uLgor
ICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybSA9IGxheWVyUzJQdHItPnRyYW5z
Zm9ybSgpOworICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoMTUwLCAxNTApOworICAgIGxheWVyUzJQ
dHItPnNldFRyYW5zZm9ybSh0cmFuc2Zvcm0pOworICAgIHsKKyAgICAgICAgQ0NMYXllclRyZWVI
b3N0SW1wbDo6RnJhbWVEYXRhIGZyYW1lOworICAgICAgICBFWFBFQ1RfVFJVRShteUhvc3RJbXBs
LT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CisKKyAgICAgICAgLy8gTXVzdCByZWNlaXZlIDIgcmVu
ZGVyIHBhc3Nlcy4KKyAgICAgICAgLy8gRm9yIFJvb3QsIHRoZXJlIGFyZSAyIHF1YWRzCisgICAg
ICAgIC8vIEZvciBTMSwgdGhlIG51bWJlciBvZiBxdWFkcyBkZXBlbmRzIG9uIHdoYXQgZ290IHVu
b2NjbHVkZWQsIHNvIG5vdCBhc3NlcnRlZCBiZXlvbmQgYmVpbmcgcG9zaXRpdmUuCisgICAgICAg
IC8vIEZvciBTMiwgdGhlcmUgaXMgbm8gcmVuZGVyIHBhc3MKKyAgICAgICAgQVNTRVJUX0VRKDJV
LCBmcmFtZS5yZW5kZXJQYXNzZXMuc2l6ZSgpKTsKKworICAgICAgICBFWFBFQ1RfR1QoZnJhbWUu
cmVuZGVyUGFzc2VzWzBdLT5xdWFkTGlzdCgpLnNpemUoKSwgMFUpOworICAgICAgICBFWFBFQ1Rf
RVEoMlUsIGZyYW1lLnJlbmRlclBhc3Nlc1sxXS0+cXVhZExpc3QoKS5zaXplKCkpOworCisgICAg
ICAgIG15SG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOworICAgICAgICBteUhvc3RJbXBsLT5k
aWREcmF3QWxsTGF5ZXJzKGZyYW1lKTsKKyAgICB9CisKKyAgICAvLyAiUmUtb2NjbHVkZSIgc3Vy
ZmFjZSBTMSBhbmQgcmVwZWF0IGRyYXcuCisgICAgLy8gTXVzdCByZW1vdmUgUzEncyByZW5kZXIg
cGFzcyBzaW5jZSBpdCBpcyBub3cgYXZhaWxhYmxlIGluIGZ1bGwuCisgICAgLy8gUzIgaGFzIG5v
IGNoYW5nZSBzbyBtdXN0IGFsc28gYmUgcmVtb3ZlZC4KKyAgICB0cmFuc2Zvcm0gPSBsYXllclMy
UHRyLT50cmFuc2Zvcm0oKTsKKyAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKC0xNSwgLTE1KTsKKyAg
ICBsYXllclMyUHRyLT5zZXRUcmFuc2Zvcm0odHJhbnNmb3JtKTsKKyAgICB7CisgICAgICAgIEND
TGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSBmcmFtZTsKKyAgICAgICAgRVhQRUNUX1RSVUUo
bXlIb3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworCisgICAgICAgIC8vIE11c3QgcmVj
ZWl2ZSAxIHJlbmRlciBwYXNzIC0gZm9yIHRoZSByb290LgorICAgICAgICBBU1NFUlRfRVEoMVUs
IGZyYW1lLnJlbmRlclBhc3Nlcy5zaXplKCkpOworCisgICAgICAgIEVYUEVDVF9FUSgyVSwgZnJh
bWUucmVuZGVyUGFzc2VzWzBdLT5xdWFkTGlzdCgpLnNpemUoKSk7CisKKyAgICAgICAgbXlIb3N0
SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CisgICAgICAgIG15SG9zdEltcGwtPmRpZERyYXdBbGxM
YXllcnMoZnJhbWUpOworICAgIH0KKworfQorCitURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRl
c3QsIHRleHR1cmVDYWNoaW5nV2l0aE9jY2x1c2lvbkVhcmx5T3V0KQoreworICAgIENDU2V0dGlu
Z3M6OnNldFBhcnRpYWxTd2FwRW5hYmxlZChmYWxzZSk7CisKKyAgICBDQ0xheWVyVHJlZVNldHRp
bmdzIHNldHRpbmdzOworICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBteUhvc3RJbXBs
ID0gQ0NMYXllclRyZWVIb3N0SW1wbDo6Y3JlYXRlKHNldHRpbmdzLCB0aGlzKTsKKworICAgIC8v
IExheWVycyBhcmUgc3RydWN0dXJlIGFzIGZvbGxvd3M6CisgICAgLy8KKyAgICAvLyAgUiArLS0g
UzEgKy0gTDEwIChvd25pbmcsIG5vbiBkcmF3aW5nKQorICAgIC8vICAgIHwgICAgICArLSBMMTEg
KGNvcm5lciwgdW5vY2NsdWRlZCkKKyAgICAvLyAgICB8ICAgICAgKy0gTDEyIChjb3JuZXIsIHVu
b2NjbHVkZWQpCisgICAgLy8gICAgfCAgICAgICstIEwxMyAoY29ybmVyLCB1bm9jY2x1ZGVkKQor
ICAgIC8vICAgIHwgICAgICArLSBMMTQgKGNvcm5lciwgZW50aXJlbHkgb2NjbHVkZWQpCisgICAg
Ly8gICAgfAorICAgIC8vICAgICstLSBTMiArLSBMMjAgKG93bmluZywgZHJhd2luZykKKyAgICAv
LworCisgICAgQ0NMYXllckltcGwqIHJvb3RQdHI7CisgICAgQ0NMYXllckltcGwqIGxheWVyUzFQ
dHI7CisgICAgQ0NMYXllckltcGwqIGxheWVyUzJQdHI7CisKKyAgICBPd25QdHI8Q0NHcmFwaGlj
c0NvbnRleHQ+IGNvbnRleHQgPSBDQ0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRlM0QoYWRvcHRQdHIo
bmV3IFBhcnRpYWxTd2FwQ29udGV4dCkpOworCisgICAgSW50U2l6ZSByb290U2l6ZSgxMDAwLCAx
MDAwKTsKKworICAgIG15SG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQu
cmVsZWFzZSgpLCBVbnRocm90dGxlZFVwbG9hZGVyKTsKKyAgICBteUhvc3RJbXBsLT5zZXRWaWV3
cG9ydFNpemUoSW50U2l6ZShyb290U2l6ZS53aWR0aCgpLCByb290U2l6ZS5oZWlnaHQoKSkpOwor
CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiByb290ID0gQ0NMYXllckltcGw6OmNyZWF0ZSgxKTsK
KyAgICByb290UHRyID0gcm9vdC5nZXQoKTsKKworICAgIHJvb3QtPnNldEFuY2hvclBvaW50KEZs
b2F0UG9pbnQoMCwgMCkpOworICAgIHJvb3QtPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQoMCwgMCkp
OworICAgIHJvb3QtPnNldEJvdW5kcyhyb290U2l6ZSk7CisgICAgcm9vdC0+c2V0Q29udGVudEJv
dW5kcyhyb290U2l6ZSk7CisgICAgcm9vdC0+c2V0RHJhd3NDb250ZW50KHRydWUpOworICAgIHJv
b3QtPnNldE1hc2tzVG9Cb3VuZHModHJ1ZSk7CisgICAgbXlIb3N0SW1wbC0+c2V0Um9vdExheWVy
KHJvb3QucmVsZWFzZSgpKTsKKworICAgIGFkZERyYXdpbmdMYXllclRvKHJvb3RQdHIsIDIsIElu
dFJlY3QoMCwgMCwgODAwLCA4MDApLCAmbGF5ZXJTMVB0cik7CisgICAgbGF5ZXJTMVB0ci0+c2V0
Rm9yY2VSZW5kZXJTdXJmYWNlKHRydWUpOworICAgIGxheWVyUzFQdHItPnNldERyYXdzQ29udGVu
dChmYWxzZSk7CisKKyAgICBhZGREcmF3aW5nTGF5ZXJUbyhsYXllclMxUHRyLCAzLCBJbnRSZWN0
KDAsIDAsIDMwMCwgMzAwKSwgMCk7IC8vIEwxMQorICAgIGFkZERyYXdpbmdMYXllclRvKGxheWVy
UzFQdHIsIDQsIEludFJlY3QoMCwgNTAwLCAzMDAsIDMwMCksIDApOyAvLyBMMTIKKyAgICBhZGRE
cmF3aW5nTGF5ZXJUbyhsYXllclMxUHRyLCA1LCBJbnRSZWN0KDUwMCwgMCwgMzAwLCAzMDApLCAw
KTsgLy8gTDEzCisgICAgYWRkRHJhd2luZ0xheWVyVG8obGF5ZXJTMVB0ciwgNiwgSW50UmVjdCg1
MDAsIDUwMCwgMzAwLCAzMDApLCAwKTsgLy8gTDE0CisgICAgYWRkRHJhd2luZ0xheWVyVG8obGF5
ZXJTMVB0ciwgOSwgSW50UmVjdCg1MDAsIDUwMCwgMzAwLCAzMDApLCAwKTsgLy8gTDE0CisKKyAg
ICBhZGREcmF3aW5nTGF5ZXJUbyhyb290UHRyLCA3LCBJbnRSZWN0KDQ1MCwgNDUwLCA0NTAsIDQ1
MCksICZsYXllclMyUHRyKTsKKyAgICBsYXllclMyUHRyLT5zZXRGb3JjZVJlbmRlclN1cmZhY2Uo
dHJ1ZSk7CisKKyAgICAvLyBJbml0aWFsIGRyYXcgLSBtdXN0IHJlY2VpdmUgYWxsIHF1YWRzCisg
ICAgeworICAgICAgICBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEgZnJhbWU7CisgICAg
ICAgIEVYUEVDVF9UUlVFKG15SG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKKworICAg
ICAgICAvLyBNdXN0IHJlY2VpdmUgMyByZW5kZXIgcGFzc2VzLgorICAgICAgICAvLyBGb3IgUm9v
dCwgdGhlcmUgYXJlIDIgcXVhZHM7IGZvciBTMSwgdGhlcmUgYXJlIDMgcXVhZHM7IGZvciBTMiwg
dGhlcmUgaXMgMSBxdWFkLgorICAgICAgICBBU1NFUlRfRVEoM1UsIGZyYW1lLnJlbmRlclBhc3Nl
cy5zaXplKCkpOworCisgICAgICAgIEVYUEVDVF9FUSgxVSwgZnJhbWUucmVuZGVyUGFzc2VzWzBd
LT5xdWFkTGlzdCgpLnNpemUoKSk7CisKKyAgICAgICAgLy8gTDE0IGlzIGN1bGxlZCwgc28gb25s
eSAzIHF1YWRzLgorICAgICAgICBFWFBFQ1RfRVEoM1UsIGZyYW1lLnJlbmRlclBhc3Nlc1sxXS0+
cXVhZExpc3QoKS5zaXplKCkpOworICAgICAgICBFWFBFQ1RfRVEoMlUsIGZyYW1lLnJlbmRlclBh
c3Nlc1syXS0+cXVhZExpc3QoKS5zaXplKCkpOworCisgICAgICAgIG15SG9zdEltcGwtPmRyYXdM
YXllcnMoZnJhbWUpOworICAgICAgICBteUhvc3RJbXBsLT5kaWREcmF3QWxsTGF5ZXJzKGZyYW1l
KTsKKyAgICB9CisKKyAgICAvLyAiVW5vY2NsdWRlIiBzdXJmYWNlIFMxIGFuZCByZXBlYXQgZHJh
dy4KKyAgICAvLyBNdXN0IHJlbW92ZSBTMidzIHJlbmRlciBwYXNzIHNpbmNlIGl0J3MgY2FjaGVk
OworICAgIC8vIE11c3Qga2VlcCBTMSBxdWFkcyBiZWNhdXNlIHRleHR1cmUgY29udGFpbmVkIGV4
dGVybmFsIG9jY2x1c2lvbi4KKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm0g
PSBsYXllclMyUHRyLT50cmFuc2Zvcm0oKTsKKyAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKDEwMCwg
MTAwKTsKKyAgICBsYXllclMyUHRyLT5zZXRUcmFuc2Zvcm0odHJhbnNmb3JtKTsKKyAgICB7Cisg
ICAgICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSBmcmFtZTsKKyAgICAgICAgRVhQ
RUNUX1RSVUUobXlIb3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworCisgICAgICAgIC8v
IE11c3QgcmVjZWl2ZSAyIHJlbmRlciBwYXNzZXMuCisgICAgICAgIC8vIEZvciBSb290LCB0aGVy
ZSBhcmUgMiBxdWFkcworICAgICAgICAvLyBGb3IgUzEsIHRoZSBudW1iZXIgb2YgcXVhZHMgZGVw
ZW5kcyBvbiB3aGF0IGdvdCB1bm9jY2x1ZGVkLCBzbyBub3QgYXNzZXJ0ZWQgYmV5b25kIGJlaW5n
IHBvc2l0aXZlLgorICAgICAgICAvLyBGb3IgUzIsIHRoZXJlIGlzIG5vIHJlbmRlciBwYXNzCisg
ICAgICAgIEFTU0VSVF9FUSgyVSwgZnJhbWUucmVuZGVyUGFzc2VzLnNpemUoKSk7CisKKyAgICAg
ICAgRVhQRUNUX0dUKGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+cXVhZExpc3QoKS5zaXplKCksIDBV
KTsKKyAgICAgICAgRVhQRUNUX0VRKDJVLCBmcmFtZS5yZW5kZXJQYXNzZXNbMV0tPnF1YWRMaXN0
KCkuc2l6ZSgpKTsKKworICAgICAgICBteUhvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKKyAg
ICAgICAgbXlIb3N0SW1wbC0+ZGlkRHJhd0FsbExheWVycyhmcmFtZSk7CisgICAgfQorCisgICAg
Ly8gIlJlLW9jY2x1ZGUiIHN1cmZhY2UgUzEgYW5kIHJlcGVhdCBkcmF3LgorICAgIC8vIE11c3Qg
cmVtb3ZlIFMxJ3MgcmVuZGVyIHBhc3Mgc2luY2UgaXQgaXMgbm93IGF2YWlsYWJsZSBpbiBmdWxs
LgorICAgIC8vIFMyIGhhcyBubyBjaGFuZ2Ugc28gbXVzdCBhbHNvIGJlIHJlbW92ZWQuCisgICAg
dHJhbnNmb3JtID0gbGF5ZXJTMlB0ci0+dHJhbnNmb3JtKCk7CisgICAgdHJhbnNmb3JtLnRyYW5z
bGF0ZSgtMTUsIC0xNSk7CisgICAgbGF5ZXJTMlB0ci0+c2V0VHJhbnNmb3JtKHRyYW5zZm9ybSk7
CisgICAgeworICAgICAgICBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEgZnJhbWU7Cisg
ICAgICAgIEVYUEVDVF9UUlVFKG15SG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKKwor
ICAgICAgICAvLyBNdXN0IHJlY2VpdmUgMSByZW5kZXIgcGFzcyAtIGZvciB0aGUgcm9vdC4KKyAg
ICAgICAgQVNTRVJUX0VRKDFVLCBmcmFtZS5yZW5kZXJQYXNzZXMuc2l6ZSgpKTsKKworICAgICAg
ICBFWFBFQ1RfRVEoMlUsIGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+cXVhZExpc3QoKS5zaXplKCkp
OworCisgICAgICAgIG15SG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOworICAgICAgICBteUhv
c3RJbXBsLT5kaWREcmF3QWxsTGF5ZXJzKGZyYW1lKTsKKyAgICB9Cit9CisKK1RFU1RfRihDQ0xh
eWVyVHJlZUhvc3RJbXBsVGVzdCwgdGV4dHVyZUNhY2hpbmdXaXRoT2NjbHVzaW9uRXh0ZXJuYWxP
dmVySW50ZXJuYWwpCit7CisgICAgQ0NTZXR0aW5nczo6c2V0UGFydGlhbFN3YXBFbmFibGVkKGZh
bHNlKTsKKworICAgIENDTGF5ZXJUcmVlU2V0dGluZ3Mgc2V0dGluZ3M7CisgICAgT3duUHRyPEND
TGF5ZXJUcmVlSG9zdEltcGw+IG15SG9zdEltcGwgPSBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjcmVh
dGUoc2V0dGluZ3MsIHRoaXMpOworCisgICAgLy8gTGF5ZXJzIGFyZSBzdHJ1Y3R1cmVkIGFzIGZv
bGxvd3M6CisgICAgLy8KKyAgICAvLyAgUiArLS0gUzEgKy0gTDEwIChvd25pbmcsIGRyYXdpbmcp
CisgICAgLy8gICAgfCAgICAgICstIEwxMSAoY29ybmVyLCBvY2NsdWRlZCBieSBMMTIpCisgICAg
Ly8gICAgfCAgICAgICstIEwxMiAob3Bwb3NpdGUgY29ybmVyKQorICAgIC8vICAgIHwKKyAgICAv
LyAgICArLS0gUzIgKy0gTDIwIChvd25pbmcsIGRyYXdpbmcpCisgICAgLy8KKworICAgIENDTGF5
ZXJJbXBsKiByb290UHRyOworICAgIENDTGF5ZXJJbXBsKiBsYXllclMxUHRyOworICAgIENDTGF5
ZXJJbXBsKiBsYXllclMyUHRyOworCisgICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjb250
ZXh0ID0gQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKGFkb3B0UHRyKG5ldyBQYXJ0aWFsU3dh
cENvbnRleHQpKTsKKworICAgIEludFNpemUgcm9vdFNpemUoMTAwMCwgMTAwMCk7CisKKyAgICBt
eUhvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjb250ZXh0LnJlbGVhc2UoKSwgVW50
aHJvdHRsZWRVcGxvYWRlcik7CisgICAgbXlIb3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKEludFNp
emUocm9vdFNpemUud2lkdGgoKSwgcm9vdFNpemUuaGVpZ2h0KCkpKTsKKworICAgIE93blB0cjxD
Q0xheWVySW1wbD4gcm9vdCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMSk7CisgICAgcm9vdFB0ciA9
IHJvb3QuZ2V0KCk7CisKKyAgICByb290LT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50KDAsIDAp
KTsKKyAgICByb290LT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KDAsIDApKTsKKyAgICByb290LT5z
ZXRCb3VuZHMocm9vdFNpemUpOworICAgIHJvb3QtPnNldENvbnRlbnRCb3VuZHMocm9vdFNpemUp
OworICAgIHJvb3QtPnNldERyYXdzQ29udGVudCh0cnVlKTsKKyAgICByb290LT5zZXRNYXNrc1Rv
Qm91bmRzKHRydWUpOworICAgIG15SG9zdEltcGwtPnNldFJvb3RMYXllcihyb290LnJlbGVhc2Uo
KSk7CisKKyAgICBhZGREcmF3aW5nTGF5ZXJUbyhyb290UHRyLCAyLCBJbnRSZWN0KDAsIDAsIDQw
MCwgNDAwKSwgJmxheWVyUzFQdHIpOworICAgIGxheWVyUzFQdHItPnNldEZvcmNlUmVuZGVyU3Vy
ZmFjZSh0cnVlKTsKKworICAgIGFkZERyYXdpbmdMYXllclRvKGxheWVyUzFQdHIsIDMsIEludFJl
Y3QoMCwgMCwgMzAwLCAzMDApLCAwKTsgLy8gTDExCisgICAgYWRkRHJhd2luZ0xheWVyVG8obGF5
ZXJTMVB0ciwgNCwgSW50UmVjdCgxMDAsIDAsIDMwMCwgMzAwKSwgMCk7IC8vIEwxMgorCisgICAg
YWRkRHJhd2luZ0xheWVyVG8ocm9vdFB0ciwgNywgSW50UmVjdCgyMDAsIDAsIDMwMCwgMzAwKSwg
JmxheWVyUzJQdHIpOworICAgIGxheWVyUzJQdHItPnNldEZvcmNlUmVuZGVyU3VyZmFjZSh0cnVl
KTsKKworICAgIC8vIEluaXRpYWwgZHJhdyAtIG11c3QgcmVjZWl2ZSBhbGwgcXVhZHMKKyAgICB7
CisgICAgICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSBmcmFtZTsKKyAgICAgICAg
RVhQRUNUX1RSVUUobXlIb3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworCisgICAgICAg
IC8vIE11c3QgcmVjZWl2ZSAzIHJlbmRlciBwYXNzZXMuCisgICAgICAgIC8vIEZvciBSb290LCB0
aGVyZSBhcmUgMiBxdWFkczsgZm9yIFMxLCB0aGVyZSBhcmUgMyBxdWFkczsgZm9yIFMyLCB0aGVy
ZSBpcyAxIHF1YWQuCisgICAgICAgIEFTU0VSVF9FUSgzVSwgZnJhbWUucmVuZGVyUGFzc2VzLnNp
emUoKSk7CisKKyAgICAgICAgRVhQRUNUX0VRKDFVLCBmcmFtZS5yZW5kZXJQYXNzZXNbMF0tPnF1
YWRMaXN0KCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKDNVLCBmcmFtZS5yZW5kZXJQYXNz
ZXNbMV0tPnF1YWRMaXN0KCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKDJVLCBmcmFtZS5y
ZW5kZXJQYXNzZXNbMl0tPnF1YWRMaXN0KCkuc2l6ZSgpKTsKKworICAgICAgICBteUhvc3RJbXBs
LT5kcmF3TGF5ZXJzKGZyYW1lKTsKKyAgICAgICAgbXlIb3N0SW1wbC0+ZGlkRHJhd0FsbExheWVy
cyhmcmFtZSk7CisgICAgfQorCisgICAgLy8gIlVub2NjbHVkZSIgc3VyZmFjZSBTMSBhbmQgcmVw
ZWF0IGRyYXcuCisgICAgLy8gTXVzdCByZW1vdmUgUzIncyByZW5kZXIgcGFzcyBzaW5jZSBpdCdz
IGNhY2hlZDsKKyAgICAvLyBNdXN0IGtlZXAgUzEgcXVhZHMgYmVjYXVzZSB0ZXh0dXJlIGNvbnRh
aW5lZCBleHRlcm5hbCBvY2NsdXNpb24uCisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggdHJh
bnNmb3JtID0gbGF5ZXJTMlB0ci0+dHJhbnNmb3JtKCk7CisgICAgdHJhbnNmb3JtLnRyYW5zbGF0
ZSgzMDAsIDApOworICAgIGxheWVyUzJQdHItPnNldFRyYW5zZm9ybSh0cmFuc2Zvcm0pOworICAg
IHsKKyAgICAgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRhIGZyYW1lOworICAgICAg
ICBFWFBFQ1RfVFJVRShteUhvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CisKKyAgICAg
ICAgLy8gTXVzdCByZWNlaXZlIDIgcmVuZGVyIHBhc3Nlcy4KKyAgICAgICAgLy8gRm9yIFJvb3Qs
IHRoZXJlIGFyZSAyIHF1YWRzCisgICAgICAgIC8vIEZvciBTMSwgdGhlIG51bWJlciBvZiBxdWFk
cyBkZXBlbmRzIG9uIHdoYXQgZ290IHVub2NjbHVkZWQsIHNvIG5vdCBhc3NlcnRlZCBiZXlvbmQg
YmVpbmcgcG9zaXRpdmUuCisgICAgICAgIC8vIEZvciBTMiwgdGhlcmUgaXMgbm8gcmVuZGVyIHBh
c3MKKyAgICAgICAgQVNTRVJUX0VRKDJVLCBmcmFtZS5yZW5kZXJQYXNzZXMuc2l6ZSgpKTsKKwor
ICAgICAgICBFWFBFQ1RfR1QoZnJhbWUucmVuZGVyUGFzc2VzWzBdLT5xdWFkTGlzdCgpLnNpemUo
KSwgMFUpOworICAgICAgICBFWFBFQ1RfRVEoMlUsIGZyYW1lLnJlbmRlclBhc3Nlc1sxXS0+cXVh
ZExpc3QoKS5zaXplKCkpOworCisgICAgICAgIG15SG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUp
OworICAgICAgICBteUhvc3RJbXBsLT5kaWREcmF3QWxsTGF5ZXJzKGZyYW1lKTsKKyAgICB9Cit9
CisKK1RFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgdGV4dHVyZUNhY2hpbmdXaXRoT2Nj
bHVzaW9uRXh0ZXJuYWxOb3RBbGlnbmVkKQoreworICAgIENDU2V0dGluZ3M6OnNldFBhcnRpYWxT
d2FwRW5hYmxlZChmYWxzZSk7CisKKyAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNldHRpbmdzOwor
ICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBteUhvc3RJbXBsID0gQ0NMYXllclRyZWVI
b3N0SW1wbDo6Y3JlYXRlKHNldHRpbmdzLCB0aGlzKTsKKworICAgIC8vIExheWVycyBhcmUgc3Ry
dWN0dXJlZCBhcyBmb2xsb3dzOgorICAgIC8vCisgICAgLy8gIFIgKy0tIFMxICstIEwxMCAocm90
YXRlZCwgZHJhd2luZykKKyAgICAvLyAgICAgICAgICAgKy0gTDExIChvY2N1cGllcyBoYWxmIHN1
cmZhY2UpCisKKyAgICBDQ0xheWVySW1wbCogcm9vdFB0cjsKKyAgICBDQ0xheWVySW1wbCogbGF5
ZXJTMVB0cjsKKworICAgIE93blB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY29udGV4dCA9IENDR3Jh
cGhpY3NDb250ZXh0OjpjcmVhdGUzRChhZG9wdFB0cihuZXcgUGFydGlhbFN3YXBDb250ZXh0KSk7
CisKKyAgICBJbnRTaXplIHJvb3RTaXplKDEwMDAsIDEwMDApOworCisgICAgbXlIb3N0SW1wbC0+
aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY29udGV4dC5yZWxlYXNlKCksIFVudGhyb3R0bGVkVXBs
b2FkZXIpOworICAgIG15SG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKHJvb3RTaXpl
LndpZHRoKCksIHJvb3RTaXplLmhlaWdodCgpKSk7CisKKyAgICBPd25QdHI8Q0NMYXllckltcGw+
IHJvb3QgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDEpOworICAgIHJvb3RQdHIgPSByb290LmdldCgp
OworCisgICAgcm9vdC0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgwLCAwKSk7CisgICAgcm9v
dC0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCgwLCAwKSk7CisgICAgcm9vdC0+c2V0Qm91bmRzKHJv
b3RTaXplKTsKKyAgICByb290LT5zZXRDb250ZW50Qm91bmRzKHJvb3RTaXplKTsKKyAgICByb290
LT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7CisgICAgcm9vdC0+c2V0TWFza3NUb0JvdW5kcyh0cnVl
KTsKKyAgICBteUhvc3RJbXBsLT5zZXRSb290TGF5ZXIocm9vdC5yZWxlYXNlKCkpOworCisgICAg
YWRkRHJhd2luZ0xheWVyVG8ocm9vdFB0ciwgMiwgSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksICZs
YXllclMxUHRyKTsKKyAgICBsYXllclMxUHRyLT5zZXRGb3JjZVJlbmRlclN1cmZhY2UodHJ1ZSk7
CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtID0gbGF5ZXJTMVB0ci0+dHJh
bnNmb3JtKCk7CisgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSgyMDAsIDIwMCk7CisgICAgdHJhbnNm
b3JtLnJvdGF0ZSg0NSk7CisgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSgtMjAwLCAtMjAwKTsKKyAg
ICBsYXllclMxUHRyLT5zZXRUcmFuc2Zvcm0odHJhbnNmb3JtKTsKKworICAgIGFkZERyYXdpbmdM
YXllclRvKGxheWVyUzFQdHIsIDMsIEludFJlY3QoMjAwLCAwLCAyMDAsIDQwMCksIDApOyAvLyBM
MTEKKworICAgIC8vIEluaXRpYWwgZHJhdyAtIG11c3QgcmVjZWl2ZSBhbGwgcXVhZHMKKyAgICB7
CisgICAgICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSBmcmFtZTsKKyAgICAgICAg
RVhQRUNUX1RSVUUobXlIb3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworCisgICAgICAg
IC8vIE11c3QgcmVjZWl2ZSAyIHJlbmRlciBwYXNzZXMuCisgICAgICAgIEFTU0VSVF9FUSgyVSwg
ZnJhbWUucmVuZGVyUGFzc2VzLnNpemUoKSk7CisKKyAgICAgICAgRVhQRUNUX0VRKDJVLCBmcmFt
ZS5yZW5kZXJQYXNzZXNbMF0tPnF1YWRMaXN0KCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VR
KDFVLCBmcmFtZS5yZW5kZXJQYXNzZXNbMV0tPnF1YWRMaXN0KCkuc2l6ZSgpKTsKKworICAgICAg
ICBteUhvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKKyAgICAgICAgbXlIb3N0SW1wbC0+ZGlk
RHJhd0FsbExheWVycyhmcmFtZSk7CisgICAgfQorCisgICAgLy8gQ2hhbmdlIG9wYWNpdHkgYW5k
IGRyYXcuIFZlcmlmeSB3ZSB1c2VkIGNhY2hlZCB0ZXh0dXJlLgorICAgIGxheWVyUzFQdHItPnNl
dE9wYWNpdHkoMC4yZik7CisgICAgeworICAgICAgICBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFt
ZURhdGEgZnJhbWU7CisgICAgICAgIEVYUEVDVF9UUlVFKG15SG9zdEltcGwtPnByZXBhcmVUb0Ry
YXcoZnJhbWUpKTsKKworICAgICAgICAvLyBPbmUgcmVuZGVyIHBhc3MgbXVzdCBiZSBnb25lIGR1
ZSB0byBjYWNoZWQgdGV4dHVyZS4KKyAgICAgICAgQVNTRVJUX0VRKDFVLCBmcmFtZS5yZW5kZXJQ
YXNzZXMuc2l6ZSgpKTsKKworICAgICAgICBFWFBFQ1RfRVEoMVUsIGZyYW1lLnJlbmRlclBhc3Nl
c1swXS0+cXVhZExpc3QoKS5zaXplKCkpOworCisgICAgICAgIG15SG9zdEltcGwtPmRyYXdMYXll
cnMoZnJhbWUpOworICAgICAgICBteUhvc3RJbXBsLT5kaWREcmF3QWxsTGF5ZXJzKGZyYW1lKTsK
KyAgICB9Cit9CisKK1RFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgdGV4dHVyZUNhY2hp
bmdXaXRoT2NjbHVzaW9uUGFydGlhbFN3YXApCit7CisgICAgQ0NTZXR0aW5nczo6c2V0UGFydGlh
bFN3YXBFbmFibGVkKHRydWUpOworCisgICAgQ0NMYXllclRyZWVTZXR0aW5ncyBzZXR0aW5nczsK
KyAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gbXlIb3N0SW1wbCA9IENDTGF5ZXJUcmVl
SG9zdEltcGw6OmNyZWF0ZShzZXR0aW5ncywgdGhpcyk7CisKKyAgICAvLyBMYXllcnMgYXJlIHN0
cnVjdHVyZSBhcyBmb2xsb3dzOgorICAgIC8vCisgICAgLy8gIFIgKy0tIFMxICstIEwxMCAob3du
aW5nKQorICAgIC8vICAgIHwgICAgICArLSBMMTEKKyAgICAvLyAgICB8ICAgICAgKy0gTDEyCisg
ICAgLy8gICAgfAorICAgIC8vICAgICstLSBTMiArLSBMMjAgKG93bmluZykKKyAgICAvLyAgICAg
ICAgICAgKy0gTDIxCisgICAgLy8KKyAgICAvLyBPY2NsdXNpb246CisgICAgLy8gTDEyIG9jY2x1
ZGVzIEwxMSAoaW50ZXJuYWwpCisgICAgLy8gTDIwIG9jY2x1ZGVzIEwxMCAoZXh0ZXJuYWwpCisg
ICAgLy8gTDIxIG9jY2x1ZGVzIEwyMCAoaW50ZXJuYWwpCisKKyAgICBDQ0xheWVySW1wbCogcm9v
dFB0cjsKKyAgICBDQ0xheWVySW1wbCogbGF5ZXJTMVB0cjsKKyAgICBDQ0xheWVySW1wbCogbGF5
ZXJTMlB0cjsKKworICAgIE93blB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY29udGV4dCA9IENDR3Jh
cGhpY3NDb250ZXh0OjpjcmVhdGUzRChhZG9wdFB0cihuZXcgUGFydGlhbFN3YXBDb250ZXh0KSk7
CisKKyAgICBJbnRTaXplIHJvb3RTaXplKDEwMDAsIDEwMDApOworCisgICAgbXlIb3N0SW1wbC0+
aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY29udGV4dC5yZWxlYXNlKCksIFVudGhyb3R0bGVkVXBs
b2FkZXIpOworICAgIG15SG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKHJvb3RTaXpl
LndpZHRoKCksIHJvb3RTaXplLmhlaWdodCgpKSk7CisKKyAgICBPd25QdHI8Q0NMYXllckltcGw+
IHJvb3QgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDEpOworICAgIHJvb3RQdHIgPSByb290LmdldCgp
OworCisgICAgcm9vdC0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgwLCAwKSk7CisgICAgcm9v
dC0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCgwLCAwKSk7CisgICAgcm9vdC0+c2V0Qm91bmRzKHJv
b3RTaXplKTsKKyAgICByb290LT5zZXRDb250ZW50Qm91bmRzKHJvb3RTaXplKTsKKyAgICByb290
LT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7CisgICAgcm9vdC0+c2V0TWFza3NUb0JvdW5kcyh0cnVl
KTsKKyAgICBteUhvc3RJbXBsLT5zZXRSb290TGF5ZXIocm9vdC5yZWxlYXNlKCkpOworCisgICAg
YWRkRHJhd2luZ0xheWVyVG8ocm9vdFB0ciwgMiwgSW50UmVjdCgzMDAsIDMwMCwgMzAwLCAzMDAp
LCAmbGF5ZXJTMVB0cik7CisgICAgbGF5ZXJTMVB0ci0+c2V0Rm9yY2VSZW5kZXJTdXJmYWNlKHRy
dWUpOworCisgICAgYWRkRHJhd2luZ0xheWVyVG8obGF5ZXJTMVB0ciwgMywgSW50UmVjdCgxMCwg
MTAsIDEwLCAxMCksIDApOyAvLyBMMTEKKyAgICBhZGREcmF3aW5nTGF5ZXJUbyhsYXllclMxUHRy
LCA0LCBJbnRSZWN0KDAsIDAsIDMwLCAzMCksIDApOyAvLyBMMTIKKworICAgIGFkZERyYXdpbmdM
YXllclRvKHJvb3RQdHIsIDUsIEludFJlY3QoNTUwLCAyNTAsIDMwMCwgNDAwKSwgJmxheWVyUzJQ
dHIpOworICAgIGxheWVyUzJQdHItPnNldEZvcmNlUmVuZGVyU3VyZmFjZSh0cnVlKTsKKworICAg
IGFkZERyYXdpbmdMYXllclRvKGxheWVyUzJQdHIsIDYsIEludFJlY3QoMjAsIDIwLCA1LCA1KSwg
MCk7IC8vIEwyMQorCisgICAgLy8gSW5pdGlhbCBkcmF3IC0gbXVzdCByZWNlaXZlIGFsbCBxdWFk
cworICAgIHsKKyAgICAgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRhIGZyYW1lOwor
ICAgICAgICBFWFBFQ1RfVFJVRShteUhvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CisK
KyAgICAgICAgLy8gTXVzdCByZWNlaXZlIDMgcmVuZGVyIHBhc3Nlcy4KKyAgICAgICAgLy8gRm9y
IFJvb3QsIHRoZXJlIGFyZSAyIHF1YWRzOyBmb3IgUzEsIHRoZXJlIGFyZSAzIHF1YWRzOyBmb3Ig
UzIsIHRoZXJlIGlzIDEgcXVhZC4KKyAgICAgICAgQVNTRVJUX0VRKDNVLCBmcmFtZS5yZW5kZXJQ
YXNzZXMuc2l6ZSgpKTsKKworICAgICAgICBFWFBFQ1RfRVEoMlUsIGZyYW1lLnJlbmRlclBhc3Nl
c1swXS0+cXVhZExpc3QoKS5zaXplKCkpOworICAgICAgICBFWFBFQ1RfRVEoM1UsIGZyYW1lLnJl
bmRlclBhc3Nlc1sxXS0+cXVhZExpc3QoKS5zaXplKCkpOworICAgICAgICBFWFBFQ1RfRVEoMlUs
IGZyYW1lLnJlbmRlclBhc3Nlc1syXS0+cXVhZExpc3QoKS5zaXplKCkpOworCisgICAgICAgIG15
SG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOworICAgICAgICBteUhvc3RJbXBsLT5kaWREcmF3
QWxsTGF5ZXJzKGZyYW1lKTsKKyAgICB9CisKKyAgICAvLyAiVW5vY2NsdWRlIiBzdXJmYWNlIFMx
IGFuZCByZXBlYXQgZHJhdy4KKyAgICAvLyBNdXN0IHJlbW92ZSBTMidzIHJlbmRlciBwYXNzIHNp
bmNlIGl0J3MgY2FjaGVkOworICAgIC8vIE11c3Qga2VlcCBTMSBxdWFkcyBiZWNhdXNlIHRleHR1
cmUgY29udGFpbmVkIGV4dGVybmFsIG9jY2x1c2lvbi4KKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeCB0cmFuc2Zvcm0gPSBsYXllclMyUHRyLT50cmFuc2Zvcm0oKTsKKyAgICB0cmFuc2Zvcm0u
dHJhbnNsYXRlKDE1MCwgMTUwKTsKKyAgICBsYXllclMyUHRyLT5zZXRUcmFuc2Zvcm0odHJhbnNm
b3JtKTsKKyAgICB7CisgICAgICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSBmcmFt
ZTsKKyAgICAgICAgRVhQRUNUX1RSVUUobXlIb3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkp
OworCisgICAgICAgIC8vIE11c3QgcmVjZWl2ZSAyIHJlbmRlciBwYXNzZXMuCisgICAgICAgIC8v
IEZvciBSb290LCB0aGVyZSBhcmUgMiBxdWFkcworICAgICAgICAvLyBGb3IgUzEsIHRoZSBudW1i
ZXIgb2YgcXVhZHMgZGVwZW5kcyBvbiB3aGF0IGdvdCB1bm9jY2x1ZGVkLCBzbyBub3QgYXNzZXJ0
ZWQgYmV5b25kIGJlaW5nIHBvc2l0aXZlLgorICAgICAgICAvLyBGb3IgUzIsIHRoZXJlIGlzIG5v
IHJlbmRlciBwYXNzCisgICAgICAgIEFTU0VSVF9FUSgyVSwgZnJhbWUucmVuZGVyUGFzc2VzLnNp
emUoKSk7CisKKyAgICAgICAgRVhQRUNUX0dUKGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+cXVhZExp
c3QoKS5zaXplKCksIDBVKTsKKyAgICAgICAgRVhQRUNUX0VRKDJVLCBmcmFtZS5yZW5kZXJQYXNz
ZXNbMV0tPnF1YWRMaXN0KCkuc2l6ZSgpKTsKKworICAgICAgICBteUhvc3RJbXBsLT5kcmF3TGF5
ZXJzKGZyYW1lKTsKKyAgICAgICAgbXlIb3N0SW1wbC0+ZGlkRHJhd0FsbExheWVycyhmcmFtZSk7
CisgICAgfQorCisgICAgLy8gIlJlLW9jY2x1ZGUiIHN1cmZhY2UgUzEgYW5kIHJlcGVhdCBkcmF3
LgorICAgIC8vIE11c3QgcmVtb3ZlIFMxJ3MgcmVuZGVyIHBhc3Mgc2luY2UgaXQgaXMgbm93IGF2
YWlsYWJsZSBpbiBmdWxsLgorICAgIC8vIFMyIGhhcyBubyBjaGFuZ2Ugc28gbXVzdCBhbHNvIGJl
IHJlbW92ZWQuCisgICAgLy8gRklYTUU6IER1ZSB0byBwYXJ0aWFsIHN3YXAsIHRoZSBzY2lzc29y
IHJlY3Qgd2lsbCBjYXVzZSBPY2NsdXNpb25UcmFja2VyCisgICAgLy8gdG8gdGhpbmsgdGhlcmUg
aXMgYW4gZXh0ZXJuYWwgb2NjbHVzaW9uIGluIHRoZSBwcmV2aW91cyBzdGVwLiBUaGVyZWZvcmUs
CisgICAgLy8gUzEncyByZW5kZXIgcGFzcyB3aWxsIG5vdCBiZSByZW1vdmVkLgorICAgIHRyYW5z
Zm9ybSA9IGxheWVyUzJQdHItPnRyYW5zZm9ybSgpOworICAgIHRyYW5zZm9ybS50cmFuc2xhdGUo
LTE1LCAtMTUpOworICAgIGxheWVyUzJQdHItPnNldFRyYW5zZm9ybSh0cmFuc2Zvcm0pOworICAg
IHsKKyAgICAgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRhIGZyYW1lOworICAgICAg
ICBFWFBFQ1RfVFJVRShteUhvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CisKKyAgICAg
ICAgLy8gMiBSZW5kZXIgcGFzc2VzIC0gUm9vdCBhbmQgUzEuCisgICAgICAgIEFTU0VSVF9FUSgy
VSwgZnJhbWUucmVuZGVyUGFzc2VzLnNpemUoKSk7CisKKyAgICAgICAgLy8gUmVuZGVyIHBhc3Mg
Zm9yIFMxIGNvbnRhaW5zIG5vIHF1YWRzIGFzIHRoZSBzY2lzc29yIHJlY3QgaXMgbm93IG9jY2x1
ZGVkLgorICAgICAgICBFWFBFQ1RfRVEoMFUsIGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+cXVhZExp
c3QoKS5zaXplKCkpOworCisgICAgICAgIC8vIFJvb3QgY29udGFpbnMgUzIgb25seSwgYXMgUzEg
ZG9lc24ndCBoYXZlIGFueSBkYW1hZ2UuCisgICAgICAgIEVYUEVDVF9FUSgxVSwgZnJhbWUucmVu
ZGVyUGFzc2VzWzFdLT5xdWFkTGlzdCgpLnNpemUoKSk7CisKKyAgICAgICAgbXlIb3N0SW1wbC0+
ZHJhd0xheWVycyhmcmFtZSk7CisgICAgICAgIG15SG9zdEltcGwtPmRpZERyYXdBbGxMYXllcnMo
ZnJhbWUpOworICAgIH0KKworfQorCiBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHN1
cmZhY2VUZXh0dXJlQ2FjaGluZykKIHsKICAgICBDQ1NldHRpbmdzOjpzZXRQYXJ0aWFsU3dhcEVu
YWJsZWQodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
UXVhZEN1bGxlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRD
dWxsZXJUZXN0LmNwcAppbmRleCBjZDdhMzk2YmQwZDc2ZTFhNTJlMzcxMzMzZTRjODRkNTc0ZWYw
NTZkLi41MjZhYjRlNTkwYTAzZTY5NWE3ZmMyMjA2ZmFkYWM3MmRiZDdhMzI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAKQEAgLTk3
LDcgKzk3LDcgQEAgc3RhdGljIFBhc3NPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gbWFrZUxheWVy
KENDVGlsZWRMYXllckltcGwqIHBhcmVudCwgY29uc3QgV2UKIHN0YXRpYyB2b2lkIGFwcGVuZFF1
YWRzKENDUXVhZExpc3QmIHF1YWRMaXN0LCBWZWN0b3I8T3duUHRyPENDU2hhcmVkUXVhZFN0YXRl
PiA+JiBzaGFyZWRTdGF0ZUxpc3QsIENDVGlsZWRMYXllckltcGwqIGxheWVyLCBDQ0xheWVySXRl
cmF0b3JUeXBlJiBpdCwgQ0NPY2NsdXNpb25UcmFja2VySW1wbCYgb2NjbHVzaW9uVHJhY2tlcikK
IHsKICAgICBvY2NsdXNpb25UcmFja2VyLmVudGVyTGF5ZXIoaXQpOwotICAgIENDUXVhZEN1bGxl
ciBxdWFkQ3VsbGVyKHF1YWRMaXN0LCBsYXllciwgJm9jY2x1c2lvblRyYWNrZXIsIGZhbHNlKTsK
KyAgICBDQ1F1YWRDdWxsZXIgcXVhZEN1bGxlcihxdWFkTGlzdCwgbGF5ZXIsICZvY2NsdXNpb25U
cmFja2VyLCBmYWxzZSwgZmFsc2UpOwogICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hh
cmVkUXVhZFN0YXRlID0gbGF5ZXItPmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgwKTsKICAgICBib29s
IGhhZE1pc3NpbmdUaWxlcyA9IGZhbHNlOwogICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3Vs
bGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIGhhZE1pc3NpbmdUaWxlcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL01vY2tDQ1F1YWRDdWxsZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTW9ja0NDUXVhZEN1bGxlci5oCmluZGV4IDM4NTUwN2Uy
YzdjNDFkMmE1OTFmYmUzMzZkMDg3MjI1MjU5MjljMmMuLjE1Y2IxOWQ2YzgyNmE1NmFhMTBiZDRm
ZjJmNjhhMDNhMDVmMTBlNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvTW9ja0NDUXVhZEN1bGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
TW9ja0NDUXVhZEN1bGxlci5oCkBAIC0yNywyMSArMjcsMTkgQEAKIAogI2luY2x1ZGUgIkludFJl
Y3QuaCIKICNpbmNsdWRlICJjYy9DQ0RyYXdRdWFkLmgiCi0jaW5jbHVkZSAiY2MvQ0NRdWFkQ3Vs
bGVyLmgiCisjaW5jbHVkZSAiY2MvQ0NRdWFkU2luay5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3du
UHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgTW9ja0NDUXVhZEN1bGxlciA6
IHB1YmxpYyBXZWJDb3JlOjpDQ1F1YWRDdWxsZXIgeworY2xhc3MgTW9ja0NDUXVhZEN1bGxlciA6
IHB1YmxpYyBXZWJDb3JlOjpDQ1F1YWRTaW5rIHsKIHB1YmxpYzoKICAgICBNb2NrQ0NRdWFkQ3Vs
bGVyKCkKLSAgICAgICAgOiBDQ1F1YWRDdWxsZXIobV9xdWFkTGlzdFN0b3JhZ2UsIDAsIDAsIGZh
bHNlKQotICAgICAgICAsIG1fYWN0aXZlUXVhZExpc3QobV9xdWFkTGlzdFN0b3JhZ2UpCisgICAg
ICAgIDogbV9hY3RpdmVRdWFkTGlzdChtX3F1YWRMaXN0U3RvcmFnZSkKICAgICB7IH0KIAogICAg
IGV4cGxpY2l0IE1vY2tDQ1F1YWRDdWxsZXIoQ0NRdWFkTGlzdCYgZXh0ZXJuYWxRdWFkTGlzdCkK
LSAgICAgICAgOiBDQ1F1YWRDdWxsZXIoZXh0ZXJuYWxRdWFkTGlzdCwgMCwgMCwgZmFsc2UpCi0g
ICAgICAgICwgbV9hY3RpdmVRdWFkTGlzdChleHRlcm5hbFF1YWRMaXN0KQorICAgICAgICA6IG1f
YWN0aXZlUXVhZExpc3QoZXh0ZXJuYWxRdWFkTGlzdCkKICAgICB7IH0KIAogICAgIHZpcnR1YWwg
Ym9vbCBhcHBlbmQoV1RGOjpQYXNzT3duUHRyPFdlYkNvcmU6OkNDRHJhd1F1YWQ+IG5ld1F1YWQp
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>