<?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>174654</bug_id>
          
          <creation_ts>2017-07-19 10:30:06 -0700</creation_ts>
          <short_desc>[Curl] Move response related features into ResourceResponse</short_desc>
          <delta_ts>2017-09-27 12:49:18 -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>173964</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>pvollan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1330402</commentid>
    <comment_count>0</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2017-07-19 10:30:06 -0700</bug_when>
    <thetext>ResourceHandle currently handles resource header handling in it, but ResourceResponse class can handle directly from CurlContext.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1334943</commentid>
    <comment_count>1</comment_count>
      <attachid>317152</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2017-08-03 14:27:45 -0700</bug_when>
    <thetext>Created attachment 317152
Implemented</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1334948</commentid>
    <comment_count>2</comment_count>
      <attachid>317155</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2017-08-03 14:35:09 -0700</bug_when>
    <thetext>Created attachment 317155
Implemented</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1335024</commentid>
    <comment_count>3</comment_count>
      <attachid>317179</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2017-08-03 16:46:54 -0700</bug_when>
    <thetext>Created attachment 317179
Implemented</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340109</commentid>
    <comment_count>4</comment_count>
      <attachid>317179</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-08-18 09:34:02 -0700</bug_when>
    <thetext>Comment on attachment 317179
Implemented

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

This looks good to me. I wasn&apos;t sure if you meant to get rid of the notes about the cURL FOLLOWLOCATION option. r=me, but not cq+ until you answer that.

&gt; Source/WebCore/platform/network/curl/ResourceHandleCurl.cpp:-721
&gt; -        // will be called more than one time with the line starting &quot;HTTP&quot; for one job.

This information seems to have been lost in your patch. Is this no longer relevant or useful to you?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348555</commentid>
    <comment_count>5</comment_count>
      <attachid>320708</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2017-09-13 16:35:03 -0700</bug_when>
    <thetext>Created attachment 320708
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348672</commentid>
    <comment_count>6</comment_count>
      <attachid>320708</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-13 23:57:15 -0700</bug_when>
    <thetext>Comment on attachment 320708
Patch

Clearing flags on attachment: 320708

Committed r222012: &lt;http://trac.webkit.org/changeset/222012&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348673</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-13 23:57:17 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353668</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:49:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/34694080&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317152</attachid>
            <date>2017-08-03 14:27:45 -0700</date>
            <delta_ts>2017-08-03 14:35:09 -0700</delta_ts>
            <desc>Implemented</desc>
            <filename>174654-2.diff</filename>
            <type>text/plain</type>
            <size>9474</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyZTUxYzU2YWMwNC4uMmMxNTAwNDljNzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAxNy0wOC0wMyAgQmFzdWtlIFN1enVraSAgPEJhc3VrZS5TdXp1a2lAc29u
eS5jb20+CisKKyAgICAgICAgW0N1cmxdIE1vdmUgcmVzcG9uc2UgcmVsYXRlZCBmZWF0dXJlcyBp
bnRvIFJlc291cmNlUmVzcG9uc2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NDY1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogcGxhdGZvcm0vQ3VybC5jbWFrZToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlSW50ZXJuYWw6OmRpZFJlY2VpdmVIZWFkZXJMaW5lKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1TdWdnZXN0ZWRGaWxlbmFtZSk6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVzcG9uc2VDdXJsLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjppc0FwcGVuZGFi
bGVIZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6YXBwZW5kSFRU
UEhlYWRlckZpZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OnNldFN0
YXR1c0xpbmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1T
dWdnZXN0ZWRGaWxlbmFtZSk6CisKIDIwMTctMDctMjcgIEFhcm9uIENodSAgPGFhcm9uX2NodUBh
cHBsZS5jb20+CiAKICAgICAgICAgQVg6IFZvaWNlT3ZlciBzaWxlbnQgb3Igc2tpcHBpbmcgb3Zl
ciB0aW1lIHZhbHVlcyBvbiBtZWRpYSBwbGF5ZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9DdXJsLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3VybC5jbWFr
ZQppbmRleCA3NjVkZjgxNzU3My4uMTljN2Q1ZDU0YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0N1cmwuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Vy
bC5jbWFrZQpAQCAtMTUsNiArMTUsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAg
ICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTXVsdGlwYXJ0SGFuZGxlLmNwcAogICAgIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9Qcm94eVNlcnZlckN1cmwuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9j
dXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKKyAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVz
b3VyY2VSZXNwb25zZUN1cmwuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL1NTTEhhbmRs
ZS5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1
cmwuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50
Q3VybC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKaW5kZXggYTRhZDg5MzVmMmYuLjVkZDIyMDRi
MWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVz
b3VyY2VIYW5kbGVDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcApAQCAtNzAzLDM0ICs3MDMsNyBAQCB2b2lkIFJl
c291cmNlSGFuZGxlSW50ZXJuYWw6OmRpZFJlY2VpdmVIZWFkZXJMaW5lKGNvbnN0IFN0cmluZyYg
aGVhZGVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBhdXRvIHNwbGl0
UG9zaXRpb24gPSBoZWFkZXIuZmluZCgiOiIpOwotICAgIGlmIChzcGxpdFBvc2l0aW9uICE9IG5v
dEZvdW5kKSB7Ci0gICAgICAgIFN0cmluZyBrZXkgPSBoZWFkZXIubGVmdChzcGxpdFBvc2l0aW9u
KS5zdHJpcFdoaXRlU3BhY2UoKTsKLSAgICAgICAgU3RyaW5nIHZhbHVlID0gaGVhZGVyLnN1YnN0
cmluZyhzcGxpdFBvc2l0aW9uICsgMSkuc3RyaXBXaGl0ZVNwYWNlKCk7Ci0KLSAgICAgICAgaWYg
KGlzQXBwZW5kYWJsZUhlYWRlcihrZXkpKQotICAgICAgICAgICAgbV9yZXNwb25zZS5hZGRIVFRQ
SGVhZGVyRmllbGQoa2V5LCB2YWx1ZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcmVz
cG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkKGtleSwgdmFsdWUpOwotICAgIH0gZWxzZSBpZiAoaGVh
ZGVyLnN0YXJ0c1dpdGgoIkhUVFAiLCBmYWxzZSkpIHsKLSAgICAgICAgLy8gVGhpcyBpcyB0aGUg
Zmlyc3QgbGluZSBvZiB0aGUgcmVzcG9uc2UuCi0gICAgICAgIC8vIEV4dHJhY3QgdGhlIGh0dHAg
c3RhdHVzIHRleHQgZnJvbSB0aGlzLgotICAgICAgICAvLwotICAgICAgICAvLyBJZiB0aGUgRk9M
TE9XTE9DQVRJT04gb3B0aW9uIGlzIGVuYWJsZWQgZm9yIHRoZSBjdXJsIGhhbmRsZSB0aGVuCi0g
ICAgICAgIC8vIGN1cmwgd2lsbCBmb2xsb3cgdGhlIHJlZGlyZWN0aW9ucyBpbnRlcm5hbGx5LiBU
aHVzIHRoaXMgaGVhZGVyIGNhbGxiYWNrCi0gICAgICAgIC8vIHdpbGwgYmUgY2FsbGVkIG1vcmUg
dGhhbiBvbmUgdGltZSB3aXRoIHRoZSBsaW5lIHN0YXJ0aW5nICJIVFRQIiBmb3Igb25lIGpvYi4K
LSAgICAgICAgbG9uZyBodHRwQ29kZSA9IDA7Ci0gICAgICAgIG1fY3VybEhhbmRsZS5nZXRSZXNw
b25zZUNvZGUoaHR0cENvZGUpOwotCi0gICAgICAgIFN0cmluZyBodHRwQ29kZVN0cmluZyA9IFN0
cmluZzo6bnVtYmVyKGh0dHBDb2RlKTsKLSAgICAgICAgaW50IHN0YXR1c0NvZGVQb3MgPSBoZWFk
ZXIuZmluZChodHRwQ29kZVN0cmluZyk7Ci0KLSAgICAgICAgaWYgKHN0YXR1c0NvZGVQb3MgIT0g
bm90Rm91bmQpIHsKLSAgICAgICAgICAgIC8vIFRoZSBzdGF0dXMgdGV4dCBpcyBhZnRlciB0aGUg
c3RhdHVzIGNvZGUuCi0gICAgICAgICAgICBTdHJpbmcgc3RhdHVzID0gaGVhZGVyLnN1YnN0cmlu
ZyhzdGF0dXNDb2RlUG9zICsgaHR0cENvZGVTdHJpbmcubGVuZ3RoKCkpOwotICAgICAgICAgICAg
bV9yZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dChzdGF0dXMuc3RyaXBXaGl0ZVNwYWNlKCkpOwot
ICAgICAgICB9Ci0gICAgfQorICAgIG1fcmVzcG9uc2UuYXBwZW5kSFRUUEhlYWRlckZpZWxkKGhl
YWRlcik7CiB9CiAKIHZvaWQgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbDo6ZGlkUmVjZWl2ZUFsbEhl
YWRlcnMobG9uZyBodHRwQ29kZSwgbG9uZyBsb25nIGNvbnRlbnRMZW5ndGgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVzcG9uc2Uu
aAppbmRleCAyYTQyMzJjNjY3MS4uNzRhOTIxMDg3ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVzcG9uc2UuaApAQCAtMSw1
ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNyBTb255IEludGVyYWN0aXZlIEVudGVy
dGFpbm1lbnQgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSw5ICsy
Niw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiSFRUUEhlYWRlck5hbWVzLmgiCi0j
aW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKLQogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2VCYXNl
LmgiCiAKIHR5cGVkZWYgc3RydWN0IF9DRlVSTFJlc3BvbnNlKiBDRlVSTFJlc3BvbnNlUmVmOwpA
QCAtNDksNiArNDcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFJlc3BvbnNlRmlyZWQoYm9v
bCBmaXJlZCkgeyBtX3Jlc3BvbnNlRmlyZWQgPSBmaXJlZDsgfQogICAgIGJvb2wgcmVzcG9uc2VG
aXJlZCgpIHsgcmV0dXJuIG1fcmVzcG9uc2VGaXJlZDsgfQorICAgIHZvaWQgYXBwZW5kSFRUUEhl
YWRlckZpZWxkKGNvbnN0IFN0cmluZyYpOwogCiAgICAgLy8gTmVlZGVkIGZvciBjb21wYXRpYmls
aXR5LgogICAgIENGVVJMUmVzcG9uc2VSZWYgY2ZVUkxSZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJu
IDA7IH0KQEAgLTU2LDEwICs1NSwxMCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGZyaWVuZCBj
bGFzcyBSZXNvdXJjZVJlc3BvbnNlQmFzZTsKIAotICAgIFN0cmluZyBwbGF0Zm9ybVN1Z2dlc3Rl
ZEZpbGVuYW1lKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmaWxlbmFtZUZyb21IVFRQ
Q29udGVudERpc3Bvc2l0aW9uKGh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVu
dERpc3Bvc2l0aW9uKSk7Ci0gICAgfQorICAgIHN0YXRpYyBib29sIGlzQXBwZW5kYWJsZUhlYWRl
cihjb25zdCBTdHJpbmcgJmtleSk7CisgICAgU3RyaW5nIHBsYXRmb3JtU3VnZ2VzdGVkRmlsZW5h
bWUoKSBjb25zdDsKKworICAgIHZvaWQgc2V0U3RhdHVzTGluZShjb25zdCBTdHJpbmcmKTsKIAog
ICAgIGJvb2wgbV9yZXNwb25zZUZpcmVkOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42ZmY0MmQ1ZWM0NQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZVJlc3BvbnNlQ3VybC5jcHAKQEAgLTAsMCArMSwxMjUgQEAKKy8qCisqIENvcHlyaWdodCAoQykg
MjAxNyBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorKgorKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFVTRShDVVJMKQorI2luY2x1ZGUgIlJl
c291cmNlUmVzcG9uc2UuaCIKKworI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworYm9vbCBSZXNvdXJjZVJlc3BvbnNlOjppc0FwcGVuZGFibGVIZWFkZXIo
Y29uc3QgU3RyaW5nICZrZXkpCit7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGFwcGVuZGFibGVI
ZWFkZXJzW10gPSB7CisgICAgICAgICJhY2Nlc3MtY29udHJvbC1hbGxvdy1oZWFkZXJzIiwKKyAg
ICAgICAgImFjY2Vzcy1jb250cm9sLWFsbG93LW1ldGhvZHMiLAorICAgICAgICAiYWNjZXNzLWNv
bnRyb2wtYWxsb3ctb3JpZ2luIiwKKyAgICAgICAgImFjY2Vzcy1jb250cm9sLWV4cG9zZS1oZWFk
ZXJzIiwKKyAgICAgICAgImFsbG93IiwKKyAgICAgICAgImNhY2hlLWNvbnRyb2wiLAorICAgICAg
ICAiY29ubmVjdGlvbiIsCisgICAgICAgICJjb250ZW50LWVuY29kaW5nIiwKKyAgICAgICAgImNv
bnRlbnQtbGFuZ3VhZ2UiLAorICAgICAgICAiaWYtbWF0Y2giLAorICAgICAgICAiaWYtbm9uZS1t
YXRjaCIsCisgICAgICAgICJrZWVwLWFsaXZlIiwKKyAgICAgICAgInByYWdtYSIsCisgICAgICAg
ICJwcm94eS1hdXRoZW50aWNhdGUiLAorICAgICAgICAicHVibGljIiwKKyAgICAgICAgInNlcnZl
ciIsCisgICAgICAgICJzZXQtY29va2llIiwKKyAgICAgICAgInRlIiwKKyAgICAgICAgInRyYWls
ZXIiLAorICAgICAgICAidHJhbnNmZXItZW5jb2RpbmciLAorICAgICAgICAidXBncmFkZSIsCisg
ICAgICAgICJ1c2VyLWFnZW50IiwKKyAgICAgICAgInZhcnkiLAorICAgICAgICAidmlhIiwKKyAg
ICAgICAgIndhcm5pbmciLAorICAgICAgICAid3d3LWF1dGhlbnRpY2F0ZSIKKyAgICB9OworCisg
ICAgLy8gQ3VzdG9tIGhlYWRlcnMgc3RhcnQgd2l0aCAnWC0nLCBhbmQgbmVlZCBubyBmdXJ0aGVy
IGNoZWNraW5nLgorICAgIGlmIChrZXkuc3RhcnRzV2l0aCgieC0iLCAvKiBjYXNlU2Vuc2l0aXZl
ICovIGZhbHNlKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBmb3IgKGF1dG8mIGhlYWRl
ciA6IGFwcGVuZGFibGVIZWFkZXJzKSB7CisgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlD
YXNlKGtleSwgaGVhZGVyKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAg
IHJldHVybiBmYWxzZTsKK30KKwordm9pZCBSZXNvdXJjZVJlc3BvbnNlOjphcHBlbmRIVFRQSGVh
ZGVyRmllbGQoY29uc3QgU3RyaW5nJiBoZWFkZXIpCit7CisgICAgaW50IHNwbGl0UG9zaXN0aW9u
ID0gaGVhZGVyLmZpbmQoIjoiKTsKKyAgICBpZiAoc3BsaXRQb3Npc3Rpb24gIT0gbm90Rm91bmQp
IHsKKyAgICAgICAgU3RyaW5nIGtleSA9IGhlYWRlci5sZWZ0KHNwbGl0UG9zaXN0aW9uKS5zdHJp
cFdoaXRlU3BhY2UoKTsKKyAgICAgICAgU3RyaW5nIHZhbHVlID0gaGVhZGVyLnN1YnN0cmluZyhz
cGxpdFBvc2lzdGlvbiArIDEpLnN0cmlwV2hpdGVTcGFjZSgpOworCisgICAgICAgIGlmIChpc0Fw
cGVuZGFibGVIZWFkZXIoa2V5KSkKKyAgICAgICAgICAgIGFkZEhUVFBIZWFkZXJGaWVsZChrZXks
IHZhbHVlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2V0SFRUUEhlYWRlckZpZWxkKGtl
eSwgdmFsdWUpOworICAgIH0gZWxzZSBpZiAoaGVhZGVyLnN0YXJ0c1dpdGgoIkhUVFAiLCBmYWxz
ZSkpIHsKKyAgICAgICAgLy8gVGhpcyBpcyB0aGUgZmlyc3QgbGluZSBvZiB0aGUgcmVzcG9uc2Uu
CisgICAgICAgIHNldFN0YXR1c0xpbmUoaGVhZGVyKTsKKyAgICB9Cit9CisKK3ZvaWQgUmVzb3Vy
Y2VSZXNwb25zZTo6c2V0U3RhdHVzTGluZShjb25zdCBTdHJpbmcmIGhlYWRlcikKK3sKKyAgICBT
dHJpbmcgc3RhdHVzTGluZSA9IGhlYWRlci5zdHJpcFdoaXRlU3BhY2UoKTsKKworICAgIGludCBo
dHRwVmVyc2lvbkVuZFBvc2l0aW9uID0gc3RhdHVzTGluZS5maW5kKCIgIik7CisgICAgaW50IHN0
YXR1c0NvZGVFbmRQb3NpdGlvbiA9IG5vdEZvdW5kOworCisgICAgLy8gRXh0cmFjdCB0aGUgaHR0
cCB2ZXJzaW9uCisgICAgaWYgKGh0dHBWZXJzaW9uRW5kUG9zaXRpb24gIT0gbm90Rm91bmQpIHsK
KyAgICAgICAgU3RyaW5nIGh0dHBWZXJzaW9uID0gc3RhdHVzTGluZS5sZWZ0KGh0dHBWZXJzaW9u
RW5kUG9zaXRpb24pOworICAgICAgICBzZXRIVFRQVmVyc2lvbihodHRwVmVyc2lvbi5zdHJpcFdo
aXRlU3BhY2UoKSk7CisKKyAgICAgICAgc3RhdHVzTGluZSA9IHN0YXR1c0xpbmUuc3Vic3RyaW5n
KGh0dHBWZXJzaW9uRW5kUG9zaXRpb24gKyAxKS5zdHJpcFdoaXRlU3BhY2UoKTsKKyAgICAgICAg
c3RhdHVzQ29kZUVuZFBvc2l0aW9uID0gc3RhdHVzTGluZS5maW5kKCIgIik7CisgICAgfQorCisg
ICAgLy8gRXh0cmFjdCB0aGUgaHR0cCBzdGF0dXMgdGV4dAorICAgIGlmIChzdGF0dXNDb2RlRW5k
UG9zaXRpb24gIT0gbm90Rm91bmQpIHsKKyAgICAgICAgU3RyaW5nIHN0YXR1c1RleHQgPSBzdGF0
dXNMaW5lLnN1YnN0cmluZyhzdGF0dXNDb2RlRW5kUG9zaXRpb24gKyAxKTsKKyAgICAgICAgc2V0
SFRUUFN0YXR1c1RleHQoc3RhdHVzVGV4dC5zdHJpcFdoaXRlU3BhY2UoKSk7CisgICAgfQorfQor
CitTdHJpbmcgUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1TdWdnZXN0ZWRGaWxlbmFtZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGZpbGVuYW1lRnJvbUhUVFBDb250ZW50RGlzcG9zaXRpb24oaHR0
cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50RGlzcG9zaXRpb24pKTsKK30KKwor
fQorCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317155</attachid>
            <date>2017-08-03 14:35:09 -0700</date>
            <delta_ts>2017-08-03 16:46:54 -0700</delta_ts>
            <desc>Implemented</desc>
            <filename>174654-3.diff</filename>
            <type>text/plain</type>
            <size>10836</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyZTUxYzU2YWMwNC4uNWIyMDBiN2ZmNTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAxNy0wOC0wMyAgQmFzdWtlIFN1enVraSAgPEJhc3VrZS5TdXp1a2lAc29u
