<?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>93964</bug_id>
          
          <creation_ts>2012-08-14 07:02:45 -0700</creation_ts>
          <short_desc>[EFL][WK2] Refactoring: start using WKEinaSharedString in ewk_ classes</short_desc>
          <delta_ts>2012-08-15 06:50:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mikhail Pozdnyakov">mikhail.pozdnyakov</reporter>
          <assigned_to name="Mikhail Pozdnyakov">mikhail.pozdnyakov</assigned_to>
          <cc>cdumez</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kenneth</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>694924</commentid>
    <comment_count>0</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-08-14 07:02:45 -0700</bug_when>
    <thetext>WKEinaSharedString in shall be used in ewk_ classes rather than straight C API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695918</commentid>
    <comment_count>1</comment_count>
      <attachid>158548</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-08-15 05:22:36 -0700</bug_when>
    <thetext>Created attachment 158548
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695922</commentid>
    <comment_count>2</comment_count>
      <attachid>158548</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-08-15 05:30:41 -0700</bug_when>
    <thetext>Comment on attachment 158548
patch

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

&gt; Source/WebKit2/UIProcess/API/cpp/efl/WKEinaSharedString.cpp:115
&gt; +    if (!str)
&gt; +        return !m_string;
&gt; +
&gt; +    if (!m_string)
&gt; +        return false;
&gt; +
&gt; +    if (length() != static_cast&lt;size_t&gt;(strlen(str)))
&gt; +        return false;
&gt; +
&gt; +    return !strcmp(m_string, str);

Why is all of this faster than just calling strcmp. Isnt it doing similar internally more optimized?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695924</commentid>
    <comment_count>3</comment_count>
      <attachid>158548</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-08-15 05:38:02 -0700</bug_when>
    <thetext>Comment on attachment 158548
patch

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:770
&gt; +    const char* callBackArgument = static_cast&lt;const char*&gt;(priv-&gt;uri);

I think we just call it callback and not CallBack. But please check

&gt; Source/WebKit2/UIProcess/API/efl/ewk_web_error.cpp:102
&gt;  const char* ewk_web_error_url_get(const Ewk_Web_Error* error)
&gt;  {
&gt; -    EWK_WEB_ERROR_WK_GET_OR_RETURN(error, wkError, 0);
&gt; -
&gt; -    WKRetainPtr&lt;WKURLRef&gt; wkUrl(AdoptWK, WKErrorCopyFailingURL(wkError));
&gt; -    Ewk_Web_Error* ewkError = const_cast&lt;Ewk_Web_Error*&gt;(error);
&gt; -    eina_stringshare_replace(&amp;ewkError-&gt;url, toImpl(wkUrl.get())-&gt;string().utf8().data());
&gt; +    EINA_SAFETY_ON_NULL_RETURN_VAL(error, 0);
&gt;  
&gt;      return error-&gt;url;
&gt;  }

There are API tests testing these things?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_web_resource.cpp:40
&gt;      _Ewk_Web_Resource(const char* _url, bool _isMainResource)
&gt;          : __ref(1)
&gt; -         , url(eina_stringshare_add(_url))
&gt; +         , url(_url)

I think it is OK to use url both places and have url(url). I am pretty sure that works in C++</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695930</commentid>
    <comment_count>4</comment_count>
      <attachid>158548</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-08-15 05:48:46 -0700</bug_when>
    <thetext>Comment on attachment 158548
patch

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

&gt; Source/WebKit2/UIProcess/API/cpp/efl/WKEinaSharedString.cpp:106
&gt; +    if (!str)

if (!str || !m_string)
    return str == m_string;

&gt; Source/WebKit2/UIProcess/API/cpp/efl/WKEinaSharedString.cpp:109
&gt; +    if (!m_string)

Not needed anymore

&gt; Source/WebKit2/UIProcess/API/cpp/efl/WKEinaSharedString.cpp:112
&gt; +    if (length() != static_cast&lt;size_t&gt;(strlen(str)))

I don&apos;t think this is needed. This does not seem faster since it needs to iterate.

&gt;&gt; Source/WebKit2/UIProcess/API/cpp/efl/WKEinaSharedString.cpp:115
&gt;&gt; +    return !strcmp(m_string, str);
&gt; 
&gt; Why is all of this faster than just calling strcmp. Isnt it doing similar internally more optimized?

I think we still need the NULL case check before strcmp(), right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695931</commentid>
    <comment_count>5</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-08-15 05:52:30 -0700</bug_when>
    <thetext>
&gt; I think we still need the NULL case check before strcmp(), right?

It is supposed to work on null terminated strings, so I am not sure. At least it is worth checking the implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695934</commentid>
    <comment_count>6</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-08-15 05:59:49 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; I think we still need the NULL case check before strcmp(), right?
&gt; 
&gt; It is supposed to work on null terminated strings, so I am not sure. At least it is worth checking the implementation.

http://sourceware.org/git/?p=glibc.git;a=blob;f=string/strcmp.c;

There is no checking for NULL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695939</commentid>
    <comment_count>7</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-08-15 06:03:43 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 158548 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=158548&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:770
&gt; &gt; +    const char* callBackArgument = static_cast&lt;const char*&gt;(priv-&gt;uri);
&gt; 
&gt; I think we just call it callback and not CallBack. But please check
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_web_error.cpp:102
&gt; &gt;  const char* ewk_web_error_url_get(const Ewk_Web_Error* error)
&gt; &gt;  {
&gt; &gt; -    EWK_WEB_ERROR_WK_GET_OR_RETURN(error, wkError, 0);
&gt; &gt; -
&gt; &gt; -    WKRetainPtr&lt;WKURLRef&gt; wkUrl(AdoptWK, WKErrorCopyFailingURL(wkError));
&gt; &gt; -    Ewk_Web_Error* ewkError = const_cast&lt;Ewk_Web_Error*&gt;(error);
&gt; &gt; -    eina_stringshare_replace(&amp;ewkError-&gt;url, toImpl(wkUrl.get())-&gt;string().utf8().data());
&gt; &gt; +    EINA_SAFETY_ON_NULL_RETURN_VAL(error, 0);
&gt; &gt;  
&gt; &gt;      return error-&gt;url;
&gt; &gt;  }
&gt; 
&gt; There are API tests testing these things?
Not explicitly, but it is used in /Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_download_job.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695942</commentid>
    <comment_count>8</comment_count>
      <attachid>158555</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-08-15 06:06:33 -0700</bug_when>
    <thetext>Created attachment 158555
patch v2

Kenneth, Chris, thanks for review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695967</commentid>
    <comment_count>9</comment_count>
      <attachid>158555</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-15 06:50:30 -0700</bug_when>
    <thetext>Comment on attachment 158555
patch v2

Clearing flags on attachment: 158555

Committed r125671: &lt;http://trac.webkit.org/changeset/125671&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695968</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-15 06:50:35 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158548</attachid>
            <date>2012-08-15 05:22:36 -0700</date>
            <delta_ts>2012-08-15 06:06:33 -0700</delta_ts>
            <desc>patch</desc>
            <filename>bug93964</filename>
            <type>text/plain</type>
            <size>29688</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IDU1NzNkYTdiNTI3MjI5OTI4MjVmYWZkNzAyZTRiMzRlZTAxZjczODcKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
