<?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>91815</bug_id>
          
          <creation_ts>2012-07-19 21:27:53 -0700</creation_ts>
          <short_desc>[chromium] Remove redundant surface origin transforms</short_desc>
          <delta_ts>2012-07-26 11:00:27 -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>
          <dependson>91807</dependson>
          <blocked>91823</blocked>
    
    <blocked>92328</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adrienne Walker">enne</reporter>
          <assigned_to name="Adrienne Walker">enne</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>danakj</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>kbr</cc>
    
    <cc>senorblanco</cc>
    
    <cc>shawnsingh</cc>
    
    <cc>vollick</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>674135</commentid>
    <comment_count>0</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-19 21:27:53 -0700</bug_when>
    <thetext>[chromium] Remove redundant surface origin transforms</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674137</commentid>
    <comment_count>1</comment_count>
      <attachid>153400</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-19 21:29:41 -0700</bug_when>
    <thetext>Created attachment 153400
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674923</commentid>
    <comment_count>2</comment_count>
      <attachid>153400</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-07-20 13:45:01 -0700</bug_when>
    <thetext>Comment on attachment 153400
Patch

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

LVGTM

&gt; Source/WebCore/platform/graphics/chromium/RenderSurfaceChromium.h:66
&gt;      const WebKit::WebTransformationMatrix&amp; screenSpaceTransform() const { return m_screenSpaceTransform; }
&gt;      void setScreenSpaceTransform(const WebKit::WebTransformationMatrix&amp; screenSpaceTransform) { m_screenSpaceTransform = screenSpaceTransform; }

Can we remove this too, since its == the owning layer anyway. And we&apos;re always passing around Layers (renderTargets) instead of RenderSurface*s now?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCRenderPassDrawQuad.h:-61
&gt; -    WebKit::WebTransformationMatrix m_drawTransform;

:D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678719</commentid>
    <comment_count>3</comment_count>
      <attachid>154511</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-25 18:41:02 -0700</bug_when>
    <thetext>Created attachment 154511
Rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678724</commentid>
    <comment_count>4</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-25 18:53:54 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 153400 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=153400&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/RenderSurfaceChromium.h:66
&gt; &gt;      const WebKit::WebTransformationMatrix&amp; screenSpaceTransform() const { return m_screenSpaceTransform; }
&gt; &gt;      void setScreenSpaceTransform(const WebKit::WebTransformationMatrix&amp; screenSpaceTransform) { m_screenSpaceTransform = screenSpaceTransform; }
&gt; 
&gt; Can we remove this too, since its == the owning layer anyway. And we&apos;re always passing around Layers (renderTargets) instead of RenderSurface*s now?

Theoretically we could, but I have this idea that you might want the surface scale to not be the same as the device scale.  Maybe the owning layer has a ridiculous scale on it that gets propagated to its descendants and so the surface contents are huge but its rect as a contributing surface is small.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679403</commentid>
    <comment_count>5</comment_count>
      <attachid>153400</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-07-26 09:17:28 -0700</bug_when>
    <thetext>Comment on attachment 153400
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/RenderSurfaceChromium.h:66
&gt;&gt;&gt;      void setScreenSpaceTransform(const WebKit::WebTransformationMatrix&amp; screenSpaceTransform) { m_screenSpaceTransform = screenSpaceTransform; }
&gt;&gt; 
&gt;&gt; Can we remove this too, since its == the owning layer anyway. And we&apos;re always passing around Layers (renderTargets) instead of RenderSurface*s now?
&gt; 
&gt; Theoretically we could, but I have this idea that you might want the surface scale to not be the same as the device scale.  Maybe the owning layer has a ridiculous scale on it that gets propagated to its descendants and so the surface contents are huge but its rect as a contributing surface is small.

Hm, a CSS scale on a layer doesn&apos;t change its contentBounds though. So if the layer did have a huge scale, the contents would all remain the same.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679411</commentid>
    <comment_count>6</comment_count>
      <attachid>153400</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-07-26 09:23:53 -0700</bug_when>
    <thetext>Comment on attachment 153400
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/RenderSurfaceChromium.h:66
&gt;&gt;&gt;&gt;      void setScreenSpaceTransform(const WebKit::WebTransformationMatrix&amp; screenSpaceTransform) { m_screenSpaceTransform = screenSpaceTransform; }
&gt;&gt;&gt; 
&gt;&gt;&gt; Can we remove this too, since its == the owning layer anyway. And we&apos;re always passing around Layers (renderTargets) instead of RenderSurface*s now?
&gt;&gt; 
&gt;&gt; Theoretically we could, but I have this idea that you might want the surface scale to not be the same as the device scale.  Maybe the owning layer has a ridiculous scale on it that gets propagated to its descendants and so the surface contents are huge but its rect as a contributing surface is small.
&gt; 
&gt; Hm, a CSS scale on a layer doesn&apos;t change its contentBounds though. So if the layer did have a huge scale, the contents would all remain the same.

More specifically, in the owningLayer case: The owningLayer&apos;s transform is always ~identity. If it had a huge scale, then that scale would appear in the drawTransform of the contributing surface. The surface contents would not be affected. I&apos;m trying to imagine a bad case but having trouble..

Owing layer has a child with a scale(100), this makes the surface texture large. And the owning layer has a scale(1/100). In this case you would want the scale of (things drawing into) the surface to be 1/100? But there&apos;s at least one thing drawing into the surface at scale(1), the owning layer.  So this would then get scaled by 1/10000 in screen space. Am I missing something here? It feels like we&apos;d never want to use a different scale than device.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679435</commentid>
    <comment_count>7</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-26 09:38:16 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 153400 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=153400&amp;action=review
&gt; 
&gt; &gt;&gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/RenderSurfaceChromium.h:66
&gt; &gt;&gt;&gt;&gt;      void setScreenSpaceTransform(const WebKit::WebTransformationMatrix&amp; screenSpaceTransform) { m_screenSpaceTransform = screenSpaceTransform; }
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; Can we remove this too, since its == the owning layer anyway. And we&apos;re always passing around Layers (renderTargets) instead of RenderSurface*s now?
&gt; &gt;&gt; 
&gt; &gt;&gt; Theoretically we could, but I have this idea that you might want the surface scale to not be the same as the device scale.  Maybe the owning layer has a ridiculous scale on it that gets propagated to its descendants and so the surface contents are huge but its rect as a contributing surface is small.
&gt; &gt; 
&gt; &gt; Hm, a CSS scale on a layer doesn&apos;t change its contentBounds though. So if the layer did have a huge scale, the contents would all remain the same.
&gt; 
&gt; More specifically, in the owningLayer case: The owningLayer&apos;s transform is always ~identity. If it had a huge scale, then that scale would appear in the drawTransform of the contributing surface. The surface contents would not be affected. I&apos;m trying to imagine a bad case but having trouble..
&gt; 
&gt; Owing layer has a child with a scale(100), this makes the surface texture large. And the owning layer has a scale(1/100). In this case you would want the scale of (things drawing into) the surface to be 1/100? But there&apos;s at least one thing drawing into the surface at scale(1), the owning layer.  So this would then get scaled by 1/10000 in screen space. Am I missing something here? It feels like we&apos;d never want to use a different scale than device.

The owning layer&apos;s transform is not identity.  It includes surface scale in there.  The surface&apos;s draw transform is what the layer&apos;s draw transform would have been had it not created a surface.  So, assume a surface&apos;s draw transform scales the surface by 1/100 when drawing as a contributing surface.  If there&apos;s some child of the owner with a drawable content rect of 1000x1000 in that surface, that drawable content rect in the surface&apos;s target is only 10x10.  However, to draw those 10x10 pixels, right now we would use a 1000x1000 surface.

My argument is that if you have a surface that draws as a contributing surface at 1/100 scale, shouldn&apos;t you likewise use a surface scale that gets closer to a 1:1 ratio between surface pixels and target pixels? It&apos;s less wasteful of memory and has better linear interpolation properties, since we don&apos;t have mips.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679449</commentid>
    <comment_count>8</comment_count>
      <attachid>153400</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-07-26 09:55:49 -0700</bug_when>
    <thetext>Comment on attachment 153400
Patch

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

&gt;&gt;&gt;&gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/RenderSurfaceChromium.h:66
&gt;&gt;&gt;&gt;&gt;&gt;      void setScreenSpaceTransform(const WebKit::WebTransformationMatrix&amp; screenSpaceTransform) { m_screenSpaceTransform = screenSpaceTransform; }
&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt; Can we remove this too, since its == the owning layer anyway. And we&apos;re always passing around Layers (renderTargets) instead of RenderSurface*s now?
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Theoretically we could, but I have this idea that you might want the surface scale to not be the same as the device scale.  Maybe the owning layer has a ridiculous scale on it that gets propagated to its descendants and so the surface contents are huge but its rect as a contributing surface is small.
&gt;&gt;&gt; 
&gt;&gt;&gt; Hm, a CSS scale on a layer doesn&apos;t change its contentBounds though. So if the layer did have a huge scale, the contents would all remain the same.
&gt;&gt; 
&gt;&gt; More specifically, in the owningLayer case: The owningLayer&apos;s transform is always ~identity. If it had a huge scale, then that scale would appear in the drawTransform of the contributing surface. The surface contents would not be affected. I&apos;m trying to imagine a bad case but having trouble..
&gt;&gt; 
&gt;&gt; Owing layer has a child with a scale(100), this makes the surface texture large. And the owning layer has a scale(1/100). In this case you would want the scale of (things drawing into) the surface to be 1/100? But there&apos;s at least one thing drawing into the surface at scale(1), the owning layer.  So this would then get scaled by 1/10000 in screen space. Am I missing something here? It feels like we&apos;d never want to use a different scale than device.
&gt; 
&gt; The owning layer&apos;s transform is not identity.  It includes surface scale in there.  The surface&apos;s draw transform is what the layer&apos;s draw transform would have been had it not created a surface.  So, assume a surface&apos;s draw transform scales the surface by 1/100 when drawing as a contributing surface.  If there&apos;s some child of the owner with a drawable content rect of 1000x1000 in that surface, that drawable content rect in the surface&apos;s target is only 10x10.  However, to draw those 10x10 pixels, right now we would use a 1000x1000 surface.
&gt; 
&gt; My argument is that if you have a surface that draws as a contributing surface at 1/100 scale, shouldn&apos;t you likewise use a surface scale that gets closer to a 1:1 ratio between surface pixels and target pixels? It&apos;s less wasteful of memory and has better linear interpolation properties, since we don&apos;t have mips.

Ah.. right thanks for bearing with me. The scale is in the owning layer drawTransform.. right. This makes lots of sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679452</commentid>
    <comment_count>9</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-07-26 09:56:32 -0700</bug_when>
    <thetext>@kbr or @senorblanco for review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679478</commentid>
    <comment_count>10</comment_count>
      <attachid>154511</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-07-26 10:26:32 -0700</bug_when>
    <thetext>Comment on attachment 154511
Rebased

I don&apos;t really know this code, but the tests pass and I like it when code goes away.  Rubberstamp r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679519</commentid>
    <comment_count>11</comment_count>
      <attachid>154511</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-26 11:00:23 -0700</bug_when>
    <thetext>Comment on attachment 154511
Rebased

Clearing flags on attachment: 154511

Committed r123771: &lt;http://trac.webkit.org/changeset/123771&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679520</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-26 11:00:27 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153400</attachid>
            <date>2012-07-19 21:29:41 -0700</date>
            <delta_ts>2012-07-26 09:55:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91815-20120719212937.patch</filename>
            <type>text/plain</type>
            <size>46258</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjYwMWE3NTEwYzljZjZl
