<?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>218076</bug_id>
          
          <creation_ts>2020-10-22 03:45:35 -0700</creation_ts>
          <short_desc>Make scroll-margin independent of scroll snapping and have it apply when scrolling to anchors</short_desc>
          <delta_ts>2020-10-29 15:04:52 -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>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=218358</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>189265</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Martin Robinson">mrobinson</reporter>
          <assigned_to name="Martin Robinson">mrobinson</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dev</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>rego</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1700594</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2020-10-22 03:45:35 -0700</bug_when>
    <thetext>The latest version of the CSS Scroll Snap specification says that scroll-margin should be available independently of scroll snap and it should apply when scrolling to anchors and targets of scrollIntoView(). See https://drafts.csswg.org/css-scroll-snap-1/#scroll-margin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702272</commentid>
    <comment_count>1</comment_count>
      <attachid>412517</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2020-10-28 04:50:15 -0700</bug_when>
    <thetext>Created attachment 412517
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702275</commentid>
    <comment_count>2</comment_count>
      <attachid>412519</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2020-10-28 05:07:33 -0700</bug_when>
    <thetext>Created attachment 412519
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702293</commentid>
    <comment_count>3</comment_count>
      <attachid>412524</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2020-10-28 06:26:51 -0700</bug_when>
    <thetext>Created attachment 412524
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702339</commentid>
    <comment_count>4</comment_count>
      <attachid>412524</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-10-28 09:29:14 -0700</bug_when>
    <thetext>Comment on attachment 412524
Patch

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

&gt; Source/WebCore/rendering/RenderBox.cpp:5070
&gt; +    const LayoutSize boxSize = size();
&gt; +    const LayoutBoxExtent margin(
&gt; +        valueForLength(scrollMargin.top(), boxSize.height()),
&gt; +        valueForLength(scrollMargin.right(), boxSize.width()),
&gt; +        valueForLength(scrollMargin.bottom(), boxSize.height()),
&gt; +        valueForLength(scrollMargin.left(), boxSize.width()));
&gt; +    anchorRect.expand(margin);

This doesn&apos;t take into account transforms in the ancestor chain. Seems like you need to take margins into account before the localToAbsolute computation, I think? What&apos;s the expected behavior with transforms?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702341</commentid>
    <comment_count>5</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2020-10-28 09:33:17 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #4)
&gt; Comment on attachment 412524 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=412524&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderBox.cpp:5070
&gt; &gt; +    const LayoutSize boxSize = size();
&gt; &gt; +    const LayoutBoxExtent margin(
&gt; &gt; +        valueForLength(scrollMargin.top(), boxSize.height()),
&gt; &gt; +        valueForLength(scrollMargin.right(), boxSize.width()),
&gt; &gt; +        valueForLength(scrollMargin.bottom(), boxSize.height()),
&gt; &gt; +        valueForLength(scrollMargin.left(), boxSize.width()));
&gt; &gt; +    anchorRect.expand(margin);
&gt; 
&gt; This doesn&apos;t take into account transforms in the ancestor chain. Seems like
&gt; you need to take margins into account before the localToAbsolute
&gt; computation, I think? What&apos;s the expected behavior with transforms?

I was a bit surprised by this at first, but, unless I am misunderstanding, it seems like this margin should be added in the coordinate system of the scroll container. The scroll-margin spec [1] says:

&quot;Values represent outsets defining the scroll snap area that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container’s coordinate space), then adding the specified outsets.&quot;

1. https://drafts.csswg.org/css-scroll-snap-1/#scroll-margin</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702345</commentid>
    <comment_count>6</comment_count>
      <attachid>412524</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-10-28 09:47:06 -0700</bug_when>
    <thetext>Comment on attachment 412524
Patch

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

&gt;&gt;&gt; Source/WebCore/rendering/RenderBox.cpp:5070
&gt;&gt;&gt; +    anchorRect.expand(margin);
&gt;&gt; 
&gt;&gt; This doesn&apos;t take into account transforms in the ancestor chain. Seems like you need to take margins into account before the localToAbsolute computation, I think? What&apos;s the expected behavior with transforms?
&gt; 
&gt; I was a bit surprised by this at first, but, unless I am misunderstanding, it seems like this margin should be added in the coordinate system of the scroll container. The scroll-margin spec [1] says:
&gt; 
&gt; &quot;Values represent outsets defining the scroll snap area that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container’s coordinate space), then adding the specified outsets.&quot;
&gt; 
&gt; 1. https://drafts.csswg.org/css-scroll-snap-1/#scroll-margin

Huh, I guess that&apos;s clear. Probably add a comment linking to that then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702651</commentid>
    <comment_count>7</comment_count>
      <attachid>412625</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2020-10-29 01:40:57 -0700</bug_when>
    <thetext>Created attachment 412625
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702665</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-29 03:46:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/70803885&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702667</commentid>
    <comment_count>9</comment_count>
      <attachid>412631</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2020-10-29 03:51:45 -0700</bug_when>
    <thetext>Created attachment 412631
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702670</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-29 04:02:16 -0700</bug_when>
    <thetext>mrobinson@webkit.org does not have committer permissions according to https://svn.webkit.org/repository/webkit/trunk/Tools/Scripts/webkitpy/common/config/contributors.json.

Rejecting attachment 412631 from commit queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702675</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-29 04:37:25 -0700</bug_when>
    <thetext>Committed r269144: &lt;https://trac.webkit.org/changeset/269144&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 412631.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702676</commentid>
    <comment_count>12</comment_count>
    <who name="dakur">dev</who>
    <bug_when>2020-10-29 05:16:29 -0700</bug_when>
    <thetext>Thank you guys very much for finally quick fix! Any ideas when it may land in user lands?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412517</attachid>
            <date>2020-10-28 04:50:15 -0700</date>
            <delta_ts>2020-10-28 05:07:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218076-20201028125013.patch</filename>
            <type>text/plain</type>
            <size>25791</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzQ1MWEyOGI0NWEwYmRj
MmQzZjAwMDEzMTY2ZTBmZmM3YTQ4OTRlMy4uMDBmNzM4MmY5NDBmNTAxNDJhNGI2MzI3ZTg3YTY3
NjNlYzdmNWEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDIwLTEwLTI4ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBNYWtlIHNjcm9s
bC1tYXJnaW4gaW5kZXBlbmRlbnQgb2Ygc2Nyb2xsIHNuYXBwaW5nIGFuZCBoYXZlIGl0IGFwcGx5
IHdoZW4gc2Nyb2xsaW5nIHRvIGFuY2hvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxODA3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudDo6c2Nyb2xsSW50b1ZpZXcpOiBVc2UgYWJzb2x1dGVBbmNob3JSZWN0V2l0aFNjcm9s
bE1hcmdpbiwgdGFraW5nIGludG8KKyAgICAgICAgYWNjb3VudCBzY3JvbGwtbWFyZ2luLgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2Nyb2xsSW50b1ZpZXdJZk5vdFZpc2libGUpOiBE
aXR0by4KKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZVZpZXc6OnNjcm9sbFRvQW5jaG9yKTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmFic29sdXRlQW5jaG9y
UmVjdFdpdGhTY3JvbGxNYXJnaW4gY29uc3QpOiBBZGRlZCB0aGlzIG92ZXJyaWRlCisgICAgICAg
IHdoaWNoIHByb3Blcmx5IGNvbnZlcnRzIHRoZSBzY3JvbGwtbWFyZ2luIHRvIExheW91dFVuaXRz
IGFuZCBhcHBsaWVzIGl0IHRvIGFic29sdXRlQW5jaG9yUmVjdC4KKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQm94Lmg6IEFkZGVkIG1ldGhvZCBkZWNsYXJhdGlvbi4KKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50
OjphYnNvbHV0ZUFuY2hvclJlY3RXaXRoU2Nyb2xsTWFyZ2luIGNvbnN0KTogQWRkZWQgaW1wbGVt
ZW50YXRpb24KKyAgICAgICAgdGhhdCBzaW1wbHkgY2FsbHMgYWJzb2x1dGVBbmNob3JSZWN0Lgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50Lmg6IEFkZGVkIGRlY2xhcmF0aW9uIG9m
IG5ldyB2aXJ0dWFsCisgICAgICAgIGFic29sdXRlQW5jaG9yUmVjdFdpdGhTY3JvbGxNYXJnaW4u
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6c3R5bGVEaWRDaGFuZ2UpOiBHZXQg
dGhlIHNjcm9sbC1tYXJnaW4gZGlyZWN0bHkgZnJvbSB0aGUKKyAgICAgICAgc3R5bGUgaW5zdGVh
ZCBvZiB0aGUgbm93LXJlbW92ZWQgU2Nyb2xsU25hcEFyZWEuCisgICAgICAgICogcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpz
Y3JvbGxNYXJnaW4gY29uc3QpOiBNb3ZlIHNjcm9sbC1tYXJnaW4gYW5kIHNjcm9sbC1zbmFwLWFs
aWduIHRvCisgICAgICAgIG1fcmFyZU5vbkluaGVyaXRlZERhdGEgYW5kIGdldCByaWQgb2YgaW50
ZXJtZWRpYXRlIFNjcm9sbFNuYXBBcmVhLiBUaGVzZSB0d28gcHJvcGVydGllcworICAgICAgICBh
cmUgbm8gaW5kZXBlbmRlbnQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2Nyb2xs
TWFyZ2luVG9wIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6
c2Nyb2xsTWFyZ2luQm90dG9tIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6c2Nyb2xsTWFyZ2luTGVmdCBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU3R5bGU6OnNjcm9sbE1hcmdpblJpZ2h0IGNvbnN0KTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0U2Nyb2xsTWFyZ2luVG9wKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0U2Nyb2xsTWFyZ2luQm90dG9tKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0U2Nyb2xsTWFyZ2luTGVmdCk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFNjcm9sbE1hcmdpblJpZ2h0
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2Nyb2xsU25hcEFsaWdu
IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0U2Nyb2xs
U25hcEFsaWduKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aGFzU25h
cFBvc2l0aW9uIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6
c2Nyb2xsU25hcEFyZWEgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5oOiBBZGQgYWNjZXNzb3JzIGZvciBzY3JvbGwtbWFyZ2luIGFuZCBtb3Zl
ZCBoYXNTbmFwUG9zaXRpb24KKyAgICAgICAgZnJvbSBTY3JvbGxTbmFwQXJlYS4KKyAgICAgICAg
KiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHA6IFJlbW92ZWQg
aW50ZXJtZWRpYXRlIFNjcm9sbFNuYXBBcmVhIGRhdGEKKyAgICAgICAgc3RydWN0dXJlIGFuZCBt
b3ZlZCBtZW1iZXJzIGhlcmUuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVOb25Jbmhlcml0
ZWREYXRhOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09IGNvbnN0KTogRGl0dG8u
CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaDog
RGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlU2Nyb2xsU25hcFBvaW50cy5j
cHA6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTY3JvbGxTbmFwQXJlYTo6Y29weSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZVNjcm9sbFNuYXBBcmVhOjpT
dHlsZVNjcm9sbFNuYXBBcmVhKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
U3R5bGVTY3JvbGxTbmFwUG9pbnRzLmg6IFJlbW92ZWQgU2Nyb2xsU25hcEFyZWEuCisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVNjcm9sbFNuYXBBcmVhOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVTY3JvbGxTbmFwQXJlYTo6aGFzU25hcFBvc2l0aW9uIGNvbnN0KTog
RGVsZXRlZC4KKwogMjAyMC0xMC0yNyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxl
LmNvbT4KIAogICAgICAgICBbQ29uY3VycmVudCBkaXNwbGF5IGxpc3RzXSBBZGQgYWx0ZXJuYXRl
IHZlcnNpb25zIG9mIGV4aXN0aW5nIGRpc3BsYXkgbGlzdCBpdGVtcyB0aGF0IG9ubHkgY29udGFp
biBpbmxpbmUgZGF0YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGQ4OGIwYjlkNTQ2ZjZkNTgx
ZWVjNWFmMDQ0MmM0ZGM3OGE0ZmE4Y2EuLjVlZjNmZTk3ODhmZGRhZWY3ZmE5Y2VmNTZiZWVjODY1
YzNiOWM1NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTg2MSw3ICs4NjEsNyBAQCB2b2lk
IEVsZW1lbnQ6OnNjcm9sbEludG9WaWV3KE9wdGlvbmFsPFZhcmlhbnQ8Ym9vbCwgU2Nyb2xsSW50
b1ZpZXdPcHRpb25zPj4mJiBhcgogICAgICAgICByZXR1cm47CiAKICAgICBib29sIGluc2lkZUZp
eGVkOwotICAgIExheW91dFJlY3QgYWJzb2x1dGVCb3VuZHMgPSByZW5kZXJlcigpLT5hYnNvbHV0
ZUFuY2hvclJlY3QoJmluc2lkZUZpeGVkKTsKKyAgICBMYXlvdXRSZWN0IGFic29sdXRlQm91bmRz
ID0gcmVuZGVyZXIoKS0+YWJzb2x1dGVBbmNob3JSZWN0V2l0aFNjcm9sbE1hcmdpbigmaW5zaWRl
Rml4ZWQpOwogCiAgICAgU2Nyb2xsSW50b1ZpZXdPcHRpb25zIG9wdGlvbnM7CiAgICAgaWYgKGFy
ZykgewpAQCAtODk1LDcgKzg5NSw3IEBAIHZvaWQgRWxlbWVudDo6c2Nyb2xsSW50b1ZpZXcoYm9v
bCBhbGlnblRvVG9wKQogICAgICAgICByZXR1cm47CiAKICAgICBib29sIGluc2lkZUZpeGVkOwot
ICAgIExheW91dFJlY3QgYWJzb2x1dGVCb3VuZHMgPSByZW5kZXJlcigpLT5hYnNvbHV0ZUFuY2hv
clJlY3QoJmluc2lkZUZpeGVkKTsKKyAgICBMYXlvdXRSZWN0IGFic29sdXRlQm91bmRzID0gcmVu
ZGVyZXIoKS0+YWJzb2x1dGVBbmNob3JSZWN0V2l0aFNjcm9sbE1hcmdpbigmaW5zaWRlRml4ZWQp
OwogICAgIC8vIEFsaWduIHRvIHRoZSB0b3AgLyBib3R0b20gYW5kIHRvIHRoZSBjbG9zZXN0IGVk
Z2UuCiAgICAgaWYgKGFsaWduVG9Ub3ApCiAgICAgICAgIHJlbmRlcmVyKCktPnNjcm9sbFJlY3RU
b1Zpc2libGUoYWJzb2x1dGVCb3VuZHMsIGluc2lkZUZpeGVkLCB7IFNlbGVjdGlvblJldmVhbE1v
ZGU6OlJldmVhbCwgU2Nyb2xsQWxpZ25tZW50OjphbGlnblRvRWRnZUlmTmVlZGVkLCBTY3JvbGxB
bGlnbm1lbnQ6OmFsaWduVG9wQWx3YXlzLCBTaG91bGRBbGxvd0Nyb3NzT3JpZ2luU2Nyb2xsaW5n
OjpObyB9KTsKQEAgLTkxMSw3ICs5MTEsNyBAQCB2b2lkIEVsZW1lbnQ6OnNjcm9sbEludG9WaWV3
SWZOZWVkZWQoYm9vbCBjZW50ZXJJZk5lZWRlZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYm9v
bCBpbnNpZGVGaXhlZDsKLSAgICBMYXlvdXRSZWN0IGFic29sdXRlQm91bmRzID0gcmVuZGVyZXIo
KS0+YWJzb2x1dGVBbmNob3JSZWN0KCZpbnNpZGVGaXhlZCk7CisgICAgTGF5b3V0UmVjdCBhYnNv
bHV0ZUJvdW5kcyA9IHJlbmRlcmVyKCktPmFic29sdXRlQW5jaG9yUmVjdFdpdGhTY3JvbGxNYXJn
aW4oJmluc2lkZUZpeGVkKTsKICAgICBpZiAoY2VudGVySWZOZWVkZWQpCiAgICAgICAgIHJlbmRl
cmVyKCktPnNjcm9sbFJlY3RUb1Zpc2libGUoYWJzb2x1dGVCb3VuZHMsIGluc2lkZUZpeGVkLCB7
IFNlbGVjdGlvblJldmVhbE1vZGU6OlJldmVhbCwgU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNlbnRl
cklmTmVlZGVkLCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduQ2VudGVySWZOZWVkZWQsIFNob3VsZEFs
bG93Q3Jvc3NPcmlnaW5TY3JvbGxpbmc6Ok5vIH0pOwogICAgIGVsc2UKQEAgLTkyNiw3ICs5MjYs
NyBAQCB2b2lkIEVsZW1lbnQ6OnNjcm9sbEludG9WaWV3SWZOb3RWaXNpYmxlKGJvb2wgY2VudGVy
SWZOb3RWaXNpYmxlKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgYm9vbCBpbnNpZGVGaXhl
ZDsKLSAgICBMYXlvdXRSZWN0IGFic29sdXRlQm91bmRzID0gcmVuZGVyZXIoKS0+YWJzb2x1dGVB
bmNob3JSZWN0KCZpbnNpZGVGaXhlZCk7CisgICAgTGF5b3V0UmVjdCBhYnNvbHV0ZUJvdW5kcyA9
IHJlbmRlcmVyKCktPmFic29sdXRlQW5jaG9yUmVjdFdpdGhTY3JvbGxNYXJnaW4oJmluc2lkZUZp
eGVkKTsKICAgICBpZiAoY2VudGVySWZOb3RWaXNpYmxlKQogICAgICAgICByZW5kZXJlcigpLT5z
Y3JvbGxSZWN0VG9WaXNpYmxlKGFic29sdXRlQm91bmRzLCBpbnNpZGVGaXhlZCwgeyBTZWxlY3Rp
b25SZXZlYWxNb2RlOjpSZXZlYWwsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25DZW50ZXJJZk5vdFZp
c2libGUsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25DZW50ZXJJZk5vdFZpc2libGUsIFNob3VsZEFs
bG93Q3Jvc3NPcmlnaW5TY3JvbGxpbmc6Ok5vIH0pOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmNwcAppbmRleCAyYzQ4MjYzODU5YmFlNTk2N2RjZjMxYmJiMDA4YjMwNzliMTMyYWFm
Li4wZjRjOGIwM2FhOTk1MDY4Mzg4ZjAyOWM3YmM0NjE1MTFlNjA1NWU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuY3BwCkBAIC0zMTc2LDcgKzMxNzYsNyBAQCB2b2lkIEZyYW1lVmlldzo6c2Ny
b2xsVG9BbmNob3IoKQogICAgIExheW91dFJlY3QgcmVjdDsKICAgICBib29sIGluc2lkZUZpeGVk
ID0gZmFsc2U7CiAgICAgaWYgKGFuY2hvck5vZGUgIT0gZnJhbWUoKS5kb2N1bWVudCgpICYmIGFu
Y2hvck5vZGUtPnJlbmRlcmVyKCkpCi0gICAgICAgIHJlY3QgPSBhbmNob3JOb2RlLT5yZW5kZXJl
cigpLT5hYnNvbHV0ZUFuY2hvclJlY3QoJmluc2lkZUZpeGVkKTsKKyAgICAgICAgcmVjdCA9IGFu
Y2hvck5vZGUtPnJlbmRlcmVyKCktPmFic29sdXRlQW5jaG9yUmVjdFdpdGhTY3JvbGxNYXJnaW4o
Jmluc2lkZUZpeGVkKTsKIAogICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxpbmcsIHN0cmVhbSA8
PCAiIGFuY2hvciBub2RlIHJlY3QgIiA8PCByZWN0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmNwcAppbmRleCBmMmZjOTZhMzBhM2IzNDIzYjg1YjZiYWRkMzMwYmMyOWFmYTMx
YjcxLi40YmY0MGY0MGIwNTM0M2Q2OTgxYzdmYTZlNjA2MDNiNGM5MWYxZDhhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtMTYxLDcgKzE2MSw3IEBAIHZvaWQgUmVu
ZGVyQm94Ojp3aWxsQmVEZXN0cm95ZWQoKQogICAgIHJlbW92ZUNvbnRyb2xTdGF0ZXNGb3JSZW5k
ZXJlcigqdGhpcyk7CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIGlmIChoYXNJ
bml0aWFsaXplZFN0eWxlKCkgJiYgc3R5bGUoKS5zY3JvbGxTbmFwQXJlYSgpLmhhc1NuYXBQb3Np
dGlvbigpKQorICAgIGlmIChoYXNJbml0aWFsaXplZFN0eWxlKCkgJiYgc3R5bGUoKS5oYXNTbmFw
UG9zaXRpb24oKSkKICAgICAgICAgdmlldygpLnVucmVnaXN0ZXJCb3hXaXRoU2Nyb2xsU25hcFBv
c2l0aW9ucygqdGhpcyk7CiAjZW5kaWYKIApAQCAtMjc3LDggKzI3Nyw4IEBAIHZvaWQgUmVuZGVy
Qm94OjpzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0
eWxlJiBuZXdTdHlsCiAgICAgICAgIHZpZXcoKS5yZXBhaW50Um9vdENvbnRlbnRzKCk7CiAKICNp
ZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIGJvb2wgYm94Q29udHJpYnV0ZXNTbmFwUG9z
aXRpb25zID0gbmV3U3R5bGUuc2Nyb2xsU25hcEFyZWEoKS5oYXNTbmFwUG9zaXRpb24oKTsKLSAg
ICBpZiAoYm94Q29udHJpYnV0ZXNTbmFwUG9zaXRpb25zIHx8IChvbGRTdHlsZSAmJiBvbGRTdHls
ZS0+c2Nyb2xsU25hcEFyZWEoKS5oYXNTbmFwUG9zaXRpb24oKSkpIHsKKyAgICBib29sIGJveENv
bnRyaWJ1dGVzU25hcFBvc2l0aW9ucyA9IG5ld1N0eWxlLmhhc1NuYXBQb3NpdGlvbigpOworICAg
IGlmIChib3hDb250cmlidXRlc1NuYXBQb3NpdGlvbnMgfHwgKG9sZFN0eWxlICYmIG9sZFN0eWxl
LT5oYXNTbmFwUG9zaXRpb24oKSkpIHsKICAgICAgICAgaWYgKGJveENvbnRyaWJ1dGVzU25hcFBv
c2l0aW9ucykKICAgICAgICAgICAgIHZpZXcoKS5yZWdpc3RlckJveFdpdGhTY3JvbGxTbmFwUG9z
aXRpb25zKCp0aGlzKTsKICAgICAgICAgZWxzZQpAQCAtNTA1NCw0ICs1MDU0LDIyIEBAIGNvbnN0
IFJlbmRlckJveCogUmVuZGVyQm94OjpmaW5kRW5jbG9zaW5nU2Nyb2xsYWJsZUNvbnRhaW5lcigp
IGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK0xheW91dFJlY3QgUmVuZGVyQm94Ojph
YnNvbHV0ZUFuY2hvclJlY3RXaXRoU2Nyb2xsTWFyZ2luKGJvb2wqIGluc2lkZUZpeGVkKSBjb25z
dAoreworICAgIExheW91dFJlY3QgYW5jaG9yUmVjdCA9IGFic29sdXRlQW5jaG9yUmVjdChpbnNp
ZGVGaXhlZCk7CisgICAgY29uc3QgTGVuZ3RoQm94JiBzY3JvbGxNYXJnaW4gPSBzdHlsZSgpLnNj
cm9sbE1hcmdpbigpOworICAgIGlmIChzY3JvbGxNYXJnaW4uaXNaZXJvKCkpCisgICAgICAgIHJl
dHVybiBhbmNob3JSZWN0OworCisgICAgY29uc3QgTGF5b3V0U2l6ZSBib3hTaXplID0gc2l6ZSgp
OworICAgIGNvbnN0IExheW91dEJveEV4dGVudCBtYXJnaW4oCisgICAgICAgIHZhbHVlRm9yTGVu
Z3RoKHNjcm9sbE1hcmdpbi50b3AoKSwgYm94U2l6ZS5oZWlnaHQoKSksCisgICAgICAgIHZhbHVl
Rm9yTGVuZ3RoKHNjcm9sbE1hcmdpbi5yaWdodCgpLCBib3hTaXplLndpZHRoKCkpLAorICAgICAg
ICB2YWx1ZUZvckxlbmd0aChzY3JvbGxNYXJnaW4uYm90dG9tKCksIGJveFNpemUuaGVpZ2h0KCkp
LAorICAgICAgICB2YWx1ZUZvckxlbmd0aChzY3JvbGxNYXJnaW4ubGVmdCgpLCBib3hTaXplLndp
ZHRoKCkpKTsKKyAgICBhbmNob3JSZWN0LmV4cGFuZChtYXJnaW4pOworCisgICAgcmV0dXJuIGFu
Y2hvclJlY3Q7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guaAppbmRleCBmODlhNjRiNTEwY2UzMzhiYzA1ODdiMjI4ODM0NjYzNDIwY2M2
ZTE3Li5lMDgxNDVkOGUwZTlmNjI2MTMwMzliMTZlNGExNjBhYzE3OWNhZWMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCkBAIC02NDQsNiArNjQ0LDggQEAgb3ZlcnJpZGU7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0Qm9yZGVyQm94UmVjdEZvclBhaW50aW5nKExheW91dFJl
Y3QmKSB7IH07CiAKKyAgICBMYXlvdXRSZWN0IGFic29sdXRlQW5jaG9yUmVjdFdpdGhTY3JvbGxN
YXJnaW4oYm9vbCogaW5zaWRlRml4ZWQgPSBudWxscHRyKSBjb25zdCBvdmVycmlkZTsKKwogcHJv
dGVjdGVkOgogICAgIFJlbmRlckJveChFbGVtZW50JiwgUmVuZGVyU3R5bGUmJiwgQmFzZVR5cGVG
bGFncyk7CiAgICAgUmVuZGVyQm94KERvY3VtZW50JiwgUmVuZGVyU3R5bGUmJiwgQmFzZVR5cGVG
bGFncyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKaW5kZXgg
YmRjMDE1ZmY2YmUwZTI4YWI1ZTliYWMwYTI3YzNjOTkwZWEyMWRjNi4uZjg0YjdkNTkyY2ZkY2Nk
ODhjMGEwYzk2NmY1ZGU2Zjc0ZTM4MWQ2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJFbGVtZW50LmNwcApAQCAtMTY1Nyw2ICsxNjU3LDExIEBAIExheW91dFJlY3QgUmVuZGVy
RWxlbWVudDo6YWJzb2x1dGVBbmNob3JSZWN0KGJvb2wqIGluc2lkZUZpeGVkKSBjb25zdAogICAg
IHJldHVybiBlbmNsb3NpbmdMYXlvdXRSZWN0KEZsb2F0UmVjdCh1cHBlckxlZnQsIGxvd2VyUmln
aHQuZXhwYW5kZWRUbyh1cHBlckxlZnQpIC0gdXBwZXJMZWZ0KSk7CiB9CiAKK0xheW91dFJlY3Qg
UmVuZGVyRWxlbWVudDo6YWJzb2x1dGVBbmNob3JSZWN0V2l0aFNjcm9sbE1hcmdpbihib29sKiBp
bnNpZGVGaXhlZCkgY29uc3QKK3sKKyAgICByZXR1cm4gYWJzb2x1dGVBbmNob3JSZWN0KGluc2lk
ZUZpeGVkKTsKK30KKwogY29uc3QgUmVuZGVyRWxlbWVudCogUmVuZGVyRWxlbWVudDo6ZW5jbG9z
aW5nUmVuZGVyZXJXaXRoVGV4dERlY29yYXRpb24oT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiB0
ZXh0RGVjb3JhdGlvbiwgYm9vbCBmaXJzdExpbmUpIGNvbnN0CiB7CiAgICAgY29uc3QgUmVuZGVy
RWxlbWVudCogY3VycmVudCA9IHRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuaAppbmRleCBiODBkMjhiYmM1M2FlMDE5OGIwOTE4MWYxYzcyNGNiOGZlZjg0NTQ0Li43
NjNjNjE3ZjFhNjM1ZGYxOWRlMDA1MDM0Y2M4OWU0NDMzZDQ2OTFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKQEAgLTE1NSwxMSArMTU1LDE1IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgY2hlY2tGb3JSZXBhaW50RHVyaW5nTGF5b3V0KCkgY29uc3Q7CiAKLSAgICAv
LyBhbmNob3JSZWN0KCkgaXMgY29uY2VwdHVhbGx5IHNpbWlsYXIgdG8gYWJzb2x1dGVCb3VuZGlu
Z0JveFJlY3QoKSwgYnV0IGlzIGludGVuZGVkIGZvciBzY3JvbGxpbmcgdG8gYW4gYW5jaG9yLgot
ICAgIC8vIEZvciBpbmxpbmUgcmVuZGVyZXJzLCB0aGlzIGdldHMgdGhlIGxvZ2ljYWwgdG9wIGxl
ZnQgb2YgdGhlIGZpcnN0IGxlYWYgY2hpbGQgYW5kIHRoZSBsb2dpY2FsIGJvdHRvbSByaWdodCBv
ZiB0aGUKLSAgICAvLyBsYXN0IGxlYWYgY2hpbGQsIGNvbnZlcnRzIHRoZW0gdG8gYWJzb2x1dGUg
Y29vcmRpbmF0ZXMsIGFuZCBtYWtlcyBhIGJveCBvdXQgb2YgdGhlbS4KKyAgICAvLyBhYnNvbHV0
ZUFuY2hvclJlY3QoKSBpcyBjb25jZXB0dWFsbHkgc2ltaWxhciB0byBhYnNvbHV0ZUJvdW5kaW5n
Qm94UmVjdCgpLCBidXQgaXMgaW50ZW5kZWQgZm9yIHNjcm9sbGluZyB0byBhbgorICAgIC8vIGFu
Y2hvci4gRm9yIGlubGluZSByZW5kZXJlcnMsIHRoaXMgZ2V0cyB0aGUgbG9naWNhbCB0b3AgbGVm
dCBvZiB0aGUgZmlyc3QgbGVhZiBjaGlsZCBhbmQgdGhlIGxvZ2ljYWwgYm90dG9tCisgICAgLy8g
cmlnaHQgb2YgdGhlIGxhc3QgbGVhZiBjaGlsZCwgY29udmVydHMgdGhlbSB0byBhYnNvbHV0ZSBj
b29yZGluYXRlcywgYW5kIG1ha2VzIGEgYm94IG91dCBvZiB0aGVtLgogICAgIExheW91dFJlY3Qg
YWJzb2x1dGVBbmNob3JSZWN0KGJvb2wqIGluc2lkZUZpeGVkID0gbnVsbHB0cikgY29uc3Q7CiAK
KyAgICAvLyBhYnNvbHV0ZUFuY2hvclJlY3RXaXRoU2Nyb2xsTWFyZ2luKCkgaXMgc2ltaWxhciB0
byBhYnNvbHV0ZUFuY2hvclJlY3QsIGJ1dCBpdCBhbHNvIHRha2VzIGludG8gYWNjb3VudCBhbnkK
KyAgICAvLyBDU1Mgc2Nyb2xsLW1hcmdpbiB0aGF0IGlzIHNldCBpbiB0aGUgc3R5bGUgb2YgdGhp
cyBSZW5kZXJFbGVtZW50LgorICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBhYnNvbHV0ZUFuY2hvclJl
Y3RXaXRoU2Nyb2xsTWFyZ2luKGJvb2wqIGluc2lkZUZpeGVkID0gbnVsbHB0cikgY29uc3Q7CisK
ICAgICBib29sIGhhc0ZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIHN0eWxlKCkuaGFzRmlsdGVyKCk7
IH0KICAgICBib29sIGhhc0JhY2tkcm9wRmlsdGVyKCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKaW5kZXgg
ZjlmNDE5ZjZlOTEzNjk2MzAxMjQ0MDRhNGYzYzIyODg2NDY5NTBiNi4uZmM2ZDhmMzM4ZmNhNzM3
YjUxOWUzZWRhMmEwYjk3YTM4MmUzNmRjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcApAQCAtMTg1LDcgKzE4NSwxMiBAQCB2
b2lkIFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5j
ZSBkaWZmLCBjb25zdCBSZW5kZXJTdAogICAgICAgICAgICAgZnJhbWVWaWV3LnVwZGF0ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yU2Nyb2xsU25hcFByb3BlcnRpZXMoKTsKICAgICAgICAgfQogICAgIH0K
LSAgICBpZiAob2xkU3R5bGUgJiYgb2xkU3R5bGUtPnNjcm9sbFNuYXBBcmVhKCkgIT0gbmV3U3R5
bGUuc2Nyb2xsU25hcEFyZWEoKSkgeworCisgICAgYm9vbCBzY3JvbGxNYXJnaW5DaGFuZ2VkID0K
KyAgICAgICAgb2xkU3R5bGUgJiYgb2xkU3R5bGUtPnNjcm9sbE1hcmdpbigpICE9IG5ld1N0eWxl
LnNjcm9sbE1hcmdpbigpOworICAgIGJvb2wgc2Nyb2xsQWxpZ25DaGFuZ2VkID0KKyAgICAgICAg
b2xkU3R5bGUgJiYgb2xkU3R5bGUtPnNjcm9sbFNuYXBBbGlnbigpICE9IG5ld1N0eWxlLnNjcm9s
bFNuYXBBbGlnbigpOworICAgIGlmIChzY3JvbGxNYXJnaW5DaGFuZ2VkIHx8IHNjcm9sbEFsaWdu
Q2hhbmdlZCkgewogICAgICAgICBhdXRvKiBzY3JvbGxTbmFwQm94ID0gZW5jbG9zaW5nU2Nyb2xs
YWJsZUNvbnRhaW5lckZvclNuYXBwaW5nKCk7CiAgICAgICAgIGlmIChzY3JvbGxTbmFwQm94ICYm
IHNjcm9sbFNuYXBCb3gtPmxheWVyKCkpIHsKICAgICAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxl
JiBzdHlsZSA9IHNjcm9sbFNuYXBCb3gtPnN0eWxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCAzNjA5OTc3NmRlNTcxOTUzNGE3ZTY5
NGZjOGM0N2IwNTI0NDMzZGQzLi4zMTMwZjE4MTkzYmJkMmViZDdiMDRjYjM3NTk1YzMyYmNlNGZm
NTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5j
cHAKQEAgLTIzOTIsNiArMjM5Miw1MSBAQCB2b2lkIFJlbmRlclN0eWxlOjpzZXROb25Jbmhlcml0
ZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIFJlZgogICAgIG1f
cmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkuY3VzdG9tUHJvcGVydGllcy5hY2Nlc3MoKS5z
ZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIFdURk1vdmUodmFsdWUpKTsKIH0KIAorY29uc3Qg
TGVuZ3RoQm94JiBSZW5kZXJTdHlsZTo6c2Nyb2xsTWFyZ2luKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+c2Nyb2xsTWFyZ2luOworfQorCitjb25zdCBMZW5n
dGgmIFJlbmRlclN0eWxlOjpzY3JvbGxNYXJnaW5Ub3AoKSBjb25zdAoreworICAgIHJldHVybiBz
Y3JvbGxNYXJnaW4oKS50b3AoKTsKK30KKworY29uc3QgTGVuZ3RoJiBSZW5kZXJTdHlsZTo6c2Ny
b2xsTWFyZ2luQm90dG9tKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc2Nyb2xsTWFyZ2luKCkuYm90
dG9tKCk7Cit9CisKK2NvbnN0IExlbmd0aCYgUmVuZGVyU3R5bGU6OnNjcm9sbE1hcmdpbkxlZnQo
KSBjb25zdAoreworICAgIHJldHVybiBzY3JvbGxNYXJnaW4oKS5sZWZ0KCk7Cit9CisKK2NvbnN0
IExlbmd0aCYgUmVuZGVyU3R5bGU6OnNjcm9sbE1hcmdpblJpZ2h0KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gc2Nyb2xsTWFyZ2luKCkucmlnaHQoKTsKK30KKwordm9pZCBSZW5kZXJTdHlsZTo6c2V0
U2Nyb2xsTWFyZ2luVG9wKExlbmd0aCYmIGxlbmd0aCkKK3sKKyAgICBTRVRfVkFSKG1fcmFyZU5v
bkluaGVyaXRlZERhdGEsIHNjcm9sbE1hcmdpbi50b3AoKSwgV1RGTW92ZShsZW5ndGgpKTsKK30K
Kwordm9pZCBSZW5kZXJTdHlsZTo6c2V0U2Nyb2xsTWFyZ2luQm90dG9tKExlbmd0aCYmIGxlbmd0
aCkKK3sKKyAgICBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHNjcm9sbE1hcmdpbi5i
b3R0b20oKSwgV1RGTW92ZShsZW5ndGgpKTsKK30KKwordm9pZCBSZW5kZXJTdHlsZTo6c2V0U2Ny
b2xsTWFyZ2luTGVmdChMZW5ndGgmJiBsZW5ndGgpCit7CisgICAgU0VUX1ZBUihtX3JhcmVOb25J
bmhlcml0ZWREYXRhLCBzY3JvbGxNYXJnaW4ubGVmdCgpLCBXVEZNb3ZlKGxlbmd0aCkpOworfQor
Cit2b2lkIFJlbmRlclN0eWxlOjpzZXRTY3JvbGxNYXJnaW5SaWdodChMZW5ndGgmJiBsZW5ndGgp
Cit7CisgICAgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBzY3JvbGxNYXJnaW4ucmln
aHQoKSwgV1RGTW92ZShsZW5ndGgpKTsKK30KKwogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVAp
CiAKIFNjcm9sbFNuYXBUeXBlIFJlbmRlclN0eWxlOjppbml0aWFsU2Nyb2xsU25hcFR5cGUoKQpA
QCAtMjQwNCwxMSArMjQ0OSw2IEBAIFNjcm9sbFNuYXBBbGlnbiBSZW5kZXJTdHlsZTo6aW5pdGlh
bFNjcm9sbFNuYXBBbGlnbigpCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotY29uc3QgU3R5bGVTY3Jv
bGxTbmFwQXJlYSYgUmVuZGVyU3R5bGU6OnNjcm9sbFNuYXBBcmVhKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gKm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnNjcm9sbFNuYXBBcmVhOwotfQotCiBjb25z
dCBTdHlsZVNjcm9sbFNuYXBQb3J0JiBSZW5kZXJTdHlsZTo6c2Nyb2xsU25hcFBvcnQoKSBjb25z
dAogewogICAgIHJldHVybiAqbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+c2Nyb2xsU25hcFBvcnQ7
CkBAIC0yNDQ2LDMyICsyNDg2LDcgQEAgY29uc3QgTGVuZ3RoJiBSZW5kZXJTdHlsZTo6c2Nyb2xs
UGFkZGluZ1JpZ2h0KCkgY29uc3QKIAogY29uc3QgU2Nyb2xsU25hcEFsaWduJiBSZW5kZXJTdHls
ZTo6c2Nyb2xsU25hcEFsaWduKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+c2Nyb2xsU25hcEFyZWEtPmFsaWdubWVudDsKLX0KLQotY29uc3QgTGVuZ3RoQm94
JiBSZW5kZXJTdHlsZTo6c2Nyb2xsTWFyZ2luKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+c2Nyb2xsU25hcEFyZWEtPnNjcm9sbE1hcmdpbjsKLX0KLQotY29u
c3QgTGVuZ3RoJiBSZW5kZXJTdHlsZTo6c2Nyb2xsTWFyZ2luVG9wKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gc2Nyb2xsTWFyZ2luKCkudG9wKCk7Ci19Ci0KLWNvbnN0IExlbmd0aCYgUmVuZGVyU3R5
bGU6OnNjcm9sbE1hcmdpbkJvdHRvbSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHNjcm9sbE1hcmdp
bigpLmJvdHRvbSgpOwotfQotCi1jb25zdCBMZW5ndGgmIFJlbmRlclN0eWxlOjpzY3JvbGxNYXJn
aW5MZWZ0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gc2Nyb2xsTWFyZ2luKCkubGVmdCgpOwotfQot
Ci1jb25zdCBMZW5ndGgmIFJlbmRlclN0eWxlOjpzY3JvbGxNYXJnaW5SaWdodCgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIHNjcm9sbE1hcmdpbigpLnJpZ2h0KCk7CisgICAgcmV0dXJuIG1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPnNjcm9sbFNuYXBBbGlnbjsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6
c2V0U2Nyb2xsU25hcFR5cGUoY29uc3QgU2Nyb2xsU25hcFR5cGUmIHR5cGUpCkBAIC0yNTAxLDI5
ICsyNTE2LDE0IEBAIHZvaWQgUmVuZGVyU3R5bGU6OnNldFNjcm9sbFBhZGRpbmdSaWdodChMZW5n
dGgmJiBsZW5ndGgpCiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldFNjcm9sbFNuYXBBbGlnbihjb25z
dCBTY3JvbGxTbmFwQWxpZ24mIGFsaWdubWVudCkKIHsKLSAgICBTRVRfTkVTVEVEX1ZBUihtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLCBzY3JvbGxTbmFwQXJlYSwgYWxpZ25tZW50LCBhbGlnbm1lbnQp
OwotfQotCi12b2lkIFJlbmRlclN0eWxlOjpzZXRTY3JvbGxNYXJnaW5Ub3AoTGVuZ3RoJiYgbGVu
Z3RoKQotewotICAgIFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHNjcm9s
bFNuYXBBcmVhLCBzY3JvbGxNYXJnaW4udG9wKCksIFdURk1vdmUobGVuZ3RoKSk7CisgICAgU0VU
X1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBzY3JvbGxTbmFwQWxpZ24sIGFsaWdubWVudCk7
CiB9CiAKLXZvaWQgUmVuZGVyU3R5bGU6OnNldFNjcm9sbE1hcmdpbkJvdHRvbShMZW5ndGgmJiBs
ZW5ndGgpCi17Ci0gICAgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgc2Ny
b2xsU25hcEFyZWEsIHNjcm9sbE1hcmdpbi5ib3R0b20oKSwgV1RGTW92ZShsZW5ndGgpKTsKLX0K
LQotdm9pZCBSZW5kZXJTdHlsZTo6c2V0U2Nyb2xsTWFyZ2luTGVmdChMZW5ndGgmJiBsZW5ndGgp
Citib29sIFJlbmRlclN0eWxlOjpoYXNTbmFwUG9zaXRpb24oKSBjb25zdAogewotICAgIFNFVF9O
RVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHNjcm9sbFNuYXBBcmVhLCBzY3JvbGxN
YXJnaW4ubGVmdCgpLCBXVEZNb3ZlKGxlbmd0aCkpOworICAgIGNvbnN0IFNjcm9sbFNuYXBBbGln
biYgYWxpZ25tZW50ID0gdGhpcy0+c2Nyb2xsU25hcEFsaWduKCk7CisgICAgcmV0dXJuIGFsaWdu
bWVudC54ICE9IFNjcm9sbFNuYXBBeGlzQWxpZ25UeXBlOjpOb25lIHx8IGFsaWdubWVudC55ICE9
IFNjcm9sbFNuYXBBeGlzQWxpZ25UeXBlOjpOb25lOwogfQotCi12b2lkIFJlbmRlclN0eWxlOjpz
ZXRTY3JvbGxNYXJnaW5SaWdodChMZW5ndGgmJiBsZW5ndGgpCi17Ci0gICAgU0VUX05FU1RFRF9W
QVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgc2Nyb2xsU25hcEFyZWEsIHNjcm9sbE1hcmdpbi5y
aWdodCgpLCBXVEZNb3ZlKGxlbmd0aCkpOwotfQotCiAjZW5kaWYKIAogYm9vbCBSZW5kZXJTdHls
ZTo6aGFzUmVmZXJlbmNlRmlsdGVyT25seSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IDRhMjc1YmIxMGIzZWUyNGIwYTM2YjU5MTI1
MTVlMTFhODkwYmQ5M2EuLjYxOTM0NGFhNmM2NGY0YjY5YjdlODRiYTk1ZGNjOGU5NDYzYTdmMmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC03
MTksNyArNzE5LDE1IEBAIHB1YmxpYzoKICAgICBPcHRpb25TZXQ8VG91Y2hBY3Rpb24+IGVmZmVj
dGl2ZVRvdWNoQWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPmVm
ZmVjdGl2ZVRvdWNoQWN0aW9uczsgfQogICAgIE9wdGlvblNldDxFdmVudExpc3RlbmVyUmVnaW9u
VHlwZT4gZXZlbnRMaXN0ZW5lclJlZ2lvblR5cGVzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5o
ZXJpdGVkRGF0YS0+ZXZlbnRMaXN0ZW5lclJlZ2lvblR5cGVzOyB9CiAKKyAgICBjb25zdCBMZW5n
dGhCb3gmIHNjcm9sbE1hcmdpbigpIGNvbnN0OworICAgIGNvbnN0IExlbmd0aCYgc2Nyb2xsTWFy
Z2luVG9wKCkgY29uc3Q7CisgICAgY29uc3QgTGVuZ3RoJiBzY3JvbGxNYXJnaW5Cb3R0b20oKSBj
b25zdDsKKyAgICBjb25zdCBMZW5ndGgmIHNjcm9sbE1hcmdpbkxlZnQoKSBjb25zdDsKKyAgICBj
b25zdCBMZW5ndGgmIHNjcm9sbE1hcmdpblJpZ2h0KCkgY29uc3Q7CisKICNpZiBFTkFCTEUoQ1NT
X1NDUk9MTF9TTkFQKQorICAgIGJvb2wgaGFzU25hcFBvc2l0aW9uKCkgY29uc3Q7CisKICAgICAv
LyBTY3JvbGwgc25hcCBwb3J0IHN0eWxlLgogICAgIGNvbnN0IFN0eWxlU2Nyb2xsU25hcFBvcnQm
IHNjcm9sbFNuYXBQb3J0KCkgY29uc3Q7CiAgICAgY29uc3QgU2Nyb2xsU25hcFR5cGUmIHNjcm9s
bFNuYXBUeXBlKCkgY29uc3Q7CkBAIC03MjksMTQgKzczNyw3IEBAIHB1YmxpYzoKICAgICBjb25z
dCBMZW5ndGgmIHNjcm9sbFBhZGRpbmdMZWZ0KCkgY29uc3Q7CiAgICAgY29uc3QgTGVuZ3RoJiBz
Y3JvbGxQYWRkaW5nUmlnaHQoKSBjb25zdDsKIAotICAgIC8vIFNjcm9sbCBzbmFwIGFyZWEgc3R5
bGUuCi0gICAgY29uc3QgU3R5bGVTY3JvbGxTbmFwQXJlYSYgc2Nyb2xsU25hcEFyZWEoKSBjb25z
dDsKICAgICBjb25zdCBTY3JvbGxTbmFwQWxpZ24mIHNjcm9sbFNuYXBBbGlnbigpIGNvbnN0Owot
ICAgIGNvbnN0IExlbmd0aEJveCYgc2Nyb2xsTWFyZ2luKCkgY29uc3Q7Ci0gICAgY29uc3QgTGVu
Z3RoJiBzY3JvbGxNYXJnaW5Ub3AoKSBjb25zdDsKLSAgICBjb25zdCBMZW5ndGgmIHNjcm9sbE1h
cmdpbkJvdHRvbSgpIGNvbnN0OwotICAgIGNvbnN0IExlbmd0aCYgc2Nyb2xsTWFyZ2luTGVmdCgp
IGNvbnN0OwotICAgIGNvbnN0IExlbmd0aCYgc2Nyb2xsTWFyZ2luUmlnaHQoKSBjb25zdDsKICNl
bmRpZgogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcApp
bmRleCA0MTk3NGNlMWUwNTE3MzE3MzZiYzRmNzg2MjQzMzRkNjcxZjkyNDNmLi40MmY4Y2I2MDk5
NDkzNzkyNjUzMjhjMzAyMWRkM2Q1NzRlZjcxZWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3Bw
CkBAIC02Miw3ICs2Miw2IEBAIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5v
bkluaGVyaXRlZERhdGEoKQogICAgICwgZ3JpZEl0ZW0oU3R5bGVHcmlkSXRlbURhdGE6OmNyZWF0
ZSgpKQogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgLCBzY3JvbGxTbmFwUG9ydChT
dHlsZVNjcm9sbFNuYXBQb3J0OjpjcmVhdGUoKSkKLSAgICAsIHNjcm9sbFNuYXBBcmVhKFN0eWxl
U2Nyb2xsU25hcEFyZWE6OmNyZWF0ZSgpKQogI2VuZGlmCiAgICAgLCB3aWxsQ2hhbmdlKFJlbmRl
clN0eWxlOjppbml0aWFsV2lsbENoYW5nZSgpKQogICAgICwgbWFzayhGaWxsTGF5ZXI6OmNyZWF0
ZShGaWxsTGF5ZXJUeXBlOjpNYXNrKSkKQEAgLTEzOSw5ICsxMzgsMTAgQEAgaW5saW5lIFN0eWxl
UmFyZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEoY29uc3QgU3R5
bGVSYXJlTm9uSW4KICNlbmRpZgogICAgICwgZ3JpZChvLmdyaWQpCiAgICAgLCBncmlkSXRlbShv
LmdyaWRJdGVtKQorICAgICwgc2Nyb2xsTWFyZ2luKG8uc2Nyb2xsTWFyZ2luKQogI2lmIEVOQUJM
RShDU1NfU0NST0xMX1NOQVApCiAgICAgLCBzY3JvbGxTbmFwUG9ydChvLnNjcm9sbFNuYXBQb3J0
KQotICAgICwgc2Nyb2xsU25hcEFyZWEoby5zY3JvbGxTbmFwQXJlYSkKKyAgICAsIHNjcm9sbFNu
YXBBbGlnbihvLnNjcm9sbFNuYXBBbGlnbikKICNlbmRpZgogICAgICwgY29udGVudChvLmNvbnRl
bnQgPyBvLmNvbnRlbnQtPmNsb25lKCkgOiBudWxscHRyKQogICAgICwgY291bnRlckRpcmVjdGl2
ZXMoby5jb3VudGVyRGlyZWN0aXZlcyA/IG1ha2VVbmlxdWU8Q291bnRlckRpcmVjdGl2ZU1hcD4o
Km8uY291bnRlckRpcmVjdGl2ZXMpIDogbnVsbHB0cikKQEAgLTI0MSw5ICsyNDEsMTAgQEAgYm9v
bCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09KGNvbnN0IFN0eWxlUmFyZU5v
bkluaGVyaXRlZERhdGEmIG8pIGMKICNlbmRpZgogICAgICAgICAmJiBncmlkID09IG8uZ3JpZAog
ICAgICAgICAmJiBncmlkSXRlbSA9PSBvLmdyaWRJdGVtCisgICAgICAgICYmIHNjcm9sbE1hcmdp
biA9PSBvLnNjcm9sbE1hcmdpbgogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgICAg
ICYmIHNjcm9sbFNuYXBQb3J0ID09IG8uc2Nyb2xsU25hcFBvcnQKLSAgICAgICAgJiYgc2Nyb2xs
U25hcEFyZWEgPT0gby5zY3JvbGxTbmFwQXJlYQorICAgICAgICAmJiBzY3JvbGxTbmFwQWxpZ24g
PT0gby5zY3JvbGxTbmFwQWxpZ24KICNlbmRpZgogICAgICAgICAmJiBjb250ZW50RGF0YUVxdWl2
YWxlbnQobykKICAgICAgICAgJiYgYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShjb3VudGVyRGlyZWN0
aXZlcywgby5jb3VudGVyRGlyZWN0aXZlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCmluZGV4IGE0Zjhj
NGIwZDJmOTBhMGRiODZlNTQ4NDM5ZThiN2VhNjFmZjJkZWIuLmMyNTg0Y2ZiN2Y0ZjEwZDIwZjA2
NDE1MDA5MDdkZWNjYjEzZDUwMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaApAQCAtMzYsNiArMzYs
NyBAQAogI2luY2x1ZGUgIlNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiU2hh
cGVWYWx1ZS5oIgogI2luY2x1ZGUgIlN0eWxlQ29udGVudEFsaWdubWVudERhdGEuaCIKKyNpbmNs
dWRlICJTdHlsZVNjcm9sbFNuYXBQb2ludHMuaCIKICNpbmNsdWRlICJTdHlsZVNlbGZBbGlnbm1l
bnREYXRhLmgiCiAjaW5jbHVkZSAiVG91Y2hBY3Rpb24uaCIKICNpbmNsdWRlICJUcmFuc2xhdGVU
cmFuc2Zvcm1PcGVyYXRpb24uaCIKQEAgLTYwLDggKzYxLDYgQEAgY2xhc3MgU3R5bGVNYXJxdWVl
RGF0YTsKIGNsYXNzIFN0eWxlTXVsdGlDb2xEYXRhOwogY2xhc3MgU3R5bGVSZWZsZWN0aW9uOwog
Y2xhc3MgU3R5bGVSZXNvbHZlcjsKLWNsYXNzIFN0eWxlU2Nyb2xsU25hcEFyZWE7Ci1jbGFzcyBT
dHlsZVNjcm9sbFNuYXBQb3J0OwogY2xhc3MgU3R5bGVUcmFuc2Zvcm1EYXRhOwogCiBzdHJ1Y3Qg
TGVuZ3RoU2l6ZTsKQEAgLTEyOSw5ICsxMjgsMTAgQEAgcHVibGljOgogICAgIERhdGFSZWY8U3R5
bGVHcmlkRGF0YT4gZ3JpZDsKICAgICBEYXRhUmVmPFN0eWxlR3JpZEl0ZW1EYXRhPiBncmlkSXRl
bTsKIAorICAgIExlbmd0aEJveCBzY3JvbGxNYXJnaW4geyAwLCAwLCAwLCAwIH07CiAjaWYgRU5B
QkxFKENTU19TQ1JPTExfU05BUCkKICAgICBEYXRhUmVmPFN0eWxlU2Nyb2xsU25hcFBvcnQ+IHNj
cm9sbFNuYXBQb3J0OwotICAgIERhdGFSZWY8U3R5bGVTY3JvbGxTbmFwQXJlYT4gc2Nyb2xsU25h
cEFyZWE7CisgICAgU2Nyb2xsU25hcEFsaWduIHNjcm9sbFNuYXBBbGlnbjsKICNlbmRpZgogCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnREYXRhPiBjb250ZW50OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU2Nyb2xsU25hcFBvaW50cy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTY3JvbGxTbmFwUG9pbnRzLmNwcApp
bmRleCA5ZTZhOTFmMDA0MDg3MGE3ZmZiNzdhMzQ5NzNhZTNjMDlmNmZjY2ZhLi5iNmEyMjZiNTE4
NmZhZDlkMmUzZjdmYTk0NzY0NDkwNzk3ZmNkMmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTY3JvbGxTbmFwUG9pbnRzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTY3JvbGxTbmFwUG9pbnRzLmNwcApAQCAtNDYs
MjMgKzQ2LDYgQEAgaW5saW5lIFN0eWxlU2Nyb2xsU25hcFBvcnQ6OlN0eWxlU2Nyb2xsU25hcFBv
cnQoY29uc3QgU3R5bGVTY3JvbGxTbmFwUG9ydCYgb3RoZXIKIHsKIH0KIAotUmVmPFN0eWxlU2Ny
b2xsU25hcEFyZWE+IFN0eWxlU2Nyb2xsU25hcEFyZWE6OmNvcHkoKSBjb25zdAotewotICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFN0eWxlU2Nyb2xsU25hcEFyZWEoKnRoaXMpKTsKLX0KLQotU3R5
bGVTY3JvbGxTbmFwQXJlYTo6U3R5bGVTY3JvbGxTbmFwQXJlYSgpCi0gICAgOiBzY3JvbGxNYXJn
aW4oMCwgMCwgMCwgMCkKLXsKLX0KLQotaW5saW5lIFN0eWxlU2Nyb2xsU25hcEFyZWE6OlN0eWxl
U2Nyb2xsU25hcEFyZWEoY29uc3QgU3R5bGVTY3JvbGxTbmFwQXJlYSYgb3RoZXIpCi0gICAgOiBS
ZWZDb3VudGVkKCkKLSAgICAsIGFsaWdubWVudChvdGhlci5hbGlnbm1lbnQpCi0gICAgLCBzY3Jv
bGxNYXJnaW4ob3RoZXIuc2Nyb2xsTWFyZ2luKQotewotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvKiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKSAqLwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU2Nyb2xsU25hcFBvaW50cy5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU2Nyb2xsU25hcFBvaW50cy5oCmlu
ZGV4IDBiYzljYmMwYmY2NWE3NDYzZGQ1YzAwMTdiZDk5NDU3Nzc1MWJkYjQuLmYxOTQ0ZTAzNWEy
OTVmNTAyZTBhYjdjYWMyMjE1Njc5ZDQ2NGJjMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZVNjcm9sbFNuYXBQb2ludHMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTY3JvbGxTbmFwUG9pbnRzLmgKQEAgLTc5LDI3ICs3
OSw2IEBAIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU2Nyb2xsU25hcEFsaWduJiBhLCBj
b25zdCBTY3JvbGxTbmFwQWxpZ24mIGIpCiAKIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3Qg
U2Nyb2xsU25hcEFsaWduJiBhLCBjb25zdCBTY3JvbGxTbmFwQWxpZ24mIGIpIHsgcmV0dXJuICEo
YSA9PSBiKTsgfQogCi1jbGFzcyBTdHlsZVNjcm9sbFNuYXBBcmVhIDogcHVibGljIFJlZkNvdW50
ZWQ8U3R5bGVTY3JvbGxTbmFwQXJlYT4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8U3R5bGVT
Y3JvbGxTbmFwQXJlYT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVNjcm9s
bFNuYXBBcmVhKTsgfQotICAgIFJlZjxTdHlsZVNjcm9sbFNuYXBBcmVhPiBjb3B5KCkgY29uc3Q7
Ci0gICAgYm9vbCBoYXNTbmFwUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBhbGlnbm1lbnQueCAh
PSBTY3JvbGxTbmFwQXhpc0FsaWduVHlwZTo6Tm9uZSB8fCBhbGlnbm1lbnQueSAhPSBTY3JvbGxT
bmFwQXhpc0FsaWduVHlwZTo6Tm9uZTsgfQotCi0gICAgU2Nyb2xsU25hcEFsaWduIGFsaWdubWVu
dDsKLSAgICBMZW5ndGhCb3ggc2Nyb2xsTWFyZ2luIHsgMCwgMCwgMCwgMCB9OwotCi1wcml2YXRl
OgotICAgIFN0eWxlU2Nyb2xsU25hcEFyZWEoKTsKLSAgICBTdHlsZVNjcm9sbFNuYXBBcmVhKGNv
bnN0IFN0eWxlU2Nyb2xsU25hcEFyZWEmKTsKLX07Ci0KLWlubGluZSBib29sIG9wZXJhdG9yPT0o
Y29uc3QgU3R5bGVTY3JvbGxTbmFwQXJlYSYgYSwgY29uc3QgU3R5bGVTY3JvbGxTbmFwQXJlYSYg
YikKLXsKLSAgICByZXR1cm4gYS5hbGlnbm1lbnQgPT0gYi5hbGlnbm1lbnQgJiYgYS5zY3JvbGxN
YXJnaW4gPT0gYi5zY3JvbGxNYXJnaW47Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29u
c3QgU3R5bGVTY3JvbGxTbmFwQXJlYSYgYSwgY29uc3QgU3R5bGVTY3JvbGxTbmFwQXJlYSYgYikg
eyByZXR1cm4gIShhID09IGIpOyB9Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTAxNDg2ZjlmNmRiZDBkYjUwMDA5
YWZiOTY0MTRjNDhkMGQ1ZjYyYi4uM2Y3MDFiNzQ1MDE5ZDE4ZTc1MjgzZDg3ZTNlMGQxMWY5OGJh
MmVkMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIwLTEwLTI4ICBNYXJ0aW4gUm9iaW5zb24g
IDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBNYWtlIHNjcm9sbC1tYXJnaW4gaW5k
ZXBlbmRlbnQgb2Ygc2Nyb2xsIHNuYXBwaW5nIGFuZCBoYXZlIGl0IGFwcGx5IHdoZW4gc2Nyb2xs
aW5nIHRvIGFuY2hvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxODA3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogVGVzdEV4cGVjdGF0aW9uczogVXBkYXRlZCBleHBlY3RhdGlvbnMgZm9yIG5ld2x5
IHBhc3NpbmcgdGVzdHMuCisKIDIwMjAtMTAtMjcgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZW1vdmUgdW5uZWVkZWQgd2hpdGVzcGFjZSBiZXR3ZWVuIGNvbnRl
bnQgYW5kIDxicj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9M
YXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGNhZGJkOGFkNWMyMTczNzhjMDRkNWJh
NzczM2Y3MDAxOGI0YTM3NDIuLjk3M2I5YmVhMmU0NzZiODg0NDNjNjRlYjVjNzJmYmQ5MzllYjQw
ZGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0
VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNDUwMywxMCArNDUwMyw2IEBAIHdlYmtpdC5vcmcv
Yi8yMTU1MzEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWJhY2tncm91
bmRzL2JhY2tncm91CiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mtc2Ny
b2xsLXNuYXAvc2Nyb2xsLXRhcmdldC1hbGlnbi0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXNjcm9sbC1zbmFwL3Nj
cm9sbC10YXJnZXQtYWxpZ24tMDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9zY3JvbGwtdGFyZ2V0
LWFsaWduLTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3Mtc2Nyb2xsLXNuYXAvc2Nyb2xsLXRhcmdldC1tYXJnaW4tMDAx
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9zY3JvbGwtdGFyZ2V0LW1hcmdpbi0wMDIuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LXNjcm9sbC1zbmFwL3Njcm9sbC10YXJnZXQtbWFyZ2luLTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mtc2Nyb2xsLXNu
YXAvc2Nyb2xsLXRhcmdldC1tYXJnaW4tMDA0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9zY3JvbGwt
dGFyZ2V0LXBhZGRpbmctMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9zY3JvbGwtdGFyZ2V0LXBh
ZGRpbmctMDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9zY3JvbGwtdGFyZ2V0LXBhZGRpbmctMDAz
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412519</attachid>
            <date>2020-10-28 05:07:33 -0700</date>
            <delta_ts>2020-10-28 06:40:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218076-20201028130728.patch</filename>
            <type>text/plain</type>
            <size>27223</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzQ1MWEyOGI0NWEwYmRj
