<?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>195256</bug_id>
          
          <creation_ts>2019-03-03 08:58:03 -0800</creation_ts>
          <short_desc>[ContentChangeObserver] Content observation should be limited to the current document.</short_desc>
          <delta_ts>2019-03-03 22:05:52 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1511941</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-03-03 08:58:03 -0800</bug_when>
    <thetext>as opposed to observing all the frames on the page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511942</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-03-03 08:58:44 -0800</bug_when>
    <thetext>&lt;rdar://problem/48544402&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511947</commentid>
    <comment_count>2</comment_count>
      <attachid>363459</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-03-03 09:56:36 -0800</bug_when>
    <thetext>Created attachment 363459
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511976</commentid>
    <comment_count>3</comment_count>
      <attachid>363459</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-03-03 12:36:29 -0800</bug_when>
    <thetext>Comment on attachment 363459
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        It limits content observation to the target node&apos;s owner document.

To other reviewers: I am not for or against this patch.

Why do we want to do make content change observers document-specific? Interactions with an element can do anything including causing a content change in a subframe (same-origin iframe is easy, cross-origin is still possible via postMessage()). We know Microsoft Word online does the crazy with a subframe that effectively follows the cursor. So there is craziness on the web. Like you needed proof, right :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511983</commentid>
    <comment_count>4</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-03-03 13:19:11 -0800</bug_when>
    <thetext>(In reply to Daniel Bates from comment #3)
&gt; Comment on attachment 363459 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=363459&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        It limits content observation to the target node&apos;s owner document.
&gt; 
&gt; To other reviewers: I am not for or against this patch.
&gt; 
&gt; Why do we want to do make content change observers document-specific?
&gt; Interactions with an element can do anything including causing a content
&gt; change in a subframe (same-origin iframe is easy, cross-origin is still
&gt; possible via postMessage()). We know Microsoft Word online does the crazy
&gt; with a subframe that effectively follows the cursor. So there is craziness
&gt; on the web. Like you needed proof, right :)
:) yeah, that is very true. Do you think if that Microsoft Word use case is a &quot;menu hovering&quot;-like case that we try to cover here? I still yet to see a page where the hover triggers a &quot;bring this menu-pane up in a different frame&quot; type of content change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511996</commentid>
    <comment_count>5</comment_count>
      <attachid>363459</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-03-03 14:44:06 -0800</bug_when>
    <thetext>Comment on attachment 363459
Patch

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

&gt;&gt;&gt; Source/WebCore/ChangeLog:8
&gt;&gt;&gt; +        It limits content observation to the target node&apos;s owner document.
&gt;&gt; 
&gt;&gt; To other reviewers: I am not for or against this patch.
&gt;&gt; 
&gt;&gt; Why do we want to do make content change observers document-specific? Interactions with an element can do anything including causing a content change in a subframe (same-origin iframe is easy, cross-origin is still possible via postMessage()). We know Microsoft Word online does the crazy with a subframe that effectively follows the cursor. So there is craziness on the web. Like you needed proof, right :)
&gt; 
&gt; :) yeah, that is very true. Do you think if that Microsoft Word use case is a &quot;menu hovering&quot;-like case that we try to cover here? I still yet to see a page where the hover triggers a &quot;bring this menu-pane up in a different frame&quot; type of content change.

I don’t know. I could swear that I recall that Microsoft Word has their own callout bar that they show when you tap or tap and hold, but whether that is in a subframe or would be affected by this patch is something I don’t know off the top of my head. There was a time, a long time ago when everyone was using a a frameset and it was absolutely common to click something and for another frame to change. We flatten frames on iOS, for now, but just pointing it out that it was common for different frames to change. Unless you inspect source it will be hard to tell what technique a site is using. Could use the prostenmez :) approach and just “do it” and see what breaks. I personally prefer to the Feynman algorithm though I’ve been known to gamble with “see what breaks” when I like the odds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511997</commentid>
    <comment_count>6</comment_count>
      <attachid>363459</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-03-03 14:54:39 -0800</bug_when>
    <thetext>Comment on attachment 363459
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/ChangeLog:8
&gt;&gt;&gt;&gt; +        It limits content observation to the target node&apos;s owner document.
&gt;&gt;&gt; 
&gt;&gt;&gt; To other reviewers: I am not for or against this patch.
&gt;&gt;&gt; 
&gt;&gt;&gt; Why do we want to do make content change observers document-specific? Interactions with an element can do anything including causing a content change in a subframe (same-origin iframe is easy, cross-origin is still possible via postMessage()). We know Microsoft Word online does the crazy with a subframe that effectively follows the cursor. So there is craziness on the web. Like you needed proof, right :)
&gt;&gt; 
&gt;&gt; :) yeah, that is very true. Do you think if that Microsoft Word use case is a &quot;menu hovering&quot;-like case that we try to cover here? I still yet to see a page where the hover triggers a &quot;bring this menu-pane up in a different frame&quot; type of content change.
&gt; 
&gt; I don’t know. I could swear that I recall that Microsoft Word has their own callout bar that they show when you tap or tap and hold, but whether that is in a subframe or would be affected by this patch is something I don’t know off the top of my head. There was a time, a long time ago when everyone was using a a frameset and it was absolutely common to click something and for another frame to change. We flatten frames on iOS, for now, but just pointing it out that it was common for different frames to change. Unless you inspect source it will be hard to tell what technique a site is using. Could use the prostenmez :) approach and just “do it” and see what breaks. I personally prefer to the Feynman algorithm though I’ve been known to gamble with “see what breaks” when I like the odds.

I&apos;m not sure if I&apos;d call it a &quot;callout bar&quot;, but it is true that Word shows a contextual menu upon tap/long press; this contextual menu is contained in the same subframe as the one that contains the actual selection (&quot;sdx_ow_iframe&quot;).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512008</commentid>
    <comment_count>7</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-03-03 18:40:09 -0800</bug_when>
    <thetext>(In reply to Daniel Bates from comment #5)
&gt; Comment on attachment 363459 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=363459&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/ChangeLog:8
&gt; &gt;&gt;&gt; +        It limits content observation to the target node&apos;s owner document.
&gt; &gt;&gt; 
&gt; &gt;&gt; To other reviewers: I am not for or against this patch.
&gt; &gt;&gt; 
&gt; &gt;&gt; Why do we want to do make content change observers document-specific? Interactions with an element can do anything including causing a content change in a subframe (same-origin iframe is easy, cross-origin is still possible via postMessage()). We know Microsoft Word online does the crazy with a subframe that effectively follows the cursor. So there is craziness on the web. Like you needed proof, right :)
&gt; &gt; 
&gt; &gt; :) yeah, that is very true. Do you think if that Microsoft Word use case is a &quot;menu hovering&quot;-like case that we try to cover here? I still yet to see a page where the hover triggers a &quot;bring this menu-pane up in a different frame&quot; type of content change.
&gt; 
&gt; I don’t know. I could swear that I recall that Microsoft Word has their own
&gt; callout bar that they show when you tap or tap and hold, but whether that is
&gt; in a subframe or would be affected by this patch is something I don’t know
&gt; off the top of my head. There was a time, a long time ago when everyone was
&gt; using a a frameset and it was absolutely common to click something and for
&gt; another frame to change.
Right and that&apos;s fine since the change in triggered by a click (and not by mouse-move). I&apos;ve seen many pages like that, but again not when the content change is triggered by only hovering over an element.

&gt;We flatten frames on iOS, for now, but just pointing it out that it was common for different frames to change. 
Frame flattening is strictly a rendering feature only and does not alter the frame (document) hierarchy. From content change observation point of view, it does not matter whether the a frame is flattened or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512018</commentid>
    <comment_count>8</comment_count>
      <attachid>363459</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-03-03 19:31:44 -0800</bug_when>
    <thetext>Comment on attachment 363459
Patch

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

&gt;&gt;&gt;&gt;&gt;&gt; Source/WebCore/ChangeLog:8
&gt;&gt;&gt;&gt;&gt;&gt; +        It limits content observation to the target node&apos;s owner document.
&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt; To other reviewers: I am not for or against this patch.
&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt; Why do we want to do make content change observers document-specific? Interactions with an element can do anything including causing a content change in a subframe (same-origin iframe is easy, cross-origin is still possible via postMessage()). We know Microsoft Word online does the crazy with a subframe that effectively follows the cursor. So there is craziness on the web. Like you needed proof, right :)
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; :) yeah, that is very true. Do you think if that Microsoft Word use case is a &quot;menu hovering&quot;-like case that we try to cover here? I still yet to see a page where the hover triggers a &quot;bring this menu-pane up in a different frame&quot; type of content change.
&gt;&gt;&gt; 
&gt;&gt;&gt; I don’t know. I could swear that I recall that Microsoft Word has their own callout bar that they show when you tap or tap and hold, but whether that is in a subframe or would be affected by this patch is something I don’t know off the top of my head. There was a time, a long time ago when everyone was using a a frameset and it was absolutely common to click something and for another frame to change. We flatten frames on iOS, for now, but just pointing it out that it was common for different frames to change. Unless you inspect source it will be hard to tell what technique a site is using. Could use the prostenmez :) approach and just “do it” and see what breaks. I personally prefer to the Feynman algorithm though I’ve been known to gamble with “see what breaks” when I like the odds.
&gt;&gt; 
&gt;&gt; I&apos;m not sure if I&apos;d call it a &quot;callout bar&quot;, but it is true that Word shows a contextual menu upon tap/long press; this contextual menu is contained in the same subframe as the one that contains the actual selection (&quot;sdx_ow_iframe&quot;).
&gt; 
&gt; Right and that&apos;s fine since the change in triggered by a click (and not by mouse-move). I&apos;ve seen many pages like that, but again not when the content change is triggered by only hovering over an element.

Googling for &quot;prostenmez&quot; has no hits.

&gt; Source/WebCore/dom/Document.cpp:539
&gt; +    , m_contentChangeObserver(std::make_unique&lt;ContentChangeObserver&gt;(*this))

Maybe make one the first time we need to? Many documents are probably never interacted with.

&gt; Source/WebCore/page/ios/ContentChangeObserver.cpp:46
&gt; -    if (!m_page.mainFrame().document())
&gt; -        return;
&gt; -    if (m_page.mainFrame().document()-&gt;activeDOMObjectsAreSuspended())
&gt; +    if (m_document.activeDOMObjectsAreSuspended())

This is so much nicer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512044</commentid>
    <comment_count>9</comment_count>
      <attachid>363483</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-03-03 21:26:43 -0800</bug_when>
    <thetext>Created attachment 363483
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512054</commentid>
    <comment_count>10</comment_count>
      <attachid>363483</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-03 22:05:50 -0800</bug_when>
    <thetext>Comment on attachment 363483
Patch

Clearing flags on attachment: 363483

Committed r242340: &lt;https://trac.webkit.org/changeset/242340&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512055</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-03 22:05:52 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363459</attachid>
            <date>2019-03-03 09:56:36 -0800</date>
            <delta_ts>2019-03-03 21:26:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195256-20190303095635.patch</filename>
            <type>text/plain</type>
            <size>33906</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyMzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjRlMzAxZjY3MDJmMTgy
