<?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>176906</bug_id>
          
          <creation_ts>2017-09-14 08:33:41 -0700</creation_ts>
          <short_desc>[Curl] Replace the implementation with NetworkLoadMetrics</short_desc>
          <delta_ts>2017-09-27 12:27:25 -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>
          
          
          <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>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>galpeter</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1348763</commentid>
    <comment_count>0</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2017-09-14 08:33:41 -0700</bug_when>
    <thetext>Web timing related information gathering is redundant in Curl port. We replace them with NetworkLoadMetrics class and set the network load metrics correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348768</commentid>
    <comment_count>1</comment_count>
      <attachid>320770</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2017-09-14 08:45:05 -0700</bug_when>
    <thetext>Created attachment 320770
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348863</commentid>
    <comment_count>2</comment_count>
      <attachid>320770</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-14 10:59:10 -0700</bug_when>
    <thetext>Comment on attachment 320770
patch

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

&gt; Source/WebCore/platform/network/curl/CurlContext.h:294
&gt; +    CURLcode getTimes(double&amp;, double&amp;, double&amp;, double&amp;, double&amp;) const;

We&apos;re trying to move away from passing return value references in as parameters.  Let&apos;s make this be a function that takes no parameters and returns a std::optional&lt;NetworkLoadMetrics&gt; or if you actually need the code a WTF::Expected&lt;NetworkLoadMetrics, CURLcode&gt;.  The functions above it could use the same improvement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348897</commentid>
    <comment_count>3</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-14 11:43:30 -0700</bug_when>
    <thetext>Other than that this looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348943</commentid>
    <comment_count>4</comment_count>
      <attachid>320804</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2017-09-14 13:13:55 -0700</bug_when>
    <thetext>Created attachment 320804
Fixed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348944</commentid>
    <comment_count>5</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-14 13:15:43 -0700</bug_when>
    <thetext>Attachment 320804 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348954</commentid>
    <comment_count>6</comment_count>
      <attachid>320804</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-14 13:25:12 -0700</bug_when>
    <thetext>Comment on attachment 320804
Fixed

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

&gt; Source/WebCore/platform/network/curl/CurlContext.cpp:590
&gt; +std::optional&lt;long&gt; CurlHandle::getPrimaryPort()

Ports are uint16_t&apos;s.  It might be worth range checking and returning a std::optional&lt;uint16_t&gt;