YWNhZDlhN2MxNDM2NjY1ZmU0NmU3ZGRlZS4uY2Y0M2JhZjkwNzFjNzRiOTBhNDAyNzdmOWFmY2Vi
MWQ1YTFmNjMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQwIEBACiAyMDEyLTA3LTE5ICBBZHJp
ZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CiAKKyAgICAgICAgW2Nocm9taXVtXSBSZW1v
dmUgcmVkdW5kYW50IHN1cmZhY2Ugb3JpZ2luIHRyYW5zZm9ybXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxODE1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVnIDkxNDE3IGNoYW5nZWQgZHJhdyB0cmFu
c2Zvcm1zIHRvIGJlY29tZSBlcXVpdmFsZW50IHRvIG9yaWdpbgorICAgICAgICB0cmFuc2Zvcm1z
IGZvciBzdXJmYWNlcy4gVGhpcyBjaGFuZ2UgcmVtb3ZlcyB0aGVtIGFzIHRoZXkgYXJlIG5vCisg
ICAgICAgIGxvbmdlciBuZWVkZWQgZm9yIGFueXRoaW5nLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cy4gSnVzdCBhIHJlZmFjdG9yaW5nLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmg6CisgICAgICAgIChSZW5kZXJTdXJmYWNlQ2hy
b21pdW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGFtYWdl
VHJhY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0RhbWFnZVRyYWNrZXI6OmV4dGVuZERh
bWFnZUZvclJlbmRlclN1cmZhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21w
dXRlU2Nyb2xsQ29tcGVuc2F0aW9uTWF0cml4Rm9yQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29y
ZTo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNJbnRlcm5hbCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ojo6bGVhdmVUb1JlbmRlclRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjo6OnVub2Nj
bHVkZWRDb250cmlidXRpbmdTdXJmYWNlQ29udGVudFJlY3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNDUmVuZGVyUGFzc0RyYXdRdWFkOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQ6OkNDUmVuZGVyUGFzc0RyYXdRdWFkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5oOgor
ICAgICAgICAoQ0NSZW5kZXJQYXNzRHJhd1F1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
Q1JlbmRlclN1cmZhY2U6OmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1JlbmRlclN1cmZhY2U6OmNyZWF0ZVJlcGxpY2FTaGFyZWRRdWFkU3RhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjphcHBlbmRRdWFkcyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmg6CisgICAgICAgIChD
Q1JlbmRlclN1cmZhY2UpOgorCisyMDEyLTA3LTE5ICBBZHJpZW5uZSBXYWxrZXIgIDxlbm5lQGdv
b2dsZS5jb20+CisKICAgICAgICAgW2Nocm9taXVtXSBNYWtlIGFsbCBjb21wb3NpdG9yIHNjcmVl
biBzcGFjZSB0cmFuc2Zvcm1zIG9wZXJhdGUgb24gY29udGVudCByZWN0cwogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4MDcKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwppbmRleCA1YTNkNTE0ZWFiNGNhMTY5M2Y3ODU4MWZiZjYxZTFiNzI3NTc0ZmUy
Li4zNmIwZDZmNWIwYzczMzYyYTAxOGM2ZTdhZjQ4MDQwNWYyMDhjMWEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE5IEBACiAyMDEyLTA3LTE5ICBBZHJpZW5uZSBXYWxr
ZXIgIDxlbm5lQGdvb2dsZS5jb20+CiAKKyAgICAgICAgW2Nocm9taXVtXSBSZW1vdmUgcmVkdW5k
YW50IHN1cmZhY2Ugb3JpZ2luIHRyYW5zZm9ybXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTkxODE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQ2xlYW4gdXAgdXNlIG9mIG9yaWdpbiB0cmFuc2Zvcm1zIGlu
IHRlc3RzLiBXaGVyZSBwb3NzaWJsZSwgdGVzdAorICAgICAgICBhZ2FpbnN0IHRoZSBlcXVpdmFs
ZW50IGRyYXcgdHJhbnNmb3JtLgorCisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0Q29t
bW9uVGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3Bw
OgorICAgICAgICAqIHRlc3RzL0NDUmVuZGVyU3VyZmFjZVRlc3QuY3BwOgorCisyMDEyLTA3LTE5
ICBBZHJpZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CisKICAgICAgICAgW2Nocm9taXVt
XSBNYWtlIGFsbCBjb21wb3NpdG9yIHNjcmVlbiBzcGFjZSB0cmFuc2Zvcm1zIG9wZXJhdGUgb24g
Y29udGVudCByZWN0cwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTE4MDcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uaAppbmRleCAxNjgx
YzViYTNhNDc3NmM3ODc1NGI2MTJkZWExMWFkMTgxMzA5MjZkLi42ODZkMjBhZGUwZTE2MWJiNzBk
MjhkNjJlZTdlYmI0M2FiODZjNjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0u
aApAQCAtNjIsMTggKzYyLDEyIEBAIHB1YmxpYzoKICAgICBjb25zdCBXZWJLaXQ6OldlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9kcmF3VHJh
bnNmb3JtOyB9CiAgICAgdm9pZCBzZXREcmF3VHJhbnNmb3JtKGNvbnN0IFdlYktpdDo6V2ViVHJh
bnNmb3JtYXRpb25NYXRyaXgmIGRyYXdUcmFuc2Zvcm0pIHsgbV9kcmF3VHJhbnNmb3JtID0gZHJh
d1RyYW5zZm9ybTsgfQogCi0gICAgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgb3JpZ2luVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW5UcmFuc2Zvcm07IH0K
LSAgICB2b2lkIHNldE9yaWdpblRyYW5zZm9ybShjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0
aW9uTWF0cml4JiBvcmlnaW5UcmFuc2Zvcm0pIHsgbV9vcmlnaW5UcmFuc2Zvcm0gPSBvcmlnaW5U
cmFuc2Zvcm07IH0KLQogICAgIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHNjcmVlblNwYWNlVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9zY3JlZW5TcGFjZVRyYW5z
Zm9ybTsgfQogICAgIHZvaWQgc2V0U2NyZWVuU3BhY2VUcmFuc2Zvcm0oY29uc3QgV2ViS2l0OjpX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgc2NyZWVuU3BhY2VUcmFuc2Zvcm0pIHsgbV9zY3JlZW5T
cGFjZVRyYW5zZm9ybSA9IHNjcmVlblNwYWNlVHJhbnNmb3JtOyB9CiAKICAgICBjb25zdCBXZWJL
aXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiByZXBsaWNhRHJhd1RyYW5zZm9ybSgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVwbGljYURyYXdUcmFuc2Zvcm07IH0KICAgICB2b2lkIHNldFJlcGxpY2FE
cmF3VHJhbnNmb3JtKGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHJlcGxp
Y2FEcmF3VHJhbnNmb3JtKSB7IG1fcmVwbGljYURyYXdUcmFuc2Zvcm0gPSByZXBsaWNhRHJhd1Ry
YW5zZm9ybTsgfQogCi0gICAgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
cmVwbGljYU9yaWdpblRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVwbGljYU9yaWdpblRy
YW5zZm9ybTsgfQotICAgIHZvaWQgc2V0UmVwbGljYU9yaWdpblRyYW5zZm9ybShjb25zdCBXZWJL
aXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiByZXBsaWNhT3JpZ2luVHJhbnNmb3JtKSB7IG1f
cmVwbGljYU9yaWdpblRyYW5zZm9ybSA9IHJlcGxpY2FPcmlnaW5UcmFuc2Zvcm07IH0KLQogICAg
IGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHJlcGxpY2FTY3JlZW5TcGFj
ZVRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVwbGljYVNjcmVlblNwYWNlVHJhbnNmb3Jt
OyB9CiAgICAgdm9pZCBzZXRSZXBsaWNhU2NyZWVuU3BhY2VUcmFuc2Zvcm0oY29uc3QgV2ViS2l0
OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcmVwbGljYVNjcmVlblNwYWNlVHJhbnNmb3JtKSB7
IG1fcmVwbGljYVNjcmVlblNwYWNlVHJhbnNmb3JtID0gcmVwbGljYVNjcmVlblNwYWNlVHJhbnNm
b3JtOyB9CiAKQEAgLTEwNCwxMCArOTgsOCBAQCBwcml2YXRlOgogICAgIGZsb2F0IG1fZHJhd09w
YWNpdHk7CiAgICAgYm9vbCBtX2RyYXdPcGFjaXR5SXNBbmltYXRpbmc7CiAgICAgV2ViS2l0OjpX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX2RyYXdUcmFuc2Zvcm07Ci0gICAgV2ViS2l0OjpXZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBtX29yaWdpblRyYW5zZm9ybTsKICAgICBXZWJLaXQ6OldlYlRy
YW5zZm9ybWF0aW9uTWF0cml4IG1fc2NyZWVuU3BhY2VUcmFuc2Zvcm07CiAgICAgV2ViS2l0OjpX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX3JlcGxpY2FEcmF3VHJhbnNmb3JtOwotICAgIFdlYktp
dDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbV9yZXBsaWNhT3JpZ2luVHJhbnNmb3JtOwogICAg
IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbV9yZXBsaWNhU2NyZWVuU3BhY2VUcmFu
c2Zvcm07CiAgICAgYm9vbCBtX3RhcmdldFN1cmZhY2VUcmFuc2Zvcm1zQXJlQW5pbWF0aW5nOwog
ICAgIGJvb2wgbV9zY3JlZW5TcGFjZVRyYW5zZm9ybXNBcmVBbmltYXRpbmc7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RhbWFnZVRy
YWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NEYW1hZ2VUcmFja2VyLmNwcAppbmRleCA5N2M5OWRhMzczMTNiZTc2M2E0NWM5NzkzZjM0MGY1
ZmEyYjliMTViLi41ZDU4NTVjMDdkOTQ2ODdiMmFiOGI1MzM2YjU2ZWFjNmZiZjc3YTQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0Rh
bWFnZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDRGFtYWdlVHJhY2tlci5jcHAKQEAgLTMzMiwxMyArMzMyLDEzIEBAIHZvaWQg
Q0NEYW1hZ2VUcmFja2VyOjpleHRlbmREYW1hZ2VGb3JSZW5kZXJTdXJmYWNlKENDTGF5ZXJJbXBs
KiBsYXllciwgRmxvYXRSZWN0CiAKICAgICAvLyBJZiB0aGVyZSB3YXMgZGFtYWdlLCB0cmFuc2Zv
cm0gaXQgdG8gdGFyZ2V0IHNwYWNlLCBhbmQgcG9zc2libHkgY29udHJpYnV0ZSBpdHMgcmVmbGVj
dGlvbiBpZiBuZWVkZWQuCiAgICAgaWYgKCFkYW1hZ2VSZWN0SW5Mb2NhbFNwYWNlLmlzRW1wdHko
KSkgewotICAgICAgICBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgb3JpZ2luVHJhbnNm
b3JtID0gcmVuZGVyU3VyZmFjZS0+b3JpZ2luVHJhbnNmb3JtKCk7Ci0gICAgICAgIEZsb2F0UmVj
dCBkYW1hZ2VSZWN0SW5UYXJnZXRTcGFjZSA9IENDTWF0aFV0aWw6Om1hcENsaXBwZWRSZWN0KG9y
aWdpblRyYW5zZm9ybSwgZGFtYWdlUmVjdEluTG9jYWxTcGFjZSk7CisgICAgICAgIGNvbnN0IFdl
YlRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtID0gcmVuZGVyU3VyZmFjZS0+ZHJh
d1RyYW5zZm9ybSgpOworICAgICAgICBGbG9hdFJlY3QgZGFtYWdlUmVjdEluVGFyZ2V0U3BhY2Ug
PSBDQ01hdGhVdGlsOjptYXBDbGlwcGVkUmVjdChkcmF3VHJhbnNmb3JtLCBkYW1hZ2VSZWN0SW5M
b2NhbFNwYWNlKTsKICAgICAgICAgdGFyZ2V0RGFtYWdlUmVjdC51bml0ZUlmTm9uWmVybyhkYW1h
Z2VSZWN0SW5UYXJnZXRTcGFjZSk7CiAKICAgICAgICAgaWYgKGxheWVyLT5yZXBsaWNhTGF5ZXIo
KSkgewotICAgICAgICAgICAgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHJlcGxpY2FP
cmlnaW5UcmFuc2Zvcm0gPSByZW5kZXJTdXJmYWNlLT5yZXBsaWNhT3JpZ2luVHJhbnNmb3JtKCk7
Ci0gICAgICAgICAgICB0YXJnZXREYW1hZ2VSZWN0LnVuaXRlSWZOb25aZXJvKENDTWF0aFV0aWw6
Om1hcENsaXBwZWRSZWN0KHJlcGxpY2FPcmlnaW5UcmFuc2Zvcm0sIGRhbWFnZVJlY3RJbkxvY2Fs
U3BhY2UpKTsKKyAgICAgICAgICAgIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiByZXBs
aWNhRHJhd1RyYW5zZm9ybSA9IHJlbmRlclN1cmZhY2UtPnJlcGxpY2FEcmF3VHJhbnNmb3JtKCk7
CisgICAgICAgICAgICB0YXJnZXREYW1hZ2VSZWN0LnVuaXRlSWZOb25aZXJvKENDTWF0aFV0aWw6
Om1hcENsaXBwZWRSZWN0KHJlcGxpY2FEcmF3VHJhbnNmb3JtLCBkYW1hZ2VSZWN0SW5Mb2NhbFNw
YWNlKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTM0OSw5ICszNDksOCBAQCB2b2lkIENDRGFt
YWdlVHJhY2tlcjo6ZXh0ZW5kRGFtYWdlRm9yUmVuZGVyU3VyZmFjZShDQ0xheWVySW1wbCogbGF5
ZXIsIEZsb2F0UmVjdAogICAgICAgICBib29sIHJlcGxpY2FJc05ldyA9IGZhbHNlOwogICAgICAg
ICByZW1vdmVSZWN0RnJvbUN1cnJlbnRGcmFtZShyZXBsaWNhTWFza0xheWVyLT5pZCgpLCByZXBs
aWNhSXNOZXcpOwogCi0gICAgICAgIC8vIENvbXB1dGUgdGhlIHJlcGxpY2EncyAib3JpZ2luVHJh
bnNmb3JtIiB0aGF0IG1hcHMgZnJvbSB0aGUgcmVwbGljYSdzIG9yaWdpbiBzcGFjZSB0byB0aGUg
dGFyZ2V0IHN1cmZhY2Ugb3JpZ2luIHNwYWNlLgotICAgICAgICBjb25zdCBXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgcmVwbGljYU9yaWdpblRyYW5zZm9ybSA9IHJlbmRlclN1cmZhY2UtPnJlcGxp
Y2FPcmlnaW5UcmFuc2Zvcm0oKTsKLSAgICAgICAgRmxvYXRSZWN0IHJlcGxpY2FNYXNrTGF5ZXJS
ZWN0ID0gQ0NNYXRoVXRpbDo6bWFwQ2xpcHBlZFJlY3QocmVwbGljYU9yaWdpblRyYW5zZm9ybSwg
RmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgRmxvYXRTaXplKHJlcGxpY2FNYXNrTGF5ZXIt
PmJvdW5kcygpLndpZHRoKCksIHJlcGxpY2FNYXNrTGF5ZXItPmJvdW5kcygpLmhlaWdodCgpKSkp
OworICAgICAgICBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcmVwbGljYURyYXdUcmFu
c2Zvcm0gPSByZW5kZXJTdXJmYWNlLT5yZXBsaWNhRHJhd1RyYW5zZm9ybSgpOworICAgICAgICBG
bG9hdFJlY3QgcmVwbGljYU1hc2tMYXllclJlY3QgPSBDQ01hdGhVdGlsOjptYXBDbGlwcGVkUmVj
dChyZXBsaWNhRHJhd1RyYW5zZm9ybSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgRmxv
YXRTaXplKHJlcGxpY2FNYXNrTGF5ZXItPmJvdW5kcygpLndpZHRoKCksIHJlcGxpY2FNYXNrTGF5
ZXItPmJvdW5kcygpLmhlaWdodCgpKSkpOwogICAgICAgICBzYXZlUmVjdEZvck5leHRGcmFtZShy
ZXBsaWNhTWFza0xheWVyLT5pZCgpLCByZXBsaWNhTWFza0xheWVyUmVjdCk7CiAKICAgICAgICAg
Ly8gSW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24sIGEgY2hhbmdlIGluIHRoZSByZXBsaWNh
IG1hc2sgZGFtYWdlcyB0aGUgZW50aXJlIHJlcGxpY2EgcmVnaW9uLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
Q29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5jcHAKaW5kZXggZjQ5ODBjNjFmZDE0OGNmMTE1MTQ1YTUz
NWY0MjRlNTg4YmNjMjA4Ni4uMjhmNDhhMGUyMmE2NTI1MWYwMjAxYTRiNDViNWExNDc0ZDNiM2Rm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uY3BwCkBAIC0zNzUs
NyArMzc1LDcgQEAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggY29tcHV0ZVNjcm9sbENvbXBlbnNh
dGlvbk1hdHJpeEZvckNoaWxkcmVuKENDTGF5ZXJJbXBsKgogICAgIC8vICBTdGVwIDI6IGFwcGx5
IHRoZSBzY3JvbGwgY29tcGVuc2F0aW9uCiAgICAgLy8gIFN0ZXAgMzogdHJhbnNmb3JtIGJhY2sg
dG8gdGhlIG5ldyBzdXJmYWNlLgogICAgIGlmIChsYXllci0+cmVuZGVyU3VyZmFjZSgpICYmICFu
ZXh0U2Nyb2xsQ29tcGVuc2F0aW9uTWF0cml4LmlzSWRlbnRpdHkoKSkKLSAgICAgICAgbmV4dFNj
cm9sbENvbXBlbnNhdGlvbk1hdHJpeCA9IGxheWVyLT5yZW5kZXJTdXJmYWNlKCktPm9yaWdpblRy
YW5zZm9ybSgpLmludmVyc2UoKSAqIG5leHRTY3JvbGxDb21wZW5zYXRpb25NYXRyaXggKiBsYXll
ci0+cmVuZGVyU3VyZmFjZSgpLT5vcmlnaW5UcmFuc2Zvcm0oKTsKKyAgICAgICAgbmV4dFNjcm9s
bENvbXBlbnNhdGlvbk1hdHJpeCA9IGxheWVyLT5yZW5kZXJTdXJmYWNlKCktPmRyYXdUcmFuc2Zv
cm0oKS5pbnZlcnNlKCkgKiBuZXh0U2Nyb2xsQ29tcGVuc2F0aW9uTWF0cml4ICogbGF5ZXItPnJl
bmRlclN1cmZhY2UoKS0+ZHJhd1RyYW5zZm9ybSgpOwogCiAgICAgcmV0dXJuIG5leHRTY3JvbGxD
b21wZW5zYXRpb25NYXRyaXg7CiB9CkBAIC00NjIsMTQgKzQ2MiwxNCBAQCBzdGF0aWMgYm9vbCBj
YWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0ludGVybmFsKExheWVyVHlwZSogbGF5ZXIsIExheWVyVHlw
ZSogcm9vdExheQogICAgIC8vCiAgICAgLy8gV2Ugd2lsbCBkZW5vdGUgYSBzY2FsZSBieSBjb250
ZW50cyBzY2FsZSBTW2NvbnRlbnRzU2NhbGVdCiAgICAgLy8KLSAgICAvLyBUaGUgcmVuZGVyIHN1
cmZhY2Ugb3JpZ2luL2RyYXcgdHJhbnNmb3JtIHRvIGl0cyB0YXJnZXQgc3VyZmFjZSBvcmlnaW4g
aXM6Ci0gICAgLy8gICAgICAgIE1bc3VyZmFjZU9yaWdpbl0gPSBNW293bmluZ0xheWVyLT5EcmF3
XQorICAgIC8vIFRoZSByZW5kZXIgc3VyZmFjZSBkcmF3IHRyYW5zZm9ybSB0byBpdHMgdGFyZ2V0
IHN1cmZhY2Ugb3JpZ2luIGlzOgorICAgIC8vICAgICAgICBNW3N1cmZhY2VEcmF3XSA9IE1bb3du
aW5nTGF5ZXItPkRyYXddCiAgICAgLy8KICAgICAvLyBUaGUgcmVuZGVyIHN1cmZhY2Ugb3JpZ2lu
IHRyYW5zZm9ybSB0byBpdHMgdGhlIHJvb3QgKHNjcmVlbiBzcGFjZSkgb3JpZ2luIGlzOgogICAg
IC8vICAgICAgICBNW3N1cmZhY2Uycm9vdF0gPSAgTVtvd25pbmdMYXllci0+c2NyZWVuc3BhY2Vd
ICogU1tjb250ZW50c1NjYWxlXS5pbnZlcnNlKCkKICAgICAvLwotICAgIC8vIFRoZSByZXBsaWNh
IG9yaWdpbi9kcmF3IHRyYW5zZm9ybSB0byBpdHMgdGFyZ2V0IHN1cmZhY2Ugb3JpZ2luIGlzOgot
ICAgIC8vICAgICAgICBNW3JlcGxpY2FPcmlnaW5dID0gU1tjb250ZW50c1NjYWxlXSAqIE1bc3Vy
ZmFjZU9yaWdpbl0gKiBUcltyZXBsaWNhLT5wb3NpdGlvbigpICsgcmVwbGljYS0+YW5jaG9yKCld
ICogVHJbcmVwbGljYV0gKiBUcltvcmlnaW4yYW5jaG9yXS5pbnZlcnNlKCkgKiBTW2NvbnRlbnRz
U2NhbGVdLmludmVyc2UoKQorICAgIC8vIFRoZSByZXBsaWNhIGRyYXcgdHJhbnNmb3JtIHRvIGl0
cyB0YXJnZXQgc3VyZmFjZSBvcmlnaW4gaXM6CisgICAgLy8gICAgICAgIE1bcmVwbGljYURyYXdd
ID0gU1tjb250ZW50c1NjYWxlXSAqIE1bc3VyZmFjZU9yaWdpbl0gKiBUcltyZXBsaWNhLT5wb3Np
dGlvbigpICsgcmVwbGljYS0+YW5jaG9yKCldICogVHJbcmVwbGljYV0gKiBUcltvcmlnaW4yYW5j
aG9yXS5pbnZlcnNlKCkgKiBTW2NvbnRlbnRzU2NhbGVdLmludmVyc2UoKQogICAgIC8vCiAgICAg
Ly8gVGhlIHJlcGxpY2Egb3JpZ2luIHRyYW5zZm9ybSB0byB0aGUgcm9vdCAoc2NyZWVuIHNwYWNl
KSBvcmlnaW4gaXM6CiAgICAgLy8gICAgICAgIE1bcmVwbGljYTJyb290XSA9IE1bc3VyZmFjZTJy
b290XSAqIFRyW3JlcGxpY2EtPnBvc2l0aW9uKCldICogVHJbcmVwbGljYV0gKiBUcltvcmlnaW4y
YW5jaG9yXS5pbnZlcnNlKCkKQEAgLTU1Niw3ICs1NTYsNiBAQCBzdGF0aWMgYm9vbCBjYWxjdWxh
dGVEcmF3VHJhbnNmb3Jtc0ludGVybmFsKExheWVyVHlwZSogbGF5ZXIsIExheWVyVHlwZSogcm9v
dExheQogICAgICAgICByZW5kZXJTdXJmYWNlLT5jbGVhckxheWVyTGlzdCgpOwogCiAgICAgICAg
IC8vIFRoZSBvcmlnaW4gb2YgdGhlIG5ldyBzdXJmYWNlIGlzIHRoZSB1cHBlciBsZWZ0IGNvcm5l
ciBvZiB0aGUgbGF5ZXIuCi0gICAgICAgIHJlbmRlclN1cmZhY2UtPnNldE9yaWdpblRyYW5zZm9y
bShkcmF3VHJhbnNmb3JtKTsKICAgICAgICAgcmVuZGVyU3VyZmFjZS0+c2V0RHJhd1RyYW5zZm9y
bShkcmF3VHJhbnNmb3JtKTsKICAgICAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbGF5ZXJE
cmF3VHJhbnNmb3JtOwogICAgICAgICBsYXllckRyYXdUcmFuc2Zvcm0uc2NhbGUoY29udGVudHNT
Y2FsZSk7CkBAIC01NzksNyArNTc4LDcgQEAgc3RhdGljIGJvb2wgY2FsY3VsYXRlRHJhd1RyYW5z
Zm9ybXNJbnRlcm5hbChMYXllclR5cGUqIGxheWVyLCBMYXllclR5cGUqIHJvb3RMYXkKICAgICAg
ICAgbGF5ZXItPnNldFNjcmVlblNwYWNlVHJhbnNmb3JtSXNBbmltYXRpbmcoYW5pbWF0aW5nVHJh
bnNmb3JtVG9TY3JlZW4pOwogCiAgICAgICAgIC8vIFVwZGF0ZSB0aGUgYWdncmVnYXRlIGhpZXJh
cmNoeSBtYXRyaXggdG8gaW5jbHVkZSB0aGUgdHJhbnNmb3JtIG9mIHRoZSBuZXdseSBjcmVhdGVk
IFJlbmRlclN1cmZhY2UuCi0gICAgICAgIG5leHRIaWVyYXJjaHlNYXRyaXgubXVsdGlwbHkocmVu
ZGVyU3VyZmFjZS0+b3JpZ2luVHJhbnNmb3JtKCkpOworICAgICAgICBuZXh0SGllcmFyY2h5TWF0
cml4Lm11bHRpcGx5KHJlbmRlclN1cmZhY2UtPmRyYXdUcmFuc2Zvcm0oKSk7CiAKICAgICAgICAg
Ly8gVGhlIHJlbmRlciBzdXJmYWNlIGNsaXBSZWN0IGNvbnRyaWJ1dGVzIHRvIHRoZSBzY2lzc29y
IHJlY3QgdGhhdCBuZWVkcyB0bwogICAgICAgICAvLyBiZSBhcHBsaWVkIGJlZm9yZSBkcmF3aW5n
IHRoZSByZW5kZXIgc3VyZmFjZSBvbnRvIGl0cyBjb250YWluaW5nCkBAIC03MTUsNyArNzE0LDcg
QEAgc3RhdGljIGJvb2wgY2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNJbnRlcm5hbChMYXllclR5cGUq
IGxheWVyLCBMYXllclR5cGUqIHJvb3RMYXkKICAgICAgICAgLy8gdG8gY2xpcC4KICAgICAgICAg
aWYgKCFsYXllci0+cmVwbGljYUxheWVyKCkgJiYgdHJhbnNmb3JtVG9QYXJlbnRJc0tub3duKGxh
eWVyKSkgewogICAgICAgICAgICAgaWYgKCFyZW5kZXJTdXJmYWNlLT5jbGlwUmVjdCgpLmlzRW1w
dHkoKSAmJiAhY2xpcHBlZENvbnRlbnRSZWN0LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAg
IEludFJlY3Qgc3VyZmFjZUNsaXBSZWN0ID0gQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxh
dGVWaXNpYmxlUmVjdChyZW5kZXJTdXJmYWNlLT5jbGlwUmVjdCgpLCBjbGlwcGVkQ29udGVudFJl
Y3QsIHJlbmRlclN1cmZhY2UtPm9yaWdpblRyYW5zZm9ybSgpKTsKKyAgICAgICAgICAgICAgICBJ
bnRSZWN0IHN1cmZhY2VDbGlwUmVjdCA9IENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRl
VmlzaWJsZVJlY3QocmVuZGVyU3VyZmFjZS0+Y2xpcFJlY3QoKSwgY2xpcHBlZENvbnRlbnRSZWN0
LCByZW5kZXJTdXJmYWNlLT5kcmF3VHJhbnNmb3JtKCkpOwogICAgICAgICAgICAgICAgIGNsaXBw
ZWRDb250ZW50UmVjdC5pbnRlcnNlY3Qoc3VyZmFjZUNsaXBSZWN0KTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQpAQCAtNzQ2LDggKzc0NSw3IEBAIHN0YXRpYyBib29sIGNhbGN1bGF0ZURyYXdU
cmFuc2Zvcm1zSW50ZXJuYWwoTGF5ZXJUeXBlKiBsYXllciwgTGF5ZXJUeXBlKiByb290TGF5CiAg
ICAgICAgICAgICBzdXJmYWNlT3JpZ2luVG9SZXBsaWNhT3JpZ2luVHJhbnNmb3JtLnNjYWxlKDEg
LyBjb250ZW50c1NjYWxlKTsKIAogICAgICAgICAgICAgLy8gQ29tcHV0ZSB0aGUgcmVwbGljYSdz
ICJvcmlnaW5UcmFuc2Zvcm0iIHRoYXQgbWFwcyBmcm9tIHRoZSByZXBsaWNhJ3Mgb3JpZ2luIHNw
YWNlIHRvIHRoZSB0YXJnZXQgc3VyZmFjZSBvcmlnaW4gc3BhY2UuCi0gICAgICAgICAgICBXZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeCByZXBsaWNhT3JpZ2luVHJhbnNmb3JtID0gbGF5ZXItPnJlbmRl
clN1cmZhY2UoKS0+b3JpZ2luVHJhbnNmb3JtKCkgKiBzdXJmYWNlT3JpZ2luVG9SZXBsaWNhT3Jp
Z2luVHJhbnNmb3JtOwotICAgICAgICAgICAgcmVuZGVyU3VyZmFjZS0+c2V0UmVwbGljYU9yaWdp
blRyYW5zZm9ybShyZXBsaWNhT3JpZ2luVHJhbnNmb3JtKTsKKyAgICAgICAgICAgIFdlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4IHJlcGxpY2FPcmlnaW5UcmFuc2Zvcm0gPSBsYXllci0+cmVuZGVyU3Vy
ZmFjZSgpLT5kcmF3VHJhbnNmb3JtKCkgKiBzdXJmYWNlT3JpZ2luVG9SZXBsaWNhT3JpZ2luVHJh
bnNmb3JtOwogICAgICAgICAgICAgcmVuZGVyU3VyZmFjZS0+c2V0UmVwbGljYURyYXdUcmFuc2Zv
cm0ocmVwbGljYU9yaWdpblRyYW5zZm9ybSk7CiAKICAgICAgICAgICAgIC8vIENvbXB1dGUgdGhl
IHJlcGxpY2EncyAic2NyZWVuU3BhY2VUcmFuc2Zvcm0iIHRoYXQgbWFwcyBmcm9tIHRoZSByZXBs
aWNhJ3Mgb3JpZ2luIHNwYWNlIHRvIHRoZSBzY3JlZW4ncyBvcmlnaW4gc3BhY2UuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1
c2lvblRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNwcAppbmRleCBhN2UzZDFiNjBjZmFlMTJmMDdlMzMw
MzM5ZTUyMDUxMDZmYTA5NGRmLi45YzEyNDhmZjI4YjYwYmQ2MGI4ZDFiMmU0Zjg1YzEyNTg3ZTRk
ZmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5jcHAKQEAgLTIzNSw5ICsy
MzUsOSBAQCB2b2lkIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJm
YWNlVHlwZT46OmxlYXZlVG9SZW5kZXJUYXJnZXQoYwogCiAgICAgY29uc3QgTGF5ZXJUeXBlKiBv
bGRUYXJnZXQgPSBtX3N0YWNrW2xhc3RJbmRleF0udGFyZ2V0OwogICAgIGNvbnN0IFJlbmRlclN1
cmZhY2VUeXBlKiBvbGRTdXJmYWNlID0gb2xkVGFyZ2V0LT5yZW5kZXJTdXJmYWNlKCk7Ci0gICAg
UmVnaW9uIG9sZFRhcmdldE9jY2x1c2lvbkluTmV3VGFyZ2V0ID0gdHJhbnNmb3JtU3VyZmFjZU9w
YXF1ZVJlZ2lvbjxSZW5kZXJTdXJmYWNlVHlwZT4ob2xkU3VyZmFjZSwgbV9zdGFja1tsYXN0SW5k
ZXhdLm9jY2x1c2lvbkluVGFyZ2V0LCBvbGRTdXJmYWNlLT5vcmlnaW5UcmFuc2Zvcm0oKSk7Cisg
ICAgUmVnaW9uIG9sZFRhcmdldE9jY2x1c2lvbkluTmV3VGFyZ2V0ID0gdHJhbnNmb3JtU3VyZmFj
ZU9wYXF1ZVJlZ2lvbjxSZW5kZXJTdXJmYWNlVHlwZT4ob2xkU3VyZmFjZSwgbV9zdGFja1tsYXN0
SW5kZXhdLm9jY2x1c2lvbkluVGFyZ2V0LCBvbGRTdXJmYWNlLT5kcmF3VHJhbnNmb3JtKCkpOwog
ICAgIGlmIChvbGRUYXJnZXQtPmhhc1JlcGxpY2EoKSAmJiAhb2xkVGFyZ2V0LT5yZXBsaWNhSGFz
TWFzaygpKQotICAgICAgICBvbGRUYXJnZXRPY2NsdXNpb25Jbk5ld1RhcmdldC51bml0ZSh0cmFu
c2Zvcm1TdXJmYWNlT3BhcXVlUmVnaW9uPFJlbmRlclN1cmZhY2VUeXBlPihvbGRTdXJmYWNlLCBt
X3N0YWNrW2xhc3RJbmRleF0ub2NjbHVzaW9uSW5UYXJnZXQsIG9sZFN1cmZhY2UtPnJlcGxpY2FP
cmlnaW5UcmFuc2Zvcm0oKSkpOworICAgICAgICBvbGRUYXJnZXRPY2NsdXNpb25Jbk5ld1Rhcmdl
dC51bml0ZSh0cmFuc2Zvcm1TdXJmYWNlT3BhcXVlUmVnaW9uPFJlbmRlclN1cmZhY2VUeXBlPihv
bGRTdXJmYWNlLCBtX3N0YWNrW2xhc3RJbmRleF0ub2NjbHVzaW9uSW5UYXJnZXQsIG9sZFN1cmZh
Y2UtPnJlcGxpY2FEcmF3VHJhbnNmb3JtKCkpKTsKIAogICAgIEludFJlY3QgdW5vY2NsdWRlZFN1
cmZhY2VSZWN0OwogICAgIEludFJlY3QgdW5vY2NsdWRlZFJlcGxpY2FSZWN0OwpAQCAtMjU5LDkg
KzI1OSw5IEBAIHZvaWQgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1
cmZhY2VUeXBlPjo6bGVhdmVUb1JlbmRlclRhcmdldChjCiAgICAgfQogCiAgICAgaWYgKG9sZFRh
cmdldC0+YmFja2dyb3VuZEZpbHRlcnMoKS5oYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMoKSkgewot
ICAgICAgICByZWR1Y2VPY2NsdXNpb25CZWxvd1N1cmZhY2Uob2xkVGFyZ2V0LCB1bm9jY2x1ZGVk
U3VyZmFjZVJlY3QsIG9sZFN1cmZhY2UtPm9yaWdpblRyYW5zZm9ybSgpLCBuZXdUYXJnZXQsIG1f
c3RhY2subGFzdCgpLm9jY2x1c2lvbkluVGFyZ2V0LCBtX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25J
blNjcmVlbik7CisgICAgICAgIHJlZHVjZU9jY2x1c2lvbkJlbG93U3VyZmFjZShvbGRUYXJnZXQs
IHVub2NjbHVkZWRTdXJmYWNlUmVjdCwgb2xkU3VyZmFjZS0+ZHJhd1RyYW5zZm9ybSgpLCBuZXdU
YXJnZXQsIG1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluVGFyZ2V0LCBtX3N0YWNrLmxhc3QoKS5v
Y2NsdXNpb25JblNjcmVlbik7CiAgICAgICAgIGlmIChvbGRUYXJnZXQtPmhhc1JlcGxpY2EoKSkK
LSAgICAgICAgICAgIHJlZHVjZU9jY2x1c2lvbkJlbG93U3VyZmFjZShvbGRUYXJnZXQsIHVub2Nj
bHVkZWRSZXBsaWNhUmVjdCwgb2xkU3VyZmFjZS0+cmVwbGljYU9yaWdpblRyYW5zZm9ybSgpLCBu
ZXdUYXJnZXQsIG1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluVGFyZ2V0LCBtX3N0YWNrLmxhc3Qo
KS5vY2NsdXNpb25JblNjcmVlbik7CisgICAgICAgICAgICByZWR1Y2VPY2NsdXNpb25CZWxvd1N1
cmZhY2Uob2xkVGFyZ2V0LCB1bm9jY2x1ZGVkUmVwbGljYVJlY3QsIG9sZFN1cmZhY2UtPnJlcGxp
Y2FEcmF3VHJhbnNmb3JtKCksIG5ld1RhcmdldCwgbV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5U
YXJnZXQsIG1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluU2NyZWVuKTsKICAgICB9CiB9CiAKQEAg
LTQzMiw3ICs0MzIsNyBAQCBJbnRSZWN0IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBl
LCBSZW5kZXJTdXJmYWNlVHlwZT46OnVub2NjbHVkZWRDb250cmlidQogICAgIGJvb2wgaGFzT2Nj
bHVzaW9uID0gbV9zdGFjay5zaXplKCkgPiAxOwogCiAgICAgY29uc3QgV2ViVHJhbnNmb3JtYXRp
b25NYXRyaXgmIHRyYW5zZm9ybVRvU2NyZWVuID0gZm9yUmVwbGljYSA/IHN1cmZhY2UtPnJlcGxp
Y2FTY3JlZW5TcGFjZVRyYW5zZm9ybSgpIDogc3VyZmFjZS0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0o
KTsKLSAgICBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtVG9UYXJnZXQg
PSBmb3JSZXBsaWNhID8gc3VyZmFjZS0+cmVwbGljYU9yaWdpblRyYW5zZm9ybSgpIDogc3VyZmFj
ZS0+b3JpZ2luVHJhbnNmb3JtKCk7CisgICAgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHRyYW5zZm9ybVRvVGFyZ2V0ID0gZm9yUmVwbGljYSA/IHN1cmZhY2UtPnJlcGxpY2FEcmF3VHJh
bnNmb3JtKCkgOiBzdXJmYWNlLT5kcmF3VHJhbnNmb3JtKCk7CiAKICAgICBJbnRSZWN0IHVub2Nj
bHVkZWRJblNjcmVlbiA9IGNvbnRlbnRSZWN0OwogICAgIGlmIChzdXJmYWNlVHJhbnNmb3Jtc1Rv
U2NyZWVuS25vd24oc3VyZmFjZSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdR
dWFkLmNwcAppbmRleCAyZDc0YTIyNzgwM2ZlNGFmYWU5MWZjM2NiMTUyZjcxZjM5NzYzYThiLi5j
ZTFhOThiNjI3N2NkOGY1MTgxZDEzZWVlODBjNWM1N2IwMTllMmQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3
UXVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuY3BwCkBAIC0zMSwxNiArMzEsMTUgQEAgdXNpbmcgV2Vi
S2l0OjpXZWJDb21wb3NpdG9yUXVhZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzT3du
UHRyPENDUmVuZGVyUGFzc0RyYXdRdWFkPiBDQ1JlbmRlclBhc3NEcmF3UXVhZDo6Y3JlYXRlKGNv
bnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRl
LCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgaW50IHJlbmRlclBhc3NJZCwgYm9vbCBpc1JlcGxp
Y2EsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdUcmFuc2Zvcm0s
IGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycywgY29uc3QgV2ViS2l0
OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycywgQ0NSZXNvdXJjZVByb3Zp
ZGVyOjpSZXNvdXJjZUlkIG1hc2tSZXNvdXJjZUlkLCBjb25zdCBJbnRSZWN0JiBjb250ZW50c0No
YW5nZWRTaW5jZUxhc3RGcmFtZSkKK1Bhc3NPd25QdHI8Q0NSZW5kZXJQYXNzRHJhd1F1YWQ+IEND
UmVuZGVyUGFzc0RyYXdRdWFkOjpjcmVhdGUoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hh
cmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBp
bnQgcmVuZGVyUGFzc0lkLCBib29sIGlzUmVwbGljYSwgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJP
cGVyYXRpb25zJiBmaWx0ZXJzLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGJh
Y2tncm91bmRGaWx0ZXJzLCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbWFza1Jlc291
cmNlSWQsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lKQogewot
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NSZW5kZXJQYXNzRHJhd1F1YWQoc2hhcmVkUXVhZFN0
YXRlLCBxdWFkUmVjdCwgcmVuZGVyUGFzc0lkLCBpc1JlcGxpY2EsIGRyYXdUcmFuc2Zvcm0sIGZp
bHRlcnMsIGJhY2tncm91bmRGaWx0ZXJzLCBtYXNrUmVzb3VyY2VJZCwgY29udGVudHNDaGFuZ2Vk
U2luY2VMYXN0RnJhbWUpKTsKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDUmVuZGVyUGFzc0Ry
YXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIHJlbmRlclBhc3NJZCwgaXNSZXBsaWNh
LCBmaWx0ZXJzLCBiYWNrZ3JvdW5kRmlsdGVycywgbWFza1Jlc291cmNlSWQsIGNvbnRlbnRzQ2hh
bmdlZFNpbmNlTGFzdEZyYW1lKSk7CiB9CiAKLUNDUmVuZGVyUGFzc0RyYXdRdWFkOjpDQ1JlbmRl
clBhc3NEcmF3UXVhZChjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUq
IHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIGludCByZW5kZXJQYXNz
SWQsIGJvb2wgaXNSZXBsaWNhLCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4
JiBkcmF3VHJhbnNmb3JtLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGZpbHRl
cnMsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMs
IENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtYXNrUmVzb3VyY2VJZCwgY29uc3QgSW50
UmVjdCYgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUpCitDQ1JlbmRlclBhc3NEcmF3UXVh
ZDo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVk
UXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBpbnQg
cmVuZGVyUGFzc0lkLCBib29sIGlzUmVwbGljYSwgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVy
YXRpb25zJiBmaWx0ZXJzLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGJhY2tn
cm91bmRGaWx0ZXJzLCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbWFza1Jlc291cmNl
SWQsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lKQogICAgIDog
V2ViQ29tcG9zaXRvclF1YWQoc2hhcmVkUXVhZFN0YXRlLCBXZWJDb21wb3NpdG9yUXVhZDo6UmVu
ZGVyUGFzcywgcXVhZFJlY3QpCiAgICAgLCBtX3JlbmRlclBhc3NJZChyZW5kZXJQYXNzSWQpCiAg
ICAgLCBtX2lzUmVwbGljYShpc1JlcGxpY2EpCi0gICAgLCBtX2RyYXdUcmFuc2Zvcm0oZHJhd1Ry
YW5zZm9ybSkKICAgICAsIG1fZmlsdGVycyhmaWx0ZXJzKQogICAgICwgbV9iYWNrZ3JvdW5kRmls
dGVycyhiYWNrZ3JvdW5kRmlsdGVycykKICAgICAsIG1fbWFza1Jlc291cmNlSWQobWFza1Jlc291
cmNlSWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuaAppbmRleCA2ZjM5OWJl
NjdmODY1Mjk3ODc1NmQ2NWJmMWI3NDg2YTJmYjJlODc5Li5jOTk0MzU1ZDBlYjk5YTViZGI1Zjky
OTliMmQ4YWFjMmMxNDM5MTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFk
LmgKQEAgLTM5LDI2ICszOSwyMiBAQCBjbGFzcyBDQ1JlbmRlclBhc3M7CiBjbGFzcyBDQ1JlbmRl
clBhc3NEcmF3UXVhZCA6IHB1YmxpYyBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkIHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShDQ1JlbmRlclBhc3NEcmF3UXVhZCk7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NPd25QdHI8Q0NSZW5kZXJQYXNzRHJhd1F1YWQ+IGNyZWF0ZShjb25zdCBXZWJL
aXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgaW50IHJl
bmRlclBhc3NJZCwgYm9vbCBpc1JlcGxpY2EsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRp
b25NYXRyaXgmLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMsIGNv
bnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMsIENDUmVz
b3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtYXNrUmVzb3VyY2VJZCwgY29uc3QgSW50UmVjdCYg
Y29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUpOworICAgIHN0YXRpYyBQYXNzT3duUHRyPEND
UmVuZGVyUGFzc0RyYXdRdWFkPiBjcmVhdGUoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hh
cmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIGludCByZW5kZXJQYXNzSWQsIGJvb2wgaXNS
ZXBsaWNhLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMsIGNvbnN0
IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMsIENDUmVzb3Vy
Y2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtYXNrUmVzb3VyY2VJZCwgY29uc3QgSW50UmVjdCYgY29u
dGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUpOwogCiAgICAgaW50IHJlbmRlclBhc3NJZCgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVuZGVyUGFzc0lkOyB9CiAgICAgYm9vbCBpc1JlcGxpY2EoKSBjb25z
dCB7IHJldHVybiBtX2lzUmVwbGljYTsgfQogICAgIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3Vy
Y2VJZCBtYXNrUmVzb3VyY2VJZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFza1Jlc291cmNlSWQ7IH0K
ICAgICBjb25zdCBJbnRSZWN0JiBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWU7IH0KIAotICAgIC8vIEZJ
WE1FOiBUaGlzIHNob3VsZCBiZSByZW1vdmVkIGFuZCB3ZSBzaG91bGQgZHJhdyB0aGUgUmVuZGVy
UGFzcyB3aXRoIHRoZSBxdWFkVHJhbnNmb3JtLgotICAgIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNm
b3JtYXRpb25NYXRyaXgmIGRyYXdUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX2RyYXdUcmFu
c2Zvcm07IH0KLQogICAgIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVy
cygpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVyczsgfQogICAgIGNvbnN0IFdlYktpdDo6V2ViRmls
dGVyT3BlcmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMoKSBjb25zdCB7IHJldHVybiBtX2JhY2tn
cm91bmRGaWx0ZXJzOyB9CiAKICAgICBzdGF0aWMgY29uc3QgQ0NSZW5kZXJQYXNzRHJhd1F1YWQq
IG1hdGVyaWFsQ2FzdChjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkKik7CiBwcml2YXRl
OgotICAgIENDUmVuZGVyUGFzc0RyYXdRdWFkKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNo
YXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBpbnQgcmVuZGVyUGFzc0lkLCBib29sIGlz
UmVwbGljYSwgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IFdl
YktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycywgY29uc3QgV2ViS2l0OjpXZWJGaWx0
ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycywgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNv
dXJjZUlkIG1hc2tSZXNvdXJjZUlkLCBjb25zdCBJbnRSZWN0JiBjb250ZW50c0NoYW5nZWRTaW5j
ZUxhc3RGcmFtZSk7CisgICAgQ0NSZW5kZXJQYXNzRHJhd1F1YWQoY29uc3QgV2ViS2l0OjpXZWJD
b21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIGludCByZW5kZXJQYXNz
SWQsIGJvb2wgaXNSZXBsaWNhLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGZp
bHRlcnMsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgYmFja2dyb3VuZEZpbHRl
cnMsIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtYXNrUmVzb3VyY2VJZCwgY29uc3Qg
SW50UmVjdCYgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUpOwogCiAgICAgaW50IG1fcmVu
ZGVyUGFzc0lkOwogICAgIGJvb2wgbV9pc1JlcGxpY2E7Ci0gICAgV2ViS2l0OjpXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBtX2RyYXdUcmFuc2Zvcm07CiAgICAgV2ViS2l0OjpXZWJGaWx0ZXJPcGVy
YXRpb25zIG1fZmlsdGVyczsKICAgICBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMgbV9iYWNr
Z3JvdW5kRmlsdGVyczsKICAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbV9tYXNr
UmVzb3VyY2VJZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwCmluZGV4IDkxODQzODM5
YjE3NDEwMjJkNGI3NjQ1OGQwNDAwZTY5OWVmOGU2ODEuLmRhY2MxMmY1ZDkxODQ5NGRhOTY4MGVl
ODc1YTExNzE0M2FjYjUwMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcApAQCAt
MTY0LDEzICsxNjQsMTMgQEAgYm9vbCBDQ1JlbmRlclN1cmZhY2U6OnN1cmZhY2VQcm9wZXJ0eUNo
YW5nZWRPbmx5RnJvbURlc2NlbmRhbnQoKSBjb25zdAogUGFzc093blB0cjxDQ1NoYXJlZFF1YWRT
dGF0ZT4gQ0NSZW5kZXJTdXJmYWNlOjpjcmVhdGVTaGFyZWRRdWFkU3RhdGUoaW50IGlkKSBjb25z
dAogewogICAgIGJvb2wgaXNPcGFxdWUgPSBmYWxzZTsKLSAgICByZXR1cm4gQ0NTaGFyZWRRdWFk
U3RhdGU6OmNyZWF0ZShpZCwgbV9vcmlnaW5UcmFuc2Zvcm0sIG1fY29udGVudFJlY3QsIG1fc2Np
c3NvclJlY3QsIG1fZHJhd09wYWNpdHksIGlzT3BhcXVlKTsKKyAgICByZXR1cm4gQ0NTaGFyZWRR
dWFkU3RhdGU6OmNyZWF0ZShpZCwgbV9kcmF3VHJhbnNmb3JtLCBtX2NvbnRlbnRSZWN0LCBtX3Nj
aXNzb3JSZWN0LCBtX2RyYXdPcGFjaXR5LCBpc09wYXF1ZSk7CiB9CiAKIFBhc3NPd25QdHI8Q0NT
aGFyZWRRdWFkU3RhdGU+IENDUmVuZGVyU3VyZmFjZTo6Y3JlYXRlUmVwbGljYVNoYXJlZFF1YWRT
dGF0ZShpbnQgaWQpIGNvbnN0CiB7CiAgICAgYm9vbCBpc09wYXF1ZSA9IGZhbHNlOwotICAgIHJl
dHVybiBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKGlkLCBtX3JlcGxpY2FPcmlnaW5UcmFuc2Zv
cm0sIG1fY29udGVudFJlY3QsIG1fc2Npc3NvclJlY3QsIG1fZHJhd09wYWNpdHksIGlzT3BhcXVl
KTsKKyAgICByZXR1cm4gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShpZCwgbV9yZXBsaWNhRHJh
d1RyYW5zZm9ybSwgbV9jb250ZW50UmVjdCwgbV9zY2lzc29yUmVjdCwgbV9kcmF3T3BhY2l0eSwg
aXNPcGFxdWUpOwogfQogCiBGbG9hdFJlY3QgQ0NSZW5kZXJTdXJmYWNlOjpjb21wdXRlUm9vdFNj
aXNzb3JSZWN0SW5DdXJyZW50U3VyZmFjZShjb25zdCBGbG9hdFJlY3QmIHJvb3RTY2lzc29yUmVj
dCkgY29uc3QKQEAgLTIwOCwxMyArMjA4LDEyIEBAIHZvaWQgQ0NSZW5kZXJTdXJmYWNlOjphcHBl
bmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhCiAg
ICAgfQogCiAgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1hc2tSZXNvdXJjZUlk
ID0gbWFza0xheWVyID8gbWFza0xheWVyLT5jb250ZW50c1Jlc291cmNlSWQoKSA6IDA7Ci0gICAg
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggZHJhd1RyYW5zZm9ybSA9IGZvclJlcGxpY2EgPyBtX3Jl
cGxpY2FEcmF3VHJhbnNmb3JtIDogbV9kcmF3VHJhbnNmb3JtOwogICAgIEludFJlY3QgY29udGVu
dHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUgPSBjb250ZW50c0NoYW5nZWQoKSA/IG1fY29udGVudFJl
Y3QgOiBJbnRSZWN0KCk7CiAKICAgICBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMm
IGZpbHRlcnMgPSBtX293bmluZ0xheWVyLT5maWx0ZXJzKCk7CiAgICAgY29uc3QgV2ViS2l0OjpX
ZWJGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycyA9IG1fb3duaW5nTGF5ZXItPmJh
Y2tncm91bmRGaWx0ZXJzKCk7CiAKLSAgICBxdWFkTGlzdC5hcHBlbmRTdXJmYWNlKENDUmVuZGVy
UGFzc0RyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBjb250ZW50UmVjdCgpLCByZW5k
ZXJQYXNzSWQsIGZvclJlcGxpY2EsIGRyYXdUcmFuc2Zvcm0sIGZpbHRlcnMsIGJhY2tncm91bmRG
aWx0ZXJzLCBtYXNrUmVzb3VyY2VJZCwgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUpKTsK
KyAgICBxdWFkTGlzdC5hcHBlbmRTdXJmYWNlKENDUmVuZGVyUGFzc0RyYXdRdWFkOjpjcmVhdGUo
c2hhcmVkUXVhZFN0YXRlLCBjb250ZW50UmVjdCgpLCByZW5kZXJQYXNzSWQsIGZvclJlcGxpY2Es
IGZpbHRlcnMsIGJhY2tncm91bmRGaWx0ZXJzLCBtYXNrUmVzb3VyY2VJZCwgY29udGVudHNDaGFu
Z2VkU2luY2VMYXN0RnJhbWUpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaApp
bmRleCAxYWMzNDAwYWY1YzRjMGJjMjIxNTI2MGQ1Mzc1ODA3NTlhYzc0ODE2Li45N2I2ZjYzMzI4
NWJkYzM2MDY5ZGJhMmYxNzNhZjA4NDFmMTBkNmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZh
Y2UuaApAQCAtNzEsMTggKzcxLDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldERyYXdUcmFuc2Zv
cm0oY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9ybSkg
eyBtX2RyYXdUcmFuc2Zvcm0gPSBkcmF3VHJhbnNmb3JtOyB9CiAgICAgY29uc3QgV2ViS2l0OjpX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZHJhd1RyYW5zZm9ybTsgfQogCi0gICAgdm9pZCBzZXRPcmlnaW5UcmFuc2Zvcm0oY29uc3QgV2Vi
S2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgb3JpZ2luVHJhbnNmb3JtKSB7IG1fb3JpZ2lu
VHJhbnNmb3JtID0gb3JpZ2luVHJhbnNmb3JtOyB9Ci0gICAgY29uc3QgV2ViS2l0OjpXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgb3JpZ2luVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9vcmln
aW5UcmFuc2Zvcm07IH0KLQogICAgIHZvaWQgc2V0U2NyZWVuU3BhY2VUcmFuc2Zvcm0oY29uc3Qg
V2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgc2NyZWVuU3BhY2VUcmFuc2Zvcm0pIHsg
bV9zY3JlZW5TcGFjZVRyYW5zZm9ybSA9IHNjcmVlblNwYWNlVHJhbnNmb3JtOyB9CiAgICAgY29u
c3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgc2NyZWVuU3BhY2VUcmFuc2Zvcm0o
KSBjb25zdCB7IHJldHVybiBtX3NjcmVlblNwYWNlVHJhbnNmb3JtOyB9CiAKICAgICB2b2lkIHNl
dFJlcGxpY2FEcmF3VHJhbnNmb3JtKGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRy
aXgmIHJlcGxpY2FEcmF3VHJhbnNmb3JtKSB7IG1fcmVwbGljYURyYXdUcmFuc2Zvcm0gPSByZXBs
aWNhRHJhd1RyYW5zZm9ybTsgfQogICAgIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25N
YXRyaXgmIHJlcGxpY2FEcmF3VHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9yZXBsaWNhRHJh
d1RyYW5zZm9ybTsgfQogCi0gICAgdm9pZCBzZXRSZXBsaWNhT3JpZ2luVHJhbnNmb3JtKGNvbnN0
IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHJlcGxpY2FPcmlnaW5UcmFuc2Zvcm0p
IHsgbV9yZXBsaWNhT3JpZ2luVHJhbnNmb3JtID0gcmVwbGljYU9yaWdpblRyYW5zZm9ybTsgfQot
ICAgIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHJlcGxpY2FPcmlnaW5U
cmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3JlcGxpY2FPcmlnaW5UcmFuc2Zvcm07IH0KLQog
ICAgIHZvaWQgc2V0UmVwbGljYVNjcmVlblNwYWNlVHJhbnNmb3JtKGNvbnN0IFdlYktpdDo6V2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXgmIHJlcGxpY2FTY3JlZW5TcGFjZVRyYW5zZm9ybSkgeyBtX3Jl
cGxpY2FTY3JlZW5TcGFjZVRyYW5zZm9ybSA9IHJlcGxpY2FTY3JlZW5TcGFjZVRyYW5zZm9ybTsg
fQogICAgIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHJlcGxpY2FTY3Jl
ZW5TcGFjZVRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVwbGljYVNjcmVlblNwYWNlVHJh
bnNmb3JtOyB9CiAKQEAgLTEzMSwxMCArMTI1LDggQEAgcHJpdmF0ZToKICAgICBmbG9hdCBtX2Ry
YXdPcGFjaXR5OwogICAgIGJvb2wgbV9kcmF3T3BhY2l0eUlzQW5pbWF0aW5nOwogICAgIFdlYktp
dDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbV9kcmF3VHJhbnNmb3JtOwotICAgIFdlYktpdDo6
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbV9vcmlnaW5UcmFuc2Zvcm07CiAgICAgV2ViS2l0OjpX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX3NjcmVlblNwYWNlVHJhbnNmb3JtOwogICAgIFdlYktp
dDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbV9yZXBsaWNhRHJhd1RyYW5zZm9ybTsKLSAgICBX
ZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4IG1fcmVwbGljYU9yaWdpblRyYW5zZm9ybTsK
ICAgICBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4IG1fcmVwbGljYVNjcmVlblNwYWNl
VHJhbnNmb3JtOwogICAgIGJvb2wgbV90YXJnZXRTdXJmYWNlVHJhbnNmb3Jtc0FyZUFuaW1hdGlu
ZzsKICAgICBib29sIG1fc2NyZWVuU3BhY2VUcmFuc2Zvcm1zQXJlQW5pbWF0aW5nOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RDb21tb25U
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0Q29t
bW9uVGVzdC5jcHAKaW5kZXggODQzNjk0OGViZGFkYWY4N2FiNWQ2NjkwYzZiYjE3NDE3MWNjMmY5
NC4uMmQzMjViOTMyMmY1Mjk0OTQ4M2E0ZjZiOWZiMWEzOTUzYWY1ZmQ4NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdENvbW1v
blRlc3QuY3BwCkBAIC0zNTMsOCArMzUzLDYgQEAgVEVTVChDQ0xheWVyVHJlZUhvc3RDb21tb25U
ZXN0LCB2ZXJpZnlUcmFuc2Zvcm1zRm9yU2luZ2xlUmVuZGVyU3VyZmFjZSkKICAgICBFWFBFQ1Rf
VFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKGlkZW50aXR5TWF0cml4LCBjaGlsZC0+ZHJhd1RyYW5z
Zm9ybSgpKTsKICAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKHBhcmVudENvbXBv
c2l0ZVRyYW5zZm9ybSwgY2hpbGQtPnNjcmVlblNwYWNlVHJhbnNmb3JtKCkpOwogCi0gICAgLy8g
V2l0aG91dCBjbGlwcGluZywgdGhlIG9yaWdpbiB0cmFuc2Zvcm0gYW5kIGRyYXcgdHJhbnNmb3Jt
IChpbiB0aGlzIHBhcnRpY3VsYXIgY2FzZSkgc2hvdWxkIGJlIHRoZSBzYW1lLgotICAgIEVYUEVD
VF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEocGFyZW50Q29tcG9zaXRlVHJhbnNmb3JtLCBjaGls
ZC0+cmVuZGVyVGFyZ2V0KCktPnJlbmRlclN1cmZhY2UoKS0+b3JpZ2luVHJhbnNmb3JtKCkpOwog
ICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEocGFyZW50Q29tcG9zaXRlVHJhbnNm
b3JtLCBjaGlsZC0+cmVuZGVyVGFyZ2V0KCktPnJlbmRlclN1cmZhY2UoKS0+ZHJhd1RyYW5zZm9y
bSgpKTsKIAogICAgIC8vIFRoZSBzY3JlZW4gc3BhY2UgaXMgdGhlIHNhbWUgYXMgdGhlIHRhcmdl
dCBzaW5jZSB0aGUgY2hpbGQgc3VyZmFjZSBkcmF3cyBpbnRvIHRoZSByb290LgpAQCAtOTY3LDcg
Kzk2NSw3IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5VHJhbnNmb3Jt
c0ZvclJlcGxpY2EpCiAgICAgQVNTRVJUX1RSVUUoY2hpbGQtPnJlbmRlclN1cmZhY2UoKSk7CiAg
ICAgQVNTRVJUX0VRKGNoaWxkLCBjaGlsZC0+cmVuZGVyVGFyZ2V0KCkpOwogCi0gICAgRVhQRUNU
X1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShyZXBsaWNhQ29tcG9zaXRlVHJhbnNmb3JtLCBjaGls
ZC0+cmVuZGVyVGFyZ2V0KCktPnJlbmRlclN1cmZhY2UoKS0+cmVwbGljYU9yaWdpblRyYW5zZm9y
bSgpKTsKKyAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKHJlcGxpY2FDb21wb3Np
dGVUcmFuc2Zvcm0sIGNoaWxkLT5yZW5kZXJUYXJnZXQoKS0+cmVuZGVyU3VyZmFjZSgpLT5yZXBs
aWNhRHJhd1RyYW5zZm9ybSgpKTsKICAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VR
KHJlcGxpY2FDb21wb3NpdGVUcmFuc2Zvcm0sIGNoaWxkLT5yZW5kZXJUYXJnZXQoKS0+cmVuZGVy
U3VyZmFjZSgpLT5yZXBsaWNhU2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSk7CiB9CiAKQEAgLTExMDQs
MTQgKzExMDIsMTQgQEAgVEVTVChDQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LCB2ZXJpZnlUcmFu
c2Zvcm1zRm9yUmVuZGVyU3VyZmFjZUhpZXJhcmNoeSkKIAogICAgIC8vIFZlcmlmeSByZW5kZXIg
c3VyZmFjZSB0cmFuc2Zvcm1zLgogICAgIC8vCi0gICAgLy8gT3JpZ2luIHRyYW5zZm9ybSBvZiBy
ZW5kZXIgc3VyZmFjZSAxIGlzIGRlc2NyaWJlZCB3aXRoIHJlc3BlY3QgdG8gcm9vdC4KLSAgICBF
WFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKEEgKiBCICogQSwgcmVuZGVyU3VyZmFjZTEt
PnJlbmRlclN1cmZhY2UoKS0+b3JpZ2luVHJhbnNmb3JtKCkpOwotICAgIEVYUEVDVF9UUkFOU0ZP
Uk1BVElPTl9NQVRSSVhfRVEoQSAqIEIgKiBSLCByZW5kZXJTdXJmYWNlMS0+cmVuZGVyU3VyZmFj
ZSgpLT5yZXBsaWNhT3JpZ2luVHJhbnNmb3JtKCkpOworICAgIC8vIERyYXcgdHJhbnNmb3JtIG9m
IHJlbmRlciBzdXJmYWNlIDEgaXMgZGVzY3JpYmVkIHdpdGggcmVzcGVjdCB0byByb290LgorICAg
IEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEoQSAqIEIgKiBBLCByZW5kZXJTdXJmYWNl
MS0+cmVuZGVyU3VyZmFjZSgpLT5kcmF3VHJhbnNmb3JtKCkpOworICAgIEVYUEVDVF9UUkFOU0ZP
Uk1BVElPTl9NQVRSSVhfRVEoQSAqIEIgKiBSLCByZW5kZXJTdXJmYWNlMS0+cmVuZGVyU3VyZmFj
ZSgpLT5yZXBsaWNhRHJhd1RyYW5zZm9ybSgpKTsKICAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05f
TUFUUklYX0VRKEEgKiBCICogQSwgcmVuZGVyU3VyZmFjZTEtPnJlbmRlclN1cmZhY2UoKS0+c2Ny
ZWVuU3BhY2VUcmFuc2Zvcm0oKSk7CiAgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9F
UShBICogQiAqIFIsIHJlbmRlclN1cmZhY2UxLT5yZW5kZXJTdXJmYWNlKCktPnJlcGxpY2FTY3Jl
ZW5TcGFjZVRyYW5zZm9ybSgpKTsKLSAgICAvLyBPcmlnaW4gdHJhbnNmb3JtIG9mIHJlbmRlciBz
dXJmYWNlIDIgaXMgZGVzY3JpYmVkIHdpdGggcmVzcGVjdCB0byByZW5kZXIgc3VyZmFjZSAyLgot
ICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEoQiAqIEEsIHJlbmRlclN1cmZhY2Uy
LT5yZW5kZXJTdXJmYWNlKCktPm9yaWdpblRyYW5zZm9ybSgpKTsKLSAgICBFWFBFQ1RfVFJBTlNG
T1JNQVRJT05fTUFUUklYX0VRKEIgKiBSLCByZW5kZXJTdXJmYWNlMi0+cmVuZGVyU3VyZmFjZSgp
LT5yZXBsaWNhT3JpZ2luVHJhbnNmb3JtKCkpOworICAgIC8vIERyYXcgdHJhbnNmb3JtIG9mIHJl
bmRlciBzdXJmYWNlIDIgaXMgZGVzY3JpYmVkIHdpdGggcmVzcGVjdCB0byByZW5kZXIgc3VyZmFj
ZSAyLgorICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEoQiAqIEEsIHJlbmRlclN1
cmZhY2UyLT5yZW5kZXJTdXJmYWNlKCktPmRyYXdUcmFuc2Zvcm0oKSk7CisgICAgRVhQRUNUX1RS
QU5TRk9STUFUSU9OX01BVFJJWF9FUShCICogUiwgcmVuZGVyU3VyZmFjZTItPnJlbmRlclN1cmZh
Y2UoKS0+cmVwbGljYURyYXdUcmFuc2Zvcm0oKSk7CiAgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9O
X01BVFJJWF9FUShBICogQiAqIEEgKiBCICogQSwgcmVuZGVyU3VyZmFjZTItPnJlbmRlclN1cmZh
Y2UoKS0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSk7CiAgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9O
X01BVFJJWF9FUShBICogQiAqIEEgKiBCICogUiwgcmVuZGVyU3VyZmFjZTItPnJlbmRlclN1cmZh
Y2UoKS0+cmVwbGljYVNjcmVlblNwYWNlVHJhbnNmb3JtKCkpOwogCkBAIC0xNDc4LDcgKzE0NzYs
NyBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeVNjcm9sbENvbXBlbnNh
dGlvbkZvckZpeGVkUG9zaXRpb25MYXllcldpdAogewogICAgIC8vIFRoaXMgdGVzdCBjaGVja3Mg
Zm9yIGNvcnJlY3Qgc2Nyb2xsIGNvbXBlbnNhdGlvbiB3aGVuIHRoZSBmaXhlZC1wb3NpdGlvbiBj
b250YWluZXIKICAgICAvLyBjb250cmlidXRlcyB0byBhIGRpZmZlcmVudCByZW5kZXJTdXJmYWNl
IHRoYW4gdGhlIGZpeGVkLXBvc2l0aW9uIGxheWVyLiBJbiB0aGlzCi0gICAgLy8gY2FzZSwgdGhl
IHN1cmZhY2Ugb3JpZ2luVHJhbnNmb3JtcyBhbHNvIGhhdmUgdG8gYmUgYWNjb3VudGVkIGZvciB3
aGVuIGNoZWNraW5nIHRoZQorICAgIC8vIGNhc2UsIHRoZSBzdXJmYWNlIGRyYXdUcmFuc2Zvcm1z
IGFsc28gaGF2ZSB0byBiZSBhY2NvdW50ZWQgZm9yIHdoZW4gY2hlY2tpbmcgdGhlCiAgICAgLy8g
c2Nyb2xsRGVsdGEuCiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIHNjb3BlZEltcGxUaHJl
YWQ7CiAKQEAgLTE1MDIsMTQgKzE1MDAsMTQgQEAgVEVTVChDQ0xheWVyVHJlZUhvc3RDb21tb25U
ZXN0LCB2ZXJpZnlTY3JvbGxDb21wZW5zYXRpb25Gb3JGaXhlZFBvc2l0aW9uTGF5ZXJXaXQKICAg
ICBleGVjdXRlQ2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHJvb3QuZ2V0KCkp
OwogCiAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggZXhwZWN0ZWRDaGlsZFRyYW5zZm9ybTsK
LSAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBleHBlY3RlZFN1cmZhY2VPcmlnaW5UcmFuc2Zv
cm07Ci0gICAgZXhwZWN0ZWRTdXJmYWNlT3JpZ2luVHJhbnNmb3JtLnRyYW5zbGF0ZSg4LCA2KTsK
LSAgICBleHBlY3RlZFN1cmZhY2VPcmlnaW5UcmFuc2Zvcm0ubXVsdGlwbHkocm90YXRpb25BYm91
dFopOworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGV4cGVjdGVkU3VyZmFjZURyYXdUcmFu
c2Zvcm07CisgICAgZXhwZWN0ZWRTdXJmYWNlRHJhd1RyYW5zZm9ybS50cmFuc2xhdGUoOCwgNik7
CisgICAgZXhwZWN0ZWRTdXJmYWNlRHJhd1RyYW5zZm9ybS5tdWx0aXBseShyb3RhdGlvbkFib3V0
Wik7CiAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggZXhwZWN0ZWRHcmFuZENoaWxkVHJhbnNm
b3JtOwogICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGV4cGVjdGVkR3JlYXRHcmFuZENoaWxk
VHJhbnNmb3JtOwogICAgIEFTU0VSVF9UUlVFKGdyYW5kQ2hpbGQtPnJlbmRlclN1cmZhY2UoKSk7
CiAgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShleHBlY3RlZENoaWxkVHJhbnNm
b3JtLCBjaGlsZC0+ZHJhd1RyYW5zZm9ybSgpKTsKLSAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05f
TUFUUklYX0VRKGV4cGVjdGVkU3VyZmFjZU9yaWdpblRyYW5zZm9ybSwgZ3JhbmRDaGlsZC0+cmVu
ZGVyU3VyZmFjZSgpLT5vcmlnaW5UcmFuc2Zvcm0oKSk7CisgICAgRVhQRUNUX1RSQU5TRk9STUFU
SU9OX01BVFJJWF9FUShleHBlY3RlZFN1cmZhY2VEcmF3VHJhbnNmb3JtLCBncmFuZENoaWxkLT5y
ZW5kZXJTdXJmYWNlKCktPmRyYXdUcmFuc2Zvcm0oKSk7CiAgICAgRVhQRUNUX1RSQU5TRk9STUFU
SU9OX01BVFJJWF9FUShleHBlY3RlZEdyYW5kQ2hpbGRUcmFuc2Zvcm0sIGdyYW5kQ2hpbGQtPmRy
YXdUcmFuc2Zvcm0oKSk7CiAgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShleHBl
Y3RlZEdyZWF0R3JhbmRDaGlsZFRyYW5zZm9ybSwgZ3JlYXRHcmFuZENoaWxkLT5kcmF3VHJhbnNm
b3JtKCkpOwogCkBAIC0xNTI3LDEwICsxNTI1LDEwIEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29t
bW9uVGVzdCwgdmVyaWZ5U2Nyb2xsQ29tcGVuc2F0aW9uRm9yRml4ZWRQb3NpdGlvbkxheWVyV2l0
CiAgICAgZXhwZWN0ZWRDaGlsZFRyYW5zZm9ybS5tYWtlSWRlbnRpdHkoKTsKICAgICBleHBlY3Rl
ZENoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgtMTAsIC0zMCk7IC8vIHNjcm9sbERlbHRhCiAKLSAg
ICBleHBlY3RlZFN1cmZhY2VPcmlnaW5UcmFuc2Zvcm0ubWFrZUlkZW50aXR5KCk7Ci0gICAgZXhw
ZWN0ZWRTdXJmYWNlT3JpZ2luVHJhbnNmb3JtLnRyYW5zbGF0ZSgtMTAsIC0zMCk7IC8vIHNjcm9s
bERlbHRhCi0gICAgZXhwZWN0ZWRTdXJmYWNlT3JpZ2luVHJhbnNmb3JtLnRyYW5zbGF0ZSg4LCA2
KTsKLSAgICBleHBlY3RlZFN1cmZhY2VPcmlnaW5UcmFuc2Zvcm0ubXVsdGlwbHkocm90YXRpb25B
Ym91dFopOworICAgIGV4cGVjdGVkU3VyZmFjZURyYXdUcmFuc2Zvcm0ubWFrZUlkZW50aXR5KCk7
CisgICAgZXhwZWN0ZWRTdXJmYWNlRHJhd1RyYW5zZm9ybS50cmFuc2xhdGUoLTEwLCAtMzApOyAv
LyBzY3JvbGxEZWx0YQorICAgIGV4cGVjdGVkU3VyZmFjZURyYXdUcmFuc2Zvcm0udHJhbnNsYXRl
KDgsIDYpOworICAgIGV4cGVjdGVkU3VyZmFjZURyYXdUcmFuc2Zvcm0ubXVsdGlwbHkocm90YXRp
b25BYm91dFopOwogCiAgICAgLy8gVGhlIHJvdGF0aW9uIGFuZCBpdHMgaW52ZXJzZSBhcmUgbmVl
ZGVkIHRvIHBsYWNlIHRoZSBzY3JvbGxEZWx0YSBjb21wZW5zYXRpb24gaW4KICAgICAvLyB0aGUg
Y29ycmVjdCBzcGFjZS4gVGhpcyB0ZXN0IHdpbGwgZmFpbCBpZiB0aGUgcm90YXRpb24vaW52ZXJz
ZSBhcmUgYmFja3dhcmRzLCB0b28sCkBAIC0xNTQyLDcgKzE1NDAsNyBAQCBURVNUKENDTGF5ZXJU
cmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeVNjcm9sbENvbXBlbnNhdGlvbkZvckZpeGVkUG9zaXRp
b25MYXllcldpdAogCiAgICAgQVNTRVJUX1RSVUUoZ3JhbmRDaGlsZC0+cmVuZGVyU3VyZmFjZSgp
KTsKICAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKGV4cGVjdGVkQ2hpbGRUcmFu
c2Zvcm0sIGNoaWxkLT5kcmF3VHJhbnNmb3JtKCkpOwotICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElP
Tl9NQVRSSVhfRVEoZXhwZWN0ZWRTdXJmYWNlT3JpZ2luVHJhbnNmb3JtLCBncmFuZENoaWxkLT5y
ZW5kZXJTdXJmYWNlKCktPm9yaWdpblRyYW5zZm9ybSgpKTsKKyAgICBFWFBFQ1RfVFJBTlNGT1JN
QVRJT05fTUFUUklYX0VRKGV4cGVjdGVkU3VyZmFjZURyYXdUcmFuc2Zvcm0sIGdyYW5kQ2hpbGQt
PnJlbmRlclN1cmZhY2UoKS0+ZHJhd1RyYW5zZm9ybSgpKTsKICAgICBFWFBFQ1RfVFJBTlNGT1JN
QVRJT05fTUFUUklYX0VRKGV4cGVjdGVkR3JhbmRDaGlsZFRyYW5zZm9ybSwgZ3JhbmRDaGlsZC0+
ZHJhd1RyYW5zZm9ybSgpKTsKICAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKGV4
cGVjdGVkR3JlYXRHcmFuZENoaWxkVHJhbnNmb3JtLCBncmVhdEdyYW5kQ2hpbGQtPmRyYXdUcmFu
c2Zvcm0oKSk7CiB9CkBAIC0xNTkxLDE1ICsxNTg5LDE1IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0
Q29tbW9uVGVzdCwgdmVyaWZ5U2Nyb2xsQ29tcGVuc2F0aW9uRm9yRml4ZWRQb3NpdGlvbkxheWVy
V2l0CiAKICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBleHBlY3RlZENoaWxkVHJhbnNmb3Jt
OwogCi0gICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggZXhwZWN0ZWRHcmFuZENoaWxkU3VyZmFj
ZU9yaWdpblRyYW5zZm9ybTsKLSAgICBleHBlY3RlZEdyYW5kQ2hpbGRTdXJmYWNlT3JpZ2luVHJh
bnNmb3JtLnRyYW5zbGF0ZSg4LCA2KTsKLSAgICBleHBlY3RlZEdyYW5kQ2hpbGRTdXJmYWNlT3Jp
Z2luVHJhbnNmb3JtLm11bHRpcGx5KHJvdGF0aW9uQWJvdXRaKTsKKyAgICBXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBleHBlY3RlZEdyYW5kQ2hpbGRTdXJmYWNlRHJhd1RyYW5zZm9ybTsKKyAgICBl
eHBlY3RlZEdyYW5kQ2hpbGRTdXJmYWNlRHJhd1RyYW5zZm9ybS50cmFuc2xhdGUoOCwgNik7Cisg
ICAgZXhwZWN0ZWRHcmFuZENoaWxkU3VyZmFjZURyYXdUcmFuc2Zvcm0ubXVsdGlwbHkocm90YXRp
b25BYm91dFopOwogCiAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggZXhwZWN0ZWRHcmFuZENo
aWxkVHJhbnNmb3JtOwogCi0gICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggZXhwZWN0ZWRHcmVh
dEdyYW5kQ2hpbGRTdXJmYWNlT3JpZ2luVHJhbnNmb3JtOwotICAgIGV4cGVjdGVkR3JlYXRHcmFu
ZENoaWxkU3VyZmFjZU9yaWdpblRyYW5zZm9ybS50cmFuc2xhdGUoMTQwLCAxMjApOwotICAgIGV4
cGVjdGVkR3JlYXRHcmFuZENoaWxkU3VyZmFjZU9yaWdpblRyYW5zZm9ybS5tdWx0aXBseShyb3Rh
dGlvbkFib3V0Wik7CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggZXhwZWN0ZWRHcmVhdEdy
YW5kQ2hpbGRTdXJmYWNlRHJhd1RyYW5zZm9ybTsKKyAgICBleHBlY3RlZEdyZWF0R3JhbmRDaGls
ZFN1cmZhY2VEcmF3VHJhbnNmb3JtLnRyYW5zbGF0ZSgxNDAsIDEyMCk7CisgICAgZXhwZWN0ZWRH
cmVhdEdyYW5kQ2hpbGRTdXJmYWNlRHJhd1RyYW5zZm9ybS5tdWx0aXBseShyb3RhdGlvbkFib3V0
Wik7CiAKICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBleHBlY3RlZEdyZWF0R3JhbmRDaGls
ZFRyYW5zZm9ybTsKIApAQCAtMTYwOCw5ICsxNjA2LDkgQEAgVEVTVChDQ0xheWVyVHJlZUhvc3RD
b21tb25UZXN0LCB2ZXJpZnlTY3JvbGxDb21wZW5zYXRpb25Gb3JGaXhlZFBvc2l0aW9uTGF5ZXJX
aXQKICAgICBBU1NFUlRfVFJVRShncmFuZENoaWxkLT5yZW5kZXJTdXJmYWNlKCkpOwogICAgIEFT
U0VSVF9UUlVFKGdyZWF0R3JhbmRDaGlsZC0+cmVuZGVyU3VyZmFjZSgpKTsKICAgICBFWFBFQ1Rf
VFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKGV4cGVjdGVkQ2hpbGRUcmFuc2Zvcm0sIGNoaWxkLT5k
cmF3VHJhbnNmb3JtKCkpOwotICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEoZXhw
ZWN0ZWRHcmFuZENoaWxkU3VyZmFjZU9yaWdpblRyYW5zZm9ybSwgZ3JhbmRDaGlsZC0+cmVuZGVy
U3VyZmFjZSgpLT5vcmlnaW5UcmFuc2Zvcm0oKSk7CisgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9O
X01BVFJJWF9FUShleHBlY3RlZEdyYW5kQ2hpbGRTdXJmYWNlRHJhd1RyYW5zZm9ybSwgZ3JhbmRD
aGlsZC0+cmVuZGVyU3VyZmFjZSgpLT5kcmF3VHJhbnNmb3JtKCkpOwogICAgIEVYUEVDVF9UUkFO
U0ZPUk1BVElPTl9NQVRSSVhfRVEoZXhwZWN0ZWRHcmFuZENoaWxkVHJhbnNmb3JtLCBncmFuZENo
aWxkLT5kcmF3VHJhbnNmb3JtKCkpOwotICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhf
RVEoZXhwZWN0ZWRHcmVhdEdyYW5kQ2hpbGRTdXJmYWNlT3JpZ2luVHJhbnNmb3JtLCBncmVhdEdy
YW5kQ2hpbGQtPnJlbmRlclN1cmZhY2UoKS0+b3JpZ2luVHJhbnNmb3JtKCkpOworICAgIEVYUEVD
VF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEoZXhwZWN0ZWRHcmVhdEdyYW5kQ2hpbGRTdXJmYWNl
RHJhd1RyYW5zZm9ybSwgZ3JlYXRHcmFuZENoaWxkLT5yZW5kZXJTdXJmYWNlKCktPmRyYXdUcmFu
c2Zvcm0oKSk7CiAgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShleHBlY3RlZEdy
ZWF0R3JhbmRDaGlsZFRyYW5zZm9ybSwgZ3JlYXRHcmFuZENoaWxkLT5kcmF3VHJhbnNmb3JtKCkp
OwogICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEoZXhwZWN0ZWRGaXhlZFBvc2l0
aW9uQ2hpbGRUcmFuc2Zvcm0sIGZpeGVkUG9zaXRpb25DaGlsZC0+ZHJhd1RyYW5zZm9ybSgpKTsK
IApAQCAtMTYyMSwxMCArMTYxOSwxMCBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3Qs
IHZlcmlmeVNjcm9sbENvbXBlbnNhdGlvbkZvckZpeGVkUG9zaXRpb25MYXllcldpdAogICAgIGV4
cGVjdGVkQ2hpbGRUcmFuc2Zvcm0ubWFrZUlkZW50aXR5KCk7CiAgICAgZXhwZWN0ZWRDaGlsZFRy
YW5zZm9ybS50cmFuc2xhdGUoLTEwLCAtMzApOyAvLyBzY3JvbGxEZWx0YQogCi0gICAgZXhwZWN0
ZWRHcmFuZENoaWxkU3VyZmFjZU9yaWdpblRyYW5zZm9ybS5tYWtlSWRlbnRpdHkoKTsKLSAgICBl
eHBlY3RlZEdyYW5kQ2hpbGRTdXJmYWNlT3JpZ2luVHJhbnNmb3JtLnRyYW5zbGF0ZSgtMTAsIC0z
MCk7IC8vIHNjcm9sbERlbHRhCi0gICAgZXhwZWN0ZWRHcmFuZENoaWxkU3VyZmFjZU9yaWdpblRy
YW5zZm9ybS50cmFuc2xhdGUoOCwgNik7Ci0gICAgZXhwZWN0ZWRHcmFuZENoaWxkU3VyZmFjZU9y
aWdpblRyYW5zZm9ybS5tdWx0aXBseShyb3RhdGlvbkFib3V0Wik7CisgICAgZXhwZWN0ZWRHcmFu
ZENoaWxkU3VyZmFjZURyYXdUcmFuc2Zvcm0ubWFrZUlkZW50aXR5KCk7CisgICAgZXhwZWN0ZWRH
cmFuZENoaWxkU3VyZmFjZURyYXdUcmFuc2Zvcm0udHJhbnNsYXRlKC0xMCwgLTMwKTsgLy8gc2Ny
b2xsRGVsdGEKKyAgICBleHBlY3RlZEdyYW5kQ2hpbGRTdXJmYWNlRHJhd1RyYW5zZm9ybS50cmFu
c2xhdGUoOCwgNik7CisgICAgZXhwZWN0ZWRHcmFuZENoaWxkU3VyZmFjZURyYXdUcmFuc2Zvcm0u
bXVsdGlwbHkocm90YXRpb25BYm91dFopOwogCiAgICAgLy8gZ3JhbmRDaGlsZCwgZ3JlYXRHcmFu
ZENoaWxkLCBhbmQgZ3JlYXRHcmFuZENoaWxkJ3Mgc3VyZmFjZSBhcmUgbm90IGV4cGVjdGVkIHRv
CiAgICAgLy8gY2hhbmdlLCBzaW5jZSB0aGV5IGFyZSBhbGwgbm90IGZpeGVkLCBhbmQgdGhleSBh
cmUgYWxsIGRyYXduIHdpdGggcmVzcGVjdCB0bwpAQCAtMTYzMiwyNCArMTYzMCwyNCBAQCBURVNU
KENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeVNjcm9sbENvbXBlbnNhdGlvbkZvckZp
eGVkUG9zaXRpb25MYXllcldpdAogCiAgICAgLy8gQnV0IHRoZSBncmVhdC1ncmVhdCBncmFuZGNo
aWxkLCAiZml4ZWRQb3NpdGlvbkNoaWxkIiwgc2hvdWxkIGhhdmUgYSB0cmFuc2Zvcm0gdGhhdCBl
eHBsaWNpdGx5IGNhbmNlbHMgb3V0IHRoZSBzY3JvbGxEZWx0YS4KICAgICAvLyBUaGUgZXhwZWN0
ZWQgdHJhbnNmb3JtIGlzOgotICAgIC8vICAgY29tcG91bmRPcmlnaW5UcmFuc2Zvcm0uaW52ZXJz
ZSgpICogdHJhbnNsYXRlKHBvc2l0aXZlIHNjcm9sbERlbHRhKSAqIGNvbXBvdW5kT3JpZ2luVHJh
bnNmb3JtICogaGFsZi13aWR0aC1oYWxmLWhlaWdodCB0cmFuc2xhdGlvbgotICAgIFdlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4IGNvbXBvdW5kT3JpZ2luVHJhbnNmb3JtOyAvLyB0cmFuc2Zvcm0gZnJv
bSBncmVhdEdyYW5kQ2hpbGRTdXJmYWNlJ3Mgb3JpZ2luIHRvIHRoZSByb290IHN1cmZhY2UuCi0g
ICAgY29tcG91bmRPcmlnaW5UcmFuc2Zvcm0udHJhbnNsYXRlKDgsIDYpOyAvLyBvcmlnaW4gdHJh
bnNsYXRpb24gb2YgZ3JhbmRDaGlsZAotICAgIGNvbXBvdW5kT3JpZ2luVHJhbnNmb3JtLm11bHRp
cGx5KHJvdGF0aW9uQWJvdXRaKTsgLy8gcm90YXRpb24gb2YgZ3JhbmRDaGlsZAotICAgIGNvbXBv
dW5kT3JpZ2luVHJhbnNmb3JtLnRyYW5zbGF0ZSgxNDAsIDEyMCk7IC8vIG9yaWdpbiB0cmFuc2xh
dGlvbiBvZiBncmVhdEdyYW5kQ2hpbGQKLSAgICBjb21wb3VuZE9yaWdpblRyYW5zZm9ybS5tdWx0
aXBseShyb3RhdGlvbkFib3V0Wik7IC8vIHJvdGF0aW9uIG9mIGdyZWF0R3JhbmRDaGlsZAorICAg
IC8vICAgY29tcG91bmREcmF3VHJhbnNmb3JtLmludmVyc2UoKSAqIHRyYW5zbGF0ZShwb3NpdGl2
ZSBzY3JvbGxEZWx0YSkgKiBjb21wb3VuZE9yaWdpblRyYW5zZm9ybSAqIGhhbGYtd2lkdGgtaGFs
Zi1oZWlnaHQgdHJhbnNsYXRpb24KKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjb21wb3Vu
ZERyYXdUcmFuc2Zvcm07IC8vIHRyYW5zZm9ybSBmcm9tIGdyZWF0R3JhbmRDaGlsZFN1cmZhY2Un
cyBvcmlnaW4gdG8gdGhlIHJvb3Qgc3VyZmFjZS4KKyAgICBjb21wb3VuZERyYXdUcmFuc2Zvcm0u
dHJhbnNsYXRlKDgsIDYpOyAvLyBvcmlnaW4gdHJhbnNsYXRpb24gb2YgZ3JhbmRDaGlsZAorICAg
IGNvbXBvdW5kRHJhd1RyYW5zZm9ybS5tdWx0aXBseShyb3RhdGlvbkFib3V0Wik7IC8vIHJvdGF0
aW9uIG9mIGdyYW5kQ2hpbGQKKyAgICBjb21wb3VuZERyYXdUcmFuc2Zvcm0udHJhbnNsYXRlKDE0
MCwgMTIwKTsgLy8gb3JpZ2luIHRyYW5zbGF0aW9uIG9mIGdyZWF0R3JhbmRDaGlsZAorICAgIGNv
bXBvdW5kRHJhd1RyYW5zZm9ybS5tdWx0aXBseShyb3RhdGlvbkFib3V0Wik7IC8vIHJvdGF0aW9u
IG9mIGdyZWF0R3JhbmRDaGlsZAogCiAgICAgZXhwZWN0ZWRGaXhlZFBvc2l0aW9uQ2hpbGRUcmFu
c2Zvcm0ubWFrZUlkZW50aXR5KCk7Ci0gICAgZXhwZWN0ZWRGaXhlZFBvc2l0aW9uQ2hpbGRUcmFu
c2Zvcm0ubXVsdGlwbHkoY29tcG91bmRPcmlnaW5UcmFuc2Zvcm0uaW52ZXJzZSgpKTsKKyAgICBl
eHBlY3RlZEZpeGVkUG9zaXRpb25DaGlsZFRyYW5zZm9ybS5tdWx0aXBseShjb21wb3VuZERyYXdU
cmFuc2Zvcm0uaW52ZXJzZSgpKTsKICAgICBleHBlY3RlZEZpeGVkUG9zaXRpb25DaGlsZFRyYW5z
Zm9ybS50cmFuc2xhdGUoMTAsIDMwKTsgLy8gZXhwbGljaXQgY2FuY2VsaW5nIG91dCB0aGUgc2Ny
b2xsRGVsdGEgdGhhdCBnZXRzIGVtYmVkZGVkIGluIHRoZSBmaXhlZCBwb3NpdGlvbiBsYXllcidz
IHN1cmZhY2UuCi0gICAgZXhwZWN0ZWRGaXhlZFBvc2l0aW9uQ2hpbGRUcmFuc2Zvcm0ubXVsdGlw
bHkoY29tcG91bmRPcmlnaW5UcmFuc2Zvcm0pOworICAgIGV4cGVjdGVkRml4ZWRQb3NpdGlvbkNo
aWxkVHJhbnNmb3JtLm11bHRpcGx5KGNvbXBvdW5kRHJhd1RyYW5zZm9ybSk7CiAKICAgICBBU1NF
UlRfVFJVRShncmFuZENoaWxkLT5yZW5kZXJTdXJmYWNlKCkpOwogICAgIEFTU0VSVF9UUlVFKGdy
ZWF0R3JhbmRDaGlsZC0+cmVuZGVyU3VyZmFjZSgpKTsKICAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJ
T05fTUFUUklYX0VRKGV4cGVjdGVkQ2hpbGRUcmFuc2Zvcm0sIGNoaWxkLT5kcmF3VHJhbnNmb3Jt
KCkpOwotICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEoZXhwZWN0ZWRHcmFuZENo
aWxkU3VyZmFjZU9yaWdpblRyYW5zZm9ybSwgZ3JhbmRDaGlsZC0+cmVuZGVyU3VyZmFjZSgpLT5v
cmlnaW5UcmFuc2Zvcm0oKSk7CisgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShl
eHBlY3RlZEdyYW5kQ2hpbGRTdXJmYWNlRHJhd1RyYW5zZm9ybSwgZ3JhbmRDaGlsZC0+cmVuZGVy
U3VyZmFjZSgpLT5kcmF3VHJhbnNmb3JtKCkpOwogICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9N
QVRSSVhfRVEoZXhwZWN0ZWRHcmFuZENoaWxkVHJhbnNmb3JtLCBncmFuZENoaWxkLT5kcmF3VHJh
bnNmb3JtKCkpOwotICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEoZXhwZWN0ZWRH
cmVhdEdyYW5kQ2hpbGRTdXJmYWNlT3JpZ2luVHJhbnNmb3JtLCBncmVhdEdyYW5kQ2hpbGQtPnJl
bmRlclN1cmZhY2UoKS0+b3JpZ2luVHJhbnNmb3JtKCkpOworICAgIEVYUEVDVF9UUkFOU0ZPUk1B
VElPTl9NQVRSSVhfRVEoZXhwZWN0ZWRHcmVhdEdyYW5kQ2hpbGRTdXJmYWNlRHJhd1RyYW5zZm9y
bSwgZ3JlYXRHcmFuZENoaWxkLT5yZW5kZXJTdXJmYWNlKCktPmRyYXdUcmFuc2Zvcm0oKSk7CiAg
ICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShleHBlY3RlZEdyZWF0R3JhbmRDaGls
ZFRyYW5zZm9ybSwgZ3JlYXRHcmFuZENoaWxkLT5kcmF3VHJhbnNmb3JtKCkpOwogICAgIEVYUEVD
VF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEoZXhwZWN0ZWRGaXhlZFBvc2l0aW9uQ2hpbGRUcmFu
c2Zvcm0sIGZpeGVkUG9zaXRpb25DaGlsZC0+ZHJhd1RyYW5zZm9ybSgpKTsKIH0KQEAgLTE2NzUs
MTIgKzE2NzMsMTIgQEAgVEVTVChDQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LCB2ZXJpZnlTY3Jv
bGxDb21wZW5zYXRpb25Gb3JGaXhlZFBvc2l0aW9uTGF5ZXJXaXQKICAgICBjaGlsZC0+c2V0U2Ny
b2xsRGVsdGEoSW50U2l6ZSgwLCAwKSk7CiAgICAgZXhlY3V0ZUNhbGN1bGF0ZURyYXdUcmFuc2Zv
cm1zQW5kVmlzaWJpbGl0eShyb290LmdldCgpKTsKIAotICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0
cml4IGV4cGVjdGVkU3VyZmFjZU9yaWdpblRyYW5zZm9ybTsKLSAgICBleHBlY3RlZFN1cmZhY2VP
cmlnaW5UcmFuc2Zvcm0udHJhbnNsYXRlKDAsIDApOworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0
cml4IGV4cGVjdGVkU3VyZmFjZURyYXdUcmFuc2Zvcm07CisgICAgZXhwZWN0ZWRTdXJmYWNlRHJh
d1RyYW5zZm9ybS50cmFuc2xhdGUoMCwgMCk7CiAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgg
ZXhwZWN0ZWRDaGlsZFRyYW5zZm9ybTsKICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBleHBl
Y3RlZEdyYW5kQ2hpbGRUcmFuc2Zvcm07CiAgICAgQVNTRVJUX1RSVUUoY2hpbGQtPnJlbmRlclN1
cmZhY2UoKSk7Ci0gICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShleHBlY3RlZFN1
cmZhY2VPcmlnaW5UcmFuc2Zvcm0sIGNoaWxkLT5yZW5kZXJTdXJmYWNlKCktPm9yaWdpblRyYW5z
Zm9ybSgpKTsKKyAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKGV4cGVjdGVkU3Vy
ZmFjZURyYXdUcmFuc2Zvcm0sIGNoaWxkLT5yZW5kZXJTdXJmYWNlKCktPmRyYXdUcmFuc2Zvcm0o
KSk7CiAgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShleHBlY3RlZENoaWxkVHJh
bnNmb3JtLCBjaGlsZC0+ZHJhd1RyYW5zZm9ybSgpKTsKICAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJ
T05fTUFUUklYX0VRKGV4cGVjdGVkR3JhbmRDaGlsZFRyYW5zZm9ybSwgZ3JhbmRDaGlsZC0+ZHJh
d1RyYW5zZm9ybSgpKTsKIApAQCAtMTY5MSwxMyArMTY4OSwxMyBAQCBURVNUKENDTGF5ZXJUcmVl
SG9zdENvbW1vblRlc3QsIHZlcmlmeVNjcm9sbENvbXBlbnNhdGlvbkZvckZpeGVkUG9zaXRpb25M
YXllcldpdAogICAgIC8vIFRoZSBzdXJmYWNlIGlzIHRyYW5zbGF0ZWQgYnkgc2Nyb2xsRGVsdGEs
IHRoZSBjaGlsZCB0cmFuc2Zvcm0gZG9lc24ndCBjaGFuZ2UKICAgICAvLyBiZWNhdXNlIGl0IHNj
cm9sbHMgYWxvbmcgd2l0aCB0aGUgc3VyZmFjZSwgYnV0IHRoZSBmaXhlZCBwb3NpdGlvbiBncmFu
ZENoaWxkCiAgICAgLy8gbmVlZHMgdG8gY29tcGVuc2F0ZSBmb3IgdGhlIHNjcm9sbCB0cmFuc2xh
dGlvbi4KLSAgICBleHBlY3RlZFN1cmZhY2VPcmlnaW5UcmFuc2Zvcm0ubWFrZUlkZW50aXR5KCk7
Ci0gICAgZXhwZWN0ZWRTdXJmYWNlT3JpZ2luVHJhbnNmb3JtLnRyYW5zbGF0ZSgtMTAsIC0xMCk7
CisgICAgZXhwZWN0ZWRTdXJmYWNlRHJhd1RyYW5zZm9ybS5tYWtlSWRlbnRpdHkoKTsKKyAgICBl
eHBlY3RlZFN1cmZhY2VEcmF3VHJhbnNmb3JtLnRyYW5zbGF0ZSgtMTAsIC0xMCk7CiAgICAgZXhw
ZWN0ZWRHcmFuZENoaWxkVHJhbnNmb3JtLm1ha2VJZGVudGl0eSgpOwogICAgIGV4cGVjdGVkR3Jh
bmRDaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoMTAsIDEwKTsKIAogICAgIEFTU0VSVF9UUlVFKGNo
aWxkLT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhf
RVEoZXhwZWN0ZWRTdXJmYWNlT3JpZ2luVHJhbnNmb3JtLCBjaGlsZC0+cmVuZGVyU3VyZmFjZSgp
LT5vcmlnaW5UcmFuc2Zvcm0oKSk7CisgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9F
UShleHBlY3RlZFN1cmZhY2VEcmF3VHJhbnNmb3JtLCBjaGlsZC0+cmVuZGVyU3VyZmFjZSgpLT5k
cmF3VHJhbnNmb3JtKCkpOwogICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEoZXhw
ZWN0ZWRDaGlsZFRyYW5zZm9ybSwgY2hpbGQtPmRyYXdUcmFuc2Zvcm0oKSk7CiAgICAgRVhQRUNU
X1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShleHBlY3RlZEdyYW5kQ2hpbGRUcmFuc2Zvcm0sIGdy
YW5kQ2hpbGQtPmRyYXdUcmFuc2Zvcm0oKSk7CiB9CkBAIC0zNjk1LDkgKzM2OTMsOSBAQCBURVNU
KENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeVJlbmRlclN1cmZhY2VUcmFuc2Zvcm1z
SW5IaWdoRFBJKQogICAgIGV4cGVjdGVkUmVuZGVyU3VyZmFjZURyYXdUcmFuc2Zvcm0udHJhbnNs
YXRlKGRldmljZVNjYWxlRmFjdG9yICogY2hpbGQtPnBvc2l0aW9uKCkueCgpLCBkZXZpY2VTY2Fs
ZUZhY3RvciAqIGNoaWxkLT5wb3NpdGlvbigpLnkoKSk7CiAgICAgRVhQRUNUX1RSQU5TRk9STUFU
SU9OX01BVFJJWF9FUShleHBlY3RlZFJlbmRlclN1cmZhY2VEcmF3VHJhbnNmb3JtLCBjaGlsZC0+
cmVuZGVyU3VyZmFjZSgpLT5kcmF3VHJhbnNmb3JtKCkpOwogCi0gICAgV2ViVHJhbnNmb3JtYXRp
b25NYXRyaXggZXhwZWN0ZWRPcmlnaW5UcmFuc2Zvcm07Ci0gICAgZXhwZWN0ZWRPcmlnaW5UcmFu
c2Zvcm0udHJhbnNsYXRlKGRldmljZVNjYWxlRmFjdG9yICogMiwgZGV2aWNlU2NhbGVGYWN0b3Ig
KiAyKTsKLSAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKGV4cGVjdGVkT3JpZ2lu
VHJhbnNmb3JtLCBjaGlsZC0+cmVuZGVyU3VyZmFjZSgpLT5vcmlnaW5UcmFuc2Zvcm0oKSk7Cisg
ICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggZXhwZWN0ZWRTdXJmYWNlRHJhd1RyYW5zZm9ybTsK
KyAgICBleHBlY3RlZFN1cmZhY2VEcmF3VHJhbnNmb3JtLnRyYW5zbGF0ZShkZXZpY2VTY2FsZUZh
Y3RvciAqIDIsIGRldmljZVNjYWxlRmFjdG9yICogMik7CisgICAgRVhQRUNUX1RSQU5TRk9STUFU
SU9OX01BVFJJWF9FUShleHBlY3RlZFN1cmZhY2VEcmF3VHJhbnNmb3JtLCBjaGlsZC0+cmVuZGVy
U3VyZmFjZSgpLT5kcmF3VHJhbnNmb3JtKCkpOwogCiAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRy
aXggZXhwZWN0ZWRTY3JlZW5TcGFjZVRyYW5zZm9ybTsKICAgICBleHBlY3RlZFNjcmVlblNwYWNl
VHJhbnNmb3JtLnRyYW5zbGF0ZShkZXZpY2VTY2FsZUZhY3RvciAqIDIsIGRldmljZVNjYWxlRmFj
dG9yICogMik7CkBAIC0zNzA5LDExICszNzA3LDYgQEAgVEVTVChDQ0xheWVyVHJlZUhvc3RDb21t
b25UZXN0LCB2ZXJpZnlSZW5kZXJTdXJmYWNlVHJhbnNmb3Jtc0luSGlnaERQSSkKICAgICBleHBl
Y3RlZFJlcGxpY2FEcmF3VHJhbnNmb3JtLnNldE00Mig2KTsKICAgICBFWFBFQ1RfVFJBTlNGT1JN
QVRJT05fTUFUUklYX0VRKGV4cGVjdGVkUmVwbGljYURyYXdUcmFuc2Zvcm0sIGNoaWxkLT5yZW5k
ZXJTdXJmYWNlKCktPnJlcGxpY2FEcmF3VHJhbnNmb3JtKCkpOwogCi0gICAgV2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXggZXhwZWN0ZWRSZXBsaWNhT3JpZ2luVHJhbnNmb3JtID0gZXhwZWN0ZWRSZXBs
aWNhRHJhd1RyYW5zZm9ybTsKLSAgICBleHBlY3RlZFJlcGxpY2FPcmlnaW5UcmFuc2Zvcm0uc2V0
TTQxKDYpOwotICAgIGV4cGVjdGVkUmVwbGljYU9yaWdpblRyYW5zZm9ybS5zZXRNNDIoNik7Ci0g
ICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShleHBlY3RlZFJlcGxpY2FPcmlnaW5U
cmFuc2Zvcm0sIGNoaWxkLT5yZW5kZXJTdXJmYWNlKCktPnJlcGxpY2FPcmlnaW5UcmFuc2Zvcm0o
KSk7Ci0KICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBleHBlY3RlZFJlcGxpY2FTY3JlZW5T
cGFjZVRyYW5zZm9ybTsKICAgICBleHBlY3RlZFJlcGxpY2FTY3JlZW5TcGFjZVRyYW5zZm9ybS5z
ZXRNMjIoLTEpOwogICAgIGV4cGVjdGVkUmVwbGljYVNjcmVlblNwYWNlVHJhbnNmb3JtLnNldE00
MSg2KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRy
ZWVIb3N0SW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVy
VHJlZUhvc3RJbXBsVGVzdC5jcHAKaW5kZXggNDQ4MzU4N2RlMTMzYzRiNjA0OGExN2NkY2U5OTZk
YzM0OGJiYmUzOS4uOGQxYzkwZDgwMzhiOTkzNTU5ZWYyYWJiZWIzMDg2MGM1MDkyOGNjOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBs
VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhv
c3RJbXBsVGVzdC5jcHAKQEAgLTMwOTIsNyArMzA5Miw3IEBAIHN0YXRpYyB2b2lkIGNvbmZpZ3Vy
ZVJlbmRlclBhc3NUZXN0RGF0YShjb25zdCBjaGFyKiB0ZXN0U2NyaXB0LCBSZW5kZXJQYXNzUmVt
b3ZhCiAKICAgICAgICAgICAgICAgICBJbnRSZWN0IHF1YWRSZWN0ID0gSW50UmVjdCgwLCAwLCAx
LCAxKTsKICAgICAgICAgICAgICAgICBJbnRSZWN0IGNvbnRlbnRzQ2hhbmdlZFJlY3QgPSBjb250
ZW50c0NoYW5nZWQgPyBxdWFkUmVjdCA6IEludFJlY3QoKTsKLSAgICAgICAgICAgICAgICBPd25Q
dHI8Q0NSZW5kZXJQYXNzRHJhd1F1YWQ+IHF1YWQgPSBDQ1JlbmRlclBhc3NEcmF3UXVhZDo6Y3Jl
YXRlKHRlc3REYXRhLnNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgcXVhZFJlY3QsIG5ld1JlbmRlclBh
c3NJZCwgaXNSZXBsaWNhLCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4KCksIFdlYktp
dDo6V2ViRmlsdGVyT3BlcmF0aW9ucygpLCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMoKSwg
MSwgY29udGVudHNDaGFuZ2VkUmVjdCk7CisgICAgICAgICAgICAgICAgT3duUHRyPENDUmVuZGVy
UGFzc0RyYXdRdWFkPiBxdWFkID0gQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6OmNyZWF0ZSh0ZXN0RGF0
YS5zaGFyZWRRdWFkU3RhdGUuZ2V0KCksIHF1YWRSZWN0LCBuZXdSZW5kZXJQYXNzSWQsIGlzUmVw
bGljYSwgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zKCksIFdlYktpdDo6V2ViRmlsdGVyT3Bl
cmF0aW9ucygpLCAxLCBjb250ZW50c0NoYW5nZWRSZWN0KTsKICAgICAgICAgICAgICAgICBzdGF0
aWNfY2FzdDxDQ1Rlc3RSZW5kZXJQYXNzKj4ocmVuZGVyUGFzcy5nZXQoKSktPmFwcGVuZFF1YWQo
cXVhZC5yZWxlYXNlKCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUmVuZGVyU3VyZmFjZVRlc3QuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1JlbmRlclN1cmZhY2VUZXN0LmNwcAppbmRleCBh
OTg5Y2Q2MDJlODhlNjcwNzljNDExMDljMTk5ZThjM2EwYjYwYWZiLi5jOTVkNzFlODRkMTU4ZGJh
OTdkMDViYTk5YzVjYjEwZjhjNDFhYjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDUmVuZGVyU3VyZmFjZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NSZW5kZXJTdXJmYWNlVGVzdC5jcHAKQEAgLTg2LDcgKzg2LDYgQEAgVEVT
VChDQ1JlbmRlclN1cmZhY2VUZXN0LCB2ZXJpZnlTdXJmYWNlQ2hhbmdlc0FyZVRyYWNrZWRQcm9w
ZXJseSkKICAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VSRkFDRV9ESURfTk9UX0NIQU5HRShyZW5k
ZXJTdXJmYWNlLT5zZXREcmF3T3BhY2l0eSgwLjUpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllf
U1VSRkFDRV9ESURfTk9UX0NIQU5HRShyZW5kZXJTdXJmYWNlLT5zZXREcmF3VHJhbnNmb3JtKGR1
bW15TWF0cml4KSk7CiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVUkZBQ0VfRElEX05PVF9DSEFO
R0UocmVuZGVyU3VyZmFjZS0+c2V0UmVwbGljYURyYXdUcmFuc2Zvcm0oZHVtbXlNYXRyaXgpKTsK
LSAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VSRkFDRV9ESURfTk9UX0NIQU5HRShyZW5kZXJTdXJm
YWNlLT5zZXRPcmlnaW5UcmFuc2Zvcm0oZHVtbXlNYXRyaXgpKTsKICAgICBFWEVDVVRFX0FORF9W
RVJJRllfU1VSRkFDRV9ESURfTk9UX0NIQU5HRShyZW5kZXJTdXJmYWNlLT5jbGVhckxheWVyTGlz
dCgpKTsKIH0KIApAQCAtMTA2LDcgKzEwNSw3IEBAIFRFU1QoQ0NSZW5kZXJTdXJmYWNlVGVzdCwg
c2FuaXR5Q2hlY2tTdXJmYWNlQ3JlYXRlc0NvcnJlY3RTaGFyZWRRdWFkU3RhdGUpCiAKICAgICBv
cmlnaW4udHJhbnNsYXRlKDMwLCA0MCk7CiAKLSAgICByZW5kZXJTdXJmYWNlLT5zZXRPcmlnaW5U
cmFuc2Zvcm0ob3JpZ2luKTsKKyAgICByZW5kZXJTdXJmYWNlLT5zZXREcmF3VHJhbnNmb3JtKG9y
aWdpbik7CiAgICAgcmVuZGVyU3VyZmFjZS0+c2V0Q29udGVudFJlY3QoY29udGVudFJlY3QpOwog
ICAgIHJlbmRlclN1cmZhY2UtPnNldENsaXBSZWN0KGNsaXBSZWN0KTsKICAgICByZW5kZXJTdXJm
YWNlLT5zZXRTY2lzc29yUmVjdChjbGlwUmVjdCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154511</attachid>
            <date>2012-07-25 18:41:02 -0700</date>
            <delta_ts>2012-07-26 11:00:23 -0700</delta_ts>
            <desc>Rebased</desc>
            <filename>bug-91815-20120725184052.patch</filename>
            <type>text/plain</type>
            <size>44993</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNjg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzY3OGY2MDYxMzgzZjM5
