<?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>177193</bug_id>
          
          <creation_ts>2017-09-19 14:21:45 -0700</creation_ts>
          <short_desc>Switch PeerConnection to release logging</short_desc>
          <delta_ts>2017-11-29 13:45:28 -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>WebRTC</component>
          <version>Other</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="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1350506</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-09-19 14:21:45 -0700</bug_when>
    <thetext>Switch existing PeerConnection logging to release logging.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350507</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-19 14:22:29 -0700</bug_when>
    <thetext>&lt;rdar://problem/34529014&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350528</commentid>
    <comment_count>2</comment_count>
      <attachid>321247</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-09-19 14:58:29 -0700</bug_when>
    <thetext>Created attachment 321247
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350564</commentid>
    <comment_count>3</comment_count>
      <attachid>321247</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-09-19 16:03:46 -0700</bug_when>
    <thetext>Comment on attachment 321247
Proposed patch.

Looks good to me in general.
Some details below.

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

&gt; Source/WebCore/Modules/mediastream/PeerConnectionBackend.cpp:83
&gt; +    ALWAYS_LOG(LOGIDENTIFIER, &quot;Create offer failed:&quot;, exception.message());

Probably fine to remove the \n as you did since exception.message might be small and not multiline like the sdp.

&gt; Source/WebCore/Modules/mediastream/PeerConnectionBackend.cpp:363
&gt; +    ALWAYS_LOG(LOGIDENTIFIER, &quot;Gathered ice candidate:\n&quot;, sdp);

sdp here is small so it may be fine as a one liner.

&gt; Source/WebCore/Modules/mediastream/PeerConnectionBackend.h:76
&gt; +    PeerConnectionBackend(RTCPeerConnection&amp;);

Add explicit

&gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp:62
&gt; +using namespace PAL;

Do we really need it?

&gt; Source/WebCore/platform/mediastream/RTCIceConnectionState.h:50
&gt; +    static String toString(const WebCore::RTCIceConnectionState state)

JSRTCIceConnectionState.cpp/.h have the same function called convertEnumerationToString().
We can probably try piggybacking on it.

&gt; Source/WebCore/platform/mediastream/RTCIceConnectionState.h:68
&gt; +        ASSERT_NOT_REACHED();

I am not sure we need it anymore since we have compilation errors if not case-ing all enumeration values.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350654</commentid>
    <comment_count>4</comment_count>
      <attachid>321288</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-09-19 21:49:46 -0700</bug_when>
    <thetext>Created attachment 321288
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350655</commentid>
    <comment_count>5</comment_count>
      <attachid>321247</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-09-19 21:52:33 -0700</bug_when>
    <thetext>Comment on attachment 321247
Proposed patch.

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

&gt;&gt; Source/WebCore/Modules/mediastream/PeerConnectionBackend.cpp:83
&gt;&gt; +    ALWAYS_LOG(LOGIDENTIFIER, &quot;Create offer failed:&quot;, exception.message());
&gt; 
&gt; Probably fine to remove the \n as you did since exception.message might be small and not multiline like the sdp.

There isn&apos;t a \n in this one.

&gt;&gt; Source/WebCore/Modules/mediastream/PeerConnectionBackend.cpp:363
&gt;&gt; +    ALWAYS_LOG(LOGIDENTIFIER, &quot;Gathered ice candidate:\n&quot;, sdp);
&gt; 
&gt; sdp here is small so it may be fine as a one liner.

Fixed.

&gt;&gt; Source/WebCore/Modules/mediastream/PeerConnectionBackend.h:76
&gt;&gt; +    PeerConnectionBackend(RTCPeerConnection&amp;);
&gt; 
&gt; Add explicit

Fixed.

&gt;&gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp:62
&gt;&gt; +using namespace PAL;
&gt; 
&gt; Do we really need it?

Nope.

&gt;&gt; Source/WebCore/platform/mediastream/RTCIceConnectionState.h:50
&gt;&gt; +    static String toString(const WebCore::RTCIceConnectionState state)
&gt; 
&gt; JSRTCIceConnectionState.cpp/.h have the same function called convertEnumerationToString().
&gt; We can probably try piggybacking on it.

Changed this and RTCPeerConnectionState to use convertEnumerationToString.

&gt;&gt; Source/WebCore/platform/mediastream/RTCIceConnectionState.h:68
&gt;&gt; +        ASSERT_NOT_REACHED();
&gt; 
&gt; I am not sure we need it anymore since we have compilation errors if not case-ing all enumeration values.

Unnecessary since it now just calls convertEnumerationToString.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350802</commentid>
    <comment_count>6</comment_count>
      <attachid>321288</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-09-20 09:54:18 -0700</bug_when>
    <thetext>Comment on attachment 321288
Proposed patch.

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

&gt; Source/WebCore/Modules/mediastream/PeerConnectionBackend.cpp:223
&gt; +    ALWAYS_LOG(LOGIDENTIFIER, &quot;Set remote description succeeded&quot;);

It seems ALWAYS_LOG is taking LOGIDENTIFIER as first parameter in almost all of the code base right now.
Maybe ALWAYS_LOG should by default log the identifier without the need to pass LOGIDENTIFIER.
This would end-up with a shorter ALWAYS_LOG. Ditto for INFO_LOG.

&gt; Source/WebCore/platform/mediastream/RTCIceGatheringState.h:48
&gt; +    static String toString(const WebCore::RTCIceGatheringState state)

There is probably a convertEnumerationToString for this one too.