YWRkYjdmMGY1YzU4NmJmNzQzNDQ2YjRhYi4uNzEzZWU3NjhhNzgyZGVlNjNjMTdiOGExOTU4ZTMy
ODIwYjlmNThjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDE5LTAzLTAzICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvbnRlbnRDaGFuZ2VPYnNl
cnZlcl0gQ29udGVudCBvYnNlcnZhdGlvbiBzaG91bGQgYmUgbGltaXRlZCB0byB0aGUgY3VycmVu
dCBkb2N1bWVudC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5NTI1NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDg1NDQ0MDI+CisKKyAgICAgICAg
TW92ZSBDb250ZW50Q2hhbmdlT2JzZXJ2ZXIgZnJvbSBQYWdlIHRvIERvY3VtZW50LgorICAgICAg
ICBJdCBsaW1pdHMgY29udGVudCBvYnNlcnZhdGlvbiB0byB0aGUgdGFyZ2V0IG5vZGUncyBvd25l
ciBkb2N1bWVudC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjptX2NvbnRlbnRDaGFu
Z2VPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dXBkYXRlU3R5bGVJZk5l
ZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2lsbERldGFjaFBhZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnBsYXRmb3JtU3VzcGVuZE9yU3RvcEFjdGl2ZURPTU9i
amVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6bV91bmRvTWFuYWdlcik6IERlbGV0ZWQuCisgICAg
ICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y29udGVu
dENoYW5nZU9ic2VydmVyKToKKyAgICAgICAgKiBwYWdlL0RPTVRpbWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRPTVRpbWVyOjppbnN0YWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRpbWVy
OjpyZW1vdmVCeUlkKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRpbWVyOjpmaXJlZCk6CisgICAg
ICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6d2lsbERldGFj
aFBhZ2UpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
OjpQYWdlKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6
OnBvaW50ZXJMb2NrQ29udHJvbGxlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpj
b250ZW50Q2hhbmdlT2JzZXJ2ZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvaW9zL0NvbnRl
bnRDaGFuZ2VPYnNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50Q2hhbmdlT2Jz
ZXJ2ZXI6OkNvbnRlbnRDaGFuZ2VPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50
Q2hhbmdlT2JzZXJ2ZXI6OmRpZEluc3RhbGxET01UaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50Q2hhbmdlT2JzZXJ2ZXI6OnN0b3BPYnNlcnZpbmdET01UaW1lckV4ZWN1dGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudENoYW5nZU9ic2VydmVyOjpzdG9wT2JzZXJ2aW5nU3R5bGVS
ZWNhbGMpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudENoYW5nZU9ic2VydmVyOjpjbGVhclRp
bWVyc0FuZFJlcG9ydENvbnRlbnRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudENo
YW5nZU9ic2VydmVyOjpzdGFydE9ic2VydmluZ01vdXNlTW92ZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudENoYW5nZU9ic2VydmVyOjpoYXNEZXRlcm1pbmF0ZVN0YXRlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRlbnRDaGFuZ2VPYnNlcnZlcjo6YWRqdXN0T2JzZXJ2ZWRTdGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50Q2hhbmdlT2JzZXJ2ZXI6Om5vdGlmeUNvbnRl
bnRDaGFuZ2VJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50Q2hhbmdlT2JzZXJ2
ZXI6OlN0eWxlQ2hhbmdlU2NvcGU6OlN0eWxlQ2hhbmdlU2NvcGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudENoYW5nZU9ic2VydmVyOjpTdHlsZUNoYW5nZVNjb3BlOjp+U3R5bGVDaGFuZ2VT
Y29wZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50Q2hhbmdlT2JzZXJ2ZXI6Ok1vdXNlTW92
ZWRTY29wZTo6TW91c2VNb3ZlZFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRDaGFu
Z2VPYnNlcnZlcjo6TW91c2VNb3ZlZFNjb3BlOjp+TW91c2VNb3ZlZFNjb3BlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRlbnRDaGFuZ2VPYnNlcnZlcjo6U3R5bGVSZWNhbGNTY29wZTo6U3R5bGVS
ZWNhbGNTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50Q2hhbmdlT2JzZXJ2ZXI6OlN0
eWxlUmVjYWxjU2NvcGU6On5TdHlsZVJlY2FsY1Njb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRDaGFuZ2VPYnNlcnZlcjo6RE9NVGltZXJTY29wZTo6RE9NVGltZXJTY29wZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50Q2hhbmdlT2JzZXJ2ZXI6OkRPTVRpbWVyU2NvcGU6On5ET01U
aW1lclNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6Omhhc1BlbmRpbmdTdHlsZVJlY2FsYyk6IERl
bGV0ZWQuCisgICAgICAgICogcGFnZS9pb3MvQ29udGVudENoYW5nZU9ic2VydmVyLmg6CisgICAg
ICAgICogcGFnZS9pb3MvRXZlbnRIYW5kbGVySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRIYW5kbGVyOjptb3VzZU1vdmVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVu
ZGVyVHJlZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVVwZGF0ZXI6
OnVwZGF0ZUVsZW1lbnRSZW5kZXJlcik6CisKIDIwMTktMDMtMDIgIFphbGFuIEJ1anRhcyAgPHph
bGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29udGVudENoYW5nZU9ic2VydmVyXSBJbnRyb2R1
Y2UgQ29udGVudENoYW5nZU9ic2VydmVyOjpNb3VzZU1vdmVkU2NvcGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYzEx
MTY1NmI1NzliZTIwYmQ1MDE2ZTllOWIxZmM0NDFhYjViMzc0ZS4uYmEyNzRlNzM1NmJkNmUwMmVj
NDY4MjA5YmZkN2M1Y2ViZWQ4OTViNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxOS0w
My0wMyAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFtDb250ZW50
Q2hhbmdlT2JzZXJ2ZXJdIENvbnRlbnQgb2JzZXJ2YXRpb24gc2hvdWxkIGJlIGxpbWl0ZWQgdG8g
dGhlIGN1cnJlbnQgZG9jdW1lbnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTUyNTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ4NTQ0NDAyPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmhhbmRsZVN5bnRoZXRp
Y0NsaWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y29tcGxldGVQZW5kaW5nU3ludGhl
dGljQ2xpY2tGb3JDb250ZW50Q2hhbmdlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpjb21wbGV0ZVN5bnRoZXRpY0NsaWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
aGFuZGxlVGFwKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aGFuZGxlVHdvRmluZ2VyVGFw
QXRQb2ludCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNvbW1pdFBvdGVudGlhbFRhcCk6
CisKIDIwMTktMDMtMDIgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbQ29udGVudENoYW5nZU9ic2VydmVyXSBJbnRyb2R1Y2UgQ29udGVudENoYW5nZU9ic2VydmVy
OjpNb3VzZU1vdmVkU2NvcGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwppbmRleCAwYTBmYmEz
NWUzZjk2ZjVkN2RiYTM4ODgxYzU5OTdmOGM5ZjA5NzhjLi4yNjJkYzk3OGU4NTAyYTQ2ZTNhYmY0
YTg0N2I5NTA1MTkwYmVkYWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMTktMDMtMDMgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbQ29udGVudENoYW5nZU9ic2VydmVyXSBDb250ZW50IG9ic2VydmF0aW9uIHNob3Vs
ZCBiZSBsaW1pdGVkIHRvIHRoZSBjdXJyZW50IGRvY3VtZW50LgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1MjU2CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS80ODU0NDQwMj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5tbToKKyAgICAgICAg
KFdlYkNocm9tZUNsaWVudElPUzo6b2JzZXJ2ZWRDb250ZW50Q2hhbmdlKToKKwogMjAxOS0wMi0y
NiAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDb250ZW50Q2hh
bmdlT2JzZXJ2ZXJdIGNsZWFyQ29udGVudENoYW5nZU9ic2VydmVycyBzaG91bGQgYmUgaW50ZXJu
YWwgdG8gQ29udGVudENoYW5nZU9ic2VydmVyIGNsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApp
bmRleCBkZWQwZjljNmQ1NTQyODVlN2MzYjc0Nzc5MGE1NTQ3MzBlYTg0MDNlLi42YWY2MzQzZjll
YzlmMTBkMjRlYWRhNTRiMTUxZDBhMzBmYWJjYTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
QEAgLTUzNSw2ICs1MzUsOSBAQCBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25z
dCBVUkwmIHVybCwgdW5zaWduZWQgZG9jdW1lbnRDbGFzc2VzLCB1bnNpZwogICAgICwgbV9vcmll
bnRhdGlvbk5vdGlmaWVyKGN1cnJlbnRPcmllbnRhdGlvbihmcmFtZSkpCiAgICAgLCBtX2lkZW50
aWZpZXIoRG9jdW1lbnRJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQogICAgICwgbV91bmRvTWFuYWdl
cihVbmRvTWFuYWdlcjo6Y3JlYXRlKCp0aGlzKSkKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQor
ICAgICwgbV9jb250ZW50Q2hhbmdlT2JzZXJ2ZXIoc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50Q2hh
bmdlT2JzZXJ2ZXI+KCp0aGlzKSkKKyNlbmRpZgogewogICAgIGF1dG8gYWRkUmVzdWx0ID0gYWxs
RG9jdW1lbnRzTWFwKCkuYWRkKG1faWRlbnRpZmllciwgdGhpcyk7CiAgICAgQVNTRVJUX1VOVVNF
RChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKQEAgLTIwNTEsNyArMjA1NCw3IEBA
IGJvb2wgRG9jdW1lbnQ6OnVwZGF0ZVN0eWxlSWZOZWVkZWQoKQogICAgIH0KIAogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCi0gICAgQ29udGVudENoYW5nZU9ic2VydmVyOjpTdHlsZVJlY2FsY1Nj
b3BlIG9ic2VydmluZ1Njb3BlKHBhZ2UoKSk7CisgICAgQ29udGVudENoYW5nZU9ic2VydmVyOjpT
dHlsZVJlY2FsY1Njb3BlIG9ic2VydmluZ1Njb3BlKCp0aGlzKTsKICNlbmRpZgogICAgIC8vIFRo
ZSBlYXJseSBleGl0IGFib3ZlIGZvciAhbmVlZHNTdHlsZVJlY2FsYygpIGlzIG5lZWRlZCB3aGVu
IHVwZGF0ZVdpZGdldFBvc2l0aW9ucygpIGlzIGNhbGxlZCBpbiBydW5PclNjaGVkdWxlQXN5bmNo
cm9ub3VzVGFza3MoKS4KICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FU
SU9OKGlzU2FmZVRvVXBkYXRlU3R5bGVPckxheW91dCgqdGhpcykpOwpAQCAtMjM4Myw3ICsyMzg2
LDkgQEAgdm9pZCBEb2N1bWVudDo6ZnJhbWVEZXN0cm95ZWQoKQogdm9pZCBEb2N1bWVudDo6d2ls
bERldGFjaFBhZ2UoKQogewogICAgIEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlcjo6d2lsbERldGFj
aFBhZ2UoKTsKLQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgY29udGVudENoYW5nZU9i
c2VydmVyKCkud2lsbERldGFjaFBhZ2UoKTsKKyNlbmRpZgogICAgIGlmIChkb21XaW5kb3coKSAm
JiBmcmFtZSgpKQogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyYW1lV2luZG93
RGlzY2FyZGVkKCpmcmFtZSgpLCBkb21XaW5kb3coKSk7CiB9CkBAIC0yNjMyLDggKzI2MzcsNyBA
QCBib29sIERvY3VtZW50OjpzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xp
Y3koKSBjb25zdAogdm9pZCBEb2N1bWVudDo6cGxhdGZvcm1TdXNwZW5kT3JTdG9wQWN0aXZlRE9N
T2JqZWN0cygpCiB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBpZiAoYXV0byogcGFn
ZSA9IHRoaXMtPnBhZ2UoKSkKLSAgICAgICAgcGFnZS0+Y29udGVudENoYW5nZU9ic2VydmVyKCku
ZGlkU3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoKTsKKyAgICBjb250ZW50Q2hhbmdlT2JzZXJ2ZXIo
KS5kaWRTdXNwZW5kQWN0aXZlRE9NT2JqZWN0cygpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgKaW5kZXggNGI1YWMzMGYyNzJlYjJiNzY2YzljOWYwZjY5YzI1MWUwMjZkNjZkZC4uNDAy
OTUzYjM3M2Q2OGNlYTAxMDI0MWM0YTAyMDc2OGRjYWFiZmZhNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmgKQEAgLTk5LDYgKzk5LDcgQEAgY2xhc3MgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOwogY2xh
c3MgQ2hhcmFjdGVyRGF0YTsKIGNsYXNzIENvbW1lbnQ7CiBjbGFzcyBDb25zdGFudFByb3BlcnR5
TWFwOworY2xhc3MgQ29udGVudENoYW5nZU9ic2VydmVyOwogY2xhc3MgRE9NSW1wbGVtZW50YXRp
b247CiBjbGFzcyBET01TZWxlY3Rpb247CiBjbGFzcyBET01XaW5kb3c7CkBAIC04NzEsNiArODcy
LDggQEAgcHVibGljOgogCiAgICAgLy8gQ2FsbGVkIHdoZW4gPG1ldGEgbmFtZT0iYXBwbGUtbW9i
aWxlLXdlYi1hcHAtb3JpZW50YXRpb25zIj4gY2hhbmdlcy4KICAgICB2b2lkIHByb2Nlc3NXZWJB
cHBPcmllbnRhdGlvbnMoKTsKKworICAgIENvbnRlbnRDaGFuZ2VPYnNlcnZlciYgY29udGVudENo
YW5nZU9ic2VydmVyKCkgeyByZXR1cm4gKm1fY29udGVudENoYW5nZU9ic2VydmVyOyB9CiAjZW5k
aWYKICAgICAKICAgICB2b2lkIHByb2Nlc3NWaWV3cG9ydChjb25zdCBTdHJpbmcmIGZlYXR1cmVz
LCBWaWV3cG9ydEFyZ3VtZW50czo6VHlwZSBvcmlnaW4pOwpAQCAtMjA3Nyw2ICsyMDgwLDkgQEAg
cHJpdmF0ZToKICAgICBib29sIG1faXNSdW5uaW5nVXNlclNjcmlwdHMgeyBmYWxzZSB9OwogCiAg
ICAgUmVmPFVuZG9NYW5hZ2VyPiBtX3VuZG9NYW5hZ2VyOworI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCisgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRDaGFuZ2VPYnNlcnZlcj4gbV9jb250ZW50
Q2hhbmdlT2JzZXJ2ZXI7CisjZW5kaWYKIH07CiAKIEVsZW1lbnQqIGV2ZW50VGFyZ2V0RWxlbWVu
dEZvckRvY3VtZW50KERvY3VtZW50Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVRpbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwCmluZGV4IDU2
YzlhMjkwZWQxNzM0ZDY3ZjJjZTljYzNhNTI5OTFhZDFkZjk1YzkuLjY0ZjI2NTQ3YTljM2ZmNDAz
OTBjNTAyYTczYWFmYmJjZjQ4M2IwNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NVGltZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwCkBAIC0y
MjIsOCArMjIyLDggQEAgaW50IERPTVRpbWVyOjppbnN0YWxsKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWQKICAgICBpZiAoTmVzdGVkVGlt
ZXJzTWFwKiBuZXN0ZWRUaW1lcnMgPSBOZXN0ZWRUaW1lcnNNYXA6Omluc3RhbmNlRm9yQ29udGV4
dChjb250ZXh0KSkKICAgICAgICAgbmVzdGVkVGltZXJzLT5hZGQodGltZXItPm1fdGltZW91dElk
LCAqdGltZXIpOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgaWYgKGlzPERvY3VtZW50
Pihjb250ZXh0KSAmJiBkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCkucGFnZSgpKQotICAgICAg
ICBkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCkucGFnZSgpLT5jb250ZW50Q2hhbmdlT2JzZXJ2
ZXIoKS5kaWRJbnN0YWxsRE9NVGltZXIoKnRpbWVyLCB0aW1lb3V0LCBzaW5nbGVTaG90KTsKKyAg
ICBpZiAoaXM8RG9jdW1lbnQ+KGNvbnRleHQpKQorICAgICAgICBkb3duY2FzdDxEb2N1bWVudD4o
Y29udGV4dCkuY29udGVudENoYW5nZU9ic2VydmVyKCkuZGlkSW5zdGFsbERPTVRpbWVyKCp0aW1l
ciwgdGltZW91dCwgc2luZ2xlU2hvdCk7CiAjZW5kaWYKICAgICByZXR1cm4gdGltZXItPm1fdGlt
ZW91dElkOwogfQpAQCAtMjM3LDEwICsyMzcsMTAgQEAgdm9pZCBET01UaW1lcjo6cmVtb3ZlQnlJ
ZChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBpbnQgdGltZW91dElkKQogICAgICAg
ICByZXR1cm47CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGlmIChpczxEb2N1bWVu
dD4oY29udGV4dCkgJiYgZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLnBhZ2UoKSkgeworICAg
IGlmIChpczxEb2N1bWVudD4oY29udGV4dCkpIHsKICAgICAgICAgYXV0byYgZG9jdW1lbnQgPSBk
b3duY2FzdDxEb2N1bWVudD4oY29udGV4dCk7CiAgICAgICAgIGlmIChhdXRvKiB0aW1lciA9IGRv
Y3VtZW50LmZpbmRUaW1lb3V0KHRpbWVvdXRJZCkpCi0gICAgICAgICAgICBkb2N1bWVudC5wYWdl
KCktPmNvbnRlbnRDaGFuZ2VPYnNlcnZlcigpLmRpZFJlbW92ZURPTVRpbWVyKCp0aW1lcik7Cisg
ICAgICAgICAgICBkb2N1bWVudC5jb250ZW50Q2hhbmdlT2JzZXJ2ZXIoKS5kaWRSZW1vdmVET01U
aW1lcigqdGltZXIpOwogICAgIH0KICNlbmRpZgogCkBAIC0zNDMsNyArMzQzLDcgQEAgdm9pZCBE
T01UaW1lcjo6ZmlyZWQoKQogICAgICAgICBuZXN0ZWRUaW1lcnMtPnN0YXJ0VHJhY2tpbmcoKTsK
IAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgQ29udGVudENoYW5nZU9ic2VydmVyOjpE
T01UaW1lclNjb3BlIG9ic2VydmluZ1Njb3BlKGlzPERvY3VtZW50Pihjb250ZXh0KSA/IGRvd25j
YXN0PERvY3VtZW50Pihjb250ZXh0KS5wYWdlKCkgOiBudWxscHRyLCAqdGhpcyk7CisgICAgQ29u
dGVudENoYW5nZU9ic2VydmVyOjpET01UaW1lclNjb3BlIG9ic2VydmluZ1Njb3BlKGlzPERvY3Vt
ZW50Pihjb250ZXh0KSA/ICZkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCkgOiBudWxscHRyLCAq
dGhpcyk7CiAjZW5kaWYKICAgICBtX2FjdGlvbi0+ZXhlY3V0ZShjb250ZXh0KTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lLmNwcAppbmRleCA0ZmUyYmM5NmY1YWFkMjlhODYxMzJlOTkwZDc4N2Q3YzZhNTMwNDk4
Li43ZDYwZmRmZGI5Y2Y4ZDQxZTRmNjM5MmU4NDg0Y2YyMGQ4OWE3ZDRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmNwcApAQCAtMTA3LDEwICsxMDcsNiBAQAogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKLSNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQotI2luY2x1ZGUgIkNvbnRlbnRDaGFuZ2VPYnNlcnZlci5oIgotI2VuZGlmCi0K
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTg0
MywxMSArODM5LDYgQEAgdm9pZCBGcmFtZTo6d2lsbERldGFjaFBhZ2UoKQogICAgIGlmIChwYWdl
KCkgJiYgcGFnZSgpLT5zY3JvbGxpbmdDb29yZGluYXRvcigpICYmIG1fdmlldykKICAgICAgICAg
cGFnZSgpLT5zY3JvbGxpbmdDb29yZGluYXRvcigpLT53aWxsRGVzdHJveVNjcm9sbGFibGVBcmVh
KCptX3ZpZXcpOwogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBpZiAoYXV0byogcGFn
ZSA9IHRoaXMtPnBhZ2UoKSkKLSAgICAgICAgcGFnZS0+Y29udGVudENoYW5nZU9ic2VydmVyKCku
d2lsbERldGFjaFBhZ2UoKTsKLSNlbmRpZgotCiAgICAgc2NyaXB0KCkuY2xlYXJTY3JpcHRPYmpl
Y3RzKCk7CiAgICAgc2NyaXB0KCkudXBkYXRlUGxhdGZvcm1TY3JpcHRPYmplY3RzKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwCmluZGV4IGVjNmQ2MGRkZWIwNDEzMjk0OTY0NzRjNzJmZWFhOTA4NmIxMjVm
NTEuLmM3YjFiMDJkMTFjYmU3NTVhZTZmZjdkYWY5MjgzNDRmY2Y2MWU4NjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcApAQCAtMTQ5LDEwICsxNDksNiBAQAogI2luY2x1ZGUgIlNlbGVjdGlvblJlY3QuaCIK
ICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSNpbmNsdWRlICJDb250ZW50Q2hh
bmdlT2JzZXJ2ZXIuaCIKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBI
YXNoU2V0PFBhZ2UqPiYgYWxsUGFnZXMoKQpAQCAtMjM1LDkgKzIzMSw2IEBAIFBhZ2U6OlBhZ2Uo
UGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmlndXJhdGlvbikKICAgICAsIG1fcGVyZm9ybWFu
Y2VMb2dnaW5nQ2xpZW50KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24ucGVyZm9ybWFuY2VMb2dn
aW5nQ2xpZW50KSkKICAgICAsIG1fd2ViR0xTdGF0ZVRyYWNrZXIoV1RGTW92ZShwYWdlQ29uZmln
dXJhdGlvbi53ZWJHTFN0YXRlVHJhY2tlcikpCiAgICAgLCBtX2xpYldlYlJUQ1Byb3ZpZGVyKFdU
Rk1vdmUocGFnZUNvbmZpZ3VyYXRpb24ubGliV2ViUlRDUHJvdmlkZXIpKQotI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCi0gICAgLCBtX2NvbnRlbnRDaGFuZ2VPYnNlcnZlcihzdGQ6Om1ha2VfdW5p
cXVlPENvbnRlbnRDaGFuZ2VPYnNlcnZlcj4oKnRoaXMpKQotI2VuZGlmCiAgICAgLCBtX3ZlcnRp
Y2FsU2Nyb2xsRWxhc3RpY2l0eShTY3JvbGxFbGFzdGljaXR5QWxsb3dlZCkKICAgICAsIG1faG9y
aXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkoU2Nyb2xsRWxhc3RpY2l0eUFsbG93ZWQpCiAgICAgLCBt
X2RvbVRpbWVyQWxpZ25tZW50SW50ZXJ2YWwoRE9NVGltZXI6OmRlZmF1bHRBbGlnbm1lbnRJbnRl
cnZhbCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCAwNjE5MDdjOGU0MWNlMGUzMzU1OGUxZTNjMzQzYzU3
NzljNmRhMGQzLi44NjE3YmQ0ZGFmNTY3ZWYwZmExMzM2NmQwOGIzOWUzNzFlZGZjYjk3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuaApAQCAtODYsOSArODYsNiBAQCBjbGFzcyBDYWNoZVN0b3JhZ2VQcm92aWRlcjsK
IGNsYXNzIENocm9tZTsKIGNsYXNzIENocm9tZUNsaWVudDsKIGNsYXNzIENvbG9yOwotI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCi1jbGFzcyBDb250ZW50Q2hhbmdlT2JzZXJ2ZXI7Ci0jZW5kaWYK
IGNsYXNzIENvbnRleHRNZW51Q2xpZW50OwogY2xhc3MgQ29udGV4dE1lbnVDb250cm9sbGVyOwog
Y2xhc3MgQ29va2llSmFyOwpAQCAtMjU0LDkgKzI1MSw2IEBAIHB1YmxpYzoKICNlbmRpZgogI2lm
IEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgUG9pbnRlckxvY2tDb250cm9sbGVyJiBwb2ludGVy
TG9ja0NvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiAqbV9wb2ludGVyTG9ja0NvbnRyb2xsZXI7
IH0KLSNlbmRpZgotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgQ29udGVudENoYW5nZU9i
c2VydmVyJiBjb250ZW50Q2hhbmdlT2JzZXJ2ZXIoKSB7IHJldHVybiAqbV9jb250ZW50Q2hhbmdl
T2JzZXJ2ZXI7IH0KICNlbmRpZgogICAgIExpYldlYlJUQ1Byb3ZpZGVyJiBsaWJXZWJSVENQcm92
aWRlcigpIHsgcmV0dXJuIG1fbGliV2ViUlRDUHJvdmlkZXIuZ2V0KCk7IH0KICAgICBSVENDb250
cm9sbGVyJiBydGNDb250cm9sbGVyKCkgeyByZXR1cm4gbV9ydGNDb250cm9sbGVyOyB9CkBAIC04
MTgsNyArODEyLDYgQEAgcHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
Ym9vbCBtX2VuY2xvc2VkSW5TY3JvbGxhYmxlQW5jZXN0b3JWaWV3IHsgZmFsc2UgfTsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8Q29udGVudENoYW5nZU9ic2VydmVyPiBtX2NvbnRlbnRDaGFuZ2VPYnNl
cnZlcjsKICNlbmRpZgogICAgIAogICAgIGJvb2wgbV91c2VTeXN0ZW1BcHBlYXJhbmNlIHsgZmFs
c2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0NvbnRlbnRDaGFuZ2VP
YnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9Db250ZW50Q2hhbmdlT2JzZXJ2
ZXIuY3BwCmluZGV4IGRhYjJhMjFiMTc4OTA5OGVkZTI0ZGE4MDUwNTk1MDVmYjA3MTkzMDMuLjY1
YWU4NThjNWFmOGZmMzExNzk2MmUyM2FlZjlkNGY1MzJmM2FkMDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvaW9zL0NvbnRlbnRDaGFuZ2VPYnNlcnZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9pb3MvQ29udGVudENoYW5nZU9ic2VydmVyLmNwcApAQCAtMjksMzMgKzI5
LDIxIEBACiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAj
aW5jbHVkZSAiRE9NVGltZXIuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKICNpbmNsdWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJQYWdlLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGJvb2wgaGFzUGVuZGluZ1N0eWxlUmVj
YWxjKGNvbnN0IFBhZ2UmIHBhZ2UpCi17Ci0gICAgZm9yIChhdXRvKiBmcmFtZSA9ICZwYWdlLm1h
aW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7
Ci0gICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpKSB7Ci0gICAg
ICAgICAgICBpZiAoZG9jdW1lbnQtPmhhc1BlbmRpbmdTdHlsZVJlY2FsYygpKQotICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsK
LX0KLQotQ29udGVudENoYW5nZU9ic2VydmVyOjpDb250ZW50Q2hhbmdlT2JzZXJ2ZXIoUGFnZSYg
cGFnZSkKLSAgICA6IG1fcGFnZShwYWdlKQorQ29udGVudENoYW5nZU9ic2VydmVyOjpDb250ZW50
Q2hhbmdlT2JzZXJ2ZXIoRG9jdW1lbnQmIGRvY3VtZW50KQorICAgIDogbV9kb2N1bWVudChkb2N1
bWVudCkKIHsKIH0KIAogdm9pZCBDb250ZW50Q2hhbmdlT2JzZXJ2ZXI6OmRpZEluc3RhbGxET01U
aW1lcihjb25zdCBET01UaW1lciYgdGltZXIsIFNlY29uZHMgdGltZW91dCwgYm9vbCBzaW5nbGVT
aG90KQogewotICAgIGlmICghbV9wYWdlLm1haW5GcmFtZSgpLmRvY3VtZW50KCkpCi0gICAgICAg
IHJldHVybjsKLSAgICBpZiAobV9wYWdlLm1haW5GcmFtZSgpLmRvY3VtZW50KCktPmFjdGl2ZURP
TU9iamVjdHNBcmVTdXNwZW5kZWQoKSkKKyAgICBpZiAobV9kb2N1bWVudC5hY3RpdmVET01PYmpl
Y3RzQXJlU3VzcGVuZGVkKCkpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAodGltZW91dCA+IDI1
MF9tcyB8fCAhc2luZ2xlU2hvdCkKICAgICAgICAgcmV0dXJuOwpAQCAtOTUsNyArODMsNyBAQCB2
b2lkIENvbnRlbnRDaGFuZ2VPYnNlcnZlcjo6c3RvcE9ic2VydmluZ0RPTVRpbWVyRXhlY3V0ZShj
b25zdCBET01UaW1lciYgdGltZXIpCiAKICAgICBtX2lzT2JzZXJ2aW5nQ29udGVudENoYW5nZXMg
PSBmYWxzZTsKICAgICB1bnJlZ2lzdGVyRE9NVGltZXIodGltZXIpOwotICAgIHNldFNob3VsZE9i
c2VydmVTdHlsZVJlY2FsYyhXZWJDb3JlOjpoYXNQZW5kaW5nU3R5bGVSZWNhbGMobV9wYWdlKSk7
CisgICAgc2V0U2hvdWxkT2JzZXJ2ZVN0eWxlUmVjYWxjKG1fZG9jdW1lbnQuaGFzUGVuZGluZ1N0
eWxlUmVjYWxjKCkpOwogICAgIG5vdGlmeUNvbnRlbnRDaGFuZ2VJZk5lZWRlZCgpOwogfQogCkBA
IC0xMTcsNiArMTA1LDcgQEAgdm9pZCBDb250ZW50Q2hhbmdlT2JzZXJ2ZXI6OnN0b3BPYnNlcnZp
bmdTdHlsZVJlY2FsYygpCiAgICAgTE9HKENvbnRlbnRPYnNlcnZhdGlvbiwgInN0b3BPYnNlcnZp
bmdTdHlsZVJlY2FsYzogc3RvcCBvYnNlcnZpbmcgc3R5bGUgcmVjYWxjIik7CiAKICAgICBzZXRT
aG91bGRPYnNlcnZlU3R5bGVSZWNhbGMoZmFsc2UpOworICAgIG1faXNPYnNlcnZpbmdDb250ZW50
Q2hhbmdlcyA9IGZhbHNlOwogICAgIGFkanVzdE9ic2VydmVkU3RhdGUoRXZlbnQ6OlN0eWxlUmVj
YWxjRmluaXNoZWQpOwogICAgIG5vdGlmeUNvbnRlbnRDaGFuZ2VJZk5lZWRlZCgpOwogfQpAQCAt
MTI4LDcgKzExNyw5IEBAIHZvaWQgQ29udGVudENoYW5nZU9ic2VydmVyOjpjbGVhclRpbWVyc0Fu
ZFJlcG9ydENvbnRlbnRDaGFuZ2UoKQogICAgIExPR19XSVRIX1NUUkVBTShDb250ZW50T2JzZXJ2
YXRpb24sIHN0cmVhbSA8PCAiY2xlYXJUaW1lcnNBbmRSZXBvcnRDb250ZW50Q2hhbmdlOiByZW1v
dmUgcmVnaXN0ZXJlZCB0aW1lcnMgYW5kIHJlcG9ydCBjb250ZW50IGNoYW5nZS4iIDw8IG9ic2Vy
dmVkQ29udGVudENoYW5nZSgpKTsKIAogICAgIGNsZWFyT2JzZXJ2ZWRET01UaW1lcnMoKTsKLSAg
ICBtX3BhZ2UuY2hyb21lKCkuY2xpZW50KCkub2JzZXJ2ZWRDb250ZW50Q2hhbmdlKG1fcGFnZS5t
YWluRnJhbWUoKSk7CisgICAgQVNTRVJUKG1fZG9jdW1lbnQucGFnZSgpKTsKKyAgICBBU1NFUlQo
bV9kb2N1bWVudC5mcmFtZSgpKTsKKyAgICBtX2RvY3VtZW50LnBhZ2UoKS0+Y2hyb21lKCkuY2xp
ZW50KCkub2JzZXJ2ZWRDb250ZW50Q2hhbmdlKCptX2RvY3VtZW50LmZyYW1lKCkpOwogfQogCiB2
b2lkIENvbnRlbnRDaGFuZ2VPYnNlcnZlcjo6ZGlkU3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoKQpA
QCAtMTQ5LDcgKzE0MCw3IEBAIHZvaWQgQ29udGVudENoYW5nZU9ic2VydmVyOjpjb250ZW50Vmlz
aWJpbGl0eURpZENoYW5nZSgpCiAKIHZvaWQgQ29udGVudENoYW5nZU9ic2VydmVyOjpzdGFydE9i
c2VydmluZ01vdXNlTW92ZWQoKQogewotICAgIEFTU0VSVCghaGFzUGVuZGluZ1N0eWxlUmVjYWxj
KG1fcGFnZSkpOworICAgIEFTU0VSVCghbV9kb2N1bWVudC5oYXNQZW5kaW5nU3R5bGVSZWNhbGMo
KSk7CiAgICAgY2xlYXJPYnNlcnZlZERPTVRpbWVycygpOwogICAgIHN0YXJ0T2JzZXJ2aW5nRE9N
VGltZXJTY2hlZHVsaW5nKCk7CiAgICAgbV9pc09ic2VydmluZ0NvbnRlbnRDaGFuZ2VzID0gdHJ1
ZTsKQEAgLTE5MCw3ICsxODEsNyBAQCBib29sIENvbnRlbnRDaGFuZ2VPYnNlcnZlcjo6aGFzRGV0
ZXJtaW5hdGVTdGF0ZSgpIGNvbnN0CiB7CiAgICAgaWYgKGhhc1Zpc2libGVDaGFuZ2VTdGF0ZSgp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gb2JzZXJ2ZWRDb250ZW50Q2hhbmdl
KCkgPT0gV0tDb250ZW50Tm9DaGFuZ2UgJiYgIWhhc09ic2VydmVkRE9NVGltZXIoKSAmJiAhaGFz
UGVuZGluZ1N0eWxlUmVjYWxjKG1fcGFnZSk7CisgICAgcmV0dXJuIG9ic2VydmVkQ29udGVudENo
YW5nZSgpID09IFdLQ29udGVudE5vQ2hhbmdlICYmICFoYXNPYnNlcnZlZERPTVRpbWVyKCkgJiYg
IW1fZG9jdW1lbnQuaGFzUGVuZGluZ1N0eWxlUmVjYWxjKCk7CiB9CiAKIHZvaWQgQ29udGVudENo
YW5nZU9ic2VydmVyOjphZGp1c3RPYnNlcnZlZFN0YXRlKEV2ZW50IGV2ZW50KQpAQCAtMjA3LDcg
KzE5OCw3IEBAIHZvaWQgQ29udGVudENoYW5nZU9ic2VydmVyOjphZGp1c3RPYnNlcnZlZFN0YXRl
KEV2ZW50IGV2ZW50KQogICAgIGNhc2UgRXZlbnQ6OlJlbW92ZWRET01UaW1lcjoKICAgICBjYXNl
IEV2ZW50OjpTdHlsZVJlY2FsY0ZpbmlzaGVkOgogICAgICAgICAvLyBEZW1vdGUgdG8gIm5vIGNo
YW5nZSIgd2hlbiB0aGVyZSdzIG5vIHBlbmRpbmcgYWN0aXZpdHkgYW55bW9yZS4KLSAgICAgICAg
aWYgKG9ic2VydmVkQ29udGVudENoYW5nZSgpID09IFdLQ29udGVudEluZGV0ZXJtaW5hdGVDaGFu
Z2UgJiYgIWhhc09ic2VydmVkRE9NVGltZXIoKSAmJiAhaGFzUGVuZGluZ1N0eWxlUmVjYWxjKG1f
cGFnZSkpCisgICAgICAgIGlmIChvYnNlcnZlZENvbnRlbnRDaGFuZ2UoKSA9PSBXS0NvbnRlbnRJ
bmRldGVybWluYXRlQ2hhbmdlICYmICFoYXNPYnNlcnZlZERPTVRpbWVyKCkgJiYgIW1fZG9jdW1l
bnQuaGFzUGVuZGluZ1N0eWxlUmVjYWxjKCkpCiAgICAgICAgICAgICBzZXRIYXNOb0NoYW5nZVN0
YXRlKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRXZlbnQ6OkNvbnRlbnRWaXNpYmlsaXR5
Q2hhbmdlZDoKQEAgLTIyMyw3ICsyMTQsOSBAQCB2b2lkIENvbnRlbnRDaGFuZ2VPYnNlcnZlcjo6
bm90aWZ5Q29udGVudENoYW5nZUlmTmVlZGVkKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBMT0dfV0lUSF9TVFJFQU0oQ29udGVudE9ic2VydmF0aW9uLCBzdHJlYW0gPDwgIm5vdGlmeUNv
bnRlbnRDaGFuZ2VJZk5lZWRlZDogc2VuZGluZyBvYnNlcnZlZENvbnRlbnRDaGFuZ2UgLT4iIDw8
IG9ic2VydmVkQ29udGVudENoYW5nZSgpKTsKLSAgICBtX3BhZ2UuY2hyb21lKCkuY2xpZW50KCku
b2JzZXJ2ZWRDb250ZW50Q2hhbmdlKG1fcGFnZS5tYWluRnJhbWUoKSk7CisgICAgQVNTRVJUKG1f
ZG9jdW1lbnQucGFnZSgpKTsKKyAgICBBU1NFUlQobV9kb2N1bWVudC5mcmFtZSgpKTsKKyAgICBt
X2RvY3VtZW50LnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkub2JzZXJ2ZWRDb250ZW50Q2hhbmdl
KCptX2RvY3VtZW50LmZyYW1lKCkpOwogfQogCiAKQEAgLTI1MCwxMCArMjQzLDEwIEBAIHN0YXRp
YyBWaXNpYmlsaXR5IGVsZW1lbnRJbXBsaWNpdFZpc2liaWxpdHkoY29uc3QgRWxlbWVudCYgZWxl
bWVudCkKICAgICByZXR1cm4gVmlzaWJpbGl0eTo6VmlzaWJsZTsKIH0KIAotQ29udGVudENoYW5n
ZU9ic2VydmVyOjpTdHlsZUNoYW5nZVNjb3BlOjpTdHlsZUNoYW5nZVNjb3BlKFBhZ2UqIHBhZ2Us
IGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCi0gICAgOiBtX2NvbnRlbnRDaGFuZ2VPYnNlcnZlcihw
YWdlID8gJnBhZ2UtPmNvbnRlbnRDaGFuZ2VPYnNlcnZlcigpIDogbnVsbHB0cikKK0NvbnRlbnRD
aGFuZ2VPYnNlcnZlcjo6U3R5bGVDaGFuZ2VTY29wZTo6U3R5bGVDaGFuZ2VTY29wZShEb2N1bWVu
dCYgZG9jdW1lbnQsIGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCisgICAgOiBtX2NvbnRlbnRDaGFu
Z2VPYnNlcnZlcihkb2N1bWVudC5jb250ZW50Q2hhbmdlT2JzZXJ2ZXIoKSkKICAgICAsIG1fZWxl
bWVudChlbGVtZW50KQotICAgICwgbV9uZWVkc09ic2VydmluZyhtX2NvbnRlbnRDaGFuZ2VPYnNl
cnZlciAmJiBtX2NvbnRlbnRDaGFuZ2VPYnNlcnZlci0+aXNPYnNlcnZpbmdDb250ZW50Q2hhbmdl
cygpICYmIG1fY29udGVudENoYW5nZU9ic2VydmVyLT5vYnNlcnZlZENvbnRlbnRDaGFuZ2UoKSAh
PSBXS0NvbnRlbnRWaXNpYmlsaXR5Q2hhbmdlKQorICAgICwgbV9uZWVkc09ic2VydmluZyhtX2Nv
bnRlbnRDaGFuZ2VPYnNlcnZlci5pc09ic2VydmluZ0NvbnRlbnRDaGFuZ2VzKCkgJiYgbV9jb250
ZW50Q2hhbmdlT2JzZXJ2ZXIub2JzZXJ2ZWRDb250ZW50Q2hhbmdlKCkgIT0gV0tDb250ZW50Vmlz
aWJpbGl0eUNoYW5nZSkKIHsKICAgICBpZiAobV9uZWVkc09ic2VydmluZykgewogICAgICAgICBt
X3ByZXZpb3VzRGlzcGxheSA9IGVsZW1lbnQucmVuZGVyU3R5bGUoKSA/IGVsZW1lbnQucmVuZGVy
U3R5bGUoKS0+ZGlzcGxheSgpIDogRGlzcGxheVR5cGU6Ok5vbmU7CkBAIC0yODQsMzcgKzI3Nywz
MyBAQCBDb250ZW50Q2hhbmdlT2JzZXJ2ZXI6OlN0eWxlQ2hhbmdlU2NvcGU6On5TdHlsZUNoYW5n
ZVNjb3BlKCkKICAgICBpZiAoKG1fcHJldmlvdXNEaXNwbGF5ID09IERpc3BsYXlUeXBlOjpOb25l
ICYmIHN0eWxlLT5kaXNwbGF5KCkgIT0gRGlzcGxheVR5cGU6Ok5vbmUpCiAgICAgICAgIHx8ICht
X3ByZXZpb3VzVmlzaWJpbGl0eSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gJiYgc3R5bGUtPnZpc2li
aWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpIaWRkZW4pCiAgICAgICAgIHx8IChtX3ByZXZpb3VzSW1w
bGljaXRWaXNpYmlsaXR5ID09IFZpc2liaWxpdHk6OkhpZGRlbiAmJiBlbGVtZW50SW1wbGljaXRW
aXNpYmlsaXR5KG1fZWxlbWVudCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkpCi0gICAgICAgIG1f
Y29udGVudENoYW5nZU9ic2VydmVyLT5jb250ZW50VmlzaWJpbGl0eURpZENoYW5nZSgpOworICAg
ICAgICBtX2NvbnRlbnRDaGFuZ2VPYnNlcnZlci5jb250ZW50VmlzaWJpbGl0eURpZENoYW5nZSgp
OwogfQogCi1Db250ZW50Q2hhbmdlT2JzZXJ2ZXI6Ok1vdXNlTW92ZWRTY29wZTo6TW91c2VNb3Zl
ZFNjb3BlKFBhZ2UqIHBhZ2UpCi0gICAgOiBtX2NvbnRlbnRDaGFuZ2VPYnNlcnZlcihwYWdlID8g
JnBhZ2UtPmNvbnRlbnRDaGFuZ2VPYnNlcnZlcigpIDogbnVsbHB0cikKK0NvbnRlbnRDaGFuZ2VP
YnNlcnZlcjo6TW91c2VNb3ZlZFNjb3BlOjpNb3VzZU1vdmVkU2NvcGUoRG9jdW1lbnQmIGRvY3Vt
ZW50KQorICAgIDogbV9jb250ZW50Q2hhbmdlT2JzZXJ2ZXIoZG9jdW1lbnQuY29udGVudENoYW5n
ZU9ic2VydmVyKCkpCiB7Ci0gICAgaWYgKG1fY29udGVudENoYW5nZU9ic2VydmVyKQotICAgICAg
ICBtX2NvbnRlbnRDaGFuZ2VPYnNlcnZlci0+c3RhcnRPYnNlcnZpbmdNb3VzZU1vdmVkKCk7Cisg
ICAgbV9jb250ZW50Q2hhbmdlT2JzZXJ2ZXIuc3RhcnRPYnNlcnZpbmdNb3VzZU1vdmVkKCk7CiB9
CiAKIENvbnRlbnRDaGFuZ2VPYnNlcnZlcjo6TW91c2VNb3ZlZFNjb3BlOjp+TW91c2VNb3ZlZFNj
b3BlKCkKIHsKLSAgICBpZiAobV9jb250ZW50Q2hhbmdlT2JzZXJ2ZXIpCi0gICAgICAgIG1fY29u
dGVudENoYW5nZU9ic2VydmVyLT5zdG9wT2JzZXJ2aW5nTW91c2VNb3ZlZCgpOworICAgIG1fY29u
dGVudENoYW5nZU9ic2VydmVyLnN0b3BPYnNlcnZpbmdNb3VzZU1vdmVkKCk7CiB9CiAKLUNvbnRl
bnRDaGFuZ2VPYnNlcnZlcjo6U3R5bGVSZWNhbGNTY29wZTo6U3R5bGVSZWNhbGNTY29wZShQYWdl
KiBwYWdlKQotICAgIDogbV9jb250ZW50Q2hhbmdlT2JzZXJ2ZXIocGFnZSA/ICZwYWdlLT5jb250
ZW50Q2hhbmdlT2JzZXJ2ZXIoKSA6IG51bGxwdHIpCitDb250ZW50Q2hhbmdlT2JzZXJ2ZXI6OlN0
eWxlUmVjYWxjU2NvcGU6OlN0eWxlUmVjYWxjU2NvcGUoRG9jdW1lbnQmIGRvY3VtZW50KQorICAg
IDogbV9jb250ZW50Q2hhbmdlT2JzZXJ2ZXIoZG9jdW1lbnQuY29udGVudENoYW5nZU9ic2VydmVy
KCkpCiB7Ci0gICAgaWYgKG1fY29udGVudENoYW5nZU9ic2VydmVyKQotICAgICAgICBtX2NvbnRl
bnRDaGFuZ2VPYnNlcnZlci0+c3RhcnRPYnNlcnZpbmdTdHlsZVJlY2FsYygpOworICAgIG1fY29u
dGVudENoYW5nZU9ic2VydmVyLnN0YXJ0T2JzZXJ2aW5nU3R5bGVSZWNhbGMoKTsKIH0KIAogQ29u
dGVudENoYW5nZU9ic2VydmVyOjpTdHlsZVJlY2FsY1Njb3BlOjp+U3R5bGVSZWNhbGNTY29wZSgp
CiB7Ci0gICAgaWYgKG1fY29udGVudENoYW5nZU9ic2VydmVyKQotICAgICAgICBtX2NvbnRlbnRD
aGFuZ2VPYnNlcnZlci0+c3RvcE9ic2VydmluZ1N0eWxlUmVjYWxjKCk7CisgICAgbV9jb250ZW50
Q2hhbmdlT2JzZXJ2ZXIuc3RvcE9ic2VydmluZ1N0eWxlUmVjYWxjKCk7CiB9CiAKLUNvbnRlbnRD
aGFuZ2VPYnNlcnZlcjo6RE9NVGltZXJTY29wZTo6RE9NVGltZXJTY29wZShQYWdlKiBwYWdlLCBj
b25zdCBET01UaW1lciYgZG9tVGltZXIpCi0gICAgOiBtX2NvbnRlbnRDaGFuZ2VPYnNlcnZlcihw
YWdlID8gJnBhZ2UtPmNvbnRlbnRDaGFuZ2VPYnNlcnZlcigpIDogbnVsbHB0cikKK0NvbnRlbnRD
aGFuZ2VPYnNlcnZlcjo6RE9NVGltZXJTY29wZTo6RE9NVGltZXJTY29wZShEb2N1bWVudCogZG9j
dW1lbnQsIGNvbnN0IERPTVRpbWVyJiBkb21UaW1lcikKKyAgICA6IG1fY29udGVudENoYW5nZU9i
c2VydmVyKGRvY3VtZW50ID8gJmRvY3VtZW50LT5jb250ZW50Q2hhbmdlT2JzZXJ2ZXIoKSA6IG51
bGxwdHIpCiAgICAgLCBtX2RvbVRpbWVyKGRvbVRpbWVyKQogewogICAgIGlmIChtX2NvbnRlbnRD
aGFuZ2VPYnNlcnZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0NvbnRl
bnRDaGFuZ2VPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvQ29udGVudENoYW5n
ZU9ic2VydmVyLmgKaW5kZXggNzNhZTU3OGFlYmM0YWI1OTBhNjFjNzgzZjdiZWI2ZTQ5OGEzMmRm
NC4uMDdiNWVjOTMyZGYzYjE5MjU4NmM5OGFhYjVhMzVkZWFhODkzMGFiMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9pb3MvQ29udGVudENoYW5nZU9ic2VydmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9pb3MvQ29udGVudENoYW5nZU9ic2VydmVyLmgKQEAgLTMyLDExICsz
MiwxMSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBET01UaW1lcjsKLWNsYXNzIFBh
Z2U7CitjbGFzcyBEb2N1bWVudDsKIAogY2xhc3MgQ29udGVudENoYW5nZU9ic2VydmVyIHsKIHB1
YmxpYzoKLSAgICBDb250ZW50Q2hhbmdlT2JzZXJ2ZXIoUGFnZSYpOworICAgIENvbnRlbnRDaGFu
Z2VPYnNlcnZlcihEb2N1bWVudCYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgV0tDb250ZW50Q2hh
bmdlIG9ic2VydmVkQ29udGVudENoYW5nZSgpIGNvbnN0OwogCkBAIC00OCwxMSArNDgsMTEgQEAg
cHVibGljOgogCiAgICAgY2xhc3MgU3R5bGVDaGFuZ2VTY29wZSB7CiAgICAgcHVibGljOgotICAg
ICAgICBTdHlsZUNoYW5nZVNjb3BlKFBhZ2UqLCBjb25zdCBFbGVtZW50Jik7CisgICAgICAgIFN0
eWxlQ2hhbmdlU2NvcGUoRG9jdW1lbnQmLCBjb25zdCBFbGVtZW50Jik7CiAgICAgICAgIH5TdHls
ZUNoYW5nZVNjb3BlKCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICBDb250ZW50Q2hhbmdlT2Jz
ZXJ2ZXIqIG1fY29udGVudENoYW5nZU9ic2VydmVyIHsgbnVsbHB0ciB9OworICAgICAgICBDb250
ZW50Q2hhbmdlT2JzZXJ2ZXImIG1fY29udGVudENoYW5nZU9ic2VydmVyOwogICAgICAgICBjb25z
dCBFbGVtZW50JiBtX2VsZW1lbnQ7CiAgICAgICAgIGJvb2wgbV9uZWVkc09ic2VydmluZyB7IGZh
bHNlIH07CiAgICAgICAgIERpc3BsYXlUeXBlIG1fcHJldmlvdXNEaXNwbGF5OwpAQCAtNjIsMjMg
KzYyLDIzIEBAIHB1YmxpYzoKIAogICAgIGNsYXNzIE1vdXNlTW92ZWRTY29wZSB7CiAgICAgcHVi
bGljOgotICAgICAgICBXRUJDT1JFX0VYUE9SVCBNb3VzZU1vdmVkU2NvcGUoUGFnZSopOworICAg
ICAgICBXRUJDT1JFX0VYUE9SVCBNb3VzZU1vdmVkU2NvcGUoRG9jdW1lbnQmKTsKICAgICAgICAg
V0VCQ09SRV9FWFBPUlQgfk1vdXNlTW92ZWRTY29wZSgpOwogICAgIHByaXZhdGU6Ci0gICAgICAg
IENvbnRlbnRDaGFuZ2VPYnNlcnZlciogbV9jb250ZW50Q2hhbmdlT2JzZXJ2ZXIgeyBudWxscHRy
IH07CisgICAgICAgIENvbnRlbnRDaGFuZ2VPYnNlcnZlciYgbV9jb250ZW50Q2hhbmdlT2JzZXJ2
ZXI7CiAgICAgfTsKIAogICAgIGNsYXNzIFN0eWxlUmVjYWxjU2NvcGUgewogICAgIHB1YmxpYzoK
LSAgICAgICAgU3R5bGVSZWNhbGNTY29wZShQYWdlKik7CisgICAgICAgIFN0eWxlUmVjYWxjU2Nv
cGUoRG9jdW1lbnQmKTsKICAgICAgICAgflN0eWxlUmVjYWxjU2NvcGUoKTsKICAgICBwcml2YXRl
OgotICAgICAgICBDb250ZW50Q2hhbmdlT2JzZXJ2ZXIqIG1fY29udGVudENoYW5nZU9ic2VydmVy
IHsgbnVsbHB0ciB9OworICAgICAgICBDb250ZW50Q2hhbmdlT2JzZXJ2ZXImIG1fY29udGVudENo
YW5nZU9ic2VydmVyOwogICAgIH07CiAKICAgICBjbGFzcyBET01UaW1lclNjb3BlIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIERPTVRpbWVyU2NvcGUoUGFnZSosIGNvbnN0IERPTVRpbWVyJik7Cisg
ICAgICAgIERPTVRpbWVyU2NvcGUoRG9jdW1lbnQqLCBjb25zdCBET01UaW1lciYpOwogICAgICAg
ICB+RE9NVGltZXJTY29wZSgpOwogICAgIHByaXZhdGU6CiAgICAgICAgIENvbnRlbnRDaGFuZ2VP
YnNlcnZlciogbV9jb250ZW50Q2hhbmdlT2JzZXJ2ZXIgeyBudWxscHRyIH07CkBAIC0xMzAsNyAr
MTMwLDcgQEAgcHJpdmF0ZToKICAgICB9OwogICAgIHZvaWQgYWRqdXN0T2JzZXJ2ZWRTdGF0ZShF
dmVudCk7CiAKLSAgICBQYWdlJiBtX3BhZ2U7CisgICAgRG9jdW1lbnQmIG1fZG9jdW1lbnQ7CiAg
ICAgSGFzaFNldDxjb25zdCBET01UaW1lcio+IG1fRE9NVGltZXJMaXN0OwogICAgIGJvb2wgbV9z
aG91bGRPYnNlcnZlU3R5bGVSZWNhbGMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc09ic2Vydmlu
Z0RPTVRpbWVyU2NoZWR1bGluZyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2lvcy9FdmVudEhhbmRsZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9F
dmVudEhhbmRsZXJJT1MubW0KaW5kZXggNGY3MDAzYjAzOGYxYWNlNTg5OTY2NmQ0NGJiNTRjNWZh
NjdmMWMyYy4uZDAwNmQ0MTZmN2UwNGIxYjQwZTA4ZGQzZjgyNGQ3NGJjNTM5YTcxYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRXZlbnRIYW5kbGVySU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0V2ZW50SGFuZGxlcklPUy5tbQpAQCAtNDk2LDcgKzQ5Niw3
IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjptb3VzZU1vdmVkKFdlYkV2ZW50ICpldmVudCkKICAgICBk
b2N1bWVudC51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAgICAgQ3VycmVudEV2ZW50U2NvcGUgc2Nv
cGUoZXZlbnQpOwogICAgIHsKLSAgICAgICAgQ29udGVudENoYW5nZU9ic2VydmVyOjpNb3VzZU1v
dmVkU2NvcGUgb2JzZXJ2aW5nU2NvcGUoZG9jdW1lbnQucGFnZSgpKTsKKyAgICAgICAgQ29udGVu
dENoYW5nZU9ic2VydmVyOjpNb3VzZU1vdmVkU2NvcGUgb2JzZXJ2aW5nU2NvcGUoZG9jdW1lbnQp
OwogICAgICAgICBldmVudC53YXNIYW5kbGVkID0gbW91c2VNb3ZlZChjdXJyZW50UGxhdGZvcm1N
b3VzZUV2ZW50KCkpOwogICAgICAgICAvLyBSdW4gc3R5bGUgcmVjYWxjIHRvIGJlIGFibGUgdG8g
Y2FwdHVyZSBjb250ZW50IGNoYW5nZXMgYXMgdGhlIHJlc3VsdCBvZiB0aGUgbW91c2UgbW92ZSBl
dmVudC4KICAgICAgICAgZG9jdW1lbnQudXBkYXRlU3R5bGVJZk5lZWRlZCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5j
cHAKaW5kZXggYzVmNDM1MDliNWMwNTE2NDBlOWM4NzQ1OWNiNWU5ODkzMWZiZDdlMi4uZGMxYzQx
ZjUxNmM2NzMwMzRiNzY0MGI3ODA0MzA0NWRiOTYxOGMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCkBAIC0y
OTMsNyArMjkzLDcgQEAgdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlUmVuZGVyZXJTdHls
ZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgUmVuZGVyU3R5bGUKIHZvaWQgUmVuZGVyVHJlZVVw
ZGF0ZXI6OnVwZGF0ZUVsZW1lbnRSZW5kZXJlcihFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTdHls
ZTo6RWxlbWVudFVwZGF0ZSYgdXBkYXRlKQogewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0g
ICAgQ29udGVudENoYW5nZU9ic2VydmVyOjpTdHlsZUNoYW5nZVNjb3BlIG9ic2VydmluZ1Njb3Bl
KG1fZG9jdW1lbnQucGFnZSgpLCBlbGVtZW50KTsKKyAgICBDb250ZW50Q2hhbmdlT2JzZXJ2ZXI6
OlN0eWxlQ2hhbmdlU2NvcGUgb2JzZXJ2aW5nU2NvcGUobV9kb2N1bWVudCwgZWxlbWVudCk7CiAj
ZW5kaWYKIAogICAgIGJvb2wgc2hvdWxkVGVhckRvd25SZW5kZXJlcnMgPSB1cGRhdGUuY2hhbmdl
ID09IFN0eWxlOjpEZXRhY2ggJiYgKGVsZW1lbnQucmVuZGVyZXIoKSB8fCBlbGVtZW50Lmhhc0Rp
c3BsYXlDb250ZW50cygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaAppbmRleCBmYzlmOWY1YTM4YzczZjhlZjVjNmI3OWE0NDA5ZTQ1ZWVkMzI4NDlmLi5kMjFl
YWZiYzUyMzUyYzI1NzI3OWY4ZjMyZWE2NTYzOTA4ZWI2YTkyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xMTg5LDggKzExODksOCBAQCBwcml2YXRl
OgogICAgIFJlZlB0cjxXZWJDb3JlOjpSYW5nZT4gcmFuZ2VGb3JXZWJTZWxlY3Rpb25BdFBvc2l0
aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgY29uc3QgV2ViQ29yZTo6VmlzaWJsZVBvc2l0
aW9uJiwgU2VsZWN0aW9uRmxhZ3MmKTsKICAgICB2b2lkIGdldEZvY3VzZWRFbGVtZW50SW5mb3Jt
YXRpb24oRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbiYpOwogICAgIHZvaWQgcGxhdGZvcm1Jbml0
aWFsaXplQWNjZXNzaWJpbGl0eSgpOwotICAgIHZvaWQgaGFuZGxlU3ludGhldGljQ2xpY2soV2Vi
Q29yZTo6Tm9kZSogbm9kZVJlc3BvbmRpbmdUb0NsaWNrLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBv
aW50JiBsb2NhdGlvbiwgT3B0aW9uU2V0PFdlYktpdDo6V2ViRXZlbnQ6Ok1vZGlmaWVyPik7Ci0g
ICAgdm9pZCBjb21wbGV0ZVN5bnRoZXRpY0NsaWNrKFdlYkNvcmU6Ok5vZGUqIG5vZGVSZXNwb25k
aW5nVG9DbGljaywgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgbG9jYXRpb24sIE9wdGlvblNl
dDxXZWJLaXQ6OldlYkV2ZW50OjpNb2RpZmllcj4sIFdlYkNvcmU6OlN5bnRoZXRpY0NsaWNrVHlw
ZSk7CisgICAgdm9pZCBoYW5kbGVTeW50aGV0aWNDbGljayhXZWJDb3JlOjpOb2RlJiBub2RlUmVz
cG9uZGluZ1RvQ2xpY2ssIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGxvY2F0aW9uLCBPcHRp
b25TZXQ8V2ViS2l0OjpXZWJFdmVudDo6TW9kaWZpZXI+KTsKKyAgICB2b2lkIGNvbXBsZXRlU3lu
dGhldGljQ2xpY2soV2ViQ29yZTo6Tm9kZSYgbm9kZVJlc3BvbmRpbmdUb0NsaWNrLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFBvaW50JiBsb2NhdGlvbiwgT3B0aW9uU2V0PFdlYktpdDo6V2ViRXZlbnQ6
Ok1vZGlmaWVyPiwgV2ViQ29yZTo6U3ludGhldGljQ2xpY2tUeXBlKTsKICAgICB2b2lkIHNlbmRU
YXBIaWdobGlnaHRGb3JOb2RlSWZOZWNlc3NhcnkodWludDY0X3QgcmVxdWVzdElELCBXZWJDb3Jl
OjpOb2RlKik7CiAgICAgdm9pZCByZXNldFRleHRBdXRvc2l6aW5nKCk7CiAgICAgV2ViQ29yZTo6
VmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkluRm9jdXNlZE5vZGVGb3JQb2ludChjb25z
dCBXZWJDb3JlOjpGcmFtZSYsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgYm9vbCBpc0ludGVy
YWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggYmJjZTIwZmRhZDBkZDE5N2MzMWY2
ODkzMDQzZDhlMWI5MTMxODczNy4uNDJlZTc1N2ExYzZmYzRiYTY4MmFiOGE3M2IyMWZlYjEwMDRm
MTAyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW0KQEAgLTUzNSwyMCArNTM1LDE5IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlU2Vs
ZWN0aW9uQXBwZWFyYW5jZSgpCiAgICAgICAgIGRpZENoYW5nZVNlbGVjdGlvbigpOwogfQogCi12
b2lkIFdlYlBhZ2U6OmhhbmRsZVN5bnRoZXRpY0NsaWNrKE5vZGUqIG5vZGVSZXNwb25kaW5nVG9D
bGljaywgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgbG9jYXRpb24sIE9wdGlvblNldDxXZWJF
dmVudDo6TW9kaWZpZXI+IG1vZGlmaWVycykKK3ZvaWQgV2ViUGFnZTo6aGFuZGxlU3ludGhldGlj
Q2xpY2soTm9kZSYgbm9kZVJlc3BvbmRpbmdUb0NsaWNrLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBv
aW50JiBsb2NhdGlvbiwgT3B0aW9uU2V0PFdlYkV2ZW50OjpNb2RpZmllcj4gbW9kaWZpZXJzKQog
ewogICAgIEludFBvaW50IHJvdW5kZWRBZGp1c3RlZFBvaW50ID0gcm91bmRlZEludFBvaW50KGxv
Y2F0aW9uKTsKLSAgICBhdXRvJiBtYWluZnJhbWUgPSBtX3BhZ2UtPm1haW5GcmFtZSgpOwotICAg
IGF1dG8mIGNvbnRlbnRDaGFuZ2VPYnNlcnZlciA9IG1fcGFnZS0+Y29udGVudENoYW5nZU9ic2Vy
dmVyKCk7Ci0KKyAgICBhdXRvJiByZXNwb25kaW5nRG9jdW1lbnQgPSBub2RlUmVzcG9uZGluZ1Rv
Q2xpY2suZG9jdW1lbnQoKTsKICAgICAvLyBGSVhNRTogUGFzcyBjYXBzIGxvY2sgc3RhdGUuCiAg
ICAgYm9vbCBzaGlmdEtleSA9IG1vZGlmaWVycy5jb250YWlucyhXZWJFdmVudDo6TW9kaWZpZXI6
OlNoaWZ0S2V5KTsKICAgICBib29sIGN0cmxLZXkgPSBtb2RpZmllcnMuY29udGFpbnMoV2ViRXZl
bnQ6Ok1vZGlmaWVyOjpDb250cm9sS2V5KTsKICAgICBib29sIGFsdEtleSA9IG1vZGlmaWVycy5j
b250YWlucyhXZWJFdmVudDo6TW9kaWZpZXI6OkFsdEtleSk7CiAgICAgYm9vbCBtZXRhS2V5ID0g
bW9kaWZpZXJzLmNvbnRhaW5zKFdlYkV2ZW50OjpNb2RpZmllcjo6TWV0YUtleSk7CiAgICAgewot
ICAgICAgICBMT0dfV0lUSF9TVFJFQU0oQ29udGVudE9ic2VydmF0aW9uLCBzdHJlYW0gPDwgImhh
bmRsZVN5bnRoZXRpY0NsaWNrOiBub2RlKCIgPDwgbm9kZVJlc3BvbmRpbmdUb0NsaWNrIDw8ICIp
ICIgPDwgbG9jYXRpb24pOwotICAgICAgICBDb250ZW50Q2hhbmdlT2JzZXJ2ZXI6Ok1vdXNlTW92
ZWRTY29wZSBvYnNlcnZpbmdTY29wZShtX3BhZ2UuZ2V0KCkpOworICAgICAgICBMT0dfV0lUSF9T
VFJFQU0oQ29udGVudE9ic2VydmF0aW9uLCBzdHJlYW0gPDwgImhhbmRsZVN5bnRoZXRpY0NsaWNr
OiBub2RlKCIgPDwgJm5vZGVSZXNwb25kaW5nVG9DbGljayA8PCAiKSAiIDw8IGxvY2F0aW9uKTsK
KyAgICAgICAgQ29udGVudENoYW5nZU9ic2VydmVyOjpNb3VzZU1vdmVkU2NvcGUgb2JzZXJ2aW5n
U2NvcGUocmVzcG9uZGluZ0RvY3VtZW50KTsKKyAgICAgICAgYXV0byYgbWFpbmZyYW1lID0gbV9w
YWdlLT5tYWluRnJhbWUoKTsKICAgICAgICAgbWFpbmZyYW1lLmV2ZW50SGFuZGxlcigpLm1vdXNl
TW92ZWQoUGxhdGZvcm1Nb3VzZUV2ZW50KHJvdW5kZWRBZGp1c3RlZFBvaW50LCByb3VuZGVkQWRq
dXN0ZWRQb2ludCwgTm9CdXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQsIDAsIHNoaWZ0
S2V5LCBjdHJsS2V5LCBhbHRLZXksIG1ldGFLZXksIFdhbGxUaW1lOjpub3coKSwgV2ViQ29yZTo6
Rm9yY2VBdENsaWNrLCBXZWJDb3JlOjpOb1RhcCkpOwogICAgICAgICBtYWluZnJhbWUuZG9jdW1l
bnQoKS0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOwogICAgIH0KQEAgLTU2MCwxNCArNTU5LDE0IEBA
IHZvaWQgV2ViUGFnZTo6aGFuZGxlU3ludGhldGljQ2xpY2soTm9kZSogbm9kZVJlc3BvbmRpbmdU
b0NsaWNrLCBjb25zdCBXZWJDb3JlOjpGCiAgICAgaWYgKG1faXNDbG9zZWQpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIHN3aXRjaCAoY29udGVudENoYW5nZU9ic2VydmVyLm9ic2VydmVkQ29udGVu
dENoYW5nZSgpKSB7CisgICAgc3dpdGNoIChyZXNwb25kaW5nRG9jdW1lbnQuY29udGVudENoYW5n
ZU9ic2VydmVyKCkub2JzZXJ2ZWRDb250ZW50Q2hhbmdlKCkpIHsKICAgICBjYXNlIFdLQ29udGVu
dFZpc2liaWxpdHlDaGFuZ2U6CiAgICAgICAgIC8vIFRoZSBtb3ZlIGV2ZW50IGNhdXNlZCBuZXcg
Y29udGVudHMgdG8gYXBwZWFyLiBEb24ndCBzZW5kIHRoZSBjbGljayBldmVudC4KICAgICAgICAg
TE9HKENvbnRlbnRPYnNlcnZhdGlvbiwgImhhbmRsZVN5bnRoZXRpY0NsaWNrOiBPYnNlcnZlZCBt
ZWFuaW5nZnVsIHZpc2libGUgY2hhbmdlIC0+IGhvdmVyLiIpOwogICAgICAgICByZXR1cm47CiAg
ICAgY2FzZSBXS0NvbnRlbnRJbmRldGVybWluYXRlQ2hhbmdlOiB7CiAgICAgICAgIC8vIFdhaXQg
Zm9yIGNhbGxiYWNrIHRvIGNvbXBsZXRlUGVuZGluZ1N5bnRoZXRpY0NsaWNrRm9yQ29udGVudENo
YW5nZU9ic2VydmVyKCkgdG8gZGVjaWRlIHdoZXRoZXIgdG8gc2VuZCB0aGUgY2xpY2sgZXZlbnQu
Ci0gICAgICAgIG1fcGVuZGluZ1N5bnRoZXRpY0NsaWNrTm9kZSA9IG5vZGVSZXNwb25kaW5nVG9D
bGljazsKKyAgICAgICAgbV9wZW5kaW5nU3ludGhldGljQ2xpY2tOb2RlID0gJm5vZGVSZXNwb25k
aW5nVG9DbGljazsKICAgICAgICAgbV9wZW5kaW5nU3ludGhldGljQ2xpY2tMb2NhdGlvbiA9IGxv
Y2F0aW9uOwogICAgICAgICBtX3BlbmRpbmdTeW50aGV0aWNDbGlja01vZGlmaWVycyA9IG1vZGlm
aWVyczsKICAgICAgICAgTE9HKENvbnRlbnRPYnNlcnZhdGlvbiwgImhhbmRsZVN5bnRoZXRpY0Ns
aWNrOiBPYnNlcnZlZCBzb21lIGNoYW5nZSwgYnV0IGNhbid0IGRlY2lkZSBpdCB5ZXQgLT4gd2Fp
dC4iKTsKQEAgLTU4NSwxMCArNTg0LDExIEBAIHZvaWQgV2ViUGFnZTo6Y29tcGxldGVQZW5kaW5n
U3ludGhldGljQ2xpY2tGb3JDb250ZW50Q2hhbmdlT2JzZXJ2ZXIoKQogICAgIExPR19XSVRIX1NU
UkVBTShDb250ZW50T2JzZXJ2YXRpb24sIHN0cmVhbSA8PCAiY29tcGxldGVQZW5kaW5nU3ludGhl
dGljQ2xpY2tGb3JDb250ZW50Q2hhbmdlT2JzZXJ2ZXI6IHBlbmRpbmcgdGFyZ2V0IG5vZGUoIiA8
PCBtX3BlbmRpbmdTeW50aGV0aWNDbGlja05vZGUgPDwgIikiKTsKICAgICBpZiAoIW1fcGVuZGlu
Z1N5bnRoZXRpY0NsaWNrTm9kZSkKICAgICAgICAgcmV0dXJuOworICAgIGF1dG8gb2JzZXJ2ZWRD
b250ZW50Q2hhbmdlID0gbV9wZW5kaW5nU3ludGhldGljQ2xpY2tOb2RlLT5kb2N1bWVudCgpLmNv
bnRlbnRDaGFuZ2VPYnNlcnZlcigpLm9ic2VydmVkQ29udGVudENoYW5nZSgpOwogICAgIC8vIE9u
bHkgZGlzcGF0Y2ggdGhlIGNsaWNrIGlmIHRoZSBkb2N1bWVudCBkaWRuJ3QgZ2V0IGNoYW5nZWQg
YnkgYW55IHRpbWVycyBzdGFydGVkIGJ5IHRoZSBtb3ZlIGV2ZW50LgotICAgIGlmIChtX3BhZ2Ut
PmNvbnRlbnRDaGFuZ2VPYnNlcnZlcigpLm9ic2VydmVkQ29udGVudENoYW5nZSgpID09IFdLQ29u
dGVudE5vQ2hhbmdlKSB7CisgICAgaWYgKG9ic2VydmVkQ29udGVudENoYW5nZSA9PSBXS0NvbnRl
bnROb0NoYW5nZSkgewogICAgICAgICBMT0coQ29udGVudE9ic2VydmF0aW9uLCAiTm8gY2hhZ2Ug
d2FzIG9ic2VydmVkIC0+IGNsaWNrLiIpOwotICAgICAgICBjb21wbGV0ZVN5bnRoZXRpY0NsaWNr
KG1fcGVuZGluZ1N5bnRoZXRpY0NsaWNrTm9kZS5nZXQoKSwgbV9wZW5kaW5nU3ludGhldGljQ2xp
Y2tMb2NhdGlvbiwgbV9wZW5kaW5nU3ludGhldGljQ2xpY2tNb2RpZmllcnMsIFdlYkNvcmU6Ok9u
ZUZpbmdlclRhcCk7CisgICAgICAgIGNvbXBsZXRlU3ludGhldGljQ2xpY2soKm1fcGVuZGluZ1N5
bnRoZXRpY0NsaWNrTm9kZSwgbV9wZW5kaW5nU3ludGhldGljQ2xpY2tMb2NhdGlvbiwgbV9wZW5k
aW5nU3ludGhldGljQ2xpY2tNb2RpZmllcnMsIFdlYkNvcmU6Ok9uZUZpbmdlclRhcCk7CiAgICAg
fSBlbHNlCiAgICAgICAgIExPRyhDb250ZW50T2JzZXJ2YXRpb24sICJPYnNlcnZlZCBtZWFuaW5n
ZnVsIHZpc2libGUgY2hhbmdlIC0+IGhvdmVyLiIpOwogCkBAIC01OTcsNyArNTk3LDcgQEAgdm9p
ZCBXZWJQYWdlOjpjb21wbGV0ZVBlbmRpbmdTeW50aGV0aWNDbGlja0ZvckNvbnRlbnRDaGFuZ2VP
YnNlcnZlcigpCiAgICAgbV9wZW5kaW5nU3ludGhldGljQ2xpY2tNb2RpZmllcnMgPSB7IH07CiB9
CiAKLXZvaWQgV2ViUGFnZTo6Y29tcGxldGVTeW50aGV0aWNDbGljayhOb2RlKiBub2RlUmVzcG9u
ZGluZ1RvQ2xpY2ssIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGxvY2F0aW9uLCBPcHRpb25T
ZXQ8V2ViRXZlbnQ6Ok1vZGlmaWVyPiBtb2RpZmllcnMsIFN5bnRoZXRpY0NsaWNrVHlwZSBzeW50
aGV0aWNDbGlja1R5cGUpCit2b2lkIFdlYlBhZ2U6OmNvbXBsZXRlU3ludGhldGljQ2xpY2soTm9k
ZSYgbm9kZVJlc3BvbmRpbmdUb0NsaWNrLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBsb2Nh
dGlvbiwgT3B0aW9uU2V0PFdlYkV2ZW50OjpNb2RpZmllcj4gbW9kaWZpZXJzLCBTeW50aGV0aWND
bGlja1R5cGUgc3ludGhldGljQ2xpY2tUeXBlKQogewogICAgIEludFBvaW50IHJvdW5kZWRBZGp1
c3RlZFBvaW50ID0gcm91bmRlZEludFBvaW50KGxvY2F0aW9uKTsKICAgICBGcmFtZSYgbWFpbmZy
YW1lID0gbV9wYWdlLT5tYWluRnJhbWUoKTsKQEAgLTYzNCw3ICs2MzQsNyBAQCB2b2lkIFdlYlBh
Z2U6OmNvbXBsZXRlU3ludGhldGljQ2xpY2soTm9kZSogbm9kZVJlc3BvbmRpbmdUb0NsaWNrLCBj
b25zdCBXZWJDb3JlOgogICAgIGlmIChuZXdGb2N1c2VkRWxlbWVudCAmJiBuZXdGb2N1c2VkRWxl
bWVudCA9PSBvbGRGb2N1c2VkRWxlbWVudCkKICAgICAgICAgZWxlbWVudERpZFJlZm9jdXMoKm5l
d0ZvY3VzZWRFbGVtZW50KTsKIAotICAgIGlmICghdGFwV2FzSGFuZGxlZCB8fCAhbm9kZVJlc3Bv
bmRpbmdUb0NsaWNrIHx8ICFub2RlUmVzcG9uZGluZ1RvQ2xpY2stPmlzRWxlbWVudE5vZGUoKSkK
KyAgICBpZiAoIXRhcFdhc0hhbmRsZWQgfHwgIW5vZGVSZXNwb25kaW5nVG9DbGljay5pc0VsZW1l
bnROb2RlKCkpCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkTm90SGFu
ZGxlVGFwQXNDbGljayhyb3VuZGVkSW50UG9pbnQobG9jYXRpb24pKSk7CiAgICAgCiAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRDb21wbGV0ZVN5bnRoZXRpY0NsaWNrKCkpOwpA
QCAtNjU3LDcgKzY1Nyw3IEBAIHZvaWQgV2ViUGFnZTo6aGFuZGxlVGFwKGNvbnN0IEludFBvaW50
JiBwb2ludCwgT3B0aW9uU2V0PFdlYkV2ZW50OjpNb2RpZmllcj4gbW9kCiAgICAgfQogI2VuZGlm
CiAgICAgZWxzZQotICAgICAgICBoYW5kbGVTeW50aGV0aWNDbGljayhub2RlUmVzcG9uZGluZ1Rv
Q2xpY2ssIGFkanVzdGVkUG9pbnQsIG1vZGlmaWVycyk7CisgICAgICAgIGhhbmRsZVN5bnRoZXRp
Y0NsaWNrKCpub2RlUmVzcG9uZGluZ1RvQ2xpY2ssIGFkanVzdGVkUG9pbnQsIG1vZGlmaWVycyk7
CiB9CiAKIHZvaWQgV2ViUGFnZTo6cmVxdWVzdEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24oV2Vi
S2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCkBAIC03NjgsNyArNzY4LDcgQEAgdm9pZCBXZWJQ
YWdlOjpoYW5kbGVUd29GaW5nZXJUYXBBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBw
b2ludCwgT3B0aW9uU2UKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRO
b3RIYW5kbGVUYXBBc0NsaWNrKHJvdW5kZWRJbnRQb2ludChhZGp1c3RlZFBvaW50KSkpOwogICAg
IH0gZWxzZQogI2VuZGlmCi0gICAgICAgIGNvbXBsZXRlU3ludGhldGljQ2xpY2sobm9kZVJlc3Bv
bmRpbmdUb0NsaWNrLCBhZGp1c3RlZFBvaW50LCBtb2RpZmllcnMsIFdlYkNvcmU6OlR3b0Zpbmdl
clRhcCk7CisgICAgICAgIGNvbXBsZXRlU3ludGhldGljQ2xpY2soKm5vZGVSZXNwb25kaW5nVG9D
bGljaywgYWRqdXN0ZWRQb2ludCwgbW9kaWZpZXJzLCBXZWJDb3JlOjpUd29GaW5nZXJUYXApOwog
fQogCiB2b2lkIFdlYlBhZ2U6OmhhbmRsZVN0eWx1c1NpbmdsZVRhcEF0UG9pbnQoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIHBvaW50LCB1aW50NjRfdCByZXF1ZXN0SUQpCkBAIC04MzcsNyArODM3
LDcgQEAgdm9pZCBXZWJQYWdlOjpjb21taXRQb3RlbnRpYWxUYXAoT3B0aW9uU2V0PFdlYkV2ZW50
OjpNb2RpZmllcj4gbW9kaWZpZXJzLCB1aW50NjQKICAgICAgICAgICAgIGNvbW1pdFBvdGVudGlh
bFRhcEZhaWxlZCgpOwogICAgICAgICB9IGVsc2UKICNlbmRpZgotICAgICAgICAgICAgaGFuZGxl
U3ludGhldGljQ2xpY2sobm9kZVJlc3BvbmRpbmdUb0NsaWNrLCBhZGp1c3RlZFBvaW50LCBtb2Rp
ZmllcnMpOworICAgICAgICAgICAgaGFuZGxlU3ludGhldGljQ2xpY2soKm5vZGVSZXNwb25kaW5n
VG9DbGljaywgYWRqdXN0ZWRQb2ludCwgbW9kaWZpZXJzKTsKICAgICB9IGVsc2UKICAgICAgICAg
Y29tbWl0UG90ZW50aWFsVGFwRmFpbGVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5tbQppbmRl
eCA4OGNjZWM5MDZmMDk2YmU1ZjkyYTg3NzA5NmIzYzU2NzFmODYxMThlLi43ODY0MzFmNzIyMDc2
Y2U0YzgzZGNjYTdjMmQ1Y2U5MWNiYzA4ZjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLm1tCkBA
IC0xODQsOSArMTg0LDkgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnRJT1M6OnNldE5lZWRzU2Nyb2xs
Tm90aWZpY2F0aW9ucyhXZWJDb3JlOjpGcmFtZSYgZnJhbWUsIGJvb2wKIAogdm9pZCBXZWJDaHJv
bWVDbGllbnRJT1M6Om9ic2VydmVkQ29udGVudENoYW5nZShXZWJDb3JlOjpGcmFtZSYgZnJhbWUp
CiB7Ci0gICAgaWYgKCFmcmFtZS5wYWdlKCkpCisgICAgaWYgKCFmcmFtZS5kb2N1bWVudCgpKQog
ICAgICAgICByZXR1cm47Ci0gICAgW1t3ZWJWaWV3KCkgX1VJS2l0RGVsZWdhdGVGb3J3YXJkZXJd
IHdlYlZpZXc6d2ViVmlldygpIGRpZE9ic2VydmVEZWZlcnJlZENvbnRlbnRDaGFuZ2U6ZnJhbWUu
cGFnZSgpLT5jb250ZW50Q2hhbmdlT2JzZXJ2ZXIoKS5vYnNlcnZlZENvbnRlbnRDaGFuZ2UoKSBm
b3JGcmFtZTpraXQoJmZyYW1lKV07CisgICAgW1t3ZWJWaWV3KCkgX1VJS2l0RGVsZWdhdGVGb3J3
YXJkZXJdIHdlYlZpZXc6d2ViVmlldygpIGRpZE9ic2VydmVEZWZlcnJlZENvbnRlbnRDaGFuZ2U6
ZnJhbWUuZG9jdW1lbnQoKS0+Y29udGVudENoYW5nZU9ic2VydmVyKCkub2JzZXJ2ZWRDb250ZW50
Q2hhbmdlKCkgZm9yRnJhbWU6a2l0KCZmcmFtZSldOwogfQogCiBzdGF0aWMgaW5saW5lIE5TU3Ry
aW5nICpuYW1lRm9yVmlld3BvcnRGaXRWYWx1ZShWaWV3cG9ydEZpdCB2YWx1ZSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363483</attachid>
            <date>2019-03-03 21:26:43 -0800</date>
            <delta_ts>2019-03-03 22:05:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195256-20190303212642.patch</filename>
            <type>text/plain</type>
            <size>33770</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyMzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjRlMzAxZjY3MDJmMTgy