MmQzZjAwMDEzMTY2ZTBmZmM3YTQ4OTRlMy4uMDBmNzM4MmY5NDBmNTAxNDJhNGI2MzI3ZTg3YTY3
NjNlYzdmNWEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDIwLTEwLTI4ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBNYWtlIHNjcm9s
bC1tYXJnaW4gaW5kZXBlbmRlbnQgb2Ygc2Nyb2xsIHNuYXBwaW5nIGFuZCBoYXZlIGl0IGFwcGx5
IHdoZW4gc2Nyb2xsaW5nIHRvIGFuY2hvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxODA3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudDo6c2Nyb2xsSW50b1ZpZXcpOiBVc2UgYWJzb2x1dGVBbmNob3JSZWN0V2l0aFNjcm9s
bE1hcmdpbiwgdGFraW5nIGludG8KKyAgICAgICAgYWNjb3VudCBzY3JvbGwtbWFyZ2luLgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2Nyb2xsSW50b1ZpZXdJZk5vdFZpc2libGUpOiBE
aXR0by4KKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZVZpZXc6OnNjcm9sbFRvQW5jaG9yKTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmFic29sdXRlQW5jaG9y
UmVjdFdpdGhTY3JvbGxNYXJnaW4gY29uc3QpOiBBZGRlZCB0aGlzIG92ZXJyaWRlCisgICAgICAg
IHdoaWNoIHByb3Blcmx5IGNvbnZlcnRzIHRoZSBzY3JvbGwtbWFyZ2luIHRvIExheW91dFVuaXRz
IGFuZCBhcHBsaWVzIGl0IHRvIGFic29sdXRlQW5jaG9yUmVjdC4KKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQm94Lmg6IEFkZGVkIG1ldGhvZCBkZWNsYXJhdGlvbi4KKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50
OjphYnNvbHV0ZUFuY2hvclJlY3RXaXRoU2Nyb2xsTWFyZ2luIGNvbnN0KTogQWRkZWQgaW1wbGVt
ZW50YXRpb24KKyAgICAgICAgdGhhdCBzaW1wbHkgY2FsbHMgYWJzb2x1dGVBbmNob3JSZWN0Lgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50Lmg6IEFkZGVkIGRlY2xhcmF0aW9uIG9m
IG5ldyB2aXJ0dWFsCisgICAgICAgIGFic29sdXRlQW5jaG9yUmVjdFdpdGhTY3JvbGxNYXJnaW4u
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6c3R5bGVEaWRDaGFuZ2UpOiBHZXQg
dGhlIHNjcm9sbC1tYXJnaW4gZGlyZWN0bHkgZnJvbSB0aGUKKyAgICAgICAgc3R5bGUgaW5zdGVh
ZCBvZiB0aGUgbm93LXJlbW92ZWQgU2Nyb2xsU25hcEFyZWEuCisgICAgICAgICogcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpz
Y3JvbGxNYXJnaW4gY29uc3QpOiBNb3ZlIHNjcm9sbC1tYXJnaW4gYW5kIHNjcm9sbC1zbmFwLWFs
aWduIHRvCisgICAgICAgIG1fcmFyZU5vbkluaGVyaXRlZERhdGEgYW5kIGdldCByaWQgb2YgaW50
ZXJtZWRpYXRlIFNjcm9sbFNuYXBBcmVhLiBUaGVzZSB0d28gcHJvcGVydGllcworICAgICAgICBh
cmUgbm8gaW5kZXBlbmRlbnQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2Nyb2xs
TWFyZ2luVG9wIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6
c2Nyb2xsTWFyZ2luQm90dG9tIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6c2Nyb2xsTWFyZ2luTGVmdCBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU3R5bGU6OnNjcm9sbE1hcmdpblJpZ2h0IGNvbnN0KTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0U2Nyb2xsTWFyZ2luVG9wKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0U2Nyb2xsTWFyZ2luQm90dG9tKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0U2Nyb2xsTWFyZ2luTGVmdCk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFNjcm9sbE1hcmdpblJpZ2h0
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2Nyb2xsU25hcEFsaWdu
IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0U2Nyb2xs
U25hcEFsaWduKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aGFzU25h
cFBvc2l0aW9uIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6
c2Nyb2xsU25hcEFyZWEgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5oOiBBZGQgYWNjZXNzb3JzIGZvciBzY3JvbGwtbWFyZ2luIGFuZCBtb3Zl
ZCBoYXNTbmFwUG9zaXRpb24KKyAgICAgICAgZnJvbSBTY3JvbGxTbmFwQXJlYS4KKyAgICAgICAg
KiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHA6IFJlbW92ZWQg
aW50ZXJtZWRpYXRlIFNjcm9sbFNuYXBBcmVhIGRhdGEKKyAgICAgICAgc3RydWN0dXJlIGFuZCBt
b3ZlZCBtZW1iZXJzIGhlcmUuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVOb25Jbmhlcml0
ZWREYXRhOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09IGNvbnN0KTogRGl0dG8u
CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaDog
RGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlU2Nyb2xsU25hcFBvaW50cy5j
cHA6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTY3JvbGxTbmFwQXJlYTo6Y29weSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZVNjcm9sbFNuYXBBcmVhOjpT
dHlsZVNjcm9sbFNuYXBBcmVhKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
U3R5bGVTY3JvbGxTbmFwUG9pbnRzLmg6IFJlbW92ZWQgU2Nyb2xsU25hcEFyZWEuCisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVNjcm9sbFNuYXBBcmVhOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVTY3JvbGxTbmFwQXJlYTo6aGFzU25hcFBvc2l0aW9uIGNvbnN0KTog
RGVsZXRlZC4KKwogMjAyMC0xMC0yNyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxl
LmNvbT4KIAogICAgICAgICBbQ29uY3VycmVudCBkaXNwbGF5IGxpc3RzXSBBZGQgYWx0ZXJuYXRl
IHZlcnNpb25zIG9mIGV4aXN0aW5nIGRpc3BsYXkgbGlzdCBpdGVtcyB0aGF0IG9ubHkgY29udGFp
biBpbmxpbmUgZGF0YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGQ4OGIwYjlkNTQ2ZjZkNTgx
ZWVjNWFmMDQ0MmM0ZGM3OGE0ZmE4Y2EuLjVlZjNmZTk3ODhmZGRhZWY3ZmE5Y2VmNTZiZWVjODY1
YzNiOWM1NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTg2MSw3ICs4NjEsNyBAQCB2b2lk
IEVsZW1lbnQ6OnNjcm9sbEludG9WaWV3KE9wdGlvbmFsPFZhcmlhbnQ8Ym9vbCwgU2Nyb2xsSW50
b1ZpZXdPcHRpb25zPj4mJiBhcgogICAgICAgICByZXR1cm47CiAKICAgICBib29sIGluc2lkZUZp
eGVkOwotICAgIExheW91dFJlY3QgYWJzb2x1dGVCb3VuZHMgPSByZW5kZXJlcigpLT5hYnNvbHV0
ZUFuY2hvclJlY3QoJmluc2lkZUZpeGVkKTsKKyAgICBMYXlvdXRSZWN0IGFic29sdXRlQm91bmRz
ID0gcmVuZGVyZXIoKS0+YWJzb2x1dGVBbmNob3JSZWN0V2l0aFNjcm9sbE1hcmdpbigmaW5zaWRl
Rml4ZWQpOwogCiAgICAgU2Nyb2xsSW50b1ZpZXdPcHRpb25zIG9wdGlvbnM7CiAgICAgaWYgKGFy
ZykgewpAQCAtODk1LDcgKzg5NSw3IEBAIHZvaWQgRWxlbWVudDo6c2Nyb2xsSW50b1ZpZXcoYm9v
bCBhbGlnblRvVG9wKQogICAgICAgICByZXR1cm47CiAKICAgICBib29sIGluc2lkZUZpeGVkOwot
ICAgIExheW91dFJlY3QgYWJzb2x1dGVCb3VuZHMgPSByZW5kZXJlcigpLT5hYnNvbHV0ZUFuY2hv
clJlY3QoJmluc2lkZUZpeGVkKTsKKyAgICBMYXlvdXRSZWN0IGFic29sdXRlQm91bmRzID0gcmVu
ZGVyZXIoKS0+YWJzb2x1dGVBbmNob3JSZWN0V2l0aFNjcm9sbE1hcmdpbigmaW5zaWRlRml4ZWQp
OwogICAgIC8vIEFsaWduIHRvIHRoZSB0b3AgLyBib3R0b20gYW5kIHRvIHRoZSBjbG9zZXN0IGVk
Z2UuCiAgICAgaWYgKGFsaWduVG9Ub3ApCiAgICAgICAgIHJlbmRlcmVyKCktPnNjcm9sbFJlY3RU
b1Zpc2libGUoYWJzb2x1dGVCb3VuZHMsIGluc2lkZUZpeGVkLCB7IFNlbGVjdGlvblJldmVhbE1v
ZGU6OlJldmVhbCwgU2Nyb2xsQWxpZ25tZW50OjphbGlnblRvRWRnZUlmTmVlZGVkLCBTY3JvbGxB
bGlnbm1lbnQ6OmFsaWduVG9wQWx3YXlzLCBTaG91bGRBbGxvd0Nyb3NzT3JpZ2luU2Nyb2xsaW5n
OjpObyB9KTsKQEAgLTkxMSw3ICs5MTEsNyBAQCB2b2lkIEVsZW1lbnQ6OnNjcm9sbEludG9WaWV3
SWZOZWVkZWQoYm9vbCBjZW50ZXJJZk5lZWRlZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYm9v
bCBpbnNpZGVGaXhlZDsKLSAgICBMYXlvdXRSZWN0IGFic29sdXRlQm91bmRzID0gcmVuZGVyZXIo
KS0+YWJzb2x1dGVBbmNob3JSZWN0KCZpbnNpZGVGaXhlZCk7CisgICAgTGF5b3V0UmVjdCBhYnNv
bHV0ZUJvdW5kcyA9IHJlbmRlcmVyKCktPmFic29sdXRlQW5jaG9yUmVjdFdpdGhTY3JvbGxNYXJn
aW4oJmluc2lkZUZpeGVkKTsKICAgICBpZiAoY2VudGVySWZOZWVkZWQpCiAgICAgICAgIHJlbmRl
cmVyKCktPnNjcm9sbFJlY3RUb1Zpc2libGUoYWJzb2x1dGVCb3VuZHMsIGluc2lkZUZpeGVkLCB7
IFNlbGVjdGlvblJldmVhbE1vZGU6OlJldmVhbCwgU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNlbnRl
cklmTmVlZGVkLCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduQ2VudGVySWZOZWVkZWQsIFNob3VsZEFs
bG93Q3Jvc3NPcmlnaW5TY3JvbGxpbmc6Ok5vIH0pOwogICAgIGVsc2UKQEAgLTkyNiw3ICs5MjYs
NyBAQCB2b2lkIEVsZW1lbnQ6OnNjcm9sbEludG9WaWV3SWZOb3RWaXNpYmxlKGJvb2wgY2VudGVy
SWZOb3RWaXNpYmxlKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgYm9vbCBpbnNpZGVGaXhl
ZDsKLSAgICBMYXlvdXRSZWN0IGFic29sdXRlQm91bmRzID0gcmVuZGVyZXIoKS0+YWJzb2x1dGVB
bmNob3JSZWN0KCZpbnNpZGVGaXhlZCk7CisgICAgTGF5b3V0UmVjdCBhYnNvbHV0ZUJvdW5kcyA9
IHJlbmRlcmVyKCktPmFic29sdXRlQW5jaG9yUmVjdFdpdGhTY3JvbGxNYXJnaW4oJmluc2lkZUZp
eGVkKTsKICAgICBpZiAoY2VudGVySWZOb3RWaXNpYmxlKQogICAgICAgICByZW5kZXJlcigpLT5z
Y3JvbGxSZWN0VG9WaXNpYmxlKGFic29sdXRlQm91bmRzLCBpbnNpZGVGaXhlZCwgeyBTZWxlY3Rp
b25SZXZlYWxNb2RlOjpSZXZlYWwsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25DZW50ZXJJZk5vdFZp
c2libGUsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25DZW50ZXJJZk5vdFZpc2libGUsIFNob3VsZEFs
bG93Q3Jvc3NPcmlnaW5TY3JvbGxpbmc6Ok5vIH0pOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmNwcAppbmRleCAyYzQ4MjYzODU5YmFlNTk2N2RjZjMxYmJiMDA4YjMwNzliMTMyYWFm
Li4wZjRjOGIwM2FhOTk1MDY4Mzg4ZjAyOWM3YmM0NjE1MTFlNjA1NWU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuY3BwCkBAIC0zMTc2LDcgKzMxNzYsNyBAQCB2b2lkIEZyYW1lVmlldzo6c2Ny
b2xsVG9BbmNob3IoKQogICAgIExheW91dFJlY3QgcmVjdDsKICAgICBib29sIGluc2lkZUZpeGVk
ID0gZmFsc2U7CiAgICAgaWYgKGFuY2hvck5vZGUgIT0gZnJhbWUoKS5kb2N1bWVudCgpICYmIGFu
Y2hvck5vZGUtPnJlbmRlcmVyKCkpCi0gICAgICAgIHJlY3QgPSBhbmNob3JOb2RlLT5yZW5kZXJl
cigpLT5hYnNvbHV0ZUFuY2hvclJlY3QoJmluc2lkZUZpeGVkKTsKKyAgICAgICAgcmVjdCA9IGFu
Y2hvck5vZGUtPnJlbmRlcmVyKCktPmFic29sdXRlQW5jaG9yUmVjdFdpdGhTY3JvbGxNYXJnaW4o
Jmluc2lkZUZpeGVkKTsKIAogICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxpbmcsIHN0cmVhbSA8
PCAiIGFuY2hvciBub2RlIHJlY3QgIiA8PCByZWN0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmNwcAppbmRleCBmMmZjOTZhMzBhM2IzNDIzYjg1YjZiYWRkMzMwYmMyOWFmYTMx
YjcxLi40YmY0MGY0MGIwNTM0M2Q2OTgxYzdmYTZlNjA2MDNiNGM5MWYxZDhhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtMTYxLDcgKzE2MSw3IEBAIHZvaWQgUmVu
ZGVyQm94Ojp3aWxsQmVEZXN0cm95ZWQoKQogICAgIHJlbW92ZUNvbnRyb2xTdGF0ZXNGb3JSZW5k
ZXJlcigqdGhpcyk7CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIGlmIChoYXNJ
bml0aWFsaXplZFN0eWxlKCkgJiYgc3R5bGUoKS5zY3JvbGxTbmFwQXJlYSgpLmhhc1NuYXBQb3Np
dGlvbigpKQorICAgIGlmIChoYXNJbml0aWFsaXplZFN0eWxlKCkgJiYgc3R5bGUoKS5oYXNTbmFw
UG9zaXRpb24oKSkKICAgICAgICAgdmlldygpLnVucmVnaXN0ZXJCb3hXaXRoU2Nyb2xsU25hcFBv
c2l0aW9ucygqdGhpcyk7CiAjZW5kaWYKIApAQCAtMjc3LDggKzI3Nyw4IEBAIHZvaWQgUmVuZGVy
Qm94OjpzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0
eWxlJiBuZXdTdHlsCiAgICAgICAgIHZpZXcoKS5yZXBhaW50Um9vdENvbnRlbnRzKCk7CiAKICNp
ZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIGJvb2wgYm94Q29udHJpYnV0ZXNTbmFwUG9z
aXRpb25zID0gbmV3U3R5bGUuc2Nyb2xsU25hcEFyZWEoKS5oYXNTbmFwUG9zaXRpb24oKTsKLSAg
ICBpZiAoYm94Q29udHJpYnV0ZXNTbmFwUG9zaXRpb25zIHx8IChvbGRTdHlsZSAmJiBvbGRTdHls
ZS0+c2Nyb2xsU25hcEFyZWEoKS5oYXNTbmFwUG9zaXRpb24oKSkpIHsKKyAgICBib29sIGJveENv
bnRyaWJ1dGVzU25hcFBvc2l0aW9ucyA9IG5ld1N0eWxlLmhhc1NuYXBQb3NpdGlvbigpOworICAg
IGlmIChib3hDb250cmlidXRlc1NuYXBQb3NpdGlvbnMgfHwgKG9sZFN0eWxlICYmIG9sZFN0eWxl
LT5oYXNTbmFwUG9zaXRpb24oKSkpIHsKICAgICAgICAgaWYgKGJveENvbnRyaWJ1dGVzU25hcFBv
c2l0aW9ucykKICAgICAgICAgICAgIHZpZXcoKS5yZWdpc3RlckJveFdpdGhTY3JvbGxTbmFwUG9z
aXRpb25zKCp0aGlzKTsKICAgICAgICAgZWxzZQpAQCAtNTA1NCw0ICs1MDU0LDIyIEBAIGNvbnN0
IFJlbmRlckJveCogUmVuZGVyQm94OjpmaW5kRW5jbG9zaW5nU2Nyb2xsYWJsZUNvbnRhaW5lcigp
IGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK0xheW91dFJlY3QgUmVuZGVyQm94Ojph
YnNvbHV0ZUFuY2hvclJlY3RXaXRoU2Nyb2xsTWFyZ2luKGJvb2wqIGluc2lkZUZpeGVkKSBjb25z
dAoreworICAgIExheW91dFJlY3QgYW5jaG9yUmVjdCA9IGFic29sdXRlQW5jaG9yUmVjdChpbnNp
ZGVGaXhlZCk7CisgICAgY29uc3QgTGVuZ3RoQm94JiBzY3JvbGxNYXJnaW4gPSBzdHlsZSgpLnNj
cm9sbE1hcmdpbigpOworICAgIGlmIChzY3JvbGxNYXJnaW4uaXNaZXJvKCkpCisgICAgICAgIHJl
dHVybiBhbmNob3JSZWN0OworCisgICAgY29uc3QgTGF5b3V0U2l6ZSBib3hTaXplID0gc2l6ZSgp
OworICAgIGNvbnN0IExheW91dEJveEV4dGVudCBtYXJnaW4oCisgICAgICAgIHZhbHVlRm9yTGVu
Z3RoKHNjcm9sbE1hcmdpbi50b3AoKSwgYm94U2l6ZS5oZWlnaHQoKSksCisgICAgICAgIHZhbHVl
Rm9yTGVuZ3RoKHNjcm9sbE1hcmdpbi5yaWdodCgpLCBib3hTaXplLndpZHRoKCkpLAorICAgICAg
ICB2YWx1ZUZvckxlbmd0aChzY3JvbGxNYXJnaW4uYm90dG9tKCksIGJveFNpemUuaGVpZ2h0KCkp
LAorICAgICAgICB2YWx1ZUZvckxlbmd0aChzY3JvbGxNYXJnaW4ubGVmdCgpLCBib3hTaXplLndp
ZHRoKCkpKTsKKyAgICBhbmNob3JSZWN0LmV4cGFuZChtYXJnaW4pOworCisgICAgcmV0dXJuIGFu
Y2hvclJlY3Q7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guaAppbmRleCBmODlhNjRiNTEwY2UzMzhiYzA1ODdiMjI4ODM0NjYzNDIwY2M2
ZTE3Li5lMDgxNDVkOGUwZTlmNjI2MTMwMzliMTZlNGExNjBhYzE3OWNhZWMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCkBAIC02NDQsNiArNjQ0LDggQEAgb3ZlcnJpZGU7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0Qm9yZGVyQm94UmVjdEZvclBhaW50aW5nKExheW91dFJl
Y3QmKSB7IH07CiAKKyAgICBMYXlvdXRSZWN0IGFic29sdXRlQW5jaG9yUmVjdFdpdGhTY3JvbGxN
YXJnaW4oYm9vbCogaW5zaWRlRml4ZWQgPSBudWxscHRyKSBjb25zdCBvdmVycmlkZTsKKwogcHJv
dGVjdGVkOgogICAgIFJlbmRlckJveChFbGVtZW50JiwgUmVuZGVyU3R5bGUmJiwgQmFzZVR5cGVG
bGFncyk7CiAgICAgUmVuZGVyQm94KERvY3VtZW50JiwgUmVuZGVyU3R5bGUmJiwgQmFzZVR5cGVG
bGFncyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKaW5kZXgg
YmRjMDE1ZmY2YmUwZTI4YWI1ZTliYWMwYTI3YzNjOTkwZWEyMWRjNi4uZjg0YjdkNTkyY2ZkY2Nk
ODhjMGEwYzk2NmY1ZGU2Zjc0ZTM4MWQ2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJFbGVtZW50LmNwcApAQCAtMTY1Nyw2ICsxNjU3LDExIEBAIExheW91dFJlY3QgUmVuZGVy
RWxlbWVudDo6YWJzb2x1dGVBbmNob3JSZWN0KGJvb2wqIGluc2lkZUZpeGVkKSBjb25zdAogICAg
IHJldHVybiBlbmNsb3NpbmdMYXlvdXRSZWN0KEZsb2F0UmVjdCh1cHBlckxlZnQsIGxvd2VyUmln
aHQuZXhwYW5kZWRUbyh1cHBlckxlZnQpIC0gdXBwZXJMZWZ0KSk7CiB9CiAKK0xheW91dFJlY3Qg
UmVuZGVyRWxlbWVudDo6YWJzb2x1dGVBbmNob3JSZWN0V2l0aFNjcm9sbE1hcmdpbihib29sKiBp
bnNpZGVGaXhlZCkgY29uc3QKK3sKKyAgICByZXR1cm4gYWJzb2x1dGVBbmNob3JSZWN0KGluc2lk
ZUZpeGVkKTsKK30KKwogY29uc3QgUmVuZGVyRWxlbWVudCogUmVuZGVyRWxlbWVudDo6ZW5jbG9z
aW5nUmVuZGVyZXJXaXRoVGV4dERlY29yYXRpb24oT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiB0
ZXh0RGVjb3JhdGlvbiwgYm9vbCBmaXJzdExpbmUpIGNvbnN0CiB7CiAgICAgY29uc3QgUmVuZGVy
RWxlbWVudCogY3VycmVudCA9IHRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuaAppbmRleCBiODBkMjhiYmM1M2FlMDE5OGIwOTE4MWYxYzcyNGNiOGZlZjg0NTQ0Li43
NjNjNjE3ZjFhNjM1ZGYxOWRlMDA1MDM0Y2M4OWU0NDMzZDQ2OTFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKQEAgLTE1NSwxMSArMTU1LDE1IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgY2hlY2tGb3JSZXBhaW50RHVyaW5nTGF5b3V0KCkgY29uc3Q7CiAKLSAgICAv
LyBhbmNob3JSZWN0KCkgaXMgY29uY2VwdHVhbGx5IHNpbWlsYXIgdG8gYWJzb2x1dGVCb3VuZGlu
Z0JveFJlY3QoKSwgYnV0IGlzIGludGVuZGVkIGZvciBzY3JvbGxpbmcgdG8gYW4gYW5jaG9yLgot
ICAgIC8vIEZvciBpbmxpbmUgcmVuZGVyZXJzLCB0aGlzIGdldHMgdGhlIGxvZ2ljYWwgdG9wIGxl
ZnQgb2YgdGhlIGZpcnN0IGxlYWYgY2hpbGQgYW5kIHRoZSBsb2dpY2FsIGJvdHRvbSByaWdodCBv
ZiB0aGUKLSAgICAvLyBsYXN0IGxlYWYgY2hpbGQsIGNvbnZlcnRzIHRoZW0gdG8gYWJzb2x1dGUg
Y29vcmRpbmF0ZXMsIGFuZCBtYWtlcyBhIGJveCBvdXQgb2YgdGhlbS4KKyAgICAvLyBhYnNvbHV0
ZUFuY2hvclJlY3QoKSBpcyBjb25jZXB0dWFsbHkgc2ltaWxhciB0byBhYnNvbHV0ZUJvdW5kaW5n
Qm94UmVjdCgpLCBidXQgaXMgaW50ZW5kZWQgZm9yIHNjcm9sbGluZyB0byBhbgorICAgIC8vIGFu
Y2hvci4gRm9yIGlubGluZSByZW5kZXJlcnMsIHRoaXMgZ2V0cyB0aGUgbG9naWNhbCB0b3AgbGVm
dCBvZiB0aGUgZmlyc3QgbGVhZiBjaGlsZCBhbmQgdGhlIGxvZ2ljYWwgYm90dG9tCisgICAgLy8g
cmlnaHQgb2YgdGhlIGxhc3QgbGVhZiBjaGlsZCwgY29udmVydHMgdGhlbSB0byBhYnNvbHV0ZSBj
b29yZGluYXRlcywgYW5kIG1ha2VzIGEgYm94IG91dCBvZiB0aGVtLgogICAgIExheW91dFJlY3Qg
YWJzb2x1dGVBbmNob3JSZWN0KGJvb2wqIGluc2lkZUZpeGVkID0gbnVsbHB0cikgY29uc3Q7CiAK
KyAgICAvLyBhYnNvbHV0ZUFuY2hvclJlY3RXaXRoU2Nyb2xsTWFyZ2luKCkgaXMgc2ltaWxhciB0
byBhYnNvbHV0ZUFuY2hvclJlY3QsIGJ1dCBpdCBhbHNvIHRha2VzIGludG8gYWNjb3VudCBhbnkK
KyAgICAvLyBDU1Mgc2Nyb2xsLW1hcmdpbiB0aGF0IGlzIHNldCBpbiB0aGUgc3R5bGUgb2YgdGhp
cyBSZW5kZXJFbGVtZW50LgorICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBhYnNvbHV0ZUFuY2hvclJl
Y3RXaXRoU2Nyb2xsTWFyZ2luKGJvb2wqIGluc2lkZUZpeGVkID0gbnVsbHB0cikgY29uc3Q7CisK
ICAgICBib29sIGhhc0ZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIHN0eWxlKCkuaGFzRmlsdGVyKCk7
IH0KICAgICBib29sIGhhc0JhY2tkcm9wRmlsdGVyKCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKaW5kZXgg
ZjlmNDE5ZjZlOTEzNjk2MzAxMjQ0MDRhNGYzYzIyODg2NDY5NTBiNi4uZmM2ZDhmMzM4ZmNhNzM3
YjUxOWUzZWRhMmEwYjk3YTM4MmUzNmRjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcApAQCAtMTg1LDcgKzE4NSwxMiBAQCB2
b2lkIFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5j
ZSBkaWZmLCBjb25zdCBSZW5kZXJTdAogICAgICAgICAgICAgZnJhbWVWaWV3LnVwZGF0ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yU2Nyb2xsU25hcFByb3BlcnRpZXMoKTsKICAgICAgICAgfQogICAgIH0K
LSAgICBpZiAob2xkU3R5bGUgJiYgb2xkU3R5bGUtPnNjcm9sbFNuYXBBcmVhKCkgIT0gbmV3U3R5
bGUuc2Nyb2xsU25hcEFyZWEoKSkgeworCisgICAgYm9vbCBzY3JvbGxNYXJnaW5DaGFuZ2VkID0K
KyAgICAgICAgb2xkU3R5bGUgJiYgb2xkU3R5bGUtPnNjcm9sbE1hcmdpbigpICE9IG5ld1N0eWxl
LnNjcm9sbE1hcmdpbigpOworICAgIGJvb2wgc2Nyb2xsQWxpZ25DaGFuZ2VkID0KKyAgICAgICAg
b2xkU3R5bGUgJiYgb2xkU3R5bGUtPnNjcm9sbFNuYXBBbGlnbigpICE9IG5ld1N0eWxlLnNjcm9s
bFNuYXBBbGlnbigpOworICAgIGlmIChzY3JvbGxNYXJnaW5DaGFuZ2VkIHx8IHNjcm9sbEFsaWdu
Q2hhbmdlZCkgewogICAgICAgICBhdXRvKiBzY3JvbGxTbmFwQm94ID0gZW5jbG9zaW5nU2Nyb2xs
YWJsZUNvbnRhaW5lckZvclNuYXBwaW5nKCk7CiAgICAgICAgIGlmIChzY3JvbGxTbmFwQm94ICYm
IHNjcm9sbFNuYXBCb3gtPmxheWVyKCkpIHsKICAgICAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxl
JiBzdHlsZSA9IHNjcm9sbFNuYXBCb3gtPnN0eWxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCAzNjA5OTc3NmRlNTcxOTUzNGE3ZTY5
NGZjOGM0N2IwNTI0NDMzZGQzLi4zMTMwZjE4MTkzYmJkMmViZDdiMDRjYjM3NTk1YzMyYmNlNGZm
NTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5j
cHAKQEAgLTIzOTIsNiArMjM5Miw1MSBAQCB2b2lkIFJlbmRlclN0eWxlOjpzZXROb25Jbmhlcml0
ZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIFJlZgogICAgIG1f
cmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkuY3VzdG9tUHJvcGVydGllcy5hY2Nlc3MoKS5z
ZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIFdURk1vdmUodmFsdWUpKTsKIH0KIAorY29uc3Qg
TGVuZ3RoQm94JiBSZW5kZXJTdHlsZTo6c2Nyb2xsTWFyZ2luKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+c2Nyb2xsTWFyZ2luOworfQorCitjb25zdCBMZW5n
dGgmIFJlbmRlclN0eWxlOjpzY3JvbGxNYXJnaW5Ub3AoKSBjb25zdAoreworICAgIHJldHVybiBz
Y3JvbGxNYXJnaW4oKS50b3AoKTsKK30KKworY29uc3QgTGVuZ3RoJiBSZW5kZXJTdHlsZTo6c2Ny
b2xsTWFyZ2luQm90dG9tKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc2Nyb2xsTWFyZ2luKCkuYm90
dG9tKCk7Cit9CisKK2NvbnN0IExlbmd0aCYgUmVuZGVyU3R5bGU6OnNjcm9sbE1hcmdpbkxlZnQo
KSBjb25zdAoreworICAgIHJldHVybiBzY3JvbGxNYXJnaW4oKS5sZWZ0KCk7Cit9CisKK2NvbnN0
IExlbmd0aCYgUmVuZGVyU3R5bGU6OnNjcm9sbE1hcmdpblJpZ2h0KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gc2Nyb2xsTWFyZ2luKCkucmlnaHQoKTsKK30KKwordm9pZCBSZW5kZXJTdHlsZTo6c2V0
U2Nyb2xsTWFyZ2luVG9wKExlbmd0aCYmIGxlbmd0aCkKK3sKKyAgICBTRVRfVkFSKG1fcmFyZU5v
bkluaGVyaXRlZERhdGEsIHNjcm9sbE1hcmdpbi50b3AoKSwgV1RGTW92ZShsZW5ndGgpKTsKK30K
Kwordm9pZCBSZW5kZXJTdHlsZTo6c2V0U2Nyb2xsTWFyZ2luQm90dG9tKExlbmd0aCYmIGxlbmd0
aCkKK3sKKyAgICBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHNjcm9sbE1hcmdpbi5i
b3R0b20oKSwgV1RGTW92ZShsZW5ndGgpKTsKK30KKwordm9pZCBSZW5kZXJTdHlsZTo6c2V0U2Ny
b2xsTWFyZ2luTGVmdChMZW5ndGgmJiBsZW5ndGgpCit7CisgICAgU0VUX1ZBUihtX3JhcmVOb25J
bmhlcml0ZWREYXRhLCBzY3JvbGxNYXJnaW4ubGVmdCgpLCBXVEZNb3ZlKGxlbmd0aCkpOworfQor
Cit2b2lkIFJlbmRlclN0eWxlOjpzZXRTY3JvbGxNYXJnaW5SaWdodChMZW5ndGgmJiBsZW5ndGgp
Cit7CisgICAgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBzY3JvbGxNYXJnaW4ucmln
aHQoKSwgV1RGTW92ZShsZW5ndGgpKTsKK30KKwogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVAp
CiAKIFNjcm9sbFNuYXBUeXBlIFJlbmRlclN0eWxlOjppbml0aWFsU2Nyb2xsU25hcFR5cGUoKQpA
QCAtMjQwNCwxMSArMjQ0OSw2IEBAIFNjcm9sbFNuYXBBbGlnbiBSZW5kZXJTdHlsZTo6aW5pdGlh
bFNjcm9sbFNuYXBBbGlnbigpCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotY29uc3QgU3R5bGVTY3Jv
bGxTbmFwQXJlYSYgUmVuZGVyU3R5bGU6OnNjcm9sbFNuYXBBcmVhKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gKm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnNjcm9sbFNuYXBBcmVhOwotfQotCiBjb25z
dCBTdHlsZVNjcm9sbFNuYXBQb3J0JiBSZW5kZXJTdHlsZTo6c2Nyb2xsU25hcFBvcnQoKSBjb25z
dAogewogICAgIHJldHVybiAqbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+c2Nyb2xsU25hcFBvcnQ7
CkBAIC0yNDQ2LDMyICsyNDg2LDcgQEAgY29uc3QgTGVuZ3RoJiBSZW5kZXJTdHlsZTo6c2Nyb2xs
UGFkZGluZ1JpZ2h0KCkgY29uc3QKIAogY29uc3QgU2Nyb2xsU25hcEFsaWduJiBSZW5kZXJTdHls
ZTo6c2Nyb2xsU25hcEFsaWduKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+c2Nyb2xsU25hcEFyZWEtPmFsaWdubWVudDsKLX0KLQotY29uc3QgTGVuZ3RoQm94
JiBSZW5kZXJTdHlsZTo6c2Nyb2xsTWFyZ2luKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+c2Nyb2xsU25hcEFyZWEtPnNjcm9sbE1hcmdpbjsKLX0KLQotY29u
c3QgTGVuZ3RoJiBSZW5kZXJTdHlsZTo6c2Nyb2xsTWFyZ2luVG9wKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gc2Nyb2xsTWFyZ2luKCkudG9wKCk7Ci19Ci0KLWNvbnN0IExlbmd0aCYgUmVuZGVyU3R5
bGU6OnNjcm9sbE1hcmdpbkJvdHRvbSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHNjcm9sbE1hcmdp
bigpLmJvdHRvbSgpOwotfQotCi1jb25zdCBMZW5ndGgmIFJlbmRlclN0eWxlOjpzY3JvbGxNYXJn
aW5MZWZ0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gc2Nyb2xsTWFyZ2luKCkubGVmdCgpOwotfQot
Ci1jb25zdCBMZW5ndGgmIFJlbmRlclN0eWxlOjpzY3JvbGxNYXJnaW5SaWdodCgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIHNjcm9sbE1hcmdpbigpLnJpZ2h0KCk7CisgICAgcmV0dXJuIG1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPnNjcm9sbFNuYXBBbGlnbjsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6
c2V0U2Nyb2xsU25hcFR5cGUoY29uc3QgU2Nyb2xsU25hcFR5cGUmIHR5cGUpCkBAIC0yNTAxLDI5
ICsyNTE2LDE0IEBAIHZvaWQgUmVuZGVyU3R5bGU6OnNldFNjcm9sbFBhZGRpbmdSaWdodChMZW5n
dGgmJiBsZW5ndGgpCiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldFNjcm9sbFNuYXBBbGlnbihjb25z
dCBTY3JvbGxTbmFwQWxpZ24mIGFsaWdubWVudCkKIHsKLSAgICBTRVRfTkVTVEVEX1ZBUihtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLCBzY3JvbGxTbmFwQXJlYSwgYWxpZ25tZW50LCBhbGlnbm1lbnQp
OwotfQotCi12b2lkIFJlbmRlclN0eWxlOjpzZXRTY3JvbGxNYXJnaW5Ub3AoTGVuZ3RoJiYgbGVu
Z3RoKQotewotICAgIFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHNjcm9s
bFNuYXBBcmVhLCBzY3JvbGxNYXJnaW4udG9wKCksIFdURk1vdmUobGVuZ3RoKSk7CisgICAgU0VU
X1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBzY3JvbGxTbmFwQWxpZ24sIGFsaWdubWVudCk7
CiB9CiAKLXZvaWQgUmVuZGVyU3R5bGU6OnNldFNjcm9sbE1hcmdpbkJvdHRvbShMZW5ndGgmJiBs
ZW5ndGgpCi17Ci0gICAgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgc2Ny
b2xsU25hcEFyZWEsIHNjcm9sbE1hcmdpbi5ib3R0b20oKSwgV1RGTW92ZShsZW5ndGgpKTsKLX0K
LQotdm9pZCBSZW5kZXJTdHlsZTo6c2V0U2Nyb2xsTWFyZ2luTGVmdChMZW5ndGgmJiBsZW5ndGgp
Citib29sIFJlbmRlclN0eWxlOjpoYXNTbmFwUG9zaXRpb24oKSBjb25zdAogewotICAgIFNFVF9O
RVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHNjcm9sbFNuYXBBcmVhLCBzY3JvbGxN
YXJnaW4ubGVmdCgpLCBXVEZNb3ZlKGxlbmd0aCkpOworICAgIGNvbnN0IFNjcm9sbFNuYXBBbGln
biYgYWxpZ25tZW50ID0gdGhpcy0+c2Nyb2xsU25hcEFsaWduKCk7CisgICAgcmV0dXJuIGFsaWdu
bWVudC54ICE9IFNjcm9sbFNuYXBBeGlzQWxpZ25UeXBlOjpOb25lIHx8IGFsaWdubWVudC55ICE9
IFNjcm9sbFNuYXBBeGlzQWxpZ25UeXBlOjpOb25lOwogfQotCi12b2lkIFJlbmRlclN0eWxlOjpz
ZXRTY3JvbGxNYXJnaW5SaWdodChMZW5ndGgmJiBsZW5ndGgpCi17Ci0gICAgU0VUX05FU1RFRF9W
QVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgc2Nyb2xsU25hcEFyZWEsIHNjcm9sbE1hcmdpbi5y
aWdodCgpLCBXVEZNb3ZlKGxlbmd0aCkpOwotfQotCiAjZW5kaWYKIAogYm9vbCBSZW5kZXJTdHls
ZTo6aGFzUmVmZXJlbmNlRmlsdGVyT25seSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IDRhMjc1YmIxMGIzZWUyNGIwYTM2YjU5MTI1
MTVlMTFhODkwYmQ5M2EuLjhiYTc0ZjA0NDJkZTBjNDFiODgxNjJkM2M2ODBkZjljOGIzMmFlZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC03
MTksNyArNzE5LDE1IEBAIHB1YmxpYzoKICAgICBPcHRpb25TZXQ8VG91Y2hBY3Rpb24+IGVmZmVj
dGl2ZVRvdWNoQWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPmVm
ZmVjdGl2ZVRvdWNoQWN0aW9uczsgfQogICAgIE9wdGlvblNldDxFdmVudExpc3RlbmVyUmVnaW9u
VHlwZT4gZXZlbnRMaXN0ZW5lclJlZ2lvblR5cGVzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5o
ZXJpdGVkRGF0YS0+ZXZlbnRMaXN0ZW5lclJlZ2lvblR5cGVzOyB9CiAKKyAgICBjb25zdCBMZW5n
dGhCb3gmIHNjcm9sbE1hcmdpbigpIGNvbnN0OworICAgIGNvbnN0IExlbmd0aCYgc2Nyb2xsTWFy
Z2luVG9wKCkgY29uc3Q7CisgICAgY29uc3QgTGVuZ3RoJiBzY3JvbGxNYXJnaW5Cb3R0b20oKSBj
b25zdDsKKyAgICBjb25zdCBMZW5ndGgmIHNjcm9sbE1hcmdpbkxlZnQoKSBjb25zdDsKKyAgICBj
b25zdCBMZW5ndGgmIHNjcm9sbE1hcmdpblJpZ2h0KCkgY29uc3Q7CisKICNpZiBFTkFCTEUoQ1NT
X1NDUk9MTF9TTkFQKQorICAgIGJvb2wgaGFzU25hcFBvc2l0aW9uKCkgY29uc3Q7CisKICAgICAv
LyBTY3JvbGwgc25hcCBwb3J0IHN0eWxlLgogICAgIGNvbnN0IFN0eWxlU2Nyb2xsU25hcFBvcnQm
IHNjcm9sbFNuYXBQb3J0KCkgY29uc3Q7CiAgICAgY29uc3QgU2Nyb2xsU25hcFR5cGUmIHNjcm9s
bFNuYXBUeXBlKCkgY29uc3Q7CkBAIC03MjksMTQgKzczNyw3IEBAIHB1YmxpYzoKICAgICBjb25z
dCBMZW5ndGgmIHNjcm9sbFBhZGRpbmdMZWZ0KCkgY29uc3Q7CiAgICAgY29uc3QgTGVuZ3RoJiBz
Y3JvbGxQYWRkaW5nUmlnaHQoKSBjb25zdDsKIAotICAgIC8vIFNjcm9sbCBzbmFwIGFyZWEgc3R5
bGUuCi0gICAgY29uc3QgU3R5bGVTY3JvbGxTbmFwQXJlYSYgc2Nyb2xsU25hcEFyZWEoKSBjb25z
dDsKICAgICBjb25zdCBTY3JvbGxTbmFwQWxpZ24mIHNjcm9sbFNuYXBBbGlnbigpIGNvbnN0Owot
ICAgIGNvbnN0IExlbmd0aEJveCYgc2Nyb2xsTWFyZ2luKCkgY29uc3Q7Ci0gICAgY29uc3QgTGVu
Z3RoJiBzY3JvbGxNYXJnaW5Ub3AoKSBjb25zdDsKLSAgICBjb25zdCBMZW5ndGgmIHNjcm9sbE1h
cmdpbkJvdHRvbSgpIGNvbnN0OwotICAgIGNvbnN0IExlbmd0aCYgc2Nyb2xsTWFyZ2luTGVmdCgp
IGNvbnN0OwotICAgIGNvbnN0IExlbmd0aCYgc2Nyb2xsTWFyZ2luUmlnaHQoKSBjb25zdDsKICNl
bmRpZgogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKQEAgLTEyNjUsNiArMTI2NiwxMSBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRFZmZlY3RpdmVUb3VjaEFjdGlvbnMoT3B0aW9uU2V0PFRvdWNo
QWN0aW9uPiB0b3VjaEFjdGlvbnMpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBlZmZl
Y3RpdmVUb3VjaEFjdGlvbnMsIHRvdWNoQWN0aW9ucyk7IH0KICAgICB2b2lkIHNldEV2ZW50TGlz
dGVuZXJSZWdpb25UeXBlcyhPcHRpb25TZXQ8RXZlbnRMaXN0ZW5lclJlZ2lvblR5cGU+IGV2ZW50
TGlzdGVuZXJUeXBlcykgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGV2ZW50TGlzdGVu
ZXJSZWdpb25UeXBlcywgZXZlbnRMaXN0ZW5lclR5cGVzKTsgfQogCisgICAgdm9pZCBzZXRTY3Jv
bGxNYXJnaW5Ub3AoTGVuZ3RoJiYpOworICAgIHZvaWQgc2V0U2Nyb2xsTWFyZ2luQm90dG9tKExl
bmd0aCYmKTsKKyAgICB2b2lkIHNldFNjcm9sbE1hcmdpbkxlZnQoTGVuZ3RoJiYpOworICAgIHZv
aWQgc2V0U2Nyb2xsTWFyZ2luUmlnaHQoTGVuZ3RoJiYpOworCiAjaWYgRU5BQkxFKENTU19TQ1JP
TExfU05BUCkKICAgICB2b2lkIHNldFNjcm9sbFNuYXBUeXBlKGNvbnN0IFNjcm9sbFNuYXBUeXBl
Jik7CiAgICAgdm9pZCBzZXRTY3JvbGxQYWRkaW5nVG9wKExlbmd0aCYmKTsKQEAgLTEyNzMsMTAg
KzEyNzksNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTY3JvbGxQYWRkaW5nUmlnaHQoTGVuZ3Ro
JiYpOwogCiAgICAgdm9pZCBzZXRTY3JvbGxTbmFwQWxpZ24oY29uc3QgU2Nyb2xsU25hcEFsaWdu
Jik7Ci0gICAgdm9pZCBzZXRTY3JvbGxNYXJnaW5Ub3AoTGVuZ3RoJiYpOwotICAgIHZvaWQgc2V0
U2Nyb2xsTWFyZ2luQm90dG9tKExlbmd0aCYmKTsKLSAgICB2b2lkIHNldFNjcm9sbE1hcmdpbkxl
ZnQoTGVuZ3RoJiYpOwotICAgIHZvaWQgc2V0U2Nyb2xsTWFyZ2luUmlnaHQoTGVuZ3RoJiYpOwog
I2VuZGlmCiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQpAQCAtMTY3NCwxMCArMTY3NiwxMSBA
QCBwdWJsaWM6CiAKICAgICBzdGF0aWMgVG91Y2hBY3Rpb24gaW5pdGlhbFRvdWNoQWN0aW9ucygp
IHsgcmV0dXJuIFRvdWNoQWN0aW9uOjpBdXRvOyB9CiAKKyAgICBzdGF0aWMgTGVuZ3RoIGluaXRp
YWxTY3JvbGxNYXJnaW4oKSB7IHJldHVybiBMZW5ndGgoRml4ZWQpOyB9CisKICNpZiBFTkFCTEUo
Q1NTX1NDUk9MTF9TTkFQKQogICAgIHN0YXRpYyBTY3JvbGxTbmFwVHlwZSBpbml0aWFsU2Nyb2xs
U25hcFR5cGUoKTsKICAgICBzdGF0aWMgU2Nyb2xsU25hcEFsaWduIGluaXRpYWxTY3JvbGxTbmFw
QWxpZ24oKTsKLSAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxTY3JvbGxNYXJnaW4oKSB7IHJldHVy
biBMZW5ndGgoRml4ZWQpOyB9CiAgICAgc3RhdGljIExlbmd0aCBpbml0aWFsU2Nyb2xsUGFkZGlu
ZygpIHsgcmV0dXJuIExlbmd0aChGaXhlZCk7IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0
YS5jcHAKaW5kZXggNDE5NzRjZTFlMDUxNzMxNzM2YmM0Zjc4NjI0MzM0ZDY3MWY5MjQzZi4uNDJm
OGNiNjA5OTQ5Mzc5MjY1MzI4YzMwMjFkZDNkNTc0ZWY3MWVlYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWRE
YXRhLmNwcApAQCAtNjIsNyArNjIsNiBAQCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpTdHls
ZVJhcmVOb25Jbmhlcml0ZWREYXRhKCkKICAgICAsIGdyaWRJdGVtKFN0eWxlR3JpZEl0ZW1EYXRh
OjpjcmVhdGUoKSkKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgICwgc2Nyb2xsU25h
cFBvcnQoU3R5bGVTY3JvbGxTbmFwUG9ydDo6Y3JlYXRlKCkpCi0gICAgLCBzY3JvbGxTbmFwQXJl
YShTdHlsZVNjcm9sbFNuYXBBcmVhOjpjcmVhdGUoKSkKICNlbmRpZgogICAgICwgd2lsbENoYW5n
ZShSZW5kZXJTdHlsZTo6aW5pdGlhbFdpbGxDaGFuZ2UoKSkKICAgICAsIG1hc2soRmlsbExheWVy
OjpjcmVhdGUoRmlsbExheWVyVHlwZTo6TWFzaykpCkBAIC0xMzksOSArMTM4LDEwIEBAIGlubGlu
ZSBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKGNv
bnN0IFN0eWxlUmFyZU5vbkluCiAjZW5kaWYKICAgICAsIGdyaWQoby5ncmlkKQogICAgICwgZ3Jp
ZEl0ZW0oby5ncmlkSXRlbSkKKyAgICAsIHNjcm9sbE1hcmdpbihvLnNjcm9sbE1hcmdpbikKICNp
ZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgICwgc2Nyb2xsU25hcFBvcnQoby5zY3JvbGxT
bmFwUG9ydCkKLSAgICAsIHNjcm9sbFNuYXBBcmVhKG8uc2Nyb2xsU25hcEFyZWEpCisgICAgLCBz
Y3JvbGxTbmFwQWxpZ24oby5zY3JvbGxTbmFwQWxpZ24pCiAjZW5kaWYKICAgICAsIGNvbnRlbnQo
by5jb250ZW50ID8gby5jb250ZW50LT5jbG9uZSgpIDogbnVsbHB0cikKICAgICAsIGNvdW50ZXJE
aXJlY3RpdmVzKG8uY291bnRlckRpcmVjdGl2ZXMgPyBtYWtlVW5pcXVlPENvdW50ZXJEaXJlY3Rp
dmVNYXA+KCpvLmNvdW50ZXJEaXJlY3RpdmVzKSA6IG51bGxwdHIpCkBAIC0yNDEsOSArMjQxLDEw
IEBAIGJvb2wgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9PShjb25zdCBTdHls
ZVJhcmVOb25Jbmhlcml0ZWREYXRhJiBvKSBjCiAjZW5kaWYKICAgICAgICAgJiYgZ3JpZCA9PSBv
LmdyaWQKICAgICAgICAgJiYgZ3JpZEl0ZW0gPT0gby5ncmlkSXRlbQorICAgICAgICAmJiBzY3Jv
bGxNYXJnaW4gPT0gby5zY3JvbGxNYXJnaW4KICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQog
ICAgICAgICAmJiBzY3JvbGxTbmFwUG9ydCA9PSBvLnNjcm9sbFNuYXBQb3J0Ci0gICAgICAgICYm
IHNjcm9sbFNuYXBBcmVhID09IG8uc2Nyb2xsU25hcEFyZWEKKyAgICAgICAgJiYgc2Nyb2xsU25h
cEFsaWduID09IG8uc2Nyb2xsU25hcEFsaWduCiAjZW5kaWYKICAgICAgICAgJiYgY29udGVudERh
dGFFcXVpdmFsZW50KG8pCiAgICAgICAgICYmIGFyZVBvaW50aW5nVG9FcXVhbERhdGEoY291bnRl
ckRpcmVjdGl2ZXMsIG8uY291bnRlckRpcmVjdGl2ZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaAppbmRl
eCBhNGY4YzRiMGQyZjkwYTBkYjg2ZTU0ODQzOWU4YjdlYTYxZmYyZGViLi5jMjU4NGNmYjdmNGYx
MGQyMGYwNjQxNTAwOTA3ZGVjY2IxM2Q1MDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgKQEAgLTM2
LDYgKzM2LDcgQEAKICNpbmNsdWRlICJTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbi5oIgogI2luY2x1
ZGUgIlNoYXBlVmFsdWUuaCIKICNpbmNsdWRlICJTdHlsZUNvbnRlbnRBbGlnbm1lbnREYXRhLmgi
CisjaW5jbHVkZSAiU3R5bGVTY3JvbGxTbmFwUG9pbnRzLmgiCiAjaW5jbHVkZSAiU3R5bGVTZWxm
QWxpZ25tZW50RGF0YS5oIgogI2luY2x1ZGUgIlRvdWNoQWN0aW9uLmgiCiAjaW5jbHVkZSAiVHJh
bnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmgiCkBAIC02MCw4ICs2MSw2IEBAIGNsYXNzIFN0eWxl
TWFycXVlZURhdGE7CiBjbGFzcyBTdHlsZU11bHRpQ29sRGF0YTsKIGNsYXNzIFN0eWxlUmVmbGVj
dGlvbjsKIGNsYXNzIFN0eWxlUmVzb2x2ZXI7Ci1jbGFzcyBTdHlsZVNjcm9sbFNuYXBBcmVhOwot
Y2xhc3MgU3R5bGVTY3JvbGxTbmFwUG9ydDsKIGNsYXNzIFN0eWxlVHJhbnNmb3JtRGF0YTsKIAog
c3RydWN0IExlbmd0aFNpemU7CkBAIC0xMjksOSArMTI4LDEwIEBAIHB1YmxpYzoKICAgICBEYXRh
UmVmPFN0eWxlR3JpZERhdGE+IGdyaWQ7CiAgICAgRGF0YVJlZjxTdHlsZUdyaWRJdGVtRGF0YT4g
Z3JpZEl0ZW07CiAKKyAgICBMZW5ndGhCb3ggc2Nyb2xsTWFyZ2luIHsgMCwgMCwgMCwgMCB9Owog
I2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgRGF0YVJlZjxTdHlsZVNjcm9sbFNuYXBQ
b3J0PiBzY3JvbGxTbmFwUG9ydDsKLSAgICBEYXRhUmVmPFN0eWxlU2Nyb2xsU25hcEFyZWE+IHNj
cm9sbFNuYXBBcmVhOworICAgIFNjcm9sbFNuYXBBbGlnbiBzY3JvbGxTbmFwQWxpZ247CiAjZW5k
aWYKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RGF0YT4gY29udGVudDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVNjcm9sbFNuYXBQb2ludHMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU2Nyb2xsU25hcFBvaW50
cy5jcHAKaW5kZXggOWU2YTkxZjAwNDA4NzBhN2ZmYjc3YTM0OTczYWUzYzA5ZjZmY2NmYS4uYjZh
MjI2YjUxODZmYWQ5ZDJlM2Y3ZmE5NDc2NDQ5MDc5N2ZjZDJkNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU2Nyb2xsU25hcFBvaW50cy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU2Nyb2xsU25hcFBvaW50cy5jcHAK
QEAgLTQ2LDIzICs0Niw2IEBAIGlubGluZSBTdHlsZVNjcm9sbFNuYXBQb3J0OjpTdHlsZVNjcm9s
bFNuYXBQb3J0KGNvbnN0IFN0eWxlU2Nyb2xsU25hcFBvcnQmIG90aGVyCiB7CiB9CiAKLVJlZjxT
dHlsZVNjcm9sbFNuYXBBcmVhPiBTdHlsZVNjcm9sbFNuYXBBcmVhOjpjb3B5KCkgY29uc3QKLXsK
LSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVNjcm9sbFNuYXBBcmVhKCp0aGlzKSk7Ci19
Ci0KLVN0eWxlU2Nyb2xsU25hcEFyZWE6OlN0eWxlU2Nyb2xsU25hcEFyZWEoKQotICAgIDogc2Ny
b2xsTWFyZ2luKDAsIDAsIDAsIDApCi17Ci19Ci0KLWlubGluZSBTdHlsZVNjcm9sbFNuYXBBcmVh
OjpTdHlsZVNjcm9sbFNuYXBBcmVhKGNvbnN0IFN0eWxlU2Nyb2xsU25hcEFyZWEmIG90aGVyKQot
ICAgIDogUmVmQ291bnRlZCgpCi0gICAgLCBhbGlnbm1lbnQob3RoZXIuYWxpZ25tZW50KQotICAg
ICwgc2Nyb2xsTWFyZ2luKG90aGVyLnNjcm9sbE1hcmdpbikKLXsKLX0KLQogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLyogRU5BQkxFKENTU19TQ1JPTExfU05BUCkgKi8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVNjcm9sbFNuYXBQb2lu
dHMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVNjcm9sbFNuYXBQb2lu
dHMuaAppbmRleCAwYmM5Y2JjMGJmNjVhNzQ2M2RkNWMwMDE3YmQ5OTQ1Nzc3NTFiZGI0Li5mMTk0
NGUwMzVhMjk1ZjUwMmUwYWI3Y2FjMjIxNTY3OWQ0NjRiYzE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTY3JvbGxTbmFwUG9pbnRzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU2Nyb2xsU25hcFBvaW50cy5oCkBAIC03
OSwyNyArNzksNiBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcm9sbFNuYXBBbGln
biYgYSwgY29uc3QgU2Nyb2xsU25hcEFsaWduJiBiKQogCiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IFNjcm9sbFNuYXBBbGlnbiYgYSwgY29uc3QgU2Nyb2xsU25hcEFsaWduJiBiKSB7IHJl
dHVybiAhKGEgPT0gYik7IH0KIAotY2xhc3MgU3R5bGVTY3JvbGxTbmFwQXJlYSA6IHB1YmxpYyBS
ZWZDb3VudGVkPFN0eWxlU2Nyb2xsU25hcEFyZWE+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PFN0eWxlU2Nyb2xsU25hcEFyZWE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5
bGVTY3JvbGxTbmFwQXJlYSk7IH0KLSAgICBSZWY8U3R5bGVTY3JvbGxTbmFwQXJlYT4gY29weSgp
IGNvbnN0OwotICAgIGJvb2wgaGFzU25hcFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gYWxpZ25t
ZW50LnggIT0gU2Nyb2xsU25hcEF4aXNBbGlnblR5cGU6Ok5vbmUgfHwgYWxpZ25tZW50LnkgIT0g
U2Nyb2xsU25hcEF4aXNBbGlnblR5cGU6Ok5vbmU7IH0KLQotICAgIFNjcm9sbFNuYXBBbGlnbiBh
bGlnbm1lbnQ7Ci0gICAgTGVuZ3RoQm94IHNjcm9sbE1hcmdpbiB7IDAsIDAsIDAsIDAgfTsKLQot
cHJpdmF0ZToKLSAgICBTdHlsZVNjcm9sbFNuYXBBcmVhKCk7Ci0gICAgU3R5bGVTY3JvbGxTbmFw
QXJlYShjb25zdCBTdHlsZVNjcm9sbFNuYXBBcmVhJik7Ci19OwotCi1pbmxpbmUgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFN0eWxlU2Nyb2xsU25hcEFyZWEmIGEsIGNvbnN0IFN0eWxlU2Nyb2xsU25h
cEFyZWEmIGIpCi17Ci0gICAgcmV0dXJuIGEuYWxpZ25tZW50ID09IGIuYWxpZ25tZW50ICYmIGEu
c2Nyb2xsTWFyZ2luID09IGIuc2Nyb2xsTWFyZ2luOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IFN0eWxlU2Nyb2xsU25hcEFyZWEmIGEsIGNvbnN0IFN0eWxlU2Nyb2xsU25hcEFy
ZWEmIGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGEwMTQ4NmY5ZjZkYmQw
ZGI1MDAwOWFmYjk2NDE0YzQ4ZDBkNWY2MmIuLjNmNzAxYjc0NTAxOWQxOGU3NTI4M2Q4N2UzZTBk
MTFmOThiYTJlZDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMC0xMC0yOCAgTWFydGluIFJv
Ymluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CisKKyAgICAgICAgTWFrZSBzY3JvbGwtbWFy
Z2luIGluZGVwZW5kZW50IG9mIHNjcm9sbCBzbmFwcGluZyBhbmQgaGF2ZSBpdCBhcHBseSB3aGVu
IHNjcm9sbGluZyB0byBhbmNob3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTgwNzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6IFVwZGF0ZWQgZXhwZWN0YXRpb25zIGZv
ciBuZXdseSBwYXNzaW5nIHRlc3RzLgorCiAyMDIwLTEwLTI3ICBaYWxhbiBCdWp0YXMgIDx6YWxh
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHVubmVlZGVkIHdoaXRlc3BhY2UgYmV0d2Vl
biBjb250ZW50IGFuZCA8YnI+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRp
b25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBjYWRiZDhhZDVjMjE3Mzc4
YzA0ZDViYTc3MzNmNzAwMThiNGEzNzQyLi45NzNiOWJlYTJlNDc2Yjg4NDQzYzY0ZWI1YzcyZmJk
OTM5ZWI0MGRjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBi
L0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTQ1MDMsMTAgKzQ1MDMsNiBAQCB3ZWJr
aXQub3JnL2IvMjE1NTMxIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1i
YWNrZ3JvdW5kcy9iYWNrZ3JvdQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLXNjcm9sbC1zbmFwL3Njcm9sbC10YXJnZXQtYWxpZ24tMDAxLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwt
c25hcC9zY3JvbGwtdGFyZ2V0LWFsaWduLTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mtc2Nyb2xsLXNuYXAvc2Nyb2xs
LXRhcmdldC1hbGlnbi0wMDMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXNjcm9sbC1zbmFwL3Njcm9sbC10YXJnZXQtbWFy
Z2luLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3Mtc2Nyb2xsLXNuYXAvc2Nyb2xsLXRhcmdldC1tYXJnaW4tMDAyLmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy1zY3JvbGwtc25hcC9zY3JvbGwtdGFyZ2V0LW1hcmdpbi0wMDMuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXNj
cm9sbC1zbmFwL3Njcm9sbC10YXJnZXQtbWFyZ2luLTAwNC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mtc2Nyb2xsLXNuYXAv
c2Nyb2xsLXRhcmdldC1wYWRkaW5nLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mtc2Nyb2xsLXNuYXAvc2Nyb2xsLXRh
cmdldC1wYWRkaW5nLTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mtc2Nyb2xsLXNuYXAvc2Nyb2xsLXRhcmdldC1wYWRk
aW5nLTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCg==
</data>
<flag name="commit-queue"
          id="429000"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412524</attachid>
            <date>2020-10-28 06:26:51 -0700</date>
            <delta_ts>2020-10-29 01:40:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218076-20201028142646.patch</filename>
            <type>text/plain</type>
            <size>27390</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzQ1MWEyOGI0NWEwYmRj
