<?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>189846</bug_id>
          
          <creation_ts>2018-09-21 12:02:39 -0700</creation_ts>
          <short_desc>[Win][WebKit] Implement authentication dialog on MiniBrowser.</short_desc>
          <delta_ts>2018-09-27 09:28:24 -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>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=174662</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Basuke Suzuki">basuke</reporter>
          <assigned_to name="Basuke Suzuki">basuke</assigned_to>
          <cc>achristensen</cc>
    
    <cc>basuke</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>lforschler</cc>
    
    <cc>pvollan</cc>
    
    <cc>stephan.szabo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1461982</commentid>
    <comment_count>0</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-09-21 12:02:39 -0700</bug_when>
    <thetext>It was implemented for WebKitLegacy, but not for WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462098</commentid>
    <comment_count>1</comment_count>
      <attachid>350431</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-09-21 14:42:47 -0700</bug_when>
    <thetext>Created attachment 350431
PATCH</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462103</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-09-21 14:46:18 -0700</bug_when>
    <thetext>Attachment 350431 did not pass style-queue:


ERROR: Tools/MiniBrowser/win/WebKitBrowserWindow.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Tools/MiniBrowser/win/MiniBrowserLibResource.h:0:  No copyright message found.  You should have a line: &quot;Copyright [year] &lt;Copyright Owner&gt;&quot;  [legal/copyright] [5]
Total errors found: 2 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462169</commentid>
    <comment_count>3</comment_count>
      <attachid>350454</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-09-21 16:44:32 -0700</bug_when>
    <thetext>Created attachment 350454
PATCH</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462171</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-09-21 16:47:15 -0700</bug_when>
    <thetext>Attachment 350454 did not pass style-queue:


ERROR: Tools/MiniBrowser/win/WebKitBrowserWindow.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Tools/MiniBrowser/win/WebKitBrowserWindow.cpp:84:  create_bstr_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Tools/MiniBrowser/win/MiniBrowserLibResource.h:0:  No copyright message found.  You should have a line: &quot;Copyright [year] &lt;Copyright Owner&gt;&quot;  [legal/copyright] [5]
Total errors found: 3 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462953</commentid>
    <comment_count>5</comment_count>
      <attachid>350706</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-09-24 15:52:36 -0700</bug_when>
    <thetext>Created attachment 350706
FIX

Fix style. Didn&apos;t fix those in the tool generated files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462955</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-09-24 15:54:23 -0700</bug_when>
    <thetext>Attachment 350706 did not pass style-queue:


ERROR: Tools/MiniBrowser/win/MiniBrowserLibResource.h:0:  No copyright message found.  You should have a line: &quot;Copyright [year] &lt;Copyright Owner&gt;&quot;  [legal/copyright] [5]
Total errors found: 1 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1463073</commentid>
    <comment_count>7</comment_count>
      <attachid>350706</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-09-24 19:40:36 -0700</bug_when>
    <thetext>Comment on attachment 350706
FIX

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

&gt; Tools/MiniBrowser/win/Common.cpp:125
&gt; +    _bstr_t&amp; password;

The reason why I don&apos;t like this patch is I don&apos;t want to use
_bstr_t in common code and modern WebKit part becuase _bstr_t is
a string type for COM. This is not problem for WebKitLegacy
because it is a COM API.

I was using std::wstring for modern WebKit part in my original
patch (Bug 184770 Comment 1). But, I&apos;m not confident std::wstring
is the best choice for them. How do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1463243</commentid>
    <comment_count>8</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-09-25 11:37:12 -0700</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #7)
&gt; Comment on attachment 350706 [details]
&gt; FIX
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=350706&amp;action=review
&gt; 
&gt; &gt; Tools/MiniBrowser/win/Common.cpp:125
&gt; &gt; +    _bstr_t&amp; password;
&gt; 
&gt; The reason why I don&apos;t like this patch is I don&apos;t want to use
&gt; _bstr_t in common code and modern WebKit part becuase _bstr_t is
&gt; a string type for COM. This is not problem for WebKitLegacy
&gt; because it is a COM API.
&gt; 
&gt; I was using std::wstring for modern WebKit part in my original
&gt; patch (Bug 184770 Comment 1). But, I&apos;m not confident std::wstring
&gt; is the best choice for them. How do you think?

I&apos;m still very beginner programmer for Win32 platform. I&apos;ve asked to my team mate what is BSTR. I&apos;ve used wstring on my previous implementation for legacy, but I found that was converted to _bstr_t at the end so that I decided to use _bstr_t.

I cannot believe why MS uses _ for such a public API even if it is a wrapper. Also it&apos;s not easy to manipulate. I want to minimize the usage of _bstr_t, limiting to the very far end of passing Win32 API.