&gt; Source/WebCore/platform/network/curl/CurlDownload.cpp:186
&gt; +        if (*httpCode &gt;= 200 &amp;&amp; *httpCode &lt; 300) {

This is now unchecked use of a std::optional.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349016</commentid>
    <comment_count>7</comment_count>
      <attachid>320824</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2017-09-14 14:31:37 -0700</bug_when>
    <thetext>Created attachment 320824
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349120</commentid>
    <comment_count>8</comment_count>
      <attachid>320824</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-14 17:29:50 -0700</bug_when>
    <thetext>Comment on attachment 320824
patch

Clearing flags on attachment: 320824

Committed r222068: &lt;http://trac.webkit.org/changeset/222068&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349121</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-14 17:29:52 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353396</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:27:25 -0700</bug_when>
    <thetext>&lt;rdar://problem/34693311&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320770</attachid>
            <date>2017-09-14 08:45:05 -0700</date>
            <delta_ts>2017-09-14 13:13:55 -0700</delta_ts>
            <desc>patch</desc>
            <filename>176906-1.diff</filename>
            <type>text/plain</type>
            <size>8946</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkN2ZlZjYyYzliOC4uNmRmYWNhNTBjMzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNCBAQAorMjAxNy0wOS0xNCAgQmFzdWtlIFN1enVraSAgPEJhc3VrZS5TdXp1a2lAc29u
eS5jb20+CisKKyAgICAgICAgW0N1cmxdIFJlcGxhY2UgdGhlIGltcGxlbWVudGF0aW9uIHdpdGgg
TmV0d29ya0xvYWRNZXRyaWNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzY5MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDdXJsSGFuZGxlOjpnZXRUaW1lcyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDdXJsSGFuZGxlOjpnZXRUaW1lcyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
dXJsL1Jlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlQ3VybERlbGVnYXRlOjpkaXNwYXRjaFN5bmNocm9ub3VzSm9iKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlOjpub3RpZnlGaW5pc2gpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGU6OmRpZEZpbmlzaCk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6Z2V0TmV0d29y
a0xvYWRNZXRyaWNzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ3VybERlbGVn
YXRlOjpzZXRXZWJUaW1pbmdzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZTo6c2V0RGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcyk6CisKIDIwMTctMDkt
MTQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0pT
Q10gQWRkIFByaXZhdGVTeW1ib2xNb2RlOjp7SW5jbHVkZSxFeGNsdWRlfSBmb3IgUHJvcGVydHlO
YW1lQXJyYXkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybENvbnRleHQuY3BwCmluZGV4IDdjYjg0ZjhmNWEwLi45MjM4MzYyMDNjYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3Bw
CkBAIC02MzMsNyArNjMzLDcgQEAgQ1VSTGNvZGUgQ3VybEhhbmRsZTo6Z2V0SHR0cEF1dGhBdmFp
bChsb25nJiBodHRwQXV0aEF2YWlsKQogICAgIHJldHVybiBlcnJDZDsKIH0KIAotQ1VSTGNvZGUg
Q3VybEhhbmRsZTo6Z2V0VGltZXMoZG91YmxlJiBuYW1lbG9va3VwLCBkb3VibGUmIGNvbm5lY3Qs
IGRvdWJsZSYgYXBwY29ubmVjdCwgZG91YmxlJiBwcmV0cmFuc2ZlcikKK0NVUkxjb2RlIEN1cmxI
YW5kbGU6OmdldFRpbWVzKGRvdWJsZSYgbmFtZWxvb2t1cCwgZG91YmxlJiBjb25uZWN0LCBkb3Vi
bGUmIGFwcGNvbm5lY3QsIGRvdWJsZSYgcHJldHJhbnNmZXIsIGRvdWJsZSYgc3RhcnR0cmFuc2Zl
cikgY29uc3QKIHsKICAgICBDVVJMY29kZSBlcnJDZCA9IENVUkxFX0ZBSUxFRF9JTklUOwogCkBA
IC02NTYsNiArNjU2LDEwIEBAIENVUkxjb2RlIEN1cmxIYW5kbGU6OmdldFRpbWVzKGRvdWJsZSYg
bmFtZWxvb2t1cCwgZG91YmxlJiBjb25uZWN0LCBkb3VibGUmIGFwcGNvCiAgICAgaWYgKGVyckNk
ICE9IENVUkxFX09LKQogICAgICAgICByZXR1cm4gZXJyQ2Q7CiAKKyAgICBlcnJDZCA9IGN1cmxf
ZWFzeV9nZXRpbmZvKG1faGFuZGxlLCBDVVJMSU5GT19TVEFSVFRSQU5TRkVSX1RJTUUsICZzdGFy
dHRyYW5zZmVyKTsKKyAgICBpZiAoZXJyQ2QgIT0gQ1VSTEVfT0spCisgICAgICAgIHJldHVybiBl
cnJDZDsKKwogICAgIHJldHVybiBlcnJDZDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuaAppbmRleCBjNDRjZjYyOTI0Yi4uZjQw
NDdmMmZhNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsQ29udGV4dC5oCkBAIC0yOTEsNyArMjkxLDcgQEAgcHVibGljOgogICAgIENVUkxjb2Rl
IGdldFJlc3BvbnNlQ29kZShsb25nJik7CiAgICAgQ1VSTGNvZGUgZ2V0Q29udGVudExlbmdodERv
d25sb2FkKGxvbmcgbG9uZyYpOwogICAgIENVUkxjb2RlIGdldEh0dHBBdXRoQXZhaWwobG9uZyYp
OwotICAgIENVUkxjb2RlIGdldFRpbWVzKGRvdWJsZSYsIGRvdWJsZSYsIGRvdWJsZSYsIGRvdWJs
ZSYpOworICAgIENVUkxjb2RlIGdldFRpbWVzKGRvdWJsZSYsIGRvdWJsZSYsIGRvdWJsZSYsIGRv
dWJsZSYsIGRvdWJsZSYpIGNvbnN0OwogCiAgICAgc3RhdGljIGxvbmcgbG9uZyBtYXhDdXJsT2Zm
VCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlLmNwcAppbmRleCA3ZjMwMTM2
NmNlMi4uYjliNjUwOGEwNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlLmNw
cApAQCAtMTY0LDE0ICsxNjQsNiBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlOjpk
aXNwYXRjaFN5bmNocm9ub3VzSm9iKCkKICAgICAvLyBjdXJsX2Vhc3lfcGVyZm9ybSBibG9ja3Mg
dW50aWwgdGhlIHRyYW5zZmVyIGlzIGZpbmlzaGVkLgogICAgIENVUkxjb2RlIHJldCA9IG1fY3Vy
bEhhbmRsZS5wZXJmb3JtKCk7CiAKLSAgICBkb3VibGUgcHJldHJhbnNmZXJUaW1lID0gMDsKLSAg
ICBkb3VibGUgZG5zTG9va3VwVGltZSA9IDA7Ci0gICAgZG91YmxlIGNvbm5lY3RUaW1lID0gMDsK
LSAgICBkb3VibGUgYXBwQ29ubmVjdFRpbWUgPSAwOwotCi0gICAgbV9jdXJsSGFuZGxlLmdldFRp
bWVzKHByZXRyYW5zZmVyVGltZSwgZG5zTG9va3VwVGltZSwgY29ubmVjdFRpbWUsIGFwcENvbm5l
Y3RUaW1lKTsKLSAgICBzZXRXZWJUaW1pbmdzKHByZXRyYW5zZmVyVGltZSwgZG5zTG9va3VwVGlt
ZSwgY29ubmVjdFRpbWUsIGFwcENvbm5lY3RUaW1lKTsKLQogICAgIGlmIChyZXQgIT0gQ1VSTEVf
T0spCiAgICAgICAgIG5vdGlmeUZhaWwoKTsKICAgICBlbHNlCkBAIC0yNzcsMjAgKzI2OSwxNSBA
QCB2b2lkIFJlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlOjpzZXR1cFJlcXVlc3QoKQogCiB2b2lk
IFJlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlOjpub3RpZnlGaW5pc2goKQogewotICAgIGRvdWJs
ZSBwcmV0cmFuc2ZlclRpbWUgPSAwOwotICAgIGRvdWJsZSBkbnNMb29rdXBUaW1lID0gMDsKLSAg
ICBkb3VibGUgY29ubmVjdFRpbWUgPSAwOwotICAgIGRvdWJsZSBhcHBDb25uZWN0VGltZSA9IDA7
Ci0KLSAgICBtX2N1cmxIYW5kbGUuZ2V0VGltZXMocHJldHJhbnNmZXJUaW1lLCBkbnNMb29rdXBU
aW1lLCBjb25uZWN0VGltZSwgYXBwQ29ubmVjdFRpbWUpOworICAgIE5ldHdvcmtMb2FkTWV0cmlj
cyBuZXR3b3JrTG9hZE1ldHJpY3MgPSBnZXROZXR3b3JrTG9hZE1ldHJpY3MoKTsKIAogICAgIGlm
IChpc01haW5UaHJlYWQoKSkKLSAgICAgICAgZGlkRmluaXNoKHByZXRyYW5zZmVyVGltZSwgZG5z
TG9va3VwVGltZSwgY29ubmVjdFRpbWUsIGFwcENvbm5lY3RUaW1lKTsKKyAgICAgICAgZGlkRmlu
aXNoKG5ldHdvcmtMb2FkTWV0cmljcyk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcHJldHJhbnNmZXJUaW1lLCBk
bnNMb29rdXBUaW1lLCBjb25uZWN0VGltZSwgYXBwQ29ubmVjdFRpbWVdIHsKKyAgICAgICAgY2Fs
bE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtZXRyaWNzID0g
bmV0d29ya0xvYWRNZXRyaWNzLmlzb2xhdGVkQ29weSgpXSB7CiAgICAgICAgICAgICBpZiAoIXBy
b3RlY3RlZFRoaXMtPm1faGFuZGxlKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIHByb3RlY3RlZFRoaXMtPmRpZEZpbmlzaChwcmV0cmFuc2ZlclRpbWUsIGRuc0xvb2t1cFRp
bWUsIGNvbm5lY3RUaW1lLCBhcHBDb25uZWN0VGltZSk7CisgICAgICAgICAgICBwcm90ZWN0ZWRU
aGlzLT5kaWRGaW5pc2gobWV0cmljcyk7CiAgICAgICAgIH0pOwogICAgIH0KIH0KQEAgLTUyMSw5
ICs1MDgsOSBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlOjpwcmVwYXJlU2VuZERh
dGEoY2hhciogYnVmZmVyLCBzaXplX3QgYmxvY2tTaXplLAogICAgIG1fd29ya2VyVGhyZWFkQ29u
ZGl0aW9uVmFyaWFibGUubm90aWZ5T25lKCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGVDdXJs
RGVsZWdhdGU6OmRpZEZpbmlzaChkb3VibGUgcHJldHJhbnNmZXJUaW1lLCBkb3VibGUgZG5zTG9v
a3VwVGltZSwgZG91YmxlIGNvbm5lY3RUaW1lLCBkb3VibGUgYXBwQ29ubmVjdFRpbWUpCit2b2lk
IFJlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlOjpkaWRGaW5pc2goTmV0d29ya0xvYWRNZXRyaWNz
IG5ldHdvcmtMb2FkTWV0cmljcykKIHsKLSAgICBzZXRXZWJUaW1pbmdzKHByZXRyYW5zZmVyVGlt
ZSwgZG5zTG9va3VwVGltZSwgY29ubmVjdFRpbWUsIGFwcENvbm5lY3RUaW1lKTsKKyAgICByZXNw
b25zZSgpLnNldERlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MobmV0d29ya0xvYWRNZXRyaWNz
KTsKIAogICAgIGlmICghbV9oYW5kbGUpCiAgICAgICAgIHJldHVybjsKQEAgLTcyMSwxOSArNzA4
LDMzIEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGU6OmFwcGx5QXV0aGVudGljYXRp
b24oKQogICAgIG1fY3VybEhhbmRsZS5zZXRIdHRwQXV0aFVzZXJQYXNzKHVzZXIsIHBhc3N3b3Jk
KTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6c2V0V2ViVGltaW5ncyhk
b3VibGUgcHJldHJhbnNmZXJUaW1lLCBkb3VibGUgZG5zTG9va3VwVGltZSwgZG91YmxlIGNvbm5l
Y3RUaW1lLCBkb3VibGUgYXBwQ29ubmVjdFRpbWUpCitOZXR3b3JrTG9hZE1ldHJpY3MgUmVzb3Vy
Y2VIYW5kbGVDdXJsRGVsZWdhdGU6OmdldE5ldHdvcmtMb2FkTWV0cmljcygpCiB7Ci0gICAgcmVz
cG9uc2UoKS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKCkuZG9tYWluTG9va3VwU3RhcnQg
PSBTZWNvbmRzKDApOwotICAgIHJlc3BvbnNlKCkuZGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmlj
cygpLmRvbWFpbkxvb2t1cEVuZCA9IFNlY29uZHMoZG5zTG9va3VwVGltZSk7CisgICAgZG91Ymxl
IG5hbWVMb29rdXAgPSAwLjA7CisgICAgZG91YmxlIGNvbm5lY3QgPSAwLjA7CisgICAgZG91Ymxl
IGFwcENvbm5lY3QgPSAwLjA7CisgICAgZG91YmxlIHByZVRyYW5zZmVyID0gMC4wOworICAgIGRv
dWJsZSBzdGFydFRyYW5zZmVyID0gMC4wOworCisgICAgbV9jdXJsSGFuZGxlLmdldFRpbWVzKG5h
bWVMb29rdXAsIGNvbm5lY3QsIGFwcENvbm5lY3QsIHByZVRyYW5zZmVyLCBzdGFydFRyYW5zZmVy
KTsKIAotICAgIHJlc3BvbnNlKCkuZGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcygpLmNvbm5l
Y3RTdGFydCA9IFNlY29uZHMoZG5zTG9va3VwVGltZSk7Ci0gICAgcmVzcG9uc2UoKS5kZXByZWNh
dGVkTmV0d29ya0xvYWRNZXRyaWNzKCkuY29ubmVjdEVuZCA9IFNlY29uZHMoY29ubmVjdFRpbWUp
OworICAgIE5ldHdvcmtMb2FkTWV0cmljcyBuZXR3b3JrTG9hZE1ldHJpY3M7CisKKyAgICBuZXR3
b3JrTG9hZE1ldHJpY3MucmVzZXQoKTsKKyAgICBuZXR3b3JrTG9hZE1ldHJpY3MuZG9tYWluTG9v
a3VwU3RhcnQgPSBTZWNvbmRzKDApOworICAgIG5ldHdvcmtMb2FkTWV0cmljcy5kb21haW5Mb29r
dXBFbmQgPSBTZWNvbmRzKG5hbWVMb29rdXApOworICAgIG5ldHdvcmtMb2FkTWV0cmljcy5jb25u
ZWN0U3RhcnQgPSBTZWNvbmRzKG5hbWVMb29rdXApOworICAgIG5ldHdvcmtMb2FkTWV0cmljcy5j
b25uZWN0RW5kID0gU2Vjb25kcyhjb25uZWN0KTsKKworICAgIGlmIChhcHBDb25uZWN0ID4gMC4w
KSB7CisgICAgICAgIG5ldHdvcmtMb2FkTWV0cmljcy5zZWN1cmVDb25uZWN0aW9uU3RhcnQgPSBT
ZWNvbmRzKGNvbm5lY3QpOworICAgICAgICBuZXR3b3JrTG9hZE1ldHJpY3MuY29ubmVjdEVuZCA9
IFNlY29uZHMoYXBwQ29ubmVjdCk7CisgICAgfQogCi0gICAgcmVzcG9uc2UoKS5kZXByZWNhdGVk
TmV0d29ya0xvYWRNZXRyaWNzKCkucmVxdWVzdFN0YXJ0ID0gU2Vjb25kcyhjb25uZWN0VGltZSk7
Ci0gICAgcmVzcG9uc2UoKS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKCkucmVzcG9uc2VT
dGFydCA9IFNlY29uZHMocHJldHJhbnNmZXJUaW1lKTsKKyAgICBuZXR3b3JrTG9hZE1ldHJpY3Mu
cmVxdWVzdFN0YXJ0ID0gbmV0d29ya0xvYWRNZXRyaWNzLmNvbm5lY3RFbmQ7CisgICAgbmV0d29y
a0xvYWRNZXRyaWNzLnJlc3BvbnNlU3RhcnQgPSBTZWNvbmRzKHN0YXJ0VHJhbnNmZXIpOwogCi0g
ICAgaWYgKGFwcENvbm5lY3RUaW1lKQotICAgICAgICByZXNwb25zZSgpLmRlcHJlY2F0ZWROZXR3
b3JrTG9hZE1ldHJpY3MoKS5zZWN1cmVDb25uZWN0aW9uU3RhcnQgPSBTZWNvbmRzKGNvbm5lY3RU
aW1lKTsKKyAgICByZXR1cm4gbmV0d29ya0xvYWRNZXRyaWNzOwogfQogCiAvKgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3Vy
bERlbGVnYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3Vy
Y2VIYW5kbGVDdXJsRGVsZWdhdGUuaAppbmRleCAzYmVkNDlhMjU5ZC4uMTY3YTM3OGMxOTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhh
bmRsZUN1cmxEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZS5oCkBAIC04MCw3ICs4MCw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBoYW5kbGVMb2NhbFJlY2VpdmVSZXNwb25zZSgpOwogICAgIHZvaWQgcHJl
cGFyZVNlbmREYXRhKGNoYXIqLCBzaXplX3QgYmxvY2tTaXplLCBzaXplX3QgbnVtYmVyT2ZCbG9j
a3MpOwogCi0gICAgdm9pZCBkaWRGaW5pc2goZG91YmxlLCBkb3VibGUsIGRvdWJsZSwgZG91Ymxl
KTsKKyAgICB2b2lkIGRpZEZpbmlzaChOZXR3b3JrTG9hZE1ldHJpY3MpOwogICAgIHZvaWQgZGlk
RmFpbChjb25zdCBTdHJpbmcmIGRvbWFpbiwgaW50IGVycm9yQ29kZSwgY29uc3QgVVJMJiBmYWls
aW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9uLCB1bnNpZ25lZCBzc2xF
cnJvcnMpOwogCiAgICAgdm9pZCBoYW5kbGVEYXRhVVJMKCk7CkBAIC05MSw3ICs5MSw3IEBAIHBy
aXZhdGU6CiAgICAgc2l6ZV90IGdldEZvcm1FbGVtZW50c0NvdW50KCk7CiAgICAgdm9pZCBzZXR1
cEZvcm1EYXRhKGJvb2wpOwogICAgIHZvaWQgYXBwbHlBdXRoZW50aWNhdGlvbigpOwotICAgIHZv
aWQgc2V0V2ViVGltaW5ncyhkb3VibGUsIGRvdWJsZSwgZG91YmxlLCBkb3VibGUpOworICAgIE5l
dHdvcmtMb2FkTWV0cmljcyBnZXROZXR3b3JrTG9hZE1ldHJpY3MoKTsKIAogICAgIHNpemVfdCBk
aWRSZWNlaXZlSGVhZGVyKFN0cmluZyYmKTsKICAgICBzaXplX3QgZGlkUmVjZWl2ZURhdGEoVGhy
ZWFkU2FmZURhdGFCdWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL1Jlc291cmNlUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlLmgKaW5kZXggYzdiYTU0YTY2NTAuLmI2M2Qy
OGEwYWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UmVzb3VyY2VSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZVJlc3BvbnNlLmgKQEAgLTUwLDYgKzUwLDggQEAgcHVibGljOgogCiAgICAg
dm9pZCBhcHBlbmRIVFRQSGVhZGVyRmllbGQoY29uc3QgU3RyaW5nJik7CiAKKyAgICB2b2lkIHNl
dERlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBu
ZXR3b3JrTG9hZE1ldHJpY3MpIHsgbV9uZXR3b3JrTG9hZE1ldHJpY3MgPSBuZXR3b3JrTG9hZE1l
dHJpY3M7IH0KKwogICAgIGJvb2wgaXNSZWRpcmVjdGlvbigpIGNvbnN0OwogICAgIGJvb2wgaXNO
b3RNb2RpZmllZCgpIGNvbnN0OwogICAgIGJvb2wgaXNVbmF1dGhvcml6ZWQoKSBjb25zdDsK
</data>
<flag name="review"
          id="340852"
          type_id="1"
          status="-"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320804</attachid>
            <date>2017-09-14 13:13:55 -0700</date>
            <delta_ts>2017-09-14 14:31:37 -0700</delta_ts>
            <desc>Fixed</desc>
            <filename>176906-2.diff</filename>
            <type>text/plain</type>
            <size>20429</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlNjNjMmNhNjJjOC4uNzY3OTA4ZGZiMmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOCBAQAorMjAxNy0wOS0xNCAgQmFzdWtlIFN1enVraSAgPEJhc3VrZS5TdXp1a2lAc29u
eS5jb20+CisKKyAgICAgICAgW0N1cmxdIFJlcGxhY2UgdGhlIGltcGxlbWVudGF0aW9uIHdpdGgg
TmV0d29ya0xvYWRNZXRyaWNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzY5MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsSGFuZGxl
OjpnZXRFZmZlY3RpdmVVUkwpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybEhhbmRsZTo6Z2V0UHJp
bWFyeVBvcnQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybEhhbmRsZTo6Z2V0UmVzcG9uc2VDb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxIYW5kbGU6OmdldENvbnRlbnRMZW5naHREb3dubG9h
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsSGFuZGxlOjpnZXRIdHRwQXV0aEF2YWlsKToKKyAg
ICAgICAgKFdlYkNvcmU6OkN1cmxIYW5kbGU6OmdldFRpbWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkN1cmxIYW5kbGU6OmdldEVmZmVjdGl2ZVVSTCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsRG93
bmxvYWQ6OmRpZFJlY2VpdmVIZWFkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6ZGlzcGF0Y2hTeW5jaHJvbm91c0pvYik6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6bm90aWZ5RmluaXNoKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlOjpnZXRQcm90ZWN0aW9u
U3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGU6OmRp
ZFJlY2VpdmVBbGxIZWFkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ3Vy
bERlbGVnYXRlOjpoYW5kbGVMb2NhbFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6ZGlkRmluaXNoKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlOjpnZXROZXR3b3JrTG9hZE1ldHJpY3MpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGU6OmRpZFJlY2VpdmVI
ZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGU6OmRp
ZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ3VybERlbGVn
YXRlOjpzZXRXZWJUaW1pbmdzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZTo6c2V0RGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcyk6CisKIDIwMTctMDkt
MTQgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBUaW1lbGluZSBzaG91bGQgc2hvdyB3aGVuIGV2ZW50cyBwcmV2ZW50RGVmYXVs
dCgpIHdhcyBjYWxsZWQgb24gYW4gZXZlbnQgb3Igbm90CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAppbmRleCA3Y2I4NGY4ZjVh
MC4uZDA5ODFkN2M4ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIFVTRShDVVJM
KQogI2luY2x1ZGUgIkN1cmxDb250ZXh0LmgiCiAjaW5jbHVkZSAiSFRUUEhlYWRlck1hcC5oIgor
I2luY2x1ZGUgPE5ldHdvcmtMb2FkTWV0cmljcy5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFk
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC01NzEsOTIgKzU3MiwxMzEg
QEAgdm9pZCBDdXJsSGFuZGxlOjpzZXRTc2xDdHhDYWxsYmFja0Z1bmN0aW9uKGN1cmxfc3NsX2N0
eF9jYWxsYmFjayBjYWxsYmFja0Z1bmMsIHYKICAgICBjdXJsX2Vhc3lfc2V0b3B0KG1faGFuZGxl
LCBDVVJMT1BUX1NTTF9DVFhfRlVOQ1RJT04sIGNhbGxiYWNrRnVuYyk7CiB9CiAKLVVSTCBDdXJs
SGFuZGxlOjpnZXRFZmZlY3RpdmVVUkwoKSBjb25zdAorVVJMIEN1cmxIYW5kbGU6OmdldEVmZmVj
dGl2ZVVSTCgpCiB7Ci0gICAgQ1VSTGNvZGUgZXJyQ2QgPSBDVVJMRV9GQUlMRURfSU5JVDsKLSAg
ICBjaGFyKiB1cmwgPSBudWxscHRyOwotCi0gICAgaWYgKG1faGFuZGxlKQotICAgICAgICBlcnJD
ZCA9IGN1cmxfZWFzeV9nZXRpbmZvKG1faGFuZGxlLCBDVVJMSU5GT19FRkZFQ1RJVkVfVVJMLCAm
dXJsKTsKKyAgICBpZiAoIW1faGFuZGxlKSB7CisgICAgICAgIG1fZXJyb3JDb2RlID0gQ1VSTEVf
RkFJTEVEX0lOSVQ7CisgICAgICAgIHJldHVybiBVUkwoKTsKKyAgICB9CiAKLSAgICBpZiAoKGVy
ckNkID09IENVUkxFX09LKSAmJiB1cmwpCi0gICAgICAgIHJldHVybiBVUkwoVVJMKCksIHVybCk7
CisgICAgY2hhciogdXJsOworICAgIG1fZXJyb3JDb2RlID0gY3VybF9lYXN5X2dldGluZm8obV9o
YW5kbGUsIENVUkxJTkZPX0VGRkVDVElWRV9VUkwsICZ1cmwpOworICAgIGlmIChtX2Vycm9yQ29k
ZSAhPSBDVVJMRV9PSykKKyAgICAgICAgcmV0dXJuIFVSTCgpOwogCi0gICAgcmV0dXJuIFVSTCgp
OworICAgIHJldHVybiBVUkwoVVJMKCksIHVybCk7CiB9CiAKLUNVUkxjb2RlIEN1cmxIYW5kbGU6
OmdldFByaW1hcnlQb3J0KGxvbmcmIHBvcnQpCitzdGQ6Om9wdGlvbmFsPGxvbmc+IEN1cmxIYW5k
bGU6OmdldFByaW1hcnlQb3J0KCkKIHsKLSAgICBDVVJMY29kZSBlcnJDZCA9IENVUkxFX0ZBSUxF
RF9JTklUOwotICAgIHBvcnQgPSAwOworICAgIGlmICghbV9oYW5kbGUpIHsKKyAgICAgICAgbV9l
cnJvckNvZGUgPSBDVVJMRV9GQUlMRURfSU5JVDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKyAgICB9CiAKLSAgICBpZiAobV9oYW5kbGUpCi0gICAgICAgIGVyckNkID0gY3VybF9lYXN5
X2dldGluZm8obV9oYW5kbGUsIENVUkxJTkZPX1BSSU1BUllfUE9SVCwgJnBvcnQpOworICAgIGxv
bmcgcG9ydDsKKyAgICBtX2Vycm9yQ29kZSA9IGN1cmxfZWFzeV9nZXRpbmZvKG1faGFuZGxlLCBD
VVJMSU5GT19QUklNQVJZX1BPUlQsICZwb3J0KTsKKyAgICBpZiAobV9lcnJvckNvZGUgIT0gQ1VS
TEVfT0spCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4gZXJyQ2Q7
CisgICAgcmV0dXJuIHBvcnQ7CiB9CiAKLUNVUkxjb2RlIEN1cmxIYW5kbGU6OmdldFJlc3BvbnNl
Q29kZShsb25nJiByZXNwb25zZUNvZGUpCitzdGQ6Om9wdGlvbmFsPGxvbmc+IEN1cmxIYW5kbGU6
OmdldFJlc3BvbnNlQ29kZSgpCiB7Ci0gICAgQ1VSTGNvZGUgZXJyQ2QgPSBDVVJMRV9GQUlMRURf
SU5JVDsKLSAgICByZXNwb25zZUNvZGUgPSAwTDsKKyAgICBpZiAoIW1faGFuZGxlKSB7CisgICAg
ICAgIG1fZXJyb3JDb2RlID0gQ1VSTEVfRkFJTEVEX0lOSVQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgfQogCi0gICAgaWYgKG1faGFuZGxlKQotICAgICAgICBlcnJDZCA9IGN1
cmxfZWFzeV9nZXRpbmZvKG1faGFuZGxlLCBDVVJMSU5GT19SRVNQT05TRV9DT0RFLCAmcmVzcG9u
c2VDb2RlKTsKKyAgICBsb25nIHJlc3BvbnNlQ29kZTsKKyAgICBtX2Vycm9yQ29kZSA9IGN1cmxf
ZWFzeV9nZXRpbmZvKG1faGFuZGxlLCBDVVJMSU5GT19SRVNQT05TRV9DT0RFLCAmcmVzcG9uc2VD
b2RlKTsKKyAgICBpZiAobV9lcnJvckNvZGUgIT0gQ1VSTEVfT0spCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4gZXJyQ2Q7CisgICAgcmV0dXJuIHJlc3BvbnNlQ29k
ZTsKIH0KIAotQ1VSTGNvZGUgQ3VybEhhbmRsZTo6Z2V0Q29udGVudExlbmdodERvd25sb2FkKGxv
bmcgbG9uZyYgY29udGVudExlbmd0aCkKK3N0ZDo6b3B0aW9uYWw8bG9uZyBsb25nPiBDdXJsSGFu
ZGxlOjpnZXRDb250ZW50TGVuZ2h0RG93bmxvYWQoKQogewotICAgIENVUkxjb2RlIGVyckNkID0g
Q1VSTEVfRkFJTEVEX0lOSVQ7Ci0gICAgY29udGVudExlbmd0aCA9IDA7CisgICAgaWYgKCFtX2hh
bmRsZSkgeworICAgICAgICBtX2Vycm9yQ29kZSA9IENVUkxFX0ZBSUxFRF9JTklUOworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KIAotICAgIGlmIChtX2hhbmRsZSkgewotICAg
ICAgICBkb3VibGUgdG1wQ29udGVudExlbmd0aCA9IDA7CisgICAgZG91YmxlIGNvbnRlbnRMZW5n
dGg7CiAKLSAgICAgICAgZXJyQ2QgPSBjdXJsX2Vhc3lfZ2V0aW5mbyhtX2hhbmRsZSwgQ1VSTElO
Rk9fQ09OVEVOVF9MRU5HVEhfRE9XTkxPQUQsICZ0bXBDb250ZW50TGVuZ3RoKTsKLSAgICAgICAg
aWYgKGVyckNkID09IENVUkxFX09LKQotICAgICAgICAgICAgY29udGVudExlbmd0aCA9IHN0YXRp
Y19jYXN0PGxvbmcgbG9uZz4odG1wQ29udGVudExlbmd0aCk7Ci0gICAgfQorICAgIG1fZXJyb3JD
b2RlID0gY3VybF9lYXN5X2dldGluZm8obV9oYW5kbGUsIENVUkxJTkZPX0NPTlRFTlRfTEVOR1RI
X0RPV05MT0FELCAmY29udGVudExlbmd0aCk7CisgICAgaWYgKG1fZXJyb3JDb2RlICE9IENVUkxF
X09LKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIGVyckNkOwor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KGNvbnRlbnRMZW5ndGgpOwogfQogCi1D
VVJMY29kZSBDdXJsSGFuZGxlOjpnZXRIdHRwQXV0aEF2YWlsKGxvbmcmIGh0dHBBdXRoQXZhaWwp
CitzdGQ6Om9wdGlvbmFsPGxvbmc+IEN1cmxIYW5kbGU6OmdldEh0dHBBdXRoQXZhaWwoKQogewot
ICAgIENVUkxjb2RlIGVyckNkID0gQ1VSTEVfRkFJTEVEX0lOSVQ7CisgICAgaWYgKCFtX2hhbmRs
ZSkgeworICAgICAgICBtX2Vycm9yQ29kZSA9IENVUkxFX0ZBSUxFRF9JTklUOworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KIAotICAgIGlmIChtX2hhbmRsZSkKLSAgICAgICAg
ZXJyQ2QgPSBjdXJsX2Vhc3lfZ2V0aW5mbyhtX2hhbmRsZSwgQ1VSTElORk9fSFRUUEFVVEhfQVZB
SUwsICZodHRwQXV0aEF2YWlsKTsKKyAgICBsb25nIGh0dHBBdXRoQXZhaWxhYmxlOworICAgIG1f
ZXJyb3JDb2RlID0gY3VybF9lYXN5X2dldGluZm8obV9oYW5kbGUsIENVUkxJTkZPX0hUVFBBVVRI
X0FWQUlMLCAmaHR0cEF1dGhBdmFpbGFibGUpOworICAgIGlmIChtX2Vycm9yQ29kZSAhPSBDVVJM
RV9PSykKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiBlcnJDZDsK
KyAgICByZXR1cm4gaHR0cEF1dGhBdmFpbGFibGU7CiB9CiAKLUNVUkxjb2RlIEN1cmxIYW5kbGU6
OmdldFRpbWVzKGRvdWJsZSYgbmFtZWxvb2t1cCwgZG91YmxlJiBjb25uZWN0LCBkb3VibGUmIGFw
cGNvbm5lY3QsIGRvdWJsZSYgcHJldHJhbnNmZXIpCitzdGQ6Om9wdGlvbmFsPE5ldHdvcmtMb2Fk
TWV0cmljcz4gQ3VybEhhbmRsZTo6Z2V0VGltZXMoKQogewotICAgIENVUkxjb2RlIGVyckNkID0g
Q1VSTEVfRkFJTEVEX0lOSVQ7CisgICAgZG91YmxlIG5hbWVMb29rdXAgPSAwLjA7CisgICAgZG91
YmxlIGNvbm5lY3QgPSAwLjA7CisgICAgZG91YmxlIGFwcENvbm5lY3QgPSAwLjA7CisgICAgZG91
YmxlIHByZVRyYW5zZmVyID0gMC4wOworICAgIGRvdWJsZSBzdGFydFRyYW5zZmVyID0gMC4wOwog
Ci0gICAgaWYgKCFtX2hhbmRsZSkKLSAgICAgICAgcmV0dXJuIGVyckNkOworICAgIGlmICghbV9o
YW5kbGUpIHsKKyAgICAgICAgbV9lcnJvckNvZGUgPSBDVVJMRV9GQUlMRURfSU5JVDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisKKyAgICBtX2Vycm9yQ29kZSA9IGN1cmxf
ZWFzeV9nZXRpbmZvKG1faGFuZGxlLCBDVVJMSU5GT19OQU1FTE9PS1VQX1RJTUUsICZuYW1lTG9v
a3VwKTsKKyAgICBpZiAobV9lcnJvckNvZGUgIT0gQ1VSTEVfT0spCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisKKyAgICBtX2Vycm9yQ29kZSA9IGN1cmxfZWFzeV9nZXRpbmZvKG1faGFu
ZGxlLCBDVVJMSU5GT19DT05ORUNUX1RJTUUsICZjb25uZWN0KTsKKyAgICBpZiAobV9lcnJvckNv
ZGUgIT0gQ1VSTEVfT0spCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBtX2Vy
cm9yQ29kZSA9IGN1cmxfZWFzeV9nZXRpbmZvKG1faGFuZGxlLCBDVVJMSU5GT19BUFBDT05ORUNU
X1RJTUUsICZhcHBDb25uZWN0KTsKKyAgICBpZiAobV9lcnJvckNvZGUgIT0gQ1VSTEVfT0spCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBlcnJDZCA9IGN1cmxfZWFzeV9nZXRp
bmZvKG1faGFuZGxlLCBDVVJMSU5GT19OQU1FTE9PS1VQX1RJTUUsICZuYW1lbG9va3VwKTsKLSAg
ICBpZiAoZXJyQ2QgIT0gQ1VSTEVfT0spCi0gICAgICAgIHJldHVybiBlcnJDZDsKKyAgICBtX2Vy
cm9yQ29kZSA9IGN1cmxfZWFzeV9nZXRpbmZvKG1faGFuZGxlLCBDVVJMSU5GT19QUkVUUkFOU0ZF
Ul9USU1FLCAmcHJlVHJhbnNmZXIpOworICAgIGlmIChtX2Vycm9yQ29kZSAhPSBDVVJMRV9PSykK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIGVyckNkID0gY3VybF9lYXN5X2dl
dGluZm8obV9oYW5kbGUsIENVUkxJTkZPX0NPTk5FQ1RfVElNRSwgJmNvbm5lY3QpOwotICAgIGlm
IChlcnJDZCAhPSBDVVJMRV9PSykKLSAgICAgICAgcmV0dXJuIGVyckNkOworICAgIG1fZXJyb3JD
b2RlID0gY3VybF9lYXN5X2dldGluZm8obV9oYW5kbGUsIENVUkxJTkZPX1NUQVJUVFJBTlNGRVJf
VElNRSwgJnN0YXJ0VHJhbnNmZXIpOworICAgIGlmIChtX2Vycm9yQ29kZSAhPSBDVVJMRV9PSykK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIGVyckNkID0gY3VybF9lYXN5X2dl
dGluZm8obV9oYW5kbGUsIENVUkxJTkZPX0FQUENPTk5FQ1RfVElNRSwgJmFwcGNvbm5lY3QpOwot
ICAgIGlmIChlcnJDZCAhPSBDVVJMRV9PSykKLSAgICAgICAgcmV0dXJuIGVyckNkOworICAgIE5l
dHdvcmtMb2FkTWV0cmljcyBuZXR3b3JrTG9hZE1ldHJpY3M7CisKKyAgICBuZXR3b3JrTG9hZE1l
dHJpY3MuZG9tYWluTG9va3VwU3RhcnQgPSBTZWNvbmRzKDApOworICAgIG5ldHdvcmtMb2FkTWV0
cmljcy5kb21haW5Mb29rdXBFbmQgPSBTZWNvbmRzKG5hbWVMb29rdXApOworICAgIG5ldHdvcmtM
b2FkTWV0cmljcy5jb25uZWN0U3RhcnQgPSBTZWNvbmRzKG5hbWVMb29rdXApOworICAgIG5ldHdv
cmtMb2FkTWV0cmljcy5jb25uZWN0RW5kID0gU2Vjb25kcyhjb25uZWN0KTsKKworICAgIGlmIChh
cHBDb25uZWN0ID4gMC4wKSB7CisgICAgICAgIG5ldHdvcmtMb2FkTWV0cmljcy5zZWN1cmVDb25u
ZWN0aW9uU3RhcnQgPSBTZWNvbmRzKGNvbm5lY3QpOworICAgICAgICBuZXR3b3JrTG9hZE1ldHJp
Y3MuY29ubmVjdEVuZCA9IFNlY29uZHMoYXBwQ29ubmVjdCk7CisgICAgfQogCi0gICAgZXJyQ2Qg
PSBjdXJsX2Vhc3lfZ2V0aW5mbyhtX2hhbmRsZSwgQ1VSTElORk9fUFJFVFJBTlNGRVJfVElNRSwg
JnByZXRyYW5zZmVyKTsKLSAgICBpZiAoZXJyQ2QgIT0gQ1VSTEVfT0spCi0gICAgICAgIHJldHVy
biBlcnJDZDsKKyAgICBuZXR3b3JrTG9hZE1ldHJpY3MucmVxdWVzdFN0YXJ0ID0gbmV0d29ya0xv
YWRNZXRyaWNzLmNvbm5lY3RFbmQ7CisgICAgbmV0d29ya0xvYWRNZXRyaWNzLnJlc3BvbnNlU3Rh
cnQgPSBTZWNvbmRzKHN0YXJ0VHJhbnNmZXIpOwogCi0gICAgcmV0dXJuIGVyckNkOworICAgIHJl
dHVybiBuZXR3b3JrTG9hZE1ldHJpY3M7CiB9CiAKIGxvbmcgbG9uZyBDdXJsSGFuZGxlOjptYXhD
dXJsT2ZmVCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybENvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsQ29udGV4dC5oCmluZGV4IGM0NGNmNjI5MjRiLi4zYzhjMTlmMmE2MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmgKQEAgLTIw
MSw2ICsyMDEsNyBAQCBwcml2YXRlOgogLy8gQ3VybEhhbmRsZSAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIGNsYXNzIEhUVFBIZWFkZXJNYXA7Citj
bGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CiAKIGNsYXNzIEN1cmxIYW5kbGUgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEN1cmxIYW5kbGUpOwpAQCAtMjg2LDEyICsyODcsMTIgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0U3NsQ3R4Q2FsbGJhY2tGdW5jdGlvbihjdXJsX3NzbF9jdHhfY2FsbGJh
Y2ssIHZvaWQqKTsKIAogICAgIC8vIFN0YXR1cwotICAgIFVSTCBnZXRFZmZlY3RpdmVVUkwoKSBj
b25zdDsKLSAgICBDVVJMY29kZSBnZXRQcmltYXJ5UG9ydChsb25nJik7Ci0gICAgQ1VSTGNvZGUg
Z2V0UmVzcG9uc2VDb2RlKGxvbmcmKTsKLSAgICBDVVJMY29kZSBnZXRDb250ZW50TGVuZ2h0RG93
bmxvYWQobG9uZyBsb25nJik7Ci0gICAgQ1VSTGNvZGUgZ2V0SHR0cEF1dGhBdmFpbChsb25nJik7
Ci0gICAgQ1VSTGNvZGUgZ2V0VGltZXMoZG91YmxlJiwgZG91YmxlJiwgZG91YmxlJiwgZG91Ymxl
Jik7CisgICAgVVJMIGdldEVmZmVjdGl2ZVVSTCgpOworICAgIHN0ZDo6b3B0aW9uYWw8bG9uZz4g
Z2V0UHJpbWFyeVBvcnQoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPGxvbmc+IGdldFJlc3BvbnNlQ29k
ZSgpOworICAgIHN0ZDo6b3B0aW9uYWw8bG9uZyBsb25nPiBnZXRDb250ZW50TGVuZ2h0RG93bmxv
YWQoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPGxvbmc+IGdldEh0dHBBdXRoQXZhaWwoKTsKKyAgICBz
dGQ6Om9wdGlvbmFsPE5ldHdvcmtMb2FkTWV0cmljcz4gZ2V0VGltZXMoKTsKIAogICAgIHN0YXRp
YyBsb25nIGxvbmcgbWF4Q3VybE9mZlQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcAppbmRleCAwYmUxNzNlZWJmMC4u
Yjk5MzI1NDE5MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsRG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCkBAIC0xODEsMTEgKzE4MSwxMCBAQCB2b2lkIEN1cmxE
b3dubG9hZDo6ZGlkUmVjZWl2ZUhlYWRlcihjb25zdCBTdHJpbmcmIGhlYWRlcikKIAogICAgIGlm
IChoZWFkZXIgPT0gIlxyXG4iIHx8IGhlYWRlciA9PSAiXG4iKSB7CiAKLSAgICAgICAgbG9uZyBo
dHRwQ29kZSA9IDA7Ci0gICAgICAgIG1fY3VybEhhbmRsZS5nZXRSZXNwb25zZUNvZGUoaHR0cENv
ZGUpOworICAgICAgICBhdXRvIGh0dHBDb2RlID0gbV9jdXJsSGFuZGxlLmdldFJlc3BvbnNlQ29k
ZSgpOwogCi0gICAgICAgIGlmIChodHRwQ29kZSA+PSAyMDAgJiYgaHR0cENvZGUgPCAzMDApIHsK
LSAgICAgICAgICAgIFVSTCB1cmwgPSBtX2N1cmxIYW5kbGUuZ2V0RWZmZWN0aXZlVVJMKCk7Cisg
ICAgICAgIGlmICgqaHR0cENvZGUgPj0gMjAwICYmICpodHRwQ29kZSA8IDMwMCkgeworICAgICAg
ICAgICAgYXV0byB1cmwgPSBtX2N1cmxIYW5kbGUuZ2V0RWZmZWN0aXZlVVJMKCk7CiAgICAgICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHVy
bCA9IHVybC5pc29sYXRlZENvcHkoKV0gewogICAgICAgICAgICAgICAgIFJlc291cmNlUmVzcG9u
c2UgbG9jYWxSZXNwb25zZSA9IHByb3RlY3RlZFRoaXMtPmdldFJlc3BvbnNlKCk7CiAgICAgICAg
ICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9yZXNwb25zZVVybCA9IHVybDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmxE
ZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3Vy
Y2VIYW5kbGVDdXJsRGVsZWdhdGUuY3BwCmluZGV4IDdmMzAxMzY2Y2UyLi5kMGM2MjNhZDMzMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNl
SGFuZGxlQ3VybERlbGVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGUuY3BwCkBAIC0xNjQsMTQgKzE2NCw2
IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGU6OmRpc3BhdGNoU3luY2hyb25vdXNK
b2IoKQogICAgIC8vIGN1cmxfZWFzeV9wZXJmb3JtIGJsb2NrcyB1bnRpbCB0aGUgdHJhbnNmZXIg
aXMgZmluaXNoZWQuCiAgICAgQ1VSTGNvZGUgcmV0ID0gbV9jdXJsSGFuZGxlLnBlcmZvcm0oKTsK
IAotICAgIGRvdWJsZSBwcmV0cmFuc2ZlclRpbWUgPSAwOwotICAgIGRvdWJsZSBkbnNMb29rdXBU
aW1lID0gMDsKLSAgICBkb3VibGUgY29ubmVjdFRpbWUgPSAwOwotICAgIGRvdWJsZSBhcHBDb25u
ZWN0VGltZSA9IDA7Ci0KLSAgICBtX2N1cmxIYW5kbGUuZ2V0VGltZXMocHJldHJhbnNmZXJUaW1l
LCBkbnNMb29rdXBUaW1lLCBjb25uZWN0VGltZSwgYXBwQ29ubmVjdFRpbWUpOwotICAgIHNldFdl
YlRpbWluZ3MocHJldHJhbnNmZXJUaW1lLCBkbnNMb29rdXBUaW1lLCBjb25uZWN0VGltZSwgYXBw
Q29ubmVjdFRpbWUpOwotCiAgICAgaWYgKHJldCAhPSBDVVJMRV9PSykKICAgICAgICAgbm90aWZ5
RmFpbCgpOwogICAgIGVsc2UKQEAgLTI3NywyMCArMjY5LDE1IEBAIHZvaWQgUmVzb3VyY2VIYW5k
bGVDdXJsRGVsZWdhdGU6OnNldHVwUmVxdWVzdCgpCiAKIHZvaWQgUmVzb3VyY2VIYW5kbGVDdXJs
RGVsZWdhdGU6Om5vdGlmeUZpbmlzaCgpCiB7Ci0gICAgZG91YmxlIHByZXRyYW5zZmVyVGltZSA9
IDA7Ci0gICAgZG91YmxlIGRuc0xvb2t1cFRpbWUgPSAwOwotICAgIGRvdWJsZSBjb25uZWN0VGlt
ZSA9IDA7Ci0gICAgZG91YmxlIGFwcENvbm5lY3RUaW1lID0gMDsKLQotICAgIG1fY3VybEhhbmRs
ZS5nZXRUaW1lcyhwcmV0cmFuc2ZlclRpbWUsIGRuc0xvb2t1cFRpbWUsIGNvbm5lY3RUaW1lLCBh
cHBDb25uZWN0VGltZSk7CisgICAgTmV0d29ya0xvYWRNZXRyaWNzIG5ldHdvcmtMb2FkTWV0cmlj
cyA9IGdldE5ldHdvcmtMb2FkTWV0cmljcygpOwogCiAgICAgaWYgKGlzTWFpblRocmVhZCgpKQot
ICAgICAgICBkaWRGaW5pc2gocHJldHJhbnNmZXJUaW1lLCBkbnNMb29rdXBUaW1lLCBjb25uZWN0
VGltZSwgYXBwQ29ubmVjdFRpbWUpOworICAgICAgICBkaWRGaW5pc2gobmV0d29ya0xvYWRNZXRy
aWNzKTsKICAgICBlbHNlIHsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBwcmV0cmFuc2ZlclRpbWUsIGRuc0xvb2t1cFRpbWUsIGNvbm5l
Y3RUaW1lLCBhcHBDb25uZWN0VGltZV0geworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG1ldHJpY3MgPSBuZXR3b3JrTG9hZE1ldHJpY3Mu
aXNvbGF0ZWRDb3B5KCldIHsKICAgICAgICAgICAgIGlmICghcHJvdGVjdGVkVGhpcy0+bV9oYW5k
bGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+
ZGlkRmluaXNoKHByZXRyYW5zZmVyVGltZSwgZG5zTG9va3VwVGltZSwgY29ubmVjdFRpbWUsIGFw
cENvbm5lY3RUaW1lKTsKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRpZEZpbmlzaChtZXRy
aWNzKTsKICAgICAgICAgfSk7CiAgICAgfQogfQpAQCAtMzQ4LDE5ICszMzUsMTUgQEAgc3RhdGlj
IHZvaWQgcmVtb3ZlTGVhZGluZ0FuZFRyYWlsaW5nUXVvdGVzKFN0cmluZyYgdmFsdWUpCiAKIGJv
b2wgUmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGU6OmdldFByb3RlY3Rpb25TcGFjZShjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3Bh
Y2UpCiB7Ci0gICAgQ1VSTGNvZGUgZXJyOwotCi0gICAgbG9uZyBwb3J0ID0gMDsKLSAgICBlcnIg
PSBtX2N1cmxIYW5kbGUuZ2V0UHJpbWFyeVBvcnQocG9ydCk7Ci0gICAgaWYgKGVyciAhPSBDVVJM
RV9PSykKKyAgICBhdXRvIHBvcnQgPSBtX2N1cmxIYW5kbGUuZ2V0UHJpbWFyeVBvcnQoKTsKKyAg
ICBpZiAoIXBvcnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGxvbmcgYXZhaWxhYmxl
QXV0aCA9IENVUkxBVVRIX05PTkU7Ci0gICAgZXJyID0gbV9jdXJsSGFuZGxlLmdldEh0dHBBdXRo
QXZhaWwoYXZhaWxhYmxlQXV0aCk7Ci0gICAgaWYgKGVyciAhPSBDVVJMRV9PSykKKyAgICBhdXRv
IGF2YWlsYWJsZUF1dGggPSBtX2N1cmxIYW5kbGUuZ2V0SHR0cEF1dGhBdmFpbCgpOworICAgIGlm
ICghYXZhaWxhYmxlQXV0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgVVJMIHVybCA9
IG1fY3VybEhhbmRsZS5nZXRFZmZlY3RpdmVVUkwoKTsKKyAgICBhdXRvIHVybCA9IG1fY3VybEhh
bmRsZS5nZXRFZmZlY3RpdmVVUkwoKTsKICAgICBpZiAoIXVybC5pc1ZhbGlkKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIApAQCAtMzg0LDE2ICszNjcsMTYgQEAgYm9vbCBSZXNvdXJjZUhhbmRs
ZUN1cmxEZWxlZ2F0ZTo6Z2V0UHJvdGVjdGlvblNwYWNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3AKIAogICAgIFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lIGF1dGhTY2hl
bWUgPSBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZVVua25vd247CiAKLSAgICBp
ZiAoYXZhaWxhYmxlQXV0aCAmIENVUkxBVVRIX0JBU0lDKQorICAgIGlmICgqYXZhaWxhYmxlQXV0
aCAmIENVUkxBVVRIX0JBU0lDKQogICAgICAgICBhdXRoU2NoZW1lID0gUHJvdGVjdGlvblNwYWNl
QXV0aGVudGljYXRpb25TY2hlbWVIVFRQQmFzaWM7Ci0gICAgaWYgKGF2YWlsYWJsZUF1dGggJiBD
VVJMQVVUSF9ESUdFU1QpCisgICAgaWYgKCphdmFpbGFibGVBdXRoICYgQ1VSTEFVVEhfRElHRVNU
KQogICAgICAgICBhdXRoU2NoZW1lID0gUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hl
bWVIVFRQRGlnZXN0OwotICAgIGlmIChhdmFpbGFibGVBdXRoICYgQ1VSTEFVVEhfR1NTTkVHT1RJ
QVRFKQorICAgIGlmICgqYXZhaWxhYmxlQXV0aCAmIENVUkxBVVRIX0dTU05FR09USUFURSkKICAg
ICAgICAgYXV0aFNjaGVtZSA9IFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lTmVn
b3RpYXRlOwotICAgIGlmIChhdmFpbGFibGVBdXRoICYgQ1VSTEFVVEhfTlRMTSkKKyAgICBpZiAo
KmF2YWlsYWJsZUF1dGggJiBDVVJMQVVUSF9OVExNKQogICAgICAgICBhdXRoU2NoZW1lID0gUHJv
dGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVOVExNOwogCi0gICAgcHJvdGVjdGlvblNw
YWNlID0gUHJvdGVjdGlvblNwYWNlKGhvc3QsIHBvcnQsIHNlcnZlclR5cGUsIHJlYWxtLCBhdXRo
U2NoZW1lKTsKKyAgICBwcm90ZWN0aW9uU3BhY2UgPSBQcm90ZWN0aW9uU3BhY2UoaG9zdCwgKnBv
cnQsIHNlcnZlclR5cGUsIHJlYWxtLCBhdXRoU2NoZW1lKTsKIAogICAgIHJldHVybiB0cnVlOwog
fQpAQCAtNDA3LDggKzM5MCw5IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGU6OmRp
ZFJlY2VpdmVBbGxIZWFkZXJzKGxvbmcgaHR0cENvZGUsIGxvbmcgbG9uZyBjCiB7CiAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIHJlc3BvbnNlKCkuc2V0RXhwZWN0ZWRDb250ZW50
TGVuZ3RoKGNvbnRlbnRMZW5ndGgpOwogICAgIHJlc3BvbnNlKCkuc2V0VVJMKG1fY3VybEhhbmRs
ZS5nZXRFZmZlY3RpdmVVUkwoKSk7CisKKyAgICByZXNwb25zZSgpLnNldEV4cGVjdGVkQ29udGVu
dExlbmd0aChjb250ZW50TGVuZ3RoKTsKICAgICByZXNwb25zZSgpLnNldEhUVFBTdGF0dXNDb2Rl
KGh0dHBDb2RlKTsKICAgICByZXNwb25zZSgpLnNldE1pbWVUeXBlKGV4dHJhY3RNSU1FVHlwZUZy
b21NZWRpYVR5cGUocmVzcG9uc2UoKS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNv
bnRlbnRUeXBlKSkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSk7CiAgICAgcmVzcG9uc2UoKS5z
ZXRUZXh0RW5jb2RpbmdOYW1lKGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShyZXNwb25zZSgp
Lmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUpKSk7CkBAIC00OTIs
OSArNDc2LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6aGFuZGxlTG9jYWxS
ZWNlaXZlUmVzcG9uc2UoKQogICAgIC8vIHdoaWNoIG1lYW5zIHRoZSBSZXNvdXJjZUxvYWRlcidz
IHJlc3BvbnNlIGRvZXMgbm90IGNvbnRhaW4gdGhlIFVSTC4KICAgICAvLyBSdW4gdGhlIGNvZGUg
aGVyZSBmb3IgbG9jYWwgZmlsZXMgdG8gcmVzb2x2ZSB0aGUgaXNzdWUuCiAgICAgLy8gVE9ETzog
U2VlIGlmIHRoZXJlIGlzIGEgYmV0dGVyIGFwcHJvYWNoIGZvciBoYW5kbGluZyB0aGlzLgotICAg
IFVSTCB1cmwgPSBtX2N1cmxIYW5kbGUuZ2V0RWZmZWN0aXZlVVJMKCk7Ci0gICAgQVNTRVJUKHVy
bC5pc1ZhbGlkKCkpOwotICAgIHJlc3BvbnNlKCkuc2V0VVJMKHVybCk7CisgICAgcmVzcG9uc2Uo
KS5zZXRVUkwobV9jdXJsSGFuZGxlLmdldEVmZmVjdGl2ZVVSTCgpKTsKICAgICByZXNwb25zZSgp
LnNldFJlc3BvbnNlRmlyZWQodHJ1ZSk7CiAgICAgaWYgKG1faGFuZGxlLT5jbGllbnQoKSkKICAg
ICAgICAgbV9oYW5kbGUtPmNsaWVudCgpLT5kaWRSZWNlaXZlUmVzcG9uc2UobV9oYW5kbGUsIFJl
c291cmNlUmVzcG9uc2UocmVzcG9uc2UoKSkpOwpAQCAtNTIxLDkgKzUwMyw5IEBAIHZvaWQgUmVz
b3VyY2VIYW5kbGVDdXJsRGVsZWdhdGU6OnByZXBhcmVTZW5kRGF0YShjaGFyKiBidWZmZXIsIHNp
emVfdCBibG9ja1NpemUsCiAgICAgbV93b3JrZXJUaHJlYWRDb25kaXRpb25WYXJpYWJsZS5ub3Rp
ZnlPbmUoKTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6ZGlkRmluaXNo
KGRvdWJsZSBwcmV0cmFuc2ZlclRpbWUsIGRvdWJsZSBkbnNMb29rdXBUaW1lLCBkb3VibGUgY29u
bmVjdFRpbWUsIGRvdWJsZSBhcHBDb25uZWN0VGltZSkKK3ZvaWQgUmVzb3VyY2VIYW5kbGVDdXJs
RGVsZWdhdGU6OmRpZEZpbmlzaChOZXR3b3JrTG9hZE1ldHJpY3MgbmV0d29ya0xvYWRNZXRyaWNz
KQogewotICAgIHNldFdlYlRpbWluZ3MocHJldHJhbnNmZXJUaW1lLCBkbnNMb29rdXBUaW1lLCBj
b25uZWN0VGltZSwgYXBwQ29ubmVjdFRpbWUpOworICAgIHJlc3BvbnNlKCkuc2V0RGVwcmVjYXRl
ZE5ldHdvcmtMb2FkTWV0cmljcyhuZXR3b3JrTG9hZE1ldHJpY3MpOwogCiAgICAgaWYgKCFtX2hh
bmRsZSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzIxLDE5ICs3MDMsMTMgQEAgdm9pZCBSZXNvdXJj
ZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6YXBwbHlBdXRoZW50aWNhdGlvbigpCiAgICAgbV9jdXJsSGFu
ZGxlLnNldEh0dHBBdXRoVXNlclBhc3ModXNlciwgcGFzc3dvcmQpOwogfQogCi12b2lkIFJlc291
cmNlSGFuZGxlQ3VybERlbGVnYXRlOjpzZXRXZWJUaW1pbmdzKGRvdWJsZSBwcmV0cmFuc2ZlclRp
bWUsIGRvdWJsZSBkbnNMb29rdXBUaW1lLCBkb3VibGUgY29ubmVjdFRpbWUsIGRvdWJsZSBhcHBD
b25uZWN0VGltZSkKK05ldHdvcmtMb2FkTWV0cmljcyBSZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0
ZTo6Z2V0TmV0d29ya0xvYWRNZXRyaWNzKCkKIHsKLSAgICByZXNwb25zZSgpLmRlcHJlY2F0ZWRO
ZXR3b3JrTG9hZE1ldHJpY3MoKS5kb21haW5Mb29rdXBTdGFydCA9IFNlY29uZHMoMCk7Ci0gICAg
cmVzcG9uc2UoKS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKCkuZG9tYWluTG9va3VwRW5k
ID0gU2Vjb25kcyhkbnNMb29rdXBUaW1lKTsKLQotICAgIHJlc3BvbnNlKCkuZGVwcmVjYXRlZE5l
dHdvcmtMb2FkTWV0cmljcygpLmNvbm5lY3RTdGFydCA9IFNlY29uZHMoZG5zTG9va3VwVGltZSk7
Ci0gICAgcmVzcG9uc2UoKS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKCkuY29ubmVjdEVu
ZCA9IFNlY29uZHMoY29ubmVjdFRpbWUpOworICAgIE5ldHdvcmtMb2FkTWV0cmljcyBuZXR3b3Jr
TG9hZE1ldHJpY3M7CisgICAgaWYgKGF1dG8gbWV0cmljcyA9IG1fY3VybEhhbmRsZS5nZXRUaW1l
cygpKQorICAgICAgICBuZXR3b3JrTG9hZE1ldHJpY3MgPSAqbWV0cmljczsKIAotICAgIHJlc3Bv
bnNlKCkuZGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcygpLnJlcXVlc3RTdGFydCA9IFNlY29u
ZHMoY29ubmVjdFRpbWUpOwotICAgIHJlc3BvbnNlKCkuZGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0
cmljcygpLnJlc3BvbnNlU3RhcnQgPSBTZWNvbmRzKHByZXRyYW5zZmVyVGltZSk7Ci0KLSAgICBp
ZiAoYXBwQ29ubmVjdFRpbWUpCi0gICAgICAgIHJlc3BvbnNlKCkuZGVwcmVjYXRlZE5ldHdvcmtM
b2FkTWV0cmljcygpLnNlY3VyZUNvbm5lY3Rpb25TdGFydCA9IFNlY29uZHMoY29ubmVjdFRpbWUp
OworICAgIHJldHVybiBuZXR3b3JrTG9hZE1ldHJpY3M7CiB9CiAKIC8qCkBAIC03NjIsNyArNzM4
LDggQEAgc2l6ZV90IFJlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlOjpkaWRSZWNlaXZlSGVhZGVy
KFN0cmluZyYmIGhlYWRlcikKICAgICAqLwogICAgIGlmIChoZWFkZXIgPT0gQXRvbWljU3RyaW5n
KCJcclxuIikgfHwgaGVhZGVyID09IEF0b21pY1N0cmluZygiXG4iKSkgewogICAgICAgICBsb25n
IGh0dHBDb2RlID0gMDsKLSAgICAgICAgbV9jdXJsSGFuZGxlLmdldFJlc3BvbnNlQ29kZShodHRw
Q29kZSk7CisgICAgICAgIGlmIChhdXRvIGNvZGUgPSBtX2N1cmxIYW5kbGUuZ2V0UmVzcG9uc2VD
b2RlKCkpCisgICAgICAgICAgICBodHRwQ29kZSA9ICpjb2RlOwogCiAgICAgICAgIGlmICghaHR0
cENvZGUpIHsKICAgICAgICAgICAgIC8vIENvbWVzIGhlcmUgd2hlbiByZWNlaXZpbmcgMjAwIENv
bm5lY3Rpb24gRXN0YWJsaXNoZWQuIEp1c3QgcmV0dXJuLgpAQCAtNzc1LDcgKzc1Miw4IEBAIHNp
emVfdCBSZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6ZGlkUmVjZWl2ZUhlYWRlcihTdHJpbmcm
JiBoZWFkZXIpCiAgICAgICAgIH0KIAogICAgICAgICBsb25nIGxvbmcgY29udGVudExlbmd0aCA9
IDA7Ci0gICAgICAgIG1fY3VybEhhbmRsZS5nZXRDb250ZW50TGVuZ2h0RG93bmxvYWQoY29udGVu
dExlbmd0aCk7CisgICAgICAgIGlmIChhdXRvIGxlbmd0aCA9IG1fY3VybEhhbmRsZS5nZXRDb250
ZW50TGVuZ2h0RG93bmxvYWQoKSkKKyAgICAgICAgICAgIGNvbnRlbnRMZW5ndGggPSAqbGVuZ3Ro
OwogCiAgICAgICAgIGlmIChpc01haW5UaHJlYWQoKSkKICAgICAgICAgICAgIGRpZFJlY2VpdmVB
bGxIZWFkZXJzKGh0dHBDb2RlLCBjb250ZW50TGVuZ3RoKTsKQEAgLTgxNywxMCArNzk1LDEwIEBA
IHNpemVfdCBSZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6ZGlkUmVjZWl2ZURhdGEoVGhyZWFk
U2FmZURhdGFCdWZmZXIgZGF0YSkKICAgICAvLyB0aGlzIHNob3VsZG4ndCBiZSBuZWNlc3Nhcnkg
YnV0IGFwcGFyZW50bHkgaXMuIENVUkwgd3JpdGVzIHRoZSBkYXRhCiAgICAgLy8gb2YgaHRtbCBw
YWdlIGV2ZW4gaWYgaXQgaXMgYSByZWRpcmVjdCB0aGF0IHdhcyBoYW5kbGVkIGludGVybmFsbHkK
ICAgICAvLyBjYW4gYmUgb2JzZXJ2ZWQgZS5nLiBvbiBnbWFpbC5jb20KLSAgICBsb25nIGh0dHBD
b2RlID0gMDsKLSAgICBDVVJMY29kZSBlcnJDZCA9IG1fY3VybEhhbmRsZS5nZXRSZXNwb25zZUNv
ZGUoaHR0cENvZGUpOwotICAgIGlmIChDVVJMRV9PSyA9PSBlcnJDZCAmJiBodHRwQ29kZSA+PSAz
MDAgJiYgaHR0cENvZGUgPCA0MDApCi0gICAgICAgIHJldHVybiBkYXRhLnNpemUoKTsKKyAgICBp
ZiAoYXV0byBodHRwQ29kZSA9IG1fY3VybEhhbmRsZS5nZXRSZXNwb25zZUNvZGUoKSkgeworICAg
ICAgICBpZiAoKmh0dHBDb2RlID49IDMwMCAmJiAqaHR0cENvZGUgPCA0MDApCisgICAgICAgICAg
ICByZXR1cm4gZGF0YS5zaXplKCk7CisgICAgfQogCiAgICAgaWYgKCFkYXRhLnNpemUoKSkKICAg
ICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZS5oCmluZGV4IDNi
ZWQ0OWEyNTlkLi4xNjdhMzc4YzE5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybERlbGVnYXRl
LmgKQEAgLTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGhhbmRsZUxvY2FsUmVjZWl2
ZVJlc3BvbnNlKCk7CiAgICAgdm9pZCBwcmVwYXJlU2VuZERhdGEoY2hhciosIHNpemVfdCBibG9j
a1NpemUsIHNpemVfdCBudW1iZXJPZkJsb2Nrcyk7CiAKLSAgICB2b2lkIGRpZEZpbmlzaChkb3Vi
bGUsIGRvdWJsZSwgZG91YmxlLCBkb3VibGUpOworICAgIHZvaWQgZGlkRmluaXNoKE5ldHdvcmtM
b2FkTWV0cmljcyk7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFN0cmluZyYgZG9tYWluLCBpbnQg
ZXJyb3JDb2RlLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVk
RGVzY3JpcHRpb24sIHVuc2lnbmVkIHNzbEVycm9ycyk7CiAKICAgICB2b2lkIGhhbmRsZURhdGFV
UkwoKTsKQEAgLTkxLDcgKzkxLDcgQEAgcHJpdmF0ZToKICAgICBzaXplX3QgZ2V0Rm9ybUVsZW1l
bnRzQ291bnQoKTsKICAgICB2b2lkIHNldHVwRm9ybURhdGEoYm9vbCk7CiAgICAgdm9pZCBhcHBs
eUF1dGhlbnRpY2F0aW9uKCk7Ci0gICAgdm9pZCBzZXRXZWJUaW1pbmdzKGRvdWJsZSwgZG91Ymxl
LCBkb3VibGUsIGRvdWJsZSk7CisgICAgTmV0d29ya0xvYWRNZXRyaWNzIGdldE5ldHdvcmtMb2Fk
TWV0cmljcygpOwogCiAgICAgc2l6ZV90IGRpZFJlY2VpdmVIZWFkZXIoU3RyaW5nJiYpOwogICAg
IHNpemVfdCBkaWRSZWNlaXZlRGF0YShUaHJlYWRTYWZlRGF0YUJ1ZmZlcik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVzcG9uc2Uu
aAppbmRleCBjN2JhNTRhNjY1MC4uYjYzZDI4YTBhYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVzcG9uc2UuaApAQCAtNTAs
NiArNTAsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGVuZEhUVFBIZWFkZXJGaWVsZChjb25z
dCBTdHJpbmcmKTsKIAorICAgIHZvaWQgc2V0RGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcyhj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykgeyBtX25ldHdvcmtM
b2FkTWV0cmljcyA9IG5ldHdvcmtMb2FkTWV0cmljczsgfQorCiAgICAgYm9vbCBpc1JlZGlyZWN0
aW9uKCkgY29uc3Q7CiAgICAgYm9vbCBpc05vdE1vZGlmaWVkKCkgY29uc3Q7CiAgICAgYm9vbCBp
c1VuYXV0aG9yaXplZCgpIGNvbnN0Owo=
</data>
<flag name="review"
          id="340882"
          type_id="1"
          status="-"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320824</attachid>
            <date>2017-09-14 14:31:37 -0700</date>
            <delta_ts>2017-09-14 17:29:50 -0700</delta_ts>
            <desc>patch</desc>
            <filename>176906-3.diff</filename>
            <type>text/plain</type>
            <size>20589</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlNjNjMmNhNjJjOC4uMjZmNmViN2E1ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNiBAQAorMjAxNy0wOS0xNCAgQmFzdWtlIFN1enVraSAgPEJhc3VrZS5TdXp1a2lAc29u
eS5jb20+CisKKyAgICAgICAgW0N1cmxdIFJlcGxhY2UgdGhlIGltcGxlbWVudGF0aW9uIHdpdGgg
TmV0d29ya0xvYWRNZXRyaWNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzY5MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDdXJsSGFuZGxlOjpnZXRFZmZlY3RpdmVVUkwpOgorICAgICAgICAoV2Vi
Q29yZTo6Q3VybEhhbmRsZTo6Z2V0UHJpbWFyeVBvcnQpOgorICAgICAgICAoV2ViQ29yZTo6Q3Vy
bEhhbmRsZTo6Z2V0UmVzcG9uc2VDb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxIYW5kbGU6
OmdldENvbnRlbnRMZW5naHREb3dubG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsSGFuZGxl
OjpnZXRIdHRwQXV0aEF2YWlsKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxIYW5kbGU6OmdldFRp
bWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxIYW5kbGU6OmdldEVmZmVjdGl2ZVVSTCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXJsRG93bmxvYWQ6OmRpZFJlY2VpdmVIZWFkZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6ZGlzcGF0Y2hT
eW5jaHJvbm91c0pvYik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUN1cmxEZWxl
Z2F0ZTo6bm90aWZ5RmluaXNoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ3Vy
bERlbGVnYXRlOjpnZXRQcm90ZWN0aW9uU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGVDdXJsRGVsZWdhdGU6OmRpZFJlY2VpdmVBbGxIZWFkZXJzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlOjpoYW5kbGVMb2NhbFJlY2VpdmVSZXNw
b25zZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6ZGlk
RmluaXNoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlOjpn
ZXROZXR3b3JrTG9hZE1ldHJpY3MpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVD
dXJsRGVsZWdhdGU6OmRpZFJlY2VpdmVIZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGVDdXJsRGVsZWdhdGU6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlOjpzZXRXZWJUaW1pbmdzKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGUu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6c2V0RGVwcmVjYXRlZE5ldHdvcmtM
b2FkTWV0cmljcyk6CisKIDIwMTctMDktMTQgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFw
cGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBUaW1lbGluZSBzaG91bGQgc2hvdyB3
aGVuIGV2ZW50cyBwcmV2ZW50RGVmYXVsdCgpIHdhcyBjYWxsZWQgb24gYW4gZXZlbnQgb3Igbm90
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250
ZXh0LmNwcAppbmRleCA3Y2I4NGY4ZjVhMC4uOGU1OTYyZDdmODQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcApAQCAtMjks
NiArMjksNyBAQAogI2lmIFVTRShDVVJMKQogI2luY2x1ZGUgIkN1cmxDb250ZXh0LmgiCiAjaW5j
bHVkZSAiSFRUUEhlYWRlck1hcC5oIgorI2luY2x1ZGUgPE5ldHdvcmtMb2FkTWV0cmljcy5oPgog
I2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogCkBAIC01NzEsOTIgKzU3MiwxMzUgQEAgdm9pZCBDdXJsSGFuZGxlOjpzZXRTc2xDdHhDYWxs
YmFja0Z1bmN0aW9uKGN1cmxfc3NsX2N0eF9jYWxsYmFjayBjYWxsYmFja0Z1bmMsIHYKICAgICBj
dXJsX2Vhc3lfc2V0b3B0KG1faGFuZGxlLCBDVVJMT1BUX1NTTF9DVFhfRlVOQ1RJT04sIGNhbGxi
YWNrRnVuYyk7CiB9CiAKLVVSTCBDdXJsSGFuZGxlOjpnZXRFZmZlY3RpdmVVUkwoKSBjb25zdAor
VVJMIEN1cmxIYW5kbGU6OmdldEVmZmVjdGl2ZVVSTCgpCiB7Ci0gICAgQ1VSTGNvZGUgZXJyQ2Qg
PSBDVVJMRV9GQUlMRURfSU5JVDsKLSAgICBjaGFyKiB1cmwgPSBudWxscHRyOwotCi0gICAgaWYg
KG1faGFuZGxlKQotICAgICAgICBlcnJDZCA9IGN1cmxfZWFzeV9nZXRpbmZvKG1faGFuZGxlLCBD
VVJMSU5GT19FRkZFQ1RJVkVfVVJMLCAmdXJsKTsKKyAgICBpZiAoIW1faGFuZGxlKSB7CisgICAg
ICAgIG1fZXJyb3JDb2RlID0gQ1VSTEVfRkFJTEVEX0lOSVQ7CisgICAgICAgIHJldHVybiBVUkwo
KTsKKyAgICB9CiAKLSAgICBpZiAoKGVyckNkID09IENVUkxFX09LKSAmJiB1cmwpCi0gICAgICAg
IHJldHVybiBVUkwoVVJMKCksIHVybCk7CisgICAgY2hhciogdXJsOworICAgIG1fZXJyb3JDb2Rl
ID0gY3VybF9lYXN5X2dldGluZm8obV9oYW5kbGUsIENVUkxJTkZPX0VGRkVDVElWRV9VUkwsICZ1
cmwpOworICAgIGlmIChtX2Vycm9yQ29kZSAhPSBDVVJMRV9PSykKKyAgICAgICAgcmV0dXJuIFVS
TCgpOwogCi0gICAgcmV0dXJuIFVSTCgpOworICAgIHJldHVybiBVUkwoVVJMKCksIHVybCk7CiB9
CiAKLUNVUkxjb2RlIEN1cmxIYW5kbGU6OmdldFByaW1hcnlQb3J0KGxvbmcmIHBvcnQpCitzdGQ6
Om9wdGlvbmFsPHVpbnQxNl90PiBDdXJsSGFuZGxlOjpnZXRQcmltYXJ5UG9ydCgpCiB7Ci0gICAg
Q1VSTGNvZGUgZXJyQ2QgPSBDVVJMRV9GQUlMRURfSU5JVDsKLSAgICBwb3J0ID0gMDsKKyAgICBp
ZiAoIW1faGFuZGxlKSB7CisgICAgICAgIG1fZXJyb3JDb2RlID0gQ1VSTEVfRkFJTEVEX0lOSVQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQogCi0gICAgaWYgKG1faGFuZGxl
KQotICAgICAgICBlcnJDZCA9IGN1cmxfZWFzeV9nZXRpbmZvKG1faGFuZGxlLCBDVVJMSU5GT19Q
UklNQVJZX1BPUlQsICZwb3J0KTsKKyAgICBsb25nIHBvcnQ7CisgICAgbV9lcnJvckNvZGUgPSBj
dXJsX2Vhc3lfZ2V0aW5mbyhtX2hhbmRsZSwgQ1VSTElORk9fUFJJTUFSWV9QT1JULCAmcG9ydCk7
CisgICAgaWYgKG1fZXJyb3JDb2RlICE9IENVUkxFX09LKQorICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCi0gICAgcmV0dXJuIGVyckNkOworICAgIC8qCisgICAgICogaHR0cHM6Ly9naXRo
dWIuY29tL2N1cmwvY3VybC9ibG9iL21hc3Rlci9saWIvY29ubmVjdC5jI0w2MTItTDY2MAorICAg
ICAqIGNvbmZpcm1lZCB0aGF0IGBwb3J0YCBpcyBvcmlnaW5hbGx5IHVuc2lnbmVkIHNob3J0Lgor
ICAgICAqLworICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50MTZfdD4ocG9ydCk7CiB9CiAKLUNV
Ukxjb2RlIEN1cmxIYW5kbGU6OmdldFJlc3BvbnNlQ29kZShsb25nJiByZXNwb25zZUNvZGUpCitz
dGQ6Om9wdGlvbmFsPGxvbmc+IEN1cmxIYW5kbGU6OmdldFJlc3BvbnNlQ29kZSgpCiB7Ci0gICAg
Q1VSTGNvZGUgZXJyQ2QgPSBDVVJMRV9GQUlMRURfSU5JVDsKLSAgICByZXNwb25zZUNvZGUgPSAw
TDsKKyAgICBpZiAoIW1faGFuZGxlKSB7CisgICAgICAgIG1fZXJyb3JDb2RlID0gQ1VSTEVfRkFJ
TEVEX0lOSVQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQogCi0gICAgaWYg
KG1faGFuZGxlKQotICAgICAgICBlcnJDZCA9IGN1cmxfZWFzeV9nZXRpbmZvKG1faGFuZGxlLCBD
VVJMSU5GT19SRVNQT05TRV9DT0RFLCAmcmVzcG9uc2VDb2RlKTsKKyAgICBsb25nIHJlc3BvbnNl
Q29kZTsKKyAgICBtX2Vycm9yQ29kZSA9IGN1cmxfZWFzeV9nZXRpbmZvKG1faGFuZGxlLCBDVVJM
SU5GT19SRVNQT05TRV9DT0RFLCAmcmVzcG9uc2VDb2RlKTsKKyAgICBpZiAobV9lcnJvckNvZGUg
IT0gQ1VSTEVfT0spCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4g
ZXJyQ2Q7CisgICAgcmV0dXJuIHJlc3BvbnNlQ29kZTsKIH0KIAotQ1VSTGNvZGUgQ3VybEhhbmRs
ZTo6Z2V0Q29udGVudExlbmdodERvd25sb2FkKGxvbmcgbG9uZyYgY29udGVudExlbmd0aCkKK3N0
ZDo6b3B0aW9uYWw8bG9uZyBsb25nPiBDdXJsSGFuZGxlOjpnZXRDb250ZW50TGVuZ2h0RG93bmxv
YWQoKQogewotICAgIENVUkxjb2RlIGVyckNkID0gQ1VSTEVfRkFJTEVEX0lOSVQ7Ci0gICAgY29u
dGVudExlbmd0aCA9IDA7CisgICAgaWYgKCFtX2hhbmRsZSkgeworICAgICAgICBtX2Vycm9yQ29k
ZSA9IENVUkxFX0ZBSUxFRF9JTklUOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAg
IH0KIAotICAgIGlmIChtX2hhbmRsZSkgewotICAgICAgICBkb3VibGUgdG1wQ29udGVudExlbmd0
aCA9IDA7CisgICAgZG91YmxlIGNvbnRlbnRMZW5ndGg7CiAKLSAgICAgICAgZXJyQ2QgPSBjdXJs
X2Vhc3lfZ2V0aW5mbyhtX2hhbmRsZSwgQ1VSTElORk9fQ09OVEVOVF9MRU5HVEhfRE9XTkxPQUQs
ICZ0bXBDb250ZW50TGVuZ3RoKTsKLSAgICAgICAgaWYgKGVyckNkID09IENVUkxFX09LKQotICAg
ICAgICAgICAgY29udGVudExlbmd0aCA9IHN0YXRpY19jYXN0PGxvbmcgbG9uZz4odG1wQ29udGVu
dExlbmd0aCk7Ci0gICAgfQorICAgIG1fZXJyb3JDb2RlID0gY3VybF9lYXN5X2dldGluZm8obV9o
YW5kbGUsIENVUkxJTkZPX0NPTlRFTlRfTEVOR1RIX0RPV05MT0FELCAmY29udGVudExlbmd0aCk7
CisgICAgaWYgKG1fZXJyb3JDb2RlICE9IENVUkxFX09LKQorICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCi0gICAgcmV0dXJuIGVyckNkOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxsb25n
IGxvbmc+KGNvbnRlbnRMZW5ndGgpOwogfQogCi1DVVJMY29kZSBDdXJsSGFuZGxlOjpnZXRIdHRw
QXV0aEF2YWlsKGxvbmcmIGh0dHBBdXRoQXZhaWwpCitzdGQ6Om9wdGlvbmFsPGxvbmc+IEN1cmxI
YW5kbGU6OmdldEh0dHBBdXRoQXZhaWwoKQogewotICAgIENVUkxjb2RlIGVyckNkID0gQ1VSTEVf
RkFJTEVEX0lOSVQ7CisgICAgaWYgKCFtX2hhbmRsZSkgeworICAgICAgICBtX2Vycm9yQ29kZSA9
IENVUkxFX0ZBSUxFRF9JTklUOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0K
IAotICAgIGlmIChtX2hhbmRsZSkKLSAgICAgICAgZXJyQ2QgPSBjdXJsX2Vhc3lfZ2V0aW5mbyht
X2hhbmRsZSwgQ1VSTElORk9fSFRUUEFVVEhfQVZBSUwsICZodHRwQXV0aEF2YWlsKTsKKyAgICBs
b25nIGh0dHBBdXRoQXZhaWxhYmxlOworICAgIG1fZXJyb3JDb2RlID0gY3VybF9lYXN5X2dldGlu
Zm8obV9oYW5kbGUsIENVUkxJTkZPX0hUVFBBVVRIX0FWQUlMLCAmaHR0cEF1dGhBdmFpbGFibGUp
OworICAgIGlmIChtX2Vycm9yQ29kZSAhPSBDVVJMRV9PSykKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAotICAgIHJldHVybiBlcnJDZDsKKyAgICByZXR1cm4gaHR0cEF1dGhBdmFpbGFi
bGU7CiB9CiAKLUNVUkxjb2RlIEN1cmxIYW5kbGU6OmdldFRpbWVzKGRvdWJsZSYgbmFtZWxvb2t1
cCwgZG91YmxlJiBjb25uZWN0LCBkb3VibGUmIGFwcGNvbm5lY3QsIGRvdWJsZSYgcHJldHJhbnNm
ZXIpCitzdGQ6Om9wdGlvbmFsPE5ldHdvcmtMb2FkTWV0cmljcz4gQ3VybEhhbmRsZTo6Z2V0VGlt
ZXMoKQogewotICAgIENVUkxjb2RlIGVyckNkID0gQ1VSTEVfRkFJTEVEX0lOSVQ7CisgICAgZG91
YmxlIG5hbWVMb29rdXAgPSAwLjA7CisgICAgZG91YmxlIGNvbm5lY3QgPSAwLjA7CisgICAgZG91
YmxlIGFwcENvbm5lY3QgPSAwLjA7CisgICAgZG91YmxlIHByZVRyYW5zZmVyID0gMC4wOworICAg
IGRvdWJsZSBzdGFydFRyYW5zZmVyID0gMC4wOwogCi0gICAgaWYgKCFtX2hhbmRsZSkKLSAgICAg
ICAgcmV0dXJuIGVyckNkOworICAgIGlmICghbV9oYW5kbGUpIHsKKyAgICAgICAgbV9lcnJvckNv
ZGUgPSBDVVJMRV9GQUlMRURfSU5JVDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAg
ICB9CisKKyAgICBtX2Vycm9yQ29kZSA9IGN1cmxfZWFzeV9nZXRpbmZvKG1faGFuZGxlLCBDVVJM
SU5GT19OQU1FTE9PS1VQX1RJTUUsICZuYW1lTG9va3VwKTsKKyAgICBpZiAobV9lcnJvckNvZGUg
IT0gQ1VSTEVfT0spCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBtX2Vycm9y
Q29kZSA9IGN1cmxfZWFzeV9nZXRpbmZvKG1faGFuZGxlLCBDVVJMSU5GT19DT05ORUNUX1RJTUUs
ICZjb25uZWN0KTsKKyAgICBpZiAobV9lcnJvckNvZGUgIT0gQ1VSTEVfT0spCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBtX2Vycm9yQ29kZSA9IGN1cmxfZWFzeV9nZXRpbmZv
KG1faGFuZGxlLCBDVVJMSU5GT19BUFBDT05ORUNUX1RJTUUsICZhcHBDb25uZWN0KTsKKyAgICBp
ZiAobV9lcnJvckNvZGUgIT0gQ1VSTEVfT0spCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKLSAgICBlcnJDZCA9IGN1cmxfZWFzeV9nZXRpbmZvKG1faGFuZGxlLCBDVVJMSU5GT19OQU1F
TE9PS1VQX1RJTUUsICZuYW1lbG9va3VwKTsKLSAgICBpZiAoZXJyQ2QgIT0gQ1VSTEVfT0spCi0g
ICAgICAgIHJldHVybiBlcnJDZDsKKyAgICBtX2Vycm9yQ29kZSA9IGN1cmxfZWFzeV9nZXRpbmZv
KG1faGFuZGxlLCBDVVJMSU5GT19QUkVUUkFOU0ZFUl9USU1FLCAmcHJlVHJhbnNmZXIpOworICAg
IGlmIChtX2Vycm9yQ29kZSAhPSBDVVJMRV9PSykKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgIGVyckNkID0gY3VybF9lYXN5X2dldGluZm8obV9oYW5kbGUsIENVUkxJTkZPX0NP
Tk5FQ1RfVElNRSwgJmNvbm5lY3QpOwotICAgIGlmIChlcnJDZCAhPSBDVVJMRV9PSykKLSAgICAg
ICAgcmV0dXJuIGVyckNkOworICAgIG1fZXJyb3JDb2RlID0gY3VybF9lYXN5X2dldGluZm8obV9o
YW5kbGUsIENVUkxJTkZPX1NUQVJUVFJBTlNGRVJfVElNRSwgJnN0YXJ0VHJhbnNmZXIpOworICAg
IGlmIChtX2Vycm9yQ29kZSAhPSBDVVJMRV9PSykKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgIGVyckNkID0gY3VybF9lYXN5X2dldGluZm8obV9oYW5kbGUsIENVUkxJTkZPX0FQ
UENPTk5FQ1RfVElNRSwgJmFwcGNvbm5lY3QpOwotICAgIGlmIChlcnJDZCAhPSBDVVJMRV9PSykK
LSAgICAgICAgcmV0dXJuIGVyckNkOworICAgIE5ldHdvcmtMb2FkTWV0cmljcyBuZXR3b3JrTG9h
ZE1ldHJpY3M7CisKKyAgICBuZXR3b3JrTG9hZE1ldHJpY3MuZG9tYWluTG9va3VwU3RhcnQgPSBT
ZWNvbmRzKDApOworICAgIG5ldHdvcmtMb2FkTWV0cmljcy5kb21haW5Mb29rdXBFbmQgPSBTZWNv
bmRzKG5hbWVMb29rdXApOworICAgIG5ldHdvcmtMb2FkTWV0cmljcy5jb25uZWN0U3RhcnQgPSBT
ZWNvbmRzKG5hbWVMb29rdXApOworICAgIG5ldHdvcmtMb2FkTWV0cmljcy5jb25uZWN0RW5kID0g
U2Vjb25kcyhjb25uZWN0KTsKKworICAgIGlmIChhcHBDb25uZWN0ID4gMC4wKSB7CisgICAgICAg
IG5ldHdvcmtMb2FkTWV0cmljcy5zZWN1cmVDb25uZWN0aW9uU3RhcnQgPSBTZWNvbmRzKGNvbm5l
Y3QpOworICAgICAgICBuZXR3b3JrTG9hZE1ldHJpY3MuY29ubmVjdEVuZCA9IFNlY29uZHMoYXBw
Q29ubmVjdCk7CisgICAgfQogCi0gICAgZXJyQ2QgPSBjdXJsX2Vhc3lfZ2V0aW5mbyhtX2hhbmRs
ZSwgQ1VSTElORk9fUFJFVFJBTlNGRVJfVElNRSwgJnByZXRyYW5zZmVyKTsKLSAgICBpZiAoZXJy
Q2QgIT0gQ1VSTEVfT0spCi0gICAgICAgIHJldHVybiBlcnJDZDsKKyAgICBuZXR3b3JrTG9hZE1l
dHJpY3MucmVxdWVzdFN0YXJ0ID0gbmV0d29ya0xvYWRNZXRyaWNzLmNvbm5lY3RFbmQ7CisgICAg
bmV0d29ya0xvYWRNZXRyaWNzLnJlc3BvbnNlU3RhcnQgPSBTZWNvbmRzKHN0YXJ0VHJhbnNmZXIp
OwogCi0gICAgcmV0dXJuIGVyckNkOworICAgIHJldHVybiBuZXR3b3JrTG9hZE1ldHJpY3M7CiB9
CiAKIGxvbmcgbG9uZyBDdXJsSGFuZGxlOjptYXhDdXJsT2ZmVCgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5oCmluZGV4IGM0NGNmNjI5
MjRiLi4yYjI2ZGRiZThkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxDb250ZXh0LmgKQEAgLTIwMSw2ICsyMDEsNyBAQCBwcml2YXRlOgogLy8g
Q3VybEhhbmRsZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKIGNsYXNzIEhUVFBIZWFkZXJNYXA7CitjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CiAK
IGNsYXNzIEN1cmxIYW5kbGUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEN1cmxIYW5kbGUp
OwpAQCAtMjg2LDEyICsyODcsMTIgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U3NsQ3R4Q2FsbGJh
Y2tGdW5jdGlvbihjdXJsX3NzbF9jdHhfY2FsbGJhY2ssIHZvaWQqKTsKIAogICAgIC8vIFN0YXR1
cwotICAgIFVSTCBnZXRFZmZlY3RpdmVVUkwoKSBjb25zdDsKLSAgICBDVVJMY29kZSBnZXRQcmlt
YXJ5UG9ydChsb25nJik7Ci0gICAgQ1VSTGNvZGUgZ2V0UmVzcG9uc2VDb2RlKGxvbmcmKTsKLSAg
ICBDVVJMY29kZSBnZXRDb250ZW50TGVuZ2h0RG93bmxvYWQobG9uZyBsb25nJik7Ci0gICAgQ1VS
TGNvZGUgZ2V0SHR0cEF1dGhBdmFpbChsb25nJik7Ci0gICAgQ1VSTGNvZGUgZ2V0VGltZXMoZG91
YmxlJiwgZG91YmxlJiwgZG91YmxlJiwgZG91YmxlJik7CisgICAgVVJMIGdldEVmZmVjdGl2ZVVS
TCgpOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IGdldFByaW1hcnlQb3J0KCk7CisgICAg
c3RkOjpvcHRpb25hbDxsb25nPiBnZXRSZXNwb25zZUNvZGUoKTsKKyAgICBzdGQ6Om9wdGlvbmFs
PGxvbmcgbG9uZz4gZ2V0Q29udGVudExlbmdodERvd25sb2FkKCk7CisgICAgc3RkOjpvcHRpb25h
bDxsb25nPiBnZXRIdHRwQXV0aEF2YWlsKCk7CisgICAgc3RkOjpvcHRpb25hbDxOZXR3b3JrTG9h
ZE1ldHJpY3M+IGdldFRpbWVzKCk7CiAKICAgICBzdGF0aWMgbG9uZyBsb25nIG1heEN1cmxPZmZU
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsRG93bmxvYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxEb3dubG9hZC5jcHAKaW5kZXggMGJlMTczZWViZjAuLjVmNWUzZTQ0ZWZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNw
cApAQCAtMTgxLDExICsxODEsMTAgQEAgdm9pZCBDdXJsRG93bmxvYWQ6OmRpZFJlY2VpdmVIZWFk
ZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIpCiAKICAgICBpZiAoaGVhZGVyID09ICJcclxuIiB8fCBo
ZWFkZXIgPT0gIlxuIikgewogCi0gICAgICAgIGxvbmcgaHR0cENvZGUgPSAwOwotICAgICAgICBt
X2N1cmxIYW5kbGUuZ2V0UmVzcG9uc2VDb2RlKGh0dHBDb2RlKTsKKyAgICAgICAgYXV0byBodHRw
Q29kZSA9IG1fY3VybEhhbmRsZS5nZXRSZXNwb25zZUNvZGUoKTsKIAotICAgICAgICBpZiAoaHR0
cENvZGUgPj0gMjAwICYmIGh0dHBDb2RlIDwgMzAwKSB7Ci0gICAgICAgICAgICBVUkwgdXJsID0g
bV9jdXJsSGFuZGxlLmdldEVmZmVjdGl2ZVVSTCgpOworICAgICAgICBpZiAoaHR0cENvZGUgJiYg
Kmh0dHBDb2RlID49IDIwMCAmJiAqaHR0cENvZGUgPCAzMDApIHsKKyAgICAgICAgICAgIGF1dG8g
dXJsID0gbV9jdXJsSGFuZGxlLmdldEVmZmVjdGl2ZVVSTCgpOwogICAgICAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB1cmwgPSB1cmwuaXNv
bGF0ZWRDb3B5KCldIHsKICAgICAgICAgICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIGxvY2FsUmVz
cG9uc2UgPSBwcm90ZWN0ZWRUaGlzLT5nZXRSZXNwb25zZSgpOwogICAgICAgICAgICAgICAgIHBy
b3RlY3RlZFRoaXMtPm1fcmVzcG9uc2VVcmwgPSB1cmw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3Vy
bERlbGVnYXRlLmNwcAppbmRleCA3ZjMwMTM2NmNlMi4uZDBjNjIzYWQzMzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmxE
ZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jl
c291cmNlSGFuZGxlQ3VybERlbGVnYXRlLmNwcApAQCAtMTY0LDE0ICsxNjQsNiBAQCB2b2lkIFJl
c291cmNlSGFuZGxlQ3VybERlbGVnYXRlOjpkaXNwYXRjaFN5bmNocm9ub3VzSm9iKCkKICAgICAv
LyBjdXJsX2Vhc3lfcGVyZm9ybSBibG9ja3MgdW50aWwgdGhlIHRyYW5zZmVyIGlzIGZpbmlzaGVk
LgogICAgIENVUkxjb2RlIHJldCA9IG1fY3VybEhhbmRsZS5wZXJmb3JtKCk7CiAKLSAgICBkb3Vi
bGUgcHJldHJhbnNmZXJUaW1lID0gMDsKLSAgICBkb3VibGUgZG5zTG9va3VwVGltZSA9IDA7Ci0g
ICAgZG91YmxlIGNvbm5lY3RUaW1lID0gMDsKLSAgICBkb3VibGUgYXBwQ29ubmVjdFRpbWUgPSAw
OwotCi0gICAgbV9jdXJsSGFuZGxlLmdldFRpbWVzKHByZXRyYW5zZmVyVGltZSwgZG5zTG9va3Vw
VGltZSwgY29ubmVjdFRpbWUsIGFwcENvbm5lY3RUaW1lKTsKLSAgICBzZXRXZWJUaW1pbmdzKHBy
ZXRyYW5zZmVyVGltZSwgZG5zTG9va3VwVGltZSwgY29ubmVjdFRpbWUsIGFwcENvbm5lY3RUaW1l
KTsKLQogICAgIGlmIChyZXQgIT0gQ1VSTEVfT0spCiAgICAgICAgIG5vdGlmeUZhaWwoKTsKICAg
ICBlbHNlCkBAIC0yNzcsMjAgKzI2OSwxNSBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ3VybERlbGVn
YXRlOjpzZXR1cFJlcXVlc3QoKQogCiB2b2lkIFJlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlOjpu
b3RpZnlGaW5pc2goKQogewotICAgIGRvdWJsZSBwcmV0cmFuc2ZlclRpbWUgPSAwOwotICAgIGRv
dWJsZSBkbnNMb29rdXBUaW1lID0gMDsKLSAgICBkb3VibGUgY29ubmVjdFRpbWUgPSAwOwotICAg
IGRvdWJsZSBhcHBDb25uZWN0VGltZSA9IDA7Ci0KLSAgICBtX2N1cmxIYW5kbGUuZ2V0VGltZXMo
cHJldHJhbnNmZXJUaW1lLCBkbnNMb29rdXBUaW1lLCBjb25uZWN0VGltZSwgYXBwQ29ubmVjdFRp
bWUpOworICAgIE5ldHdvcmtMb2FkTWV0cmljcyBuZXR3b3JrTG9hZE1ldHJpY3MgPSBnZXROZXR3
b3JrTG9hZE1ldHJpY3MoKTsKIAogICAgIGlmIChpc01haW5UaHJlYWQoKSkKLSAgICAgICAgZGlk
RmluaXNoKHByZXRyYW5zZmVyVGltZSwgZG5zTG9va3VwVGltZSwgY29ubmVjdFRpbWUsIGFwcENv
bm5lY3RUaW1lKTsKKyAgICAgICAgZGlkRmluaXNoKG5ldHdvcmtMb2FkTWV0cmljcyk7CiAgICAg
ZWxzZSB7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgcHJldHJhbnNmZXJUaW1lLCBkbnNMb29rdXBUaW1lLCBjb25uZWN0VGltZSwgYXBw
Q29ubmVjdFRpbWVdIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBtZXRyaWNzID0gbmV0d29ya0xvYWRNZXRyaWNzLmlzb2xhdGVkQ29w
eSgpXSB7CiAgICAgICAgICAgICBpZiAoIXByb3RlY3RlZFRoaXMtPm1faGFuZGxlKQogICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRpZEZpbmlzaChw
cmV0cmFuc2ZlclRpbWUsIGRuc0xvb2t1cFRpbWUsIGNvbm5lY3RUaW1lLCBhcHBDb25uZWN0VGlt
ZSk7CisgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaWRGaW5pc2gobWV0cmljcyk7CiAgICAg
ICAgIH0pOwogICAgIH0KIH0KQEAgLTM0OCwxOSArMzM1LDE1IEBAIHN0YXRpYyB2b2lkIHJlbW92
ZUxlYWRpbmdBbmRUcmFpbGluZ1F1b3RlcyhTdHJpbmcmIHZhbHVlKQogCiBib29sIFJlc291cmNl
SGFuZGxlQ3VybERlbGVnYXRlOjpnZXRQcm90ZWN0aW9uU3BhY2UoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsIFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlKQogewotICAg
IENVUkxjb2RlIGVycjsKLQotICAgIGxvbmcgcG9ydCA9IDA7Ci0gICAgZXJyID0gbV9jdXJsSGFu
ZGxlLmdldFByaW1hcnlQb3J0KHBvcnQpOwotICAgIGlmIChlcnIgIT0gQ1VSTEVfT0spCisgICAg
YXV0byBwb3J0ID0gbV9jdXJsSGFuZGxlLmdldFByaW1hcnlQb3J0KCk7CisgICAgaWYgKCFwb3J0
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBsb25nIGF2YWlsYWJsZUF1dGggPSBDVVJM
QVVUSF9OT05FOwotICAgIGVyciA9IG1fY3VybEhhbmRsZS5nZXRIdHRwQXV0aEF2YWlsKGF2YWls
YWJsZUF1dGgpOwotICAgIGlmIChlcnIgIT0gQ1VSTEVfT0spCisgICAgYXV0byBhdmFpbGFibGVB
dXRoID0gbV9jdXJsSGFuZGxlLmdldEh0dHBBdXRoQXZhaWwoKTsKKyAgICBpZiAoIWF2YWlsYWJs
ZUF1dGgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFVSTCB1cmwgPSBtX2N1cmxIYW5k
bGUuZ2V0RWZmZWN0aXZlVVJMKCk7CisgICAgYXV0byB1cmwgPSBtX2N1cmxIYW5kbGUuZ2V0RWZm
ZWN0aXZlVVJMKCk7CiAgICAgaWYgKCF1cmwuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKQEAgLTM4NCwxNiArMzY3LDE2IEBAIGJvb2wgUmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdh
dGU6OmdldFByb3RlY3Rpb25TcGFjZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwCiAKICAg
ICBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZSBhdXRoU2NoZW1lID0gUHJvdGVj
dGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVVbmtub3duOwogCi0gICAgaWYgKGF2YWlsYWJs
ZUF1dGggJiBDVVJMQVVUSF9CQVNJQykKKyAgICBpZiAoKmF2YWlsYWJsZUF1dGggJiBDVVJMQVVU
SF9CQVNJQykKICAgICAgICAgYXV0aFNjaGVtZSA9IFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0
aW9uU2NoZW1lSFRUUEJhc2ljOwotICAgIGlmIChhdmFpbGFibGVBdXRoICYgQ1VSTEFVVEhfRElH
RVNUKQorICAgIGlmICgqYXZhaWxhYmxlQXV0aCAmIENVUkxBVVRIX0RJR0VTVCkKICAgICAgICAg
YXV0aFNjaGVtZSA9IFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lSFRUUERpZ2Vz
dDsKLSAgICBpZiAoYXZhaWxhYmxlQXV0aCAmIENVUkxBVVRIX0dTU05FR09USUFURSkKKyAgICBp
ZiAoKmF2YWlsYWJsZUF1dGggJiBDVVJMQVVUSF9HU1NORUdPVElBVEUpCiAgICAgICAgIGF1dGhT
Y2hlbWUgPSBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZU5lZ290aWF0ZTsKLSAg
ICBpZiAoYXZhaWxhYmxlQXV0aCAmIENVUkxBVVRIX05UTE0pCisgICAgaWYgKCphdmFpbGFibGVB
dXRoICYgQ1VSTEFVVEhfTlRMTSkKICAgICAgICAgYXV0aFNjaGVtZSA9IFByb3RlY3Rpb25TcGFj
ZUF1dGhlbnRpY2F0aW9uU2NoZW1lTlRMTTsKIAotICAgIHByb3RlY3Rpb25TcGFjZSA9IFByb3Rl
Y3Rpb25TcGFjZShob3N0LCBwb3J0LCBzZXJ2ZXJUeXBlLCByZWFsbSwgYXV0aFNjaGVtZSk7Cisg
ICAgcHJvdGVjdGlvblNwYWNlID0gUHJvdGVjdGlvblNwYWNlKGhvc3QsICpwb3J0LCBzZXJ2ZXJU
eXBlLCByZWFsbSwgYXV0aFNjaGVtZSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTQwNyw4
ICszOTAsOSBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlOjpkaWRSZWNlaXZlQWxs
SGVhZGVycyhsb25nIGh0dHBDb2RlLCBsb25nIGxvbmcgYwogewogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAKLSAgICByZXNwb25zZSgpLnNldEV4cGVjdGVkQ29udGVudExlbmd0aChjb250
ZW50TGVuZ3RoKTsKICAgICByZXNwb25zZSgpLnNldFVSTChtX2N1cmxIYW5kbGUuZ2V0RWZmZWN0
aXZlVVJMKCkpOworCisgICAgcmVzcG9uc2UoKS5zZXRFeHBlY3RlZENvbnRlbnRMZW5ndGgoY29u
dGVudExlbmd0aCk7CiAgICAgcmVzcG9uc2UoKS5zZXRIVFRQU3RhdHVzQ29kZShodHRwQ29kZSk7
CiAgICAgcmVzcG9uc2UoKS5zZXRNaW1lVHlwZShleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBl
KHJlc3BvbnNlKCkuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50VHlwZSkp
LmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkpOwogICAgIHJlc3BvbnNlKCkuc2V0VGV4dEVuY29k
aW5nTmFtZShleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUocmVzcG9uc2UoKS5odHRwSGVhZGVy
RmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBlKSkpOwpAQCAtNDkyLDkgKzQ3Niw3IEBA
IHZvaWQgUmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGU6OmhhbmRsZUxvY2FsUmVjZWl2ZVJlc3Bv
bnNlKCkKICAgICAvLyB3aGljaCBtZWFucyB0aGUgUmVzb3VyY2VMb2FkZXIncyByZXNwb25zZSBk
b2VzIG5vdCBjb250YWluIHRoZSBVUkwuCiAgICAgLy8gUnVuIHRoZSBjb2RlIGhlcmUgZm9yIGxv
Y2FsIGZpbGVzIHRvIHJlc29sdmUgdGhlIGlzc3VlLgogICAgIC8vIFRPRE86IFNlZSBpZiB0aGVy
ZSBpcyBhIGJldHRlciBhcHByb2FjaCBmb3IgaGFuZGxpbmcgdGhpcy4KLSAgICBVUkwgdXJsID0g
bV9jdXJsSGFuZGxlLmdldEVmZmVjdGl2ZVVSTCgpOwotICAgIEFTU0VSVCh1cmwuaXNWYWxpZCgp
KTsKLSAgICByZXNwb25zZSgpLnNldFVSTCh1cmwpOworICAgIHJlc3BvbnNlKCkuc2V0VVJMKG1f
Y3VybEhhbmRsZS5nZXRFZmZlY3RpdmVVUkwoKSk7CiAgICAgcmVzcG9uc2UoKS5zZXRSZXNwb25z
ZUZpcmVkKHRydWUpOwogICAgIGlmIChtX2hhbmRsZS0+Y2xpZW50KCkpCiAgICAgICAgIG1faGFu
ZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZVJlc3BvbnNlKG1faGFuZGxlLCBSZXNvdXJjZVJlc3Bv
bnNlKHJlc3BvbnNlKCkpKTsKQEAgLTUyMSw5ICs1MDMsOSBAQCB2b2lkIFJlc291cmNlSGFuZGxl
Q3VybERlbGVnYXRlOjpwcmVwYXJlU2VuZERhdGEoY2hhciogYnVmZmVyLCBzaXplX3QgYmxvY2tT
aXplLAogICAgIG1fd29ya2VyVGhyZWFkQ29uZGl0aW9uVmFyaWFibGUubm90aWZ5T25lKCk7CiB9
CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGU6OmRpZEZpbmlzaChkb3VibGUgcHJl
dHJhbnNmZXJUaW1lLCBkb3VibGUgZG5zTG9va3VwVGltZSwgZG91YmxlIGNvbm5lY3RUaW1lLCBk
b3VibGUgYXBwQ29ubmVjdFRpbWUpCit2b2lkIFJlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlOjpk
aWRGaW5pc2goTmV0d29ya0xvYWRNZXRyaWNzIG5ldHdvcmtMb2FkTWV0cmljcykKIHsKLSAgICBz
ZXRXZWJUaW1pbmdzKHByZXRyYW5zZmVyVGltZSwgZG5zTG9va3VwVGltZSwgY29ubmVjdFRpbWUs
IGFwcENvbm5lY3RUaW1lKTsKKyAgICByZXNwb25zZSgpLnNldERlcHJlY2F0ZWROZXR3b3JrTG9h
ZE1ldHJpY3MobmV0d29ya0xvYWRNZXRyaWNzKTsKIAogICAgIGlmICghbV9oYW5kbGUpCiAgICAg
ICAgIHJldHVybjsKQEAgLTcyMSwxOSArNzAzLDEzIEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDdXJs
RGVsZWdhdGU6OmFwcGx5QXV0aGVudGljYXRpb24oKQogICAgIG1fY3VybEhhbmRsZS5zZXRIdHRw
QXV0aFVzZXJQYXNzKHVzZXIsIHBhc3N3b3JkKTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZUN1
cmxEZWxlZ2F0ZTo6c2V0V2ViVGltaW5ncyhkb3VibGUgcHJldHJhbnNmZXJUaW1lLCBkb3VibGUg
ZG5zTG9va3VwVGltZSwgZG91YmxlIGNvbm5lY3RUaW1lLCBkb3VibGUgYXBwQ29ubmVjdFRpbWUp
CitOZXR3b3JrTG9hZE1ldHJpY3MgUmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGU6OmdldE5ldHdv
cmtMb2FkTWV0cmljcygpCiB7Ci0gICAgcmVzcG9uc2UoKS5kZXByZWNhdGVkTmV0d29ya0xvYWRN
ZXRyaWNzKCkuZG9tYWluTG9va3VwU3RhcnQgPSBTZWNvbmRzKDApOwotICAgIHJlc3BvbnNlKCku
ZGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcygpLmRvbWFpbkxvb2t1cEVuZCA9IFNlY29uZHMo
ZG5zTG9va3VwVGltZSk7Ci0KLSAgICByZXNwb25zZSgpLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1l
dHJpY3MoKS5jb25uZWN0U3RhcnQgPSBTZWNvbmRzKGRuc0xvb2t1cFRpbWUpOwotICAgIHJlc3Bv
bnNlKCkuZGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcygpLmNvbm5lY3RFbmQgPSBTZWNvbmRz
KGNvbm5lY3RUaW1lKTsKKyAgICBOZXR3b3JrTG9hZE1ldHJpY3MgbmV0d29ya0xvYWRNZXRyaWNz
OworICAgIGlmIChhdXRvIG1ldHJpY3MgPSBtX2N1cmxIYW5kbGUuZ2V0VGltZXMoKSkKKyAgICAg
ICAgbmV0d29ya0xvYWRNZXRyaWNzID0gKm1ldHJpY3M7CiAKLSAgICByZXNwb25zZSgpLmRlcHJl
Y2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoKS5yZXF1ZXN0U3RhcnQgPSBTZWNvbmRzKGNvbm5lY3RU
aW1lKTsKLSAgICByZXNwb25zZSgpLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoKS5yZXNw
b25zZVN0YXJ0ID0gU2Vjb25kcyhwcmV0cmFuc2ZlclRpbWUpOwotCi0gICAgaWYgKGFwcENvbm5l
Y3RUaW1lKQotICAgICAgICByZXNwb25zZSgpLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3Mo
KS5zZWN1cmVDb25uZWN0aW9uU3RhcnQgPSBTZWNvbmRzKGNvbm5lY3RUaW1lKTsKKyAgICByZXR1
cm4gbmV0d29ya0xvYWRNZXRyaWNzOwogfQogCiAvKgpAQCAtNzYyLDcgKzczOCw4IEBAIHNpemVf
dCBSZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6ZGlkUmVjZWl2ZUhlYWRlcihTdHJpbmcmJiBo
ZWFkZXIpCiAgICAgKi8KICAgICBpZiAoaGVhZGVyID09IEF0b21pY1N0cmluZygiXHJcbiIpIHx8
IGhlYWRlciA9PSBBdG9taWNTdHJpbmcoIlxuIikpIHsKICAgICAgICAgbG9uZyBodHRwQ29kZSA9
IDA7Ci0gICAgICAgIG1fY3VybEhhbmRsZS5nZXRSZXNwb25zZUNvZGUoaHR0cENvZGUpOworICAg
ICAgICBpZiAoYXV0byBjb2RlID0gbV9jdXJsSGFuZGxlLmdldFJlc3BvbnNlQ29kZSgpKQorICAg
ICAgICAgICAgaHR0cENvZGUgPSAqY29kZTsKIAogICAgICAgICBpZiAoIWh0dHBDb2RlKSB7CiAg
ICAgICAgICAgICAvLyBDb21lcyBoZXJlIHdoZW4gcmVjZWl2aW5nIDIwMCBDb25uZWN0aW9uIEVz
dGFibGlzaGVkLiBKdXN0IHJldHVybi4KQEAgLTc3NSw3ICs3NTIsOCBAQCBzaXplX3QgUmVzb3Vy
Y2VIYW5kbGVDdXJsRGVsZWdhdGU6OmRpZFJlY2VpdmVIZWFkZXIoU3RyaW5nJiYgaGVhZGVyKQog
ICAgICAgICB9CiAKICAgICAgICAgbG9uZyBsb25nIGNvbnRlbnRMZW5ndGggPSAwOwotICAgICAg
ICBtX2N1cmxIYW5kbGUuZ2V0Q29udGVudExlbmdodERvd25sb2FkKGNvbnRlbnRMZW5ndGgpOwor
ICAgICAgICBpZiAoYXV0byBsZW5ndGggPSBtX2N1cmxIYW5kbGUuZ2V0Q29udGVudExlbmdodERv
d25sb2FkKCkpCisgICAgICAgICAgICBjb250ZW50TGVuZ3RoID0gKmxlbmd0aDsKIAogICAgICAg
ICBpZiAoaXNNYWluVGhyZWFkKCkpCiAgICAgICAgICAgICBkaWRSZWNlaXZlQWxsSGVhZGVycyho
dHRwQ29kZSwgY29udGVudExlbmd0aCk7CkBAIC04MTcsMTAgKzc5NSwxMCBAQCBzaXplX3QgUmVz
b3VyY2VIYW5kbGVDdXJsRGVsZWdhdGU6OmRpZFJlY2VpdmVEYXRhKFRocmVhZFNhZmVEYXRhQnVm
ZmVyIGRhdGEpCiAgICAgLy8gdGhpcyBzaG91bGRuJ3QgYmUgbmVjZXNzYXJ5IGJ1dCBhcHBhcmVu
dGx5IGlzLiBDVVJMIHdyaXRlcyB0aGUgZGF0YQogICAgIC8vIG9mIGh0bWwgcGFnZSBldmVuIGlm
IGl0IGlzIGEgcmVkaXJlY3QgdGhhdCB3YXMgaGFuZGxlZCBpbnRlcm5hbGx5CiAgICAgLy8gY2Fu
IGJlIG9ic2VydmVkIGUuZy4gb24gZ21haWwuY29tCi0gICAgbG9uZyBodHRwQ29kZSA9IDA7Ci0g
ICAgQ1VSTGNvZGUgZXJyQ2QgPSBtX2N1cmxIYW5kbGUuZ2V0UmVzcG9uc2VDb2RlKGh0dHBDb2Rl
KTsKLSAgICBpZiAoQ1VSTEVfT0sgPT0gZXJyQ2QgJiYgaHR0cENvZGUgPj0gMzAwICYmIGh0dHBD
b2RlIDwgNDAwKQotICAgICAgICByZXR1cm4gZGF0YS5zaXplKCk7CisgICAgaWYgKGF1dG8gaHR0
cENvZGUgPSBtX2N1cmxIYW5kbGUuZ2V0UmVzcG9uc2VDb2RlKCkpIHsKKyAgICAgICAgaWYgKCpo
dHRwQ29kZSA+PSAzMDAgJiYgKmh0dHBDb2RlIDwgNDAwKQorICAgICAgICAgICAgcmV0dXJuIGRh
dGEuc2l6ZSgpOworICAgIH0KIAogICAgIGlmICghZGF0YS5zaXplKCkpCiAgICAgICAgIHJldHVy
biAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jl
c291cmNlSGFuZGxlQ3VybERlbGVnYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGUuaAppbmRleCAzYmVkNDlhMjU5ZC4u
MTY3YTM3OGMxOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZS5oCkBAIC04MCw3
ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBoYW5kbGVMb2NhbFJlY2VpdmVSZXNwb25zZSgp
OwogICAgIHZvaWQgcHJlcGFyZVNlbmREYXRhKGNoYXIqLCBzaXplX3QgYmxvY2tTaXplLCBzaXpl
X3QgbnVtYmVyT2ZCbG9ja3MpOwogCi0gICAgdm9pZCBkaWRGaW5pc2goZG91YmxlLCBkb3VibGUs
IGRvdWJsZSwgZG91YmxlKTsKKyAgICB2b2lkIGRpZEZpbmlzaChOZXR3b3JrTG9hZE1ldHJpY3Mp
OwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBTdHJpbmcmIGRvbWFpbiwgaW50IGVycm9yQ29kZSwg
Y29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9u
LCB1bnNpZ25lZCBzc2xFcnJvcnMpOwogCiAgICAgdm9pZCBoYW5kbGVEYXRhVVJMKCk7CkBAIC05
MSw3ICs5MSw3IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IGdldEZvcm1FbGVtZW50c0NvdW50KCk7
CiAgICAgdm9pZCBzZXR1cEZvcm1EYXRhKGJvb2wpOwogICAgIHZvaWQgYXBwbHlBdXRoZW50aWNh
dGlvbigpOwotICAgIHZvaWQgc2V0V2ViVGltaW5ncyhkb3VibGUsIGRvdWJsZSwgZG91YmxlLCBk
b3VibGUpOworICAgIE5ldHdvcmtMb2FkTWV0cmljcyBnZXROZXR3b3JrTG9hZE1ldHJpY3MoKTsK
IAogICAgIHNpemVfdCBkaWRSZWNlaXZlSGVhZGVyKFN0cmluZyYmKTsKICAgICBzaXplX3QgZGlk
UmVjZWl2ZURhdGEoVGhyZWFkU2FmZURhdGFCdWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVzcG9uc2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlLmgKaW5kZXggYzdi
YTU0YTY2NTAuLmI2M2QyOGEwYWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlLmgKQEAgLTUwLDYgKzUwLDggQEAg
cHVibGljOgogCiAgICAgdm9pZCBhcHBlbmRIVFRQSGVhZGVyRmllbGQoY29uc3QgU3RyaW5nJik7
CiAKKyAgICB2b2lkIHNldERlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MpIHsgbV9uZXR3b3JrTG9hZE1ldHJpY3Mg
PSBuZXR3b3JrTG9hZE1ldHJpY3M7IH0KKwogICAgIGJvb2wgaXNSZWRpcmVjdGlvbigpIGNvbnN0
OwogICAgIGJvb2wgaXNOb3RNb2RpZmllZCgpIGNvbnN0OwogICAgIGJvb2wgaXNVbmF1dGhvcml6
ZWQoKSBjb25zdDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>