V2VkIEF1ZyAxNSAxNToyMDo0NCAyMDEyICswMzAwCgogICAgYnVnOTM5NjQKCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggOWEyZGYxZC4uY2E5N2M3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDEyLTA4
LTE1ICBNaWtoYWlsIFBvemRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgor
CisgICAgICAgIFtFRkxdW1dLMl0gUmVmYWN0b3Jpbmc6IHN0YXJ0IHVzaW5nIFdLRWluYVNoYXJl
ZFN0cmluZyBpbiBld2tfIGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTkzOTY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgU3RhcnRlZCB1c2luZyBXS0VpbmFTaGFyZWRTdHJpbmcgd2hlcmUgaXQg
aXMgYWR2aXNhYmxlLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9jcHAvZWZsL1dLRWluYVNo
YXJlZFN0cmluZy5jcHA6CisgICAgICAgIChXS0VpbmFTaGFyZWRTdHJpbmc6Om9wZXJhdG9yPT0p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvY3BwL2VmbC9XS0VpbmFTaGFyZWRTdHJpbmcuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfZG93bmxvYWRfam9iLmNwcDoKKyAgICAg
ICAgKF9Fd2tfRG93bmxvYWRfSm9iKToKKyAgICAgICAgKF9Fd2tfRG93bmxvYWRfSm9iOjpfRXdr
X0Rvd25sb2FkX0pvYik6CisgICAgICAgIChfRXdrX0Rvd25sb2FkX0pvYjo6fl9Fd2tfRG93bmxv
YWRfSm9iKToKKyAgICAgICAgKGV3a19kb3dubG9hZF9qb2JfZGVzdGluYXRpb25fc2V0KToKKyAg
ICAgICAgKGV3a19kb3dubG9hZF9qb2Jfc3VnZ2VzdGVkX2ZpbGVuYW1lX3NldCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudC5jcHA6CisgICAgICAgIChfRXdrX0ludGVu
dCk6CisgICAgICAgIChfRXdrX0ludGVudDo6X0V3a19JbnRlbnQpOgorICAgICAgICAoX0V3a19J
bnRlbnQ6On5fRXdrX0ludGVudCk6CisgICAgICAgIChld2tfaW50ZW50X2FjdGlvbl9nZXQpOgor
ICAgICAgICAoZXdrX2ludGVudF90eXBlX2dldCk6CisgICAgICAgIChld2tfaW50ZW50X3NlcnZp
Y2VfZ2V0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfaW50ZW50X3NlcnZpY2Uu
Y3BwOgorICAgICAgICAoX0V3a19JbnRlbnRfU2VydmljZSk6CisgICAgICAgIChfRXdrX0ludGVu
dF9TZXJ2aWNlOjpfRXdrX0ludGVudF9TZXJ2aWNlKToKKyAgICAgICAgKF9Fd2tfSW50ZW50X1Nl
cnZpY2U6On5fRXdrX0ludGVudF9TZXJ2aWNlKToKKyAgICAgICAgKGV3a19pbnRlbnRfc2Vydmlj
ZV9hY3Rpb25fZ2V0KToKKyAgICAgICAgKGV3a19pbnRlbnRfc2VydmljZV90eXBlX2dldCk6Cisg
ICAgICAgIChld2tfaW50ZW50X3NlcnZpY2VfaHJlZl9nZXQpOgorICAgICAgICAoZXdrX2ludGVu
dF9zZXJ2aWNlX3RpdGxlX2dldCk6CisgICAgICAgIChld2tfaW50ZW50X3NlcnZpY2VfZGlzcG9z
aXRpb25fZ2V0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdhdGlvbl9w
b2xpY3lfZGVjaXNpb24uY3BwOgorICAgICAgICAoX0V3a19OYXZpZ2F0aW9uX1BvbGljeV9EZWNp
c2lvbik6CisgICAgICAgIChfRXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9uOjpfRXdrX05h
dmlnYXRpb25fUG9saWN5X0RlY2lzaW9uKToKKyAgICAgICAgKF9Fd2tfTmF2aWdhdGlvbl9Qb2xp
Y3lfRGVjaXNpb246On5fRXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9uKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3JlcXVlc3QuY3BwOgorICAgICAgICAoX0V3a19V
cmxfUmVxdWVzdCk6CisgICAgICAgIChfRXdrX1VybF9SZXF1ZXN0OjpfRXdrX1VybF9SZXF1ZXN0
KToKKyAgICAgICAgKF9Fd2tfVXJsX1JlcXVlc3Q6On5fRXdrX1VybF9SZXF1ZXN0KToKKyAgICAg
ICAgKGV3a191cmxfcmVxdWVzdF91cmxfZ2V0KToKKyAgICAgICAgKGV3a19yZXF1ZXN0X2Nvb2tp
ZXNfZmlyc3RfcGFydHlfZ2V0KToKKyAgICAgICAgKGV3a191cmxfcmVxdWVzdF9odHRwX21ldGhv
ZF9nZXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfcmVzcG9uc2UuY3Bw
OgorICAgICAgICAoX0V3a19VcmxfUmVzcG9uc2UpOgorICAgICAgICAoX0V3a19VcmxfUmVzcG9u
c2U6Ol9Fd2tfVXJsX1Jlc3BvbnNlKToKKyAgICAgICAgKF9Fd2tfVXJsX1Jlc3BvbnNlOjp+X0V3
a19VcmxfUmVzcG9uc2UpOgorICAgICAgICAoZXdrX3VybF9yZXNwb25zZV91cmxfZ2V0KToKKyAg
ICAgICAgKGV3a191cmxfcmVzcG9uc2VfbWltZV90eXBlX2dldCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwOgorICAgICAgICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0
YSk6CisgICAgICAgIChfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhOjpfRXdrX1ZpZXdfUHJpdmF0ZV9E
YXRhKToKKyAgICAgICAgKF9Fd2tfVmlld19Qcml2YXRlX0RhdGE6On5fRXdrX1ZpZXdfUHJpdmF0
ZV9EYXRhKToKKyAgICAgICAgKGV3a192aWV3X3VyaV91cGRhdGUpOgorICAgICAgICAoZXdrX3Zp
ZXdfdGl0bGVfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3RoZW1lX3NldCk6CisgICAgICAgIChl
d2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2N1c3RvbV9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdf
c2V0dGluZ19lbmNvZGluZ19jdXN0b21fc2V0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfd2ViX2Vycm9yLmNwcDoKKyAgICAgICAgKF9Fd2tfV2ViX0Vycm9yKToKKyAgICAgICAg
KF9Fd2tfV2ViX0Vycm9yOjpfRXdrX1dlYl9FcnJvcik6CisgICAgICAgIChfRXdrX1dlYl9FcnJv
cjo6fl9Fd2tfV2ViX0Vycm9yKToKKyAgICAgICAgKGV3a193ZWJfZXJyb3JfdXJsX2dldCk6Cisg
ICAgICAgIChld2tfd2ViX2Vycm9yX2Rlc2NyaXB0aW9uX2dldCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3dlYl9yZXNvdXJjZS5jcHA6CisgICAgICAgIChfRXdrX1dlYl9SZXNv
dXJjZSk6CisgICAgICAgIChfRXdrX1dlYl9SZXNvdXJjZTo6X0V3a19XZWJfUmVzb3VyY2UpOgor
ICAgICAgICAoX0V3a19XZWJfUmVzb3VyY2U6On5fRXdrX1dlYl9SZXNvdXJjZSk6CisKIDIwMTIt
MDgtMTQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBEZWxldGUg
RnJhbWU6OmRvbVdpbmRvdygpIGFuZCBGcmFtZTo6ZXhpc3RpbmdET01XaW5kb3coKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9jcHAvZWZsL1dLRWluYVNoYXJlZFN0
cmluZy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2NwcC9lZmwvV0tFaW5hU2hh
cmVkU3RyaW5nLmNwcAppbmRleCBkMjY4MTIwLi5hYzcwMjg3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2NwcC9lZmwvV0tFaW5hU2hhcmVkU3RyaW5nLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2NwcC9lZmwvV0tFaW5hU2hhcmVkU3RyaW5n
LmNwcApAQCAtMTAwLDMgKzEwMCwxNyBAQCBXS0VpbmFTaGFyZWRTdHJpbmcmIFdLRWluYVNoYXJl
ZFN0cmluZzo6b3BlcmF0b3I9KGNvbnN0IGNoYXIqIHN0cikKICAgICBlaW5hX3N0cmluZ3NoYXJl
X3JlcGxhY2UoJm1fc3RyaW5nLCBzdHIpOwogICAgIHJldHVybiAqdGhpczsKIH0KKworYm9vbCBX
S0VpbmFTaGFyZWRTdHJpbmc6Om9wZXJhdG9yPT0oY29uc3QgY2hhciogc3RyKSBjb25zdAorewor
ICAgIGlmICghc3RyKQorICAgICAgICByZXR1cm4gIW1fc3RyaW5nOworCisgICAgaWYgKCFtX3N0
cmluZykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGxlbmd0aCgpICE9IHN0YXRp
Y19jYXN0PHNpemVfdD4oc3RybGVuKHN0cikpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICByZXR1cm4gIXN0cmNtcChtX3N0cmluZywgc3RyKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL2VmbC9XS0VpbmFTaGFyZWRTdHJpbmcuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL2VmbC9XS0VpbmFTaGFyZWRTdHJpbmcuaAppbmRl
eCA4M2Y2NjE0Li42OGQ3NmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2NwcC9lZmwvV0tFaW5hU2hhcmVkU3RyaW5nLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9jcHAvZWZsL1dLRWluYVNoYXJlZFN0cmluZy5oCkBAIC01Miw2ICs1Miw5IEBA
IHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgb3BlcmF0b3I9PShjb25zdCBXS0VpbmFT
aGFyZWRTdHJpbmcmIG90aGVyKSBjb25zdCB7IHJldHVybiB0aGlzLT5tX3N0cmluZyA9PSBvdGhl
ci5tX3N0cmluZzsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFdL
RWluYVNoYXJlZFN0cmluZyYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIp
OyB9CiAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgY2hhciogc3RyKSBjb25zdDsKKyAgICBB
TFdBWVNfSU5MSU5FIGJvb2wgb3BlcmF0b3IhPShjb25zdCBjaGFyKiBzdHIpIGNvbnN0IHsgcmV0
dXJuICEoKnRoaXMgPT0gc3RyKTsgfQorCiAgICAgQUxXQVlTX0lOTElORSBvcGVyYXRvciBjb25z
dCBjaGFyKiAoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQogCiAgICAgQUxXQVlTX0lOTElO
RSBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX3N0cmluZzsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Rvd25sb2FkX2pvYi5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZG93bmxvYWRfam9iLmNwcAppbmRl
eCBjNDE2ODEwLi5hMjdhYmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfZG93bmxvYWRfam9iLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfZG93bmxvYWRfam9iLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5j
bHVkZSAiRG93bmxvYWRQcm94eS5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUg
IldLRWluYVNoYXJlZFN0cmluZy5oIgogI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCiAjaW5jbHVk
ZSAiV2ViVVJMUmVxdWVzdC5oIgogI2luY2x1ZGUgImV3a19kb3dubG9hZF9qb2JfcHJpdmF0ZS5o
IgpAQCAtNTAsOCArNTEsOCBAQCBzdHJ1Y3QgX0V3a19Eb3dubG9hZF9Kb2IgewogICAgIGRvdWJs
ZSBzdGFydFRpbWU7CiAgICAgZG91YmxlIGVuZFRpbWU7CiAgICAgdWludDY0X3QgZG93bmxvYWRl
ZDsgLyoqPCBsZW5ndGggYWxyZWFkeSBkb3dubG9hZGVkICovCi0gICAgY29uc3QgY2hhciogZGVz
dGluYXRpb247Ci0gICAgY29uc3QgY2hhciogc3VnZ2VzdGVkRmlsZW5hbWU7CisgICAgV0tFaW5h
U2hhcmVkU3RyaW5nIGRlc3RpbmF0aW9uOworICAgIFdLRWluYVNoYXJlZFN0cmluZyBzdWdnZXN0
ZWRGaWxlbmFtZTsKIAogICAgIF9Fd2tfRG93bmxvYWRfSm9iKERvd25sb2FkUHJveHkqIGRvd25s
b2FkLCBFdmFzX09iamVjdCogZXdrVmlldykKICAgICAgICAgOiBfX3JlZigxKQpAQCAtNjMsOCAr
NjQsNiBAQCBzdHJ1Y3QgX0V3a19Eb3dubG9hZF9Kb2IgewogICAgICAgICAsIHN0YXJ0VGltZSgt
MSkKICAgICAgICAgLCBlbmRUaW1lKC0xKQogICAgICAgICAsIGRvd25sb2FkZWQoMCkKLSAgICAg
ICAgLCBkZXN0aW5hdGlvbigwKQotICAgICAgICAsIHN1Z2dlc3RlZEZpbGVuYW1lKDApCiAgICAg
eyB9CiAKICAgICB+X0V3a19Eb3dubG9hZF9Kb2IoKQpAQCAtNzQsOCArNzMsNiBAQCBzdHJ1Y3Qg
X0V3a19Eb3dubG9hZF9Kb2IgewogICAgICAgICAgICAgZXdrX3VybF9yZXF1ZXN0X3VucmVmKHJl
cXVlc3QpOwogICAgICAgICBpZiAocmVzcG9uc2UpCiAgICAgICAgICAgICBld2tfdXJsX3Jlc3Bv
bnNlX3VucmVmKHJlc3BvbnNlKTsKLSAgICAgICAgZWluYV9zdHJpbmdzaGFyZV9kZWwoZGVzdGlu
YXRpb24pOwotICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChzdWdnZXN0ZWRGaWxlbmFtZSk7
CiAgICAgfQogfTsKIApAQCAtMTU5LDcgKzE1Niw3IEBAIEVpbmFfQm9vbCBld2tfZG93bmxvYWRf
am9iX2Rlc3RpbmF0aW9uX3NldChFd2tfRG93bmxvYWRfSm9iKiBkb3dubG9hZCwgY29uc3QgY2hh
CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGRvd25sb2FkLCBmYWxzZSk7CiAg
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGRlc3RpbmF0aW9uLCBmYWxzZSk7CiAK
LSAgICBlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJmRvd25sb2FkLT5kZXN0aW5hdGlvbiwgZGVz
dGluYXRpb24pOworICAgIGRvd25sb2FkLT5kZXN0aW5hdGlvbiA9IGRlc3RpbmF0aW9uOwogCiAg
ICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yMzYsNyArMjMzLDcgQEAgdm9pZCBld2tfZG93bmxvYWRf
am9iX3N1Z2dlc3RlZF9maWxlbmFtZV9zZXQoRXdrX0Rvd25sb2FkX0pvYiogZG93bmxvYWQsIGNv
bnN0IGMKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihkb3dubG9hZCk7CiAKLSAg
ICBlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJmRvd25sb2FkLT5zdWdnZXN0ZWRGaWxlbmFtZSwg
c3VnZ2VzdGVkRmlsZW5hbWUpOworICAgIGRvd25sb2FkLT5zdWdnZXN0ZWRGaWxlbmFtZSA9IHN1
Z2dlc3RlZEZpbGVuYW1lOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19pbnRlbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX2ludGVudC5jcHAKaW5kZXggODU2MTc5My4uMDUzYjk0MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudC5jcHAKQEAgLTI5LDYg
KzI5LDcgQEAKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS0FycmF5LmgiCiAj
aW5jbHVkZSAiV0tEaWN0aW9uYXJ5LmgiCisjaW5jbHVkZSAiV0tFaW5hU2hhcmVkU3RyaW5nLmgi
CiAjaW5jbHVkZSAiV0tJbnRlbnREYXRhLmgiCiAjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKICNp
bmNsdWRlICJXS1N0cmluZy5oIgpAQCAtNDcsMjYgKzQ4LDIzIEBAIHN0cnVjdCBfRXdrX0ludGVu
dCB7CiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQogICAgIFdLUmV0YWluUHRyPFdLSW50ZW50RGF0
YVJlZj4gd2tJbnRlbnQ7CiAjZW5kaWYKLSAgICBjb25zdCBjaGFyKiBhY3Rpb247Ci0gICAgY29u
c3QgY2hhciogdHlwZTsKLSAgICBjb25zdCBjaGFyKiBzZXJ2aWNlOworICAgIFdLRWluYVNoYXJl
ZFN0cmluZyBhY3Rpb247CisgICAgV0tFaW5hU2hhcmVkU3RyaW5nIHR5cGU7CisgICAgV0tFaW5h
U2hhcmVkU3RyaW5nIHNlcnZpY2U7CiAKICAgICBfRXdrX0ludGVudChXS0ludGVudERhdGFSZWYg
aW50ZW50UmVmKQogICAgICAgICA6IF9fcmVmKDEpCiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQog
ICAgICAgICAsIHdrSW50ZW50KGludGVudFJlZikKKyAgICAgICAgLCBhY3Rpb24oQWRvcHRXSywg
V0tJbnRlbnREYXRhQ29weUFjdGlvbihpbnRlbnRSZWYpKQorICAgICAgICAsIHR5cGUoQWRvcHRX
SywgV0tJbnRlbnREYXRhQ29weVR5cGUoaW50ZW50UmVmKSkKKyAgICAgICAgLCBzZXJ2aWNlKEFk
b3B0V0ssIFdLSW50ZW50RGF0YUNvcHlTZXJ2aWNlKGludGVudFJlZikpCiAjZW5kaWYKLSAgICAg
ICAgLCBhY3Rpb24oMCkKLSAgICAgICAgLCB0eXBlKDApCi0gICAgICAgICwgc2VydmljZSgwKQog
ICAgIHsgfQogCiAgICAgfl9Fd2tfSW50ZW50KCkKICAgICB7CiAgICAgICAgIEFTU0VSVCghX19y
ZWYpOwotICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChhY3Rpb24pOwotICAgICAgICBlaW5h
X3N0cmluZ3NoYXJlX2RlbCh0eXBlKTsKLSAgICAgICAgZWluYV9zdHJpbmdzaGFyZV9kZWwoc2Vy
dmljZSk7CiAgICAgfQogfTsKIApAQCAtMTAzLDQ3ICsxMDEsMjMgQEAgdm9pZCBld2tfaW50ZW50
X3VucmVmKEV3a19JbnRlbnQqIGludGVudCkKIAogY29uc3QgY2hhciogZXdrX2ludGVudF9hY3Rp
b25fZ2V0KGNvbnN0IEV3a19JbnRlbnQqIGludGVudCkKIHsKLSNpZiBFTkFCTEUoV0VCX0lOVEVO
VFMpCi0gICAgRVdLX0lOVEVOVF9XS19HRVRfT1JfUkVUVVJOKGludGVudCwgd2tJbnRlbnQsIDAp
OwotCi0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdrQWN0aW9uKEFkb3B0V0ssIFdLSW50
ZW50RGF0YUNvcHlBY3Rpb24od2tJbnRlbnQpKTsKLSAgICBFd2tfSW50ZW50KiBld2tJbnRlbnQg
PSBjb25zdF9jYXN0PEV3a19JbnRlbnQqPihpbnRlbnQpOwotICAgIGVpbmFfc3RyaW5nc2hhcmVf
cmVwbGFjZSgmZXdrSW50ZW50LT5hY3Rpb24sIHRvSW1wbCh3a0FjdGlvbi5nZXQoKSktPnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChp
bnRlbnQsIDApOwogCiAgICAgcmV0dXJuIGludGVudC0+YWN0aW9uOwotI2Vsc2UKLSAgICByZXR1
cm4gMDsKLSNlbmRpZgogfQogCiBjb25zdCBjaGFyKiBld2tfaW50ZW50X3R5cGVfZ2V0KGNvbnN0
IEV3a19JbnRlbnQqIGludGVudCkKIHsKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgRVdL
X0lOVEVOVF9XS19HRVRfT1JfUkVUVVJOKGludGVudCwgd2tJbnRlbnQsIDApOwotCi0gICAgV0tS
ZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdrVHlwZShBZG9wdFdLLCBXS0ludGVudERhdGFDb3B5VHlw
ZSh3a0ludGVudCkpOwotICAgIEV3a19JbnRlbnQqIGV3a0ludGVudCA9IGNvbnN0X2Nhc3Q8RXdr
X0ludGVudCo+KGludGVudCk7Ci0gICAgZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZld2tJbnRl
bnQtPnR5cGUsIHRvSW1wbCh3a1R5cGUuZ2V0KCkpLT5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
KyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaW50ZW50LCAwKTsKIAogICAgIHJl
dHVybiBpbnRlbnQtPnR5cGU7Ci0jZWxzZQotICAgIHJldHVybiAwOwotI2VuZGlmCiB9CiAKIGNv
bnN0IGNoYXIqIGV3a19pbnRlbnRfc2VydmljZV9nZXQoY29uc3QgRXdrX0ludGVudCogaW50ZW50
KQogewotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSAgICBFV0tfSU5URU5UX1dLX0dFVF9PUl9S
RVRVUk4oaW50ZW50LCB3a0ludGVudCwgMCk7Ci0KLSAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4g
d2tTZXJ2aWNlKEFkb3B0V0ssIFdLSW50ZW50RGF0YUNvcHlTZXJ2aWNlKHdrSW50ZW50KSk7Ci0g
ICAgRXdrX0ludGVudCogZXdrSW50ZW50ID0gY29uc3RfY2FzdDxFd2tfSW50ZW50Kj4oaW50ZW50
KTsKLSAgICBlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJmV3a0ludGVudC0+c2VydmljZSwgdG9J
bXBsKHdrU2VydmljZS5nZXQoKSktPnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChpbnRlbnQsIDApOwogCiAgICAgcmV0dXJuIGludGVu
dC0+c2VydmljZTsKLSNlbHNlCi0gICAgcmV0dXJuIDA7Ci0jZW5kaWYKIH0KIAogRWluYV9MaXN0
KiBld2tfaW50ZW50X3N1Z2dlc3Rpb25zX2dldChjb25zdCBFd2tfSW50ZW50KiBpbnRlbnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfaW50ZW50X3Nl
cnZpY2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudF9z
ZXJ2aWNlLmNwcAppbmRleCAxODQyMmI3Li4xOTIxNTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfaW50ZW50X3NlcnZpY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19pbnRlbnRfc2VydmljZS5jcHAKQEAgLTI4
LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkludGVudFNlcnZpY2VJbmZvLmgiCiAjaW5jbHVkZSAi
V0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tFaW5hU2hhcmVkU3RyaW5nLmgiCiAjaW5jbHVkZSAi
V0tJbnRlbnRTZXJ2aWNlSW5mby5oIgogI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCiAjaW5jbHVk
ZSAiV0tVUkwuaCIKQEAgLTQyLDQ5ICs0MywzMCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0Owog
ICovCiBzdHJ1Y3QgX0V3a19JbnRlbnRfU2VydmljZSB7CiAgICAgdW5zaWduZWQgaW50IF9fcmVm
OyAvKio8IHRoZSByZWZlcmVuY2UgY291bnQgb2YgdGhlIG9iamVjdCAqLwotI2lmIEVOQUJMRShX
RUJfSU5URU5UU19UQUcpCi0gICAgV0tSZXRhaW5QdHI8V0tJbnRlbnRTZXJ2aWNlSW5mb1JlZj4g
d2tTZXJ2aWNlOwotI2VuZGlmCi0gICAgY29uc3QgY2hhciogYWN0aW9uOwotICAgIGNvbnN0IGNo
YXIqIHR5cGU7Ci0gICAgY29uc3QgY2hhciogaHJlZjsKLSAgICBjb25zdCBjaGFyKiB0aXRsZTsK
LSAgICBjb25zdCBjaGFyKiBkaXNwb3NpdGlvbjsKKworICAgIFdLRWluYVNoYXJlZFN0cmluZyBh
Y3Rpb247CisgICAgV0tFaW5hU2hhcmVkU3RyaW5nIHR5cGU7CisgICAgV0tFaW5hU2hhcmVkU3Ry
aW5nIGhyZWY7CisgICAgV0tFaW5hU2hhcmVkU3RyaW5nIHRpdGxlOworICAgIFdLRWluYVNoYXJl
ZFN0cmluZyBkaXNwb3NpdGlvbjsKIAogICAgIF9Fd2tfSW50ZW50X1NlcnZpY2UoV0tJbnRlbnRT
ZXJ2aWNlSW5mb1JlZiBzZXJ2aWNlUmVmKQogICAgICAgICA6IF9fcmVmKDEpCiAjaWYgRU5BQkxF
KFdFQl9JTlRFTlRTX1RBRykKLSAgICAgICAgLCB3a1NlcnZpY2Uoc2VydmljZVJlZikKKyAgICAg
ICAgLCBhY3Rpb24oQWRvcHRXSywgV0tJbnRlbnRTZXJ2aWNlSW5mb0NvcHlBY3Rpb24oc2Vydmlj
ZVJlZikpCisgICAgICAgICwgdHlwZShBZG9wdFdLLCBXS0ludGVudFNlcnZpY2VJbmZvQ29weVR5
cGUoc2VydmljZVJlZikpCisgICAgICAgICwgaHJlZihBZG9wdFdLLCBXS0ludGVudFNlcnZpY2VJ
bmZvQ29weUhyZWYoc2VydmljZVJlZikpCisgICAgICAgICwgdGl0bGUoQWRvcHRXSywgV0tJbnRl
bnRTZXJ2aWNlSW5mb0NvcHlUaXRsZShzZXJ2aWNlUmVmKSkKKyAgICAgICAgLCBkaXNwb3NpdGlv
bihBZG9wdFdLLCBXS0ludGVudFNlcnZpY2VJbmZvQ29weURpc3Bvc2l0aW9uKHNlcnZpY2VSZWYp
KQogI2VuZGlmCi0gICAgICAgICwgYWN0aW9uKDApCi0gICAgICAgICwgdHlwZSgwKQotICAgICAg
ICAsIGhyZWYoMCkKLSAgICAgICAgLCB0aXRsZSgwKQotICAgICAgICAsIGRpc3Bvc2l0aW9uKDAp
CiAgICAgeyB9CiAKICAgICB+X0V3a19JbnRlbnRfU2VydmljZSgpCiAgICAgewogICAgICAgICBB
U1NFUlQoIV9fcmVmKTsKLSAgICAgICAgZWluYV9zdHJpbmdzaGFyZV9kZWwoYWN0aW9uKTsKLSAg
ICAgICAgZWluYV9zdHJpbmdzaGFyZV9kZWwodHlwZSk7Ci0gICAgICAgIGVpbmFfc3RyaW5nc2hh
cmVfZGVsKGhyZWYpOwotICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbCh0aXRsZSk7Ci0gICAg
ICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKGRpc3Bvc2l0aW9uKTsKICAgICB9CiB9OwogCi0jZGVm
aW5lIEVXS19JTlRFTlRfU0VSVklDRV9XS19HRVRfT1JfUkVUVVJOKHNlcnZpY2UsIHdrU2Vydmlj
ZV8sIC4uLikgXAotICAgIGlmICghKHNlcnZpY2UpKSB7IFwKLSAgICAgICAgRUlOQV9MT0dfQ1JJ
VCgic2VydmljZSBpcyBOVUxMLiIpOyBcCi0gICAgICAgIHJldHVybiBfX1ZBX0FSR1NfXzsgXAot
ICAgIH0gXAotICAgIGlmICghKHNlcnZpY2UpLT53a1NlcnZpY2UpIHsgXAotICAgICAgICBFSU5B
X0xPR19DUklUKCJzZXJ2aWNlLT53a1NlcnZpY2UgaXMgTlVMTC4iKTsgXAotICAgICAgICByZXR1
cm4gX19WQV9BUkdTX187IFwKLSAgICB9IFwKLSAgICBXS0ludGVudFNlcnZpY2VJbmZvUmVmIHdr
U2VydmljZV8gPSAoc2VydmljZSktPndrU2VydmljZS5nZXQoKQotCiB2b2lkIGV3a19pbnRlbnRf
c2VydmljZV9yZWYoRXdrX0ludGVudF9TZXJ2aWNlKiBzZXJ2aWNlKQogewogI2lmIEVOQUJMRShX
RUJfSU5URU5UU19UQUcpCkBAIC0xMDcsNzcgKzg5LDM3IEBAIHZvaWQgZXdrX2ludGVudF9zZXJ2
aWNlX3VucmVmKEV3a19JbnRlbnRfU2VydmljZSogc2VydmljZSkKIAogY29uc3QgY2hhciogZXdr
X2ludGVudF9zZXJ2aWNlX2FjdGlvbl9nZXQoY29uc3QgRXdrX0ludGVudF9TZXJ2aWNlKiBzZXJ2
aWNlKQogewotI2lmIEVOQUJMRShXRUJfSU5URU5UU19UQUcpCi0gICAgRVdLX0lOVEVOVF9TRVJW
SUNFX1dLX0dFVF9PUl9SRVRVUk4oc2VydmljZSwgd2tTZXJ2aWNlLCAwKTsKLQotICAgIFdLUmV0
YWluUHRyPFdLU3RyaW5nUmVmPiB3a0FjdGlvbihBZG9wdFdLLCBXS0ludGVudFNlcnZpY2VJbmZv
Q29weUFjdGlvbih3a1NlcnZpY2UpKTsKLSAgICBFd2tfSW50ZW50X1NlcnZpY2UqIGV3a0ludGVu
dFNlcnZpY2UgPSBjb25zdF9jYXN0PEV3a19JbnRlbnRfU2VydmljZSo+KHNlcnZpY2UpOwotICAg
IGVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmZXdrSW50ZW50U2VydmljZS0+YWN0aW9uLCB0b0lt
cGwod2tBY3Rpb24uZ2V0KCkpLT5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2VydmljZSwgMCk7CiAKICAgICByZXR1cm4gc2Vydmlj
ZS0+YWN0aW9uOwotI2Vsc2UKLSAgICByZXR1cm4gMDsKLSNlbmRpZgogfQogCiBjb25zdCBjaGFy
KiBld2tfaW50ZW50X3NlcnZpY2VfdHlwZV9nZXQoY29uc3QgRXdrX0ludGVudF9TZXJ2aWNlKiBz
ZXJ2aWNlKQogewotI2lmIEVOQUJMRShXRUJfSU5URU5UU19UQUcpCi0gICAgRVdLX0lOVEVOVF9T
RVJWSUNFX1dLX0dFVF9PUl9SRVRVUk4oc2VydmljZSwgd2tTZXJ2aWNlLCAwKTsKLQotICAgIFdL
UmV0YWluUHRyPFdLU3RyaW5nUmVmPiB3a1R5cGUoQWRvcHRXSywgV0tJbnRlbnRTZXJ2aWNlSW5m
b0NvcHlUeXBlKHdrU2VydmljZSkpOwotICAgIEV3a19JbnRlbnRfU2VydmljZSogZXdrSW50ZW50
U2VydmljZSA9IGNvbnN0X2Nhc3Q8RXdrX0ludGVudF9TZXJ2aWNlKj4oc2VydmljZSk7Ci0gICAg
ZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZld2tJbnRlbnRTZXJ2aWNlLT50eXBlLCB0b0ltcGwo
d2tUeXBlLmdldCgpKS0+c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKHNlcnZpY2UsIDApOwogCiAgICAgcmV0dXJuIHNlcnZpY2UtPnR5
cGU7Ci0jZWxzZQotICAgIHJldHVybiAwOwotI2VuZGlmCiB9CiAKIGNvbnN0IGNoYXIqIGV3a19p
bnRlbnRfc2VydmljZV9ocmVmX2dldChjb25zdCBFd2tfSW50ZW50X1NlcnZpY2UqIHNlcnZpY2Up
CiB7Ci0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTX1RBRykKLSAgICBFV0tfSU5URU5UX1NFUlZJQ0Vf
V0tfR0VUX09SX1JFVFVSTihzZXJ2aWNlLCB3a1NlcnZpY2UsIDApOwotCi0gICAgV0tSZXRhaW5Q
dHI8V0tVUkxSZWY+IHdrSHJlZihBZG9wdFdLLCBXS0ludGVudFNlcnZpY2VJbmZvQ29weUhyZWYo
d2tTZXJ2aWNlKSk7Ci0gICAgRXdrX0ludGVudF9TZXJ2aWNlKiBld2tJbnRlbnRTZXJ2aWNlID0g
Y29uc3RfY2FzdDxFd2tfSW50ZW50X1NlcnZpY2UqPihzZXJ2aWNlKTsKLSAgICBlaW5hX3N0cmlu
Z3NoYXJlX3JlcGxhY2UoJmV3a0ludGVudFNlcnZpY2UtPmhyZWYsIHRvSW1wbCh3a0hyZWYuZ2V0
KCkpLT5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTl9WQUwoc2VydmljZSwgMCk7CiAKICAgICByZXR1cm4gc2VydmljZS0+aHJlZjsKLSNlbHNl
Ci0gICAgcmV0dXJuIDA7Ci0jZW5kaWYKIH0KIAogY29uc3QgY2hhciogZXdrX2ludGVudF9zZXJ2
aWNlX3RpdGxlX2dldChjb25zdCBFd2tfSW50ZW50X1NlcnZpY2UqIHNlcnZpY2UpCiB7Ci0jaWYg
RU5BQkxFKFdFQl9JTlRFTlRTX1RBRykKLSAgICBFV0tfSU5URU5UX1NFUlZJQ0VfV0tfR0VUX09S
X1JFVFVSTihzZXJ2aWNlLCB3a1NlcnZpY2UsIDApOwotCi0gICAgV0tSZXRhaW5QdHI8V0tTdHJp
bmdSZWY+IHdrVGl0bGUoQWRvcHRXSywgV0tJbnRlbnRTZXJ2aWNlSW5mb0NvcHlUaXRsZSh3a1Nl
cnZpY2UpKTsKLSAgICBFd2tfSW50ZW50X1NlcnZpY2UqIGV3a0ludGVudFNlcnZpY2UgPSBjb25z
dF9jYXN0PEV3a19JbnRlbnRfU2VydmljZSo+KHNlcnZpY2UpOwotICAgIGVpbmFfc3RyaW5nc2hh
cmVfcmVwbGFjZSgmZXdrSW50ZW50U2VydmljZS0+dGl0bGUsIHRvSW1wbCh3a1RpdGxlLmdldCgp
KS0+c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKHNlcnZpY2UsIDApOwogCiAgICAgcmV0dXJuIHNlcnZpY2UtPnRpdGxlOwotI2Vsc2UK
LSAgICByZXR1cm4gMDsKLSNlbmRpZgogfQogCiBjb25zdCBjaGFyKiBld2tfaW50ZW50X3NlcnZp
Y2VfZGlzcG9zaXRpb25fZ2V0KGNvbnN0IEV3a19JbnRlbnRfU2VydmljZSogc2VydmljZSkKIHsK
LSNpZiBFTkFCTEUoV0VCX0lOVEVOVFNfVEFHKQotICAgIEVXS19JTlRFTlRfU0VSVklDRV9XS19H
RVRfT1JfUkVUVVJOKHNlcnZpY2UsIHdrU2VydmljZSwgMCk7Ci0KLSAgICBXS1JldGFpblB0cjxX
S1N0cmluZ1JlZj4gd2tEaXNwb3NpdGlvbihBZG9wdFdLLCBXS0ludGVudFNlcnZpY2VJbmZvQ29w
eURpc3Bvc2l0aW9uKHdrU2VydmljZSkpOwotICAgIEV3a19JbnRlbnRfU2VydmljZSogZXdrSW50
ZW50U2VydmljZSA9IGNvbnN0X2Nhc3Q8RXdrX0ludGVudF9TZXJ2aWNlKj4oc2VydmljZSk7Ci0g
ICAgZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZld2tJbnRlbnRTZXJ2aWNlLT5kaXNwb3NpdGlv
biwgdG9JbXBsKHdrRGlzcG9zaXRpb24uZ2V0KCkpLT5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
KyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2VydmljZSwgMCk7CiAKICAgICBy
ZXR1cm4gc2VydmljZS0+ZGlzcG9zaXRpb247Ci0jZWxzZQotICAgIHJldHVybiAwOwotI2VuZGlm
CiB9CiAKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFNfVEFHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19uYXZpZ2F0aW9uX3BvbGlj
eV9kZWNpc2lvbi5jcHAKaW5kZXggYWU3MjVkNy4uMTkwODEwOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdhdGlv
bl9wb2xpY3lfZGVjaXNpb24uY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiZXdrX25h
dmlnYXRpb25fcG9saWN5X2RlY2lzaW9uLmgiCiAKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNp
bmNsdWRlICJXS0VpbmFTaGFyZWRTdHJpbmcuaCIKICNpbmNsdWRlICJXS0ZyYW1lUG9saWN5TGlz
dGVuZXIuaCIKICNpbmNsdWRlICJXS1JldGFpblB0ci5oIgogI2luY2x1ZGUgImV3a19uYXZpZ2F0
aW9uX3BvbGljeV9kZWNpc2lvbl9wcml2YXRlLmgiCkBAIC00Nyw3ICs0OCw3IEBAIHN0cnVjdCBf
RXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9uIHsKICAgICBFdmVudF9Nb3VzZV9CdXR0b24g
bW91c2VCdXR0b247CiAgICAgRXZlbnRfTW9kaWZpZXJfS2V5cyBtb2RpZmllcnM7CiAgICAgRXdr
X1VybF9SZXF1ZXN0KiByZXF1ZXN0OwotICAgIGNvbnN0IGNoYXIqIGZyYW1lTmFtZTsKKyAgICBX
S0VpbmFTaGFyZWRTdHJpbmcgZnJhbWVOYW1lOwogCiAgICAgX0V3a19OYXZpZ2F0aW9uX1BvbGlj
eV9EZWNpc2lvbihXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYgX2xpc3RlbmVyLCBFd2tfTmF2aWdh
dGlvbl9UeXBlIF9uYXZpZ2F0aW9uVHlwZSwgRXZlbnRfTW91c2VfQnV0dG9uIF9tb3VzZUJ1dHRv
biwgRXZlbnRfTW9kaWZpZXJfS2V5cyBfbW9kaWZpZXJzLCBFd2tfVXJsX1JlcXVlc3QqIF9yZXF1
ZXN0LCBjb25zdCBjaGFyKiBfZnJhbWVOYW1lKQogICAgICAgICA6IF9fcmVmKDEpCkBAIC01Nyw3
ICs1OCw3IEBAIHN0cnVjdCBfRXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9uIHsKICAgICAg
ICAgLCBtb3VzZUJ1dHRvbihfbW91c2VCdXR0b24pCiAgICAgICAgICwgbW9kaWZpZXJzKF9tb2Rp
ZmllcnMpCiAgICAgICAgICwgcmVxdWVzdChfcmVxdWVzdCkKLSAgICAgICAgLCBmcmFtZU5hbWUo
ZWluYV9zdHJpbmdzaGFyZV9hZGQoX2ZyYW1lTmFtZSkpCisgICAgICAgICwgZnJhbWVOYW1lKF9m
cmFtZU5hbWUpCiAgICAgeyB9CiAKICAgICB+X0V3a19OYXZpZ2F0aW9uX1BvbGljeV9EZWNpc2lv
bigpCkBAIC02OSw3ICs3MCw2IEBAIHN0cnVjdCBfRXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lz
aW9uIHsKICAgICAgICAgICAgIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclVzZShsaXN0ZW5lci5nZXQo
KSk7CiAKICAgICAgICAgZXdrX3VybF9yZXF1ZXN0X3VucmVmKHJlcXVlc3QpOwotICAgICAgICBl
aW5hX3N0cmluZ3NoYXJlX2RlbChmcmFtZU5hbWUpOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfcmVxdWVzdC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3JlcXVlc3QuY3BwCmluZGV4
IGYyMDk5NTIuLjU4MTZiMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a191cmxfcmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3VybF9yZXF1ZXN0LmNwcApAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUg
ImV3a191cmxfcmVxdWVzdC5oIgogCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCi0jaW5jbHVkZSAi
V0tSZXRhaW5QdHIuaCIKKyNpbmNsdWRlICJXS0VpbmFTaGFyZWRTdHJpbmcuaCIKICNpbmNsdWRl
ICJXS1VSTC5oIgogI2luY2x1ZGUgIldLVVJMUmVxdWVzdC5oIgogI2luY2x1ZGUgIldlYlVSTFJl
cXVlc3QuaCIKQEAgLTQyLDQwICs0MiwyNCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogICov
CiBzdHJ1Y3QgX0V3a19VcmxfUmVxdWVzdCB7CiAgICAgdW5zaWduZWQgaW50IF9fcmVmOyAvKio8
IHRoZSByZWZlcmVuY2UgY291bnQgb2YgdGhlIG9iamVjdCAqLwotICAgIFdLUmV0YWluUHRyPFdL
VVJMUmVxdWVzdFJlZj4gd2tSZXF1ZXN0OwogCi0gICAgY29uc3QgY2hhciogdXJsOwotICAgIGNv
bnN0IGNoYXIqIGZpcnN0X3BhcnR5OwotICAgIGNvbnN0IGNoYXIqIGh0dHBfbWV0aG9kOworICAg
IFdLRWluYVNoYXJlZFN0cmluZyB1cmw7CisgICAgV0tFaW5hU2hhcmVkU3RyaW5nIGZpcnN0X3Bh
cnR5OworICAgIFdLRWluYVNoYXJlZFN0cmluZyBodHRwX21ldGhvZDsKIAogICAgIF9Fd2tfVXJs
X1JlcXVlc3QoV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3RSZWYpCiAgICAgICAgIDogX19yZWYoMSkK
LSAgICAgICAgLCB3a1JlcXVlc3QocmVxdWVzdFJlZikKLSAgICAgICAgLCB1cmwoMCkKLSAgICAg
ICAgLCBmaXJzdF9wYXJ0eSgwKQotICAgICAgICAsIGh0dHBfbWV0aG9kKDApCisgICAgICAgICwg
dXJsKEFkb3B0V0ssIFdLVVJMUmVxdWVzdENvcHlVUkwocmVxdWVzdFJlZikpCisgICAgICAgICwg
Zmlyc3RfcGFydHkoQWRvcHRXSywgV0tVUkxSZXF1ZXN0Q29weUZpcnN0UGFydHlGb3JDb29raWVz
KHJlcXVlc3RSZWYpKQorICAgICAgICAsIGh0dHBfbWV0aG9kKEFkb3B0V0ssIFdLVVJMUmVxdWVz
dENvcHlIVFRQTWV0aG9kKHJlcXVlc3RSZWYpKQogICAgIHsgfQogCiAgICAgfl9Fd2tfVXJsX1Jl
cXVlc3QoKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFfX3JlZik7Ci0gICAgICAgIGVpbmFfc3Ry
aW5nc2hhcmVfZGVsKHVybCk7Ci0gICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKGZpcnN0X3Bh
cnR5KTsKLSAgICAgICAgZWluYV9zdHJpbmdzaGFyZV9kZWwoaHR0cF9tZXRob2QpOwogICAgIH0K
IH07CiAKLSNkZWZpbmUgRVdLX1VSTF9SRVFVRVNUX1dLX0dFVF9PUl9SRVRVUk4ocmVxdWVzdCwg
d2tSZXF1ZXN0XywgLi4uKSAgICBcCi0gICAgaWYgKCEocmVxdWVzdCkpIHsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBFSU5BX0xPR19D
UklUKCJyZXF1ZXN0IGlzIE5VTEwuIik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg
ICAgICAgcmV0dXJuIF9fVkFfQVJHU19fOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmICghKHJlcXVlc3QpLT53a1JlcXVl
c3QpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgRUlO
QV9MT0dfQ1JJVCgicmVxdWVzdC0+d2tSZXF1ZXN0IGlzIE5VTEwuIik7ICAgICAgICAgICAgICAg
ICBcCi0gICAgICAgIHJldHVybiBfX1ZBX0FSR1NfXzsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAotICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBXS1VSTFJlcXVlc3RSZWYg
d2tSZXF1ZXN0XyA9IChyZXF1ZXN0KS0+d2tSZXF1ZXN0LmdldCgpCi0KIHZvaWQgZXdrX3VybF9y
ZXF1ZXN0X3JlZihFd2tfVXJsX1JlcXVlc3QqIHJlcXVlc3QpCiB7CiAgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk4ocmVxdWVzdCk7CkBAIC05NCwzMSArNzgsMjEgQEAgdm9pZCBld2tfdXJs
X3JlcXVlc3RfdW5yZWYoRXdrX1VybF9SZXF1ZXN0KiByZXF1ZXN0KQogCiBjb25zdCBjaGFyKiBl
d2tfdXJsX3JlcXVlc3RfdXJsX2dldChjb25zdCBFd2tfVXJsX1JlcXVlc3QqIHJlcXVlc3QpCiB7
Ci0gICAgRVdLX1VSTF9SRVFVRVNUX1dLX0dFVF9PUl9SRVRVUk4ocmVxdWVzdCwgd2tSZXF1ZXN0
LCAwKTsKLQotICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiB3a1VybChBZG9wdFdLLCBXS1VSTFJl
cXVlc3RDb3B5VVJMKHdrUmVxdWVzdCkpOwotICAgIEV3a19VcmxfUmVxdWVzdCogZXdrUmVxdWVz
dCA9IGNvbnN0X2Nhc3Q8RXdrX1VybF9SZXF1ZXN0Kj4ocmVxdWVzdCk7Ci0gICAgZWluYV9zdHJp
bmdzaGFyZV9yZXBsYWNlKCZld2tSZXF1ZXN0LT51cmwsIHRvSW1wbCh3a1VybC5nZXQoKSktPnN0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZB
TChyZXF1ZXN0LCAwKTsKIAogICAgIHJldHVybiByZXF1ZXN0LT51cmw7CiB9CiAKIGNvbnN0IGNo
YXIqIGV3a19yZXF1ZXN0X2Nvb2tpZXNfZmlyc3RfcGFydHlfZ2V0KGNvbnN0IEV3a19VcmxfUmVx
dWVzdCogcmVxdWVzdCkKIHsKLSAgICBFV0tfVVJMX1JFUVVFU1RfV0tfR0VUX09SX1JFVFVSTihy
ZXF1ZXN0LCB3a1JlcXVlc3QsIDApOwotCi0gICAgRXdrX1VybF9SZXF1ZXN0KiBld2tSZXF1ZXN0
ID0gY29uc3RfY2FzdDxFd2tfVXJsX1JlcXVlc3QqPihyZXF1ZXN0KTsKLSAgICBlaW5hX3N0cmlu
Z3NoYXJlX3JlcGxhY2UoJmV3a1JlcXVlc3QtPmZpcnN0X3BhcnR5LCB0b0ltcGwod2tSZXF1ZXN0
KS0+cmVzb3VyY2VSZXF1ZXN0KCkuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocmVxdWVzdCwg
MCk7CiAKICAgICByZXR1cm4gcmVxdWVzdC0+Zmlyc3RfcGFydHk7CiB9CiAKIGNvbnN0IGNoYXIq
IGV3a191cmxfcmVxdWVzdF9odHRwX21ldGhvZF9nZXQoY29uc3QgRXdrX1VybF9SZXF1ZXN0KiBy
ZXF1ZXN0KQogewotICAgIEVXS19VUkxfUkVRVUVTVF9XS19HRVRfT1JfUkVUVVJOKHJlcXVlc3Qs
IHdrUmVxdWVzdCwgMCk7Ci0KLSAgICBFd2tfVXJsX1JlcXVlc3QqIGV3a1JlcXVlc3QgPSBjb25z
dF9jYXN0PEV3a19VcmxfUmVxdWVzdCo+KHJlcXVlc3QpOwotICAgIGVpbmFfc3RyaW5nc2hhcmVf
cmVwbGFjZSgmZXdrUmVxdWVzdC0+aHR0cF9tZXRob2QsIHRvSW1wbCh3a1JlcXVlc3QpLT5yZXNv
dXJjZVJlcXVlc3QoKS5odHRwTWV0aG9kKCkudXRmOCgpLmRhdGEoKSk7CisgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk5fVkFMKHJlcXVlc3QsIDApOwogCiAgICAgcmV0dXJuIHJlcXVlc3Qt
Pmh0dHBfbWV0aG9kOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3VybF9yZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdXJsX3Jlc3BvbnNlLmNwcAppbmRleCA4ZjlmNTM2Li44ZDBhOGVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3Jlc3BvbnNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3Jlc3BvbnNl
LmNwcApAQCAtMjYsOSArMjYsMTQgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJl
d2tfdXJsX3Jlc3BvbnNlLmgiCiAKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJX
S0VpbmFTaGFyZWRTdHJpbmcuaCIKKyNpbmNsdWRlICJXS1VSTFJlc3BvbnNlLmgiCiAjaW5jbHVk
ZSAiZXdrX3VybF9yZXNwb25zZV9wcml2YXRlLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCiAvKioKICAqIFxzdHJ1Y3QgIF9Fd2tf
VXJsX1Jlc3BvbnNlCiAgKiBAYnJpZWYgICBDb250YWlucyB0aGUgVVJMIHJlc3BvbnNlIGRhdGEu
CkBAIC0zNywyMSArNDIsMTkgQEAgc3RydWN0IF9Fd2tfVXJsX1Jlc3BvbnNlIHsKICAgICB1bnNp
Z25lZCBpbnQgX19yZWY7IC8qKjwgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiB0aGUgb2JqZWN0ICov
CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBjb3JlUmVzcG9uc2U7CiAKLSAgICBjb25z
dCBjaGFyKiB1cmw7Ci0gICAgY29uc3QgY2hhciogbWltZVR5cGU7CisgICAgV0tFaW5hU2hhcmVk
U3RyaW5nIHVybDsKKyAgICBXS0VpbmFTaGFyZWRTdHJpbmcgbWltZVR5cGU7CiAKICAgICBfRXdr
X1VybF9SZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiBfY29yZVJlc3Bv
bnNlKQogICAgICAgICA6IF9fcmVmKDEpCiAgICAgICAgICwgY29yZVJlc3BvbnNlKF9jb3JlUmVz
cG9uc2UpCi0gICAgICAgICwgdXJsKDApCi0gICAgICAgICwgbWltZVR5cGUoMCkKKyAgICAgICAg
LCB1cmwoQWRvcHRXSywgV0tVUkxSZXNwb25zZUNvcHlVUkwodG9BUEkoY29yZVJlc3BvbnNlKSkp
CisgICAgICAgICwgbWltZVR5cGUoQWRvcHRXSywgV0tVUkxSZXNwb25zZUNvcHlNSU1FVHlwZSh0
b0FQSShjb3JlUmVzcG9uc2UpKSkKICAgICB7IH0KIAogICAgIH5fRXdrX1VybF9SZXNwb25zZSgp
CiAgICAgewogICAgICAgICBBU1NFUlQoIV9fcmVmKTsKLSAgICAgICAgZWluYV9zdHJpbmdzaGFy
ZV9kZWwodXJsKTsKLSAgICAgICAgZWluYV9zdHJpbmdzaGFyZV9kZWwobWltZVR5cGUpOwogICAg
IH0KIH07CiAKQEAgLTc1LDkgKzc4LDYgQEAgY29uc3QgY2hhciogZXdrX3VybF9yZXNwb25zZV91
cmxfZ2V0KGNvbnN0IEV3a19VcmxfUmVzcG9uc2UqIHJlc3BvbnNlKQogewogICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChyZXNwb25zZSwgMCk7CiAKLSAgICBFd2tfVXJsX1Jlc3Bv
bnNlKiBld2tSZXNwb25zZSA9IGNvbnN0X2Nhc3Q8RXdrX1VybF9SZXNwb25zZSo+KHJlc3BvbnNl
KTsKLSAgICBlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJmV3a1Jlc3BvbnNlLT51cmwsIHJlc3Bv
bnNlLT5jb3JlUmVzcG9uc2UudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0KICAgICBy
ZXR1cm4gcmVzcG9uc2UtPnVybDsKIH0KIApAQCAtOTIsOSArOTIsNiBAQCBjb25zdCBjaGFyKiBl
d2tfdXJsX3Jlc3BvbnNlX21pbWVfdHlwZV9nZXQoY29uc3QgRXdrX1VybF9SZXNwb25zZSogcmVz
cG9uc2UpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHJlc3BvbnNlLCAw
KTsKIAotICAgIEV3a19VcmxfUmVzcG9uc2UqIGV3a1Jlc3BvbnNlID0gY29uc3RfY2FzdDxFd2tf
VXJsX1Jlc3BvbnNlKj4ocmVzcG9uc2UpOwotICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgm
ZXdrUmVzcG9uc2UtPm1pbWVUeXBlLCByZXNwb25zZS0+Y29yZVJlc3BvbnNlLm1pbWVUeXBlKCku
dXRmOCgpLmRhdGEoKSk7Ci0KICAgICByZXR1cm4gcmVzcG9uc2UtPm1pbWVUeXBlOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKaW5kZXggN2Q4
YjFjZS4uNDJkZGE3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a192aWV3LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIk5hdGl2ZVdlYldoZWVsRXZl
bnQuaCIKICNpbmNsdWRlICJQYWdlQ2xpZW50SW1wbC5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5o
IgorI2luY2x1ZGUgIldLRWluYVNoYXJlZFN0cmluZy5oIgogI2luY2x1ZGUgIldLRmluZE9wdGlv
bnMuaCIKICNpbmNsdWRlICJXS1JldGFpblB0ci5oIgogI2luY2x1ZGUgIldLU3RyaW5nLmgiCkBA
IC03MywxMSArNzQsMTEgQEAgc3RydWN0IF9Fd2tfVmlld19Qcml2YXRlX0RhdGEgewogICAgIE93
blB0cjxFZmxWaWV3cG9ydEhhbmRsZXI+IHZpZXdwb3J0SGFuZGxlcjsKICNlbmRpZgogCi0gICAg
Y29uc3QgY2hhciogdXJpOwotICAgIGNvbnN0IGNoYXIqIHRpdGxlOwotICAgIGNvbnN0IGNoYXIq
IHRoZW1lOwotICAgIGNvbnN0IGNoYXIqIGN1c3RvbUVuY29kaW5nOwotICAgIGNvbnN0IGNoYXIq
IGN1cnNvckdyb3VwOworICAgIFdLRWluYVNoYXJlZFN0cmluZyB1cmk7CisgICAgV0tFaW5hU2hh
cmVkU3RyaW5nIHRpdGxlOworICAgIFdLRWluYVNoYXJlZFN0cmluZyB0aGVtZTsKKyAgICBXS0Vp
bmFTaGFyZWRTdHJpbmcgY3VzdG9tRW5jb2Rpbmc7CisgICAgV0tFaW5hU2hhcmVkU3RyaW5nIGN1
cnNvckdyb3VwOwogICAgIEV2YXNfT2JqZWN0KiBjdXJzb3JPYmplY3Q7CiAgICAgTG9hZGluZ1Jl
c291cmNlc01hcCBsb2FkaW5nUmVzb3VyY2VzTWFwOwogICAgIEV3a19CYWNrX0ZvcndhcmRfTGlz
dCogYmFja0ZvcndhcmRMaXN0OwpAQCAtOTMsMTIgKzk0LDcgQEAgc3RydWN0IF9Fd2tfVmlld19Q
cml2YXRlX0RhdGEgewogI2VuZGlmCiAKICAgICBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKCkKLSAg
ICAgICAgOiB1cmkoMCkKLSAgICAgICAgLCB0aXRsZSgwKQotICAgICAgICAsIHRoZW1lKDApCi0g
ICAgICAgICwgY3VzdG9tRW5jb2RpbmcoMCkKLSAgICAgICAgLCBjdXJzb3JHcm91cCgwKQotICAg
ICAgICAsIGN1cnNvck9iamVjdCgwKQorICAgICAgICA6IGN1cnNvck9iamVjdCgwKQogICAgICAg
ICAsIGJhY2tGb3J3YXJkTGlzdCgwKQogI2lmZGVmIEhBVkVfRUNPUkVfWAogICAgICAgICAsIGlz
VXNpbmdFY29yZVgoZmFsc2UpCkBAIC0xMTIsMTAgKzEwOCw2IEBAIHN0cnVjdCBfRXdrX1ZpZXdf
UHJpdmF0ZV9EYXRhIHsKIAogICAgIH5fRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKCkKICAgICB7Ci0g
ICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKHVyaSk7Ci0gICAgICAgIGVpbmFfc3RyaW5nc2hh
cmVfZGVsKHRpdGxlKTsKLSAgICAgICAgZWluYV9zdHJpbmdzaGFyZV9kZWwodGhlbWUpOwotICAg
ICAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChjdXN0b21FbmNvZGluZyk7CiAgICAgICAgIF9ld2tf
dmlld19wcml2X2xvYWRpbmdfcmVzb3VyY2VzX2NsZWFyKGxvYWRpbmdSZXNvdXJjZXNNYXApOwog
CiAgICAgICAgIGlmIChjdXJzb3JPYmplY3QpCkBAIC03NzEsMTAgKzc2MywxMiBAQCB2b2lkIGV3
a192aWV3X3VyaV91cGRhdGUoRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgICAgaWYgKGFjdGl2ZVVS
TC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghZWluYV9zdHJpbmdzaGFy
ZV9yZXBsYWNlKCZwcml2LT51cmksIGFjdGl2ZVVSTC51dGY4KCkuZGF0YSgpKSkKKyAgICBpZiAo
cHJpdi0+dXJpID09IGFjdGl2ZVVSTC51dGY4KCkuZGF0YSgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJ1cmksY2hhbmdl
ZCIsIHN0YXRpY19jYXN0PHZvaWQqPihjb25zdF9jYXN0PGNoYXIqPihwcml2LT51cmkpKSk7Cisg
ICAgcHJpdi0+dXJpID0gYWN0aXZlVVJMLnV0ZjgoKS5kYXRhKCk7CisgICAgY29uc3QgY2hhciog
Y2FsbEJhY2tBcmd1bWVudCA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihwcml2LT51cmkpOwor
ICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgInVyaSxjaGFuZ2Vk
IiwgY29uc3RfY2FzdDxjaGFyKj4oY2FsbEJhY2tBcmd1bWVudCkpOwogfQogCiBFaW5hX0Jvb2wg
ZXdrX3ZpZXdfdXJpX3NldChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgY2hhciogdXJpKQpA
QCAtOTMzLDcgKzkyNyw3IEBAIGNvbnN0IGNoYXIqIGV3a192aWV3X3RpdGxlX2dldChjb25zdCBF
dmFzX09iamVjdCogZXdrVmlldykKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21h
cnREYXRhLCBwcml2LCAwKTsKIAogICAgIENTdHJpbmcgdGl0bGUgPSBwcml2LT5wYWdlQ2xpZW50
LT5wYWdlKCktPnBhZ2VUaXRsZSgpLnV0ZjgoKTsKLSAgICBlaW5hX3N0cmluZ3NoYXJlX3JlcGxh
Y2UoJnByaXYtPnRpdGxlLCB0aXRsZS5kYXRhKCkpOworICAgIHByaXYtPnRpdGxlID0gdGl0bGUu
ZGF0YSgpOwogCiAgICAgcmV0dXJuIHByaXYtPnRpdGxlOwogfQpAQCAtMTAzMiwxMCArMTAyNiwx
MCBAQCB2b2lkIGV3a192aWV3X3RoZW1lX3NldChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3Qg
Y2hhciogcGF0aCkKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0
RGF0YSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7
CiAKLSAgICBpZiAoIWVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmcHJpdi0+dGhlbWUsIHBhdGgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBwcml2LT5wYWdlQ2xpZW50LT5wYWdlKCktPnNldFRo
ZW1lUGF0aChwYXRoKTsKKyAgICBpZiAocHJpdi0+dGhlbWUgIT0gcGF0aCkgeworICAgICAgICBw
cml2LT50aGVtZSA9IHBhdGg7CisgICAgICAgIHByaXYtPnBhZ2VDbGllbnQtPnBhZ2UoKS0+c2V0
VGhlbWVQYXRoKHBhdGgpOworICAgIH0KIH0KIAogY29uc3QgY2hhciogZXdrX3ZpZXdfdGhlbWVf
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQpAQCAtMTM4MSw3ICsxMzc1LDcgQEAgY29u
c3QgY2hhciogZXdrX3ZpZXdfc2V0dGluZ19lbmNvZGluZ19jdXN0b21fZ2V0KGNvbnN0IEV2YXNf
T2JqZWN0KiBld2tWaWV3KQogICAgIGlmIChjdXN0b21FbmNvZGluZy5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiAwOwogCi0gICAgZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZwcml2LT5jdXN0
b21FbmNvZGluZywgY3VzdG9tRW5jb2RpbmcudXRmOCgpLmRhdGEoKSk7CisgICAgcHJpdi0+Y3Vz
dG9tRW5jb2RpbmcgPSBjdXN0b21FbmNvZGluZy51dGY4KCkuZGF0YSgpOwogCiAgICAgcmV0dXJu
IHByaXYtPmN1c3RvbUVuY29kaW5nOwogfQpAQCAtMTM5MSw4ICsxMzg1LDggQEAgRWluYV9Cb29s
IGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfY3VzdG9tX3NldChFdmFzX09iamVjdCogZXdrVmll
dywgY29uc3QgY2hhcioKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNt
YXJ0RGF0YSwgZmFsc2UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERh
dGEsIHByaXYsIGZhbHNlKTsKIAotICAgIGlmIChlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJnBy
aXYtPmN1c3RvbUVuY29kaW5nLCBlbmNvZGluZykpCi0gICAgICAgIHByaXYtPnBhZ2VDbGllbnQt
PnBhZ2UoKS0+c2V0Q3VzdG9tVGV4dEVuY29kaW5nTmFtZShlbmNvZGluZyA/IGVuY29kaW5nIDog
U3RyaW5nKCkpOworICAgIHByaXYtPmN1c3RvbUVuY29kaW5nID0gZW5jb2Rpbmc7CisgICAgcHJp
di0+cGFnZUNsaWVudC0+cGFnZSgpLT5zZXRDdXN0b21UZXh0RW5jb2RpbmdOYW1lKGVuY29kaW5n
ID8gZW5jb2RpbmcgOiBTdHJpbmcoKSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a193ZWJfZXJyb3IuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3dlYl9lcnJvci5jcHAKaW5kZXgg
ZTZlM2ViOC4uNzAzODBiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3dlYl9lcnJvci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3dlYl9lcnJvci5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJld2tf
d2ViX2Vycm9yLmgiCiAKICNpbmNsdWRlICJFcnJvcnNFZmwuaCIKKyNpbmNsdWRlICJXS0VpbmFT
aGFyZWRTdHJpbmcuaCIKICNpbmNsdWRlICJXS1N0cmluZy5oIgogI2luY2x1ZGUgIldLVVJMLmgi
CiAjaW5jbHVkZSAiZXdrX3dlYl9lcnJvcl9wcml2YXRlLmgiCkBAIC00MSwxOSArNDIsMTcgQEAg
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIHN0cnVjdCBfRXdrX1dlYl9FcnJvciB7CiAgICAgV0tS
ZXRhaW5QdHI8V0tFcnJvclJlZj4gd2tFcnJvcjsKIAotICAgIGNvbnN0IGNoYXIqIHVybDsKLSAg
ICBjb25zdCBjaGFyKiBkZXNjcmlwdGlvbjsKKyAgICBXS0VpbmFTaGFyZWRTdHJpbmcgdXJsOwor
ICAgIFdLRWluYVNoYXJlZFN0cmluZyBkZXNjcmlwdGlvbjsKIAogICAgIF9Fd2tfV2ViX0Vycm9y
KFdLRXJyb3JSZWYgZXJyb3JSZWYpCiAgICAgICAgIDogd2tFcnJvcihlcnJvclJlZikKLSAgICAg
ICAgLCB1cmwoMCkKLSAgICAgICAgLCBkZXNjcmlwdGlvbigwKQorICAgICAgICAsIHVybChBZG9w
dFdLLCBXS0Vycm9yQ29weUZhaWxpbmdVUkwoZXJyb3JSZWYpKQorICAgICAgICAsIGRlc2NyaXB0
aW9uKEFkb3B0V0ssIFdLRXJyb3JDb3B5TG9jYWxpemVkRGVzY3JpcHRpb24oZXJyb3JSZWYpKQog
ICAgIHsgfQogCiAgICAgfl9Fd2tfV2ViX0Vycm9yKCkKICAgICB7Ci0gICAgICAgIGVpbmFfc3Ry
aW5nc2hhcmVfZGVsKHVybCk7Ci0gICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKGRlc2NyaXB0
aW9uKTsKICAgICB9CiB9OwogCkBAIC05NywxMSArOTYsNyBAQCBFd2tfV2ViX0Vycm9yX1R5cGUg
ZXdrX3dlYl9lcnJvcl90eXBlX2dldChjb25zdCBFd2tfV2ViX0Vycm9yKiBlcnJvcikKIAogY29u
c3QgY2hhciogZXdrX3dlYl9lcnJvcl91cmxfZ2V0KGNvbnN0IEV3a19XZWJfRXJyb3IqIGVycm9y
KQogewotICAgIEVXS19XRUJfRVJST1JfV0tfR0VUX09SX1JFVFVSTihlcnJvciwgd2tFcnJvciwg
MCk7Ci0KLSAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gd2tVcmwoQWRvcHRXSywgV0tFcnJvckNv
cHlGYWlsaW5nVVJMKHdrRXJyb3IpKTsKLSAgICBFd2tfV2ViX0Vycm9yKiBld2tFcnJvciA9IGNv
bnN0X2Nhc3Q8RXdrX1dlYl9FcnJvcio+KGVycm9yKTsKLSAgICBlaW5hX3N0cmluZ3NoYXJlX3Jl
cGxhY2UoJmV3a0Vycm9yLT51cmwsIHRvSW1wbCh3a1VybC5nZXQoKSktPnN0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChlcnJvciwgMCk7
CiAKICAgICByZXR1cm4gZXJyb3ItPnVybDsKIH0KQEAgLTExNSwxMSArMTEwLDcgQEAgaW50IGV3
a193ZWJfZXJyb3JfY29kZV9nZXQoY29uc3QgRXdrX1dlYl9FcnJvciogZXJyb3IpCiAKIGNvbnN0
IGNoYXIqIGV3a193ZWJfZXJyb3JfZGVzY3JpcHRpb25fZ2V0KGNvbnN0IEV3a19XZWJfRXJyb3Iq
IGVycm9yKQogewotICAgIEVXS19XRUJfRVJST1JfV0tfR0VUX09SX1JFVFVSTihlcnJvciwgd2tF
cnJvciwgMCk7Ci0KLSAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tEZXNjcmlwdGlvbihB
ZG9wdFdLLCBXS0Vycm9yQ29weUxvY2FsaXplZERlc2NyaXB0aW9uKHdrRXJyb3IpKTsKLSAgICBF
d2tfV2ViX0Vycm9yKiBld2tFcnJvciA9IGNvbnN0X2Nhc3Q8RXdrX1dlYl9FcnJvcio+KGVycm9y
KTsKLSAgICBlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJmV3a0Vycm9yLT5kZXNjcmlwdGlvbiwg
dG9JbXBsKHdrRGVzY3JpcHRpb24uZ2V0KCkpLT5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoZXJyb3IsIDApOwogCiAgICAgcmV0dXJu
IGVycm9yLT5kZXNjcmlwdGlvbjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a193ZWJfcmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3dlYl9yZXNvdXJjZS5jcHAKaW5kZXggZTBkNzI4YS4uMjc3MDA0YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3dlYl9yZXNv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3dlYl9y
ZXNvdXJjZS5jcHAKQEAgLTI2LDI0ICsyNiwyNCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgImV3a193ZWJfcmVzb3VyY2UuaCIKIAorI2luY2x1ZGUgIldLRWluYVNoYXJlZFN0cmlu
Zy5oIgogI2luY2x1ZGUgImV3a193ZWJfcmVzb3VyY2VfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KIAogc3RydWN0IF9Fd2tfV2ViX1Jlc291cmNlIHsKICAgICB1bnNp
Z25lZCBpbnQgX19yZWY7IC8qKjwgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiB0aGUgb2JqZWN0ICov
Ci0gICAgY29uc3QgY2hhciogdXJsOworICAgIFdLRWluYVNoYXJlZFN0cmluZyB1cmw7CiAgICAg
Ym9vbCBpc01haW5SZXNvdXJjZTsKIAogICAgIF9Fd2tfV2ViX1Jlc291cmNlKGNvbnN0IGNoYXIq
IF91cmwsIGJvb2wgX2lzTWFpblJlc291cmNlKQogICAgICAgICA6IF9fcmVmKDEpCi0gICAgICAg
ICAsIHVybChlaW5hX3N0cmluZ3NoYXJlX2FkZChfdXJsKSkKKyAgICAgICAgICwgdXJsKF91cmwp
CiAgICAgICAgICwgaXNNYWluUmVzb3VyY2UoX2lzTWFpblJlc291cmNlKQogICAgIHsgfQogCiAg
ICAgfl9Fd2tfV2ViX1Jlc291cmNlKCkKICAgICB7CiAgICAgICAgIEFTU0VSVCghX19yZWYpOwot
ICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbCh1cmwpOwogICAgIH0KIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158555</attachid>
            <date>2012-08-15 06:06:33 -0700</date>
            <delta_ts>2012-08-15 06:50:30 -0700</delta_ts>
            <desc>patch v2</desc>
            <filename>bug93964_v2</filename>
            <type>text/plain</type>
            <size>29661</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IGNlOWNjMzhiNWVmMDFiMWU0YjQ0YzI2YjNkNGEzN2Q2YzYyNWZiZDYKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
