<?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>31197</bug_id>
          
          <creation_ts>2009-11-05 22:17:05 -0800</creation_ts>
          <short_desc>Implemented a timezone cache not based on Mac OS X&apos;s notify_check API</short_desc>
          <delta_ts>2009-11-09 17:27:57 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>darin</cc>
    
    <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>161073</commentid>
    <comment_count>0</comment_count>
      <attachid>42629</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2009-11-05 22:17:05 -0800</bug_when>
    <thetext>Created attachment 42629
patch

Patch coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161078</commentid>
    <comment_count>1</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2009-11-05 22:27:50 -0800</bug_when>
    <thetext>*** Bug 15853 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161081</commentid>
    <comment_count>2</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2009-11-05 22:54:14 -0800</bug_when>
    <thetext>Still working out some Windows build issues...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161088</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-05 23:04:00 -0800</bug_when>
    <thetext>So in a long-running gmail instance we no longer would notice daylight savings time changes, correct?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161148</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-11-06 08:22:32 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; So in a long-running gmail instance we no longer would notice daylight savings
&gt; time changes, correct?

If the entire long-running gmail &quot;instance&quot; is a single JavaScript function that never returns, then you&apos;re correct. But I don&apos;t know of anything like that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161153</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-06 09:00:46 -0800</bug_when>
    <thetext>Ah. I incorrectly read &quot;VM invocation&quot; as &quot;VM instance&quot; and assumed there was one per page.  Thank you for the clarification.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161214</commentid>
    <comment_count>6</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2009-11-06 11:53:15 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; So in a long-running gmail instance we no longer would notice daylight savings
&gt; time changes, correct?

(Minor correction: this patch is about timezone, not daylight savings time.)

Note that, in v8, in a long-runing gmail instance you will indeed not notice timezone changes. Part of the design of this patch is to enable the VM to notice timezone changes in a not-too-surprising way, given that other VMs don&apos;t notice them at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161223</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-06 12:19:45 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #3)
&gt; &gt; So in a long-running gmail instance we no longer would notice daylight savings
&gt; &gt; time changes, correct?
&gt; 
&gt; (Minor correction: this patch is about timezone, not daylight savings time.)
&gt; 
&gt; Note that, in v8, in a long-runing gmail instance you will indeed not notice
&gt; timezone changes. Part of the design of this patch is to enable the VM to
&gt; notice timezone changes in a not-too-surprising way, given that other VMs don&apos;t
&gt; notice them at all.

Thank you for the clarifications.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161854</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-09 17:27:57 -0800</bug_when>
    <thetext>Was landed as r50590.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42629</attachid>
            <date>2009-11-05 22:17:05 -0800</date>
            <delta_ts>2009-11-05 22:23:36 -0800</delta_ts>
            <desc>patch</desc>
            <filename>ro.txt</filename>
            <type>text/plain</type>
            <size>26819</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDUwNTg2KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNzYgQEAKKzIwMDktMTEtMDUgIEdlb2ZmcmV5
IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEltcGxlbWVudGVkIGEgdGltZXpvbmUgY2FjaGUg
bm90IGJhc2VkIG9uIE1hYyBPUyBYJ3Mgbm90aWZ5X2NoZWNrIEFQSS4KKyAgICAgICAgCisgICAg
ICAgIElmIHRoZSBWTSBjYWxjdWxhdGVzIHRoZSBsb2NhbCB0aW1lem9uZSBvZmZzZXQgZnJvbSBV
VEMsIGl0IGNhY2hlcyB0aGUKKyAgICAgICAgcmVzdWx0IHVudGlsIHRoZSBlbmQgb2YgdGhlIGN1
cnJlbnQgVk0gaW52b2NhdGlvbi4gKFdlIGRvbid0IHdhbnQgdG8gY2FjaGUKKyAgICAgICAgZm9y
ZXZlciwgYmVjYXVzZSB0aGUgdXNlcidzIHRpbWV6b25lIG1heSBjaGFuZ2Ugb3ZlciB0aW1lLikK
KyAgICAgICAgCisgICAgICAgIFRoaXMgcmVtb3ZlcyBub3RpZnlfKiBvdmVyaGVhZCBvbiBNYWMs
IGFuZCwgbW9yZSBzaWduaWZpY2FudGx5LCByZW1vdmVzCisgICAgICAgIE9TIHRpbWUgYW5kIGRh
dGUgY2FsbCBvdmVyaGVhZCBvbiBub24tTWFjIHBsYXRmb3Jtcy4KKworICAgICAgICB+OCUgc3Bl
ZWR1cCBvbiBEYXRlIG1pY3JvYmVuY2htYXJrIG9uIE1hYy4gU3VuU3BpZGVyIHJlcG9ydHMgbWF5
YmUgYSB0aW55CisgICAgICAgIHNwZWVkdXAgb24gTWFjLiAoU3BlZWR1cCBvbiBub24tTWFjIHBs
YXRmb3JtcyBzaG91bGQgYmUgZXZlbiBtb3JlIG5vdGljZWFibGUuKQorCisgICAgICAgIE5lZWQg
YSBzaG9ydCBkZXNjcmlwdGlvbiBhbmQgYnVnIFVSTCAoT09QUyEpCisKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS5leHA6CisKKyAgICAgICAgKiBpbnRlcnByZXRlci9DYWNoZWRDYWxsLmg6Cisg
ICAgICAgIChKU0M6OkNhY2hlZENhbGw6OkNhY2hlZENhbGwpOgorICAgICAgICAqIGludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGUp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6RHlu
YW1pY0dsb2JhbE9iamVjdFNjb3BlOjpEeW5hbWljR2xvYmFsT2JqZWN0U2NvcGUpOiBNYWRlIHRo
ZSAKKyAgICAgICAgRHluYW1pY0dsb2JhbE9iamVjdFNjb3BlIGNvbnN0cnVjdG9yIHJlc3BvbnNp
YmxlIGZvciBjaGVja2luZyB3aGV0aGVyIGEKKyAgICAgICAgZHluYW1pY0dsb2JhbE9iamVjdCBo
YXMgYWxyZWFkeSBiZWVuIHNldC4gVGhpcyBlbGltaW5hdGVkIHNvbWUgZHVwbGljYXRlCisgICAg
ICAgIGNsaWVudCBjb2RlLCBhbmQgYWxsb3dlZCBtZSB0byBhdm9pZCBhZGRpbmcgZXZlbiBtb3Jl
IGR1cGxpY2F0ZSBjbGllbnQKKyAgICAgICAgY29kZS4gTWFkZSBEeW5hbWljR2xvYmFsT2JqZWN0
U2NvcGUgcmVzcG9uc2libGUgZm9yIHJlc2V0dGluZyB0aGUKKyAgICAgICAgbG9jYWwgdGltZXpv
bmUgY2FjaGUgdXBvbiBmaXJzdCBlbnRyeSB0byB0aGUgVk0uCisKKyAgICAgICAgKiBydW50aW1l
L0RhdGVDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdERhdGUpOgorICAg
ICAgICAoSlNDOjpjYWxsRGF0ZSk6CisgICAgICAgIChKU0M6OmRhdGVQYXJzZSk6CisgICAgICAg
IChKU0M6OmRhdGVVVEMpOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwOgor
ICAgICAgICAoSlNDOjpwYXJzZURhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZUNvbnZlcnNp
b24uaDoKKyAgICAgICAgKiBydW50aW1lL0RhdGVJbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6
OkRhdGVJbnN0YW5jZTo6Z3JlZ29yaWFuRGF0ZVRpbWUpOgorICAgICAgICAqIHJ1bnRpbWUvRGF0
ZUluc3RhbmNlLmg6CisgICAgICAgICogcnVudGltZS9EYXRlSW5zdGFuY2VDYWNoZS5oOgorICAg
ICAgICAqIHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnNldE5ld1Zh
bHVlRnJvbVRpbWVBcmdzKToKKyAgICAgICAgKEpTQzo6c2V0TmV3VmFsdWVGcm9tRGF0ZUFyZ3Mp
OgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jU2V0WWVhcik6CisgICAgICAgICogcnVudGlt
ZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6aW5pdGlhbGl6ZVRocmVh
ZGluZ09uY2UpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcDoKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvSlNH
bG9iYWxEYXRhLmg6CisgICAgICAgICogd3RmL0RhdGVNYXRoLmNwcDoKKyAgICAgICAgKFdURjo6
Z2V0Q3VycmVudFVUQ1RpbWUpOgorICAgICAgICAoV1RGOjpnZXRDdXJyZW50VVRDVGltZVdpdGhN
aWNyb3NlY29uZHMpOgorICAgICAgICAoV1RGOjpnZXRMb2NhbFRpbWUpOgorICAgICAgICAoSlND
OjpnZXRVVENPZmZzZXQpOiBVc2UgdGhlIG5ldyBjYWNoZS4gQWxzbywgc2VlIGJlbG93LgorICAg
ICAgICAoSlNDOjpncmVnb3JpYW5EYXRlVGltZVRvTVMpOgorICAgICAgICAoSlNDOjptc1RvR3Jl
Z29yaWFuRGF0ZVRpbWUpOgorICAgICAgICAoSlNDOjppbml0aWFsaXplRGF0ZXMpOgorICAgICAg
ICAoSlNDOjpwYXJzZURhdGVGcm9tTnVsbFRlcm1pbmF0ZWRDaGFyYWN0ZXJzKTogU2ltcGxpZmll
ZCB0aGUgd2F5IHRoaXMgZnVuY3Rpb24KKyAgICAgICAgYWNjb3VudHMgZm9yIHRoZSBsb2NhbCB0
aW1lem9uZSBvZmZzZXQsIHRvIGFjY29tb2RhdGUgb3VyIG5ldyBjYWNoaW5nIEFQSSwKKyAgICAg
ICAgYW5kIGEgKHBvc3NpYmx5IG1pc2d1aWRlZCkgY2FsbGVyIGluIFdlYkNvcmUuIEFsc28sIHNl
ZSBiZWxvdy4KKyAgICAgICAgKiB3dGYvRGF0ZU1hdGguaDoKKyAgICAgICAgKEpTQzo6R3JlZ29y
aWFuRGF0ZVRpbWU6OkdyZWdvcmlhbkRhdGVUaW1lKTogTW92ZWQgbW9zdCBvZiB0aGUgY29kZSBp
bgorICAgICAgICBEYXRlTWF0aC4qIGludG8gdGhlIEpTQyBuYW1lc3BhY2UuIFRoZSBjb2RlIG5l
ZWRlZCB0byBtb3ZlIHNvIGl0IGNvdWxkCisgICAgICAgIG5hdHVyYWxseSBpbnRlcmFjdCB3aXRo
IEV4ZWNTdGF0ZSBhbmQgSlNHbG9iYWxEYXRhIHRvIHN1cHBvcnQgY2FjaGluZy4KKyAgICAgICAg
TG9naWNhbGx5LCBpdCBzZWVtZWQgcmlnaHQgdG8gbW92ZSBpdCwgdG9vLCBzaW5jZSB0aGlzIGNv
ZGUgaXMgbm90IHJlYWxseQorICAgICAgICBhcyBsb3ctbGV2ZWwgYXMgdGhlIFdURiBuYW1lc3Bh
Y2UgbWlnaHQgaW1wbHkgLS0gaXQgaW1wbGVtZW50cyBhIHNldCBvZgorICAgICAgICBkYXRlIHBh
cnNpbmcgYW5kIGNvbnZlcnNpb24gcXVpcmtzIHRoYXQgYXJlIGZpbmVseSB0dW5lZCB0byB0aGUg
SmF2YVNjcmlwdAorICAgICAgICBsYW5ndWFnZS4gQWxzbyByZW1vdmVkIHRoZSBNYWMgT1MgWCBu
b3RpZnlfKiBpbmZyYXN0cnVjdHVyZS4KKwogMjAwOS0xMS0wNSAgQ2hyaXMgSmVyZG9uZWsgIDxj
aHJpcy5qZXJkb25la0BnbWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlk
ZWwuCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCShyZXZpc2lvbiA1MDU3MCkKKysr
IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAkod29ya2luZyBjb3B5KQpAQCAtMTc4
LDYgKzE3OCw4IEBAIF9fWk4zSlNDMjNzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdEVQTlNfOUUKIF9f
Wk4zSlNDMjRjcmVhdGVTdGFja092ZXJmbG93RXJyb3JFUE5TXzlFeGVjU3RhdGVFCiBfX1pOM0pT
QzI1ZXZhbHVhdGVJbkdsb2JhbENhbGxGcmFtZUVSS05TXzdVU3RyaW5nRVJOU183SlNWYWx1ZUVQ
TlNfMTRKU0dsb2JhbE9iamVjdEUKIF9fWk4zSlNDMzVjcmVhdGVJbnRlcnJ1cHRlZEV4ZWN1dGlv
bkV4Y2VwdGlvbkVQTlNfMTJKU0dsb2JhbERhdGFFCitfX1pOM0pTQzM3cGFyc2VEYXRlRnJvbU51
bGxUZXJtaW5hdGVkQ2hhcmFjdGVyc0VQS2NQTlNfOUV4ZWNTdGF0ZUUKK19fWk4zSlNDM05hTkUK
IF9fWk4zSlNDNEhlYXAxMW9iamVjdENvdW50RXYKIF9fWk4zSlNDNEhlYXAxNHByaW1hcnlIZWFw
RW5kRXYKIF9fWk4zSlNDNEhlYXAxNXJlY29yZEV4dHJhQ29zdEVtCkBAIC0zMzAsNyArMzMyLDYg
QEAgX19aTjNXVEYyM3dhaXRGb3JUaHJlYWRDb21wbGV0aW9uRWpQUHYKIF9fWk4zV1RGMjdyZWxl
YXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnlFdgogX19aTjNXVEYyOHNldE1haW5UaHJlYWRDYWxsYmFj
a3NQYXVzZWRFYgogX19aTjNXVEYzNmxvY2tBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRl
eEV2Ci1fX1pOM1dURjM3cGFyc2VEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVyc0VQS2MK
IF9fWk4zV1RGMzh1bmxvY2tBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleEV2CiBfX1pO
M1dURjVNdXRleDRsb2NrRXYKIF9fWk4zV1RGNU11dGV4NnVubG9ja0V2CkluZGV4OiBKYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9DYWNoZWRDYWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvQ2FjaGVkQ2FsbC5oCShyZXZpc2lvbiA1MDU3MCkKKysrIEphdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0NhY2hlZENhbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMzgs
NyArMzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIDogbV92YWxpZChmYWxzZSkK
ICAgICAgICAgICAgICwgbV9pbnRlcnByZXRlcihjYWxsRnJhbWUtPmludGVycHJldGVyKCkpCiAg
ICAgICAgICAgICAsIG1fZXhjZXB0aW9uKGV4Y2VwdGlvbikKLSAgICAgICAgICAgICwgbV9nbG9i
YWxPYmplY3RTY29wZShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLmR5bmFtaWNH
bG9iYWxPYmplY3QgPyBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5keW5hbWljR2xvYmFsT2JqZWN0
IDogZnVuY3Rpb24tPnNjb3BlKCkuZ2xvYmFsT2JqZWN0KCkpCisgICAgICAgICAgICAsIG1fZ2xv
YmFsT2JqZWN0U2NvcGUoY2FsbEZyYW1lLCBmdW5jdGlvbi0+c2NvcGUoKS5nbG9iYWxPYmplY3Qo
KSkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKCFmdW5jdGlvbi0+aXNIb3N0RnVuY3Rp
b24oKSk7CiAgICAgICAgICAgICBtX2Nsb3N1cmUgPSBtX2ludGVycHJldGVyLT5wcmVwYXJlRm9y
UmVwZWF0Q2FsbChmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCksIGNhbGxGcmFtZSwgZnVuY3Rpb24s
IGFyZ0NvdW50LCBmdW5jdGlvbi0+c2NvcGUoKS5ub2RlKCksIGV4Y2VwdGlvbik7CkluZGV4OiBK
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiA1MDU3
MCkKKysrIEphdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjQ3LDcgKzY0Nyw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUo
RnVuY3Rpb25FeGUKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogICAgIH0KIAotICAgIER5bmFt
aWNHbG9iYWxPYmplY3RTY29wZSBnbG9iYWxPYmplY3RTY29wZShjYWxsRnJhbWUsIGNhbGxGcmFt
ZS0+Z2xvYmFsRGF0YSgpLmR5bmFtaWNHbG9iYWxPYmplY3QgPyBjYWxsRnJhbWUtPmdsb2JhbERh
dGEoKS5keW5hbWljR2xvYmFsT2JqZWN0IDogc2NvcGVDaGFpbi0+Z2xvYmFsT2JqZWN0KTsKKyAg
ICBEeW5hbWljR2xvYmFsT2JqZWN0U2NvcGUgZ2xvYmFsT2JqZWN0U2NvcGUoY2FsbEZyYW1lLCBz
Y29wZUNoYWluLT5nbG9iYWxPYmplY3QpOwogCiAgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUg
PSBDYWxsRnJhbWU6OmNyZWF0ZShvbGRFbmQpOwogICAgIHNpemVfdCBkc3QgPSAwOwpAQCAtNzc3
LDcgKzc3Nyw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGEKICAg
ICAgICAgfQogICAgIH0KIAotICAgIER5bmFtaWNHbG9iYWxPYmplY3RTY29wZSBnbG9iYWxPYmpl
Y3RTY29wZShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLmR5bmFtaWNHbG9iYWxP
YmplY3QgPyBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5keW5hbWljR2xvYmFsT2JqZWN0IDogc2Nv
cGVDaGFpbi0+Z2xvYmFsT2JqZWN0KTsKKyAgICBEeW5hbWljR2xvYmFsT2JqZWN0U2NvcGUgZ2xv
YmFsT2JqZWN0U2NvcGUoY2FsbEZyYW1lLCBzY29wZUNoYWluLT5nbG9iYWxPYmplY3QpOwogCiAg
ICAgRXZhbENvZGVCbG9jayogY29kZUJsb2NrID0gJmV2YWwtPmJ5dGVjb2RlKGNhbGxGcmFtZSwg
c2NvcGVDaGFpbik7CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVj
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1
Y3Rvci5jcHAJKHJldmlzaW9uIDUwNTcwKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRl
Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCw3ICs4NCw3IEBAIEpTT2JqZWN0
KiBjb25zdHJ1Y3REYXRlKEV4ZWNTdGF0ZSogZXhlYywKICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICBKU1ZhbHVlIHByaW1pdGl2ZSA9IGFyZ3MuYXQoMCkudG9QcmltaXRpdmUoZXhlYyk7CiAg
ICAgICAgICAgICBpZiAocHJpbWl0aXZlLmlzU3RyaW5nKCkpCi0gICAgICAgICAgICAgICAgdmFs
dWUgPSBwYXJzZURhdGUocHJpbWl0aXZlLmdldFN0cmluZygpKTsKKyAgICAgICAgICAgICAgICB2
YWx1ZSA9IHBhcnNlRGF0ZShleGVjLCBwcmltaXRpdmUuZ2V0U3RyaW5nKCkpOwogICAgICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgIHZhbHVlID0gcHJpbWl0aXZlLnRvTnVtYmVyKGV4ZWMp
OwogICAgICAgICB9CkBAIC0xMDgsNyArMTA4LDcgQEAgSlNPYmplY3QqIGNvbnN0cnVjdERhdGUo
RXhlY1N0YXRlKiBleGVjLAogICAgICAgICAgICAgdC5zZWNvbmQgPSBhcmdzLmF0KDUpLnRvSW50
MzIoZXhlYyk7CiAgICAgICAgICAgICB0LmlzRFNUID0gLTE7CiAgICAgICAgICAgICBkb3VibGUg
bXMgPSAobnVtQXJncyA+PSA3KSA/IGFyZ3MuYXQoNikudG9OdW1iZXIoZXhlYykgOiAwOwotICAg
ICAgICAgICAgdmFsdWUgPSBncmVnb3JpYW5EYXRlVGltZVRvTVModCwgbXMsIGZhbHNlKTsKKyAg
ICAgICAgICAgIHZhbHVlID0gZ3JlZ29yaWFuRGF0ZVRpbWVUb01TKGV4ZWMsIHQsIG1zLCBmYWxz
ZSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTEzMiw3ICsxMzIsNyBAQCBzdGF0aWMgSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNhbGxEYXRlKEV4CiAgICAgdGltZV90IGxvY2FsVGltZSA9IHRpbWUo
MCk7CiAgICAgdG0gbG9jYWxUTTsKICAgICBnZXRMb2NhbFRpbWUoJmxvY2FsVGltZSwgJmxvY2Fs
VE0pOwotICAgIEdyZWdvcmlhbkRhdGVUaW1lIHRzKGxvY2FsVE0pOworICAgIEdyZWdvcmlhbkRh
dGVUaW1lIHRzKGV4ZWMsIGxvY2FsVE0pOwogICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmco
ZXhlYywgZm9ybWF0RGF0ZSh0cykgKyAiICIgKyBmb3JtYXRUaW1lKHRzLCBmYWxzZSkpOwogfQog
CkBAIC0xNDQsNyArMTQ0LDcgQEAgQ2FsbFR5cGUgRGF0ZUNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0
YShDYQogCiBzdGF0aWMgSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQYXJzZShFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiwgSlNWYWx1ZSwgY29uc3QgQXJnTGlzdCYgYXJncykKIHsKLSAgICBy
ZXR1cm4ganNOdW1iZXIoZXhlYywgcGFyc2VEYXRlKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYykp
KTsKKyAgICByZXR1cm4ganNOdW1iZXIoZXhlYywgcGFyc2VEYXRlKGV4ZWMsIGFyZ3MuYXQoMCku
dG9TdHJpbmcoZXhlYykpKTsKIH0KIAogc3RhdGljIEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRl
Tm93KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBKU1ZhbHVlLCBjb25zdCBBcmdMaXN0JikK
QEAgLTE3Myw3ICsxNzMsNyBAQCBzdGF0aWMgSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVVVEMo
RXhlCiAgICAgdC5taW51dGUgPSBhcmdzLmF0KDQpLnRvSW50MzIoZXhlYyk7CiAgICAgdC5zZWNv
bmQgPSBhcmdzLmF0KDUpLnRvSW50MzIoZXhlYyk7CiAgICAgZG91YmxlIG1zID0gKG4gPj0gNykg
PyBhcmdzLmF0KDYpLnRvTnVtYmVyKGV4ZWMpIDogMDsKLSAgICByZXR1cm4ganNOdW1iZXIoZXhl
YywgZ3JlZ29yaWFuRGF0ZVRpbWVUb01TKHQsIG1zLCB0cnVlKSk7CisgICAgcmV0dXJuIGpzTnVt
YmVyKGV4ZWMsIGdyZWdvcmlhbkRhdGVUaW1lVG9NUyhleGVjLCB0LCBtcywgdHJ1ZSkpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNv
bnZlcnNpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNv
bnZlcnNpb24uY3BwCShyZXZpc2lvbiA1MDU3MCkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGF0ZUNvbnZlcnNpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw5ICs1MSw5IEBAIHVzaW5n
IG5hbWVzcGFjZSBXVEY7CiAKIG5hbWVzcGFjZSBKU0MgewogCi1kb3VibGUgcGFyc2VEYXRlKGNv
bnN0IFVTdHJpbmcgJmRhdGUpCitkb3VibGUgcGFyc2VEYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgVVN0cmluZyAmZGF0ZSkKIHsKLSAgICByZXR1cm4gcGFyc2VEYXRlRnJvbU51bGxUZXJtaW5h
dGVkQ2hhcmFjdGVycyhkYXRlLlVURjhTdHJpbmcoKS5jX3N0cigpKTsKKyAgICByZXR1cm4gcGFy
c2VEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyhkYXRlLlVURjhTdHJpbmcoKS5jX3N0
cigpLCBleGVjKTsKIH0KIAogVVN0cmluZyBmb3JtYXREYXRlKGNvbnN0IEdyZWdvcmlhbkRhdGVU
aW1lICZ0KQpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29udmVyc2lvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uaAkocmV2
aXNpb24gNTA1NzApCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJzaW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQyLDE4ICs0MiwxNiBAQAogI2lmbmRlZiBEYXRlQ29udmVyc2lv
bl9oCiAjZGVmaW5lIERhdGVDb252ZXJzaW9uX2gKIAotbmFtZXNwYWNlIFdURiB7Ci0gICAgc3Ry
dWN0IEdyZWdvcmlhbkRhdGVUaW1lOwotfQotCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgRXhl
Y1N0YXRlOwogY2xhc3MgVVN0cmluZzsKK3N0cnVjdCBHcmVnb3JpYW5EYXRlVGltZTsKIAotZG91
YmxlIHBhcnNlRGF0ZShjb25zdCBVU3RyaW5nJik7Ci1VU3RyaW5nIGZvcm1hdERhdGUoY29uc3Qg
V1RGOjpHcmVnb3JpYW5EYXRlVGltZSYpOwotVVN0cmluZyBmb3JtYXREYXRlVVRDVmFyaWFudChj
b25zdCBXVEY6OkdyZWdvcmlhbkRhdGVUaW1lJik7Ci1VU3RyaW5nIGZvcm1hdFRpbWUoY29uc3Qg
V1RGOjpHcmVnb3JpYW5EYXRlVGltZSYsIGJvb2wgaW5wdXRJc1VUQyk7Citkb3VibGUgcGFyc2VE
YXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYpOworVVN0cmluZyBmb3JtYXREYXRl
KGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lJik7CitVU3RyaW5nIGZvcm1hdERhdGVVVENWYXJpYW50
KGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lJik7CitVU3RyaW5nIGZvcm1hdFRpbWUoY29uc3QgR3Jl
Z29yaWFuRGF0ZVRpbWUmLCBib29sIGlucHV0SXNVVEMpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
IApJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmNwcAkocmV2aXNpb24g
NTA1NzApCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU3LDE0ICs1NywxNCBAQCBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogRGF0
ZUluc3RhbmNlOjpnCiAKICAgICBpZiAob3V0cHV0SXNVVEMpIHsKICAgICAgICAgaWYgKG1fZGF0
YS0+bV9ncmVnb3JpYW5EYXRlVGltZVVUQ0NhY2hlZEZvck1TICE9IG1pbGxpKSB7Ci0gICAgICAg
ICAgICBtc1RvR3JlZ29yaWFuRGF0ZVRpbWUoaW50ZXJuYWxOdW1iZXIoKSwgdHJ1ZSwgbV9kYXRh
LT5tX2NhY2hlZEdyZWdvcmlhbkRhdGVUaW1lVVRDKTsKKyAgICAgICAgICAgIG1zVG9HcmVnb3Jp
YW5EYXRlVGltZShleGVjLCBpbnRlcm5hbE51bWJlcigpLCB0cnVlLCBtX2RhdGEtPm1fY2FjaGVk
R3JlZ29yaWFuRGF0ZVRpbWVVVEMpOwogICAgICAgICAgICAgbV9kYXRhLT5tX2dyZWdvcmlhbkRh
dGVUaW1lVVRDQ2FjaGVkRm9yTVMgPSBtaWxsaTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4g
Jm1fZGF0YS0+bV9jYWNoZWRHcmVnb3JpYW5EYXRlVGltZVVUQzsKICAgICB9CiAKICAgICBpZiAo
bV9kYXRhLT5tX2dyZWdvcmlhbkRhdGVUaW1lQ2FjaGVkRm9yTVMgIT0gbWlsbGkpIHsKLSAgICAg
ICAgbXNUb0dyZWdvcmlhbkRhdGVUaW1lKGludGVybmFsTnVtYmVyKCksIGZhbHNlLCBtX2RhdGEt
Pm1fY2FjaGVkR3JlZ29yaWFuRGF0ZVRpbWUpOworICAgICAgICBtc1RvR3JlZ29yaWFuRGF0ZVRp
bWUoZXhlYywgaW50ZXJuYWxOdW1iZXIoKSwgZmFsc2UsIG1fZGF0YS0+bV9jYWNoZWRHcmVnb3Jp
YW5EYXRlVGltZSk7CiAgICAgICAgIG1fZGF0YS0+bV9ncmVnb3JpYW5EYXRlVGltZUNhY2hlZEZv
ck1TID0gbWlsbGk7CiAgICAgfQogICAgIHJldHVybiAmbV9kYXRhLT5tX2NhY2hlZEdyZWdvcmlh
bkRhdGVUaW1lOwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5oCShyZXZp
c2lvbiA1MDU3MCkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAg
c3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIGluZm87CiAKLSAgICAgICAgY29u
c3QgV1RGOjpHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUoRXhlY1N0YXRlKiwg
Ym9vbCBvdXRwdXRJc1VUQykgY29uc3Q7CisgICAgICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1l
KiBncmVnb3JpYW5EYXRlVGltZShFeGVjU3RhdGUqLCBib29sIG91dHB1dElzVVRDKSBjb25zdDsK
IAogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShK
U1ZhbHVlIHByb3RvdHlwZSkKICAgICAgICAgewpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EYXRlSW5zdGFuY2VDYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGF0ZUluc3RhbmNlQ2FjaGUuaAkocmV2aXNpb24gNTA1NzApCisrKyBKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RhdGVJbnN0YW5jZUNhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDkgKzQw
LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPERhdGVJbnN0
YW5jZURhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBEYXRlSW5zdGFuY2VEYXRh
KTsgfQogCiAgICAgICAgIGRvdWJsZSBtX2dyZWdvcmlhbkRhdGVUaW1lQ2FjaGVkRm9yTVM7Ci0g
ICAgICAgIFdURjo6R3JlZ29yaWFuRGF0ZVRpbWUgbV9jYWNoZWRHcmVnb3JpYW5EYXRlVGltZTsK
KyAgICAgICAgR3JlZ29yaWFuRGF0ZVRpbWUgbV9jYWNoZWRHcmVnb3JpYW5EYXRlVGltZTsKICAg
ICAgICAgZG91YmxlIG1fZ3JlZ29yaWFuRGF0ZVRpbWVVVENDYWNoZWRGb3JNUzsKLSAgICAgICAg
V1RGOjpHcmVnb3JpYW5EYXRlVGltZSBtX2NhY2hlZEdyZWdvcmlhbkRhdGVUaW1lVVRDOworICAg
ICAgICBHcmVnb3JpYW5EYXRlVGltZSBtX2NhY2hlZEdyZWdvcmlhbkRhdGVUaW1lVVRDOwogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgRGF0ZUluc3RhbmNlRGF0YSgpCkluZGV4OiBKYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDUwNTcwKQorKysgSmF2YVNj
cmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQy
LDcgKzg0Miw3IEBAIHN0YXRpYyBKU1ZhbHVlIHNldE5ld1ZhbHVlRnJvbVRpbWVBcmdzKEUKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9IAogICAgIAotICAgIEpTVmFsdWUgcmVzdWx0ID0g
anNOdW1iZXIoZXhlYywgZ3JlZ29yaWFuRGF0ZVRpbWVUb01TKGdyZWdvcmlhbkRhdGVUaW1lLCBt
cywgaW5wdXRJc1VUQykpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoZXhlYywgZ3Jl
Z29yaWFuRGF0ZVRpbWVUb01TKGV4ZWMsIGdyZWdvcmlhbkRhdGVUaW1lLCBtcywgaW5wdXRJc1VU
QykpOwogICAgIHRoaXNEYXRlT2JqLT5zZXRJbnRlcm5hbFZhbHVlKHJlc3VsdCk7CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KQEAgLTg2NCw3ICs4NjQsNyBAQCBzdGF0aWMgSlNWYWx1ZSBzZXROZXdW
YWx1ZUZyb21EYXRlQXJncyhFCiAKICAgICBHcmVnb3JpYW5EYXRlVGltZSBncmVnb3JpYW5EYXRl
VGltZTsgCiAgICAgaWYgKG51bUFyZ3NUb1VzZSA9PSAzICYmIGlzbmFuKG1pbGxpKSkgCi0gICAg
ICAgIFdURjo6bXNUb0dyZWdvcmlhbkRhdGVUaW1lKDAsIHRydWUsIGdyZWdvcmlhbkRhdGVUaW1l
KTsgCisgICAgICAgIG1zVG9HcmVnb3JpYW5EYXRlVGltZShleGVjLCAwLCB0cnVlLCBncmVnb3Jp
YW5EYXRlVGltZSk7IAogICAgIGVsc2UgeyAKICAgICAgICAgbXMgPSBtaWxsaSAtIGZsb29yKG1p
bGxpIC8gbXNQZXJTZWNvbmQpICogbXNQZXJTZWNvbmQ7IAogICAgICAgICBjb25zdCBHcmVnb3Jp
YW5EYXRlVGltZSogb3RoZXIgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWUoZXhlYywg
aW5wdXRJc1VUQyk7CkBAIC04NzksNyArODc5LDcgQEAgc3RhdGljIEpTVmFsdWUgc2V0TmV3VmFs
dWVGcm9tRGF0ZUFyZ3MoRQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0gCiAgICAgICAg
ICAgIAotICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoZXhlYywgZ3JlZ29yaWFuRGF0ZVRp
bWVUb01TKGdyZWdvcmlhbkRhdGVUaW1lLCBtcywgaW5wdXRJc1VUQykpOworICAgIEpTVmFsdWUg
cmVzdWx0ID0ganNOdW1iZXIoZXhlYywgZ3JlZ29yaWFuRGF0ZVRpbWVUb01TKGV4ZWMsIGdyZWdv
cmlhbkRhdGVUaW1lLCBtcywgaW5wdXRJc1VUQykpOwogICAgIHRoaXNEYXRlT2JqLT5zZXRJbnRl
cm5hbFZhbHVlKHJlc3VsdCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTk4OSw3ICs5ODks
NyBAQCBKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldFllCiAgICAgaWYgKGlz
bmFuKG1pbGxpKSkKICAgICAgICAgLy8gQmFzZWQgb24gRUNNQSAyNjIgQi4yLjUgKHNldFllYXIp
CiAgICAgICAgIC8vIHRoZSB0aW1lIG11c3QgYmUgcmVzZXQgdG8gKzAgaWYgaXQgaXMgTmFOLiAK
LSAgICAgICAgbXNUb0dyZWdvcmlhbkRhdGVUaW1lKDAsIHRydWUsIGdyZWdvcmlhbkRhdGVUaW1l
KTsKKyAgICAgICAgbXNUb0dyZWdvcmlhbkRhdGVUaW1lKGV4ZWMsIDAsIHRydWUsIGdyZWdvcmlh
bkRhdGVUaW1lKTsKICAgICBlbHNlIHsgICAKICAgICAgICAgZG91YmxlIHNlY3MgPSBmbG9vciht
aWxsaSAvIG1zUGVyU2Vjb25kKTsKICAgICAgICAgbXMgPSBtaWxsaSAtIHNlY3MgKiBtc1BlclNl
Y29uZDsKQEAgLTEwMDYsNyArMTAwNiw3IEBAIEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJv
dG9GdW5jU2V0WWUKICAgICB9CiAgICAgICAgICAgICAKICAgICBncmVnb3JpYW5EYXRlVGltZS55
ZWFyID0gKHllYXIgPiA5OSB8fCB5ZWFyIDwgMCkgPyB5ZWFyIC0gMTkwMCA6IHllYXI7Ci0gICAg
SlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihleGVjLCBncmVnb3JpYW5EYXRlVGltZVRvTVMoZ3Jl
Z29yaWFuRGF0ZVRpbWUsIG1zLCBvdXRwdXRJc1VUQykpOworICAgIEpTVmFsdWUgcmVzdWx0ID0g
anNOdW1iZXIoZXhlYywgZ3JlZ29yaWFuRGF0ZVRpbWVUb01TKGV4ZWMsIGdyZWdvcmlhbkRhdGVU
aW1lLCBtcywgb3V0cHV0SXNVVEMpKTsKICAgICB0aGlzRGF0ZU9iai0+c2V0SW50ZXJuYWxWYWx1
ZShyZXN1bHQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAJKHJldmlzaW9uIDUwNTcwKQorKysg
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTEsNyArNTEsNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nT25j
ZSgpCiAgICAgaW5pdGlhbGl6ZVVTdHJpbmcoKTsKICNpZiBFTkFCTEUoSlNDX01VTFRJUExFX1RI
UkVBRFMpCiAgICAgc19kdG9hUDVNdXRleCA9IG5ldyBNdXRleDsKLSAgICBXVEY6OmluaXRpYWxp
emVEYXRlcygpOworICAgIGluaXRpYWxpemVEYXRlcygpOwogI2VuZGlmCiB9CiAKSW5kZXg6IEph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAJKHJldmlzaW9uIDUwNTcwKQorKysg
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDcsNiArMTQ3LDcgQEAgSlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEoYm9vbCBpc1NoYXJl
ZAogICAgICwgZnVuY3Rpb25Db2RlQmxvY2tCZWluZ1JlcGFyc2VkKDApCiAgICAgLCBmaXJzdFN0
cmluZ2lmaWVyVG9NYXJrKDApCiAgICAgLCBtYXJrU3RhY2sodnB0clNldC5qc0FycmF5VlB0cikK
KyAgICAsIGNhY2hlZFVUQ09mZnNldChOYU4pCiAjaWZuZGVmIE5ERUJVRwogICAgICwgbWFpblRo
cmVhZE9ubHkoZmFsc2UpCiAjZW5kaWYKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bERhdGEuaAkocmV2aXNpb24gNTA1NzApCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNiArMTUzLDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICAgICAgTWFya1N0YWNrIG1hcmtTdGFjazsKIAorICAgICAgICBkb3VibGUgY2Fj
aGVkVVRDT2Zmc2V0OworCiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBib29sIG1haW5UaHJlYWRP
bmx5OwogI2VuZGlmCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
CShyZXZpc2lvbiA1MDU3MCkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDQyLDcgKzQ0MiwxMyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgIDogbV9keW5hbWljR2xvYmFsT2JqZWN0U2xvdChjYWxsRnJhbWUtPmdsb2Jh
bERhdGEoKS5keW5hbWljR2xvYmFsT2JqZWN0KQogICAgICAgICAgICAgLCBtX3NhdmVkRHluYW1p
Y0dsb2JhbE9iamVjdChtX2R5bmFtaWNHbG9iYWxPYmplY3RTbG90KQogICAgICAgICB7Ci0gICAg
ICAgICAgICBtX2R5bmFtaWNHbG9iYWxPYmplY3RTbG90ID0gZHluYW1pY0dsb2JhbE9iamVjdDsK
KyAgICAgICAgICAgIGlmICghbV9keW5hbWljR2xvYmFsT2JqZWN0U2xvdCkgeworICAgICAgICAg
ICAgICAgIG1fZHluYW1pY0dsb2JhbE9iamVjdFNsb3QgPSBkeW5hbWljR2xvYmFsT2JqZWN0Owor
CisgICAgICAgICAgICAgICAgLy8gUmVzZXQgdGhlIFVUQyBjYWNoZSBiZXR3ZWVuIEpTIGludm9j
YXRpb25zIHRvIGZvcmNlIHRoZSBWTQorICAgICAgICAgICAgICAgIC8vIHRvIG9ic2VydmUgdGlt
ZSB6b25lIGNoYW5nZXMuCisgICAgICAgICAgICAgICAgY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCku
Y2FjaGVkVVRDT2Zmc2V0ID0gTmFOOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAg
ICAgfkR5bmFtaWNHbG9iYWxPYmplY3RTY29wZSgpCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYv
RGF0ZU1hdGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9EYXRlTWF0aC5j
cHAJKHJldmlzaW9uIDUwNTcwKQorKysgSmF2YVNjcmlwdENvcmUvd3RmL0RhdGVNYXRoLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsOCBAQAogI2luY2x1ZGUgIk1hdGhFeHRyYXMuaCIK
ICNpbmNsdWRlICJTdHJpbmdFeHRyYXMuaCIKIAorI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorCiAj
aW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPGxpbWl0cy5oPgogI2luY2x1ZGUgPGxpbWl0
cz4KQEAgLTYxLDEwICs2Myw2IEBACiAjaW5jbHVkZSA8ZXJybm8uaD4KICNlbmRpZgogCi0jaWYg
UExBVEZPUk0oREFSV0lOKQotI2luY2x1ZGUgPG5vdGlmeS5oPgotI2VuZGlmCi0KICNpZiBQTEFU
Rk9STShXSU5DRSkKIGV4dGVybiAiQyIgc2l6ZV90IHN0cmZ0aW1lKGNoYXIgKiBjb25zdCBzLCBj
b25zdCBzaXplX3QgbWF4c2l6ZSwgY29uc3QgY2hhciAqIGNvbnN0IGZvcm1hdCwgY29uc3Qgc3Ry
dWN0IHRtICogY29uc3QgdCk7CiBleHRlcm4gIkMiIHN0cnVjdCB0bSAqIGxvY2FsdGltZShjb25z
dCB0aW1lX3QgKnRpbWVyKTsKQEAgLTgyLDYgKzgwLDM0IEBAIGV4dGVybiAiQyIgc3RydWN0IHRt
ICogbG9jYWx0aW1lKGNvbnN0IHQKIAogbmFtZXNwYWNlIFdURiB7CiAKK2RvdWJsZSBnZXRDdXJy
ZW50VVRDVGltZSgpCit7CisgICAgcmV0dXJuIGZsb29yKGdldEN1cnJlbnRVVENUaW1lV2l0aE1p
Y3Jvc2Vjb25kcygpKTsKK30KKworLy8gUmV0dXJucyBjdXJyZW50IHRpbWUgaW4gbWlsbGlzZWNv
bmRzIHNpbmNlIDEgSmFuIDE5NzAuCitkb3VibGUgZ2V0Q3VycmVudFVUQ1RpbWVXaXRoTWljcm9z
ZWNvbmRzKCkKK3sKKyAgICByZXR1cm4gY3VycmVudFRpbWUoKSAqIDEwMDAuMDsgCit9CisKK3Zv
aWQgZ2V0TG9jYWxUaW1lKGNvbnN0IHRpbWVfdCogbG9jYWxUaW1lLCBzdHJ1Y3QgdG0qIGxvY2Fs
VE0pCit7CisjaWYgQ09NUElMRVIoTVNWQzcpIHx8IENPTVBJTEVSKE1JTkdXKSB8fCBQTEFURk9S
TShXSU5DRSkKKyAgICAqbG9jYWxUTSA9ICpsb2NhbHRpbWUobG9jYWxUaW1lKTsKKyNlbGlmIENP
TVBJTEVSKE1TVkMpCisgICAgbG9jYWx0aW1lX3MobG9jYWxUTSwgbG9jYWxUaW1lKTsKKyNlbHNl
CisgICAgbG9jYWx0aW1lX3IobG9jYWxUaW1lLCBsb2NhbFRNKTsKKyNlbmRpZgorfQorCit9IC8v
IG5hbWVzcGFjZSBXVEYKKwordXNpbmcgbmFtZXNwYWNlIFdURjsKKworbmFtZXNwYWNlIEpTQyB7
CisKIC8qIENvbnN0YW50cyAqLwogCiBzdGF0aWMgY29uc3QgZG91YmxlIG1pbnV0ZXNQZXJEYXkg
PSAyNC4wICogNjAuMDsKQEAgLTI5MywyOCArMzE5LDYgQEAgc3RhdGljIGludCBkYXRlVG9EYXlJ
blllYXIoaW50IHllYXIsIGludAogICAgIHJldHVybiB5ZWFyZGF5ICsgbW9udGhkYXkgKyBkYXkg
LSAxOwogfQogCi1kb3VibGUgZ2V0Q3VycmVudFVUQ1RpbWUoKQotewotICAgIHJldHVybiBmbG9v
cihnZXRDdXJyZW50VVRDVGltZVdpdGhNaWNyb3NlY29uZHMoKSk7Ci19Ci0KLS8vIFJldHVybnMg
Y3VycmVudCB0aW1lIGluIG1pbGxpc2Vjb25kcyBzaW5jZSAxIEphbiAxOTcwLgotZG91YmxlIGdl
dEN1cnJlbnRVVENUaW1lV2l0aE1pY3Jvc2Vjb25kcygpCi17Ci0gICAgcmV0dXJuIGN1cnJlbnRU
aW1lKCkgKiAxMDAwLjA7IAotfQotCi12b2lkIGdldExvY2FsVGltZShjb25zdCB0aW1lX3QqIGxv
Y2FsVGltZSwgc3RydWN0IHRtKiBsb2NhbFRNKQotewotI2lmIENPTVBJTEVSKE1TVkM3KSB8fCBD
T01QSUxFUihNSU5HVykgfHwgUExBVEZPUk0oV0lOQ0UpCi0gICAgKmxvY2FsVE0gPSAqbG9jYWx0
aW1lKGxvY2FsVGltZSk7Ci0jZWxpZiBDT01QSUxFUihNU1ZDKQotICAgIGxvY2FsdGltZV9zKGxv
Y2FsVE0sIGxvY2FsVGltZSk7Ci0jZWxzZQotICAgIGxvY2FsdGltZV9yKGxvY2FsVGltZSwgbG9j
YWxUTSk7Ci0jZW5kaWYKLX0KLQogLy8gVGhlcmUgaXMgYSBoYXJkIGxpbWl0IGF0IDIwMzggdGhh
dCB3ZSBjdXJyZW50bHkgZG8gbm90IGhhdmUgYSB3b3JrYXJvdW5kCiAvLyBmb3IgKHJkYXI6Ly9w
cm9ibGVtLzUwNTI5NzUpLgogc3RhdGljIGlubGluZSBpbnQgbWF4aW11bVllYXJGb3JEU1QoKQpA
QCAtMzk5LDM2ICs0MDMsMTcgQEAgc3RhdGljIGludDMyX3QgY2FsY3VsYXRlVVRDT2Zmc2V0KCkK
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50MzJfdD4odXRjT2Zmc2V0ICogMTAwMCk7CiB9CiAK
LSNpZiBQTEFURk9STShEQVJXSU4pCi1zdGF0aWMgaW50MzJfdCBzX2NhY2hlZFVUQ09mZnNldDsg
Ly8gSW4gbWlsbGlzZWNvbmRzLiBBbiBhc3N1bXB0aW9uIGhlcmUgaXMgdGhhdCBhY2Nlc3MgdG8g
YW4gaW50MzJfdCB2YXJpYWJsZSBpcyBhdG9taWMgb24gcGxhdGZvcm1zIHRoYXQgdGFrZSB0aGlz
IGNvZGUgcGF0aC4KLXN0YXRpYyBib29sIHNfaGF2ZUNhY2hlZFVUQ09mZnNldDsKLXN0YXRpYyBp
bnQgc19ub3RpZmljYXRpb25Ub2tlbjsKLSNlbmRpZgotCiAvKgogICogR2V0IHRoZSBkaWZmZXJl
bmNlIGluIG1pbGxpc2Vjb25kcyBiZXR3ZWVuIHRoaXMgdGltZSB6b25lIGFuZCBVVEMgKEdNVCkK
ICAqIE5PVCBpbmNsdWRpbmcgRFNULgogICovCi1kb3VibGUgZ2V0VVRDT2Zmc2V0KCkKK2RvdWJs
ZSBnZXRVVENPZmZzZXQoRXhlY1N0YXRlKiBleGVjKQogewotI2lmIFBMQVRGT1JNKERBUldJTikK
LSAgICBpZiAoc19oYXZlQ2FjaGVkVVRDT2Zmc2V0KSB7Ci0gICAgICAgIGludCBub3RpZmllZDsK
LSAgICAgICAgdWludDMyX3Qgc3RhdHVzID0gbm90aWZ5X2NoZWNrKHNfbm90aWZpY2F0aW9uVG9r
ZW4sICZub3RpZmllZCk7Ci0gICAgICAgIGlmIChzdGF0dXMgPT0gTk9USUZZX1NUQVRVU19PSyAm
JiAhbm90aWZpZWQpCi0gICAgICAgICAgICByZXR1cm4gc19jYWNoZWRVVENPZmZzZXQ7Ci0gICAg
fQotI2VuZGlmCi0KLSAgICBpbnQzMl90IHV0Y09mZnNldCA9IGNhbGN1bGF0ZVVUQ09mZnNldCgp
OwotCi0jaWYgUExBVEZPUk0oREFSV0lOKQotICAgIC8vIFRoZW9yZXRpY2FsbHksIGl0IGlzIHBv
c3NpYmxlIHRoYXQgc2V2ZXJhbCB0aHJlYWRzIHdpbGwgYmUgZXhlY3V0aW5nIHRoaXMgY29kZSBh
dCBvbmNlLCBpbiB3aGljaCBjYXNlIHdlIHdpbGwgaGF2ZSBhIHJhY2UgY29uZGl0aW9uLAotICAg
IC8vIGFuZCBhIG5ld2VyIHZhbHVlIG1heSBiZSBvdmVyd3JpdHRlbi4gSW4gcHJhY3RpY2UsIHRp
bWUgem9uZXMgZG9uJ3QgY2hhbmdlIHRoYXQgb2Z0ZW4uCi0gICAgc19jYWNoZWRVVENPZmZzZXQg
PSB1dGNPZmZzZXQ7Ci0jZW5kaWYKLQotICAgIHJldHVybiB1dGNPZmZzZXQ7CisgICAgZG91Ymxl
IHV0Y09mZnNldCA9IGV4ZWMtPmdsb2JhbERhdGEoKS5jYWNoZWRVVENPZmZzZXQ7CisgICAgaWYg
KCFpc25hbih1dGNPZmZzZXQpKQorICAgICAgICByZXR1cm4gdXRjT2Zmc2V0OworICAgIGV4ZWMt
Pmdsb2JhbERhdGEoKS5jYWNoZWRVVENPZmZzZXQgPSBjYWxjdWxhdGVVVENPZmZzZXQoKTsKKyAg
ICByZXR1cm4gZXhlYy0+Z2xvYmFsRGF0YSgpLmNhY2hlZFVUQ09mZnNldDsKIH0KIAogLyoKQEAg
LTQ4NiwxNCArNDcxLDE0IEBAIHN0YXRpYyBkb3VibGUgZ2V0RFNUT2Zmc2V0KGRvdWJsZSBtcywg
ZG8KICAgICByZXR1cm4gZ2V0RFNUT2Zmc2V0U2ltcGxlKG1zIC8gbXNQZXJTZWNvbmQsIHV0Y09m
ZnNldCk7CiB9CiAKLWRvdWJsZSBncmVnb3JpYW5EYXRlVGltZVRvTVMoY29uc3QgR3JlZ29yaWFu
RGF0ZVRpbWUmIHQsIGRvdWJsZSBtaWxsaVNlY29uZHMsIGJvb2wgaW5wdXRJc1VUQykKK2RvdWJs
ZSBncmVnb3JpYW5EYXRlVGltZVRvTVMoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBHcmVnb3JpYW5E
YXRlVGltZSYgdCwgZG91YmxlIG1pbGxpU2Vjb25kcywgYm9vbCBpbnB1dElzVVRDKQogewogICAg
IGludCBkYXkgPSBkYXRlVG9EYXlJblllYXIodC55ZWFyICsgMTkwMCwgdC5tb250aCwgdC5tb250
aERheSk7CiAgICAgZG91YmxlIG1zID0gdGltZVRvTVModC5ob3VyLCB0Lm1pbnV0ZSwgdC5zZWNv
bmQsIG1pbGxpU2Vjb25kcyk7CiAgICAgZG91YmxlIHJlc3VsdCA9IChkYXkgKiBtc1BlckRheSkg
KyBtczsKIAogICAgIGlmICghaW5wdXRJc1VUQykgeyAvLyBjb252ZXJ0IHRvIFVUQwotICAgICAg
ICBkb3VibGUgdXRjT2Zmc2V0ID0gZ2V0VVRDT2Zmc2V0KCk7CisgICAgICAgIGRvdWJsZSB1dGNP
ZmZzZXQgPSBnZXRVVENPZmZzZXQoZXhlYyk7CiAgICAgICAgIHJlc3VsdCAtPSB1dGNPZmZzZXQ7
CiAgICAgICAgIHJlc3VsdCAtPSBnZXREU1RPZmZzZXQocmVzdWx0LCB1dGNPZmZzZXQpOwogICAg
IH0KQEAgLTUwMiwxMiArNDg3LDEyIEBAIGRvdWJsZSBncmVnb3JpYW5EYXRlVGltZVRvTVMoY29u
c3QgR3JlZ28KIH0KIAogLy8gaW5wdXQgaXMgVVRDCi12b2lkIG1zVG9HcmVnb3JpYW5EYXRlVGlt
ZShkb3VibGUgbXMsIGJvb2wgb3V0cHV0SXNVVEMsIEdyZWdvcmlhbkRhdGVUaW1lJiB0bSkKK3Zv
aWQgbXNUb0dyZWdvcmlhbkRhdGVUaW1lKEV4ZWNTdGF0ZSogZXhlYywgZG91YmxlIG1zLCBib29s
IG91dHB1dElzVVRDLCBHcmVnb3JpYW5EYXRlVGltZSYgdG0pCiB7CiAgICAgZG91YmxlIGRzdE9m
ZiA9IDAuMDsKICAgICBkb3VibGUgdXRjT2ZmID0gMC4wOwogICAgIGlmICghb3V0cHV0SXNVVEMp
IHsKLSAgICAgICAgdXRjT2ZmID0gZ2V0VVRDT2Zmc2V0KCk7CisgICAgICAgIHV0Y09mZiA9IGdl
dFVUQ09mZnNldChleGVjKTsKICAgICAgICAgZHN0T2ZmID0gZ2V0RFNUT2Zmc2V0KG1zLCB1dGNP
ZmYpOwogICAgICAgICBtcyArPSBkc3RPZmYgKyB1dGNPZmY7CiAgICAgfQpAQCAtNTM0LDE0ICs1
MTksNiBAQCB2b2lkIGluaXRpYWxpemVEYXRlcygpCiAjZW5kaWYKIAogICAgIGVxdWl2YWxlbnRZ
ZWFyRm9yRFNUKDIwMDApOyAvLyBOZWVkIHRvIGNhbGwgb25jZSB0byBpbml0aWFsaXplIGEgc3Rh
dGljIHVzZWQgaW4gdGhpcyBmdW5jdGlvbi4KLSNpZiBQTEFURk9STShEQVJXSU4pCi0gICAgLy8g
UmVnaXN0ZXIgZm9yIGEgbm90aWZpY2F0aW9uIHdoZW5ldmVyIHRoZSB0aW1lIHpvbmUgY2hhbmdl
cy4KLSAgICB1aW50MzJfdCBzdGF0dXMgPSBub3RpZnlfcmVnaXN0ZXJfY2hlY2soImNvbS5hcHBs
ZS5zeXN0ZW0udGltZXpvbmUiLCAmc19ub3RpZmljYXRpb25Ub2tlbik7Ci0gICAgaWYgKHN0YXR1
cyA9PSBOT1RJRllfU1RBVFVTX09LKSB7Ci0gICAgICAgIHNfY2FjaGVkVVRDT2Zmc2V0ID0gY2Fs
Y3VsYXRlVVRDT2Zmc2V0KCk7Ci0gICAgICAgIHNfaGF2ZUNhY2hlZFVUQ09mZnNldCA9IHRydWU7
Ci0gICAgfQotI2VuZGlmCiB9CiAKIHN0YXRpYyBpbmxpbmUgZG91YmxlIHltZGhtc1RvU2Vjb25k
cyhsb25nIHllYXIsIGludCBtb24sIGludCBkYXksIGludCBob3VyLCBpbnQgbWludXRlLCBpbnQg
c2Vjb25kKQpAQCAtNjIyLDcgKzU5OSw4IEBAIHN0YXRpYyBib29sIHBhcnNlTG9uZyhjb25zdCBj
aGFyKiBzdHJpbmcKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotZG91YmxlIHBhcnNlRGF0ZUZyb21O
dWxsVGVybWluYXRlZENoYXJhY3RlcnMoY29uc3QgY2hhciogZGF0ZVN0cmluZykKKy8vIE9kZCBj
YXNlIHdoZXJlICdleGVjJyBpcyBhbGxvd2VkIHRvIGJlIDAsIHRvIGFjY29tb2RhdGUgYSBjYWxs
ZXIgaW4gV2ViQ29yZS4KK2RvdWJsZSBwYXJzZURhdGVGcm9tTnVsbFRlcm1pbmF0ZWRDaGFyYWN0
ZXJzKGNvbnN0IGNoYXIqIGRhdGVTdHJpbmcsIEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICAvLyBU
aGlzIHBhcnNlcyBhIGRhdGUgaW4gdGhlIGZvcm06CiAgICAgLy8gICAgIFR1ZXNkYXksIDA5LU5v
di05OSAyMzoxMjo0MCBHTVQKQEAgLTg4OSwyMyArODY3LDIyIEBAIGRvdWJsZSBwYXJzZURhdGVG
cm9tTnVsbFRlcm1pbmF0ZWRDaGFyYWMKICAgICAgICAgZWxzZQogICAgICAgICAgICAgeWVhciAr
PSAxOTAwOwogICAgIH0KLQorICAgIAorICAgIGRvdWJsZSBtcyA9IHltZGhtc1RvU2Vjb25kcyh5
ZWFyLCBtb250aCArIDEsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQpICogbXNQZXJTZWNvbmQ7
CiAgICAgLy8gZmFsbCBiYWNrIHRvIGxvY2FsIHRpbWV6b25lCiAgICAgaWYgKCFoYXZlVFopIHsK
LSAgICAgICAgR3JlZ29yaWFuRGF0ZVRpbWUgdDsKLSAgICAgICAgdC5tb250aERheSA9IGRheTsK
LSAgICAgICAgdC5tb250aCA9IG1vbnRoOwotICAgICAgICB0LnllYXIgPSB5ZWFyIC0gMTkwMDsK
LSAgICAgICAgdC5pc0RTVCA9IC0xOwotICAgICAgICB0LnNlY29uZCA9IHNlY29uZDsKLSAgICAg
ICAgdC5taW51dGUgPSBtaW51dGU7Ci0gICAgICAgIHQuaG91ciA9IGhvdXI7Ci0KLSAgICAgICAg
Ly8gVXNlIG91ciBncmVnb3JpYW5EYXRlVGltZVRvTVMoKSByYXRoZXIgdGhhbiBta3RpbWUoKSBh
cyB0aGUgbGF0dGVyIGNhbid0IGhhbmRsZSB0aGUgZnVsbCB5ZWFyIHJhbmdlLgotICAgICAgICBy
ZXR1cm4gZ3JlZ29yaWFuRGF0ZVRpbWVUb01TKHQsIDAsIGZhbHNlKTsKKyAgICAgICAgaWYgKGV4
ZWMpIHsKKyAgICAgICAgICAgIGRvdWJsZSB1dGNPZmZzZXQgPSBnZXRVVENPZmZzZXQoZXhlYyk7
CisgICAgICAgICAgICBkb3VibGUgZHN0T2Zmc2V0ID0gZ2V0RFNUT2Zmc2V0KG1zLCB1dGNPZmZz
ZXQpOworICAgICAgICAgICAgb2Zmc2V0ID0gc3RhdGljX2Nhc3Q8aW50PigodXRjT2Zmc2V0ICsg
ZHN0T2Zmc2V0KSAvIG1zUGVyTWludXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IGRvdWJsZSB1dGNPZmZzZXQgPSBjYWxjdWxhdGVVVENPZmZzZXQoKTsKKyAgICAgICAgICAgIGRv
dWJsZSBkc3RPZmZzZXQgPSBnZXREU1RPZmZzZXQobXMsIHV0Y09mZnNldCk7CisgICAgICAgICAg
ICBvZmZzZXQgPSBzdGF0aWNfY2FzdDxpbnQ+KCh1dGNPZmZzZXQgKyBkc3RPZmZzZXQpIC8gbXNQ
ZXJNaW51dGUpOworICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuICh5bWRobXNUb1NlY29u
ZHMoeWVhciwgbW9udGggKyAxLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kKSAtIChvZmZzZXQg
KiA2MC4wKSkgKiBtc1BlclNlY29uZDsKKyAgICByZXR1cm4gbXMgLSAob2Zmc2V0ICogbXNQZXJN
aW51dGUpOwogfQogCiBkb3VibGUgdGltZUNsaXAoZG91YmxlIHQpCkBAIC05MTgsNCArODk1LDQg
QEAgZG91YmxlIHRpbWVDbGlwKGRvdWJsZSB0KQogfQogCiAKLX0gLy8gbmFtZXNwYWNlIFdURgor
fSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvRGF0ZU1hdGguaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvRGF0ZU1hdGguaAkocmV2aXNpb24gNTA1
NzApCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvRGF0ZU1hdGguaAkod29ya2luZyBjb3B5KQpAQCAt
NDUsMjIgKzQ1LDI3IEBACiAjaW5jbHVkZSA8dGltZS5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgog
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5o
PgogCiBuYW1lc3BhY2UgV1RGIHsKKyAgICBkb3VibGUgZ2V0Q3VycmVudFVUQ1RpbWUoKTsKKyAg
ICBkb3VibGUgZ2V0Q3VycmVudFVUQ1RpbWVXaXRoTWljcm9zZWNvbmRzKCk7CisgICAgdm9pZCBn
ZXRMb2NhbFRpbWUoY29uc3QgdGltZV90KiwgdG0qKTsKK30KKworbmFtZXNwYWNlIEpTQyB7CiAK
K2NsYXNzIEV4ZWNTdGF0ZTsKIHN0cnVjdCBHcmVnb3JpYW5EYXRlVGltZTsKIAogdm9pZCBpbml0
aWFsaXplRGF0ZXMoKTsKLXZvaWQgbXNUb0dyZWdvcmlhbkRhdGVUaW1lKGRvdWJsZSwgYm9vbCBv
dXRwdXRJc1VUQywgR3JlZ29yaWFuRGF0ZVRpbWUmKTsKLWRvdWJsZSBncmVnb3JpYW5EYXRlVGlt
ZVRvTVMoY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUmLCBkb3VibGUsIGJvb2wgaW5wdXRJc1VUQyk7
Ci1kb3VibGUgZ2V0VVRDT2Zmc2V0KCk7Cit2b2lkIG1zVG9HcmVnb3JpYW5EYXRlVGltZShFeGVj
U3RhdGUqLCBkb3VibGUsIGJvb2wgb3V0cHV0SXNVVEMsIEdyZWdvcmlhbkRhdGVUaW1lJik7Citk
b3VibGUgZ3JlZ29yaWFuRGF0ZVRpbWVUb01TKEV4ZWNTdGF0ZSosIGNvbnN0IEdyZWdvcmlhbkRh
dGVUaW1lJiwgZG91YmxlLCBib29sIGlucHV0SXNVVEMpOworZG91YmxlIGdldFVUQ09mZnNldChF
eGVjU3RhdGUqKTsKIGludCBlcXVpdmFsZW50WWVhckZvckRTVChpbnQgeWVhcik7Ci1kb3VibGUg
Z2V0Q3VycmVudFVUQ1RpbWUoKTsKLWRvdWJsZSBnZXRDdXJyZW50VVRDVGltZVdpdGhNaWNyb3Nl
Y29uZHMoKTsKLXZvaWQgZ2V0TG9jYWxUaW1lKGNvbnN0IHRpbWVfdCosIHRtKik7CiAKIC8vIE5v
dCByZWFsbHkgbWF0aCByZWxhdGVkLCBidXQgdGhpcyBpcyBjdXJyZW50bHkgdGhlIG9ubHkgc2hh
cmVkIHBsYWNlIHRvIHB1dCB0aGVzZS4gIAotZG91YmxlIHBhcnNlRGF0ZUZyb21OdWxsVGVybWlu
YXRlZENoYXJhY3RlcnMoY29uc3QgY2hhciopOworZG91YmxlIHBhcnNlRGF0ZUZyb21OdWxsVGVy
bWluYXRlZENoYXJhY3RlcnMoY29uc3QgY2hhciogZGF0ZVN0cmluZywgRXhlY1N0YXRlKiBleGVj
KTsgLy8gZXhlYyBtYXkgYmUgMAogZG91YmxlIHRpbWVDbGlwKGRvdWJsZSk7CiAKIGNvbnN0IGNo
YXIgKiBjb25zdCB3ZWVrZGF5TmFtZVs3XSA9IHsgIk1vbiIsICJUdWUiLCAiV2VkIiwgIlRodSIs
ICJGcmkiLCAiU2F0IiwgIlN1biIgfTsKQEAgLTk4LDcgKzEwMyw3IEBAIHN0cnVjdCBHcmVnb3Jp
YW5EYXRlVGltZSA6IE5vbmNvcHlhYmxlIHsKICAgICAgICAgZGVsZXRlIFtdIHRpbWVab25lOwog
ICAgIH0KIAotICAgIEdyZWdvcmlhbkRhdGVUaW1lKGNvbnN0IHRtJiBpblRtKQorICAgIEdyZWdv
cmlhbkRhdGVUaW1lKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgdG0mIGluVG0pCiAgICAgICAgIDog
c2Vjb25kKGluVG0udG1fc2VjKQogICAgICAgICAsIG1pbnV0ZShpblRtLnRtX21pbikKICAgICAg
ICAgLCBob3VyKGluVG0udG1faG91cikKQEAgLTEwOSwxMCArMTE0LDExIEBAIHN0cnVjdCBHcmVn
b3JpYW5EYXRlVGltZSA6IE5vbmNvcHlhYmxlIHsKICAgICAgICAgLCB5ZWFyKGluVG0udG1feWVh
cikKICAgICAgICAgLCBpc0RTVChpblRtLnRtX2lzZHN0KQogICAgIHsKKyAgICAgICAgVU5VU0VE
X1BBUkFNKGV4ZWMpOwogI2lmIEhBVkUoVE1fR01UT0ZGKQogICAgICAgICB1dGNPZmZzZXQgPSBz
dGF0aWNfY2FzdDxpbnQ+KGluVG0udG1fZ210b2ZmKTsKICNlbHNlCi0gICAgICAgIHV0Y09mZnNl
dCA9IHN0YXRpY19jYXN0PGludD4oZ2V0VVRDT2Zmc2V0KCkgLyBtc1BlclNlY29uZCArIChpc0RT
VCA/IHNlY29uZHNQZXJIb3VyIDogMCkpOworICAgICAgICB1dGNPZmZzZXQgPSBzdGF0aWNfY2Fz
dDxpbnQ+KGdldFVUQ09mZnNldChleGVjKSAvIG1zUGVyU2Vjb25kICsgKGlzRFNUID8gc2Vjb25k
c1BlckhvdXIgOiAwKSk7CiAjZW5kaWYKIAogI2lmIEhBVkUoVE1fWk9ORSkKQEAgLTE4Nyw2ICsx
OTMsNiBAQCBzdGF0aWMgaW5saW5lIGludCBnbXRvZmZzZXQoY29uc3QgR3JlZ29yCiAgICAgcmV0
dXJuIHQudXRjT2Zmc2V0OwogfQogCi19IC8vIG5hbWVzcGFjZSBXVEYKK30gLy8gbmFtZXNwYWNl
IEpTQwogCiAjZW5kaWYgLy8gRGF0ZU1hdGhfaAo=
</data>
<flag name="review"
          id="24193"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>