eS5jb20+CisKKyAgICAgICAgW0N1cmxdIE1vdmUgcmVzcG9uc2UgcmVsYXRlZCBmZWF0dXJlcyBp
bnRvIFJlc291cmNlUmVzcG9uc2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NDY1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogcGxhdGZvcm0vQ3VybC5jbWFrZToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlSW50ZXJuYWw6OmRpZFJlY2VpdmVIZWFkZXJMaW5lKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlSW50ZXJuYWw6OmlzQXBwZW5kYWJsZUhlYWRlcik6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVzcG9uc2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtU3VnZ2VzdGVkRmls
ZW5hbWUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZVJlc3BvbnNlQ3VybC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZTo6aXNBcHBlbmRhYmxlSGVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2U6OmFwcGVuZEhUVFBIZWFkZXJGaWVsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlOjpzZXRTdGF0dXNMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2U6OnBsYXRmb3JtU3VnZ2VzdGVkRmlsZW5hbWUpOgorCiAyMDE3LTA3LTI3ICBBYXJvbiBD
aHUgIDxhYXJvbl9jaHVAYXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBWb2ljZU92ZXIgc2lsZW50
IG9yIHNraXBwaW5nIG92ZXIgdGltZSB2YWx1ZXMgb24gbWVkaWEgcGxheWVyLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3VybC5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0N1cmwuY21ha2UKaW5kZXggNzY1ZGY4MTc1NzMuLjE5YzdkNWQ1NGE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0N1cmwuY21ha2UKQEAgLTE1LDYgKzE1LDcgQEAgbGlzdChBUFBFTkQgV2Vi
Q29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL011bHRpcGFydEhhbmRsZS5j
cHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHJveHlTZXJ2ZXJDdXJsLmNwcAogICAgIHBs
YXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCisgICAgcGxhdGZvcm0v
bmV0d29yay9jdXJsL1Jlc291cmNlUmVzcG9uc2VDdXJsLmNwcAogICAgIHBsYXRmb3JtL25ldHdv
cmsvY3VybC9TU0xIYW5kbGUuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0
cmVhbUhhbmRsZUltcGxDdXJsLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9TeW5jaHJv
bm91c0xvYWRlckNsaWVudEN1cmwuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCmluZGV4IGE0YWQ4
OTM1ZjJmLi45ZjE1OWYyMGMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKQEAgLTU3OCw0OSAr
NTc4LDYgQEAgaW5saW5lIHN0YXRpYyBib29sIGlzSHR0cE5vdE1vZGlmaWVkKGludCBzdGF0dXND
b2RlKQogICAgIHJldHVybiBzdGF0dXNDb2RlID09IDMwNDsKIH0KIAotc3RhdGljIGJvb2wgaXNB
cHBlbmRhYmxlSGVhZGVyKGNvbnN0IFN0cmluZyAma2V5KQotewotICAgIHN0YXRpYyBjb25zdCBj
aGFyKiBhcHBlbmRhYmxlSGVhZGVyc1tdID0gewotICAgICAgICAiYWNjZXNzLWNvbnRyb2wtYWxs
b3ctaGVhZGVycyIsCi0gICAgICAgICJhY2Nlc3MtY29udHJvbC1hbGxvdy1tZXRob2RzIiwKLSAg
ICAgICAgImFjY2Vzcy1jb250cm9sLWFsbG93LW9yaWdpbiIsCi0gICAgICAgICJhY2Nlc3MtY29u
dHJvbC1leHBvc2UtaGVhZGVycyIsCi0gICAgICAgICJhbGxvdyIsCi0gICAgICAgICJjYWNoZS1j
b250cm9sIiwKLSAgICAgICAgImNvbm5lY3Rpb24iLAotICAgICAgICAiY29udGVudC1lbmNvZGlu
ZyIsCi0gICAgICAgICJjb250ZW50LWxhbmd1YWdlIiwKLSAgICAgICAgImlmLW1hdGNoIiwKLSAg
ICAgICAgImlmLW5vbmUtbWF0Y2giLAotICAgICAgICAia2VlcC1hbGl2ZSIsCi0gICAgICAgICJw
cmFnbWEiLAotICAgICAgICAicHJveHktYXV0aGVudGljYXRlIiwKLSAgICAgICAgInB1YmxpYyIs
Ci0gICAgICAgICJzZXJ2ZXIiLAotICAgICAgICAic2V0LWNvb2tpZSIsCi0gICAgICAgICJ0ZSIs
Ci0gICAgICAgICJ0cmFpbGVyIiwKLSAgICAgICAgInRyYW5zZmVyLWVuY29kaW5nIiwKLSAgICAg
ICAgInVwZ3JhZGUiLAotICAgICAgICAidXNlci1hZ2VudCIsCi0gICAgICAgICJ2YXJ5IiwKLSAg
ICAgICAgInZpYSIsCi0gICAgICAgICJ3YXJuaW5nIiwKLSAgICAgICAgInd3dy1hdXRoZW50aWNh
dGUiCi0gICAgfTsKLQotICAgIC8vIEN1c3RvbSBoZWFkZXJzIHN0YXJ0IHdpdGggJ1gtJywgYW5k
IG5lZWQgbm8gZnVydGhlciBjaGVja2luZy4KLSAgICBpZiAoa2V5LnN0YXJ0c1dpdGgoIngtIiwg
LyogY2FzZVNlbnNpdGl2ZSAqLyBmYWxzZSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAg
Zm9yIChhdXRvJiBoZWFkZXIgOiBhcHBlbmRhYmxlSGVhZGVycykgewotICAgICAgICBpZiAoZXF1
YWxJZ25vcmluZ0FTQ0lJQ2FzZShrZXksIGhlYWRlcikpCi0gICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIHN0YXRpYyB2b2lkIHJlbW92ZUxl
YWRpbmdBbmRUcmFpbGluZ1F1b3RlcyhTdHJpbmcmIHZhbHVlKQogewogICAgIHVuc2lnbmVkIGxl
bmd0aCA9IHZhbHVlLmxlbmd0aCgpOwpAQCAtNzAzLDM0ICs2NjAsNyBAQCB2b2lkIFJlc291cmNl
SGFuZGxlSW50ZXJuYWw6OmRpZFJlY2VpdmVIZWFkZXJMaW5lKGNvbnN0IFN0cmluZyYgaGVhZGVy
KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBhdXRvIHNwbGl0UG9zaXRp
b24gPSBoZWFkZXIuZmluZCgiOiIpOwotICAgIGlmIChzcGxpdFBvc2l0aW9uICE9IG5vdEZvdW5k
KSB7Ci0gICAgICAgIFN0cmluZyBrZXkgPSBoZWFkZXIubGVmdChzcGxpdFBvc2l0aW9uKS5zdHJp
cFdoaXRlU3BhY2UoKTsKLSAgICAgICAgU3RyaW5nIHZhbHVlID0gaGVhZGVyLnN1YnN0cmluZyhz
cGxpdFBvc2l0aW9uICsgMSkuc3RyaXBXaGl0ZVNwYWNlKCk7Ci0KLSAgICAgICAgaWYgKGlzQXBw
ZW5kYWJsZUhlYWRlcihrZXkpKQotICAgICAgICAgICAgbV9yZXNwb25zZS5hZGRIVFRQSGVhZGVy
RmllbGQoa2V5LCB2YWx1ZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcmVzcG9uc2Uu
c2V0SFRUUEhlYWRlckZpZWxkKGtleSwgdmFsdWUpOwotICAgIH0gZWxzZSBpZiAoaGVhZGVyLnN0
YXJ0c1dpdGgoIkhUVFAiLCBmYWxzZSkpIHsKLSAgICAgICAgLy8gVGhpcyBpcyB0aGUgZmlyc3Qg
bGluZSBvZiB0aGUgcmVzcG9uc2UuCi0gICAgICAgIC8vIEV4dHJhY3QgdGhlIGh0dHAgc3RhdHVz
IHRleHQgZnJvbSB0aGlzLgotICAgICAgICAvLwotICAgICAgICAvLyBJZiB0aGUgRk9MTE9XTE9D
QVRJT04gb3B0aW9uIGlzIGVuYWJsZWQgZm9yIHRoZSBjdXJsIGhhbmRsZSB0aGVuCi0gICAgICAg
IC8vIGN1cmwgd2lsbCBmb2xsb3cgdGhlIHJlZGlyZWN0aW9ucyBpbnRlcm5hbGx5LiBUaHVzIHRo
aXMgaGVhZGVyIGNhbGxiYWNrCi0gICAgICAgIC8vIHdpbGwgYmUgY2FsbGVkIG1vcmUgdGhhbiBv
bmUgdGltZSB3aXRoIHRoZSBsaW5lIHN0YXJ0aW5nICJIVFRQIiBmb3Igb25lIGpvYi4KLSAgICAg
ICAgbG9uZyBodHRwQ29kZSA9IDA7Ci0gICAgICAgIG1fY3VybEhhbmRsZS5nZXRSZXNwb25zZUNv
ZGUoaHR0cENvZGUpOwotCi0gICAgICAgIFN0cmluZyBodHRwQ29kZVN0cmluZyA9IFN0cmluZzo6
bnVtYmVyKGh0dHBDb2RlKTsKLSAgICAgICAgaW50IHN0YXR1c0NvZGVQb3MgPSBoZWFkZXIuZmlu
ZChodHRwQ29kZVN0cmluZyk7Ci0KLSAgICAgICAgaWYgKHN0YXR1c0NvZGVQb3MgIT0gbm90Rm91
bmQpIHsKLSAgICAgICAgICAgIC8vIFRoZSBzdGF0dXMgdGV4dCBpcyBhZnRlciB0aGUgc3RhdHVz
IGNvZGUuCi0gICAgICAgICAgICBTdHJpbmcgc3RhdHVzID0gaGVhZGVyLnN1YnN0cmluZyhzdGF0
dXNDb2RlUG9zICsgaHR0cENvZGVTdHJpbmcubGVuZ3RoKCkpOwotICAgICAgICAgICAgbV9yZXNw
b25zZS5zZXRIVFRQU3RhdHVzVGV4dChzdGF0dXMuc3RyaXBXaGl0ZVNwYWNlKCkpOwotICAgICAg
ICB9Ci0gICAgfQorICAgIG1fcmVzcG9uc2UuYXBwZW5kSFRUUEhlYWRlckZpZWxkKGhlYWRlcik7
CiB9CiAKIHZvaWQgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbDo6ZGlkUmVjZWl2ZUFsbEhlYWRlcnMo
bG9uZyBodHRwQ29kZSwgbG9uZyBsb25nIGNvbnRlbnRMZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVzcG9uc2UuaAppbmRl
eCAyYTQyMzJjNjY3MS4uNzRhOTIxMDg3ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVzcG9uc2UuaApAQCAtMSw1ICsxLDYg
QEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNyBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1l
bnQgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSw5ICsyNiw2IEBA
CiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiSFRUUEhlYWRlck5hbWVzLmgiCi0jaW5jbHVk
ZSAiSFRUUFBhcnNlcnMuaCIKLQogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2VCYXNlLmgiCiAK
IHR5cGVkZWYgc3RydWN0IF9DRlVSTFJlc3BvbnNlKiBDRlVSTFJlc3BvbnNlUmVmOwpAQCAtNDks
NiArNDcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFJlc3BvbnNlRmlyZWQoYm9vbCBmaXJl
ZCkgeyBtX3Jlc3BvbnNlRmlyZWQgPSBmaXJlZDsgfQogICAgIGJvb2wgcmVzcG9uc2VGaXJlZCgp
IHsgcmV0dXJuIG1fcmVzcG9uc2VGaXJlZDsgfQorICAgIHZvaWQgYXBwZW5kSFRUUEhlYWRlckZp
ZWxkKGNvbnN0IFN0cmluZyYpOwogCiAgICAgLy8gTmVlZGVkIGZvciBjb21wYXRpYmlsaXR5Lgog
ICAgIENGVVJMUmVzcG9uc2VSZWYgY2ZVUkxSZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0K
QEAgLTU2LDEwICs1NSwxMCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBS
ZXNvdXJjZVJlc3BvbnNlQmFzZTsKIAotICAgIFN0cmluZyBwbGF0Zm9ybVN1Z2dlc3RlZEZpbGVu
YW1lKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmaWxlbmFtZUZyb21IVFRQQ29udGVu
dERpc3Bvc2l0aW9uKGh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudERpc3Bv
c2l0aW9uKSk7Ci0gICAgfQorICAgIHN0YXRpYyBib29sIGlzQXBwZW5kYWJsZUhlYWRlcihjb25z
dCBTdHJpbmcgJmtleSk7CisgICAgU3RyaW5nIHBsYXRmb3JtU3VnZ2VzdGVkRmlsZW5hbWUoKSBj
b25zdDsKKworICAgIHZvaWQgc2V0U3RhdHVzTGluZShjb25zdCBTdHJpbmcmKTsKIAogICAgIGJv
b2wgbV9yZXNwb25zZUZpcmVkOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42ZmY0MmQ1ZWM0NQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3Bv
bnNlQ3VybC5jcHAKQEAgLTAsMCArMSwxMjUgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAxNyBT
b255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisqIGFyZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFVTRShDVVJMKQorI2luY2x1ZGUgIlJlc291cmNl
UmVzcG9uc2UuaCIKKworI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworYm9vbCBSZXNvdXJjZVJlc3BvbnNlOjppc0FwcGVuZGFibGVIZWFkZXIoY29uc3Qg
U3RyaW5nICZrZXkpCit7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGFwcGVuZGFibGVIZWFkZXJz
W10gPSB7CisgICAgICAgICJhY2Nlc3MtY29udHJvbC1hbGxvdy1oZWFkZXJzIiwKKyAgICAgICAg
ImFjY2Vzcy1jb250cm9sLWFsbG93LW1ldGhvZHMiLAorICAgICAgICAiYWNjZXNzLWNvbnRyb2wt
YWxsb3ctb3JpZ2luIiwKKyAgICAgICAgImFjY2Vzcy1jb250cm9sLWV4cG9zZS1oZWFkZXJzIiwK
KyAgICAgICAgImFsbG93IiwKKyAgICAgICAgImNhY2hlLWNvbnRyb2wiLAorICAgICAgICAiY29u
bmVjdGlvbiIsCisgICAgICAgICJjb250ZW50LWVuY29kaW5nIiwKKyAgICAgICAgImNvbnRlbnQt
bGFuZ3VhZ2UiLAorICAgICAgICAiaWYtbWF0Y2giLAorICAgICAgICAiaWYtbm9uZS1tYXRjaCIs
CisgICAgICAgICJrZWVwLWFsaXZlIiwKKyAgICAgICAgInByYWdtYSIsCisgICAgICAgICJwcm94
eS1hdXRoZW50aWNhdGUiLAorICAgICAgICAicHVibGljIiwKKyAgICAgICAgInNlcnZlciIsCisg
ICAgICAgICJzZXQtY29va2llIiwKKyAgICAgICAgInRlIiwKKyAgICAgICAgInRyYWlsZXIiLAor
ICAgICAgICAidHJhbnNmZXItZW5jb2RpbmciLAorICAgICAgICAidXBncmFkZSIsCisgICAgICAg
ICJ1c2VyLWFnZW50IiwKKyAgICAgICAgInZhcnkiLAorICAgICAgICAidmlhIiwKKyAgICAgICAg
Indhcm5pbmciLAorICAgICAgICAid3d3LWF1dGhlbnRpY2F0ZSIKKyAgICB9OworCisgICAgLy8g
Q3VzdG9tIGhlYWRlcnMgc3RhcnQgd2l0aCAnWC0nLCBhbmQgbmVlZCBubyBmdXJ0aGVyIGNoZWNr
aW5nLgorICAgIGlmIChrZXkuc3RhcnRzV2l0aCgieC0iLCAvKiBjYXNlU2Vuc2l0aXZlICovIGZh
bHNlKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBmb3IgKGF1dG8mIGhlYWRlciA6IGFw
cGVuZGFibGVIZWFkZXJzKSB7CisgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGtl
eSwgaGVhZGVyKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVy
biBmYWxzZTsKK30KKwordm9pZCBSZXNvdXJjZVJlc3BvbnNlOjphcHBlbmRIVFRQSGVhZGVyRmll
bGQoY29uc3QgU3RyaW5nJiBoZWFkZXIpCit7CisgICAgaW50IHNwbGl0UG9zaXN0aW9uID0gaGVh
ZGVyLmZpbmQoIjoiKTsKKyAgICBpZiAoc3BsaXRQb3Npc3Rpb24gIT0gbm90Rm91bmQpIHsKKyAg
ICAgICAgU3RyaW5nIGtleSA9IGhlYWRlci5sZWZ0KHNwbGl0UG9zaXN0aW9uKS5zdHJpcFdoaXRl
U3BhY2UoKTsKKyAgICAgICAgU3RyaW5nIHZhbHVlID0gaGVhZGVyLnN1YnN0cmluZyhzcGxpdFBv
c2lzdGlvbiArIDEpLnN0cmlwV2hpdGVTcGFjZSgpOworCisgICAgICAgIGlmIChpc0FwcGVuZGFi
bGVIZWFkZXIoa2V5KSkKKyAgICAgICAgICAgIGFkZEhUVFBIZWFkZXJGaWVsZChrZXksIHZhbHVl
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2V0SFRUUEhlYWRlckZpZWxkKGtleSwgdmFs
dWUpOworICAgIH0gZWxzZSBpZiAoaGVhZGVyLnN0YXJ0c1dpdGgoIkhUVFAiLCBmYWxzZSkpIHsK
KyAgICAgICAgLy8gVGhpcyBpcyB0aGUgZmlyc3QgbGluZSBvZiB0aGUgcmVzcG9uc2UuCisgICAg
ICAgIHNldFN0YXR1c0xpbmUoaGVhZGVyKTsKKyAgICB9Cit9CisKK3ZvaWQgUmVzb3VyY2VSZXNw
b25zZTo6c2V0U3RhdHVzTGluZShjb25zdCBTdHJpbmcmIGhlYWRlcikKK3sKKyAgICBTdHJpbmcg
c3RhdHVzTGluZSA9IGhlYWRlci5zdHJpcFdoaXRlU3BhY2UoKTsKKworICAgIGludCBodHRwVmVy
c2lvbkVuZFBvc2l0aW9uID0gc3RhdHVzTGluZS5maW5kKCIgIik7CisgICAgaW50IHN0YXR1c0Nv
ZGVFbmRQb3NpdGlvbiA9IG5vdEZvdW5kOworCisgICAgLy8gRXh0cmFjdCB0aGUgaHR0cCB2ZXJz
aW9uCisgICAgaWYgKGh0dHBWZXJzaW9uRW5kUG9zaXRpb24gIT0gbm90Rm91bmQpIHsKKyAgICAg
ICAgU3RyaW5nIGh0dHBWZXJzaW9uID0gc3RhdHVzTGluZS5sZWZ0KGh0dHBWZXJzaW9uRW5kUG9z
aXRpb24pOworICAgICAgICBzZXRIVFRQVmVyc2lvbihodHRwVmVyc2lvbi5zdHJpcFdoaXRlU3Bh
Y2UoKSk7CisKKyAgICAgICAgc3RhdHVzTGluZSA9IHN0YXR1c0xpbmUuc3Vic3RyaW5nKGh0dHBW
ZXJzaW9uRW5kUG9zaXRpb24gKyAxKS5zdHJpcFdoaXRlU3BhY2UoKTsKKyAgICAgICAgc3RhdHVz
Q29kZUVuZFBvc2l0aW9uID0gc3RhdHVzTGluZS5maW5kKCIgIik7CisgICAgfQorCisgICAgLy8g
RXh0cmFjdCB0aGUgaHR0cCBzdGF0dXMgdGV4dAorICAgIGlmIChzdGF0dXNDb2RlRW5kUG9zaXRp
b24gIT0gbm90Rm91bmQpIHsKKyAgICAgICAgU3RyaW5nIHN0YXR1c1RleHQgPSBzdGF0dXNMaW5l
LnN1YnN0cmluZyhzdGF0dXNDb2RlRW5kUG9zaXRpb24gKyAxKTsKKyAgICAgICAgc2V0SFRUUFN0
YXR1c1RleHQoc3RhdHVzVGV4dC5zdHJpcFdoaXRlU3BhY2UoKSk7CisgICAgfQorfQorCitTdHJp
bmcgUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1TdWdnZXN0ZWRGaWxlbmFtZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGZpbGVuYW1lRnJvbUhUVFBDb250ZW50RGlzcG9zaXRpb24oaHR0cEhlYWRl
ckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50RGlzcG9zaXRpb24pKTsKK30KKworfQorCisj
ZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317179</attachid>
            <date>2017-08-03 16:46:54 -0700</date>
            <delta_ts>2017-09-07 11:59:41 -0700</delta_ts>
            <desc>Implemented</desc>
            <filename>174654-4.diff</filename>
            <type>text/plain</type>
            <size>11045</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyZTUxYzU2YWMwNC4uNWIyMDBiN2ZmNTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAxNy0wOC0wMyAgQmFzdWtlIFN1enVraSAgPEJhc3VrZS5TdXp1a2lAc29u