MmQzZjAwMDEzMTY2ZTBmZmM3YTQ4OTRlMy4uMDBmNzM4MmY5NDBmNTAxNDJhNGI2MzI3ZTg3YTY3
NjNlYzdmNWEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDIwLTEwLTI4ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBNYWtlIHNjcm9s
bC1tYXJnaW4gaW5kZXBlbmRlbnQgb2Ygc2Nyb2xsIHNuYXBwaW5nIGFuZCBoYXZlIGl0IGFwcGx5
IHdoZW4gc2Nyb2xsaW5nIHRvIGFuY2hvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxODA3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudDo6c2Nyb2xsSW50b1ZpZXcpOiBVc2UgYWJzb2x1dGVBbmNob3JSZWN0V2l0aFNjcm9s
bE1hcmdpbiwgdGFraW5nIGludG8KKyAgICAgICAgYWNjb3VudCBzY3JvbGwtbWFyZ2luLgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2Nyb2xsSW50b1ZpZXdJZk5vdFZpc2libGUpOiBE
aXR0by4KKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZVZpZXc6OnNjcm9sbFRvQW5jaG9yKTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmFic29sdXRlQW5jaG9y
UmVjdFdpdGhTY3JvbGxNYXJnaW4gY29uc3QpOiBBZGRlZCB0aGlzIG92ZXJyaWRlCisgICAgICAg
IHdoaWNoIHByb3Blcmx5IGNvbnZlcnRzIHRoZSBzY3JvbGwtbWFyZ2luIHRvIExheW91dFVuaXRz
IGFuZCBhcHBsaWVzIGl0IHRvIGFic29sdXRlQW5jaG9yUmVjdC4KKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQm94Lmg6IEFkZGVkIG1ldGhvZCBkZWNsYXJhdGlvbi4KKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50
OjphYnNvbHV0ZUFuY2hvclJlY3RXaXRoU2Nyb2xsTWFyZ2luIGNvbnN0KTogQWRkZWQgaW1wbGVt
ZW50YXRpb24KKyAgICAgICAgdGhhdCBzaW1wbHkgY2FsbHMgYWJzb2x1dGVBbmNob3JSZWN0Lgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50Lmg6IEFkZGVkIGRlY2xhcmF0aW9uIG9m
IG5ldyB2aXJ0dWFsCisgICAgICAgIGFic29sdXRlQW5jaG9yUmVjdFdpdGhTY3JvbGxNYXJnaW4u
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6c3R5bGVEaWRDaGFuZ2UpOiBHZXQg
dGhlIHNjcm9sbC1tYXJnaW4gZGlyZWN0bHkgZnJvbSB0aGUKKyAgICAgICAgc3R5bGUgaW5zdGVh
ZCBvZiB0aGUgbm93LXJlbW92ZWQgU2Nyb2xsU25hcEFyZWEuCisgICAgICAgICogcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpz
Y3JvbGxNYXJnaW4gY29uc3QpOiBNb3ZlIHNjcm9sbC1tYXJnaW4gYW5kIHNjcm9sbC1zbmFwLWFs
aWduIHRvCisgICAgICAgIG1fcmFyZU5vbkluaGVyaXRlZERhdGEgYW5kIGdldCByaWQgb2YgaW50
ZXJtZWRpYXRlIFNjcm9sbFNuYXBBcmVhLiBUaGVzZSB0d28gcHJvcGVydGllcworICAgICAgICBh
cmUgbm8gaW5kZXBlbmRlbnQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2Nyb2xs
TWFyZ2luVG9wIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6
c2Nyb2xsTWFyZ2luQm90dG9tIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6c2Nyb2xsTWFyZ2luTGVmdCBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU3R5bGU6OnNjcm9sbE1hcmdpblJpZ2h0IGNvbnN0KTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0U2Nyb2xsTWFyZ2luVG9wKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0U2Nyb2xsTWFyZ2luQm90dG9tKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0U2Nyb2xsTWFyZ2luTGVmdCk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFNjcm9sbE1hcmdpblJpZ2h0
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2Nyb2xsU25hcEFsaWdu
IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0U2Nyb2xs
U25hcEFsaWduKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aGFzU25h
cFBvc2l0aW9uIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6
c2Nyb2xsU25hcEFyZWEgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5oOiBBZGQgYWNjZXNzb3JzIGZvciBzY3JvbGwtbWFyZ2luIGFuZCBtb3Zl
ZCBoYXNTbmFwUG9zaXRpb24KKyAgICAgICAgZnJvbSBTY3JvbGxTbmFwQXJlYS4KKyAgICAgICAg
KiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHA6IFJlbW92ZWQg
aW50ZXJtZWRpYXRlIFNjcm9sbFNuYXBBcmVhIGRhdGEKKyAgICAgICAgc3RydWN0dXJlIGFuZCBt
b3ZlZCBtZW1iZXJzIGhlcmUuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVOb25Jbmhlcml0
ZWREYXRhOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09IGNvbnN0KTogRGl0dG8u
CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaDog
RGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlU2Nyb2xsU25hcFBvaW50cy5j
cHA6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTY3JvbGxTbmFwQXJlYTo6Y29weSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZVNjcm9sbFNuYXBBcmVhOjpT
dHlsZVNjcm9sbFNuYXBBcmVhKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
U3R5bGVTY3JvbGxTbmFwUG9pbnRzLmg6IFJlbW92ZWQgU2Nyb2xsU25hcEFyZWEuCisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVNjcm9sbFNuYXBBcmVhOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVTY3JvbGxTbmFwQXJlYTo6aGFzU25hcFBvc2l0aW9uIGNvbnN0KTog
RGVsZXRlZC4KKwogMjAyMC0xMC0yNyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxl
LmNvbT4KIAogICAgICAgICBbQ29uY3VycmVudCBkaXNwbGF5IGxpc3RzXSBBZGQgYWx0ZXJuYXRl
IHZlcnNpb25zIG9mIGV4aXN0aW5nIGRpc3BsYXkgbGlzdCBpdGVtcyB0aGF0IG9ubHkgY29udGFp
biBpbmxpbmUgZGF0YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGQ4OGIwYjlkNTQ2ZjZkNTgx
ZWVjNWFmMDQ0MmM0ZGM3OGE0ZmE4Y2EuLjVlZjNmZTk3ODhmZGRhZWY3ZmE5Y2VmNTZiZWVjODY1
YzNiOWM1NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTg2MSw3ICs4NjEsNyBAQCB2b2lk
IEVsZW1lbnQ6OnNjcm9sbEludG9WaWV3KE9wdGlvbmFsPFZhcmlhbnQ8Ym9vbCwgU2Nyb2xsSW50
b1ZpZXdPcHRpb25zPj4mJiBhcgogICAgICAgICByZXR1cm47CiAKICAgICBib29sIGluc2lkZUZp
eGVkOwotICAgIExheW91dFJlY3QgYWJzb2x1dGVCb3VuZHMgPSByZW5kZXJlcigpLT5hYnNvbHV0
ZUFuY2hvclJlY3QoJmluc2lkZUZpeGVkKTsKKyAgICBMYXlvdXRSZWN0IGFic29sdXRlQm91bmRz
ID0gcmVuZGVyZXIoKS0+YWJzb2x1dGVBbmNob3JSZWN0V2l0aFNjcm9sbE1hcmdpbigmaW5zaWRl
Rml4ZWQpOwogCiAgICAgU2Nyb2xsSW50b1ZpZXdPcHRpb25zIG9wdGlvbnM7CiAgICAgaWYgKGFy
ZykgewpAQCAtODk1LDcgKzg5NSw3IEBAIHZvaWQgRWxlbWVudDo6c2Nyb2xsSW50b1ZpZXcoYm9v
bCBhbGlnblRvVG9wKQogICAgICAgICByZXR1cm47CiAKICAgICBib29sIGluc2lkZUZpeGVkOwot
ICAgIExheW91dFJlY3QgYWJzb2x1dGVCb3VuZHMgPSByZW5kZXJlcigpLT5hYnNvbHV0ZUFuY2hv
clJlY3QoJmluc2lkZUZpeGVkKTsKKyAgICBMYXlvdXRSZWN0IGFic29sdXRlQm91bmRzID0gcmVu
ZGVyZXIoKS0+YWJzb2x1dGVBbmNob3JSZWN0V2l0aFNjcm9sbE1hcmdpbigmaW5zaWRlRml4ZWQp
OwogICAgIC8vIEFsaWduIHRvIHRoZSB0b3AgLyBib3R0b20gYW5kIHRvIHRoZSBjbG9zZXN0IGVk
Z2UuCiAgICAgaWYgKGFsaWduVG9Ub3ApCiAgICAgICAgIHJlbmRlcmVyKCktPnNjcm9sbFJlY3RU
b1Zpc2libGUoYWJzb2x1dGVCb3VuZHMsIGluc2lkZUZpeGVkLCB7IFNlbGVjdGlvblJldmVhbE1v
ZGU6OlJldmVhbCwgU2Nyb2xsQWxpZ25tZW50OjphbGlnblRvRWRnZUlmTmVlZGVkLCBTY3JvbGxB
bGlnbm1lbnQ6OmFsaWduVG9wQWx3YXlzLCBTaG91bGRBbGxvd0Nyb3NzT3JpZ2luU2Nyb2xsaW5n
OjpObyB9KTsKQEAgLTkxMSw3ICs5MTEsNyBAQCB2b2lkIEVsZW1lbnQ6OnNjcm9sbEludG9WaWV3
SWZOZWVkZWQoYm9vbCBjZW50ZXJJZk5lZWRlZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYm9v
bCBpbnNpZGVGaXhlZDsKLSAgICBMYXlvdXRSZWN0IGFic29sdXRlQm91bmRzID0gcmVuZGVyZXIo
KS0+YWJzb2x1dGVBbmNob3JSZWN0KCZpbnNpZGVGaXhlZCk7CisgICAgTGF5b3V0UmVjdCBhYnNv
bHV0ZUJvdW5kcyA9IHJlbmRlcmVyKCktPmFic29sdXRlQW5jaG9yUmVjdFdpdGhTY3JvbGxNYXJn
aW4oJmluc2lkZUZpeGVkKTsKICAgICBpZiAoY2VudGVySWZOZWVkZWQpCiAgICAgICAgIHJlbmRl
cmVyKCktPnNjcm9sbFJlY3RUb1Zpc2libGUoYWJzb2x1dGVCb3VuZHMsIGluc2lkZUZpeGVkLCB7
IFNlbGVjdGlvblJldmVhbE1vZGU6OlJldmVhbCwgU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNlbnRl
cklmTmVlZGVkLCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduQ2VudGVySWZOZWVkZWQsIFNob3VsZEFs
bG93Q3Jvc3NPcmlnaW5TY3JvbGxpbmc6Ok5vIH0pOwogICAgIGVsc2UKQEAgLTkyNiw3ICs5MjYs
NyBAQCB2b2lkIEVsZW1lbnQ6OnNjcm9sbEludG9WaWV3SWZOb3RWaXNpYmxlKGJvb2wgY2VudGVy
SWZOb3RWaXNpYmxlKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgYm9vbCBpbnNpZGVGaXhl
ZDsKLSAgICBMYXlvdXRSZWN0IGFic29sdXRlQm91bmRzID0gcmVuZGVyZXIoKS0+YWJzb2x1dGVB
bmNob3JSZWN0KCZpbnNpZGVGaXhlZCk7CisgICAgTGF5b3V0UmVjdCBhYnNvbHV0ZUJvdW5kcyA9
IHJlbmRlcmVyKCktPmFic29sdXRlQW5jaG9yUmVjdFdpdGhTY3JvbGxNYXJnaW4oJmluc2lkZUZp
eGVkKTsKICAgICBpZiAoY2VudGVySWZOb3RWaXNpYmxlKQogICAgICAgICByZW5kZXJlcigpLT5z
Y3JvbGxSZWN0VG9WaXNpYmxlKGFic29sdXRlQm91bmRzLCBpbnNpZGVGaXhlZCwgeyBTZWxlY3Rp
b25SZXZlYWxNb2RlOjpSZXZlYWwsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25DZW50ZXJJZk5vdFZp
c2libGUsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25DZW50ZXJJZk5vdFZpc2libGUsIFNob3VsZEFs
bG93Q3Jvc3NPcmlnaW5TY3JvbGxpbmc6Ok5vIH0pOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmNwcAppbmRleCAyYzQ4MjYzODU5YmFlNTk2N2RjZjMxYmJiMDA4YjMwNzliMTMyYWFm
Li4wZjRjOGIwM2FhOTk1MDY4Mzg4ZjAyOWM3YmM0NjE1MTFlNjA1NWU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuY3BwCkBAIC0zMTc2LDcgKzMxNzYsNyBAQCB2b2lkIEZyYW1lVmlldzo6c2Ny
b2xsVG9BbmNob3IoKQogICAgIExheW91dFJlY3QgcmVjdDsKICAgICBib29sIGluc2lkZUZpeGVk
ID0gZmFsc2U7CiAgICAgaWYgKGFuY2hvck5vZGUgIT0gZnJhbWUoKS5kb2N1bWVudCgpICYmIGFu
Y2hvck5vZGUtPnJlbmRlcmVyKCkpCi0gICAgICAgIHJlY3QgPSBhbmNob3JOb2RlLT5yZW5kZXJl
cigpLT5hYnNvbHV0ZUFuY2hvclJlY3QoJmluc2lkZUZpeGVkKTsKKyAgICAgICAgcmVjdCA9IGFu
Y2hvck5vZGUtPnJlbmRlcmVyKCktPmFic29sdXRlQW5jaG9yUmVjdFdpdGhTY3JvbGxNYXJnaW4o
Jmluc2lkZUZpeGVkKTsKIAogICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxpbmcsIHN0cmVhbSA8
PCAiIGFuY2hvciBub2RlIHJlY3QgIiA8PCByZWN0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmNwcAppbmRleCBmMmZjOTZhMzBhM2IzNDIzYjg1YjZiYWRkMzMwYmMyOWFmYTMx
YjcxLi40YmY0MGY0MGIwNTM0M2Q2OTgxYzdmYTZlNjA2MDNiNGM5MWYxZDhhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtMTYxLDcgKzE2MSw3IEBAIHZvaWQgUmVu
ZGVyQm94Ojp3aWxsQmVEZXN0cm95ZWQoKQogICAgIHJlbW92ZUNvbnRyb2xTdGF0ZXNGb3JSZW5k
ZXJlcigqdGhpcyk7CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIGlmIChoYXNJ
bml0aWFsaXplZFN0eWxlKCkgJiYgc3R5bGUoKS5zY3JvbGxTbmFwQXJlYSgpLmhhc1NuYXBQb3Np
dGlvbigpKQorICAgIGlmIChoYXNJbml0aWFsaXplZFN0eWxlKCkgJiYgc3R5bGUoKS5oYXNTbmFw
UG9zaXRpb24oKSkKICAgICAgICAgdmlldygpLnVucmVnaXN0ZXJCb3hXaXRoU2Nyb2xsU25hcFBv
c2l0aW9ucygqdGhpcyk7CiAjZW5kaWYKIApAQCAtMjc3LDggKzI3Nyw4IEBAIHZvaWQgUmVuZGVy
Qm94OjpzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0
eWxlJiBuZXdTdHlsCiAgICAgICAgIHZpZXcoKS5yZXBhaW50Um9vdENvbnRlbnRzKCk7CiAKICNp
ZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIGJvb2wgYm94Q29udHJpYnV0ZXNTbmFwUG9z
aXRpb25zID0gbmV3U3R5bGUuc2Nyb2xsU25hcEFyZWEoKS5oYXNTbmFwUG9zaXRpb24oKTsKLSAg
ICBpZiAoYm94Q29udHJpYnV0ZXNTbmFwUG9zaXRpb25zIHx8IChvbGRTdHlsZSAmJiBvbGRTdHls
ZS0+c2Nyb2xsU25hcEFyZWEoKS5oYXNTbmFwUG9zaXRpb24oKSkpIHsKKyAgICBib29sIGJveENv
bnRyaWJ1dGVzU25hcFBvc2l0aW9ucyA9IG5ld1N0eWxlLmhhc1NuYXBQb3NpdGlvbigpOworICAg
IGlmIChib3hDb250cmlidXRlc1NuYXBQb3NpdGlvbnMgfHwgKG9sZFN0eWxlICYmIG9sZFN0eWxl
LT5oYXNTbmFwUG9zaXRpb24oKSkpIHsKICAgICAgICAgaWYgKGJveENvbnRyaWJ1dGVzU25hcFBv
c2l0aW9ucykKICAgICAgICAgICAgIHZpZXcoKS5yZWdpc3RlckJveFdpdGhTY3JvbGxTbmFwUG9z
aXRpb25zKCp0aGlzKTsKICAgICAgICAgZWxzZQpAQCAtNTA1NCw0ICs1MDU0LDIyIEBAIGNvbnN0
IFJlbmRlckJveCogUmVuZGVyQm94OjpmaW5kRW5jbG9zaW5nU2Nyb2xsYWJsZUNvbnRhaW5lcigp
IGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK0xheW91dFJlY3QgUmVuZGVyQm94Ojph
YnNvbHV0ZUFuY2hvclJlY3RXaXRoU2Nyb2xsTWFyZ2luKGJvb2wqIGluc2lkZUZpeGVkKSBjb25z
dAoreworICAgIExheW91dFJlY3QgYW5jaG9yUmVjdCA9IGFic29sdXRlQW5jaG9yUmVjdChpbnNp
ZGVGaXhlZCk7CisgICAgY29uc3QgTGVuZ3RoQm94JiBzY3JvbGxNYXJnaW4gPSBzdHlsZSgpLnNj
cm9sbE1hcmdpbigpOworICAgIGlmIChzY3JvbGxNYXJnaW4uaXNaZXJvKCkpCisgICAgICAgIHJl
dHVybiBhbmNob3JSZWN0OworCisgICAgY29uc3QgTGF5b3V0U2l6ZSBib3hTaXplID0gc2l6ZSgp
OworICAgIGNvbnN0IExheW91dEJveEV4dGVudCBtYXJnaW4oCisgICAgICAgIHZhbHVlRm9yTGVu
Z3RoKHNjcm9sbE1hcmdpbi50b3AoKSwgYm94U2l6ZS5oZWlnaHQoKSksCisgICAgICAgIHZhbHVl
Rm9yTGVuZ3RoKHNjcm9sbE1hcmdpbi5yaWdodCgpLCBib3hTaXplLndpZHRoKCkpLAorICAgICAg
ICB2YWx1ZUZvckxlbmd0aChzY3JvbGxNYXJnaW4uYm90dG9tKCksIGJveFNpemUuaGVpZ2h0KCkp
LAorICAgICAgICB2YWx1ZUZvckxlbmd0aChzY3JvbGxNYXJnaW4ubGVmdCgpLCBib3hTaXplLndp
ZHRoKCkpKTsKKyAgICBhbmNob3JSZWN0LmV4cGFuZChtYXJnaW4pOworCisgICAgcmV0dXJuIGFu
Y2hvclJlY3Q7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guaAppbmRleCBmODlhNjRiNTEwY2UzMzhiYzA1ODdiMjI4ODM0NjYzNDIwY2M2
ZTE3Li5lMDgxNDVkOGUwZTlmNjI2MTMwMzliMTZlNGExNjBhYzE3OWNhZWMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCkBAIC02NDQsNiArNjQ0LDggQEAgb3ZlcnJpZGU7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0Qm9yZGVyQm94UmVjdEZvclBhaW50aW5nKExheW91dFJl
Y3QmKSB7IH07CiAKKyAgICBMYXlvdXRSZWN0IGFic29sdXRlQW5jaG9yUmVjdFdpdGhTY3JvbGxN
YXJnaW4oYm9vbCogaW5zaWRlRml4ZWQgPSBudWxscHRyKSBjb25zdCBvdmVycmlkZTsKKwogcHJv
dGVjdGVkOgogICAgIFJlbmRlckJveChFbGVtZW50JiwgUmVuZGVyU3R5bGUmJiwgQmFzZVR5cGVG
bGFncyk7CiAgICAgUmVuZGVyQm94KERvY3VtZW50JiwgUmVuZGVyU3R5bGUmJiwgQmFzZVR5cGVG
bGFncyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKaW5kZXgg
YmRjMDE1ZmY2YmUwZTI4YWI1ZTliYWMwYTI3YzNjOTkwZWEyMWRjNi4uZjg0YjdkNTkyY2ZkY2Nk
ODhjMGEwYzk2NmY1ZGU2Zjc0ZTM4MWQ2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJFbGVtZW50LmNwcApAQCAtMTY1Nyw2ICsxNjU3LDExIEBAIExheW91dFJlY3QgUmVuZGVy
RWxlbWVudDo6YWJzb2x1dGVBbmNob3JSZWN0KGJvb2wqIGluc2lkZUZpeGVkKSBjb25zdAogICAg
IHJldHVybiBlbmNsb3NpbmdMYXlvdXRSZWN0KEZsb2F0UmVjdCh1cHBlckxlZnQsIGxvd2VyUmln
aHQuZXhwYW5kZWRUbyh1cHBlckxlZnQpIC0gdXBwZXJMZWZ0KSk7CiB9CiAKK0xheW91dFJlY3Qg
UmVuZGVyRWxlbWVudDo6YWJzb2x1dGVBbmNob3JSZWN0V2l0aFNjcm9sbE1hcmdpbihib29sKiBp
bnNpZGVGaXhlZCkgY29uc3QKK3sKKyAgICByZXR1cm4gYWJzb2x1dGVBbmNob3JSZWN0KGluc2lk
ZUZpeGVkKTsKK30KKwogY29uc3QgUmVuZGVyRWxlbWVudCogUmVuZGVyRWxlbWVudDo6ZW5jbG9z
aW5nUmVuZGVyZXJXaXRoVGV4dERlY29yYXRpb24oT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiB0
ZXh0RGVjb3JhdGlvbiwgYm9vbCBmaXJzdExpbmUpIGNvbnN0CiB7CiAgICAgY29uc3QgUmVuZGVy
RWxlbWVudCogY3VycmVudCA9IHRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuaAppbmRleCBiODBkMjhiYmM1M2FlMDE5OGIwOTE4MWYxYzcyNGNiOGZlZjg0NTQ0Li43
NjNjNjE3ZjFhNjM1ZGYxOWRlMDA1MDM0Y2M4OWU0NDMzZDQ2OTFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKQEAgLTE1NSwxMSArMTU1LDE1IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgY2hlY2tGb3JSZXBhaW50RHVyaW5nTGF5b3V0KCkgY29uc3Q7CiAKLSAgICAv
LyBhbmNob3JSZWN0KCkgaXMgY29uY2VwdHVhbGx5IHNpbWlsYXIgdG8gYWJzb2x1dGVCb3VuZGlu
Z0JveFJlY3QoKSwgYnV0IGlzIGludGVuZGVkIGZvciBzY3JvbGxpbmcgdG8gYW4gYW5jaG9yLgot
ICAgIC8vIEZvciBpbmxpbmUgcmVuZGVyZXJzLCB0aGlzIGdldHMgdGhlIGxvZ2ljYWwgdG9wIGxl
ZnQgb2YgdGhlIGZpcnN0IGxlYWYgY2hpbGQgYW5kIHRoZSBsb2dpY2FsIGJvdHRvbSByaWdodCBv
ZiB0aGUKLSAgICAvLyBsYXN0IGxlYWYgY2hpbGQsIGNvbnZlcnRzIHRoZW0gdG8gYWJzb2x1dGUg
Y29vcmRpbmF0ZXMsIGFuZCBtYWtlcyBhIGJveCBvdXQgb2YgdGhlbS4KKyAgICAvLyBhYnNvbHV0
ZUFuY2hvclJlY3QoKSBpcyBjb25jZXB0dWFsbHkgc2ltaWxhciB0byBhYnNvbHV0ZUJvdW5kaW5n
Qm94UmVjdCgpLCBidXQgaXMgaW50ZW5kZWQgZm9yIHNjcm9sbGluZyB0byBhbgorICAgIC8vIGFu
Y2hvci4gRm9yIGlubGluZSByZW5kZXJlcnMsIHRoaXMgZ2V0cyB0aGUgbG9naWNhbCB0b3AgbGVm
dCBvZiB0aGUgZmlyc3QgbGVhZiBjaGlsZCBhbmQgdGhlIGxvZ2ljYWwgYm90dG9tCisgICAgLy8g
cmlnaHQgb2YgdGhlIGxhc3QgbGVhZiBjaGlsZCwgY29udmVydHMgdGhlbSB0byBhYnNvbHV0ZSBj
b29yZGluYXRlcywgYW5kIG1ha2VzIGEgYm94IG91dCBvZiB0aGVtLgogICAgIExheW91dFJlY3Qg
YWJzb2x1dGVBbmNob3JSZWN0KGJvb2wqIGluc2lkZUZpeGVkID0gbnVsbHB0cikgY29uc3Q7CiAK
KyAgICAvLyBhYnNvbHV0ZUFuY2hvclJlY3RXaXRoU2Nyb2xsTWFyZ2luKCkgaXMgc2ltaWxhciB0
byBhYnNvbHV0ZUFuY2hvclJlY3QsIGJ1dCBpdCBhbHNvIHRha2VzIGludG8gYWNjb3VudCBhbnkK
KyAgICAvLyBDU1Mgc2Nyb2xsLW1hcmdpbiB0aGF0IGlzIHNldCBpbiB0aGUgc3R5bGUgb2YgdGhp
cyBSZW5kZXJFbGVtZW50LgorICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBhYnNvbHV0ZUFuY2hvclJl
Y3RXaXRoU2Nyb2xsTWFyZ2luKGJvb2wqIGluc2lkZUZpeGVkID0gbnVsbHB0cikgY29uc3Q7CisK
ICAgICBib29sIGhhc0ZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIHN0eWxlKCkuaGFzRmlsdGVyKCk7
IH0KICAgICBib29sIGhhc0JhY2tkcm9wRmlsdGVyKCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKaW5kZXgg
ZjlmNDE5ZjZlOTEzNjk2MzAxMjQ0MDRhNGYzYzIyODg2NDY5NTBiNi4uZmM2ZDhmMzM4ZmNhNzM3
YjUxOWUzZWRhMmEwYjk3YTM4MmUzNmRjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcApAQCAtMTg1LDcgKzE4NSwxMiBAQCB2
b2lkIFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5j
ZSBkaWZmLCBjb25zdCBSZW5kZXJTdAogICAgICAgICAgICAgZnJhbWVWaWV3LnVwZGF0ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yU2Nyb2xsU25hcFByb3BlcnRpZXMoKTsKICAgICAgICAgfQogICAgIH0K
LSAgICBpZiAob2xkU3R5bGUgJiYgb2xkU3R5bGUtPnNjcm9sbFNuYXBBcmVhKCkgIT0gbmV3U3R5
bGUuc2Nyb2xsU25hcEFyZWEoKSkgeworCisgICAgYm9vbCBzY3JvbGxNYXJnaW5DaGFuZ2VkID0K
KyAgICAgICAgb2xkU3R5bGUgJiYgb2xkU3R5bGUtPnNjcm9sbE1hcmdpbigpICE9IG5ld1N0eWxl
LnNjcm9sbE1hcmdpbigpOworICAgIGJvb2wgc2Nyb2xsQWxpZ25DaGFuZ2VkID0KKyAgICAgICAg
b2xkU3R5bGUgJiYgb2xkU3R5bGUtPnNjcm9sbFNuYXBBbGlnbigpICE9IG5ld1N0eWxlLnNjcm9s
bFNuYXBBbGlnbigpOworICAgIGlmIChzY3JvbGxNYXJnaW5DaGFuZ2VkIHx8IHNjcm9sbEFsaWdu
Q2hhbmdlZCkgewogICAgICAgICBhdXRvKiBzY3JvbGxTbmFwQm94ID0gZW5jbG9zaW5nU2Nyb2xs
YWJsZUNvbnRhaW5lckZvclNuYXBwaW5nKCk7CiAgICAgICAgIGlmIChzY3JvbGxTbmFwQm94ICYm
IHNjcm9sbFNuYXBCb3gtPmxheWVyKCkpIHsKICAgICAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxl
JiBzdHlsZSA9IHNjcm9sbFNuYXBCb3gtPnN0eWxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCAzNjA5OTc3NmRlNTcxOTUzNGE3ZTY5
NGZjOGM0N2IwNTI0NDMzZGQzLi4zMTMwZjE4MTkzYmJkMmViZDdiMDRjYjM3NTk1YzMyYmNlNGZm
NTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5j
cHAKQEAgLTIzOTIsNiArMjM5Miw1MSBAQCB2b2lkIFJlbmRlclN0eWxlOjpzZXROb25Jbmhlcml0
ZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIFJlZgogICAgIG1f
cmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkuY3VzdG9tUHJvcGVydGllcy5hY2Nlc3MoKS5z
ZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIFdURk1vdmUodmFsdWUpKTsKIH0KIAorY29uc3Qg
TGVuZ3RoQm94JiBSZW5kZXJTdHlsZTo6c2Nyb2xsTWFyZ2luKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+c2Nyb2xsTWFyZ2luOworfQorCitjb25zdCBMZW5n
dGgmIFJlbmRlclN0eWxlOjpzY3JvbGxNYXJnaW5Ub3AoKSBjb25zdAoreworICAgIHJldHVybiBz
Y3JvbGxNYXJnaW4oKS50b3AoKTsKK30KKworY29uc3QgTGVuZ3RoJiBSZW5kZXJTdHlsZTo6c2Ny
b2xsTWFyZ2luQm90dG9tKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc2Nyb2xsTWFyZ2luKCkuYm90
dG9tKCk7Cit9CisKK2NvbnN0IExlbmd0aCYgUmVuZGVyU3R5bGU6OnNjcm9sbE1hcmdpbkxlZnQo
KSBjb25zdAoreworICAgIHJldHVybiBzY3JvbGxNYXJnaW4oKS5sZWZ0KCk7Cit9CisKK2NvbnN0
IExlbmd0aCYgUmVuZGVyU3R5bGU6OnNjcm9sbE1hcmdpblJpZ2h0KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gc2Nyb2xsTWFyZ2luKCkucmlnaHQoKTsKK30KKwordm9pZCBSZW5kZXJTdHlsZTo6c2V0
U2Nyb2xsTWFyZ2luVG9wKExlbmd0aCYmIGxlbmd0aCkKK3sKKyAgICBTRVRfVkFSKG1fcmFyZU5v
bkluaGVyaXRlZERhdGEsIHNjcm9sbE1hcmdpbi50b3AoKSwgV1RGTW92ZShsZW5ndGgpKTsKK30K
Kwordm9pZCBSZW5kZXJTdHlsZTo6c2V0U2Nyb2xsTWFyZ2luQm90dG9tKExlbmd0aCYmIGxlbmd0
aCkKK3sKKyAgICBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHNjcm9sbE1hcmdpbi5i
b3R0b20oKSwgV1RGTW92ZShsZW5ndGgpKTsKK30KKwordm9pZCBSZW5kZXJTdHlsZTo6c2V0U2Ny
b2xsTWFyZ2luTGVmdChMZW5ndGgmJiBsZW5ndGgpCit7CisgICAgU0VUX1ZBUihtX3JhcmVOb25J
bmhlcml0ZWREYXRhLCBzY3JvbGxNYXJnaW4ubGVmdCgpLCBXVEZNb3ZlKGxlbmd0aCkpOworfQor
Cit2b2lkIFJlbmRlclN0eWxlOjpzZXRTY3JvbGxNYXJnaW5SaWdodChMZW5ndGgmJiBsZW5ndGgp
Cit7CisgICAgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBzY3JvbGxNYXJnaW4ucmln
aHQoKSwgV1RGTW92ZShsZW5ndGgpKTsKK30KKwogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVAp
CiAKIFNjcm9sbFNuYXBUeXBlIFJlbmRlclN0eWxlOjppbml0aWFsU2Nyb2xsU25hcFR5cGUoKQpA
QCAtMjQwNCwxMSArMjQ0OSw2IEBAIFNjcm9sbFNuYXBBbGlnbiBSZW5kZXJTdHlsZTo6aW5pdGlh
bFNjcm9sbFNuYXBBbGlnbigpCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotY29uc3QgU3R5bGVTY3Jv
bGxTbmFwQXJlYSYgUmVuZGVyU3R5bGU6OnNjcm9sbFNuYXBBcmVhKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gKm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnNjcm9sbFNuYXBBcmVhOwotfQotCiBjb25z
dCBTdHlsZVNjcm9sbFNuYXBQb3J0JiBSZW5kZXJTdHlsZTo6c2Nyb2xsU25hcFBvcnQoKSBjb25z
dAogewogICAgIHJldHVybiAqbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+c2Nyb2xsU25hcFBvcnQ7
CkBAIC0yNDQ2LDMyICsyNDg2LDcgQEAgY29uc3QgTGVuZ3RoJiBSZW5kZXJTdHlsZTo6c2Nyb2xs
UGFkZGluZ1JpZ2h0KCkgY29uc3QKIAogY29uc3QgU2Nyb2xsU25hcEFsaWduJiBSZW5kZXJTdHls
ZTo6c2Nyb2xsU25hcEFsaWduKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+c2Nyb2xsU25hcEFyZWEtPmFsaWdubWVudDsKLX0KLQotY29uc3QgTGVuZ3RoQm94
JiBSZW5kZXJTdHlsZTo6c2Nyb2xsTWFyZ2luKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+c2Nyb2xsU25hcEFyZWEtPnNjcm9sbE1hcmdpbjsKLX0KLQotY29u
c3QgTGVuZ3RoJiBSZW5kZXJTdHlsZTo6c2Nyb2xsTWFyZ2luVG9wKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gc2Nyb2xsTWFyZ2luKCkudG9wKCk7Ci19Ci0KLWNvbnN0IExlbmd0aCYgUmVuZGVyU3R5
bGU6OnNjcm9sbE1hcmdpbkJvdHRvbSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHNjcm9sbE1hcmdp
bigpLmJvdHRvbSgpOwotfQotCi1jb25zdCBMZW5ndGgmIFJlbmRlclN0eWxlOjpzY3JvbGxNYXJn
aW5MZWZ0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gc2Nyb2xsTWFyZ2luKCkubGVmdCgpOwotfQot
Ci1jb25zdCBMZW5ndGgmIFJlbmRlclN0eWxlOjpzY3JvbGxNYXJnaW5SaWdodCgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIHNjcm9sbE1hcmdpbigpLnJpZ2h0KCk7CisgICAgcmV0dXJuIG1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPnNjcm9sbFNuYXBBbGlnbjsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6
c2V0U2Nyb2xsU25hcFR5cGUoY29uc3QgU2Nyb2xsU25hcFR5cGUmIHR5cGUpCkBAIC0yNTAxLDI5
ICsyNTE2LDE0IEBAIHZvaWQgUmVuZGVyU3R5bGU6OnNldFNjcm9sbFBhZGRpbmdSaWdodChMZW5n
dGgmJiBsZW5ndGgpCiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldFNjcm9sbFNuYXBBbGlnbihjb25z
dCBTY3JvbGxTbmFwQWxpZ24mIGFsaWdubWVudCkKIHsKLSAgICBTRVRfTkVTVEVEX1ZBUihtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLCBzY3JvbGxTbmFwQXJlYSwgYWxpZ25tZW50LCBhbGlnbm1lbnQp
OwotfQotCi12b2lkIFJlbmRlclN0eWxlOjpzZXRTY3JvbGxNYXJnaW5Ub3AoTGVuZ3RoJiYgbGVu
Z3RoKQotewotICAgIFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHNjcm9s
bFNuYXBBcmVhLCBzY3JvbGxNYXJnaW4udG9wKCksIFdURk1vdmUobGVuZ3RoKSk7CisgICAgU0VU
X1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBzY3JvbGxTbmFwQWxpZ24sIGFsaWdubWVudCk7
CiB9CiAKLXZvaWQgUmVuZGVyU3R5bGU6OnNldFNjcm9sbE1hcmdpbkJvdHRvbShMZW5ndGgmJiBs
ZW5ndGgpCi17Ci0gICAgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgc2Ny
b2xsU25hcEFyZWEsIHNjcm9sbE1hcmdpbi5ib3R0b20oKSwgV1RGTW92ZShsZW5ndGgpKTsKLX0K
LQotdm9pZCBSZW5kZXJTdHlsZTo6c2V0U2Nyb2xsTWFyZ2luTGVmdChMZW5ndGgmJiBsZW5ndGgp
Citib29sIFJlbmRlclN0eWxlOjpoYXNTbmFwUG9zaXRpb24oKSBjb25zdAogewotICAgIFNFVF9O
RVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHNjcm9sbFNuYXBBcmVhLCBzY3JvbGxN
YXJnaW4ubGVmdCgpLCBXVEZNb3ZlKGxlbmd0aCkpOworICAgIGNvbnN0IFNjcm9sbFNuYXBBbGln
biYgYWxpZ25tZW50ID0gdGhpcy0+c2Nyb2xsU25hcEFsaWduKCk7CisgICAgcmV0dXJuIGFsaWdu
bWVudC54ICE9IFNjcm9sbFNuYXBBeGlzQWxpZ25UeXBlOjpOb25lIHx8IGFsaWdubWVudC55ICE9
IFNjcm9sbFNuYXBBeGlzQWxpZ25UeXBlOjpOb25lOwogfQotCi12b2lkIFJlbmRlclN0eWxlOjpz
ZXRTY3JvbGxNYXJnaW5SaWdodChMZW5ndGgmJiBsZW5ndGgpCi17Ci0gICAgU0VUX05FU1RFRF9W
QVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgc2Nyb2xsU25hcEFyZWEsIHNjcm9sbE1hcmdpbi5y
aWdodCgpLCBXVEZNb3ZlKGxlbmd0aCkpOwotfQotCiAjZW5kaWYKIAogYm9vbCBSZW5kZXJTdHls
ZTo6aGFzUmVmZXJlbmNlRmlsdGVyT25seSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IDRhMjc1YmIxMGIzZWUyNGIwYTM2YjU5MTI1
MTVlMTFhODkwYmQ5M2EuLjhiYTc0ZjA0NDJkZTBjNDFiODgxNjJkM2M2ODBkZjljOGIzMmFlZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC03
MTksNyArNzE5LDE1IEBAIHB1YmxpYzoKICAgICBPcHRpb25TZXQ8VG91Y2hBY3Rpb24+IGVmZmVj
dGl2ZVRvdWNoQWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPmVm
ZmVjdGl2ZVRvdWNoQWN0aW9uczsgfQogICAgIE9wdGlvblNldDxFdmVudExpc3RlbmVyUmVnaW9u
VHlwZT4gZXZlbnRMaXN0ZW5lclJlZ2lvblR5cGVzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5o
ZXJpdGVkRGF0YS0+ZXZlbnRMaXN0ZW5lclJlZ2lvblR5cGVzOyB9CiAKKyAgICBjb25zdCBMZW5n
dGhCb3gmIHNjcm9sbE1hcmdpbigpIGNvbnN0OworICAgIGNvbnN0IExlbmd0aCYgc2Nyb2xsTWFy
Z2luVG9wKCkgY29uc3Q7CisgICAgY29uc3QgTGVuZ3RoJiBzY3JvbGxNYXJnaW5Cb3R0b20oKSBj
b25zdDsKKyAgICBjb25zdCBMZW5ndGgmIHNjcm9sbE1hcmdpbkxlZnQoKSBjb25zdDsKKyAgICBj
b25zdCBMZW5ndGgmIHNjcm9sbE1hcmdpblJpZ2h0KCkgY29uc3Q7CisKICNpZiBFTkFCTEUoQ1NT
X1NDUk9MTF9TTkFQKQorICAgIGJvb2wgaGFzU25hcFBvc2l0aW9uKCkgY29uc3Q7CisKICAgICAv
LyBTY3JvbGwgc25hcCBwb3J0IHN0eWxlLgogICAgIGNvbnN0IFN0eWxlU2Nyb2xsU25hcFBvcnQm
IHNjcm9sbFNuYXBQb3J0KCkgY29uc3Q7CiAgICAgY29uc3QgU2Nyb2xsU25hcFR5cGUmIHNjcm9s
bFNuYXBUeXBlKCkgY29uc3Q7CkBAIC03MjksMTQgKzczNyw3IEBAIHB1YmxpYzoKICAgICBjb25z
dCBMZW5ndGgmIHNjcm9sbFBhZGRpbmdMZWZ0KCkgY29uc3Q7CiAgICAgY29uc3QgTGVuZ3RoJiBz
Y3JvbGxQYWRkaW5nUmlnaHQoKSBjb25zdDsKIAotICAgIC8vIFNjcm9sbCBzbmFwIGFyZWEgc3R5
bGUuCi0gICAgY29uc3QgU3R5bGVTY3JvbGxTbmFwQXJlYSYgc2Nyb2xsU25hcEFyZWEoKSBjb25z
dDsKICAgICBjb25zdCBTY3JvbGxTbmFwQWxpZ24mIHNjcm9sbFNuYXBBbGlnbigpIGNvbnN0Owot
ICAgIGNvbnN0IExlbmd0aEJveCYgc2Nyb2xsTWFyZ2luKCkgY29uc3Q7Ci0gICAgY29uc3QgTGVu
Z3RoJiBzY3JvbGxNYXJnaW5Ub3AoKSBjb25zdDsKLSAgICBjb25zdCBMZW5ndGgmIHNjcm9sbE1h
cmdpbkJvdHRvbSgpIGNvbnN0OwotICAgIGNvbnN0IExlbmd0aCYgc2Nyb2xsTWFyZ2luTGVmdCgp
IGNvbnN0OwotICAgIGNvbnN0IExlbmd0aCYgc2Nyb2xsTWFyZ2luUmlnaHQoKSBjb25zdDsKICNl
bmRpZgogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKQEAgLTEyNjUsNiArMTI2NiwxMSBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRFZmZlY3RpdmVUb3VjaEFjdGlvbnMoT3B0aW9uU2V0PFRvdWNo
QWN0aW9uPiB0b3VjaEFjdGlvbnMpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBlZmZl
Y3RpdmVUb3VjaEFjdGlvbnMsIHRvdWNoQWN0aW9ucyk7IH0KICAgICB2b2lkIHNldEV2ZW50TGlz
dGVuZXJSZWdpb25UeXBlcyhPcHRpb25TZXQ8RXZlbnRMaXN0ZW5lclJlZ2lvblR5cGU+IGV2ZW50
TGlzdGVuZXJUeXBlcykgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGV2ZW50TGlzdGVu
ZXJSZWdpb25UeXBlcywgZXZlbnRMaXN0ZW5lclR5cGVzKTsgfQogCisgICAgdm9pZCBzZXRTY3Jv
bGxNYXJnaW5Ub3AoTGVuZ3RoJiYpOworICAgIHZvaWQgc2V0U2Nyb2xsTWFyZ2luQm90dG9tKExl
bmd0aCYmKTsKKyAgICB2b2lkIHNldFNjcm9sbE1hcmdpbkxlZnQoTGVuZ3RoJiYpOworICAgIHZv
aWQgc2V0U2Nyb2xsTWFyZ2luUmlnaHQoTGVuZ3RoJiYpOworCiAjaWYgRU5BQkxFKENTU19TQ1JP
TExfU05BUCkKICAgICB2b2lkIHNldFNjcm9sbFNuYXBUeXBlKGNvbnN0IFNjcm9sbFNuYXBUeXBl
Jik7CiAgICAgdm9pZCBzZXRTY3JvbGxQYWRkaW5nVG9wKExlbmd0aCYmKTsKQEAgLTEyNzMsMTAg
KzEyNzksNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTY3JvbGxQYWRkaW5nUmlnaHQoTGVuZ3Ro
JiYpOwogCiAgICAgdm9pZCBzZXRTY3JvbGxTbmFwQWxpZ24oY29uc3QgU2Nyb2xsU25hcEFsaWdu
Jik7Ci0gICAgdm9pZCBzZXRTY3JvbGxNYXJnaW5Ub3AoTGVuZ3RoJiYpOwotICAgIHZvaWQgc2V0
U2Nyb2xsTWFyZ2luQm90dG9tKExlbmd0aCYmKTsKLSAgICB2b2lkIHNldFNjcm9sbE1hcmdpbkxl
ZnQoTGVuZ3RoJiYpOwotICAgIHZvaWQgc2V0U2Nyb2xsTWFyZ2luUmlnaHQoTGVuZ3RoJiYpOwog
I2VuZGlmCiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQpAQCAtMTY3NCwxMCArMTY3NiwxMSBA
QCBwdWJsaWM6CiAKICAgICBzdGF0aWMgVG91Y2hBY3Rpb24gaW5pdGlhbFRvdWNoQWN0aW9ucygp
IHsgcmV0dXJuIFRvdWNoQWN0aW9uOjpBdXRvOyB9CiAKKyAgICBzdGF0aWMgTGVuZ3RoIGluaXRp
YWxTY3JvbGxNYXJnaW4oKSB7IHJldHVybiBMZW5ndGgoRml4ZWQpOyB9CisKICNpZiBFTkFCTEUo
Q1NTX1NDUk9MTF9TTkFQKQogICAgIHN0YXRpYyBTY3JvbGxTbmFwVHlwZSBpbml0aWFsU2Nyb2xs
U25hcFR5cGUoKTsKICAgICBzdGF0aWMgU2Nyb2xsU25hcEFsaWduIGluaXRpYWxTY3JvbGxTbmFw
QWxpZ24oKTsKLSAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxTY3JvbGxNYXJnaW4oKSB7IHJldHVy
biBMZW5ndGgoRml4ZWQpOyB9CiAgICAgc3RhdGljIExlbmd0aCBpbml0aWFsU2Nyb2xsUGFkZGlu
ZygpIHsgcmV0dXJuIExlbmd0aChGaXhlZCk7IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0
YS5jcHAKaW5kZXggNDE5NzRjZTFlMDUxNzMxNzM2YmM0Zjc4NjI0MzM0ZDY3MWY5MjQzZi4uYTNm
NDRjNDkwMWRiMGI4MjYzZjA0MTI2NGVlYTlhYzdkOGIwYTdiNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWRE
YXRhLmNwcApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIlN0eWxlVHJhbnNmb3JtRGF0YS5o
IgogI2luY2x1ZGUgIlN0eWxlSW1hZ2UuaCIKICNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCi0j
aW5jbHVkZSAiU3R5bGVTY3JvbGxTbmFwUG9pbnRzLmgiCiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJD
b21wYXJpc29uLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1RleHRTdHJlYW0uaD4KQEAgLTYyLDcgKzYxLDYgQEAgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0
YTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSgpCiAgICAgLCBncmlkSXRlbShTdHlsZUdyaWRJ
dGVtRGF0YTo6Y3JlYXRlKCkpCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICAsIHNj
cm9sbFNuYXBQb3J0KFN0eWxlU2Nyb2xsU25hcFBvcnQ6OmNyZWF0ZSgpKQotICAgICwgc2Nyb2xs
U25hcEFyZWEoU3R5bGVTY3JvbGxTbmFwQXJlYTo6Y3JlYXRlKCkpCiAjZW5kaWYKICAgICAsIHdp
bGxDaGFuZ2UoUmVuZGVyU3R5bGU6OmluaXRpYWxXaWxsQ2hhbmdlKCkpCiAgICAgLCBtYXNrKEZp
bGxMYXllcjo6Y3JlYXRlKEZpbGxMYXllclR5cGU6Ok1hc2spKQpAQCAtMTM5LDkgKzEzNywxMCBA
QCBpbmxpbmUgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVk
RGF0YShjb25zdCBTdHlsZVJhcmVOb25JbgogI2VuZGlmCiAgICAgLCBncmlkKG8uZ3JpZCkKICAg
ICAsIGdyaWRJdGVtKG8uZ3JpZEl0ZW0pCisgICAgLCBzY3JvbGxNYXJnaW4oby5zY3JvbGxNYXJn
aW4pCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICAsIHNjcm9sbFNuYXBQb3J0KG8u
c2Nyb2xsU25hcFBvcnQpCi0gICAgLCBzY3JvbGxTbmFwQXJlYShvLnNjcm9sbFNuYXBBcmVhKQor
ICAgICwgc2Nyb2xsU25hcEFsaWduKG8uc2Nyb2xsU25hcEFsaWduKQogI2VuZGlmCiAgICAgLCBj
b250ZW50KG8uY29udGVudCA/IG8uY29udGVudC0+Y2xvbmUoKSA6IG51bGxwdHIpCiAgICAgLCBj
b3VudGVyRGlyZWN0aXZlcyhvLmNvdW50ZXJEaXJlY3RpdmVzID8gbWFrZVVuaXF1ZTxDb3VudGVy
RGlyZWN0aXZlTWFwPigqby5jb3VudGVyRGlyZWN0aXZlcykgOiBudWxscHRyKQpAQCAtMjQxLDkg
KzI0MCwxMCBAQCBib29sIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6Om9wZXJhdG9yPT0oY29u
c3QgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSYgbykgYwogI2VuZGlmCiAgICAgICAgICYmIGdy
aWQgPT0gby5ncmlkCiAgICAgICAgICYmIGdyaWRJdGVtID09IG8uZ3JpZEl0ZW0KKyAgICAgICAg
JiYgc2Nyb2xsTWFyZ2luID09IG8uc2Nyb2xsTWFyZ2luCiAjaWYgRU5BQkxFKENTU19TQ1JPTExf
U05BUCkKICAgICAgICAgJiYgc2Nyb2xsU25hcFBvcnQgPT0gby5zY3JvbGxTbmFwUG9ydAotICAg
ICAgICAmJiBzY3JvbGxTbmFwQXJlYSA9PSBvLnNjcm9sbFNuYXBBcmVhCisgICAgICAgICYmIHNj
cm9sbFNuYXBBbGlnbiA9PSBvLnNjcm9sbFNuYXBBbGlnbgogI2VuZGlmCiAgICAgICAgICYmIGNv
bnRlbnREYXRhRXF1aXZhbGVudChvKQogICAgICAgICAmJiBhcmVQb2ludGluZ1RvRXF1YWxEYXRh
KGNvdW50ZXJEaXJlY3RpdmVzLCBvLmNvdW50ZXJEaXJlY3RpdmVzKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRh
LmgKaW5kZXggYTRmOGM0YjBkMmY5MGEwZGI4NmU1NDg0MzllOGI3ZWE2MWZmMmRlYi4uMzBlYjY3
NzA1N2M5ZjAxYmJiNTQxYjA5MDg3OWI4M2VhZDkwMjk5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5o
CkBAIC00NSw2ICs0NSwxMCBAQAogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAKKyNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQorI2luY2x1ZGUg
IlN0eWxlU2Nyb2xsU25hcFBvaW50cy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgQW5pbWF0aW9uTGlzdDsKQEAgLTYwLDggKzY0LDYgQEAgY2xhc3MgU3R5bGVNYXJx
dWVlRGF0YTsKIGNsYXNzIFN0eWxlTXVsdGlDb2xEYXRhOwogY2xhc3MgU3R5bGVSZWZsZWN0aW9u
OwogY2xhc3MgU3R5bGVSZXNvbHZlcjsKLWNsYXNzIFN0eWxlU2Nyb2xsU25hcEFyZWE7Ci1jbGFz
cyBTdHlsZVNjcm9sbFNuYXBQb3J0OwogY2xhc3MgU3R5bGVUcmFuc2Zvcm1EYXRhOwogCiBzdHJ1
Y3QgTGVuZ3RoU2l6ZTsKQEAgLTEyOSw5ICsxMzEsMTAgQEAgcHVibGljOgogICAgIERhdGFSZWY8
U3R5bGVHcmlkRGF0YT4gZ3JpZDsKICAgICBEYXRhUmVmPFN0eWxlR3JpZEl0ZW1EYXRhPiBncmlk
SXRlbTsKIAorICAgIExlbmd0aEJveCBzY3JvbGxNYXJnaW4geyAwLCAwLCAwLCAwIH07CiAjaWYg
RU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICBEYXRhUmVmPFN0eWxlU2Nyb2xsU25hcFBvcnQ+
IHNjcm9sbFNuYXBQb3J0OwotICAgIERhdGFSZWY8U3R5bGVTY3JvbGxTbmFwQXJlYT4gc2Nyb2xs
U25hcEFyZWE7CisgICAgU2Nyb2xsU25hcEFsaWduIHNjcm9sbFNuYXBBbGlnbjsKICNlbmRpZgog
CiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnREYXRhPiBjb250ZW50OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU2Nyb2xsU25hcFBvaW50cy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTY3JvbGxTbmFwUG9pbnRzLmNw
cAppbmRleCA5ZTZhOTFmMDA0MDg3MGE3ZmZiNzdhMzQ5NzNhZTNjMDlmNmZjY2ZhLi5iNmEyMjZi
NTE4NmZhZDlkMmUzZjdmYTk0NzY0NDkwNzk3ZmNkMmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTY3JvbGxTbmFwUG9pbnRzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTY3JvbGxTbmFwUG9pbnRzLmNwcApAQCAt
NDYsMjMgKzQ2LDYgQEAgaW5saW5lIFN0eWxlU2Nyb2xsU25hcFBvcnQ6OlN0eWxlU2Nyb2xsU25h
cFBvcnQoY29uc3QgU3R5bGVTY3JvbGxTbmFwUG9ydCYgb3RoZXIKIHsKIH0KIAotUmVmPFN0eWxl
U2Nyb2xsU25hcEFyZWE+IFN0eWxlU2Nyb2xsU25hcEFyZWE6OmNvcHkoKSBjb25zdAotewotICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlU2Nyb2xsU25hcEFyZWEoKnRoaXMpKTsKLX0KLQot
U3R5bGVTY3JvbGxTbmFwQXJlYTo6U3R5bGVTY3JvbGxTbmFwQXJlYSgpCi0gICAgOiBzY3JvbGxN
YXJnaW4oMCwgMCwgMCwgMCkKLXsKLX0KLQotaW5saW5lIFN0eWxlU2Nyb2xsU25hcEFyZWE6OlN0
eWxlU2Nyb2xsU25hcEFyZWEoY29uc3QgU3R5bGVTY3JvbGxTbmFwQXJlYSYgb3RoZXIpCi0gICAg
OiBSZWZDb3VudGVkKCkKLSAgICAsIGFsaWdubWVudChvdGhlci5hbGlnbm1lbnQpCi0gICAgLCBz
Y3JvbGxNYXJnaW4ob3RoZXIuc2Nyb2xsTWFyZ2luKQotewotfQotCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvKiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKSAqLwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU2Nyb2xsU25hcFBvaW50cy5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU2Nyb2xsU25hcFBvaW50cy5o
CmluZGV4IDBiYzljYmMwYmY2NWE3NDYzZGQ1YzAwMTdiZDk5NDU3Nzc1MWJkYjQuLmYxOTQ0ZTAz
NWEyOTVmNTAyZTBhYjdjYWMyMjE1Njc5ZDQ2NGJjMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVNjcm9sbFNuYXBQb2ludHMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTY3JvbGxTbmFwUG9pbnRzLmgKQEAgLTc5LDI3
ICs3OSw2IEBAIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU2Nyb2xsU25hcEFsaWduJiBh
LCBjb25zdCBTY3JvbGxTbmFwQWxpZ24mIGIpCiAKIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29u
c3QgU2Nyb2xsU25hcEFsaWduJiBhLCBjb25zdCBTY3JvbGxTbmFwQWxpZ24mIGIpIHsgcmV0dXJu
ICEoYSA9PSBiKTsgfQogCi1jbGFzcyBTdHlsZVNjcm9sbFNuYXBBcmVhIDogcHVibGljIFJlZkNv
dW50ZWQ8U3R5bGVTY3JvbGxTbmFwQXJlYT4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8U3R5
bGVTY3JvbGxTbmFwQXJlYT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVNj
cm9sbFNuYXBBcmVhKTsgfQotICAgIFJlZjxTdHlsZVNjcm9sbFNuYXBBcmVhPiBjb3B5KCkgY29u
c3Q7Ci0gICAgYm9vbCBoYXNTbmFwUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBhbGlnbm1lbnQu
eCAhPSBTY3JvbGxTbmFwQXhpc0FsaWduVHlwZTo6Tm9uZSB8fCBhbGlnbm1lbnQueSAhPSBTY3Jv
bGxTbmFwQXhpc0FsaWduVHlwZTo6Tm9uZTsgfQotCi0gICAgU2Nyb2xsU25hcEFsaWduIGFsaWdu
bWVudDsKLSAgICBMZW5ndGhCb3ggc2Nyb2xsTWFyZ2luIHsgMCwgMCwgMCwgMCB9OwotCi1wcml2
YXRlOgotICAgIFN0eWxlU2Nyb2xsU25hcEFyZWEoKTsKLSAgICBTdHlsZVNjcm9sbFNuYXBBcmVh
KGNvbnN0IFN0eWxlU2Nyb2xsU25hcEFyZWEmKTsKLX07Ci0KLWlubGluZSBib29sIG9wZXJhdG9y
PT0oY29uc3QgU3R5bGVTY3JvbGxTbmFwQXJlYSYgYSwgY29uc3QgU3R5bGVTY3JvbGxTbmFwQXJl
YSYgYikKLXsKLSAgICByZXR1cm4gYS5hbGlnbm1lbnQgPT0gYi5hbGlnbm1lbnQgJiYgYS5zY3Jv
bGxNYXJnaW4gPT0gYi5zY3JvbGxNYXJnaW47Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0o
Y29uc3QgU3R5bGVTY3JvbGxTbmFwQXJlYSYgYSwgY29uc3QgU3R5bGVTY3JvbGxTbmFwQXJlYSYg
YikgeyByZXR1cm4gIShhID09IGIpOyB9Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTAxNDg2ZjlmNmRiZDBkYjUw
MDA5YWZiOTY0MTRjNDhkMGQ1ZjYyYi4uM2Y3MDFiNzQ1MDE5ZDE4ZTc1MjgzZDg3ZTNlMGQxMWY5
OGJhMmVkMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIwLTEwLTI4ICBNYXJ0aW4gUm9iaW5z
b24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBNYWtlIHNjcm9sbC1tYXJnaW4g
aW5kZXBlbmRlbnQgb2Ygc2Nyb2xsIHNuYXBwaW5nIGFuZCBoYXZlIGl0IGFwcGx5IHdoZW4gc2Ny
b2xsaW5nIHRvIGFuY2hvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxODA3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczogVXBkYXRlZCBleHBlY3RhdGlvbnMgZm9yIG5l
d2x5IHBhc3NpbmcgdGVzdHMuCisKIDIwMjAtMTAtMjcgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdW5uZWVkZWQgd2hpdGVzcGFjZSBiZXR3ZWVuIGNv
bnRlbnQgYW5kIDxicj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMg
Yi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGNhZGJkOGFkNWMyMTczNzhjMDRk
NWJhNzczM2Y3MDAxOGI0YTM3NDIuLjk3M2I5YmVhMmU0NzZiODg0NDNjNjRlYjVjNzJmYmQ5Mzll
YjQwZGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5
b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNDUwMywxMCArNDUwMyw2IEBAIHdlYmtpdC5v
cmcvYi8yMTU1MzEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWJhY2tn
cm91bmRzL2JhY2tncm91CiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
c2Nyb2xsLXNuYXAvc2Nyb2xsLXRhcmdldC1hbGlnbi0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXNjcm9sbC1zbmFw
L3Njcm9sbC10YXJnZXQtYWxpZ24tMDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9zY3JvbGwtdGFy
Z2V0LWFsaWduLTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mtc2Nyb2xsLXNuYXAvc2Nyb2xsLXRhcmdldC1tYXJnaW4t
MDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9zY3JvbGwtdGFyZ2V0LW1hcmdpbi0wMDIuaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLXNjcm9sbC1zbmFwL3Njcm9sbC10YXJnZXQtbWFyZ2luLTAwMy5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mtc2Nyb2xs
LXNuYXAvc2Nyb2xsLXRhcmdldC1tYXJnaW4tMDA0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9zY3Jv
bGwtdGFyZ2V0LXBhZGRpbmctMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9zY3JvbGwtdGFyZ2V0
LXBhZGRpbmctMDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9zY3JvbGwtdGFyZ2V0LXBhZGRpbmct
MDAzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412625</attachid>
            <date>2020-10-29 01:40:57 -0700</date>
            <delta_ts>2020-10-29 03:51:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218076-20201029094055.patch</filename>
            <type>text/plain</type>
            <size>29558</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzQ1MWEyOGI0NWEwYmRj
