<?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>183541</bug_id>
          
          <creation_ts>2018-03-10 06:07:31 -0800</creation_ts>
          <short_desc>[Win] Use SRWLOCK and CONDITION_VARIABLE to simplify implementation</short_desc>
          <delta_ts>2018-03-12 17:24:29 -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>New Bugs</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="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>achristensen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>lforschler</cc>
    
    <cc>mark.lam</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1405468</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-03-10 06:07:31 -0800</bug_when>
    <thetext>[Win] Use SRWLOCK and CONDITION_VARIABLE to simplify implementation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405469</commentid>
    <comment_count>1</comment_count>
      <attachid>335511</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-03-10 06:13:05 -0800</bug_when>
    <thetext>Created attachment 335511
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405470</commentid>
    <comment_count>2</comment_count>
      <attachid>335512</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-03-10 06:39:02 -0800</bug_when>
    <thetext>Created attachment 335512
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405545</commentid>
    <comment_count>3</comment_count>
      <attachid>335512</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-03-10 23:38:33 -0800</bug_when>
    <thetext>Comment on attachment 335512
Patch

Thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405546</commentid>
    <comment_count>4</comment_count>
      <attachid>335512</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-11 00:03:34 -0800</bug_when>
    <thetext>Comment on attachment 335512
Patch

Clearing flags on attachment: 335512

Committed r229515: &lt;https://trac.webkit.org/changeset/229515&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405547</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-11 00:03:36 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405997</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-03-12 17:24:29 -0700</bug_when>
    <thetext>&lt;rdar://problem/38397862&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335511</attachid>
            <date>2018-03-10 06:13:05 -0800</date>
            <delta_ts>2018-03-10 06:39:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183541-20180310231304.patch</filename>
            <type>text/plain</type>
            <size>12584</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5NTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDIzZTM0OWNlMjk1ZWU4ZmZhYTA5OWZk
