<?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>177105</bug_id>
          
          <creation_ts>2017-09-18 15:18:33 -0700</creation_ts>
          <short_desc>[Curl] Move Authentication related tasks into AuthenticationChallenge class</short_desc>
          <delta_ts>2017-09-27 12:25:12 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>175149</blocked>
          <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>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1350112</commentid>
    <comment_count>0</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2017-09-18 15:18:33 -0700</bug_when>
    <thetext>Currently those codes are in ResourceHandle or related companion. It will be reused with NetworkLoadTask so that it should be separated from them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350145</commentid>
    <comment_count>1</comment_count>
      <attachid>321147</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2017-09-18 16:09:50 -0700</bug_when>
    <thetext>Created attachment 321147
PATCH</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350241</commentid>
    <comment_count>2</comment_count>
      <attachid>321147</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-18 21:07:43 -0700</bug_when>
    <thetext>Comment on attachment 321147
PATCH

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

&gt; Source/WebCore/platform/network/curl/AuthenticationChallenge.h:53
&gt;      RefPtr&lt;AuthenticationClient&gt; m_authenticationClient;

FYI, we&apos;re kind of moving away from each challenging having a client in favor of a challenge being received with a completion handler so the challenge itself doesn&apos;t know what is to be done with it.  So in a hopefully-not-too-distant future once everyone has adopted the NetworkSession abstraction which is similar to the async ResourceHandleClient callbacks and we&apos;ve removed ResourceHandle in favor of everything being asynchronous, we will organize it more like that.  This is fine for now, though.