&gt; Source/WebCore/platform/mediastream/RTCSignalingState.h:50
&gt; +        switch (state) {

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350804</commentid>
    <comment_count>7</comment_count>
      <attachid>321288</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-09-20 09:54:33 -0700</bug_when>
    <thetext>Comment on attachment 321288
Proposed patch.

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

&gt;&gt; Source/WebCore/Modules/mediastream/PeerConnectionBackend.cpp:223
&gt;&gt; +    ALWAYS_LOG(LOGIDENTIFIER, &quot;Set remote description succeeded&quot;);
&gt; 
&gt; It seems ALWAYS_LOG is taking LOGIDENTIFIER as first parameter in almost all of the code base right now.
&gt; Maybe ALWAYS_LOG should by default log the identifier without the need to pass LOGIDENTIFIER.
&gt; This would end-up with a shorter ALWAYS_LOG. Ditto for INFO_LOG.

It seems ALWAYS_LOG is taking LOGIDENTIFIER as first parameter in almost all of the code base right now.
Maybe ALWAYS_LOG should by default log the identifier without the need to pass LOGIDENTIFIER.
This would end-up with a shorter ALWAYS_LOG. Ditto for INFO_LOG.

&gt;&gt; Source/WebCore/platform/mediastream/RTCIceGatheringState.h:48
&gt;&gt; +    static String toString(const WebCore::RTCIceGatheringState state)
&gt; 
&gt; There is probably a convertEnumerationToString for this one too.

There is probably a convertEnumerationToString for this one too.

&gt;&gt; Source/WebCore/platform/mediastream/RTCSignalingState.h:50
&gt;&gt; +        switch (state) {
&gt; 
&gt; Ditto.

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350830</commentid>
    <comment_count>8</comment_count>
      <attachid>321330</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-09-20 10:35:41 -0700</bug_when>
    <thetext>Created attachment 321330
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350845</commentid>
    <comment_count>9</comment_count>
      <attachid>321330</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-20 10:55:31 -0700</bug_when>
    <thetext>Comment on attachment 321330
Patch for landing.

Clearing flags on attachment: 321330

Committed r222271: &lt;http://trac.webkit.org/changeset/222271&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321247</attachid>
            <date>2017-09-19 14:58:29 -0700</date>
            <delta_ts>2017-09-19 21:49:46 -0700</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>web_rtc_logging_patch_2.txt</filename>
            <type>text/plain</type>
            <size>33828</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMjA5MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc1IEBACisyMDE3LTA5LTE5ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFN3aXRjaCBQZWVyQ29u
bmVjdGlvbiB0byByZWxlYXNlIGxvZ2dpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3NzE5MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzQ1Mjkw
MTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OlBlZXJDb25uZWN0aW9uQmFja2VuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZU9mZmVyU3VjY2Vl
ZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlT2Zm
ZXJGYWlsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjcmVh
dGVBbnN3ZXJTdWNjZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb25CYWNr
ZW5kOjpjcmVhdGVBbnN3ZXJGYWlsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rp
b25CYWNrZW5kOjpzZXRMb2NhbERlc2NyaXB0aW9uU3VjY2VlZGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6c2V0TG9jYWxEZXNjcmlwdGlvbkZhaWxlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnNldFJlbW90ZURlc2NyaXB0
aW9uU3VjY2VlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6
c2V0UmVtb3RlRGVzY3JpcHRpb25GYWlsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5l
Y3Rpb25CYWNrZW5kOjphZGRJY2VDYW5kaWRhdGVTdWNjZWVkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRJY2VDYW5kaWRhdGVGYWlsZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpuZXdJQ0VDYW5kaWRhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpkb25lR2F0aGVyaW5nQ2FuZGlk
YXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmxvZ0NoYW5u
ZWwgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25C
YWNrZW5kLmg6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OlBlZXJD
b25uZWN0aW9uQmFja2VuZCk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25u
ZWN0aW9uOjpSVENQZWVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29u
bmVjdGlvbjo6flJUQ1BlZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJD
b25uZWN0aW9uOjphZGRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlv
bjo6cmVtb3ZlVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246OmFk
ZFRyYW5zY2VpdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpxdWV1
ZWRDcmVhdGVPZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6cXVl
dWVkQ3JlYXRlQW5zd2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpx
dWV1ZWRTZXRMb2NhbERlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25u
ZWN0aW9uOjpxdWV1ZWRTZXRSZW1vdGVEZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpS
VENQZWVyQ29ubmVjdGlvbjo6cXVldWVkQWRkSWNlQ2FuZGlkYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJUQ1BlZXJDb25uZWN0aW9uOjppbml0aWFsaXplQ29uZmlndXJhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6c2V0Q29uZmlndXJhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6Y3JlYXRlRGF0YUNoYW5uZWwpOgorICAgICAg
ICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246OnNldFNpZ25hbGluZ1N0YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjp1cGRhdGVJY2VHYXRoZXJpbmdTdGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6dXBkYXRlSWNlQ29ubmVjdGlv
blN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjp1cGRhdGVDb25u
ZWN0aW9uU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246OnJlcGxh
Y2VUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6ZGlzcGF0Y2hF
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6bG9nQ2hhbm5lbCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpydGNJY2VHYXRoZXJpbmdTdGF0ZVRvU3RyaW5nKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnJ0Y0ljZUNvbm5lY3Rpb25TdGF0ZVRvU3RyaW5n
KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0
aW9uLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENNZWRpYUVuZHBvaW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5k
cG9pbnQ6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2Vi
UlRDTWVkaWFFbmRwb2ludDo6T25TdGF0c0RlbGl2ZXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpM
aWJXZWJSVENNZWRpYUVuZHBvaW50OjpzdGFydExvZ2dpbmdTdGF0cyk6CisgICAgICAgIChXZWJD
b3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojpsb2dDaGFubmVsIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OnN0YXRzTG9nSW50ZXJ2YWwgY29uc3Qp
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlh
RW5kcG9pbnQuaDoKKyAgICAgICAgKFBBTDo6TG9nQXJndW1lbnQ8d2VicnRjOjpSVENTdGF0cz46
OnRvU3RyaW5nKToKKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0ljZUNvbm5l
Y3Rpb25TdGF0ZS5oOgorICAgICAgICAoUEFMOjpMb2dBcmd1bWVudDxXZWJDb3JlOjpSVENJY2VD
b25uZWN0aW9uU3RhdGU+Ojp0b1N0cmluZyk6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SVENJY2VHYXRoZXJpbmdTdGF0ZS5oOgorICAgICAgICAoUEFMOjpMb2dBcmd1bWVudDxX
ZWJDb3JlOjpSVENJY2VHYXRoZXJpbmdTdGF0ZT46OnRvU3RyaW5nKToKKworICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uU3RhdGUuaDoKKyAgICAgICAgKFBB
TDo6TG9nQXJndW1lbnQ8V2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb25TdGF0ZT46OnRvU3RyaW5n
KToKKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1NpZ25hbGluZ1N0YXRlLmg6
CisgICAgICAgIChQQUw6OkxvZ0FyZ3VtZW50PFdlYkNvcmU6OlJUQ1NpZ25hbGluZ1N0YXRlPjo6
dG9TdHJpbmcpOgorCiAyMDE3LTA5LTE1ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBw
bGUuY29tPgogCiAgICAgICAgIFN3aXRjaCB0ZXh0IHRyYWNrcyB0byByZWxlYXNlIGxvZ2dpbmcK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25C
YWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAJKHJldmlzaW9uIDIyMjA5MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsMTcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Cit1c2luZyBuYW1lc3BhY2UgUEFMOworCitQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OlBlZXJDb25u
ZWN0aW9uQmFja2VuZChSVENQZWVyQ29ubmVjdGlvbiYgcGVlckNvbm5lY3Rpb24pCisgICAgOiBt
X3BlZXJDb25uZWN0aW9uKHBlZXJDb25uZWN0aW9uKQorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxF
RAorICAgICwgbV9sb2dnZXIocGVlckNvbm5lY3Rpb24ubG9nZ2VyKCkpCisgICAgLCBtX2xvZ0lk
ZW50aWZpZXIocGVlckNvbm5lY3Rpb24ubG9nSWRlbnRpZmllcigpKQorI2VuZGlmCit7Cit9CisK
IHZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjcmVhdGVPZmZlcihSVENPZmZlck9wdGlvbnMm
JiBvcHRpb25zLCBQZWVyQ29ubmVjdGlvbjo6U2Vzc2lvbkRlc2NyaXB0aW9uUHJvbWlzZSYmIHBy
b21pc2UpCiB7CiAgICAgQVNTRVJUKCFtX29mZmVyQW5zd2VyUHJvbWlzZSk7CkBAIC01Niw3ICs2
Nyw3IEBAIHZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjcmVhdGVPZmZlcigKIHZvaWQgUGVl
ckNvbm5lY3Rpb25CYWNrZW5kOjpjcmVhdGVPZmZlclN1Y2NlZWRlZChTdHJpbmcmJiBzZHApCiB7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBSRUxFQVNFX0xPRyhXZWJSVEMsICJD
cmVhdGluZyBvZmZlciBzdWNjZWVkZWQ6XG4le3B1YmxpY31zXG4iLCBzZHAudXRmOCgpLmRhdGEo
KSk7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiQ3JlYXRlIG9mZmVyIHN1Y2NlZWRl
ZDpcbiIsIHNkcCk7CiAKICAgICBpZiAobV9wZWVyQ29ubmVjdGlvbi5pc0Nsb3NlZCgpKQogICAg
ICAgICByZXR1cm47CkBAIC02OSw3ICs4MCw3IEBAIHZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5k
OjpjcmVhdGVPZmZlclMKIHZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjcmVhdGVPZmZlckZh
aWxlZChFeGNlcHRpb24mJiBleGNlcHRpb24pCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKLSAgICBSRUxFQVNFX0xPRyhXZWJSVEMsICJDcmVhdGluZyBvZmZlciBmYWlsZWQ6XG4le3B1
YmxpY31zXG4iLCBleGNlcHRpb24ubWVzc2FnZSgpLnV0ZjgoKS5kYXRhKCkpOworICAgIEFMV0FZ
U19MT0coTE9HSURFTlRJRklFUiwgIkNyZWF0ZSBvZmZlciBmYWlsZWQ6IiwgZXhjZXB0aW9uLm1l
c3NhZ2UoKSk7CiAKICAgICBpZiAobV9wZWVyQ29ubmVjdGlvbi5pc0Nsb3NlZCgpKQogICAgICAg
ICByZXR1cm47CkBAIC05MSw3ICsxMDIsNyBAQCB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6
Y3JlYXRlQW5zd2VyCiB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlQW5zd2VyU3Vj
Y2VlZGVkKFN0cmluZyYmIHNkcCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAg
IFJFTEVBU0VfTE9HKFdlYlJUQywgIkNyZWF0aW5nIGFuc3dlciBzdWNjZWVkZWQ6XG4le3B1Ymxp
Y31zXG4iLCBzZHAudXRmOCgpLmRhdGEoKSk7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVS
LCAiQ3JlYXRlIGFuc3dlciBzdWNjZWVkZWQ6XG4iLCBzZHApOwogCiAgICAgaWYgKG1fcGVlckNv
bm5lY3Rpb24uaXNDbG9zZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTA0LDcgKzExNSw3IEBA
IHZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjcmVhdGVBbnN3ZXIKIHZvaWQgUGVlckNvbm5l
Y3Rpb25CYWNrZW5kOjpjcmVhdGVBbnN3ZXJGYWlsZWQoRXhjZXB0aW9uJiYgZXhjZXB0aW9uKQog
ewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgUkVMRUFTRV9MT0coV2ViUlRDLCAi
Q3JlYXRpbmcgYW5zd2VyIGZhaWxlZDpcbiV7cHVibGljfXNcbiIsIGV4Y2VwdGlvbi5tZXNzYWdl
KCkudXRmOCgpLmRhdGEoKSk7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiQ3JlYXRl
IGFuc3dlciBmYWlsZWQ6IiwgZXhjZXB0aW9uLm1lc3NhZ2UoKSk7CiAKICAgICBpZiAobV9wZWVy
Q29ubmVjdGlvbi5pc0Nsb3NlZCgpKQogICAgICAgICByZXR1cm47CkBAIC0xNDksNyArMTYwLDcg
QEAgdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnNldExvY2FsRGVzYwogdm9pZCBQZWVyQ29u
bmVjdGlvbkJhY2tlbmQ6OnNldExvY2FsRGVzY3JpcHRpb25TdWNjZWVkZWQoKQogewogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgUkVMRUFTRV9MT0coV2ViUlRDLCAiU2V0dGluZyBs
b2NhbCBkZXNjcmlwdGlvbiBzdWNjZWVkZWRcbiIpOworICAgIEFMV0FZU19MT0coTE9HSURFTlRJ
RklFUik7CiAKICAgICBpZiAobV9wZWVyQ29ubmVjdGlvbi5pc0Nsb3NlZCgpKQogICAgICAgICBy
ZXR1cm47CkBAIC0xNjMsNyArMTc0LDcgQEAgdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnNl
dExvY2FsRGVzYwogdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnNldExvY2FsRGVzY3JpcHRp
b25GYWlsZWQoRXhjZXB0aW9uJiYgZXhjZXB0aW9uKQogewogICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7Ci0gICAgUkVMRUFTRV9MT0coV2ViUlRDLCAiU2V0dGluZyBsb2NhbCBkZXNjcmlwdGlv
biBmYWlsZWQ6XG4le3B1YmxpY31zXG4iLCBleGNlcHRpb24ubWVzc2FnZSgpLnV0ZjgoKS5kYXRh
KCkpOworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgIlNldCBsb2NhbCBkZXNjcmlwdGlv
biBmYWlsZWQ6IiwgZXhjZXB0aW9uLm1lc3NhZ2UoKSk7CiAKICAgICBpZiAobV9wZWVyQ29ubmVj
dGlvbi5pc0Nsb3NlZCgpKQogICAgICAgICByZXR1cm47CkBAIC0yMDksNyArMjIwLDcgQEAgdm9p
ZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnNldFJlbW90ZURlcwogdm9pZCBQZWVyQ29ubmVjdGlv
bkJhY2tlbmQ6OnNldFJlbW90ZURlc2NyaXB0aW9uU3VjY2VlZGVkKCkKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwotICAgIFJFTEVBU0VfTE9HKFdlYlJUQywgIlNldHRpbmcgcmVtb3Rl
IGRlc2NyaXB0aW9uIHN1Y2NlZWRlZFxuIik7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVS
LCAiU2V0IHJlbW90ZSBkZXNjcmlwdGlvbiBzdWNjZWVkZWQiKTsKIAogICAgIGlmIChtX3BlZXJD
b25uZWN0aW9uLmlzQ2xvc2VkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTIyMyw3ICsyMzQsNyBA
QCB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6c2V0UmVtb3RlRGVzCiB2b2lkIFBlZXJDb25u
ZWN0aW9uQmFja2VuZDo6c2V0UmVtb3RlRGVzY3JpcHRpb25GYWlsZWQoRXhjZXB0aW9uJiYgZXhj
ZXB0aW9uKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgUkVMRUFTRV9MT0co
V2ViUlRDLCAiU2V0dGluZyByZW1vdGUgZGVzY3JpcHRpb24gZmFpbGVkOlxuJXtwdWJsaWN9c1xu
IiwgZXhjZXB0aW9uLm1lc3NhZ2UoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBBTFdBWVNfTE9HKExP
R0lERU5USUZJRVIsICJTZXQgcmVtb3RlIGRlc2NyaXB0aW9uIGZhaWxlZDoiLCBleGNlcHRpb24u
bWVzc2FnZSgpKTsKIAogICAgIGlmIChtX3BlZXJDb25uZWN0aW9uLmlzQ2xvc2VkKCkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTI1NSw3ICsyNjYsNyBAQCB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2Vu
ZDo6YWRkSWNlQ2FuZGlkCiB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkSWNlQ2FuZGlk
YXRlU3VjY2VlZGVkKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIFJFTEVB
U0VfTE9HKFdlYlJUQywgIkFkZGluZyBpY2UgY2FuZGlkYXRlIHN1Y2NlZWRlZFxuIik7CisgICAg
QUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiQWRkaW5nIGljZSBjYW5kaWRhdGUgc3VjY2VlZGVk
Iik7CiAKICAgICBpZiAobV9wZWVyQ29ubmVjdGlvbi5pc0Nsb3NlZCgpKQogICAgICAgICByZXR1
cm47CkBAIC0yNzAsNyArMjgxLDcgQEAgdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZElj
ZUNhbmRpZAogdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZEljZUNhbmRpZGF0ZUZhaWxl
ZChFeGNlcHRpb24mJiBleGNlcHRpb24pCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
LSAgICBSRUxFQVNFX0xPRyhXZWJSVEMsICJBZGRpbmcgaWNlIGNhbmRpZGF0ZSBmYWlsZWQ6XG4l
e3B1YmxpY31zXG4iLCBleGNlcHRpb24ubWVzc2FnZSgpLnV0ZjgoKS5kYXRhKCkpOworICAgIEFM
V0FZU19MT0coTE9HSURFTlRJRklFUiwgIkFkZGluZyBpY2UgY2FuZGlkYXRlIGZhaWxlZDoiLCBl
eGNlcHRpb24ubWVzc2FnZSgpKTsKIAogICAgIGlmIChtX3BlZXJDb25uZWN0aW9uLmlzQ2xvc2Vk
KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTM0OSw3ICszNjAsNyBAQCBTdHJpbmcgUGVlckNvbm5l
Y3Rpb25CYWNrZW5kOjpmaWx0ZXJTRFAoCiAKIHZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpu
ZXdJQ0VDYW5kaWRhdGUoU3RyaW5nJiYgc2RwLCBTdHJpbmcmJiBtaWQsIHVuc2lnbmVkIHNob3J0
IHNkcE1MaW5lSW5kZXgpCiB7Ci0gICAgUkVMRUFTRV9MT0coV2ViUlRDLCAiR2F0aGVyZWQgaWNl
IGNhbmRpZGF0ZTpcbiV7cHVibGljfXNcbiIsIHNkcC51dGY4KCkuZGF0YSgpKTsKKyAgICBBTFdB
WVNfTE9HKExPR0lERU5USUZJRVIsICJHYXRoZXJlZCBpY2UgY2FuZGlkYXRlOlxuIiwgc2RwKTsK
IAogICAgIGlmICghbV9zaG91bGRGaWx0ZXJJQ0VDYW5kaWRhdGVzKSB7CiAgICAgICAgIGZpcmVJ
Q0VDYW5kaWRhdGVFdmVudChSVENJY2VDYW5kaWRhdGU6OmNyZWF0ZShXVEZNb3ZlKHNkcCksIFdU
Rk1vdmUobWlkKSwgc2RwTUxpbmVJbmRleCkpOwpAQCAtMzY1LDcgKzM3Niw3IEBAIHZvaWQgUGVl
ckNvbm5lY3Rpb25CYWNrZW5kOjpuZXdJQ0VDYW5kaWQKIHZvaWQgUGVlckNvbm5lY3Rpb25CYWNr
ZW5kOjpkb25lR2F0aGVyaW5nQ2FuZGlkYXRlcygpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKLSAgICBSRUxFQVNFX0xPRyhXZWJSVEMsICJGaW5pc2hlZCBpY2UgY2FuZGlkYXRlIGdh
dGhlcmluZ1xuIik7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiRmluaXNoZWQgaWNl
IGNhbmRpZGF0ZSBnYXRoZXJpbmciKTsKIAogICAgIG1fcGVlckNvbm5lY3Rpb24uZmlyZUV2ZW50
KFJUQ1BlZXJDb25uZWN0aW9uSWNlRXZlbnQ6OmNyZWF0ZShmYWxzZSwgZmFsc2UsIG51bGxwdHIp
KTsKICAgICBtX3BlZXJDb25uZWN0aW9uLnVwZGF0ZUljZUdhdGhlcmluZ1N0YXRlKFJUQ0ljZUdh
dGhlcmluZ1N0YXRlOjpDb21wbGV0ZSk7CkBAIC00MDEsNiArNDEyLDEzIEBAIHZvaWQgUGVlckNv
bm5lY3Rpb25CYWNrZW5kOjptYXJrQXNOZWVkaW4KICAgICAgICAgbV9wZWVyQ29ubmVjdGlvbi5z
Y2hlZHVsZU5lZ290aWF0aW9uTmVlZGVkRXZlbnQoKTsKIH0KIAorI2lmICFSRUxFQVNFX0xPR19E
SVNBQkxFRAorV1RGTG9nQ2hhbm5lbCYgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpsb2dDaGFubmVs
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gTG9nV2ViUlRDOworfQorI2VuZGlmCisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0
aW9uQmFja2VuZC5oCShyZXZpc2lvbiAyMjIwOTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Nyw2ICszNyw4IEBACiAjaW5jbHVkZSAiUlRDUnRwUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlJU
Q1Nlc3Npb25EZXNjcmlwdGlvbi5oIgogI2luY2x1ZGUgIlJUQ1NpZ25hbGluZ1N0YXRlLmgiCisj
aW5jbHVkZSA8cGFsL0xvZ2dlci5oPgorI2luY2x1ZGUgPHBhbC9Mb2dnZXJIZWxwZXIuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02MywxMSArNjUsMTUgQEAgdXNpbmcgU3RhdHNQcm9t
aXNlID0gRE9NUHJvbWlzZURlZmVycmVkPAogCiB1c2luZyBDcmVhdGVQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQgPSBzdGQ6OnVuaXF1ZV9wdHI8UGVlckNvbm5lY3Rpb25CYWNrZW5kPiAoKikoUlRDUGVl
ckNvbm5lY3Rpb24mKTsKIAotY2xhc3MgUGVlckNvbm5lY3Rpb25CYWNrZW5kIHsKK2NsYXNzIFBl
ZXJDb25uZWN0aW9uQmFja2VuZAorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIDogcHVi
bGljIFBBTDo6TG9nZ2VySGVscGVyCisjZW5kaWYKK3sKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgQ3JlYXRlUGVlckNvbm5lY3Rpb25CYWNrZW5kIGNyZWF0ZTsKIAotICAgIFBl
ZXJDb25uZWN0aW9uQmFja2VuZChSVENQZWVyQ29ubmVjdGlvbiYgcGVlckNvbm5lY3Rpb24pIDog
bV9wZWVyQ29ubmVjdGlvbihwZWVyQ29ubmVjdGlvbikgeyB9CisgICAgUGVlckNvbm5lY3Rpb25C
YWNrZW5kKFJUQ1BlZXJDb25uZWN0aW9uJik7CiAgICAgdmlydHVhbCB+UGVlckNvbm5lY3Rpb25C
YWNrZW5kKCkgeyB9CiAKICAgICB2b2lkIGNyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmLCBQ
ZWVyQ29ubmVjdGlvbjo6U2Vzc2lvbkRlc2NyaXB0aW9uUHJvbWlzZSYmKTsKQEAgLTExMyw2ICsx
MTksMTMgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGFwcGx5Um90YXRpb25Gb3JPdXRn
b2luZ1ZpZGVvU291cmNlcygpIHsgfQogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAg
Y29uc3QgUEFMOjpMb2dnZXImIGxvZ2dlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nZ2Vy
LmdldCgpOyB9CisgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1fbG9nSWRlbnRpZmllcjsgfQorICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJQZWVyQ29ubmVjdGlvbkJhY2tlbmQiOyB9CisgICAg
V1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0IGZpbmFsOworI2VuZGlmCisKIHByb3Rl
Y3RlZDoKICAgICB2b2lkIGZpcmVJQ0VDYW5kaWRhdGVFdmVudChSZWZQdHI8UlRDSWNlQ2FuZGlk
YXRlPiYmKTsKICAgICB2b2lkIGRvbmVHYXRoZXJpbmdDYW5kaWRhdGVzKCk7CkBAIC0xNjIsNiAr
MTc1LDEwIEBAIHByaXZhdGU6CiAgICAgfTsKICAgICBWZWN0b3I8UGVuZGluZ0lDRUNhbmRpZGF0
ZT4gbV9wZW5kaW5nSUNFQ2FuZGlkYXRlczsKIAorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAor
ICAgIFJlZjxjb25zdCBQQUw6OkxvZ2dlcj4gbV9sb2dnZXI7CisgICAgY29uc3Qgdm9pZCogbV9s
b2dJZGVudGlmaWVyOworI2VuZGlmCiAgICAgYm9vbCBtX25lZ290aWF0aW9uTmVlZGVkIHsgZmFs
c2UgfTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UGVlckNvbm5lY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCShyZXZpc2lvbiAyMjIwOTEpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTIsMTIgKzUyLDE0IEBACiAjaW5jbHVkZSAiUlRDUGVlckNvbm5l
Y3Rpb25JY2VFdmVudC5oIgogI2luY2x1ZGUgIlJUQ1Nlc3Npb25EZXNjcmlwdGlvbi5oIgogI2lu
Y2x1ZGUgIlJUQ1RyYWNrRXZlbnQuaCIKKyNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlS
YW5kb21OdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0
Zi9VVUlELmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAordXNpbmcgbmFtZXNwYWNlIFBBTDsKIHVzaW5nIG5hbWVzcGFjZSBQZWVyQ29ubmVj
dGlvbjsKIAogUmVmPFJUQ1BlZXJDb25uZWN0aW9uPiBSVENQZWVyQ29ubmVjdGlvbjo6Y3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCkBAIC04MSwxNCArODMsMjAgQEAgUmVm
PFJUQ1BlZXJDb25uZWN0aW9uPiBSVENQZWVyQ29ubmVjdGlvbgogCiBSVENQZWVyQ29ubmVjdGlv
bjo6UlRDUGVlckNvbm5lY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKICAg
ICA6IEFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQK
KyAgICAsIG1fbG9nZ2VyKGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KS5sb2dnZXIoKSkKKyAg
ICAsIG1fbG9nSWRlbnRpZmllcihyZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPihjcnlwdG9n
cmFwaGljYWxseVJhbmRvbU51bWJlcigpKSkKKyNlbmRpZgogICAgICwgbV9iYWNrZW5kKFBlZXJD
b25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlKCp0aGlzKSkKIHsKKyAgICBBTFdBWVNfTE9HKExPR0lE
RU5USUZJRVIpOwogICAgIGlmICghbV9iYWNrZW5kKQogICAgICAgICBtX2Nvbm5lY3Rpb25TdGF0
ZSA9IFJUQ1BlZXJDb25uZWN0aW9uU3RhdGU6OkNsb3NlZDsKIH0KIAogUlRDUGVlckNvbm5lY3Rp
b246On5SVENQZWVyQ29ubmVjdGlvbigpCiB7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVS
KTsKICAgICB1bnJlZ2lzdGVyRnJvbUNvbnRyb2xsZXIoKTsKICAgICBzdG9wKCk7CiB9CkBAIC0x
MDYsNiArMTE0LDggQEAgRXhjZXB0aW9uT3I8dm9pZD4gUlRDUGVlckNvbm5lY3Rpb246OmluaQog
CiBFeGNlcHRpb25PcjxSZWY8UlRDUnRwU2VuZGVyPj4gUlRDUGVlckNvbm5lY3Rpb246OmFkZFRy
YWNrKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNrLCBjb25zdCBWZWN0b3I8c3RkOjpyZWZl
cmVuY2Vfd3JhcHBlcjxNZWRpYVN0cmVhbT4+JiBzdHJlYW1zKQogeworICAgIElORk9fTE9HKExP
R0lERU5USUZJRVIpOworCiAgICAgaWYgKGlzQ2xvc2VkKCkpCiAgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwogCkBAIC0xNjAsNiArMTcwLDggQEAgRXhjZXB0
aW9uT3I8UmVmPFJUQ1J0cFNlbmRlcj4+IFJUQ1BlZXJDbwogCiBFeGNlcHRpb25Pcjx2b2lkPiBS
VENQZWVyQ29ubmVjdGlvbjo6cmVtb3ZlVHJhY2soUlRDUnRwU2VuZGVyJiBzZW5kZXIpCiB7Cisg
ICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7CisKICAgICBpZiAoaXNDbG9zZWQoKSkKICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CiAKQEAgLTE4NCw2ICsx
OTYsOCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBSVENQZWVyQ29ubmVjdGlvbjo6cmVtCiAKIEV4Y2Vw
dGlvbk9yPFJlZjxSVENSdHBUcmFuc2NlaXZlcj4+IFJUQ1BlZXJDb25uZWN0aW9uOjphZGRUcmFu
c2NlaXZlcihBZGRUcmFuc2NlaXZlclRyYWNrT3JLaW5kJiYgd2l0aFRyYWNrLCBjb25zdCBSVENS
dHBUcmFuc2NlaXZlckluaXQmIGluaXQpCiB7CisgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7
CisKICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KHdpdGhUcmFjaykpIHsK
ICAgICAgICAgY29uc3QgU3RyaW5nJiBraW5kID0gV1RGOjpnZXQ8U3RyaW5nPih3aXRoVHJhY2sp
OwogICAgICAgICBpZiAoa2luZCAhPSAiYXVkaW8iICYmIGtpbmQgIT0gInZpZGVvIikKQEAgLTIx
OCw3ICsyMzIsNyBAQCBSZWY8UlRDUnRwVHJhbnNjZWl2ZXI+IFJUQ1BlZXJDb25uZWN0aW9uCiAK
IHZvaWQgUlRDUGVlckNvbm5lY3Rpb246OnF1ZXVlZENyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9u
cyYmIG9wdGlvbnMsIFNlc3Npb25EZXNjcmlwdGlvblByb21pc2UmJiBwcm9taXNlKQogewotICAg
IFJFTEVBU0VfTE9HKFdlYlJUQywgIkNyZWF0aW5nIG9mZmVyXG4iKTsKKyAgICBBTFdBWVNfTE9H
KExPR0lERU5USUZJRVIpOwogICAgIGlmIChpc0Nsb3NlZCgpKSB7CiAgICAgICAgIHByb21pc2Uu
cmVqZWN0KEludmFsaWRTdGF0ZUVycm9yKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjI5LDcgKzI0
Myw3IEBAIHZvaWQgUlRDUGVlckNvbm5lY3Rpb246OnF1ZXVlZENyZWF0ZU9mZmUKIAogdm9pZCBS
VENQZWVyQ29ubmVjdGlvbjo6cXVldWVkQ3JlYXRlQW5zd2VyKFJUQ0Fuc3dlck9wdGlvbnMmJiBv
cHRpb25zLCBTZXNzaW9uRGVzY3JpcHRpb25Qcm9taXNlJiYgcHJvbWlzZSkKIHsKLSAgICBSRUxF
QVNFX0xPRyhXZWJSVEMsICJDcmVhdGluZyBhbnN3ZXJcbiIpOworICAgIEFMV0FZU19MT0coTE9H
SURFTlRJRklFUik7CiAgICAgaWYgKGlzQ2xvc2VkKCkpIHsKICAgICAgICAgcHJvbWlzZS5yZWpl
Y3QoSW52YWxpZFN0YXRlRXJyb3IpOwogICAgICAgICByZXR1cm47CkBAIC0yNDAsNyArMjU0LDcg
QEAgdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6cXVldWVkQ3JlYXRlQW5zdwogCiB2b2lkIFJUQ1Bl
ZXJDb25uZWN0aW9uOjpxdWV1ZWRTZXRMb2NhbERlc2NyaXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlw
dGlvbiYgZGVzY3JpcHRpb24sIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiB7
Ci0gICAgUkVMRUFTRV9MT0coV2ViUlRDLCAiU2V0dGluZyBsb2NhbCBkZXNjcmlwdGlvbjpcbiV7
cHVibGljfXNcbiIsIGRlc2NyaXB0aW9uLnNkcCgpLnV0ZjgoKS5kYXRhKCkpOworICAgIEFMV0FZ
U19MT0coTE9HSURFTlRJRklFUiwgIlNldHRpbmcgbG9jYWwgZGVzY3JpcHRpb24gdG86XG4iLCBk
ZXNjcmlwdGlvbi5zZHAoKSk7CiAgICAgaWYgKGlzQ2xvc2VkKCkpIHsKICAgICAgICAgcHJvbWlz
ZS5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IpOwogICAgICAgICByZXR1cm47CkBAIC0yNjYsNyAr
MjgwLDcgQEAgUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4gUlRDUGVlckNvbgogCiB2b2lk
IFJUQ1BlZXJDb25uZWN0aW9uOjpxdWV1ZWRTZXRSZW1vdGVEZXNjcmlwdGlvbihSVENTZXNzaW9u
RGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9t
aXNlKQogewotICAgIFJFTEVBU0VfTE9HKFdlYlJUQywgIlNldHRpbmcgcmVtb3RlIGRlc2NyaXB0
aW9uOlxuJXtwdWJsaWN9c1xuIiwgZGVzY3JpcHRpb24uc2RwKCkudXRmOCgpLmRhdGEoKSk7Cisg
ICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiU2V0dGluZyByZW1vdGUgZGVzY3JpcHRpb24g
dG86XG4iLCBkZXNjcmlwdGlvbi5zZHAoKSk7CiAKICAgICBpZiAoaXNDbG9zZWQoKSkgewogICAg
ICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJvcik7CkBAIC0yOTIsNyArMzA2LDcg
QEAgUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4gUlRDUGVlckNvbgogCiB2b2lkIFJUQ1Bl
ZXJDb25uZWN0aW9uOjpxdWV1ZWRBZGRJY2VDYW5kaWRhdGUoUlRDSWNlQ2FuZGlkYXRlKiBydGND
YW5kaWRhdGUsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiB7Ci0gICAgUkVM
RUFTRV9MT0coV2ViUlRDLCAiUmVjZWl2ZWQgaWNlIGNhbmRpZGF0ZTpcbiV7cHVibGljfXNcbiIs
IHJ0Y0NhbmRpZGF0ZSA/IHJ0Y0NhbmRpZGF0ZS0+Y2FuZGlkYXRlKCkudXRmOCgpLmRhdGEoKSA6
ICJudWxsIik7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiUmVjZWl2ZWQgaWNlIGNh
bmRpZGF0ZTpcbiIsIHJ0Y0NhbmRpZGF0ZSA/IHJ0Y0NhbmRpZGF0ZS0+Y2FuZGlkYXRlKCkgOiAi
bnVsbCIpOwogCiAgICAgaWYgKGlzQ2xvc2VkKCkpIHsKICAgICAgICAgcHJvbWlzZS5yZWplY3Qo
SW52YWxpZFN0YXRlRXJyb3IpOwpAQCAtMzI5LDYgKzM0Myw4IEBAIHN0YXRpYyBpbmxpbmUgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8TWVkaWEKIAogRXhjZXB0aW9uT3I8dm9pZD4gUlRDUGVlckNvbm5l
Y3Rpb246OmluaXRpYWxpemVDb25maWd1cmF0aW9uKFJUQ0NvbmZpZ3VyYXRpb24mJiBjb25maWd1
cmF0aW9uKQogeworICAgIElORk9fTE9HKExPR0lERU5USUZJRVIpOworCiAgICAgYXV0byBzZXJ2
ZXJzID0gaWNlU2VydmVyc0Zyb21Db25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pOwogICAgIGlm
ICghc2VydmVycykKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NFcnJv
ciB9OwpAQCAtMzQ2LDYgKzM2Miw4IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFJUQ1BlZXJDb25uZWN0
aW9uOjpzZXQKICAgICBpZiAoaXNDbG9zZWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IEludmFsaWRTdGF0ZUVycm9yIH07CiAKKyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsKKwog
ICAgIGF1dG8gc2VydmVycyA9IGljZVNlcnZlcnNGcm9tQ29uZmlndXJhdGlvbihjb25maWd1cmF0
aW9uKTsKICAgICBpZiAoIXNlcnZlcnMpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZh
bGlkQWNjZXNzRXJyb3IgfTsKQEAgLTM2NCw2ICszODIsOCBAQCB2b2lkIFJUQ1BlZXJDb25uZWN0
aW9uOjpnZXRTdGF0cyhNZWRpYVN0CiAKIEV4Y2VwdGlvbk9yPFJlZjxSVENEYXRhQ2hhbm5lbD4+
IFJUQ1BlZXJDb25uZWN0aW9uOjpjcmVhdGVEYXRhQ2hhbm5lbChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBTdHJpbmcmJiBsYWJlbCwgUlRDRGF0YUNoYW5uZWxJbml0JiYgb3B0aW9u
cykKIHsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCiAgICAgaWYgKGlzQ2xvc2Vk
KCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwogCkBA
IC00NjUsMzEgKzQ4NSwxOSBAQCBib29sIFJUQ1BlZXJDb25uZWN0aW9uOjpoYXNQZW5kaW5nQWN0
aXZpCiAKIHZvaWQgUlRDUGVlckNvbm5lY3Rpb246OmFkZFRyYW5zY2VpdmVyKFJlZjxSVENSdHBU
cmFuc2NlaXZlcj4mJiB0cmFuc2NlaXZlcikKIHsKKyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVS
KTsKICAgICBtX3RyYW5zY2VpdmVyU2V0LT5hcHBlbmQoV1RGTW92ZSh0cmFuc2NlaXZlcikpOwog
fQogCiB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpzZXRTaWduYWxpbmdTdGF0ZShSVENTaWduYWxp
bmdTdGF0ZSBuZXdTdGF0ZSkKIHsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsIG5ld1N0
YXRlKTsKICAgICBtX3NpZ25hbGluZ1N0YXRlID0gbmV3U3RhdGU7CiB9CiAKLSNpZiAhUkVMRUFT
RV9MT0dfRElTQUJMRUQKLXN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciogcnRjSWNlR2F0aGVyaW5n
U3RhdGVUb1N0cmluZyhSVENJY2VHYXRoZXJpbmdTdGF0ZSBuZXdTdGF0ZSkKLXsKLSAgICBzd2l0
Y2ggKG5ld1N0YXRlKSB7Ci0gICAgY2FzZSBSVENJY2VHYXRoZXJpbmdTdGF0ZTo6TmV3OgotICAg
ICAgICByZXR1cm4gIm5ldyI7Ci0gICAgY2FzZSBSVENJY2VHYXRoZXJpbmdTdGF0ZTo6R2F0aGVy
aW5nOgotICAgICAgICByZXR1cm4gImdhdGhlcmluZyI7Ci0gICAgY2FzZSBSVENJY2VHYXRoZXJp
bmdTdGF0ZTo6Q29tcGxldGU6Ci0gICAgICAgIHJldHVybiAiY29tcGxldGUiOwotICAgIH0KLX0K
LSNlbmRpZgotCiB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjp1cGRhdGVJY2VHYXRoZXJpbmdTdGF0
ZShSVENJY2VHYXRoZXJpbmdTdGF0ZSBuZXdTdGF0ZSkKIHsKLSAgICBSRUxFQVNFX0xPRyhXZWJS
VEMsICJOZXcgSUNFIGdhdGhlcmluZyBzdGF0ZTogJXtwdWJsaWN9c1xuIiwgcnRjSWNlR2F0aGVy
aW5nU3RhdGVUb1N0cmluZyhuZXdTdGF0ZSkpOworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklF
UiwgbmV3U3RhdGUpOwogCiAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhb
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBuZXdTdGF0ZV0oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYpIHsKICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPmlzQ2xvc2VkKCkgfHwgcHJv
dGVjdGVkVGhpcy0+bV9pY2VHYXRoZXJpbmdTdGF0ZSA9PSBuZXdTdGF0ZSkKQEAgLTUwMSwzMSAr
NTA5LDkgQEAgdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6dXBkYXRlSWNlR2F0aGVyaQogICAgIH0p
OwogfQogCi0jaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi1zdGF0aWMgaW5saW5lIGNvbnN0IGNo
YXIqIHJ0Y0ljZUNvbm5lY3Rpb25TdGF0ZVRvU3RyaW5nKFJUQ0ljZUNvbm5lY3Rpb25TdGF0ZSBu
ZXdTdGF0ZSkKLXsKLSAgICBzd2l0Y2ggKG5ld1N0YXRlKSB7Ci0gICAgY2FzZSBSVENJY2VDb25u
ZWN0aW9uU3RhdGU6Ok5ldzoKLSAgICAgICAgcmV0dXJuICJuZXciOwotICAgIGNhc2UgUlRDSWNl
Q29ubmVjdGlvblN0YXRlOjpDaGVja2luZzoKLSAgICAgICAgcmV0dXJuICJjaGVja2luZyI7Ci0g
ICAgY2FzZSBSVENJY2VDb25uZWN0aW9uU3RhdGU6OkNvbm5lY3RlZDoKLSAgICAgICAgcmV0dXJu
ICJjb25uZWN0ZWQiOwotICAgIGNhc2UgUlRDSWNlQ29ubmVjdGlvblN0YXRlOjpDb21wbGV0ZWQ6
Ci0gICAgICAgIHJldHVybiAiY29tcGxldGVkIjsKLSAgICBjYXNlIFJUQ0ljZUNvbm5lY3Rpb25T
dGF0ZTo6RmFpbGVkOgotICAgICAgICByZXR1cm4gImZhaWxlZCI7Ci0gICAgY2FzZSBSVENJY2VD
b25uZWN0aW9uU3RhdGU6OkRpc2Nvbm5lY3RlZDoKLSAgICAgICAgcmV0dXJuICJkaXNjb25uZWN0
ZWQiOwotICAgIGNhc2UgUlRDSWNlQ29ubmVjdGlvblN0YXRlOjpDbG9zZWQ6Ci0gICAgICAgIHJl
dHVybiAiY2xvc2VkIjsKLSAgICB9Ci19Ci0jZW5kaWYKLQogdm9pZCBSVENQZWVyQ29ubmVjdGlv
bjo6dXBkYXRlSWNlQ29ubmVjdGlvblN0YXRlKFJUQ0ljZUNvbm5lY3Rpb25TdGF0ZSBuZXdTdGF0
ZSkKIHsKLSAgICBSRUxFQVNFX0xPRyhXZWJSVEMsICJOZXcgSUNFIGNvbm5lY3Rpb24gc3RhdGU6
ICV7cHVibGljfXNcbiIsIHJ0Y0ljZUNvbm5lY3Rpb25TdGF0ZVRvU3RyaW5nKG5ld1N0YXRlKSk7
CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBuZXdTdGF0ZSk7CiAKICAgICBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNrKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIG5ld1N0YXRlXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewogICAgICAgICBpZiAocHJv
dGVjdGVkVGhpcy0+aXNDbG9zZWQoKSB8fCBwcm90ZWN0ZWRUaGlzLT5tX2ljZUNvbm5lY3Rpb25T
dGF0ZSA9PSBuZXdTdGF0ZSkKQEAgLTU2MCw2ICs1NDYsOCBAQCB2b2lkIFJUQ1BlZXJDb25uZWN0
aW9uOjp1cGRhdGVDb25uZWN0aW9uCiAgICAgaWYgKHN0YXRlID09IG1fY29ubmVjdGlvblN0YXRl
KQogICAgICAgICByZXR1cm47CiAKKyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAic3RhdGUg
Y2hhbmdlZCBmcm9tOiAiICwgbV9jb25uZWN0aW9uU3RhdGUsICIgdG8gIiwgc3RhdGUpOworCiAg
ICAgbV9jb25uZWN0aW9uU3RhdGUgPSBzdGF0ZTsKICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLmNvbm5lY3Rpb25zdGF0ZWNoYW5nZUV2ZW50LCBmYWxzZSwgZmFs
c2UpKTsKIH0KQEAgLTU5NCw2ICs1ODIsOCBAQCB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjplbnF1
ZXVlUmVwbGFjZVRyCiAKIHZvaWQgUlRDUGVlckNvbm5lY3Rpb246OnJlcGxhY2VUcmFjayhSVENS
dHBTZW5kZXImIHNlbmRlciwgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+JiYgd2l0aFRyYWNrLCBE
T01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQogeworICAgIElORk9fTE9HKExPR0lE
RU5USUZJRVIpOworCiAgICAgaWYgKCF3aXRoVHJhY2spIHsKICAgICAgICAgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLT5wb3N0VGFzayhbcHJvdGVjdGVkU2VuZGVyID0gbWFrZVJlZihzZW5kZXIp
LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG11
dGFibGUgewogICAgICAgICAgICAgcHJvdGVjdGVkU2VuZGVyLT5zZXRUcmFja1RvTnVsbCgpOwpA
QCAtNjE1LDYgKzYwNSwxOSBAQCBSVENSdHBQYXJhbWV0ZXJzIFJUQ1BlZXJDb25uZWN0aW9uOjpn
ZXRQCiAgICAgcmV0dXJuIG1fYmFja2VuZC0+Z2V0UGFyYW1ldGVycyhzZW5kZXIpOwogfQogCiti
b29sIFJUQ1BlZXJDb25uZWN0aW9uOjpkaXNwYXRjaEV2ZW50KEV2ZW50JiBldmVudCkKK3sKKyAg
ICBERUJVR19MT0coTE9HSURFTlRJRklFUiwgImRpc3BhdGNoaW5nICciLCBldmVudC50eXBlKCks
ICInIik7CisgICAgcmV0dXJuIEV2ZW50VGFyZ2V0OjpkaXNwYXRjaEV2ZW50KGV2ZW50KTsKK30K
KworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorV1RGTG9nQ2hhbm5lbCYgUlRDUGVlckNvbm5l
Y3Rpb246OmxvZ0NoYW5uZWwoKSBjb25zdAoreworICAgIHJldHVybiBMb2dXZWJSVEM7Cit9Cisj
ZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9S
VEMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25u
ZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENQZWVyQ29ubmVjdGlvbi5oCShyZXZpc2lvbiAyMjIwOTEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJSVENQZWVyQ29ubmVjdGlvblN0YXRlLmgiCiAj
aW5jbHVkZSAiUlRDUnRwVHJhbnNjZWl2ZXIuaCIKICNpbmNsdWRlICJSVENTaWduYWxpbmdTdGF0
ZS5oIgorI2luY2x1ZGUgPHBhbC9Mb2dnZXJIZWxwZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC02Myw3ICs2NCwxNSBAQCBzdHJ1Y3QgUlRDUnRwVHJhbnNjZWl2ZXJJbml0IHsKICAg
ICBSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbiBkaXJlY3Rpb247CiB9OwogCi1jbGFzcyBSVENQ
ZWVyQ29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFJUQ1BlZXJDb25uZWN0aW9u
PiwgcHVibGljIFJUQ1J0cFNlbmRlcjo6QmFja2VuZCwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElu
bGluZURhdGEsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgeworY2xhc3MgUlRDUGVlckNvbm5lY3Rp
b24gZmluYWwKKyAgICA6IHB1YmxpYyBSZWZDb3VudGVkPFJUQ1BlZXJDb25uZWN0aW9uPgorICAg
ICwgcHVibGljIFJUQ1J0cFNlbmRlcjo6QmFja2VuZAorICAgICwgcHVibGljIEV2ZW50VGFyZ2V0
V2l0aElubGluZURhdGEKKyAgICAsIHB1YmxpYyBBY3RpdmVET01PYmplY3QKKyNpZiAhUkVMRUFT
RV9MT0dfRElTQUJMRUQKKyAgICAsIHB1YmxpYyBQQUw6OkxvZ2dlckhlbHBlcgorI2VuZGlmCit7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSVENQZWVyQ29ubmVjdGlvbj4gY3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmKTsKICAgICB2aXJ0dWFsIH5SVENQZWVyQ29ubmVjdGlvbigpOwpA
QCAtMTUwLDYgKzE1OSwxMyBAQCBwdWJsaWM6CiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0LgogICAg
IGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7CiAKKyNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKKyAgICBjb25zdCBQQUw6OkxvZ2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9sb2dnZXIuZ2V0KCk7IH0KKyAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVy
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dJZGVudGlmaWVyOyB9CisgICAgY29uc3QgY2hh
ciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlJUQ1BlZXJDb25uZWN0aW9u
IjsgfQorICAgIFdURkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwoKSBjb25zdCBmaW5hbDsKKyNlbmRp
ZgorCiBwcml2YXRlOgogICAgIFJUQ1BlZXJDb25uZWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmKTsKIApAQCAtMTY1LDYgKzE4MSw3IEBAIHByaXZhdGU6CiAgICAgLy8gRXZlbnRUYXJnZXQg
aW1wbGVtZW50YXRpb24uCiAgICAgdm9pZCByZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgcmVmKCk7
IH0KICAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IGRlcmVmKCk7IH0KKyAgICBi
b29sIGRpc3BhdGNoRXZlbnQoRXZlbnQmKSBmaW5hbDsKIAogICAgIC8vIEFjdGl2ZURPTU9iamVj
dAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcCgpIGZpbmFsOwpAQCAtMTg2LDYgKzIwMywx
MSBAQCBwcml2YXRlOgogICAgIFJUQ0ljZUNvbm5lY3Rpb25TdGF0ZSBtX2ljZUNvbm5lY3Rpb25T
dGF0ZSB7IFJUQ0ljZUNvbm5lY3Rpb25TdGF0ZTo6TmV3IH07CiAgICAgUlRDUGVlckNvbm5lY3Rp
b25TdGF0ZSBtX2Nvbm5lY3Rpb25TdGF0ZSB7IFJUQ1BlZXJDb25uZWN0aW9uU3RhdGU6Ok5ldyB9
OwogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgUmVmPGNvbnN0IFBBTDo6TG9nZ2Vy
PiBtX2xvZ2dlcjsKKyAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7CisjZW5kaWYKKwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxSdHBUcmFuc2NlaXZlclNldD4gbV90cmFuc2NlaXZlclNldCB7
IHN0ZDo6dW5pcXVlX3B0cjxSdHBUcmFuc2NlaXZlclNldD4obmV3IFJ0cFRyYW5zY2VpdmVyU2V0
KCkpIH07CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGVlckNvbm5lY3Rpb25CYWNrZW5kPiBtX2Jh
Y2tlbmQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNw
cAkocmV2aXNpb24gMjIyMDkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTYzLDYgKzYzLDEwIEBAIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OkxpYldlYlJUQ01lZGlhRW4K
ICAgICAsIG1fc2V0TG9jYWxTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlcigqdGhpcykKICAgICAs
IG1fc2V0UmVtb3RlU2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIoKnRoaXMpCiAgICAgLCBtX3N0
YXRzTG9nVGltZXIoKnRoaXMsICZMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpnYXRoZXJTdGF0c0Zv
ckxvZ2dpbmcpCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgLCBtX2xvZ2dlcihwZWVy
Q29ubmVjdGlvbi5sb2dnZXIoKSkKKyAgICAsIG1fbG9nSWRlbnRpZmllcihwZWVyQ29ubmVjdGlv
bi5sb2dJZGVudGlmaWVyKCkpCisjZW5kaWYKIHsKICAgICBBU1NFUlQoY2xpZW50LmZhY3Rvcnko
KSk7CiB9CkBAIC0xMDY1LDIwICsxMDY5LDIzIEBAIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2lu
dDo6Z2F0aGVyU3RhdHMKIAogdm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpPblN0YXRzRGVs
aXZlcmVkKGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxjb25zdCB3ZWJydGM6OlJUQ1N0YXRzUmVw
b3J0PiYgcmVwb3J0KQogewotICAgIGlmICghbV9zdGF0c1RpbWVzdGFtcCkKLSAgICAgICAgbV9z
dGF0c1RpbWVzdGFtcCA9IHJlcG9ydC0+dGltZXN0YW1wX3VzKCk7Ci0gICAgZWxzZSBpZiAobV9z
dGF0c0xvZ1RpbWVyLnJlcGVhdEludGVydmFsKCkgPT0gMl9zICYmIChyZXBvcnQtPnRpbWVzdGFt
cF91cygpIC0gbV9zdGF0c1RpbWVzdGFtcCkgPiAxNTAwMDAwMCkgewotICAgICAgICBjYWxsT25N
YWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKLSAgICAgICAgICAg
IHByb3RlY3RlZFRoaXMtPm1fc3RhdHNMb2dUaW1lci5hdWdtZW50UmVwZWF0SW50ZXJ2YWwoOV9z
KTsKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBpbnQ2NF90IHRpbWVzdGFtcCA9IHJl
cG9ydC0+dGltZXN0YW1wX3VzKCk7CisgICAgaWYgKCFtX3N0YXRzRmlyc3REZWxpdmVyZWRUaW1l
c3RhbXApCisgICAgICAgIG1fc3RhdHNGaXJzdERlbGl2ZXJlZFRpbWVzdGFtcCA9IHRpbWVzdGFt
cDsKKworICAgIGlmIChtX3N0YXRzTG9nVGltZXIucmVwZWF0SW50ZXJ2YWwoKSAhPSBzdGF0c0xv
Z0ludGVydmFsKHRpbWVzdGFtcCkpIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0aGlzLCB0aW1lc3RhbXBdIHsKKyAgICAgICAgICAg
IG1fc3RhdHNMb2dUaW1lci5zdG9wKCk7CisgICAgICAgICAgICBtX3N0YXRzTG9nVGltZXIuc3Rh
cnRSZXBlYXRpbmcoc3RhdHNMb2dJbnRlcnZhbCh0aW1lc3RhbXApKTsKICAgICAgICAgfSk7CiAg
ICAgfQogCi0jaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgLy8gTG9nIHN0YXRzIG9uY2Ug
ZXZlcnkgc2Vjb25kIGZvciB0aGUgMzAgc2Vjb25kcywgdGhlbiBkcm9wIHRvIG9uY2UgZXZlcnkg
NSBzZWNvbmRzLgogICAgIGZvciAoYXV0byBpdGVyYXRvciA9IHJlcG9ydC0+YmVnaW4oKTsgaXRl
cmF0b3IgIT0gcmVwb3J0LT5lbmQoKTsgKytpdGVyYXRvcikgewogICAgICAgICBpZiAoaXRlcmF0
b3ItPnR5cGUoKSA9PSB3ZWJydGM6OlJUQ0NvZGVjU3RhdHM6OmtUeXBlKQogICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgIFJFTEVBU0VfTE9HKFdlYlJUQywgIldlYlJUQyBzdGF0cyBmb3Ig
JXA6ICV7cHVibGljfXMiLCB0aGlzLCBpdGVyYXRvci0+VG9TdHJpbmcoKS5jX3N0cigpKTsKKwor
ICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJXZWJSVEMgc3RhdHMgZm9yIDoiLCAq
aXRlcmF0b3IpOwogICAgIH0KICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHJlcG9ydCk7CkBAIC0x
MDkwLDcgKzEwOTcsNyBAQCB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OnN0YXJ0TG9nZ2lu
CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgaWYgKG1fc3RhdHNMb2dUaW1lci5pc0Fj
dGl2ZSgpKQogICAgICAgICBtX3N0YXRzTG9nVGltZXIuc3RvcCgpOwotICAgIG1fc3RhdHNMb2dU
aW1lci5zdGFydFJlcGVhdGluZygyX3MpOworICAgIG1fc3RhdHNMb2dUaW1lci5zdGFydFJlcGVh
dGluZyhzdGF0c0xvZ0ludGVydmFsKDApKTsKICNlbmRpZgogfQogCkBAIC0xMDk5LDYgKzExMDYs
MjQgQEAgdm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpzdG9wTG9nZ2luZwogICAgIG1fc3Rh
dHNMb2dUaW1lci5zdG9wKCk7CiB9CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKK1dURkxv
Z0NoYW5uZWwmIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmxvZ0NoYW5uZWwoKSBjb25zdAorewor
ICAgIHJldHVybiBMb2dXZWJSVEM7Cit9CisKK1NlY29uZHMgTGliV2ViUlRDTWVkaWFFbmRwb2lu
dDo6c3RhdHNMb2dJbnRlcnZhbChpbnQ2NF90IHJlcG9ydFRpbWVzdGFtcCkgY29uc3QKK3sKKyAg
ICBpZiAobG9nZ2VyKCkud2lsbExvZyhsb2dDaGFubmVsKCksIFdURkxvZ0xldmVsSW5mbykpCisg
ICAgICAgIHJldHVybiAyX3M7CisKKyAgICBpZiAocmVwb3J0VGltZXN0YW1wIC0gbV9zdGF0c0Zp
cnN0RGVsaXZlcmVkVGltZXN0YW1wID4gMTUwMDAwMDApCisgICAgICAgIHJldHVybiAxMF9zOwor
CisgICAgcmV0dXJuIDRfczsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q01lZGlhRW5kcG9pbnQuaAkocmV2aXNpb24gMjIyMDkxKQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiwxMiArMzIsMTIgQEAKICNpbmNsdWRlICJSZWFsdGltZU91dGdvaW5n
QXVkaW9Tb3VyY2UuaCIKICNpbmNsdWRlICJSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuaCIK
ICNpbmNsdWRlIDxUaW1lci5oPgotCisjaW5jbHVkZSA8cGFsL0xvZ2dlci5oPgorI2luY2x1ZGUg
PHBhbC9Mb2dnZXJIZWxwZXIuaD4KICNpbmNsdWRlIDx3ZWJydGMvYXBpL2pzZXAuaD4KICNpbmNs
dWRlIDx3ZWJydGMvYXBpL3BlZXJjb25uZWN0aW9uaW50ZXJmYWNlLmg+CiAjaW5jbHVkZSA8d2Vi
cnRjL3BjL3BlZXJjb25uZWN0aW9uZmFjdG9yeS5oPgogI2luY2x1ZGUgPHdlYnJ0Yy9wYy9ydGNz
dGF0c2NvbGxlY3Rvci5oPgotCiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+
CiAKIG5hbWVzcGFjZSB3ZWJydGMgewpAQCAtNTcsNyArNTcsMTQgQEAgY2xhc3MgTGliV2ViUlRD
UGVlckNvbm5lY3Rpb25CYWNrZW5kOwogY2xhc3MgTWVkaWFTdHJlYW1UcmFjazsKIGNsYXNzIFJU
Q1Nlc3Npb25EZXNjcmlwdGlvbjsKIAotY2xhc3MgTGliV2ViUlRDTWVkaWFFbmRwb2ludCA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxMaWJXZWJSVENNZWRpYUVuZHBvaW50PiwgcHJpdmF0
ZSB3ZWJydGM6OlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXIsIHByaXZhdGUgd2VicnRjOjpSVENTdGF0
c0NvbGxlY3RvckNhbGxiYWNrIHsKK2NsYXNzIExpYldlYlJUQ01lZGlhRW5kcG9pbnQKKyAgICA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxMaWJXZWJSVENNZWRpYUVuZHBvaW50PgorICAg
ICwgcHJpdmF0ZSB3ZWJydGM6OlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXIKKyAgICAsIHByaXZhdGUg
d2VicnRjOjpSVENTdGF0c0NvbGxlY3RvckNhbGxiYWNrCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECisgICAgLCBwdWJsaWMgUEFMOjpMb2dnZXJIZWxwZXIKKyNlbmRpZgorewogcHVibGljOgog
ICAgIHN0YXRpYyBSZWY8TGliV2ViUlRDTWVkaWFFbmRwb2ludD4gY3JlYXRlKExpYldlYlJUQ1Bl
ZXJDb25uZWN0aW9uQmFja2VuZCYgcGVlckNvbm5lY3Rpb24sIExpYldlYlJUQ1Byb3ZpZGVyJiBj
bGllbnQpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTGliV2ViUlRDTWVkaWFFbmRwb2ludChwZWVy
Q29ubmVjdGlvbiwgY2xpZW50KSk7IH0KICAgICB2aXJ0dWFsIH5MaWJXZWJSVENNZWRpYUVuZHBv
aW50KCkgeyB9CkBAIC0xMjYsNiArMTMzLDE1IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzaG91bGRP
ZmZlckFsbG93VG9SZWNlaXZlQXVkaW8oKSBjb25zdDsKICAgICBib29sIHNob3VsZE9mZmVyQWxs
b3dUb1JlY2VpdmVWaWRlbygpIGNvbnN0OwogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisg
ICAgY29uc3QgUEFMOjpMb2dnZXImIGxvZ2dlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9n
Z2VyLmdldCgpOyB9CisgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fbG9nSWRlbnRpZmllcjsgfQorICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFt
ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJMaWJXZWJSVENNZWRpYUVuZHBvaW50IjsgfQorICAg
IFdURkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwoKSBjb25zdCBmaW5hbDsKKworICAgIFNlY29uZHMg
c3RhdHNMb2dJbnRlcnZhbChpbnQ2NF90KSBjb25zdDsKKyNlbmRpZgorCiAgICAgY2xhc3MgQ3Jl
YXRlU2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIgZmluYWwgOiBwdWJsaWMgd2VicnRjOjpDcmVh
dGVTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlciB7CiAgICAgcHVibGljOgogICAgICAgICBleHBs
aWNpdCBDcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlcihMaWJXZWJSVENNZWRpYUVuZHBv
aW50ICZlbmRwb2ludCkgOiBtX2VuZHBvaW50KGVuZHBvaW50KSB7IH0KQEAgLTE5NCw5ICsyMTAs
MjkgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9pc0luaXRpYXRvciB7IGZhbHNlIH07CiAgICAg
VGltZXIgbV9zdGF0c0xvZ1RpbWVyOwotICAgIGludDY0X3QgbV9zdGF0c1RpbWVzdGFtcCB7IDAg
fTsKKyAgICBpbnQ2NF90IG1fc3RhdHNGaXJzdERlbGl2ZXJlZFRpbWVzdGFtcCB7IDAgfTsKKwor
I2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIFJlZjxjb25zdCBQQUw6OkxvZ2dlcj4gbV9s
b2dnZXI7CisgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOworI2VuZGlmCiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK25hbWVzcGFjZSBQQUwgeworCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUeXBlPgorc3RydWN0IExvZ0FyZ3VtZW50OworCit0ZW1wbGF0ZSA8Pgorc3RydWN0IExv
Z0FyZ3VtZW50PHdlYnJ0Yzo6UlRDU3RhdHM+IHsKKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5n
KGNvbnN0IHdlYnJ0Yzo6UlRDU3RhdHMmIGl0ZXJhdG9yKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IFdURjo6U3RyaW5nKGl0ZXJhdG9yLlRvU3RyaW5nKCkuY19zdHIoKSk7CisgICAgfQorfTsKKwor
fTsgLy8gbmFtZXNwYWNlIFBBTAorCiAjZW5kaWYgLy8gVVNFKExJQldFQlJUQykKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0ljZUNvbm5lY3Rpb25TdGF0ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0lj
ZUNvbm5lY3Rpb25TdGF0ZS5oCShyZXZpc2lvbiAyMjIwOTEpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENJY2VDb25uZWN0aW9uU3RhdGUuaAkod29ya2luZyBjb3B5
KQpAQCAtNDAsNCArNDAsMzYgQEAgZW51bSBjbGFzcyBSVENJY2VDb25uZWN0aW9uU3RhdGUgewog
CiB9OyAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCituYW1lc3BhY2UgUEFMIHsKKwordGVtcGxhdGU8
dHlwZW5hbWUgVHlwZT4KK3N0cnVjdCBMb2dBcmd1bWVudDsKKwordGVtcGxhdGUgPD4KK3N0cnVj
dCBMb2dBcmd1bWVudDxXZWJDb3JlOjpSVENJY2VDb25uZWN0aW9uU3RhdGU+IHsKKyAgICBzdGF0
aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6OlJUQ0ljZUNvbm5lY3Rpb25TdGF0ZSBz
dGF0ZSkKKyAgICB7CisgICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICAgICAgY2FzZSBXZWJD
b3JlOjpSVENJY2VDb25uZWN0aW9uU3RhdGU6Ok5ldzoKKyAgICAgICAgICAgIHJldHVybiAibmV3
IjsKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpSVENJY2VDb25uZWN0aW9uU3RhdGU6OkNoZWNraW5n
OgorICAgICAgICAgICAgcmV0dXJuICJjaGVja2luZyI7CisgICAgICAgIGNhc2UgV2ViQ29yZTo6
UlRDSWNlQ29ubmVjdGlvblN0YXRlOjpDb25uZWN0ZWQ6CisgICAgICAgICAgICByZXR1cm4gImNv
bm5lY3RlZCI7CisgICAgICAgIGNhc2UgV2ViQ29yZTo6UlRDSWNlQ29ubmVjdGlvblN0YXRlOjpD
b21wbGV0ZWQ6CisgICAgICAgICAgICByZXR1cm4gImNvbXBsZXRlZCI7CisgICAgICAgIGNhc2Ug
V2ViQ29yZTo6UlRDSWNlQ29ubmVjdGlvblN0YXRlOjpGYWlsZWQ6CisgICAgICAgICAgICByZXR1
cm4gImZhaWxlZCI7CisgICAgICAgIGNhc2UgV2ViQ29yZTo6UlRDSWNlQ29ubmVjdGlvblN0YXRl
OjpEaXNjb25uZWN0ZWQ6CisgICAgICAgICAgICByZXR1cm4gImRpc2Nvbm5lY3RlZCI7CisgICAg
ICAgIGNhc2UgV2ViQ29yZTo6UlRDSWNlQ29ubmVjdGlvblN0YXRlOjpDbG9zZWQ6CisgICAgICAg
ICAgICByZXR1cm4gImNsb3NlZCI7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIHJldHVybiAiIjsKKyAgICB9Cit9OworCit9OyAvLyBuYW1lc3BhY2Ug
UEFMCisKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UlRDSWNlR2F0aGVyaW5nU3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9SVENJY2VHYXRoZXJpbmdTdGF0ZS5oCShyZXZpc2lvbiAyMjIwOTEp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENJY2VHYXRoZXJpbmdT
dGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBACiAKICNpZiBFTkFCTEUoV0VC
X1JUQykKIAorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGVudW0gY2xhc3MgUlRDSWNlR2F0aGVyaW5nU3RhdGUgewpAQCAtMzYsNCArMzgs
MjggQEAgZW51bSBjbGFzcyBSVENJY2VHYXRoZXJpbmdTdGF0ZSB7CiAKIH07IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKK25hbWVzcGFjZSBQQUwgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgor
c3RydWN0IExvZ0FyZ3VtZW50OworCit0ZW1wbGF0ZSA8Pgorc3RydWN0IExvZ0FyZ3VtZW50PFdl
YkNvcmU6OlJUQ0ljZUdhdGhlcmluZ1N0YXRlPiB7CisgICAgc3RhdGljIFN0cmluZyB0b1N0cmlu
Zyhjb25zdCBXZWJDb3JlOjpSVENJY2VHYXRoZXJpbmdTdGF0ZSBzdGF0ZSkKKyAgICB7CisgICAg
ICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpSVENJY2VHYXRoZXJp
bmdTdGF0ZTo6TmV3OgorICAgICAgICAgICAgcmV0dXJuICJuZXciOworICAgICAgICBjYXNlIFdl
YkNvcmU6OlJUQ0ljZUdhdGhlcmluZ1N0YXRlOjpHYXRoZXJpbmc6CisgICAgICAgICAgICByZXR1
cm4gImdhdGhlcmluZyI7CisgICAgICAgIGNhc2UgV2ViQ29yZTo6UlRDSWNlR2F0aGVyaW5nU3Rh
dGU6OkNvbXBsZXRlOgorICAgICAgICAgICAgcmV0dXJuICJjb21wbGV0ZSI7CisgICAgICAgIH0K
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAiIjsKKyAgICB9
Cit9OworCit9OyAvLyBuYW1lc3BhY2UgUEFMCisKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25TdGF0ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0
aW9uU3RhdGUuaAkocmV2aXNpb24gMjIyMDkxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25TdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
OSw0ICszOSwzNCBAQCBlbnVtIGNsYXNzIFJUQ1BlZXJDb25uZWN0aW9uU3RhdGUgewogCiB9OyAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCituYW1lc3BhY2UgUEFMIHsKKwordGVtcGxhdGU8dHlwZW5h
bWUgVHlwZT4KK3N0cnVjdCBMb2dBcmd1bWVudDsKKwordGVtcGxhdGUgPD4KK3N0cnVjdCBMb2dB
cmd1bWVudDxXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvblN0YXRlPiB7CisgICAgc3RhdGljIFN0
cmluZyB0b1N0cmluZyhjb25zdCBXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvblN0YXRlIHN0YXRl
KQorICAgIHsKKyAgICAgICAgc3dpdGNoIChzdGF0ZSkgeworICAgICAgICBjYXNlIFdlYkNvcmU6
OlJUQ1BlZXJDb25uZWN0aW9uU3RhdGU6Ok5ldzoKKyAgICAgICAgICAgIHJldHVybiAibmV3IjsK
KyAgICAgICAgY2FzZSBXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvblN0YXRlOjpDb25uZWN0aW5n
OgorICAgICAgICAgICAgcmV0dXJuICJjb25uZWN0aW5nIjsKKyAgICAgICAgY2FzZSBXZWJDb3Jl
OjpSVENQZWVyQ29ubmVjdGlvblN0YXRlOjpDb25uZWN0ZWQ6CisgICAgICAgICAgICByZXR1cm4g
ImNvbm5lY3RlZCI7CisgICAgICAgIGNhc2UgV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb25TdGF0
ZTo6RGlzY29ubmVjdGVkOgorICAgICAgICAgICAgcmV0dXJuICJkaXNjb25uZWN0ZWQiOworICAg
ICAgICBjYXNlIFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uU3RhdGU6OkZhaWxlZDoKKyAgICAg
ICAgICAgIHJldHVybiAiZmFpbGVkIjsKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpSVENQZWVyQ29u
bmVjdGlvblN0YXRlOjpDbG9zZWQ6CisgICAgICAgICAgICByZXR1cm4gImNsb3NlZCI7CisgICAg
ICAgIH0KKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAiIjsK
KyAgICB9Cit9OworCit9OyAvLyBuYW1lc3BhY2UgUEFMCisKICNlbmRpZgpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDU2lnbmFsaW5nU3RhdGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENTaWduYWxpbmdT
dGF0ZS5oCShyZXZpc2lvbiAyMjIwOTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SVENTaWduYWxpbmdTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw0ICszOCwz
MiBAQCBlbnVtIGNsYXNzIFJUQ1NpZ25hbGluZ1N0YXRlIHsKIAogfTsgLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAorbmFtZXNwYWNlIFBBTCB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFR5cGU+CitzdHJ1
Y3QgTG9nQXJndW1lbnQ7CisKK3RlbXBsYXRlIDw+CitzdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29y
ZTo6UlRDU2lnbmFsaW5nU3RhdGU+IHsKKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0
IFdlYkNvcmU6OlJUQ1NpZ25hbGluZ1N0YXRlIHN0YXRlKQorICAgIHsKKyAgICAgICAgc3dpdGNo
IChzdGF0ZSkgeworICAgICAgICBjYXNlIFdlYkNvcmU6OlJUQ1NpZ25hbGluZ1N0YXRlOjpTdGFi
bGU6CisgICAgICAgICAgICByZXR1cm4gInN0YWJsZSI7CisgICAgICAgIGNhc2UgV2ViQ29yZTo6
UlRDU2lnbmFsaW5nU3RhdGU6OkhhdmVMb2NhbE9mZmVyOgorICAgICAgICAgICAgcmV0dXJuICJo
YXZlbG9jYWxvZmZlciI7CisgICAgICAgIGNhc2UgV2ViQ29yZTo6UlRDU2lnbmFsaW5nU3RhdGU6
OkhhdmVSZW1vdGVPZmZlcjoKKyAgICAgICAgICAgIHJldHVybiAiaGF2ZXJlbW90ZW9mZmVyIjsK
KyAgICAgICAgY2FzZSBXZWJDb3JlOjpSVENTaWduYWxpbmdTdGF0ZTo6SGF2ZUxvY2FsUHJhbnN3
ZXI6CisgICAgICAgICAgICByZXR1cm4gImhhdmVsb2NhbHByYW5zd2VyIjsKKyAgICAgICAgY2Fz
ZSBXZWJDb3JlOjpSVENTaWduYWxpbmdTdGF0ZTo6SGF2ZVJlbW90ZVByYW5zd2VyOgorICAgICAg
ICAgICAgcmV0dXJuICJoYXZlcmVtb3RlcHJhbnN3ZXIiOworICAgICAgICB9CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gIiI7CisgICAgfQorfTsKKworfTsg
Ly8gbmFtZXNwYWNlIFBBTAorCiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321288</attachid>
            <date>2017-09-19 21:49:46 -0700</date>
            <delta_ts>2017-11-14 07:02:31 -0800</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>web_rtc_logging_patch_3.txt</filename>
            <type>text/plain</type>
            <size>32678</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMjA5MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc1IEBACisyMDE3LTA5LTE5ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFN3aXRjaCBQZWVyQ29u
bmVjdGlvbiB0byByZWxlYXNlIGxvZ2dpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3NzE5MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzQ1Mjkw
MTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OlBlZXJDb25uZWN0aW9uQmFja2VuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZU9mZmVyU3VjY2Vl
ZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlT2Zm
ZXJGYWlsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjcmVh
dGVBbnN3ZXJTdWNjZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb25CYWNr
ZW5kOjpjcmVhdGVBbnN3ZXJGYWlsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rp
b25CYWNrZW5kOjpzZXRMb2NhbERlc2NyaXB0aW9uU3VjY2VlZGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6c2V0TG9jYWxEZXNjcmlwdGlvbkZhaWxlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnNldFJlbW90ZURlc2NyaXB0
aW9uU3VjY2VlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6
c2V0UmVtb3RlRGVzY3JpcHRpb25GYWlsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5l
Y3Rpb25CYWNrZW5kOjphZGRJY2VDYW5kaWRhdGVTdWNjZWVkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRJY2VDYW5kaWRhdGVGYWlsZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpuZXdJQ0VDYW5kaWRhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpkb25lR2F0aGVyaW5nQ2FuZGlk
YXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmxvZ0NoYW5u
ZWwgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25C
YWNrZW5kLmg6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OlBlZXJD
b25uZWN0aW9uQmFja2VuZCk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25u
ZWN0aW9uOjpSVENQZWVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29u
bmVjdGlvbjo6flJUQ1BlZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJD
b25uZWN0aW9uOjphZGRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlv
bjo6cmVtb3ZlVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246OmFk
ZFRyYW5zY2VpdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpxdWV1
ZWRDcmVhdGVPZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6cXVl
dWVkQ3JlYXRlQW5zd2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpx
dWV1ZWRTZXRMb2NhbERlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25u
ZWN0aW9uOjpxdWV1ZWRTZXRSZW1vdGVEZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpS
VENQZWVyQ29ubmVjdGlvbjo6cXVldWVkQWRkSWNlQ2FuZGlkYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJUQ1BlZXJDb25uZWN0aW9uOjppbml0aWFsaXplQ29uZmlndXJhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6c2V0Q29uZmlndXJhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6Y3JlYXRlRGF0YUNoYW5uZWwpOgorICAgICAg
ICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246OnNldFNpZ25hbGluZ1N0YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjp1cGRhdGVJY2VHYXRoZXJpbmdTdGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6dXBkYXRlSWNlQ29ubmVjdGlv
blN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjp1cGRhdGVDb25u
ZWN0aW9uU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246OnJlcGxh
Y2VUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6ZGlzcGF0Y2hF
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6bG9nQ2hhbm5lbCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpydGNJY2VHYXRoZXJpbmdTdGF0ZVRvU3RyaW5nKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnJ0Y0ljZUNvbm5lY3Rpb25TdGF0ZVRvU3RyaW5n
KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0
aW9uLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENNZWRpYUVuZHBvaW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5k
cG9pbnQ6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2Vi
UlRDTWVkaWFFbmRwb2ludDo6T25TdGF0c0RlbGl2ZXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpM
aWJXZWJSVENNZWRpYUVuZHBvaW50OjpzdGFydExvZ2dpbmdTdGF0cyk6CisgICAgICAgIChXZWJD
b3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojpsb2dDaGFubmVsIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OnN0YXRzTG9nSW50ZXJ2YWwgY29uc3Qp
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlh
RW5kcG9pbnQuaDoKKyAgICAgICAgKFBBTDo6TG9nQXJndW1lbnQ8d2VicnRjOjpSVENTdGF0cz46
OnRvU3RyaW5nKToKKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0ljZUNvbm5l
Y3Rpb25TdGF0ZS5oOgorICAgICAgICAoUEFMOjpMb2dBcmd1bWVudDxXZWJDb3JlOjpSVENJY2VD
b25uZWN0aW9uU3RhdGU+Ojp0b1N0cmluZyk6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SVENJY2VHYXRoZXJpbmdTdGF0ZS5oOgorICAgICAgICAoUEFMOjpMb2dBcmd1bWVudDxX
ZWJDb3JlOjpSVENJY2VHYXRoZXJpbmdTdGF0ZT46OnRvU3RyaW5nKToKKworICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uU3RhdGUuaDoKKyAgICAgICAgKFBB
TDo6TG9nQXJndW1lbnQ8V2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb25TdGF0ZT46OnRvU3RyaW5n
KToKKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1NpZ25hbGluZ1N0YXRlLmg6
CisgICAgICAgIChQQUw6OkxvZ0FyZ3VtZW50PFdlYkNvcmU6OlJUQ1NpZ25hbGluZ1N0YXRlPjo6
dG9TdHJpbmcpOgorCiAyMDE3LTA5LTE1ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBw
bGUuY29tPgogCiAgICAgICAgIFN3aXRjaCB0ZXh0IHRyYWNrcyB0byByZWxlYXNlIGxvZ2dpbmcK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25C
YWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAJKHJldmlzaW9uIDIyMjA5MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsMTcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Cit1c2luZyBuYW1lc3BhY2UgUEFMOworCitQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OlBlZXJDb25u
ZWN0aW9uQmFja2VuZChSVENQZWVyQ29ubmVjdGlvbiYgcGVlckNvbm5lY3Rpb24pCisgICAgOiBt
X3BlZXJDb25uZWN0aW9uKHBlZXJDb25uZWN0aW9uKQorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxF
RAorICAgICwgbV9sb2dnZXIocGVlckNvbm5lY3Rpb24ubG9nZ2VyKCkpCisgICAgLCBtX2xvZ0lk
ZW50aWZpZXIocGVlckNvbm5lY3Rpb24ubG9nSWRlbnRpZmllcigpKQorI2VuZGlmCit7Cit9CisK
IHZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjcmVhdGVPZmZlcihSVENPZmZlck9wdGlvbnMm
JiBvcHRpb25zLCBQZWVyQ29ubmVjdGlvbjo6U2Vzc2lvbkRlc2NyaXB0aW9uUHJvbWlzZSYmIHBy
b21pc2UpCiB7CiAgICAgQVNTRVJUKCFtX29mZmVyQW5zd2VyUHJvbWlzZSk7CkBAIC01Niw3ICs2
Nyw3IEBAIHZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjcmVhdGVPZmZlcigKIHZvaWQgUGVl
ckNvbm5lY3Rpb25CYWNrZW5kOjpjcmVhdGVPZmZlclN1Y2NlZWRlZChTdHJpbmcmJiBzZHApCiB7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBSRUxFQVNFX0xPRyhXZWJSVEMsICJD
cmVhdGluZyBvZmZlciBzdWNjZWVkZWQ6XG4le3B1YmxpY31zXG4iLCBzZHAudXRmOCgpLmRhdGEo
KSk7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiQ3JlYXRlIG9mZmVyIHN1Y2NlZWRl
ZDpcbiIsIHNkcCk7CiAKICAgICBpZiAobV9wZWVyQ29ubmVjdGlvbi5pc0Nsb3NlZCgpKQogICAg
ICAgICByZXR1cm47CkBAIC02OSw3ICs4MCw3IEBAIHZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5k
OjpjcmVhdGVPZmZlclMKIHZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjcmVhdGVPZmZlckZh
aWxlZChFeGNlcHRpb24mJiBleGNlcHRpb24pCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKLSAgICBSRUxFQVNFX0xPRyhXZWJSVEMsICJDcmVhdGluZyBvZmZlciBmYWlsZWQ6XG4le3B1
YmxpY31zXG4iLCBleGNlcHRpb24ubWVzc2FnZSgpLnV0ZjgoKS5kYXRhKCkpOworICAgIEFMV0FZ
U19MT0coTE9HSURFTlRJRklFUiwgIkNyZWF0ZSBvZmZlciBmYWlsZWQ6IiwgZXhjZXB0aW9uLm1l
c3NhZ2UoKSk7CiAKICAgICBpZiAobV9wZWVyQ29ubmVjdGlvbi5pc0Nsb3NlZCgpKQogICAgICAg
ICByZXR1cm47CkBAIC05MSw3ICsxMDIsNyBAQCB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6
Y3JlYXRlQW5zd2VyCiB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlQW5zd2VyU3Vj
Y2VlZGVkKFN0cmluZyYmIHNkcCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAg
IFJFTEVBU0VfTE9HKFdlYlJUQywgIkNyZWF0aW5nIGFuc3dlciBzdWNjZWVkZWQ6XG4le3B1Ymxp
Y31zXG4iLCBzZHAudXRmOCgpLmRhdGEoKSk7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVS
LCAiQ3JlYXRlIGFuc3dlciBzdWNjZWVkZWQ6XG4iLCBzZHApOwogCiAgICAgaWYgKG1fcGVlckNv
bm5lY3Rpb24uaXNDbG9zZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTA0LDcgKzExNSw3IEBA
IHZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjcmVhdGVBbnN3ZXIKIHZvaWQgUGVlckNvbm5l
Y3Rpb25CYWNrZW5kOjpjcmVhdGVBbnN3ZXJGYWlsZWQoRXhjZXB0aW9uJiYgZXhjZXB0aW9uKQog
ewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgUkVMRUFTRV9MT0coV2ViUlRDLCAi
Q3JlYXRpbmcgYW5zd2VyIGZhaWxlZDpcbiV7cHVibGljfXNcbiIsIGV4Y2VwdGlvbi5tZXNzYWdl
KCkudXRmOCgpLmRhdGEoKSk7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiQ3JlYXRl
IGFuc3dlciBmYWlsZWQ6IiwgZXhjZXB0aW9uLm1lc3NhZ2UoKSk7CiAKICAgICBpZiAobV9wZWVy
Q29ubmVjdGlvbi5pc0Nsb3NlZCgpKQogICAgICAgICByZXR1cm47CkBAIC0xNDksNyArMTYwLDcg
QEAgdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnNldExvY2FsRGVzYwogdm9pZCBQZWVyQ29u
bmVjdGlvbkJhY2tlbmQ6OnNldExvY2FsRGVzY3JpcHRpb25TdWNjZWVkZWQoKQogewogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgUkVMRUFTRV9MT0coV2ViUlRDLCAiU2V0dGluZyBs
b2NhbCBkZXNjcmlwdGlvbiBzdWNjZWVkZWRcbiIpOworICAgIEFMV0FZU19MT0coTE9HSURFTlRJ
RklFUik7CiAKICAgICBpZiAobV9wZWVyQ29ubmVjdGlvbi5pc0Nsb3NlZCgpKQogICAgICAgICBy
ZXR1cm47CkBAIC0xNjMsNyArMTc0LDcgQEAgdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnNl
dExvY2FsRGVzYwogdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnNldExvY2FsRGVzY3JpcHRp
b25GYWlsZWQoRXhjZXB0aW9uJiYgZXhjZXB0aW9uKQogewogICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7Ci0gICAgUkVMRUFTRV9MT0coV2ViUlRDLCAiU2V0dGluZyBsb2NhbCBkZXNjcmlwdGlv
biBmYWlsZWQ6XG4le3B1YmxpY31zXG4iLCBleGNlcHRpb24ubWVzc2FnZSgpLnV0ZjgoKS5kYXRh
KCkpOworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgIlNldCBsb2NhbCBkZXNjcmlwdGlv
biBmYWlsZWQ6IiwgZXhjZXB0aW9uLm1lc3NhZ2UoKSk7CiAKICAgICBpZiAobV9wZWVyQ29ubmVj
dGlvbi5pc0Nsb3NlZCgpKQogICAgICAgICByZXR1cm47CkBAIC0yMDksNyArMjIwLDcgQEAgdm9p
ZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnNldFJlbW90ZURlcwogdm9pZCBQZWVyQ29ubmVjdGlv
bkJhY2tlbmQ6OnNldFJlbW90ZURlc2NyaXB0aW9uU3VjY2VlZGVkKCkKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwotICAgIFJFTEVBU0VfTE9HKFdlYlJUQywgIlNldHRpbmcgcmVtb3Rl
IGRlc2NyaXB0aW9uIHN1Y2NlZWRlZFxuIik7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVS
LCAiU2V0IHJlbW90ZSBkZXNjcmlwdGlvbiBzdWNjZWVkZWQiKTsKIAogICAgIGlmIChtX3BlZXJD
b25uZWN0aW9uLmlzQ2xvc2VkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTIyMyw3ICsyMzQsNyBA
QCB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6c2V0UmVtb3RlRGVzCiB2b2lkIFBlZXJDb25u
ZWN0aW9uQmFja2VuZDo6c2V0UmVtb3RlRGVzY3JpcHRpb25GYWlsZWQoRXhjZXB0aW9uJiYgZXhj
ZXB0aW9uKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgUkVMRUFTRV9MT0co
V2ViUlRDLCAiU2V0dGluZyByZW1vdGUgZGVzY3JpcHRpb24gZmFpbGVkOlxuJXtwdWJsaWN9c1xu
IiwgZXhjZXB0aW9uLm1lc3NhZ2UoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBBTFdBWVNfTE9HKExP
R0lERU5USUZJRVIsICJTZXQgcmVtb3RlIGRlc2NyaXB0aW9uIGZhaWxlZDoiLCBleGNlcHRpb24u
bWVzc2FnZSgpKTsKIAogICAgIGlmIChtX3BlZXJDb25uZWN0aW9uLmlzQ2xvc2VkKCkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTI1NSw3ICsyNjYsNyBAQCB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2Vu
ZDo6YWRkSWNlQ2FuZGlkCiB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkSWNlQ2FuZGlk
YXRlU3VjY2VlZGVkKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIFJFTEVB
U0VfTE9HKFdlYlJUQywgIkFkZGluZyBpY2UgY2FuZGlkYXRlIHN1Y2NlZWRlZFxuIik7CisgICAg
QUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiQWRkaW5nIGljZSBjYW5kaWRhdGUgc3VjY2VlZGVk
Iik7CiAKICAgICBpZiAobV9wZWVyQ29ubmVjdGlvbi5pc0Nsb3NlZCgpKQogICAgICAgICByZXR1
cm47CkBAIC0yNzAsNyArMjgxLDcgQEAgdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZElj
ZUNhbmRpZAogdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZEljZUNhbmRpZGF0ZUZhaWxl
ZChFeGNlcHRpb24mJiBleGNlcHRpb24pCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
LSAgICBSRUxFQVNFX0xPRyhXZWJSVEMsICJBZGRpbmcgaWNlIGNhbmRpZGF0ZSBmYWlsZWQ6XG4l
e3B1YmxpY31zXG4iLCBleGNlcHRpb24ubWVzc2FnZSgpLnV0ZjgoKS5kYXRhKCkpOworICAgIEFM
V0FZU19MT0coTE9HSURFTlRJRklFUiwgIkFkZGluZyBpY2UgY2FuZGlkYXRlIGZhaWxlZDoiLCBl
eGNlcHRpb24ubWVzc2FnZSgpKTsKIAogICAgIGlmIChtX3BlZXJDb25uZWN0aW9uLmlzQ2xvc2Vk
KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTM0OSw3ICszNjAsNyBAQCBTdHJpbmcgUGVlckNvbm5l
Y3Rpb25CYWNrZW5kOjpmaWx0ZXJTRFAoCiAKIHZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpu
ZXdJQ0VDYW5kaWRhdGUoU3RyaW5nJiYgc2RwLCBTdHJpbmcmJiBtaWQsIHVuc2lnbmVkIHNob3J0
IHNkcE1MaW5lSW5kZXgpCiB7Ci0gICAgUkVMRUFTRV9MT0coV2ViUlRDLCAiR2F0aGVyZWQgaWNl
IGNhbmRpZGF0ZTpcbiV7cHVibGljfXNcbiIsIHNkcC51dGY4KCkuZGF0YSgpKTsKKyAgICBBTFdB
WVNfTE9HKExPR0lERU5USUZJRVIsICJHYXRoZXJlZCBpY2UgY2FuZGlkYXRlOiIsIHNkcCk7CiAK
ICAgICBpZiAoIW1fc2hvdWxkRmlsdGVySUNFQ2FuZGlkYXRlcykgewogICAgICAgICBmaXJlSUNF
Q2FuZGlkYXRlRXZlbnQoUlRDSWNlQ2FuZGlkYXRlOjpjcmVhdGUoV1RGTW92ZShzZHApLCBXVEZN
b3ZlKG1pZCksIHNkcE1MaW5lSW5kZXgpKTsKQEAgLTM2NSw3ICszNzYsNyBAQCB2b2lkIFBlZXJD
b25uZWN0aW9uQmFja2VuZDo6bmV3SUNFQ2FuZGlkCiB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2Vu
ZDo6ZG9uZUdhdGhlcmluZ0NhbmRpZGF0ZXMoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7Ci0gICAgUkVMRUFTRV9MT0coV2ViUlRDLCAiRmluaXNoZWQgaWNlIGNhbmRpZGF0ZSBnYXRo
ZXJpbmdcbiIpOworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgIkZpbmlzaGVkIGljZSBj
YW5kaWRhdGUgZ2F0aGVyaW5nIik7CiAKICAgICBtX3BlZXJDb25uZWN0aW9uLmZpcmVFdmVudChS
VENQZWVyQ29ubmVjdGlvbkljZUV2ZW50OjpjcmVhdGUoZmFsc2UsIGZhbHNlLCBudWxscHRyKSk7
CiAgICAgbV9wZWVyQ29ubmVjdGlvbi51cGRhdGVJY2VHYXRoZXJpbmdTdGF0ZShSVENJY2VHYXRo
ZXJpbmdTdGF0ZTo6Q29tcGxldGUpOwpAQCAtNDAxLDYgKzQxMiwxMyBAQCB2b2lkIFBlZXJDb25u
ZWN0aW9uQmFja2VuZDo6bWFya0FzTmVlZGluCiAgICAgICAgIG1fcGVlckNvbm5lY3Rpb24uc2No
ZWR1bGVOZWdvdGlhdGlvbk5lZWRlZEV2ZW50KCk7CiB9CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKK1dURkxvZ0NoYW5uZWwmIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6bG9nQ2hhbm5lbCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIExvZ1dlYlJUQzsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlv
bkJhY2tlbmQuaAkocmV2aXNpb24gMjIyMDkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMzcs
NiArMzcsOCBAQAogI2luY2x1ZGUgIlJUQ1J0cFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJSVENT
ZXNzaW9uRGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJSVENTaWduYWxpbmdTdGF0ZS5oIgorI2lu
Y2x1ZGUgPHBhbC9Mb2dnZXIuaD4KKyNpbmNsdWRlIDxwYWwvTG9nZ2VySGVscGVyLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjMsMTEgKzY1LDE1IEBAIHVzaW5nIFN0YXRzUHJvbWlz
ZSA9IERPTVByb21pc2VEZWZlcnJlZDwKIAogdXNpbmcgQ3JlYXRlUGVlckNvbm5lY3Rpb25CYWNr
ZW5kID0gc3RkOjp1bmlxdWVfcHRyPFBlZXJDb25uZWN0aW9uQmFja2VuZD4gKCopKFJUQ1BlZXJD
b25uZWN0aW9uJik7CiAKLWNsYXNzIFBlZXJDb25uZWN0aW9uQmFja2VuZCB7CitjbGFzcyBQZWVy
Q29ubmVjdGlvbkJhY2tlbmQKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICA6IHB1Ymxp
YyBQQUw6OkxvZ2dlckhlbHBlcgorI2VuZGlmCit7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIENyZWF0ZVBlZXJDb25uZWN0aW9uQmFja2VuZCBjcmVhdGU7CiAKLSAgICBQZWVy
Q29ubmVjdGlvbkJhY2tlbmQoUlRDUGVlckNvbm5lY3Rpb24mIHBlZXJDb25uZWN0aW9uKSA6IG1f
cGVlckNvbm5lY3Rpb24ocGVlckNvbm5lY3Rpb24pIHsgfQorICAgIGV4cGxpY2l0IFBlZXJDb25u
ZWN0aW9uQmFja2VuZChSVENQZWVyQ29ubmVjdGlvbiYpOwogICAgIHZpcnR1YWwgflBlZXJDb25u
ZWN0aW9uQmFja2VuZCgpIHsgfQogCiAgICAgdm9pZCBjcmVhdGVPZmZlcihSVENPZmZlck9wdGlv
bnMmJiwgUGVlckNvbm5lY3Rpb246OlNlc3Npb25EZXNjcmlwdGlvblByb21pc2UmJik7CkBAIC0x
MTMsNiArMTE5LDEzIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBhcHBseVJvdGF0aW9u
Rm9yT3V0Z29pbmdWaWRlb1NvdXJjZXMoKSB7IH0KIAorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxF
RAorICAgIGNvbnN0IFBBTDo6TG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2xvZ2dlci5nZXQoKTsgfQorICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7IH0KKyAgICBjb25zdCBjaGFyKiBsb2dDbGFz
c05hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUGVlckNvbm5lY3Rpb25CYWNrZW5kIjsg
fQorICAgIFdURkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwoKSBjb25zdCBmaW5hbDsKKyNlbmRpZgor
CiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaXJlSUNFQ2FuZGlkYXRlRXZlbnQoUmVmUHRyPFJUQ0lj
ZUNhbmRpZGF0ZT4mJik7CiAgICAgdm9pZCBkb25lR2F0aGVyaW5nQ2FuZGlkYXRlcygpOwpAQCAt
MTYyLDYgKzE3NSwxMCBAQCBwcml2YXRlOgogICAgIH07CiAgICAgVmVjdG9yPFBlbmRpbmdJQ0VD
YW5kaWRhdGU+IG1fcGVuZGluZ0lDRUNhbmRpZGF0ZXM7CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKKyAgICBSZWY8Y29uc3QgUEFMOjpMb2dnZXI+IG1fbG9nZ2VyOworICAgIGNvbnN0IHZv
aWQqIG1fbG9nSWRlbnRpZmllcjsKKyNlbmRpZgogICAgIGJvb2wgbV9uZWdvdGlhdGlvbk5lZWRl
ZCB7IGZhbHNlIH07CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcAkocmV2aXNpb24gMjIyMDkx
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlv
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDcgQEAKICNpbmNsdWRlICJSVENQZWVy
Q29ubmVjdGlvbkljZUV2ZW50LmgiCiAjaW5jbHVkZSAiUlRDU2Vzc2lvbkRlc2NyaXB0aW9uLmgi
CiAjaW5jbHVkZSAiUlRDVHJhY2tFdmVudC5oIgorI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGlj
YWxseVJhbmRvbU51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVk
ZSA8d3RmL1VVSUQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KQEAgLTgxLDE0ICs4
MiwyMCBAQCBSZWY8UlRDUGVlckNvbm5lY3Rpb24+IFJUQ1BlZXJDb25uZWN0aW9uCiAKIFJUQ1Bl
ZXJDb25uZWN0aW9uOjpSVENQZWVyQ29ubmVjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KQogICAgIDogQWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQorI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRAorICAgICwgbV9sb2dnZXIoZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLmxv
Z2dlcigpKQorICAgICwgbV9sb2dJZGVudGlmaWVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9p
ZCo+KGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyKCkpKQorI2VuZGlmCiAgICAgLCBtX2Jh
Y2tlbmQoUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjcmVhdGUoKnRoaXMpKQogeworICAgIEFMV0FZ
U19MT0coTE9HSURFTlRJRklFUik7CiAgICAgaWYgKCFtX2JhY2tlbmQpCiAgICAgICAgIG1fY29u
bmVjdGlvblN0YXRlID0gUlRDUGVlckNvbm5lY3Rpb25TdGF0ZTo6Q2xvc2VkOwogfQogCiBSVENQ
ZWVyQ29ubmVjdGlvbjo6flJUQ1BlZXJDb25uZWN0aW9uKCkKIHsKKyAgICBBTFdBWVNfTE9HKExP
R0lERU5USUZJRVIpOwogICAgIHVucmVnaXN0ZXJGcm9tQ29udHJvbGxlcigpOwogICAgIHN0b3Ao
KTsKIH0KQEAgLTEwNiw2ICsxMTMsOCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBSVENQZWVyQ29ubmVj
dGlvbjo6aW5pCiAKIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBTZW5kZXI+PiBSVENQZWVyQ29ubmVj
dGlvbjo6YWRkVHJhY2soUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYgdHJhY2ssIGNvbnN0IFZlY3Rv
cjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPE1lZGlhU3RyZWFtPj4mIHN0cmVhbXMpCiB7CisgICAg
SU5GT19MT0coTE9HSURFTlRJRklFUik7CisKICAgICBpZiAoaXNDbG9zZWQoKSkKICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CiAKQEAgLTE2MCw2ICsxNjks
OCBAQCBFeGNlcHRpb25PcjxSZWY8UlRDUnRwU2VuZGVyPj4gUlRDUGVlckNvCiAKIEV4Y2VwdGlv
bk9yPHZvaWQ+IFJUQ1BlZXJDb25uZWN0aW9uOjpyZW1vdmVUcmFjayhSVENSdHBTZW5kZXImIHNl
bmRlcikKIHsKKyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsKKwogICAgIGlmIChpc0Nsb3Nl
ZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKIApA
QCAtMTg0LDYgKzE5NSw4IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFJUQ1BlZXJDb25uZWN0aW9uOjpy
ZW0KIAogRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFRyYW5zY2VpdmVyPj4gUlRDUGVlckNvbm5lY3Rp
b246OmFkZFRyYW5zY2VpdmVyKEFkZFRyYW5zY2VpdmVyVHJhY2tPcktpbmQmJiB3aXRoVHJhY2ss
IGNvbnN0IFJUQ1J0cFRyYW5zY2VpdmVySW5pdCYgaW5pdCkKIHsKKyAgICBJTkZPX0xPRyhMT0dJ
REVOVElGSUVSKTsKKwogICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4od2l0
aFRyYWNrKSkgewogICAgICAgICBjb25zdCBTdHJpbmcmIGtpbmQgPSBXVEY6OmdldDxTdHJpbmc+
KHdpdGhUcmFjayk7CiAgICAgICAgIGlmIChraW5kICE9ICJhdWRpbyIgJiYga2luZCAhPSAidmlk
ZW8iKQpAQCAtMjE4LDcgKzIzMSw3IEBAIFJlZjxSVENSdHBUcmFuc2NlaXZlcj4gUlRDUGVlckNv
bm5lY3Rpb24KIAogdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6cXVldWVkQ3JlYXRlT2ZmZXIoUlRD
T2ZmZXJPcHRpb25zJiYgb3B0aW9ucywgU2Vzc2lvbkRlc2NyaXB0aW9uUHJvbWlzZSYmIHByb21p
c2UpCiB7Ci0gICAgUkVMRUFTRV9MT0coV2ViUlRDLCAiQ3JlYXRpbmcgb2ZmZXJcbiIpOworICAg
IEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CiAgICAgaWYgKGlzQ2xvc2VkKCkpIHsKICAgICAg
ICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IpOwogICAgICAgICByZXR1cm47CkBA
IC0yMjksNyArMjQyLDcgQEAgdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6cXVldWVkQ3JlYXRlT2Zm
ZQogCiB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpxdWV1ZWRDcmVhdGVBbnN3ZXIoUlRDQW5zd2Vy
T3B0aW9ucyYmIG9wdGlvbnMsIFNlc3Npb25EZXNjcmlwdGlvblByb21pc2UmJiBwcm9taXNlKQog
ewotICAgIFJFTEVBU0VfTE9HKFdlYlJUQywgIkNyZWF0aW5nIGFuc3dlclxuIik7CisgICAgQUxX
QVlTX0xPRyhMT0dJREVOVElGSUVSKTsKICAgICBpZiAoaXNDbG9zZWQoKSkgewogICAgICAgICBw
cm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJvcik7CiAgICAgICAgIHJldHVybjsKQEAgLTI0
MCw3ICsyNTMsNyBAQCB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpxdWV1ZWRDcmVhdGVBbnN3CiAK
IHZvaWQgUlRDUGVlckNvbm5lY3Rpb246OnF1ZXVlZFNldExvY2FsRGVzY3JpcHRpb24oUlRDU2Vz
c2lvbkRlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYg
cHJvbWlzZSkKIHsKLSAgICBSRUxFQVNFX0xPRyhXZWJSVEMsICJTZXR0aW5nIGxvY2FsIGRlc2Ny
aXB0aW9uOlxuJXtwdWJsaWN9c1xuIiwgZGVzY3JpcHRpb24uc2RwKCkudXRmOCgpLmRhdGEoKSk7
CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiU2V0dGluZyBsb2NhbCBkZXNjcmlwdGlv
biB0bzpcbiIsIGRlc2NyaXB0aW9uLnNkcCgpKTsKICAgICBpZiAoaXNDbG9zZWQoKSkgewogICAg
ICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJvcik7CiAgICAgICAgIHJldHVybjsK
QEAgLTI2Niw3ICsyNzksNyBAQCBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBSVENQZWVy
Q29uCiAKIHZvaWQgUlRDUGVlckNvbm5lY3Rpb246OnF1ZXVlZFNldFJlbW90ZURlc2NyaXB0aW9u
KFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIERPTVByb21pc2VEZWZlcnJlZDx2
b2lkPiYmIHByb21pc2UpCiB7Ci0gICAgUkVMRUFTRV9MT0coV2ViUlRDLCAiU2V0dGluZyByZW1v
dGUgZGVzY3JpcHRpb246XG4le3B1YmxpY31zXG4iLCBkZXNjcmlwdGlvbi5zZHAoKS51dGY4KCku
ZGF0YSgpKTsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJTZXR0aW5nIHJlbW90ZSBk
ZXNjcmlwdGlvbiB0bzpcbiIsIGRlc2NyaXB0aW9uLnNkcCgpKTsKIAogICAgIGlmIChpc0Nsb3Nl
ZCgpKSB7CiAgICAgICAgIHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9yKTsKQEAgLTI5
Miw3ICszMDUsNyBAQCBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBSVENQZWVyQ29uCiAK
IHZvaWQgUlRDUGVlckNvbm5lY3Rpb246OnF1ZXVlZEFkZEljZUNhbmRpZGF0ZShSVENJY2VDYW5k
aWRhdGUqIHJ0Y0NhbmRpZGF0ZSwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkK
IHsKLSAgICBSRUxFQVNFX0xPRyhXZWJSVEMsICJSZWNlaXZlZCBpY2UgY2FuZGlkYXRlOlxuJXtw
dWJsaWN9c1xuIiwgcnRjQ2FuZGlkYXRlID8gcnRjQ2FuZGlkYXRlLT5jYW5kaWRhdGUoKS51dGY4
KCkuZGF0YSgpIDogIm51bGwiKTsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJSZWNl
aXZlZCBpY2UgY2FuZGlkYXRlOlxuIiwgcnRjQ2FuZGlkYXRlID8gcnRjQ2FuZGlkYXRlLT5jYW5k
aWRhdGUoKSA6ICJudWxsIik7CiAKICAgICBpZiAoaXNDbG9zZWQoKSkgewogICAgICAgICBwcm9t
aXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJvcik7CkBAIC0zMjksNiArMzQyLDggQEAgc3RhdGlj
IGlubGluZSBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxNZWRpYQogCiBFeGNlcHRpb25Pcjx2b2lkPiBS
VENQZWVyQ29ubmVjdGlvbjo6aW5pdGlhbGl6ZUNvbmZpZ3VyYXRpb24oUlRDQ29uZmlndXJhdGlv
biYmIGNvbmZpZ3VyYXRpb24pCiB7CisgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7CisKICAg
ICBhdXRvIHNlcnZlcnMgPSBpY2VTZXJ2ZXJzRnJvbUNvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlv
bik7CiAgICAgaWYgKCFzZXJ2ZXJzKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxp
ZEFjY2Vzc0Vycm9yIH07CkBAIC0zNDYsNiArMzYxLDggQEAgRXhjZXB0aW9uT3I8dm9pZD4gUlRD
UGVlckNvbm5lY3Rpb246OnNldAogICAgIGlmIChpc0Nsb3NlZCgpKQogICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKIAorICAgIElORk9fTE9HKExPR0lERU5U
SUZJRVIpOworCiAgICAgYXV0byBzZXJ2ZXJzID0gaWNlU2VydmVyc0Zyb21Db25maWd1cmF0aW9u
KGNvbmZpZ3VyYXRpb24pOwogICAgIGlmICghc2VydmVycykKICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IEludmFsaWRBY2Nlc3NFcnJvciB9OwpAQCAtMzY0LDYgKzM4MSw4IEBAIHZvaWQgUlRD
UGVlckNvbm5lY3Rpb246OmdldFN0YXRzKE1lZGlhU3QKIAogRXhjZXB0aW9uT3I8UmVmPFJUQ0Rh
dGFDaGFubmVsPj4gUlRDUGVlckNvbm5lY3Rpb246OmNyZWF0ZURhdGFDaGFubmVsKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFN0cmluZyYmIGxhYmVsLCBSVENEYXRhQ2hhbm5lbElu
aXQmJiBvcHRpb25zKQogeworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKICAgICBp
ZiAoaXNDbG9zZWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVy
cm9yIH07CiAKQEAgLTQ2NSwzMSArNDg0LDE5IEBAIGJvb2wgUlRDUGVlckNvbm5lY3Rpb246Omhh
c1BlbmRpbmdBY3RpdmkKIAogdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6YWRkVHJhbnNjZWl2ZXIo
UmVmPFJUQ1J0cFRyYW5zY2VpdmVyPiYmIHRyYW5zY2VpdmVyKQogeworICAgIElORk9fTE9HKExP
R0lERU5USUZJRVIpOwogICAgIG1fdHJhbnNjZWl2ZXJTZXQtPmFwcGVuZChXVEZNb3ZlKHRyYW5z
Y2VpdmVyKSk7CiB9CiAKIHZvaWQgUlRDUGVlckNvbm5lY3Rpb246OnNldFNpZ25hbGluZ1N0YXRl
KFJUQ1NpZ25hbGluZ1N0YXRlIG5ld1N0YXRlKQogeworICAgIEFMV0FZU19MT0coTE9HSURFTlRJ
RklFUiwgbmV3U3RhdGUpOwogICAgIG1fc2lnbmFsaW5nU3RhdGUgPSBuZXdTdGF0ZTsKIH0KIAot
I2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotc3RhdGljIGlubGluZSBjb25zdCBjaGFyKiBydGNJ
Y2VHYXRoZXJpbmdTdGF0ZVRvU3RyaW5nKFJUQ0ljZUdhdGhlcmluZ1N0YXRlIG5ld1N0YXRlKQot
ewotICAgIHN3aXRjaCAobmV3U3RhdGUpIHsKLSAgICBjYXNlIFJUQ0ljZUdhdGhlcmluZ1N0YXRl
OjpOZXc6Ci0gICAgICAgIHJldHVybiAibmV3IjsKLSAgICBjYXNlIFJUQ0ljZUdhdGhlcmluZ1N0
YXRlOjpHYXRoZXJpbmc6Ci0gICAgICAgIHJldHVybiAiZ2F0aGVyaW5nIjsKLSAgICBjYXNlIFJU
Q0ljZUdhdGhlcmluZ1N0YXRlOjpDb21wbGV0ZToKLSAgICAgICAgcmV0dXJuICJjb21wbGV0ZSI7
Ci0gICAgfQotfQotI2VuZGlmCi0KIHZvaWQgUlRDUGVlckNvbm5lY3Rpb246OnVwZGF0ZUljZUdh
dGhlcmluZ1N0YXRlKFJUQ0ljZUdhdGhlcmluZ1N0YXRlIG5ld1N0YXRlKQogewotICAgIFJFTEVB
U0VfTE9HKFdlYlJUQywgIk5ldyBJQ0UgZ2F0aGVyaW5nIHN0YXRlOiAle3B1YmxpY31zXG4iLCBy
dGNJY2VHYXRoZXJpbmdTdGF0ZVRvU3RyaW5nKG5ld1N0YXRlKSk7CisgICAgQUxXQVlTX0xPRyhM
T0dJREVOVElGSUVSLCBuZXdTdGF0ZSk7CiAKICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
PnBvc3RUYXNrKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG5ld1N0YXRlXShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JikgewogICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+aXNDbG9z
ZWQoKSB8fCBwcm90ZWN0ZWRUaGlzLT5tX2ljZUdhdGhlcmluZ1N0YXRlID09IG5ld1N0YXRlKQpA
QCAtNTAxLDMxICs1MDgsOSBAQCB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjp1cGRhdGVJY2VHYXRo
ZXJpCiAgICAgfSk7CiB9CiAKLSNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLXN0YXRpYyBpbmxp
bmUgY29uc3QgY2hhciogcnRjSWNlQ29ubmVjdGlvblN0YXRlVG9TdHJpbmcoUlRDSWNlQ29ubmVj
dGlvblN0YXRlIG5ld1N0YXRlKQotewotICAgIHN3aXRjaCAobmV3U3RhdGUpIHsKLSAgICBjYXNl
IFJUQ0ljZUNvbm5lY3Rpb25TdGF0ZTo6TmV3OgotICAgICAgICByZXR1cm4gIm5ldyI7Ci0gICAg
Y2FzZSBSVENJY2VDb25uZWN0aW9uU3RhdGU6OkNoZWNraW5nOgotICAgICAgICByZXR1cm4gImNo
ZWNraW5nIjsKLSAgICBjYXNlIFJUQ0ljZUNvbm5lY3Rpb25TdGF0ZTo6Q29ubmVjdGVkOgotICAg
ICAgICByZXR1cm4gImNvbm5lY3RlZCI7Ci0gICAgY2FzZSBSVENJY2VDb25uZWN0aW9uU3RhdGU6
OkNvbXBsZXRlZDoKLSAgICAgICAgcmV0dXJuICJjb21wbGV0ZWQiOwotICAgIGNhc2UgUlRDSWNl
Q29ubmVjdGlvblN0YXRlOjpGYWlsZWQ6Ci0gICAgICAgIHJldHVybiAiZmFpbGVkIjsKLSAgICBj
YXNlIFJUQ0ljZUNvbm5lY3Rpb25TdGF0ZTo6RGlzY29ubmVjdGVkOgotICAgICAgICByZXR1cm4g
ImRpc2Nvbm5lY3RlZCI7Ci0gICAgY2FzZSBSVENJY2VDb25uZWN0aW9uU3RhdGU6OkNsb3NlZDoK
LSAgICAgICAgcmV0dXJuICJjbG9zZWQiOwotICAgIH0KLX0KLSNlbmRpZgotCiB2b2lkIFJUQ1Bl
ZXJDb25uZWN0aW9uOjp1cGRhdGVJY2VDb25uZWN0aW9uU3RhdGUoUlRDSWNlQ29ubmVjdGlvblN0
YXRlIG5ld1N0YXRlKQogewotICAgIFJFTEVBU0VfTE9HKFdlYlJUQywgIk5ldyBJQ0UgY29ubmVj
dGlvbiBzdGF0ZTogJXtwdWJsaWN9c1xuIiwgcnRjSWNlQ29ubmVjdGlvblN0YXRlVG9TdHJpbmco
bmV3U3RhdGUpKTsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsIG5ld1N0YXRlKTsKIAog
ICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soW3Byb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgbmV3U3RhdGVdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAg
ICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5pc0Nsb3NlZCgpIHx8IHByb3RlY3RlZFRoaXMtPm1faWNl
Q29ubmVjdGlvblN0YXRlID09IG5ld1N0YXRlKQpAQCAtNTYwLDYgKzU0NSw4IEBAIHZvaWQgUlRD
UGVlckNvbm5lY3Rpb246OnVwZGF0ZUNvbm5lY3Rpb24KICAgICBpZiAoc3RhdGUgPT0gbV9jb25u
ZWN0aW9uU3RhdGUpCiAgICAgICAgIHJldHVybjsKIAorICAgIElORk9fTE9HKExPR0lERU5USUZJ
RVIsICJzdGF0ZSBjaGFuZ2VkIGZyb206ICIgLCBtX2Nvbm5lY3Rpb25TdGF0ZSwgIiB0byAiLCBz
dGF0ZSk7CisKICAgICBtX2Nvbm5lY3Rpb25TdGF0ZSA9IHN0YXRlOwogICAgIGRpc3BhdGNoRXZl
bnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29ubmVjdGlvbnN0YXRlY2hhbmdlRXZlbnQs
IGZhbHNlLCBmYWxzZSkpOwogfQpAQCAtNTk0LDYgKzU4MSw4IEBAIHZvaWQgUlRDUGVlckNvbm5l
Y3Rpb246OmVucXVldWVSZXBsYWNlVHIKIAogdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6cmVwbGFj
ZVRyYWNrKFJUQ1J0cFNlbmRlciYgc2VuZGVyLCBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4mJiB3
aXRoVHJhY2ssIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiB7CisgICAgSU5G
T19MT0coTE9HSURFTlRJRklFUik7CisKICAgICBpZiAoIXdpdGhUcmFjaykgewogICAgICAgICBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNrKFtwcm90ZWN0ZWRTZW5kZXIgPSBtYWtl
UmVmKHNlbmRlciksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JikgbXV0YWJsZSB7CiAgICAgICAgICAgICBwcm90ZWN0ZWRTZW5kZXItPnNldFRyYWNr
VG9OdWxsKCk7CkBAIC02MTUsNiArNjA0LDE5IEBAIFJUQ1J0cFBhcmFtZXRlcnMgUlRDUGVlckNv
bm5lY3Rpb246OmdldFAKICAgICByZXR1cm4gbV9iYWNrZW5kLT5nZXRQYXJhbWV0ZXJzKHNlbmRl
cik7CiB9CiAKK2Jvb2wgUlRDUGVlckNvbm5lY3Rpb246OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2
ZW50KQoreworICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCAiZGlzcGF0Y2hpbmcgJyIsIGV2
ZW50LnR5cGUoKSwgIiciKTsKKyAgICByZXR1cm4gRXZlbnRUYXJnZXQ6OmRpc3BhdGNoRXZlbnQo
ZXZlbnQpOworfQorCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECitXVEZMb2dDaGFubmVsJiBS
VENQZWVyQ29ubmVjdGlvbjo6bG9nQ2hhbm5lbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIExvZ1dl
YlJUQzsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBF
TkFCTEUoV0VCX1JUQykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUGVlckNvbm5lY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgJKHJldmlzaW9uIDIyMjA5MSkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaAkod29y
a2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIlJUQ1BlZXJDb25uZWN0aW9u
U3RhdGUuaCIKICNpbmNsdWRlICJSVENSdHBUcmFuc2NlaXZlci5oIgogI2luY2x1ZGUgIlJUQ1Np
Z25hbGluZ1N0YXRlLmgiCisjaW5jbHVkZSA8cGFsL0xvZ2dlckhlbHBlci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTYzLDcgKzY0LDE1IEBAIHN0cnVjdCBSVENSdHBUcmFuc2NlaXZl
ckluaXQgewogICAgIFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uIGRpcmVjdGlvbjsKIH07CiAK
LWNsYXNzIFJUQ1BlZXJDb25uZWN0aW9uIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8UlRDUGVl
ckNvbm5lY3Rpb24+LCBwdWJsaWMgUlRDUnRwU2VuZGVyOjpCYWNrZW5kLCBwdWJsaWMgRXZlbnRU
YXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CitjbGFzcyBSVENQ
ZWVyQ29ubmVjdGlvbiBmaW5hbAorICAgIDogcHVibGljIFJlZkNvdW50ZWQ8UlRDUGVlckNvbm5l
Y3Rpb24+CisgICAgLCBwdWJsaWMgUlRDUnRwU2VuZGVyOjpCYWNrZW5kCisgICAgLCBwdWJsaWMg
RXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YQorICAgICwgcHVibGljIEFjdGl2ZURPTU9iamVjdAor
I2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgICwgcHVibGljIFBBTDo6TG9nZ2VySGVscGVy
CisjZW5kaWYKK3sKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFJUQ1BlZXJDb25uZWN0aW9uPiBj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwogICAgIHZpcnR1YWwgflJUQ1BlZXJDb25u
ZWN0aW9uKCk7CkBAIC0xNTAsNiArMTU5LDEzIEBAIHB1YmxpYzoKICAgICAvLyBBY3RpdmVET01P
YmplY3QuCiAgICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKIAorI2lm
ICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIGNvbnN0IFBBTDo6TG9nZ2VyJiBsb2dnZXIoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ2dlci5nZXQoKTsgfQorICAgIGNvbnN0IHZvaWQqIGxv
Z0lkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7IH0KKyAg
ICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiUlRDUGVl
ckNvbm5lY3Rpb24iOyB9CisgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0IGZp
bmFsOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgUlRDUGVlckNvbm5lY3Rpb24oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYpOwogCkBAIC0xNjUsNiArMTgxLDcgQEAgcHJpdmF0ZToKICAgICAvLyBF
dmVudFRhcmdldCBpbXBsZW1lbnRhdGlvbi4KICAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmlu
YWwgeyByZWYoKTsgfQogICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYo
KTsgfQorICAgIGJvb2wgZGlzcGF0Y2hFdmVudChFdmVudCYpIGZpbmFsOwogCiAgICAgLy8gQWN0
aXZlRE9NT2JqZWN0CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wKCkgZmluYWw7CkBAIC0x
ODYsNiArMjAzLDExIEBAIHByaXZhdGU6CiAgICAgUlRDSWNlQ29ubmVjdGlvblN0YXRlIG1faWNl
Q29ubmVjdGlvblN0YXRlIHsgUlRDSWNlQ29ubmVjdGlvblN0YXRlOjpOZXcgfTsKICAgICBSVENQ
ZWVyQ29ubmVjdGlvblN0YXRlIG1fY29ubmVjdGlvblN0YXRlIHsgUlRDUGVlckNvbm5lY3Rpb25T
dGF0ZTo6TmV3IH07CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBSZWY8Y29uc3Qg
UEFMOjpMb2dnZXI+IG1fbG9nZ2VyOworICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllcjsK
KyNlbmRpZgorCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJ0cFRyYW5zY2VpdmVyU2V0PiBtX3RyYW5z
Y2VpdmVyU2V0IHsgc3RkOjp1bmlxdWVfcHRyPFJ0cFRyYW5zY2VpdmVyU2V0PihuZXcgUnRwVHJh
bnNjZWl2ZXJTZXQoKSkgfTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQ+IG1fYmFja2VuZDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlh
RW5kcG9pbnQuY3BwCShyZXZpc2lvbiAyMjIwOTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjMsNiArNjMsMTAgQEAgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6TGliV2Vi
UlRDTWVkaWFFbgogICAgICwgbV9zZXRMb2NhbFNlc3Npb25EZXNjcmlwdGlvbk9ic2VydmVyKCp0
aGlzKQogICAgICwgbV9zZXRSZW1vdGVTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlcigqdGhpcykK
ICAgICAsIG1fc3RhdHNMb2dUaW1lcigqdGhpcywgJkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Omdh
dGhlclN0YXRzRm9yTG9nZ2luZykKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICAsIG1f
bG9nZ2VyKHBlZXJDb25uZWN0aW9uLmxvZ2dlcigpKQorICAgICwgbV9sb2dJZGVudGlmaWVyKHBl
ZXJDb25uZWN0aW9uLmxvZ0lkZW50aWZpZXIoKSkKKyNlbmRpZgogewogICAgIEFTU0VSVChjbGll
bnQuZmFjdG9yeSgpKTsKIH0KQEAgLTEwNjUsMjAgKzEwNjksMjMgQEAgdm9pZCBMaWJXZWJSVENN
ZWRpYUVuZHBvaW50OjpnYXRoZXJTdGF0cwogCiB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6
Ok9uU3RhdHNEZWxpdmVyZWQoY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPGNvbnN0IHdlYnJ0Yzo6
UlRDU3RhdHNSZXBvcnQ+JiByZXBvcnQpCiB7Ci0gICAgaWYgKCFtX3N0YXRzVGltZXN0YW1wKQot
ICAgICAgICBtX3N0YXRzVGltZXN0YW1wID0gcmVwb3J0LT50aW1lc3RhbXBfdXMoKTsKLSAgICBl
bHNlIGlmIChtX3N0YXRzTG9nVGltZXIucmVwZWF0SW50ZXJ2YWwoKSA9PSAyX3MgJiYgKHJlcG9y
dC0+dGltZXN0YW1wX3VzKCkgLSBtX3N0YXRzVGltZXN0YW1wKSA+IDE1MDAwMDAwKSB7Ci0gICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gewot
ICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9zdGF0c0xvZ1RpbWVyLmF1Z21lbnRSZXBlYXRJ
bnRlcnZhbCg5X3MpOworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIGludDY0X3QgdGlt
ZXN0YW1wID0gcmVwb3J0LT50aW1lc3RhbXBfdXMoKTsKKyAgICBpZiAoIW1fc3RhdHNGaXJzdERl
bGl2ZXJlZFRpbWVzdGFtcCkKKyAgICAgICAgbV9zdGF0c0ZpcnN0RGVsaXZlcmVkVGltZXN0YW1w
ID0gdGltZXN0YW1wOworCisgICAgaWYgKG1fc3RhdHNMb2dUaW1lci5yZXBlYXRJbnRlcnZhbCgp
ICE9IHN0YXRzTG9nSW50ZXJ2YWwodGltZXN0YW1wKSkgeworICAgICAgICBjYWxsT25NYWluVGhy
ZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHRoaXMsIHRpbWVzdGFtcF0gewor
ICAgICAgICAgICAgbV9zdGF0c0xvZ1RpbWVyLnN0b3AoKTsKKyAgICAgICAgICAgIG1fc3RhdHNM
b2dUaW1lci5zdGFydFJlcGVhdGluZyhzdGF0c0xvZ0ludGVydmFsKHRpbWVzdGFtcCkpOwogICAg
ICAgICB9KTsKICAgICB9CiAKLSNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICAvLyBMb2cg
c3RhdHMgb25jZSBldmVyeSBzZWNvbmQgZm9yIHRoZSAzMCBzZWNvbmRzLCB0aGVuIGRyb3AgdG8g
b25jZSBldmVyeSA1IHNlY29uZHMuCiAgICAgZm9yIChhdXRvIGl0ZXJhdG9yID0gcmVwb3J0LT5i
ZWdpbigpOyBpdGVyYXRvciAhPSByZXBvcnQtPmVuZCgpOyArK2l0ZXJhdG9yKSB7CiAgICAgICAg
IGlmIChpdGVyYXRvci0+dHlwZSgpID09IHdlYnJ0Yzo6UlRDQ29kZWNTdGF0czo6a1R5cGUpCiAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgUkVMRUFTRV9MT0coV2ViUlRDLCAiV2ViUlRD
IHN0YXRzIGZvciAlcDogJXtwdWJsaWN9cyIsIHRoaXMsIGl0ZXJhdG9yLT5Ub1N0cmluZygpLmNf
c3RyKCkpOworCisgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgIldlYlJUQyBzdGF0
cyBmb3IgOiIsICppdGVyYXRvcik7CiAgICAgfQogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocmVw
b3J0KTsKQEAgLTEwOTAsNyArMTA5Nyw3IEBAIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6
c3RhcnRMb2dnaW4KICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBpZiAobV9zdGF0c0xv
Z1RpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1fc3RhdHNMb2dUaW1lci5zdG9wKCk7Ci0gICAg
bV9zdGF0c0xvZ1RpbWVyLnN0YXJ0UmVwZWF0aW5nKDJfcyk7CisgICAgbV9zdGF0c0xvZ1RpbWVy
LnN0YXJ0UmVwZWF0aW5nKHN0YXRzTG9nSW50ZXJ2YWwoMCkpOwogI2VuZGlmCiB9CiAKQEAgLTEw
OTksNiArMTEwNiwyNCBAQCB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OnN0b3BMb2dnaW5n
CiAgICAgbV9zdGF0c0xvZ1RpbWVyLnN0b3AoKTsKIH0KIAorI2lmICFSRUxFQVNFX0xPR19ESVNB
QkxFRAorV1RGTG9nQ2hhbm5lbCYgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6bG9nQ2hhbm5lbCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIExvZ1dlYlJUQzsKK30KKworU2Vjb25kcyBMaWJXZWJSVENN
ZWRpYUVuZHBvaW50OjpzdGF0c0xvZ0ludGVydmFsKGludDY0X3QgcmVwb3J0VGltZXN0YW1wKSBj
b25zdAoreworICAgIGlmIChsb2dnZXIoKS53aWxsTG9nKGxvZ0NoYW5uZWwoKSwgV1RGTG9nTGV2
ZWxJbmZvKSkKKyAgICAgICAgcmV0dXJuIDJfczsKKworICAgIGlmIChyZXBvcnRUaW1lc3RhbXAg
LSBtX3N0YXRzRmlyc3REZWxpdmVyZWRUaW1lc3RhbXAgPiAxNTAwMDAwMCkKKyAgICAgICAgcmV0
dXJuIDEwX3M7CisKKyAgICByZXR1cm4gNF9zOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5oCShyZXZpc2lvbiAyMjIwOTEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBv
aW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDEyICszMiwxMiBAQAogI2luY2x1ZGUgIlJlYWx0
aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oIgogI2luY2x1ZGUgIlJlYWx0aW1lT3V0Z29pbmdWaWRl
b1NvdXJjZS5oIgogI2luY2x1ZGUgPFRpbWVyLmg+Ci0KKyNpbmNsdWRlIDxwYWwvTG9nZ2VyLmg+
CisjaW5jbHVkZSA8cGFsL0xvZ2dlckhlbHBlci5oPgogI2luY2x1ZGUgPHdlYnJ0Yy9hcGkvanNl
cC5oPgogI2luY2x1ZGUgPHdlYnJ0Yy9hcGkvcGVlcmNvbm5lY3Rpb25pbnRlcmZhY2UuaD4KICNp
bmNsdWRlIDx3ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25mYWN0b3J5Lmg+CiAjaW5jbHVkZSA8d2Vi
cnRjL3BjL3J0Y3N0YXRzY29sbGVjdG9yLmg+Ci0KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJl
ZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBAIC01Nyw3ICs1NywxNCBAQCBjbGFz
cyBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ7CiBjbGFzcyBNZWRpYVN0cmVhbVRyYWNr
OwogY2xhc3MgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uOwogCi1jbGFzcyBMaWJXZWJSVENNZWRpYUVu
ZHBvaW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPExpYldlYlJUQ01lZGlhRW5kcG9p
bnQ+LCBwcml2YXRlIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25PYnNlcnZlciwgcHJpdmF0ZSB3ZWJy
dGM6OlJUQ1N0YXRzQ29sbGVjdG9yQ2FsbGJhY2sgeworY2xhc3MgTGliV2ViUlRDTWVkaWFFbmRw
b2ludAorICAgIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPExpYldlYlJUQ01lZGlhRW5k
cG9pbnQ+CisgICAgLCBwcml2YXRlIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25PYnNlcnZlcgorICAg
ICwgcHJpdmF0ZSB3ZWJydGM6OlJUQ1N0YXRzQ29sbGVjdG9yQ2FsbGJhY2sKKyNpZiAhUkVMRUFT
RV9MT0dfRElTQUJMRUQKKyAgICAsIHB1YmxpYyBQQUw6OkxvZ2dlckhlbHBlcgorI2VuZGlmCit7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxMaWJXZWJSVENNZWRpYUVuZHBvaW50PiBjcmVhdGUo
TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kJiBwZWVyQ29ubmVjdGlvbiwgTGliV2ViUlRD
UHJvdmlkZXImIGNsaWVudCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBMaWJXZWJSVENNZWRpYUVu
ZHBvaW50KHBlZXJDb25uZWN0aW9uLCBjbGllbnQpKTsgfQogICAgIHZpcnR1YWwgfkxpYldlYlJU
Q01lZGlhRW5kcG9pbnQoKSB7IH0KQEAgLTEyNiw2ICsxMzMsMTUgQEAgcHJpdmF0ZToKICAgICBi
b29sIHNob3VsZE9mZmVyQWxsb3dUb1JlY2VpdmVBdWRpbygpIGNvbnN0OwogICAgIGJvb2wgc2hv
dWxkT2ZmZXJBbGxvd1RvUmVjZWl2ZVZpZGVvKCkgY29uc3Q7CiAKKyNpZiAhUkVMRUFTRV9MT0df
RElTQUJMRUQKKyAgICBjb25zdCBQQUw6OkxvZ2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9sb2dnZXIuZ2V0KCk7IH0KKyAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dJZGVudGlmaWVyOyB9CisgICAgY29uc3QgY2hhciog
bG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkxpYldlYlJUQ01lZGlhRW5kcG9p
bnQiOyB9CisgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0IGZpbmFsOworCisg
ICAgU2Vjb25kcyBzdGF0c0xvZ0ludGVydmFsKGludDY0X3QpIGNvbnN0OworI2VuZGlmCisKICAg
ICBjbGFzcyBDcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlciBmaW5hbCA6IHB1YmxpYyB3
ZWJydGM6OkNyZWF0ZVNlc3Npb25EZXNjcmlwdGlvbk9ic2VydmVyIHsKICAgICBwdWJsaWM6CiAg
ICAgICAgIGV4cGxpY2l0IENyZWF0ZVNlc3Npb25EZXNjcmlwdGlvbk9ic2VydmVyKExpYldlYlJU
Q01lZGlhRW5kcG9pbnQgJmVuZHBvaW50KSA6IG1fZW5kcG9pbnQoZW5kcG9pbnQpIHsgfQpAQCAt
MTk0LDkgKzIxMCwyOSBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2lzSW5pdGlhdG9yIHsgZmFs
c2UgfTsKICAgICBUaW1lciBtX3N0YXRzTG9nVGltZXI7Ci0gICAgaW50NjRfdCBtX3N0YXRzVGlt
ZXN0YW1wIHsgMCB9OworCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgaW50NjRfdCBt
X3N0YXRzRmlyc3REZWxpdmVyZWRUaW1lc3RhbXAgeyAwIH07CisgICAgUmVmPGNvbnN0IFBBTDo6
TG9nZ2VyPiBtX2xvZ2dlcjsKKyAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7CisjZW5k
aWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorbmFtZXNwYWNlIFBBTCB7CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFR5cGU+CitzdHJ1Y3QgTG9nQXJndW1lbnQ7CisKK3RlbXBsYXRlIDw+
CitzdHJ1Y3QgTG9nQXJndW1lbnQ8d2VicnRjOjpSVENTdGF0cz4geworICAgIHN0YXRpYyBTdHJp
bmcgdG9TdHJpbmcoY29uc3Qgd2VicnRjOjpSVENTdGF0cyYgaXRlcmF0b3IpCisgICAgeworICAg
ICAgICByZXR1cm4gV1RGOjpTdHJpbmcoaXRlcmF0b3IuVG9TdHJpbmcoKS5jX3N0cigpKTsKKyAg
ICB9Cit9OworCit9OyAvLyBuYW1lc3BhY2UgUEFMCisKICNlbmRpZiAvLyBVU0UoTElCV0VCUlRD
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDSWNlQ29ubmVj
dGlvblN0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUlRDSWNlQ29ubmVjdGlvblN0YXRlLmgJKHJldmlzaW9uIDIyMjA5MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0ljZUNvbm5lY3Rpb25TdGF0ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCwyMyBAQCBlbnVtIGNsYXNzIFJUQ0ljZUNvbm5lY3Rp
b25TdGF0ZSB7CiAgICAgQ2xvc2VkCiB9OwogCitTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9T
dHJpbmcoUlRDSWNlQ29ubmVjdGlvblN0YXRlKTsgLy8gaW4gSlNDUlRDSWNlQ29ubmVjdGlvblN0
YXRlLmNwcAorCiB9OyAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCituYW1lc3BhY2UgUEFMIHsKKwor
dGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KK3N0cnVjdCBMb2dBcmd1bWVudDsKKwordGVtcGxhdGUg
PD4KK3N0cnVjdCBMb2dBcmd1bWVudDxXZWJDb3JlOjpSVENJY2VDb25uZWN0aW9uU3RhdGU+IHsK
KyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6OlJUQ0ljZUNvbm5lY3Rp
b25TdGF0ZSBzdGF0ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBjb252ZXJ0RW51bWVyYXRpb25U
b1N0cmluZyhzdGF0ZSk7CisgICAgfQorfTsKKworfTsgLy8gbmFtZXNwYWNlIFBBTAorCiAjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0ljZUdhdGhl
cmluZ1N0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUlRDSWNlR2F0aGVyaW5nU3RhdGUuaAkocmV2aXNpb24gMjIyMDkxKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDSWNlR2F0aGVyaW5nU3RhdGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMjYsNiArMjYsOCBAQAogCiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAKKyNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBl
bnVtIGNsYXNzIFJUQ0ljZUdhdGhlcmluZ1N0YXRlIHsKQEAgLTM2LDQgKzM4LDI4IEBAIGVudW0g
Y2xhc3MgUlRDSWNlR2F0aGVyaW5nU3RhdGUgewogCiB9OyAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CituYW1lc3BhY2UgUEFMIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KK3N0cnVjdCBMb2dB
cmd1bWVudDsKKwordGVtcGxhdGUgPD4KK3N0cnVjdCBMb2dBcmd1bWVudDxXZWJDb3JlOjpSVENJ
Y2VHYXRoZXJpbmdTdGF0ZT4geworICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgV2Vi
Q29yZTo6UlRDSWNlR2F0aGVyaW5nU3RhdGUgc3RhdGUpCisgICAgeworICAgICAgICBzd2l0Y2gg
KHN0YXRlKSB7CisgICAgICAgIGNhc2UgV2ViQ29yZTo6UlRDSWNlR2F0aGVyaW5nU3RhdGU6Ok5l
dzoKKyAgICAgICAgICAgIHJldHVybiAibmV3IjsKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpSVENJ
Y2VHYXRoZXJpbmdTdGF0ZTo6R2F0aGVyaW5nOgorICAgICAgICAgICAgcmV0dXJuICJnYXRoZXJp
bmciOworICAgICAgICBjYXNlIFdlYkNvcmU6OlJUQ0ljZUdhdGhlcmluZ1N0YXRlOjpDb21wbGV0
ZToKKyAgICAgICAgICAgIHJldHVybiAiY29tcGxldGUiOworICAgICAgICB9CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gIiI7CisgICAgfQorfTsKKworfTsg
Ly8gbmFtZXNwYWNlIFBBTAorCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uU3RhdGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvblN0YXRlLmgJ
KHJldmlzaW9uIDIyMjA5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JUQ1BlZXJDb25uZWN0aW9uU3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsMjMg
QEAgZW51bSBjbGFzcyBSVENQZWVyQ29ubmVjdGlvblN0YXRlIHsKICAgICBDbG9zZWQKIH07CiAK
K1N0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhSVENQZWVyQ29ubmVjdGlvblN0YXRl
KTsgLy8gaW4gSlNDUlRDUGVlckNvbm5lY3Rpb25TdGF0ZS5oCisKIH07IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKK25hbWVzcGFjZSBQQUwgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgorc3Ry
dWN0IExvZ0FyZ3VtZW50OworCit0ZW1wbGF0ZSA8Pgorc3RydWN0IExvZ0FyZ3VtZW50PFdlYkNv
cmU6OlJUQ1BlZXJDb25uZWN0aW9uU3RhdGU+IHsKKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5n
KGNvbnN0IFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uU3RhdGUgc3RhdGUpCisgICAgeworICAg
ICAgICByZXR1cm4gY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoc3RhdGUpOworICAgIH0KK307
CisKK307IC8vIG5hbWVzcGFjZSBQQUwKKwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENTaWduYWxpbmdTdGF0ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1NpZ25hbGluZ1N0YXRlLmgJKHJl
dmlzaW9uIDIyMjA5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JU
Q1NpZ25hbGluZ1N0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDQgKzM4LDMyIEBAIGVudW0g
Y2xhc3MgUlRDU2lnbmFsaW5nU3RhdGUgewogCiB9OyAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCitu
YW1lc3BhY2UgUEFMIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KK3N0cnVjdCBMb2dBcmd1
bWVudDsKKwordGVtcGxhdGUgPD4KK3N0cnVjdCBMb2dBcmd1bWVudDxXZWJDb3JlOjpSVENTaWdu
YWxpbmdTdGF0ZT4geworICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgV2ViQ29yZTo6
UlRDU2lnbmFsaW5nU3RhdGUgc3RhdGUpCisgICAgeworICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7
CisgICAgICAgIGNhc2UgV2ViQ29yZTo6UlRDU2lnbmFsaW5nU3RhdGU6OlN0YWJsZToKKyAgICAg
ICAgICAgIHJldHVybiAic3RhYmxlIjsKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpSVENTaWduYWxp
bmdTdGF0ZTo6SGF2ZUxvY2FsT2ZmZXI6CisgICAgICAgICAgICByZXR1cm4gImhhdmVsb2NhbG9m
ZmVyIjsKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpSVENTaWduYWxpbmdTdGF0ZTo6SGF2ZVJlbW90
ZU9mZmVyOgorICAgICAgICAgICAgcmV0dXJuICJoYXZlcmVtb3Rlb2ZmZXIiOworICAgICAgICBj
YXNlIFdlYkNvcmU6OlJUQ1NpZ25hbGluZ1N0YXRlOjpIYXZlTG9jYWxQcmFuc3dlcjoKKyAgICAg
ICAgICAgIHJldHVybiAiaGF2ZWxvY2FscHJhbnN3ZXIiOworICAgICAgICBjYXNlIFdlYkNvcmU6
OlJUQ1NpZ25hbGluZ1N0YXRlOjpIYXZlUmVtb3RlUHJhbnN3ZXI6CisgICAgICAgICAgICByZXR1
cm4gImhhdmVyZW1vdGVwcmFuc3dlciI7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIHJldHVybiAiIjsKKyAgICB9Cit9OworCit9OyAvLyBuYW1lc3Bh
Y2UgUEFMCisKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321330</attachid>
            <date>2017-09-20 10:35:41 -0700</date>
            <delta_ts>2017-09-20 10:55:31 -0700</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>web_rtc_logging_patch_4.txt</filename>
            <type>text/plain</type>
            <size>32099</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMjI2NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc1IEBACisyMDE3LTA5LTIwICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFN3aXRjaCBQZWVyQ29u
bmVjdGlvbiB0byByZWxlYXNlIGxvZ2dpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3NzE5MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzQ1Mjkw
MTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6UGVlckNvbm5lY3Rpb25CYWNrZW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlT2ZmZXJTdWNjZWVk
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjcmVhdGVPZmZl
ckZhaWxlZCk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmNyZWF0
ZUFuc3dlclN1Y2NlZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbkJhY2tl
bmQ6OmNyZWF0ZUFuc3dlckZhaWxlZCk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlv
bkJhY2tlbmQ6OnNldExvY2FsRGVzY3JpcHRpb25TdWNjZWVkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpzZXRMb2NhbERlc2NyaXB0aW9uRmFpbGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6c2V0UmVtb3RlRGVzY3JpcHRp
b25TdWNjZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpz
ZXRSZW1vdGVEZXNjcmlwdGlvbkZhaWxlZCk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVj
dGlvbkJhY2tlbmQ6OmFkZEljZUNhbmRpZGF0ZVN1Y2NlZWRlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZEljZUNhbmRpZGF0ZUZhaWxlZCk6CisgICAgICAg
IChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6Om5ld0lDRUNhbmRpZGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmRvbmVHYXRoZXJpbmdDYW5kaWRh
dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6bG9nQ2hhbm5l
bCBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6UGVlckNv
bm5lY3Rpb25CYWNrZW5kKTogRGVsZXRlZC4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5l
Y3Rpb246OlJUQ1BlZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25u
ZWN0aW9uOjp+UlRDUGVlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNv
bm5lY3Rpb246OmFkZFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9u
OjpyZW1vdmVUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6YWRk
VHJhbnNjZWl2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246OnF1ZXVl
ZENyZWF0ZU9mZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpxdWV1
ZWRDcmVhdGVBbnN3ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246OnF1
ZXVlZFNldExvY2FsRGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5l
Y3Rpb246OnF1ZXVlZFNldFJlbW90ZURlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJU
Q1BlZXJDb25uZWN0aW9uOjpxdWV1ZWRBZGRJY2VDYW5kaWRhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UlRDUGVlckNvbm5lY3Rpb246OmluaXRpYWxpemVDb25maWd1cmF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpzZXRDb25maWd1cmF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpjcmVhdGVEYXRhQ2hhbm5lbCk6CisgICAgICAg
IChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6c2V0U2lnbmFsaW5nU3RhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246OnVwZGF0ZUljZUdhdGhlcmluZ1N0YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjp1cGRhdGVJY2VDb25uZWN0aW9u
U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246OnVwZGF0ZUNvbm5l
Y3Rpb25TdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6cmVwbGFj
ZVRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpkaXNwYXRjaEV2
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpsb2dDaGFubmVsIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnJ0Y0ljZUdhdGhlcmluZ1N0YXRlVG9TdHJpbmcpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6cnRjSWNlQ29ubmVjdGlvblN0YXRlVG9TdHJpbmcp
OiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rp
b24uaDoKKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q01lZGlhRW5kcG9pbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRw
b2ludDo6TGliV2ViUlRDTWVkaWFFbmRwb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJS
VENNZWRpYUVuZHBvaW50OjpPblN0YXRzRGVsaXZlcmVkKToKKyAgICAgICAgKFdlYkNvcmU6Okxp
YldlYlJUQ01lZGlhRW5kcG9pbnQ6OnN0YXJ0TG9nZ2luZ1N0YXRzKToKKyAgICAgICAgKFdlYkNv
cmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmxvZ0NoYW5uZWwgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6c3RhdHNMb2dJbnRlcnZhbCBjb25zdCk6
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFF
bmRwb2ludC5oOgorICAgICAgICAoUEFMOjpMb2dBcmd1bWVudDx3ZWJydGM6OlJUQ1N0YXRzPjo6
dG9TdHJpbmcpOgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDSWNlQ29ubmVj
dGlvblN0YXRlLmg6CisgICAgICAgIChQQUw6OkxvZ0FyZ3VtZW50PFdlYkNvcmU6OlJUQ0ljZUNv
bm5lY3Rpb25TdGF0ZT46OnRvU3RyaW5nKToKKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JUQ0ljZUdhdGhlcmluZ1N0YXRlLmg6CisgICAgICAgIChQQUw6OkxvZ0FyZ3VtZW50PFdl
YkNvcmU6OlJUQ0ljZUdhdGhlcmluZ1N0YXRlPjo6dG9TdHJpbmcpOgorCisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25TdGF0ZS5oOgorICAgICAgICAoUEFM
OjpMb2dBcmd1bWVudDxXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvblN0YXRlPjo6dG9TdHJpbmcp
OgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDU2lnbmFsaW5nU3RhdGUuaDoK
KyAgICAgICAgKFBBTDo6TG9nQXJndW1lbnQ8V2ViQ29yZTo6UlRDU2lnbmFsaW5nU3RhdGU+Ojp0
b1N0cmluZyk6CisKIDIwMTctMDktMjAgIE1pZ3VlbCBHb21leiAgPG1hZ29tZXpAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbR1RLXSBDb21wbGV0ZWx5IGdhcmJsZWQgZGlzcGxheSBpbiBHTWFpbApJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAkocmV2aXNpb24gMjIyMjY3KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCwxNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K3VzaW5nIG5hbWVzcGFjZSBQQUw7CisKK1BlZXJDb25uZWN0aW9uQmFja2VuZDo6UGVlckNvbm5l
Y3Rpb25CYWNrZW5kKFJUQ1BlZXJDb25uZWN0aW9uJiBwZWVyQ29ubmVjdGlvbikKKyAgICA6IG1f
cGVlckNvbm5lY3Rpb24ocGVlckNvbm5lY3Rpb24pCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVE
CisgICAgLCBtX2xvZ2dlcihwZWVyQ29ubmVjdGlvbi5sb2dnZXIoKSkKKyAgICAsIG1fbG9nSWRl
bnRpZmllcihwZWVyQ29ubmVjdGlvbi5sb2dJZGVudGlmaWVyKCkpCisjZW5kaWYKK3sKK30KKwog
dm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYm
IG9wdGlvbnMsIFBlZXJDb25uZWN0aW9uOjpTZXNzaW9uRGVzY3JpcHRpb25Qcm9taXNlJiYgcHJv
bWlzZSkKIHsKICAgICBBU1NFUlQoIW1fb2ZmZXJBbnN3ZXJQcm9taXNlKTsKQEAgLTU2LDcgKzY3
LDcgQEAgdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZU9mZmVyKAogdm9pZCBQZWVy
Q29ubmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZU9mZmVyU3VjY2VlZGVkKFN0cmluZyYmIHNkcCkKIHsK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIFJFTEVBU0VfTE9HKFdlYlJUQywgIkNy
ZWF0aW5nIG9mZmVyIHN1Y2NlZWRlZDpcbiV7cHVibGljfXNcbiIsIHNkcC51dGY4KCkuZGF0YSgp
KTsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJDcmVhdGUgb2ZmZXIgc3VjY2VlZGVk
OlxuIiwgc2RwKTsKIAogICAgIGlmIChtX3BlZXJDb25uZWN0aW9uLmlzQ2xvc2VkKCkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTY5LDcgKzgwLDcgQEAgdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6
OmNyZWF0ZU9mZmVyUwogdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZU9mZmVyRmFp
bGVkKEV4Y2VwdGlvbiYmIGV4Y2VwdGlvbikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwotICAgIFJFTEVBU0VfTE9HKFdlYlJUQywgIkNyZWF0aW5nIG9mZmVyIGZhaWxlZDpcbiV7cHVi
bGljfXNcbiIsIGV4Y2VwdGlvbi5tZXNzYWdlKCkudXRmOCgpLmRhdGEoKSk7CisgICAgQUxXQVlT
X0xPRyhMT0dJREVOVElGSUVSLCAiQ3JlYXRlIG9mZmVyIGZhaWxlZDoiLCBleGNlcHRpb24ubWVz
c2FnZSgpKTsKIAogICAgIGlmIChtX3BlZXJDb25uZWN0aW9uLmlzQ2xvc2VkKCkpCiAgICAgICAg
IHJldHVybjsKQEAgLTkxLDcgKzEwMiw3IEBAIHZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpj
cmVhdGVBbnN3ZXIKIHZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjcmVhdGVBbnN3ZXJTdWNj
ZWVkZWQoU3RyaW5nJiYgc2RwKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAg
UkVMRUFTRV9MT0coV2ViUlRDLCAiQ3JlYXRpbmcgYW5zd2VyIHN1Y2NlZWRlZDpcbiV7cHVibGlj
fXNcbiIsIHNkcC51dGY4KCkuZGF0YSgpKTsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIs
ICJDcmVhdGUgYW5zd2VyIHN1Y2NlZWRlZDpcbiIsIHNkcCk7CiAKICAgICBpZiAobV9wZWVyQ29u
bmVjdGlvbi5pc0Nsb3NlZCgpKQogICAgICAgICByZXR1cm47CkBAIC0xMDQsNyArMTE1LDcgQEAg
dm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZUFuc3dlcgogdm9pZCBQZWVyQ29ubmVj
dGlvbkJhY2tlbmQ6OmNyZWF0ZUFuc3dlckZhaWxlZChFeGNlcHRpb24mJiBleGNlcHRpb24pCiB7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBSRUxFQVNFX0xPRyhXZWJSVEMsICJD
cmVhdGluZyBhbnN3ZXIgZmFpbGVkOlxuJXtwdWJsaWN9c1xuIiwgZXhjZXB0aW9uLm1lc3NhZ2Uo
KS51dGY4KCkuZGF0YSgpKTsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJDcmVhdGUg
YW5zd2VyIGZhaWxlZDoiLCBleGNlcHRpb24ubWVzc2FnZSgpKTsKIAogICAgIGlmIChtX3BlZXJD
b25uZWN0aW9uLmlzQ2xvc2VkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTE0OSw3ICsxNjAsNyBA
QCB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6c2V0TG9jYWxEZXNjCiB2b2lkIFBlZXJDb25u
ZWN0aW9uQmFja2VuZDo6c2V0TG9jYWxEZXNjcmlwdGlvblN1Y2NlZWRlZCgpCiB7CiAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBSRUxFQVNFX0xPRyhXZWJSVEMsICJTZXR0aW5nIGxv
Y2FsIGRlc2NyaXB0aW9uIHN1Y2NlZWRlZFxuIik7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElG
SUVSKTsKIAogICAgIGlmIChtX3BlZXJDb25uZWN0aW9uLmlzQ2xvc2VkKCkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTE2Myw3ICsxNzQsNyBAQCB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6c2V0
TG9jYWxEZXNjCiB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6c2V0TG9jYWxEZXNjcmlwdGlv
bkZhaWxlZChFeGNlcHRpb24mJiBleGNlcHRpb24pCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKLSAgICBSRUxFQVNFX0xPRyhXZWJSVEMsICJTZXR0aW5nIGxvY2FsIGRlc2NyaXB0aW9u
IGZhaWxlZDpcbiV7cHVibGljfXNcbiIsIGV4Y2VwdGlvbi5tZXNzYWdlKCkudXRmOCgpLmRhdGEo
KSk7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiU2V0IGxvY2FsIGRlc2NyaXB0aW9u
IGZhaWxlZDoiLCBleGNlcHRpb24ubWVzc2FnZSgpKTsKIAogICAgIGlmIChtX3BlZXJDb25uZWN0
aW9uLmlzQ2xvc2VkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTIwOSw3ICsyMjAsNyBAQCB2b2lk
IFBlZXJDb25uZWN0aW9uQmFja2VuZDo6c2V0UmVtb3RlRGVzCiB2b2lkIFBlZXJDb25uZWN0aW9u
QmFja2VuZDo6c2V0UmVtb3RlRGVzY3JpcHRpb25TdWNjZWVkZWQoKQogewogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7Ci0gICAgUkVMRUFTRV9MT0coV2ViUlRDLCAiU2V0dGluZyByZW1vdGUg
ZGVzY3JpcHRpb24gc3VjY2VlZGVkXG4iKTsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIs
ICJTZXQgcmVtb3RlIGRlc2NyaXB0aW9uIHN1Y2NlZWRlZCIpOwogCiAgICAgaWYgKG1fcGVlckNv
bm5lY3Rpb24uaXNDbG9zZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjIzLDcgKzIzNCw3IEBA
IHZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpzZXRSZW1vdGVEZXMKIHZvaWQgUGVlckNvbm5l
Y3Rpb25CYWNrZW5kOjpzZXRSZW1vdGVEZXNjcmlwdGlvbkZhaWxlZChFeGNlcHRpb24mJiBleGNl
cHRpb24pCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBSRUxFQVNFX0xPRyhX
ZWJSVEMsICJTZXR0aW5nIHJlbW90ZSBkZXNjcmlwdGlvbiBmYWlsZWQ6XG4le3B1YmxpY31zXG4i
LCBleGNlcHRpb24ubWVzc2FnZSgpLnV0ZjgoKS5kYXRhKCkpOworICAgIEFMV0FZU19MT0coTE9H
SURFTlRJRklFUiwgIlNldCByZW1vdGUgZGVzY3JpcHRpb24gZmFpbGVkOiIsIGV4Y2VwdGlvbi5t
ZXNzYWdlKCkpOwogCiAgICAgaWYgKG1fcGVlckNvbm5lY3Rpb24uaXNDbG9zZWQoKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMjU1LDcgKzI2Niw3IEBAIHZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5k
OjphZGRJY2VDYW5kaWQKIHZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRJY2VDYW5kaWRh
dGVTdWNjZWVkZWQoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgUkVMRUFT
RV9MT0coV2ViUlRDLCAiQWRkaW5nIGljZSBjYW5kaWRhdGUgc3VjY2VlZGVkXG4iKTsKKyAgICBB
TFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJBZGRpbmcgaWNlIGNhbmRpZGF0ZSBzdWNjZWVkZWQi
KTsKIAogICAgIGlmIChtX3BlZXJDb25uZWN0aW9uLmlzQ2xvc2VkKCkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTI3MCw3ICsyODEsNyBAQCB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkSWNl
Q2FuZGlkCiB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkSWNlQ2FuZGlkYXRlRmFpbGVk
KEV4Y2VwdGlvbiYmIGV4Y2VwdGlvbikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwot
ICAgIFJFTEVBU0VfTE9HKFdlYlJUQywgIkFkZGluZyBpY2UgY2FuZGlkYXRlIGZhaWxlZDpcbiV7
cHVibGljfXNcbiIsIGV4Y2VwdGlvbi5tZXNzYWdlKCkudXRmOCgpLmRhdGEoKSk7CisgICAgQUxX
QVlTX0xPRyhMT0dJREVOVElGSUVSLCAiQWRkaW5nIGljZSBjYW5kaWRhdGUgZmFpbGVkOiIsIGV4
Y2VwdGlvbi5tZXNzYWdlKCkpOwogCiAgICAgaWYgKG1fcGVlckNvbm5lY3Rpb24uaXNDbG9zZWQo
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzQ5LDcgKzM2MCw3IEBAIFN0cmluZyBQZWVyQ29ubmVj
dGlvbkJhY2tlbmQ6OmZpbHRlclNEUCgKIAogdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6Om5l
d0lDRUNhbmRpZGF0ZShTdHJpbmcmJiBzZHAsIFN0cmluZyYmIG1pZCwgdW5zaWduZWQgc2hvcnQg
c2RwTUxpbmVJbmRleCkKIHsKLSAgICBSRUxFQVNFX0xPRyhXZWJSVEMsICJHYXRoZXJlZCBpY2Ug
Y2FuZGlkYXRlOlxuJXtwdWJsaWN9c1xuIiwgc2RwLnV0ZjgoKS5kYXRhKCkpOworICAgIEFMV0FZ
U19MT0coTE9HSURFTlRJRklFUiwgIkdhdGhlcmVkIGljZSBjYW5kaWRhdGU6Iiwgc2RwKTsKIAog
ICAgIGlmICghbV9zaG91bGRGaWx0ZXJJQ0VDYW5kaWRhdGVzKSB7CiAgICAgICAgIGZpcmVJQ0VD
YW5kaWRhdGVFdmVudChSVENJY2VDYW5kaWRhdGU6OmNyZWF0ZShXVEZNb3ZlKHNkcCksIFdURk1v
dmUobWlkKSwgc2RwTUxpbmVJbmRleCkpOwpAQCAtMzY1LDcgKzM3Niw3IEBAIHZvaWQgUGVlckNv
bm5lY3Rpb25CYWNrZW5kOjpuZXdJQ0VDYW5kaWQKIHZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5k
Ojpkb25lR2F0aGVyaW5nQ2FuZGlkYXRlcygpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKLSAgICBSRUxFQVNFX0xPRyhXZWJSVEMsICJGaW5pc2hlZCBpY2UgY2FuZGlkYXRlIGdhdGhl
cmluZ1xuIik7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiRmluaXNoZWQgaWNlIGNh
bmRpZGF0ZSBnYXRoZXJpbmciKTsKIAogICAgIG1fcGVlckNvbm5lY3Rpb24uZmlyZUV2ZW50KFJU
Q1BlZXJDb25uZWN0aW9uSWNlRXZlbnQ6OmNyZWF0ZShmYWxzZSwgZmFsc2UsIG51bGxwdHIpKTsK
ICAgICBtX3BlZXJDb25uZWN0aW9uLnVwZGF0ZUljZUdhdGhlcmluZ1N0YXRlKFJUQ0ljZUdhdGhl
cmluZ1N0YXRlOjpDb21wbGV0ZSk7CkBAIC00MDEsNiArNDEyLDEzIEBAIHZvaWQgUGVlckNvbm5l
Y3Rpb25CYWNrZW5kOjptYXJrQXNOZWVkaW4KICAgICAgICAgbV9wZWVyQ29ubmVjdGlvbi5zY2hl
ZHVsZU5lZ290aWF0aW9uTmVlZGVkRXZlbnQoKTsKIH0KIAorI2lmICFSRUxFQVNFX0xPR19ESVNB
QkxFRAorV1RGTG9nQ2hhbm5lbCYgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpsb2dDaGFubmVsKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gTG9nV2ViUlRDOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9u
QmFja2VuZC5oCShyZXZpc2lvbiAyMjIyNjcpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2
ICszNyw4IEBACiAjaW5jbHVkZSAiUlRDUnRwUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlJUQ1Nl
c3Npb25EZXNjcmlwdGlvbi5oIgogI2luY2x1ZGUgIlJUQ1NpZ25hbGluZ1N0YXRlLmgiCisjaW5j
bHVkZSA8cGFsL0xvZ2dlci5oPgorI2luY2x1ZGUgPHBhbC9Mb2dnZXJIZWxwZXIuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC02MywxMSArNjUsMTUgQEAgdXNpbmcgU3RhdHNQcm9taXNl
ID0gRE9NUHJvbWlzZURlZmVycmVkPAogCiB1c2luZyBDcmVhdGVQZWVyQ29ubmVjdGlvbkJhY2tl
bmQgPSBzdGQ6OnVuaXF1ZV9wdHI8UGVlckNvbm5lY3Rpb25CYWNrZW5kPiAoKikoUlRDUGVlckNv
bm5lY3Rpb24mKTsKIAotY2xhc3MgUGVlckNvbm5lY3Rpb25CYWNrZW5kIHsKK2NsYXNzIFBlZXJD
b25uZWN0aW9uQmFja2VuZAorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIDogcHVibGlj
IFBBTDo6TG9nZ2VySGVscGVyCisjZW5kaWYKK3sKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgQ3JlYXRlUGVlckNvbm5lY3Rpb25CYWNrZW5kIGNyZWF0ZTsKIAotICAgIFBlZXJD
b25uZWN0aW9uQmFja2VuZChSVENQZWVyQ29ubmVjdGlvbiYgcGVlckNvbm5lY3Rpb24pIDogbV9w
ZWVyQ29ubmVjdGlvbihwZWVyQ29ubmVjdGlvbikgeyB9CisgICAgZXhwbGljaXQgUGVlckNvbm5l
Y3Rpb25CYWNrZW5kKFJUQ1BlZXJDb25uZWN0aW9uJik7CiAgICAgdmlydHVhbCB+UGVlckNvbm5l
Y3Rpb25CYWNrZW5kKCkgeyB9CiAKICAgICB2b2lkIGNyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9u
cyYmLCBQZWVyQ29ubmVjdGlvbjo6U2Vzc2lvbkRlc2NyaXB0aW9uUHJvbWlzZSYmKTsKQEAgLTEx
Myw2ICsxMTksMTMgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGFwcGx5Um90YXRpb25G
b3JPdXRnb2luZ1ZpZGVvU291cmNlcygpIHsgfQogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVE
CisgICAgY29uc3QgUEFMOjpMb2dnZXImIGxvZ2dlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
bG9nZ2VyLmdldCgpOyB9CisgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fbG9nSWRlbnRpZmllcjsgfQorICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNz
TmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJQZWVyQ29ubmVjdGlvbkJhY2tlbmQiOyB9
CisgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0IGZpbmFsOworI2VuZGlmCisK
IHByb3RlY3RlZDoKICAgICB2b2lkIGZpcmVJQ0VDYW5kaWRhdGVFdmVudChSZWZQdHI8UlRDSWNl
Q2FuZGlkYXRlPiYmKTsKICAgICB2b2lkIGRvbmVHYXRoZXJpbmdDYW5kaWRhdGVzKCk7CkBAIC0x
NjIsNiArMTc1LDEwIEBAIHByaXZhdGU6CiAgICAgfTsKICAgICBWZWN0b3I8UGVuZGluZ0lDRUNh
bmRpZGF0ZT4gbV9wZW5kaW5nSUNFQ2FuZGlkYXRlczsKIAorI2lmICFSRUxFQVNFX0xPR19ESVNB
QkxFRAorICAgIFJlZjxjb25zdCBQQUw6OkxvZ2dlcj4gbV9sb2dnZXI7CisgICAgY29uc3Qgdm9p
ZCogbV9sb2dJZGVudGlmaWVyOworI2VuZGlmCiAgICAgYm9vbCBtX25lZ290aWF0aW9uTmVlZGVk
IHsgZmFsc2UgfTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCShyZXZpc2lvbiAyMjIyNjcp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsNyBAQAogI2luY2x1ZGUgIlJUQ1BlZXJD
b25uZWN0aW9uSWNlRXZlbnQuaCIKICNpbmNsdWRlICJSVENTZXNzaW9uRGVzY3JpcHRpb24uaCIK
ICNpbmNsdWRlICJSVENUcmFja0V2ZW50LmgiCisjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNh
bGx5UmFuZG9tTnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRl
IDx3dGYvVVVJRC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgpAQCAtODEsMTQgKzgy
LDIwIEBAIFJlZjxSVENQZWVyQ29ubmVjdGlvbj4gUlRDUGVlckNvbm5lY3Rpb24KIAogUlRDUGVl
ckNvbm5lY3Rpb246OlJUQ1BlZXJDb25uZWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpCiAgICAgOiBBY3RpdmVET01PYmplY3QoJmNvbnRleHQpCisjaWYgIVJFTEVBU0VfTE9H
X0RJU0FCTEVECisgICAgLCBtX2xvZ2dlcihkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCkubG9n
Z2VyKCkpCisgICAgLCBtX2xvZ0lkZW50aWZpZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lk
Kj4oY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIoKSkpCisjZW5kaWYKICAgICAsIG1fYmFj
a2VuZChQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZSgqdGhpcykpCiB7CisgICAgQUxXQVlT
X0xPRyhMT0dJREVOVElGSUVSKTsKICAgICBpZiAoIW1fYmFja2VuZCkKICAgICAgICAgbV9jb25u
ZWN0aW9uU3RhdGUgPSBSVENQZWVyQ29ubmVjdGlvblN0YXRlOjpDbG9zZWQ7CiB9CiAKIFJUQ1Bl
ZXJDb25uZWN0aW9uOjp+UlRDUGVlckNvbm5lY3Rpb24oKQogeworICAgIEFMV0FZU19MT0coTE9H
SURFTlRJRklFUik7CiAgICAgdW5yZWdpc3RlckZyb21Db250cm9sbGVyKCk7CiAgICAgc3RvcCgp
OwogfQpAQCAtMTA2LDYgKzExMyw4IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFJUQ1BlZXJDb25uZWN0
aW9uOjppbmkKIAogRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFNlbmRlcj4+IFJUQ1BlZXJDb25uZWN0
aW9uOjphZGRUcmFjayhSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaywgY29uc3QgVmVjdG9y
PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8TWVkaWFTdHJlYW0+PiYgc3RyZWFtcykKIHsKKyAgICBJ
TkZPX0xPRyhMT0dJREVOVElGSUVSKTsKKwogICAgIGlmIChpc0Nsb3NlZCgpKQogICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKIApAQCAtMTYwLDYgKzE2OSw4
IEBAIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBTZW5kZXI+PiBSVENQZWVyQ28KIAogRXhjZXB0aW9u
T3I8dm9pZD4gUlRDUGVlckNvbm5lY3Rpb246OnJlbW92ZVRyYWNrKFJUQ1J0cFNlbmRlciYgc2Vu
ZGVyKQogeworICAgIElORk9fTE9HKExPR0lERU5USUZJRVIpOworCiAgICAgaWYgKGlzQ2xvc2Vk
KCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwogCkBA
IC0xODQsNiArMTk1LDggQEAgRXhjZXB0aW9uT3I8dm9pZD4gUlRDUGVlckNvbm5lY3Rpb246OnJl
bQogCiBFeGNlcHRpb25PcjxSZWY8UlRDUnRwVHJhbnNjZWl2ZXI+PiBSVENQZWVyQ29ubmVjdGlv
bjo6YWRkVHJhbnNjZWl2ZXIoQWRkVHJhbnNjZWl2ZXJUcmFja09yS2luZCYmIHdpdGhUcmFjaywg
Y29uc3QgUlRDUnRwVHJhbnNjZWl2ZXJJbml0JiBpbml0KQogeworICAgIElORk9fTE9HKExPR0lE
RU5USUZJRVIpOworCiAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPih3aXRo
VHJhY2spKSB7CiAgICAgICAgIGNvbnN0IFN0cmluZyYga2luZCA9IFdURjo6Z2V0PFN0cmluZz4o
d2l0aFRyYWNrKTsKICAgICAgICAgaWYgKGtpbmQgIT0gImF1ZGlvIiAmJiBraW5kICE9ICJ2aWRl
byIpCkBAIC0yMTgsNyArMjMxLDcgQEAgUmVmPFJUQ1J0cFRyYW5zY2VpdmVyPiBSVENQZWVyQ29u
bmVjdGlvbgogCiB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpxdWV1ZWRDcmVhdGVPZmZlcihSVENP
ZmZlck9wdGlvbnMmJiBvcHRpb25zLCBTZXNzaW9uRGVzY3JpcHRpb25Qcm9taXNlJiYgcHJvbWlz
ZSkKIHsKLSAgICBSRUxFQVNFX0xPRyhXZWJSVEMsICJDcmVhdGluZyBvZmZlclxuIik7CisgICAg
QUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKICAgICBpZiAoaXNDbG9zZWQoKSkgewogICAgICAg
ICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJvcik7CiAgICAgICAgIHJldHVybjsKQEAg
LTIyOSw3ICsyNDIsNyBAQCB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpxdWV1ZWRDcmVhdGVPZmZl
CiAKIHZvaWQgUlRDUGVlckNvbm5lY3Rpb246OnF1ZXVlZENyZWF0ZUFuc3dlcihSVENBbnN3ZXJP
cHRpb25zJiYgb3B0aW9ucywgU2Vzc2lvbkRlc2NyaXB0aW9uUHJvbWlzZSYmIHByb21pc2UpCiB7
Ci0gICAgUkVMRUFTRV9MT0coV2ViUlRDLCAiQ3JlYXRpbmcgYW5zd2VyXG4iKTsKKyAgICBBTFdB
WVNfTE9HKExPR0lERU5USUZJRVIpOwogICAgIGlmIChpc0Nsb3NlZCgpKSB7CiAgICAgICAgIHBy
b21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9yKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjQw
LDcgKzI1Myw3IEBAIHZvaWQgUlRDUGVlckNvbm5lY3Rpb246OnF1ZXVlZENyZWF0ZUFuc3cKIAog
dm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6cXVldWVkU2V0TG9jYWxEZXNjcmlwdGlvbihSVENTZXNz
aW9uRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBw
cm9taXNlKQogewotICAgIFJFTEVBU0VfTE9HKFdlYlJUQywgIlNldHRpbmcgbG9jYWwgZGVzY3Jp
cHRpb246XG4le3B1YmxpY31zXG4iLCBkZXNjcmlwdGlvbi5zZHAoKS51dGY4KCkuZGF0YSgpKTsK
KyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJTZXR0aW5nIGxvY2FsIGRlc2NyaXB0aW9u
IHRvOlxuIiwgZGVzY3JpcHRpb24uc2RwKCkpOwogICAgIGlmIChpc0Nsb3NlZCgpKSB7CiAgICAg
ICAgIHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9yKTsKICAgICAgICAgcmV0dXJuOwpA
QCAtMjY2LDcgKzI3OSw3IEBAIFJlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb24+IFJUQ1BlZXJD
b24KIAogdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6cXVldWVkU2V0UmVtb3RlRGVzY3JpcHRpb24o
UlRDU2Vzc2lvbkRlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgRE9NUHJvbWlzZURlZmVycmVkPHZv
aWQ+JiYgcHJvbWlzZSkKIHsKLSAgICBSRUxFQVNFX0xPRyhXZWJSVEMsICJTZXR0aW5nIHJlbW90
ZSBkZXNjcmlwdGlvbjpcbiV7cHVibGljfXNcbiIsIGRlc2NyaXB0aW9uLnNkcCgpLnV0ZjgoKS5k
YXRhKCkpOworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgIlNldHRpbmcgcmVtb3RlIGRl
c2NyaXB0aW9uIHRvOlxuIiwgZGVzY3JpcHRpb24uc2RwKCkpOwogCiAgICAgaWYgKGlzQ2xvc2Vk
KCkpIHsKICAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IpOwpAQCAtMjky
LDcgKzMwNSw3IEBAIFJlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb24+IFJUQ1BlZXJDb24KIAog
dm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6cXVldWVkQWRkSWNlQ2FuZGlkYXRlKFJUQ0ljZUNhbmRp
ZGF0ZSogcnRjQ2FuZGlkYXRlLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQog
ewotICAgIFJFTEVBU0VfTE9HKFdlYlJUQywgIlJlY2VpdmVkIGljZSBjYW5kaWRhdGU6XG4le3B1
YmxpY31zXG4iLCBydGNDYW5kaWRhdGUgPyBydGNDYW5kaWRhdGUtPmNhbmRpZGF0ZSgpLnV0Zjgo
KS5kYXRhKCkgOiAibnVsbCIpOworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgIlJlY2Vp
dmVkIGljZSBjYW5kaWRhdGU6XG4iLCBydGNDYW5kaWRhdGUgPyBydGNDYW5kaWRhdGUtPmNhbmRp
ZGF0ZSgpIDogIm51bGwiKTsKIAogICAgIGlmIChpc0Nsb3NlZCgpKSB7CiAgICAgICAgIHByb21p
c2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9yKTsKQEAgLTMyOSw2ICszNDIsOCBAQCBzdGF0aWMg
aW5saW5lIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPE1lZGlhCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IFJU
Q1BlZXJDb25uZWN0aW9uOjppbml0aWFsaXplQ29uZmlndXJhdGlvbihSVENDb25maWd1cmF0aW9u
JiYgY29uZmlndXJhdGlvbikKIHsKKyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsKKwogICAg
IGF1dG8gc2VydmVycyA9IGljZVNlcnZlcnNGcm9tQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9u
KTsKICAgICBpZiAoIXNlcnZlcnMpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlk
QWNjZXNzRXJyb3IgfTsKQEAgLTM0Niw2ICszNjEsOCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBSVENQ
ZWVyQ29ubmVjdGlvbjo6c2V0CiAgICAgaWYgKGlzQ2xvc2VkKCkpCiAgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwogCisgICAgSU5GT19MT0coTE9HSURFTlRJ
RklFUik7CisKICAgICBhdXRvIHNlcnZlcnMgPSBpY2VTZXJ2ZXJzRnJvbUNvbmZpZ3VyYXRpb24o
Y29uZmlndXJhdGlvbik7CiAgICAgaWYgKCFzZXJ2ZXJzKQogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07CkBAIC0zNjQsNiArMzgxLDggQEAgdm9pZCBSVENQ
ZWVyQ29ubmVjdGlvbjo6Z2V0U3RhdHMoTWVkaWFTdAogCiBFeGNlcHRpb25PcjxSZWY8UlRDRGF0
YUNoYW5uZWw+PiBSVENQZWVyQ29ubmVjdGlvbjo6Y3JlYXRlRGF0YUNoYW5uZWwoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgU3RyaW5nJiYgbGFiZWwsIFJUQ0RhdGFDaGFubmVsSW5p
dCYmIG9wdGlvbnMpCiB7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKwogICAgIGlm
IChpc0Nsb3NlZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJy
b3IgfTsKIApAQCAtNDY1LDMxICs0ODQsMTkgQEAgYm9vbCBSVENQZWVyQ29ubmVjdGlvbjo6aGFz
UGVuZGluZ0FjdGl2aQogCiB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjphZGRUcmFuc2NlaXZlcihS
ZWY8UlRDUnRwVHJhbnNjZWl2ZXI+JiYgdHJhbnNjZWl2ZXIpCiB7CisgICAgSU5GT19MT0coTE9H
SURFTlRJRklFUik7CiAgICAgbV90cmFuc2NlaXZlclNldC0+YXBwZW5kKFdURk1vdmUodHJhbnNj
ZWl2ZXIpKTsKIH0KIAogdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6c2V0U2lnbmFsaW5nU3RhdGUo
UlRDU2lnbmFsaW5nU3RhdGUgbmV3U3RhdGUpCiB7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElG
SUVSLCBuZXdTdGF0ZSk7CiAgICAgbV9zaWduYWxpbmdTdGF0ZSA9IG5ld1N0YXRlOwogfQogCi0j
aWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi1zdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIqIHJ0Y0lj
ZUdhdGhlcmluZ1N0YXRlVG9TdHJpbmcoUlRDSWNlR2F0aGVyaW5nU3RhdGUgbmV3U3RhdGUpCi17
Ci0gICAgc3dpdGNoIChuZXdTdGF0ZSkgewotICAgIGNhc2UgUlRDSWNlR2F0aGVyaW5nU3RhdGU6
Ok5ldzoKLSAgICAgICAgcmV0dXJuICJuZXciOwotICAgIGNhc2UgUlRDSWNlR2F0aGVyaW5nU3Rh
dGU6OkdhdGhlcmluZzoKLSAgICAgICAgcmV0dXJuICJnYXRoZXJpbmciOwotICAgIGNhc2UgUlRD
SWNlR2F0aGVyaW5nU3RhdGU6OkNvbXBsZXRlOgotICAgICAgICByZXR1cm4gImNvbXBsZXRlIjsK
LSAgICB9Ci19Ci0jZW5kaWYKLQogdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6dXBkYXRlSWNlR2F0
aGVyaW5nU3RhdGUoUlRDSWNlR2F0aGVyaW5nU3RhdGUgbmV3U3RhdGUpCiB7Ci0gICAgUkVMRUFT
RV9MT0coV2ViUlRDLCAiTmV3IElDRSBnYXRoZXJpbmcgc3RhdGU6ICV7cHVibGljfXNcbiIsIHJ0
Y0ljZUdhdGhlcmluZ1N0YXRlVG9TdHJpbmcobmV3U3RhdGUpKTsKKyAgICBBTFdBWVNfTE9HKExP
R0lERU5USUZJRVIsIG5ld1N0YXRlKTsKIAogICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
cG9zdFRhc2soW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbmV3U3RhdGVdKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5pc0Nsb3Nl
ZCgpIHx8IHByb3RlY3RlZFRoaXMtPm1faWNlR2F0aGVyaW5nU3RhdGUgPT0gbmV3U3RhdGUpCkBA
IC01MDEsMzEgKzUwOCw5IEBAIHZvaWQgUlRDUGVlckNvbm5lY3Rpb246OnVwZGF0ZUljZUdhdGhl
cmkKICAgICB9KTsKIH0KIAotI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotc3RhdGljIGlubGlu
ZSBjb25zdCBjaGFyKiBydGNJY2VDb25uZWN0aW9uU3RhdGVUb1N0cmluZyhSVENJY2VDb25uZWN0
aW9uU3RhdGUgbmV3U3RhdGUpCi17Ci0gICAgc3dpdGNoIChuZXdTdGF0ZSkgewotICAgIGNhc2Ug
UlRDSWNlQ29ubmVjdGlvblN0YXRlOjpOZXc6Ci0gICAgICAgIHJldHVybiAibmV3IjsKLSAgICBj
YXNlIFJUQ0ljZUNvbm5lY3Rpb25TdGF0ZTo6Q2hlY2tpbmc6Ci0gICAgICAgIHJldHVybiAiY2hl
Y2tpbmciOwotICAgIGNhc2UgUlRDSWNlQ29ubmVjdGlvblN0YXRlOjpDb25uZWN0ZWQ6Ci0gICAg
ICAgIHJldHVybiAiY29ubmVjdGVkIjsKLSAgICBjYXNlIFJUQ0ljZUNvbm5lY3Rpb25TdGF0ZTo6
Q29tcGxldGVkOgotICAgICAgICByZXR1cm4gImNvbXBsZXRlZCI7Ci0gICAgY2FzZSBSVENJY2VD
b25uZWN0aW9uU3RhdGU6OkZhaWxlZDoKLSAgICAgICAgcmV0dXJuICJmYWlsZWQiOwotICAgIGNh
c2UgUlRDSWNlQ29ubmVjdGlvblN0YXRlOjpEaXNjb25uZWN0ZWQ6Ci0gICAgICAgIHJldHVybiAi
ZGlzY29ubmVjdGVkIjsKLSAgICBjYXNlIFJUQ0ljZUNvbm5lY3Rpb25TdGF0ZTo6Q2xvc2VkOgot
ICAgICAgICByZXR1cm4gImNsb3NlZCI7Ci0gICAgfQotfQotI2VuZGlmCi0KIHZvaWQgUlRDUGVl
ckNvbm5lY3Rpb246OnVwZGF0ZUljZUNvbm5lY3Rpb25TdGF0ZShSVENJY2VDb25uZWN0aW9uU3Rh
dGUgbmV3U3RhdGUpCiB7Ci0gICAgUkVMRUFTRV9MT0coV2ViUlRDLCAiTmV3IElDRSBjb25uZWN0
aW9uIHN0YXRlOiAle3B1YmxpY31zXG4iLCBydGNJY2VDb25uZWN0aW9uU3RhdGVUb1N0cmluZyhu
ZXdTdGF0ZSkpOworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgbmV3U3RhdGUpOwogCiAg
ICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhbcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBuZXdTdGF0ZV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAg
ICAgaWYgKHByb3RlY3RlZFRoaXMtPmlzQ2xvc2VkKCkgfHwgcHJvdGVjdGVkVGhpcy0+bV9pY2VD
b25uZWN0aW9uU3RhdGUgPT0gbmV3U3RhdGUpCkBAIC01NjAsNiArNTQ1LDggQEAgdm9pZCBSVENQ
ZWVyQ29ubmVjdGlvbjo6dXBkYXRlQ29ubmVjdGlvbgogICAgIGlmIChzdGF0ZSA9PSBtX2Nvbm5l
Y3Rpb25TdGF0ZSkKICAgICAgICAgcmV0dXJuOwogCisgICAgSU5GT19MT0coTE9HSURFTlRJRklF
UiwgInN0YXRlIGNoYW5nZWQgZnJvbTogIiAsIG1fY29ubmVjdGlvblN0YXRlLCAiIHRvICIsIHN0
YXRlKTsKKwogICAgIG1fY29ubmVjdGlvblN0YXRlID0gc3RhdGU7CiAgICAgZGlzcGF0Y2hFdmVu
dChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb25uZWN0aW9uc3RhdGVjaGFuZ2VFdmVudCwg
ZmFsc2UsIGZhbHNlKSk7CiB9CkBAIC01OTQsNiArNTgxLDggQEAgdm9pZCBSVENQZWVyQ29ubmVj
dGlvbjo6ZW5xdWV1ZVJlcGxhY2VUcgogCiB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpyZXBsYWNl
VHJhY2soUlRDUnRwU2VuZGVyJiBzZW5kZXIsIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmIHdp
dGhUcmFjaywgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKIHsKKyAgICBJTkZP
X0xPRyhMT0dJREVOVElGSUVSKTsKKwogICAgIGlmICghd2l0aFRyYWNrKSB7CiAgICAgICAgIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soW3Byb3RlY3RlZFNlbmRlciA9IG1ha2VS
ZWYoc2VuZGVyKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHByb3RlY3RlZFNlbmRlci0+c2V0VHJhY2tU
b051bGwoKTsKQEAgLTYxNSw2ICs2MDQsMTkgQEAgUlRDUnRwUGFyYW1ldGVycyBSVENQZWVyQ29u
bmVjdGlvbjo6Z2V0UAogICAgIHJldHVybiBtX2JhY2tlbmQtPmdldFBhcmFtZXRlcnMoc2VuZGVy
KTsKIH0KIAorYm9vbCBSVENQZWVyQ29ubmVjdGlvbjo6ZGlzcGF0Y2hFdmVudChFdmVudCYgZXZl
bnQpCit7CisgICAgREVCVUdfTE9HKExPR0lERU5USUZJRVIsICJkaXNwYXRjaGluZyAnIiwgZXZl
bnQudHlwZSgpLCAiJyIpOworICAgIHJldHVybiBFdmVudFRhcmdldDo6ZGlzcGF0Y2hFdmVudChl
dmVudCk7Cit9CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKK1dURkxvZ0NoYW5uZWwmIFJU
Q1BlZXJDb25uZWN0aW9uOjpsb2dDaGFubmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gTG9nV2Vi
UlRDOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShXRUJfUlRDKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENQZWVyQ29ubmVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaAkocmV2aXNpb24gMjIyMjY3KQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiUlRDUGVlckNvbm5lY3Rpb25T
dGF0ZS5oIgogI2luY2x1ZGUgIlJUQ1J0cFRyYW5zY2VpdmVyLmgiCiAjaW5jbHVkZSAiUlRDU2ln
bmFsaW5nU3RhdGUuaCIKKyNpbmNsdWRlIDxwYWwvTG9nZ2VySGVscGVyLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtNjMsNyArNjQsMTUgQEAgc3RydWN0IFJUQ1J0cFRyYW5zY2VpdmVy
SW5pdCB7CiAgICAgUlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24gZGlyZWN0aW9uOwogfTsKIAot
Y2xhc3MgUlRDUGVlckNvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxSVENQZWVy
Q29ubmVjdGlvbj4sIHB1YmxpYyBSVENSdHBTZW5kZXI6OkJhY2tlbmQsIHB1YmxpYyBFdmVudFRh
cmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKK2NsYXNzIFJUQ1Bl
ZXJDb25uZWN0aW9uIGZpbmFsCisgICAgOiBwdWJsaWMgUmVmQ291bnRlZDxSVENQZWVyQ29ubmVj
dGlvbj4KKyAgICAsIHB1YmxpYyBSVENSdHBTZW5kZXI6OkJhY2tlbmQKKyAgICAsIHB1YmxpYyBF
dmVudFRhcmdldFdpdGhJbmxpbmVEYXRhCisgICAgLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0Cisj
aWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgLCBwdWJsaWMgUEFMOjpMb2dnZXJIZWxwZXIK
KyNlbmRpZgorewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8UlRDUGVlckNvbm5lY3Rpb24+IGNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CiAgICAgdmlydHVhbCB+UlRDUGVlckNvbm5l
Y3Rpb24oKTsKQEAgLTE1MCw2ICsxNTksMTMgQEAgcHVibGljOgogICAgIC8vIEFjdGl2ZURPTU9i
amVjdC4KICAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFsOwogCisjaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgY29uc3QgUEFMOjpMb2dnZXImIGxvZ2dlcigpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nZ2VyLmdldCgpOyB9CisgICAgY29uc3Qgdm9pZCogbG9n
SWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nSWRlbnRpZmllcjsgfQorICAg
IGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJSVENQZWVy
Q29ubmVjdGlvbiI7IH0KKyAgICBXVEZMb2dDaGFubmVsJiBsb2dDaGFubmVsKCkgY29uc3QgZmlu
YWw7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBSVENQZWVyQ29ubmVjdGlvbihTY3JpcHRFeGVj
dXRpb25Db250ZXh0Jik7CiAKQEAgLTE2NSw2ICsxODEsNyBAQCBwcml2YXRlOgogICAgIC8vIEV2
ZW50VGFyZ2V0IGltcGxlbWVudGF0aW9uLgogICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBmaW5h
bCB7IHJlZigpOyB9CiAgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyBkZXJlZigp
OyB9CisgICAgYm9vbCBkaXNwYXRjaEV2ZW50KEV2ZW50JikgZmluYWw7CiAKICAgICAvLyBBY3Rp
dmVET01PYmplY3QKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0b3AoKSBmaW5hbDsKQEAgLTE4
Niw2ICsyMDMsMTEgQEAgcHJpdmF0ZToKICAgICBSVENJY2VDb25uZWN0aW9uU3RhdGUgbV9pY2VD
b25uZWN0aW9uU3RhdGUgeyBSVENJY2VDb25uZWN0aW9uU3RhdGU6Ok5ldyB9OwogICAgIFJUQ1Bl
ZXJDb25uZWN0aW9uU3RhdGUgbV9jb25uZWN0aW9uU3RhdGUgeyBSVENQZWVyQ29ubmVjdGlvblN0
YXRlOjpOZXcgfTsKIAorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIFJlZjxjb25zdCBQ
QUw6OkxvZ2dlcj4gbV9sb2dnZXI7CisgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOwor
I2VuZGlmCisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UnRwVHJhbnNjZWl2ZXJTZXQ+IG1fdHJhbnNj
ZWl2ZXJTZXQgeyBzdGQ6OnVuaXF1ZV9wdHI8UnRwVHJhbnNjZWl2ZXJTZXQ+KG5ldyBSdHBUcmFu
c2NlaXZlclNldCgpKSB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBlZXJDb25uZWN0aW9uQmFj
a2VuZD4gbV9iYWNrZW5kOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFF
bmRwb2ludC5jcHAJKHJldmlzaW9uIDIyMjI2NykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02Myw2ICs2MywxMCBAQCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpMaWJXZWJS
VENNZWRpYUVuCiAgICAgLCBtX3NldExvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIoKnRo
aXMpCiAgICAgLCBtX3NldFJlbW90ZVNlc3Npb25EZXNjcmlwdGlvbk9ic2VydmVyKCp0aGlzKQog
ICAgICwgbV9zdGF0c0xvZ1RpbWVyKCp0aGlzLCAmTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6Z2F0
aGVyU3RhdHNGb3JMb2dnaW5nKQorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgICwgbV9s
b2dnZXIocGVlckNvbm5lY3Rpb24ubG9nZ2VyKCkpCisgICAgLCBtX2xvZ0lkZW50aWZpZXIocGVl
ckNvbm5lY3Rpb24ubG9nSWRlbnRpZmllcigpKQorI2VuZGlmCiB7CiAgICAgQVNTRVJUKGNsaWVu
dC5mYWN0b3J5KCkpOwogfQpAQCAtMTA2NSwyMCArMTA2OSwyMyBAQCB2b2lkIExpYldlYlJUQ01l
ZGlhRW5kcG9pbnQ6OmdhdGhlclN0YXRzCiAKIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6
T25TdGF0c0RlbGl2ZXJlZChjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8Y29uc3Qgd2VicnRjOjpS
VENTdGF0c1JlcG9ydD4mIHJlcG9ydCkKIHsKLSAgICBpZiAoIW1fc3RhdHNUaW1lc3RhbXApCi0g
ICAgICAgIG1fc3RhdHNUaW1lc3RhbXAgPSByZXBvcnQtPnRpbWVzdGFtcF91cygpOwotICAgIGVs
c2UgaWYgKG1fc3RhdHNMb2dUaW1lci5yZXBlYXRJbnRlcnZhbCgpID09IDJfcyAmJiAocmVwb3J0
LT50aW1lc3RhbXBfdXMoKSAtIG1fc3RhdHNUaW1lc3RhbXApID4gMTUwMDAwMDApIHsKLSAgICAg
ICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7Ci0g
ICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3N0YXRzTG9nVGltZXIuYXVnbWVudFJlcGVhdElu
dGVydmFsKDlfcyk7CisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgaW50NjRfdCB0aW1l
c3RhbXAgPSByZXBvcnQtPnRpbWVzdGFtcF91cygpOworICAgIGlmICghbV9zdGF0c0ZpcnN0RGVs
aXZlcmVkVGltZXN0YW1wKQorICAgICAgICBtX3N0YXRzRmlyc3REZWxpdmVyZWRUaW1lc3RhbXAg
PSB0aW1lc3RhbXA7CisKKyAgICBpZiAobV9zdGF0c0xvZ1RpbWVyLnJlcGVhdEludGVydmFsKCkg
IT0gc3RhdHNMb2dJbnRlcnZhbCh0aW1lc3RhbXApKSB7CisgICAgICAgIGNhbGxPbk1haW5UaHJl
YWQoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdGhpcywgdGltZXN0YW1wXSB7Cisg
ICAgICAgICAgICBtX3N0YXRzTG9nVGltZXIuc3RvcCgpOworICAgICAgICAgICAgbV9zdGF0c0xv
Z1RpbWVyLnN0YXJ0UmVwZWF0aW5nKHN0YXRzTG9nSW50ZXJ2YWwodGltZXN0YW1wKSk7CiAgICAg
ICAgIH0pOwogICAgIH0KIAotI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgIC8vIExvZyBz
dGF0cyBvbmNlIGV2ZXJ5IHNlY29uZCBmb3IgdGhlIDMwIHNlY29uZHMsIHRoZW4gZHJvcCB0byBv
bmNlIGV2ZXJ5IDUgc2Vjb25kcy4KICAgICBmb3IgKGF1dG8gaXRlcmF0b3IgPSByZXBvcnQtPmJl
Z2luKCk7IGl0ZXJhdG9yICE9IHJlcG9ydC0+ZW5kKCk7ICsraXRlcmF0b3IpIHsKICAgICAgICAg
aWYgKGl0ZXJhdG9yLT50eXBlKCkgPT0gd2VicnRjOjpSVENDb2RlY1N0YXRzOjprVHlwZSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBSRUxFQVNFX0xPRyhXZWJSVEMsICJXZWJSVEMg
c3RhdHMgZm9yICVwOiAle3B1YmxpY31zIiwgdGhpcywgaXRlcmF0b3ItPlRvU3RyaW5nKCkuY19z
dHIoKSk7CisKKyAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiV2ViUlRDIHN0YXRz
IGZvciA6IiwgKml0ZXJhdG9yKTsKICAgICB9CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShyZXBv
cnQpOwpAQCAtMTA5MCw3ICsxMDk3LDcgQEAgdm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojpz
dGFydExvZ2dpbgogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGlmIChtX3N0YXRzTG9n
VGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV9zdGF0c0xvZ1RpbWVyLnN0b3AoKTsKLSAgICBt
X3N0YXRzTG9nVGltZXIuc3RhcnRSZXBlYXRpbmcoMl9zKTsKKyAgICBtX3N0YXRzTG9nVGltZXIu
c3RhcnRSZXBlYXRpbmcoc3RhdHNMb2dJbnRlcnZhbCgwKSk7CiAjZW5kaWYKIH0KIApAQCAtMTA5
OSw2ICsxMTA2LDI0IEBAIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6c3RvcExvZ2dpbmcK
ICAgICBtX3N0YXRzTG9nVGltZXIuc3RvcCgpOwogfQogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECitXVEZMb2dDaGFubmVsJiBMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojpsb2dDaGFubmVsKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gTG9nV2ViUlRDOworfQorCitTZWNvbmRzIExpYldlYlJUQ01l
ZGlhRW5kcG9pbnQ6OnN0YXRzTG9nSW50ZXJ2YWwoaW50NjRfdCByZXBvcnRUaW1lc3RhbXApIGNv
bnN0Cit7CisgICAgaWYgKGxvZ2dlcigpLndpbGxMb2cobG9nQ2hhbm5lbCgpLCBXVEZMb2dMZXZl
bEluZm8pKQorICAgICAgICByZXR1cm4gMl9zOworCisgICAgaWYgKHJlcG9ydFRpbWVzdGFtcCAt
IG1fc3RhdHNGaXJzdERlbGl2ZXJlZFRpbWVzdGFtcCA+IDE1MDAwMDAwKQorICAgICAgICByZXR1
cm4gMTBfczsKKworICAgIHJldHVybiA0X3M7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gVVNFKExJQldFQlJUQykKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmgJKHJldmlzaW9uIDIyMjI2NykKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9p
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTIgKzMyLDEyIEBACiAjaW5jbHVkZSAiUmVhbHRp
bWVPdXRnb2luZ0F1ZGlvU291cmNlLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVPdXRnb2luZ1ZpZGVv
U291cmNlLmgiCiAjaW5jbHVkZSA8VGltZXIuaD4KLQorI2luY2x1ZGUgPHBhbC9Mb2dnZXIuaD4K
KyNpbmNsdWRlIDxwYWwvTG9nZ2VySGVscGVyLmg+CiAjaW5jbHVkZSA8d2VicnRjL2FwaS9qc2Vw
Lmg+CiAjaW5jbHVkZSA8d2VicnRjL2FwaS9wZWVyY29ubmVjdGlvbmludGVyZmFjZS5oPgogI2lu
Y2x1ZGUgPHdlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbmZhY3RvcnkuaD4KICNpbmNsdWRlIDx3ZWJy
dGMvcGMvcnRjc3RhdHNjb2xsZWN0b3IuaD4KLQogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVm
Q291bnRlZC5oPgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKQEAgLTU3LDcgKzU3LDE0IEBAIGNsYXNz
IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDsKIGNsYXNzIE1lZGlhU3RyZWFtVHJhY2s7
CiBjbGFzcyBSVENTZXNzaW9uRGVzY3JpcHRpb247CiAKLWNsYXNzIExpYldlYlJUQ01lZGlhRW5k
cG9pbnQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TGliV2ViUlRDTWVkaWFFbmRwb2lu
dD4sIHByaXZhdGUgd2VicnRjOjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyLCBwcml2YXRlIHdlYnJ0
Yzo6UlRDU3RhdHNDb2xsZWN0b3JDYWxsYmFjayB7CitjbGFzcyBMaWJXZWJSVENNZWRpYUVuZHBv
aW50CisgICAgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TGliV2ViUlRDTWVkaWFFbmRw
b2ludD4KKyAgICAsIHByaXZhdGUgd2VicnRjOjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyCisgICAg
LCBwcml2YXRlIHdlYnJ0Yzo6UlRDU3RhdHNDb2xsZWN0b3JDYWxsYmFjaworI2lmICFSRUxFQVNF
X0xPR19ESVNBQkxFRAorICAgICwgcHVibGljIFBBTDo6TG9nZ2VySGVscGVyCisjZW5kaWYKK3sK
IHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPExpYldlYlJUQ01lZGlhRW5kcG9pbnQ+IGNyZWF0ZShM
aWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQmIHBlZXJDb25uZWN0aW9uLCBMaWJXZWJSVENQ
cm92aWRlciYgY2xpZW50KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IExpYldlYlJUQ01lZGlhRW5k
cG9pbnQocGVlckNvbm5lY3Rpb24sIGNsaWVudCkpOyB9CiAgICAgdmlydHVhbCB+TGliV2ViUlRD
TWVkaWFFbmRwb2ludCgpIHsgfQpAQCAtMTI2LDYgKzEzMywxNSBAQCBwcml2YXRlOgogICAgIGJv
b2wgc2hvdWxkT2ZmZXJBbGxvd1RvUmVjZWl2ZUF1ZGlvKCkgY29uc3Q7CiAgICAgYm9vbCBzaG91
bGRPZmZlckFsbG93VG9SZWNlaXZlVmlkZW8oKSBjb25zdDsKIAorI2lmICFSRUxFQVNFX0xPR19E
SVNBQkxFRAorICAgIGNvbnN0IFBBTDo6TG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX2xvZ2dlci5nZXQoKTsgfQorICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7IH0KKyAgICBjb25zdCBjaGFyKiBs
b2dDbGFzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiTGliV2ViUlRDTWVkaWFFbmRwb2lu
dCI7IH0KKyAgICBXVEZMb2dDaGFubmVsJiBsb2dDaGFubmVsKCkgY29uc3QgZmluYWw7CisKKyAg
ICBTZWNvbmRzIHN0YXRzTG9nSW50ZXJ2YWwoaW50NjRfdCkgY29uc3Q7CisjZW5kaWYKKwogICAg
IGNsYXNzIENyZWF0ZVNlc3Npb25EZXNjcmlwdGlvbk9ic2VydmVyIGZpbmFsIDogcHVibGljIHdl
YnJ0Yzo6Q3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIgewogICAgIHB1YmxpYzoKICAg
ICAgICAgZXhwbGljaXQgQ3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIoTGliV2ViUlRD
TWVkaWFFbmRwb2ludCAmZW5kcG9pbnQpIDogbV9lbmRwb2ludChlbmRwb2ludCkgeyB9CkBAIC0x
OTQsOSArMjEwLDI5IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1faXNJbml0aWF0b3IgeyBmYWxz
ZSB9OwogICAgIFRpbWVyIG1fc3RhdHNMb2dUaW1lcjsKLSAgICBpbnQ2NF90IG1fc3RhdHNUaW1l
c3RhbXAgeyAwIH07CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBpbnQ2NF90IG1f
c3RhdHNGaXJzdERlbGl2ZXJlZFRpbWVzdGFtcCB7IDAgfTsKKyAgICBSZWY8Y29uc3QgUEFMOjpM
b2dnZXI+IG1fbG9nZ2VyOworICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllcjsKKyNlbmRp
ZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCituYW1lc3BhY2UgUEFMIHsKKwordGVt
cGxhdGU8dHlwZW5hbWUgVHlwZT4KK3N0cnVjdCBMb2dBcmd1bWVudDsKKwordGVtcGxhdGUgPD4K
K3N0cnVjdCBMb2dBcmd1bWVudDx3ZWJydGM6OlJUQ1N0YXRzPiB7CisgICAgc3RhdGljIFN0cmlu
ZyB0b1N0cmluZyhjb25zdCB3ZWJydGM6OlJUQ1N0YXRzJiBpdGVyYXRvcikKKyAgICB7CisgICAg
ICAgIHJldHVybiBXVEY6OlN0cmluZyhpdGVyYXRvci5Ub1N0cmluZygpLmNfc3RyKCkpOworICAg
IH0KK307CisKK307IC8vIG5hbWVzcGFjZSBQQUwKKwogI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENJY2VDb25uZWN0
aW9uU3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SVENJY2VDb25uZWN0aW9uU3RhdGUuaAkocmV2aXNpb24gMjIyMjY3KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDSWNlQ29ubmVjdGlvblN0YXRlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDIzIEBAIGVudW0gY2xhc3MgUlRDSWNlQ29ubmVjdGlv
blN0YXRlIHsKICAgICBDbG9zZWQKIH07CiAKK1N0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0
cmluZyhSVENJY2VDb25uZWN0aW9uU3RhdGUpOyAvLyBpbiBKU0NSVENJY2VDb25uZWN0aW9uU3Rh
dGUuY3BwCisKIH07IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK25hbWVzcGFjZSBQQUwgeworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgorc3RydWN0IExvZ0FyZ3VtZW50OworCit0ZW1wbGF0ZSA8
Pgorc3RydWN0IExvZ0FyZ3VtZW50PFdlYkNvcmU6OlJUQ0ljZUNvbm5lY3Rpb25TdGF0ZT4gewor
ICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgV2ViQ29yZTo6UlRDSWNlQ29ubmVjdGlv
blN0YXRlIHN0YXRlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNvbnZlcnRFbnVtZXJhdGlvblRv
U3RyaW5nKHN0YXRlKTsKKyAgICB9Cit9OworCit9OyAvLyBuYW1lc3BhY2UgUEFMCisKICNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDSWNlR2F0aGVy
aW5nU3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SVENJY2VHYXRoZXJpbmdTdGF0ZS5oCShyZXZpc2lvbiAyMjIyNjcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENJY2VHYXRoZXJpbmdTdGF0ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBACiAKICNpZiBFTkFCTEUoV0VCX1JUQykKIAorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVu
dW0gY2xhc3MgUlRDSWNlR2F0aGVyaW5nU3RhdGUgewpAQCAtMzQsNiArMzYsMjMgQEAgZW51bSBj
bGFzcyBSVENJY2VHYXRoZXJpbmdTdGF0ZSB7CiAgICAgQ29tcGxldGUKIH07CiAKK1N0cmluZyBj
b252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhSVENJY2VHYXRoZXJpbmdTdGF0ZSk7IC8vIGluIEpT
Q1JUQ0ljZUdhdGhlcmluZ1N0YXRlLmNwcAorCiB9OyAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCitu
YW1lc3BhY2UgUEFMIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KK3N0cnVjdCBMb2dBcmd1
bWVudDsKKwordGVtcGxhdGUgPD4KK3N0cnVjdCBMb2dBcmd1bWVudDxXZWJDb3JlOjpSVENJY2VH
YXRoZXJpbmdTdGF0ZT4geworICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgV2ViQ29y
ZTo6UlRDSWNlR2F0aGVyaW5nU3RhdGUgc3RhdGUpCisgICAgeworICAgICAgICByZXR1cm4gY29u
dmVydEVudW1lcmF0aW9uVG9TdHJpbmcoc3RhdGUpOworICAgIH0KK307CisKK307IC8vIG5hbWVz
cGFjZSBQQUwKKwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SVENQZWVyQ29ubmVjdGlvblN0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25TdGF0ZS5oCShyZXZpc2lv
biAyMjIyNjcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVy
Q29ubmVjdGlvblN0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDIzIEBAIGVudW0g
Y2xhc3MgUlRDUGVlckNvbm5lY3Rpb25TdGF0ZSB7CiAgICAgQ2xvc2VkCiB9OwogCitTdHJpbmcg
Y29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoUlRDUGVlckNvbm5lY3Rpb25TdGF0ZSk7IC8vIGlu
IEpTQ1JUQ1BlZXJDb25uZWN0aW9uU3RhdGUuaAorCiB9OyAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CituYW1lc3BhY2UgUEFMIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KK3N0cnVjdCBMb2dB
cmd1bWVudDsKKwordGVtcGxhdGUgPD4KK3N0cnVjdCBMb2dBcmd1bWVudDxXZWJDb3JlOjpSVENQ
ZWVyQ29ubmVjdGlvblN0YXRlPiB7CisgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBX
ZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvblN0YXRlIHN0YXRlKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKHN0YXRlKTsKKyAgICB9Cit9OworCit9OyAv
LyBuYW1lc3BhY2UgUEFMCisKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUlRDU2lnbmFsaW5nU3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENTaWduYWxpbmdTdGF0ZS5oCShyZXZpc2lvbiAy
MjIyNjcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENTaWduYWxp
bmdTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiwyMyBAQCBlbnVtIGNsYXNzIFJU
Q1NpZ25hbGluZ1N0YXRlIHsKICAgICBIYXZlUmVtb3RlUHJhbnN3ZXIsCiB9OwogCitTdHJpbmcg
Y29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoUlRDU2lnbmFsaW5nU3RhdGUpOyAvLyBpbiBKU0NS
VENTaWduYWxpbmdTdGF0ZS5jcHAKKwogfTsgLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorbmFtZXNw
YWNlIFBBTCB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFR5cGU+CitzdHJ1Y3QgTG9nQXJndW1lbnQ7
CisKK3RlbXBsYXRlIDw+CitzdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6UlRDU2lnbmFsaW5n
U3RhdGU+IHsKKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6OlJUQ1Np
Z25hbGluZ1N0YXRlIHN0YXRlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNvbnZlcnRFbnVtZXJh
dGlvblRvU3RyaW5nKHN0YXRlKTsKKyAgICB9Cit9OworCit9OyAvLyBuYW1lc3BhY2UgUEFMCisK
ICNlbmRpZgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>