ZDdmMzA3YmI4NWUxZWZiMmQuLjFkMjAzNTNkOWUyMTUxNWExZmVmNzdjMDQzN2EzNGQ0OWQ2YzBi
MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTgtMDMtMTAgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW1dpbl0gVXNlIFNSV0xPQ0sgYW5kIENPTkRJ
VElPTl9WQVJJQUJMRSB0byBzaW1wbGlmeSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNTQxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWZ0ZXIgV2luZG93cyBWaXN0YSwgV2lu
ZG93cyBvZmZlcnMgU1JXTE9DSyBhbmQgQ09ORElUSU9OX1ZBUklBQkxFLgorICAgICAgICBUaGV5
IGNhbiBzaW1wbGlmeSB0aGUgaW1wbGVtZW50YXRpb24gb2Ygb3VyIFdURjo6TXV0ZXggYW5kIFdU
Rjo6VGhyZWFkQ29uZGl0aW9uLgorCisgICAgICAgIEMrKyBzdGQ6Om11dGV4IGFuZCBzdGQ6OmNv
bmRpdGlvbl92YXJpYWJsZSB1c2VzIHN0ZDo6Y2hyb25vIGZvciB0aGVpciB0aW1lZAorICAgICAg
ICBmdW5jdGlvbnMuIFNpbmNlIHN0ZDo6Y2hyb25vIGlzIG5vdCBvdmVyZmxvdy1hd2FyZSwgd2Ug
Y2Fubm90IHJlbGlhYmx5IHVzZQorICAgICAgICB0aGlzIGZ1bmN0aW9uYWxpdGllcy4gVGhpcyBp
cyB3aHkgd2Ugc3RpbGwga2VlcCBXVEY6Ok11dGV4IGFuZCBXVEY6OlRocmVhZENvbmRpdGlvbi4K
KyAgICAgICAgVGhleSBhcmUgdXNlZCBmb3IgUGFya2luZ0xvdC4KKworICAgICAgICAqIHd0Zi9U
aHJlYWRpbmdQcmltaXRpdmVzLmg6CisgICAgICAgICogd3RmL1RocmVhZGluZ1dpbi5jcHA6Cisg
ICAgICAgIChXVEY6Ok11dGV4OjpNdXRleCk6CisgICAgICAgIChXVEY6Ok11dGV4Ojp+TXV0ZXgp
OgorICAgICAgICAoV1RGOjpNdXRleDo6bG9jayk6CisgICAgICAgIChXVEY6Ok11dGV4Ojp0cnlM
b2NrKToKKyAgICAgICAgKFdURjo6TXV0ZXg6OnVubG9jayk6CisgICAgICAgIChXVEY6OmFic29s
dXRlVGltZVRvV2FpdFRpbWVvdXRJbnRlcnZhbCk6CisgICAgICAgIChXVEY6OlRocmVhZENvbmRp
dGlvbjo6VGhyZWFkQ29uZGl0aW9uKToKKyAgICAgICAgKFdURjo6VGhyZWFkQ29uZGl0aW9uOjp+
VGhyZWFkQ29uZGl0aW9uKToKKyAgICAgICAgKFdURjo6VGhyZWFkQ29uZGl0aW9uOjp3YWl0KToK
KyAgICAgICAgKFdURjo6VGhyZWFkQ29uZGl0aW9uOjp0aW1lZFdhaXQpOgorICAgICAgICAoV1RG
OjpUaHJlYWRDb25kaXRpb246OnNpZ25hbCk6CisgICAgICAgIChXVEY6OlRocmVhZENvbmRpdGlv
bjo6YnJvYWRjYXN0KToKKyAgICAgICAgKFdURjo6UGxhdGZvcm1Db25kaXRpb246OnRpbWVkV2Fp
dCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlBsYXRmb3JtQ29uZGl0aW9uOjpzaWduYWwpOiBE
ZWxldGVkLgorCiAyMDE4LTAzLTA5ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbUmUtbGFuZGluZ10gUHJlcGFyZSBMTEludCBjb2RlIHRvIHN1cHBvcnQgcG9pbnRl
ciBwcm9maWxpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQcmltaXRp
dmVzLmggYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgKaW5kZXggMjhmNDc5
YmU2NTNkYjM5NTA4ZmMzZGNjMzJiNGE5NmI5NjhiZGNmNS4uZmRmNjA3ZmIzZDg3OTQzZGYzZWI2
ODY3MTgzYTA5Y2I4YmI5NmRkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5n
UHJpbWl0aXZlcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaApA
QCAtNTUsMjggKzU1LDE1IEBAIHVzaW5nIFBsYXRmb3JtQ29uZGl0aW9uID0gcHRocmVhZF9jb25k
X3Q7CiAjZWxpZiBPUyhXSU5ET1dTKQogdXNpbmcgVGhyZWFkSWRlbnRpZmllciA9IHVpbnQzMl90
OwogdXNpbmcgUGxhdGZvcm1UaHJlYWRIYW5kbGUgPSBIQU5ETEU7Ci1zdHJ1Y3QgUGxhdGZvcm1N
dXRleCB7Ci0gICAgQ1JJVElDQUxfU0VDVElPTiBtX2ludGVybmFsTXV0ZXg7Ci0gICAgc2l6ZV90
IG1fcmVjdXJzaW9uQ291bnQ7Ci19Owotc3RydWN0IFBsYXRmb3JtQ29uZGl0aW9uIHsKLSAgICBz
aXplX3QgbV93YWl0ZXJzR29uZTsKLSAgICBzaXplX3QgbV93YWl0ZXJzQmxvY2tlZDsKLSAgICBz
aXplX3QgbV93YWl0ZXJzVG9VbmJsb2NrOyAKLSAgICBIQU5ETEUgbV9ibG9ja0xvY2s7Ci0gICAg
SEFORExFIG1fYmxvY2tRdWV1ZTsKLSAgICBIQU5ETEUgbV91bmJsb2NrTG9jazsKLQotICAgIGJv
b2wgdGltZWRXYWl0KFBsYXRmb3JtTXV0ZXgmLCBEV09SRCBkdXJhdGlvbk1pbGxpc2Vjb25kcyk7
Ci0gICAgdm9pZCBzaWduYWwoYm9vbCB1bmJsb2NrQWxsKTsKLX07Cit1c2luZyBQbGF0Zm9ybU11
dGV4ID0gU1JXTE9DSzsKK3VzaW5nIFBsYXRmb3JtQ29uZGl0aW9uID0gQ09ORElUSU9OX1ZBUklB
QkxFOwogI2Vsc2UKLXR5cGVkZWYgdm9pZCogUGxhdGZvcm1NdXRleDsKLXR5cGVkZWYgdm9pZCog
UGxhdGZvcm1Db25kaXRpb247CisjZXJyb3IgIk5vdCBzdXBwb3J0ZWQgcGxhdGZvcm0iCiAjZW5k
aWYKLSAgICAKKwogY2xhc3MgTXV0ZXggewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE11dGV4
KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTXV0
ZXgpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdURl9FWFBP
UlRfUFJJVkFURSBNdXRleCgpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB+TXV0ZXgoKTsKQEAg
LTg1LDggKzcyLDggQEAgY2xhc3MgTXV0ZXggewogICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29s
IHRyeUxvY2soKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCB1bmxvY2soKTsKIAotcHVi
bGljOgogICAgIFBsYXRmb3JtTXV0ZXgmIGltcGwoKSB7IHJldHVybiBtX211dGV4OyB9CisKIHBy
aXZhdGU6CiAgICAgUGxhdGZvcm1NdXRleCBtX211dGV4OwogfTsKQEAgLTk1LDYgKzgyLDcgQEAg
dHlwZWRlZiBMb2NrZXI8TXV0ZXg+IE11dGV4TG9ja2VyOwogCiBjbGFzcyBUaHJlYWRDb25kaXRp
b24gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRocmVhZENvbmRpdGlvbik7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFRo
cmVhZENvbmRpdGlvbigpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB+VGhyZWFkQ29uZGl0aW9u
KCk7CkBAIC0xMDksMTkgKzk3LDEwIEBAIGNsYXNzIFRocmVhZENvbmRpdGlvbiB7CiAgICAgUGxh
dGZvcm1Db25kaXRpb24gbV9jb25kaXRpb247CiB9OwogCi0jaWYgT1MoV0lORE9XUykKLS8vIFJl
dHVybnMgYW4gaW50ZXJ2YWwgaW4gbWlsbGlzZWNvbmRzIHN1aXRhYmxlIGZvciBwYXNzaW5nIHRv
IG9uZSBvZiB0aGUgV2luMzIgd2FpdCBmdW5jdGlvbnMgKGUuZy4sIDo6V2FpdEZvclNpbmdsZU9i
amVjdCkuCi1XVEZfRVhQT1JUX1BSSVZBVEUgRFdPUkQgYWJzb2x1dGVUaW1lVG9XYWl0VGltZW91
dEludGVydmFsKFdhbGxUaW1lIGFic29sdXRlVGltZSk7Ci0jZW5kaWYKLQogfSAvLyBuYW1lc3Bh
Y2UgV1RGCiAKIHVzaW5nIFdURjo6TXV0ZXg7CiB1c2luZyBXVEY6Ok11dGV4TG9ja2VyOwogdXNp
bmcgV1RGOjpUaHJlYWRDb25kaXRpb247CiAKLSNpZiBPUyhXSU5ET1dTKQotdXNpbmcgV1RGOjph
YnNvbHV0ZVRpbWVUb1dhaXRUaW1lb3V0SW50ZXJ2YWw7Ci0jZW5kaWYKLQogI2VuZGlmIC8vIFRo
cmVhZGluZ1ByaW1pdGl2ZXNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5n
V2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1dpbi5jcHAKaW5kZXggNmVkZGZkNmMy
OTBmMjA1MmM4ODJjMTYzMzFkYjQxZjUyNmFlOGIxYS4uZTMyMGU1ODU0NjM5NmEyYTI1ZjU5YWRh
NzBmYWM1OTk1MWE5YjE3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nV2lu
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdXaW4uY3BwCkBAIC0zNjcsMjI2ICsz
NjcsODIgQEAgdm9pZCBUaHJlYWQ6OmRlc3RydWN0VExTKHZvaWQqIGRhdGEpCiAKIE11dGV4OjpN
dXRleCgpCiB7Ci0gICAgbV9tdXRleC5tX3JlY3Vyc2lvbkNvdW50ID0gMDsKLSAgICBJbml0aWFs
aXplQ3JpdGljYWxTZWN0aW9uKCZtX211dGV4Lm1faW50ZXJuYWxNdXRleCk7CisgICAgSW5pdGlh
bGl6ZVNSV0xvY2soJm1fbXV0ZXgpOwogfQogCiBNdXRleDo6fk11dGV4KCkKIHsKLSAgICBEZWxl
dGVDcml0aWNhbFNlY3Rpb24oJm1fbXV0ZXgubV9pbnRlcm5hbE11dGV4KTsKIH0KIAogdm9pZCBN
dXRleDo6bG9jaygpCiB7Ci0gICAgRW50ZXJDcml0aWNhbFNlY3Rpb24oJm1fbXV0ZXgubV9pbnRl
cm5hbE11dGV4KTsKLSAgICArK21fbXV0ZXgubV9yZWN1cnNpb25Db3VudDsKKyAgICBBY3F1aXJl
U1JXTG9ja0V4Y2x1c2l2ZSgmbV9tdXRleCk7CiB9Ci0gICAgCi0jcHJhZ21hIHdhcm5pbmcoc3Vw
cHJlc3M6IDI2MTE1KQorCiBib29sIE11dGV4Ojp0cnlMb2NrKCkKIHsKLSAgICAvLyBUaGlzIG1l
dGhvZCBpcyBtb2RlbGVkIGFmdGVyIHRoZSBiZWhhdmlvciBvZiBwdGhyZWFkX211dGV4X3RyeWxv
Y2ssCi0gICAgLy8gd2hpY2ggd2lsbCByZXR1cm4gYW4gZXJyb3IgaWYgdGhlIGxvY2sgaXMgYWxy
ZWFkeSBvd25lZCBieSB0aGUKLSAgICAvLyBjdXJyZW50IHRocmVhZC4gIFNpbmNlIHRoZSBwcmlt
aXRpdmUgV2luMzIgJ1RyeUVudGVyQ3JpdGljYWxTZWN0aW9uJwotICAgIC8vIHRyZWF0cyB0aGlz
IGFzIGEgc3VjY2Vzc2Z1bCBjYXNlLCBpdCBjaGFuZ2VzIHRoZSBiZWhhdmlvciBvZiBzZXZlcmFs
Ci0gICAgLy8gdGVzdHMgaW4gV2ViS2l0IHRoYXQgY2hlY2sgdG8gc2VlIGlmIHRoZSBjdXJyZW50
IHRocmVhZCBhbHJlYWR5Ci0gICAgLy8gb3duZWQgdGhpcyBtdXRleCAoc2VlIGUuZy4sIEljb25E
YXRhYmFzZTo6Z2V0T3JDcmVhdGVJY29uUmVjb3JkKQotICAgIERXT1JEIHJlc3VsdCA9IFRyeUVu
dGVyQ3JpdGljYWxTZWN0aW9uKCZtX211dGV4Lm1faW50ZXJuYWxNdXRleCk7Ci0gICAgCi0gICAg
aWYgKHJlc3VsdCAhPSAwKSB7ICAgICAgIC8vIFdlIGdvdCB0aGUgbG9jawotICAgICAgICAvLyBJ
ZiB0aGlzIHRocmVhZCBhbHJlYWR5IGhhZCB0aGUgbG9jaywgd2UgbXVzdCB1bmxvY2sgYW5kCi0g
ICAgICAgIC8vIHJldHVybiBmYWxzZSBzbyB0aGF0IHdlIG1pbWljIHRoZSBiZWhhdmlvciBvZiBQ
T1NJWCdzCi0gICAgICAgIC8vIHB0aHJlYWRfbXV0ZXhfdHJ5bG9jazoKLSAgICAgICAgaWYgKG1f
bXV0ZXgubV9yZWN1cnNpb25Db3VudCA+IDApIHsKLSAgICAgICAgICAgIExlYXZlQ3JpdGljYWxT
ZWN0aW9uKCZtX211dGV4Lm1faW50ZXJuYWxNdXRleCk7Ci0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIH0KLQotICAgICAgICArK21fbXV0ZXgubV9yZWN1cnNpb25Db3VudDsKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVy
biBUcnlBY3F1aXJlU1JXTG9ja0V4Y2x1c2l2ZSgmbV9tdXRleCk7CiB9CiAKIHZvaWQgTXV0ZXg6
OnVubG9jaygpCiB7Ci0gICAgQVNTRVJUKG1fbXV0ZXgubV9yZWN1cnNpb25Db3VudCk7Ci0gICAg
LS1tX211dGV4Lm1fcmVjdXJzaW9uQ291bnQ7Ci0gICAgTGVhdmVDcml0aWNhbFNlY3Rpb24oJm1f
bXV0ZXgubV9pbnRlcm5hbE11dGV4KTsKKyAgICBSZWxlYXNlU1JXTG9ja0V4Y2x1c2l2ZSgmbV9t
dXRleCk7CiB9CiAKLWJvb2wgUGxhdGZvcm1Db25kaXRpb246OnRpbWVkV2FpdChQbGF0Zm9ybU11
dGV4JiBtdXRleCwgRFdPUkQgZHVyYXRpb25NaWxsaXNlY29uZHMpCisvLyBSZXR1cm5zIGFuIGlu
dGVydmFsIGluIG1pbGxpc2Vjb25kcyBzdWl0YWJsZSBmb3IgcGFzc2luZyB0byBvbmUgb2YgdGhl
IFdpbjMyIHdhaXQgZnVuY3Rpb25zIChlLmcuLCA6OldhaXRGb3JTaW5nbGVPYmplY3QpLgorc3Rh
dGljIERXT1JEIGFic29sdXRlVGltZVRvV2FpdFRpbWVvdXRJbnRlcnZhbChXYWxsVGltZSBhYnNv
bHV0ZVRpbWUpCiB7Ci0gICAgLy8gRW50ZXIgdGhlIHdhaXQgc3RhdGUuCi0gICAgRFdPUkQgcmVz
ID0gV2FpdEZvclNpbmdsZU9iamVjdChtX2Jsb2NrTG9jaywgSU5GSU5JVEUpOwotICAgIEFTU0VS
VF9VTlVTRUQocmVzLCByZXMgPT0gV0FJVF9PQkpFQ1RfMCk7Ci0gICAgKyttX3dhaXRlcnNCbG9j
a2VkOwotICAgIHJlcyA9IFJlbGVhc2VTZW1hcGhvcmUobV9ibG9ja0xvY2ssIDEsIDApOwotICAg
IEFTU0VSVF9VTlVTRUQocmVzLCByZXMpOwotCi0gICAgLS1tdXRleC5tX3JlY3Vyc2lvbkNvdW50
OwotICAgIExlYXZlQ3JpdGljYWxTZWN0aW9uKCZtdXRleC5tX2ludGVybmFsTXV0ZXgpOwotCi0g
ICAgLy8gTWFpbiB3YWl0IC0gdXNlIHRpbWVvdXQuCi0gICAgYm9vbCB0aW1lZE91dCA9IChXYWl0
Rm9yU2luZ2xlT2JqZWN0KG1fYmxvY2tRdWV1ZSwgZHVyYXRpb25NaWxsaXNlY29uZHMpID09IFdB
SVRfVElNRU9VVCk7Ci0KLSAgICByZXMgPSBXYWl0Rm9yU2luZ2xlT2JqZWN0KG1fdW5ibG9ja0xv
Y2ssIElORklOSVRFKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlcywgcmVzID09IFdBSVRfT0JKRUNU
XzApOwotCi0gICAgaW50IHNpZ25hbHNMZWZ0ID0gbV93YWl0ZXJzVG9VbmJsb2NrOwotCi0gICAg
aWYgKG1fd2FpdGVyc1RvVW5ibG9jaykKLSAgICAgICAgLS1tX3dhaXRlcnNUb1VuYmxvY2s7Ci0g
ICAgZWxzZSBpZiAoKyttX3dhaXRlcnNHb25lID09IChJTlRfTUFYIC8gMikpIHsgLy8gdGltZW91
dC9jYW5jZWxlZCBvciBzcHVyaW91cyBzZW1hcGhvcmUKLSAgICAgICAgLy8gdGltZW91dCBvciBz
cHVyaW91cyB3YWtldXAgb2NjdXJlZCwgbm9ybWFsaXplIHRoZSBtX3dhaXRlcnNHb25lIGNvdW50
Ci0gICAgICAgIC8vIHRoaXMgbWF5IG9jY3VyIGlmIG1hbnkgY2FsbHMgdG8gd2FpdCB3aXRoIGEg
dGltZW91dCBhcmUgbWFkZSBhbmQKLSAgICAgICAgLy8gbm8gY2FsbCB0byBub3RpZnlfKiBpcyBt
YWRlCi0gICAgICAgIHJlcyA9IFdhaXRGb3JTaW5nbGVPYmplY3QobV9ibG9ja0xvY2ssIElORklO
SVRFKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChyZXMsIHJlcyA9PSBXQUlUX09CSkVDVF8wKTsK
LSAgICAgICAgbV93YWl0ZXJzQmxvY2tlZCAtPSBtX3dhaXRlcnNHb25lOwotICAgICAgICByZXMg
PSBSZWxlYXNlU2VtYXBob3JlKG1fYmxvY2tMb2NrLCAxLCAwKTsKLSAgICAgICAgQVNTRVJUX1VO
VVNFRChyZXMsIHJlcyk7Ci0gICAgICAgIG1fd2FpdGVyc0dvbmUgPSAwOwotICAgIH0KLQotICAg
IHJlcyA9IFJlbGVhc2VNdXRleChtX3VuYmxvY2tMb2NrKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJl
cywgcmVzKTsKLQotICAgIGlmIChzaWduYWxzTGVmdCA9PSAxKSB7Ci0gICAgICAgIHJlcyA9IFJl
bGVhc2VTZW1hcGhvcmUobV9ibG9ja0xvY2ssIDEsIDApOyAvLyBPcGVuIHRoZSBnYXRlLgotICAg
ICAgICBBU1NFUlRfVU5VU0VEKHJlcywgcmVzKTsKLSAgICB9Ci0KLSAgICBFbnRlckNyaXRpY2Fs
U2VjdGlvbiAoJm11dGV4Lm1faW50ZXJuYWxNdXRleCk7Ci0gICAgKyttdXRleC5tX3JlY3Vyc2lv
bkNvdW50OwotCi0gICAgcmV0dXJuICF0aW1lZE91dDsKLX0KLQotdm9pZCBQbGF0Zm9ybUNvbmRp
dGlvbjo6c2lnbmFsKGJvb2wgdW5ibG9ja0FsbCkKLXsKLSAgICB1bnNpZ25lZCBzaWduYWxzVG9J
c3N1ZSA9IDA7Ci0KLSAgICBEV09SRCByZXMgPSBXYWl0Rm9yU2luZ2xlT2JqZWN0KG1fdW5ibG9j
a0xvY2ssIElORklOSVRFKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlcywgcmVzID09IFdBSVRfT0JK
RUNUXzApOwotCi0gICAgaWYgKG1fd2FpdGVyc1RvVW5ibG9jaykgeyAvLyB0aGUgZ2F0ZSBpcyBh
bHJlYWR5IGNsb3NlZAotICAgICAgICBpZiAoIW1fd2FpdGVyc0Jsb2NrZWQpIHsgLy8gbm8tb3AK
LSAgICAgICAgICAgIHJlcyA9IFJlbGVhc2VNdXRleChtX3VuYmxvY2tMb2NrKTsKLSAgICAgICAg
ICAgIEFTU0VSVF9VTlVTRUQocmVzLCByZXMpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9CisgICAgV2FsbFRpbWUgY3VycmVudFRpbWUgPSBXYWxsVGltZTo6bm93KCk7CiAKLSAgICAg
ICAgaWYgKHVuYmxvY2tBbGwpIHsKLSAgICAgICAgICAgIHNpZ25hbHNUb0lzc3VlID0gbV93YWl0
ZXJzQmxvY2tlZDsKLSAgICAgICAgICAgIG1fd2FpdGVyc1RvVW5ibG9jayArPSBtX3dhaXRlcnNC
bG9ja2VkOwotICAgICAgICAgICAgbV93YWl0ZXJzQmxvY2tlZCA9IDA7Ci0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICBzaWduYWxzVG9Jc3N1ZSA9IDE7Ci0gICAgICAgICAgICArK21fd2Fp
dGVyc1RvVW5ibG9jazsKLSAgICAgICAgICAgIC0tbV93YWl0ZXJzQmxvY2tlZDsKLSAgICAgICAg
fQotICAgIH0gZWxzZSBpZiAobV93YWl0ZXJzQmxvY2tlZCA+IG1fd2FpdGVyc0dvbmUpIHsKLSAg
ICAgICAgcmVzID0gV2FpdEZvclNpbmdsZU9iamVjdChtX2Jsb2NrTG9jaywgSU5GSU5JVEUpOyAv
LyBDbG9zZSB0aGUgZ2F0ZS4KLSAgICAgICAgQVNTRVJUX1VOVVNFRChyZXMsIHJlcyA9PSBXQUlU
X09CSkVDVF8wKTsKLSAgICAgICAgaWYgKG1fd2FpdGVyc0dvbmUgIT0gMCkgewotICAgICAgICAg
ICAgbV93YWl0ZXJzQmxvY2tlZCAtPSBtX3dhaXRlcnNHb25lOwotICAgICAgICAgICAgbV93YWl0
ZXJzR29uZSA9IDA7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHVuYmxvY2tBbGwpIHsKLSAgICAg
ICAgICAgIHNpZ25hbHNUb0lzc3VlID0gbV93YWl0ZXJzQmxvY2tlZDsKLSAgICAgICAgICAgIG1f
d2FpdGVyc1RvVW5ibG9jayA9IG1fd2FpdGVyc0Jsb2NrZWQ7Ci0gICAgICAgICAgICBtX3dhaXRl
cnNCbG9ja2VkID0gMDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHNpZ25hbHNUb0lz
c3VlID0gMTsKLSAgICAgICAgICAgIG1fd2FpdGVyc1RvVW5ibG9jayA9IDE7Ci0gICAgICAgICAg
ICAtLW1fd2FpdGVyc0Jsb2NrZWQ7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgeyAvLyBOby1vcC4K
LSAgICAgICAgcmVzID0gUmVsZWFzZU11dGV4KG1fdW5ibG9ja0xvY2spOwotICAgICAgICBBU1NF
UlRfVU5VU0VEKHJlcywgcmVzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICAvLyBUaW1l
IGlzIGluIHRoZSBwYXN0IC0gcmV0dXJuIGltbWVkaWF0ZWx5LgorICAgIGlmIChhYnNvbHV0ZVRp
bWUgPCBjdXJyZW50VGltZSkKKyAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXMgPSBSZWxlYXNl
TXV0ZXgobV91bmJsb2NrTG9jayk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXMsIHJlcyk7CisgICAg
Ly8gVGltZSBpcyB0b28gZmFyIGluIHRoZSBmdXR1cmUgKGFuZCB3b3VsZCBvdmVyZmxvdyB1bnNp
Z25lZCBsb25nKSAtIHdhaXQgZm9yZXZlci4KKyAgICBpZiAoKGFic29sdXRlVGltZSAtIGN1cnJl
bnRUaW1lKSA+IFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMoSU5UX01BWCkpCisgICAgICAgIHJl
dHVybiBJTkZJTklURTsKIAotICAgIGlmIChzaWduYWxzVG9Jc3N1ZSkgewotICAgICAgICByZXMg
PSBSZWxlYXNlU2VtYXBob3JlKG1fYmxvY2tRdWV1ZSwgc2lnbmFsc1RvSXNzdWUsIDApOwotICAg
ICAgICBBU1NFUlRfVU5VU0VEKHJlcywgcmVzKTsKLSAgICB9CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PERXT1JEPigoYWJzb2x1dGVUaW1lIC0gY3VycmVudFRpbWUpLm1pbGxpc2Vjb25kcygpKTsK
IH0KIAotc3RhdGljIGNvbnN0IGxvbmcgTWF4U2VtYXBob3JlQ291bnQgPSBzdGF0aWNfY2FzdDxs
b25nPih+MFVMID4+IDEpOwotCiBUaHJlYWRDb25kaXRpb246OlRocmVhZENvbmRpdGlvbigpCiB7
Ci0gICAgbV9jb25kaXRpb24ubV93YWl0ZXJzR29uZSA9IDA7Ci0gICAgbV9jb25kaXRpb24ubV93
YWl0ZXJzQmxvY2tlZCA9IDA7Ci0gICAgbV9jb25kaXRpb24ubV93YWl0ZXJzVG9VbmJsb2NrID0g
MDsKLSAgICBtX2NvbmRpdGlvbi5tX2Jsb2NrTG9jayA9IENyZWF0ZVNlbWFwaG9yZSgwLCAxLCAx
LCAwKTsKLSAgICBtX2NvbmRpdGlvbi5tX2Jsb2NrUXVldWUgPSBDcmVhdGVTZW1hcGhvcmUoMCwg
MCwgTWF4U2VtYXBob3JlQ291bnQsIDApOwotICAgIG1fY29uZGl0aW9uLm1fdW5ibG9ja0xvY2sg
PSBDcmVhdGVNdXRleCgwLCAwLCAwKTsKLQotICAgIGlmICghbV9jb25kaXRpb24ubV9ibG9ja0xv
Y2sgfHwgIW1fY29uZGl0aW9uLm1fYmxvY2tRdWV1ZSB8fCAhbV9jb25kaXRpb24ubV91bmJsb2Nr
TG9jaykgewotICAgICAgICBpZiAobV9jb25kaXRpb24ubV9ibG9ja0xvY2spCi0gICAgICAgICAg
ICBDbG9zZUhhbmRsZShtX2NvbmRpdGlvbi5tX2Jsb2NrTG9jayk7Ci0gICAgICAgIGlmIChtX2Nv
bmRpdGlvbi5tX2Jsb2NrUXVldWUpCi0gICAgICAgICAgICBDbG9zZUhhbmRsZShtX2NvbmRpdGlv
bi5tX2Jsb2NrUXVldWUpOwotICAgICAgICBpZiAobV9jb25kaXRpb24ubV91bmJsb2NrTG9jaykK
LSAgICAgICAgICAgIENsb3NlSGFuZGxlKG1fY29uZGl0aW9uLm1fdW5ibG9ja0xvY2spOwotICAg
IH0KKyAgICBJbml0aWFsaXplQ29uZGl0aW9uVmFyaWFibGUoJm1fY29uZGl0aW9uKTsKIH0KIAog
VGhyZWFkQ29uZGl0aW9uOjp+VGhyZWFkQ29uZGl0aW9uKCkKIHsKLSAgICBDbG9zZUhhbmRsZSht
X2NvbmRpdGlvbi5tX2Jsb2NrTG9jayk7Ci0gICAgQ2xvc2VIYW5kbGUobV9jb25kaXRpb24ubV9i
bG9ja1F1ZXVlKTsKLSAgICBDbG9zZUhhbmRsZShtX2NvbmRpdGlvbi5tX3VuYmxvY2tMb2NrKTsK
IH0KIAogdm9pZCBUaHJlYWRDb25kaXRpb246OndhaXQoTXV0ZXgmIG11dGV4KQogewotICAgIG1f
Y29uZGl0aW9uLnRpbWVkV2FpdChtdXRleC5pbXBsKCksIElORklOSVRFKTsKKyAgICBTbGVlcENv
bmRpdGlvblZhcmlhYmxlU1JXKCZtX2NvbmRpdGlvbiwgbXV0ZXguaW1wbCgpLCBJTkZJTklURSwg
MCk7CiB9CiAKIGJvb2wgVGhyZWFkQ29uZGl0aW9uOjp0aW1lZFdhaXQoTXV0ZXgmIG11dGV4LCBX
YWxsVGltZSBhYnNvbHV0ZVRpbWUpCiB7CisgICAgLy8gaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5j
b20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvbXM2ODYzMDQodj12cy44NSkuYXNweAog
ICAgIERXT1JEIGludGVydmFsID0gYWJzb2x1dGVUaW1lVG9XYWl0VGltZW91dEludGVydmFsKGFi
c29sdXRlVGltZSk7Ci0KICAgICBpZiAoIWludGVydmFsKSB7CiAgICAgICAgIC8vIENvbnNpZGVy
IHRoZSB3YWl0IHRvIGhhdmUgdGltZWQgb3V0LCBldmVuIGlmIG91ciBjb25kaXRpb24gaGFzIGFs
cmVhZHkgYmVlbiBzaWduYWxlZCwgdG8KICAgICAgICAgLy8gbWF0Y2ggdGhlIHB0aHJlYWRzIGlt
cGxlbWVudGF0aW9uLgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgcmV0dXJu
IG1fY29uZGl0aW9uLnRpbWVkV2FpdChtdXRleC5pbXBsKCksIGludGVydmFsKTsKKyAgICBpZiAo
U2xlZXBDb25kaXRpb25WYXJpYWJsZVNSVygmbV9jb25kaXRpb24sIG11dGV4LmltcGwoKSwgaW50
ZXJ2YWwsIDApKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBBU1NFUlQoR2V0TGFzdEVycm9y
KCkgPT0gRVJST1JfVElNRU9VVCk7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiB2b2lkIFRocmVh
ZENvbmRpdGlvbjo6c2lnbmFsKCkKIHsKLSAgICBtX2NvbmRpdGlvbi5zaWduYWwoZmFsc2UpOyAv
LyBVbmJsb2NrIG9ubHkgMSB0aHJlYWQuCisgICAgV2FrZUNvbmRpdGlvblZhcmlhYmxlKCZtX2Nv
bmRpdGlvbik7CiB9CiAKIHZvaWQgVGhyZWFkQ29uZGl0aW9uOjpicm9hZGNhc3QoKQogewotICAg
IG1fY29uZGl0aW9uLnNpZ25hbCh0cnVlKTsgLy8gVW5ibG9jayBhbGwgdGhyZWFkcy4KLX0KLQot
RFdPUkQgYWJzb2x1dGVUaW1lVG9XYWl0VGltZW91dEludGVydmFsKFdhbGxUaW1lIGFic29sdXRl
VGltZSkKLXsKLSAgICBXYWxsVGltZSBjdXJyZW50VGltZSA9IFdhbGxUaW1lOjpub3coKTsKLQot
ICAgIC8vIFRpbWUgaXMgaW4gdGhlIHBhc3QgLSByZXR1cm4gaW1tZWRpYXRlbHkuCi0gICAgaWYg
KGFic29sdXRlVGltZSA8IGN1cnJlbnRUaW1lKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIC8v
IFRpbWUgaXMgdG9vIGZhciBpbiB0aGUgZnV0dXJlIChhbmQgd291bGQgb3ZlcmZsb3cgdW5zaWdu
ZWQgbG9uZykgLSB3YWl0IGZvcmV2ZXIuCi0gICAgaWYgKChhYnNvbHV0ZVRpbWUgLSBjdXJyZW50
VGltZSkgPiBTZWNvbmRzOjpmcm9tTWlsbGlzZWNvbmRzKElOVF9NQVgpKQotICAgICAgICByZXR1
cm4gSU5GSU5JVEU7Ci0KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RFdPUkQ+KChhYnNvbHV0ZVRp
bWUgLSBjdXJyZW50VGltZSkubWlsbGlzZWNvbmRzKCkpOworICAgIFdha2VBbGxDb25kaXRpb25W
YXJpYWJsZSgmbV9jb25kaXRpb24pOwogfQogCiAvLyBSZW1vdmUgdGhpcyB3b3JrYXJvdW5kIGNv
ZGUgd2hlbiA8cmRhcjovL3Byb2JsZW0vMzE3OTMyMTM+IGlzIGZpeGVkLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335512</attachid>
            <date>2018-03-10 06:39:02 -0800</date>
            <delta_ts>2018-03-11 00:03:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183541-20180310233901.patch</filename>
            <type>text/plain</type>
            <size>12586</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5NTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDIzZTM0OWNlMjk1ZWU4ZmZhYTA5OWZk