&gt; Source/WebCore/platform/network/curl/AuthenticationChallengeCurl.cpp:69
&gt; +    int realmPos = authHeader.find(realmString);
&gt; +    if (realmPos &gt; 0) {

find returns a size_t, and we should check it against notFound.

&gt; Source/WebCore/platform/network/curl/ResourceHandleCurlDelegate.h:77
&gt; +    void didReceiveAllHeaders(long httpCode, long long contentLength, long connectPort, long availableHttpAuth);

ports should be uint16_t or std::optional&lt;uint16_t&gt; if the underlying logic knows to use the default port for the protocol if there is none.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350395</commentid>
    <comment_count>3</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2017-09-19 10:51:55 -0700</bug_when>
    <thetext>
&gt; FYI, we&apos;re kind of moving away from each challenging having a client in
&gt; favor of a challenge being received with a completion handler so the
&gt; challenge itself doesn&apos;t know what is to be done with it.  So in a
&gt; hopefully-not-too-distant future once everyone has adopted the
&gt; NetworkSession abstraction which is similar to the async
&gt; ResourceHandleClient callbacks and we&apos;ve removed ResourceHandle in favor of
&gt; everything being asynchronous, we will organize it more like that.  This is
&gt; fine for now, though.

Fine for us right now. We understand the direction and that further changes are waiting.


&gt; &gt; Source/WebCore/platform/network/curl/AuthenticationChallengeCurl.cpp:69
&gt; &gt; +    int realmPos = authHeader.find(realmString);
&gt; &gt; +    if (realmPos &gt; 0) {
&gt; 
&gt; find returns a size_t, and we should check it against notFound.

my bad.


&gt; &gt; Source/WebCore/platform/network/curl/ResourceHandleCurlDelegate.h:77
&gt; &gt; +    void didReceiveAllHeaders(long httpCode, long long contentLength, long connectPort, long availableHttpAuth);
&gt; 
&gt; ports should be uint16_t or std::optional&lt;uint16_t&gt; if the underlying logic
&gt; knows to use the default port for the protocol if there is none.

Okay for our code base, but eventually we will create a ProtectionSpace object, which is the world where `port` is `int`. We don&apos;t want to change them with this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350459</commentid>
    <comment_count>4</comment_count>
      <attachid>321233</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2017-09-19 13:01:18 -0700</bug_when>
    <thetext>Created attachment 321233
fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350477</commentid>
    <comment_count>5</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2017-09-19 13:32:06 -0700</bug_when>
    <thetext>I cannot handle this test failure. https://webkit-queues.webkit.org/patch/321233/commit-queue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350483</commentid>
    <comment_count>6</comment_count>
      <attachid>321233</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-19 13:45:12 -0700</bug_when>
    <thetext>Comment on attachment 321233
fix

Clearing flags on attachment: 321233

Committed r222223: &lt;http://trac.webkit.org/changeset/222223&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350484</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-19 13:45:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353361</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:25:12 -0700</bug_when>
    <thetext>&lt;rdar://problem/34693240&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321147</attachid>
            <date>2017-09-18 16:09:50 -0700</date>
            <delta_ts>2017-09-19 13:01:18 -0700</delta_ts>
            <desc>PATCH</desc>
            <filename>177105-1.diff</filename>
            <type>text/plain</type>
            <size>13670</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4YWE1ZWUwMzg2YS4uYThiYWZkOTdiMDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAxNy0wOS0xOCAgQmFzdWtlIFN1enVraSAgPEJhc3VrZS5TdXp1a2lAc29u
eS5jb20+CisKKyAgICAgICAgW0N1cmxdIE1vdmUgQXV0aGVudGljYXRpb24gcmVsYXRlZCB0YXNr
cyBpbnRvIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzcxMDUKKworICAgICAgICBDdXJyZW50bHkg
dGhvc2UgY29kZXMgYXJlIGluIFJlc291cmNlSGFuZGxlIG9yIHJlbGF0ZWQgY29tcGFuaW9uLiBJ
dCB3aWxsCisgICAgICAgIGJlIHJldXNlZCB3aXRoIE5ldHdvcmtMb2FkVGFzayBzbyB0aGF0IGl0
IHNob3VsZCBiZSBzZXBhcmF0ZWQgZnJvbSB0aGVtLgorICAgICAgICAKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9DdXJsLmNtYWtlOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5o
OgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlOjphdXRoZW50aWNhdGlvbkNsaWVudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6c2V0QXV0aGVudGljYXRpb25DbGll
bnQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9BdXRoZW50aWNh
dGlvbkNoYWxsZW5nZUN1cmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgIChXZWJD
b3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6cHJvdGVjdGlvblNwYWNlU2VydmVyVHlwZUZy
b21VUkkpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OnByb3Rl
Y3Rpb25TcGFjZUZyb21IYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2U6OnJlbW92ZUxlYWRpbmdBbmRUcmFpbGluZ1F1b3Rlcyk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlOjpkaWRSZWNlaXZlQWxsSGVh
ZGVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6ZGlk
UmVjZWl2ZUhlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVMZWFkaW5nQW5kVHJhaWxp
bmdRdW90ZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDdXJs
RGVsZWdhdGU6OmdldFByb3RlY3Rpb25TcGFjZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlLmg6CisKIDIwMTctMDkt
MTggIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjIyMjE3MC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0N1cmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJsLmNtYWtlCmlu
ZGV4IGYyZjYzMDhlZjdiLi44YzI3ZjJmZDc2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vQ3VybC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJsLmNt
YWtlCkBAIC0zLDYgKzMsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJ
RVMKICkKIAogbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCisgICAgcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ3VybC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ29va2llSmFyQ3VybC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Jl
ZGVudGlhbFN0b3JhZ2VDdXJsLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2Fj
aGVFbnRyeS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgKaW5kZXggYTRlYmQyMzJhODIu
LjY3NzE4YjljNjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaApAQCAtMSw1ICsxLDYg
QEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNyBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1l
bnQgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNywxMSArMjgsMTAg
QEAKIAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5oIgogI2luY2x1ZGUg
IkF1dGhlbnRpY2F0aW9uQ2xpZW50LmgiCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIDogcHVibGlj
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZSB7CitjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSBmaW5hbCA6IHB1YmxpYyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UgewogcHVibGlj
OgogICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkKICAgICB7CkBAIC00Miw4ICs0MiwxMyBA
QCBwdWJsaWM6CiAgICAgewogICAgIH0KIAorICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGxv
bmcsIGxvbmcsIHVuc2lnbmVkLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQXV0aGVudGljYXRp
b25DbGllbnQqID0gbnVsbHB0cik7CiAgICAgQXV0aGVudGljYXRpb25DbGllbnQqIGF1dGhlbnRp
Y2F0aW9uQ2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9hdXRoZW50aWNhdGlvbkNsaWVudC5nZXQo
KTsgfQotICAgIHZvaWQgc2V0QXV0aGVudGljYXRpb25DbGllbnQoQXV0aGVudGljYXRpb25DbGll
bnQqIGNsaWVudCkgeyBtX2F1dGhlbnRpY2F0aW9uQ2xpZW50ID0gY2xpZW50OyB9CisKK3ByaXZh
dGU6CisgICAgUHJvdGVjdGlvblNwYWNlU2VydmVyVHlwZSBwcm90ZWN0aW9uU3BhY2VTZXJ2ZXJU
eXBlRnJvbVVSSShjb25zdCBVUkwmKTsKKyAgICBQcm90ZWN0aW9uU3BhY2UgcHJvdGVjdGlvblNw
YWNlRnJvbUhhbmRsZShsb25nLCBsb25nLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAg
dm9pZCByZW1vdmVMZWFkaW5nQW5kVHJhaWxpbmdRdW90ZXMoU3RyaW5nJik7CiAKICAgICBSZWZQ
dHI8QXV0aGVudGljYXRpb25DbGllbnQ+IG1fYXV0aGVudGljYXRpb25DbGllbnQ7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0F1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDdXJsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMC4uOGY4OTc2YWI1MzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDdXJs
LmNwcApAQCAtMCwwICsxLDg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IFNvbnkgSW50
ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKKworI2lmIFVTRShDVVJM
KQorCisjaW5jbHVkZSAiQ3VybENvbnRleHQuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKGxvbmcgY29ubmVjdFBvcnQsIGxvbmcgYXZhaWxhYmxlSHR0cEF1
dGgsIHVuc2lnbmVkIHByZXZpb3VzRmFpbHVyZUNvdW50LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgQXV0aGVudGljYXRpb25DbGllbnQqIGNsaWVudCkKKyAgICA6IEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlQmFzZShwcm90ZWN0aW9uU3BhY2VGcm9tSGFuZGxlKGNvbm5lY3RQb3J0
LCBhdmFpbGFibGVIdHRwQXV0aCwgcmVzcG9uc2UpLCBDcmVkZW50aWFsKCksIHByZXZpb3VzRmFp
bHVyZUNvdW50LCByZXNwb25zZSwgUmVzb3VyY2VFcnJvcigpKQorICAgICwgbV9hdXRoZW50aWNh
dGlvbkNsaWVudChjbGllbnQpCit7Cit9CisKK1Byb3RlY3Rpb25TcGFjZVNlcnZlclR5cGUgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2U6OnByb3RlY3Rpb25TcGFjZVNlcnZlclR5cGVGcm9tVVJJKGNv
bnN0IFVSTCYgdXJsKQoreworICAgIGlmICh1cmwucHJvdG9jb2xJcygiaHR0cHMiKSkKKyAgICAg
ICAgcmV0dXJuIFByb3RlY3Rpb25TcGFjZVNlcnZlckhUVFBTOworICAgIGlmICh1cmwucHJvdG9j
b2xJcygiaHR0cCIpKQorICAgICAgICByZXR1cm4gUHJvdGVjdGlvblNwYWNlU2VydmVySFRUUDsK
KyAgICBpZiAodXJsLnByb3RvY29sSXMoImZ0cCIpKQorICAgICAgICByZXR1cm4gUHJvdGVjdGlv
blNwYWNlU2VydmVyRlRQOworICAgIHJldHVybiBQcm90ZWN0aW9uU3BhY2VTZXJ2ZXJIVFRQOwor
fQorCitQcm90ZWN0aW9uU3BhY2UgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OnByb3RlY3Rpb25T
cGFjZUZyb21IYW5kbGUobG9uZyBjb25uZWN0UG9ydCwgbG9uZyBhdmFpbGFibGVIdHRwQXV0aCwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit7CisgICAgUHJvdGVjdGlvblNwYWNl
QXV0aGVudGljYXRpb25TY2hlbWUgc2NoZW1lID0gUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRp
b25TY2hlbWVVbmtub3duOworICAgIGlmIChhdmFpbGFibGVIdHRwQXV0aCAmIENVUkxBVVRIX0JB
U0lDKQorICAgICAgICBzY2hlbWUgPSBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVt
ZUhUVFBCYXNpYzsKKyAgICBpZiAoYXZhaWxhYmxlSHR0cEF1dGggJiBDVVJMQVVUSF9ESUdFU1Qp
CisgICAgICAgIHNjaGVtZSA9IFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lSFRU
UERpZ2VzdDsKKyAgICBpZiAoYXZhaWxhYmxlSHR0cEF1dGggJiBDVVJMQVVUSF9ORUdPVElBVEUp
CisgICAgICAgIHNjaGVtZSA9IFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lTmVn
b3RpYXRlOworICAgIGlmIChhdmFpbGFibGVIdHRwQXV0aCAmIENVUkxBVVRIX05UTE0pCisgICAg
ICAgIHNjaGVtZSA9IFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lTlRMTTsKKwor
ICAgIFN0cmluZyByZWFsbTsKKyAgICBjb25zdCBTdHJpbmcgYXV0aEhlYWRlciA9IHJlc3BvbnNl
Lmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6QXV0aG9yaXphdGlvbik7CisgICAgY29u
c3QgU3RyaW5nIHJlYWxtU3RyaW5nID0gInJlYWxtPSI7CisgICAgaW50IHJlYWxtUG9zID0gYXV0
aEhlYWRlci5maW5kKHJlYWxtU3RyaW5nKTsKKyAgICBpZiAocmVhbG1Qb3MgPiAwKSB7CisgICAg
ICAgIHJlYWxtID0gYXV0aEhlYWRlci5zdWJzdHJpbmcocmVhbG1Qb3MgKyByZWFsbVN0cmluZy5s
ZW5ndGgoKSk7CisgICAgICAgIHJlYWxtID0gcmVhbG0ubGVmdChyZWFsbS5maW5kKCcsJykpOwor
ICAgICAgICByZW1vdmVMZWFkaW5nQW5kVHJhaWxpbmdRdW90ZXMocmVhbG0pOworICAgIH0KKwor
ICAgIHJldHVybiBQcm90ZWN0aW9uU3BhY2UocmVzcG9uc2UudXJsKCkuaG9zdCgpLCBjb25uZWN0
UG9ydCwgcHJvdGVjdGlvblNwYWNlU2VydmVyVHlwZUZyb21VUkkocmVzcG9uc2UudXJsKCkpLCBy
ZWFsbSwgc2NoZW1lKTsKK30KKwordm9pZCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6cmVtb3Zl
TGVhZGluZ0FuZFRyYWlsaW5nUXVvdGVzKFN0cmluZyYgdmFsdWUpCit7CisgICAgdW5zaWduZWQg
bGVuZ3RoID0gdmFsdWUubGVuZ3RoKCk7CisgICAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgoJyInKSAm
JiB2YWx1ZS5lbmRzV2l0aCgnIicpICYmIGxlbmd0aCA+IDEpCisgICAgICAgIHZhbHVlID0gdmFs
dWUuc3Vic3RyaW5nKDEsIGxlbmd0aCAtIDIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL1Jlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZS5jcHAKaW5kZXggM2Qy
ODYxNmRhYmMuLjMyM2VhZWNhOWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0
ZS5jcHAKQEAgLTMyNiw2NyArMzI2LDEyIEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdh
dGU6OnNldHVwQXV0aGVudGljYXRpb24oKQogICAgIH0KIH0KIAotc3RhdGljIHZvaWQgcmVtb3Zl
TGVhZGluZ0FuZFRyYWlsaW5nUXVvdGVzKFN0cmluZyYgdmFsdWUpCi17Ci0gICAgdW5zaWduZWQg
bGVuZ3RoID0gdmFsdWUubGVuZ3RoKCk7Ci0gICAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgoJyInKSAm
JiB2YWx1ZS5lbmRzV2l0aCgnIicpICYmIGxlbmd0aCA+IDEpCi0gICAgICAgIHZhbHVlID0gdmFs
dWUuc3Vic3RyaW5nKDEsIGxlbmd0aCAtIDIpOwotfQotCi1ib29sIFJlc291cmNlSGFuZGxlQ3Vy
bERlbGVnYXRlOjpnZXRQcm90ZWN0aW9uU3BhY2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlKQotewotICAgIGF1dG8gcG9y
dCA9IG1fY3VybEhhbmRsZS5nZXRQcmltYXJ5UG9ydCgpOwotICAgIGlmICghcG9ydCkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0byBhdmFpbGFibGVBdXRoID0gbV9jdXJsSGFuZGxl
LmdldEh0dHBBdXRoQXZhaWwoKTsKLSAgICBpZiAoIWF2YWlsYWJsZUF1dGgpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIGF1dG8gdXJsID0gbV9jdXJsSGFuZGxlLmdldEVmZmVjdGl2ZVVS
TCgpOwotICAgIGlmICghdXJsLmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgU3RyaW5nIGhvc3QgPSB1cmwuaG9zdCgpOwotICAgIFN0cmluZ1ZpZXcgcHJvdG9jb2wgPSB1
cmwucHJvdG9jb2woKTsKLQotICAgIFN0cmluZyByZWFsbTsKLQotICAgIGNvbnN0IFN0cmluZyBh
dXRoSGVhZGVyID0gcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpBdXRo
b3JpemF0aW9uKTsKLSAgICBjb25zdCBTdHJpbmcgcmVhbG1TdHJpbmcgPSAicmVhbG09IjsKLSAg
ICBpbnQgcmVhbG1Qb3MgPSBhdXRoSGVhZGVyLmZpbmQocmVhbG1TdHJpbmcpOwotICAgIGlmIChy
ZWFsbVBvcyA+IDApIHsKLSAgICAgICAgcmVhbG0gPSBhdXRoSGVhZGVyLnN1YnN0cmluZyhyZWFs
bVBvcyArIHJlYWxtU3RyaW5nLmxlbmd0aCgpKTsKLSAgICAgICAgcmVhbG0gPSByZWFsbS5sZWZ0
KHJlYWxtLmZpbmQoJywnKSk7Ci0gICAgICAgIHJlbW92ZUxlYWRpbmdBbmRUcmFpbGluZ1F1b3Rl
cyhyZWFsbSk7Ci0gICAgfQotCi0gICAgUHJvdGVjdGlvblNwYWNlU2VydmVyVHlwZSBzZXJ2ZXJU
eXBlID0gUHJvdGVjdGlvblNwYWNlU2VydmVySFRUUDsKLSAgICBpZiAocHJvdG9jb2wgPT0gImh0
dHBzIikKLSAgICAgICAgc2VydmVyVHlwZSA9IFByb3RlY3Rpb25TcGFjZVNlcnZlckhUVFBTOwot
Ci0gICAgUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWUgYXV0aFNjaGVtZSA9IFBy
b3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lVW5rbm93bjsKLQotICAgIGlmICgqYXZh
aWxhYmxlQXV0aCAmIENVUkxBVVRIX0JBU0lDKQotICAgICAgICBhdXRoU2NoZW1lID0gUHJvdGVj
dGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVIVFRQQmFzaWM7Ci0gICAgaWYgKCphdmFpbGFi
bGVBdXRoICYgQ1VSTEFVVEhfRElHRVNUKQotICAgICAgICBhdXRoU2NoZW1lID0gUHJvdGVjdGlv
blNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVIVFRQRGlnZXN0OwotICAgIGlmICgqYXZhaWxhYmxl
QXV0aCAmIENVUkxBVVRIX0dTU05FR09USUFURSkKLSAgICAgICAgYXV0aFNjaGVtZSA9IFByb3Rl
Y3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lTmVnb3RpYXRlOwotICAgIGlmICgqYXZhaWxh
YmxlQXV0aCAmIENVUkxBVVRIX05UTE0pCi0gICAgICAgIGF1dGhTY2hlbWUgPSBQcm90ZWN0aW9u
U3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZU5UTE07Ci0KLSAgICBwcm90ZWN0aW9uU3BhY2UgPSBQ
cm90ZWN0aW9uU3BhY2UoaG9zdCwgKnBvcnQsIHNlcnZlclR5cGUsIHJlYWxtLCBhdXRoU2NoZW1l
KTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCiBpbmxpbmUgc3RhdGljIGJvb2wgaXNIdHRwSW5m
byhpbnQgc3RhdHVzQ29kZSkKIHsKICAgICByZXR1cm4gMTAwIDw9IHN0YXR1c0NvZGUgJiYgc3Rh
dHVzQ29kZSA8IDIwMDsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6ZGlk
UmVjZWl2ZUFsbEhlYWRlcnMobG9uZyBodHRwQ29kZSwgbG9uZyBsb25nIGNvbnRlbnRMZW5ndGgp
Cit2b2lkIFJlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlOjpkaWRSZWNlaXZlQWxsSGVhZGVycyhs
b25nIGh0dHBDb2RlLCBsb25nIGxvbmcgY29udGVudExlbmd0aCwgbG9uZyBjb25uZWN0UG9ydCwg
bG9uZyBhdmFpbGFibGVIdHRwQXV0aCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
CkBAIC00MjEsMTUgKzM2NiwxMCBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlOjpk
aWRSZWNlaXZlQWxsSGVhZGVycyhsb25nIGh0dHBDb2RlLCBsb25nIGxvbmcgYwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChyZXNwb25zZSgpLmlzVW5hdXRo
b3JpemVkKCkpIHsKLSAgICAgICAgUHJvdGVjdGlvblNwYWNlIHByb3RlY3Rpb25TcGFjZTsKLSAg
ICAgICAgaWYgKGdldFByb3RlY3Rpb25TcGFjZShyZXNwb25zZSgpLCBwcm90ZWN0aW9uU3BhY2Up
KSB7Ci0gICAgICAgICAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWw7Ci0gICAgICAgICAgICBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSBjaGFsbGVuZ2UocHJvdGVjdGlvblNwYWNlLCBjcmVkZW50aWFs
LCBtX2F1dGhGYWlsdXJlQ291bnQsIHJlc3BvbnNlKCksIFJlc291cmNlRXJyb3IoKSk7Ci0gICAg
ICAgICAgICBjaGFsbGVuZ2Uuc2V0QXV0aGVudGljYXRpb25DbGllbnQobV9oYW5kbGUpOwotICAg
ICAgICAgICAgbV9oYW5kbGUtPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjaGFs
bGVuZ2UpOwotICAgICAgICAgICAgbV9hdXRoRmFpbHVyZUNvdW50Kys7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY2hhbGxl
bmdlKGNvbm5lY3RQb3J0LCBhdmFpbGFibGVIdHRwQXV0aCwgbV9hdXRoRmFpbHVyZUNvdW50LCBy
ZXNwb25zZSgpLCBtX2hhbmRsZSk7CisgICAgICAgIG1faGFuZGxlLT5kaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoY2hhbGxlbmdlKTsKKyAgICAgICAgbV9hdXRoRmFpbHVyZUNvdW50
Kys7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICByZXNwb25zZSgpLnNldFJlc3BvbnNl
RmlyZWQodHJ1ZSk7CkBAIC03NjQsMTMgKzcwNCwyMSBAQCBzaXplX3QgUmVzb3VyY2VIYW5kbGVD
dXJsRGVsZWdhdGU6OmRpZFJlY2VpdmVIZWFkZXIoU3RyaW5nJiYgaGVhZGVyKQogICAgICAgICBp
ZiAoYXV0byBsZW5ndGggPSBtX2N1cmxIYW5kbGUuZ2V0Q29udGVudExlbmdodERvd25sb2FkKCkp
CiAgICAgICAgICAgICBjb250ZW50TGVuZ3RoID0gKmxlbmd0aDsKIAorICAgICAgICB1aW50MTZf
dCBjb25uZWN0UG9ydCA9IDA7CisgICAgICAgIGlmIChhdXRvIHBvcnQgPSBtX2N1cmxIYW5kbGUu
Z2V0UHJpbWFyeVBvcnQoKSkKKyAgICAgICAgICAgIGNvbm5lY3RQb3J0ID0gKnBvcnQ7CisKKyAg
ICAgICAgbG9uZyBhdmFpbGFibGVBdXRoID0gQ1VSTEFVVEhfTk9ORTsKKyAgICAgICAgaWYgKGF1
dG8gYXV0aCA9IG1fY3VybEhhbmRsZS5nZXRIdHRwQXV0aEF2YWlsKCkpCisgICAgICAgICAgICBh
dmFpbGFibGVBdXRoID0gKmF1dGg7CisKICAgICAgICAgaWYgKGlzTWFpblRocmVhZCgpKQotICAg
ICAgICAgICAgZGlkUmVjZWl2ZUFsbEhlYWRlcnMoaHR0cENvZGUsIGNvbnRlbnRMZW5ndGgpOwor
ICAgICAgICAgICAgZGlkUmVjZWl2ZUFsbEhlYWRlcnMoaHR0cENvZGUsIGNvbnRlbnRMZW5ndGgs
IGNvbm5lY3RQb3J0LCBhdmFpbGFibGVBdXRoKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGh0dHBD
b2RlLCBjb250ZW50TGVuZ3RoXSB7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGh0dHBDb2RlLCBjb250ZW50TGVuZ3RoLCBjb25u
ZWN0UG9ydCwgYXZhaWxhYmxlQXV0aF0gewogICAgICAgICAgICAgICAgIGlmICghcHJvdGVjdGVk
VGhpcy0+bV9oYW5kbGUpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
ICAgICBwcm90ZWN0ZWRUaGlzLT5kaWRSZWNlaXZlQWxsSGVhZGVycyhodHRwQ29kZSwgY29udGVu
dExlbmd0aCk7CisgICAgICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlkUmVjZWl2ZUFsbEhl
YWRlcnMoaHR0cENvZGUsIGNvbnRlbnRMZW5ndGgsIGNvbm5lY3RQb3J0LCBhdmFpbGFibGVBdXRo
KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmxE
ZWxlZ2F0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNl
SGFuZGxlQ3VybERlbGVnYXRlLmgKaW5kZXggN2ZlMmUwOTAyMGIuLjMyNDNhYzhmZWE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5k
bGVDdXJsRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvUmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGUuaApAQCAtNzMsOSArNzMsOCBAQCBwcml2YXRl
OgogICAgIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCk7CiAKICAgICB2b2lkIHNldHVwQXV0
aGVudGljYXRpb24oKTsKLSAgICBib29sIGdldFByb3RlY3Rpb25TcGFjZShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUHJvdGVjdGlvblNwYWNlJik7CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVBbGxI
ZWFkZXJzKGxvbmcgaHR0cENvZGUsIGxvbmcgbG9uZyBjb250ZW50TGVuZ3RoKTsKKyAgICB2b2lk
IGRpZFJlY2VpdmVBbGxIZWFkZXJzKGxvbmcgaHR0cENvZGUsIGxvbmcgbG9uZyBjb250ZW50TGVu
Z3RoLCBsb25nIGNvbm5lY3RQb3J0LCBsb25nIGF2YWlsYWJsZUh0dHBBdXRoKTsKICAgICB2b2lk
IGRpZFJlY2VpdmVDb250ZW50RGF0YShUaHJlYWRTYWZlRGF0YUJ1ZmZlcik7CiAgICAgdm9pZCBo
YW5kbGVMb2NhbFJlY2VpdmVSZXNwb25zZSgpOwogICAgIHZvaWQgcHJlcGFyZVNlbmREYXRhKGNo
YXIqLCBzaXplX3QgYmxvY2tTaXplLCBzaXplX3QgbnVtYmVyT2ZCbG9ja3MpOwo=
</data>
<flag name="review"
          id="341179"
          type_id="1"
          status="-"
          setter="achristensen"
    />
    <flag name="commit-queue"
          id="341180"
          type_id="3"
          status="-"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321233</attachid>
            <date>2017-09-19 13:01:18 -0700</date>
            <delta_ts>2017-09-19 13:45:12 -0700</delta_ts>
            <desc>fix</desc>
            <filename>177105-2.diff</filename>
            <type>text/plain</type>
            <size>13691</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4M2I5MmZkN2I1Yi4uMmE0ZGY0ZjQyZmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAxNy0wOS0xOSAgQmFzdWtlIFN1enVraSAgPEJhc3VrZS5TdXp1a2lAc29u
eS5jb20+CisKKyAgICAgICAgW0N1cmxdIE1vdmUgQXV0aGVudGljYXRpb24gcmVsYXRlZCB0YXNr
cyBpbnRvIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzcxMDUKKworICAgICAgICBDdXJyZW50bHkg
dGhvc2UgY29kZXMgYXJlIGluIFJlc291cmNlSGFuZGxlIG9yIHJlbGF0ZWQgY29tcGFuaW9uLiBJ
dCB3aWxsCisgICAgICAgIGJlIHJldXNlZCB3aXRoIE5ldHdvcmtMb2FkVGFzayBzbyB0aGF0IGl0
IHNob3VsZCBiZSBzZXBhcmF0ZWQgZnJvbSB0aGVtLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vQ3VybC5jbWFrZToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZTo6YXV0aGVudGljYXRpb25DbGllbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OnNldEF1dGhlbnRpY2F0aW9uQ2xpZW50KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VDdXJsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2U6OnByb3RlY3Rpb25TcGFjZVNlcnZlclR5cGVGcm9tVVJJKToK
KyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpwcm90ZWN0aW9uU3Bh
Y2VGcm9tSGFuZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
OjpyZW1vdmVMZWFkaW5nQW5kVHJhaWxpbmdRdW90ZXMpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6ZGlkUmVjZWl2ZUFsbEhlYWRlcnMpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGU6OmRpZFJlY2VpdmVI
ZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6cmVtb3ZlTGVhZGluZ0FuZFRyYWlsaW5nUXVvdGVz
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ3VybERlbGVnYXRl
OjpnZXRQcm90ZWN0aW9uU3BhY2UpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZS5oOgorCiAyMDE3LTA5LTE5ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgQXR0ZW1wdCB0byBmaXggTGlu
dXggYnVpbGQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJsLmNtYWtl
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3VybC5jbWFrZQppbmRleCAwNzk1YTUxYmZhOC4u
MGYyMzZiMWRiNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1cmwuY21h
a2UKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3VybC5jbWFrZQpAQCAtMyw2ICszLDcg
QEAgbGlzdChBUFBFTkQgV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiApCiAKIGxpc3QoQVBQ
RU5EIFdlYkNvcmVfU09VUkNFUworICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9BdXRoZW50aWNh
dGlvbkNoYWxsZW5nZUN1cmwuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUph
ckN1cmwuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL0NyZWRlbnRpYWxTdG9yYWdlQ3Vy
bC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9BdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZS5oCmluZGV4IGE0ZWJkMjMyYTgyLi44NjY4ZDY3YTk0YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0F1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsMTEgKzI4LDEwIEBACiAKICNpbmNsdWRlICJB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNs
aWVudC5oIgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA6IHB1YmxpYyBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZUJhc2UgeworY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgZmluYWwgOiBwdWJs
aWMgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlIHsKIHB1YmxpYzoKICAgICBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSgpCiAgICAgewpAQCAtNDIsOCArNDIsMTMgQEAgcHVibGljOgogICAgIHsK
ICAgICB9CiAKKyAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50MTZfdCwgbG9uZywgdW5z
aWduZWQsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBBdXRoZW50aWNhdGlvbkNsaWVudCogPSBu
dWxscHRyKTsKICAgICBBdXRoZW50aWNhdGlvbkNsaWVudCogYXV0aGVudGljYXRpb25DbGllbnQo
KSBjb25zdCB7IHJldHVybiBtX2F1dGhlbnRpY2F0aW9uQ2xpZW50LmdldCgpOyB9Ci0gICAgdm9p
ZCBzZXRBdXRoZW50aWNhdGlvbkNsaWVudChBdXRoZW50aWNhdGlvbkNsaWVudCogY2xpZW50KSB7
IG1fYXV0aGVudGljYXRpb25DbGllbnQgPSBjbGllbnQ7IH0KKworcHJpdmF0ZToKKyAgICBQcm90
ZWN0aW9uU3BhY2VTZXJ2ZXJUeXBlIHByb3RlY3Rpb25TcGFjZVNlcnZlclR5cGVGcm9tVVJJKGNv
bnN0IFVSTCYpOworICAgIFByb3RlY3Rpb25TcGFjZSBwcm90ZWN0aW9uU3BhY2VGcm9tSGFuZGxl
KHVpbnQxNl90LCBsb25nLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgdm9pZCByZW1v
dmVMZWFkaW5nQW5kVHJhaWxpbmdRdW90ZXMoU3RyaW5nJik7CiAKICAgICBSZWZQdHI8QXV0aGVu
dGljYXRpb25DbGllbnQ+IG1fYXV0aGVudGljYXRpb25DbGllbnQ7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VDdXJsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMC4uYWIzZmY1ZDBiMDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDdXJsLmNwcApAQCAt
MCwwICsxLDg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IFNvbnkgSW50ZXJhY3RpdmUg
RW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKKworI2lmIFVTRShDVVJMKQorCisjaW5j
bHVkZSAiQ3VybENvbnRleHQuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKHVpbnQxNl90IGNvbm5lY3RQb3J0LCBsb25nIGF2YWlsYWJsZUh0dHBBdXRoLCB1
bnNpZ25lZCBwcmV2aW91c0ZhaWx1cmVDb3VudCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIEF1dGhlbnRpY2F0aW9uQ2xpZW50KiBjbGllbnQpCisgICAgOiBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZUJhc2UocHJvdGVjdGlvblNwYWNlRnJvbUhhbmRsZShjb25uZWN0UG9ydCwgYXZh
aWxhYmxlSHR0cEF1dGgsIHJlc3BvbnNlKSwgQ3JlZGVudGlhbCgpLCBwcmV2aW91c0ZhaWx1cmVD
b3VudCwgcmVzcG9uc2UsIFJlc291cmNlRXJyb3IoKSkKKyAgICAsIG1fYXV0aGVudGljYXRpb25D
bGllbnQoY2xpZW50KQoreworfQorCitQcm90ZWN0aW9uU3BhY2VTZXJ2ZXJUeXBlIEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlOjpwcm90ZWN0aW9uU3BhY2VTZXJ2ZXJUeXBlRnJvbVVSSShjb25zdCBV
UkwmIHVybCkKK3sKKyAgICBpZiAodXJsLnByb3RvY29sSXMoImh0dHBzIikpCisgICAgICAgIHJl
dHVybiBQcm90ZWN0aW9uU3BhY2VTZXJ2ZXJIVFRQUzsKKyAgICBpZiAodXJsLnByb3RvY29sSXMo
Imh0dHAiKSkKKyAgICAgICAgcmV0dXJuIFByb3RlY3Rpb25TcGFjZVNlcnZlckhUVFA7CisgICAg
aWYgKHVybC5wcm90b2NvbElzKCJmdHAiKSkKKyAgICAgICAgcmV0dXJuIFByb3RlY3Rpb25TcGFj
ZVNlcnZlckZUUDsKKyAgICByZXR1cm4gUHJvdGVjdGlvblNwYWNlU2VydmVySFRUUDsKK30KKwor
UHJvdGVjdGlvblNwYWNlIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpwcm90ZWN0aW9uU3BhY2VG
cm9tSGFuZGxlKHVpbnQxNl90IGNvbm5lY3RQb3J0LCBsb25nIGF2YWlsYWJsZUh0dHBBdXRoLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3sKKyAgICBQcm90ZWN0aW9uU3BhY2VB
dXRoZW50aWNhdGlvblNjaGVtZSBzY2hlbWUgPSBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlv
blNjaGVtZVVua25vd247CisgICAgaWYgKGF2YWlsYWJsZUh0dHBBdXRoICYgQ1VSTEFVVEhfQkFT
SUMpCisgICAgICAgIHNjaGVtZSA9IFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1l
SFRUUEJhc2ljOworICAgIGlmIChhdmFpbGFibGVIdHRwQXV0aCAmIENVUkxBVVRIX0RJR0VTVCkK
KyAgICAgICAgc2NoZW1lID0gUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVIVFRQ
RGlnZXN0OworICAgIGlmIChhdmFpbGFibGVIdHRwQXV0aCAmIENVUkxBVVRIX05FR09USUFURSkK
KyAgICAgICAgc2NoZW1lID0gUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVOZWdv
dGlhdGU7CisgICAgaWYgKGF2YWlsYWJsZUh0dHBBdXRoICYgQ1VSTEFVVEhfTlRMTSkKKyAgICAg
ICAgc2NoZW1lID0gUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVOVExNOworCisg
ICAgU3RyaW5nIHJlYWxtOworICAgIGNvbnN0IFN0cmluZyByZWFsbVN0cmluZygicmVhbG09Iik7
CisgICAgYXV0byBhdXRoSGVhZGVyID0gcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFk
ZXJOYW1lOjpBdXRob3JpemF0aW9uKTsKKyAgICBhdXRvIHJlYWxtUG9zID0gYXV0aEhlYWRlci5m
aW5kKHJlYWxtU3RyaW5nKTsKKyAgICBpZiAocmVhbG1Qb3MgIT0gbm90Rm91bmQpIHsKKyAgICAg
ICAgcmVhbG0gPSBhdXRoSGVhZGVyLnN1YnN0cmluZyhyZWFsbVBvcyArIHJlYWxtU3RyaW5nLmxl
bmd0aCgpKTsKKyAgICAgICAgcmVhbG0gPSByZWFsbS5sZWZ0KHJlYWxtLmZpbmQoJywnKSk7Cisg
ICAgICAgIHJlbW92ZUxlYWRpbmdBbmRUcmFpbGluZ1F1b3RlcyhyZWFsbSk7CisgICAgfQorCisg
ICAgcmV0dXJuIFByb3RlY3Rpb25TcGFjZShyZXNwb25zZS51cmwoKS5ob3N0KCksIHN0YXRpY19j
YXN0PGludD4oY29ubmVjdFBvcnQpLCBwcm90ZWN0aW9uU3BhY2VTZXJ2ZXJUeXBlRnJvbVVSSShy
ZXNwb25zZS51cmwoKSksIHJlYWxtLCBzY2hlbWUpOworfQorCit2b2lkIEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlOjpyZW1vdmVMZWFkaW5nQW5kVHJhaWxpbmdRdW90ZXMoU3RyaW5nJiB2YWx1ZSkK
K3sKKyAgICBhdXRvIGxlbmd0aCA9IHZhbHVlLmxlbmd0aCgpOworICAgIGlmICh2YWx1ZS5zdGFy
dHNXaXRoKCciJykgJiYgdmFsdWUuZW5kc1dpdGgoJyInKSAmJiBsZW5ndGggPiAxKQorICAgICAg
ICB2YWx1ZSA9IHZhbHVlLnN1YnN0cmluZygxLCBsZW5ndGggLSAyKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGUu
Y3BwCmluZGV4IGY1MDZlZGVjYjBhLi5lMWY0ZTYzMWUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5k
bGVDdXJsRGVsZWdhdGUuY3BwCkBAIC0zMjQsNjcgKzMyNCwxMiBAQCB2b2lkIFJlc291cmNlSGFu
ZGxlQ3VybERlbGVnYXRlOjpzZXR1cEF1dGhlbnRpY2F0aW9uKCkKICAgICB9CiB9CiAKLXN0YXRp
YyB2b2lkIHJlbW92ZUxlYWRpbmdBbmRUcmFpbGluZ1F1b3RlcyhTdHJpbmcmIHZhbHVlKQotewot
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IHZhbHVlLmxlbmd0aCgpOwotICAgIGlmICh2YWx1ZS5zdGFy
dHNXaXRoKCciJykgJiYgdmFsdWUuZW5kc1dpdGgoJyInKSAmJiBsZW5ndGggPiAxKQotICAgICAg
ICB2YWx1ZSA9IHZhbHVlLnN1YnN0cmluZygxLCBsZW5ndGggLSAyKTsKLX0KLQotYm9vbCBSZXNv
dXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6Z2V0UHJvdGVjdGlvblNwYWNlKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSkKLXsK
LSAgICBhdXRvIHBvcnQgPSBtX2N1cmxIYW5kbGUuZ2V0UHJpbWFyeVBvcnQoKTsKLSAgICBpZiAo
IXBvcnQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8gYXZhaWxhYmxlQXV0aCA9
IG1fY3VybEhhbmRsZS5nZXRIdHRwQXV0aEF2YWlsKCk7Ci0gICAgaWYgKCFhdmFpbGFibGVBdXRo
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvIHVybCA9IG1fY3VybEhhbmRsZS5n
ZXRFZmZlY3RpdmVVUkwoKTsKLSAgICBpZiAoIXVybC5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIFN0cmluZyBob3N0ID0gdXJsLmhvc3QoKTsKLSAgICBTdHJpbmdWaWV3
IHByb3RvY29sID0gdXJsLnByb3RvY29sKCk7Ci0KLSAgICBTdHJpbmcgcmVhbG07Ci0KLSAgICBj
b25zdCBTdHJpbmcgYXV0aEhlYWRlciA9IHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVh
ZGVyTmFtZTo6QXV0aG9yaXphdGlvbik7Ci0gICAgY29uc3QgU3RyaW5nIHJlYWxtU3RyaW5nID0g
InJlYWxtPSI7Ci0gICAgaW50IHJlYWxtUG9zID0gYXV0aEhlYWRlci5maW5kKHJlYWxtU3RyaW5n
KTsKLSAgICBpZiAocmVhbG1Qb3MgPiAwKSB7Ci0gICAgICAgIHJlYWxtID0gYXV0aEhlYWRlci5z
dWJzdHJpbmcocmVhbG1Qb3MgKyByZWFsbVN0cmluZy5sZW5ndGgoKSk7Ci0gICAgICAgIHJlYWxt
ID0gcmVhbG0ubGVmdChyZWFsbS5maW5kKCcsJykpOwotICAgICAgICByZW1vdmVMZWFkaW5nQW5k
VHJhaWxpbmdRdW90ZXMocmVhbG0pOwotICAgIH0KLQotICAgIFByb3RlY3Rpb25TcGFjZVNlcnZl
clR5cGUgc2VydmVyVHlwZSA9IFByb3RlY3Rpb25TcGFjZVNlcnZlckhUVFA7Ci0gICAgaWYgKHBy
b3RvY29sID09ICJodHRwcyIpCi0gICAgICAgIHNlcnZlclR5cGUgPSBQcm90ZWN0aW9uU3BhY2VT
ZXJ2ZXJIVFRQUzsKLQotICAgIFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lIGF1
dGhTY2hlbWUgPSBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZVVua25vd247Ci0K
LSAgICBpZiAoKmF2YWlsYWJsZUF1dGggJiBDVVJMQVVUSF9CQVNJQykKLSAgICAgICAgYXV0aFNj
aGVtZSA9IFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lSFRUUEJhc2ljOwotICAg
IGlmICgqYXZhaWxhYmxlQXV0aCAmIENVUkxBVVRIX0RJR0VTVCkKLSAgICAgICAgYXV0aFNjaGVt
ZSA9IFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lSFRUUERpZ2VzdDsKLSAgICBp
ZiAoKmF2YWlsYWJsZUF1dGggJiBDVVJMQVVUSF9HU1NORUdPVElBVEUpCi0gICAgICAgIGF1dGhT
Y2hlbWUgPSBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZU5lZ290aWF0ZTsKLSAg
ICBpZiAoKmF2YWlsYWJsZUF1dGggJiBDVVJMQVVUSF9OVExNKQotICAgICAgICBhdXRoU2NoZW1l
ID0gUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVOVExNOwotCi0gICAgcHJvdGVj
dGlvblNwYWNlID0gUHJvdGVjdGlvblNwYWNlKGhvc3QsICpwb3J0LCBzZXJ2ZXJUeXBlLCByZWFs
bSwgYXV0aFNjaGVtZSk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogaW5saW5lIHN0YXRpYyBi
b29sIGlzSHR0cEluZm8oaW50IHN0YXR1c0NvZGUpCiB7CiAgICAgcmV0dXJuIDEwMCA8PSBzdGF0
dXNDb2RlICYmIHN0YXR1c0NvZGUgPCAyMDA7CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGVDdXJs
RGVsZWdhdGU6OmRpZFJlY2VpdmVBbGxIZWFkZXJzKGxvbmcgaHR0cENvZGUsIGxvbmcgbG9uZyBj
b250ZW50TGVuZ3RoKQordm9pZCBSZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6ZGlkUmVjZWl2
ZUFsbEhlYWRlcnMobG9uZyBodHRwQ29kZSwgbG9uZyBsb25nIGNvbnRlbnRMZW5ndGgsIHVpbnQx
Nl90IGNvbm5lY3RQb3J0LCBsb25nIGF2YWlsYWJsZUh0dHBBdXRoKQogewogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAKQEAgLTQxOSwxNSArMzY0LDEwIEBAIHZvaWQgUmVzb3VyY2VIYW5k
bGVDdXJsRGVsZWdhdGU6OmRpZFJlY2VpdmVBbGxIZWFkZXJzKGxvbmcgaHR0cENvZGUsIGxvbmcg
bG9uZyBjCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKHJl
c3BvbnNlKCkuaXNVbmF1dGhvcml6ZWQoKSkgewotICAgICAgICBQcm90ZWN0aW9uU3BhY2UgcHJv
dGVjdGlvblNwYWNlOwotICAgICAgICBpZiAoZ2V0UHJvdGVjdGlvblNwYWNlKHJlc3BvbnNlKCks
IHByb3RlY3Rpb25TcGFjZSkpIHsKLSAgICAgICAgICAgIENyZWRlbnRpYWwgY3JlZGVudGlhbDsK
LSAgICAgICAgICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZShwcm90ZWN0aW9u
U3BhY2UsIGNyZWRlbnRpYWwsIG1fYXV0aEZhaWx1cmVDb3VudCwgcmVzcG9uc2UoKSwgUmVzb3Vy
Y2VFcnJvcigpKTsKLSAgICAgICAgICAgIGNoYWxsZW5nZS5zZXRBdXRoZW50aWNhdGlvbkNsaWVu
dChtX2hhbmRsZSk7Ci0gICAgICAgICAgICBtX2hhbmRsZS0+ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKGNoYWxsZW5nZSk7Ci0gICAgICAgICAgICBtX2F1dGhGYWlsdXJlQ291bnQr
KzsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgICAgICBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSBjaGFsbGVuZ2UoY29ubmVjdFBvcnQsIGF2YWlsYWJsZUh0dHBBdXRoLCBtX2F1
dGhGYWlsdXJlQ291bnQsIHJlc3BvbnNlKCksIG1faGFuZGxlKTsKKyAgICAgICAgbV9oYW5kbGUt
PmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjaGFsbGVuZ2UpOworICAgICAgICBt
X2F1dGhGYWlsdXJlQ291bnQrKzsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIHJlc3Bv
bnNlKCkuc2V0UmVzcG9uc2VGaXJlZCh0cnVlKTsKQEAgLTc2MiwxMyArNzAyLDIxIEBAIHNpemVf
dCBSZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6ZGlkUmVjZWl2ZUhlYWRlcihTdHJpbmcmJiBo
ZWFkZXIpCiAgICAgICAgIGlmIChhdXRvIGxlbmd0aCA9IG1fY3VybEhhbmRsZS5nZXRDb250ZW50
TGVuZ2h0RG93bmxvYWQoKSkKICAgICAgICAgICAgIGNvbnRlbnRMZW5ndGggPSAqbGVuZ3RoOwog
CisgICAgICAgIHVpbnQxNl90IGNvbm5lY3RQb3J0ID0gMDsKKyAgICAgICAgaWYgKGF1dG8gcG9y
dCA9IG1fY3VybEhhbmRsZS5nZXRQcmltYXJ5UG9ydCgpKQorICAgICAgICAgICAgY29ubmVjdFBv
cnQgPSAqcG9ydDsKKworICAgICAgICBsb25nIGF2YWlsYWJsZUF1dGggPSBDVVJMQVVUSF9OT05F
OworICAgICAgICBpZiAoYXV0byBhdXRoID0gbV9jdXJsSGFuZGxlLmdldEh0dHBBdXRoQXZhaWwo
KSkKKyAgICAgICAgICAgIGF2YWlsYWJsZUF1dGggPSAqYXV0aDsKKwogICAgICAgICBpZiAoaXNN
YWluVGhyZWFkKCkpCi0gICAgICAgICAgICBkaWRSZWNlaXZlQWxsSGVhZGVycyhodHRwQ29kZSwg
Y29udGVudExlbmd0aCk7CisgICAgICAgICAgICBkaWRSZWNlaXZlQWxsSGVhZGVycyhodHRwQ29k
ZSwgY29udGVudExlbmd0aCwgY29ubmVjdFBvcnQsIGF2YWlsYWJsZUF1dGgpOwogICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgaHR0cENvZGUsIGNvbnRlbnRMZW5ndGhdIHsKKyAgICAgICAgICAgIGNhbGxP
bk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaHR0cENvZGUsIGNv
bnRlbnRMZW5ndGgsIGNvbm5lY3RQb3J0LCBhdmFpbGFibGVBdXRoXSB7CiAgICAgICAgICAgICAg
ICAgaWYgKCFwcm90ZWN0ZWRUaGlzLT5tX2hhbmRsZSkKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRpZFJlY2VpdmVBbGxIZWFkZXJz
KGh0dHBDb2RlLCBjb250ZW50TGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlz
LT5kaWRSZWNlaXZlQWxsSGVhZGVycyhodHRwQ29kZSwgY29udGVudExlbmd0aCwgY29ubmVjdFBv
cnQsIGF2YWlsYWJsZUF1dGgpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KICAgICB9IGVs
c2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jl
c291cmNlSGFuZGxlQ3VybERlbGVnYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGUuaAppbmRleCAwOTk1OGIxNjkxZC4u
OTE1YjIzOGIzNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZS5oCkBAIC03Myw5
ICs3Myw4IEBAIHByaXZhdGU6CiAgICAgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKTsKIAog
ICAgIHZvaWQgc2V0dXBBdXRoZW50aWNhdGlvbigpOwotICAgIGJvb2wgZ2V0UHJvdGVjdGlvblNw
YWNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBQcm90ZWN0aW9uU3BhY2UmKTsKIAotICAgIHZv
aWQgZGlkUmVjZWl2ZUFsbEhlYWRlcnMobG9uZyBodHRwQ29kZSwgbG9uZyBsb25nIGNvbnRlbnRM
ZW5ndGgpOworICAgIHZvaWQgZGlkUmVjZWl2ZUFsbEhlYWRlcnMobG9uZyBodHRwQ29kZSwgbG9u
ZyBsb25nIGNvbnRlbnRMZW5ndGgsIHVpbnQxNl90IGNvbm5lY3RQb3J0LCBsb25nIGF2YWlsYWJs
ZUh0dHBBdXRoKTsKICAgICB2b2lkIGRpZFJlY2VpdmVDb250ZW50RGF0YShUaHJlYWRTYWZlRGF0
YUJ1ZmZlcik7CiAgICAgdm9pZCBoYW5kbGVMb2NhbFJlY2VpdmVSZXNwb25zZSgpOwogICAgIHZv
aWQgcHJlcGFyZVNlbmREYXRhKGNoYXIqLCBzaXplX3QgYmxvY2tTaXplLCBzaXplX3QgbnVtYmVy
T2ZCbG9ja3MpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>