eS5jb20+CisKKyAgICAgICAgW0N1cmxdIE1vdmUgcmVzcG9uc2UgcmVsYXRlZCBmZWF0dXJlcyBp
bnRvIFJlc291cmNlUmVzcG9uc2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NDY1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogcGxhdGZvcm0vQ3VybC5jbWFrZToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlSW50ZXJuYWw6OmRpZFJlY2VpdmVIZWFkZXJMaW5lKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlSW50ZXJuYWw6OmlzQXBwZW5kYWJsZUhlYWRlcik6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVzcG9uc2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtU3VnZ2VzdGVkRmls
ZW5hbWUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZVJlc3BvbnNlQ3VybC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZTo6aXNBcHBlbmRhYmxlSGVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2U6OmFwcGVuZEhUVFBIZWFkZXJGaWVsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlOjpzZXRTdGF0dXNMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2U6OnBsYXRmb3JtU3VnZ2VzdGVkRmlsZW5hbWUpOgorCiAyMDE3LTA3LTI3ICBBYXJvbiBD
aHUgIDxhYXJvbl9jaHVAYXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBWb2ljZU92ZXIgc2lsZW50
IG9yIHNraXBwaW5nIG92ZXIgdGltZSB2YWx1ZXMgb24gbWVkaWEgcGxheWVyLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3VybC5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0N1cmwuY21ha2UKaW5kZXggNzY1ZGY4MTc1NzMuLjE5YzdkNWQ1NGE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0N1cmwuY21ha2UKQEAgLTE1LDYgKzE1LDcgQEAgbGlzdChBUFBFTkQgV2Vi
Q29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL011bHRpcGFydEhhbmRsZS5j
cHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHJveHlTZXJ2ZXJDdXJsLmNwcAogICAgIHBs
YXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCisgICAgcGxhdGZvcm0v
bmV0d29yay9jdXJsL1Jlc291cmNlUmVzcG9uc2VDdXJsLmNwcAogICAgIHBsYXRmb3JtL25ldHdv
cmsvY3VybC9TU0xIYW5kbGUuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0
cmVhbUhhbmRsZUltcGxDdXJsLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9TeW5jaHJv
bm91c0xvYWRlckNsaWVudEN1cmwuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCmluZGV4IGE0YWQ4
OTM1ZjJmLi4yNTJkYTg5ZTFhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKQEAgLTM3LDYgKzM3
LDcgQEAKICNpbmNsdWRlICJDdXJsQ29udGV4dC5oIgogI2luY2x1ZGUgIkN1cmxKb2JNYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAj
aW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNs
dWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgpAQCAtNTc4LDQ5ICs1NzksNiBAQCBpbmxpbmUgc3Rh
dGljIGJvb2wgaXNIdHRwTm90TW9kaWZpZWQoaW50IHN0YXR1c0NvZGUpCiAgICAgcmV0dXJuIHN0
YXR1c0NvZGUgPT0gMzA0OwogfQogCi1zdGF0aWMgYm9vbCBpc0FwcGVuZGFibGVIZWFkZXIoY29u
c3QgU3RyaW5nICZrZXkpCi17Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGFwcGVuZGFibGVIZWFk
ZXJzW10gPSB7Ci0gICAgICAgICJhY2Nlc3MtY29udHJvbC1hbGxvdy1oZWFkZXJzIiwKLSAgICAg
ICAgImFjY2Vzcy1jb250cm9sLWFsbG93LW1ldGhvZHMiLAotICAgICAgICAiYWNjZXNzLWNvbnRy
b2wtYWxsb3ctb3JpZ2luIiwKLSAgICAgICAgImFjY2Vzcy1jb250cm9sLWV4cG9zZS1oZWFkZXJz
IiwKLSAgICAgICAgImFsbG93IiwKLSAgICAgICAgImNhY2hlLWNvbnRyb2wiLAotICAgICAgICAi
Y29ubmVjdGlvbiIsCi0gICAgICAgICJjb250ZW50LWVuY29kaW5nIiwKLSAgICAgICAgImNvbnRl
bnQtbGFuZ3VhZ2UiLAotICAgICAgICAiaWYtbWF0Y2giLAotICAgICAgICAiaWYtbm9uZS1tYXRj
aCIsCi0gICAgICAgICJrZWVwLWFsaXZlIiwKLSAgICAgICAgInByYWdtYSIsCi0gICAgICAgICJw
cm94eS1hdXRoZW50aWNhdGUiLAotICAgICAgICAicHVibGljIiwKLSAgICAgICAgInNlcnZlciIs
Ci0gICAgICAgICJzZXQtY29va2llIiwKLSAgICAgICAgInRlIiwKLSAgICAgICAgInRyYWlsZXIi
LAotICAgICAgICAidHJhbnNmZXItZW5jb2RpbmciLAotICAgICAgICAidXBncmFkZSIsCi0gICAg
ICAgICJ1c2VyLWFnZW50IiwKLSAgICAgICAgInZhcnkiLAotICAgICAgICAidmlhIiwKLSAgICAg
ICAgIndhcm5pbmciLAotICAgICAgICAid3d3LWF1dGhlbnRpY2F0ZSIKLSAgICB9OwotCi0gICAg
Ly8gQ3VzdG9tIGhlYWRlcnMgc3RhcnQgd2l0aCAnWC0nLCBhbmQgbmVlZCBubyBmdXJ0aGVyIGNo
ZWNraW5nLgotICAgIGlmIChrZXkuc3RhcnRzV2l0aCgieC0iLCAvKiBjYXNlU2Vuc2l0aXZlICov
IGZhbHNlKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBmb3IgKGF1dG8mIGhlYWRlciA6
IGFwcGVuZGFibGVIZWFkZXJzKSB7Ci0gICAgICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNl
KGtleSwgaGVhZGVyKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHJl
dHVybiBmYWxzZTsKLX0KLQogc3RhdGljIHZvaWQgcmVtb3ZlTGVhZGluZ0FuZFRyYWlsaW5nUXVv
dGVzKFN0cmluZyYgdmFsdWUpCiB7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gdmFsdWUubGVuZ3Ro
KCk7CkBAIC03MDMsMzQgKzY2MSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbDo6ZGlk
UmVjZWl2ZUhlYWRlckxpbmUoY29uc3QgU3RyaW5nJiBoZWFkZXIpCiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKIAotICAgIGF1dG8gc3BsaXRQb3NpdGlvbiA9IGhlYWRlci5maW5kKCI6
Iik7Ci0gICAgaWYgKHNwbGl0UG9zaXRpb24gIT0gbm90Rm91bmQpIHsKLSAgICAgICAgU3RyaW5n
IGtleSA9IGhlYWRlci5sZWZ0KHNwbGl0UG9zaXRpb24pLnN0cmlwV2hpdGVTcGFjZSgpOwotICAg
ICAgICBTdHJpbmcgdmFsdWUgPSBoZWFkZXIuc3Vic3RyaW5nKHNwbGl0UG9zaXRpb24gKyAxKS5z
dHJpcFdoaXRlU3BhY2UoKTsKLQotICAgICAgICBpZiAoaXNBcHBlbmRhYmxlSGVhZGVyKGtleSkp
Ci0gICAgICAgICAgICBtX3Jlc3BvbnNlLmFkZEhUVFBIZWFkZXJGaWVsZChrZXksIHZhbHVlKTsK
LSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9yZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQo
a2V5LCB2YWx1ZSk7Ci0gICAgfSBlbHNlIGlmIChoZWFkZXIuc3RhcnRzV2l0aCgiSFRUUCIsIGZh
bHNlKSkgewotICAgICAgICAvLyBUaGlzIGlzIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSByZXNwb25z
ZS4KLSAgICAgICAgLy8gRXh0cmFjdCB0aGUgaHR0cCBzdGF0dXMgdGV4dCBmcm9tIHRoaXMuCi0g
ICAgICAgIC8vCi0gICAgICAgIC8vIElmIHRoZSBGT0xMT1dMT0NBVElPTiBvcHRpb24gaXMgZW5h
YmxlZCBmb3IgdGhlIGN1cmwgaGFuZGxlIHRoZW4KLSAgICAgICAgLy8gY3VybCB3aWxsIGZvbGxv
dyB0aGUgcmVkaXJlY3Rpb25zIGludGVybmFsbHkuIFRodXMgdGhpcyBoZWFkZXIgY2FsbGJhY2sK
LSAgICAgICAgLy8gd2lsbCBiZSBjYWxsZWQgbW9yZSB0aGFuIG9uZSB0aW1lIHdpdGggdGhlIGxp
bmUgc3RhcnRpbmcgIkhUVFAiIGZvciBvbmUgam9iLgotICAgICAgICBsb25nIGh0dHBDb2RlID0g
MDsKLSAgICAgICAgbV9jdXJsSGFuZGxlLmdldFJlc3BvbnNlQ29kZShodHRwQ29kZSk7Ci0KLSAg
ICAgICAgU3RyaW5nIGh0dHBDb2RlU3RyaW5nID0gU3RyaW5nOjpudW1iZXIoaHR0cENvZGUpOwot
ICAgICAgICBpbnQgc3RhdHVzQ29kZVBvcyA9IGhlYWRlci5maW5kKGh0dHBDb2RlU3RyaW5nKTsK
LQotICAgICAgICBpZiAoc3RhdHVzQ29kZVBvcyAhPSBub3RGb3VuZCkgewotICAgICAgICAgICAg
Ly8gVGhlIHN0YXR1cyB0ZXh0IGlzIGFmdGVyIHRoZSBzdGF0dXMgY29kZS4KLSAgICAgICAgICAg
IFN0cmluZyBzdGF0dXMgPSBoZWFkZXIuc3Vic3RyaW5nKHN0YXR1c0NvZGVQb3MgKyBodHRwQ29k
ZVN0cmluZy5sZW5ndGgoKSk7Ci0gICAgICAgICAgICBtX3Jlc3BvbnNlLnNldEhUVFBTdGF0dXNU
ZXh0KHN0YXR1cy5zdHJpcFdoaXRlU3BhY2UoKSk7Ci0gICAgICAgIH0KLSAgICB9CisgICAgbV9y
ZXNwb25zZS5hcHBlbmRIVFRQSGVhZGVyRmllbGQoaGVhZGVyKTsKIH0KIAogdm9pZCBSZXNvdXJj
ZUhhbmRsZUludGVybmFsOjpkaWRSZWNlaXZlQWxsSGVhZGVycyhsb25nIGh0dHBDb2RlLCBsb25n
IGxvbmcgY29udGVudExlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZS5oCmluZGV4IDJhNDIzMmM2NjcxLi43NGE5
MjEwODdmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L1Jlc291cmNlUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvUmVzb3VyY2VSZXNwb25zZS5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAwNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE3IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDkgKzI2LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAK
LSNpbmNsdWRlICJIVFRQSGVhZGVyTmFtZXMuaCIKLSNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgot
CiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZUJhc2UuaCIKIAogdHlwZWRlZiBzdHJ1Y3QgX0NG
VVJMUmVzcG9uc2UqIENGVVJMUmVzcG9uc2VSZWY7CkBAIC00OSw2ICs0Nyw3IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgc2V0UmVzcG9uc2VGaXJlZChib29sIGZpcmVkKSB7IG1fcmVzcG9uc2VGaXJl
ZCA9IGZpcmVkOyB9CiAgICAgYm9vbCByZXNwb25zZUZpcmVkKCkgeyByZXR1cm4gbV9yZXNwb25z
ZUZpcmVkOyB9CisgICAgdm9pZCBhcHBlbmRIVFRQSGVhZGVyRmllbGQoY29uc3QgU3RyaW5nJik7
CiAKICAgICAvLyBOZWVkZWQgZm9yIGNvbXBhdGliaWxpdHkuCiAgICAgQ0ZVUkxSZXNwb25zZVJl
ZiBjZlVSTFJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gMDsgfQpAQCAtNTYsMTAgKzU1LDEwIEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFJlc291cmNlUmVzcG9uc2VCYXNl
OwogCi0gICAgU3RyaW5nIHBsYXRmb3JtU3VnZ2VzdGVkRmlsZW5hbWUoKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuIGZpbGVuYW1lRnJvbUhUVFBDb250ZW50RGlzcG9zaXRpb24oaHR0cEhl
YWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50RGlzcG9zaXRpb24pKTsKLSAgICB9Cisg
ICAgc3RhdGljIGJvb2wgaXNBcHBlbmRhYmxlSGVhZGVyKGNvbnN0IFN0cmluZyAma2V5KTsKKyAg
ICBTdHJpbmcgcGxhdGZvcm1TdWdnZXN0ZWRGaWxlbmFtZSgpIGNvbnN0OworCisgICAgdm9pZCBz
ZXRTdGF0dXNMaW5lKGNvbnN0IFN0cmluZyYpOwogCiAgICAgYm9vbCBtX3Jlc3BvbnNlRmlyZWQ7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jl
c291cmNlUmVzcG9uc2VDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAuLjZmZjQyZDVlYzQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVzcG9uc2VDdXJsLmNwcApAQCAtMCww
ICsxLDEyNSBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDE3IFNvbnkgSW50ZXJhY3RpdmUgRW50
ZXJ0YWlubWVudCBJbmMuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoK
KyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorCisjaWYgVVNFKENVUkwpCisjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgorCisjaW5j
bHVkZSAiSFRUUFBhcnNlcnMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitib29sIFJlc291
cmNlUmVzcG9uc2U6OmlzQXBwZW5kYWJsZUhlYWRlcihjb25zdCBTdHJpbmcgJmtleSkKK3sKKyAg
ICBzdGF0aWMgY29uc3QgY2hhciogYXBwZW5kYWJsZUhlYWRlcnNbXSA9IHsKKyAgICAgICAgImFj
Y2Vzcy1jb250cm9sLWFsbG93LWhlYWRlcnMiLAorICAgICAgICAiYWNjZXNzLWNvbnRyb2wtYWxs
b3ctbWV0aG9kcyIsCisgICAgICAgICJhY2Nlc3MtY29udHJvbC1hbGxvdy1vcmlnaW4iLAorICAg
ICAgICAiYWNjZXNzLWNvbnRyb2wtZXhwb3NlLWhlYWRlcnMiLAorICAgICAgICAiYWxsb3ciLAor
ICAgICAgICAiY2FjaGUtY29udHJvbCIsCisgICAgICAgICJjb25uZWN0aW9uIiwKKyAgICAgICAg
ImNvbnRlbnQtZW5jb2RpbmciLAorICAgICAgICAiY29udGVudC1sYW5ndWFnZSIsCisgICAgICAg
ICJpZi1tYXRjaCIsCisgICAgICAgICJpZi1ub25lLW1hdGNoIiwKKyAgICAgICAgImtlZXAtYWxp
dmUiLAorICAgICAgICAicHJhZ21hIiwKKyAgICAgICAgInByb3h5LWF1dGhlbnRpY2F0ZSIsCisg
ICAgICAgICJwdWJsaWMiLAorICAgICAgICAic2VydmVyIiwKKyAgICAgICAgInNldC1jb29raWUi
LAorICAgICAgICAidGUiLAorICAgICAgICAidHJhaWxlciIsCisgICAgICAgICJ0cmFuc2Zlci1l
bmNvZGluZyIsCisgICAgICAgICJ1cGdyYWRlIiwKKyAgICAgICAgInVzZXItYWdlbnQiLAorICAg
ICAgICAidmFyeSIsCisgICAgICAgICJ2aWEiLAorICAgICAgICAid2FybmluZyIsCisgICAgICAg
ICJ3d3ctYXV0aGVudGljYXRlIgorICAgIH07CisKKyAgICAvLyBDdXN0b20gaGVhZGVycyBzdGFy
dCB3aXRoICdYLScsIGFuZCBuZWVkIG5vIGZ1cnRoZXIgY2hlY2tpbmcuCisgICAgaWYgKGtleS5z
dGFydHNXaXRoKCJ4LSIsIC8qIGNhc2VTZW5zaXRpdmUgKi8gZmFsc2UpKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgIGZvciAoYXV0byYgaGVhZGVyIDogYXBwZW5kYWJsZUhlYWRlcnMpIHsK
KyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2Uoa2V5LCBoZWFkZXIpKQorICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lk
IFJlc291cmNlUmVzcG9uc2U6OmFwcGVuZEhUVFBIZWFkZXJGaWVsZChjb25zdCBTdHJpbmcmIGhl
YWRlcikKK3sKKyAgICBpbnQgc3BsaXRQb3Npc3Rpb24gPSBoZWFkZXIuZmluZCgiOiIpOworICAg
IGlmIChzcGxpdFBvc2lzdGlvbiAhPSBub3RGb3VuZCkgeworICAgICAgICBTdHJpbmcga2V5ID0g
aGVhZGVyLmxlZnQoc3BsaXRQb3Npc3Rpb24pLnN0cmlwV2hpdGVTcGFjZSgpOworICAgICAgICBT
dHJpbmcgdmFsdWUgPSBoZWFkZXIuc3Vic3RyaW5nKHNwbGl0UG9zaXN0aW9uICsgMSkuc3RyaXBX
aGl0ZVNwYWNlKCk7CisKKyAgICAgICAgaWYgKGlzQXBwZW5kYWJsZUhlYWRlcihrZXkpKQorICAg
ICAgICAgICAgYWRkSFRUUEhlYWRlckZpZWxkKGtleSwgdmFsdWUpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBzZXRIVFRQSGVhZGVyRmllbGQoa2V5LCB2YWx1ZSk7CisgICAgfSBlbHNlIGlm
IChoZWFkZXIuc3RhcnRzV2l0aCgiSFRUUCIsIGZhbHNlKSkgeworICAgICAgICAvLyBUaGlzIGlz
IHRoZSBmaXJzdCBsaW5lIG9mIHRoZSByZXNwb25zZS4KKyAgICAgICAgc2V0U3RhdHVzTGluZSho
ZWFkZXIpOworICAgIH0KK30KKwordm9pZCBSZXNvdXJjZVJlc3BvbnNlOjpzZXRTdGF0dXNMaW5l
KGNvbnN0IFN0cmluZyYgaGVhZGVyKQoreworICAgIFN0cmluZyBzdGF0dXNMaW5lID0gaGVhZGVy
LnN0cmlwV2hpdGVTcGFjZSgpOworCisgICAgaW50IGh0dHBWZXJzaW9uRW5kUG9zaXRpb24gPSBz
dGF0dXNMaW5lLmZpbmQoIiAiKTsKKyAgICBpbnQgc3RhdHVzQ29kZUVuZFBvc2l0aW9uID0gbm90
Rm91bmQ7CisKKyAgICAvLyBFeHRyYWN0IHRoZSBodHRwIHZlcnNpb24KKyAgICBpZiAoaHR0cFZl
cnNpb25FbmRQb3NpdGlvbiAhPSBub3RGb3VuZCkgeworICAgICAgICBTdHJpbmcgaHR0cFZlcnNp
b24gPSBzdGF0dXNMaW5lLmxlZnQoaHR0cFZlcnNpb25FbmRQb3NpdGlvbik7CisgICAgICAgIHNl
dEhUVFBWZXJzaW9uKGh0dHBWZXJzaW9uLnN0cmlwV2hpdGVTcGFjZSgpKTsKKworICAgICAgICBz
dGF0dXNMaW5lID0gc3RhdHVzTGluZS5zdWJzdHJpbmcoaHR0cFZlcnNpb25FbmRQb3NpdGlvbiAr
IDEpLnN0cmlwV2hpdGVTcGFjZSgpOworICAgICAgICBzdGF0dXNDb2RlRW5kUG9zaXRpb24gPSBz
dGF0dXNMaW5lLmZpbmQoIiAiKTsKKyAgICB9CisKKyAgICAvLyBFeHRyYWN0IHRoZSBodHRwIHN0
YXR1cyB0ZXh0CisgICAgaWYgKHN0YXR1c0NvZGVFbmRQb3NpdGlvbiAhPSBub3RGb3VuZCkgewor
ICAgICAgICBTdHJpbmcgc3RhdHVzVGV4dCA9IHN0YXR1c0xpbmUuc3Vic3RyaW5nKHN0YXR1c0Nv
ZGVFbmRQb3NpdGlvbiArIDEpOworICAgICAgICBzZXRIVFRQU3RhdHVzVGV4dChzdGF0dXNUZXh0
LnN0cmlwV2hpdGVTcGFjZSgpKTsKKyAgICB9Cit9CisKK1N0cmluZyBSZXNvdXJjZVJlc3BvbnNl
OjpwbGF0Zm9ybVN1Z2dlc3RlZEZpbGVuYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmlsZW5h
bWVGcm9tSFRUUENvbnRlbnREaXNwb3NpdGlvbihodHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5h
bWU6OkNvbnRlbnREaXNwb3NpdGlvbikpOworfQorCit9CisKKyNlbmRpZgo=
</data>
<flag name="review"
          id="337772"
          type_id="1"
          status="+"
          setter="bfulgham"
    />
    <flag name="commit-queue"
          id="337773"
          type_id="3"
          status="-"
          setter="bfulgham"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320708</attachid>
            <date>2017-09-13 16:35:03 -0700</date>
            <delta_ts>2017-09-13 23:57:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>174654-5.diff</filename>
            <type>text/plain</type>
            <size>15448</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiZmNjMmQ0NTBiZi4uOGJhMTllZWQxOTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAxNy0wOS0xMyAgQmFzdWtlIFN1enVraSAgPEJhc3VrZS5TdXp1a2lAc29u