YWRkYjdmMGY1YzU4NmJmNzQzNDQ2YjRhYi4uNWE2ZmU3MzI3MGMxMmJiNDQyNzhmNDgwZjlmNjQ1
NDlhZWYzZTk5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDE5LTAzLTAzICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvbnRlbnRDaGFuZ2VPYnNl
cnZlcl0gQ29udGVudCBvYnNlcnZhdGlvbiBzaG91bGQgYmUgbGltaXRlZCB0byB0aGUgY3VycmVu
dCBkb2N1bWVudC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5NTI1NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDg1NDQ0MDI+CisKKyAgICAgICAg
TW92ZSBDb250ZW50Q2hhbmdlT2JzZXJ2ZXIgZnJvbSBQYWdlIHRvIERvY3VtZW50LgorICAgICAg
ICBJdCBsaW1pdHMgY29udGVudCBvYnNlcnZhdGlvbiB0byB0aGUgdGFyZ2V0IG5vZGUncyBvd25l
ciBkb2N1bWVudC4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAg
ICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bV9jb250ZW50Q2hhbmdl
T2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnVwZGF0ZVN0eWxlSWZOZWVk
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndpbGxEZXRhY2hQYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50OjpwbGF0Zm9ybVN1c3BlbmRPclN0b3BBY3RpdmVET01PYmpl
Y3RzKToKKyAgICAgICAgKFdlYkNvcmU6Om1fdW5kb01hbmFnZXIpOiBEZWxldGVkLgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNvbnRlbnRD
aGFuZ2VPYnNlcnZlcik6CisgICAgICAgICogcGFnZS9ET01UaW1lci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpET01UaW1lcjo6aW5zdGFsbCk6CisgICAgICAgIChXZWJDb3JlOjpET01UaW1lcjo6
cmVtb3ZlQnlJZCk6CisgICAgICAgIChXZWJDb3JlOjpET01UaW1lcjo6ZmlyZWQpOgorICAgICAg
ICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OndpbGxEZXRhY2hQ
YWdlKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6
UGFnZSk6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpw
b2ludGVyTG9ja0NvbnRyb2xsZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6Y29u
dGVudENoYW5nZU9ic2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL2lvcy9Db250ZW50
Q2hhbmdlT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudENoYW5nZU9ic2Vy
dmVyOjpDb250ZW50Q2hhbmdlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudENo
YW5nZU9ic2VydmVyOjpkaWRJbnN0YWxsRE9NVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudENoYW5nZU9ic2VydmVyOjpzdG9wT2JzZXJ2aW5nRE9NVGltZXJFeGVjdXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRDaGFuZ2VPYnNlcnZlcjo6c3RvcE9ic2VydmluZ1N0eWxlUmVj
YWxjKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRDaGFuZ2VPYnNlcnZlcjo6Y2xlYXJUaW1l
cnNBbmRSZXBvcnRDb250ZW50Q2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRDaGFu
Z2VPYnNlcnZlcjo6c3RhcnRPYnNlcnZpbmdNb3VzZU1vdmVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRDaGFuZ2VPYnNlcnZlcjo6aGFzRGV0ZXJtaW5hdGVTdGF0ZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50Q2hhbmdlT2JzZXJ2ZXI6OmFkanVzdE9ic2VydmVkU3RhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudENoYW5nZU9ic2VydmVyOjpub3RpZnlDb250ZW50
Q2hhbmdlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudENoYW5nZU9ic2VydmVy
OjpTdHlsZUNoYW5nZVNjb3BlOjpTdHlsZUNoYW5nZVNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRDaGFuZ2VPYnNlcnZlcjo6U3R5bGVDaGFuZ2VTY29wZTo6flN0eWxlQ2hhbmdlU2Nv
cGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudENoYW5nZU9ic2VydmVyOjpNb3VzZU1vdmVk
U2NvcGU6Ok1vdXNlTW92ZWRTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50Q2hhbmdl
T2JzZXJ2ZXI6Ok1vdXNlTW92ZWRTY29wZTo6fk1vdXNlTW92ZWRTY29wZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50Q2hhbmdlT2JzZXJ2ZXI6OlN0eWxlUmVjYWxjU2NvcGU6OlN0eWxlUmVj
YWxjU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudENoYW5nZU9ic2VydmVyOjpTdHls
ZVJlY2FsY1Njb3BlOjp+U3R5bGVSZWNhbGNTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50Q2hhbmdlT2JzZXJ2ZXI6OkRPTVRpbWVyU2NvcGU6OkRPTVRpbWVyU2NvcGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudENoYW5nZU9ic2VydmVyOjpET01UaW1lclNjb3BlOjp+RE9NVGlt
ZXJTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpoYXNQZW5kaW5nU3R5bGVSZWNhbGMpOiBEZWxl
dGVkLgorICAgICAgICAqIHBhZ2UvaW9zL0NvbnRlbnRDaGFuZ2VPYnNlcnZlci5oOgorICAgICAg
ICAqIHBhZ2UvaW9zL0V2ZW50SGFuZGxlcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6bW91c2VNb3ZlZCk6CisgICAgICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRl
clRyZWVVcGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVVcGRhdGVyOjp1
cGRhdGVFbGVtZW50UmVuZGVyZXIpOgorCiAyMDE5LTAzLTAyICBaYWxhbiBCdWp0YXMgIDx6YWxh
bkBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvbnRlbnRDaGFuZ2VPYnNlcnZlcl0gSW50cm9kdWNl
IENvbnRlbnRDaGFuZ2VPYnNlcnZlcjo6TW91c2VNb3ZlZFNjb3BlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGMxMTE2
NTZiNTc5YmUyMGJkNTAxNmU5ZTliMWZjNDQxYWI1YjM3NGUuLjJhZDRmNThjNzZiMTFlOTNmNzcw
YWM2NjUxNWQ0MTJlZDBiOTc0MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTktMDMt
MDMgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29udGVudENo
YW5nZU9ic2VydmVyXSBDb250ZW50IG9ic2VydmF0aW9uIHNob3VsZCBiZSBsaW1pdGVkIHRvIHRo
ZSBjdXJyZW50IGRvY3VtZW50LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTk1MjU2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80ODU0NDQwMj4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aGFuZGxlU3ludGhldGljQ2xp
Y2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjb21wbGV0ZVBlbmRpbmdTeW50aGV0aWND
bGlja0ZvckNvbnRlbnRDaGFuZ2VPYnNlcnZlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmNvbXBsZXRlU3ludGhldGljQ2xpY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpoYW5k
bGVUYXApOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpoYW5kbGVUd29GaW5nZXJUYXBBdFBv
aW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y29tbWl0UG90ZW50aWFsVGFwKToKKwog
MjAxOS0wMy0wMiAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtD
b250ZW50Q2hhbmdlT2JzZXJ2ZXJdIEludHJvZHVjZSBDb250ZW50Q2hhbmdlT2JzZXJ2ZXI6Ok1v
dXNlTW92ZWRTY29wZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCmluZGV4IDBhMGZiYTM1ZTNm
OTZmNWQ3ZGJhMzg4ODFjNTk5N2Y4YzlmMDk3OGMuLjM0MmU5ODkxNDUyYjUyNDc3YTRlZmRkMDcz
MzFiMWE5MTBmNWI1NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NCBAQAorMjAxOS0wMy0wMyAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgorCisgICAg
ICAgIFtDb250ZW50Q2hhbmdlT2JzZXJ2ZXJdIENvbnRlbnQgb2JzZXJ2YXRpb24gc2hvdWxkIGJl
IGxpbWl0ZWQgdG8gdGhlIGN1cnJlbnQgZG9jdW1lbnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTUyNTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzQ4NTQ0NDAyPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5tbToKKyAgICAgICAgKFdlYkNo
cm9tZUNsaWVudElPUzo6b2JzZXJ2ZWRDb250ZW50Q2hhbmdlKToKKwogMjAxOS0wMi0yNiAgWmFs
YW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDb250ZW50Q2hhbmdlT2Jz
ZXJ2ZXJdIGNsZWFyQ29udGVudENoYW5nZU9ic2VydmVycyBzaG91bGQgYmUgaW50ZXJuYWwgdG8g
Q29udGVudENoYW5nZU9ic2VydmVyIGNsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBk
ZWQwZjljNmQ1NTQyODVlN2MzYjc0Nzc5MGE1NTQ3MzBlYTg0MDNlLi4xNDI5Mjc4NmNjOGVmZWVm
NWIxYTJmYzE1ZGM3MTBiZmVjMWMzMTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTIw
NTEsNyArMjA1MSw3IEBAIGJvb2wgRG9jdW1lbnQ6OnVwZGF0ZVN0eWxlSWZOZWVkZWQoKQogICAg
IH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgQ29udGVudENoYW5nZU9ic2VydmVy
OjpTdHlsZVJlY2FsY1Njb3BlIG9ic2VydmluZ1Njb3BlKHBhZ2UoKSk7CisgICAgQ29udGVudENo
YW5nZU9ic2VydmVyOjpTdHlsZVJlY2FsY1Njb3BlIG9ic2VydmluZ1Njb3BlKCp0aGlzKTsKICNl
bmRpZgogICAgIC8vIFRoZSBlYXJseSBleGl0IGFib3ZlIGZvciAhbmVlZHNTdHlsZVJlY2FsYygp
IGlzIG5lZWRlZCB3aGVuIHVwZGF0ZVdpZGdldFBvc2l0aW9ucygpIGlzIGNhbGxlZCBpbiBydW5P
clNjaGVkdWxlQXN5bmNocm9ub3VzVGFza3MoKS4KICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NF
Q1VSSVRZX0lNUExJQ0FUSU9OKGlzU2FmZVRvVXBkYXRlU3R5bGVPckxheW91dCgqdGhpcykpOwpA
QCAtMjM4Myw3ICsyMzgzLDkgQEAgdm9pZCBEb2N1bWVudDo6ZnJhbWVEZXN0cm95ZWQoKQogdm9p
ZCBEb2N1bWVudDo6d2lsbERldGFjaFBhZ2UoKQogewogICAgIEZyYW1lRGVzdHJ1Y3Rpb25PYnNl
cnZlcjo6d2lsbERldGFjaFBhZ2UoKTsKLQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAg
Y29udGVudENoYW5nZU9ic2VydmVyKCkud2lsbERldGFjaFBhZ2UoKTsKKyNlbmRpZgogICAgIGlm
IChkb21XaW5kb3coKSAmJiBmcmFtZSgpKQogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmZyYW1lV2luZG93RGlzY2FyZGVkKCpmcmFtZSgpLCBkb21XaW5kb3coKSk7CiB9CkBAIC0y
NjMyLDggKzI2MzQsNyBAQCBib29sIERvY3VtZW50OjpzaG91bGRCeXBhc3NNYWluV29ybGRDb250
ZW50U2VjdXJpdHlQb2xpY3koKSBjb25zdAogdm9pZCBEb2N1bWVudDo6cGxhdGZvcm1TdXNwZW5k
T3JTdG9wQWN0aXZlRE9NT2JqZWN0cygpCiB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAg
ICBpZiAoYXV0byogcGFnZSA9IHRoaXMtPnBhZ2UoKSkKLSAgICAgICAgcGFnZS0+Y29udGVudENo
YW5nZU9ic2VydmVyKCkuZGlkU3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoKTsKKyAgICBjb250ZW50
Q2hhbmdlT2JzZXJ2ZXIoKS5kaWRTdXNwZW5kQWN0aXZlRE9NT2JqZWN0cygpOwogI2VuZGlmCiB9
CiAKQEAgLTg2ODMsNCArODY4NCwxMyBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVUb3VjaEFjdGlv
bkVsZW1lbnRzKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdAogfQogI2Vu
ZGlmCiAKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorQ29udGVudENoYW5nZU9ic2VydmVyJiBE
b2N1bWVudDo6Y29udGVudENoYW5nZU9ic2VydmVyKCkKK3sKKyAgICBpZiAoIW1fY29udGVudENo
YW5nZU9ic2VydmVyKQorICAgICAgICBtX2NvbnRlbnRDaGFuZ2VPYnNlcnZlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q29udGVudENoYW5nZU9ic2VydmVyPigqdGhpcyk7CisgICAgcmV0dXJuICptX2Nv
bnRlbnRDaGFuZ2VPYnNlcnZlcjsgCit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA0YjVhYzMwZjI3MmViMmI3NjZjOWM5ZjBmNjljMjUx
ZTAyNmQ2NmRkLi40Y2E3MDExMmMxZDNhNjI5YmRkMzNhYzY5N2JkN2Q0ZDdhZTNiYmViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaApAQCAtOTksNiArOTksNyBAQCBjbGFzcyBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ7CiBjbGFzcyBDaGFyYWN0ZXJEYXRhOwogY2xhc3MgQ29tbWVudDsKIGNsYXNzIENv
bnN0YW50UHJvcGVydHlNYXA7CitjbGFzcyBDb250ZW50Q2hhbmdlT2JzZXJ2ZXI7CiBjbGFzcyBE
T01JbXBsZW1lbnRhdGlvbjsKIGNsYXNzIERPTVNlbGVjdGlvbjsKIGNsYXNzIERPTVdpbmRvdzsK
QEAgLTg3MSw2ICs4NzIsOCBAQCBwdWJsaWM6CiAKICAgICAvLyBDYWxsZWQgd2hlbiA8bWV0YSBu
YW1lPSJhcHBsZS1tb2JpbGUtd2ViLWFwcC1vcmllbnRhdGlvbnMiPiBjaGFuZ2VzLgogICAgIHZv
aWQgcHJvY2Vzc1dlYkFwcE9yaWVudGF0aW9ucygpOworCisgICAgQ29udGVudENoYW5nZU9ic2Vy
dmVyJiBjb250ZW50Q2hhbmdlT2JzZXJ2ZXIoKTsKICNlbmRpZgogICAgIAogICAgIHZvaWQgcHJv
Y2Vzc1ZpZXdwb3J0KGNvbnN0IFN0cmluZyYgZmVhdHVyZXMsIFZpZXdwb3J0QXJndW1lbnRzOjpU
eXBlIG9yaWdpbik7CkBAIC0yMDc3LDYgKzIwODAsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9p
c1J1bm5pbmdVc2VyU2NyaXB0cyB7IGZhbHNlIH07CiAKICAgICBSZWY8VW5kb01hbmFnZXI+IG1f
dW5kb01hbmFnZXI7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8Q29udGVudENoYW5nZU9ic2VydmVyPiBtX2NvbnRlbnRDaGFuZ2VPYnNlcnZlcjsKKyNlbmRp
ZgogfTsKIAogRWxlbWVudCogZXZlbnRUYXJnZXRFbGVtZW50Rm9yRG9jdW1lbnQoRG9jdW1lbnQq
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01UaW1lci5jcHAKaW5kZXggNTZjOWEyOTBlZDE3MzRkNjdmMmNlOWNj
M2E1Mjk5MWFkMWRmOTVjOS4uNjRmMjY1NDdhOWMzZmY0MDM5MGM1MDJhNzNhYWZiYmNmNDgzYjA0
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01UaW1lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01UaW1lci5jcHAKQEAgLTIyMiw4ICsyMjIsOCBAQCBpbnQgRE9N
VGltZXI6Omluc3RhbGwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgc3RkOjp1bmlx
dWVfcHRyPFNjaGVkdWxlZAogICAgIGlmIChOZXN0ZWRUaW1lcnNNYXAqIG5lc3RlZFRpbWVycyA9
IE5lc3RlZFRpbWVyc01hcDo6aW5zdGFuY2VGb3JDb250ZXh0KGNvbnRleHQpKQogICAgICAgICBu
ZXN0ZWRUaW1lcnMtPmFkZCh0aW1lci0+bV90aW1lb3V0SWQsICp0aW1lcik7CiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKLSAgICBpZiAoaXM8RG9jdW1lbnQ+KGNvbnRleHQpICYmIGRvd25jYXN0
PERvY3VtZW50Pihjb250ZXh0KS5wYWdlKCkpCi0gICAgICAgIGRvd25jYXN0PERvY3VtZW50Pihj
b250ZXh0KS5wYWdlKCktPmNvbnRlbnRDaGFuZ2VPYnNlcnZlcigpLmRpZEluc3RhbGxET01UaW1l
cigqdGltZXIsIHRpbWVvdXQsIHNpbmdsZVNob3QpOworICAgIGlmIChpczxEb2N1bWVudD4oY29u
dGV4dCkpCisgICAgICAgIGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KS5jb250ZW50Q2hhbmdl
T2JzZXJ2ZXIoKS5kaWRJbnN0YWxsRE9NVGltZXIoKnRpbWVyLCB0aW1lb3V0LCBzaW5nbGVTaG90
KTsKICNlbmRpZgogICAgIHJldHVybiB0aW1lci0+bV90aW1lb3V0SWQ7CiB9CkBAIC0yMzcsMTAg
KzIzNywxMCBAQCB2b2lkIERPTVRpbWVyOjpyZW1vdmVCeUlkKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIGludCB0aW1lb3V0SWQpCiAgICAgICAgIHJldHVybjsKIAogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCi0gICAgaWYgKGlzPERvY3VtZW50Pihjb250ZXh0KSAmJiBkb3duY2Fz
dDxEb2N1bWVudD4oY29udGV4dCkucGFnZSgpKSB7CisgICAgaWYgKGlzPERvY3VtZW50Pihjb250
ZXh0KSkgewogICAgICAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50Pihjb250
ZXh0KTsKICAgICAgICAgaWYgKGF1dG8qIHRpbWVyID0gZG9jdW1lbnQuZmluZFRpbWVvdXQodGlt
ZW91dElkKSkKLSAgICAgICAgICAgIGRvY3VtZW50LnBhZ2UoKS0+Y29udGVudENoYW5nZU9ic2Vy
dmVyKCkuZGlkUmVtb3ZlRE9NVGltZXIoKnRpbWVyKTsKKyAgICAgICAgICAgIGRvY3VtZW50LmNv
bnRlbnRDaGFuZ2VPYnNlcnZlcigpLmRpZFJlbW92ZURPTVRpbWVyKCp0aW1lcik7CiAgICAgfQog
I2VuZGlmCiAKQEAgLTM0Myw3ICszNDMsNyBAQCB2b2lkIERPTVRpbWVyOjpmaXJlZCgpCiAgICAg
ICAgIG5lc3RlZFRpbWVycy0+c3RhcnRUcmFja2luZygpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLSAgICBDb250ZW50Q2hhbmdlT2JzZXJ2ZXI6OkRPTVRpbWVyU2NvcGUgb2JzZXJ2aW5n
U2NvcGUoaXM8RG9jdW1lbnQ+KGNvbnRleHQpID8gZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQp
LnBhZ2UoKSA6IG51bGxwdHIsICp0aGlzKTsKKyAgICBDb250ZW50Q2hhbmdlT2JzZXJ2ZXI6OkRP
TVRpbWVyU2NvcGUgb2JzZXJ2aW5nU2NvcGUoaXM8RG9jdW1lbnQ+KGNvbnRleHQpID8gJmRvd25j
YXN0PERvY3VtZW50Pihjb250ZXh0KSA6IG51bGxwdHIsICp0aGlzKTsKICNlbmRpZgogICAgIG1f
YWN0aW9uLT5leGVjdXRlKGNvbnRleHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IDRmZTJi
Yzk2ZjVhYWQyOWE4NjEzMmU5OTBkNzg3ZDdjNmE1MzA0OTguLjdkNjBmZGZkYjljZjhkNDFlNGY2
MzkyZTg0ODRjZjIwZDg5YTdkNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC0xMDcsMTAgKzEw
Nyw2IEBACiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaD4KIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0jaW5jbHVkZSAi
Q29udGVudENoYW5nZU9ic2VydmVyLmgiCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtODQzLDExICs4MzksNiBAQCB2b2lkIEZy
YW1lOjp3aWxsRGV0YWNoUGFnZSgpCiAgICAgaWYgKHBhZ2UoKSAmJiBwYWdlKCktPnNjcm9sbGlu
Z0Nvb3JkaW5hdG9yKCkgJiYgbV92aWV3KQogICAgICAgICBwYWdlKCktPnNjcm9sbGluZ0Nvb3Jk
aW5hdG9yKCktPndpbGxEZXN0cm95U2Nyb2xsYWJsZUFyZWEoKm1fdmlldyk7CiAKLSNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQotICAgIGlmIChhdXRvKiBwYWdlID0gdGhpcy0+cGFnZSgpKQotICAg
ICAgICBwYWdlLT5jb250ZW50Q2hhbmdlT2JzZXJ2ZXIoKS53aWxsRGV0YWNoUGFnZSgpOwotI2Vu
ZGlmCi0KICAgICBzY3JpcHQoKS5jbGVhclNjcmlwdE9iamVjdHMoKTsKICAgICBzY3JpcHQoKS51
cGRhdGVQbGF0Zm9ybVNjcmlwdE9iamVjdHMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggZWM2
ZDYwZGRlYjA0MTMyOTQ5NjQ3NGM3MmZlYWE5MDg2YjEyNWY1MS4uYzdiMWIwMmQxMWNiZTc1NWFl
NmZmN2RhZjkyODM0NGZjZjYxZTg2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0xNDksMTAgKzE0
OSw2IEBACiAjaW5jbHVkZSAiU2VsZWN0aW9uUmVjdC5oIgogI2VuZGlmCiAKLSNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQotI2luY2x1ZGUgIkNvbnRlbnRDaGFuZ2VPYnNlcnZlci5oIgotI2VuZGlm
Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIEhhc2hTZXQ8UGFnZSo+JiBhbGxQYWdl
cygpCkBAIC0yMzUsOSArMjMxLDYgQEAgUGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlvbiYmIHBh
Z2VDb25maWd1cmF0aW9uKQogICAgICwgbV9wZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQoV1RGTW92
ZShwYWdlQ29uZmlndXJhdGlvbi5wZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQpKQogICAgICwgbV93
ZWJHTFN0YXRlVHJhY2tlcihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLndlYkdMU3RhdGVUcmFj
a2VyKSkKICAgICAsIG1fbGliV2ViUlRDUHJvdmlkZXIoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlv
bi5saWJXZWJSVENQcm92aWRlcikpCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAsIG1f
Y29udGVudENoYW5nZU9ic2VydmVyKHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudENoYW5nZU9ic2Vy
dmVyPigqdGhpcykpCi0jZW5kaWYKICAgICAsIG1fdmVydGljYWxTY3JvbGxFbGFzdGljaXR5KFNj
cm9sbEVsYXN0aWNpdHlBbGxvd2VkKQogICAgICwgbV9ob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0
eShTY3JvbGxFbGFzdGljaXR5QWxsb3dlZCkKICAgICAsIG1fZG9tVGltZXJBbGlnbm1lbnRJbnRl
cnZhbChET01UaW1lcjo6ZGVmYXVsdEFsaWdubWVudEludGVydmFsKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmlu
ZGV4IDA2MTkwN2M4ZTQxY2UwZTMzNTU4ZTFlM2MzNDNjNTc3OWM2ZGEwZDMuLjg2MTdiZDRkYWY1
NjdlZjBmYTEzMzY2ZDA4YjM5ZTM3MWVkZmNiOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC04Niw5ICs4
Niw2IEBAIGNsYXNzIENhY2hlU3RvcmFnZVByb3ZpZGVyOwogY2xhc3MgQ2hyb21lOwogY2xhc3Mg
Q2hyb21lQ2xpZW50OwogY2xhc3MgQ29sb3I7Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLWNs
YXNzIENvbnRlbnRDaGFuZ2VPYnNlcnZlcjsKLSNlbmRpZgogY2xhc3MgQ29udGV4dE1lbnVDbGll
bnQ7CiBjbGFzcyBDb250ZXh0TWVudUNvbnRyb2xsZXI7CiBjbGFzcyBDb29raWVKYXI7CkBAIC0y
NTQsOSArMjUxLDYgQEAgcHVibGljOgogI2VuZGlmCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykK
ICAgICBQb2ludGVyTG9ja0NvbnRyb2xsZXImIHBvaW50ZXJMb2NrQ29udHJvbGxlcigpIGNvbnN0
IHsgcmV0dXJuICptX3BvaW50ZXJMb2NrQ29udHJvbGxlcjsgfQotI2VuZGlmCi0jaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKLSAgICBDb250ZW50Q2hhbmdlT2JzZXJ2ZXImIGNvbnRlbnRDaGFuZ2VP
YnNlcnZlcigpIHsgcmV0dXJuICptX2NvbnRlbnRDaGFuZ2VPYnNlcnZlcjsgfQogI2VuZGlmCiAg
ICAgTGliV2ViUlRDUHJvdmlkZXImIGxpYldlYlJUQ1Byb3ZpZGVyKCkgeyByZXR1cm4gbV9saWJX
ZWJSVENQcm92aWRlci5nZXQoKTsgfQogICAgIFJUQ0NvbnRyb2xsZXImIHJ0Y0NvbnRyb2xsZXIo
KSB7IHJldHVybiBtX3J0Y0NvbnRyb2xsZXI7IH0KQEAgLTgxOCw3ICs4MTIsNiBAQCBwcml2YXRl
OgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBib29sIG1fZW5jbG9zZWRJblNjcm9s
bGFibGVBbmNlc3RvclZpZXcgeyBmYWxzZSB9OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50
Q2hhbmdlT2JzZXJ2ZXI+IG1fY29udGVudENoYW5nZU9ic2VydmVyOwogI2VuZGlmCiAgICAgCiAg
ICAgYm9vbCBtX3VzZVN5c3RlbUFwcGVhcmFuY2UgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9pb3MvQ29udGVudENoYW5nZU9ic2VydmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvaW9zL0NvbnRlbnRDaGFuZ2VPYnNlcnZlci5jcHAKaW5kZXggZGFiMmEyMWIx
Nzg5MDk4ZWRlMjRkYTgwNTA1OTUwNWZiMDcxOTMwMy4uNjVhZTg1OGM1YWY4ZmYzMTE3OTYyZTIz
YWVmOWQ0ZjUzMmYzYWQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvQ29u
dGVudENoYW5nZU9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9Db250
ZW50Q2hhbmdlT2JzZXJ2ZXIuY3BwCkBAIC0yOSwzMyArMjksMjEgQEAKICNpbmNsdWRlICJDaHJv
bWUuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJET01UaW1lci5oIgor
I2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5v
ZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1zdGF0aWMgYm9vbCBoYXNQZW5kaW5nU3R5bGVSZWNhbGMoY29uc3QgUGFnZSYgcGFnZSkK
LXsKLSAgICBmb3IgKGF1dG8qIGZyYW1lID0gJnBhZ2UubWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFt
ZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIGRv
Y3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCkpIHsKLSAgICAgICAgICAgIGlmIChkb2N1bWVudC0+
aGFzUGVuZGluZ1N0eWxlUmVjYWxjKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1Db250ZW50Q2hhbmdlT2Jz
ZXJ2ZXI6OkNvbnRlbnRDaGFuZ2VPYnNlcnZlcihQYWdlJiBwYWdlKQotICAgIDogbV9wYWdlKHBh
Z2UpCitDb250ZW50Q2hhbmdlT2JzZXJ2ZXI6OkNvbnRlbnRDaGFuZ2VPYnNlcnZlcihEb2N1bWVu
dCYgZG9jdW1lbnQpCisgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQogewogfQogCiB2b2lkIENv
bnRlbnRDaGFuZ2VPYnNlcnZlcjo6ZGlkSW5zdGFsbERPTVRpbWVyKGNvbnN0IERPTVRpbWVyJiB0
aW1lciwgU2Vjb25kcyB0aW1lb3V0LCBib29sIHNpbmdsZVNob3QpCiB7Ci0gICAgaWYgKCFtX3Bh
Z2UubWFpbkZyYW1lKCkuZG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChtX3Bh
Z2UubWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+YWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgp
KQorICAgIGlmIChtX2RvY3VtZW50LmFjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIGlmICh0aW1lb3V0ID4gMjUwX21zIHx8ICFzaW5nbGVTaG90KQog
ICAgICAgICByZXR1cm47CkBAIC05NSw3ICs4Myw3IEBAIHZvaWQgQ29udGVudENoYW5nZU9ic2Vy
dmVyOjpzdG9wT2JzZXJ2aW5nRE9NVGltZXJFeGVjdXRlKGNvbnN0IERPTVRpbWVyJiB0aW1lcikK
IAogICAgIG1faXNPYnNlcnZpbmdDb250ZW50Q2hhbmdlcyA9IGZhbHNlOwogICAgIHVucmVnaXN0
ZXJET01UaW1lcih0aW1lcik7Ci0gICAgc2V0U2hvdWxkT2JzZXJ2ZVN0eWxlUmVjYWxjKFdlYkNv
cmU6Omhhc1BlbmRpbmdTdHlsZVJlY2FsYyhtX3BhZ2UpKTsKKyAgICBzZXRTaG91bGRPYnNlcnZl
U3R5bGVSZWNhbGMobV9kb2N1bWVudC5oYXNQZW5kaW5nU3R5bGVSZWNhbGMoKSk7CiAgICAgbm90
aWZ5Q29udGVudENoYW5nZUlmTmVlZGVkKCk7CiB9CiAKQEAgLTExNyw2ICsxMDUsNyBAQCB2b2lk
IENvbnRlbnRDaGFuZ2VPYnNlcnZlcjo6c3RvcE9ic2VydmluZ1N0eWxlUmVjYWxjKCkKICAgICBM
T0coQ29udGVudE9ic2VydmF0aW9uLCAic3RvcE9ic2VydmluZ1N0eWxlUmVjYWxjOiBzdG9wIG9i
c2VydmluZyBzdHlsZSByZWNhbGMiKTsKIAogICAgIHNldFNob3VsZE9ic2VydmVTdHlsZVJlY2Fs
YyhmYWxzZSk7CisgICAgbV9pc09ic2VydmluZ0NvbnRlbnRDaGFuZ2VzID0gZmFsc2U7CiAgICAg
YWRqdXN0T2JzZXJ2ZWRTdGF0ZShFdmVudDo6U3R5bGVSZWNhbGNGaW5pc2hlZCk7CiAgICAgbm90
aWZ5Q29udGVudENoYW5nZUlmTmVlZGVkKCk7CiB9CkBAIC0xMjgsNyArMTE3LDkgQEAgdm9pZCBD
b250ZW50Q2hhbmdlT2JzZXJ2ZXI6OmNsZWFyVGltZXJzQW5kUmVwb3J0Q29udGVudENoYW5nZSgp
CiAgICAgTE9HX1dJVEhfU1RSRUFNKENvbnRlbnRPYnNlcnZhdGlvbiwgc3RyZWFtIDw8ICJjbGVh
clRpbWVyc0FuZFJlcG9ydENvbnRlbnRDaGFuZ2U6IHJlbW92ZSByZWdpc3RlcmVkIHRpbWVycyBh
bmQgcmVwb3J0IGNvbnRlbnQgY2hhbmdlLiIgPDwgb2JzZXJ2ZWRDb250ZW50Q2hhbmdlKCkpOwog
CiAgICAgY2xlYXJPYnNlcnZlZERPTVRpbWVycygpOwotICAgIG1fcGFnZS5jaHJvbWUoKS5jbGll
bnQoKS5vYnNlcnZlZENvbnRlbnRDaGFuZ2UobV9wYWdlLm1haW5GcmFtZSgpKTsKKyAgICBBU1NF
UlQobV9kb2N1bWVudC5wYWdlKCkpOworICAgIEFTU0VSVChtX2RvY3VtZW50LmZyYW1lKCkpOwor
ICAgIG1fZG9jdW1lbnQucGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5vYnNlcnZlZENvbnRlbnRD
aGFuZ2UoKm1fZG9jdW1lbnQuZnJhbWUoKSk7CiB9CiAKIHZvaWQgQ29udGVudENoYW5nZU9ic2Vy
dmVyOjpkaWRTdXNwZW5kQWN0aXZlRE9NT2JqZWN0cygpCkBAIC0xNDksNyArMTQwLDcgQEAgdm9p
ZCBDb250ZW50Q2hhbmdlT2JzZXJ2ZXI6OmNvbnRlbnRWaXNpYmlsaXR5RGlkQ2hhbmdlKCkKIAog
dm9pZCBDb250ZW50Q2hhbmdlT2JzZXJ2ZXI6OnN0YXJ0T2JzZXJ2aW5nTW91c2VNb3ZlZCgpCiB7
Ci0gICAgQVNTRVJUKCFoYXNQZW5kaW5nU3R5bGVSZWNhbGMobV9wYWdlKSk7CisgICAgQVNTRVJU
KCFtX2RvY3VtZW50Lmhhc1BlbmRpbmdTdHlsZVJlY2FsYygpKTsKICAgICBjbGVhck9ic2VydmVk
RE9NVGltZXJzKCk7CiAgICAgc3RhcnRPYnNlcnZpbmdET01UaW1lclNjaGVkdWxpbmcoKTsKICAg
ICBtX2lzT2JzZXJ2aW5nQ29udGVudENoYW5nZXMgPSB0cnVlOwpAQCAtMTkwLDcgKzE4MSw3IEBA
IGJvb2wgQ29udGVudENoYW5nZU9ic2VydmVyOjpoYXNEZXRlcm1pbmF0ZVN0YXRlKCkgY29uc3QK
IHsKICAgICBpZiAoaGFzVmlzaWJsZUNoYW5nZVN0YXRlKCkpCiAgICAgICAgIHJldHVybiB0cnVl
OwotICAgIHJldHVybiBvYnNlcnZlZENvbnRlbnRDaGFuZ2UoKSA9PSBXS0NvbnRlbnROb0NoYW5n
ZSAmJiAhaGFzT2JzZXJ2ZWRET01UaW1lcigpICYmICFoYXNQZW5kaW5nU3R5bGVSZWNhbGMobV9w
YWdlKTsKKyAgICByZXR1cm4gb2JzZXJ2ZWRDb250ZW50Q2hhbmdlKCkgPT0gV0tDb250ZW50Tm9D
aGFuZ2UgJiYgIWhhc09ic2VydmVkRE9NVGltZXIoKSAmJiAhbV9kb2N1bWVudC5oYXNQZW5kaW5n
U3R5bGVSZWNhbGMoKTsKIH0KIAogdm9pZCBDb250ZW50Q2hhbmdlT2JzZXJ2ZXI6OmFkanVzdE9i
c2VydmVkU3RhdGUoRXZlbnQgZXZlbnQpCkBAIC0yMDcsNyArMTk4LDcgQEAgdm9pZCBDb250ZW50
Q2hhbmdlT2JzZXJ2ZXI6OmFkanVzdE9ic2VydmVkU3RhdGUoRXZlbnQgZXZlbnQpCiAgICAgY2Fz
ZSBFdmVudDo6UmVtb3ZlZERPTVRpbWVyOgogICAgIGNhc2UgRXZlbnQ6OlN0eWxlUmVjYWxjRmlu
aXNoZWQ6CiAgICAgICAgIC8vIERlbW90ZSB0byAibm8gY2hhbmdlIiB3aGVuIHRoZXJlJ3Mgbm8g
cGVuZGluZyBhY3Rpdml0eSBhbnltb3JlLgotICAgICAgICBpZiAob2JzZXJ2ZWRDb250ZW50Q2hh
bmdlKCkgPT0gV0tDb250ZW50SW5kZXRlcm1pbmF0ZUNoYW5nZSAmJiAhaGFzT2JzZXJ2ZWRET01U
aW1lcigpICYmICFoYXNQZW5kaW5nU3R5bGVSZWNhbGMobV9wYWdlKSkKKyAgICAgICAgaWYgKG9i
c2VydmVkQ29udGVudENoYW5nZSgpID09IFdLQ29udGVudEluZGV0ZXJtaW5hdGVDaGFuZ2UgJiYg
IWhhc09ic2VydmVkRE9NVGltZXIoKSAmJiAhbV9kb2N1bWVudC5oYXNQZW5kaW5nU3R5bGVSZWNh
bGMoKSkKICAgICAgICAgICAgIHNldEhhc05vQ2hhbmdlU3RhdGUoKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBFdmVudDo6Q29udGVudFZpc2liaWxpdHlDaGFuZ2VkOgpAQCAtMjIzLDcgKzIx
NCw5IEBAIHZvaWQgQ29udGVudENoYW5nZU9ic2VydmVyOjpub3RpZnlDb250ZW50Q2hhbmdlSWZO
ZWVkZWQoKQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIExPR19XSVRIX1NUUkVBTShDb250
ZW50T2JzZXJ2YXRpb24sIHN0cmVhbSA8PCAibm90aWZ5Q29udGVudENoYW5nZUlmTmVlZGVkOiBz
ZW5kaW5nIG9ic2VydmVkQ29udGVudENoYW5nZSAtPiIgPDwgb2JzZXJ2ZWRDb250ZW50Q2hhbmdl
KCkpOwotICAgIG1fcGFnZS5jaHJvbWUoKS5jbGllbnQoKS5vYnNlcnZlZENvbnRlbnRDaGFuZ2Uo
bV9wYWdlLm1haW5GcmFtZSgpKTsKKyAgICBBU1NFUlQobV9kb2N1bWVudC5wYWdlKCkpOworICAg
IEFTU0VSVChtX2RvY3VtZW50LmZyYW1lKCkpOworICAgIG1fZG9jdW1lbnQucGFnZSgpLT5jaHJv
bWUoKS5jbGllbnQoKS5vYnNlcnZlZENvbnRlbnRDaGFuZ2UoKm1fZG9jdW1lbnQuZnJhbWUoKSk7
CiB9CiAKIApAQCAtMjUwLDEwICsyNDMsMTAgQEAgc3RhdGljIFZpc2liaWxpdHkgZWxlbWVudElt
cGxpY2l0VmlzaWJpbGl0eShjb25zdCBFbGVtZW50JiBlbGVtZW50KQogICAgIHJldHVybiBWaXNp
YmlsaXR5OjpWaXNpYmxlOwogfQogCi1Db250ZW50Q2hhbmdlT2JzZXJ2ZXI6OlN0eWxlQ2hhbmdl
U2NvcGU6OlN0eWxlQ2hhbmdlU2NvcGUoUGFnZSogcGFnZSwgY29uc3QgRWxlbWVudCYgZWxlbWVu
dCkKLSAgICA6IG1fY29udGVudENoYW5nZU9ic2VydmVyKHBhZ2UgPyAmcGFnZS0+Y29udGVudENo
YW5nZU9ic2VydmVyKCkgOiBudWxscHRyKQorQ29udGVudENoYW5nZU9ic2VydmVyOjpTdHlsZUNo
YW5nZVNjb3BlOjpTdHlsZUNoYW5nZVNjb3BlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgRWxl
bWVudCYgZWxlbWVudCkKKyAgICA6IG1fY29udGVudENoYW5nZU9ic2VydmVyKGRvY3VtZW50LmNv
bnRlbnRDaGFuZ2VPYnNlcnZlcigpKQogICAgICwgbV9lbGVtZW50KGVsZW1lbnQpCi0gICAgLCBt
X25lZWRzT2JzZXJ2aW5nKG1fY29udGVudENoYW5nZU9ic2VydmVyICYmIG1fY29udGVudENoYW5n
ZU9ic2VydmVyLT5pc09ic2VydmluZ0NvbnRlbnRDaGFuZ2VzKCkgJiYgbV9jb250ZW50Q2hhbmdl
T2JzZXJ2ZXItPm9ic2VydmVkQ29udGVudENoYW5nZSgpICE9IFdLQ29udGVudFZpc2liaWxpdHlD
aGFuZ2UpCisgICAgLCBtX25lZWRzT2JzZXJ2aW5nKG1fY29udGVudENoYW5nZU9ic2VydmVyLmlz
T2JzZXJ2aW5nQ29udGVudENoYW5nZXMoKSAmJiBtX2NvbnRlbnRDaGFuZ2VPYnNlcnZlci5vYnNl
cnZlZENvbnRlbnRDaGFuZ2UoKSAhPSBXS0NvbnRlbnRWaXNpYmlsaXR5Q2hhbmdlKQogewogICAg
IGlmIChtX25lZWRzT2JzZXJ2aW5nKSB7CiAgICAgICAgIG1fcHJldmlvdXNEaXNwbGF5ID0gZWxl
bWVudC5yZW5kZXJTdHlsZSgpID8gZWxlbWVudC5yZW5kZXJTdHlsZSgpLT5kaXNwbGF5KCkgOiBE
aXNwbGF5VHlwZTo6Tm9uZTsKQEAgLTI4NCwzNyArMjc3LDMzIEBAIENvbnRlbnRDaGFuZ2VPYnNl
cnZlcjo6U3R5bGVDaGFuZ2VTY29wZTo6flN0eWxlQ2hhbmdlU2NvcGUoKQogICAgIGlmICgobV9w
cmV2aW91c0Rpc3BsYXkgPT0gRGlzcGxheVR5cGU6Ok5vbmUgJiYgc3R5bGUtPmRpc3BsYXkoKSAh
PSBEaXNwbGF5VHlwZTo6Tm9uZSkKICAgICAgICAgfHwgKG1fcHJldmlvdXNWaXNpYmlsaXR5ID09
IFZpc2liaWxpdHk6OkhpZGRlbiAmJiBzdHlsZS0+dmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6
OkhpZGRlbikKICAgICAgICAgfHwgKG1fcHJldmlvdXNJbXBsaWNpdFZpc2liaWxpdHkgPT0gVmlz
aWJpbGl0eTo6SGlkZGVuICYmIGVsZW1lbnRJbXBsaWNpdFZpc2liaWxpdHkobV9lbGVtZW50KSA9
PSBWaXNpYmlsaXR5OjpWaXNpYmxlKSkKLSAgICAgICAgbV9jb250ZW50Q2hhbmdlT2JzZXJ2ZXIt
PmNvbnRlbnRWaXNpYmlsaXR5RGlkQ2hhbmdlKCk7CisgICAgICAgIG1fY29udGVudENoYW5nZU9i
c2VydmVyLmNvbnRlbnRWaXNpYmlsaXR5RGlkQ2hhbmdlKCk7CiB9CiAKLUNvbnRlbnRDaGFuZ2VP
YnNlcnZlcjo6TW91c2VNb3ZlZFNjb3BlOjpNb3VzZU1vdmVkU2NvcGUoUGFnZSogcGFnZSkKLSAg
ICA6IG1fY29udGVudENoYW5nZU9ic2VydmVyKHBhZ2UgPyAmcGFnZS0+Y29udGVudENoYW5nZU9i
c2VydmVyKCkgOiBudWxscHRyKQorQ29udGVudENoYW5nZU9ic2VydmVyOjpNb3VzZU1vdmVkU2Nv
cGU6Ok1vdXNlTW92ZWRTY29wZShEb2N1bWVudCYgZG9jdW1lbnQpCisgICAgOiBtX2NvbnRlbnRD
aGFuZ2VPYnNlcnZlcihkb2N1bWVudC5jb250ZW50Q2hhbmdlT2JzZXJ2ZXIoKSkKIHsKLSAgICBp
ZiAobV9jb250ZW50Q2hhbmdlT2JzZXJ2ZXIpCi0gICAgICAgIG1fY29udGVudENoYW5nZU9ic2Vy
dmVyLT5zdGFydE9ic2VydmluZ01vdXNlTW92ZWQoKTsKKyAgICBtX2NvbnRlbnRDaGFuZ2VPYnNl
cnZlci5zdGFydE9ic2VydmluZ01vdXNlTW92ZWQoKTsKIH0KIAogQ29udGVudENoYW5nZU9ic2Vy
dmVyOjpNb3VzZU1vdmVkU2NvcGU6On5Nb3VzZU1vdmVkU2NvcGUoKQogewotICAgIGlmIChtX2Nv
bnRlbnRDaGFuZ2VPYnNlcnZlcikKLSAgICAgICAgbV9jb250ZW50Q2hhbmdlT2JzZXJ2ZXItPnN0
b3BPYnNlcnZpbmdNb3VzZU1vdmVkKCk7CisgICAgbV9jb250ZW50Q2hhbmdlT2JzZXJ2ZXIuc3Rv
cE9ic2VydmluZ01vdXNlTW92ZWQoKTsKIH0KIAotQ29udGVudENoYW5nZU9ic2VydmVyOjpTdHls
ZVJlY2FsY1Njb3BlOjpTdHlsZVJlY2FsY1Njb3BlKFBhZ2UqIHBhZ2UpCi0gICAgOiBtX2NvbnRl
bnRDaGFuZ2VPYnNlcnZlcihwYWdlID8gJnBhZ2UtPmNvbnRlbnRDaGFuZ2VPYnNlcnZlcigpIDog
bnVsbHB0cikKK0NvbnRlbnRDaGFuZ2VPYnNlcnZlcjo6U3R5bGVSZWNhbGNTY29wZTo6U3R5bGVS
ZWNhbGNTY29wZShEb2N1bWVudCYgZG9jdW1lbnQpCisgICAgOiBtX2NvbnRlbnRDaGFuZ2VPYnNl
cnZlcihkb2N1bWVudC5jb250ZW50Q2hhbmdlT2JzZXJ2ZXIoKSkKIHsKLSAgICBpZiAobV9jb250
ZW50Q2hhbmdlT2JzZXJ2ZXIpCi0gICAgICAgIG1fY29udGVudENoYW5nZU9ic2VydmVyLT5zdGFy
dE9ic2VydmluZ1N0eWxlUmVjYWxjKCk7CisgICAgbV9jb250ZW50Q2hhbmdlT2JzZXJ2ZXIuc3Rh
cnRPYnNlcnZpbmdTdHlsZVJlY2FsYygpOwogfQogCiBDb250ZW50Q2hhbmdlT2JzZXJ2ZXI6OlN0
eWxlUmVjYWxjU2NvcGU6On5TdHlsZVJlY2FsY1Njb3BlKCkKIHsKLSAgICBpZiAobV9jb250ZW50
Q2hhbmdlT2JzZXJ2ZXIpCi0gICAgICAgIG1fY29udGVudENoYW5nZU9ic2VydmVyLT5zdG9wT2Jz
ZXJ2aW5nU3R5bGVSZWNhbGMoKTsKKyAgICBtX2NvbnRlbnRDaGFuZ2VPYnNlcnZlci5zdG9wT2Jz
ZXJ2aW5nU3R5bGVSZWNhbGMoKTsKIH0KIAotQ29udGVudENoYW5nZU9ic2VydmVyOjpET01UaW1l
clNjb3BlOjpET01UaW1lclNjb3BlKFBhZ2UqIHBhZ2UsIGNvbnN0IERPTVRpbWVyJiBkb21UaW1l
cikKLSAgICA6IG1fY29udGVudENoYW5nZU9ic2VydmVyKHBhZ2UgPyAmcGFnZS0+Y29udGVudENo
YW5nZU9ic2VydmVyKCkgOiBudWxscHRyKQorQ29udGVudENoYW5nZU9ic2VydmVyOjpET01UaW1l
clNjb3BlOjpET01UaW1lclNjb3BlKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgRE9NVGltZXIm
IGRvbVRpbWVyKQorICAgIDogbV9jb250ZW50Q2hhbmdlT2JzZXJ2ZXIoZG9jdW1lbnQgPyAmZG9j
dW1lbnQtPmNvbnRlbnRDaGFuZ2VPYnNlcnZlcigpIDogbnVsbHB0cikKICAgICAsIG1fZG9tVGlt
ZXIoZG9tVGltZXIpCiB7CiAgICAgaWYgKG1fY29udGVudENoYW5nZU9ic2VydmVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvQ29udGVudENoYW5nZU9ic2VydmVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9Db250ZW50Q2hhbmdlT2JzZXJ2ZXIuaAppbmRleCA3M2Fl
NTc4YWViYzRhYjU5MGE2MWM3ODNmN2JlYjZlNDk4YTMyZGY0Li4wN2I1ZWM5MzJkZjNiMTkyNTg2
Yzk4YWFiNWEzNWRlYWE4OTMwYWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lv
cy9Db250ZW50Q2hhbmdlT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9D
b250ZW50Q2hhbmdlT2JzZXJ2ZXIuaApAQCAtMzIsMTEgKzMyLDExIEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIERPTVRpbWVyOwotY2xhc3MgUGFnZTsKK2NsYXNzIERvY3VtZW50Owog
CiBjbGFzcyBDb250ZW50Q2hhbmdlT2JzZXJ2ZXIgewogcHVibGljOgotICAgIENvbnRlbnRDaGFu
Z2VPYnNlcnZlcihQYWdlJik7CisgICAgQ29udGVudENoYW5nZU9ic2VydmVyKERvY3VtZW50Jik7
CiAKICAgICBXRUJDT1JFX0VYUE9SVCBXS0NvbnRlbnRDaGFuZ2Ugb2JzZXJ2ZWRDb250ZW50Q2hh
bmdlKCkgY29uc3Q7CiAKQEAgLTQ4LDExICs0OCwxMSBAQCBwdWJsaWM6CiAKICAgICBjbGFzcyBT
dHlsZUNoYW5nZVNjb3BlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFN0eWxlQ2hhbmdlU2NvcGUo
UGFnZSosIGNvbnN0IEVsZW1lbnQmKTsKKyAgICAgICAgU3R5bGVDaGFuZ2VTY29wZShEb2N1bWVu
dCYsIGNvbnN0IEVsZW1lbnQmKTsKICAgICAgICAgflN0eWxlQ2hhbmdlU2NvcGUoKTsKIAogICAg
IHByaXZhdGU6Ci0gICAgICAgIENvbnRlbnRDaGFuZ2VPYnNlcnZlciogbV9jb250ZW50Q2hhbmdl
T2JzZXJ2ZXIgeyBudWxscHRyIH07CisgICAgICAgIENvbnRlbnRDaGFuZ2VPYnNlcnZlciYgbV9j
b250ZW50Q2hhbmdlT2JzZXJ2ZXI7CiAgICAgICAgIGNvbnN0IEVsZW1lbnQmIG1fZWxlbWVudDsK
ICAgICAgICAgYm9vbCBtX25lZWRzT2JzZXJ2aW5nIHsgZmFsc2UgfTsKICAgICAgICAgRGlzcGxh
eVR5cGUgbV9wcmV2aW91c0Rpc3BsYXk7CkBAIC02MiwyMyArNjIsMjMgQEAgcHVibGljOgogCiAg
ICAgY2xhc3MgTW91c2VNb3ZlZFNjb3BlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFdFQkNPUkVf
RVhQT1JUIE1vdXNlTW92ZWRTY29wZShQYWdlKik7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIE1v
dXNlTW92ZWRTY29wZShEb2N1bWVudCYpOwogICAgICAgICBXRUJDT1JFX0VYUE9SVCB+TW91c2VN
b3ZlZFNjb3BlKCk7CiAgICAgcHJpdmF0ZToKLSAgICAgICAgQ29udGVudENoYW5nZU9ic2VydmVy
KiBtX2NvbnRlbnRDaGFuZ2VPYnNlcnZlciB7IG51bGxwdHIgfTsKKyAgICAgICAgQ29udGVudENo
YW5nZU9ic2VydmVyJiBtX2NvbnRlbnRDaGFuZ2VPYnNlcnZlcjsKICAgICB9OwogCiAgICAgY2xh
c3MgU3R5bGVSZWNhbGNTY29wZSB7CiAgICAgcHVibGljOgotICAgICAgICBTdHlsZVJlY2FsY1Nj
b3BlKFBhZ2UqKTsKKyAgICAgICAgU3R5bGVSZWNhbGNTY29wZShEb2N1bWVudCYpOwogICAgICAg
ICB+U3R5bGVSZWNhbGNTY29wZSgpOwogICAgIHByaXZhdGU6Ci0gICAgICAgIENvbnRlbnRDaGFu
Z2VPYnNlcnZlciogbV9jb250ZW50Q2hhbmdlT2JzZXJ2ZXIgeyBudWxscHRyIH07CisgICAgICAg
IENvbnRlbnRDaGFuZ2VPYnNlcnZlciYgbV9jb250ZW50Q2hhbmdlT2JzZXJ2ZXI7CiAgICAgfTsK
IAogICAgIGNsYXNzIERPTVRpbWVyU2NvcGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRE9NVGlt
ZXJTY29wZShQYWdlKiwgY29uc3QgRE9NVGltZXImKTsKKyAgICAgICAgRE9NVGltZXJTY29wZShE
b2N1bWVudCosIGNvbnN0IERPTVRpbWVyJik7CiAgICAgICAgIH5ET01UaW1lclNjb3BlKCk7CiAg
ICAgcHJpdmF0ZToKICAgICAgICAgQ29udGVudENoYW5nZU9ic2VydmVyKiBtX2NvbnRlbnRDaGFu
Z2VPYnNlcnZlciB7IG51bGxwdHIgfTsKQEAgLTEzMCw3ICsxMzAsNyBAQCBwcml2YXRlOgogICAg
IH07CiAgICAgdm9pZCBhZGp1c3RPYnNlcnZlZFN0YXRlKEV2ZW50KTsKIAotICAgIFBhZ2UmIG1f
cGFnZTsKKyAgICBEb2N1bWVudCYgbV9kb2N1bWVudDsKICAgICBIYXNoU2V0PGNvbnN0IERPTVRp
bWVyKj4gbV9ET01UaW1lckxpc3Q7CiAgICAgYm9vbCBtX3Nob3VsZE9ic2VydmVTdHlsZVJlY2Fs
YyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzT2JzZXJ2aW5nRE9NVGltZXJTY2hlZHVsaW5nIHsg
ZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0V2ZW50SGFuZGxl
cklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0V2ZW50SGFuZGxlcklPUy5tbQppbmRl
eCA0ZjcwMDNiMDM4ZjFhY2U1ODk5NjY2ZDQ0YmI1NGM1ZmE2N2YxYzJjLi5kMDA2ZDQxNmY3ZTA0
YjFiNDBlMDhkZDNmODI0ZDc0YmM1MzlhNzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2lvcy9FdmVudEhhbmRsZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3Mv
RXZlbnRIYW5kbGVySU9TLm1tCkBAIC00OTYsNyArNDk2LDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6
Om1vdXNlTW92ZWQoV2ViRXZlbnQgKmV2ZW50KQogICAgIGRvY3VtZW50LnVwZGF0ZVN0eWxlSWZO
ZWVkZWQoKTsKICAgICBDdXJyZW50RXZlbnRTY29wZSBzY29wZShldmVudCk7CiAgICAgewotICAg
ICAgICBDb250ZW50Q2hhbmdlT2JzZXJ2ZXI6Ok1vdXNlTW92ZWRTY29wZSBvYnNlcnZpbmdTY29w
ZShkb2N1bWVudC5wYWdlKCkpOworICAgICAgICBDb250ZW50Q2hhbmdlT2JzZXJ2ZXI6Ok1vdXNl
TW92ZWRTY29wZSBvYnNlcnZpbmdTY29wZShkb2N1bWVudCk7CiAgICAgICAgIGV2ZW50Lndhc0hh
bmRsZWQgPSBtb3VzZU1vdmVkKGN1cnJlbnRQbGF0Zm9ybU1vdXNlRXZlbnQoKSk7CiAgICAgICAg
IC8vIFJ1biBzdHlsZSByZWNhbGMgdG8gYmUgYWJsZSB0byBjYXB0dXJlIGNvbnRlbnQgY2hhbmdl
cyBhcyB0aGUgcmVzdWx0IG9mIHRoZSBtb3VzZSBtb3ZlIGV2ZW50LgogICAgICAgICBkb2N1bWVu
dC51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcAppbmRleCBjNWY0MzUwOWI1YzA1
MTY0MGU5Yzg3NDU5Y2I1ZTk4OTMxZmJkN2UyLi5kYzFjNDFmNTE2YzY3MzAzNGI3NjQwYjc4MDQz
MDQ1ZGI5NjE4YzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRp
bmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91
cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAKQEAgLTI5Myw3ICsyOTMsNyBAQCB2b2lkIFJl
bmRlclRyZWVVcGRhdGVyOjp1cGRhdGVSZW5kZXJlclN0eWxlKFJlbmRlckVsZW1lbnQmIHJlbmRl
cmVyLCBSZW5kZXJTdHlsZQogdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlRWxlbWVudFJl
bmRlcmVyKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0eWxlOjpFbGVtZW50VXBkYXRlJiB1cGRh
dGUpCiB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBDb250ZW50Q2hhbmdlT2JzZXJ2
ZXI6OlN0eWxlQ2hhbmdlU2NvcGUgb2JzZXJ2aW5nU2NvcGUobV9kb2N1bWVudC5wYWdlKCksIGVs
ZW1lbnQpOworICAgIENvbnRlbnRDaGFuZ2VPYnNlcnZlcjo6U3R5bGVDaGFuZ2VTY29wZSBvYnNl
cnZpbmdTY29wZShtX2RvY3VtZW50LCBlbGVtZW50KTsKICNlbmRpZgogCiAgICAgYm9vbCBzaG91
bGRUZWFyRG93blJlbmRlcmVycyA9IHVwZGF0ZS5jaGFuZ2UgPT0gU3R5bGU6OkRldGFjaCAmJiAo
ZWxlbWVudC5yZW5kZXJlcigpIHx8IGVsZW1lbnQuaGFzRGlzcGxheUNvbnRlbnRzKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGZjOWY5ZjVhMzhj
NzNmOGVmNWM2Yjc5YTQ0MDllNDVlZWQzMjg0OWYuLmQyMWVhZmJjNTIzNTJjMjU3Mjc5ZjhmMzJl
YTY1NjM5MDhlYjZhOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKQEAgLTExODksOCArMTE4OSw4IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkNvcmU6
OlJhbmdlPiByYW5nZUZvcldlYlNlbGVjdGlvbkF0UG9zaXRpb24oY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb24mLCBTZWxlY3Rpb25GbGFncyYp
OwogICAgIHZvaWQgZ2V0Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbihGb2N1c2VkRWxlbWVudElu
Zm9ybWF0aW9uJik7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVBY2Nlc3NpYmlsaXR5KCk7
Ci0gICAgdm9pZCBoYW5kbGVTeW50aGV0aWNDbGljayhXZWJDb3JlOjpOb2RlKiBub2RlUmVzcG9u
ZGluZ1RvQ2xpY2ssIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGxvY2F0aW9uLCBPcHRpb25T
ZXQ8V2ViS2l0OjpXZWJFdmVudDo6TW9kaWZpZXI+KTsKLSAgICB2b2lkIGNvbXBsZXRlU3ludGhl
dGljQ2xpY2soV2ViQ29yZTo6Tm9kZSogbm9kZVJlc3BvbmRpbmdUb0NsaWNrLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFBvaW50JiBsb2NhdGlvbiwgT3B0aW9uU2V0PFdlYktpdDo6V2ViRXZlbnQ6Ok1v
ZGlmaWVyPiwgV2ViQ29yZTo6U3ludGhldGljQ2xpY2tUeXBlKTsKKyAgICB2b2lkIGhhbmRsZVN5
bnRoZXRpY0NsaWNrKFdlYkNvcmU6Ok5vZGUmIG5vZGVSZXNwb25kaW5nVG9DbGljaywgY29uc3Qg
V2ViQ29yZTo6RmxvYXRQb2ludCYgbG9jYXRpb24sIE9wdGlvblNldDxXZWJLaXQ6OldlYkV2ZW50
OjpNb2RpZmllcj4pOworICAgIHZvaWQgY29tcGxldGVTeW50aGV0aWNDbGljayhXZWJDb3JlOjpO
b2RlJiBub2RlUmVzcG9uZGluZ1RvQ2xpY2ssIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGxv
Y2F0aW9uLCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJFdmVudDo6TW9kaWZpZXI+LCBXZWJDb3JlOjpT
eW50aGV0aWNDbGlja1R5cGUpOwogICAgIHZvaWQgc2VuZFRhcEhpZ2hsaWdodEZvck5vZGVJZk5l
Y2Vzc2FyeSh1aW50NjRfdCByZXF1ZXN0SUQsIFdlYkNvcmU6Ok5vZGUqKTsKICAgICB2b2lkIHJl
c2V0VGV4dEF1dG9zaXppbmcoKTsKICAgICBXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb24gdmlzaWJs
ZVBvc2l0aW9uSW5Gb2N1c2VkTm9kZUZvclBvaW50KGNvbnN0IFdlYkNvcmU6OkZyYW1lJiwgY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1l
bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFn
ZUlPUy5tbQppbmRleCBiYmNlMjBmZGFkMGRkMTk3YzMxZjY4OTMwNDNkOGUxYjkxMzE4NzM3Li40
MmVlNzU3YTFjNmZjNGJhNjgyYWI4YTczYjIxZmViMTAwNGYxMDI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtNTM1LDIw
ICs1MzUsMTkgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25BcHBlYXJhbmNlKCkKICAg
ICAgICAgZGlkQ2hhbmdlU2VsZWN0aW9uKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6aGFuZGxlU3lu
dGhldGljQ2xpY2soTm9kZSogbm9kZVJlc3BvbmRpbmdUb0NsaWNrLCBjb25zdCBXZWJDb3JlOjpG
bG9hdFBvaW50JiBsb2NhdGlvbiwgT3B0aW9uU2V0PFdlYkV2ZW50OjpNb2RpZmllcj4gbW9kaWZp
ZXJzKQordm9pZCBXZWJQYWdlOjpoYW5kbGVTeW50aGV0aWNDbGljayhOb2RlJiBub2RlUmVzcG9u
ZGluZ1RvQ2xpY2ssIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGxvY2F0aW9uLCBPcHRpb25T
ZXQ8V2ViRXZlbnQ6Ok1vZGlmaWVyPiBtb2RpZmllcnMpCiB7CiAgICAgSW50UG9pbnQgcm91bmRl
ZEFkanVzdGVkUG9pbnQgPSByb3VuZGVkSW50UG9pbnQobG9jYXRpb24pOwotICAgIGF1dG8mIG1h
aW5mcmFtZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCk7Ci0gICAgYXV0byYgY29udGVudENoYW5nZU9i
c2VydmVyID0gbV9wYWdlLT5jb250ZW50Q2hhbmdlT2JzZXJ2ZXIoKTsKLQorICAgIGF1dG8mIHJl
c3BvbmRpbmdEb2N1bWVudCA9IG5vZGVSZXNwb25kaW5nVG9DbGljay5kb2N1bWVudCgpOwogICAg
IC8vIEZJWE1FOiBQYXNzIGNhcHMgbG9jayBzdGF0ZS4KICAgICBib29sIHNoaWZ0S2V5ID0gbW9k
aWZpZXJzLmNvbnRhaW5zKFdlYkV2ZW50OjpNb2RpZmllcjo6U2hpZnRLZXkpOwogICAgIGJvb2wg
Y3RybEtleSA9IG1vZGlmaWVycy5jb250YWlucyhXZWJFdmVudDo6TW9kaWZpZXI6OkNvbnRyb2xL
ZXkpOwogICAgIGJvb2wgYWx0S2V5ID0gbW9kaWZpZXJzLmNvbnRhaW5zKFdlYkV2ZW50OjpNb2Rp
Zmllcjo6QWx0S2V5KTsKICAgICBib29sIG1ldGFLZXkgPSBtb2RpZmllcnMuY29udGFpbnMoV2Vi
RXZlbnQ6Ok1vZGlmaWVyOjpNZXRhS2V5KTsKICAgICB7Ci0gICAgICAgIExPR19XSVRIX1NUUkVB
TShDb250ZW50T2JzZXJ2YXRpb24sIHN0cmVhbSA8PCAiaGFuZGxlU3ludGhldGljQ2xpY2s6IG5v
ZGUoIiA8PCBub2RlUmVzcG9uZGluZ1RvQ2xpY2sgPDwgIikgIiA8PCBsb2NhdGlvbik7Ci0gICAg
ICAgIENvbnRlbnRDaGFuZ2VPYnNlcnZlcjo6TW91c2VNb3ZlZFNjb3BlIG9ic2VydmluZ1Njb3Bl
KG1fcGFnZS5nZXQoKSk7CisgICAgICAgIExPR19XSVRIX1NUUkVBTShDb250ZW50T2JzZXJ2YXRp
b24sIHN0cmVhbSA8PCAiaGFuZGxlU3ludGhldGljQ2xpY2s6IG5vZGUoIiA8PCAmbm9kZVJlc3Bv
bmRpbmdUb0NsaWNrIDw8ICIpICIgPDwgbG9jYXRpb24pOworICAgICAgICBDb250ZW50Q2hhbmdl
T2JzZXJ2ZXI6Ok1vdXNlTW92ZWRTY29wZSBvYnNlcnZpbmdTY29wZShyZXNwb25kaW5nRG9jdW1l
bnQpOworICAgICAgICBhdXRvJiBtYWluZnJhbWUgPSBtX3BhZ2UtPm1haW5GcmFtZSgpOwogICAg
ICAgICBtYWluZnJhbWUuZXZlbnRIYW5kbGVyKCkubW91c2VNb3ZlZChQbGF0Zm9ybU1vdXNlRXZl
bnQocm91bmRlZEFkanVzdGVkUG9pbnQsIHJvdW5kZWRBZGp1c3RlZFBvaW50LCBOb0J1dHRvbiwg
UGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCwgMCwgc2hpZnRLZXksIGN0cmxLZXksIGFsdEtleSwg
bWV0YUtleSwgV2FsbFRpbWU6Om5vdygpLCBXZWJDb3JlOjpGb3JjZUF0Q2xpY2ssIFdlYkNvcmU6
Ok5vVGFwKSk7CiAgICAgICAgIG1haW5mcmFtZS5kb2N1bWVudCgpLT51cGRhdGVTdHlsZUlmTmVl
ZGVkKCk7CiAgICAgfQpAQCAtNTYwLDE0ICs1NTksMTQgQEAgdm9pZCBXZWJQYWdlOjpoYW5kbGVT
eW50aGV0aWNDbGljayhOb2RlKiBub2RlUmVzcG9uZGluZ1RvQ2xpY2ssIGNvbnN0IFdlYkNvcmU6
OkYKICAgICBpZiAobV9pc0Nsb3NlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc3dpdGNoIChj
b250ZW50Q2hhbmdlT2JzZXJ2ZXIub2JzZXJ2ZWRDb250ZW50Q2hhbmdlKCkpIHsKKyAgICBzd2l0
Y2ggKHJlc3BvbmRpbmdEb2N1bWVudC5jb250ZW50Q2hhbmdlT2JzZXJ2ZXIoKS5vYnNlcnZlZENv
bnRlbnRDaGFuZ2UoKSkgewogICAgIGNhc2UgV0tDb250ZW50VmlzaWJpbGl0eUNoYW5nZToKICAg
ICAgICAgLy8gVGhlIG1vdmUgZXZlbnQgY2F1c2VkIG5ldyBjb250ZW50cyB0byBhcHBlYXIuIERv
bid0IHNlbmQgdGhlIGNsaWNrIGV2ZW50LgogICAgICAgICBMT0coQ29udGVudE9ic2VydmF0aW9u
LCAiaGFuZGxlU3ludGhldGljQ2xpY2s6IE9ic2VydmVkIG1lYW5pbmdmdWwgdmlzaWJsZSBjaGFu
Z2UgLT4gaG92ZXIuIik7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIFdLQ29udGVudEluZGV0
ZXJtaW5hdGVDaGFuZ2U6IHsKICAgICAgICAgLy8gV2FpdCBmb3IgY2FsbGJhY2sgdG8gY29tcGxl
dGVQZW5kaW5nU3ludGhldGljQ2xpY2tGb3JDb250ZW50Q2hhbmdlT2JzZXJ2ZXIoKSB0byBkZWNp
ZGUgd2hldGhlciB0byBzZW5kIHRoZSBjbGljayBldmVudC4KLSAgICAgICAgbV9wZW5kaW5nU3lu
dGhldGljQ2xpY2tOb2RlID0gbm9kZVJlc3BvbmRpbmdUb0NsaWNrOworICAgICAgICBtX3BlbmRp
bmdTeW50aGV0aWNDbGlja05vZGUgPSAmbm9kZVJlc3BvbmRpbmdUb0NsaWNrOwogICAgICAgICBt
X3BlbmRpbmdTeW50aGV0aWNDbGlja0xvY2F0aW9uID0gbG9jYXRpb247CiAgICAgICAgIG1fcGVu
ZGluZ1N5bnRoZXRpY0NsaWNrTW9kaWZpZXJzID0gbW9kaWZpZXJzOwogICAgICAgICBMT0coQ29u
dGVudE9ic2VydmF0aW9uLCAiaGFuZGxlU3ludGhldGljQ2xpY2s6IE9ic2VydmVkIHNvbWUgY2hh
bmdlLCBidXQgY2FuJ3QgZGVjaWRlIGl0IHlldCAtPiB3YWl0LiIpOwpAQCAtNTg1LDEwICs1ODQs
MTEgQEAgdm9pZCBXZWJQYWdlOjpjb21wbGV0ZVBlbmRpbmdTeW50aGV0aWNDbGlja0ZvckNvbnRl
bnRDaGFuZ2VPYnNlcnZlcigpCiAgICAgTE9HX1dJVEhfU1RSRUFNKENvbnRlbnRPYnNlcnZhdGlv
biwgc3RyZWFtIDw8ICJjb21wbGV0ZVBlbmRpbmdTeW50aGV0aWNDbGlja0ZvckNvbnRlbnRDaGFu
Z2VPYnNlcnZlcjogcGVuZGluZyB0YXJnZXQgbm9kZSgiIDw8IG1fcGVuZGluZ1N5bnRoZXRpY0Ns
aWNrTm9kZSA8PCAiKSIpOwogICAgIGlmICghbV9wZW5kaW5nU3ludGhldGljQ2xpY2tOb2RlKQog
ICAgICAgICByZXR1cm47CisgICAgYXV0byBvYnNlcnZlZENvbnRlbnRDaGFuZ2UgPSBtX3BlbmRp
bmdTeW50aGV0aWNDbGlja05vZGUtPmRvY3VtZW50KCkuY29udGVudENoYW5nZU9ic2VydmVyKCku
b2JzZXJ2ZWRDb250ZW50Q2hhbmdlKCk7CiAgICAgLy8gT25seSBkaXNwYXRjaCB0aGUgY2xpY2sg
aWYgdGhlIGRvY3VtZW50IGRpZG4ndCBnZXQgY2hhbmdlZCBieSBhbnkgdGltZXJzIHN0YXJ0ZWQg
YnkgdGhlIG1vdmUgZXZlbnQuCi0gICAgaWYgKG1fcGFnZS0+Y29udGVudENoYW5nZU9ic2VydmVy
KCkub2JzZXJ2ZWRDb250ZW50Q2hhbmdlKCkgPT0gV0tDb250ZW50Tm9DaGFuZ2UpIHsKKyAgICBp
ZiAob2JzZXJ2ZWRDb250ZW50Q2hhbmdlID09IFdLQ29udGVudE5vQ2hhbmdlKSB7CiAgICAgICAg
IExPRyhDb250ZW50T2JzZXJ2YXRpb24sICJObyBjaGFnZSB3YXMgb2JzZXJ2ZWQgLT4gY2xpY2su
Iik7Ci0gICAgICAgIGNvbXBsZXRlU3ludGhldGljQ2xpY2sobV9wZW5kaW5nU3ludGhldGljQ2xp
Y2tOb2RlLmdldCgpLCBtX3BlbmRpbmdTeW50aGV0aWNDbGlja0xvY2F0aW9uLCBtX3BlbmRpbmdT
eW50aGV0aWNDbGlja01vZGlmaWVycywgV2ViQ29yZTo6T25lRmluZ2VyVGFwKTsKKyAgICAgICAg
Y29tcGxldGVTeW50aGV0aWNDbGljaygqbV9wZW5kaW5nU3ludGhldGljQ2xpY2tOb2RlLCBtX3Bl
bmRpbmdTeW50aGV0aWNDbGlja0xvY2F0aW9uLCBtX3BlbmRpbmdTeW50aGV0aWNDbGlja01vZGlm
aWVycywgV2ViQ29yZTo6T25lRmluZ2VyVGFwKTsKICAgICB9IGVsc2UKICAgICAgICAgTE9HKENv
bnRlbnRPYnNlcnZhdGlvbiwgIk9ic2VydmVkIG1lYW5pbmdmdWwgdmlzaWJsZSBjaGFuZ2UgLT4g
aG92ZXIuIik7CiAKQEAgLTU5Nyw3ICs1OTcsNyBAQCB2b2lkIFdlYlBhZ2U6OmNvbXBsZXRlUGVu
ZGluZ1N5bnRoZXRpY0NsaWNrRm9yQ29udGVudENoYW5nZU9ic2VydmVyKCkKICAgICBtX3BlbmRp
bmdTeW50aGV0aWNDbGlja01vZGlmaWVycyA9IHsgfTsKIH0KIAotdm9pZCBXZWJQYWdlOjpjb21w
bGV0ZVN5bnRoZXRpY0NsaWNrKE5vZGUqIG5vZGVSZXNwb25kaW5nVG9DbGljaywgY29uc3QgV2Vi
Q29yZTo6RmxvYXRQb2ludCYgbG9jYXRpb24sIE9wdGlvblNldDxXZWJFdmVudDo6TW9kaWZpZXI+
IG1vZGlmaWVycywgU3ludGhldGljQ2xpY2tUeXBlIHN5bnRoZXRpY0NsaWNrVHlwZSkKK3ZvaWQg
V2ViUGFnZTo6Y29tcGxldGVTeW50aGV0aWNDbGljayhOb2RlJiBub2RlUmVzcG9uZGluZ1RvQ2xp
Y2ssIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGxvY2F0aW9uLCBPcHRpb25TZXQ8V2ViRXZl
bnQ6Ok1vZGlmaWVyPiBtb2RpZmllcnMsIFN5bnRoZXRpY0NsaWNrVHlwZSBzeW50aGV0aWNDbGlj
a1R5cGUpCiB7CiAgICAgSW50UG9pbnQgcm91bmRlZEFkanVzdGVkUG9pbnQgPSByb3VuZGVkSW50
UG9pbnQobG9jYXRpb24pOwogICAgIEZyYW1lJiBtYWluZnJhbWUgPSBtX3BhZ2UtPm1haW5GcmFt
ZSgpOwpAQCAtNjM0LDcgKzYzNCw3IEBAIHZvaWQgV2ViUGFnZTo6Y29tcGxldGVTeW50aGV0aWND
bGljayhOb2RlKiBub2RlUmVzcG9uZGluZ1RvQ2xpY2ssIGNvbnN0IFdlYkNvcmU6CiAgICAgaWYg
KG5ld0ZvY3VzZWRFbGVtZW50ICYmIG5ld0ZvY3VzZWRFbGVtZW50ID09IG9sZEZvY3VzZWRFbGVt
ZW50KQogICAgICAgICBlbGVtZW50RGlkUmVmb2N1cygqbmV3Rm9jdXNlZEVsZW1lbnQpOwogCi0g
ICAgaWYgKCF0YXBXYXNIYW5kbGVkIHx8ICFub2RlUmVzcG9uZGluZ1RvQ2xpY2sgfHwgIW5vZGVS
ZXNwb25kaW5nVG9DbGljay0+aXNFbGVtZW50Tm9kZSgpKQorICAgIGlmICghdGFwV2FzSGFuZGxl
ZCB8fCAhbm9kZVJlc3BvbmRpbmdUb0NsaWNrLmlzRWxlbWVudE5vZGUoKSkKICAgICAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWROb3RIYW5kbGVUYXBBc0NsaWNrKHJvdW5kZWRJ
bnRQb2ludChsb2NhdGlvbikpKTsKICAgICAKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkRpZENvbXBsZXRlU3ludGhldGljQ2xpY2soKSk7CkBAIC02NTcsNyArNjU3LDcgQEAgdm9p
ZCBXZWJQYWdlOjpoYW5kbGVUYXAoY29uc3QgSW50UG9pbnQmIHBvaW50LCBPcHRpb25TZXQ8V2Vi
RXZlbnQ6Ok1vZGlmaWVyPiBtb2QKICAgICB9CiAjZW5kaWYKICAgICBlbHNlCi0gICAgICAgIGhh
bmRsZVN5bnRoZXRpY0NsaWNrKG5vZGVSZXNwb25kaW5nVG9DbGljaywgYWRqdXN0ZWRQb2ludCwg
bW9kaWZpZXJzKTsKKyAgICAgICAgaGFuZGxlU3ludGhldGljQ2xpY2soKm5vZGVSZXNwb25kaW5n
VG9DbGljaywgYWRqdXN0ZWRQb2ludCwgbW9kaWZpZXJzKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpy
ZXF1ZXN0Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbihXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKQEAgLTc2OCw3ICs3NjgsNyBAQCB2b2lkIFdlYlBhZ2U6OmhhbmRsZVR3b0ZpbmdlclRh
cEF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCBPcHRpb25TZQogICAgICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZE5vdEhhbmRsZVRhcEFzQ2xpY2socm91
bmRlZEludFBvaW50KGFkanVzdGVkUG9pbnQpKSk7CiAgICAgfSBlbHNlCiAjZW5kaWYKLSAgICAg
ICAgY29tcGxldGVTeW50aGV0aWNDbGljayhub2RlUmVzcG9uZGluZ1RvQ2xpY2ssIGFkanVzdGVk
UG9pbnQsIG1vZGlmaWVycywgV2ViQ29yZTo6VHdvRmluZ2VyVGFwKTsKKyAgICAgICAgY29tcGxl
dGVTeW50aGV0aWNDbGljaygqbm9kZVJlc3BvbmRpbmdUb0NsaWNrLCBhZGp1c3RlZFBvaW50LCBt
b2RpZmllcnMsIFdlYkNvcmU6OlR3b0ZpbmdlclRhcCk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6aGFu
ZGxlU3R5bHVzU2luZ2xlVGFwQXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQs
IHVpbnQ2NF90IHJlcXVlc3RJRCkKQEAgLTgzNyw3ICs4MzcsNyBAQCB2b2lkIFdlYlBhZ2U6OmNv
bW1pdFBvdGVudGlhbFRhcChPcHRpb25TZXQ8V2ViRXZlbnQ6Ok1vZGlmaWVyPiBtb2RpZmllcnMs
IHVpbnQ2NAogICAgICAgICAgICAgY29tbWl0UG90ZW50aWFsVGFwRmFpbGVkKCk7CiAgICAgICAg
IH0gZWxzZQogI2VuZGlmCi0gICAgICAgICAgICBoYW5kbGVTeW50aGV0aWNDbGljayhub2RlUmVz
cG9uZGluZ1RvQ2xpY2ssIGFkanVzdGVkUG9pbnQsIG1vZGlmaWVycyk7CisgICAgICAgICAgICBo
YW5kbGVTeW50aGV0aWNDbGljaygqbm9kZVJlc3BvbmRpbmdUb0NsaWNrLCBhZGp1c3RlZFBvaW50
LCBtb2RpZmllcnMpOwogICAgIH0gZWxzZQogICAgICAgICBjb21taXRQb3RlbnRpYWxUYXBGYWls
ZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50SU9TLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLm1tCmluZGV4IDg4Y2NlYzkwNmYwOTZiZTVmOTJh
ODc3MDk2YjNjNTY3MWY4NjExOGUuLjc4NjQzMWY3MjIwNzZjZTRjODNkY2NhN2MyZDVjZTkxY2Jj
MDhmNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MubW0KQEAgLTE4NCw5ICsxODQsOSBAQCB2b2lk
IFdlYkNocm9tZUNsaWVudElPUzo6c2V0TmVlZHNTY3JvbGxOb3RpZmljYXRpb25zKFdlYkNvcmU6
OkZyYW1lJiBmcmFtZSwgYm9vbAogCiB2b2lkIFdlYkNocm9tZUNsaWVudElPUzo6b2JzZXJ2ZWRD
b250ZW50Q2hhbmdlKFdlYkNvcmU6OkZyYW1lJiBmcmFtZSkKIHsKLSAgICBpZiAoIWZyYW1lLnBh
Z2UoKSkKKyAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBb
W3dlYlZpZXcoKSBfVUlLaXREZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzp3ZWJWaWV3KCkgZGlk
T2JzZXJ2ZURlZmVycmVkQ29udGVudENoYW5nZTpmcmFtZS5wYWdlKCktPmNvbnRlbnRDaGFuZ2VP
YnNlcnZlcigpLm9ic2VydmVkQ29udGVudENoYW5nZSgpIGZvckZyYW1lOmtpdCgmZnJhbWUpXTsK
KyAgICBbW3dlYlZpZXcoKSBfVUlLaXREZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzp3ZWJWaWV3
KCkgZGlkT2JzZXJ2ZURlZmVycmVkQ29udGVudENoYW5nZTpmcmFtZS5kb2N1bWVudCgpLT5jb250
ZW50Q2hhbmdlT2JzZXJ2ZXIoKS5vYnNlcnZlZENvbnRlbnRDaGFuZ2UoKSBmb3JGcmFtZTpraXQo
JmZyYW1lKV07CiB9CiAKIHN0YXRpYyBpbmxpbmUgTlNTdHJpbmcgKm5hbWVGb3JWaWV3cG9ydEZp
dFZhbHVlKFZpZXdwb3J0Rml0IHZhbHVlKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>