If you agree, I want to stick with std::wstring for Win app coding as much as possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1463256</commentid>
    <comment_count>9</comment_count>
    <who name="Stephan Szabo">stephan.szabo</who>
    <bug_when>2018-09-25 11:47:43 -0700</bug_when>
    <thetext>I would say that wstring makes sense for at least these kinds of uses in the shared code in minibrowser. The other option that may make sense in some cases is WKStringRef if we&apos;re going primarily from one WK api to another, rather than converting to wstring and then back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1463300</commentid>
    <comment_count>10</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-09-25 13:04:30 -0700</bug_when>
    <thetext>(In reply to Stephan Szabo from comment #9)
&gt; I would say that wstring makes sense for at least these kinds of uses in the
&gt; shared code in minibrowser. The other option that may make sense in some
&gt; cases is WKStringRef if we&apos;re going primarily from one WK api to another,
&gt; rather than converting to wstring and then back.

Converting from WKStringRef to _bstr_t is not possible directly. _bstr_t  constructors requires null terminated string, not data + length. So at least some sort of simple buffer is required to get string contents from WKStringRef and to pass _bstr_t. std::wstring satisfies those requirements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1463305</commentid>
    <comment_count>11</comment_count>
    <who name="Stephan Szabo">stephan.szabo</who>
    <bug_when>2018-09-25 13:12:06 -0700</bug_when>
    <thetext>The side part of that was less for this case specifically, but more for a case where we have something like:

Call WKFoo() to get a string (as WKStringRef) and store that for later on an object.

&lt;on some later user interaction&gt;
Call WKBar(str) with that string

Where the only/primary way the string is used is to pass back to another WK API, it may make sense to keep that as a WKStringRef rather than converting it into a wstring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1463452</commentid>
    <comment_count>12</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-09-25 18:28:00 -0700</bug_when>
    <thetext>(In reply to Basuke Suzuki from comment #8)
&gt; I&apos;m still very beginner programmer for Win32 platform. I&apos;ve asked to my team
&gt; mate what is BSTR. I&apos;ve used wstring on my previous implementation for
&gt; legacy, but I found that was converted to _bstr_t at the end so that I
&gt; decided to use _bstr_t.
&gt; 
&gt; I cannot believe why MS uses _ for such a public API even if it is a
&gt; wrapper. Also it&apos;s not easy to manipulate. I want to minimize the usage of
&gt; _bstr_t, limiting to the very far end of passing Win32 API.
&gt; 
&gt; If you agree, I want to stick with std::wstring for Win app coding as much
&gt; as possible.

_bstr_t is a useful wrapper class for BSTR. I&apos;d like to use it in
WebKitLegacyBrowserWindow. In C++, any names prefixed with _ are
preserved for the system. It is safe for the system to introduce
a new name with prefix _ without breaking existing code. I think
this is the reason _bstr_t is _-prefixed.

There is another BSTR.
Source/WebCore/platform/win/BString.h
But, I don&apos;t like the idea using this in MiniBrowser.
I&apos;d like MiniBrowser use only public WebKit API (WK1 and WK2).

But, this is just my opition. MiniBrowser already is using WebCore header.
#include &lt;WebCore/COMPtr.h&gt;
https://github.com/WebKit/webkit/blob/907de274451932ef356129302afef6208ff21ce5/Tools/MiniBrowser/win/ResourceLoadDelegate.cpp#L31</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1463703</commentid>
    <comment_count>13</comment_count>
      <attachid>350886</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-09-26 12:58:38 -0700</bug_when>
    <thetext>Created attachment 350886
PATCH

Use std::wstring more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1463704</commentid>
    <comment_count>14</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-09-26 13:01:30 -0700</bug_when>
    <thetext>Attachment 350886 did not pass style-queue:


ERROR: Tools/MiniBrowser/win/MiniBrowserLibResource.h:0:  No copyright message found.  You should have a line: &quot;Copyright [year] &lt;Copyright Owner&gt;&quot;  [legal/copyright] [5]
Total errors found: 1 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1463868</commentid>
    <comment_count>15</comment_count>
      <attachid>350886</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-09-26 21:05:45 -0700</bug_when>
    <thetext>Comment on attachment 350886
PATCH

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

&gt; Tools/MiniBrowser/win/Common.cpp:163
&gt; +std::optional&lt;Credential&gt; askCredential(HWND hwnd, const std::wstring&amp; realm)

askCredential is a strange name for me because Credential is a piece of information provided by server.
https://en.wikipedia.org/wiki/Credential

&gt; Tools/MiniBrowser/win/WebKitBrowserWindow.cpp:41
&gt; +    size_t actualLength = WKStringGetCharacters(wkString, str.data(), maxSize);

str.data() can not be modified in C++14 which we are using. This is the reason why Chris uses std::vector&lt;char&gt; (Bug 187167).
But, it seems OK in C++17.
https://en.cppreference.com/w/cpp/string/basic_string/data
I am OK if this doesn&apos;t emit a compiler warning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1463869</commentid>
    <comment_count>16</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-09-26 21:09:56 -0700</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #15)
&gt; askCredential is a strange name for me because Credential is a piece of
&gt; information provided by server.

Never mind this my comment. WK2 API has a API WKCredentialCreate.
WKCredentialCreate(WKStringRef username, WKStringRef password, WKCredentialPersistence);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1463997</commentid>
    <comment_count>17</comment_count>
      <attachid>350886</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-27 09:27:45 -0700</bug_when>
    <thetext>Comment on attachment 350886
PATCH

Clearing flags on attachment: 350886

Committed r236549: &lt;https://trac.webkit.org/changeset/236549&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1463998</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-27 09:27:47 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1463999</commentid>
    <comment_count>19</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-09-27 09:28:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/44832874&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350431</attachid>
            <date>2018-09-21 14:42:47 -0700</date>
            <delta_ts>2018-09-21 16:44:32 -0700</delta_ts>
            <desc>PATCH</desc>
            <filename>189846.diff</filename>
            <type>text/plain</type>
            <size>9860</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiMTc4
ZTY3YjNjNS4uMjJjNDA4OTBkNTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxOC0wOS0yMSAgQmFzdWtlIFN1enVr
aSAgPEJhc3VrZS5TdXp1a2lAc29ueS5jb20+CisKKyAgICAgICAgW1dpbl1bV2ViS2l0XSBJbXBs
ZW1lbnQgYXV0aGVudGljYXRpb24gZGlhbG9nIG9uIE1pbmlCcm93c2VyLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5ODQ2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSXQgd2FzIGltcGxlbWVudGVkIGZv
ciBXZWJLaXRMZWdhY3ksIGJ1dCBub3QgZm9yIFdlYktpdC4KKyAgICAgICAgQWxzbyBhZGRlZCB0
ZXh0IGZpZWxkIHRvIGRpc3BsYXkgUmVhbG0gaW5mb3JtYXRpb24uCisKKyAgICAgICAgKiBNaW5p
QnJvd3Nlci93aW4vQ29tbW9uLmNwcDoKKyAgICAgICAgKGF1dGhEaWFsb2dQcm9jKToKKyAgICAg
ICAgKGRpc3BsYXlBdXRoRGlhbG9nKToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci93aW4vQ29tbW9u
Lmg6CisgICAgICAgICogTWluaUJyb3dzZXIvd2luL01pbmlCcm93c2VyTGliLnJjOgorICAgICAg
ICAqIE1pbmlCcm93c2VyL3dpbi9NaW5pQnJvd3NlckxpYlJlc291cmNlLmg6CisgICAgICAgICog
TWluaUJyb3dzZXIvd2luL1Jlc291cmNlTG9hZERlbGVnYXRlLmNwcDoKKyAgICAgICAgKFJlc291
cmNlTG9hZERlbGVnYXRlOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAg
ICAgICAqIE1pbmlCcm93c2VyL3dpbi9XZWJLaXRCcm93c2VyV2luZG93LmNwcDoKKyAgICAgICAg
KFdlYktpdEJyb3dzZXJXaW5kb3c6OldlYktpdEJyb3dzZXJXaW5kb3cpOgorICAgICAgICAoV2Vi
S2l0QnJvd3NlcldpbmRvdzo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAg
ICAgICAgKiBNaW5pQnJvd3Nlci93aW4vV2ViS2l0QnJvd3NlcldpbmRvdy5oOgorCiAyMDE4LTA5
LTIwICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkLCBtYW51YWxseSByb2xsb3V0IG91ciBzd2l0Y2ggdG8gbWFzdGVyIHJ1bnRp
bWUKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9Db21tb24uY3BwIGIvVG9vbHMv
TWluaUJyb3dzZXIvd2luL0NvbW1vbi5jcHAKaW5kZXggYWMzOGYwMWI0YmQuLjFlZjYxNjNkMmNh
IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci93aW4vQ29tbW9uLmNwcAorKysgYi9Ub29s
cy9NaW5pQnJvd3Nlci93aW4vQ29tbW9uLmNwcApAQCAtMTIwLDE5ICsxMjAsMjIgQEAgdm9pZCBj
cmVhdGVDcmFzaFJlcG9ydChFWENFUFRJT05fUE9JTlRFUlMqIGV4Y2VwdGlvblBvaW50ZXJzKQog
fQogCiBzdHJ1Y3QgQXV0aERpYWxvZ0RhdGEgewotICAgIHN0ZDo6d3N0cmluZyYgdXNlcm5hbWU7
Ci0gICAgc3RkOjp3c3RyaW5nJiBwYXNzd29yZDsKKyAgICBjb25zdCBfYnN0cl90JiByZWFsbTsK
KyAgICBfYnN0cl90JiB1c2VybmFtZTsKKyAgICBfYnN0cl90JiBwYXNzd29yZDsKIH07CiAKIHN0
YXRpYyBJTlRfUFRSIENBTExCQUNLIGF1dGhEaWFsb2dQcm9jKEhXTkQgaERsZywgVUlOVCBtZXNz
YWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQogewotICAgIEF1dGhEaWFsb2dEYXRh
JiBkYXRhID0gKnJlaW50ZXJwcmV0X2Nhc3Q8QXV0aERpYWxvZ0RhdGEqPihHZXRXaW5kb3dMb25n
UHRyKGhEbGcsIERXTFBfVVNFUikpOwogICAgIHN3aXRjaCAobWVzc2FnZSkgewotICAgIGNhc2Ug
V01fSU5JVERJQUxPRzoKKyAgICBjYXNlIFdNX0lOSVRESUFMT0c6IHsKICAgICAgICAgU2V0V2lu
ZG93TG9uZ1B0cihoRGxnLCBEV0xQX1VTRVIsIGxQYXJhbSk7CisgICAgICAgIEF1dGhEaWFsb2dE
YXRhJiBkYXRhID0gKnJlaW50ZXJwcmV0X2Nhc3Q8QXV0aERpYWxvZ0RhdGEqPihsUGFyYW0pOwor
ICAgICAgICBTZXREbGdJdGVtVGV4dChoRGxnLCBJRENfUkVBTE1fVEVYVCwgZGF0YS5yZWFsbSk7
CiAgICAgICAgIHJldHVybiBUUlVFOwotCisgICAgfQogICAgIGNhc2UgV01fQ09NTUFORDogewor
ICAgICAgICBBdXRoRGlhbG9nRGF0YSYgZGF0YSA9ICpyZWludGVycHJldF9jYXN0PEF1dGhEaWFs
b2dEYXRhKj4oR2V0V2luZG93TG9uZ1B0cihoRGxnLCBEV0xQX1VTRVIpKTsKICAgICAgICAgaW50
IHdtSWQgPSBMT1dPUkQod1BhcmFtKTsKICAgICAgICAgc3dpdGNoICh3bUlkKSB7CiAgICAgICAg
IGNhc2UgSURPSzogewpAQCAtMTU4LDExICsxNjEsMTEgQEAgc3RhdGljIElOVF9QVFIgQ0FMTEJB
Q0sgYXV0aERpYWxvZ1Byb2MoSFdORCBoRGxnLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0s
IEwKICAgICByZXR1cm4gRkFMU0U7CiB9CiAKLUhSRVNVTFQgZGlzcGxheUF1dGhEaWFsb2coSFdO
RCBod25kLCBzdGQ6OndzdHJpbmcmIHVzZXJuYW1lLCBzdGQ6OndzdHJpbmcmIHBhc3N3b3JkKQor
Ym9vbCBkaXNwbGF5QXV0aERpYWxvZyhIV05EIGh3bmQsIGNvbnN0IF9ic3RyX3QmIHJlYWxtLCBf
YnN0cl90JiB1c2VybmFtZSwgX2JzdHJfdCYgcGFzc3dvcmQpCiB7Ci0gICAgQXV0aERpYWxvZ0Rh
dGEgZGF0YSB7IHVzZXJuYW1lLCBwYXNzd29yZCB9OworICAgIEF1dGhEaWFsb2dEYXRhIGRhdGEg
eyByZWFsbSwgdXNlcm5hbWUsIHBhc3N3b3JkIH07CiAgICAgYXV0byByZXN1bHQgPSBEaWFsb2dC
b3hQYXJhbShoSW5zdCwgTUFLRUlOVFJFU09VUkNFKElERF9BVVRIKSwgaHduZCwgYXV0aERpYWxv
Z1Byb2MsIHJlaW50ZXJwcmV0X2Nhc3Q8TFBBUkFNPigmZGF0YSkpOwotICAgIHJldHVybiByZXN1
bHQgPiAwID8gU19PSyA6IEVfRkFJTDsKKyAgICByZXR1cm4gcmVzdWx0ID4gMDsKIH0KIAogQ29t
bWFuZExpbmVPcHRpb25zIHBhcnNlQ29tbWFuZExpbmUoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvTWlu
aUJyb3dzZXIvd2luL0NvbW1vbi5oIGIvVG9vbHMvTWluaUJyb3dzZXIvd2luL0NvbW1vbi5oCmlu
ZGV4IDA4NWEzMTMwMWNhLi4xMGFmMzY1MmFlNiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dz
ZXIvd2luL0NvbW1vbi5oCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9Db21tb24uaApAQCAt
NTAsNyArNTAsNyBAQCB2b2lkIGNvbXB1dGVGdWxsRGVza3RvcEZyYW1lKCk7CiBib29sIGdldEFw
cERhdGFGb2xkZXIoX2JzdHJfdCYgZGlyZWN0b3J5KTsKIENvbW1hbmRMaW5lT3B0aW9ucyBwYXJz
ZUNvbW1hbmRMaW5lKCk7CiB2b2lkIGNyZWF0ZUNyYXNoUmVwb3J0KEVYQ0VQVElPTl9QT0lOVEVS
UyopOwotSFJFU1VMVCBkaXNwbGF5QXV0aERpYWxvZyhIV05ELCBzdGQ6OndzdHJpbmcmIHVzZXJu
YW1lLCBzdGQ6OndzdHJpbmcmIHBhc3N3b3JkKTsKK2Jvb2wgZGlzcGxheUF1dGhEaWFsb2coSFdO
RCwgY29uc3QgX2JzdHJfdCYgcmVhbG0sIF9ic3RyX3QmIHVzZXJuYW1lLCBfYnN0cl90JiBwYXNz
d29yZCk7CiAKIGV4dGVybiBISU5TVEFOQ0UgaEluc3Q7CiBleHRlcm4gUE9JTlQgc193aW5kb3dQ
b3NpdGlvbjsKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9NaW5pQnJvd3Nlckxp
Yi5yYyBiL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9NaW5pQnJvd3NlckxpYi5yYwppbmRleCAyYWM2
NGUyOTE3Mi4uMGE3YTdmNTVhODcgMTAwNzU1Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9N
aW5pQnJvd3NlckxpYi5yYworKysgYi9Ub29scy9NaW5pQnJvd3Nlci93aW4vTWluaUJyb3dzZXJM
aWIucmMKQEAgLTI0NSwxNyArMjQ1LDE4IEBAIEJFR0lOCiAgICAgUFVTSEJVVFRPTiAgICAgICJD
YW5jZWwiLElEQ0FOQ0VMLDI1MiwxNTUsNTAsMTQNCiBFTkQNCiANCi1JRERfQVVUSCBESUFMT0dF
WCAwLCAwLCAyMzEsIDk5DQorSUREX0FVVEggRElBTE9HRVggMCwgMCwgMjMxLCAxMTkNCiBTVFlM
RSBEU19TRVRGT05UIHwgRFNfTU9EQUxGUkFNRSB8IERTX0ZJWEVEU1lTIHwgV1NfUE9QVVAgfCBX
U19DQVBUSU9OIHwgV1NfU1lTTUVOVQ0KIENBUFRJT04gIkF1dGhlbnRpY2F0aW9uIFJlcXVpcmVk
Ig0KIEZPTlQgOCwgIk1TIFNoZWxsIERsZyIsIDQwMCwgMCwgMHgxDQogQkVHSU4NCi0gICAgREVG
UFVTSEJVVFRPTiAgICJTaWduIEluIixJRE9LLDExNiw3OCw1MCwxNA0KLSAgICBQVVNIQlVUVE9O
ICAgICAgIkNhbmNlbCIsSURDQU5DRUwsMTc0LDc4LDUwLDE0DQotICAgIFJURVhUICAgICAgICAg
ICAiVXNlciBOYW1lOiIsSURDX1NUQVRJQyw3LDIxLDU3LDgNCi0gICAgRURJVFRFWFQgICAgICAg
IElEQ19BVVRIX1VTRVIsNjcsMTksMTU3LDE0LEVTX0FVVE9IU0NST0xMDQotICAgIFJURVhUICAg
ICAgICAgICAiUGFzc3dvcmQ6IixJRENfU1RBVElDLDcsNDYsNTcsOA0KLSAgICBFRElUVEVYVCAg
ICAgICAgSURDX0FVVEhfUEFTU1dPUkQsNjcsNDQsMTU3LDE0LEVTX1BBU1NXT1JEIHwgRVNfQVVU
T0hTQ1JPTEwNCisgICAgREVGUFVTSEJVVFRPTiAgICJTaWduIEluIixJRE9LLDExNiw5OCw1MCwx
NA0KKyAgICBQVVNIQlVUVE9OICAgICAgIkNhbmNlbCIsSURDQU5DRUwsMTc0LDk4LDUwLDE0DQor
ICAgIExURVhUICAgICAgICAgICAiUmVhbG0iLElEQ19SRUFMTV9URVhULDY3LDIxLDE1Nyw4DQor
ICAgIFJURVhUICAgICAgICAgICAiVXNlciBOYW1lOiIsSURDX1NUQVRJQyw3LDQxLDU3LDgNCisg
ICAgRURJVFRFWFQgICAgICAgIElEQ19BVVRIX1VTRVIsNjcsMzksMTU3LDE0LEVTX0FVVE9IU0NS
T0xMDQorICAgIFJURVhUICAgICAgICAgICAiUGFzc3dvcmQ6IixJRENfU1RBVElDLDcsNjYsNTcs
OA0KKyAgICBFRElUVEVYVCAgICAgICAgSURDX0FVVEhfUEFTU1dPUkQsNjcsNjQsMTU3LDE0LEVT
X1BBU1NXT1JEIHwgRVNfQVVUT0hTQ1JPTEwNCiBFTkQNCiANCiANCmRpZmYgLS1naXQgYS9Ub29s
cy9NaW5pQnJvd3Nlci93aW4vTWluaUJyb3dzZXJMaWJSZXNvdXJjZS5oIGIvVG9vbHMvTWluaUJy
b3dzZXIvd2luL01pbmlCcm93c2VyTGliUmVzb3VyY2UuaAppbmRleCAzMjNmZjIzYjIyZC4uZTZj
OWIwMDM2M2UgMTAwNzU1Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9NaW5pQnJvd3Nlckxp
YlJlc291cmNlLmgKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvd2luL01pbmlCcm93c2VyTGliUmVz
b3VyY2UuaApAQCAtMTExLDYgKzExMSw3IEBACiAjZGVmaW5lIElEQ19BVVRIX1VTRVIgICAgICAg
ICAgICAgICAgICAgMTA1MwogI2RlZmluZSBJRENfQVVUSF9QQVNTV09SRCAgICAgICAgICAgICAg
IDEwNTQKICNkZWZpbmUgSURDX1VSTF9CQVIgICAgICAgICAgICAgICAgICAgICAxMDU1CisjZGVm
aW5lIElEQ19SRUFMTV9URVhUICAgICAgICAgICAgICAgICAgMTA1NgogI2RlZmluZSBJRE1fTkVX
X1dFQktJVF9XSU5ET1cgICAgICAgICAgIDMyNzc2CiAjZGVmaW5lIElETV9ORVdfV0VCS0lUTEVH
QUNZX1dJTkRPVyAgICAgMzI3NzcKICNkZWZpbmUgSURDX1NUQVRJQyAgICAgICAgICAgICAgICAg
ICAgICAtMQpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvd2luL1Jlc291cmNlTG9hZERl
bGVnYXRlLmNwcCBiL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5j
cHAKaW5kZXggM2ZjNmUxZjI4ZjAuLjkxYTZmYWM0MWFjIDEwMDY0NAotLS0gYS9Ub29scy9NaW5p
QnJvd3Nlci93aW4vUmVzb3VyY2VMb2FkRGVsZWdhdGUuY3BwCisrKyBiL1Rvb2xzL01pbmlCcm93
c2VyL3dpbi9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5jcHAKQEAgLTg4LDE0ICs4OCwyMiBAQCBIUkVT
VUxUIFJlc291cmNlTG9hZERlbGVnYXRlOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoX0luX29wdF8gSVdlYlZpZQogICAgIGlmICghY2hhbGxlbmdlIHx8IEZBSUxFRChjaGFsbGVu
Z2UtPnNlbmRlcigmc2VuZGVyKSkpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBzdGQ6
OndzdHJpbmcgdXNlcm5hbWUsIHBhc3N3b3JkOwotICAgIGlmIChkaXNwbGF5QXV0aERpYWxvZyht
X2NsaWVudC0+aHduZCgpLCB1c2VybmFtZSwgcGFzc3dvcmQpICE9IFNfT0spCisgICAgQ09NUHRy
PElXZWJVUkxQcm90ZWN0aW9uU3BhY2U+IHByb3RlY3Rpb25TcGFjZTsKKyAgICBpZiAoRkFJTEVE
KGNoYWxsZW5nZS0+cHJvdGVjdGlvblNwYWNlKCZwcm90ZWN0aW9uU3BhY2UpKSkKKyAgICAgICAg
cmV0dXJuIEVfRkFJTDsKKworICAgIF9ic3RyX3QgcmVhbG07CisgICAgaWYgKEZBSUxFRChwcm90
ZWN0aW9uU3BhY2UtPnJlYWxtKHJlYWxtLkdldEFkZHJlc3MoKSkpKQorICAgICAgICByZXR1cm4g
RV9GQUlMOworCisgICAgX2JzdHJfdCB1c2VybmFtZSwgcGFzc3dvcmQ7CisgICAgaWYgKCFkaXNw
bGF5QXV0aERpYWxvZyhtX2NsaWVudC0+aHduZCgpLCByZWFsbSwgdXNlcm5hbWUsIHBhc3N3b3Jk
KSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIENPTVB0cjxJV2ViVVJMQ3JlZGVudGlh
bD4gY3JlZGVudGlhbDsKICAgICBpZiAoRkFJTEVEKFdlYktpdENyZWF0ZUluc3RhbmNlKENMU0lE
X1dlYlVSTENyZWRlbnRpYWwsIDAsIElJRF9JV2ViVVJMQ3JlZGVudGlhbCwgKHZvaWQqKikmY3Jl
ZGVudGlhbCkpKQogICAgICAgICByZXR1cm4gRV9GQUlMOwotICAgIGNyZWRlbnRpYWwtPmluaXRX
aXRoVXNlcihfYnN0cl90KHVzZXJuYW1lLmNfc3RyKCkpLCBfYnN0cl90KHBhc3N3b3JkLmNfc3Ry
KCkpLCBXZWJVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VGb3JTZXNzaW9uKTsKKyAgICBjcmVkZW50
aWFsLT5pbml0V2l0aFVzZXIodXNlcm5hbWUsIHBhc3N3b3JkLCBXZWJVUkxDcmVkZW50aWFsUGVy
c2lzdGVuY2VGb3JTZXNzaW9uKTsKIAogICAgIHNlbmRlci0+dXNlQ3JlZGVudGlhbChjcmVkZW50
aWFsLmdldCgpLCBjaGFsbGVuZ2UpOwogICAgIHJldHVybiBTX09LOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvTWluaUJyb3dzZXIvd2luL1dlYktpdEJyb3dzZXJXaW5kb3cuY3BwIGIvVG9vbHMvTWluaUJy
b3dzZXIvd2luL1dlYktpdEJyb3dzZXJXaW5kb3cuY3BwCmluZGV4IDAxYjYyZTE0ZTY2Li5mNmRk
N2NlOTEwNiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvd2luL1dlYktpdEJyb3dzZXJX
aW5kb3cuY3BwCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9XZWJLaXRCcm93c2VyV2luZG93
LmNwcApAQCAtMjYsNyArMjYsMTIgQEAKICNpbmNsdWRlICJXZWJLaXRCcm93c2VyV2luZG93Lmgi
CiAKICNpbmNsdWRlICJNaW5pQnJvd3NlckxpYlJlc291cmNlLmgiCisjaW5jbHVkZSAiY29tbW9u
LmgiCiAjaW5jbHVkZSA8V2ViS2l0L1dLSW5zcGVjdG9yLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dL
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tBdXRoZW50aWNh
dGlvbkRlY2lzaW9uTGlzdGVuZXIuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tDcmVkZW50aWFsLmg+
CisjaW5jbHVkZSA8V2ViS2l0L1dLUHJvdGVjdGlvblNwYWNlLmg+CiAjaW5jbHVkZSA8dmVjdG9y
PgogCiBzdGQ6OndzdHJpbmcKQEAgLTk0LDYgKzk5LDcgQEAgV2ViS2l0QnJvd3NlcldpbmRvdzo6
V2ViS2l0QnJvd3NlcldpbmRvdyhIV05EIG1haW5XbmQsIEhXTkQgdXJsQmFyV25kKQogICAgIFdL
UGFnZU5hdmlnYXRpb25DbGllbnRWMCBuYXZpZ2F0aW9uQ2xpZW50ID0ge3sgMCwgdGhpcyB9fTsK
ICAgICBuYXZpZ2F0aW9uQ2xpZW50LmRpZEZpbmlzaE5hdmlnYXRpb24gPSBkaWRGaW5pc2hOYXZp
Z2F0aW9uOwogICAgIG5hdmlnYXRpb25DbGllbnQuZGlkQ29tbWl0TmF2aWdhdGlvbiA9IGRpZENv
bW1pdE5hdmlnYXRpb247CisgICAgbmF2aWdhdGlvbkNsaWVudC5kaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UgPSBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiAgICAg
V0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQocGFnZSwgJm5hdmlnYXRpb25DbGllbnQuYmFz
ZSk7CiB9CiAKQEAgLTIyOSwzICsyMzUsMjEgQEAgdm9pZCBXZWJLaXRCcm93c2VyV2luZG93Ojpk
aWRDb21taXROYXZpZ2F0aW9uKFdLUGFnZVJlZiBwYWdlLCBXS05hdmlnYXRpb25SZWYgbmEKICAg
ICBzdGQ6OndzdHJpbmcgdXJsU3RyaW5nID0gY3JlYXRlU3RyaW5nKHdrdXJsLmdldCgpKTsKICAg
ICBTZXRXaW5kb3dUZXh0KHRoaXNXaW5kb3cubV91cmxCYXJXbmQsIHVybFN0cmluZy5jX3N0cigp
KTsKIH0KKwordm9pZCBXZWJLaXRCcm93c2VyV2luZG93OjpkaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoV0tQYWdlUmVmIHBhZ2UsIFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZWYg
Y2hhbGxlbmdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIGF1dG8mIHRoaXNXaW5k
b3cgPSB0b1dlYktpdEJyb3dzZXJXaW5kb3coY2xpZW50SW5mbyk7CisgICAgYXV0byBwcm90ZWN0
aW9uU3BhY2UgPSBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlR2V0UHJvdGVjdGlvblNwYWNlKGNo
YWxsZW5nZSk7CisgICAgYXV0byBkZWNpc2lvbkxpc3RlbmVyID0gV0tBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZUdldERlY2lzaW9uTGlzdGVuZXIoY2hhbGxlbmdlKTsKKworICAgIFdLUmV0YWluUHRy
PFdLU3RyaW5nUmVmPiByZWFsbShXS1Byb3RlY3Rpb25TcGFjZUNvcHlSZWFsbShwcm90ZWN0aW9u
U3BhY2UpKTsKKyAgICBfYnN0cl90IHVzZXIsIHBhc3M7CisgICAgaWYgKCFkaXNwbGF5QXV0aERp
YWxvZyh0aGlzV2luZG93Lmh3bmQoKSwgY3JlYXRlU3RyaW5nKHJlYWxtLmdldCgpKS5jX3N0cigp
LCB1c2VyLCBwYXNzKSkKKyAgICAgICAgV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXJD
YW5jZWwoZGVjaXNpb25MaXN0ZW5lcik7CisKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4g
dXNlcm5hbWUgPSBjcmVhdGVXS1N0cmluZyh1c2VyKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4gcGFzc3dvcmQgPSBjcmVhdGVXS1N0cmluZyhwYXNzKTsKKyAgICBXS1JldGFpblB0cjxX
S0NyZWRlbnRpYWxSZWY+IGNyZWRlbnRpYWwoQWRvcHRXSywgV0tDcmVkZW50aWFsQ3JlYXRlKHVz
ZXJuYW1lLmdldCgpLCBwYXNzd29yZC5nZXQoKSwga1dLQ3JlZGVudGlhbFBlcnNpc3RlbmNlRm9y
U2Vzc2lvbikpOworICAgIFdLQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyVXNlQ3JlZGVu
dGlhbChkZWNpc2lvbkxpc3RlbmVyLCBjcmVkZW50aWFsLmdldCgpKTsKKyAgICAvLyB9Cit9CmRp
ZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci93aW4vV2ViS2l0QnJvd3NlcldpbmRvdy5oIGIv
VG9vbHMvTWluaUJyb3dzZXIvd2luL1dlYktpdEJyb3dzZXJXaW5kb3cuaAppbmRleCBhN2FjOTAw
ZjJiYi4uNDI2NmU3YzY0YTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9XZWJL
aXRCcm93c2VyV2luZG93LmgKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvd2luL1dlYktpdEJyb3dz
ZXJXaW5kb3cuaApAQCAtNTksNiArNTksNyBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIHZvaWQg
ZGlkRmluaXNoTmF2aWdhdGlvbihXS1BhZ2VSZWYsIFdLTmF2aWdhdGlvblJlZiwgV0tUeXBlUmVm
LCBjb25zdCB2b2lkKik7CiAgICAgc3RhdGljIHZvaWQgZGlkQ29tbWl0TmF2aWdhdGlvbihXS1Bh
Z2VSZWYsIFdLTmF2aWdhdGlvblJlZiwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKik7CisgICAgc3Rh
dGljIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdLUGFnZVJlZiwgV0tB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZVJlZiwgY29uc3Qgdm9pZCopOwogCiAgICAgV0tSZXRhaW5Q
dHI8V0tWaWV3UmVmPiBtX3ZpZXc7CiAgICAgSFdORCBtX2hNYWluV25kIHsgbnVsbHB0ciB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350454</attachid>
            <date>2018-09-21 16:44:32 -0700</date>
            <delta_ts>2018-09-24 15:52:36 -0700</delta_ts>
            <desc>PATCH</desc>
            <filename>189846.diff</filename>
            <type>text/plain</type>
            <size>11166</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiMTc4
ZTY3YjNjNS4uOTllNDNkYzA1ZjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxOC0wOS0yMSAgQmFzdWtlIFN1enVr
aSAgPEJhc3VrZS5TdXp1a2lAc29ueS5jb20+CisKKyAgICAgICAgW1dpbl1bV2ViS2l0XSBJbXBs
ZW1lbnQgYXV0aGVudGljYXRpb24gZGlhbG9nIG9uIE1pbmlCcm93c2VyLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5ODQ2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSXQgd2FzIGltcGxlbWVudGVkIGZv
ciBXZWJLaXRMZWdhY3ksIGJ1dCBub3QgZm9yIFdlYktpdC4KKyAgICAgICAgQWxzbyBhZGRlZCB0
ZXh0IGZpZWxkIHRvIGRpc3BsYXkgUmVhbG0gaW5mb3JtYXRpb24uCisKKyAgICAgICAgKiBNaW5p
QnJvd3Nlci93aW4vQ29tbW9uLmNwcDoKKyAgICAgICAgKGF1dGhEaWFsb2dQcm9jKToKKyAgICAg
ICAgKGRpc3BsYXlBdXRoRGlhbG9nKToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci93aW4vQ29tbW9u
Lmg6CisgICAgICAgICogTWluaUJyb3dzZXIvd2luL01pbmlCcm93c2VyTGliLnJjOgorICAgICAg
ICAqIE1pbmlCcm93c2VyL3dpbi9NaW5pQnJvd3NlckxpYlJlc291cmNlLmg6CisgICAgICAgICog
TWluaUJyb3dzZXIvd2luL1Jlc291cmNlTG9hZERlbGVnYXRlLmNwcDoKKyAgICAgICAgKFJlc291
cmNlTG9hZERlbGVnYXRlOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAg
ICAgICAqIE1pbmlCcm93c2VyL3dpbi9XZWJLaXRCcm93c2VyV2luZG93LmNwcDoKKyAgICAgICAg
KGNyZWF0ZU51bGxUZXJtaW5hdGVkV0NoYXJzKToKKyAgICAgICAgKGNyZWF0ZVN0cmluZyk6Cisg
ICAgICAgIChjcmVhdGVfYnN0cl90KToKKyAgICAgICAgKFdlYktpdEJyb3dzZXJXaW5kb3c6Oldl
YktpdEJyb3dzZXJXaW5kb3cpOgorICAgICAgICAoV2ViS2l0QnJvd3NlcldpbmRvdzo6ZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci93aW4v
V2ViS2l0QnJvd3NlcldpbmRvdy5oOgorCiAyMDE4LTA5LTIwICBNaWNoYWVsIENhdGFuemFybyAg
PG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBtYW51YWxseSBy
b2xsb3V0IG91ciBzd2l0Y2ggdG8gbWFzdGVyIHJ1bnRpbWUKZGlmZiAtLWdpdCBhL1Rvb2xzL01p
bmlCcm93c2VyL3dpbi9Db21tb24uY3BwIGIvVG9vbHMvTWluaUJyb3dzZXIvd2luL0NvbW1vbi5j
cHAKaW5kZXggYWMzOGYwMWI0YmQuLjFlZjYxNjNkMmNhIDEwMDY0NAotLS0gYS9Ub29scy9NaW5p
QnJvd3Nlci93aW4vQ29tbW9uLmNwcAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci93aW4vQ29tbW9u
LmNwcApAQCAtMTIwLDE5ICsxMjAsMjIgQEAgdm9pZCBjcmVhdGVDcmFzaFJlcG9ydChFWENFUFRJ
T05fUE9JTlRFUlMqIGV4Y2VwdGlvblBvaW50ZXJzKQogfQogCiBzdHJ1Y3QgQXV0aERpYWxvZ0Rh
dGEgewotICAgIHN0ZDo6d3N0cmluZyYgdXNlcm5hbWU7Ci0gICAgc3RkOjp3c3RyaW5nJiBwYXNz
d29yZDsKKyAgICBjb25zdCBfYnN0cl90JiByZWFsbTsKKyAgICBfYnN0cl90JiB1c2VybmFtZTsK
KyAgICBfYnN0cl90JiBwYXNzd29yZDsKIH07CiAKIHN0YXRpYyBJTlRfUFRSIENBTExCQUNLIGF1
dGhEaWFsb2dQcm9jKEhXTkQgaERsZywgVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFS
QU0gbFBhcmFtKQogewotICAgIEF1dGhEaWFsb2dEYXRhJiBkYXRhID0gKnJlaW50ZXJwcmV0X2Nh
c3Q8QXV0aERpYWxvZ0RhdGEqPihHZXRXaW5kb3dMb25nUHRyKGhEbGcsIERXTFBfVVNFUikpOwog
ICAgIHN3aXRjaCAobWVzc2FnZSkgewotICAgIGNhc2UgV01fSU5JVERJQUxPRzoKKyAgICBjYXNl
IFdNX0lOSVRESUFMT0c6IHsKICAgICAgICAgU2V0V2luZG93TG9uZ1B0cihoRGxnLCBEV0xQX1VT
RVIsIGxQYXJhbSk7CisgICAgICAgIEF1dGhEaWFsb2dEYXRhJiBkYXRhID0gKnJlaW50ZXJwcmV0
X2Nhc3Q8QXV0aERpYWxvZ0RhdGEqPihsUGFyYW0pOworICAgICAgICBTZXREbGdJdGVtVGV4dCho
RGxnLCBJRENfUkVBTE1fVEVYVCwgZGF0YS5yZWFsbSk7CiAgICAgICAgIHJldHVybiBUUlVFOwot
CisgICAgfQogICAgIGNhc2UgV01fQ09NTUFORDogeworICAgICAgICBBdXRoRGlhbG9nRGF0YSYg
ZGF0YSA9ICpyZWludGVycHJldF9jYXN0PEF1dGhEaWFsb2dEYXRhKj4oR2V0V2luZG93TG9uZ1B0
cihoRGxnLCBEV0xQX1VTRVIpKTsKICAgICAgICAgaW50IHdtSWQgPSBMT1dPUkQod1BhcmFtKTsK
ICAgICAgICAgc3dpdGNoICh3bUlkKSB7CiAgICAgICAgIGNhc2UgSURPSzogewpAQCAtMTU4LDEx
ICsxNjEsMTEgQEAgc3RhdGljIElOVF9QVFIgQ0FMTEJBQ0sgYXV0aERpYWxvZ1Byb2MoSFdORCBo
RGxnLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIEwKICAgICByZXR1cm4gRkFMU0U7CiB9
CiAKLUhSRVNVTFQgZGlzcGxheUF1dGhEaWFsb2coSFdORCBod25kLCBzdGQ6OndzdHJpbmcmIHVz
ZXJuYW1lLCBzdGQ6OndzdHJpbmcmIHBhc3N3b3JkKQorYm9vbCBkaXNwbGF5QXV0aERpYWxvZyhI
V05EIGh3bmQsIGNvbnN0IF9ic3RyX3QmIHJlYWxtLCBfYnN0cl90JiB1c2VybmFtZSwgX2JzdHJf
dCYgcGFzc3dvcmQpCiB7Ci0gICAgQXV0aERpYWxvZ0RhdGEgZGF0YSB7IHVzZXJuYW1lLCBwYXNz
d29yZCB9OworICAgIEF1dGhEaWFsb2dEYXRhIGRhdGEgeyByZWFsbSwgdXNlcm5hbWUsIHBhc3N3
b3JkIH07CiAgICAgYXV0byByZXN1bHQgPSBEaWFsb2dCb3hQYXJhbShoSW5zdCwgTUFLRUlOVFJF
U09VUkNFKElERF9BVVRIKSwgaHduZCwgYXV0aERpYWxvZ1Byb2MsIHJlaW50ZXJwcmV0X2Nhc3Q8
TFBBUkFNPigmZGF0YSkpOwotICAgIHJldHVybiByZXN1bHQgPiAwID8gU19PSyA6IEVfRkFJTDsK
KyAgICByZXR1cm4gcmVzdWx0ID4gMDsKIH0KIAogQ29tbWFuZExpbmVPcHRpb25zIHBhcnNlQ29t
bWFuZExpbmUoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvd2luL0NvbW1vbi5oIGIv
VG9vbHMvTWluaUJyb3dzZXIvd2luL0NvbW1vbi5oCmluZGV4IDA4NWEzMTMwMWNhLi4xMGFmMzY1
MmFlNiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvd2luL0NvbW1vbi5oCisrKyBiL1Rv
b2xzL01pbmlCcm93c2VyL3dpbi9Db21tb24uaApAQCAtNTAsNyArNTAsNyBAQCB2b2lkIGNvbXB1
dGVGdWxsRGVza3RvcEZyYW1lKCk7CiBib29sIGdldEFwcERhdGFGb2xkZXIoX2JzdHJfdCYgZGly
ZWN0b3J5KTsKIENvbW1hbmRMaW5lT3B0aW9ucyBwYXJzZUNvbW1hbmRMaW5lKCk7CiB2b2lkIGNy
ZWF0ZUNyYXNoUmVwb3J0KEVYQ0VQVElPTl9QT0lOVEVSUyopOwotSFJFU1VMVCBkaXNwbGF5QXV0
aERpYWxvZyhIV05ELCBzdGQ6OndzdHJpbmcmIHVzZXJuYW1lLCBzdGQ6OndzdHJpbmcmIHBhc3N3
b3JkKTsKK2Jvb2wgZGlzcGxheUF1dGhEaWFsb2coSFdORCwgY29uc3QgX2JzdHJfdCYgcmVhbG0s
IF9ic3RyX3QmIHVzZXJuYW1lLCBfYnN0cl90JiBwYXNzd29yZCk7CiAKIGV4dGVybiBISU5TVEFO
Q0UgaEluc3Q7CiBleHRlcm4gUE9JTlQgc193aW5kb3dQb3NpdGlvbjsKZGlmZiAtLWdpdCBhL1Rv
b2xzL01pbmlCcm93c2VyL3dpbi9NaW5pQnJvd3NlckxpYi5yYyBiL1Rvb2xzL01pbmlCcm93c2Vy
L3dpbi9NaW5pQnJvd3NlckxpYi5yYwppbmRleCAyYWM2NGUyOTE3Mi4uMGE3YTdmNTVhODcgMTAw
NzU1Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9NaW5pQnJvd3NlckxpYi5yYworKysgYi9U
b29scy9NaW5pQnJvd3Nlci93aW4vTWluaUJyb3dzZXJMaWIucmMKQEAgLTI0NSwxNyArMjQ1LDE4
IEBAIEJFR0lOCiAgICAgUFVTSEJVVFRPTiAgICAgICJDYW5jZWwiLElEQ0FOQ0VMLDI1MiwxNTUs
NTAsMTQNCiBFTkQNCiANCi1JRERfQVVUSCBESUFMT0dFWCAwLCAwLCAyMzEsIDk5DQorSUREX0FV
VEggRElBTE9HRVggMCwgMCwgMjMxLCAxMTkNCiBTVFlMRSBEU19TRVRGT05UIHwgRFNfTU9EQUxG
UkFNRSB8IERTX0ZJWEVEU1lTIHwgV1NfUE9QVVAgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQ0K
IENBUFRJT04gIkF1dGhlbnRpY2F0aW9uIFJlcXVpcmVkIg0KIEZPTlQgOCwgIk1TIFNoZWxsIERs
ZyIsIDQwMCwgMCwgMHgxDQogQkVHSU4NCi0gICAgREVGUFVTSEJVVFRPTiAgICJTaWduIEluIixJ
RE9LLDExNiw3OCw1MCwxNA0KLSAgICBQVVNIQlVUVE9OICAgICAgIkNhbmNlbCIsSURDQU5DRUws
MTc0LDc4LDUwLDE0DQotICAgIFJURVhUICAgICAgICAgICAiVXNlciBOYW1lOiIsSURDX1NUQVRJ
Qyw3LDIxLDU3LDgNCi0gICAgRURJVFRFWFQgICAgICAgIElEQ19BVVRIX1VTRVIsNjcsMTksMTU3
LDE0LEVTX0FVVE9IU0NST0xMDQotICAgIFJURVhUICAgICAgICAgICAiUGFzc3dvcmQ6IixJRENf
U1RBVElDLDcsNDYsNTcsOA0KLSAgICBFRElUVEVYVCAgICAgICAgSURDX0FVVEhfUEFTU1dPUkQs
NjcsNDQsMTU3LDE0LEVTX1BBU1NXT1JEIHwgRVNfQVVUT0hTQ1JPTEwNCisgICAgREVGUFVTSEJV
VFRPTiAgICJTaWduIEluIixJRE9LLDExNiw5OCw1MCwxNA0KKyAgICBQVVNIQlVUVE9OICAgICAg
IkNhbmNlbCIsSURDQU5DRUwsMTc0LDk4LDUwLDE0DQorICAgIExURVhUICAgICAgICAgICAiUmVh
bG0iLElEQ19SRUFMTV9URVhULDY3LDIxLDE1Nyw4DQorICAgIFJURVhUICAgICAgICAgICAiVXNl
ciBOYW1lOiIsSURDX1NUQVRJQyw3LDQxLDU3LDgNCisgICAgRURJVFRFWFQgICAgICAgIElEQ19B
VVRIX1VTRVIsNjcsMzksMTU3LDE0LEVTX0FVVE9IU0NST0xMDQorICAgIFJURVhUICAgICAgICAg
ICAiUGFzc3dvcmQ6IixJRENfU1RBVElDLDcsNjYsNTcsOA0KKyAgICBFRElUVEVYVCAgICAgICAg
SURDX0FVVEhfUEFTU1dPUkQsNjcsNjQsMTU3LDE0LEVTX1BBU1NXT1JEIHwgRVNfQVVUT0hTQ1JP
TEwNCiBFTkQNCiANCiANCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci93aW4vTWluaUJy
b3dzZXJMaWJSZXNvdXJjZS5oIGIvVG9vbHMvTWluaUJyb3dzZXIvd2luL01pbmlCcm93c2VyTGli
UmVzb3VyY2UuaAppbmRleCAzMjNmZjIzYjIyZC4uZTZjOWIwMDM2M2UgMTAwNzU1Ci0tLSBhL1Rv
b2xzL01pbmlCcm93c2VyL3dpbi9NaW5pQnJvd3NlckxpYlJlc291cmNlLmgKKysrIGIvVG9vbHMv
TWluaUJyb3dzZXIvd2luL01pbmlCcm93c2VyTGliUmVzb3VyY2UuaApAQCAtMTExLDYgKzExMSw3
IEBACiAjZGVmaW5lIElEQ19BVVRIX1VTRVIgICAgICAgICAgICAgICAgICAgMTA1MwogI2RlZmlu
ZSBJRENfQVVUSF9QQVNTV09SRCAgICAgICAgICAgICAgIDEwNTQKICNkZWZpbmUgSURDX1VSTF9C
QVIgICAgICAgICAgICAgICAgICAgICAxMDU1CisjZGVmaW5lIElEQ19SRUFMTV9URVhUICAgICAg
ICAgICAgICAgICAgMTA1NgogI2RlZmluZSBJRE1fTkVXX1dFQktJVF9XSU5ET1cgICAgICAgICAg
IDMyNzc2CiAjZGVmaW5lIElETV9ORVdfV0VCS0lUTEVHQUNZX1dJTkRPVyAgICAgMzI3NzcKICNk
ZWZpbmUgSURDX1NUQVRJQyAgICAgICAgICAgICAgICAgICAgICAtMQpkaWZmIC0tZ2l0IGEvVG9v
bHMvTWluaUJyb3dzZXIvd2luL1Jlc291cmNlTG9hZERlbGVnYXRlLmNwcCBiL1Rvb2xzL01pbmlC
cm93c2VyL3dpbi9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5jcHAKaW5kZXggM2ZjNmUxZjI4ZjAuLjBl
NjRjNjVlZGNiIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci93aW4vUmVzb3VyY2VMb2Fk
RGVsZWdhdGUuY3BwCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9SZXNvdXJjZUxvYWREZWxl
Z2F0ZS5jcHAKQEAgLTg4LDE0ICs4OCwyMiBAQCBIUkVTVUxUIFJlc291cmNlTG9hZERlbGVnYXRl
OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoX0luX29wdF8gSVdlYlZpZQogICAg
IGlmICghY2hhbGxlbmdlIHx8IEZBSUxFRChjaGFsbGVuZ2UtPnNlbmRlcigmc2VuZGVyKSkpCiAg
ICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBzdGQ6OndzdHJpbmcgdXNlcm5hbWUsIHBhc3N3
b3JkOwotICAgIGlmIChkaXNwbGF5QXV0aERpYWxvZyhtX2NsaWVudC0+aHduZCgpLCB1c2VybmFt
ZSwgcGFzc3dvcmQpICE9IFNfT0spCisgICAgQ09NUHRyPElXZWJVUkxQcm90ZWN0aW9uU3BhY2U+
IHByb3RlY3Rpb25TcGFjZTsKKyAgICBpZiAoRkFJTEVEKGNoYWxsZW5nZS0+cHJvdGVjdGlvblNw
YWNlKCZwcm90ZWN0aW9uU3BhY2UpKSkKKyAgICAgICAgcmV0dXJuIEVfRkFJTDsKKworICAgIEJT
VFIgcmVhbG07CisgICAgaWYgKEZBSUxFRChwcm90ZWN0aW9uU3BhY2UtPnJlYWxtKCZyZWFsbSkp
KQorICAgICAgICByZXR1cm4gRV9GQUlMOworCisgICAgX2JzdHJfdCB1c2VybmFtZSwgcGFzc3dv
cmQ7CisgICAgaWYgKCFkaXNwbGF5QXV0aERpYWxvZyhtX2NsaWVudC0+aHduZCgpLCByZWFsbSwg
dXNlcm5hbWUsIHBhc3N3b3JkKSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIENPTVB0
cjxJV2ViVVJMQ3JlZGVudGlhbD4gY3JlZGVudGlhbDsKICAgICBpZiAoRkFJTEVEKFdlYktpdENy
ZWF0ZUluc3RhbmNlKENMU0lEX1dlYlVSTENyZWRlbnRpYWwsIDAsIElJRF9JV2ViVVJMQ3JlZGVu
dGlhbCwgKHZvaWQqKikmY3JlZGVudGlhbCkpKQogICAgICAgICByZXR1cm4gRV9GQUlMOwotICAg
IGNyZWRlbnRpYWwtPmluaXRXaXRoVXNlcihfYnN0cl90KHVzZXJuYW1lLmNfc3RyKCkpLCBfYnN0
cl90KHBhc3N3b3JkLmNfc3RyKCkpLCBXZWJVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VGb3JTZXNz
aW9uKTsKKyAgICBjcmVkZW50aWFsLT5pbml0V2l0aFVzZXIodXNlcm5hbWUsIHBhc3N3b3JkLCBX
ZWJVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VGb3JTZXNzaW9uKTsKIAogICAgIHNlbmRlci0+dXNl
Q3JlZGVudGlhbChjcmVkZW50aWFsLmdldCgpLCBjaGFsbGVuZ2UpOwogICAgIHJldHVybiBTX09L
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvd2luL1dlYktpdEJyb3dzZXJXaW5kb3cu
Y3BwIGIvVG9vbHMvTWluaUJyb3dzZXIvd2luL1dlYktpdEJyb3dzZXJXaW5kb3cuY3BwCmluZGV4
IDAxYjYyZTE0ZTY2Li5mMTUwYzE1YTEwZiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIv
d2luL1dlYktpdEJyb3dzZXJXaW5kb3cuY3BwCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9X
ZWJLaXRCcm93c2VyV2luZG93LmNwcApAQCAtMjYsMTcgKzI2LDI5IEBACiAjaW5jbHVkZSAiV2Vi
S2l0QnJvd3NlcldpbmRvdy5oIgogCiAjaW5jbHVkZSAiTWluaUJyb3dzZXJMaWJSZXNvdXJjZS5o
IgorI2luY2x1ZGUgImNvbW1vbi5oIgogI2luY2x1ZGUgPFdlYktpdC9XS0luc3BlY3Rvci5oPgor
I2luY2x1ZGUgPFdlYktpdC9XS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CisjaW5jbHVkZSA8
V2ViS2l0L1dLQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmg+CisjaW5jbHVkZSA8V2Vi
S2l0L1dLQ3JlZGVudGlhbC5oPgorI2luY2x1ZGUgPFdlYktpdC9XS1Byb3RlY3Rpb25TcGFjZS5o
PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAotc3RkOjp3c3RyaW5nCi1jcmVhdGVTdHJpbmcoV0tTdHJp
bmdSZWYgd2tTdHJpbmcpCitzdGQ6OnZlY3RvcjxXS0NoYXI+IGNyZWF0ZU51bGxUZXJtaW5hdGVk
V0NoYXJzKFdLU3RyaW5nUmVmIHdrU3RyaW5nKQogewogICAgIHNpemVfdCBtYXhTaXplID0gV0tT
dHJpbmdHZXRMZW5ndGgod2tTdHJpbmcpOwogCi0gICAgc3RkOjp2ZWN0b3I8V0tDaGFyPiB3a0No
YXJCdWZmZXIobWF4U2l6ZSk7Ci0gICAgc2l6ZV90IGFjdHVhbExlbmd0aCA9IFdLU3RyaW5nR2V0
Q2hhcmFjdGVycyh3a1N0cmluZywgd2tDaGFyQnVmZmVyLmRhdGEoKSwgbWF4U2l6ZSk7Ci0gICAg
cmV0dXJuIHN0ZDo6d3N0cmluZyh3a0NoYXJCdWZmZXIuZGF0YSgpLCBhY3R1YWxMZW5ndGgpOwor
ICAgIHN0ZDo6dmVjdG9yPFdLQ2hhcj4gY2hhcnMobWF4U2l6ZSArIDEpOworICAgIHNpemVfdCBh
Y3R1YWxMZW5ndGggPSBXS1N0cmluZ0dldENoYXJhY3RlcnMod2tTdHJpbmcsIGNoYXJzLmRhdGEo
KSwgbWF4U2l6ZSk7CisgICAgY2hhcnMucmVzaXplKGFjdHVhbExlbmd0aCArIDEpOworICAgIGNo
YXJzW2FjdHVhbExlbmd0aF0gPSAwOworICAgIHJldHVybiBjaGFyczsKK30KKworc3RkOjp3c3Ry
aW5nIGNyZWF0ZVN0cmluZyhXS1N0cmluZ1JlZiB3a1N0cmluZykKK3sKKyAgICBzdGQ6OnZlY3Rv
cjxXS0NoYXI+IGNoYXJzKGNyZWF0ZU51bGxUZXJtaW5hdGVkV0NoYXJzKHdrU3RyaW5nKSk7Cisg
ICAgcmV0dXJuIHN0ZDo6d3N0cmluZyhjaGFycy5kYXRhKCkpOwogfQogCiBzdGQ6OndzdHJpbmcg
Y3JlYXRlU3RyaW5nKFdLVVJMUmVmIHdrVVJMKQpAQCAtNjksNiArODEsMTIgQEAgY3JlYXRlV0tV
UkwoX2JzdHJfdCBzdHIpCiAgICAgcmV0dXJuIGFkb3B0V0soV0tVUkxDcmVhdGVXaXRoVVRGOENT
dHJpbmcodXRmOC5kYXRhKCkpKTsKIH0KIAorX2JzdHJfdCBjcmVhdGVfYnN0cl90KFdLU3RyaW5n
UmVmIHdrU3RyaW5nKQoreworICAgIHN0ZDo6dmVjdG9yPFdLQ2hhcj4gY2hhcnMoY3JlYXRlTnVs
bFRlcm1pbmF0ZWRXQ2hhcnMod2tTdHJpbmcpKTsKKyAgICByZXR1cm4gX2JzdHJfdChjaGFycy5k
YXRhKCkpOworfQorCiBSZWY8QnJvd3NlcldpbmRvdz4gV2ViS2l0QnJvd3NlcldpbmRvdzo6Y3Jl
YXRlKEhXTkQgbWFpblduZCwgSFdORCB1cmxCYXJXbmQsIGJvb2wsIGJvb2wpCiB7CiAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgV2ViS2l0QnJvd3NlcldpbmRvdyhtYWluV25kLCB1cmxCYXJXbmQp
KTsKQEAgLTk0LDYgKzExMiw3IEBAIFdlYktpdEJyb3dzZXJXaW5kb3c6OldlYktpdEJyb3dzZXJX
aW5kb3coSFdORCBtYWluV25kLCBIV05EIHVybEJhclduZCkKICAgICBXS1BhZ2VOYXZpZ2F0aW9u
Q2xpZW50VjAgbmF2aWdhdGlvbkNsaWVudCA9IHt7IDAsIHRoaXMgfX07CiAgICAgbmF2aWdhdGlv
bkNsaWVudC5kaWRGaW5pc2hOYXZpZ2F0aW9uID0gZGlkRmluaXNoTmF2aWdhdGlvbjsKICAgICBu
YXZpZ2F0aW9uQ2xpZW50LmRpZENvbW1pdE5hdmlnYXRpb24gPSBkaWRDb21taXROYXZpZ2F0aW9u
OworICAgIG5hdmlnYXRpb25DbGllbnQuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
ID0gZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogICAgIFdLUGFnZVNldFBhZ2VO
YXZpZ2F0aW9uQ2xpZW50KHBhZ2UsICZuYXZpZ2F0aW9uQ2xpZW50LmJhc2UpOwogfQogCkBAIC0y
MjksMyArMjQ4LDIyIEBAIHZvaWQgV2ViS2l0QnJvd3NlcldpbmRvdzo6ZGlkQ29tbWl0TmF2aWdh
dGlvbihXS1BhZ2VSZWYgcGFnZSwgV0tOYXZpZ2F0aW9uUmVmIG5hCiAgICAgc3RkOjp3c3RyaW5n
IHVybFN0cmluZyA9IGNyZWF0ZVN0cmluZyh3a3VybC5nZXQoKSk7CiAgICAgU2V0V2luZG93VGV4
dCh0aGlzV2luZG93Lm1fdXJsQmFyV25kLCB1cmxTdHJpbmcuY19zdHIoKSk7CiB9CisKK3ZvaWQg
V2ViS2l0QnJvd3NlcldpbmRvdzo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdL
UGFnZVJlZiBwYWdlLCBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVmIGNoYWxsZW5nZSwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBhdXRvJiB0aGlzV2luZG93ID0gdG9XZWJLaXRC
cm93c2VyV2luZG93KGNsaWVudEluZm8pOworICAgIGF1dG8gcHJvdGVjdGlvblNwYWNlID0gV0tB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZUdldFByb3RlY3Rpb25TcGFjZShjaGFsbGVuZ2UpOworICAg
IGF1dG8gZGVjaXNpb25MaXN0ZW5lciA9IFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2VHZXREZWNp
c2lvbkxpc3RlbmVyKGNoYWxsZW5nZSk7CisKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4g
cmVhbG0oV0tQcm90ZWN0aW9uU3BhY2VDb3B5UmVhbG0ocHJvdGVjdGlvblNwYWNlKSk7CisgICAg
X2JzdHJfdCB1c2VyLCBwYXNzOworICAgIGlmICghZGlzcGxheUF1dGhEaWFsb2codGhpc1dpbmRv
dy5od25kKCksIGNyZWF0ZV9ic3RyX3QocmVhbG0uZ2V0KCkpLCB1c2VyLCBwYXNzKSkgeworICAg
ICAgICBXS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lckNhbmNlbChkZWNpc2lvbkxpc3Rl
bmVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5n
UmVmPiB1c2VybmFtZSA9IGNyZWF0ZVdLU3RyaW5nKHVzZXIpOworICAgIFdLUmV0YWluUHRyPFdL
U3RyaW5nUmVmPiBwYXNzd29yZCA9IGNyZWF0ZVdLU3RyaW5nKHBhc3MpOworICAgIFdLUmV0YWlu
UHRyPFdLQ3JlZGVudGlhbFJlZj4gY3JlZGVudGlhbChBZG9wdFdLLCBXS0NyZWRlbnRpYWxDcmVh
dGUodXNlcm5hbWUuZ2V0KCksIHBhc3N3b3JkLmdldCgpLCBrV0tDcmVkZW50aWFsUGVyc2lzdGVu
Y2VGb3JTZXNzaW9uKSk7CisgICAgV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXJVc2VD
cmVkZW50aWFsKGRlY2lzaW9uTGlzdGVuZXIsIGNyZWRlbnRpYWwuZ2V0KCkpOworfQpkaWZmIC0t
Z2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvd2luL1dlYktpdEJyb3dzZXJXaW5kb3cuaCBiL1Rvb2xz
L01pbmlCcm93c2VyL3dpbi9XZWJLaXRCcm93c2VyV2luZG93LmgKaW5kZXggYTdhYzkwMGYyYmIu
LjQyNjZlN2M2NGE4IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci93aW4vV2ViS2l0QnJv
d3NlcldpbmRvdy5oCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9XZWJLaXRCcm93c2VyV2lu
ZG93LmgKQEAgLTU5LDYgKzU5LDcgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyB2b2lkIGRpZEZp
bmlzaE5hdmlnYXRpb24oV0tQYWdlUmVmLCBXS05hdmlnYXRpb25SZWYsIFdLVHlwZVJlZiwgY29u
c3Qgdm9pZCopOwogICAgIHN0YXRpYyB2b2lkIGRpZENvbW1pdE5hdmlnYXRpb24oV0tQYWdlUmVm
LCBXS05hdmlnYXRpb25SZWYsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCopOworICAgIHN0YXRpYyB2
b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXS1BhZ2VSZWYsIFdLQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VSZWYsIGNvbnN0IHZvaWQqKTsKIAogICAgIFdLUmV0YWluUHRyPFdL
Vmlld1JlZj4gbV92aWV3OwogICAgIEhXTkQgbV9oTWFpblduZCB7IG51bGxwdHIgfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350706</attachid>
            <date>2018-09-24 15:52:36 -0700</date>
            <delta_ts>2018-09-26 12:58:38 -0700</delta_ts>
            <desc>FIX</desc>
            <filename>189846.diff</filename>
            <type>text/plain</type>
            <size>11162</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiMTc4
ZTY3YjNjNS4uOTllNDNkYzA1ZjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxOC0wOS0yMSAgQmFzdWtlIFN1enVr
aSAgPEJhc3VrZS5TdXp1a2lAc29ueS5jb20+CisKKyAgICAgICAgW1dpbl1bV2ViS2l0XSBJbXBs
ZW1lbnQgYXV0aGVudGljYXRpb24gZGlhbG9nIG9uIE1pbmlCcm93c2VyLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5ODQ2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSXQgd2FzIGltcGxlbWVudGVkIGZv
ciBXZWJLaXRMZWdhY3ksIGJ1dCBub3QgZm9yIFdlYktpdC4KKyAgICAgICAgQWxzbyBhZGRlZCB0
ZXh0IGZpZWxkIHRvIGRpc3BsYXkgUmVhbG0gaW5mb3JtYXRpb24uCisKKyAgICAgICAgKiBNaW5p
QnJvd3Nlci93aW4vQ29tbW9uLmNwcDoKKyAgICAgICAgKGF1dGhEaWFsb2dQcm9jKToKKyAgICAg
ICAgKGRpc3BsYXlBdXRoRGlhbG9nKToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci93aW4vQ29tbW9u
Lmg6CisgICAgICAgICogTWluaUJyb3dzZXIvd2luL01pbmlCcm93c2VyTGliLnJjOgorICAgICAg
ICAqIE1pbmlCcm93c2VyL3dpbi9NaW5pQnJvd3NlckxpYlJlc291cmNlLmg6CisgICAgICAgICog
TWluaUJyb3dzZXIvd2luL1Jlc291cmNlTG9hZERlbGVnYXRlLmNwcDoKKyAgICAgICAgKFJlc291
cmNlTG9hZERlbGVnYXRlOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAg
ICAgICAqIE1pbmlCcm93c2VyL3dpbi9XZWJLaXRCcm93c2VyV2luZG93LmNwcDoKKyAgICAgICAg
KGNyZWF0ZU51bGxUZXJtaW5hdGVkV0NoYXJzKToKKyAgICAgICAgKGNyZWF0ZVN0cmluZyk6Cisg
ICAgICAgIChjcmVhdGVfYnN0cl90KToKKyAgICAgICAgKFdlYktpdEJyb3dzZXJXaW5kb3c6Oldl
YktpdEJyb3dzZXJXaW5kb3cpOgorICAgICAgICAoV2ViS2l0QnJvd3NlcldpbmRvdzo6ZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci93aW4v
V2ViS2l0QnJvd3NlcldpbmRvdy5oOgorCiAyMDE4LTA5LTIwICBNaWNoYWVsIENhdGFuemFybyAg
PG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBtYW51YWxseSBy
b2xsb3V0IG91ciBzd2l0Y2ggdG8gbWFzdGVyIHJ1bnRpbWUKZGlmZiAtLWdpdCBhL1Rvb2xzL01p
bmlCcm93c2VyL3dpbi9Db21tb24uY3BwIGIvVG9vbHMvTWluaUJyb3dzZXIvd2luL0NvbW1vbi5j
cHAKaW5kZXggYWMzOGYwMWI0YmQuLjFlZjYxNjNkMmNhIDEwMDY0NAotLS0gYS9Ub29scy9NaW5p
QnJvd3Nlci93aW4vQ29tbW9uLmNwcAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci93aW4vQ29tbW9u
LmNwcApAQCAtMTIwLDE5ICsxMjAsMjIgQEAgdm9pZCBjcmVhdGVDcmFzaFJlcG9ydChFWENFUFRJ
T05fUE9JTlRFUlMqIGV4Y2VwdGlvblBvaW50ZXJzKQogfQogCiBzdHJ1Y3QgQXV0aERpYWxvZ0Rh
dGEgewotICAgIHN0ZDo6d3N0cmluZyYgdXNlcm5hbWU7Ci0gICAgc3RkOjp3c3RyaW5nJiBwYXNz
d29yZDsKKyAgICBjb25zdCBfYnN0cl90JiByZWFsbTsKKyAgICBfYnN0cl90JiB1c2VybmFtZTsK
KyAgICBfYnN0cl90JiBwYXNzd29yZDsKIH07CiAKIHN0YXRpYyBJTlRfUFRSIENBTExCQUNLIGF1
dGhEaWFsb2dQcm9jKEhXTkQgaERsZywgVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFS
QU0gbFBhcmFtKQogewotICAgIEF1dGhEaWFsb2dEYXRhJiBkYXRhID0gKnJlaW50ZXJwcmV0X2Nh
c3Q8QXV0aERpYWxvZ0RhdGEqPihHZXRXaW5kb3dMb25nUHRyKGhEbGcsIERXTFBfVVNFUikpOwog
ICAgIHN3aXRjaCAobWVzc2FnZSkgewotICAgIGNhc2UgV01fSU5JVERJQUxPRzoKKyAgICBjYXNl
IFdNX0lOSVRESUFMT0c6IHsKICAgICAgICAgU2V0V2luZG93TG9uZ1B0cihoRGxnLCBEV0xQX1VT
RVIsIGxQYXJhbSk7CisgICAgICAgIEF1dGhEaWFsb2dEYXRhJiBkYXRhID0gKnJlaW50ZXJwcmV0
X2Nhc3Q8QXV0aERpYWxvZ0RhdGEqPihsUGFyYW0pOworICAgICAgICBTZXREbGdJdGVtVGV4dCho
RGxnLCBJRENfUkVBTE1fVEVYVCwgZGF0YS5yZWFsbSk7CiAgICAgICAgIHJldHVybiBUUlVFOwot
CisgICAgfQogICAgIGNhc2UgV01fQ09NTUFORDogeworICAgICAgICBBdXRoRGlhbG9nRGF0YSYg
ZGF0YSA9ICpyZWludGVycHJldF9jYXN0PEF1dGhEaWFsb2dEYXRhKj4oR2V0V2luZG93TG9uZ1B0
cihoRGxnLCBEV0xQX1VTRVIpKTsKICAgICAgICAgaW50IHdtSWQgPSBMT1dPUkQod1BhcmFtKTsK
ICAgICAgICAgc3dpdGNoICh3bUlkKSB7CiAgICAgICAgIGNhc2UgSURPSzogewpAQCAtMTU4LDEx
ICsxNjEsMTEgQEAgc3RhdGljIElOVF9QVFIgQ0FMTEJBQ0sgYXV0aERpYWxvZ1Byb2MoSFdORCBo
RGxnLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIEwKICAgICByZXR1cm4gRkFMU0U7CiB9
CiAKLUhSRVNVTFQgZGlzcGxheUF1dGhEaWFsb2coSFdORCBod25kLCBzdGQ6OndzdHJpbmcmIHVz
ZXJuYW1lLCBzdGQ6OndzdHJpbmcmIHBhc3N3b3JkKQorYm9vbCBkaXNwbGF5QXV0aERpYWxvZyhI
V05EIGh3bmQsIGNvbnN0IF9ic3RyX3QmIHJlYWxtLCBfYnN0cl90JiB1c2VybmFtZSwgX2JzdHJf
dCYgcGFzc3dvcmQpCiB7Ci0gICAgQXV0aERpYWxvZ0RhdGEgZGF0YSB7IHVzZXJuYW1lLCBwYXNz
d29yZCB9OworICAgIEF1dGhEaWFsb2dEYXRhIGRhdGEgeyByZWFsbSwgdXNlcm5hbWUsIHBhc3N3
b3JkIH07CiAgICAgYXV0byByZXN1bHQgPSBEaWFsb2dCb3hQYXJhbShoSW5zdCwgTUFLRUlOVFJF
U09VUkNFKElERF9BVVRIKSwgaHduZCwgYXV0aERpYWxvZ1Byb2MsIHJlaW50ZXJwcmV0X2Nhc3Q8
TFBBUkFNPigmZGF0YSkpOwotICAgIHJldHVybiByZXN1bHQgPiAwID8gU19PSyA6IEVfRkFJTDsK
KyAgICByZXR1cm4gcmVzdWx0ID4gMDsKIH0KIAogQ29tbWFuZExpbmVPcHRpb25zIHBhcnNlQ29t
bWFuZExpbmUoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvd2luL0NvbW1vbi5oIGIv
VG9vbHMvTWluaUJyb3dzZXIvd2luL0NvbW1vbi5oCmluZGV4IDA4NWEzMTMwMWNhLi4xMGFmMzY1
MmFlNiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvd2luL0NvbW1vbi5oCisrKyBiL1Rv
b2xzL01pbmlCcm93c2VyL3dpbi9Db21tb24uaApAQCAtNTAsNyArNTAsNyBAQCB2b2lkIGNvbXB1
dGVGdWxsRGVza3RvcEZyYW1lKCk7CiBib29sIGdldEFwcERhdGFGb2xkZXIoX2JzdHJfdCYgZGly
ZWN0b3J5KTsKIENvbW1hbmRMaW5lT3B0aW9ucyBwYXJzZUNvbW1hbmRMaW5lKCk7CiB2b2lkIGNy
ZWF0ZUNyYXNoUmVwb3J0KEVYQ0VQVElPTl9QT0lOVEVSUyopOwotSFJFU1VMVCBkaXNwbGF5QXV0
aERpYWxvZyhIV05ELCBzdGQ6OndzdHJpbmcmIHVzZXJuYW1lLCBzdGQ6OndzdHJpbmcmIHBhc3N3
b3JkKTsKK2Jvb2wgZGlzcGxheUF1dGhEaWFsb2coSFdORCwgY29uc3QgX2JzdHJfdCYgcmVhbG0s
IF9ic3RyX3QmIHVzZXJuYW1lLCBfYnN0cl90JiBwYXNzd29yZCk7CiAKIGV4dGVybiBISU5TVEFO
Q0UgaEluc3Q7CiBleHRlcm4gUE9JTlQgc193aW5kb3dQb3NpdGlvbjsKZGlmZiAtLWdpdCBhL1Rv
b2xzL01pbmlCcm93c2VyL3dpbi9NaW5pQnJvd3NlckxpYi5yYyBiL1Rvb2xzL01pbmlCcm93c2Vy
L3dpbi9NaW5pQnJvd3NlckxpYi5yYwppbmRleCAyYWM2NGUyOTE3Mi4uMGE3YTdmNTVhODcgMTAw
NzU1Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9NaW5pQnJvd3NlckxpYi5yYworKysgYi9U
b29scy9NaW5pQnJvd3Nlci93aW4vTWluaUJyb3dzZXJMaWIucmMKQEAgLTI0NSwxNyArMjQ1LDE4
IEBAIEJFR0lOCiAgICAgUFVTSEJVVFRPTiAgICAgICJDYW5jZWwiLElEQ0FOQ0VMLDI1MiwxNTUs
NTAsMTQNCiBFTkQNCiANCi1JRERfQVVUSCBESUFMT0dFWCAwLCAwLCAyMzEsIDk5DQorSUREX0FV
VEggRElBTE9HRVggMCwgMCwgMjMxLCAxMTkNCiBTVFlMRSBEU19TRVRGT05UIHwgRFNfTU9EQUxG
UkFNRSB8IERTX0ZJWEVEU1lTIHwgV1NfUE9QVVAgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQ0K
IENBUFRJT04gIkF1dGhlbnRpY2F0aW9uIFJlcXVpcmVkIg0KIEZPTlQgOCwgIk1TIFNoZWxsIERs
ZyIsIDQwMCwgMCwgMHgxDQogQkVHSU4NCi0gICAgREVGUFVTSEJVVFRPTiAgICJTaWduIEluIixJ
RE9LLDExNiw3OCw1MCwxNA0KLSAgICBQVVNIQlVUVE9OICAgICAgIkNhbmNlbCIsSURDQU5DRUws
MTc0LDc4LDUwLDE0DQotICAgIFJURVhUICAgICAgICAgICAiVXNlciBOYW1lOiIsSURDX1NUQVRJ
Qyw3LDIxLDU3LDgNCi0gICAgRURJVFRFWFQgICAgICAgIElEQ19BVVRIX1VTRVIsNjcsMTksMTU3
LDE0LEVTX0FVVE9IU0NST0xMDQotICAgIFJURVhUICAgICAgICAgICAiUGFzc3dvcmQ6IixJRENf
U1RBVElDLDcsNDYsNTcsOA0KLSAgICBFRElUVEVYVCAgICAgICAgSURDX0FVVEhfUEFTU1dPUkQs
NjcsNDQsMTU3LDE0LEVTX1BBU1NXT1JEIHwgRVNfQVVUT0hTQ1JPTEwNCisgICAgREVGUFVTSEJV
VFRPTiAgICJTaWduIEluIixJRE9LLDExNiw5OCw1MCwxNA0KKyAgICBQVVNIQlVUVE9OICAgICAg
IkNhbmNlbCIsSURDQU5DRUwsMTc0LDk4LDUwLDE0DQorICAgIExURVhUICAgICAgICAgICAiUmVh
bG0iLElEQ19SRUFMTV9URVhULDY3LDIxLDE1Nyw4DQorICAgIFJURVhUICAgICAgICAgICAiVXNl
ciBOYW1lOiIsSURDX1NUQVRJQyw3LDQxLDU3LDgNCisgICAgRURJVFRFWFQgICAgICAgIElEQ19B
VVRIX1VTRVIsNjcsMzksMTU3LDE0LEVTX0FVVE9IU0NST0xMDQorICAgIFJURVhUICAgICAgICAg
ICAiUGFzc3dvcmQ6IixJRENfU1RBVElDLDcsNjYsNTcsOA0KKyAgICBFRElUVEVYVCAgICAgICAg
SURDX0FVVEhfUEFTU1dPUkQsNjcsNjQsMTU3LDE0LEVTX1BBU1NXT1JEIHwgRVNfQVVUT0hTQ1JP
TEwNCiBFTkQNCiANCiANCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci93aW4vTWluaUJy
b3dzZXJMaWJSZXNvdXJjZS5oIGIvVG9vbHMvTWluaUJyb3dzZXIvd2luL01pbmlCcm93c2VyTGli
UmVzb3VyY2UuaAppbmRleCAzMjNmZjIzYjIyZC4uZTZjOWIwMDM2M2UgMTAwNzU1Ci0tLSBhL1Rv
b2xzL01pbmlCcm93c2VyL3dpbi9NaW5pQnJvd3NlckxpYlJlc291cmNlLmgKKysrIGIvVG9vbHMv
TWluaUJyb3dzZXIvd2luL01pbmlCcm93c2VyTGliUmVzb3VyY2UuaApAQCAtMTExLDYgKzExMSw3
IEBACiAjZGVmaW5lIElEQ19BVVRIX1VTRVIgICAgICAgICAgICAgICAgICAgMTA1MwogI2RlZmlu
ZSBJRENfQVVUSF9QQVNTV09SRCAgICAgICAgICAgICAgIDEwNTQKICNkZWZpbmUgSURDX1VSTF9C
QVIgICAgICAgICAgICAgICAgICAgICAxMDU1CisjZGVmaW5lIElEQ19SRUFMTV9URVhUICAgICAg
ICAgICAgICAgICAgMTA1NgogI2RlZmluZSBJRE1fTkVXX1dFQktJVF9XSU5ET1cgICAgICAgICAg
IDMyNzc2CiAjZGVmaW5lIElETV9ORVdfV0VCS0lUTEVHQUNZX1dJTkRPVyAgICAgMzI3NzcKICNk
ZWZpbmUgSURDX1NUQVRJQyAgICAgICAgICAgICAgICAgICAgICAtMQpkaWZmIC0tZ2l0IGEvVG9v
bHMvTWluaUJyb3dzZXIvd2luL1Jlc291cmNlTG9hZERlbGVnYXRlLmNwcCBiL1Rvb2xzL01pbmlC
cm93c2VyL3dpbi9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5jcHAKaW5kZXggM2ZjNmUxZjI4ZjAuLjBl
NjRjNjVlZGNiIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci93aW4vUmVzb3VyY2VMb2Fk
RGVsZWdhdGUuY3BwCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9SZXNvdXJjZUxvYWREZWxl
Z2F0ZS5jcHAKQEAgLTg4LDE0ICs4OCwyMiBAQCBIUkVTVUxUIFJlc291cmNlTG9hZERlbGVnYXRl
OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoX0luX29wdF8gSVdlYlZpZQogICAg
IGlmICghY2hhbGxlbmdlIHx8IEZBSUxFRChjaGFsbGVuZ2UtPnNlbmRlcigmc2VuZGVyKSkpCiAg
ICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBzdGQ6OndzdHJpbmcgdXNlcm5hbWUsIHBhc3N3
b3JkOwotICAgIGlmIChkaXNwbGF5QXV0aERpYWxvZyhtX2NsaWVudC0+aHduZCgpLCB1c2VybmFt
ZSwgcGFzc3dvcmQpICE9IFNfT0spCisgICAgQ09NUHRyPElXZWJVUkxQcm90ZWN0aW9uU3BhY2U+
IHByb3RlY3Rpb25TcGFjZTsKKyAgICBpZiAoRkFJTEVEKGNoYWxsZW5nZS0+cHJvdGVjdGlvblNw
YWNlKCZwcm90ZWN0aW9uU3BhY2UpKSkKKyAgICAgICAgcmV0dXJuIEVfRkFJTDsKKworICAgIEJT
VFIgcmVhbG07CisgICAgaWYgKEZBSUxFRChwcm90ZWN0aW9uU3BhY2UtPnJlYWxtKCZyZWFsbSkp
KQorICAgICAgICByZXR1cm4gRV9GQUlMOworCisgICAgX2JzdHJfdCB1c2VybmFtZSwgcGFzc3dv
cmQ7CisgICAgaWYgKCFkaXNwbGF5QXV0aERpYWxvZyhtX2NsaWVudC0+aHduZCgpLCByZWFsbSwg
dXNlcm5hbWUsIHBhc3N3b3JkKSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIENPTVB0
cjxJV2ViVVJMQ3JlZGVudGlhbD4gY3JlZGVudGlhbDsKICAgICBpZiAoRkFJTEVEKFdlYktpdENy
ZWF0ZUluc3RhbmNlKENMU0lEX1dlYlVSTENyZWRlbnRpYWwsIDAsIElJRF9JV2ViVVJMQ3JlZGVu
dGlhbCwgKHZvaWQqKikmY3JlZGVudGlhbCkpKQogICAgICAgICByZXR1cm4gRV9GQUlMOwotICAg
IGNyZWRlbnRpYWwtPmluaXRXaXRoVXNlcihfYnN0cl90KHVzZXJuYW1lLmNfc3RyKCkpLCBfYnN0
cl90KHBhc3N3b3JkLmNfc3RyKCkpLCBXZWJVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VGb3JTZXNz
aW9uKTsKKyAgICBjcmVkZW50aWFsLT5pbml0V2l0aFVzZXIodXNlcm5hbWUsIHBhc3N3b3JkLCBX
ZWJVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VGb3JTZXNzaW9uKTsKIAogICAgIHNlbmRlci0+dXNl
Q3JlZGVudGlhbChjcmVkZW50aWFsLmdldCgpLCBjaGFsbGVuZ2UpOwogICAgIHJldHVybiBTX09L
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvd2luL1dlYktpdEJyb3dzZXJXaW5kb3cu
Y3BwIGIvVG9vbHMvTWluaUJyb3dzZXIvd2luL1dlYktpdEJyb3dzZXJXaW5kb3cuY3BwCmluZGV4
IDAxYjYyZTE0ZTY2Li45Y2RlYTVhOGMwOSAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIv
d2luL1dlYktpdEJyb3dzZXJXaW5kb3cuY3BwCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9X
ZWJLaXRCcm93c2VyV2luZG93LmNwcApAQCAtMjYsMTcgKzI2LDI5IEBACiAjaW5jbHVkZSAiV2Vi
S2l0QnJvd3NlcldpbmRvdy5oIgogCiAjaW5jbHVkZSAiTWluaUJyb3dzZXJMaWJSZXNvdXJjZS5o
IgorI2luY2x1ZGUgImNvbW1vbi5oIgorI2luY2x1ZGUgPFdlYktpdC9XS0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLQXV0aGVudGljYXRpb25EZWNpc2lvbkxp
c3RlbmVyLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLQ3JlZGVudGlhbC5oPgogI2luY2x1ZGUgPFdl
YktpdC9XS0luc3BlY3Rvci5oPgorI2luY2x1ZGUgPFdlYktpdC9XS1Byb3RlY3Rpb25TcGFjZS5o
PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAotc3RkOjp3c3RyaW5nCi1jcmVhdGVTdHJpbmcoV0tTdHJp
bmdSZWYgd2tTdHJpbmcpCitzdGQ6OnZlY3RvcjxXS0NoYXI+IGNyZWF0ZU51bGxUZXJtaW5hdGVk
V0NoYXJzKFdLU3RyaW5nUmVmIHdrU3RyaW5nKQogewogICAgIHNpemVfdCBtYXhTaXplID0gV0tT
dHJpbmdHZXRMZW5ndGgod2tTdHJpbmcpOwogCi0gICAgc3RkOjp2ZWN0b3I8V0tDaGFyPiB3a0No
YXJCdWZmZXIobWF4U2l6ZSk7Ci0gICAgc2l6ZV90IGFjdHVhbExlbmd0aCA9IFdLU3RyaW5nR2V0
Q2hhcmFjdGVycyh3a1N0cmluZywgd2tDaGFyQnVmZmVyLmRhdGEoKSwgbWF4U2l6ZSk7Ci0gICAg
cmV0dXJuIHN0ZDo6d3N0cmluZyh3a0NoYXJCdWZmZXIuZGF0YSgpLCBhY3R1YWxMZW5ndGgpOwor
ICAgIHN0ZDo6dmVjdG9yPFdLQ2hhcj4gY2hhcnMobWF4U2l6ZSArIDEpOworICAgIHNpemVfdCBh
Y3R1YWxMZW5ndGggPSBXS1N0cmluZ0dldENoYXJhY3RlcnMod2tTdHJpbmcsIGNoYXJzLmRhdGEo
KSwgbWF4U2l6ZSk7CisgICAgY2hhcnMucmVzaXplKGFjdHVhbExlbmd0aCArIDEpOworICAgIGNo
YXJzW2FjdHVhbExlbmd0aF0gPSAwOworICAgIHJldHVybiBjaGFyczsKK30KKworc3RkOjp3c3Ry
aW5nIGNyZWF0ZVN0cmluZyhXS1N0cmluZ1JlZiB3a1N0cmluZykKK3sKKyAgICBzdGQ6OnZlY3Rv
cjxXS0NoYXI+IGNoYXJzKGNyZWF0ZU51bGxUZXJtaW5hdGVkV0NoYXJzKHdrU3RyaW5nKSk7Cisg
ICAgcmV0dXJuIHN0ZDo6d3N0cmluZyhjaGFycy5kYXRhKCkpOwogfQogCiBzdGQ6OndzdHJpbmcg
Y3JlYXRlU3RyaW5nKFdLVVJMUmVmIHdrVVJMKQpAQCAtNjksNiArODEsMTIgQEAgY3JlYXRlV0tV
UkwoX2JzdHJfdCBzdHIpCiAgICAgcmV0dXJuIGFkb3B0V0soV0tVUkxDcmVhdGVXaXRoVVRGOENT
dHJpbmcodXRmOC5kYXRhKCkpKTsKIH0KIAorX2JzdHJfdCBjcmVhdGVCU1RSVChXS1N0cmluZ1Jl
ZiB3a1N0cmluZykKK3sKKyAgICBzdGQ6OnZlY3RvcjxXS0NoYXI+IGNoYXJzKGNyZWF0ZU51bGxU
ZXJtaW5hdGVkV0NoYXJzKHdrU3RyaW5nKSk7CisgICAgcmV0dXJuIF9ic3RyX3QoY2hhcnMuZGF0
YSgpKTsKK30KKwogUmVmPEJyb3dzZXJXaW5kb3c+IFdlYktpdEJyb3dzZXJXaW5kb3c6OmNyZWF0
ZShIV05EIG1haW5XbmQsIEhXTkQgdXJsQmFyV25kLCBib29sLCBib29sKQogewogICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFdlYktpdEJyb3dzZXJXaW5kb3cobWFpblduZCwgdXJsQmFyV25kKSk7
CkBAIC05NCw2ICsxMTIsNyBAQCBXZWJLaXRCcm93c2VyV2luZG93OjpXZWJLaXRCcm93c2VyV2lu
ZG93KEhXTkQgbWFpblduZCwgSFdORCB1cmxCYXJXbmQpCiAgICAgV0tQYWdlTmF2aWdhdGlvbkNs
aWVudFYwIG5hdmlnYXRpb25DbGllbnQgPSB7eyAwLCB0aGlzIH19OwogICAgIG5hdmlnYXRpb25D
bGllbnQuZGlkRmluaXNoTmF2aWdhdGlvbiA9IGRpZEZpbmlzaE5hdmlnYXRpb247CiAgICAgbmF2
aWdhdGlvbkNsaWVudC5kaWRDb21taXROYXZpZ2F0aW9uID0gZGlkQ29tbWl0TmF2aWdhdGlvbjsK
KyAgICBuYXZpZ2F0aW9uQ2xpZW50LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9
IGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKICAgICBXS1BhZ2VTZXRQYWdlTmF2
aWdhdGlvbkNsaWVudChwYWdlLCAmbmF2aWdhdGlvbkNsaWVudC5iYXNlKTsKIH0KIApAQCAtMjI5
LDMgKzI0OCwyMiBAQCB2b2lkIFdlYktpdEJyb3dzZXJXaW5kb3c6OmRpZENvbW1pdE5hdmlnYXRp
b24oV0tQYWdlUmVmIHBhZ2UsIFdLTmF2aWdhdGlvblJlZiBuYQogICAgIHN0ZDo6d3N0cmluZyB1
cmxTdHJpbmcgPSBjcmVhdGVTdHJpbmcod2t1cmwuZ2V0KCkpOwogICAgIFNldFdpbmRvd1RleHQo
dGhpc1dpbmRvdy5tX3VybEJhclduZCwgdXJsU3RyaW5nLmNfc3RyKCkpOwogfQorCit2b2lkIFdl
YktpdEJyb3dzZXJXaW5kb3c6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXS1Bh
Z2VSZWYgcGFnZSwgV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVJlZiBjaGFsbGVuZ2UsIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgYXV0byYgdGhpc1dpbmRvdyA9IHRvV2ViS2l0QnJv
d3NlcldpbmRvdyhjbGllbnRJbmZvKTsKKyAgICBhdXRvIHByb3RlY3Rpb25TcGFjZSA9IFdLQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VHZXRQcm90ZWN0aW9uU3BhY2UoY2hhbGxlbmdlKTsKKyAgICBh
dXRvIGRlY2lzaW9uTGlzdGVuZXIgPSBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlR2V0RGVjaXNp
b25MaXN0ZW5lcihjaGFsbGVuZ2UpOworCisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHJl
YWxtKFdLUHJvdGVjdGlvblNwYWNlQ29weVJlYWxtKHByb3RlY3Rpb25TcGFjZSkpOworICAgIF9i
c3RyX3QgdXNlciwgcGFzczsKKyAgICBpZiAoIWRpc3BsYXlBdXRoRGlhbG9nKHRoaXNXaW5kb3cu
aHduZCgpLCBjcmVhdGVCU1RSVChyZWFsbS5nZXQoKSksIHVzZXIsIHBhc3MpKSB7CisgICAgICAg
IFdLQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyQ2FuY2VsKGRlY2lzaW9uTGlzdGVuZXIp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+
IHVzZXJuYW1lID0gY3JlYXRlV0tTdHJpbmcodXNlcik7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJp
bmdSZWY+IHBhc3N3b3JkID0gY3JlYXRlV0tTdHJpbmcocGFzcyk7CisgICAgV0tSZXRhaW5QdHI8
V0tDcmVkZW50aWFsUmVmPiBjcmVkZW50aWFsKEFkb3B0V0ssIFdLQ3JlZGVudGlhbENyZWF0ZSh1
c2VybmFtZS5nZXQoKSwgcGFzc3dvcmQuZ2V0KCksIGtXS0NyZWRlbnRpYWxQZXJzaXN0ZW5jZUZv
clNlc3Npb24pKTsKKyAgICBXS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lclVzZUNyZWRl
bnRpYWwoZGVjaXNpb25MaXN0ZW5lciwgY3JlZGVudGlhbC5nZXQoKSk7Cit9CmRpZmYgLS1naXQg
YS9Ub29scy9NaW5pQnJvd3Nlci93aW4vV2ViS2l0QnJvd3NlcldpbmRvdy5oIGIvVG9vbHMvTWlu
aUJyb3dzZXIvd2luL1dlYktpdEJyb3dzZXJXaW5kb3cuaAppbmRleCBhN2FjOTAwZjJiYi4uNDI2
NmU3YzY0YTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9XZWJLaXRCcm93c2Vy
V2luZG93LmgKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvd2luL1dlYktpdEJyb3dzZXJXaW5kb3cu
aApAQCAtNTksNiArNTksNyBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIHZvaWQgZGlkRmluaXNo
TmF2aWdhdGlvbihXS1BhZ2VSZWYsIFdLTmF2aWdhdGlvblJlZiwgV0tUeXBlUmVmLCBjb25zdCB2
b2lkKik7CiAgICAgc3RhdGljIHZvaWQgZGlkQ29tbWl0TmF2aWdhdGlvbihXS1BhZ2VSZWYsIFdL
TmF2aWdhdGlvblJlZiwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKik7CisgICAgc3RhdGljIHZvaWQg
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdLUGFnZVJlZiwgV0tBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVJlZiwgY29uc3Qgdm9pZCopOwogCiAgICAgV0tSZXRhaW5QdHI8V0tWaWV3
UmVmPiBtX3ZpZXc7CiAgICAgSFdORCBtX2hNYWluV25kIHsgbnVsbHB0ciB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350886</attachid>
            <date>2018-09-26 12:58:38 -0700</date>
            <delta_ts>2018-09-27 09:27:45 -0700</delta_ts>
            <desc>PATCH</desc>
            <filename>189846.diff</filename>
            <type>text/plain</type>
            <size>13472</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiMTc4
ZTY3YjNjNS4uNDMwMmY4ODRlNmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxOC0wOS0yNiAgQmFzdWtlIFN1enVr
aSAgPEJhc3VrZS5TdXp1a2lAc29ueS5jb20+CisKKyAgICAgICAgW1dpbl1bV2ViS2l0XSBJbXBs
ZW1lbnQgYXV0aGVudGljYXRpb24gZGlhbG9nIG9uIE1pbmlCcm93c2VyLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5ODQ2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSXQgd2FzIGltcGxlbWVudGVkIGZv
ciBXZWJLaXRMZWdhY3ksIGJ1dCBub3QgZm9yIFdlYktpdC4KKyAgICAgICAgQWxzbyBhZGRlZCB0
ZXh0IGZpZWxkIHRvIGRpc3BsYXkgUmVhbG0gaW5mb3JtYXRpb24uCisKKyAgICAgICAgKiBNaW5p
QnJvd3Nlci93aW4vQ29tbW9uLmNwcDoKKyAgICAgICAgKGF1dGhEaWFsb2dQcm9jKToKKyAgICAg
ICAgKGFza0NyZWRlbnRpYWwpOgorICAgICAgICAoZGlzcGxheUF1dGhEaWFsb2cpOiBEZWxldGVk
LgorICAgICAgICAqIE1pbmlCcm93c2VyL3dpbi9Db21tb24uaDoKKyAgICAgICAgKiBNaW5pQnJv
d3Nlci93aW4vTWluaUJyb3dzZXJMaWIucmM6CisgICAgICAgICogTWluaUJyb3dzZXIvd2luL01p
bmlCcm93c2VyTGliUmVzb3VyY2UuaDoKKyAgICAgICAgKiBNaW5pQnJvd3Nlci93aW4vUmVzb3Vy
Y2VMb2FkRGVsZWdhdGUuY3BwOgorICAgICAgICAoUmVzb3VyY2VMb2FkRGVsZWdhdGU6OmRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgICogTWluaUJyb3dzZXIvd2lu
L1dlYktpdEJyb3dzZXJXaW5kb3cuY3BwOgorICAgICAgICAoY3JlYXRlU3RyaW5nKToKKyAgICAg
ICAgKGNyZWF0ZVVURjhTdHJpbmcpOgorICAgICAgICAoY3JlYXRlV0tTdHJpbmcpOgorICAgICAg
ICAoY3JlYXRlV0tVUkwpOgorICAgICAgICAoV2ViS2l0QnJvd3NlcldpbmRvdzo6V2ViS2l0QnJv
d3NlcldpbmRvdyk6CisgICAgICAgIChXZWJLaXRCcm93c2VyV2luZG93OjpkaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAodG9OdWxsVGVybWluYXRlZFVURjgpOiBE
ZWxldGVkLgorICAgICAgICAqIE1pbmlCcm93c2VyL3dpbi9XZWJLaXRCcm93c2VyV2luZG93Lmg6
CisKIDIwMTgtMDktMjAgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIG1hbnVhbGx5IHJvbGxvdXQgb3VyIHN3aXRjaCB0byBt
YXN0ZXIgcnVudGltZQpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvd2luL0NvbW1vbi5j
cHAgYi9Ub29scy9NaW5pQnJvd3Nlci93aW4vQ29tbW9uLmNwcAppbmRleCBhYzM4ZjAxYjRiZC4u
OTU2ZjExNTMzMDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9Db21tb24uY3Bw
CisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9Db21tb24uY3BwCkBAIC0xMjAsMzAgKzEyMCwz
MiBAQCB2b2lkIGNyZWF0ZUNyYXNoUmVwb3J0KEVYQ0VQVElPTl9QT0lOVEVSUyogZXhjZXB0aW9u
UG9pbnRlcnMpCiB9CiAKIHN0cnVjdCBBdXRoRGlhbG9nRGF0YSB7Ci0gICAgc3RkOjp3c3RyaW5n
JiB1c2VybmFtZTsKLSAgICBzdGQ6OndzdHJpbmcmIHBhc3N3b3JkOworICAgIGNvbnN0IHN0ZDo6
d3N0cmluZyYgcmVhbG07CisgICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsOwogfTsKIAogc3RhdGlj
IElOVF9QVFIgQ0FMTEJBQ0sgYXV0aERpYWxvZ1Byb2MoSFdORCBoRGxnLCBVSU5UIG1lc3NhZ2Us
IFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pCiB7Ci0gICAgQXV0aERpYWxvZ0RhdGEmIGRh
dGEgPSAqcmVpbnRlcnByZXRfY2FzdDxBdXRoRGlhbG9nRGF0YSo+KEdldFdpbmRvd0xvbmdQdHIo
aERsZywgRFdMUF9VU0VSKSk7CiAgICAgc3dpdGNoIChtZXNzYWdlKSB7Ci0gICAgY2FzZSBXTV9J
TklURElBTE9HOgorICAgIGNhc2UgV01fSU5JVERJQUxPRzogewogICAgICAgICBTZXRXaW5kb3dM
b25nUHRyKGhEbGcsIERXTFBfVVNFUiwgbFBhcmFtKTsKKyAgICAgICAgQXV0aERpYWxvZ0RhdGEm
IGRhdGEgPSAqcmVpbnRlcnByZXRfY2FzdDxBdXRoRGlhbG9nRGF0YSo+KGxQYXJhbSk7CisgICAg
ICAgIFNldERsZ0l0ZW1UZXh0KGhEbGcsIElEQ19SRUFMTV9URVhULCBfYnN0cl90KGRhdGEucmVh
bG0uY19zdHIoKSkpOwogICAgICAgICByZXR1cm4gVFJVRTsKLQorICAgIH0KICAgICBjYXNlIFdN
X0NPTU1BTkQ6IHsKKyAgICAgICAgQXV0aERpYWxvZ0RhdGEmIGRhdGEgPSAqcmVpbnRlcnByZXRf
Y2FzdDxBdXRoRGlhbG9nRGF0YSo+KEdldFdpbmRvd0xvbmdQdHIoaERsZywgRFdMUF9VU0VSKSk7
CiAgICAgICAgIGludCB3bUlkID0gTE9XT1JEKHdQYXJhbSk7CiAgICAgICAgIHN3aXRjaCAod21J
ZCkgewogICAgICAgICBjYXNlIElET0s6IHsKICAgICAgICAgICAgIFRDSEFSIHN0clsyNTZdOwog
ICAgICAgICAgICAgaW50IHN0ckxlbiA9IEdldFdpbmRvd1RleHQoR2V0RGxnSXRlbShoRGxnLCBJ
RENfQVVUSF9VU0VSKSwgc3RyLCBXVEZfQVJSQVlfTEVOR1RIKHN0ciktMSk7CiAgICAgICAgICAg
ICBzdHJbc3RyTGVuXSA9IDA7Ci0gICAgICAgICAgICBkYXRhLnVzZXJuYW1lID0gc3RyOworICAg
ICAgICAgICAgZGF0YS5jcmVkZW50aWFsLnVzZXJuYW1lID0gc3RyOwogCiAgICAgICAgICAgICBz
dHJMZW4gPSBHZXRXaW5kb3dUZXh0KEdldERsZ0l0ZW0oaERsZywgSURDX0FVVEhfUEFTU1dPUkQp
LCBzdHIsIFdURl9BUlJBWV9MRU5HVEgoc3RyKS0xKTsKICAgICAgICAgICAgIHN0cltzdHJMZW5d
ID0gMDsKLSAgICAgICAgICAgIGRhdGEucGFzc3dvcmQgPSBzdHI7CisgICAgICAgICAgICBkYXRh
LmNyZWRlbnRpYWwucGFzc3dvcmQgPSBzdHI7CiAKICAgICAgICAgICAgIEVuZERpYWxvZyhoRGxn
LCB0cnVlKTsKICAgICAgICAgICAgIHJldHVybiBUUlVFOwpAQCAtMTU4LDExICsxNjAsMTMgQEAg
c3RhdGljIElOVF9QVFIgQ0FMTEJBQ0sgYXV0aERpYWxvZ1Byb2MoSFdORCBoRGxnLCBVSU5UIG1l
c3NhZ2UsIFdQQVJBTSB3UGFyYW0sIEwKICAgICByZXR1cm4gRkFMU0U7CiB9CiAKLUhSRVNVTFQg
ZGlzcGxheUF1dGhEaWFsb2coSFdORCBod25kLCBzdGQ6OndzdHJpbmcmIHVzZXJuYW1lLCBzdGQ6
OndzdHJpbmcmIHBhc3N3b3JkKQorc3RkOjpvcHRpb25hbDxDcmVkZW50aWFsPiBhc2tDcmVkZW50
aWFsKEhXTkQgaHduZCwgY29uc3Qgc3RkOjp3c3RyaW5nJiByZWFsbSkKIHsKLSAgICBBdXRoRGlh
bG9nRGF0YSBkYXRhIHsgdXNlcm5hbWUsIHBhc3N3b3JkIH07CisgICAgQXV0aERpYWxvZ0RhdGEg
ZGF0YSB7IHJlYWxtIH07CiAgICAgYXV0byByZXN1bHQgPSBEaWFsb2dCb3hQYXJhbShoSW5zdCwg
TUFLRUlOVFJFU09VUkNFKElERF9BVVRIKSwgaHduZCwgYXV0aERpYWxvZ1Byb2MsIHJlaW50ZXJw
cmV0X2Nhc3Q8TFBBUkFNPigmZGF0YSkpOwotICAgIHJldHVybiByZXN1bHQgPiAwID8gU19PSyA6
IEVfRkFJTDsKKyAgICBpZiAocmVzdWx0IDw9IDApCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgcmV0dXJuIGRhdGEuY3JlZGVudGlhbDsKIH0KIAogQ29tbWFuZExpbmVPcHRpb25z
IHBhcnNlQ29tbWFuZExpbmUoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvd2luL0Nv
bW1vbi5oIGIvVG9vbHMvTWluaUJyb3dzZXIvd2luL0NvbW1vbi5oCmluZGV4IDA4NWEzMTMwMWNh
Li43MGE4NGM0ZTJjYSAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvd2luL0NvbW1vbi5o
CisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9Db21tb24uaApAQCAtNDYsMTEgKzQ2LDE2IEBA
IHN0cnVjdCBDb21tYW5kTGluZU9wdGlvbnMgewogICAgIH0KIH07CiAKK3N0cnVjdCBDcmVkZW50
aWFsIHsKKyAgICBzdGQ6OndzdHJpbmcgdXNlcm5hbWU7CisgICAgc3RkOjp3c3RyaW5nIHBhc3N3
b3JkOworfTsKKwogdm9pZCBjb21wdXRlRnVsbERlc2t0b3BGcmFtZSgpOwogYm9vbCBnZXRBcHBE
YXRhRm9sZGVyKF9ic3RyX3QmIGRpcmVjdG9yeSk7CiBDb21tYW5kTGluZU9wdGlvbnMgcGFyc2VD
b21tYW5kTGluZSgpOwogdm9pZCBjcmVhdGVDcmFzaFJlcG9ydChFWENFUFRJT05fUE9JTlRFUlMq
KTsKLUhSRVNVTFQgZGlzcGxheUF1dGhEaWFsb2coSFdORCwgc3RkOjp3c3RyaW5nJiB1c2VybmFt
ZSwgc3RkOjp3c3RyaW5nJiBwYXNzd29yZCk7CitzdGQ6Om9wdGlvbmFsPENyZWRlbnRpYWw+IGFz
a0NyZWRlbnRpYWwoSFdORCwgY29uc3Qgc3RkOjp3c3RyaW5nJiByZWFsbSk7CiAKIGV4dGVybiBI
SU5TVEFOQ0UgaEluc3Q7CiBleHRlcm4gUE9JTlQgc193aW5kb3dQb3NpdGlvbjsKZGlmZiAtLWdp
dCBhL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9NaW5pQnJvd3NlckxpYi5yYyBiL1Rvb2xzL01pbmlC
cm93c2VyL3dpbi9NaW5pQnJvd3NlckxpYi5yYwppbmRleCAyYWM2NGUyOTE3Mi4uMGE3YTdmNTVh
ODcgMTAwNzU1Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9NaW5pQnJvd3NlckxpYi5yYwor
KysgYi9Ub29scy9NaW5pQnJvd3Nlci93aW4vTWluaUJyb3dzZXJMaWIucmMKQEAgLTI0NSwxNyAr
MjQ1LDE4IEBAIEJFR0lOCiAgICAgUFVTSEJVVFRPTiAgICAgICJDYW5jZWwiLElEQ0FOQ0VMLDI1
MiwxNTUsNTAsMTQNCiBFTkQNCiANCi1JRERfQVVUSCBESUFMT0dFWCAwLCAwLCAyMzEsIDk5DQor
SUREX0FVVEggRElBTE9HRVggMCwgMCwgMjMxLCAxMTkNCiBTVFlMRSBEU19TRVRGT05UIHwgRFNf
TU9EQUxGUkFNRSB8IERTX0ZJWEVEU1lTIHwgV1NfUE9QVVAgfCBXU19DQVBUSU9OIHwgV1NfU1lT
TUVOVQ0KIENBUFRJT04gIkF1dGhlbnRpY2F0aW9uIFJlcXVpcmVkIg0KIEZPTlQgOCwgIk1TIFNo
ZWxsIERsZyIsIDQwMCwgMCwgMHgxDQogQkVHSU4NCi0gICAgREVGUFVTSEJVVFRPTiAgICJTaWdu
IEluIixJRE9LLDExNiw3OCw1MCwxNA0KLSAgICBQVVNIQlVUVE9OICAgICAgIkNhbmNlbCIsSURD
QU5DRUwsMTc0LDc4LDUwLDE0DQotICAgIFJURVhUICAgICAgICAgICAiVXNlciBOYW1lOiIsSURD
X1NUQVRJQyw3LDIxLDU3LDgNCi0gICAgRURJVFRFWFQgICAgICAgIElEQ19BVVRIX1VTRVIsNjcs
MTksMTU3LDE0LEVTX0FVVE9IU0NST0xMDQotICAgIFJURVhUICAgICAgICAgICAiUGFzc3dvcmQ6
IixJRENfU1RBVElDLDcsNDYsNTcsOA0KLSAgICBFRElUVEVYVCAgICAgICAgSURDX0FVVEhfUEFT
U1dPUkQsNjcsNDQsMTU3LDE0LEVTX1BBU1NXT1JEIHwgRVNfQVVUT0hTQ1JPTEwNCisgICAgREVG
UFVTSEJVVFRPTiAgICJTaWduIEluIixJRE9LLDExNiw5OCw1MCwxNA0KKyAgICBQVVNIQlVUVE9O
ICAgICAgIkNhbmNlbCIsSURDQU5DRUwsMTc0LDk4LDUwLDE0DQorICAgIExURVhUICAgICAgICAg
ICAiUmVhbG0iLElEQ19SRUFMTV9URVhULDY3LDIxLDE1Nyw4DQorICAgIFJURVhUICAgICAgICAg
ICAiVXNlciBOYW1lOiIsSURDX1NUQVRJQyw3LDQxLDU3LDgNCisgICAgRURJVFRFWFQgICAgICAg
IElEQ19BVVRIX1VTRVIsNjcsMzksMTU3LDE0LEVTX0FVVE9IU0NST0xMDQorICAgIFJURVhUICAg
ICAgICAgICAiUGFzc3dvcmQ6IixJRENfU1RBVElDLDcsNjYsNTcsOA0KKyAgICBFRElUVEVYVCAg
ICAgICAgSURDX0FVVEhfUEFTU1dPUkQsNjcsNjQsMTU3LDE0LEVTX1BBU1NXT1JEIHwgRVNfQVVU
T0hTQ1JPTEwNCiBFTkQNCiANCiANCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci93aW4v
TWluaUJyb3dzZXJMaWJSZXNvdXJjZS5oIGIvVG9vbHMvTWluaUJyb3dzZXIvd2luL01pbmlCcm93
c2VyTGliUmVzb3VyY2UuaAppbmRleCAzMjNmZjIzYjIyZC4uZTZjOWIwMDM2M2UgMTAwNzU1Ci0t
LSBhL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9NaW5pQnJvd3NlckxpYlJlc291cmNlLmgKKysrIGIv
VG9vbHMvTWluaUJyb3dzZXIvd2luL01pbmlCcm93c2VyTGliUmVzb3VyY2UuaApAQCAtMTExLDYg
KzExMSw3IEBACiAjZGVmaW5lIElEQ19BVVRIX1VTRVIgICAgICAgICAgICAgICAgICAgMTA1Mwog
I2RlZmluZSBJRENfQVVUSF9QQVNTV09SRCAgICAgICAgICAgICAgIDEwNTQKICNkZWZpbmUgSURD
X1VSTF9CQVIgICAgICAgICAgICAgICAgICAgICAxMDU1CisjZGVmaW5lIElEQ19SRUFMTV9URVhU
ICAgICAgICAgICAgICAgICAgMTA1NgogI2RlZmluZSBJRE1fTkVXX1dFQktJVF9XSU5ET1cgICAg
ICAgICAgIDMyNzc2CiAjZGVmaW5lIElETV9ORVdfV0VCS0lUTEVHQUNZX1dJTkRPVyAgICAgMzI3
NzcKICNkZWZpbmUgSURDX1NUQVRJQyAgICAgICAgICAgICAgICAgICAgICAtMQpkaWZmIC0tZ2l0
IGEvVG9vbHMvTWluaUJyb3dzZXIvd2luL1Jlc291cmNlTG9hZERlbGVnYXRlLmNwcCBiL1Rvb2xz
L01pbmlCcm93c2VyL3dpbi9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5jcHAKaW5kZXggM2ZjNmUxZjI4
ZjAuLmM0OGQ4MDViOWJhIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci93aW4vUmVzb3Vy
Y2VMb2FkRGVsZWdhdGUuY3BwCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9SZXNvdXJjZUxv
YWREZWxlZ2F0ZS5jcHAKQEAgLTg4LDE3ICs4OCwyNSBAQCBIUkVTVUxUIFJlc291cmNlTG9hZERl
bGVnYXRlOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoX0luX29wdF8gSVdlYlZp
ZQogICAgIGlmICghY2hhbGxlbmdlIHx8IEZBSUxFRChjaGFsbGVuZ2UtPnNlbmRlcigmc2VuZGVy
KSkpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBzdGQ6OndzdHJpbmcgdXNlcm5hbWUs
IHBhc3N3b3JkOwotICAgIGlmIChkaXNwbGF5QXV0aERpYWxvZyhtX2NsaWVudC0+aHduZCgpLCB1
c2VybmFtZSwgcGFzc3dvcmQpICE9IFNfT0spCisgICAgQ09NUHRyPElXZWJVUkxQcm90ZWN0aW9u
U3BhY2U+IHByb3RlY3Rpb25TcGFjZTsKKyAgICBpZiAoRkFJTEVEKGNoYWxsZW5nZS0+cHJvdGVj
dGlvblNwYWNlKCZwcm90ZWN0aW9uU3BhY2UpKSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAot
ICAgIENPTVB0cjxJV2ViVVJMQ3JlZGVudGlhbD4gY3JlZGVudGlhbDsKLSAgICBpZiAoRkFJTEVE
KFdlYktpdENyZWF0ZUluc3RhbmNlKENMU0lEX1dlYlVSTENyZWRlbnRpYWwsIDAsIElJRF9JV2Vi
VVJMQ3JlZGVudGlhbCwgKHZvaWQqKikmY3JlZGVudGlhbCkpKQorICAgIEJTVFIgcmVhbG07Cisg
ICAgaWYgKEZBSUxFRChwcm90ZWN0aW9uU3BhY2UtPnJlYWxtKCZyZWFsbSkpKQogICAgICAgICBy
ZXR1cm4gRV9GQUlMOwotICAgIGNyZWRlbnRpYWwtPmluaXRXaXRoVXNlcihfYnN0cl90KHVzZXJu
YW1lLmNfc3RyKCkpLCBfYnN0cl90KHBhc3N3b3JkLmNfc3RyKCkpLCBXZWJVUkxDcmVkZW50aWFs
UGVyc2lzdGVuY2VGb3JTZXNzaW9uKTsKIAotICAgIHNlbmRlci0+dXNlQ3JlZGVudGlhbChjcmVk
ZW50aWFsLmdldCgpLCBjaGFsbGVuZ2UpOwotICAgIHJldHVybiBTX09LOworICAgIGlmIChhdXRv
IGNyZWRlbnRpYWwgPSBhc2tDcmVkZW50aWFsKG1fY2xpZW50LT5od25kKCksIHN0ZDo6d3N0cmlu
ZyhyZWFsbSkpKSB7CisgICAgICAgIENPTVB0cjxJV2ViVVJMQ3JlZGVudGlhbD4gd2tDcmVkZW50
aWFsOworICAgICAgICBpZiAoRkFJTEVEKFdlYktpdENyZWF0ZUluc3RhbmNlKENMU0lEX1dlYlVS
TENyZWRlbnRpYWwsIDAsIElJRF9JV2ViVVJMQ3JlZGVudGlhbCwgKHZvaWQqKikmd2tDcmVkZW50
aWFsKSkpCisgICAgICAgICAgICByZXR1cm4gRV9GQUlMOworICAgICAgICB3a0NyZWRlbnRpYWwt
PmluaXRXaXRoVXNlcihfYnN0cl90KGNyZWRlbnRpYWwtPnVzZXJuYW1lLmNfc3RyKCkpLCBfYnN0
cl90KGNyZWRlbnRpYWwtPnBhc3N3b3JkLmNfc3RyKCkpLCBXZWJVUkxDcmVkZW50aWFsUGVyc2lz
dGVuY2VGb3JTZXNzaW9uKTsKKworICAgICAgICBzZW5kZXItPnVzZUNyZWRlbnRpYWwod2tDcmVk
ZW50aWFsLmdldCgpLCBjaGFsbGVuZ2UpOworICAgICAgICByZXR1cm4gU19PSzsKKyAgICB9CisK
KyAgICByZXR1cm4gRV9GQUlMOwogfQogCiBIUkVTVUxUIFJlc291cmNlTG9hZERlbGVnYXRlOjpk
aWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShfSW5fb3B0XyBJV2ViVmlldyosIHVuc2ln
bmVkIGxvbmcsIF9Jbl9vcHRfIElXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSosIF9Jbl9v
cHRfIElXZWJEYXRhU291cmNlKikKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9X
ZWJLaXRCcm93c2VyV2luZG93LmNwcCBiL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9XZWJLaXRCcm93
c2VyV2luZG93LmNwcAppbmRleCAwMWI2MmUxNGU2Ni4uNDgxNjdkN2FhYzEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL01pbmlCcm93c2VyL3dpbi9XZWJLaXRCcm93c2VyV2luZG93LmNwcAorKysgYi9Ub29s
cy9NaW5pQnJvd3Nlci93aW4vV2ViS2l0QnJvd3NlcldpbmRvdy5jcHAKQEAgLTI2LDE3ICsyNiwy
MiBAQAogI2luY2x1ZGUgIldlYktpdEJyb3dzZXJXaW5kb3cuaCIKIAogI2luY2x1ZGUgIk1pbmlC
cm93c2VyTGliUmVzb3VyY2UuaCIKKyNpbmNsdWRlICJjb21tb24uaCIKKyNpbmNsdWRlIDxXZWJL
aXQvV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgorI2luY2x1ZGUgPFdlYktpdC9XS0F1dGhl
bnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oPgorI2luY2x1ZGUgPFdlYktpdC9XS0NyZWRlbnRp
YWwuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tJbnNwZWN0b3IuaD4KKyNpbmNsdWRlIDxXZWJLaXQv
V0tQcm90ZWN0aW9uU3BhY2UuaD4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKLXN0ZDo6d3N0cmluZwot
Y3JlYXRlU3RyaW5nKFdLU3RyaW5nUmVmIHdrU3RyaW5nKQorc3RkOjp3c3RyaW5nIGNyZWF0ZVN0
cmluZyhXS1N0cmluZ1JlZiB3a1N0cmluZykKIHsKICAgICBzaXplX3QgbWF4U2l6ZSA9IFdLU3Ry
aW5nR2V0TGVuZ3RoKHdrU3RyaW5nKTsKLQotICAgIHN0ZDo6dmVjdG9yPFdLQ2hhcj4gd2tDaGFy
QnVmZmVyKG1heFNpemUpOwotICAgIHNpemVfdCBhY3R1YWxMZW5ndGggPSBXS1N0cmluZ0dldENo
YXJhY3RlcnMod2tTdHJpbmcsIHdrQ2hhckJ1ZmZlci5kYXRhKCksIG1heFNpemUpOwotICAgIHJl
dHVybiBzdGQ6OndzdHJpbmcod2tDaGFyQnVmZmVyLmRhdGEoKSwgYWN0dWFsTGVuZ3RoKTsKKyAg
ICBzdGQ6OndzdHJpbmcgc3RyKG1heFNpemUsICdcMCcpOworICAgIHNpemVfdCBhY3R1YWxMZW5n
dGggPSBXS1N0cmluZ0dldENoYXJhY3RlcnMod2tTdHJpbmcsIHN0ci5kYXRhKCksIG1heFNpemUp
OworICAgIGlmIChtYXhTaXplICE9IGFjdHVhbExlbmd0aCkKKyAgICAgICAgc3RyLnJlc2l6ZShh
Y3R1YWxMZW5ndGgpOworICAgIHJldHVybiBzdGQ6OndzdHJpbmcoc3RyLmRhdGEoKSk7CiB9CiAK
IHN0ZDo6d3N0cmluZyBjcmVhdGVTdHJpbmcoV0tVUkxSZWYgd2tVUkwpCkBAIC00NSwyNyArNTAs
MzEgQEAgc3RkOjp3c3RyaW5nIGNyZWF0ZVN0cmluZyhXS1VSTFJlZiB3a1VSTCkKICAgICByZXR1
cm4gY3JlYXRlU3RyaW5nKHVybC5nZXQoKSk7CiB9CiAKLXN0ZDo6dmVjdG9yPGNoYXI+IHRvTnVs
bFRlcm1pbmF0ZWRVVEY4KGNvbnN0IHdjaGFyX3QqIHNyYywgc2l6ZV90IHNyY0xlbmd0aCkKK3N0
ZDo6c3RyaW5nIGNyZWF0ZVVURjhTdHJpbmcoY29uc3Qgd2NoYXJfdCogc3JjLCBzaXplX3Qgc3Jj
TGVuZ3RoKQoreworICAgIGludCBsZW5ndGggPSBXaWRlQ2hhclRvTXVsdGlCeXRlKENQX1VURjgs
IDAsIHNyYywgc3JjTGVuZ3RoLCAwLCAwLCBudWxscHRyLCBudWxscHRyKTsKKyAgICBzdGQ6OnN0
cmluZyBzdHIobGVuZ3RoLCAnXDAnKTsKKyAgICBpbnQgYWN0dWFsTGVuZ3RoID0gV2lkZUNoYXJU
b011bHRpQnl0ZShDUF9VVEY4LCAwLCBzcmMsIHNyY0xlbmd0aCwgc3RyLmRhdGEoKSwgbGVuZ3Ro
LCBudWxscHRyLCBudWxscHRyKTsKKyAgICBpZiAobGVuZ3RoICE9IGFjdHVhbExlbmd0aCkKKyAg
ICAgICAgc3RyLnJlc2l6ZShhY3R1YWxMZW5ndGgpOworICAgIHJldHVybiBzdHI7Cit9CisKK1dL
UmV0YWluUHRyPFdLU3RyaW5nUmVmPiBjcmVhdGVXS1N0cmluZyhfYnN0cl90IHN0cikKIHsKLSAg
ICBpbnQgdXRmOExlbmd0aCA9IFdpZGVDaGFyVG9NdWx0aUJ5dGUoQ1BfVVRGOCwgMCwgc3JjLCBz
cmNMZW5ndGgsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIpOwotICAgIHN0ZDo6dmVjdG9yPGNoYXI+
IHV0ZjhCdWZmZXIodXRmOExlbmd0aCArIDEpOwotICAgIFdpZGVDaGFyVG9NdWx0aUJ5dGUoQ1Bf
VVRGOCwgMCwgc3JjLCBzcmNMZW5ndGgsCi0gICAgICAgIHV0ZjhCdWZmZXIuZGF0YSgpLCB1dGY4
TGVuZ3RoLCBudWxscHRyLCBudWxscHRyKTsKLSAgICB1dGY4QnVmZmVyW3V0ZjhMZW5ndGhdID0g
J1wwJzsKLSAgICByZXR1cm4gdXRmOEJ1ZmZlcjsKKyAgICBhdXRvIHV0ZjggPSBjcmVhdGVVVEY4
U3RyaW5nKHN0ciwgc3RyLmxlbmd0aCgpKTsKKyAgICByZXR1cm4gYWRvcHRXSyhXS1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZyh1dGY4LmRhdGEoKSkpOwogfQogCi1XS1JldGFpblB0cjxXS1N0
cmluZ1JlZj4KLWNyZWF0ZVdLU3RyaW5nKF9ic3RyX3Qgc3RyKQorV0tSZXRhaW5QdHI8V0tTdHJp
bmdSZWY+IGNyZWF0ZVdLU3RyaW5nKGNvbnN0IHN0ZDo6d3N0cmluZyYgc3RyKQogewotICAgIGF1
dG8gdXRmOCA9IHRvTnVsbFRlcm1pbmF0ZWRVVEY4KHN0ciwgc3RyLmxlbmd0aCgpKTsKKyAgICBh
dXRvIHV0ZjggPSBjcmVhdGVVVEY4U3RyaW5nKHN0ci5jX3N0cigpLCBzdHIubGVuZ3RoKCkpOwog
ICAgIHJldHVybiBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHV0ZjguZGF0
YSgpKSk7CiB9CiAKLVdLUmV0YWluUHRyPFdLVVJMUmVmPgotY3JlYXRlV0tVUkwoX2JzdHJfdCBz
dHIpCitXS1JldGFpblB0cjxXS1VSTFJlZj4gY3JlYXRlV0tVUkwoX2JzdHJfdCBzdHIpCiB7Ci0g
ICAgYXV0byB1dGY4ID0gdG9OdWxsVGVybWluYXRlZFVURjgoc3RyLCBzdHIubGVuZ3RoKCkpOwor
ICAgIGF1dG8gdXRmOCA9IGNyZWF0ZVVURjhTdHJpbmcoc3RyLCBzdHIubGVuZ3RoKCkpOwogICAg
IHJldHVybiBhZG9wdFdLKFdLVVJMQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHV0ZjguZGF0YSgpKSk7
CiB9CiAKQEAgLTk0LDYgKzEwMyw3IEBAIFdlYktpdEJyb3dzZXJXaW5kb3c6OldlYktpdEJyb3dz
ZXJXaW5kb3coSFdORCBtYWluV25kLCBIV05EIHVybEJhclduZCkKICAgICBXS1BhZ2VOYXZpZ2F0
aW9uQ2xpZW50VjAgbmF2aWdhdGlvbkNsaWVudCA9IHt7IDAsIHRoaXMgfX07CiAgICAgbmF2aWdh
dGlvbkNsaWVudC5kaWRGaW5pc2hOYXZpZ2F0aW9uID0gZGlkRmluaXNoTmF2aWdhdGlvbjsKICAg
ICBuYXZpZ2F0aW9uQ2xpZW50LmRpZENvbW1pdE5hdmlnYXRpb24gPSBkaWRDb21taXROYXZpZ2F0
aW9uOworICAgIG5hdmlnYXRpb25DbGllbnQuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlID0gZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogICAgIFdLUGFnZVNldFBh
Z2VOYXZpZ2F0aW9uQ2xpZW50KHBhZ2UsICZuYXZpZ2F0aW9uQ2xpZW50LmJhc2UpOwogfQogCkBA
IC0yMjksMyArMjM5LDIxIEBAIHZvaWQgV2ViS2l0QnJvd3NlcldpbmRvdzo6ZGlkQ29tbWl0TmF2
aWdhdGlvbihXS1BhZ2VSZWYgcGFnZSwgV0tOYXZpZ2F0aW9uUmVmIG5hCiAgICAgc3RkOjp3c3Ry
aW5nIHVybFN0cmluZyA9IGNyZWF0ZVN0cmluZyh3a3VybC5nZXQoKSk7CiAgICAgU2V0V2luZG93
VGV4dCh0aGlzV2luZG93Lm1fdXJsQmFyV25kLCB1cmxTdHJpbmcuY19zdHIoKSk7CiB9CisKK3Zv
aWQgV2ViS2l0QnJvd3NlcldpbmRvdzo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KFdLUGFnZVJlZiBwYWdlLCBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVmIGNoYWxsZW5nZSwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBhdXRvJiB0aGlzV2luZG93ID0gdG9XZWJL
aXRCcm93c2VyV2luZG93KGNsaWVudEluZm8pOworICAgIGF1dG8gcHJvdGVjdGlvblNwYWNlID0g
V0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUdldFByb3RlY3Rpb25TcGFjZShjaGFsbGVuZ2UpOwor
ICAgIGF1dG8gZGVjaXNpb25MaXN0ZW5lciA9IFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2VHZXRE
ZWNpc2lvbkxpc3RlbmVyKGNoYWxsZW5nZSk7CisKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1Jl
Zj4gcmVhbG0oV0tQcm90ZWN0aW9uU3BhY2VDb3B5UmVhbG0ocHJvdGVjdGlvblNwYWNlKSk7Cisg
ICAgaWYgKGF1dG8gY3JlZGVudGlhbCA9IGFza0NyZWRlbnRpYWwodGhpc1dpbmRvdy5od25kKCks
IGNyZWF0ZVN0cmluZyhyZWFsbS5nZXQoKSkpKSB7CisgICAgICAgIFdLUmV0YWluUHRyPFdLU3Ry
aW5nUmVmPiB1c2VybmFtZSA9IGNyZWF0ZVdLU3RyaW5nKGNyZWRlbnRpYWwtPnVzZXJuYW1lKTsK
KyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHBhc3N3b3JkID0gY3JlYXRlV0tTdHJp
bmcoY3JlZGVudGlhbC0+cGFzc3dvcmQpOworICAgICAgICBXS1JldGFpblB0cjxXS0NyZWRlbnRp
YWxSZWY+IHdrQ3JlZGVudGlhbChBZG9wdFdLLCBXS0NyZWRlbnRpYWxDcmVhdGUodXNlcm5hbWUu
Z2V0KCksIHBhc3N3b3JkLmdldCgpLCBrV0tDcmVkZW50aWFsUGVyc2lzdGVuY2VGb3JTZXNzaW9u
KSk7CisgICAgICAgIFdLQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyVXNlQ3JlZGVudGlh
bChkZWNpc2lvbkxpc3RlbmVyLCB3a0NyZWRlbnRpYWwuZ2V0KCkpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXJDYW5jZWwoZGVj
aXNpb25MaXN0ZW5lcik7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci93aW4vV2Vi
S2l0QnJvd3NlcldpbmRvdy5oIGIvVG9vbHMvTWluaUJyb3dzZXIvd2luL1dlYktpdEJyb3dzZXJX
aW5kb3cuaAppbmRleCBhN2FjOTAwZjJiYi4uNDI2NmU3YzY0YTggMTAwNjQ0Ci0tLSBhL1Rvb2xz
L01pbmlCcm93c2VyL3dpbi9XZWJLaXRCcm93c2VyV2luZG93LmgKKysrIGIvVG9vbHMvTWluaUJy
b3dzZXIvd2luL1dlYktpdEJyb3dzZXJXaW5kb3cuaApAQCAtNTksNiArNTksNyBAQCBwcml2YXRl
OgogCiAgICAgc3RhdGljIHZvaWQgZGlkRmluaXNoTmF2aWdhdGlvbihXS1BhZ2VSZWYsIFdLTmF2
aWdhdGlvblJlZiwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKik7CiAgICAgc3RhdGljIHZvaWQgZGlk
Q29tbWl0TmF2aWdhdGlvbihXS1BhZ2VSZWYsIFdLTmF2aWdhdGlvblJlZiwgV0tUeXBlUmVmLCBj
b25zdCB2b2lkKik7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKFdLUGFnZVJlZiwgV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVJlZiwgY29uc3Qgdm9p
ZCopOwogCiAgICAgV0tSZXRhaW5QdHI8V0tWaWV3UmVmPiBtX3ZpZXc7CiAgICAgSFdORCBtX2hN
YWluV25kIHsgbnVsbHB0ciB9Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>