V2VkIEF1ZyAxNSAxNToyMDo0NCAyMDEyICswMzAwCgogICAgYnVnOTM5NjQKCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggOWEyZGYxZC4uY2E5N2M3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDEyLTA4
LTE1ICBNaWtoYWlsIFBvemRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgor
CisgICAgICAgIFtFRkxdW1dLMl0gUmVmYWN0b3Jpbmc6IHN0YXJ0IHVzaW5nIFdLRWluYVNoYXJl
ZFN0cmluZyBpbiBld2tfIGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTkzOTY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgU3RhcnRlZCB1c2luZyBXS0VpbmFTaGFyZWRTdHJpbmcgd2hlcmUgaXQg
aXMgYWR2aXNhYmxlLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9jcHAvZWZsL1dLRWluYVNo
YXJlZFN0cmluZy5jcHA6CisgICAgICAgIChXS0VpbmFTaGFyZWRTdHJpbmc6Om9wZXJhdG9yPT0p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvY3BwL2VmbC9XS0VpbmFTaGFyZWRTdHJpbmcuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfZG93bmxvYWRfam9iLmNwcDoKKyAgICAg
ICAgKF9Fd2tfRG93bmxvYWRfSm9iKToKKyAgICAgICAgKF9Fd2tfRG93bmxvYWRfSm9iOjpfRXdr
X0Rvd25sb2FkX0pvYik6CisgICAgICAgIChfRXdrX0Rvd25sb2FkX0pvYjo6fl9Fd2tfRG93bmxv
YWRfSm9iKToKKyAgICAgICAgKGV3a19kb3dubG9hZF9qb2JfZGVzdGluYXRpb25fc2V0KToKKyAg
ICAgICAgKGV3a19kb3dubG9hZF9qb2Jfc3VnZ2VzdGVkX2ZpbGVuYW1lX3NldCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudC5jcHA6CisgICAgICAgIChfRXdrX0ludGVu
dCk6CisgICAgICAgIChfRXdrX0ludGVudDo6X0V3a19JbnRlbnQpOgorICAgICAgICAoX0V3a19J
bnRlbnQ6On5fRXdrX0ludGVudCk6CisgICAgICAgIChld2tfaW50ZW50X2FjdGlvbl9nZXQpOgor
ICAgICAgICAoZXdrX2ludGVudF90eXBlX2dldCk6CisgICAgICAgIChld2tfaW50ZW50X3NlcnZp
Y2VfZ2V0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfaW50ZW50X3NlcnZpY2Uu
Y3BwOgorICAgICAgICAoX0V3a19JbnRlbnRfU2VydmljZSk6CisgICAgICAgIChfRXdrX0ludGVu
dF9TZXJ2aWNlOjpfRXdrX0ludGVudF9TZXJ2aWNlKToKKyAgICAgICAgKF9Fd2tfSW50ZW50X1Nl
cnZpY2U6On5fRXdrX0ludGVudF9TZXJ2aWNlKToKKyAgICAgICAgKGV3a19pbnRlbnRfc2Vydmlj
ZV9hY3Rpb25fZ2V0KToKKyAgICAgICAgKGV3a19pbnRlbnRfc2VydmljZV90eXBlX2dldCk6Cisg
ICAgICAgIChld2tfaW50ZW50X3NlcnZpY2VfaHJlZl9nZXQpOgorICAgICAgICAoZXdrX2ludGVu
dF9zZXJ2aWNlX3RpdGxlX2dldCk6CisgICAgICAgIChld2tfaW50ZW50X3NlcnZpY2VfZGlzcG9z
aXRpb25fZ2V0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdhdGlvbl9w
b2xpY3lfZGVjaXNpb24uY3BwOgorICAgICAgICAoX0V3a19OYXZpZ2F0aW9uX1BvbGljeV9EZWNp
c2lvbik6CisgICAgICAgIChfRXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9uOjpfRXdrX05h
dmlnYXRpb25fUG9saWN5X0RlY2lzaW9uKToKKyAgICAgICAgKF9Fd2tfTmF2aWdhdGlvbl9Qb2xp
Y3lfRGVjaXNpb246On5fRXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9uKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3JlcXVlc3QuY3BwOgorICAgICAgICAoX0V3a19V
cmxfUmVxdWVzdCk6CisgICAgICAgIChfRXdrX1VybF9SZXF1ZXN0OjpfRXdrX1VybF9SZXF1ZXN0
KToKKyAgICAgICAgKF9Fd2tfVXJsX1JlcXVlc3Q6On5fRXdrX1VybF9SZXF1ZXN0KToKKyAgICAg
ICAgKGV3a191cmxfcmVxdWVzdF91cmxfZ2V0KToKKyAgICAgICAgKGV3a19yZXF1ZXN0X2Nvb2tp
ZXNfZmlyc3RfcGFydHlfZ2V0KToKKyAgICAgICAgKGV3a191cmxfcmVxdWVzdF9odHRwX21ldGhv
ZF9nZXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfcmVzcG9uc2UuY3Bw
OgorICAgICAgICAoX0V3a19VcmxfUmVzcG9uc2UpOgorICAgICAgICAoX0V3a19VcmxfUmVzcG9u
c2U6Ol9Fd2tfVXJsX1Jlc3BvbnNlKToKKyAgICAgICAgKF9Fd2tfVXJsX1Jlc3BvbnNlOjp+X0V3
a19VcmxfUmVzcG9uc2UpOgorICAgICAgICAoZXdrX3VybF9yZXNwb25zZV91cmxfZ2V0KToKKyAg
ICAgICAgKGV3a191cmxfcmVzcG9uc2VfbWltZV90eXBlX2dldCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwOgorICAgICAgICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0
YSk6CisgICAgICAgIChfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhOjpfRXdrX1ZpZXdfUHJpdmF0ZV9E
YXRhKToKKyAgICAgICAgKF9Fd2tfVmlld19Qcml2YXRlX0RhdGE6On5fRXdrX1ZpZXdfUHJpdmF0
ZV9EYXRhKToKKyAgICAgICAgKGV3a192aWV3X3VyaV91cGRhdGUpOgorICAgICAgICAoZXdrX3Zp
ZXdfdGl0bGVfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3RoZW1lX3NldCk6CisgICAgICAgIChl
d2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2N1c3RvbV9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdf
c2V0dGluZ19lbmNvZGluZ19jdXN0b21fc2V0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfd2ViX2Vycm9yLmNwcDoKKyAgICAgICAgKF9Fd2tfV2ViX0Vycm9yKToKKyAgICAgICAg
KF9Fd2tfV2ViX0Vycm9yOjpfRXdrX1dlYl9FcnJvcik6CisgICAgICAgIChfRXdrX1dlYl9FcnJv
cjo6fl9Fd2tfV2ViX0Vycm9yKToKKyAgICAgICAgKGV3a193ZWJfZXJyb3JfdXJsX2dldCk6Cisg
ICAgICAgIChld2tfd2ViX2Vycm9yX2Rlc2NyaXB0aW9uX2dldCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3dlYl9yZXNvdXJjZS5jcHA6CisgICAgICAgIChfRXdrX1dlYl9SZXNv
dXJjZSk6CisgICAgICAgIChfRXdrX1dlYl9SZXNvdXJjZTo6X0V3a19XZWJfUmVzb3VyY2UpOgor
ICAgICAgICAoX0V3a19XZWJfUmVzb3VyY2U6On5fRXdrX1dlYl9SZXNvdXJjZSk6CisKIDIwMTIt
MDgtMTQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBEZWxldGUg
RnJhbWU6OmRvbVdpbmRvdygpIGFuZCBGcmFtZTo6ZXhpc3RpbmdET01XaW5kb3coKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9jcHAvZWZsL1dLRWluYVNoYXJlZFN0
cmluZy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2NwcC9lZmwvV0tFaW5hU2hh
cmVkU3RyaW5nLmNwcAppbmRleCBkMjY4MTIwLi5lYTQzZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2NwcC9lZmwvV0tFaW5hU2hhcmVkU3RyaW5nLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2NwcC9lZmwvV0tFaW5hU2hhcmVkU3RyaW5n
LmNwcApAQCAtMTAwLDMgKzEwMCw4IEBAIFdLRWluYVNoYXJlZFN0cmluZyYgV0tFaW5hU2hhcmVk
U3RyaW5nOjpvcGVyYXRvcj0oY29uc3QgY2hhciogc3RyKQogICAgIGVpbmFfc3RyaW5nc2hhcmVf
cmVwbGFjZSgmbV9zdHJpbmcsIHN0cik7CiAgICAgcmV0dXJuICp0aGlzOwogfQorCitib29sIFdL
RWluYVNoYXJlZFN0cmluZzo6b3BlcmF0b3I9PShjb25zdCBjaGFyKiBzdHIpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuICghc3RyIHx8ICFtX3N0cmluZykgPyAoc3RyID09IG1fc3RyaW5nKSA6ICFzdHJj
bXAobV9zdHJpbmcsIHN0cik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2NwcC9lZmwvV0tFaW5hU2hhcmVkU3RyaW5nLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2NwcC9lZmwvV0tFaW5hU2hhcmVkU3RyaW5nLmgKaW5kZXggODNmNjYxNC4uNjhk
NzZmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9jcHAvZWZsL1dL
RWluYVNoYXJlZFN0cmluZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3Bw
L2VmbC9XS0VpbmFTaGFyZWRTdHJpbmcuaApAQCAtNTIsNiArNTIsOSBAQCBwdWJsaWM6CiAgICAg
QUxXQVlTX0lOTElORSBib29sIG9wZXJhdG9yPT0oY29uc3QgV0tFaW5hU2hhcmVkU3RyaW5nJiBv
dGhlcikgY29uc3QgeyByZXR1cm4gdGhpcy0+bV9zdHJpbmcgPT0gb3RoZXIubV9zdHJpbmc7IH0K
ICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgb3BlcmF0b3IhPShjb25zdCBXS0VpbmFTaGFyZWRTdHJp
bmcmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQogCisgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IGNoYXIqIHN0cikgY29uc3Q7CisgICAgQUxXQVlTX0lOTElORSBi
b29sIG9wZXJhdG9yIT0oY29uc3QgY2hhciogc3RyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09
IHN0cik7IH0KKwogICAgIEFMV0FZU19JTkxJTkUgb3BlcmF0b3IgY29uc3QgY2hhciogKCkgY29u
c3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KIAogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc051bGwo
KSBjb25zdCB7IHJldHVybiAhbV9zdHJpbmc7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19kb3dubG9hZF9qb2IuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Rvd25sb2FkX2pvYi5jcHAKaW5kZXggYzQxNjgxMC4uYTI3
YWJjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Rv
d25sb2FkX2pvYi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X2Rvd25sb2FkX2pvYi5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkRvd25sb2Fk
UHJveHkuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXS0VpbmFTaGFyZWRT
dHJpbmcuaCIKICNpbmNsdWRlICJXS1JldGFpblB0ci5oIgogI2luY2x1ZGUgIldlYlVSTFJlcXVl
c3QuaCIKICNpbmNsdWRlICJld2tfZG93bmxvYWRfam9iX3ByaXZhdGUuaCIKQEAgLTUwLDggKzUx
LDggQEAgc3RydWN0IF9Fd2tfRG93bmxvYWRfSm9iIHsKICAgICBkb3VibGUgc3RhcnRUaW1lOwog
ICAgIGRvdWJsZSBlbmRUaW1lOwogICAgIHVpbnQ2NF90IGRvd25sb2FkZWQ7IC8qKjwgbGVuZ3Ro
IGFscmVhZHkgZG93bmxvYWRlZCAqLwotICAgIGNvbnN0IGNoYXIqIGRlc3RpbmF0aW9uOwotICAg
IGNvbnN0IGNoYXIqIHN1Z2dlc3RlZEZpbGVuYW1lOworICAgIFdLRWluYVNoYXJlZFN0cmluZyBk
ZXN0aW5hdGlvbjsKKyAgICBXS0VpbmFTaGFyZWRTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWU7CiAK
ICAgICBfRXdrX0Rvd25sb2FkX0pvYihEb3dubG9hZFByb3h5KiBkb3dubG9hZCwgRXZhc19PYmpl
Y3QqIGV3a1ZpZXcpCiAgICAgICAgIDogX19yZWYoMSkKQEAgLTYzLDggKzY0LDYgQEAgc3RydWN0
IF9Fd2tfRG93bmxvYWRfSm9iIHsKICAgICAgICAgLCBzdGFydFRpbWUoLTEpCiAgICAgICAgICwg
ZW5kVGltZSgtMSkKICAgICAgICAgLCBkb3dubG9hZGVkKDApCi0gICAgICAgICwgZGVzdGluYXRp
b24oMCkKLSAgICAgICAgLCBzdWdnZXN0ZWRGaWxlbmFtZSgwKQogICAgIHsgfQogCiAgICAgfl9F
d2tfRG93bmxvYWRfSm9iKCkKQEAgLTc0LDggKzczLDYgQEAgc3RydWN0IF9Fd2tfRG93bmxvYWRf
Sm9iIHsKICAgICAgICAgICAgIGV3a191cmxfcmVxdWVzdF91bnJlZihyZXF1ZXN0KTsKICAgICAg
ICAgaWYgKHJlc3BvbnNlKQogICAgICAgICAgICAgZXdrX3VybF9yZXNwb25zZV91bnJlZihyZXNw
b25zZSk7Ci0gICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKGRlc3RpbmF0aW9uKTsKLSAgICAg
ICAgZWluYV9zdHJpbmdzaGFyZV9kZWwoc3VnZ2VzdGVkRmlsZW5hbWUpOwogICAgIH0KIH07CiAK
QEAgLTE1OSw3ICsxNTYsNyBAQCBFaW5hX0Jvb2wgZXdrX2Rvd25sb2FkX2pvYl9kZXN0aW5hdGlv
bl9zZXQoRXdrX0Rvd25sb2FkX0pvYiogZG93bmxvYWQsIGNvbnN0IGNoYQogICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChkb3dubG9hZCwgZmFsc2UpOwogICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOX1ZBTChkZXN0aW5hdGlvbiwgZmFsc2UpOwogCi0gICAgZWluYV9zdHJp
bmdzaGFyZV9yZXBsYWNlKCZkb3dubG9hZC0+ZGVzdGluYXRpb24sIGRlc3RpbmF0aW9uKTsKKyAg
ICBkb3dubG9hZC0+ZGVzdGluYXRpb24gPSBkZXN0aW5hdGlvbjsKIAogICAgIHJldHVybiB0cnVl
OwogfQpAQCAtMjM2LDcgKzIzMyw3IEBAIHZvaWQgZXdrX2Rvd25sb2FkX2pvYl9zdWdnZXN0ZWRf
ZmlsZW5hbWVfc2V0KEV3a19Eb3dubG9hZF9Kb2IqIGRvd25sb2FkLCBjb25zdCBjCiB7CiAgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oZG93bmxvYWQpOwogCi0gICAgZWluYV9zdHJpbmdz
aGFyZV9yZXBsYWNlKCZkb3dubG9hZC0+c3VnZ2VzdGVkRmlsZW5hbWUsIHN1Z2dlc3RlZEZpbGVu
YW1lKTsKKyAgICBkb3dubG9hZC0+c3VnZ2VzdGVkRmlsZW5hbWUgPSBzdWdnZXN0ZWRGaWxlbmFt
ZTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfaW50ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19p
bnRlbnQuY3BwCmluZGV4IDg1NjE3OTMuLjA1M2I5NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19pbnRlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19pbnRlbnQuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5j
bHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tBcnJheS5oIgogI2luY2x1ZGUgIldLRGlj
dGlvbmFyeS5oIgorI2luY2x1ZGUgIldLRWluYVNoYXJlZFN0cmluZy5oIgogI2luY2x1ZGUgIldL
SW50ZW50RGF0YS5oIgogI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCiAjaW5jbHVkZSAiV0tTdHJp
bmcuaCIKQEAgLTQ3LDI2ICs0OCwyMyBAQCBzdHJ1Y3QgX0V3a19JbnRlbnQgewogI2lmIEVOQUJM
RShXRUJfSU5URU5UUykKICAgICBXS1JldGFpblB0cjxXS0ludGVudERhdGFSZWY+IHdrSW50ZW50
OwogI2VuZGlmCi0gICAgY29uc3QgY2hhciogYWN0aW9uOwotICAgIGNvbnN0IGNoYXIqIHR5cGU7
Ci0gICAgY29uc3QgY2hhciogc2VydmljZTsKKyAgICBXS0VpbmFTaGFyZWRTdHJpbmcgYWN0aW9u
OworICAgIFdLRWluYVNoYXJlZFN0cmluZyB0eXBlOworICAgIFdLRWluYVNoYXJlZFN0cmluZyBz
ZXJ2aWNlOwogCiAgICAgX0V3a19JbnRlbnQoV0tJbnRlbnREYXRhUmVmIGludGVudFJlZikKICAg
ICAgICAgOiBfX3JlZigxKQogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKICAgICAgICAgLCB3a0lu
dGVudChpbnRlbnRSZWYpCisgICAgICAgICwgYWN0aW9uKEFkb3B0V0ssIFdLSW50ZW50RGF0YUNv
cHlBY3Rpb24oaW50ZW50UmVmKSkKKyAgICAgICAgLCB0eXBlKEFkb3B0V0ssIFdLSW50ZW50RGF0
YUNvcHlUeXBlKGludGVudFJlZikpCisgICAgICAgICwgc2VydmljZShBZG9wdFdLLCBXS0ludGVu
dERhdGFDb3B5U2VydmljZShpbnRlbnRSZWYpKQogI2VuZGlmCi0gICAgICAgICwgYWN0aW9uKDAp
Ci0gICAgICAgICwgdHlwZSgwKQotICAgICAgICAsIHNlcnZpY2UoMCkKICAgICB7IH0KIAogICAg
IH5fRXdrX0ludGVudCgpCiAgICAgewogICAgICAgICBBU1NFUlQoIV9fcmVmKTsKLSAgICAgICAg
ZWluYV9zdHJpbmdzaGFyZV9kZWwoYWN0aW9uKTsKLSAgICAgICAgZWluYV9zdHJpbmdzaGFyZV9k
ZWwodHlwZSk7Ci0gICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKHNlcnZpY2UpOwogICAgIH0K
IH07CiAKQEAgLTEwMyw0NyArMTAxLDIzIEBAIHZvaWQgZXdrX2ludGVudF91bnJlZihFd2tfSW50
ZW50KiBpbnRlbnQpCiAKIGNvbnN0IGNoYXIqIGV3a19pbnRlbnRfYWN0aW9uX2dldChjb25zdCBF
d2tfSW50ZW50KiBpbnRlbnQpCiB7Ci0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotICAgIEVXS19J
TlRFTlRfV0tfR0VUX09SX1JFVFVSTihpbnRlbnQsIHdrSW50ZW50LCAwKTsKLQotICAgIFdLUmV0
YWluUHRyPFdLU3RyaW5nUmVmPiB3a0FjdGlvbihBZG9wdFdLLCBXS0ludGVudERhdGFDb3B5QWN0
aW9uKHdrSW50ZW50KSk7Ci0gICAgRXdrX0ludGVudCogZXdrSW50ZW50ID0gY29uc3RfY2FzdDxF
d2tfSW50ZW50Kj4oaW50ZW50KTsKLSAgICBlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJmV3a0lu
dGVudC0+YWN0aW9uLCB0b0ltcGwod2tBY3Rpb24uZ2V0KCkpLT5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaW50ZW50LCAwKTsKIAog
ICAgIHJldHVybiBpbnRlbnQtPmFjdGlvbjsKLSNlbHNlCi0gICAgcmV0dXJuIDA7Ci0jZW5kaWYK
IH0KIAogY29uc3QgY2hhciogZXdrX2ludGVudF90eXBlX2dldChjb25zdCBFd2tfSW50ZW50KiBp
bnRlbnQpCiB7Ci0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotICAgIEVXS19JTlRFTlRfV0tfR0VU
X09SX1JFVFVSTihpbnRlbnQsIHdrSW50ZW50LCAwKTsKLQotICAgIFdLUmV0YWluUHRyPFdLU3Ry
aW5nUmVmPiB3a1R5cGUoQWRvcHRXSywgV0tJbnRlbnREYXRhQ29weVR5cGUod2tJbnRlbnQpKTsK
LSAgICBFd2tfSW50ZW50KiBld2tJbnRlbnQgPSBjb25zdF9jYXN0PEV3a19JbnRlbnQqPihpbnRl
bnQpOwotICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmZXdrSW50ZW50LT50eXBlLCB0b0lt
cGwod2tUeXBlLmdldCgpKS0+c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk5fVkFMKGludGVudCwgMCk7CiAKICAgICByZXR1cm4gaW50ZW50LT50
eXBlOwotI2Vsc2UKLSAgICByZXR1cm4gMDsKLSNlbmRpZgogfQogCiBjb25zdCBjaGFyKiBld2tf
aW50ZW50X3NlcnZpY2VfZ2V0KGNvbnN0IEV3a19JbnRlbnQqIGludGVudCkKIHsKLSNpZiBFTkFC
TEUoV0VCX0lOVEVOVFMpCi0gICAgRVdLX0lOVEVOVF9XS19HRVRfT1JfUkVUVVJOKGludGVudCwg
d2tJbnRlbnQsIDApOwotCi0gICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IHdrU2VydmljZShBZG9w
dFdLLCBXS0ludGVudERhdGFDb3B5U2VydmljZSh3a0ludGVudCkpOwotICAgIEV3a19JbnRlbnQq
IGV3a0ludGVudCA9IGNvbnN0X2Nhc3Q8RXdrX0ludGVudCo+KGludGVudCk7Ci0gICAgZWluYV9z
dHJpbmdzaGFyZV9yZXBsYWNlKCZld2tJbnRlbnQtPnNlcnZpY2UsIHRvSW1wbCh3a1NlcnZpY2Uu
Z2V0KCkpLT5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTl9WQUwoaW50ZW50LCAwKTsKIAogICAgIHJldHVybiBpbnRlbnQtPnNlcnZpY2U7Ci0j
ZWxzZQotICAgIHJldHVybiAwOwotI2VuZGlmCiB9CiAKIEVpbmFfTGlzdCogZXdrX2ludGVudF9z
dWdnZXN0aW9uc19nZXQoY29uc3QgRXdrX0ludGVudCogaW50ZW50KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudF9zZXJ2aWNlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19pbnRlbnRfc2VydmljZS5jcHAKaW5k
ZXggMTg0MjJiNy4uMTkyMTU3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX2ludGVudF9zZXJ2aWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfaW50ZW50X3NlcnZpY2UuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpbmNsdWRlICJJbnRlbnRTZXJ2aWNlSW5mby5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgor
I2luY2x1ZGUgIldLRWluYVNoYXJlZFN0cmluZy5oIgogI2luY2x1ZGUgIldLSW50ZW50U2Vydmlj
ZUluZm8uaCIKICNpbmNsdWRlICJXS1JldGFpblB0ci5oIgogI2luY2x1ZGUgIldLVVJMLmgiCkBA
IC00Miw0OSArNDMsMzAgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKICAqLwogc3RydWN0IF9F
d2tfSW50ZW50X1NlcnZpY2UgewogICAgIHVuc2lnbmVkIGludCBfX3JlZjsgLyoqPCB0aGUgcmVm
ZXJlbmNlIGNvdW50IG9mIHRoZSBvYmplY3QgKi8KLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFNfVEFH
KQotICAgIFdLUmV0YWluUHRyPFdLSW50ZW50U2VydmljZUluZm9SZWY+IHdrU2VydmljZTsKLSNl
bmRpZgotICAgIGNvbnN0IGNoYXIqIGFjdGlvbjsKLSAgICBjb25zdCBjaGFyKiB0eXBlOwotICAg
IGNvbnN0IGNoYXIqIGhyZWY7Ci0gICAgY29uc3QgY2hhciogdGl0bGU7Ci0gICAgY29uc3QgY2hh
ciogZGlzcG9zaXRpb247CisKKyAgICBXS0VpbmFTaGFyZWRTdHJpbmcgYWN0aW9uOworICAgIFdL
RWluYVNoYXJlZFN0cmluZyB0eXBlOworICAgIFdLRWluYVNoYXJlZFN0cmluZyBocmVmOworICAg
IFdLRWluYVNoYXJlZFN0cmluZyB0aXRsZTsKKyAgICBXS0VpbmFTaGFyZWRTdHJpbmcgZGlzcG9z
aXRpb247CiAKICAgICBfRXdrX0ludGVudF9TZXJ2aWNlKFdLSW50ZW50U2VydmljZUluZm9SZWYg
c2VydmljZVJlZikKICAgICAgICAgOiBfX3JlZigxKQogI2lmIEVOQUJMRShXRUJfSU5URU5UU19U
QUcpCi0gICAgICAgICwgd2tTZXJ2aWNlKHNlcnZpY2VSZWYpCisgICAgICAgICwgYWN0aW9uKEFk
b3B0V0ssIFdLSW50ZW50U2VydmljZUluZm9Db3B5QWN0aW9uKHNlcnZpY2VSZWYpKQorICAgICAg
ICAsIHR5cGUoQWRvcHRXSywgV0tJbnRlbnRTZXJ2aWNlSW5mb0NvcHlUeXBlKHNlcnZpY2VSZWYp
KQorICAgICAgICAsIGhyZWYoQWRvcHRXSywgV0tJbnRlbnRTZXJ2aWNlSW5mb0NvcHlIcmVmKHNl
cnZpY2VSZWYpKQorICAgICAgICAsIHRpdGxlKEFkb3B0V0ssIFdLSW50ZW50U2VydmljZUluZm9D
b3B5VGl0bGUoc2VydmljZVJlZikpCisgICAgICAgICwgZGlzcG9zaXRpb24oQWRvcHRXSywgV0tJ
bnRlbnRTZXJ2aWNlSW5mb0NvcHlEaXNwb3NpdGlvbihzZXJ2aWNlUmVmKSkKICNlbmRpZgotICAg
ICAgICAsIGFjdGlvbigwKQotICAgICAgICAsIHR5cGUoMCkKLSAgICAgICAgLCBocmVmKDApCi0g
ICAgICAgICwgdGl0bGUoMCkKLSAgICAgICAgLCBkaXNwb3NpdGlvbigwKQogICAgIHsgfQogCiAg
ICAgfl9Fd2tfSW50ZW50X1NlcnZpY2UoKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFfX3JlZik7
Ci0gICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKGFjdGlvbik7Ci0gICAgICAgIGVpbmFfc3Ry
aW5nc2hhcmVfZGVsKHR5cGUpOwotICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChocmVmKTsK
LSAgICAgICAgZWluYV9zdHJpbmdzaGFyZV9kZWwodGl0bGUpOwotICAgICAgICBlaW5hX3N0cmlu
Z3NoYXJlX2RlbChkaXNwb3NpdGlvbik7CiAgICAgfQogfTsKIAotI2RlZmluZSBFV0tfSU5URU5U
X1NFUlZJQ0VfV0tfR0VUX09SX1JFVFVSTihzZXJ2aWNlLCB3a1NlcnZpY2VfLCAuLi4pIFwKLSAg
ICBpZiAoIShzZXJ2aWNlKSkgeyBcCi0gICAgICAgIEVJTkFfTE9HX0NSSVQoInNlcnZpY2UgaXMg
TlVMTC4iKTsgXAotICAgICAgICByZXR1cm4gX19WQV9BUkdTX187IFwKLSAgICB9IFwKLSAgICBp
ZiAoIShzZXJ2aWNlKS0+d2tTZXJ2aWNlKSB7IFwKLSAgICAgICAgRUlOQV9MT0dfQ1JJVCgic2Vy
dmljZS0+d2tTZXJ2aWNlIGlzIE5VTEwuIik7IFwKLSAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19f
OyBcCi0gICAgfSBcCi0gICAgV0tJbnRlbnRTZXJ2aWNlSW5mb1JlZiB3a1NlcnZpY2VfID0gKHNl
cnZpY2UpLT53a1NlcnZpY2UuZ2V0KCkKLQogdm9pZCBld2tfaW50ZW50X3NlcnZpY2VfcmVmKEV3
a19JbnRlbnRfU2VydmljZSogc2VydmljZSkKIHsKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFNfVEFH
KQpAQCAtMTA3LDc3ICs4OSwzNyBAQCB2b2lkIGV3a19pbnRlbnRfc2VydmljZV91bnJlZihFd2tf
SW50ZW50X1NlcnZpY2UqIHNlcnZpY2UpCiAKIGNvbnN0IGNoYXIqIGV3a19pbnRlbnRfc2Vydmlj
ZV9hY3Rpb25fZ2V0KGNvbnN0IEV3a19JbnRlbnRfU2VydmljZSogc2VydmljZSkKIHsKLSNpZiBF
TkFCTEUoV0VCX0lOVEVOVFNfVEFHKQotICAgIEVXS19JTlRFTlRfU0VSVklDRV9XS19HRVRfT1Jf
UkVUVVJOKHNlcnZpY2UsIHdrU2VydmljZSwgMCk7Ci0KLSAgICBXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4gd2tBY3Rpb24oQWRvcHRXSywgV0tJbnRlbnRTZXJ2aWNlSW5mb0NvcHlBY3Rpb24od2tT
ZXJ2aWNlKSk7Ci0gICAgRXdrX0ludGVudF9TZXJ2aWNlKiBld2tJbnRlbnRTZXJ2aWNlID0gY29u
c3RfY2FzdDxFd2tfSW50ZW50X1NlcnZpY2UqPihzZXJ2aWNlKTsKLSAgICBlaW5hX3N0cmluZ3No
YXJlX3JlcGxhY2UoJmV3a0ludGVudFNlcnZpY2UtPmFjdGlvbiwgdG9JbXBsKHdrQWN0aW9uLmdl
dCgpKS0+c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKHNlcnZpY2UsIDApOwogCiAgICAgcmV0dXJuIHNlcnZpY2UtPmFjdGlvbjsKLSNl
bHNlCi0gICAgcmV0dXJuIDA7Ci0jZW5kaWYKIH0KIAogY29uc3QgY2hhciogZXdrX2ludGVudF9z
ZXJ2aWNlX3R5cGVfZ2V0KGNvbnN0IEV3a19JbnRlbnRfU2VydmljZSogc2VydmljZSkKIHsKLSNp
ZiBFTkFCTEUoV0VCX0lOVEVOVFNfVEFHKQotICAgIEVXS19JTlRFTlRfU0VSVklDRV9XS19HRVRf
T1JfUkVUVVJOKHNlcnZpY2UsIHdrU2VydmljZSwgMCk7Ci0KLSAgICBXS1JldGFpblB0cjxXS1N0
cmluZ1JlZj4gd2tUeXBlKEFkb3B0V0ssIFdLSW50ZW50U2VydmljZUluZm9Db3B5VHlwZSh3a1Nl
cnZpY2UpKTsKLSAgICBFd2tfSW50ZW50X1NlcnZpY2UqIGV3a0ludGVudFNlcnZpY2UgPSBjb25z
dF9jYXN0PEV3a19JbnRlbnRfU2VydmljZSo+KHNlcnZpY2UpOwotICAgIGVpbmFfc3RyaW5nc2hh
cmVfcmVwbGFjZSgmZXdrSW50ZW50U2VydmljZS0+dHlwZSwgdG9JbXBsKHdrVHlwZS5nZXQoKSkt
PnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
X1ZBTChzZXJ2aWNlLCAwKTsKIAogICAgIHJldHVybiBzZXJ2aWNlLT50eXBlOwotI2Vsc2UKLSAg
ICByZXR1cm4gMDsKLSNlbmRpZgogfQogCiBjb25zdCBjaGFyKiBld2tfaW50ZW50X3NlcnZpY2Vf
aHJlZl9nZXQoY29uc3QgRXdrX0ludGVudF9TZXJ2aWNlKiBzZXJ2aWNlKQogewotI2lmIEVOQUJM
RShXRUJfSU5URU5UU19UQUcpCi0gICAgRVdLX0lOVEVOVF9TRVJWSUNFX1dLX0dFVF9PUl9SRVRV
Uk4oc2VydmljZSwgd2tTZXJ2aWNlLCAwKTsKLQotICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiB3
a0hyZWYoQWRvcHRXSywgV0tJbnRlbnRTZXJ2aWNlSW5mb0NvcHlIcmVmKHdrU2VydmljZSkpOwot
ICAgIEV3a19JbnRlbnRfU2VydmljZSogZXdrSW50ZW50U2VydmljZSA9IGNvbnN0X2Nhc3Q8RXdr
X0ludGVudF9TZXJ2aWNlKj4oc2VydmljZSk7Ci0gICAgZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNl
KCZld2tJbnRlbnRTZXJ2aWNlLT5ocmVmLCB0b0ltcGwod2tIcmVmLmdldCgpKS0+c3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNlcnZp
Y2UsIDApOwogCiAgICAgcmV0dXJuIHNlcnZpY2UtPmhyZWY7Ci0jZWxzZQotICAgIHJldHVybiAw
OwotI2VuZGlmCiB9CiAKIGNvbnN0IGNoYXIqIGV3a19pbnRlbnRfc2VydmljZV90aXRsZV9nZXQo
Y29uc3QgRXdrX0ludGVudF9TZXJ2aWNlKiBzZXJ2aWNlKQogewotI2lmIEVOQUJMRShXRUJfSU5U
RU5UU19UQUcpCi0gICAgRVdLX0lOVEVOVF9TRVJWSUNFX1dLX0dFVF9PUl9SRVRVUk4oc2Vydmlj
ZSwgd2tTZXJ2aWNlLCAwKTsKLQotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB3a1RpdGxl
KEFkb3B0V0ssIFdLSW50ZW50U2VydmljZUluZm9Db3B5VGl0bGUod2tTZXJ2aWNlKSk7Ci0gICAg
RXdrX0ludGVudF9TZXJ2aWNlKiBld2tJbnRlbnRTZXJ2aWNlID0gY29uc3RfY2FzdDxFd2tfSW50
ZW50X1NlcnZpY2UqPihzZXJ2aWNlKTsKLSAgICBlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJmV3
a0ludGVudFNlcnZpY2UtPnRpdGxlLCB0b0ltcGwod2tUaXRsZS5nZXQoKSktPnN0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZXJ2aWNl
LCAwKTsKIAogICAgIHJldHVybiBzZXJ2aWNlLT50aXRsZTsKLSNlbHNlCi0gICAgcmV0dXJuIDA7
Ci0jZW5kaWYKIH0KIAogY29uc3QgY2hhciogZXdrX2ludGVudF9zZXJ2aWNlX2Rpc3Bvc2l0aW9u
X2dldChjb25zdCBFd2tfSW50ZW50X1NlcnZpY2UqIHNlcnZpY2UpCiB7Ci0jaWYgRU5BQkxFKFdF
Ql9JTlRFTlRTX1RBRykKLSAgICBFV0tfSU5URU5UX1NFUlZJQ0VfV0tfR0VUX09SX1JFVFVSTihz
ZXJ2aWNlLCB3a1NlcnZpY2UsIDApOwotCi0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdr
RGlzcG9zaXRpb24oQWRvcHRXSywgV0tJbnRlbnRTZXJ2aWNlSW5mb0NvcHlEaXNwb3NpdGlvbih3
a1NlcnZpY2UpKTsKLSAgICBFd2tfSW50ZW50X1NlcnZpY2UqIGV3a0ludGVudFNlcnZpY2UgPSBj
b25zdF9jYXN0PEV3a19JbnRlbnRfU2VydmljZSo+KHNlcnZpY2UpOwotICAgIGVpbmFfc3RyaW5n
c2hhcmVfcmVwbGFjZSgmZXdrSW50ZW50U2VydmljZS0+ZGlzcG9zaXRpb24sIHRvSW1wbCh3a0Rp
c3Bvc2l0aW9uLmdldCgpKS0+c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk5fVkFMKHNlcnZpY2UsIDApOwogCiAgICAgcmV0dXJuIHNlcnZpY2Ut
PmRpc3Bvc2l0aW9uOwotI2Vsc2UKLSAgICByZXR1cm4gMDsKLSNlbmRpZgogfQogCiAjaWYgRU5B
QkxFKFdFQl9JTlRFTlRTX1RBRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24uY3Bw
CmluZGV4IGFlNzI1ZDcuLjE5MDgxMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lz
aW9uLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImV3a19uYXZpZ2F0aW9uX3BvbGlj
eV9kZWNpc2lvbi5oIgogCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tFaW5h
U2hhcmVkU3RyaW5nLmgiCiAjaW5jbHVkZSAiV0tGcmFtZVBvbGljeUxpc3RlbmVyLmgiCiAjaW5j
bHVkZSAiV0tSZXRhaW5QdHIuaCIKICNpbmNsdWRlICJld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVj
aXNpb25fcHJpdmF0ZS5oIgpAQCAtNDcsNyArNDgsNyBAQCBzdHJ1Y3QgX0V3a19OYXZpZ2F0aW9u
X1BvbGljeV9EZWNpc2lvbiB7CiAgICAgRXZlbnRfTW91c2VfQnV0dG9uIG1vdXNlQnV0dG9uOwog
ICAgIEV2ZW50X01vZGlmaWVyX0tleXMgbW9kaWZpZXJzOwogICAgIEV3a19VcmxfUmVxdWVzdCog
cmVxdWVzdDsKLSAgICBjb25zdCBjaGFyKiBmcmFtZU5hbWU7CisgICAgV0tFaW5hU2hhcmVkU3Ry
aW5nIGZyYW1lTmFtZTsKIAogICAgIF9Fd2tfTmF2aWdhdGlvbl9Qb2xpY3lfRGVjaXNpb24oV0tG
cmFtZVBvbGljeUxpc3RlbmVyUmVmIF9saXN0ZW5lciwgRXdrX05hdmlnYXRpb25fVHlwZSBfbmF2
aWdhdGlvblR5cGUsIEV2ZW50X01vdXNlX0J1dHRvbiBfbW91c2VCdXR0b24sIEV2ZW50X01vZGlm
aWVyX0tleXMgX21vZGlmaWVycywgRXdrX1VybF9SZXF1ZXN0KiBfcmVxdWVzdCwgY29uc3QgY2hh
ciogX2ZyYW1lTmFtZSkKICAgICAgICAgOiBfX3JlZigxKQpAQCAtNTcsNyArNTgsNyBAQCBzdHJ1
Y3QgX0V3a19OYXZpZ2F0aW9uX1BvbGljeV9EZWNpc2lvbiB7CiAgICAgICAgICwgbW91c2VCdXR0
b24oX21vdXNlQnV0dG9uKQogICAgICAgICAsIG1vZGlmaWVycyhfbW9kaWZpZXJzKQogICAgICAg
ICAsIHJlcXVlc3QoX3JlcXVlc3QpCi0gICAgICAgICwgZnJhbWVOYW1lKGVpbmFfc3RyaW5nc2hh
cmVfYWRkKF9mcmFtZU5hbWUpKQorICAgICAgICAsIGZyYW1lTmFtZShfZnJhbWVOYW1lKQogICAg
IHsgfQogCiAgICAgfl9Fd2tfTmF2aWdhdGlvbl9Qb2xpY3lfRGVjaXNpb24oKQpAQCAtNjksNyAr
NzAsNiBAQCBzdHJ1Y3QgX0V3a19OYXZpZ2F0aW9uX1BvbGljeV9EZWNpc2lvbiB7CiAgICAgICAg
ICAgICBXS0ZyYW1lUG9saWN5TGlzdGVuZXJVc2UobGlzdGVuZXIuZ2V0KCkpOwogCiAgICAgICAg
IGV3a191cmxfcmVxdWVzdF91bnJlZihyZXF1ZXN0KTsKLSAgICAgICAgZWluYV9zdHJpbmdzaGFy
ZV9kZWwoZnJhbWVOYW1lKTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3JlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXF1ZXN0LmNwcAppbmRleCBmMjA5OTUyLi41ODE2
YjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJs
X3JlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191
cmxfcmVxdWVzdC5jcHAKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJld2tfdXJsX3JlcXVl
c3QuaCIKIAogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgotI2luY2x1ZGUgIldLUmV0YWluUHRyLmgi
CisjaW5jbHVkZSAiV0tFaW5hU2hhcmVkU3RyaW5nLmgiCiAjaW5jbHVkZSAiV0tVUkwuaCIKICNp
bmNsdWRlICJXS1VSTFJlcXVlc3QuaCIKICNpbmNsdWRlICJXZWJVUkxSZXF1ZXN0LmgiCkBAIC00
Miw0MCArNDIsMjQgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKICAqLwogc3RydWN0IF9Fd2tf
VXJsX1JlcXVlc3QgewogICAgIHVuc2lnbmVkIGludCBfX3JlZjsgLyoqPCB0aGUgcmVmZXJlbmNl
IGNvdW50IG9mIHRoZSBvYmplY3QgKi8KLSAgICBXS1JldGFpblB0cjxXS1VSTFJlcXVlc3RSZWY+
IHdrUmVxdWVzdDsKIAotICAgIGNvbnN0IGNoYXIqIHVybDsKLSAgICBjb25zdCBjaGFyKiBmaXJz
dF9wYXJ0eTsKLSAgICBjb25zdCBjaGFyKiBodHRwX21ldGhvZDsKKyAgICBXS0VpbmFTaGFyZWRT
dHJpbmcgdXJsOworICAgIFdLRWluYVNoYXJlZFN0cmluZyBmaXJzdF9wYXJ0eTsKKyAgICBXS0Vp
bmFTaGFyZWRTdHJpbmcgaHR0cF9tZXRob2Q7CiAKICAgICBfRXdrX1VybF9SZXF1ZXN0KFdLVVJM
UmVxdWVzdFJlZiByZXF1ZXN0UmVmKQogICAgICAgICA6IF9fcmVmKDEpCi0gICAgICAgICwgd2tS
ZXF1ZXN0KHJlcXVlc3RSZWYpCi0gICAgICAgICwgdXJsKDApCi0gICAgICAgICwgZmlyc3RfcGFy
dHkoMCkKLSAgICAgICAgLCBodHRwX21ldGhvZCgwKQorICAgICAgICAsIHVybChBZG9wdFdLLCBX
S1VSTFJlcXVlc3RDb3B5VVJMKHJlcXVlc3RSZWYpKQorICAgICAgICAsIGZpcnN0X3BhcnR5KEFk
b3B0V0ssIFdLVVJMUmVxdWVzdENvcHlGaXJzdFBhcnR5Rm9yQ29va2llcyhyZXF1ZXN0UmVmKSkK
KyAgICAgICAgLCBodHRwX21ldGhvZChBZG9wdFdLLCBXS1VSTFJlcXVlc3RDb3B5SFRUUE1ldGhv
ZChyZXF1ZXN0UmVmKSkKICAgICB7IH0KIAogICAgIH5fRXdrX1VybF9SZXF1ZXN0KCkKICAgICB7
CiAgICAgICAgIEFTU0VSVCghX19yZWYpOwotICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbCh1
cmwpOwotICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChmaXJzdF9wYXJ0eSk7Ci0gICAgICAg
IGVpbmFfc3RyaW5nc2hhcmVfZGVsKGh0dHBfbWV0aG9kKTsKICAgICB9CiB9OwogCi0jZGVmaW5l
IEVXS19VUkxfUkVRVUVTVF9XS19HRVRfT1JfUkVUVVJOKHJlcXVlc3QsIHdrUmVxdWVzdF8sIC4u
LikgICAgXAotICAgIGlmICghKHJlcXVlc3QpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgRUlOQV9MT0dfQ1JJVCgicmVxdWVzdCBp
cyBOVUxMLiIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHJldHVybiBf
X1ZBX0FSR1NfXzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot
ICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKLSAgICBpZiAoIShyZXF1ZXN0KS0+d2tSZXF1ZXN0KSB7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIEVJTkFfTE9HX0NSSVQoInJl
cXVlc3QtPndrUmVxdWVzdCBpcyBOVUxMLiIpOyAgICAgICAgICAgICAgICAgXAotICAgICAgICBy
ZXR1cm4gX19WQV9BUkdTX187ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCi0gICAgV0tVUkxSZXF1ZXN0UmVmIHdrUmVxdWVzdF8gPSAo
cmVxdWVzdCktPndrUmVxdWVzdC5nZXQoKQotCiB2b2lkIGV3a191cmxfcmVxdWVzdF9yZWYoRXdr
X1VybF9SZXF1ZXN0KiByZXF1ZXN0KQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
KHJlcXVlc3QpOwpAQCAtOTQsMzEgKzc4LDIxIEBAIHZvaWQgZXdrX3VybF9yZXF1ZXN0X3VucmVm
KEV3a19VcmxfUmVxdWVzdCogcmVxdWVzdCkKIAogY29uc3QgY2hhciogZXdrX3VybF9yZXF1ZXN0
X3VybF9nZXQoY29uc3QgRXdrX1VybF9SZXF1ZXN0KiByZXF1ZXN0KQogewotICAgIEVXS19VUkxf
UkVRVUVTVF9XS19HRVRfT1JfUkVUVVJOKHJlcXVlc3QsIHdrUmVxdWVzdCwgMCk7Ci0KLSAgICBX
S1JldGFpblB0cjxXS1VSTFJlZj4gd2tVcmwoQWRvcHRXSywgV0tVUkxSZXF1ZXN0Q29weVVSTCh3
a1JlcXVlc3QpKTsKLSAgICBFd2tfVXJsX1JlcXVlc3QqIGV3a1JlcXVlc3QgPSBjb25zdF9jYXN0
PEV3a19VcmxfUmVxdWVzdCo+KHJlcXVlc3QpOwotICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVwbGFj
ZSgmZXdrUmVxdWVzdC0+dXJsLCB0b0ltcGwod2tVcmwuZ2V0KCkpLT5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocmVxdWVzdCwgMCk7
CiAKICAgICByZXR1cm4gcmVxdWVzdC0+dXJsOwogfQogCiBjb25zdCBjaGFyKiBld2tfcmVxdWVz
dF9jb29raWVzX2ZpcnN0X3BhcnR5X2dldChjb25zdCBFd2tfVXJsX1JlcXVlc3QqIHJlcXVlc3Qp
CiB7Ci0gICAgRVdLX1VSTF9SRVFVRVNUX1dLX0dFVF9PUl9SRVRVUk4ocmVxdWVzdCwgd2tSZXF1
ZXN0LCAwKTsKLQotICAgIEV3a19VcmxfUmVxdWVzdCogZXdrUmVxdWVzdCA9IGNvbnN0X2Nhc3Q8
RXdrX1VybF9SZXF1ZXN0Kj4ocmVxdWVzdCk7Ci0gICAgZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNl
KCZld2tSZXF1ZXN0LT5maXJzdF9wYXJ0eSwgdG9JbXBsKHdrUmVxdWVzdCktPnJlc291cmNlUmVx
dWVzdCgpLmZpcnN0UGFydHlGb3JDb29raWVzKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Cisg
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHJlcXVlc3QsIDApOwogCiAgICAgcmV0
dXJuIHJlcXVlc3QtPmZpcnN0X3BhcnR5OwogfQogCiBjb25zdCBjaGFyKiBld2tfdXJsX3JlcXVl
c3RfaHR0cF9tZXRob2RfZ2V0KGNvbnN0IEV3a19VcmxfUmVxdWVzdCogcmVxdWVzdCkKIHsKLSAg
ICBFV0tfVVJMX1JFUVVFU1RfV0tfR0VUX09SX1JFVFVSTihyZXF1ZXN0LCB3a1JlcXVlc3QsIDAp
OwotCi0gICAgRXdrX1VybF9SZXF1ZXN0KiBld2tSZXF1ZXN0ID0gY29uc3RfY2FzdDxFd2tfVXJs
X1JlcXVlc3QqPihyZXF1ZXN0KTsKLSAgICBlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJmV3a1Jl
cXVlc3QtPmh0dHBfbWV0aG9kLCB0b0ltcGwod2tSZXF1ZXN0KS0+cmVzb3VyY2VSZXF1ZXN0KCku
aHR0cE1ldGhvZCgpLnV0ZjgoKS5kYXRhKCkpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOX1ZBTChyZXF1ZXN0LCAwKTsKIAogICAgIHJldHVybiByZXF1ZXN0LT5odHRwX21ldGhvZDsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxf
cmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9y
ZXNwb25zZS5jcHAKaW5kZXggOGY5ZjUzNi4uOGQwYThlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXNwb25zZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXNwb25zZS5jcHAKQEAgLTI2LDkg
KzI2LDE0IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiZXdrX3VybF9yZXNwb25z
ZS5oIgogCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tFaW5hU2hhcmVkU3Ry
aW5nLmgiCisjaW5jbHVkZSAiV0tVUkxSZXNwb25zZS5oIgogI2luY2x1ZGUgImV3a191cmxfcmVz
cG9uc2VfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAordXNpbmcg
bmFtZXNwYWNlIFdlYktpdDsKKwogLyoqCiAgKiBcc3RydWN0ICBfRXdrX1VybF9SZXNwb25zZQog
ICogQGJyaWVmICAgQ29udGFpbnMgdGhlIFVSTCByZXNwb25zZSBkYXRhLgpAQCAtMzcsMjEgKzQy
LDE5IEBAIHN0cnVjdCBfRXdrX1VybF9SZXNwb25zZSB7CiAgICAgdW5zaWduZWQgaW50IF9fcmVm
OyAvKio8IHRoZSByZWZlcmVuY2UgY291bnQgb2YgdGhlIG9iamVjdCAqLwogICAgIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UgY29yZVJlc3BvbnNlOwogCi0gICAgY29uc3QgY2hhciogdXJsOwot
ICAgIGNvbnN0IGNoYXIqIG1pbWVUeXBlOworICAgIFdLRWluYVNoYXJlZFN0cmluZyB1cmw7Cisg
ICAgV0tFaW5hU2hhcmVkU3RyaW5nIG1pbWVUeXBlOwogCiAgICAgX0V3a19VcmxfUmVzcG9uc2Uo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgX2NvcmVSZXNwb25zZSkKICAgICAgICAg
OiBfX3JlZigxKQogICAgICAgICAsIGNvcmVSZXNwb25zZShfY29yZVJlc3BvbnNlKQotICAgICAg
ICAsIHVybCgwKQotICAgICAgICAsIG1pbWVUeXBlKDApCisgICAgICAgICwgdXJsKEFkb3B0V0ss
IFdLVVJMUmVzcG9uc2VDb3B5VVJMKHRvQVBJKGNvcmVSZXNwb25zZSkpKQorICAgICAgICAsIG1p
bWVUeXBlKEFkb3B0V0ssIFdLVVJMUmVzcG9uc2VDb3B5TUlNRVR5cGUodG9BUEkoY29yZVJlc3Bv
bnNlKSkpCiAgICAgeyB9CiAKICAgICB+X0V3a19VcmxfUmVzcG9uc2UoKQogICAgIHsKICAgICAg
ICAgQVNTRVJUKCFfX3JlZik7Ci0gICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKHVybCk7Ci0g
ICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKG1pbWVUeXBlKTsKICAgICB9CiB9OwogCkBAIC03
NSw5ICs3OCw2IEBAIGNvbnN0IGNoYXIqIGV3a191cmxfcmVzcG9uc2VfdXJsX2dldChjb25zdCBF
d2tfVXJsX1Jlc3BvbnNlKiByZXNwb25zZSkKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTl9WQUwocmVzcG9uc2UsIDApOwogCi0gICAgRXdrX1VybF9SZXNwb25zZSogZXdrUmVzcG9u
c2UgPSBjb25zdF9jYXN0PEV3a19VcmxfUmVzcG9uc2UqPihyZXNwb25zZSk7Ci0gICAgZWluYV9z
dHJpbmdzaGFyZV9yZXBsYWNlKCZld2tSZXNwb25zZS0+dXJsLCByZXNwb25zZS0+Y29yZVJlc3Bv
bnNlLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotCiAgICAgcmV0dXJuIHJlc3BvbnNl
LT51cmw7CiB9CiAKQEAgLTkyLDkgKzkyLDYgQEAgY29uc3QgY2hhciogZXdrX3VybF9yZXNwb25z
ZV9taW1lX3R5cGVfZ2V0KGNvbnN0IEV3a19VcmxfUmVzcG9uc2UqIHJlc3BvbnNlKQogewogICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChyZXNwb25zZSwgMCk7CiAKLSAgICBFd2tf
VXJsX1Jlc3BvbnNlKiBld2tSZXNwb25zZSA9IGNvbnN0X2Nhc3Q8RXdrX1VybF9SZXNwb25zZSo+
KHJlc3BvbnNlKTsKLSAgICBlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJmV3a1Jlc3BvbnNlLT5t
aW1lVHlwZSwgcmVzcG9uc2UtPmNvcmVSZXNwb25zZS5taW1lVHlwZSgpLnV0ZjgoKS5kYXRhKCkp
OwotCiAgICAgcmV0dXJuIHJlc3BvbnNlLT5taW1lVHlwZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCmluZGV4IDdkOGIxY2UuLmNlN2Y3YjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKQEAg
LTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJOYXRpdmVXZWJXaGVlbEV2ZW50LmgiCiAjaW5jbHVk
ZSAiUGFnZUNsaWVudEltcGwuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJX
S0VpbmFTaGFyZWRTdHJpbmcuaCIKICNpbmNsdWRlICJXS0ZpbmRPcHRpb25zLmgiCiAjaW5jbHVk
ZSAiV0tSZXRhaW5QdHIuaCIKICNpbmNsdWRlICJXS1N0cmluZy5oIgpAQCAtNzMsMTEgKzc0LDEx
IEBAIHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICBPd25QdHI8RWZsVmlld3Bv
cnRIYW5kbGVyPiB2aWV3cG9ydEhhbmRsZXI7CiAjZW5kaWYKIAotICAgIGNvbnN0IGNoYXIqIHVy
aTsKLSAgICBjb25zdCBjaGFyKiB0aXRsZTsKLSAgICBjb25zdCBjaGFyKiB0aGVtZTsKLSAgICBj
b25zdCBjaGFyKiBjdXN0b21FbmNvZGluZzsKLSAgICBjb25zdCBjaGFyKiBjdXJzb3JHcm91cDsK
KyAgICBXS0VpbmFTaGFyZWRTdHJpbmcgdXJpOworICAgIFdLRWluYVNoYXJlZFN0cmluZyB0aXRs
ZTsKKyAgICBXS0VpbmFTaGFyZWRTdHJpbmcgdGhlbWU7CisgICAgV0tFaW5hU2hhcmVkU3RyaW5n
IGN1c3RvbUVuY29kaW5nOworICAgIFdLRWluYVNoYXJlZFN0cmluZyBjdXJzb3JHcm91cDsKICAg
ICBFdmFzX09iamVjdCogY3Vyc29yT2JqZWN0OwogICAgIExvYWRpbmdSZXNvdXJjZXNNYXAgbG9h
ZGluZ1Jlc291cmNlc01hcDsKICAgICBFd2tfQmFja19Gb3J3YXJkX0xpc3QqIGJhY2tGb3J3YXJk
TGlzdDsKQEAgLTkzLDEyICs5NCw3IEBAIHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsK
ICNlbmRpZgogCiAgICAgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSgpCi0gICAgICAgIDogdXJpKDAp
Ci0gICAgICAgICwgdGl0bGUoMCkKLSAgICAgICAgLCB0aGVtZSgwKQotICAgICAgICAsIGN1c3Rv
bUVuY29kaW5nKDApCi0gICAgICAgICwgY3Vyc29yR3JvdXAoMCkKLSAgICAgICAgLCBjdXJzb3JP
YmplY3QoMCkKKyAgICAgICAgOiBjdXJzb3JPYmplY3QoMCkKICAgICAgICAgLCBiYWNrRm9yd2Fy
ZExpc3QoMCkKICNpZmRlZiBIQVZFX0VDT1JFX1gKICAgICAgICAgLCBpc1VzaW5nRWNvcmVYKGZh
bHNlKQpAQCAtMTEyLDEwICsxMDgsNiBAQCBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7
CiAKICAgICB+X0V3a19WaWV3X1ByaXZhdGVfRGF0YSgpCiAgICAgewotICAgICAgICBlaW5hX3N0
cmluZ3NoYXJlX2RlbCh1cmkpOwotICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbCh0aXRsZSk7
Ci0gICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKHRoZW1lKTsKLSAgICAgICAgZWluYV9zdHJp
bmdzaGFyZV9kZWwoY3VzdG9tRW5jb2RpbmcpOwogICAgICAgICBfZXdrX3ZpZXdfcHJpdl9sb2Fk
aW5nX3Jlc291cmNlc19jbGVhcihsb2FkaW5nUmVzb3VyY2VzTWFwKTsKIAogICAgICAgICBpZiAo
Y3Vyc29yT2JqZWN0KQpAQCAtNzcxLDEwICs3NjMsMTIgQEAgdm9pZCBld2tfdmlld191cmlfdXBk
YXRlKEV2YXNfT2JqZWN0KiBld2tWaWV3KQogICAgIGlmIChhY3RpdmVVUkwuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIWVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmcHJp
di0+dXJpLCBhY3RpdmVVUkwudXRmOCgpLmRhdGEoKSkpCisgICAgaWYgKHByaXYtPnVyaSA9PSBh
Y3RpdmVVUkwudXRmOCgpLmRhdGEoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZXZhc19vYmpl
Y3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAidXJpLGNoYW5nZWQiLCBzdGF0aWNfY2Fz
dDx2b2lkKj4oY29uc3RfY2FzdDxjaGFyKj4ocHJpdi0+dXJpKSkpOworICAgIHByaXYtPnVyaSA9
IGFjdGl2ZVVSTC51dGY4KCkuZGF0YSgpOworICAgIGNvbnN0IGNoYXIqIGNhbGxiYWNrQXJndW1l
bnQgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4ocHJpdi0+dXJpKTsKKyAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJ1cmksY2hhbmdlZCIsIGNvbnN0X2Nhc3Q8
Y2hhcio+KGNhbGxiYWNrQXJndW1lbnQpKTsKIH0KIAogRWluYV9Cb29sIGV3a192aWV3X3VyaV9z
ZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIHVyaSkKQEAgLTkzMyw3ICs5Mjcs
NyBAQCBjb25zdCBjaGFyKiBld2tfdmlld190aXRsZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3
a1ZpZXcpCiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwg
MCk7CiAKICAgICBDU3RyaW5nIHRpdGxlID0gcHJpdi0+cGFnZUNsaWVudC0+cGFnZSgpLT5wYWdl
VGl0bGUoKS51dGY4KCk7Ci0gICAgZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZwcml2LT50aXRs
ZSwgdGl0bGUuZGF0YSgpKTsKKyAgICBwcml2LT50aXRsZSA9IHRpdGxlLmRhdGEoKTsKIAogICAg
IHJldHVybiBwcml2LT50aXRsZTsKIH0KQEAgLTEwMzIsMTAgKzEwMjYsMTAgQEAgdm9pZCBld2tf
dmlld190aGVtZV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIHBhdGgpCiAg
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOwogICAgIEVX
S19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYpOwogCi0gICAgaWYgKCFl
aW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJnByaXYtPnRoZW1lLCBwYXRoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgcHJpdi0+cGFnZUNsaWVudC0+cGFnZSgpLT5zZXRUaGVtZVBhdGgocGF0aCk7
CisgICAgaWYgKHByaXYtPnRoZW1lICE9IHBhdGgpIHsKKyAgICAgICAgcHJpdi0+dGhlbWUgPSBw
YXRoOworICAgICAgICBwcml2LT5wYWdlQ2xpZW50LT5wYWdlKCktPnNldFRoZW1lUGF0aChwYXRo
KTsKKyAgICB9CiB9CiAKIGNvbnN0IGNoYXIqIGV3a192aWV3X3RoZW1lX2dldChjb25zdCBFdmFz
X09iamVjdCogZXdrVmlldykKQEAgLTEzODEsNyArMTM3NSw3IEBAIGNvbnN0IGNoYXIqIGV3a192
aWV3X3NldHRpbmdfZW5jb2RpbmdfY3VzdG9tX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmll
dykKICAgICBpZiAoY3VzdG9tRW5jb2RpbmcuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gMDsK
IAotICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmcHJpdi0+Y3VzdG9tRW5jb2RpbmcsIGN1
c3RvbUVuY29kaW5nLnV0ZjgoKS5kYXRhKCkpOworICAgIHByaXYtPmN1c3RvbUVuY29kaW5nID0g
Y3VzdG9tRW5jb2RpbmcudXRmOCgpLmRhdGEoKTsKIAogICAgIHJldHVybiBwcml2LT5jdXN0b21F
bmNvZGluZzsKIH0KQEAgLTEzOTEsOCArMTM4NSw4IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0
aW5nX2VuY29kaW5nX2N1c3RvbV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIq
CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNl
KTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxz
ZSk7CiAKLSAgICBpZiAoZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZwcml2LT5jdXN0b21FbmNv
ZGluZywgZW5jb2RpbmcpKQotICAgICAgICBwcml2LT5wYWdlQ2xpZW50LT5wYWdlKCktPnNldEN1
c3RvbVRleHRFbmNvZGluZ05hbWUoZW5jb2RpbmcgPyBlbmNvZGluZyA6IFN0cmluZygpKTsKKyAg
ICBwcml2LT5jdXN0b21FbmNvZGluZyA9IGVuY29kaW5nOworICAgIHByaXYtPnBhZ2VDbGllbnQt
PnBhZ2UoKS0+c2V0Q3VzdG9tVGV4dEVuY29kaW5nTmFtZShlbmNvZGluZyA/IGVuY29kaW5nIDog
U3RyaW5nKCkpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfd2ViX2Vycm9yLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a193ZWJfZXJyb3IuY3BwCmluZGV4IGU2ZTNlYjguLjcwMzgw
YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a193ZWJf
ZXJyb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a193ZWJf
ZXJyb3IuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiZXdrX3dlYl9lcnJvci5oIgog
CiAjaW5jbHVkZSAiRXJyb3JzRWZsLmgiCisjaW5jbHVkZSAiV0tFaW5hU2hhcmVkU3RyaW5nLmgi
CiAjaW5jbHVkZSAiV0tTdHJpbmcuaCIKICNpbmNsdWRlICJXS1VSTC5oIgogI2luY2x1ZGUgImV3
a193ZWJfZXJyb3JfcHJpdmF0ZS5oIgpAQCAtNDEsMTkgKzQyLDE3IEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7CiBzdHJ1Y3QgX0V3a19XZWJfRXJyb3IgewogICAgIFdLUmV0YWluUHRyPFdLRXJy
b3JSZWY+IHdrRXJyb3I7CiAKLSAgICBjb25zdCBjaGFyKiB1cmw7Ci0gICAgY29uc3QgY2hhciog
ZGVzY3JpcHRpb247CisgICAgV0tFaW5hU2hhcmVkU3RyaW5nIHVybDsKKyAgICBXS0VpbmFTaGFy
ZWRTdHJpbmcgZGVzY3JpcHRpb247CiAKICAgICBfRXdrX1dlYl9FcnJvcihXS0Vycm9yUmVmIGVy
cm9yUmVmKQogICAgICAgICA6IHdrRXJyb3IoZXJyb3JSZWYpCi0gICAgICAgICwgdXJsKDApCi0g
ICAgICAgICwgZGVzY3JpcHRpb24oMCkKKyAgICAgICAgLCB1cmwoQWRvcHRXSywgV0tFcnJvckNv
cHlGYWlsaW5nVVJMKGVycm9yUmVmKSkKKyAgICAgICAgLCBkZXNjcmlwdGlvbihBZG9wdFdLLCBX
S0Vycm9yQ29weUxvY2FsaXplZERlc2NyaXB0aW9uKGVycm9yUmVmKSkKICAgICB7IH0KIAogICAg
IH5fRXdrX1dlYl9FcnJvcigpCiAgICAgewotICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbCh1
cmwpOwotICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChkZXNjcmlwdGlvbik7CiAgICAgfQog
fTsKIApAQCAtOTcsMTEgKzk2LDcgQEAgRXdrX1dlYl9FcnJvcl9UeXBlIGV3a193ZWJfZXJyb3Jf
dHlwZV9nZXQoY29uc3QgRXdrX1dlYl9FcnJvciogZXJyb3IpCiAKIGNvbnN0IGNoYXIqIGV3a193
ZWJfZXJyb3JfdXJsX2dldChjb25zdCBFd2tfV2ViX0Vycm9yKiBlcnJvcikKIHsKLSAgICBFV0tf
V0VCX0VSUk9SX1dLX0dFVF9PUl9SRVRVUk4oZXJyb3IsIHdrRXJyb3IsIDApOwotCi0gICAgV0tS
ZXRhaW5QdHI8V0tVUkxSZWY+IHdrVXJsKEFkb3B0V0ssIFdLRXJyb3JDb3B5RmFpbGluZ1VSTCh3
a0Vycm9yKSk7Ci0gICAgRXdrX1dlYl9FcnJvciogZXdrRXJyb3IgPSBjb25zdF9jYXN0PEV3a19X
ZWJfRXJyb3IqPihlcnJvcik7Ci0gICAgZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZld2tFcnJv
ci0+dXJsLCB0b0ltcGwod2tVcmwuZ2V0KCkpLT5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoZXJyb3IsIDApOwogCiAgICAgcmV0dXJu
IGVycm9yLT51cmw7CiB9CkBAIC0xMTUsMTEgKzExMCw3IEBAIGludCBld2tfd2ViX2Vycm9yX2Nv
ZGVfZ2V0KGNvbnN0IEV3a19XZWJfRXJyb3IqIGVycm9yKQogCiBjb25zdCBjaGFyKiBld2tfd2Vi
X2Vycm9yX2Rlc2NyaXB0aW9uX2dldChjb25zdCBFd2tfV2ViX0Vycm9yKiBlcnJvcikKIHsKLSAg
ICBFV0tfV0VCX0VSUk9SX1dLX0dFVF9PUl9SRVRVUk4oZXJyb3IsIHdrRXJyb3IsIDApOwotCi0g
ICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdrRGVzY3JpcHRpb24oQWRvcHRXSywgV0tFcnJv
ckNvcHlMb2NhbGl6ZWREZXNjcmlwdGlvbih3a0Vycm9yKSk7Ci0gICAgRXdrX1dlYl9FcnJvciog
ZXdrRXJyb3IgPSBjb25zdF9jYXN0PEV3a19XZWJfRXJyb3IqPihlcnJvcik7Ci0gICAgZWluYV9z
dHJpbmdzaGFyZV9yZXBsYWNlKCZld2tFcnJvci0+ZGVzY3JpcHRpb24sIHRvSW1wbCh3a0Rlc2Ny
aXB0aW9uLmdldCgpKS0+c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKGVycm9yLCAwKTsKIAogICAgIHJldHVybiBlcnJvci0+ZGVzY3Jp
cHRpb247CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfd2ViX3Jlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a193ZWJfcmVzb3VyY2UuY3BwCmluZGV4IGUwZDcyOGEuLjM1NTU5MmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a193ZWJfcmVzb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a193ZWJfcmVzb3VyY2UuY3BwCkBA
IC0yNiwyNCArMjYsMjQgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJld2tfd2Vi
X3Jlc291cmNlLmgiCiAKKyNpbmNsdWRlICJXS0VpbmFTaGFyZWRTdHJpbmcuaCIKICNpbmNsdWRl
ICJld2tfd2ViX3Jlc291cmNlX3ByaXZhdGUuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAKIHN0cnVjdCBfRXdrX1dlYl9SZXNvdXJjZSB7CiAgICAgdW5zaWduZWQgaW50IF9fcmVm
OyAvKio8IHRoZSByZWZlcmVuY2UgY291bnQgb2YgdGhlIG9iamVjdCAqLwotICAgIGNvbnN0IGNo
YXIqIHVybDsKKyAgICBXS0VpbmFTaGFyZWRTdHJpbmcgdXJsOwogICAgIGJvb2wgaXNNYWluUmVz
b3VyY2U7CiAKLSAgICBfRXdrX1dlYl9SZXNvdXJjZShjb25zdCBjaGFyKiBfdXJsLCBib29sIF9p
c01haW5SZXNvdXJjZSkKKyAgICBfRXdrX1dlYl9SZXNvdXJjZShjb25zdCBjaGFyKiB1cmwsIGJv
b2wgaXNNYWluUmVzb3VyY2UpCiAgICAgICAgIDogX19yZWYoMSkKLSAgICAgICAgICwgdXJsKGVp
bmFfc3RyaW5nc2hhcmVfYWRkKF91cmwpKQotICAgICAgICAsIGlzTWFpblJlc291cmNlKF9pc01h
aW5SZXNvdXJjZSkKKyAgICAgICAgLCB1cmwodXJsKQorICAgICAgICAsIGlzTWFpblJlc291cmNl
KGlzTWFpblJlc291cmNlKQogICAgIHsgfQogCiAgICAgfl9Fd2tfV2ViX1Jlc291cmNlKCkKICAg
ICB7CiAgICAgICAgIEFTU0VSVCghX19yZWYpOwotICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX2Rl
bCh1cmwpOwogICAgIH0KIH07CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>