MmQzZjAwMDEzMTY2ZTBmZmM3YTQ4OTRlMy4uMzY0ZThlYzIzNDRkNDc4YjMyOThiZTU1MzU0YTk4
NWM3YmFhZGFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDIwLTEwLTI4ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBNYWtlIHNjcm9s
bC1tYXJnaW4gaW5kZXBlbmRlbnQgb2Ygc2Nyb2xsIHNuYXBwaW5nIGFuZCBoYXZlIGl0IGFwcGx5
IHdoZW4gc2Nyb2xsaW5nIHRvIGFuY2hvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxODA3NgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZy
YXNlci4KKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OnNjcm9sbEludG9WaWV3KTogVXNlIGFic29sdXRlQW5jaG9yUmVjdFdpdGhTY3JvbGxN
YXJnaW4sIHRha2luZyBpbnRvCisgICAgICAgIGFjY291bnQgc2Nyb2xsLW1hcmdpbi4KKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNjcm9sbEludG9WaWV3SWZOZWVkZWQpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNjcm9sbEludG9WaWV3SWZOb3RWaXNpYmxlKTogRGl0
dG8uCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVWaWV3OjpzY3JvbGxUb0FuY2hvcik6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjphYnNvbHV0ZUFuY2hvclJl
Y3RXaXRoU2Nyb2xsTWFyZ2luIGNvbnN0KTogQWRkZWQgdGhpcyBvdmVycmlkZQorICAgICAgICB3
aGljaCBwcm9wZXJseSBjb252ZXJ0cyB0aGUgc2Nyb2xsLW1hcmdpbiB0byBMYXlvdXRVbml0cyBh
bmQgYXBwbGllcyBpdCB0byBhYnNvbHV0ZUFuY2hvclJlY3QuCisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckJveC5oOiBBZGRlZCBtZXRob2QgZGVjbGFyYXRpb24uCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6
YWJzb2x1dGVBbmNob3JSZWN0V2l0aFNjcm9sbE1hcmdpbiBjb25zdCk6IEFkZGVkIGltcGxlbWVu
dGF0aW9uCisgICAgICAgIHRoYXQgc2ltcGx5IGNhbGxzIGFic29sdXRlQW5jaG9yUmVjdC4KKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oOiBBZGRlZCBkZWNsYXJhdGlvbiBvZiBu
ZXcgdmlydHVhbAorICAgICAgICBhYnNvbHV0ZUFuY2hvclJlY3RXaXRoU2Nyb2xsTWFyZ2luLgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyTW9kZWxPYmplY3Q6OnN0eWxlRGlkQ2hhbmdlKTogR2V0IHRo
ZSBzY3JvbGwtbWFyZ2luIGRpcmVjdGx5IGZyb20gdGhlCisgICAgICAgIHN0eWxlIGluc3RlYWQg
b2YgdGhlIG5vdy1yZW1vdmVkIFNjcm9sbFNuYXBBcmVhLgorICAgICAgICAqIHJlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2Ny
b2xsTWFyZ2luIGNvbnN0KTogTW92ZSBzY3JvbGwtbWFyZ2luIGFuZCBzY3JvbGwtc25hcC1hbGln
biB0bworICAgICAgICBtX3JhcmVOb25Jbmhlcml0ZWREYXRhIGFuZCBnZXQgcmlkIG9mIGludGVy
bWVkaWF0ZSBTY3JvbGxTbmFwQXJlYS4gVGhlc2UgdHdvIHByb3BlcnRpZXMKKyAgICAgICAgYXJl
IG5vIGluZGVwZW5kZW50LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNjcm9sbE1h
cmdpblRvcCBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNj
cm9sbE1hcmdpbkJvdHRvbSBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U3R5bGU6OnNjcm9sbE1hcmdpbkxlZnQgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclN0eWxlOjpzY3JvbGxNYXJnaW5SaWdodCBjb25zdCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFNjcm9sbE1hcmdpblRvcCk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFNjcm9sbE1hcmdpbkJvdHRvbSk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFNjcm9sbE1hcmdpbkxlZnQpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRTY3JvbGxNYXJnaW5SaWdodCk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNjcm9sbFNuYXBBbGlnbiBj
b25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFNjcm9sbFNu
YXBBbGlnbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Omhhc1NuYXBQ
b3NpdGlvbiBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNj
cm9sbFNuYXBBcmVhIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuaDogQWRkIGFjY2Vzc29ycyBmb3Igc2Nyb2xsLW1hcmdpbiBhbmQgbW92ZWQg
aGFzU25hcFBvc2l0aW9uCisgICAgICAgIGZyb20gU2Nyb2xsU25hcEFyZWEuCisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwOiBSZW1vdmVkIGlu
dGVybWVkaWF0ZSBTY3JvbGxTbmFwQXJlYSBkYXRhCisgICAgICAgIHN0cnVjdHVyZSBhbmQgbW92
ZWQgbWVtYmVycyBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVk
RGF0YTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9PSBjb25zdCk6IERpdHRvLgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmg6IERp
dHRvLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVNjcm9sbFNuYXBQb2ludHMuY3Bw
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2Nyb2xsU25hcEFyZWE6OmNvcHkgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTY3JvbGxTbmFwQXJlYTo6U3R5
bGVTY3JvbGxTbmFwQXJlYSk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0
eWxlU2Nyb2xsU25hcFBvaW50cy5oOiBSZW1vdmVkIFNjcm9sbFNuYXBBcmVhLgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVTY3JvbGxTbmFwQXJlYTo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlU2Nyb2xsU25hcEFyZWE6Omhhc1NuYXBQb3NpdGlvbiBjb25zdCk6IERl
bGV0ZWQuCisKIDIwMjAtMTAtMjcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CiAKICAgICAgICAgW0NvbmN1cnJlbnQgZGlzcGxheSBsaXN0c10gQWRkIGFsdGVybmF0ZSB2
ZXJzaW9ucyBvZiBleGlzdGluZyBkaXNwbGF5IGxpc3QgaXRlbXMgdGhhdCBvbmx5IGNvbnRhaW4g
aW5saW5lIGRhdGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBkODhiMGI5ZDU0NmY2ZDU4MWVl
YzVhZjA0NDJjNGRjNzhhNGZhOGNhLi41ZWYzZmU5Nzg4ZmRkYWVmN2ZhOWNlZjU2YmVlYzg2NWMz
YjljNTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC04NjEsNyArODYxLDcgQEAgdm9pZCBF
bGVtZW50OjpzY3JvbGxJbnRvVmlldyhPcHRpb25hbDxWYXJpYW50PGJvb2wsIFNjcm9sbEludG9W
aWV3T3B0aW9ucz4+JiYgYXIKICAgICAgICAgcmV0dXJuOwogCiAgICAgYm9vbCBpbnNpZGVGaXhl
ZDsKLSAgICBMYXlvdXRSZWN0IGFic29sdXRlQm91bmRzID0gcmVuZGVyZXIoKS0+YWJzb2x1dGVB
bmNob3JSZWN0KCZpbnNpZGVGaXhlZCk7CisgICAgTGF5b3V0UmVjdCBhYnNvbHV0ZUJvdW5kcyA9
IHJlbmRlcmVyKCktPmFic29sdXRlQW5jaG9yUmVjdFdpdGhTY3JvbGxNYXJnaW4oJmluc2lkZUZp
eGVkKTsKIAogICAgIFNjcm9sbEludG9WaWV3T3B0aW9ucyBvcHRpb25zOwogICAgIGlmIChhcmcp
IHsKQEAgLTg5NSw3ICs4OTUsNyBAQCB2b2lkIEVsZW1lbnQ6OnNjcm9sbEludG9WaWV3KGJvb2wg
YWxpZ25Ub1RvcCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYm9vbCBpbnNpZGVGaXhlZDsKLSAg
ICBMYXlvdXRSZWN0IGFic29sdXRlQm91bmRzID0gcmVuZGVyZXIoKS0+YWJzb2x1dGVBbmNob3JS
ZWN0KCZpbnNpZGVGaXhlZCk7CisgICAgTGF5b3V0UmVjdCBhYnNvbHV0ZUJvdW5kcyA9IHJlbmRl
cmVyKCktPmFic29sdXRlQW5jaG9yUmVjdFdpdGhTY3JvbGxNYXJnaW4oJmluc2lkZUZpeGVkKTsK
ICAgICAvLyBBbGlnbiB0byB0aGUgdG9wIC8gYm90dG9tIGFuZCB0byB0aGUgY2xvc2VzdCBlZGdl
LgogICAgIGlmIChhbGlnblRvVG9wKQogICAgICAgICByZW5kZXJlcigpLT5zY3JvbGxSZWN0VG9W
aXNpYmxlKGFic29sdXRlQm91bmRzLCBpbnNpZGVGaXhlZCwgeyBTZWxlY3Rpb25SZXZlYWxNb2Rl
OjpSZXZlYWwsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgU2Nyb2xsQWxp
Z25tZW50OjphbGlnblRvcEFsd2F5cywgU2hvdWxkQWxsb3dDcm9zc09yaWdpblNjcm9sbGluZzo6
Tm8gfSk7CkBAIC05MTEsNyArOTExLDcgQEAgdm9pZCBFbGVtZW50OjpzY3JvbGxJbnRvVmlld0lm
TmVlZGVkKGJvb2wgY2VudGVySWZOZWVkZWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGJvb2wg
aW5zaWRlRml4ZWQ7Ci0gICAgTGF5b3V0UmVjdCBhYnNvbHV0ZUJvdW5kcyA9IHJlbmRlcmVyKCkt
PmFic29sdXRlQW5jaG9yUmVjdCgmaW5zaWRlRml4ZWQpOworICAgIExheW91dFJlY3QgYWJzb2x1
dGVCb3VuZHMgPSByZW5kZXJlcigpLT5hYnNvbHV0ZUFuY2hvclJlY3RXaXRoU2Nyb2xsTWFyZ2lu
KCZpbnNpZGVGaXhlZCk7CiAgICAgaWYgKGNlbnRlcklmTmVlZGVkKQogICAgICAgICByZW5kZXJl
cigpLT5zY3JvbGxSZWN0VG9WaXNpYmxlKGFic29sdXRlQm91bmRzLCBpbnNpZGVGaXhlZCwgeyBT
ZWxlY3Rpb25SZXZlYWxNb2RlOjpSZXZlYWwsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25DZW50ZXJJ
Zk5lZWRlZCwgU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNlbnRlcklmTmVlZGVkLCBTaG91bGRBbGxv
d0Nyb3NzT3JpZ2luU2Nyb2xsaW5nOjpObyB9KTsKICAgICBlbHNlCkBAIC05MjYsNyArOTI2LDcg
QEAgdm9pZCBFbGVtZW50OjpzY3JvbGxJbnRvVmlld0lmTm90VmlzaWJsZShib29sIGNlbnRlcklm
Tm90VmlzaWJsZSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGJvb2wgaW5zaWRlRml4ZWQ7
Ci0gICAgTGF5b3V0UmVjdCBhYnNvbHV0ZUJvdW5kcyA9IHJlbmRlcmVyKCktPmFic29sdXRlQW5j
aG9yUmVjdCgmaW5zaWRlRml4ZWQpOworICAgIExheW91dFJlY3QgYWJzb2x1dGVCb3VuZHMgPSBy
ZW5kZXJlcigpLT5hYnNvbHV0ZUFuY2hvclJlY3RXaXRoU2Nyb2xsTWFyZ2luKCZpbnNpZGVGaXhl
ZCk7CiAgICAgaWYgKGNlbnRlcklmTm90VmlzaWJsZSkKICAgICAgICAgcmVuZGVyZXIoKS0+c2Ny
b2xsUmVjdFRvVmlzaWJsZShhYnNvbHV0ZUJvdW5kcywgaW5zaWRlRml4ZWQsIHsgU2VsZWN0aW9u
UmV2ZWFsTW9kZTo6UmV2ZWFsLCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduQ2VudGVySWZOb3RWaXNp
YmxlLCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduQ2VudGVySWZOb3RWaXNpYmxlLCBTaG91bGRBbGxv
d0Nyb3NzT3JpZ2luU2Nyb2xsaW5nOjpObyB9KTsKICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5jcHAKaW5kZXggMmM0ODI2Mzg1OWJhZTU5NjdkY2YzMWJiYjAwOGIzMDc5YjEzMmFhZi4u
MGY0YzhiMDNhYTk5NTA2ODM4OGYwMjljN2JjNDYxNTExZTYwNTVlOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcApAQCAtMzE3Niw3ICszMTc2LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnNjcm9s
bFRvQW5jaG9yKCkKICAgICBMYXlvdXRSZWN0IHJlY3Q7CiAgICAgYm9vbCBpbnNpZGVGaXhlZCA9
IGZhbHNlOwogICAgIGlmIChhbmNob3JOb2RlICE9IGZyYW1lKCkuZG9jdW1lbnQoKSAmJiBhbmNo
b3JOb2RlLT5yZW5kZXJlcigpKQotICAgICAgICByZWN0ID0gYW5jaG9yTm9kZS0+cmVuZGVyZXIo
KS0+YWJzb2x1dGVBbmNob3JSZWN0KCZpbnNpZGVGaXhlZCk7CisgICAgICAgIHJlY3QgPSBhbmNo
b3JOb2RlLT5yZW5kZXJlcigpLT5hYnNvbHV0ZUFuY2hvclJlY3RXaXRoU2Nyb2xsTWFyZ2luKCZp
bnNpZGVGaXhlZCk7CiAKICAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsaW5nLCBzdHJlYW0gPDwg
IiBhbmNob3Igbm9kZSByZWN0ICIgPDwgcmVjdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5jcHAKaW5kZXggZjJmYzk2YTMwYTNiMzQyM2I4NWI2YmFkZDMzMGJjMjlhZmEzMWI3
MS4uNGJmNDBmNDBiMDUzNDNkNjk4MWM3ZmE2ZTYwNjAzYjRjOTFmMWQ4YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTE2MSw3ICsxNjEsNyBAQCB2b2lkIFJlbmRl
ckJveDo6d2lsbEJlRGVzdHJveWVkKCkKICAgICByZW1vdmVDb250cm9sU3RhdGVzRm9yUmVuZGVy
ZXIoKnRoaXMpOwogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAgICBpZiAoaGFzSW5p
dGlhbGl6ZWRTdHlsZSgpICYmIHN0eWxlKCkuc2Nyb2xsU25hcEFyZWEoKS5oYXNTbmFwUG9zaXRp
b24oKSkKKyAgICBpZiAoaGFzSW5pdGlhbGl6ZWRTdHlsZSgpICYmIHN0eWxlKCkuaGFzU25hcFBv
c2l0aW9uKCkpCiAgICAgICAgIHZpZXcoKS51bnJlZ2lzdGVyQm94V2l0aFNjcm9sbFNuYXBQb3Np
dGlvbnMoKnRoaXMpOwogI2VuZGlmCiAKQEAgLTI3Nyw4ICsyNzcsOCBAQCB2b2lkIFJlbmRlckJv
eDo6c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHls
ZSYgbmV3U3R5bAogICAgICAgICB2aWV3KCkucmVwYWludFJvb3RDb250ZW50cygpOwogCiAjaWYg
RU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAgICBib29sIGJveENvbnRyaWJ1dGVzU25hcFBvc2l0
aW9ucyA9IG5ld1N0eWxlLnNjcm9sbFNuYXBBcmVhKCkuaGFzU25hcFBvc2l0aW9uKCk7Ci0gICAg
aWYgKGJveENvbnRyaWJ1dGVzU25hcFBvc2l0aW9ucyB8fCAob2xkU3R5bGUgJiYgb2xkU3R5bGUt
PnNjcm9sbFNuYXBBcmVhKCkuaGFzU25hcFBvc2l0aW9uKCkpKSB7CisgICAgYm9vbCBib3hDb250
cmlidXRlc1NuYXBQb3NpdGlvbnMgPSBuZXdTdHlsZS5oYXNTbmFwUG9zaXRpb24oKTsKKyAgICBp
ZiAoYm94Q29udHJpYnV0ZXNTbmFwUG9zaXRpb25zIHx8IChvbGRTdHlsZSAmJiBvbGRTdHlsZS0+
aGFzU25hcFBvc2l0aW9uKCkpKSB7CiAgICAgICAgIGlmIChib3hDb250cmlidXRlc1NuYXBQb3Np
dGlvbnMpCiAgICAgICAgICAgICB2aWV3KCkucmVnaXN0ZXJCb3hXaXRoU2Nyb2xsU25hcFBvc2l0
aW9ucygqdGhpcyk7CiAgICAgICAgIGVsc2UKQEAgLTUwNTQsNCArNTA1NCwyMiBAQCBjb25zdCBS
ZW5kZXJCb3gqIFJlbmRlckJveDo6ZmluZEVuY2xvc2luZ1Njcm9sbGFibGVDb250YWluZXIoKSBj
b25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCitMYXlvdXRSZWN0IFJlbmRlckJveDo6YWJz
b2x1dGVBbmNob3JSZWN0V2l0aFNjcm9sbE1hcmdpbihib29sKiBpbnNpZGVGaXhlZCkgY29uc3QK
K3sKKyAgICBMYXlvdXRSZWN0IGFuY2hvclJlY3QgPSBhYnNvbHV0ZUFuY2hvclJlY3QoaW5zaWRl
Rml4ZWQpOworICAgIGNvbnN0IExlbmd0aEJveCYgc2Nyb2xsTWFyZ2luID0gc3R5bGUoKS5zY3Jv
bGxNYXJnaW4oKTsKKyAgICBpZiAoc2Nyb2xsTWFyZ2luLmlzWmVybygpKQorICAgICAgICByZXR1
cm4gYW5jaG9yUmVjdDsKKworICAgIGNvbnN0IExheW91dFNpemUgYm94U2l6ZSA9IHNpemUoKTsK
KyAgICBjb25zdCBMYXlvdXRCb3hFeHRlbnQgbWFyZ2luKAorICAgICAgICB2YWx1ZUZvckxlbmd0
aChzY3JvbGxNYXJnaW4udG9wKCksIGJveFNpemUuaGVpZ2h0KCkpLAorICAgICAgICB2YWx1ZUZv
ckxlbmd0aChzY3JvbGxNYXJnaW4ucmlnaHQoKSwgYm94U2l6ZS53aWR0aCgpKSwKKyAgICAgICAg
dmFsdWVGb3JMZW5ndGgoc2Nyb2xsTWFyZ2luLmJvdHRvbSgpLCBib3hTaXplLmhlaWdodCgpKSwK
KyAgICAgICAgdmFsdWVGb3JMZW5ndGgoc2Nyb2xsTWFyZ2luLmxlZnQoKSwgYm94U2l6ZS53aWR0
aCgpKSk7CisgICAgYW5jaG9yUmVjdC5leHBhbmQobWFyZ2luKTsKKworICAgIHJldHVybiBhbmNo
b3JSZWN0OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmgKaW5kZXggZjg5YTY0YjUxMGNlMzM4YmMwNTg3YjIyODgzNDY2MzQyMGNjNmUx
Ny4uZTA4MTQ1ZDhlMGU5ZjYyNjEzMDM5YjE2ZTRhMTYwYWMxNzljYWVjMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guaApAQCAtNjQ0LDYgKzY0NCw4IEBAIG92ZXJyaWRlOwogCiAg
ICAgdmlydHVhbCB2b2lkIGFkanVzdEJvcmRlckJveFJlY3RGb3JQYWludGluZyhMYXlvdXRSZWN0
JikgeyB9OwogCisgICAgTGF5b3V0UmVjdCBhYnNvbHV0ZUFuY2hvclJlY3RXaXRoU2Nyb2xsTWFy
Z2luKGJvb2wqIGluc2lkZUZpeGVkID0gbnVsbHB0cikgY29uc3Qgb3ZlcnJpZGU7CisKIHByb3Rl
Y3RlZDoKICAgICBSZW5kZXJCb3goRWxlbWVudCYsIFJlbmRlclN0eWxlJiYsIEJhc2VUeXBlRmxh
Z3MpOwogICAgIFJlbmRlckJveChEb2N1bWVudCYsIFJlbmRlclN0eWxlJiYsIEJhc2VUeXBlRmxh
Z3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCmluZGV4IGJk
YzAxNWZmNmJlMGUyOGFiNWU5YmFjMGEyN2MzYzk5MGVhMjFkYzYuLmY4NGI3ZDU5MmNmZGNjZDg4
YzBhMGM5NjZmNWRlNmY3NGUzODFkNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRWxlbWVudC5jcHAKQEAgLTE2NTcsNiArMTY1NywxMSBAQCBMYXlvdXRSZWN0IFJlbmRlckVs
ZW1lbnQ6OmFic29sdXRlQW5jaG9yUmVjdChib29sKiBpbnNpZGVGaXhlZCkgY29uc3QKICAgICBy
ZXR1cm4gZW5jbG9zaW5nTGF5b3V0UmVjdChGbG9hdFJlY3QodXBwZXJMZWZ0LCBsb3dlclJpZ2h0
LmV4cGFuZGVkVG8odXBwZXJMZWZ0KSAtIHVwcGVyTGVmdCkpOwogfQogCitMYXlvdXRSZWN0IFJl
bmRlckVsZW1lbnQ6OmFic29sdXRlQW5jaG9yUmVjdFdpdGhTY3JvbGxNYXJnaW4oYm9vbCogaW5z
aWRlRml4ZWQpIGNvbnN0Cit7CisgICAgcmV0dXJuIGFic29sdXRlQW5jaG9yUmVjdChpbnNpZGVG
aXhlZCk7Cit9CisKIGNvbnN0IFJlbmRlckVsZW1lbnQqIFJlbmRlckVsZW1lbnQ6OmVuY2xvc2lu
Z1JlbmRlcmVyV2l0aFRleHREZWNvcmF0aW9uKE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj4gdGV4
dERlY29yYXRpb24sIGJvb2wgZmlyc3RMaW5lKSBjb25zdAogewogICAgIGNvbnN0IFJlbmRlckVs
ZW1lbnQqIGN1cnJlbnQgPSB0aGlzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVt
ZW50LmgKaW5kZXggYjgwZDI4YmJjNTNhZTAxOThiMDkxODFmMWM3MjRjYjhmZWY4NDU0NC4uNzYz
YzYxN2YxYTYzNWRmMTlkZTAwNTAzNGNjODllNDQzM2Q0NjkxZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCkBAIC0xNTUsMTEgKzE1NSwxNSBAQCBwdWJsaWM6CiAK
ICAgICBib29sIGNoZWNrRm9yUmVwYWludER1cmluZ0xheW91dCgpIGNvbnN0OwogCi0gICAgLy8g
YW5jaG9yUmVjdCgpIGlzIGNvbmNlcHR1YWxseSBzaW1pbGFyIHRvIGFic29sdXRlQm91bmRpbmdC
b3hSZWN0KCksIGJ1dCBpcyBpbnRlbmRlZCBmb3Igc2Nyb2xsaW5nIHRvIGFuIGFuY2hvci4KLSAg
ICAvLyBGb3IgaW5saW5lIHJlbmRlcmVycywgdGhpcyBnZXRzIHRoZSBsb2dpY2FsIHRvcCBsZWZ0
IG9mIHRoZSBmaXJzdCBsZWFmIGNoaWxkIGFuZCB0aGUgbG9naWNhbCBib3R0b20gcmlnaHQgb2Yg
dGhlCi0gICAgLy8gbGFzdCBsZWFmIGNoaWxkLCBjb252ZXJ0cyB0aGVtIHRvIGFic29sdXRlIGNv
b3JkaW5hdGVzLCBhbmQgbWFrZXMgYSBib3ggb3V0IG9mIHRoZW0uCisgICAgLy8gYWJzb2x1dGVB
bmNob3JSZWN0KCkgaXMgY29uY2VwdHVhbGx5IHNpbWlsYXIgdG8gYWJzb2x1dGVCb3VuZGluZ0Jv
eFJlY3QoKSwgYnV0IGlzIGludGVuZGVkIGZvciBzY3JvbGxpbmcgdG8gYW4KKyAgICAvLyBhbmNo
b3IuIEZvciBpbmxpbmUgcmVuZGVyZXJzLCB0aGlzIGdldHMgdGhlIGxvZ2ljYWwgdG9wIGxlZnQg
b2YgdGhlIGZpcnN0IGxlYWYgY2hpbGQgYW5kIHRoZSBsb2dpY2FsIGJvdHRvbQorICAgIC8vIHJp
Z2h0IG9mIHRoZSBsYXN0IGxlYWYgY2hpbGQsIGNvbnZlcnRzIHRoZW0gdG8gYWJzb2x1dGUgY29v
cmRpbmF0ZXMsIGFuZCBtYWtlcyBhIGJveCBvdXQgb2YgdGhlbS4KICAgICBMYXlvdXRSZWN0IGFi
c29sdXRlQW5jaG9yUmVjdChib29sKiBpbnNpZGVGaXhlZCA9IG51bGxwdHIpIGNvbnN0OwogCisg
ICAgLy8gYWJzb2x1dGVBbmNob3JSZWN0V2l0aFNjcm9sbE1hcmdpbigpIGlzIHNpbWlsYXIgdG8g
YWJzb2x1dGVBbmNob3JSZWN0LCBidXQgaXQgYWxzbyB0YWtlcyBpbnRvIGFjY291bnQgYW55Cisg
ICAgLy8gQ1NTIHNjcm9sbC1tYXJnaW4gdGhhdCBpcyBzZXQgaW4gdGhlIHN0eWxlIG9mIHRoaXMg
UmVuZGVyRWxlbWVudC4KKyAgICB2aXJ0dWFsIExheW91dFJlY3QgYWJzb2x1dGVBbmNob3JSZWN0
V2l0aFNjcm9sbE1hcmdpbihib29sKiBpbnNpZGVGaXhlZCA9IG51bGxwdHIpIGNvbnN0OworCiAg
ICAgYm9vbCBoYXNGaWx0ZXIoKSBjb25zdCB7IHJldHVybiBzdHlsZSgpLmhhc0ZpbHRlcigpOyB9
CiAgICAgYm9vbCBoYXNCYWNrZHJvcEZpbHRlcigpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCmluZGV4IGY5
ZjQxOWY2ZTkxMzY5NjMwMTI0NDA0YTRmM2MyMjg4NjQ2OTUwYjYuLmZjNmQ4ZjMzOGZjYTczN2I1
MTllM2VkYTJhMGI5N2EzODJlMzZkYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKQEAgLTE4NSw3ICsxODUsMTIgQEAgdm9p
ZCBSZW5kZXJMYXllck1vZGVsT2JqZWN0OjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2Ug
ZGlmZiwgY29uc3QgUmVuZGVyU3QKICAgICAgICAgICAgIGZyYW1lVmlldy51cGRhdGVTY3JvbGxp
bmdDb29yZGluYXRvclNjcm9sbFNuYXBQcm9wZXJ0aWVzKCk7CiAgICAgICAgIH0KICAgICB9Ci0g
ICAgaWYgKG9sZFN0eWxlICYmIG9sZFN0eWxlLT5zY3JvbGxTbmFwQXJlYSgpICE9IG5ld1N0eWxl
LnNjcm9sbFNuYXBBcmVhKCkpIHsKKworICAgIGJvb2wgc2Nyb2xsTWFyZ2luQ2hhbmdlZCA9Cisg
ICAgICAgIG9sZFN0eWxlICYmIG9sZFN0eWxlLT5zY3JvbGxNYXJnaW4oKSAhPSBuZXdTdHlsZS5z
Y3JvbGxNYXJnaW4oKTsKKyAgICBib29sIHNjcm9sbEFsaWduQ2hhbmdlZCA9CisgICAgICAgIG9s
ZFN0eWxlICYmIG9sZFN0eWxlLT5zY3JvbGxTbmFwQWxpZ24oKSAhPSBuZXdTdHlsZS5zY3JvbGxT
bmFwQWxpZ24oKTsKKyAgICBpZiAoc2Nyb2xsTWFyZ2luQ2hhbmdlZCB8fCBzY3JvbGxBbGlnbkNo
YW5nZWQpIHsKICAgICAgICAgYXV0byogc2Nyb2xsU25hcEJveCA9IGVuY2xvc2luZ1Njcm9sbGFi
bGVDb250YWluZXJGb3JTbmFwcGluZygpOwogICAgICAgICBpZiAoc2Nyb2xsU25hcEJveCAmJiBz
Y3JvbGxTbmFwQm94LT5sYXllcigpKSB7CiAgICAgICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYg
c3R5bGUgPSBzY3JvbGxTbmFwQm94LT5zdHlsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKaW5kZXggMzYwOTk3NzZkZTU3MTk1MzRhN2U2OTRm
YzhjNDdiMDUyNDQzM2RkMy4uMzEzMGYxODE5M2JiZDJlYmQ3YjA0Y2IzNzU5NWMzMmJjZTRmZjU2
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3Bw
CkBAIC0yMzkyLDYgKzIzOTIsNTEgQEAgdm9pZCBSZW5kZXJTdHlsZTo6c2V0Tm9uSW5oZXJpdGVk
Q3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBSZWYKICAgICBtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLmN1c3RvbVByb3BlcnRpZXMuYWNjZXNzKCkuc2V0
Q3VzdG9tUHJvcGVydHlWYWx1ZShuYW1lLCBXVEZNb3ZlKHZhbHVlKSk7CiB9CiAKK2NvbnN0IExl
bmd0aEJveCYgUmVuZGVyU3R5bGU6OnNjcm9sbE1hcmdpbigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnNjcm9sbE1hcmdpbjsKK30KKworY29uc3QgTGVuZ3Ro
JiBSZW5kZXJTdHlsZTo6c2Nyb2xsTWFyZ2luVG9wKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc2Ny
b2xsTWFyZ2luKCkudG9wKCk7Cit9CisKK2NvbnN0IExlbmd0aCYgUmVuZGVyU3R5bGU6OnNjcm9s
bE1hcmdpbkJvdHRvbSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHNjcm9sbE1hcmdpbigpLmJvdHRv
bSgpOworfQorCitjb25zdCBMZW5ndGgmIFJlbmRlclN0eWxlOjpzY3JvbGxNYXJnaW5MZWZ0KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gc2Nyb2xsTWFyZ2luKCkubGVmdCgpOworfQorCitjb25zdCBM
ZW5ndGgmIFJlbmRlclN0eWxlOjpzY3JvbGxNYXJnaW5SaWdodCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIHNjcm9sbE1hcmdpbigpLnJpZ2h0KCk7Cit9CisKK3ZvaWQgUmVuZGVyU3R5bGU6OnNldFNj
cm9sbE1hcmdpblRvcChMZW5ndGgmJiBsZW5ndGgpCit7CisgICAgU0VUX1ZBUihtX3JhcmVOb25J
bmhlcml0ZWREYXRhLCBzY3JvbGxNYXJnaW4udG9wKCksIFdURk1vdmUobGVuZ3RoKSk7Cit9CisK
K3ZvaWQgUmVuZGVyU3R5bGU6OnNldFNjcm9sbE1hcmdpbkJvdHRvbShMZW5ndGgmJiBsZW5ndGgp
Cit7CisgICAgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBzY3JvbGxNYXJnaW4uYm90
dG9tKCksIFdURk1vdmUobGVuZ3RoKSk7Cit9CisKK3ZvaWQgUmVuZGVyU3R5bGU6OnNldFNjcm9s
bE1hcmdpbkxlZnQoTGVuZ3RoJiYgbGVuZ3RoKQoreworICAgIFNFVF9WQVIobV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YSwgc2Nyb2xsTWFyZ2luLmxlZnQoKSwgV1RGTW92ZShsZW5ndGgpKTsKK30KKwor
dm9pZCBSZW5kZXJTdHlsZTo6c2V0U2Nyb2xsTWFyZ2luUmlnaHQoTGVuZ3RoJiYgbGVuZ3RoKQor
eworICAgIFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgc2Nyb2xsTWFyZ2luLnJpZ2h0
KCksIFdURk1vdmUobGVuZ3RoKSk7Cit9CisKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQog
CiBTY3JvbGxTbmFwVHlwZSBSZW5kZXJTdHlsZTo6aW5pdGlhbFNjcm9sbFNuYXBUeXBlKCkKQEAg
LTI0MDQsMTEgKzI0NDksNiBAQCBTY3JvbGxTbmFwQWxpZ24gUmVuZGVyU3R5bGU6OmluaXRpYWxT
Y3JvbGxTbmFwQWxpZ24oKQogICAgIHJldHVybiB7IH07CiB9CiAKLWNvbnN0IFN0eWxlU2Nyb2xs
U25hcEFyZWEmIFJlbmRlclN0eWxlOjpzY3JvbGxTbmFwQXJlYSgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuICptX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5zY3JvbGxTbmFwQXJlYTsKLX0KLQogY29uc3Qg
U3R5bGVTY3JvbGxTbmFwUG9ydCYgUmVuZGVyU3R5bGU6OnNjcm9sbFNuYXBQb3J0KCkgY29uc3QK
IHsKICAgICByZXR1cm4gKm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnNjcm9sbFNuYXBQb3J0OwpA
QCAtMjQ0NiwzMiArMjQ4Niw3IEBAIGNvbnN0IExlbmd0aCYgUmVuZGVyU3R5bGU6OnNjcm9sbFBh
ZGRpbmdSaWdodCgpIGNvbnN0CiAKIGNvbnN0IFNjcm9sbFNuYXBBbGlnbiYgUmVuZGVyU3R5bGU6
OnNjcm9sbFNuYXBBbGlnbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPnNjcm9sbFNuYXBBcmVhLT5hbGlnbm1lbnQ7Ci19Ci0KLWNvbnN0IExlbmd0aEJveCYg
UmVuZGVyU3R5bGU6OnNjcm9sbE1hcmdpbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPnNjcm9sbFNuYXBBcmVhLT5zY3JvbGxNYXJnaW47Ci19Ci0KLWNvbnN0
IExlbmd0aCYgUmVuZGVyU3R5bGU6OnNjcm9sbE1hcmdpblRvcCgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIHNjcm9sbE1hcmdpbigpLnRvcCgpOwotfQotCi1jb25zdCBMZW5ndGgmIFJlbmRlclN0eWxl
OjpzY3JvbGxNYXJnaW5Cb3R0b20oKSBjb25zdAotewotICAgIHJldHVybiBzY3JvbGxNYXJnaW4o
KS5ib3R0b20oKTsKLX0KLQotY29uc3QgTGVuZ3RoJiBSZW5kZXJTdHlsZTo6c2Nyb2xsTWFyZ2lu
TGVmdCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHNjcm9sbE1hcmdpbigpLmxlZnQoKTsKLX0KLQot
Y29uc3QgTGVuZ3RoJiBSZW5kZXJTdHlsZTo6c2Nyb2xsTWFyZ2luUmlnaHQoKSBjb25zdAotewot
ICAgIHJldHVybiBzY3JvbGxNYXJnaW4oKS5yaWdodCgpOworICAgIHJldHVybiBtX3JhcmVOb25J
bmhlcml0ZWREYXRhLT5zY3JvbGxTbmFwQWxpZ247CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNl
dFNjcm9sbFNuYXBUeXBlKGNvbnN0IFNjcm9sbFNuYXBUeXBlJiB0eXBlKQpAQCAtMjUwMSwyOSAr
MjUxNiwxNCBAQCB2b2lkIFJlbmRlclN0eWxlOjpzZXRTY3JvbGxQYWRkaW5nUmlnaHQoTGVuZ3Ro
JiYgbGVuZ3RoKQogCiB2b2lkIFJlbmRlclN0eWxlOjpzZXRTY3JvbGxTbmFwQWxpZ24oY29uc3Qg
U2Nyb2xsU25hcEFsaWduJiBhbGlnbm1lbnQpCiB7Ci0gICAgU0VUX05FU1RFRF9WQVIobV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YSwgc2Nyb2xsU25hcEFyZWEsIGFsaWdubWVudCwgYWxpZ25tZW50KTsK
LX0KLQotdm9pZCBSZW5kZXJTdHlsZTo6c2V0U2Nyb2xsTWFyZ2luVG9wKExlbmd0aCYmIGxlbmd0
aCkKLXsKLSAgICBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBzY3JvbGxT
bmFwQXJlYSwgc2Nyb2xsTWFyZ2luLnRvcCgpLCBXVEZNb3ZlKGxlbmd0aCkpOworICAgIFNFVF9W
QVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgc2Nyb2xsU25hcEFsaWduLCBhbGlnbm1lbnQpOwog
fQogCi12b2lkIFJlbmRlclN0eWxlOjpzZXRTY3JvbGxNYXJnaW5Cb3R0b20oTGVuZ3RoJiYgbGVu
Z3RoKQotewotICAgIFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHNjcm9s
bFNuYXBBcmVhLCBzY3JvbGxNYXJnaW4uYm90dG9tKCksIFdURk1vdmUobGVuZ3RoKSk7Ci19Ci0K
LXZvaWQgUmVuZGVyU3R5bGU6OnNldFNjcm9sbE1hcmdpbkxlZnQoTGVuZ3RoJiYgbGVuZ3RoKQor
Ym9vbCBSZW5kZXJTdHlsZTo6aGFzU25hcFBvc2l0aW9uKCkgY29uc3QKIHsKLSAgICBTRVRfTkVT
VEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBzY3JvbGxTbmFwQXJlYSwgc2Nyb2xsTWFy
Z2luLmxlZnQoKSwgV1RGTW92ZShsZW5ndGgpKTsKKyAgICBjb25zdCBTY3JvbGxTbmFwQWxpZ24m
IGFsaWdubWVudCA9IHRoaXMtPnNjcm9sbFNuYXBBbGlnbigpOworICAgIHJldHVybiBhbGlnbm1l
bnQueCAhPSBTY3JvbGxTbmFwQXhpc0FsaWduVHlwZTo6Tm9uZSB8fCBhbGlnbm1lbnQueSAhPSBT
Y3JvbGxTbmFwQXhpc0FsaWduVHlwZTo6Tm9uZTsKIH0KLQotdm9pZCBSZW5kZXJTdHlsZTo6c2V0
U2Nyb2xsTWFyZ2luUmlnaHQoTGVuZ3RoJiYgbGVuZ3RoKQotewotICAgIFNFVF9ORVNURURfVkFS
KG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHNjcm9sbFNuYXBBcmVhLCBzY3JvbGxNYXJnaW4ucmln
aHQoKSwgV1RGTW92ZShsZW5ndGgpKTsKLX0KLQogI2VuZGlmCiAKIGJvb2wgUmVuZGVyU3R5bGU6
Omhhc1JlZmVyZW5jZUZpbHRlck9ubHkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCA0YTI3NWJiMTBiM2VlMjRiMGEzNmI1OTEyNTE1
ZTExYTg5MGJkOTNhLi44YmE3NGYwNDQyZGUwYzQxYjg4MTYyZDNjNjgwZGY5YzhiMzJhZWQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtNzE5
LDcgKzcxOSwxNSBAQCBwdWJsaWM6CiAgICAgT3B0aW9uU2V0PFRvdWNoQWN0aW9uPiBlZmZlY3Rp
dmVUb3VjaEFjdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT5lZmZl
Y3RpdmVUb3VjaEFjdGlvbnM7IH0KICAgICBPcHRpb25TZXQ8RXZlbnRMaXN0ZW5lclJlZ2lvblR5
cGU+IGV2ZW50TGlzdGVuZXJSZWdpb25UeXBlcygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVy
aXRlZERhdGEtPmV2ZW50TGlzdGVuZXJSZWdpb25UeXBlczsgfQogCisgICAgY29uc3QgTGVuZ3Ro
Qm94JiBzY3JvbGxNYXJnaW4oKSBjb25zdDsKKyAgICBjb25zdCBMZW5ndGgmIHNjcm9sbE1hcmdp
blRvcCgpIGNvbnN0OworICAgIGNvbnN0IExlbmd0aCYgc2Nyb2xsTWFyZ2luQm90dG9tKCkgY29u
c3Q7CisgICAgY29uc3QgTGVuZ3RoJiBzY3JvbGxNYXJnaW5MZWZ0KCkgY29uc3Q7CisgICAgY29u
c3QgTGVuZ3RoJiBzY3JvbGxNYXJnaW5SaWdodCgpIGNvbnN0OworCiAjaWYgRU5BQkxFKENTU19T
Q1JPTExfU05BUCkKKyAgICBib29sIGhhc1NuYXBQb3NpdGlvbigpIGNvbnN0OworCiAgICAgLy8g
U2Nyb2xsIHNuYXAgcG9ydCBzdHlsZS4KICAgICBjb25zdCBTdHlsZVNjcm9sbFNuYXBQb3J0JiBz
Y3JvbGxTbmFwUG9ydCgpIGNvbnN0OwogICAgIGNvbnN0IFNjcm9sbFNuYXBUeXBlJiBzY3JvbGxT
bmFwVHlwZSgpIGNvbnN0OwpAQCAtNzI5LDE0ICs3MzcsNyBAQCBwdWJsaWM6CiAgICAgY29uc3Qg
TGVuZ3RoJiBzY3JvbGxQYWRkaW5nTGVmdCgpIGNvbnN0OwogICAgIGNvbnN0IExlbmd0aCYgc2Ny
b2xsUGFkZGluZ1JpZ2h0KCkgY29uc3Q7CiAKLSAgICAvLyBTY3JvbGwgc25hcCBhcmVhIHN0eWxl
LgotICAgIGNvbnN0IFN0eWxlU2Nyb2xsU25hcEFyZWEmIHNjcm9sbFNuYXBBcmVhKCkgY29uc3Q7
CiAgICAgY29uc3QgU2Nyb2xsU25hcEFsaWduJiBzY3JvbGxTbmFwQWxpZ24oKSBjb25zdDsKLSAg
ICBjb25zdCBMZW5ndGhCb3gmIHNjcm9sbE1hcmdpbigpIGNvbnN0OwotICAgIGNvbnN0IExlbmd0
aCYgc2Nyb2xsTWFyZ2luVG9wKCkgY29uc3Q7Ci0gICAgY29uc3QgTGVuZ3RoJiBzY3JvbGxNYXJn
aW5Cb3R0b20oKSBjb25zdDsKLSAgICBjb25zdCBMZW5ndGgmIHNjcm9sbE1hcmdpbkxlZnQoKSBj
b25zdDsKLSAgICBjb25zdCBMZW5ndGgmIHNjcm9sbE1hcmdpblJpZ2h0KCkgY29uc3Q7CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCkBAIC0xMjY1LDYgKzEyNjYsMTEgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0RWZmZWN0aXZlVG91Y2hBY3Rpb25zKE9wdGlvblNldDxUb3VjaEFj
dGlvbj4gdG91Y2hBY3Rpb25zKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgZWZmZWN0
aXZlVG91Y2hBY3Rpb25zLCB0b3VjaEFjdGlvbnMpOyB9CiAgICAgdm9pZCBzZXRFdmVudExpc3Rl
bmVyUmVnaW9uVHlwZXMoT3B0aW9uU2V0PEV2ZW50TGlzdGVuZXJSZWdpb25UeXBlPiBldmVudExp
c3RlbmVyVHlwZXMpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBldmVudExpc3RlbmVy
UmVnaW9uVHlwZXMsIGV2ZW50TGlzdGVuZXJUeXBlcyk7IH0KIAorICAgIHZvaWQgc2V0U2Nyb2xs
TWFyZ2luVG9wKExlbmd0aCYmKTsKKyAgICB2b2lkIHNldFNjcm9sbE1hcmdpbkJvdHRvbShMZW5n
dGgmJik7CisgICAgdm9pZCBzZXRTY3JvbGxNYXJnaW5MZWZ0KExlbmd0aCYmKTsKKyAgICB2b2lk
IHNldFNjcm9sbE1hcmdpblJpZ2h0KExlbmd0aCYmKTsKKwogI2lmIEVOQUJMRShDU1NfU0NST0xM
X1NOQVApCiAgICAgdm9pZCBzZXRTY3JvbGxTbmFwVHlwZShjb25zdCBTY3JvbGxTbmFwVHlwZSYp
OwogICAgIHZvaWQgc2V0U2Nyb2xsUGFkZGluZ1RvcChMZW5ndGgmJik7CkBAIC0xMjczLDEwICsx
Mjc5LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2Nyb2xsUGFkZGluZ1JpZ2h0KExlbmd0aCYm
KTsKIAogICAgIHZvaWQgc2V0U2Nyb2xsU25hcEFsaWduKGNvbnN0IFNjcm9sbFNuYXBBbGlnbiYp
OwotICAgIHZvaWQgc2V0U2Nyb2xsTWFyZ2luVG9wKExlbmd0aCYmKTsKLSAgICB2b2lkIHNldFNj
cm9sbE1hcmdpbkJvdHRvbShMZW5ndGgmJik7Ci0gICAgdm9pZCBzZXRTY3JvbGxNYXJnaW5MZWZ0
KExlbmd0aCYmKTsKLSAgICB2b2lkIHNldFNjcm9sbE1hcmdpblJpZ2h0KExlbmd0aCYmKTsKICNl
bmRpZgogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKQEAgLTE2NzQsMTAgKzE2NzYsMTEgQEAg
cHVibGljOgogCiAgICAgc3RhdGljIFRvdWNoQWN0aW9uIGluaXRpYWxUb3VjaEFjdGlvbnMoKSB7
IHJldHVybiBUb3VjaEFjdGlvbjo6QXV0bzsgfQogCisgICAgc3RhdGljIExlbmd0aCBpbml0aWFs
U2Nyb2xsTWFyZ2luKCkgeyByZXR1cm4gTGVuZ3RoKEZpeGVkKTsgfQorCiAjaWYgRU5BQkxFKENT
U19TQ1JPTExfU05BUCkKICAgICBzdGF0aWMgU2Nyb2xsU25hcFR5cGUgaW5pdGlhbFNjcm9sbFNu
YXBUeXBlKCk7CiAgICAgc3RhdGljIFNjcm9sbFNuYXBBbGlnbiBpbml0aWFsU2Nyb2xsU25hcEFs
aWduKCk7Ci0gICAgc3RhdGljIExlbmd0aCBpbml0aWFsU2Nyb2xsTWFyZ2luKCkgeyByZXR1cm4g
TGVuZ3RoKEZpeGVkKTsgfQogICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbFNjcm9sbFBhZGRpbmco
KSB7IHJldHVybiBMZW5ndGgoRml4ZWQpOyB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEu
Y3BwCmluZGV4IDQxOTc0Y2UxZTA1MTczMTczNmJjNGY3ODYyNDMzNGQ2NzFmOTI0M2YuLmEzZjQ0
YzQ5MDFkYjBiODI2M2YwNDEyNjRlZWE5YWM3ZDhiMGE3YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0
YS5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJTdHlsZVRyYW5zZm9ybURhdGEuaCIK
ICNpbmNsdWRlICJTdHlsZUltYWdlLmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgotI2lu
Y2x1ZGUgIlN0eWxlU2Nyb2xsU25hcFBvaW50cy5oIgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyQ29t
cGFyaXNvbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9U
ZXh0U3RyZWFtLmg+CkBAIC02Miw3ICs2MSw2IEBAIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6
OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEoKQogICAgICwgZ3JpZEl0ZW0oU3R5bGVHcmlkSXRl
bURhdGE6OmNyZWF0ZSgpKQogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgLCBzY3Jv
bGxTbmFwUG9ydChTdHlsZVNjcm9sbFNuYXBQb3J0OjpjcmVhdGUoKSkKLSAgICAsIHNjcm9sbFNu
YXBBcmVhKFN0eWxlU2Nyb2xsU25hcEFyZWE6OmNyZWF0ZSgpKQogI2VuZGlmCiAgICAgLCB3aWxs
Q2hhbmdlKFJlbmRlclN0eWxlOjppbml0aWFsV2lsbENoYW5nZSgpKQogICAgICwgbWFzayhGaWxs
TGF5ZXI6OmNyZWF0ZShGaWxsTGF5ZXJUeXBlOjpNYXNrKSkKQEAgLTEzOSw5ICsxMzcsMTAgQEAg
aW5saW5lIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERh
dGEoY29uc3QgU3R5bGVSYXJlTm9uSW4KICNlbmRpZgogICAgICwgZ3JpZChvLmdyaWQpCiAgICAg
LCBncmlkSXRlbShvLmdyaWRJdGVtKQorICAgICwgc2Nyb2xsTWFyZ2luKG8uc2Nyb2xsTWFyZ2lu
KQogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgLCBzY3JvbGxTbmFwUG9ydChvLnNj
cm9sbFNuYXBQb3J0KQotICAgICwgc2Nyb2xsU25hcEFyZWEoby5zY3JvbGxTbmFwQXJlYSkKKyAg
ICAsIHNjcm9sbFNuYXBBbGlnbihvLnNjcm9sbFNuYXBBbGlnbikKICNlbmRpZgogICAgICwgY29u
dGVudChvLmNvbnRlbnQgPyBvLmNvbnRlbnQtPmNsb25lKCkgOiBudWxscHRyKQogICAgICwgY291
bnRlckRpcmVjdGl2ZXMoby5jb3VudGVyRGlyZWN0aXZlcyA/IG1ha2VVbmlxdWU8Q291bnRlckRp
cmVjdGl2ZU1hcD4oKm8uY291bnRlckRpcmVjdGl2ZXMpIDogbnVsbHB0cikKQEAgLTI0MSw5ICsy
NDAsMTAgQEAgYm9vbCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09KGNvbnN0
IFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEmIG8pIGMKICNlbmRpZgogICAgICAgICAmJiBncmlk
ID09IG8uZ3JpZAogICAgICAgICAmJiBncmlkSXRlbSA9PSBvLmdyaWRJdGVtCisgICAgICAgICYm
IHNjcm9sbE1hcmdpbiA9PSBvLnNjcm9sbE1hcmdpbgogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NO
QVApCiAgICAgICAgICYmIHNjcm9sbFNuYXBQb3J0ID09IG8uc2Nyb2xsU25hcFBvcnQKLSAgICAg
ICAgJiYgc2Nyb2xsU25hcEFyZWEgPT0gby5zY3JvbGxTbmFwQXJlYQorICAgICAgICAmJiBzY3Jv
bGxTbmFwQWxpZ24gPT0gby5zY3JvbGxTbmFwQWxpZ24KICNlbmRpZgogICAgICAgICAmJiBjb250
ZW50RGF0YUVxdWl2YWxlbnQobykKICAgICAgICAgJiYgYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShj
b3VudGVyRGlyZWN0aXZlcywgby5jb3VudGVyRGlyZWN0aXZlcykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5o
CmluZGV4IGE0ZjhjNGIwZDJmOTBhMGRiODZlNTQ4NDM5ZThiN2VhNjFmZjJkZWIuLjMwZWI2Nzcw
NTdjOWYwMWJiYjU0MWIwOTA4NzliODNlYWQ5MDI5OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaApA
QCAtNDUsNiArNDUsMTAgQEAKICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCisjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKKyNpbmNsdWRlICJT
dHlsZVNjcm9sbFNuYXBQb2ludHMuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEFuaW1hdGlvbkxpc3Q7CkBAIC02MCw4ICs2NCw2IEBAIGNsYXNzIFN0eWxlTWFycXVl
ZURhdGE7CiBjbGFzcyBTdHlsZU11bHRpQ29sRGF0YTsKIGNsYXNzIFN0eWxlUmVmbGVjdGlvbjsK
IGNsYXNzIFN0eWxlUmVzb2x2ZXI7Ci1jbGFzcyBTdHlsZVNjcm9sbFNuYXBBcmVhOwotY2xhc3Mg
U3R5bGVTY3JvbGxTbmFwUG9ydDsKIGNsYXNzIFN0eWxlVHJhbnNmb3JtRGF0YTsKIAogc3RydWN0
IExlbmd0aFNpemU7CkBAIC0xMjksOSArMTMxLDEwIEBAIHB1YmxpYzoKICAgICBEYXRhUmVmPFN0
eWxlR3JpZERhdGE+IGdyaWQ7CiAgICAgRGF0YVJlZjxTdHlsZUdyaWRJdGVtRGF0YT4gZ3JpZEl0
ZW07CiAKKyAgICBMZW5ndGhCb3ggc2Nyb2xsTWFyZ2luIHsgMCwgMCwgMCwgMCB9OwogI2lmIEVO
QUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgRGF0YVJlZjxTdHlsZVNjcm9sbFNuYXBQb3J0PiBz
Y3JvbGxTbmFwUG9ydDsKLSAgICBEYXRhUmVmPFN0eWxlU2Nyb2xsU25hcEFyZWE+IHNjcm9sbFNu
YXBBcmVhOworICAgIFNjcm9sbFNuYXBBbGlnbiBzY3JvbGxTbmFwQWxpZ247CiAjZW5kaWYKIAog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RGF0YT4gY29udGVudDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVNjcm9sbFNuYXBQb2ludHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU2Nyb2xsU25hcFBvaW50cy5jcHAK
aW5kZXggOWU2YTkxZjAwNDA4NzBhN2ZmYjc3YTM0OTczYWUzYzA5ZjZmY2NmYS4uYjZhMjI2YjUx
ODZmYWQ5ZDJlM2Y3ZmE5NDc2NDQ5MDc5N2ZjZDJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU2Nyb2xsU25hcFBvaW50cy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU2Nyb2xsU25hcFBvaW50cy5jcHAKQEAgLTQ2
LDIzICs0Niw2IEBAIGlubGluZSBTdHlsZVNjcm9sbFNuYXBQb3J0OjpTdHlsZVNjcm9sbFNuYXBQ
b3J0KGNvbnN0IFN0eWxlU2Nyb2xsU25hcFBvcnQmIG90aGVyCiB7CiB9CiAKLVJlZjxTdHlsZVNj
cm9sbFNuYXBBcmVhPiBTdHlsZVNjcm9sbFNuYXBBcmVhOjpjb3B5KCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVNjcm9sbFNuYXBBcmVhKCp0aGlzKSk7Ci19Ci0KLVN0
eWxlU2Nyb2xsU25hcEFyZWE6OlN0eWxlU2Nyb2xsU25hcEFyZWEoKQotICAgIDogc2Nyb2xsTWFy
Z2luKDAsIDAsIDAsIDApCi17Ci19Ci0KLWlubGluZSBTdHlsZVNjcm9sbFNuYXBBcmVhOjpTdHls
ZVNjcm9sbFNuYXBBcmVhKGNvbnN0IFN0eWxlU2Nyb2xsU25hcEFyZWEmIG90aGVyKQotICAgIDog
UmVmQ291bnRlZCgpCi0gICAgLCBhbGlnbm1lbnQob3RoZXIuYWxpZ25tZW50KQotICAgICwgc2Ny
b2xsTWFyZ2luKG90aGVyLnNjcm9sbE1hcmdpbikKLXsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLyogRU5BQkxFKENTU19TQ1JPTExfU05BUCkgKi8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVNjcm9sbFNuYXBQb2ludHMuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVNjcm9sbFNuYXBQb2ludHMuaApp
bmRleCAwYmM5Y2JjMGJmNjVhNzQ2M2RkNWMwMDE3YmQ5OTQ1Nzc3NTFiZGI0Li5mMTk0NGUwMzVh
Mjk1ZjUwMmUwYWI3Y2FjMjIxNTY3OWQ0NjRiYzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTY3JvbGxTbmFwUG9pbnRzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU2Nyb2xsU25hcFBvaW50cy5oCkBAIC03OSwyNyAr
NzksNiBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcm9sbFNuYXBBbGlnbiYgYSwg
Y29uc3QgU2Nyb2xsU25hcEFsaWduJiBiKQogCiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IFNjcm9sbFNuYXBBbGlnbiYgYSwgY29uc3QgU2Nyb2xsU25hcEFsaWduJiBiKSB7IHJldHVybiAh
KGEgPT0gYik7IH0KIAotY2xhc3MgU3R5bGVTY3JvbGxTbmFwQXJlYSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFN0eWxlU2Nyb2xsU25hcEFyZWE+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFN0eWxl
U2Nyb2xsU25hcEFyZWE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVTY3Jv
bGxTbmFwQXJlYSk7IH0KLSAgICBSZWY8U3R5bGVTY3JvbGxTbmFwQXJlYT4gY29weSgpIGNvbnN0
OwotICAgIGJvb2wgaGFzU25hcFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gYWxpZ25tZW50Lngg
IT0gU2Nyb2xsU25hcEF4aXNBbGlnblR5cGU6Ok5vbmUgfHwgYWxpZ25tZW50LnkgIT0gU2Nyb2xs
U25hcEF4aXNBbGlnblR5cGU6Ok5vbmU7IH0KLQotICAgIFNjcm9sbFNuYXBBbGlnbiBhbGlnbm1l
bnQ7Ci0gICAgTGVuZ3RoQm94IHNjcm9sbE1hcmdpbiB7IDAsIDAsIDAsIDAgfTsKLQotcHJpdmF0
ZToKLSAgICBTdHlsZVNjcm9sbFNuYXBBcmVhKCk7Ci0gICAgU3R5bGVTY3JvbGxTbmFwQXJlYShj
b25zdCBTdHlsZVNjcm9sbFNuYXBBcmVhJik7Ci19OwotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFN0eWxlU2Nyb2xsU25hcEFyZWEmIGEsIGNvbnN0IFN0eWxlU2Nyb2xsU25hcEFyZWEm
IGIpCi17Ci0gICAgcmV0dXJuIGEuYWxpZ25tZW50ID09IGIuYWxpZ25tZW50ICYmIGEuc2Nyb2xs
TWFyZ2luID09IGIuc2Nyb2xsTWFyZ2luOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IFN0eWxlU2Nyb2xsU25hcEFyZWEmIGEsIGNvbnN0IFN0eWxlU2Nyb2xsU25hcEFyZWEmIGIp
IHsgcmV0dXJuICEoYSA9PSBiKTsgfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGEwMTQ4NmY5ZjZkYmQwZGI1MDAw
OWFmYjk2NDE0YzQ4ZDBkNWY2MmIuLmQ5OWU3ZDU4YWMyNWY4MThiMWY3YjllMTQ0M2M0OGQwM2Vk
ZGRkMzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0xMC0yOCAgTWFydGluIFJvYmluc29u
ICA8bXJvYmluc29uQGlnYWxpYS5jb20+CisKKyAgICAgICAgTWFrZSBzY3JvbGwtbWFyZ2luIGlu
ZGVwZW5kZW50IG9mIHNjcm9sbCBzbmFwcGluZyBhbmQgaGF2ZSBpdCBhcHBseSB3aGVuIHNjcm9s
bGluZyB0byBhbmNob3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTgwNzYKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAg
ICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOiBVcGRhdGVkIGV4cGVjdGF0aW9ucyBmb3IgbmV3bHkg
cGFzc2luZyB0ZXN0cyBhbmQgbWFya2VkIHNvbWUgdGVzdHMKKyAgICAgICAgYXMgZmxha3kuCisK
IDIwMjAtMTAtMjcgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZW1vdmUgdW5uZWVkZWQgd2hpdGVzcGFjZSBiZXR3ZWVuIGNvbnRlbnQgYW5kIDxicj4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IGViZWU4NmFjNDk5OGFjNTA2ZDEyMGE0YjQzNzRi
YjQyMGRiNzdiNTIuLjZmMGI4YWNlN2ZhY2MyZjY4ZTM4MDZjOGJmNTI4YWIxZTY0MzAzYmQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIwLTEwLTI5
ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBNYWtl
IHNjcm9sbC1tYXJnaW4gaW5kZXBlbmRlbnQgb2Ygc2Nyb2xsIHNuYXBwaW5nIGFuZCBoYXZlIGl0
IGFwcGx5IHdoZW4gc2Nyb2xsaW5nIHRvIGFuY2hvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODA3NgorCisgICAgICAgIFJldmlld2VkIGJ5IFNp
bW9uIEZyYXNlci4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nzb20tdmll
dy9zY3JvbGxJbnRvVmlldy1zY3JvbGxNYXJnaW4tZXhwZWN0ZWQudHh0OiBVcGRhdGVkIGV4cGVj
dGF0aW9uIHRvIG5vdGUgbmV3IHBhc3MuCisKIDIwMjAtMTAtMjcgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBdWRpb0J1ZmZlci5nZXRDaGFubmVsRGF0YSh4KSBz
aG91bGQga2VlcCByZXR1cm5pbmcgdGhlIHNhbWUgSlMgd3JhcHBlciBmb3IgYSBnaXZlbiBjaGFu
bmVsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVz
dHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBjYWRiZDhhZDVjMjE3Mzc4YzA0ZDViYTc3MzNmNzAw
MThiNGEzNzQyLi5kYjgzNzc0MTA3OThkOTAzYTQ0MjcyNTk2YWUxYzQyMmQ5ZWU2MTM2IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rl
c3RFeHBlY3RhdGlvbnMKQEAgLTQ1MDMsMTAgKzQ1MDMsOCBAQCB3ZWJraXQub3JnL2IvMjE1NTMx
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1iYWNrZ3JvdW5kcy9iYWNr
Z3JvdQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXNjcm9sbC1zbmFw
L3Njcm9sbC10YXJnZXQtYWxpZ24tMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9zY3JvbGwtdGFy
Z2V0LWFsaWduLTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mtc2Nyb2xsLXNuYXAvc2Nyb2xsLXRhcmdldC1hbGlnbi0w
MDMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLXNjcm9sbC1zbmFwL3Njcm9sbC10YXJnZXQtbWFyZ2luLTAwMS5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3Mtc2Nyb2xsLXNuYXAvc2Nyb2xsLXRhcmdldC1tYXJnaW4tMDAyLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwt
c25hcC9zY3JvbGwtdGFyZ2V0LW1hcmdpbi0wMDMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQot
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXNjcm9sbC1zbmFwL3Njcm9s
bC10YXJnZXQtbWFyZ2luLTAwNC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3Jn
L2IvMjE4MzI1IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwt
c25hcC9zY3JvbGwtdGFyZ2V0LW1hcmdpbi0wMDEuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVy
ZSBdCit3ZWJraXQub3JnL2IvMjE4MzI1IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy1zY3JvbGwtc25hcC9zY3JvbGwtdGFyZ2V0LW1hcmdpbi0wMDMuaHRtbCBbIFBhc3Mg
SW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3Mtc2Nyb2xsLXNuYXAvc2Nyb2xsLXRhcmdldC1wYWRkaW5nLTAwMS5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mtc2Nyb2xs
LXNuYXAvc2Nyb2xsLXRhcmdldC1wYWRkaW5nLTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
CiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mtc2Nyb2xsLXNuYXAvc2Ny
b2xsLXRhcmdldC1wYWRkaW5nLTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Nv
bS12aWV3L3Njcm9sbEludG9WaWV3LXNjcm9sbE1hcmdpbi1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3NvbS12aWV3L3Njcm9s
bEludG9WaWV3LXNjcm9sbE1hcmdpbi1leHBlY3RlZC50eHQKaW5kZXggNzg3OTM2ZDY3NjFhMDQ1
ZGYwMWEzYWMwN2ZmNWQ1Y2JiNTM4MjE3ZC4uYjIwYzVmNWZiMzZiMzc0MDY4MTNlOGFlZDMwZDll
OTMyNWY2ZDZjMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3Nzb20tdmlldy9zY3JvbGxJbnRvVmlldy1zY3JvbGxNYXJnaW4tZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzc29tLXZpZXcvc2Nyb2xsSW50b1ZpZXctc2Nyb2xsTWFyZ2luLWV4cGVjdGVkLnR4
dApAQCAtMSw1ICsxLDUgQEAKIAotRkFJTCBzY3JvbGxJbnRvVmlldyh7YmxvY2s6ICJjZW50ZXIi
LCBpbmxpbmU6ICJjZW50ZXIifSkgYXNzZXJ0X2FwcHJveF9lcXVhbHM6IHNjcm9sbFggZXhwZWN0
ZWQgMTUzLjUgKy8tIDAuNSBidXQgZ290IDE1OAotRkFJTCBzY3JvbGxJbnRvVmlldyh7YmxvY2s6
ICJzdGFydCIsIGlubGluZTogInN0YXJ0In0pIGFzc2VydF9hcHByb3hfZXF1YWxzOiBzY3JvbGxY
IGV4cGVjdGVkIDE4NCArLy0gMC41IGJ1dCBnb3QgMjAwCi1GQUlMIHNjcm9sbEludG9WaWV3KHti
bG9jazogImVuZCIsIGlubGluZTogImVuZCJ9KSBhc3NlcnRfYXBwcm94X2VxdWFsczogc2Nyb2xs
WCBleHBlY3RlZCAxMjMgKy8tIDAuNSBidXQgZ290IDExNQorUEFTUyBzY3JvbGxJbnRvVmlldyh7
YmxvY2s6ICJjZW50ZXIiLCBpbmxpbmU6ICJjZW50ZXIifSkKK1BBU1Mgc2Nyb2xsSW50b1ZpZXco
e2Jsb2NrOiAic3RhcnQiLCBpbmxpbmU6ICJzdGFydCJ9KQorUEFTUyBzY3JvbGxJbnRvVmlldyh7
YmxvY2s6ICJlbmQiLCBpbmxpbmU6ICJlbmQifSkKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412631</attachid>
            <date>2020-10-29 03:51:45 -0700</date>
            <delta_ts>2020-10-29 04:37:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218076-20201029115143.patch</filename>
            <type>text/plain</type>
            <size>29872</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzQ1MWEyOGI0NWEwYmRj