NjE3ODlkNGI5ZThlMGE5NDlhNjI2ZjlkZi4uNmU4OGVhN2M4MWFlMDg3ZmEwZTQwNjYwYjMxZWM4
N2FjNDljYjBkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTA3LTE5ICBBZHJp
ZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBSZW1v
dmUgcmVkdW5kYW50IHN1cmZhY2Ugb3JpZ2luIHRyYW5zZm9ybXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxODE1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVnIDkxNDE3IGNoYW5nZWQgZHJhdyB0cmFu
c2Zvcm1zIHRvIGJlY29tZSBlcXVpdmFsZW50IHRvIG9yaWdpbgorICAgICAgICB0cmFuc2Zvcm1z
IGZvciBzdXJmYWNlcy4gVGhpcyBjaGFuZ2UgcmVtb3ZlcyB0aGVtIGFzIHRoZXkgYXJlIG5vCisg
ICAgICAgIGxvbmdlciBuZWVkZWQgZm9yIGFueXRoaW5nLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cy4gSnVzdCBhIHJlZmFjdG9yaW5nLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmg6CisgICAgICAgIChSZW5kZXJTdXJmYWNlQ2hy
b21pdW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGFtYWdl
VHJhY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0RhbWFnZVRyYWNrZXI6OmV4dGVuZERh
bWFnZUZvclJlbmRlclN1cmZhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21w
dXRlU2Nyb2xsQ29tcGVuc2F0aW9uTWF0cml4Rm9yQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29y
ZTo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNJbnRlcm5hbCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ojo6bGVhdmVUb1JlbmRlclRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjo6OnVub2Nj
bHVkZWRDb250cmlidXRpbmdTdXJmYWNlQ29udGVudFJlY3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNDUmVuZGVyUGFzc0RyYXdRdWFkOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQ6OkNDUmVuZGVyUGFzc0RyYXdRdWFkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5oOgor
ICAgICAgICAoQ0NSZW5kZXJQYXNzRHJhd1F1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
Q1JlbmRlclN1cmZhY2U6OmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1JlbmRlclN1cmZhY2U6OmNyZWF0ZVJlcGxpY2FTaGFyZWRRdWFkU3RhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjphcHBlbmRRdWFkcyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmg6CisgICAgICAgIChD
Q1JlbmRlclN1cmZhY2UpOgorCiAyMDEyLTA3LTI1ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxh
aW5AYXBwbGUuY29tPgogCiAgICAgICAgIEluaXRpYWxpemUgUXVhbGlmaWVkTmFtZSdzIHN0cmlu
Z3MgZnJvbSB0aGUgcmVhZCBvbmx5IGRhdGEgc2VnbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwppbmRleCA3OGIwNDFlNDViOTJhMDI0MGMxOWJlZWQ1NTA5YjM2NmQzM2FmZmNkLi41ZTYzM2Ez
MjgwM2QyMGQwMzYyNDVkNTA5Y2RiODYxMjc3NTQwYzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwpAQCAtMSw1ICsxLDE5IEBACiAyMDEyLTA3LTE5ICBBZHJpZW5uZSBXYWxrZXIgIDxlbm5l
QGdvb2dsZS5jb20+CiAKKyAgICAgICAgW2Nocm9taXVtXSBSZW1vdmUgcmVkdW5kYW50IHN1cmZh
Y2Ugb3JpZ2luIHRyYW5zZm9ybXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTkxODE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQ2xlYW4gdXAgdXNlIG9mIG9yaWdpbiB0cmFuc2Zvcm1zIGluIHRlc3RzLiBX
aGVyZSBwb3NzaWJsZSwgdGVzdAorICAgICAgICBhZ2FpbnN0IHRoZSBlcXVpdmFsZW50IGRyYXcg
dHJhbnNmb3JtLgorCisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdC5j
cHA6CisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwOgorICAgICAg
ICAqIHRlc3RzL0NDUmVuZGVyU3VyZmFjZVRlc3QuY3BwOgorCisyMDEyLTA3LTE5ICBBZHJpZW5u
ZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CisKICAgICAgICAgW2Nocm9taXVtXSBNYWtlIGFs
bCBjb21wb3NpdG9yIHNjcmVlbiBzcGFjZSB0cmFuc2Zvcm1zIG9wZXJhdGUgb24gY29udGVudCBy
ZWN0cwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4
MDcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uaAppbmRleCA0NzQ5YzEzMGUwNDI0
ZTNlZmIxNWVmYTgxN2VhMzczOWE2NjMwM2EzLi4wMzRiZTU4YTQxYzMxMGVhZWU1YjRlYzA0YjQz
MDFmNGI5NjY5MmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uaApAQCAtNjIs
MTggKzYyLDEyIEBAIHB1YmxpYzoKICAgICBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9u
TWF0cml4JiBkcmF3VHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9kcmF3VHJhbnNmb3JtOyB9
CiAgICAgdm9pZCBzZXREcmF3VHJhbnNmb3JtKGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRp
b25NYXRyaXgmIGRyYXdUcmFuc2Zvcm0pIHsgbV9kcmF3VHJhbnNmb3JtID0gZHJhd1RyYW5zZm9y
bTsgfQogCi0gICAgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgb3JpZ2lu
VHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW5UcmFuc2Zvcm07IH0KLSAgICB2b2lk
IHNldE9yaWdpblRyYW5zZm9ybShjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4
JiBvcmlnaW5UcmFuc2Zvcm0pIHsgbV9vcmlnaW5UcmFuc2Zvcm0gPSBvcmlnaW5UcmFuc2Zvcm07
IH0KLQogICAgIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHNjcmVlblNw
YWNlVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9zY3JlZW5TcGFjZVRyYW5zZm9ybTsgfQog
ICAgIHZvaWQgc2V0U2NyZWVuU3BhY2VUcmFuc2Zvcm0oY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgc2NyZWVuU3BhY2VUcmFuc2Zvcm0pIHsgbV9zY3JlZW5TcGFjZVRyYW5z
Zm9ybSA9IHNjcmVlblNwYWNlVHJhbnNmb3JtOyB9CiAKICAgICBjb25zdCBXZWJLaXQ6OldlYlRy
YW5zZm9ybWF0aW9uTWF0cml4JiByZXBsaWNhRHJhd1RyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVwbGljYURyYXdUcmFuc2Zvcm07IH0KICAgICB2b2lkIHNldFJlcGxpY2FEcmF3VHJhbnNm
b3JtKGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHJlcGxpY2FEcmF3VHJh
bnNmb3JtKSB7IG1fcmVwbGljYURyYXdUcmFuc2Zvcm0gPSByZXBsaWNhRHJhd1RyYW5zZm9ybTsg
fQogCi0gICAgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcmVwbGljYU9y
aWdpblRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVwbGljYU9yaWdpblRyYW5zZm9ybTsg
fQotICAgIHZvaWQgc2V0UmVwbGljYU9yaWdpblRyYW5zZm9ybShjb25zdCBXZWJLaXQ6OldlYlRy
YW5zZm9ybWF0aW9uTWF0cml4JiByZXBsaWNhT3JpZ2luVHJhbnNmb3JtKSB7IG1fcmVwbGljYU9y
aWdpblRyYW5zZm9ybSA9IHJlcGxpY2FPcmlnaW5UcmFuc2Zvcm07IH0KLQogICAgIGNvbnN0IFdl
YktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHJlcGxpY2FTY3JlZW5TcGFjZVRyYW5zZm9y
bSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVwbGljYVNjcmVlblNwYWNlVHJhbnNmb3JtOyB9CiAgICAg
dm9pZCBzZXRSZXBsaWNhU2NyZWVuU3BhY2VUcmFuc2Zvcm0oY29uc3QgV2ViS2l0OjpXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgcmVwbGljYVNjcmVlblNwYWNlVHJhbnNmb3JtKSB7IG1fcmVwbGlj
YVNjcmVlblNwYWNlVHJhbnNmb3JtID0gcmVwbGljYVNjcmVlblNwYWNlVHJhbnNmb3JtOyB9CiAK
QEAgLTEwNCwxMCArOTgsOCBAQCBwcml2YXRlOgogICAgIGZsb2F0IG1fZHJhd09wYWNpdHk7CiAg
ICAgYm9vbCBtX2RyYXdPcGFjaXR5SXNBbmltYXRpbmc7CiAgICAgV2ViS2l0OjpXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBtX2RyYXdUcmFuc2Zvcm07Ci0gICAgV2ViS2l0OjpXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBtX29yaWdpblRyYW5zZm9ybTsKICAgICBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0
aW9uTWF0cml4IG1fc2NyZWVuU3BhY2VUcmFuc2Zvcm07CiAgICAgV2ViS2l0OjpXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBtX3JlcGxpY2FEcmF3VHJhbnNmb3JtOwotICAgIFdlYktpdDo6V2ViVHJh
bnNmb3JtYXRpb25NYXRyaXggbV9yZXBsaWNhT3JpZ2luVHJhbnNmb3JtOwogICAgIFdlYktpdDo6
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbV9yZXBsaWNhU2NyZWVuU3BhY2VUcmFuc2Zvcm07CiAg
ICAgYm9vbCBtX3RhcmdldFN1cmZhY2VUcmFuc2Zvcm1zQXJlQW5pbWF0aW5nOwogICAgIGJvb2wg
bV9zY3JlZW5TcGFjZVRyYW5zZm9ybXNBcmVBbmltYXRpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RhbWFnZVRyYWNrZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEYW1hZ2VU
cmFja2VyLmNwcAppbmRleCA5N2M5OWRhMzczMTNiZTc2M2E0NWM5NzkzZjM0MGY1ZmEyYjliMTVi
Li41ZDU4NTVjMDdkOTQ2ODdiMmFiOGI1MzM2YjU2ZWFjNmZiZjc3YTQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RhbWFnZVRyYWNr
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDRGFtYWdlVHJhY2tlci5jcHAKQEAgLTMzMiwxMyArMzMyLDEzIEBAIHZvaWQgQ0NEYW1hZ2VU
cmFja2VyOjpleHRlbmREYW1hZ2VGb3JSZW5kZXJTdXJmYWNlKENDTGF5ZXJJbXBsKiBsYXllciwg
RmxvYXRSZWN0CiAKICAgICAvLyBJZiB0aGVyZSB3YXMgZGFtYWdlLCB0cmFuc2Zvcm0gaXQgdG8g
dGFyZ2V0IHNwYWNlLCBhbmQgcG9zc2libHkgY29udHJpYnV0ZSBpdHMgcmVmbGVjdGlvbiBpZiBu
ZWVkZWQuCiAgICAgaWYgKCFkYW1hZ2VSZWN0SW5Mb2NhbFNwYWNlLmlzRW1wdHkoKSkgewotICAg
ICAgICBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgb3JpZ2luVHJhbnNmb3JtID0gcmVu
ZGVyU3VyZmFjZS0+b3JpZ2luVHJhbnNmb3JtKCk7Ci0gICAgICAgIEZsb2F0UmVjdCBkYW1hZ2VS
ZWN0SW5UYXJnZXRTcGFjZSA9IENDTWF0aFV0aWw6Om1hcENsaXBwZWRSZWN0KG9yaWdpblRyYW5z
Zm9ybSwgZGFtYWdlUmVjdEluTG9jYWxTcGFjZSk7CisgICAgICAgIGNvbnN0IFdlYlRyYW5zZm9y
bWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtID0gcmVuZGVyU3VyZmFjZS0+ZHJhd1RyYW5zZm9y
bSgpOworICAgICAgICBGbG9hdFJlY3QgZGFtYWdlUmVjdEluVGFyZ2V0U3BhY2UgPSBDQ01hdGhV
dGlsOjptYXBDbGlwcGVkUmVjdChkcmF3VHJhbnNmb3JtLCBkYW1hZ2VSZWN0SW5Mb2NhbFNwYWNl
KTsKICAgICAgICAgdGFyZ2V0RGFtYWdlUmVjdC51bml0ZUlmTm9uWmVybyhkYW1hZ2VSZWN0SW5U
YXJnZXRTcGFjZSk7CiAKICAgICAgICAgaWYgKGxheWVyLT5yZXBsaWNhTGF5ZXIoKSkgewotICAg
ICAgICAgICAgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHJlcGxpY2FPcmlnaW5UcmFu
c2Zvcm0gPSByZW5kZXJTdXJmYWNlLT5yZXBsaWNhT3JpZ2luVHJhbnNmb3JtKCk7Ci0gICAgICAg
ICAgICB0YXJnZXREYW1hZ2VSZWN0LnVuaXRlSWZOb25aZXJvKENDTWF0aFV0aWw6Om1hcENsaXBw
ZWRSZWN0KHJlcGxpY2FPcmlnaW5UcmFuc2Zvcm0sIGRhbWFnZVJlY3RJbkxvY2FsU3BhY2UpKTsK
KyAgICAgICAgICAgIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiByZXBsaWNhRHJhd1Ry
YW5zZm9ybSA9IHJlbmRlclN1cmZhY2UtPnJlcGxpY2FEcmF3VHJhbnNmb3JtKCk7CisgICAgICAg
ICAgICB0YXJnZXREYW1hZ2VSZWN0LnVuaXRlSWZOb25aZXJvKENDTWF0aFV0aWw6Om1hcENsaXBw
ZWRSZWN0KHJlcGxpY2FEcmF3VHJhbnNmb3JtLCBkYW1hZ2VSZWN0SW5Mb2NhbFNwYWNlKSk7CiAg
ICAgICAgIH0KICAgICB9CiAKQEAgLTM0OSw5ICszNDksOCBAQCB2b2lkIENDRGFtYWdlVHJhY2tl
cjo6ZXh0ZW5kRGFtYWdlRm9yUmVuZGVyU3VyZmFjZShDQ0xheWVySW1wbCogbGF5ZXIsIEZsb2F0
UmVjdAogICAgICAgICBib29sIHJlcGxpY2FJc05ldyA9IGZhbHNlOwogICAgICAgICByZW1vdmVS
ZWN0RnJvbUN1cnJlbnRGcmFtZShyZXBsaWNhTWFza0xheWVyLT5pZCgpLCByZXBsaWNhSXNOZXcp
OwogCi0gICAgICAgIC8vIENvbXB1dGUgdGhlIHJlcGxpY2EncyAib3JpZ2luVHJhbnNmb3JtIiB0
aGF0IG1hcHMgZnJvbSB0aGUgcmVwbGljYSdzIG9yaWdpbiBzcGFjZSB0byB0aGUgdGFyZ2V0IHN1
cmZhY2Ugb3JpZ2luIHNwYWNlLgotICAgICAgICBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgcmVwbGljYU9yaWdpblRyYW5zZm9ybSA9IHJlbmRlclN1cmZhY2UtPnJlcGxpY2FPcmlnaW5U
cmFuc2Zvcm0oKTsKLSAgICAgICAgRmxvYXRSZWN0IHJlcGxpY2FNYXNrTGF5ZXJSZWN0ID0gQ0NN
YXRoVXRpbDo6bWFwQ2xpcHBlZFJlY3QocmVwbGljYU9yaWdpblRyYW5zZm9ybSwgRmxvYXRSZWN0
KEZsb2F0UG9pbnQ6Onplcm8oKSwgRmxvYXRTaXplKHJlcGxpY2FNYXNrTGF5ZXItPmJvdW5kcygp
LndpZHRoKCksIHJlcGxpY2FNYXNrTGF5ZXItPmJvdW5kcygpLmhlaWdodCgpKSkpOworICAgICAg
ICBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcmVwbGljYURyYXdUcmFuc2Zvcm0gPSBy
ZW5kZXJTdXJmYWNlLT5yZXBsaWNhRHJhd1RyYW5zZm9ybSgpOworICAgICAgICBGbG9hdFJlY3Qg
cmVwbGljYU1hc2tMYXllclJlY3QgPSBDQ01hdGhVdGlsOjptYXBDbGlwcGVkUmVjdChyZXBsaWNh
RHJhd1RyYW5zZm9ybSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgRmxvYXRTaXplKHJl
cGxpY2FNYXNrTGF5ZXItPmJvdW5kcygpLndpZHRoKCksIHJlcGxpY2FNYXNrTGF5ZXItPmJvdW5k
cygpLmhlaWdodCgpKSkpOwogICAgICAgICBzYXZlUmVjdEZvck5leHRGcmFtZShyZXBsaWNhTWFz
a0xheWVyLT5pZCgpLCByZXBsaWNhTWFza0xheWVyUmVjdCk7CiAKICAgICAgICAgLy8gSW4gdGhl
IGN1cnJlbnQgaW1wbGVtZW50YXRpb24sIGEgY2hhbmdlIGluIHRoZSByZXBsaWNhIG1hc2sgZGFt
YWdlcyB0aGUgZW50aXJlIHJlcGxpY2EgcmVnaW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdENvbW1vbi5jcHAKaW5kZXggODM3YWQ3NmU2ZjQ0ZjY4Mjc3NjEyZTI5MjA1OTJhZTlh
N2IwODM5Mi4uNTZhZGZjY2JiODhiYjc3MmNjMmQ5OWMyMzA4YWNiMjEwZmM1OGYzMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0Q29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uY3BwCkBAIC0zODQsNyArMzg0LDcg
QEAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggY29tcHV0ZVNjcm9sbENvbXBlbnNhdGlvbk1hdHJp
eEZvckNoaWxkcmVuKENDTGF5ZXJJbXBsKgogICAgIC8vICBTdGVwIDI6IGFwcGx5IHRoZSBzY3Jv
bGwgY29tcGVuc2F0aW9uCiAgICAgLy8gIFN0ZXAgMzogdHJhbnNmb3JtIGJhY2sgdG8gdGhlIG5l
dyBzdXJmYWNlLgogICAgIGlmIChsYXllci0+cmVuZGVyU3VyZmFjZSgpICYmICFuZXh0U2Nyb2xs
Q29tcGVuc2F0aW9uTWF0cml4LmlzSWRlbnRpdHkoKSkKLSAgICAgICAgbmV4dFNjcm9sbENvbXBl
bnNhdGlvbk1hdHJpeCA9IGxheWVyLT5yZW5kZXJTdXJmYWNlKCktPm9yaWdpblRyYW5zZm9ybSgp
LmludmVyc2UoKSAqIG5leHRTY3JvbGxDb21wZW5zYXRpb25NYXRyaXggKiBsYXllci0+cmVuZGVy
U3VyZmFjZSgpLT5vcmlnaW5UcmFuc2Zvcm0oKTsKKyAgICAgICAgbmV4dFNjcm9sbENvbXBlbnNh
dGlvbk1hdHJpeCA9IGxheWVyLT5yZW5kZXJTdXJmYWNlKCktPmRyYXdUcmFuc2Zvcm0oKS5pbnZl
cnNlKCkgKiBuZXh0U2Nyb2xsQ29tcGVuc2F0aW9uTWF0cml4ICogbGF5ZXItPnJlbmRlclN1cmZh
Y2UoKS0+ZHJhd1RyYW5zZm9ybSgpOwogCiAgICAgcmV0dXJuIG5leHRTY3JvbGxDb21wZW5zYXRp
b25NYXRyaXg7CiB9CkBAIC00ODYsMTYgKzQ4NiwxNiBAQCBzdGF0aWMgdm9pZCBjYWxjdWxhdGVE
cmF3VHJhbnNmb3Jtc0ludGVybmFsKExheWVyVHlwZSogbGF5ZXIsIExheWVyVHlwZSogcm9vdExh
eQogICAgIC8vCiAgICAgLy8gV2Ugd2lsbCBkZW5vdGUgYSBzY2FsZSBieSBjb250ZW50cyBzY2Fs
ZSBTW2NvbnRlbnRzU2NhbGVdCiAgICAgLy8KLSAgICAvLyBUaGUgcmVuZGVyIHN1cmZhY2Ugb3Jp
Z2luL2RyYXcgdHJhbnNmb3JtIHRvIGl0cyB0YXJnZXQgc3VyZmFjZSBvcmlnaW4gaXM6Ci0gICAg
Ly8gICAgICAgIE1bc3VyZmFjZU9yaWdpbl0gPSBNW293bmluZ0xheWVyLT5EcmF3XQorICAgIC8v
IFRoZSByZW5kZXIgc3VyZmFjZSBkcmF3IHRyYW5zZm9ybSB0byBpdHMgdGFyZ2V0IHN1cmZhY2Ug
b3JpZ2luIGlzOgorICAgIC8vICAgICAgICBNW3N1cmZhY2VEcmF3XSA9IE1bb3duaW5nTGF5ZXIt
PkRyYXddCiAgICAgLy8KICAgICAvLyBUaGUgcmVuZGVyIHN1cmZhY2Ugb3JpZ2luIHRyYW5zZm9y
bSB0byBpdHMgdGhlIHJvb3QgKHNjcmVlbiBzcGFjZSkgb3JpZ2luIGlzOgogICAgIC8vICAgICAg
ICBNW3N1cmZhY2Uycm9vdF0gPSAgTVtvd25pbmdMYXllci0+c2NyZWVuc3BhY2VdICogU1tjb250
ZW50c1NjYWxlXS5pbnZlcnNlKCkKICAgICAvLwotICAgIC8vIFRoZSByZXBsaWNhIG9yaWdpbi9k
cmF3IHRyYW5zZm9ybSB0byBpdHMgdGFyZ2V0IHN1cmZhY2Ugb3JpZ2luIGlzOgotICAgIC8vICAg
ICAgICBNW3JlcGxpY2FPcmlnaW5dID0gU1tjb250ZW50c1NjYWxlXSAqIE1bc3VyZmFjZU9yaWdp
bl0gKiBUcltyZXBsaWNhLT5wb3NpdGlvbigpICsgcmVwbGljYS0+YW5jaG9yKCldICogVHJbcmVw
bGljYV0gKiBUcltvcmlnaW4yYW5jaG9yXS5pbnZlcnNlKCkgKiBTW2NvbnRlbnRzU2NhbGVdLmlu
dmVyc2UoKQorICAgIC8vIFRoZSByZXBsaWNhIGRyYXcgdHJhbnNmb3JtIHRvIGl0cyB0YXJnZXQg
c3VyZmFjZSBvcmlnaW4gaXM6CisgICAgLy8gICAgICAgIE1bcmVwbGljYURyYXddID0gU1tjb250
ZW50c1NjYWxlXSAqIE1bc3VyZmFjZURyYXddICogVHJbcmVwbGljYS0+cG9zaXRpb24oKSArIHJl
cGxpY2EtPmFuY2hvcigpXSAqIFRyW3JlcGxpY2FdICogVHJbb3JpZ2luMmFuY2hvcl0uaW52ZXJz
ZSgpICogU1tjb250ZW50c1NjYWxlXS5pbnZlcnNlKCkKICAgICAvLwotICAgIC8vIFRoZSByZXBs
aWNhIG9yaWdpbiB0cmFuc2Zvcm0gdG8gdGhlIHJvb3QgKHNjcmVlbiBzcGFjZSkgb3JpZ2luIGlz
OgorICAgIC8vIFRoZSByZXBsaWNhIGRyYXcgdHJhbnNmb3JtIHRvIHRoZSByb290IChzY3JlZW4g
c3BhY2UpIG9yaWdpbiBpczoKICAgICAvLyAgICAgICAgTVtyZXBsaWNhMnJvb3RdID0gTVtzdXJm
YWNlMnJvb3RdICogVHJbcmVwbGljYS0+cG9zaXRpb24oKV0gKiBUcltyZXBsaWNhXSAqIFRyW29y
aWdpbjJhbmNob3JdLmludmVyc2UoKQogICAgIC8vCiAKQEAgLTU4Niw3ICs1ODYsNiBAQCBzdGF0
aWMgdm9pZCBjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0ludGVybmFsKExheWVyVHlwZSogbGF5ZXIs
IExheWVyVHlwZSogcm9vdExheQogICAgICAgICByZW5kZXJTdXJmYWNlLT5jbGVhckxheWVyTGlz
dCgpOwogCiAgICAgICAgIC8vIFRoZSBvcmlnaW4gb2YgdGhlIG5ldyBzdXJmYWNlIGlzIHRoZSB1
cHBlciBsZWZ0IGNvcm5lciBvZiB0aGUgbGF5ZXIuCi0gICAgICAgIHJlbmRlclN1cmZhY2UtPnNl
dE9yaWdpblRyYW5zZm9ybShkcmF3VHJhbnNmb3JtKTsKICAgICAgICAgcmVuZGVyU3VyZmFjZS0+
c2V0RHJhd1RyYW5zZm9ybShkcmF3VHJhbnNmb3JtKTsKICAgICAgICAgV2ViVHJhbnNmb3JtYXRp
b25NYXRyaXggbGF5ZXJEcmF3VHJhbnNmb3JtOwogICAgICAgICBsYXllckRyYXdUcmFuc2Zvcm0u
c2NhbGUoY29udGVudHNTY2FsZSk7CkBAIC02MTYsNyArNjE1LDcgQEAgc3RhdGljIHZvaWQgY2Fs
Y3VsYXRlRHJhd1RyYW5zZm9ybXNJbnRlcm5hbChMYXllclR5cGUqIGxheWVyLCBMYXllclR5cGUq
IHJvb3RMYXkKIAogICAgICAgICAvLyBVcGRhdGUgdGhlIGFnZ3JlZ2F0ZSBoaWVyYXJjaHkgbWF0
cml4IHRvIGluY2x1ZGUgdGhlIHRyYW5zZm9ybSBvZiB0aGUKICAgICAgICAgLy8gbmV3bHkgY3Jl
YXRlZCBSZW5kZXJTdXJmYWNlLgotICAgICAgICBuZXh0SGllcmFyY2h5TWF0cml4Lm11bHRpcGx5
KHJlbmRlclN1cmZhY2UtPm9yaWdpblRyYW5zZm9ybSgpKTsKKyAgICAgICAgbmV4dEhpZXJhcmNo
eU1hdHJpeC5tdWx0aXBseShyZW5kZXJTdXJmYWNlLT5kcmF3VHJhbnNmb3JtKCkpOwogCiAgICAg
ICAgIC8vIFRoZSBuZXcgcmVuZGVyU3VyZmFjZSBoZXJlIHdpbGwgY29ycmVjdGx5IGNsaXAgdGhl
IGVudGlyZSBzdWJ0cmVlLiBTbywgd2UgZG8KICAgICAgICAgLy8gbm90IG5lZWQgdG8gY29udGlu
dWUgcHJvcGFnYXRpbmcgdGhlIGNsaXBwaW5nIHN0YXRlIGZ1cnRoZXIgZG93biB0aGUgdHJlZS4g
VGhpcwpAQCAtNzUyLDcgKzc1MSw3IEBAIHN0YXRpYyB2b2lkIGNhbGN1bGF0ZURyYXdUcmFuc2Zv
cm1zSW50ZXJuYWwoTGF5ZXJUeXBlKiBsYXllciwgTGF5ZXJUeXBlKiByb290TGF5CiAgICAgICAg
IGlmICghbGF5ZXItPnJlcGxpY2FMYXllcigpICYmIHRyYW5zZm9ybVRvUGFyZW50SXNLbm93bihs
YXllcikpIHsKICAgICAgICAgICAgIC8vIE5vdGUsIGl0IGlzIGNvcnJlY3QgdG8gdXNlIGFuY2Vz
dG9yQ2xpcHNTdWJ0cmVlIGhlcmUsIGJlY2F1c2Ugd2UgYXJlIGxvb2tpbmcgYXQgdGhpcyBsYXll
cidzIHJlbmRlclN1cmZhY2UsIG5vdCB0aGUgbGF5ZXIgaXRzZWxmLgogICAgICAgICAgICAgaWYg
KGFuY2VzdG9yQ2xpcHNTdWJ0cmVlICYmICFjbGlwcGVkQ29udGVudFJlY3QuaXNFbXB0eSgpKSB7
Ci0gICAgICAgICAgICAgICAgSW50UmVjdCBzdXJmYWNlQ2xpcFJlY3QgPSBDQ0xheWVyVHJlZUhv
c3RDb21tb246OmNhbGN1bGF0ZVZpc2libGVSZWN0KHJlbmRlclN1cmZhY2UtPmNsaXBSZWN0KCks
IGNsaXBwZWRDb250ZW50UmVjdCwgcmVuZGVyU3VyZmFjZS0+b3JpZ2luVHJhbnNmb3JtKCkpOwor
ICAgICAgICAgICAgICAgIEludFJlY3Qgc3VyZmFjZUNsaXBSZWN0ID0gQ0NMYXllclRyZWVIb3N0
Q29tbW9uOjpjYWxjdWxhdGVWaXNpYmxlUmVjdChyZW5kZXJTdXJmYWNlLT5jbGlwUmVjdCgpLCBj
bGlwcGVkQ29udGVudFJlY3QsIHJlbmRlclN1cmZhY2UtPmRyYXdUcmFuc2Zvcm0oKSk7CiAgICAg
ICAgICAgICAgICAgY2xpcHBlZENvbnRlbnRSZWN0LmludGVyc2VjdChzdXJmYWNlQ2xpcFJlY3Qp
OwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC03NzgsOCArNzc3LDcgQEAgc3RhdGljIHZv
aWQgY2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNJbnRlcm5hbChMYXllclR5cGUqIGxheWVyLCBMYXll
clR5cGUqIHJvb3RMYXkKICAgICAgICAgICAgIHN1cmZhY2VPcmlnaW5Ub1JlcGxpY2FPcmlnaW5U
cmFuc2Zvcm0uc2NhbGUoMSAvIGNvbnRlbnRzU2NhbGUpOwogCiAgICAgICAgICAgICAvLyBDb21w
dXRlIHRoZSByZXBsaWNhJ3MgIm9yaWdpblRyYW5zZm9ybSIgdGhhdCBtYXBzIGZyb20gdGhlIHJl
cGxpY2EncyBvcmlnaW4gc3BhY2UgdG8gdGhlIHRhcmdldCBzdXJmYWNlIG9yaWdpbiBzcGFjZS4K
LSAgICAgICAgICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHJlcGxpY2FPcmlnaW5UcmFuc2Zv
cm0gPSBsYXllci0+cmVuZGVyU3VyZmFjZSgpLT5vcmlnaW5UcmFuc2Zvcm0oKSAqIHN1cmZhY2VP
cmlnaW5Ub1JlcGxpY2FPcmlnaW5UcmFuc2Zvcm07Ci0gICAgICAgICAgICByZW5kZXJTdXJmYWNl
LT5zZXRSZXBsaWNhT3JpZ2luVHJhbnNmb3JtKHJlcGxpY2FPcmlnaW5UcmFuc2Zvcm0pOworICAg
ICAgICAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggcmVwbGljYU9yaWdpblRyYW5zZm9ybSA9
IGxheWVyLT5yZW5kZXJTdXJmYWNlKCktPmRyYXdUcmFuc2Zvcm0oKSAqIHN1cmZhY2VPcmlnaW5U
b1JlcGxpY2FPcmlnaW5UcmFuc2Zvcm07CiAgICAgICAgICAgICByZW5kZXJTdXJmYWNlLT5zZXRS
ZXBsaWNhRHJhd1RyYW5zZm9ybShyZXBsaWNhT3JpZ2luVHJhbnNmb3JtKTsKIAogICAgICAgICAg
ICAgLy8gQ29tcHV0ZSB0aGUgcmVwbGljYSdzICJzY3JlZW5TcGFjZVRyYW5zZm9ybSIgdGhhdCBt
YXBzIGZyb20gdGhlIHJlcGxpY2EncyBvcmlnaW4gc3BhY2UgdG8gdGhlIHNjcmVlbidzIG9yaWdp
biBzcGFjZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuY3BwCmluZGV4IDg4MGQ1
NjNhNGEyMmQyN2NkMDRlZWE0NWRlM2Y0NDBkZTg3YjBmMjguLjFiNWQzOTcyNmUyNGViNDk0ZDli
MWJkOTkwNDA0ZTI0NGIxZjE1YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2Vy
LmNwcApAQCAtMjM1LDkgKzIzNSw5IEBAIHZvaWQgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXll
clR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6bGVhdmVUb1JlbmRlclRhcmdldChjCiAKICAgICBj
b25zdCBMYXllclR5cGUqIG9sZFRhcmdldCA9IG1fc3RhY2tbbGFzdEluZGV4XS50YXJnZXQ7CiAg
ICAgY29uc3QgUmVuZGVyU3VyZmFjZVR5cGUqIG9sZFN1cmZhY2UgPSBvbGRUYXJnZXQtPnJlbmRl
clN1cmZhY2UoKTsKLSAgICBSZWdpb24gb2xkVGFyZ2V0T2NjbHVzaW9uSW5OZXdUYXJnZXQgPSB0
cmFuc2Zvcm1TdXJmYWNlT3BhcXVlUmVnaW9uPFJlbmRlclN1cmZhY2VUeXBlPihvbGRTdXJmYWNl
LCBtX3N0YWNrW2xhc3RJbmRleF0ub2NjbHVzaW9uSW5UYXJnZXQsIG9sZFN1cmZhY2UtPm9yaWdp
blRyYW5zZm9ybSgpKTsKKyAgICBSZWdpb24gb2xkVGFyZ2V0T2NjbHVzaW9uSW5OZXdUYXJnZXQg
PSB0cmFuc2Zvcm1TdXJmYWNlT3BhcXVlUmVnaW9uPFJlbmRlclN1cmZhY2VUeXBlPihvbGRTdXJm
YWNlLCBtX3N0YWNrW2xhc3RJbmRleF0ub2NjbHVzaW9uSW5UYXJnZXQsIG9sZFN1cmZhY2UtPmRy
YXdUcmFuc2Zvcm0oKSk7CiAgICAgaWYgKG9sZFRhcmdldC0+aGFzUmVwbGljYSgpICYmICFvbGRU
YXJnZXQtPnJlcGxpY2FIYXNNYXNrKCkpCi0gICAgICAgIG9sZFRhcmdldE9jY2x1c2lvbkluTmV3
VGFyZ2V0LnVuaXRlKHRyYW5zZm9ybVN1cmZhY2VPcGFxdWVSZWdpb248UmVuZGVyU3VyZmFjZVR5
cGU+KG9sZFN1cmZhY2UsIG1fc3RhY2tbbGFzdEluZGV4XS5vY2NsdXNpb25JblRhcmdldCwgb2xk
U3VyZmFjZS0+cmVwbGljYU9yaWdpblRyYW5zZm9ybSgpKSk7CisgICAgICAgIG9sZFRhcmdldE9j
Y2x1c2lvbkluTmV3VGFyZ2V0LnVuaXRlKHRyYW5zZm9ybVN1cmZhY2VPcGFxdWVSZWdpb248UmVu
ZGVyU3VyZmFjZVR5cGU+KG9sZFN1cmZhY2UsIG1fc3RhY2tbbGFzdEluZGV4XS5vY2NsdXNpb25J
blRhcmdldCwgb2xkU3VyZmFjZS0+cmVwbGljYURyYXdUcmFuc2Zvcm0oKSkpOwogCiAgICAgSW50
UmVjdCB1bm9jY2x1ZGVkU3VyZmFjZVJlY3Q7CiAgICAgSW50UmVjdCB1bm9jY2x1ZGVkUmVwbGlj
YVJlY3Q7CkBAIC0yNTksOSArMjU5LDkgQEAgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExh
eWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+OjpsZWF2ZVRvUmVuZGVyVGFyZ2V0KGMKICAgICB9
CiAKICAgICBpZiAob2xkVGFyZ2V0LT5iYWNrZ3JvdW5kRmlsdGVycygpLmhhc0ZpbHRlclRoYXRN
b3Zlc1BpeGVscygpKSB7Ci0gICAgICAgIHJlZHVjZU9jY2x1c2lvbkJlbG93U3VyZmFjZShvbGRU
YXJnZXQsIHVub2NjbHVkZWRTdXJmYWNlUmVjdCwgb2xkU3VyZmFjZS0+b3JpZ2luVHJhbnNmb3Jt
KCksIG5ld1RhcmdldCwgbV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5UYXJnZXQsIG1fc3RhY2su
bGFzdCgpLm9jY2x1c2lvbkluU2NyZWVuKTsKKyAgICAgICAgcmVkdWNlT2NjbHVzaW9uQmVsb3dT
dXJmYWNlKG9sZFRhcmdldCwgdW5vY2NsdWRlZFN1cmZhY2VSZWN0LCBvbGRTdXJmYWNlLT5kcmF3
VHJhbnNmb3JtKCksIG5ld1RhcmdldCwgbV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5UYXJnZXQs
IG1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluU2NyZWVuKTsKICAgICAgICAgaWYgKG9sZFRhcmdl
dC0+aGFzUmVwbGljYSgpKQotICAgICAgICAgICAgcmVkdWNlT2NjbHVzaW9uQmVsb3dTdXJmYWNl
KG9sZFRhcmdldCwgdW5vY2NsdWRlZFJlcGxpY2FSZWN0LCBvbGRTdXJmYWNlLT5yZXBsaWNhT3Jp
Z2luVHJhbnNmb3JtKCksIG5ld1RhcmdldCwgbV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5UYXJn
ZXQsIG1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluU2NyZWVuKTsKKyAgICAgICAgICAgIHJlZHVj
ZU9jY2x1c2lvbkJlbG93U3VyZmFjZShvbGRUYXJnZXQsIHVub2NjbHVkZWRSZXBsaWNhUmVjdCwg
b2xkU3VyZmFjZS0+cmVwbGljYURyYXdUcmFuc2Zvcm0oKSwgbmV3VGFyZ2V0LCBtX3N0YWNrLmxh
c3QoKS5vY2NsdXNpb25JblRhcmdldCwgbV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5TY3JlZW4p
OwogICAgIH0KIH0KIApAQCAtNDQwLDcgKzQ0MCw3IEBAIEludFJlY3QgQ0NPY2NsdXNpb25UcmFj
a2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6dW5vY2NsdWRlZENvbnRyaWJ1
CiAgICAgYm9vbCBoYXNPY2NsdXNpb24gPSBtX3N0YWNrLnNpemUoKSA+IDE7CiAKICAgICBjb25z
dCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtVG9TY3JlZW4gPSBmb3JSZXBsaWNh
ID8gc3VyZmFjZS0+cmVwbGljYVNjcmVlblNwYWNlVHJhbnNmb3JtKCkgOiBzdXJmYWNlLT5zY3Jl
ZW5TcGFjZVRyYW5zZm9ybSgpOwotICAgIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0
cmFuc2Zvcm1Ub1RhcmdldCA9IGZvclJlcGxpY2EgPyBzdXJmYWNlLT5yZXBsaWNhT3JpZ2luVHJh
bnNmb3JtKCkgOiBzdXJmYWNlLT5vcmlnaW5UcmFuc2Zvcm0oKTsKKyAgICBjb25zdCBXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtVG9UYXJnZXQgPSBmb3JSZXBsaWNhID8gc3VyZmFj
ZS0+cmVwbGljYURyYXdUcmFuc2Zvcm0oKSA6IHN1cmZhY2UtPmRyYXdUcmFuc2Zvcm0oKTsKIAog
ICAgIEludFJlY3QgdW5vY2NsdWRlZEluU2NyZWVuID0gY29udGVudFJlY3Q7CiAgICAgaWYgKHN1
cmZhY2VUcmFuc2Zvcm1zVG9TY3JlZW5Lbm93bihzdXJmYWNlKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJh
d1F1YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NSZW5kZXJQYXNzRHJhd1F1YWQuY3BwCmluZGV4IDhmNTFiOTQwNzA0OWY3ZDA5NzhkNzAwNWYw
NjIzYTdkMTVkZGY4N2QuLjYwZTM1Mzk2YTQyM2QxNzkzZWVmYTcwYjA5ODdlZGEzMzdjM2FjM2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUmVuZGVyUGFzc0RyYXdRdWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5jcHAKQEAgLTMxLDE2ICsz
MSwxNSBAQCB1c2luZyBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVBhc3NPd25QdHI8Q0NSZW5kZXJQYXNzRHJhd1F1YWQ+IENDUmVuZGVyUGFzc0Ry
YXdRdWFkOjpjcmVhdGUoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRl
KiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBpbnQgcmVuZGVyUGFz
c0lkLCBib29sIGlzUmVwbGljYSwgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgZHJhd1RyYW5zZm9ybSwgY29uc3QgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1h
c2tSZXNvdXJjZUlkLCBjb25zdCBJbnRSZWN0JiBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFt
ZSkKK1Bhc3NPd25QdHI8Q0NSZW5kZXJQYXNzRHJhd1F1YWQ+IENDUmVuZGVyUGFzc0RyYXdRdWFk
OjpjcmVhdGUoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFy
ZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBpbnQgcmVuZGVyUGFzc0lkLCBi
b29sIGlzUmVwbGljYSwgY29uc3QgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1hc2tS
ZXNvdXJjZUlkLCBjb25zdCBJbnRSZWN0JiBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSkK
IHsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDUmVuZGVyUGFzc0RyYXdRdWFkKHNoYXJlZFF1
YWRTdGF0ZSwgcXVhZFJlY3QsIHJlbmRlclBhc3NJZCwgaXNSZXBsaWNhLCBkcmF3VHJhbnNmb3Jt
LCBtYXNrUmVzb3VyY2VJZCwgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUpKTsKKyAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IENDUmVuZGVyUGFzc0RyYXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwg
cXVhZFJlY3QsIHJlbmRlclBhc3NJZCwgaXNSZXBsaWNhLCBtYXNrUmVzb3VyY2VJZCwgY29udGVu
dHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUpKTsKIH0KIAotQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6OkND
UmVuZGVyUGFzc0RyYXdRdWFkKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRT
dGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgaW50IHJlbmRl
clBhc3NJZCwgYm9vbCBpc1JlcGxpY2EsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25N
YXRyaXgmIGRyYXdUcmFuc2Zvcm0sIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtYXNr
UmVzb3VyY2VJZCwgY29uc3QgSW50UmVjdCYgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUp
CitDQ1JlbmRlclBhc3NEcmF3UXVhZDo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQoY29uc3QgV2ViS2l0
OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IElu
dFJlY3QmIHF1YWRSZWN0LCBpbnQgcmVuZGVyUGFzc0lkLCBib29sIGlzUmVwbGljYSwgQ0NSZXNv
dXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1hc2tSZXNvdXJjZUlkLCBjb25zdCBJbnRSZWN0JiBj
b250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSkKICAgICA6IFdlYkNvbXBvc2l0b3JRdWFkKHNo
YXJlZFF1YWRTdGF0ZSwgV2ViQ29tcG9zaXRvclF1YWQ6OlJlbmRlclBhc3MsIHF1YWRSZWN0KQog
ICAgICwgbV9yZW5kZXJQYXNzSWQocmVuZGVyUGFzc0lkKQogICAgICwgbV9pc1JlcGxpY2EoaXNS
ZXBsaWNhKQotICAgICwgbV9kcmF3VHJhbnNmb3JtKGRyYXdUcmFuc2Zvcm0pCiAgICAgLCBtX21h
c2tSZXNvdXJjZUlkKG1hc2tSZXNvdXJjZUlkKQogICAgICwgbV9jb250ZW50c0NoYW5nZWRTaW5j
ZUxhc3RGcmFtZShjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSkKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFz
c0RyYXdRdWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5oCmluZGV4IGFmZjhkYjZkZWI0OTJiZTZmZDI0ZjMwYzgw
NWJjOTZkNWYwM2E0YzYuLjllMDMzYjQyYzRlMTJiNzQwM2JjYjM0NmYwZGI3NjBhZTU5YTJiYjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUmVuZGVyUGFzc0RyYXdRdWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuaApAQCAtMjgsNyArMjgsNiBA
QAogCiAjaW5jbHVkZSAiY2MvQ0NSZXNvdXJjZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSA8cHVibGlj
L1dlYkNvbXBvc2l0b3JRdWFkLmg+Ci0jaW5jbHVkZSA8cHVibGljL1dlYlRyYW5zZm9ybWF0aW9u
TWF0cml4Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtMzgsMjMgKzM3LDE5IEBAIGNsYXNzIENDUmVuZGVyUGFzczsKIGNsYXNzIENDUmVu
ZGVyUGFzc0RyYXdRdWFkIDogcHVibGljIFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQgewogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKENDUmVuZGVyUGFzc0RyYXdRdWFkKTsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc093blB0cjxDQ1JlbmRlclBhc3NEcmF3UXVhZD4gY3JlYXRlKGNvbnN0IFdl
YktpdDo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBpbnQg
cmVuZGVyUGFzc0lkLCBib29sIGlzUmVwbGljYSwgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYsIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtYXNrUmVzb3VyY2VJ
ZCwgY29uc3QgSW50UmVjdCYgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUpOworICAgIHN0
YXRpYyBQYXNzT3duUHRyPENDUmVuZGVyUGFzc0RyYXdRdWFkPiBjcmVhdGUoY29uc3QgV2ViS2l0
OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIGludCByZW5k
ZXJQYXNzSWQsIGJvb2wgaXNSZXBsaWNhLCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQg
bWFza1Jlc291cmNlSWQsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZy
YW1lKTsKIAogICAgIGludCByZW5kZXJQYXNzSWQoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlclBh
c3NJZDsgfQogICAgIGJvb2wgaXNSZXBsaWNhKCkgY29uc3QgeyByZXR1cm4gbV9pc1JlcGxpY2E7
IH0KICAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbWFza1Jlc291cmNlSWQoKSBj
b25zdCB7IHJldHVybiBtX21hc2tSZXNvdXJjZUlkOyB9CiAgICAgY29uc3QgSW50UmVjdCYgY29u
dGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzQ2hh
bmdlZFNpbmNlTGFzdEZyYW1lOyB9CiAKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgcmVt
b3ZlZCBhbmQgd2Ugc2hvdWxkIGRyYXcgdGhlIFJlbmRlclBhc3Mgd2l0aCB0aGUgcXVhZFRyYW5z
Zm9ybS4KLSAgICBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJh
bnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9kcmF3VHJhbnNmb3JtOyB9Ci0KICAgICBzdGF0aWMg
Y29uc3QgQ0NSZW5kZXJQYXNzRHJhd1F1YWQqIG1hdGVyaWFsQ2FzdChjb25zdCBXZWJLaXQ6Oldl
YkNvbXBvc2l0b3JRdWFkKik7CiBwcml2YXRlOgotICAgIENDUmVuZGVyUGFzc0RyYXdRdWFkKGNv
bnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3Qm
LCBpbnQgcmVuZGVyUGFzc0lkLCBib29sIGlzUmVwbGljYSwgY29uc3QgV2ViS2l0OjpXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYsIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtYXNrUmVz
b3VyY2VJZCwgY29uc3QgSW50UmVjdCYgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUpOwor
ICAgIENDUmVuZGVyUGFzc0RyYXdRdWFkKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNoYXJl
ZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBpbnQgcmVuZGVyUGFzc0lkLCBib29sIGlzUmVw
bGljYSwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1hc2tSZXNvdXJjZUlkLCBjb25z
dCBJbnRSZWN0JiBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSk7CiAKICAgICBpbnQgbV9y
ZW5kZXJQYXNzSWQ7CiAgICAgYm9vbCBtX2lzUmVwbGljYTsKLSAgICBXZWJLaXQ6OldlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4IG1fZHJhd1RyYW5zZm9ybTsKICAgICBDQ1Jlc291cmNlUHJvdmlkZXI6
OlJlc291cmNlSWQgbV9tYXNrUmVzb3VyY2VJZDsKICAgICBJbnRSZWN0IG1fY29udGVudHNDaGFu
Z2VkU2luY2VMYXN0RnJhbWU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAKaW5k
ZXggNTA2N2I5ZWYxMmQ0MmQ4ZTAwM2ZkNDk2NTBiZGM1NjExY2M3ZmMyNS4uNDI1ZDcyNzg4MGEx
ZTFiYmZlYzIyODY2YmQxMmY5ZjhjZGNjZDkzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZh
Y2UuY3BwCkBAIC0xNjQsMTMgKzE2NCwxMyBAQCBib29sIENDUmVuZGVyU3VyZmFjZTo6c3VyZmFj
ZVByb3BlcnR5Q2hhbmdlZE9ubHlGcm9tRGVzY2VuZGFudCgpIGNvbnN0CiBQYXNzT3duUHRyPEND
U2hhcmVkUXVhZFN0YXRlPiBDQ1JlbmRlclN1cmZhY2U6OmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZShp
bnQgaWQpIGNvbnN0CiB7CiAgICAgYm9vbCBpc09wYXF1ZSA9IGZhbHNlOwotICAgIHJldHVybiBD
Q1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKGlkLCBtX29yaWdpblRyYW5zZm9ybSwgbV9jb250ZW50
UmVjdCwgbV9zY2lzc29yUmVjdCwgbV9kcmF3T3BhY2l0eSwgaXNPcGFxdWUpOworICAgIHJldHVy
biBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKGlkLCBtX2RyYXdUcmFuc2Zvcm0sIG1fY29udGVu
dFJlY3QsIG1fc2Npc3NvclJlY3QsIG1fZHJhd09wYWNpdHksIGlzT3BhcXVlKTsKIH0KIAogUGFz
c093blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gQ0NSZW5kZXJTdXJmYWNlOjpjcmVhdGVSZXBsaWNh
U2hhcmVkUXVhZFN0YXRlKGludCBpZCkgY29uc3QKIHsKICAgICBib29sIGlzT3BhcXVlID0gZmFs
c2U7Ci0gICAgcmV0dXJuIENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUoaWQsIG1fcmVwbGljYU9y
aWdpblRyYW5zZm9ybSwgbV9jb250ZW50UmVjdCwgbV9zY2lzc29yUmVjdCwgbV9kcmF3T3BhY2l0
eSwgaXNPcGFxdWUpOworICAgIHJldHVybiBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKGlkLCBt
X3JlcGxpY2FEcmF3VHJhbnNmb3JtLCBtX2NvbnRlbnRSZWN0LCBtX3NjaXNzb3JSZWN0LCBtX2Ry
YXdPcGFjaXR5LCBpc09wYXF1ZSk7CiB9CiAKIEZsb2F0UmVjdCBDQ1JlbmRlclN1cmZhY2U6OmNv
bXB1dGVSb290U2Npc3NvclJlY3RJbkN1cnJlbnRTdXJmYWNlKGNvbnN0IEZsb2F0UmVjdCYgcm9v
dFNjaXNzb3JSZWN0KSBjb25zdApAQCAtMjA4LDEwICsyMDgsOSBAQCB2b2lkIENDUmVuZGVyU3Vy
ZmFjZTo6YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVhZExpc3QsIENDU2hhcmVkUXVhZFN0YXRl
KiBzaGFyZQogICAgIH0KIAogICAgIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtYXNr
UmVzb3VyY2VJZCA9IG1hc2tMYXllciA/IG1hc2tMYXllci0+Y29udGVudHNSZXNvdXJjZUlkKCkg
OiAwOwotICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGRyYXdUcmFuc2Zvcm0gPSBmb3JSZXBs
aWNhID8gbV9yZXBsaWNhRHJhd1RyYW5zZm9ybSA6IG1fZHJhd1RyYW5zZm9ybTsKICAgICBJbnRS
ZWN0IGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lID0gY29udGVudHNDaGFuZ2VkKCkgPyBt
X2NvbnRlbnRSZWN0IDogSW50UmVjdCgpOwogCi0gICAgcXVhZExpc3QuYXBwZW5kKENDUmVuZGVy
UGFzc0RyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBjb250ZW50UmVjdCgpLCByZW5k
ZXJQYXNzSWQsIGZvclJlcGxpY2EsIGRyYXdUcmFuc2Zvcm0sIG1hc2tSZXNvdXJjZUlkLCBjb250
ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSkpOworICAgIHF1YWRMaXN0LmFwcGVuZChDQ1JlbmRl
clBhc3NEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgY29udGVudFJlY3QoKSwgcmVu
ZGVyUGFzc0lkLCBmb3JSZXBsaWNhLCBtYXNrUmVzb3VyY2VJZCwgY29udGVudHNDaGFuZ2VkU2lu
Y2VMYXN0RnJhbWUpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaAppbmRleCAx
NmQ4ZmExOTQ5NTIyZTFhNTQ2YjI5NDkwNTE2N2E2ZTJhN2FiYWJhLi4yODNjYmZhNDU2NDYwNTJl
MjJkZjM0MDE5OTVmYTg1OTkxOTQwMGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaApA
QCAtNzEsMTggKzcxLDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldERyYXdUcmFuc2Zvcm0oY29u
c3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9ybSkgeyBtX2Ry
YXdUcmFuc2Zvcm0gPSBkcmF3VHJhbnNmb3JtOyB9CiAgICAgY29uc3QgV2ViS2l0OjpXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fZHJhd1Ry
YW5zZm9ybTsgfQogCi0gICAgdm9pZCBzZXRPcmlnaW5UcmFuc2Zvcm0oY29uc3QgV2ViS2l0OjpX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgb3JpZ2luVHJhbnNmb3JtKSB7IG1fb3JpZ2luVHJhbnNm
b3JtID0gb3JpZ2luVHJhbnNmb3JtOyB9Ci0gICAgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgb3JpZ2luVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW5UcmFu
c2Zvcm07IH0KLQogICAgIHZvaWQgc2V0U2NyZWVuU3BhY2VUcmFuc2Zvcm0oY29uc3QgV2ViS2l0
OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgc2NyZWVuU3BhY2VUcmFuc2Zvcm0pIHsgbV9zY3Jl
ZW5TcGFjZVRyYW5zZm9ybSA9IHNjcmVlblNwYWNlVHJhbnNmb3JtOyB9CiAgICAgY29uc3QgV2Vi
S2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgc2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSBjb25z
dCB7IHJldHVybiBtX3NjcmVlblNwYWNlVHJhbnNmb3JtOyB9CiAKICAgICB2b2lkIHNldFJlcGxp
Y2FEcmF3VHJhbnNmb3JtKGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHJl
cGxpY2FEcmF3VHJhbnNmb3JtKSB7IG1fcmVwbGljYURyYXdUcmFuc2Zvcm0gPSByZXBsaWNhRHJh
d1RyYW5zZm9ybTsgfQogICAgIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHJlcGxpY2FEcmF3VHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9yZXBsaWNhRHJhd1RyYW5z
Zm9ybTsgfQogCi0gICAgdm9pZCBzZXRSZXBsaWNhT3JpZ2luVHJhbnNmb3JtKGNvbnN0IFdlYktp
dDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHJlcGxpY2FPcmlnaW5UcmFuc2Zvcm0pIHsgbV9y
ZXBsaWNhT3JpZ2luVHJhbnNmb3JtID0gcmVwbGljYU9yaWdpblRyYW5zZm9ybTsgfQotICAgIGNv
bnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHJlcGxpY2FPcmlnaW5UcmFuc2Zv
cm0oKSBjb25zdCB7IHJldHVybiBtX3JlcGxpY2FPcmlnaW5UcmFuc2Zvcm07IH0KLQogICAgIHZv
aWQgc2V0UmVwbGljYVNjcmVlblNwYWNlVHJhbnNmb3JtKGNvbnN0IFdlYktpdDo6V2ViVHJhbnNm
b3JtYXRpb25NYXRyaXgmIHJlcGxpY2FTY3JlZW5TcGFjZVRyYW5zZm9ybSkgeyBtX3JlcGxpY2FT
Y3JlZW5TcGFjZVRyYW5zZm9ybSA9IHJlcGxpY2FTY3JlZW5TcGFjZVRyYW5zZm9ybTsgfQogICAg
IGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHJlcGxpY2FTY3JlZW5TcGFj
ZVRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVwbGljYVNjcmVlblNwYWNlVHJhbnNmb3Jt
OyB9CiAKQEAgLTEzMCwxMCArMTI0LDggQEAgcHJpdmF0ZToKICAgICBmbG9hdCBtX2RyYXdPcGFj
aXR5OwogICAgIGJvb2wgbV9kcmF3T3BhY2l0eUlzQW5pbWF0aW5nOwogICAgIFdlYktpdDo6V2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXggbV9kcmF3VHJhbnNmb3JtOwotICAgIFdlYktpdDo6V2ViVHJh
bnNmb3JtYXRpb25NYXRyaXggbV9vcmlnaW5UcmFuc2Zvcm07CiAgICAgV2ViS2l0OjpXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBtX3NjcmVlblNwYWNlVHJhbnNmb3JtOwogICAgIFdlYktpdDo6V2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXggbV9yZXBsaWNhRHJhd1RyYW5zZm9ybTsKLSAgICBXZWJLaXQ6
OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4IG1fcmVwbGljYU9yaWdpblRyYW5zZm9ybTsKICAgICBX
ZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4IG1fcmVwbGljYVNjcmVlblNwYWNlVHJhbnNm
b3JtOwogICAgIGJvb2wgbV90YXJnZXRTdXJmYWNlVHJhbnNmb3Jtc0FyZUFuaW1hdGluZzsKICAg
ICBib29sIG1fc2NyZWVuU3BhY2VUcmFuc2Zvcm1zQXJlQW5pbWF0aW5nOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVz
dC5jcHAKaW5kZXggM2UxZjM2YWYyYmEwYmY2ZWNjMDE5ZjkzN2RkYWZmYjdhYmQ3OWQzZS4uOWUy
NDlmMmQ3NmVhMmQxNjIxNzk3YzNmNTAwNTZjZjY4OWFlMTg3YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3Qu
Y3BwCkBAIC0zNTIsOCArMzUyLDYgQEAgVEVTVChDQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LCB2
ZXJpZnlUcmFuc2Zvcm1zRm9yU2luZ2xlUmVuZGVyU3VyZmFjZSkKICAgICBFWFBFQ1RfVFJBTlNG
T1JNQVRJT05fTUFUUklYX0VRKGlkZW50aXR5TWF0cml4LCBjaGlsZC0+ZHJhd1RyYW5zZm9ybSgp
KTsKICAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKHBhcmVudENvbXBvc2l0ZVRy
YW5zZm9ybSwgY2hpbGQtPnNjcmVlblNwYWNlVHJhbnNmb3JtKCkpOwogCi0gICAgRVhQRUNUX1RS
QU5TRk9STUFUSU9OX01BVFJJWF9FUShwYXJlbnRDb21wb3NpdGVUcmFuc2Zvcm0sIGNoaWxkLT5y
ZW5kZXJUYXJnZXQoKS0+cmVuZGVyU3VyZmFjZSgpLT5vcmlnaW5UcmFuc2Zvcm0oKSk7Ci0KICAg
ICAvLyBCZWNhdXNlIHRoZSBncmFuZENoaWxkIGlzIHRoZSBvbmx5IGRyYXdhYmxlIGNvbnRlbnQs
IHRoZSBjaGlsZCdzIHJlbmRlclN1cmZhY2Ugd2lsbCB0aWdodGVuIGl0cyBib3VuZHMgdG8gdGhl
IGdyYW5kQ2hpbGQuCiAgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShwYXJlbnRD
b21wb3NpdGVUcmFuc2Zvcm0sIGNoaWxkLT5yZW5kZXJUYXJnZXQoKS0+cmVuZGVyU3VyZmFjZSgp
LT5kcmF3VHJhbnNmb3JtKCkpOwogCkBAIC03NDIsNyArNzQwLDcgQEAgVEVTVChDQ0xheWVyVHJl
ZUhvc3RDb21tb25UZXN0LCB2ZXJpZnlUcmFuc2Zvcm1zRm9yUmVwbGljYSkKICAgICBBU1NFUlRf
VFJVRShjaGlsZC0+cmVuZGVyU3VyZmFjZSgpKTsKICAgICBBU1NFUlRfRVEoY2hpbGQsIGNoaWxk
LT5yZW5kZXJUYXJnZXQoKSk7CiAKLSAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VR
KHJlcGxpY2FDb21wb3NpdGVUcmFuc2Zvcm0sIGNoaWxkLT5yZW5kZXJUYXJnZXQoKS0+cmVuZGVy
U3VyZmFjZSgpLT5yZXBsaWNhT3JpZ2luVHJhbnNmb3JtKCkpOworICAgIEVYUEVDVF9UUkFOU0ZP
Uk1BVElPTl9NQVRSSVhfRVEocmVwbGljYUNvbXBvc2l0ZVRyYW5zZm9ybSwgY2hpbGQtPnJlbmRl
clRhcmdldCgpLT5yZW5kZXJTdXJmYWNlKCktPnJlcGxpY2FEcmF3VHJhbnNmb3JtKCkpOwogICAg
IEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEocmVwbGljYUNvbXBvc2l0ZVRyYW5zZm9y
bSwgY2hpbGQtPnJlbmRlclRhcmdldCgpLT5yZW5kZXJTdXJmYWNlKCktPnJlcGxpY2FTY3JlZW5T
cGFjZVRyYW5zZm9ybSgpKTsKIH0KIApAQCAtODc4LDE0ICs4NzYsMTQgQEAgVEVTVChDQ0xheWVy
VHJlZUhvc3RDb21tb25UZXN0LCB2ZXJpZnlUcmFuc2Zvcm1zRm9yUmVuZGVyU3VyZmFjZUhpZXJh
cmNoeSkKIAogICAgIC8vIFZlcmlmeSByZW5kZXIgc3VyZmFjZSB0cmFuc2Zvcm1zLgogICAgIC8v
Ci0gICAgLy8gT3JpZ2luIHRyYW5zZm9ybSBvZiByZW5kZXIgc3VyZmFjZSAxIGlzIGRlc2NyaWJl
ZCB3aXRoIHJlc3BlY3QgdG8gcm9vdC4KLSAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklY
X0VRKEEgKiBCICogQSwgcmVuZGVyU3VyZmFjZTEtPnJlbmRlclN1cmZhY2UoKS0+b3JpZ2luVHJh
bnNmb3JtKCkpOwotICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEoQSAqIEIgKiBS
LCByZW5kZXJTdXJmYWNlMS0+cmVuZGVyU3VyZmFjZSgpLT5yZXBsaWNhT3JpZ2luVHJhbnNmb3Jt
KCkpOworICAgIC8vIERyYXcgdHJhbnNmb3JtIG9mIHJlbmRlciBzdXJmYWNlIDEgaXMgZGVzY3Jp
YmVkIHdpdGggcmVzcGVjdCB0byByb290LgorICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRS
SVhfRVEoQSAqIEIgKiBBLCByZW5kZXJTdXJmYWNlMS0+cmVuZGVyU3VyZmFjZSgpLT5kcmF3VHJh
bnNmb3JtKCkpOworICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEoQSAqIEIgKiBS
LCByZW5kZXJTdXJmYWNlMS0+cmVuZGVyU3VyZmFjZSgpLT5yZXBsaWNhRHJhd1RyYW5zZm9ybSgp
KTsKICAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKEEgKiBCICogQSwgcmVuZGVy
U3VyZmFjZTEtPnJlbmRlclN1cmZhY2UoKS0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSk7CiAgICAg
RVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShBICogQiAqIFIsIHJlbmRlclN1cmZhY2Ux
LT5yZW5kZXJTdXJmYWNlKCktPnJlcGxpY2FTY3JlZW5TcGFjZVRyYW5zZm9ybSgpKTsKLSAgICAv
LyBPcmlnaW4gdHJhbnNmb3JtIG9mIHJlbmRlciBzdXJmYWNlIDIgaXMgZGVzY3JpYmVkIHdpdGgg
cmVzcGVjdCB0byByZW5kZXIgc3VyZmFjZSAyLgotICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9N
QVRSSVhfRVEoQiAqIEEsIHJlbmRlclN1cmZhY2UyLT5yZW5kZXJTdXJmYWNlKCktPm9yaWdpblRy
YW5zZm9ybSgpKTsKLSAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKEIgKiBSLCBy
ZW5kZXJTdXJmYWNlMi0+cmVuZGVyU3VyZmFjZSgpLT5yZXBsaWNhT3JpZ2luVHJhbnNmb3JtKCkp
OworICAgIC8vIERyYXcgdHJhbnNmb3JtIG9mIHJlbmRlciBzdXJmYWNlIDIgaXMgZGVzY3JpYmVk
IHdpdGggcmVzcGVjdCB0byByZW5kZXIgc3VyZmFjZSAyLgorICAgIEVYUEVDVF9UUkFOU0ZPUk1B
VElPTl9NQVRSSVhfRVEoQiAqIEEsIHJlbmRlclN1cmZhY2UyLT5yZW5kZXJTdXJmYWNlKCktPmRy
YXdUcmFuc2Zvcm0oKSk7CisgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShCICog
UiwgcmVuZGVyU3VyZmFjZTItPnJlbmRlclN1cmZhY2UoKS0+cmVwbGljYURyYXdUcmFuc2Zvcm0o
KSk7CiAgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShBICogQiAqIEEgKiBCICog
QSwgcmVuZGVyU3VyZmFjZTItPnJlbmRlclN1cmZhY2UoKS0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0o
KSk7CiAgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShBICogQiAqIEEgKiBCICog
UiwgcmVuZGVyU3VyZmFjZTItPnJlbmRlclN1cmZhY2UoKS0+cmVwbGljYVNjcmVlblNwYWNlVHJh
bnNmb3JtKCkpOwogCkBAIC0xMjUyLDcgKzEyNTAsNyBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENv
bW1vblRlc3QsIHZlcmlmeVNjcm9sbENvbXBlbnNhdGlvbkZvckZpeGVkUG9zaXRpb25MYXllcldp
dAogewogICAgIC8vIFRoaXMgdGVzdCBjaGVja3MgZm9yIGNvcnJlY3Qgc2Nyb2xsIGNvbXBlbnNh
dGlvbiB3aGVuIHRoZSBmaXhlZC1wb3NpdGlvbiBjb250YWluZXIKICAgICAvLyBjb250cmlidXRl
cyB0byBhIGRpZmZlcmVudCByZW5kZXJTdXJmYWNlIHRoYW4gdGhlIGZpeGVkLXBvc2l0aW9uIGxh
eWVyLiBJbiB0aGlzCi0gICAgLy8gY2FzZSwgdGhlIHN1cmZhY2Ugb3JpZ2luVHJhbnNmb3JtcyBh
bHNvIGhhdmUgdG8gYmUgYWNjb3VudGVkIGZvciB3aGVuIGNoZWNraW5nIHRoZQorICAgIC8vIGNh
c2UsIHRoZSBzdXJmYWNlIGRyYXdUcmFuc2Zvcm1zIGFsc28gaGF2ZSB0byBiZSBhY2NvdW50ZWQg
Zm9yIHdoZW4gY2hlY2tpbmcgdGhlCiAgICAgLy8gc2Nyb2xsRGVsdGEuCiAgICAgRGVidWdTY29w
ZWRTZXRJbXBsVGhyZWFkIHNjb3BlZEltcGxUaHJlYWQ7CiAKQEAgLTEyNzYsMTQgKzEyNzQsMTQg
QEAgVEVTVChDQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LCB2ZXJpZnlTY3JvbGxDb21wZW5zYXRp
b25Gb3JGaXhlZFBvc2l0aW9uTGF5ZXJXaXQKICAgICBleGVjdXRlQ2FsY3VsYXRlRHJhd1RyYW5z
Zm9ybXNBbmRWaXNpYmlsaXR5KHJvb3QuZ2V0KCkpOwogCiAgICAgV2ViVHJhbnNmb3JtYXRpb25N
YXRyaXggZXhwZWN0ZWRDaGlsZFRyYW5zZm9ybTsKLSAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBleHBlY3RlZFN1cmZhY2VPcmlnaW5UcmFuc2Zvcm07Ci0gICAgZXhwZWN0ZWRTdXJmYWNlT3Jp
Z2luVHJhbnNmb3JtLnRyYW5zbGF0ZSg4LCA2KTsKLSAgICBleHBlY3RlZFN1cmZhY2VPcmlnaW5U
cmFuc2Zvcm0ubXVsdGlwbHkocm90YXRpb25BYm91dFopOworICAgIFdlYlRyYW5zZm9ybWF0aW9u
TWF0cml4IGV4cGVjdGVkU3VyZmFjZURyYXdUcmFuc2Zvcm07CisgICAgZXhwZWN0ZWRTdXJmYWNl
RHJhd1RyYW5zZm9ybS50cmFuc2xhdGUoOCwgNik7CisgICAgZXhwZWN0ZWRTdXJmYWNlRHJhd1Ry
YW5zZm9ybS5tdWx0aXBseShyb3RhdGlvbkFib3V0Wik7CiAgICAgV2ViVHJhbnNmb3JtYXRpb25N
YXRyaXggZXhwZWN0ZWRHcmFuZENoaWxkVHJhbnNmb3JtOwogICAgIFdlYlRyYW5zZm9ybWF0aW9u
TWF0cml4IGV4cGVjdGVkR3JlYXRHcmFuZENoaWxkVHJhbnNmb3JtOwogICAgIEFTU0VSVF9UUlVF
KGdyYW5kQ2hpbGQtPnJlbmRlclN1cmZhY2UoKSk7CiAgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9O
X01BVFJJWF9FUShleHBlY3RlZENoaWxkVHJhbnNmb3JtLCBjaGlsZC0+ZHJhd1RyYW5zZm9ybSgp
KTsKLSAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKGV4cGVjdGVkU3VyZmFjZU9y
aWdpblRyYW5zZm9ybSwgZ3JhbmRDaGlsZC0+cmVuZGVyU3VyZmFjZSgpLT5vcmlnaW5UcmFuc2Zv
cm0oKSk7CisgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShleHBlY3RlZFN1cmZh
Y2VEcmF3VHJhbnNmb3JtLCBncmFuZENoaWxkLT5yZW5kZXJTdXJmYWNlKCktPmRyYXdUcmFuc2Zv
cm0oKSk7CiAgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShleHBlY3RlZEdyYW5k
Q2hpbGRUcmFuc2Zvcm0sIGdyYW5kQ2hpbGQtPmRyYXdUcmFuc2Zvcm0oKSk7CiAgICAgRVhQRUNU
X1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShleHBlY3RlZEdyZWF0R3JhbmRDaGlsZFRyYW5zZm9y
bSwgZ3JlYXRHcmFuZENoaWxkLT5kcmF3VHJhbnNmb3JtKCkpOwogCkBAIC0xMzAxLDEwICsxMjk5
LDEwIEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5U2Nyb2xsQ29tcGVu
c2F0aW9uRm9yRml4ZWRQb3NpdGlvbkxheWVyV2l0CiAgICAgZXhwZWN0ZWRDaGlsZFRyYW5zZm9y
bS5tYWtlSWRlbnRpdHkoKTsKICAgICBleHBlY3RlZENoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgt
MTAsIC0zMCk7IC8vIHNjcm9sbERlbHRhCiAKLSAgICBleHBlY3RlZFN1cmZhY2VPcmlnaW5UcmFu
c2Zvcm0ubWFrZUlkZW50aXR5KCk7Ci0gICAgZXhwZWN0ZWRTdXJmYWNlT3JpZ2luVHJhbnNmb3Jt
LnRyYW5zbGF0ZSgtMTAsIC0zMCk7IC8vIHNjcm9sbERlbHRhCi0gICAgZXhwZWN0ZWRTdXJmYWNl
T3JpZ2luVHJhbnNmb3JtLnRyYW5zbGF0ZSg4LCA2KTsKLSAgICBleHBlY3RlZFN1cmZhY2VPcmln
aW5UcmFuc2Zvcm0ubXVsdGlwbHkocm90YXRpb25BYm91dFopOworICAgIGV4cGVjdGVkU3VyZmFj
ZURyYXdUcmFuc2Zvcm0ubWFrZUlkZW50aXR5KCk7CisgICAgZXhwZWN0ZWRTdXJmYWNlRHJhd1Ry
YW5zZm9ybS50cmFuc2xhdGUoLTEwLCAtMzApOyAvLyBzY3JvbGxEZWx0YQorICAgIGV4cGVjdGVk
U3VyZmFjZURyYXdUcmFuc2Zvcm0udHJhbnNsYXRlKDgsIDYpOworICAgIGV4cGVjdGVkU3VyZmFj
ZURyYXdUcmFuc2Zvcm0ubXVsdGlwbHkocm90YXRpb25BYm91dFopOwogCiAgICAgLy8gVGhlIHJv
dGF0aW9uIGFuZCBpdHMgaW52ZXJzZSBhcmUgbmVlZGVkIHRvIHBsYWNlIHRoZSBzY3JvbGxEZWx0
YSBjb21wZW5zYXRpb24gaW4KICAgICAvLyB0aGUgY29ycmVjdCBzcGFjZS4gVGhpcyB0ZXN0IHdp
bGwgZmFpbCBpZiB0aGUgcm90YXRpb24vaW52ZXJzZSBhcmUgYmFja3dhcmRzLCB0b28sCkBAIC0x
MzE2LDcgKzEzMTQsNyBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeVNj
cm9sbENvbXBlbnNhdGlvbkZvckZpeGVkUG9zaXRpb25MYXllcldpdAogCiAgICAgQVNTRVJUX1RS
VUUoZ3JhbmRDaGlsZC0+cmVuZGVyU3VyZmFjZSgpKTsKICAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJ
T05fTUFUUklYX0VRKGV4cGVjdGVkQ2hpbGRUcmFuc2Zvcm0sIGNoaWxkLT5kcmF3VHJhbnNmb3Jt
KCkpOwotICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEoZXhwZWN0ZWRTdXJmYWNl
T3JpZ2luVHJhbnNmb3JtLCBncmFuZENoaWxkLT5yZW5kZXJTdXJmYWNlKCktPm9yaWdpblRyYW5z
Zm9ybSgpKTsKKyAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKGV4cGVjdGVkU3Vy
ZmFjZURyYXdUcmFuc2Zvcm0sIGdyYW5kQ2hpbGQtPnJlbmRlclN1cmZhY2UoKS0+ZHJhd1RyYW5z
Zm9ybSgpKTsKICAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKGV4cGVjdGVkR3Jh
bmRDaGlsZFRyYW5zZm9ybSwgZ3JhbmRDaGlsZC0+ZHJhd1RyYW5zZm9ybSgpKTsKICAgICBFWFBF
Q1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKGV4cGVjdGVkR3JlYXRHcmFuZENoaWxkVHJhbnNm
b3JtLCBncmVhdEdyYW5kQ2hpbGQtPmRyYXdUcmFuc2Zvcm0oKSk7CiB9CkBAIC0xMzY5LDE1ICsx
MzY3LDE1IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5U2Nyb2xsQ29t
cGVuc2F0aW9uRm9yRml4ZWRQb3NpdGlvbkxheWVyV2l0CiAKICAgICBXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBleHBlY3RlZENoaWxkVHJhbnNmb3JtOwogCi0gICAgV2ViVHJhbnNmb3JtYXRpb25N
YXRyaXggZXhwZWN0ZWRHcmFuZENoaWxkU3VyZmFjZU9yaWdpblRyYW5zZm9ybTsKLSAgICBleHBl
Y3RlZEdyYW5kQ2hpbGRTdXJmYWNlT3JpZ2luVHJhbnNmb3JtLnRyYW5zbGF0ZSg4LCA2KTsKLSAg
ICBleHBlY3RlZEdyYW5kQ2hpbGRTdXJmYWNlT3JpZ2luVHJhbnNmb3JtLm11bHRpcGx5KHJvdGF0
aW9uQWJvdXRaKTsKKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBleHBlY3RlZEdyYW5kQ2hp
bGRTdXJmYWNlRHJhd1RyYW5zZm9ybTsKKyAgICBleHBlY3RlZEdyYW5kQ2hpbGRTdXJmYWNlRHJh
d1RyYW5zZm9ybS50cmFuc2xhdGUoOCwgNik7CisgICAgZXhwZWN0ZWRHcmFuZENoaWxkU3VyZmFj
ZURyYXdUcmFuc2Zvcm0ubXVsdGlwbHkocm90YXRpb25BYm91dFopOwogCiAgICAgV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXggZXhwZWN0ZWRHcmFuZENoaWxkVHJhbnNmb3JtOwogCi0gICAgV2ViVHJh
bnNmb3JtYXRpb25NYXRyaXggZXhwZWN0ZWRHcmVhdEdyYW5kQ2hpbGRTdXJmYWNlT3JpZ2luVHJh
bnNmb3JtOwotICAgIGV4cGVjdGVkR3JlYXRHcmFuZENoaWxkU3VyZmFjZU9yaWdpblRyYW5zZm9y
bS50cmFuc2xhdGUoNDAsIDYwKTsKLSAgICBleHBlY3RlZEdyZWF0R3JhbmRDaGlsZFN1cmZhY2VP
cmlnaW5UcmFuc2Zvcm0ubXVsdGlwbHkocm90YXRpb25BYm91dFopOworICAgIFdlYlRyYW5zZm9y
bWF0aW9uTWF0cml4IGV4cGVjdGVkR3JlYXRHcmFuZENoaWxkU3VyZmFjZURyYXdUcmFuc2Zvcm07
CisgICAgZXhwZWN0ZWRHcmVhdEdyYW5kQ2hpbGRTdXJmYWNlRHJhd1RyYW5zZm9ybS50cmFuc2xh
dGUoNDAsIDYwKTsKKyAgICBleHBlY3RlZEdyZWF0R3JhbmRDaGlsZFN1cmZhY2VEcmF3VHJhbnNm
b3JtLm11bHRpcGx5KHJvdGF0aW9uQWJvdXRaKTsKIAogICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0
cml4IGV4cGVjdGVkR3JlYXRHcmFuZENoaWxkVHJhbnNmb3JtOwogCkBAIC0xMzg2LDkgKzEzODQs
OSBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeVNjcm9sbENvbXBlbnNh
dGlvbkZvckZpeGVkUG9zaXRpb25MYXllcldpdAogICAgIEFTU0VSVF9UUlVFKGdyYW5kQ2hpbGQt
PnJlbmRlclN1cmZhY2UoKSk7CiAgICAgQVNTRVJUX1RSVUUoZ3JlYXRHcmFuZENoaWxkLT5yZW5k
ZXJTdXJmYWNlKCkpOwogICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEoZXhwZWN0
ZWRDaGlsZFRyYW5zZm9ybSwgY2hpbGQtPmRyYXdUcmFuc2Zvcm0oKSk7Ci0gICAgRVhQRUNUX1RS
QU5TRk9STUFUSU9OX01BVFJJWF9FUShleHBlY3RlZEdyYW5kQ2hpbGRTdXJmYWNlT3JpZ2luVHJh
bnNmb3JtLCBncmFuZENoaWxkLT5yZW5kZXJTdXJmYWNlKCktPm9yaWdpblRyYW5zZm9ybSgpKTsK
KyAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKGV4cGVjdGVkR3JhbmRDaGlsZFN1
cmZhY2VEcmF3VHJhbnNmb3JtLCBncmFuZENoaWxkLT5yZW5kZXJTdXJmYWNlKCktPmRyYXdUcmFu
c2Zvcm0oKSk7CiAgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShleHBlY3RlZEdy
YW5kQ2hpbGRUcmFuc2Zvcm0sIGdyYW5kQ2hpbGQtPmRyYXdUcmFuc2Zvcm0oKSk7Ci0gICAgRVhQ
RUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShleHBlY3RlZEdyZWF0R3JhbmRDaGlsZFN1cmZh
Y2VPcmlnaW5UcmFuc2Zvcm0sIGdyZWF0R3JhbmRDaGlsZC0+cmVuZGVyU3VyZmFjZSgpLT5vcmln
aW5UcmFuc2Zvcm0oKSk7CisgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShleHBl
Y3RlZEdyZWF0R3JhbmRDaGlsZFN1cmZhY2VEcmF3VHJhbnNmb3JtLCBncmVhdEdyYW5kQ2hpbGQt
PnJlbmRlclN1cmZhY2UoKS0+ZHJhd1RyYW5zZm9ybSgpKTsKICAgICBFWFBFQ1RfVFJBTlNGT1JN
QVRJT05fTUFUUklYX0VRKGV4cGVjdGVkR3JlYXRHcmFuZENoaWxkVHJhbnNmb3JtLCBncmVhdEdy
YW5kQ2hpbGQtPmRyYXdUcmFuc2Zvcm0oKSk7CiAgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01B
VFJJWF9FUShleHBlY3RlZEZpeGVkUG9zaXRpb25DaGlsZFRyYW5zZm9ybSwgZml4ZWRQb3NpdGlv
bkNoaWxkLT5kcmF3VHJhbnNmb3JtKCkpOwogCkBAIC0xMzk5LDEwICsxMzk3LDEwIEBAIFRFU1Qo
Q0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5U2Nyb2xsQ29tcGVuc2F0aW9uRm9yRml4
ZWRQb3NpdGlvbkxheWVyV2l0CiAgICAgZXhwZWN0ZWRDaGlsZFRyYW5zZm9ybS5tYWtlSWRlbnRp
dHkoKTsKICAgICBleHBlY3RlZENoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgtMTAsIC0zMCk7IC8v
IHNjcm9sbERlbHRhCiAKLSAgICBleHBlY3RlZEdyYW5kQ2hpbGRTdXJmYWNlT3JpZ2luVHJhbnNm
b3JtLm1ha2VJZGVudGl0eSgpOwotICAgIGV4cGVjdGVkR3JhbmRDaGlsZFN1cmZhY2VPcmlnaW5U
cmFuc2Zvcm0udHJhbnNsYXRlKC0xMCwgLTMwKTsgLy8gc2Nyb2xsRGVsdGEKLSAgICBleHBlY3Rl
ZEdyYW5kQ2hpbGRTdXJmYWNlT3JpZ2luVHJhbnNmb3JtLnRyYW5zbGF0ZSg4LCA2KTsKLSAgICBl
eHBlY3RlZEdyYW5kQ2hpbGRTdXJmYWNlT3JpZ2luVHJhbnNmb3JtLm11bHRpcGx5KHJvdGF0aW9u
QWJvdXRaKTsKKyAgICBleHBlY3RlZEdyYW5kQ2hpbGRTdXJmYWNlRHJhd1RyYW5zZm9ybS5tYWtl
SWRlbnRpdHkoKTsKKyAgICBleHBlY3RlZEdyYW5kQ2hpbGRTdXJmYWNlRHJhd1RyYW5zZm9ybS50
cmFuc2xhdGUoLTEwLCAtMzApOyAvLyBzY3JvbGxEZWx0YQorICAgIGV4cGVjdGVkR3JhbmRDaGls
ZFN1cmZhY2VEcmF3VHJhbnNmb3JtLnRyYW5zbGF0ZSg4LCA2KTsKKyAgICBleHBlY3RlZEdyYW5k
Q2hpbGRTdXJmYWNlRHJhd1RyYW5zZm9ybS5tdWx0aXBseShyb3RhdGlvbkFib3V0Wik7CiAKICAg
ICAvLyBncmFuZENoaWxkLCBncmVhdEdyYW5kQ2hpbGQsIGFuZCBncmVhdEdyYW5kQ2hpbGQncyBz
dXJmYWNlIGFyZSBub3QgZXhwZWN0ZWQgdG8KICAgICAvLyBjaGFuZ2UsIHNpbmNlIHRoZXkgYXJl
IGFsbCBub3QgZml4ZWQsIGFuZCB0aGV5IGFyZSBhbGwgZHJhd24gd2l0aCByZXNwZWN0IHRvCkBA
IC0xNDEwLDI0ICsxNDA4LDI0IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVy
aWZ5U2Nyb2xsQ29tcGVuc2F0aW9uRm9yRml4ZWRQb3NpdGlvbkxheWVyV2l0CiAKICAgICAvLyBC
dXQgdGhlIGdyZWF0LWdyZWF0IGdyYW5kY2hpbGQsICJmaXhlZFBvc2l0aW9uQ2hpbGQiLCBzaG91
bGQgaGF2ZSBhIHRyYW5zZm9ybSB0aGF0IGV4cGxpY2l0bHkgY2FuY2VscyBvdXQgdGhlIHNjcm9s
bERlbHRhLgogICAgIC8vIFRoZSBleHBlY3RlZCB0cmFuc2Zvcm0gaXM6Ci0gICAgLy8gICBjb21w
b3VuZE9yaWdpblRyYW5zZm9ybS5pbnZlcnNlKCkgKiB0cmFuc2xhdGUocG9zaXRpdmUgc2Nyb2xs
RGVsdGEpICogY29tcG91bmRPcmlnaW5UcmFuc2Zvcm0gKiBoYWxmLXdpZHRoLWhhbGYtaGVpZ2h0
IHRyYW5zbGF0aW9uCi0gICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggY29tcG91bmRPcmlnaW5U
cmFuc2Zvcm07IC8vIHRyYW5zZm9ybSBmcm9tIGdyZWF0R3JhbmRDaGlsZFN1cmZhY2UncyBvcmln
aW4gdG8gdGhlIHJvb3Qgc3VyZmFjZS4KLSAgICBjb21wb3VuZE9yaWdpblRyYW5zZm9ybS50cmFu
c2xhdGUoOCwgNik7IC8vIG9yaWdpbiB0cmFuc2xhdGlvbiBvZiBncmFuZENoaWxkCi0gICAgY29t
cG91bmRPcmlnaW5UcmFuc2Zvcm0ubXVsdGlwbHkocm90YXRpb25BYm91dFopOyAvLyByb3RhdGlv
biBvZiBncmFuZENoaWxkCi0gICAgY29tcG91bmRPcmlnaW5UcmFuc2Zvcm0udHJhbnNsYXRlKDQw
LCA2MCk7IC8vIG9yaWdpbiB0cmFuc2xhdGlvbiBvZiBncmVhdEdyYW5kQ2hpbGQKLSAgICBjb21w
b3VuZE9yaWdpblRyYW5zZm9ybS5tdWx0aXBseShyb3RhdGlvbkFib3V0Wik7IC8vIHJvdGF0aW9u
IG9mIGdyZWF0R3JhbmRDaGlsZAorICAgIC8vICAgY29tcG91bmREcmF3VHJhbnNmb3JtLmludmVy
c2UoKSAqIHRyYW5zbGF0ZShwb3NpdGl2ZSBzY3JvbGxEZWx0YSkgKiBjb21wb3VuZE9yaWdpblRy
YW5zZm9ybQorICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGNvbXBvdW5kRHJhd1RyYW5zZm9y
bTsgLy8gdHJhbnNmb3JtIGZyb20gZ3JlYXRHcmFuZENoaWxkU3VyZmFjZSdzIG9yaWdpbiB0byB0
aGUgcm9vdCBzdXJmYWNlLgorICAgIGNvbXBvdW5kRHJhd1RyYW5zZm9ybS50cmFuc2xhdGUoOCwg
Nik7IC8vIG9yaWdpbiB0cmFuc2xhdGlvbiBvZiBncmFuZENoaWxkCisgICAgY29tcG91bmREcmF3
VHJhbnNmb3JtLm11bHRpcGx5KHJvdGF0aW9uQWJvdXRaKTsgLy8gcm90YXRpb24gb2YgZ3JhbmRD
aGlsZAorICAgIGNvbXBvdW5kRHJhd1RyYW5zZm9ybS50cmFuc2xhdGUoNDAsIDYwKTsgLy8gb3Jp
Z2luIHRyYW5zbGF0aW9uIG9mIGdyZWF0R3JhbmRDaGlsZAorICAgIGNvbXBvdW5kRHJhd1RyYW5z
Zm9ybS5tdWx0aXBseShyb3RhdGlvbkFib3V0Wik7IC8vIHJvdGF0aW9uIG9mIGdyZWF0R3JhbmRD
aGlsZAogCiAgICAgZXhwZWN0ZWRGaXhlZFBvc2l0aW9uQ2hpbGRUcmFuc2Zvcm0ubWFrZUlkZW50
aXR5KCk7Ci0gICAgZXhwZWN0ZWRGaXhlZFBvc2l0aW9uQ2hpbGRUcmFuc2Zvcm0ubXVsdGlwbHko
Y29tcG91bmRPcmlnaW5UcmFuc2Zvcm0uaW52ZXJzZSgpKTsKKyAgICBleHBlY3RlZEZpeGVkUG9z
aXRpb25DaGlsZFRyYW5zZm9ybS5tdWx0aXBseShjb21wb3VuZERyYXdUcmFuc2Zvcm0uaW52ZXJz
ZSgpKTsKICAgICBleHBlY3RlZEZpeGVkUG9zaXRpb25DaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUo
MTAsIDMwKTsgLy8gZXhwbGljaXQgY2FuY2VsaW5nIG91dCB0aGUgc2Nyb2xsRGVsdGEgdGhhdCBn
ZXRzIGVtYmVkZGVkIGluIHRoZSBmaXhlZCBwb3NpdGlvbiBsYXllcidzIHN1cmZhY2UuCi0gICAg
ZXhwZWN0ZWRGaXhlZFBvc2l0aW9uQ2hpbGRUcmFuc2Zvcm0ubXVsdGlwbHkoY29tcG91bmRPcmln
aW5UcmFuc2Zvcm0pOworICAgIGV4cGVjdGVkRml4ZWRQb3NpdGlvbkNoaWxkVHJhbnNmb3JtLm11
bHRpcGx5KGNvbXBvdW5kRHJhd1RyYW5zZm9ybSk7CiAKICAgICBBU1NFUlRfVFJVRShncmFuZENo
aWxkLT5yZW5kZXJTdXJmYWNlKCkpOwogICAgIEFTU0VSVF9UUlVFKGdyZWF0R3JhbmRDaGlsZC0+
cmVuZGVyU3VyZmFjZSgpKTsKICAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKGV4
cGVjdGVkQ2hpbGRUcmFuc2Zvcm0sIGNoaWxkLT5kcmF3VHJhbnNmb3JtKCkpOwotICAgIEVYUEVD
VF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEoZXhwZWN0ZWRHcmFuZENoaWxkU3VyZmFjZU9yaWdp
blRyYW5zZm9ybSwgZ3JhbmRDaGlsZC0+cmVuZGVyU3VyZmFjZSgpLT5vcmlnaW5UcmFuc2Zvcm0o
KSk7CisgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShleHBlY3RlZEdyYW5kQ2hp
bGRTdXJmYWNlRHJhd1RyYW5zZm9ybSwgZ3JhbmRDaGlsZC0+cmVuZGVyU3VyZmFjZSgpLT5kcmF3
VHJhbnNmb3JtKCkpOwogICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEoZXhwZWN0
ZWRHcmFuZENoaWxkVHJhbnNmb3JtLCBncmFuZENoaWxkLT5kcmF3VHJhbnNmb3JtKCkpOwotICAg
IEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEoZXhwZWN0ZWRHcmVhdEdyYW5kQ2hpbGRT
dXJmYWNlT3JpZ2luVHJhbnNmb3JtLCBncmVhdEdyYW5kQ2hpbGQtPnJlbmRlclN1cmZhY2UoKS0+
b3JpZ2luVHJhbnNmb3JtKCkpOworICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEo
ZXhwZWN0ZWRHcmVhdEdyYW5kQ2hpbGRTdXJmYWNlRHJhd1RyYW5zZm9ybSwgZ3JlYXRHcmFuZENo
aWxkLT5yZW5kZXJTdXJmYWNlKCktPmRyYXdUcmFuc2Zvcm0oKSk7CiAgICAgRVhQRUNUX1RSQU5T
Rk9STUFUSU9OX01BVFJJWF9FUShleHBlY3RlZEdyZWF0R3JhbmRDaGlsZFRyYW5zZm9ybSwgZ3Jl
YXRHcmFuZENoaWxkLT5kcmF3VHJhbnNmb3JtKCkpOwogICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElP
Tl9NQVRSSVhfRVEoZXhwZWN0ZWRGaXhlZFBvc2l0aW9uQ2hpbGRUcmFuc2Zvcm0sIGZpeGVkUG9z
aXRpb25DaGlsZC0+ZHJhd1RyYW5zZm9ybSgpKTsKIH0KQEAgLTE0NTMsMTIgKzE0NTEsMTIgQEAg
VEVTVChDQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LCB2ZXJpZnlTY3JvbGxDb21wZW5zYXRpb25G
b3JGaXhlZFBvc2l0aW9uTGF5ZXJXaXQKICAgICBjaGlsZC0+c2V0U2Nyb2xsRGVsdGEoSW50U2l6
ZSgwLCAwKSk7CiAgICAgZXhlY3V0ZUNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0
eShyb290LmdldCgpKTsKIAotICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGV4cGVjdGVkU3Vy
ZmFjZU9yaWdpblRyYW5zZm9ybTsKLSAgICBleHBlY3RlZFN1cmZhY2VPcmlnaW5UcmFuc2Zvcm0u
dHJhbnNsYXRlKDAsIDApOworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGV4cGVjdGVkU3Vy
ZmFjZURyYXdUcmFuc2Zvcm07CisgICAgZXhwZWN0ZWRTdXJmYWNlRHJhd1RyYW5zZm9ybS50cmFu
c2xhdGUoMCwgMCk7CiAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggZXhwZWN0ZWRDaGlsZFRy
YW5zZm9ybTsKICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBleHBlY3RlZEdyYW5kQ2hpbGRU
cmFuc2Zvcm07CiAgICAgQVNTRVJUX1RSVUUoY2hpbGQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAg
RVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShleHBlY3RlZFN1cmZhY2VPcmlnaW5UcmFu
c2Zvcm0sIGNoaWxkLT5yZW5kZXJTdXJmYWNlKCktPm9yaWdpblRyYW5zZm9ybSgpKTsKKyAgICBF
WFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKGV4cGVjdGVkU3VyZmFjZURyYXdUcmFuc2Zv
cm0sIGNoaWxkLT5yZW5kZXJTdXJmYWNlKCktPmRyYXdUcmFuc2Zvcm0oKSk7CiAgICAgRVhQRUNU
X1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShleHBlY3RlZENoaWxkVHJhbnNmb3JtLCBjaGlsZC0+
ZHJhd1RyYW5zZm9ybSgpKTsKICAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKGV4
cGVjdGVkR3JhbmRDaGlsZFRyYW5zZm9ybSwgZ3JhbmRDaGlsZC0+ZHJhd1RyYW5zZm9ybSgpKTsK
IApAQCAtMTQ2OSwxMyArMTQ2NywxMyBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3Qs
IHZlcmlmeVNjcm9sbENvbXBlbnNhdGlvbkZvckZpeGVkUG9zaXRpb25MYXllcldpdAogICAgIC8v
IFRoZSBzdXJmYWNlIGlzIHRyYW5zbGF0ZWQgYnkgc2Nyb2xsRGVsdGEsIHRoZSBjaGlsZCB0cmFu
c2Zvcm0gZG9lc24ndCBjaGFuZ2UKICAgICAvLyBiZWNhdXNlIGl0IHNjcm9sbHMgYWxvbmcgd2l0
aCB0aGUgc3VyZmFjZSwgYnV0IHRoZSBmaXhlZCBwb3NpdGlvbiBncmFuZENoaWxkCiAgICAgLy8g
bmVlZHMgdG8gY29tcGVuc2F0ZSBmb3IgdGhlIHNjcm9sbCB0cmFuc2xhdGlvbi4KLSAgICBleHBl
Y3RlZFN1cmZhY2VPcmlnaW5UcmFuc2Zvcm0ubWFrZUlkZW50aXR5KCk7Ci0gICAgZXhwZWN0ZWRT
dXJmYWNlT3JpZ2luVHJhbnNmb3JtLnRyYW5zbGF0ZSgtMTAsIC0xMCk7CisgICAgZXhwZWN0ZWRT
dXJmYWNlRHJhd1RyYW5zZm9ybS5tYWtlSWRlbnRpdHkoKTsKKyAgICBleHBlY3RlZFN1cmZhY2VE
cmF3VHJhbnNmb3JtLnRyYW5zbGF0ZSgtMTAsIC0xMCk7CiAgICAgZXhwZWN0ZWRHcmFuZENoaWxk
VHJhbnNmb3JtLm1ha2VJZGVudGl0eSgpOwogICAgIGV4cGVjdGVkR3JhbmRDaGlsZFRyYW5zZm9y
bS50cmFuc2xhdGUoMTAsIDEwKTsKIAogICAgIEFTU0VSVF9UUlVFKGNoaWxkLT5yZW5kZXJTdXJm
YWNlKCkpOwotICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEoZXhwZWN0ZWRTdXJm
YWNlT3JpZ2luVHJhbnNmb3JtLCBjaGlsZC0+cmVuZGVyU3VyZmFjZSgpLT5vcmlnaW5UcmFuc2Zv
cm0oKSk7CisgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShleHBlY3RlZFN1cmZh
Y2VEcmF3VHJhbnNmb3JtLCBjaGlsZC0+cmVuZGVyU3VyZmFjZSgpLT5kcmF3VHJhbnNmb3JtKCkp
OwogICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEoZXhwZWN0ZWRDaGlsZFRyYW5z
Zm9ybSwgY2hpbGQtPmRyYXdUcmFuc2Zvcm0oKSk7CiAgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9O
X01BVFJJWF9FUShleHBlY3RlZEdyYW5kQ2hpbGRUcmFuc2Zvcm0sIGdyYW5kQ2hpbGQtPmRyYXdU
cmFuc2Zvcm0oKSk7CiB9CkBAIC0zNDA2LDkgKzM0MDQsOSBAQCBURVNUKENDTGF5ZXJUcmVlSG9z
dENvbW1vblRlc3QsIHZlcmlmeVJlbmRlclN1cmZhY2VUcmFuc2Zvcm1zSW5IaWdoRFBJKQogICAg
IGV4cGVjdGVkUmVuZGVyU3VyZmFjZURyYXdUcmFuc2Zvcm0udHJhbnNsYXRlKGRldmljZVNjYWxl
RmFjdG9yICogY2hpbGQtPnBvc2l0aW9uKCkueCgpLCBkZXZpY2VTY2FsZUZhY3RvciAqIGNoaWxk
LT5wb3NpdGlvbigpLnkoKSk7CiAgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShl
eHBlY3RlZFJlbmRlclN1cmZhY2VEcmF3VHJhbnNmb3JtLCBjaGlsZC0+cmVuZGVyU3VyZmFjZSgp
LT5kcmF3VHJhbnNmb3JtKCkpOwogCi0gICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggZXhwZWN0
ZWRPcmlnaW5UcmFuc2Zvcm07Ci0gICAgZXhwZWN0ZWRPcmlnaW5UcmFuc2Zvcm0udHJhbnNsYXRl
KGRldmljZVNjYWxlRmFjdG9yICogMiwgZGV2aWNlU2NhbGVGYWN0b3IgKiAyKTsKLSAgICBFWFBF
Q1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKGV4cGVjdGVkT3JpZ2luVHJhbnNmb3JtLCBjaGls
ZC0+cmVuZGVyU3VyZmFjZSgpLT5vcmlnaW5UcmFuc2Zvcm0oKSk7CisgICAgV2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXggZXhwZWN0ZWRTdXJmYWNlRHJhd1RyYW5zZm9ybTsKKyAgICBleHBlY3RlZFN1
cmZhY2VEcmF3VHJhbnNmb3JtLnRyYW5zbGF0ZShkZXZpY2VTY2FsZUZhY3RvciAqIDIsIGRldmlj
ZVNjYWxlRmFjdG9yICogMik7CisgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShl
eHBlY3RlZFN1cmZhY2VEcmF3VHJhbnNmb3JtLCBjaGlsZC0+cmVuZGVyU3VyZmFjZSgpLT5kcmF3
VHJhbnNmb3JtKCkpOwogCiAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggZXhwZWN0ZWRTdXJm
YWNlU2NyZWVuU3BhY2VUcmFuc2Zvcm07CiAgICAgZXhwZWN0ZWRTdXJmYWNlU2NyZWVuU3BhY2VU
cmFuc2Zvcm0udHJhbnNsYXRlKGRldmljZVNjYWxlRmFjdG9yICogMiwgZGV2aWNlU2NhbGVGYWN0
b3IgKiAyKTsKQEAgLTM0MjAsMTEgKzM0MTgsNiBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1v
blRlc3QsIHZlcmlmeVJlbmRlclN1cmZhY2VUcmFuc2Zvcm1zSW5IaWdoRFBJKQogICAgIGV4cGVj
dGVkUmVwbGljYURyYXdUcmFuc2Zvcm0uc2V0TTQyKDYpOwogICAgIEVYUEVDVF9UUkFOU0ZPUk1B
VElPTl9NQVRSSVhfRVEoZXhwZWN0ZWRSZXBsaWNhRHJhd1RyYW5zZm9ybSwgY2hpbGQtPnJlbmRl
clN1cmZhY2UoKS0+cmVwbGljYURyYXdUcmFuc2Zvcm0oKSk7CiAKLSAgICBXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBleHBlY3RlZFJlcGxpY2FPcmlnaW5UcmFuc2Zvcm0gPSBleHBlY3RlZFJlcGxp
Y2FEcmF3VHJhbnNmb3JtOwotICAgIGV4cGVjdGVkUmVwbGljYU9yaWdpblRyYW5zZm9ybS5zZXRN
NDEoNik7Ci0gICAgZXhwZWN0ZWRSZXBsaWNhT3JpZ2luVHJhbnNmb3JtLnNldE00Mig2KTsKLSAg
ICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKGV4cGVjdGVkUmVwbGljYU9yaWdpblRy
YW5zZm9ybSwgY2hpbGQtPnJlbmRlclN1cmZhY2UoKS0+cmVwbGljYU9yaWdpblRyYW5zZm9ybSgp
KTsKLQogICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGV4cGVjdGVkUmVwbGljYVNjcmVlblNw
YWNlVHJhbnNmb3JtOwogICAgIGV4cGVjdGVkUmVwbGljYVNjcmVlblNwYWNlVHJhbnNmb3JtLnNl
dE0yMigtMSk7CiAgICAgZXhwZWN0ZWRSZXBsaWNhU2NyZWVuU3BhY2VUcmFuc2Zvcm0uc2V0TTQx
KDYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJl
ZUhvc3RJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJU
cmVlSG9zdEltcGxUZXN0LmNwcAppbmRleCBjN2E1YzUzNTM4MWFjZTVkY2FmZjdjMzUxNGZmY2Mx
YTNjNDVjOGZhLi41M2MzMTJjZjVkOTU4ZGNkYTliNmNlZTQ4ZGFmYTJjNmJhNWJhYzgwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxU
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9z
dEltcGxUZXN0LmNwcApAQCAtMzY5OCw3ICszNjk4LDcgQEAgc3RhdGljIHZvaWQgY29uZmlndXJl
UmVuZGVyUGFzc1Rlc3REYXRhKGNvbnN0IGNoYXIqIHRlc3RTY3JpcHQsIFJlbmRlclBhc3NSZW1v
dmEKIAogICAgICAgICAgICAgICAgIEludFJlY3QgcXVhZFJlY3QgPSBJbnRSZWN0KDAsIDAsIDEs
IDEpOwogICAgICAgICAgICAgICAgIEludFJlY3QgY29udGVudHNDaGFuZ2VkUmVjdCA9IGNvbnRl
bnRzQ2hhbmdlZCA/IHF1YWRSZWN0IDogSW50UmVjdCgpOwotICAgICAgICAgICAgICAgIE93blB0
cjxDQ1JlbmRlclBhc3NEcmF3UXVhZD4gcXVhZCA9IENDUmVuZGVyUGFzc0RyYXdRdWFkOjpjcmVh
dGUodGVzdERhdGEuc2hhcmVkUXVhZFN0YXRlLmdldCgpLCBxdWFkUmVjdCwgbmV3UmVuZGVyUGFz
c0lkLCBpc1JlcGxpY2EsIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgMSwgY29u
dGVudHNDaGFuZ2VkUmVjdCk7CisgICAgICAgICAgICAgICAgT3duUHRyPENDUmVuZGVyUGFzc0Ry
YXdRdWFkPiBxdWFkID0gQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6OmNyZWF0ZSh0ZXN0RGF0YS5zaGFy
ZWRRdWFkU3RhdGUuZ2V0KCksIHF1YWRSZWN0LCBuZXdSZW5kZXJQYXNzSWQsIGlzUmVwbGljYSwg
MSwgY29udGVudHNDaGFuZ2VkUmVjdCk7CiAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q0NU
ZXN0UmVuZGVyUGFzcyo+KHJlbmRlclBhc3MuZ2V0KCkpLT5hcHBlbmRRdWFkKHF1YWQucmVsZWFz
ZSgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ1JlbmRlclN1cmZhY2VUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NSZW5kZXJTdXJmYWNlVGVzdC5jcHAKaW5kZXggYTk4OWNkNjAyZTg4
ZTY3MDc5YzQxMTA5YzE5OWU4YzNhMGI2MGFmYi4uYzk1ZDcxZTg0ZDE1OGRiYTk3ZDA1YmE5OWM1
Y2IxMGY4YzQxYWI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q1JlbmRlclN1cmZhY2VUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDUmVuZGVyU3VyZmFjZVRlc3QuY3BwCkBAIC04Niw3ICs4Niw2IEBAIFRFU1QoQ0NSZW5kZXJT
dXJmYWNlVGVzdCwgdmVyaWZ5U3VyZmFjZUNoYW5nZXNBcmVUcmFja2VkUHJvcGVybHkpCiAgICAg
RVhFQ1VURV9BTkRfVkVSSUZZX1NVUkZBQ0VfRElEX05PVF9DSEFOR0UocmVuZGVyU3VyZmFjZS0+
c2V0RHJhd09wYWNpdHkoMC41KSk7CiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVUkZBQ0VfRElE
X05PVF9DSEFOR0UocmVuZGVyU3VyZmFjZS0+c2V0RHJhd1RyYW5zZm9ybShkdW1teU1hdHJpeCkp
OwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVVJGQUNFX0RJRF9OT1RfQ0hBTkdFKHJlbmRlclN1
cmZhY2UtPnNldFJlcGxpY2FEcmF3VHJhbnNmb3JtKGR1bW15TWF0cml4KSk7Ci0gICAgRVhFQ1VU
RV9BTkRfVkVSSUZZX1NVUkZBQ0VfRElEX05PVF9DSEFOR0UocmVuZGVyU3VyZmFjZS0+c2V0T3Jp
Z2luVHJhbnNmb3JtKGR1bW15TWF0cml4KSk7CiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVUkZB
Q0VfRElEX05PVF9DSEFOR0UocmVuZGVyU3VyZmFjZS0+Y2xlYXJMYXllckxpc3QoKSk7CiB9CiAK
QEAgLTEwNiw3ICsxMDUsNyBAQCBURVNUKENDUmVuZGVyU3VyZmFjZVRlc3QsIHNhbml0eUNoZWNr
U3VyZmFjZUNyZWF0ZXNDb3JyZWN0U2hhcmVkUXVhZFN0YXRlKQogCiAgICAgb3JpZ2luLnRyYW5z
bGF0ZSgzMCwgNDApOwogCi0gICAgcmVuZGVyU3VyZmFjZS0+c2V0T3JpZ2luVHJhbnNmb3JtKG9y
aWdpbik7CisgICAgcmVuZGVyU3VyZmFjZS0+c2V0RHJhd1RyYW5zZm9ybShvcmlnaW4pOwogICAg
IHJlbmRlclN1cmZhY2UtPnNldENvbnRlbnRSZWN0KGNvbnRlbnRSZWN0KTsKICAgICByZW5kZXJT
dXJmYWNlLT5zZXRDbGlwUmVjdChjbGlwUmVjdCk7CiAgICAgcmVuZGVyU3VyZmFjZS0+c2V0U2Np
c3NvclJlY3QoY2xpcFJlY3QpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>