eS5jb20+CisKKyAgICAgICAgW0N1cmxdIE1vdmUgcmVzcG9uc2UgcmVsYXRlZCBmZWF0dXJlcyBp
bnRvIFJlc291cmNlUmVzcG9uc2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NDY1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogcGxhdGZvcm0vQ3VybC5jbWFrZToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGU6OmRpZFJlY2VpdmVBbGxIZWFkZXJzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlOjpkaWRSZWNlaXZl
SGVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmlzSHR0cFJlZGlyZWN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OmlzSHR0cEF1dGhlbnRpY2F0aW9uKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OmlzSHR0cE5vdE1vZGlmaWVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OmlzQXBwZW5kYWJsZUhlYWRlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6ZGlkUmVjZWl2ZUhlYWRlckxpbmUpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybVN1Z2dlc3RlZEZpbGVu
YW1lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVz
b3VyY2VSZXNwb25zZUN1cmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2U6OmlzQXBwZW5kYWJsZUhlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlOjphcHBlbmRIVFRQSGVhZGVyRmllbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZTo6c2V0U3RhdHVzTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlOjpwbGF0Zm9ybVN1Z2dlc3RlZEZpbGVuYW1lIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OmlzUmVkaXJlY3Rpb24gY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6aXNOb3RNb2RpZmllZCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjppc1VuYXV0aG9yaXplZCBjb25zdCk6CisKIDIw
MTctMDktMDcgIEJhc3VrZSBTdXp1a2kgIDxCYXN1a2UuU3V6dWtpQHNvbnkuY29tPgogCiAgICAg
ICAgIFtDdXJsXSBCdWcgZml4IGZvciBzeW5jaHJvbm91cyB0cmFuc2ZlcgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3VybC5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0N1cmwuY21ha2UKaW5kZXggNjEzODMxMTgwNGQuLmJjMTIyMzkxOWU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0N1cmwuY21ha2UKQEAgLTE2LDYgKzE2LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29y
ZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL1Byb3h5U2VydmVyQ3VybC5jcHAK
ICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAogICAgIHBs
YXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZS5jcHAKKyAgICBw
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwCiAgICAgcGxhdGZv
cm0vbmV0d29yay9jdXJsL1NTTEhhbmRsZS5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
U29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jdXJs
L1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50Q3VybC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJs
RGVsZWdhdGUuY3BwCmluZGV4IDExYzFjYzE4NWRjLi45YWQ2ZjlhYmY5MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybERl
bGVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVz
b3VyY2VIYW5kbGVDdXJsRGVsZWdhdGUuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAKICNpbmNsdWRl
ICJDcmVkZW50aWFsU3RvcmFnZS5oIgogI2luY2x1ZGUgIkN1cmxDYWNoZU1hbmFnZXIuaCIKKyNp
bmNsdWRlICJIVFRQUGFyc2Vycy5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNp
bmNsdWRlICJNdWx0aXBhcnRIYW5kbGUuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgpA
QCAtNDAyLDk4ICs0MDMsNiBAQCBpbmxpbmUgc3RhdGljIGJvb2wgaXNIdHRwSW5mbyhpbnQgc3Rh
dHVzQ29kZSkKICAgICByZXR1cm4gMTAwIDw9IHN0YXR1c0NvZGUgJiYgc3RhdHVzQ29kZSA8IDIw
MDsKIH0KIAotaW5saW5lIHN0YXRpYyBib29sIGlzSHR0cFJlZGlyZWN0KGludCBzdGF0dXNDb2Rl
KQotewotICAgIHJldHVybiAzMDAgPD0gc3RhdHVzQ29kZSAmJiBzdGF0dXNDb2RlIDwgNDAwICYm
IHN0YXR1c0NvZGUgIT0gMzA0OwotfQotCi1pbmxpbmUgc3RhdGljIGJvb2wgaXNIdHRwQXV0aGVu
dGljYXRpb24oaW50IHN0YXR1c0NvZGUpCi17Ci0gICAgcmV0dXJuIHN0YXR1c0NvZGUgPT0gNDAx
OwotfQotCi1pbmxpbmUgc3RhdGljIGJvb2wgaXNIdHRwTm90TW9kaWZpZWQoaW50IHN0YXR1c0Nv
ZGUpCi17Ci0gICAgcmV0dXJuIHN0YXR1c0NvZGUgPT0gMzA0OwotfQotCi1zdGF0aWMgYm9vbCBp
c0FwcGVuZGFibGVIZWFkZXIoY29uc3QgU3RyaW5nICZrZXkpCi17Ci0gICAgc3RhdGljIGNvbnN0
IGNoYXIqIGFwcGVuZGFibGVIZWFkZXJzW10gPSB7Ci0gICAgICAgICJhY2Nlc3MtY29udHJvbC1h
bGxvdy1oZWFkZXJzIiwKLSAgICAgICAgImFjY2Vzcy1jb250cm9sLWFsbG93LW1ldGhvZHMiLAot
ICAgICAgICAiYWNjZXNzLWNvbnRyb2wtYWxsb3ctb3JpZ2luIiwKLSAgICAgICAgImFjY2Vzcy1j
b250cm9sLWV4cG9zZS1oZWFkZXJzIiwKLSAgICAgICAgImFsbG93IiwKLSAgICAgICAgImNhY2hl
LWNvbnRyb2wiLAotICAgICAgICAiY29ubmVjdGlvbiIsCi0gICAgICAgICJjb250ZW50LWVuY29k
aW5nIiwKLSAgICAgICAgImNvbnRlbnQtbGFuZ3VhZ2UiLAotICAgICAgICAiaWYtbWF0Y2giLAot
ICAgICAgICAiaWYtbm9uZS1tYXRjaCIsCi0gICAgICAgICJrZWVwLWFsaXZlIiwKLSAgICAgICAg
InByYWdtYSIsCi0gICAgICAgICJwcm94eS1hdXRoZW50aWNhdGUiLAotICAgICAgICAicHVibGlj
IiwKLSAgICAgICAgInNlcnZlciIsCi0gICAgICAgICJzZXQtY29va2llIiwKLSAgICAgICAgInRl
IiwKLSAgICAgICAgInRyYWlsZXIiLAotICAgICAgICAidHJhbnNmZXItZW5jb2RpbmciLAotICAg
ICAgICAidXBncmFkZSIsCi0gICAgICAgICJ1c2VyLWFnZW50IiwKLSAgICAgICAgInZhcnkiLAot
ICAgICAgICAidmlhIiwKLSAgICAgICAgIndhcm5pbmciLAotICAgICAgICAid3d3LWF1dGhlbnRp
Y2F0ZSIKLSAgICB9OwotCi0gICAgLy8gQ3VzdG9tIGhlYWRlcnMgc3RhcnQgd2l0aCAnWC0nLCBh
bmQgbmVlZCBubyBmdXJ0aGVyIGNoZWNraW5nLgotICAgIGlmIChrZXkuc3RhcnRzV2l0aCgieC0i
LCAvKiBjYXNlU2Vuc2l0aXZlICovIGZhbHNlKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAg
ICBmb3IgKGF1dG8mIGhlYWRlciA6IGFwcGVuZGFibGVIZWFkZXJzKSB7Ci0gICAgICAgIGlmIChl
cXVhbElnbm9yaW5nQVNDSUlDYXNlKGtleSwgaGVhZGVyKSkKLSAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBSZXNvdXJjZUhhbmRs
ZUN1cmxEZWxlZ2F0ZTo6ZGlkUmVjZWl2ZUhlYWRlckxpbmUoY29uc3QgU3RyaW5nJiBoZWFkZXIp
Ci17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLQotICAgIGF1dG8gc3BsaXRQb3NpdGlv
biA9IGhlYWRlci5maW5kKCI6Iik7Ci0gICAgaWYgKHNwbGl0UG9zaXRpb24gIT0gbm90Rm91bmQp
IHsKLSAgICAgICAgU3RyaW5nIGtleSA9IGhlYWRlci5sZWZ0KHNwbGl0UG9zaXRpb24pLnN0cmlw
V2hpdGVTcGFjZSgpOwotICAgICAgICBTdHJpbmcgdmFsdWUgPSBoZWFkZXIuc3Vic3RyaW5nKHNw
bGl0UG9zaXRpb24gKyAxKS5zdHJpcFdoaXRlU3BhY2UoKTsKLQotICAgICAgICBpZiAoaXNBcHBl
bmRhYmxlSGVhZGVyKGtleSkpCi0gICAgICAgICAgICByZXNwb25zZSgpLmFkZEhUVFBIZWFkZXJG
aWVsZChrZXksIHZhbHVlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzcG9uc2UoKS5z
ZXRIVFRQSGVhZGVyRmllbGQoa2V5LCB2YWx1ZSk7Ci0gICAgfSBlbHNlIGlmIChoZWFkZXIuc3Rh
cnRzV2l0aCgiSFRUUCIsIGZhbHNlKSkgewotICAgICAgICAvLyBUaGlzIGlzIHRoZSBmaXJzdCBs
aW5lIG9mIHRoZSByZXNwb25zZS4KLSAgICAgICAgLy8gRXh0cmFjdCB0aGUgaHR0cCBzdGF0dXMg
dGV4dCBmcm9tIHRoaXMuCi0gICAgICAgIC8vCi0gICAgICAgIC8vIElmIHRoZSBGT0xMT1dMT0NB
VElPTiBvcHRpb24gaXMgZW5hYmxlZCBmb3IgdGhlIGN1cmwgaGFuZGxlIHRoZW4KLSAgICAgICAg
Ly8gY3VybCB3aWxsIGZvbGxvdyB0aGUgcmVkaXJlY3Rpb25zIGludGVybmFsbHkuIFRodXMgdGhp
cyBoZWFkZXIgY2FsbGJhY2sKLSAgICAgICAgLy8gd2lsbCBiZSBjYWxsZWQgbW9yZSB0aGFuIG9u
ZSB0aW1lIHdpdGggdGhlIGxpbmUgc3RhcnRpbmcgIkhUVFAiIGZvciBvbmUgam9iLgotICAgICAg
ICBsb25nIGh0dHBDb2RlID0gMDsKLSAgICAgICAgbV9jdXJsSGFuZGxlLmdldFJlc3BvbnNlQ29k
ZShodHRwQ29kZSk7Ci0KLSAgICAgICAgU3RyaW5nIGh0dHBDb2RlU3RyaW5nID0gU3RyaW5nOjpu
dW1iZXIoaHR0cENvZGUpOwotICAgICAgICBpbnQgc3RhdHVzQ29kZVBvcyA9IGhlYWRlci5maW5k
KGh0dHBDb2RlU3RyaW5nKTsKLQotICAgICAgICBpZiAoc3RhdHVzQ29kZVBvcyAhPSBub3RGb3Vu
ZCkgewotICAgICAgICAgICAgLy8gVGhlIHN0YXR1cyB0ZXh0IGlzIGFmdGVyIHRoZSBzdGF0dXMg
Y29kZS4KLSAgICAgICAgICAgIFN0cmluZyBzdGF0dXMgPSBoZWFkZXIuc3Vic3RyaW5nKHN0YXR1
c0NvZGVQb3MgKyBodHRwQ29kZVN0cmluZy5sZW5ndGgoKSk7Ci0gICAgICAgICAgICByZXNwb25z
ZSgpLnNldEhUVFBTdGF0dXNUZXh0KHN0YXR1cy5zdHJpcFdoaXRlU3BhY2UoKSk7Ci0gICAgICAg
IH0KLSAgICB9Ci19Ci0KIHZvaWQgUmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGU6OmRpZFJlY2Vp
dmVBbGxIZWFkZXJzKGxvbmcgaHR0cENvZGUsIGxvbmcgbG9uZyBjb250ZW50TGVuZ3RoKQogewog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CkBAIC01MTIsNyArNDIxLDcgQEAgdm9pZCBSZXNv
dXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6ZGlkUmVjZWl2ZUFsbEhlYWRlcnMobG9uZyBodHRwQ29k
ZSwgbG9uZyBsb25nIGMKICAgICB9CiAKICAgICAvLyBIVFRQIHJlZGlyZWN0aW9uCi0gICAgaWYg
KGlzSHR0cFJlZGlyZWN0KGh0dHBDb2RlKSkgeworICAgIGlmIChyZXNwb25zZSgpLmlzUmVkaXJl
Y3Rpb24oKSkgewogICAgICAgICBTdHJpbmcgbG9jYXRpb24gPSByZXNwb25zZSgpLmh0dHBIZWFk
ZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6TG9jYXRpb24pOwogICAgICAgICBpZiAoIWxvY2F0aW9u
LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgVVJMIG5ld1VSTCA9IFVSTChtX2ZpcnN0UmVxdWVz
dC51cmwoKSwgbG9jYXRpb24pOwpAQCAtNTI3LDcgKzQzNiw3IEBAIHZvaWQgUmVzb3VyY2VIYW5k
bGVDdXJsRGVsZWdhdGU6OmRpZFJlY2VpdmVBbGxIZWFkZXJzKGxvbmcgaHR0cENvZGUsIGxvbmcg
bG9uZyBjCiAKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgIH0gZWxzZSBpZiAo
aXNIdHRwQXV0aGVudGljYXRpb24oaHR0cENvZGUpKSB7CisgICAgfSBlbHNlIGlmIChyZXNwb25z
ZSgpLmlzVW5hdXRob3JpemVkKCkpIHsKICAgICAgICAgUHJvdGVjdGlvblNwYWNlIHByb3RlY3Rp
b25TcGFjZTsKICAgICAgICAgaWYgKGdldFByb3RlY3Rpb25TcGFjZShyZXNwb25zZSgpLCBwcm90
ZWN0aW9uU3BhY2UpKSB7CiAgICAgICAgICAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWw7CkBAIC01
NDIsNyArNDUxLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6ZGlkUmVjZWl2
ZUFsbEhlYWRlcnMobG9uZyBodHRwQ29kZSwgbG9uZyBsb25nIGMKICAgICByZXNwb25zZSgpLnNl
dFJlc3BvbnNlRmlyZWQodHJ1ZSk7CiAKICAgICBpZiAobV9oYW5kbGUtPmNsaWVudCgpKSB7Ci0g
ICAgICAgIGlmIChpc0h0dHBOb3RNb2RpZmllZChodHRwQ29kZSkpIHsKKyAgICAgICAgaWYgKHJl
c3BvbnNlKCkuaXNOb3RNb2RpZmllZCgpKSB7CiAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHVy
bCA9IG1fZmlyc3RSZXF1ZXN0LnVybCgpLnN0cmluZygpOwogICAgICAgICAgICAgaWYgKEN1cmxD
YWNoZU1hbmFnZXI6OmdldEluc3RhbmNlKCkuZ2V0Q2FjaGVkUmVzcG9uc2UodXJsLCByZXNwb25z
ZSgpKSkgewogICAgICAgICAgICAgICAgIGlmIChtX2FkZGVkQ2FjaGVWYWxpZGF0aW9uSGVhZGVy
cykgewpAQCAtODc4LDEzICs3ODcsMTcgQEAgc2l6ZV90IFJlc291cmNlSGFuZGxlQ3VybERlbGVn
YXRlOjpkaWRSZWNlaXZlSGVhZGVyKFN0cmluZyYmIGhlYWRlcikKICAgICAgICAgICAgIH0pOwog
ICAgICAgICB9CiAgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gSWYgdGhlIEZPTExPV0xPQ0FUSU9O
IG9wdGlvbiBpcyBlbmFibGVkIGZvciB0aGUgY3VybCBoYW5kbGUgdGhlbgorICAgICAgICAvLyBj
dXJsIHdpbGwgZm9sbG93IHRoZSByZWRpcmVjdGlvbnMgaW50ZXJuYWxseS4gVGh1cyB0aGlzIGhl
YWRlciBjYWxsYmFjaworICAgICAgICAvLyB3aWxsIGJlIGNhbGxlZCBtb3JlIHRoYW4gb25lIHRp
bWUgd2l0aCB0aGUgbGluZSBzdGFydGluZyAiSFRUUCIgZm9yIG9uZSBqb2IuCiAgICAgICAgIGlm
IChpc01haW5UaHJlYWQoKSkKLSAgICAgICAgICAgIGRpZFJlY2VpdmVIZWFkZXJMaW5lKGhlYWRl
cik7CisgICAgICAgICAgICByZXNwb25zZSgpLmFwcGVuZEhUVFBIZWFkZXJGaWVsZChoZWFkZXIp
OwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaGVhZGVyID0gaGVhZGVyLmlzb2xhdGVkQ29weSgpIF0g
eworICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBjb3B5SGVhZGVyID0gaGVhZGVyLmlzb2xhdGVkQ29weSgpIF0gewogICAgICAgICAg
ICAgICAgIGlmICghcHJvdGVjdGVkVGhpcy0+bV9oYW5kbGUpCiAgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaWRSZWNlaXZlSGVhZGVy
TGluZShoZWFkZXIpOworCisgICAgICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+cmVzcG9uc2Uo
KS5hcHBlbmRIVFRQSGVhZGVyRmllbGQoY29weUhlYWRlcik7CiAgICAgICAgICAgICB9KTsKICAg
ICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlLmgKaW5kZXggNjU2
ODhiN2Q0YmMuLjNiZWQ0OWEyNTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGUu
aApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgTkFWRVIgQ29ycC4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNyBTb255IEludGVyYWN0
aXZlIEVudGVydGFpbm1lbnQgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC03NCw3ICs3NSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXR1cEF1dGhlbnRpY2F0aW9uKCk7
CiAgICAgYm9vbCBnZXRQcm90ZWN0aW9uU3BhY2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFBy
b3RlY3Rpb25TcGFjZSYpOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlSGVhZGVyTGluZShjb25zdCBT
dHJpbmcmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVBbGxIZWFkZXJzKGxvbmcgaHR0cENvZGUsIGxv
bmcgbG9uZyBjb250ZW50TGVuZ3RoKTsKICAgICB2b2lkIGRpZFJlY2VpdmVDb250ZW50RGF0YShU
aHJlYWRTYWZlRGF0YUJ1ZmZlcik7CiAgICAgdm9pZCBoYW5kbGVMb2NhbFJlY2VpdmVSZXNwb25z
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jl
c291cmNlUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9S
ZXNvdXJjZVJlc3BvbnNlLmgKaW5kZXggMmE0MjMyYzY2NzEuLmM3YmE1NGE2NjUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25z
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJl
c3BvbnNlLmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgU29ueSBJ
bnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjUsOSArMjYsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkhUVFBI
ZWFkZXJOYW1lcy5oIgotI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCi0KICNpbmNsdWRlICJSZXNv
dXJjZVJlc3BvbnNlQmFzZS5oIgogCiB0eXBlZGVmIHN0cnVjdCBfQ0ZVUkxSZXNwb25zZSogQ0ZV
UkxSZXNwb25zZVJlZjsKQEAgLTUwLDE2ICs0OCwyMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRS
ZXNwb25zZUZpcmVkKGJvb2wgZmlyZWQpIHsgbV9yZXNwb25zZUZpcmVkID0gZmlyZWQ7IH0KICAg
ICBib29sIHJlc3BvbnNlRmlyZWQoKSB7IHJldHVybiBtX3Jlc3BvbnNlRmlyZWQ7IH0KIAorICAg
IHZvaWQgYXBwZW5kSFRUUEhlYWRlckZpZWxkKGNvbnN0IFN0cmluZyYpOworCisgICAgYm9vbCBp
c1JlZGlyZWN0aW9uKCkgY29uc3Q7CisgICAgYm9vbCBpc05vdE1vZGlmaWVkKCkgY29uc3Q7Cisg
ICAgYm9vbCBpc1VuYXV0aG9yaXplZCgpIGNvbnN0OworCiAgICAgLy8gTmVlZGVkIGZvciBjb21w
YXRpYmlsaXR5LgogICAgIENGVVJMUmVzcG9uc2VSZWYgY2ZVUkxSZXNwb25zZSgpIGNvbnN0IHsg
cmV0dXJuIDA7IH0KIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUmVzb3VyY2VSZXNwb25z
ZUJhc2U7CiAKLSAgICBTdHJpbmcgcGxhdGZvcm1TdWdnZXN0ZWRGaWxlbmFtZSgpIGNvbnN0Ci0g
ICAgewotICAgICAgICByZXR1cm4gZmlsZW5hbWVGcm9tSFRUUENvbnRlbnREaXNwb3NpdGlvbiho
dHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnREaXNwb3NpdGlvbikpOwotICAg
IH0KKyAgICBzdGF0aWMgYm9vbCBpc0FwcGVuZGFibGVIZWFkZXIoY29uc3QgU3RyaW5nICZrZXkp
OworICAgIFN0cmluZyBwbGF0Zm9ybVN1Z2dlc3RlZEZpbGVuYW1lKCkgY29uc3Q7CisKKyAgICB2
b2lkIHNldFN0YXR1c0xpbmUoY29uc3QgU3RyaW5nJik7CiAKICAgICBib29sIG1fcmVzcG9uc2VG
aXJlZDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL1Jlc291cmNlUmVzcG9uc2VDdXJsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMC4uZTkzYTVlNGU4NDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwCkBA
IC0wLDAgKzEsMTQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IFNvbnkgSW50ZXJhY3Rp
dmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisK
KyNpZiBVU0UoQ1VSTCkKKyNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCisKKyNpbmNsdWRl
ICJIVFRQUGFyc2Vycy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Jvb2wgUmVzb3VyY2VS
ZXNwb25zZTo6aXNBcHBlbmRhYmxlSGVhZGVyKGNvbnN0IFN0cmluZyAma2V5KQoreworICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBhcHBlbmRhYmxlSGVhZGVyc1tdID0geworICAgICAgICAiYWNjZXNz
LWNvbnRyb2wtYWxsb3ctaGVhZGVycyIsCisgICAgICAgICJhY2Nlc3MtY29udHJvbC1hbGxvdy1t
ZXRob2RzIiwKKyAgICAgICAgImFjY2Vzcy1jb250cm9sLWFsbG93LW9yaWdpbiIsCisgICAgICAg
ICJhY2Nlc3MtY29udHJvbC1leHBvc2UtaGVhZGVycyIsCisgICAgICAgICJhbGxvdyIsCisgICAg
ICAgICJjYWNoZS1jb250cm9sIiwKKyAgICAgICAgImNvbm5lY3Rpb24iLAorICAgICAgICAiY29u
dGVudC1lbmNvZGluZyIsCisgICAgICAgICJjb250ZW50LWxhbmd1YWdlIiwKKyAgICAgICAgImlm
LW1hdGNoIiwKKyAgICAgICAgImlmLW5vbmUtbWF0Y2giLAorICAgICAgICAia2VlcC1hbGl2ZSIs
CisgICAgICAgICJwcmFnbWEiLAorICAgICAgICAicHJveHktYXV0aGVudGljYXRlIiwKKyAgICAg
ICAgInB1YmxpYyIsCisgICAgICAgICJzZXJ2ZXIiLAorICAgICAgICAic2V0LWNvb2tpZSIsCisg
ICAgICAgICJ0ZSIsCisgICAgICAgICJ0cmFpbGVyIiwKKyAgICAgICAgInRyYW5zZmVyLWVuY29k
aW5nIiwKKyAgICAgICAgInVwZ3JhZGUiLAorICAgICAgICAidXNlci1hZ2VudCIsCisgICAgICAg
ICJ2YXJ5IiwKKyAgICAgICAgInZpYSIsCisgICAgICAgICJ3YXJuaW5nIiwKKyAgICAgICAgInd3
dy1hdXRoZW50aWNhdGUiCisgICAgfTsKKworICAgIC8vIEN1c3RvbSBoZWFkZXJzIHN0YXJ0IHdp
dGggJ1gtJywgYW5kIG5lZWQgbm8gZnVydGhlciBjaGVja2luZy4KKyAgICBpZiAoa2V5LnN0YXJ0
c1dpdGgoIngtIiwgLyogY2FzZVNlbnNpdGl2ZSAqLyBmYWxzZSkpCisgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgZm9yIChhdXRvJiBoZWFkZXIgOiBhcHBlbmRhYmxlSGVhZGVycykgeworICAg
ICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShrZXksIGhlYWRlcikpCisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgUmVz
b3VyY2VSZXNwb25zZTo6YXBwZW5kSFRUUEhlYWRlckZpZWxkKGNvbnN0IFN0cmluZyYgaGVhZGVy
KQoreworICAgIGludCBzcGxpdFBvc2lzdGlvbiA9IGhlYWRlci5maW5kKCI6Iik7CisgICAgaWYg
KHNwbGl0UG9zaXN0aW9uICE9IG5vdEZvdW5kKSB7CisgICAgICAgIFN0cmluZyBrZXkgPSBoZWFk
ZXIubGVmdChzcGxpdFBvc2lzdGlvbikuc3RyaXBXaGl0ZVNwYWNlKCk7CisgICAgICAgIFN0cmlu
ZyB2YWx1ZSA9IGhlYWRlci5zdWJzdHJpbmcoc3BsaXRQb3Npc3Rpb24gKyAxKS5zdHJpcFdoaXRl
U3BhY2UoKTsKKworICAgICAgICBpZiAoaXNBcHBlbmRhYmxlSGVhZGVyKGtleSkpCisgICAgICAg
ICAgICBhZGRIVFRQSGVhZGVyRmllbGQoa2V5LCB2YWx1ZSk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIHNldEhUVFBIZWFkZXJGaWVsZChrZXksIHZhbHVlKTsKKyAgICB9IGVsc2UgaWYgKGhl
YWRlci5zdGFydHNXaXRoKCJIVFRQIiwgZmFsc2UpKSB7CisgICAgICAgIC8vIFRoaXMgaXMgdGhl
IGZpcnN0IGxpbmUgb2YgdGhlIHJlc3BvbnNlLgorICAgICAgICBzZXRTdGF0dXNMaW5lKGhlYWRl
cik7CisgICAgfQorfQorCit2b2lkIFJlc291cmNlUmVzcG9uc2U6OnNldFN0YXR1c0xpbmUoY29u
c3QgU3RyaW5nJiBoZWFkZXIpCit7CisgICAgU3RyaW5nIHN0YXR1c0xpbmUgPSBoZWFkZXIuc3Ry
aXBXaGl0ZVNwYWNlKCk7CisKKyAgICBpbnQgaHR0cFZlcnNpb25FbmRQb3NpdGlvbiA9IHN0YXR1
c0xpbmUuZmluZCgiICIpOworICAgIGludCBzdGF0dXNDb2RlRW5kUG9zaXRpb24gPSBub3RGb3Vu
ZDsKKworICAgIC8vIEV4dHJhY3QgdGhlIGh0dHAgdmVyc2lvbgorICAgIGlmIChodHRwVmVyc2lv
bkVuZFBvc2l0aW9uICE9IG5vdEZvdW5kKSB7CisgICAgICAgIFN0cmluZyBodHRwVmVyc2lvbiA9
IHN0YXR1c0xpbmUubGVmdChodHRwVmVyc2lvbkVuZFBvc2l0aW9uKTsKKyAgICAgICAgc2V0SFRU
UFZlcnNpb24oaHR0cFZlcnNpb24uc3RyaXBXaGl0ZVNwYWNlKCkpOworCisgICAgICAgIHN0YXR1
c0xpbmUgPSBzdGF0dXNMaW5lLnN1YnN0cmluZyhodHRwVmVyc2lvbkVuZFBvc2l0aW9uICsgMSku
c3RyaXBXaGl0ZVNwYWNlKCk7CisgICAgICAgIHN0YXR1c0NvZGVFbmRQb3NpdGlvbiA9IHN0YXR1
c0xpbmUuZmluZCgiICIpOworICAgIH0KKworICAgIC8vIEV4dHJhY3QgdGhlIGh0dHAgc3RhdHVz
IHRleHQKKyAgICBpZiAoc3RhdHVzQ29kZUVuZFBvc2l0aW9uICE9IG5vdEZvdW5kKSB7CisgICAg
ICAgIFN0cmluZyBzdGF0dXNUZXh0ID0gc3RhdHVzTGluZS5zdWJzdHJpbmcoc3RhdHVzQ29kZUVu
ZFBvc2l0aW9uICsgMSk7CisgICAgICAgIHNldEhUVFBTdGF0dXNUZXh0KHN0YXR1c1RleHQuc3Ry
aXBXaGl0ZVNwYWNlKCkpOworICAgIH0KK30KKworU3RyaW5nIFJlc291cmNlUmVzcG9uc2U6OnBs
YXRmb3JtU3VnZ2VzdGVkRmlsZW5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBmaWxlbmFtZUZy
b21IVFRQQ29udGVudERpc3Bvc2l0aW9uKGh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6
Q29udGVudERpc3Bvc2l0aW9uKSk7Cit9CisKK2Jvb2wgUmVzb3VyY2VSZXNwb25zZTo6aXNSZWRp
cmVjdGlvbigpIGNvbnN0Cit7CisgICAgYXV0byBzdGF0dXNDb2RlID0gaHR0cFN0YXR1c0NvZGUo
KTsKKyAgICByZXR1cm4gKDMwMCA8PSBzdGF0dXNDb2RlKSAmJiAoc3RhdHVzQ29kZSA8IDQwMCkg
JiYgKHN0YXR1c0NvZGUgIT0gMzA0KTsKK30KKworYm9vbCBSZXNvdXJjZVJlc3BvbnNlOjppc05v
dE1vZGlmaWVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gKGh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0
KTsKK30KKworYm9vbCBSZXNvdXJjZVJlc3BvbnNlOjppc1VuYXV0aG9yaXplZCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIChodHRwU3RhdHVzQ29kZSgpID09IDQwMSk7Cit9CisKK30KKworI2VuZGlm
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>