MmQzZjAwMDEzMTY2ZTBmZmM3YTQ4OTRlMy4uMzY0ZThlYzIzNDRkNDc4YjMyOThiZTU1MzU0YTk4
NWM3YmFhZGFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDIwLTEwLTI4ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBNYWtlIHNjcm9s
bC1tYXJnaW4gaW5kZXBlbmRlbnQgb2Ygc2Nyb2xsIHNuYXBwaW5nIGFuZCBoYXZlIGl0IGFwcGx5
IHdoZW4gc2Nyb2xsaW5nIHRvIGFuY2hvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxODA3NgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZy
YXNlci4KKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OnNjcm9sbEludG9WaWV3KTogVXNlIGFic29sdXRlQW5jaG9yUmVjdFdpdGhTY3JvbGxN
YXJnaW4sIHRha2luZyBpbnRvCisgICAgICAgIGFjY291bnQgc2Nyb2xsLW1hcmdpbi4KKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNjcm9sbEludG9WaWV3SWZOZWVkZWQpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNjcm9sbEludG9WaWV3SWZOb3RWaXNpYmxlKTogRGl0
dG8uCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVWaWV3OjpzY3JvbGxUb0FuY2hvcik6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjphYnNvbHV0ZUFuY2hvclJl
Y3RXaXRoU2Nyb2xsTWFyZ2luIGNvbnN0KTogQWRkZWQgdGhpcyBvdmVycmlkZQorICAgICAgICB3
aGljaCBwcm9wZXJseSBjb252ZXJ0cyB0aGUgc2Nyb2xsLW1hcmdpbiB0byBMYXlvdXRVbml0cyBh
bmQgYXBwbGllcyBpdCB0byBhYnNvbHV0ZUFuY2hvclJlY3QuCisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckJveC5oOiBBZGRlZCBtZXRob2QgZGVjbGFyYXRpb24uCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6
YWJzb2x1dGVBbmNob3JSZWN0V2l0aFNjcm9sbE1hcmdpbiBjb25zdCk6IEFkZGVkIGltcGxlbWVu
dGF0aW9uCisgICAgICAgIHRoYXQgc2ltcGx5IGNhbGxzIGFic29sdXRlQW5jaG9yUmVjdC4KKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oOiBBZGRlZCBkZWNsYXJhdGlvbiBvZiBu
ZXcgdmlydHVhbAorICAgICAgICBhYnNvbHV0ZUFuY2hvclJlY3RXaXRoU2Nyb2xsTWFyZ2luLgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyTW9kZWxPYmplY3Q6OnN0eWxlRGlkQ2hhbmdlKTogR2V0IHRo
ZSBzY3JvbGwtbWFyZ2luIGRpcmVjdGx5IGZyb20gdGhlCisgICAgICAgIHN0eWxlIGluc3RlYWQg
b2YgdGhlIG5vdy1yZW1vdmVkIFNjcm9sbFNuYXBBcmVhLgorICAgICAgICAqIHJlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2Ny
b2xsTWFyZ2luIGNvbnN0KTogTW92ZSBzY3JvbGwtbWFyZ2luIGFuZCBzY3JvbGwtc25hcC1hbGln
biB0bworICAgICAgICBtX3JhcmVOb25Jbmhlcml0ZWREYXRhIGFuZCBnZXQgcmlkIG9mIGludGVy
bWVkaWF0ZSBTY3JvbGxTbmFwQXJlYS4gVGhlc2UgdHdvIHByb3BlcnRpZXMKKyAgICAgICAgYXJl
IG5vIGluZGVwZW5kZW50LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNjcm9sbE1h
cmdpblRvcCBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNj
cm9sbE1hcmdpbkJvdHRvbSBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U3R5bGU6OnNjcm9sbE1hcmdpbkxlZnQgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclN0eWxlOjpzY3JvbGxNYXJnaW5SaWdodCBjb25zdCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFNjcm9sbE1hcmdpblRvcCk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFNjcm9sbE1hcmdpbkJvdHRvbSk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFNjcm9sbE1hcmdpbkxlZnQpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRTY3JvbGxNYXJnaW5SaWdodCk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNjcm9sbFNuYXBBbGlnbiBj
b25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFNjcm9sbFNu
YXBBbGlnbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Omhhc1NuYXBQ
b3NpdGlvbiBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNj
cm9sbFNuYXBBcmVhIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuaDogQWRkIGFjY2Vzc29ycyBmb3Igc2Nyb2xsLW1hcmdpbiBhbmQgbW92ZWQg
aGFzU25hcFBvc2l0aW9uCisgICAgICAgIGZyb20gU2Nyb2xsU25hcEFyZWEuCisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwOiBSZW1vdmVkIGlu
dGVybWVkaWF0ZSBTY3JvbGxTbmFwQXJlYSBkYXRhCisgICAgICAgIHN0cnVjdHVyZSBhbmQgbW92
ZWQgbWVtYmVycyBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVk
RGF0YTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9PSBjb25zdCk6IERpdHRvLgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmg6IERp
dHRvLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVNjcm9sbFNuYXBQb2ludHMuY3Bw
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2Nyb2xsU25hcEFyZWE6OmNvcHkgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTY3JvbGxTbmFwQXJlYTo6U3R5
bGVTY3JvbGxTbmFwQXJlYSk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0
eWxlU2Nyb2xsU25hcFBvaW50cy5oOiBSZW1vdmVkIFNjcm9sbFNuYXBBcmVhLgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVTY3JvbGxTbmFwQXJlYTo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlU2Nyb2xsU25hcEFyZWE6Omhhc1NuYXBQb3NpdGlvbiBjb25zdCk6IERl
bGV0ZWQuCisKIDIwMjAtMTAtMjcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CiAKICAgICAgICAgW0NvbmN1cnJlbnQgZGlzcGxheSBsaXN0c10gQWRkIGFsdGVybmF0ZSB2
ZXJzaW9ucyBvZiBleGlzdGluZyBkaXNwbGF5IGxpc3QgaXRlbXMgdGhhdCBvbmx5IGNvbnRhaW4g
aW5saW5lIGRhdGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBkODhiMGI5ZDU0NmY2ZDU4MWVl
YzVhZjA0NDJjNGRjNzhhNGZhOGNhLi41ZWYzZmU5Nzg4ZmRkYWVmN2ZhOWNlZjU2YmVlYzg2NWMz
YjljNTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC04NjEsNyArODYxLDcgQEAgdm9pZCBF
bGVtZW50OjpzY3JvbGxJbnRvVmlldyhPcHRpb25hbDxWYXJpYW50PGJvb2wsIFNjcm9sbEludG9W
aWV3T3B0aW9ucz4+JiYgYXIKICAgICAgICAgcmV0dXJuOwogCiAgICAgYm9vbCBpbnNpZGVGaXhl
ZDsKLSAgICBMYXlvdXRSZWN0IGFic29sdXRlQm91bmRzID0gcmVuZGVyZXIoKS0+YWJzb2x1dGVB
bmNob3JSZWN0KCZpbnNpZGVGaXhlZCk7CisgICAgTGF5b3V0UmVjdCBhYnNvbHV0ZUJvdW5kcyA9
IHJlbmRlcmVyKCktPmFic29sdXRlQW5jaG9yUmVjdFdpdGhTY3JvbGxNYXJnaW4oJmluc2lkZUZp
eGVkKTsKIAogICAgIFNjcm9sbEludG9WaWV3T3B0aW9ucyBvcHRpb25zOwogICAgIGlmIChhcmcp
IHsKQEAgLTg5NSw3ICs4OTUsNyBAQCB2b2lkIEVsZW1lbnQ6OnNjcm9sbEludG9WaWV3KGJvb2wg
YWxpZ25Ub1RvcCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYm9vbCBpbnNpZGVGaXhlZDsKLSAg
ICBMYXlvdXRSZWN0IGFic29sdXRlQm91bmRzID0gcmVuZGVyZXIoKS0+YWJzb2x1dGVBbmNob3JS
ZWN0KCZpbnNpZGVGaXhlZCk7CisgICAgTGF5b3V0UmVjdCBhYnNvbHV0ZUJvdW5kcyA9IHJlbmRl
cmVyKCktPmFic29sdXRlQW5jaG9yUmVjdFdpdGhTY3JvbGxNYXJnaW4oJmluc2lkZUZpeGVkKTsK
ICAgICAvLyBBbGlnbiB0byB0aGUgdG9wIC8gYm90dG9tIGFuZCB0byB0aGUgY2xvc2VzdCBlZGdl
LgogICAgIGlmIChhbGlnblRvVG9wKQogICAgICAgICByZW5kZXJlcigpLT5zY3JvbGxSZWN0VG9W
aXNpYmxlKGFic29sdXRlQm91bmRzLCBpbnNpZGVGaXhlZCwgeyBTZWxlY3Rpb25SZXZlYWxNb2Rl
OjpSZXZlYWwsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgU2Nyb2xsQWxp
Z25tZW50OjphbGlnblRvcEFsd2F5cywgU2hvdWxkQWxsb3dDcm9zc09yaWdpblNjcm9sbGluZzo6
Tm8gfSk7CkBAIC05MTEsNyArOTExLDcgQEAgdm9pZCBFbGVtZW50OjpzY3JvbGxJbnRvVmlld0lm
TmVlZGVkKGJvb2wgY2VudGVySWZOZWVkZWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGJvb2wg
aW5zaWRlRml4ZWQ7Ci0gICAgTGF5b3V0UmVjdCBhYnNvbHV0ZUJvdW5kcyA9IHJlbmRlcmVyKCkt
PmFic29sdXRlQW5jaG9yUmVjdCgmaW5zaWRlRml4ZWQpOworICAgIExheW91dFJlY3QgYWJzb2x1
dGVCb3VuZHMgPSByZW5kZXJlcigpLT5hYnNvbHV0ZUFuY2hvclJlY3RXaXRoU2Nyb2xsTWFyZ2lu
KCZpbnNpZGVGaXhlZCk7CiAgICAgaWYgKGNlbnRlcklmTmVlZGVkKQogICAgICAgICByZW5kZXJl
cigpLT5zY3JvbGxSZWN0VG9WaXNpYmxlKGFic29sdXRlQm91bmRzLCBpbnNpZGVGaXhlZCwgeyBT
ZWxlY3Rpb25SZXZlYWxNb2RlOjpSZXZlYWwsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25DZW50ZXJJ
Zk5lZWRlZCwgU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNlbnRlcklmTmVlZGVkLCBTaG91bGRBbGxv
d0Nyb3NzT3JpZ2luU2Nyb2xsaW5nOjpObyB9KTsKICAgICBlbHNlCkBAIC05MjYsNyArOTI2LDcg
QEAgdm9pZCBFbGVtZW50OjpzY3JvbGxJbnRvVmlld0lmTm90VmlzaWJsZShib29sIGNlbnRlcklm
Tm90VmlzaWJsZSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGJvb2wgaW5zaWRlRml4ZWQ7
Ci0gICAgTGF5b3V0UmVjdCBhYnNvbHV0ZUJvdW5kcyA9IHJlbmRlcmVyKCktPmFic29sdXRlQW5j
aG9yUmVjdCgmaW5zaWRlRml4ZWQpOworICAgIExheW91dFJlY3QgYWJzb2x1dGVCb3VuZHMgPSBy
ZW5kZXJlcigpLT5hYnNvbHV0ZUFuY2hvclJlY3RXaXRoU2Nyb2xsTWFyZ2luKCZpbnNpZGVGaXhl
ZCk7CiAgICAgaWYgKGNlbnRlcklmTm90VmlzaWJsZSkKICAgICAgICAgcmVuZGVyZXIoKS0+c2Ny
b2xsUmVjdFRvVmlzaWJsZShhYnNvbHV0ZUJvdW5kcywgaW5zaWRlRml4ZWQsIHsgU2VsZWN0aW9u
UmV2ZWFsTW9kZTo6UmV2ZWFsLCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduQ2VudGVySWZOb3RWaXNp
YmxlLCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduQ2VudGVySWZOb3RWaXNpYmxlLCBTaG91bGRBbGxv
d0Nyb3NzT3JpZ2luU2Nyb2xsaW5nOjpObyB9KTsKICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5jcHAKaW5kZXggMmM0ODI2Mzg1OWJhZTU5NjdkY2YzMWJiYjAwOGIzMDc5YjEzMmFhZi4u
MGY0YzhiMDNhYTk5NTA2ODM4OGYwMjljN2JjNDYxNTExZTYwNTVlOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcApAQCAtMzE3Niw3ICszMTc2LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnNjcm9s
bFRvQW5jaG9yKCkKICAgICBMYXlvdXRSZWN0IHJlY3Q7CiAgICAgYm9vbCBpbnNpZGVGaXhlZCA9
IGZhbHNlOwogICAgIGlmIChhbmNob3JOb2RlICE9IGZyYW1lKCkuZG9jdW1lbnQoKSAmJiBhbmNo
b3JOb2RlLT5yZW5kZXJlcigpKQotICAgICAgICByZWN0ID0gYW5jaG9yTm9kZS0+cmVuZGVyZXIo
KS0+YWJzb2x1dGVBbmNob3JSZWN0KCZpbnNpZGVGaXhlZCk7CisgICAgICAgIHJlY3QgPSBhbmNo
b3JOb2RlLT5yZW5kZXJlcigpLT5hYnNvbHV0ZUFuY2hvclJlY3RXaXRoU2Nyb2xsTWFyZ2luKCZp
bnNpZGVGaXhlZCk7CiAKICAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsaW5nLCBzdHJlYW0gPDwg
IiBhbmNob3Igbm9kZSByZWN0ICIgPDwgcmVjdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5jcHAKaW5kZXggZjJmYzk2YTMwYTNiMzQyM2I4NWI2YmFkZDMzMGJjMjlhZmEzMWI3
MS4uODdkNTlkM2RkODJlOGJjNTkwNzBiNjhlYjI2MWZkZTdiZDNiYzA1YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTE2MSw3ICsxNjEsNyBAQCB2b2lkIFJlbmRl
ckJveDo6d2lsbEJlRGVzdHJveWVkKCkKICAgICByZW1vdmVDb250cm9sU3RhdGVzRm9yUmVuZGVy
ZXIoKnRoaXMpOwogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAgICBpZiAoaGFzSW5p
dGlhbGl6ZWRTdHlsZSgpICYmIHN0eWxlKCkuc2Nyb2xsU25hcEFyZWEoKS5oYXNTbmFwUG9zaXRp
b24oKSkKKyAgICBpZiAoaGFzSW5pdGlhbGl6ZWRTdHlsZSgpICYmIHN0eWxlKCkuaGFzU25hcFBv
c2l0aW9uKCkpCiAgICAgICAgIHZpZXcoKS51bnJlZ2lzdGVyQm94V2l0aFNjcm9sbFNuYXBQb3Np
dGlvbnMoKnRoaXMpOwogI2VuZGlmCiAKQEAgLTI3Nyw4ICsyNzcsOCBAQCB2b2lkIFJlbmRlckJv
eDo6c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHls
ZSYgbmV3U3R5bAogICAgICAgICB2aWV3KCkucmVwYWludFJvb3RDb250ZW50cygpOwogCiAjaWYg
RU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAgICBib29sIGJveENvbnRyaWJ1dGVzU25hcFBvc2l0
aW9ucyA9IG5ld1N0eWxlLnNjcm9sbFNuYXBBcmVhKCkuaGFzU25hcFBvc2l0aW9uKCk7Ci0gICAg
aWYgKGJveENvbnRyaWJ1dGVzU25hcFBvc2l0aW9ucyB8fCAob2xkU3R5bGUgJiYgb2xkU3R5bGUt
PnNjcm9sbFNuYXBBcmVhKCkuaGFzU25hcFBvc2l0aW9uKCkpKSB7CisgICAgYm9vbCBib3hDb250
cmlidXRlc1NuYXBQb3NpdGlvbnMgPSBuZXdTdHlsZS5oYXNTbmFwUG9zaXRpb24oKTsKKyAgICBp
ZiAoYm94Q29udHJpYnV0ZXNTbmFwUG9zaXRpb25zIHx8IChvbGRTdHlsZSAmJiBvbGRTdHlsZS0+
aGFzU25hcFBvc2l0aW9uKCkpKSB7CiAgICAgICAgIGlmIChib3hDb250cmlidXRlc1NuYXBQb3Np
dGlvbnMpCiAgICAgICAgICAgICB2aWV3KCkucmVnaXN0ZXJCb3hXaXRoU2Nyb2xsU25hcFBvc2l0
aW9ucygqdGhpcyk7CiAgICAgICAgIGVsc2UKQEAgLTUwNTQsNCArNTA1NCwyNiBAQCBjb25zdCBS
ZW5kZXJCb3gqIFJlbmRlckJveDo6ZmluZEVuY2xvc2luZ1Njcm9sbGFibGVDb250YWluZXIoKSBj
b25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCitMYXlvdXRSZWN0IFJlbmRlckJveDo6YWJz
b2x1dGVBbmNob3JSZWN0V2l0aFNjcm9sbE1hcmdpbihib29sKiBpbnNpZGVGaXhlZCkgY29uc3QK
K3sKKyAgICBMYXlvdXRSZWN0IGFuY2hvclJlY3QgPSBhYnNvbHV0ZUFuY2hvclJlY3QoaW5zaWRl
Rml4ZWQpOworICAgIGNvbnN0IExlbmd0aEJveCYgc2Nyb2xsTWFyZ2luID0gc3R5bGUoKS5zY3Jv
bGxNYXJnaW4oKTsKKyAgICBpZiAoc2Nyb2xsTWFyZ2luLmlzWmVybygpKQorICAgICAgICByZXR1
cm4gYW5jaG9yUmVjdDsKKworICAgIC8vIFRoZSBzY3JvbGwgc25hcCBzcGVjaWZpY2F0aW9uIHNh
eXMgdGhhdCB0aGUgc2Nyb2xsLW1hcmdpbiBzaG91bGQgYmUgYXBwbGllZCBpbiB0aGUKKyAgICAv
LyBjb29yZGluYXRlIHN5c3RlbSBvZiB0aGUgc2Nyb2xsIGNvbnRhaW5lciBhbmQgYXBwbGllZCB0
byB0aGUgcmVjdGFuZ3VsYXIgYm91bmRpbmcKKyAgICAvLyBib3ggb2YgdGhlIHRyYW5zZm9ybWVk
IGJvcmRlciBib3ggb2YgdGhlIHRhcmdldCBlbGVtZW50LgorICAgIC8vIFNlZSBodHRwczovL3d3
dy53My5vcmcvVFIvY3NzLXNjcm9sbC1zbmFwLTEvI3Njcm9sbC1tYXJnaW4uCisgICAgY29uc3Qg
TGF5b3V0U2l6ZSBib3hTaXplID0gc2l6ZSgpOworICAgIGNvbnN0IExheW91dEJveEV4dGVudCBt
YXJnaW4oCisgICAgICAgIHZhbHVlRm9yTGVuZ3RoKHNjcm9sbE1hcmdpbi50b3AoKSwgYm94U2l6
ZS5oZWlnaHQoKSksCisgICAgICAgIHZhbHVlRm9yTGVuZ3RoKHNjcm9sbE1hcmdpbi5yaWdodCgp
LCBib3hTaXplLndpZHRoKCkpLAorICAgICAgICB2YWx1ZUZvckxlbmd0aChzY3JvbGxNYXJnaW4u
Ym90dG9tKCksIGJveFNpemUuaGVpZ2h0KCkpLAorICAgICAgICB2YWx1ZUZvckxlbmd0aChzY3Jv
bGxNYXJnaW4ubGVmdCgpLCBib3hTaXplLndpZHRoKCkpKTsKKyAgICBhbmNob3JSZWN0LmV4cGFu
ZChtYXJnaW4pOworCisgICAgcmV0dXJuIGFuY2hvclJlY3Q7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAppbmRleCBmODlhNjRiNTEw
Y2UzMzhiYzA1ODdiMjI4ODM0NjYzNDIwY2M2ZTE3Li5lMDgxNDVkOGUwZTlmNjI2MTMwMzliMTZl
NGExNjBhYzE3OWNhZWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCkBAIC02
NDQsNiArNjQ0LDggQEAgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0Qm9yZGVy
Qm94UmVjdEZvclBhaW50aW5nKExheW91dFJlY3QmKSB7IH07CiAKKyAgICBMYXlvdXRSZWN0IGFi
c29sdXRlQW5jaG9yUmVjdFdpdGhTY3JvbGxNYXJnaW4oYm9vbCogaW5zaWRlRml4ZWQgPSBudWxs
cHRyKSBjb25zdCBvdmVycmlkZTsKKwogcHJvdGVjdGVkOgogICAgIFJlbmRlckJveChFbGVtZW50
JiwgUmVuZGVyU3R5bGUmJiwgQmFzZVR5cGVGbGFncyk7CiAgICAgUmVuZGVyQm94KERvY3VtZW50
JiwgUmVuZGVyU3R5bGUmJiwgQmFzZVR5cGVGbGFncyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRWxlbWVudC5jcHAKaW5kZXggYmRjMDE1ZmY2YmUwZTI4YWI1ZTliYWMwYTI3YzNj
OTkwZWEyMWRjNi4uZjg0YjdkNTkyY2ZkY2NkODhjMGEwYzk2NmY1ZGU2Zjc0ZTM4MWQ2MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcApAQCAtMTY1Nyw2ICsx
NjU3LDExIEBAIExheW91dFJlY3QgUmVuZGVyRWxlbWVudDo6YWJzb2x1dGVBbmNob3JSZWN0KGJv
b2wqIGluc2lkZUZpeGVkKSBjb25zdAogICAgIHJldHVybiBlbmNsb3NpbmdMYXlvdXRSZWN0KEZs
b2F0UmVjdCh1cHBlckxlZnQsIGxvd2VyUmlnaHQuZXhwYW5kZWRUbyh1cHBlckxlZnQpIC0gdXBw
ZXJMZWZ0KSk7CiB9CiAKK0xheW91dFJlY3QgUmVuZGVyRWxlbWVudDo6YWJzb2x1dGVBbmNob3JS
ZWN0V2l0aFNjcm9sbE1hcmdpbihib29sKiBpbnNpZGVGaXhlZCkgY29uc3QKK3sKKyAgICByZXR1
cm4gYWJzb2x1dGVBbmNob3JSZWN0KGluc2lkZUZpeGVkKTsKK30KKwogY29uc3QgUmVuZGVyRWxl
bWVudCogUmVuZGVyRWxlbWVudDo6ZW5jbG9zaW5nUmVuZGVyZXJXaXRoVGV4dERlY29yYXRpb24o
T3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiB0ZXh0RGVjb3JhdGlvbiwgYm9vbCBmaXJzdExpbmUp
IGNvbnN0CiB7CiAgICAgY29uc3QgUmVuZGVyRWxlbWVudCogY3VycmVudCA9IHRoaXM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAppbmRleCBiODBkMjhiYmM1M2FlMDE5
OGIwOTE4MWYxYzcyNGNiOGZlZjg0NTQ0Li43NjNjNjE3ZjFhNjM1ZGYxOWRlMDA1MDM0Y2M4OWU0
NDMzZDQ2OTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKQEAg
LTE1NSwxMSArMTU1LDE1IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgY2hlY2tGb3JSZXBhaW50RHVy
aW5nTGF5b3V0KCkgY29uc3Q7CiAKLSAgICAvLyBhbmNob3JSZWN0KCkgaXMgY29uY2VwdHVhbGx5
IHNpbWlsYXIgdG8gYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSwgYnV0IGlzIGludGVuZGVkIGZv
ciBzY3JvbGxpbmcgdG8gYW4gYW5jaG9yLgotICAgIC8vIEZvciBpbmxpbmUgcmVuZGVyZXJzLCB0
aGlzIGdldHMgdGhlIGxvZ2ljYWwgdG9wIGxlZnQgb2YgdGhlIGZpcnN0IGxlYWYgY2hpbGQgYW5k
IHRoZSBsb2dpY2FsIGJvdHRvbSByaWdodCBvZiB0aGUKLSAgICAvLyBsYXN0IGxlYWYgY2hpbGQs
IGNvbnZlcnRzIHRoZW0gdG8gYWJzb2x1dGUgY29vcmRpbmF0ZXMsIGFuZCBtYWtlcyBhIGJveCBv
dXQgb2YgdGhlbS4KKyAgICAvLyBhYnNvbHV0ZUFuY2hvclJlY3QoKSBpcyBjb25jZXB0dWFsbHkg
c2ltaWxhciB0byBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpLCBidXQgaXMgaW50ZW5kZWQgZm9y
IHNjcm9sbGluZyB0byBhbgorICAgIC8vIGFuY2hvci4gRm9yIGlubGluZSByZW5kZXJlcnMsIHRo
aXMgZ2V0cyB0aGUgbG9naWNhbCB0b3AgbGVmdCBvZiB0aGUgZmlyc3QgbGVhZiBjaGlsZCBhbmQg
dGhlIGxvZ2ljYWwgYm90dG9tCisgICAgLy8gcmlnaHQgb2YgdGhlIGxhc3QgbGVhZiBjaGlsZCwg
Y29udmVydHMgdGhlbSB0byBhYnNvbHV0ZSBjb29yZGluYXRlcywgYW5kIG1ha2VzIGEgYm94IG91
dCBvZiB0aGVtLgogICAgIExheW91dFJlY3QgYWJzb2x1dGVBbmNob3JSZWN0KGJvb2wqIGluc2lk
ZUZpeGVkID0gbnVsbHB0cikgY29uc3Q7CiAKKyAgICAvLyBhYnNvbHV0ZUFuY2hvclJlY3RXaXRo
U2Nyb2xsTWFyZ2luKCkgaXMgc2ltaWxhciB0byBhYnNvbHV0ZUFuY2hvclJlY3QsIGJ1dCBpdCBh
bHNvIHRha2VzIGludG8gYWNjb3VudCBhbnkKKyAgICAvLyBDU1Mgc2Nyb2xsLW1hcmdpbiB0aGF0
IGlzIHNldCBpbiB0aGUgc3R5bGUgb2YgdGhpcyBSZW5kZXJFbGVtZW50LgorICAgIHZpcnR1YWwg
TGF5b3V0UmVjdCBhYnNvbHV0ZUFuY2hvclJlY3RXaXRoU2Nyb2xsTWFyZ2luKGJvb2wqIGluc2lk
ZUZpeGVkID0gbnVsbHB0cikgY29uc3Q7CisKICAgICBib29sIGhhc0ZpbHRlcigpIGNvbnN0IHsg
cmV0dXJuIHN0eWxlKCkuaGFzRmlsdGVyKCk7IH0KICAgICBib29sIGhhc0JhY2tkcm9wRmlsdGVy
KCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdC5jcHAKaW5kZXggZjlmNDE5ZjZlOTEzNjk2MzAxMjQ0MDRhNGYzYzIy
ODg2NDY5NTBiNi4uZmM2ZDhmMzM4ZmNhNzM3YjUxOWUzZWRhMmEwYjk3YTM4MmUzNmRjOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0
LmNwcApAQCAtMTg1LDcgKzE4NSwxMiBAQCB2b2lkIFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OnN0
eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdAogICAgICAg
ICAgICAgZnJhbWVWaWV3LnVwZGF0ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yU2Nyb2xsU25hcFByb3Bl
cnRpZXMoKTsKICAgICAgICAgfQogICAgIH0KLSAgICBpZiAob2xkU3R5bGUgJiYgb2xkU3R5bGUt
PnNjcm9sbFNuYXBBcmVhKCkgIT0gbmV3U3R5bGUuc2Nyb2xsU25hcEFyZWEoKSkgeworCisgICAg
Ym9vbCBzY3JvbGxNYXJnaW5DaGFuZ2VkID0KKyAgICAgICAgb2xkU3R5bGUgJiYgb2xkU3R5bGUt
PnNjcm9sbE1hcmdpbigpICE9IG5ld1N0eWxlLnNjcm9sbE1hcmdpbigpOworICAgIGJvb2wgc2Ny
b2xsQWxpZ25DaGFuZ2VkID0KKyAgICAgICAgb2xkU3R5bGUgJiYgb2xkU3R5bGUtPnNjcm9sbFNu
YXBBbGlnbigpICE9IG5ld1N0eWxlLnNjcm9sbFNuYXBBbGlnbigpOworICAgIGlmIChzY3JvbGxN
YXJnaW5DaGFuZ2VkIHx8IHNjcm9sbEFsaWduQ2hhbmdlZCkgewogICAgICAgICBhdXRvKiBzY3Jv
bGxTbmFwQm94ID0gZW5jbG9zaW5nU2Nyb2xsYWJsZUNvbnRhaW5lckZvclNuYXBwaW5nKCk7CiAg
ICAgICAgIGlmIChzY3JvbGxTbmFwQm94ICYmIHNjcm9sbFNuYXBCb3gtPmxheWVyKCkpIHsKICAg
ICAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IHNjcm9sbFNuYXBCb3gtPnN0eWxl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApp
bmRleCAzNjA5OTc3NmRlNTcxOTUzNGE3ZTY5NGZjOGM0N2IwNTI0NDMzZGQzLi4zMTMwZjE4MTkz
YmJkMmViZDdiMDRjYjM3NTk1YzMyYmNlNGZmNTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTIzOTIsNiArMjM5Miw1MSBAQCB2b2lk
IFJlbmRlclN0eWxlOjpzZXROb25Jbmhlcml0ZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IEF0
b21TdHJpbmcmIG5hbWUsIFJlZgogICAgIG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCku
Y3VzdG9tUHJvcGVydGllcy5hY2Nlc3MoKS5zZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIFdU
Rk1vdmUodmFsdWUpKTsKIH0KIAorY29uc3QgTGVuZ3RoQm94JiBSZW5kZXJTdHlsZTo6c2Nyb2xs
TWFyZ2luKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+c2Ny
b2xsTWFyZ2luOworfQorCitjb25zdCBMZW5ndGgmIFJlbmRlclN0eWxlOjpzY3JvbGxNYXJnaW5U
b3AoKSBjb25zdAoreworICAgIHJldHVybiBzY3JvbGxNYXJnaW4oKS50b3AoKTsKK30KKworY29u
c3QgTGVuZ3RoJiBSZW5kZXJTdHlsZTo6c2Nyb2xsTWFyZ2luQm90dG9tKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gc2Nyb2xsTWFyZ2luKCkuYm90dG9tKCk7Cit9CisKK2NvbnN0IExlbmd0aCYgUmVu
ZGVyU3R5bGU6OnNjcm9sbE1hcmdpbkxlZnQoKSBjb25zdAoreworICAgIHJldHVybiBzY3JvbGxN
YXJnaW4oKS5sZWZ0KCk7Cit9CisKK2NvbnN0IExlbmd0aCYgUmVuZGVyU3R5bGU6OnNjcm9sbE1h
cmdpblJpZ2h0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gc2Nyb2xsTWFyZ2luKCkucmlnaHQoKTsK
K30KKwordm9pZCBSZW5kZXJTdHlsZTo6c2V0U2Nyb2xsTWFyZ2luVG9wKExlbmd0aCYmIGxlbmd0
aCkKK3sKKyAgICBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHNjcm9sbE1hcmdpbi50
b3AoKSwgV1RGTW92ZShsZW5ndGgpKTsKK30KKwordm9pZCBSZW5kZXJTdHlsZTo6c2V0U2Nyb2xs
TWFyZ2luQm90dG9tKExlbmd0aCYmIGxlbmd0aCkKK3sKKyAgICBTRVRfVkFSKG1fcmFyZU5vbklu
aGVyaXRlZERhdGEsIHNjcm9sbE1hcmdpbi5ib3R0b20oKSwgV1RGTW92ZShsZW5ndGgpKTsKK30K
Kwordm9pZCBSZW5kZXJTdHlsZTo6c2V0U2Nyb2xsTWFyZ2luTGVmdChMZW5ndGgmJiBsZW5ndGgp
Cit7CisgICAgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBzY3JvbGxNYXJnaW4ubGVm
dCgpLCBXVEZNb3ZlKGxlbmd0aCkpOworfQorCit2b2lkIFJlbmRlclN0eWxlOjpzZXRTY3JvbGxN
YXJnaW5SaWdodChMZW5ndGgmJiBsZW5ndGgpCit7CisgICAgU0VUX1ZBUihtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLCBzY3JvbGxNYXJnaW4ucmlnaHQoKSwgV1RGTW92ZShsZW5ndGgpKTsKK30KKwog
I2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAKIFNjcm9sbFNuYXBUeXBlIFJlbmRlclN0eWxl
Ojppbml0aWFsU2Nyb2xsU25hcFR5cGUoKQpAQCAtMjQwNCwxMSArMjQ0OSw2IEBAIFNjcm9sbFNu
YXBBbGlnbiBSZW5kZXJTdHlsZTo6aW5pdGlhbFNjcm9sbFNuYXBBbGlnbigpCiAgICAgcmV0dXJu
IHsgfTsKIH0KIAotY29uc3QgU3R5bGVTY3JvbGxTbmFwQXJlYSYgUmVuZGVyU3R5bGU6OnNjcm9s
bFNuYXBBcmVhKCkgY29uc3QKLXsKLSAgICByZXR1cm4gKm1fcmFyZU5vbkluaGVyaXRlZERhdGEt
PnNjcm9sbFNuYXBBcmVhOwotfQotCiBjb25zdCBTdHlsZVNjcm9sbFNuYXBQb3J0JiBSZW5kZXJT
dHlsZTo6c2Nyb2xsU25hcFBvcnQoKSBjb25zdAogewogICAgIHJldHVybiAqbV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+c2Nyb2xsU25hcFBvcnQ7CkBAIC0yNDQ2LDMyICsyNDg2LDcgQEAgY29uc3Qg
TGVuZ3RoJiBSZW5kZXJTdHlsZTo6c2Nyb2xsUGFkZGluZ1JpZ2h0KCkgY29uc3QKIAogY29uc3Qg
U2Nyb2xsU25hcEFsaWduJiBSZW5kZXJTdHlsZTo6c2Nyb2xsU25hcEFsaWduKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+c2Nyb2xsU25hcEFyZWEtPmFsaWdu
bWVudDsKLX0KLQotY29uc3QgTGVuZ3RoQm94JiBSZW5kZXJTdHlsZTo6c2Nyb2xsTWFyZ2luKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+c2Nyb2xsU25hcEFy
ZWEtPnNjcm9sbE1hcmdpbjsKLX0KLQotY29uc3QgTGVuZ3RoJiBSZW5kZXJTdHlsZTo6c2Nyb2xs
TWFyZ2luVG9wKCkgY29uc3QKLXsKLSAgICByZXR1cm4gc2Nyb2xsTWFyZ2luKCkudG9wKCk7Ci19
Ci0KLWNvbnN0IExlbmd0aCYgUmVuZGVyU3R5bGU6OnNjcm9sbE1hcmdpbkJvdHRvbSgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIHNjcm9sbE1hcmdpbigpLmJvdHRvbSgpOwotfQotCi1jb25zdCBMZW5n
dGgmIFJlbmRlclN0eWxlOjpzY3JvbGxNYXJnaW5MZWZ0KCkgY29uc3QKLXsKLSAgICByZXR1cm4g
c2Nyb2xsTWFyZ2luKCkubGVmdCgpOwotfQotCi1jb25zdCBMZW5ndGgmIFJlbmRlclN0eWxlOjpz
Y3JvbGxNYXJnaW5SaWdodCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHNjcm9sbE1hcmdpbigpLnJp
Z2h0KCk7CisgICAgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnNjcm9sbFNuYXBBbGln
bjsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6c2V0U2Nyb2xsU25hcFR5cGUoY29uc3QgU2Nyb2xs
U25hcFR5cGUmIHR5cGUpCkBAIC0yNTAxLDI5ICsyNTE2LDE0IEBAIHZvaWQgUmVuZGVyU3R5bGU6
OnNldFNjcm9sbFBhZGRpbmdSaWdodChMZW5ndGgmJiBsZW5ndGgpCiAKIHZvaWQgUmVuZGVyU3R5
bGU6OnNldFNjcm9sbFNuYXBBbGlnbihjb25zdCBTY3JvbGxTbmFwQWxpZ24mIGFsaWdubWVudCkK
IHsKLSAgICBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBzY3JvbGxTbmFw
QXJlYSwgYWxpZ25tZW50LCBhbGlnbm1lbnQpOwotfQotCi12b2lkIFJlbmRlclN0eWxlOjpzZXRT
Y3JvbGxNYXJnaW5Ub3AoTGVuZ3RoJiYgbGVuZ3RoKQotewotICAgIFNFVF9ORVNURURfVkFSKG1f
cmFyZU5vbkluaGVyaXRlZERhdGEsIHNjcm9sbFNuYXBBcmVhLCBzY3JvbGxNYXJnaW4udG9wKCks
IFdURk1vdmUobGVuZ3RoKSk7CisgICAgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBz
Y3JvbGxTbmFwQWxpZ24sIGFsaWdubWVudCk7CiB9CiAKLXZvaWQgUmVuZGVyU3R5bGU6OnNldFNj
cm9sbE1hcmdpbkJvdHRvbShMZW5ndGgmJiBsZW5ndGgpCi17Ci0gICAgU0VUX05FU1RFRF9WQVIo
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgc2Nyb2xsU25hcEFyZWEsIHNjcm9sbE1hcmdpbi5ib3R0
b20oKSwgV1RGTW92ZShsZW5ndGgpKTsKLX0KLQotdm9pZCBSZW5kZXJTdHlsZTo6c2V0U2Nyb2xs
TWFyZ2luTGVmdChMZW5ndGgmJiBsZW5ndGgpCitib29sIFJlbmRlclN0eWxlOjpoYXNTbmFwUG9z
aXRpb24oKSBjb25zdAogewotICAgIFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERh
dGEsIHNjcm9sbFNuYXBBcmVhLCBzY3JvbGxNYXJnaW4ubGVmdCgpLCBXVEZNb3ZlKGxlbmd0aCkp
OworICAgIGNvbnN0IFNjcm9sbFNuYXBBbGlnbiYgYWxpZ25tZW50ID0gdGhpcy0+c2Nyb2xsU25h
cEFsaWduKCk7CisgICAgcmV0dXJuIGFsaWdubWVudC54ICE9IFNjcm9sbFNuYXBBeGlzQWxpZ25U
eXBlOjpOb25lIHx8IGFsaWdubWVudC55ICE9IFNjcm9sbFNuYXBBeGlzQWxpZ25UeXBlOjpOb25l
OwogfQotCi12b2lkIFJlbmRlclN0eWxlOjpzZXRTY3JvbGxNYXJnaW5SaWdodChMZW5ndGgmJiBs
ZW5ndGgpCi17Ci0gICAgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgc2Ny
b2xsU25hcEFyZWEsIHNjcm9sbE1hcmdpbi5yaWdodCgpLCBXVEZNb3ZlKGxlbmd0aCkpOwotfQot
CiAjZW5kaWYKIAogYm9vbCBSZW5kZXJTdHlsZTo6aGFzUmVmZXJlbmNlRmlsdGVyT25seSgpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4
IDRhMjc1YmIxMGIzZWUyNGIwYTM2YjU5MTI1MTVlMTFhODkwYmQ5M2EuLjhiYTc0ZjA0NDJkZTBj
NDFiODgxNjJkM2M2ODBkZjljOGIzMmFlZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC03MTksNyArNzE5LDE1IEBAIHB1YmxpYzoKICAgICBP
cHRpb25TZXQ8VG91Y2hBY3Rpb24+IGVmZmVjdGl2ZVRvdWNoQWN0aW9ucygpIGNvbnN0IHsgcmV0
dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPmVmZmVjdGl2ZVRvdWNoQWN0aW9uczsgfQogICAgIE9w
dGlvblNldDxFdmVudExpc3RlbmVyUmVnaW9uVHlwZT4gZXZlbnRMaXN0ZW5lclJlZ2lvblR5cGVz
KCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+ZXZlbnRMaXN0ZW5lclJlZ2lv
blR5cGVzOyB9CiAKKyAgICBjb25zdCBMZW5ndGhCb3gmIHNjcm9sbE1hcmdpbigpIGNvbnN0Owor
ICAgIGNvbnN0IExlbmd0aCYgc2Nyb2xsTWFyZ2luVG9wKCkgY29uc3Q7CisgICAgY29uc3QgTGVu
Z3RoJiBzY3JvbGxNYXJnaW5Cb3R0b20oKSBjb25zdDsKKyAgICBjb25zdCBMZW5ndGgmIHNjcm9s
bE1hcmdpbkxlZnQoKSBjb25zdDsKKyAgICBjb25zdCBMZW5ndGgmIHNjcm9sbE1hcmdpblJpZ2h0
KCkgY29uc3Q7CisKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQorICAgIGJvb2wgaGFzU25h
cFBvc2l0aW9uKCkgY29uc3Q7CisKICAgICAvLyBTY3JvbGwgc25hcCBwb3J0IHN0eWxlLgogICAg
IGNvbnN0IFN0eWxlU2Nyb2xsU25hcFBvcnQmIHNjcm9sbFNuYXBQb3J0KCkgY29uc3Q7CiAgICAg
Y29uc3QgU2Nyb2xsU25hcFR5cGUmIHNjcm9sbFNuYXBUeXBlKCkgY29uc3Q7CkBAIC03MjksMTQg
KzczNyw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBMZW5ndGgmIHNjcm9sbFBhZGRpbmdMZWZ0KCkg
Y29uc3Q7CiAgICAgY29uc3QgTGVuZ3RoJiBzY3JvbGxQYWRkaW5nUmlnaHQoKSBjb25zdDsKIAot
ICAgIC8vIFNjcm9sbCBzbmFwIGFyZWEgc3R5bGUuCi0gICAgY29uc3QgU3R5bGVTY3JvbGxTbmFw
QXJlYSYgc2Nyb2xsU25hcEFyZWEoKSBjb25zdDsKICAgICBjb25zdCBTY3JvbGxTbmFwQWxpZ24m
IHNjcm9sbFNuYXBBbGlnbigpIGNvbnN0OwotICAgIGNvbnN0IExlbmd0aEJveCYgc2Nyb2xsTWFy
Z2luKCkgY29uc3Q7Ci0gICAgY29uc3QgTGVuZ3RoJiBzY3JvbGxNYXJnaW5Ub3AoKSBjb25zdDsK
LSAgICBjb25zdCBMZW5ndGgmIHNjcm9sbE1hcmdpbkJvdHRvbSgpIGNvbnN0OwotICAgIGNvbnN0
IExlbmd0aCYgc2Nyb2xsTWFyZ2luTGVmdCgpIGNvbnN0OwotICAgIGNvbnN0IExlbmd0aCYgc2Ny
b2xsTWFyZ2luUmlnaHQoKSBjb25zdDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5U
UykKQEAgLTEyNjUsNiArMTI2NiwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRFZmZlY3RpdmVU
b3VjaEFjdGlvbnMoT3B0aW9uU2V0PFRvdWNoQWN0aW9uPiB0b3VjaEFjdGlvbnMpIHsgU0VUX1ZB
UihtX3JhcmVJbmhlcml0ZWREYXRhLCBlZmZlY3RpdmVUb3VjaEFjdGlvbnMsIHRvdWNoQWN0aW9u
cyk7IH0KICAgICB2b2lkIHNldEV2ZW50TGlzdGVuZXJSZWdpb25UeXBlcyhPcHRpb25TZXQ8RXZl
bnRMaXN0ZW5lclJlZ2lvblR5cGU+IGV2ZW50TGlzdGVuZXJUeXBlcykgeyBTRVRfVkFSKG1fcmFy
ZUluaGVyaXRlZERhdGEsIGV2ZW50TGlzdGVuZXJSZWdpb25UeXBlcywgZXZlbnRMaXN0ZW5lclR5
cGVzKTsgfQogCisgICAgdm9pZCBzZXRTY3JvbGxNYXJnaW5Ub3AoTGVuZ3RoJiYpOworICAgIHZv
aWQgc2V0U2Nyb2xsTWFyZ2luQm90dG9tKExlbmd0aCYmKTsKKyAgICB2b2lkIHNldFNjcm9sbE1h
cmdpbkxlZnQoTGVuZ3RoJiYpOworICAgIHZvaWQgc2V0U2Nyb2xsTWFyZ2luUmlnaHQoTGVuZ3Ro
JiYpOworCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICB2b2lkIHNldFNjcm9sbFNu
YXBUeXBlKGNvbnN0IFNjcm9sbFNuYXBUeXBlJik7CiAgICAgdm9pZCBzZXRTY3JvbGxQYWRkaW5n
VG9wKExlbmd0aCYmKTsKQEAgLTEyNzMsMTAgKzEyNzksNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRTY3JvbGxQYWRkaW5nUmlnaHQoTGVuZ3RoJiYpOwogCiAgICAgdm9pZCBzZXRTY3JvbGxTbmFw
QWxpZ24oY29uc3QgU2Nyb2xsU25hcEFsaWduJik7Ci0gICAgdm9pZCBzZXRTY3JvbGxNYXJnaW5U
b3AoTGVuZ3RoJiYpOwotICAgIHZvaWQgc2V0U2Nyb2xsTWFyZ2luQm90dG9tKExlbmd0aCYmKTsK
LSAgICB2b2lkIHNldFNjcm9sbE1hcmdpbkxlZnQoTGVuZ3RoJiYpOwotICAgIHZvaWQgc2V0U2Ny
b2xsTWFyZ2luUmlnaHQoTGVuZ3RoJiYpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZF
TlRTKQpAQCAtMTY3NCwxMCArMTY3NiwxMSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgVG91Y2hB
Y3Rpb24gaW5pdGlhbFRvdWNoQWN0aW9ucygpIHsgcmV0dXJuIFRvdWNoQWN0aW9uOjpBdXRvOyB9
CiAKKyAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxTY3JvbGxNYXJnaW4oKSB7IHJldHVybiBMZW5n
dGgoRml4ZWQpOyB9CisKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIHN0YXRpYyBT
Y3JvbGxTbmFwVHlwZSBpbml0aWFsU2Nyb2xsU25hcFR5cGUoKTsKICAgICBzdGF0aWMgU2Nyb2xs
U25hcEFsaWduIGluaXRpYWxTY3JvbGxTbmFwQWxpZ24oKTsKLSAgICBzdGF0aWMgTGVuZ3RoIGlu
aXRpYWxTY3JvbGxNYXJnaW4oKSB7IHJldHVybiBMZW5ndGgoRml4ZWQpOyB9CiAgICAgc3RhdGlj
IExlbmd0aCBpbml0aWFsU2Nyb2xsUGFkZGluZygpIHsgcmV0dXJuIExlbmd0aChGaXhlZCk7IH0K
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAKaW5kZXggNDE5NzRjZTFlMDUxNzMxNzM2
YmM0Zjc4NjI0MzM0ZDY3MWY5MjQzZi4uYTNmNDRjNDkwMWRiMGI4MjYzZjA0MTI2NGVlYTlhYzdk
OGIwYTdiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
UmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcApAQCAtMzEsNyArMzEsNiBAQAogI2lu
Y2x1ZGUgIlN0eWxlVHJhbnNmb3JtRGF0YS5oIgogI2luY2x1ZGUgIlN0eWxlSW1hZ2UuaCIKICNp
bmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCi0jaW5jbHVkZSAiU3R5bGVTY3JvbGxTbmFwUG9pbnRz
LmgiCiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJDb21wYXJpc29uLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KQEAgLTYyLDcgKzYxLDYg
QEAgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSgp
CiAgICAgLCBncmlkSXRlbShTdHlsZUdyaWRJdGVtRGF0YTo6Y3JlYXRlKCkpCiAjaWYgRU5BQkxF
KENTU19TQ1JPTExfU05BUCkKICAgICAsIHNjcm9sbFNuYXBQb3J0KFN0eWxlU2Nyb2xsU25hcFBv
cnQ6OmNyZWF0ZSgpKQotICAgICwgc2Nyb2xsU25hcEFyZWEoU3R5bGVTY3JvbGxTbmFwQXJlYTo6
Y3JlYXRlKCkpCiAjZW5kaWYKICAgICAsIHdpbGxDaGFuZ2UoUmVuZGVyU3R5bGU6OmluaXRpYWxX
aWxsQ2hhbmdlKCkpCiAgICAgLCBtYXNrKEZpbGxMYXllcjo6Y3JlYXRlKEZpbGxMYXllclR5cGU6
Ok1hc2spKQpAQCAtMTM5LDkgKzEzNywxMCBAQCBpbmxpbmUgU3R5bGVSYXJlTm9uSW5oZXJpdGVk
RGF0YTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YShjb25zdCBTdHlsZVJhcmVOb25JbgogI2Vu
ZGlmCiAgICAgLCBncmlkKG8uZ3JpZCkKICAgICAsIGdyaWRJdGVtKG8uZ3JpZEl0ZW0pCisgICAg
LCBzY3JvbGxNYXJnaW4oby5zY3JvbGxNYXJnaW4pCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05B
UCkKICAgICAsIHNjcm9sbFNuYXBQb3J0KG8uc2Nyb2xsU25hcFBvcnQpCi0gICAgLCBzY3JvbGxT
bmFwQXJlYShvLnNjcm9sbFNuYXBBcmVhKQorICAgICwgc2Nyb2xsU25hcEFsaWduKG8uc2Nyb2xs
U25hcEFsaWduKQogI2VuZGlmCiAgICAgLCBjb250ZW50KG8uY29udGVudCA/IG8uY29udGVudC0+
Y2xvbmUoKSA6IG51bGxwdHIpCiAgICAgLCBjb3VudGVyRGlyZWN0aXZlcyhvLmNvdW50ZXJEaXJl
Y3RpdmVzID8gbWFrZVVuaXF1ZTxDb3VudGVyRGlyZWN0aXZlTWFwPigqby5jb3VudGVyRGlyZWN0
aXZlcykgOiBudWxscHRyKQpAQCAtMjQxLDkgKzI0MCwxMCBAQCBib29sIFN0eWxlUmFyZU5vbklu
aGVyaXRlZERhdGE6Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSYg
bykgYwogI2VuZGlmCiAgICAgICAgICYmIGdyaWQgPT0gby5ncmlkCiAgICAgICAgICYmIGdyaWRJ
dGVtID09IG8uZ3JpZEl0ZW0KKyAgICAgICAgJiYgc2Nyb2xsTWFyZ2luID09IG8uc2Nyb2xsTWFy
Z2luCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICAgICAgJiYgc2Nyb2xsU25hcFBv
cnQgPT0gby5zY3JvbGxTbmFwUG9ydAotICAgICAgICAmJiBzY3JvbGxTbmFwQXJlYSA9PSBvLnNj
cm9sbFNuYXBBcmVhCisgICAgICAgICYmIHNjcm9sbFNuYXBBbGlnbiA9PSBvLnNjcm9sbFNuYXBB
bGlnbgogI2VuZGlmCiAgICAgICAgICYmIGNvbnRlbnREYXRhRXF1aXZhbGVudChvKQogICAgICAg
ICAmJiBhcmVQb2ludGluZ1RvRXF1YWxEYXRhKGNvdW50ZXJEaXJlY3RpdmVzLCBvLmNvdW50ZXJE
aXJlY3RpdmVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgKaW5kZXggYTRmOGM0YjBkMmY5MGEwZGI4NmU1
NDg0MzllOGI3ZWE2MWZmMmRlYi4uMzBlYjY3NzA1N2M5ZjAxYmJiNTQxYjA5MDg3OWI4M2VhZDkw
Mjk5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFy
ZU5vbkluaGVyaXRlZERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCkBAIC00NSw2ICs0NSwxMCBAQAogI2luY2x1ZGUg
PHd0Zi9PcHRpb25TZXQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKKyNpZiBFTkFCTEUo
Q1NTX1NDUk9MTF9TTkFQKQorI2luY2x1ZGUgIlN0eWxlU2Nyb2xsU25hcFBvaW50cy5oIgorI2Vu
ZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQW5pbWF0aW9uTGlzdDsKQEAgLTYw
LDggKzY0LDYgQEAgY2xhc3MgU3R5bGVNYXJxdWVlRGF0YTsKIGNsYXNzIFN0eWxlTXVsdGlDb2xE
YXRhOwogY2xhc3MgU3R5bGVSZWZsZWN0aW9uOwogY2xhc3MgU3R5bGVSZXNvbHZlcjsKLWNsYXNz
IFN0eWxlU2Nyb2xsU25hcEFyZWE7Ci1jbGFzcyBTdHlsZVNjcm9sbFNuYXBQb3J0OwogY2xhc3Mg
U3R5bGVUcmFuc2Zvcm1EYXRhOwogCiBzdHJ1Y3QgTGVuZ3RoU2l6ZTsKQEAgLTEyOSw5ICsxMzEs
MTAgQEAgcHVibGljOgogICAgIERhdGFSZWY8U3R5bGVHcmlkRGF0YT4gZ3JpZDsKICAgICBEYXRh
UmVmPFN0eWxlR3JpZEl0ZW1EYXRhPiBncmlkSXRlbTsKIAorICAgIExlbmd0aEJveCBzY3JvbGxN
YXJnaW4geyAwLCAwLCAwLCAwIH07CiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICBE
YXRhUmVmPFN0eWxlU2Nyb2xsU25hcFBvcnQ+IHNjcm9sbFNuYXBQb3J0OwotICAgIERhdGFSZWY8
U3R5bGVTY3JvbGxTbmFwQXJlYT4gc2Nyb2xsU25hcEFyZWE7CisgICAgU2Nyb2xsU25hcEFsaWdu
IHNjcm9sbFNuYXBBbGlnbjsKICNlbmRpZgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRE
YXRhPiBjb250ZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlU2Nyb2xsU25hcFBvaW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVTY3JvbGxTbmFwUG9pbnRzLmNwcAppbmRleCA5ZTZhOTFmMDA0MDg3MGE3ZmZiNzdh
MzQ5NzNhZTNjMDlmNmZjY2ZhLi5iNmEyMjZiNTE4NmZhZDlkMmUzZjdmYTk0NzY0NDkwNzk3ZmNk
MmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTY3Jv
bGxTbmFwUG9pbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVTY3JvbGxTbmFwUG9pbnRzLmNwcApAQCAtNDYsMjMgKzQ2LDYgQEAgaW5saW5lIFN0eWxlU2Ny
b2xsU25hcFBvcnQ6OlN0eWxlU2Nyb2xsU25hcFBvcnQoY29uc3QgU3R5bGVTY3JvbGxTbmFwUG9y
dCYgb3RoZXIKIHsKIH0KIAotUmVmPFN0eWxlU2Nyb2xsU25hcEFyZWE+IFN0eWxlU2Nyb2xsU25h
cEFyZWE6OmNvcHkoKSBjb25zdAotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlU2Ny
b2xsU25hcEFyZWEoKnRoaXMpKTsKLX0KLQotU3R5bGVTY3JvbGxTbmFwQXJlYTo6U3R5bGVTY3Jv
bGxTbmFwQXJlYSgpCi0gICAgOiBzY3JvbGxNYXJnaW4oMCwgMCwgMCwgMCkKLXsKLX0KLQotaW5s
aW5lIFN0eWxlU2Nyb2xsU25hcEFyZWE6OlN0eWxlU2Nyb2xsU25hcEFyZWEoY29uc3QgU3R5bGVT
Y3JvbGxTbmFwQXJlYSYgb3RoZXIpCi0gICAgOiBSZWZDb3VudGVkKCkKLSAgICAsIGFsaWdubWVu
dChvdGhlci5hbGlnbm1lbnQpCi0gICAgLCBzY3JvbGxNYXJnaW4ob3RoZXIuc2Nyb2xsTWFyZ2lu
KQotewotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvKiBFTkFCTEUoQ1NT
X1NDUk9MTF9TTkFQKSAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlU2Nyb2xsU25hcFBvaW50cy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlU2Nyb2xsU25hcFBvaW50cy5oCmluZGV4IDBiYzljYmMwYmY2NWE3NDYzZGQ1YzAw
MTdiZDk5NDU3Nzc1MWJkYjQuLmYxOTQ0ZTAzNWEyOTVmNTAyZTBhYjdjYWMyMjE1Njc5ZDQ2NGJj
MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVNjcm9s
bFNuYXBQb2ludHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVT
Y3JvbGxTbmFwUG9pbnRzLmgKQEAgLTc5LDI3ICs3OSw2IEBAIGlubGluZSBib29sIG9wZXJhdG9y
PT0oY29uc3QgU2Nyb2xsU25hcEFsaWduJiBhLCBjb25zdCBTY3JvbGxTbmFwQWxpZ24mIGIpCiAK
IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgU2Nyb2xsU25hcEFsaWduJiBhLCBjb25zdCBT
Y3JvbGxTbmFwQWxpZ24mIGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQogCi1jbGFzcyBTdHlsZVNj
cm9sbFNuYXBBcmVhIDogcHVibGljIFJlZkNvdW50ZWQ8U3R5bGVTY3JvbGxTbmFwQXJlYT4gewot
cHVibGljOgotICAgIHN0YXRpYyBSZWY8U3R5bGVTY3JvbGxTbmFwQXJlYT4gY3JlYXRlKCkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVNjcm9sbFNuYXBBcmVhKTsgfQotICAgIFJlZjxTdHls
ZVNjcm9sbFNuYXBBcmVhPiBjb3B5KCkgY29uc3Q7Ci0gICAgYm9vbCBoYXNTbmFwUG9zaXRpb24o
KSBjb25zdCB7IHJldHVybiBhbGlnbm1lbnQueCAhPSBTY3JvbGxTbmFwQXhpc0FsaWduVHlwZTo6
Tm9uZSB8fCBhbGlnbm1lbnQueSAhPSBTY3JvbGxTbmFwQXhpc0FsaWduVHlwZTo6Tm9uZTsgfQot
Ci0gICAgU2Nyb2xsU25hcEFsaWduIGFsaWdubWVudDsKLSAgICBMZW5ndGhCb3ggc2Nyb2xsTWFy
Z2luIHsgMCwgMCwgMCwgMCB9OwotCi1wcml2YXRlOgotICAgIFN0eWxlU2Nyb2xsU25hcEFyZWEo
KTsKLSAgICBTdHlsZVNjcm9sbFNuYXBBcmVhKGNvbnN0IFN0eWxlU2Nyb2xsU25hcEFyZWEmKTsK
LX07Ci0KLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVTY3JvbGxTbmFwQXJlYSYg
YSwgY29uc3QgU3R5bGVTY3JvbGxTbmFwQXJlYSYgYikKLXsKLSAgICByZXR1cm4gYS5hbGlnbm1l
bnQgPT0gYi5hbGlnbm1lbnQgJiYgYS5zY3JvbGxNYXJnaW4gPT0gYi5zY3JvbGxNYXJnaW47Ci19
Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVTY3JvbGxTbmFwQXJlYSYgYSwg
Y29uc3QgU3R5bGVTY3JvbGxTbmFwQXJlYSYgYikgeyByZXR1cm4gIShhID09IGIpOyB9Ci0KIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShDU1NfU0NST0xMX1NOQVAp
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggYTAxNDg2ZjlmNmRiZDBkYjUwMDA5YWZiOTY0MTRjNDhkMGQ1ZjYyYi4uZDk5ZTdk
NThhYzI1ZjgxOGIxZjdiOWUxNDQzYzQ4ZDAzZWRkZGQzNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDIwLTEwLTI4ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKwor
ICAgICAgICBNYWtlIHNjcm9sbC1tYXJnaW4gaW5kZXBlbmRlbnQgb2Ygc2Nyb2xsIHNuYXBwaW5n
IGFuZCBoYXZlIGl0IGFwcGx5IHdoZW4gc2Nyb2xsaW5nIHRvIGFuY2hvcnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODA3NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6IFVw
ZGF0ZWQgZXhwZWN0YXRpb25zIGZvciBuZXdseSBwYXNzaW5nIHRlc3RzIGFuZCBtYXJrZWQgc29t
ZSB0ZXN0cworICAgICAgICBhcyBmbGFreS4KKwogMjAyMC0xMC0yNyAgWmFsYW4gQnVqdGFzICA8
emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB1bm5lZWRlZCB3aGl0ZXNwYWNlIGJl
dHdlZW4gY29udGVudCBhbmQgPGJyPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXgg
ZWJlZTg2YWM0OTk4YWM1MDZkMTIwYTRiNDM3NGJiNDIwZGI3N2I1Mi4uNmYwYjhhY2U3ZmFjYzJm
NjhlMzgwNmM4YmY1MjhhYjFlNjQzMDNiZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMTAtMjkgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNv
bkBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2Ugc2Nyb2xsLW1hcmdpbiBpbmRlcGVuZGVudCBv
ZiBzY3JvbGwgc25hcHBpbmcgYW5kIGhhdmUgaXQgYXBwbHkgd2hlbiBzY3JvbGxpbmcgdG8gYW5j
aG9ycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4
MDc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgICogd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3NvbS12aWV3L3Njcm9sbEludG9WaWV3LXNjcm9sbE1hcmdp
bi1leHBlY3RlZC50eHQ6IFVwZGF0ZWQgZXhwZWN0YXRpb24gdG8gbm90ZSBuZXcgcGFzcy4KKwog
MjAyMC0xMC0yNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEF1
ZGlvQnVmZmVyLmdldENoYW5uZWxEYXRhKHgpIHNob3VsZCBrZWVwIHJldHVybmluZyB0aGUgc2Ft
ZSBKUyB3cmFwcGVyIGZvciBhIGdpdmVuIGNoYW5uZWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGNh
ZGJkOGFkNWMyMTczNzhjMDRkNWJhNzczM2Y3MDAxOGI0YTM3NDIuLmRiODM3NzQxMDc5OGQ5MDNh
NDQyNzI1OTZhZTFjNDIyZDllZTYxMzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBl
Y3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNDUwMywxMCAr
NDUwMyw4IEBAIHdlYmtpdC5vcmcvYi8yMTU1MzEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLWJhY2tncm91bmRzL2JhY2tncm91CiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3Mtc2Nyb2xsLXNuYXAvc2Nyb2xsLXRhcmdldC1hbGlnbi0wMDEuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLXNjcm9sbC1zbmFwL3Njcm9sbC10YXJnZXQtYWxpZ24tMDAyLmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3Jv
bGwtc25hcC9zY3JvbGwtdGFyZ2V0LWFsaWduLTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Ci1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mtc2Nyb2xsLXNuYXAvc2Ny
b2xsLXRhcmdldC1tYXJnaW4tMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLWltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9zY3JvbGwtdGFyZ2V0
LW1hcmdpbi0wMDIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXNjcm9sbC1zbmFwL3Njcm9sbC10YXJnZXQtbWFyZ2luLTAw
My5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3Mtc2Nyb2xsLXNuYXAvc2Nyb2xsLXRhcmdldC1tYXJnaW4tMDA0Lmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMTgzMjUgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXNjcm9sbC1zbmFwL3Njcm9sbC10YXJnZXQtbWFyZ2luLTAw
MS5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMTgzMjUgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXNjcm9sbC1zbmFwL3Njcm9sbC10
YXJnZXQtbWFyZ2luLTAwMy5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9zY3JvbGwtdGFyZ2V0
LXBhZGRpbmctMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9zY3JvbGwtdGFyZ2V0LXBhZGRpbmct
MDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9zY3JvbGwtdGFyZ2V0LXBhZGRpbmctMDAzLmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzc29tLXZpZXcvc2Nyb2xsSW50b1ZpZXctc2Nyb2xs
TWFyZ2luLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzc29tLXZpZXcvc2Nyb2xsSW50b1ZpZXctc2Nyb2xsTWFyZ2luLWV4cGVj
dGVkLnR4dAppbmRleCA3ODc5MzZkNjc2MWEwNDVkZjAxYTNhYzA3ZmY1ZDVjYmI1MzgyMTdkLi5i
MjBjNWY1ZmIzNmIzNzQwNjgxM2U4YWVkMzBkOWU5MzI1ZjZkNmMzIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3NvbS12aWV3L3Nj
cm9sbEludG9WaWV3LXNjcm9sbE1hcmdpbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nzb20tdmlldy9zY3JvbGxJbnRv
Vmlldy1zY3JvbGxNYXJnaW4tZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsNSBAQAogCi1GQUlMIHNj
cm9sbEludG9WaWV3KHtibG9jazogImNlbnRlciIsIGlubGluZTogImNlbnRlciJ9KSBhc3NlcnRf
YXBwcm94X2VxdWFsczogc2Nyb2xsWCBleHBlY3RlZCAxNTMuNSArLy0gMC41IGJ1dCBnb3QgMTU4
Ci1GQUlMIHNjcm9sbEludG9WaWV3KHtibG9jazogInN0YXJ0IiwgaW5saW5lOiAic3RhcnQifSkg
YXNzZXJ0X2FwcHJveF9lcXVhbHM6IHNjcm9sbFggZXhwZWN0ZWQgMTg0ICsvLSAwLjUgYnV0IGdv
dCAyMDAKLUZBSUwgc2Nyb2xsSW50b1ZpZXcoe2Jsb2NrOiAiZW5kIiwgaW5saW5lOiAiZW5kIn0p
IGFzc2VydF9hcHByb3hfZXF1YWxzOiBzY3JvbGxYIGV4cGVjdGVkIDEyMyArLy0gMC41IGJ1dCBn
b3QgMTE1CitQQVNTIHNjcm9sbEludG9WaWV3KHtibG9jazogImNlbnRlciIsIGlubGluZTogImNl
bnRlciJ9KQorUEFTUyBzY3JvbGxJbnRvVmlldyh7YmxvY2s6ICJzdGFydCIsIGlubGluZTogInN0
YXJ0In0pCitQQVNTIHNjcm9sbEludG9WaWV3KHtibG9jazogImVuZCIsIGlubGluZTogImVuZCJ9
KQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>