ZDdmMzA3YmI4NWUxZWZiMmQuLjFkMjAzNTNkOWUyMTUxNWExZmVmNzdjMDQzN2EzNGQ0OWQ2YzBi
MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTgtMDMtMTAgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW1dpbl0gVXNlIFNSV0xPQ0sgYW5kIENPTkRJ
VElPTl9WQVJJQUJMRSB0byBzaW1wbGlmeSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNTQxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWZ0ZXIgV2luZG93cyBWaXN0YSwgV2lu
ZG93cyBvZmZlcnMgU1JXTE9DSyBhbmQgQ09ORElUSU9OX1ZBUklBQkxFLgorICAgICAgICBUaGV5
IGNhbiBzaW1wbGlmeSB0aGUgaW1wbGVtZW50YXRpb24gb2Ygb3VyIFdURjo6TXV0ZXggYW5kIFdU
Rjo6VGhyZWFkQ29uZGl0aW9uLgorCisgICAgICAgIEMrKyBzdGQ6Om11dGV4IGFuZCBzdGQ6OmNv
bmRpdGlvbl92YXJpYWJsZSB1c2VzIHN0ZDo6Y2hyb25vIGZvciB0aGVpciB0aW1lZAorICAgICAg
ICBmdW5jdGlvbnMuIFNpbmNlIHN0ZDo6Y2hyb25vIGlzIG5vdCBvdmVyZmxvdy1hd2FyZSwgd2Ug
Y2Fubm90IHJlbGlhYmx5IHVzZQorICAgICAgICB0aGlzIGZ1bmN0aW9uYWxpdGllcy4gVGhpcyBp
cyB3aHkgd2Ugc3RpbGwga2VlcCBXVEY6Ok11dGV4IGFuZCBXVEY6OlRocmVhZENvbmRpdGlvbi4K
KyAgICAgICAgVGhleSBhcmUgdXNlZCBmb3IgUGFya2luZ0xvdC4KKworICAgICAgICAqIHd0Zi9U
aHJlYWRpbmdQcmltaXRpdmVzLmg6CisgICAgICAgICogd3RmL1RocmVhZGluZ1dpbi5jcHA6Cisg
ICAgICAgIChXVEY6Ok11dGV4OjpNdXRleCk6CisgICAgICAgIChXVEY6Ok11dGV4Ojp+TXV0ZXgp
OgorICAgICAgICAoV1RGOjpNdXRleDo6bG9jayk6CisgICAgICAgIChXVEY6Ok11dGV4Ojp0cnlM
b2NrKToKKyAgICAgICAgKFdURjo6TXV0ZXg6OnVubG9jayk6CisgICAgICAgIChXVEY6OmFic29s
dXRlVGltZVRvV2FpdFRpbWVvdXRJbnRlcnZhbCk6CisgICAgICAgIChXVEY6OlRocmVhZENvbmRp
dGlvbjo6VGhyZWFkQ29uZGl0aW9uKToKKyAgICAgICAgKFdURjo6VGhyZWFkQ29uZGl0aW9uOjp+
VGhyZWFkQ29uZGl0aW9uKToKKyAgICAgICAgKFdURjo6VGhyZWFkQ29uZGl0aW9uOjp3YWl0KToK
KyAgICAgICAgKFdURjo6VGhyZWFkQ29uZGl0aW9uOjp0aW1lZFdhaXQpOgorICAgICAgICAoV1RG
OjpUaHJlYWRDb25kaXRpb246OnNpZ25hbCk6CisgICAgICAgIChXVEY6OlRocmVhZENvbmRpdGlv
bjo6YnJvYWRjYXN0KToKKyAgICAgICAgKFdURjo6UGxhdGZvcm1Db25kaXRpb246OnRpbWVkV2Fp
dCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlBsYXRmb3JtQ29uZGl0aW9uOjpzaWduYWwpOiBE
ZWxldGVkLgorCiAyMDE4LTAzLTA5ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbUmUtbGFuZGluZ10gUHJlcGFyZSBMTEludCBjb2RlIHRvIHN1cHBvcnQgcG9pbnRl
ciBwcm9maWxpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQcmltaXRp
dmVzLmggYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgKaW5kZXggMjhmNDc5
YmU2NTNkYjM5NTA4ZmMzZGNjMzJiNGE5NmI5NjhiZGNmNS4uZmRmNjA3ZmIzZDg3OTQzZGYzZWI2
ODY3MTgzYTA5Y2I4YmI5NmRkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5n
UHJpbWl0aXZlcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaApA
QCAtNTUsMjggKzU1LDE1IEBAIHVzaW5nIFBsYXRmb3JtQ29uZGl0aW9uID0gcHRocmVhZF9jb25k
X3Q7CiAjZWxpZiBPUyhXSU5ET1dTKQogdXNpbmcgVGhyZWFkSWRlbnRpZmllciA9IHVpbnQzMl90
OwogdXNpbmcgUGxhdGZvcm1UaHJlYWRIYW5kbGUgPSBIQU5ETEU7Ci1zdHJ1Y3QgUGxhdGZvcm1N
dXRleCB7Ci0gICAgQ1JJVElDQUxfU0VDVElPTiBtX2ludGVybmFsTXV0ZXg7Ci0gICAgc2l6ZV90
IG1fcmVjdXJzaW9uQ291bnQ7Ci19Owotc3RydWN0IFBsYXRmb3JtQ29uZGl0aW9uIHsKLSAgICBz
aXplX3QgbV93YWl0ZXJzR29uZTsKLSAgICBzaXplX3QgbV93YWl0ZXJzQmxvY2tlZDsKLSAgICBz
aXplX3QgbV93YWl0ZXJzVG9VbmJsb2NrOyAKLSAgICBIQU5ETEUgbV9ibG9ja0xvY2s7Ci0gICAg
SEFORExFIG1fYmxvY2tRdWV1ZTsKLSAgICBIQU5ETEUgbV91bmJsb2NrTG9jazsKLQotICAgIGJv
b2wgdGltZWRXYWl0KFBsYXRmb3JtTXV0ZXgmLCBEV09SRCBkdXJhdGlvbk1pbGxpc2Vjb25kcyk7
Ci0gICAgdm9pZCBzaWduYWwoYm9vbCB1bmJsb2NrQWxsKTsKLX07Cit1c2luZyBQbGF0Zm9ybU11
dGV4ID0gU1JXTE9DSzsKK3VzaW5nIFBsYXRmb3JtQ29uZGl0aW9uID0gQ09ORElUSU9OX1ZBUklB
QkxFOwogI2Vsc2UKLXR5cGVkZWYgdm9pZCogUGxhdGZvcm1NdXRleDsKLXR5cGVkZWYgdm9pZCog
UGxhdGZvcm1Db25kaXRpb247CisjZXJyb3IgIk5vdCBzdXBwb3J0ZWQgcGxhdGZvcm0iCiAjZW5k
aWYKLSAgICAKKwogY2xhc3MgTXV0ZXggewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE11dGV4
KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTXV0
ZXgpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdURl9FWFBP
UlRfUFJJVkFURSBNdXRleCgpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB+TXV0ZXgoKTsKQEAg
LTg1LDggKzcyLDggQEAgY2xhc3MgTXV0ZXggewogICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29s
IHRyeUxvY2soKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCB1bmxvY2soKTsKIAotcHVi
bGljOgogICAgIFBsYXRmb3JtTXV0ZXgmIGltcGwoKSB7IHJldHVybiBtX211dGV4OyB9CisKIHBy
aXZhdGU6CiAgICAgUGxhdGZvcm1NdXRleCBtX211dGV4OwogfTsKQEAgLTk1LDYgKzgyLDcgQEAg
dHlwZWRlZiBMb2NrZXI8TXV0ZXg+IE11dGV4TG9ja2VyOwogCiBjbGFzcyBUaHJlYWRDb25kaXRp
b24gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRocmVhZENvbmRpdGlvbik7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFRo
cmVhZENvbmRpdGlvbigpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB+VGhyZWFkQ29uZGl0aW9u
KCk7CkBAIC0xMDksMTkgKzk3LDEwIEBAIGNsYXNzIFRocmVhZENvbmRpdGlvbiB7CiAgICAgUGxh
dGZvcm1Db25kaXRpb24gbV9jb25kaXRpb247CiB9OwogCi0jaWYgT1MoV0lORE9XUykKLS8vIFJl
dHVybnMgYW4gaW50ZXJ2YWwgaW4gbWlsbGlzZWNvbmRzIHN1aXRhYmxlIGZvciBwYXNzaW5nIHRv
IG9uZSBvZiB0aGUgV2luMzIgd2FpdCBmdW5jdGlvbnMgKGUuZy4sIDo6V2FpdEZvclNpbmdsZU9i
amVjdCkuCi1XVEZfRVhQT1JUX1BSSVZBVEUgRFdPUkQgYWJzb2x1dGVUaW1lVG9XYWl0VGltZW91
dEludGVydmFsKFdhbGxUaW1lIGFic29sdXRlVGltZSk7Ci0jZW5kaWYKLQogfSAvLyBuYW1lc3Bh
Y2UgV1RGCiAKIHVzaW5nIFdURjo6TXV0ZXg7CiB1c2luZyBXVEY6Ok11dGV4TG9ja2VyOwogdXNp
bmcgV1RGOjpUaHJlYWRDb25kaXRpb247CiAKLSNpZiBPUyhXSU5ET1dTKQotdXNpbmcgV1RGOjph
YnNvbHV0ZVRpbWVUb1dhaXRUaW1lb3V0SW50ZXJ2YWw7Ci0jZW5kaWYKLQogI2VuZGlmIC8vIFRo
cmVhZGluZ1ByaW1pdGl2ZXNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5n
V2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1dpbi5jcHAKaW5kZXggNmVkZGZkNmMy
OTBmMjA1MmM4ODJjMTYzMzFkYjQxZjUyNmFlOGIxYS4uOTc5OWZjMWViYjM2ZGRkOGQ3NGQwZjhl
MGZkNDUyODkwOTNkY2IyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nV2lu
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdXaW4uY3BwCkBAIC0zNjcsMjI2ICsz
NjcsODIgQEAgdm9pZCBUaHJlYWQ6OmRlc3RydWN0VExTKHZvaWQqIGRhdGEpCiAKIE11dGV4OjpN
dXRleCgpCiB7Ci0gICAgbV9tdXRleC5tX3JlY3Vyc2lvbkNvdW50ID0gMDsKLSAgICBJbml0aWFs
aXplQ3JpdGljYWxTZWN0aW9uKCZtX211dGV4Lm1faW50ZXJuYWxNdXRleCk7CisgICAgSW5pdGlh
bGl6ZVNSV0xvY2soJm1fbXV0ZXgpOwogfQogCiBNdXRleDo6fk11dGV4KCkKIHsKLSAgICBEZWxl
dGVDcml0aWNhbFNlY3Rpb24oJm1fbXV0ZXgubV9pbnRlcm5hbE11dGV4KTsKIH0KIAogdm9pZCBN
dXRleDo6bG9jaygpCiB7Ci0gICAgRW50ZXJDcml0aWNhbFNlY3Rpb24oJm1fbXV0ZXgubV9pbnRl
cm5hbE11dGV4KTsKLSAgICArK21fbXV0ZXgubV9yZWN1cnNpb25Db3VudDsKKyAgICBBY3F1aXJl
U1JXTG9ja0V4Y2x1c2l2ZSgmbV9tdXRleCk7CiB9Ci0gICAgCi0jcHJhZ21hIHdhcm5pbmcoc3Vw
cHJlc3M6IDI2MTE1KQorCiBib29sIE11dGV4Ojp0cnlMb2NrKCkKIHsKLSAgICAvLyBUaGlzIG1l
dGhvZCBpcyBtb2RlbGVkIGFmdGVyIHRoZSBiZWhhdmlvciBvZiBwdGhyZWFkX211dGV4X3RyeWxv
Y2ssCi0gICAgLy8gd2hpY2ggd2lsbCByZXR1cm4gYW4gZXJyb3IgaWYgdGhlIGxvY2sgaXMgYWxy
ZWFkeSBvd25lZCBieSB0aGUKLSAgICAvLyBjdXJyZW50IHRocmVhZC4gIFNpbmNlIHRoZSBwcmlt
aXRpdmUgV2luMzIgJ1RyeUVudGVyQ3JpdGljYWxTZWN0aW9uJwotICAgIC8vIHRyZWF0cyB0aGlz
IGFzIGEgc3VjY2Vzc2Z1bCBjYXNlLCBpdCBjaGFuZ2VzIHRoZSBiZWhhdmlvciBvZiBzZXZlcmFs
Ci0gICAgLy8gdGVzdHMgaW4gV2ViS2l0IHRoYXQgY2hlY2sgdG8gc2VlIGlmIHRoZSBjdXJyZW50
IHRocmVhZCBhbHJlYWR5Ci0gICAgLy8gb3duZWQgdGhpcyBtdXRleCAoc2VlIGUuZy4sIEljb25E
YXRhYmFzZTo6Z2V0T3JDcmVhdGVJY29uUmVjb3JkKQotICAgIERXT1JEIHJlc3VsdCA9IFRyeUVu
dGVyQ3JpdGljYWxTZWN0aW9uKCZtX211dGV4Lm1faW50ZXJuYWxNdXRleCk7Ci0gICAgCi0gICAg
aWYgKHJlc3VsdCAhPSAwKSB7ICAgICAgIC8vIFdlIGdvdCB0aGUgbG9jawotICAgICAgICAvLyBJ
ZiB0aGlzIHRocmVhZCBhbHJlYWR5IGhhZCB0aGUgbG9jaywgd2UgbXVzdCB1bmxvY2sgYW5kCi0g
ICAgICAgIC8vIHJldHVybiBmYWxzZSBzbyB0aGF0IHdlIG1pbWljIHRoZSBiZWhhdmlvciBvZiBQ
T1NJWCdzCi0gICAgICAgIC8vIHB0aHJlYWRfbXV0ZXhfdHJ5bG9jazoKLSAgICAgICAgaWYgKG1f
bXV0ZXgubV9yZWN1cnNpb25Db3VudCA+IDApIHsKLSAgICAgICAgICAgIExlYXZlQ3JpdGljYWxT
ZWN0aW9uKCZtX211dGV4Lm1faW50ZXJuYWxNdXRleCk7Ci0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIH0KLQotICAgICAgICArK21fbXV0ZXgubV9yZWN1cnNpb25Db3VudDsKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVy
biBUcnlBY3F1aXJlU1JXTG9ja0V4Y2x1c2l2ZSgmbV9tdXRleCk7CiB9CiAKIHZvaWQgTXV0ZXg6
OnVubG9jaygpCiB7Ci0gICAgQVNTRVJUKG1fbXV0ZXgubV9yZWN1cnNpb25Db3VudCk7Ci0gICAg
LS1tX211dGV4Lm1fcmVjdXJzaW9uQ291bnQ7Ci0gICAgTGVhdmVDcml0aWNhbFNlY3Rpb24oJm1f
bXV0ZXgubV9pbnRlcm5hbE11dGV4KTsKKyAgICBSZWxlYXNlU1JXTG9ja0V4Y2x1c2l2ZSgmbV9t
dXRleCk7CiB9CiAKLWJvb2wgUGxhdGZvcm1Db25kaXRpb246OnRpbWVkV2FpdChQbGF0Zm9ybU11
dGV4JiBtdXRleCwgRFdPUkQgZHVyYXRpb25NaWxsaXNlY29uZHMpCisvLyBSZXR1cm5zIGFuIGlu
dGVydmFsIGluIG1pbGxpc2Vjb25kcyBzdWl0YWJsZSBmb3IgcGFzc2luZyB0byBvbmUgb2YgdGhl
IFdpbjMyIHdhaXQgZnVuY3Rpb25zIChlLmcuLCA6OldhaXRGb3JTaW5nbGVPYmplY3QpLgorc3Rh
dGljIERXT1JEIGFic29sdXRlVGltZVRvV2FpdFRpbWVvdXRJbnRlcnZhbChXYWxsVGltZSBhYnNv
bHV0ZVRpbWUpCiB7Ci0gICAgLy8gRW50ZXIgdGhlIHdhaXQgc3RhdGUuCi0gICAgRFdPUkQgcmVz
ID0gV2FpdEZvclNpbmdsZU9iamVjdChtX2Jsb2NrTG9jaywgSU5GSU5JVEUpOwotICAgIEFTU0VS
VF9VTlVTRUQocmVzLCByZXMgPT0gV0FJVF9PQkpFQ1RfMCk7Ci0gICAgKyttX3dhaXRlcnNCbG9j
a2VkOwotICAgIHJlcyA9IFJlbGVhc2VTZW1hcGhvcmUobV9ibG9ja0xvY2ssIDEsIDApOwotICAg
IEFTU0VSVF9VTlVTRUQocmVzLCByZXMpOwotCi0gICAgLS1tdXRleC5tX3JlY3Vyc2lvbkNvdW50
OwotICAgIExlYXZlQ3JpdGljYWxTZWN0aW9uKCZtdXRleC5tX2ludGVybmFsTXV0ZXgpOwotCi0g
ICAgLy8gTWFpbiB3YWl0IC0gdXNlIHRpbWVvdXQuCi0gICAgYm9vbCB0aW1lZE91dCA9IChXYWl0
Rm9yU2luZ2xlT2JqZWN0KG1fYmxvY2tRdWV1ZSwgZHVyYXRpb25NaWxsaXNlY29uZHMpID09IFdB
SVRfVElNRU9VVCk7Ci0KLSAgICByZXMgPSBXYWl0Rm9yU2luZ2xlT2JqZWN0KG1fdW5ibG9ja0xv
Y2ssIElORklOSVRFKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlcywgcmVzID09IFdBSVRfT0JKRUNU
XzApOwotCi0gICAgaW50IHNpZ25hbHNMZWZ0ID0gbV93YWl0ZXJzVG9VbmJsb2NrOwotCi0gICAg
aWYgKG1fd2FpdGVyc1RvVW5ibG9jaykKLSAgICAgICAgLS1tX3dhaXRlcnNUb1VuYmxvY2s7Ci0g
ICAgZWxzZSBpZiAoKyttX3dhaXRlcnNHb25lID09IChJTlRfTUFYIC8gMikpIHsgLy8gdGltZW91
dC9jYW5jZWxlZCBvciBzcHVyaW91cyBzZW1hcGhvcmUKLSAgICAgICAgLy8gdGltZW91dCBvciBz
cHVyaW91cyB3YWtldXAgb2NjdXJlZCwgbm9ybWFsaXplIHRoZSBtX3dhaXRlcnNHb25lIGNvdW50
Ci0gICAgICAgIC8vIHRoaXMgbWF5IG9jY3VyIGlmIG1hbnkgY2FsbHMgdG8gd2FpdCB3aXRoIGEg
dGltZW91dCBhcmUgbWFkZSBhbmQKLSAgICAgICAgLy8gbm8gY2FsbCB0byBub3RpZnlfKiBpcyBt
YWRlCi0gICAgICAgIHJlcyA9IFdhaXRGb3JTaW5nbGVPYmplY3QobV9ibG9ja0xvY2ssIElORklO
SVRFKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChyZXMsIHJlcyA9PSBXQUlUX09CSkVDVF8wKTsK
LSAgICAgICAgbV93YWl0ZXJzQmxvY2tlZCAtPSBtX3dhaXRlcnNHb25lOwotICAgICAgICByZXMg
PSBSZWxlYXNlU2VtYXBob3JlKG1fYmxvY2tMb2NrLCAxLCAwKTsKLSAgICAgICAgQVNTRVJUX1VO
VVNFRChyZXMsIHJlcyk7Ci0gICAgICAgIG1fd2FpdGVyc0dvbmUgPSAwOwotICAgIH0KLQotICAg
IHJlcyA9IFJlbGVhc2VNdXRleChtX3VuYmxvY2tMb2NrKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJl
cywgcmVzKTsKLQotICAgIGlmIChzaWduYWxzTGVmdCA9PSAxKSB7Ci0gICAgICAgIHJlcyA9IFJl
bGVhc2VTZW1hcGhvcmUobV9ibG9ja0xvY2ssIDEsIDApOyAvLyBPcGVuIHRoZSBnYXRlLgotICAg
ICAgICBBU1NFUlRfVU5VU0VEKHJlcywgcmVzKTsKLSAgICB9Ci0KLSAgICBFbnRlckNyaXRpY2Fs
U2VjdGlvbiAoJm11dGV4Lm1faW50ZXJuYWxNdXRleCk7Ci0gICAgKyttdXRleC5tX3JlY3Vyc2lv
bkNvdW50OwotCi0gICAgcmV0dXJuICF0aW1lZE91dDsKLX0KLQotdm9pZCBQbGF0Zm9ybUNvbmRp
dGlvbjo6c2lnbmFsKGJvb2wgdW5ibG9ja0FsbCkKLXsKLSAgICB1bnNpZ25lZCBzaWduYWxzVG9J
c3N1ZSA9IDA7Ci0KLSAgICBEV09SRCByZXMgPSBXYWl0Rm9yU2luZ2xlT2JqZWN0KG1fdW5ibG9j
a0xvY2ssIElORklOSVRFKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlcywgcmVzID09IFdBSVRfT0JK
RUNUXzApOwotCi0gICAgaWYgKG1fd2FpdGVyc1RvVW5ibG9jaykgeyAvLyB0aGUgZ2F0ZSBpcyBh
bHJlYWR5IGNsb3NlZAotICAgICAgICBpZiAoIW1fd2FpdGVyc0Jsb2NrZWQpIHsgLy8gbm8tb3AK
LSAgICAgICAgICAgIHJlcyA9IFJlbGVhc2VNdXRleChtX3VuYmxvY2tMb2NrKTsKLSAgICAgICAg
ICAgIEFTU0VSVF9VTlVTRUQocmVzLCByZXMpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9CisgICAgV2FsbFRpbWUgY3VycmVudFRpbWUgPSBXYWxsVGltZTo6bm93KCk7CiAKLSAgICAg
ICAgaWYgKHVuYmxvY2tBbGwpIHsKLSAgICAgICAgICAgIHNpZ25hbHNUb0lzc3VlID0gbV93YWl0
ZXJzQmxvY2tlZDsKLSAgICAgICAgICAgIG1fd2FpdGVyc1RvVW5ibG9jayArPSBtX3dhaXRlcnNC
bG9ja2VkOwotICAgICAgICAgICAgbV93YWl0ZXJzQmxvY2tlZCA9IDA7Ci0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICBzaWduYWxzVG9Jc3N1ZSA9IDE7Ci0gICAgICAgICAgICArK21fd2Fp
dGVyc1RvVW5ibG9jazsKLSAgICAgICAgICAgIC0tbV93YWl0ZXJzQmxvY2tlZDsKLSAgICAgICAg
fQotICAgIH0gZWxzZSBpZiAobV93YWl0ZXJzQmxvY2tlZCA+IG1fd2FpdGVyc0dvbmUpIHsKLSAg
ICAgICAgcmVzID0gV2FpdEZvclNpbmdsZU9iamVjdChtX2Jsb2NrTG9jaywgSU5GSU5JVEUpOyAv
LyBDbG9zZSB0aGUgZ2F0ZS4KLSAgICAgICAgQVNTRVJUX1VOVVNFRChyZXMsIHJlcyA9PSBXQUlU
X09CSkVDVF8wKTsKLSAgICAgICAgaWYgKG1fd2FpdGVyc0dvbmUgIT0gMCkgewotICAgICAgICAg
ICAgbV93YWl0ZXJzQmxvY2tlZCAtPSBtX3dhaXRlcnNHb25lOwotICAgICAgICAgICAgbV93YWl0
ZXJzR29uZSA9IDA7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHVuYmxvY2tBbGwpIHsKLSAgICAg
ICAgICAgIHNpZ25hbHNUb0lzc3VlID0gbV93YWl0ZXJzQmxvY2tlZDsKLSAgICAgICAgICAgIG1f
d2FpdGVyc1RvVW5ibG9jayA9IG1fd2FpdGVyc0Jsb2NrZWQ7Ci0gICAgICAgICAgICBtX3dhaXRl
cnNCbG9ja2VkID0gMDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHNpZ25hbHNUb0lz
c3VlID0gMTsKLSAgICAgICAgICAgIG1fd2FpdGVyc1RvVW5ibG9jayA9IDE7Ci0gICAgICAgICAg
ICAtLW1fd2FpdGVyc0Jsb2NrZWQ7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgeyAvLyBOby1vcC4K
LSAgICAgICAgcmVzID0gUmVsZWFzZU11dGV4KG1fdW5ibG9ja0xvY2spOwotICAgICAgICBBU1NF
UlRfVU5VU0VEKHJlcywgcmVzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICAvLyBUaW1l
IGlzIGluIHRoZSBwYXN0IC0gcmV0dXJuIGltbWVkaWF0ZWx5LgorICAgIGlmIChhYnNvbHV0ZVRp
bWUgPCBjdXJyZW50VGltZSkKKyAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXMgPSBSZWxlYXNl
TXV0ZXgobV91bmJsb2NrTG9jayk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXMsIHJlcyk7CisgICAg
Ly8gVGltZSBpcyB0b28gZmFyIGluIHRoZSBmdXR1cmUgKGFuZCB3b3VsZCBvdmVyZmxvdyB1bnNp
Z25lZCBsb25nKSAtIHdhaXQgZm9yZXZlci4KKyAgICBpZiAoKGFic29sdXRlVGltZSAtIGN1cnJl
bnRUaW1lKSA+IFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMoSU5UX01BWCkpCisgICAgICAgIHJl
dHVybiBJTkZJTklURTsKIAotICAgIGlmIChzaWduYWxzVG9Jc3N1ZSkgewotICAgICAgICByZXMg
PSBSZWxlYXNlU2VtYXBob3JlKG1fYmxvY2tRdWV1ZSwgc2lnbmFsc1RvSXNzdWUsIDApOwotICAg
ICAgICBBU1NFUlRfVU5VU0VEKHJlcywgcmVzKTsKLSAgICB9CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PERXT1JEPigoYWJzb2x1dGVUaW1lIC0gY3VycmVudFRpbWUpLm1pbGxpc2Vjb25kcygpKTsK
IH0KIAotc3RhdGljIGNvbnN0IGxvbmcgTWF4U2VtYXBob3JlQ291bnQgPSBzdGF0aWNfY2FzdDxs
b25nPih+MFVMID4+IDEpOwotCiBUaHJlYWRDb25kaXRpb246OlRocmVhZENvbmRpdGlvbigpCiB7
Ci0gICAgbV9jb25kaXRpb24ubV93YWl0ZXJzR29uZSA9IDA7Ci0gICAgbV9jb25kaXRpb24ubV93
YWl0ZXJzQmxvY2tlZCA9IDA7Ci0gICAgbV9jb25kaXRpb24ubV93YWl0ZXJzVG9VbmJsb2NrID0g
MDsKLSAgICBtX2NvbmRpdGlvbi5tX2Jsb2NrTG9jayA9IENyZWF0ZVNlbWFwaG9yZSgwLCAxLCAx
LCAwKTsKLSAgICBtX2NvbmRpdGlvbi5tX2Jsb2NrUXVldWUgPSBDcmVhdGVTZW1hcGhvcmUoMCwg
MCwgTWF4U2VtYXBob3JlQ291bnQsIDApOwotICAgIG1fY29uZGl0aW9uLm1fdW5ibG9ja0xvY2sg
PSBDcmVhdGVNdXRleCgwLCAwLCAwKTsKLQotICAgIGlmICghbV9jb25kaXRpb24ubV9ibG9ja0xv
Y2sgfHwgIW1fY29uZGl0aW9uLm1fYmxvY2tRdWV1ZSB8fCAhbV9jb25kaXRpb24ubV91bmJsb2Nr
TG9jaykgewotICAgICAgICBpZiAobV9jb25kaXRpb24ubV9ibG9ja0xvY2spCi0gICAgICAgICAg
ICBDbG9zZUhhbmRsZShtX2NvbmRpdGlvbi5tX2Jsb2NrTG9jayk7Ci0gICAgICAgIGlmIChtX2Nv
bmRpdGlvbi5tX2Jsb2NrUXVldWUpCi0gICAgICAgICAgICBDbG9zZUhhbmRsZShtX2NvbmRpdGlv
bi5tX2Jsb2NrUXVldWUpOwotICAgICAgICBpZiAobV9jb25kaXRpb24ubV91bmJsb2NrTG9jaykK
LSAgICAgICAgICAgIENsb3NlSGFuZGxlKG1fY29uZGl0aW9uLm1fdW5ibG9ja0xvY2spOwotICAg
IH0KKyAgICBJbml0aWFsaXplQ29uZGl0aW9uVmFyaWFibGUoJm1fY29uZGl0aW9uKTsKIH0KIAog
VGhyZWFkQ29uZGl0aW9uOjp+VGhyZWFkQ29uZGl0aW9uKCkKIHsKLSAgICBDbG9zZUhhbmRsZSht
X2NvbmRpdGlvbi5tX2Jsb2NrTG9jayk7Ci0gICAgQ2xvc2VIYW5kbGUobV9jb25kaXRpb24ubV9i
bG9ja1F1ZXVlKTsKLSAgICBDbG9zZUhhbmRsZShtX2NvbmRpdGlvbi5tX3VuYmxvY2tMb2NrKTsK
IH0KIAogdm9pZCBUaHJlYWRDb25kaXRpb246OndhaXQoTXV0ZXgmIG11dGV4KQogewotICAgIG1f
Y29uZGl0aW9uLnRpbWVkV2FpdChtdXRleC5pbXBsKCksIElORklOSVRFKTsKKyAgICBTbGVlcENv
bmRpdGlvblZhcmlhYmxlU1JXKCZtX2NvbmRpdGlvbiwgJm11dGV4LmltcGwoKSwgSU5GSU5JVEUs
IDApOwogfQogCiBib29sIFRocmVhZENvbmRpdGlvbjo6dGltZWRXYWl0KE11dGV4JiBtdXRleCwg
V2FsbFRpbWUgYWJzb2x1dGVUaW1lKQogeworICAgIC8vIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQu
Y29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL21zNjg2MzA0KHY9dnMuODUpLmFzcHgK
ICAgICBEV09SRCBpbnRlcnZhbCA9IGFic29sdXRlVGltZVRvV2FpdFRpbWVvdXRJbnRlcnZhbChh
YnNvbHV0ZVRpbWUpOwotCiAgICAgaWYgKCFpbnRlcnZhbCkgewogICAgICAgICAvLyBDb25zaWRl
ciB0aGUgd2FpdCB0byBoYXZlIHRpbWVkIG91dCwgZXZlbiBpZiBvdXIgY29uZGl0aW9uIGhhcyBh
bHJlYWR5IGJlZW4gc2lnbmFsZWQsIHRvCiAgICAgICAgIC8vIG1hdGNoIHRoZSBwdGhyZWFkcyBp
bXBsZW1lbnRhdGlvbi4KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHJldHVy
biBtX2NvbmRpdGlvbi50aW1lZFdhaXQobXV0ZXguaW1wbCgpLCBpbnRlcnZhbCk7CisgICAgaWYg
KFNsZWVwQ29uZGl0aW9uVmFyaWFibGVTUlcoJm1fY29uZGl0aW9uLCAmbXV0ZXguaW1wbCgpLCBp
bnRlcnZhbCwgMCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIEFTU0VSVChHZXRMYXN0RXJy
b3IoKSA9PSBFUlJPUl9USU1FT1VUKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHZvaWQgVGhy
ZWFkQ29uZGl0aW9uOjpzaWduYWwoKQogewotICAgIG1fY29uZGl0aW9uLnNpZ25hbChmYWxzZSk7
IC8vIFVuYmxvY2sgb25seSAxIHRocmVhZC4KKyAgICBXYWtlQ29uZGl0aW9uVmFyaWFibGUoJm1f
Y29uZGl0aW9uKTsKIH0KIAogdm9pZCBUaHJlYWRDb25kaXRpb246OmJyb2FkY2FzdCgpCiB7Ci0g
ICAgbV9jb25kaXRpb24uc2lnbmFsKHRydWUpOyAvLyBVbmJsb2NrIGFsbCB0aHJlYWRzLgotfQot
Ci1EV09SRCBhYnNvbHV0ZVRpbWVUb1dhaXRUaW1lb3V0SW50ZXJ2YWwoV2FsbFRpbWUgYWJzb2x1
dGVUaW1lKQotewotICAgIFdhbGxUaW1lIGN1cnJlbnRUaW1lID0gV2FsbFRpbWU6Om5vdygpOwot
Ci0gICAgLy8gVGltZSBpcyBpbiB0aGUgcGFzdCAtIHJldHVybiBpbW1lZGlhdGVseS4KLSAgICBp
ZiAoYWJzb2x1dGVUaW1lIDwgY3VycmVudFRpbWUpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAg
Ly8gVGltZSBpcyB0b28gZmFyIGluIHRoZSBmdXR1cmUgKGFuZCB3b3VsZCBvdmVyZmxvdyB1bnNp
Z25lZCBsb25nKSAtIHdhaXQgZm9yZXZlci4KLSAgICBpZiAoKGFic29sdXRlVGltZSAtIGN1cnJl
bnRUaW1lKSA+IFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMoSU5UX01BWCkpCi0gICAgICAgIHJl
dHVybiBJTkZJTklURTsKLQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxEV09SRD4oKGFic29sdXRl
VGltZSAtIGN1cnJlbnRUaW1lKS5taWxsaXNlY29uZHMoKSk7CisgICAgV2FrZUFsbENvbmRpdGlv
blZhcmlhYmxlKCZtX2NvbmRpdGlvbik7CiB9CiAKIC8vIFJlbW92ZSB0aGlzIHdvcmthcm91bmQg
Y29kZSB3aGVuIDxyZGFyOi8vcHJvYmxlbS8zMTc5MzIxMz4gaXMgZml4ZWQuCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>