<?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>23980</bug_id>
          
          <creation_ts>2009-02-16 14:52:29 -0800</creation_ts>
          <short_desc>WorkerRunLoop needs a way to run in a given mode similar to CFRunLoopInMode.</short_desc>
          <delta_ts>2009-02-19 14:46:46 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          <dependson>23976</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Levin">levin</reporter>
          <assigned_to name="David Levin">levin</assigned_to>
          <cc>ap</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>109891</commentid>
    <comment_count>0</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-02-16 14:52:29 -0800</bug_when>
    <thetext>It also needs this as a nested run loop support nested run loops.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109893</commentid>
    <comment_count>1</comment_count>
      <attachid>27712</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-02-16 15:00:03 -0800</bug_when>
    <thetext>Created attachment 27712
Proposed fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109927</commentid>
    <comment_count>2</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-02-17 00:13:24 -0800</bug_when>
    <thetext>Perhaps preRunInMode and postRunInMode could be named differently - not by the time these methods are called at but by what they actually do, lets say ensureSharedTimer and releaseSharedTimer.

Also TaskWithMode could be just WorkerRunLoop::Task, seems there is no need to list its data members in the name.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109933</commentid>
    <comment_count>3</comment_count>
      <attachid>27712</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-02-17 00:40:32 -0800</bug_when>
    <thetext>Comment on attachment 27712
Proposed fix.

Addressing dimich&apos;s suggestions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109935</commentid>
    <comment_count>4</comment_count>
      <attachid>27720</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-02-17 01:09:57 -0800</bug_when>
    <thetext>Created attachment 27720
Proposed fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110163</commentid>
    <comment_count>5</comment_count>
      <attachid>27775</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-02-18 19:19:35 -0800</bug_when>
    <thetext>Created attachment 27775
Proposed fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110175</commentid>
    <comment_count>6</comment_count>
      <attachid>27775</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-02-18 23:58:17 -0800</bug_when>
    <thetext>Comment on attachment 27775
Proposed fix.

I just saw some small mistakes with RefPtr that should be PassRefPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110178</commentid>
    <comment_count>7</comment_count>
      <attachid>27780</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-02-19 00:07:31 -0800</bug_when>
    <thetext>Created attachment 27780
proposed fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110196</commentid>
    <comment_count>8</comment_count>
      <attachid>27780</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-02-19 03:31:12 -0800</bug_when>
    <thetext>Comment on attachment 27780
proposed fix.

Some comments:

&gt; +void WorkerRunLoop::setSharedTimer()
&gt; +{
&gt; +    if (!m_nestedCount)
&gt; +        threadGlobalData().threadTimers().setSharedTimer(m_sharedTimer.get());
&gt; +    m_nestedCount++;
&gt; +}

In lazy reading mode, I don&apos;t understand this function. In which sense does it &quot;set&quot; the timer? Also, it seems a bit strange that worker nesting count is incremented in some timer-related function (even though it&apos;s only necessary for timer management).

Should it be called just enterLoop() or something? Should RAII be used for exitLoop for extra safety?

&gt; +        result = runInMode(context, NULL);

We use 0, not NULL in C++ code. But I also don&apos;t understand why String construction isn&apos;t ambiguous here - it has lots of one-argument constructors. I think that a named constant for default mode would help.

&gt; +    MessageQueueWaitResult result = runInMode(context, &amp;modePredicate);

Passing by reference is usual in C++.

Generally, I&apos;m not sure how a task that can be served in multiple modes will work. Is this not implemented yet, or am I missing something? E.g. a loading progress task should be delivered both in non-nested loops, and in nested XHR loop.

As commented in another bug, I wonder if we need waitForMessageFilteredWithTimeout.

A brief description of the API in ChangeLog would be nice.

&gt; +    postTaskForMode(task, String());

Again, this calls for a named constant.

It&apos;s sad that we need to wrap the task in another object just to add a mode data member to it. I don&apos;t have any suggestion, and don&apos;t ask for this to be fixed now, but it&apos;s something to keep in mind.

This looks nearly ready to go, but I think that there were enough comments for another round.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110227</commentid>
    <comment_count>9</comment_count>
      <attachid>27795</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-02-19 10:46:10 -0800</bug_when>
    <thetext>Created attachment 27795
Proposed fix.

Addressed comments.

&gt; Generally, I&apos;m not sure how a task that can be served in multiple modes will
&gt; work. Is this not implemented yet, or am I missing something? 
Not implemented yet.  I&apos;d like to discuss some details around your scenario.  I&apos;ll find you in irc or email you, but regardless as if needed, I&apos;ll do this in a future change.


&gt; As commented in another bug, I wonder if we need waitForMessageFilteredWithTimeout.
I like this idea.  How about if I do it in another patch right after this? (I&apos;m thinking about adding an Infinite constant that can be passed in and then just collapsing some of the if&apos;s in runInMode.  I&apos;d also like to remove duplicate code in MessageQueue (as long as it is still readable).


&gt; A brief description of the API in ChangeLog would be nice.
Added something that I like, but I may not have been brief enough ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110238</commentid>
    <comment_count>10</comment_count>
      <attachid>27795</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-02-19 11:09:47 -0800</bug_when>
    <thetext>Comment on attachment 27795
Proposed fix.

Ok, let get this landed, and possibly refactor later, when all pieces of the puzzle are available.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110304</commentid>
    <comment_count>11</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-02-19 14:46:46 -0800</bug_when>
    <thetext>Commited as r41088.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27712</attachid>
            <date>2009-02-16 15:00:03 -0800</date>
            <delta_ts>2009-02-17 00:40:32 -0800</delta_ts>
            <desc>Proposed fix.</desc>
            <filename>bug23980.txt</filename>
            <type>text/plain</type>
            <size>6886</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MmY5MDJkYi4uNzQ0NmExZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiwyOSBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgogCisgICAgICAgIEJ1ZyAyMzk4MDogV29ya2VyUnVuTG9vcCBuZWVkcyBh
IHdheSB0byBydW4gaW4gYSBnaXZlbiBtb2RlIHNpbWlsYXIgdG8gQ0ZSdW5Mb29wSW5Nb2RlLgor
ICAgICAgICA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTgwPgor
CisgICAgICAgIE5vIG9ic2VydmFibGUgY2hhbmdlIGluIGJlaGF2aW9yLCBzbyBubyB0ZXN0Lgor
CisgICAgICAgICogZG9tL1dvcmtlclJ1bkxvb3AuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rmls
dGVyRm9yTW9kZTo6RmlsdGVyRm9yTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJGb3JN
b2RlOjpmaW5kKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6OldvcmtlclJ1bkxv
b3ApOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyUnVuTG9vcDo6fldvcmtlclJ1bkxvb3ApOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyUnVuTG9vcDo6cHJlUnVuSW5Nb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6OnBvc3RSdW5Jbk1vZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyUnVuTG9vcDo6cnVuKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6
OnJ1bkluTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW5Mb29wOjpwb3N0VGFza0Zv
ck1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyUnVuTG9vcDo6cG9zdFRhc2spOgorICAg
ICAgICAqIGRvbS9Xb3JrZXJSdW5Mb29wLmg6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW5M
b29wOjpUYXNrV2l0aE1vZGU6OlRhc2tXaXRoTW9kZSk6CisKKzIwMDktMDItMTYgIERhdmlkIExl
dmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCiAgICAgICAgIEJ1ZyAyMzk3NzogVW5uZWNlc3NhcnkgdGltZXIgcmVsYXRlZCBo
ZWFkZXJzIGluIGZpbGVzIGFuZCB1bm5lY2Vzc2FyeSBwdWJsaWMgY29uc3RydWN0b3IuCiAgICAg
ICAgIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5Nzc+CiAKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1dvcmtlclJ1bkxvb3AuY3BwIGIvV2ViQ29yZS9kb20vV29y
a2VyUnVuTG9vcC5jcHAKaW5kZXggN2E4YmVkZS4uZjc3ZWEwZSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9kb20vV29ya2VyUnVuTG9vcC5jcHAKKysrIGIvV2ViQ29yZS9kb20vV29ya2VyUnVuTG9vcC5j
cHAKQEAgLTcwLDQ0ICs3MCwxMDYgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgbV9uZXh0RmlyZVRp
bWU7CiB9OwogCitjbGFzcyBGaWx0ZXJGb3JNb2RlIDogcHVibGljIE1lc3NhZ2VRdWV1ZTxXb3Jr
ZXJSdW5Mb29wOjpUYXNrV2l0aE1vZGU+OjpGaWx0ZXIgeworcHVibGljOgorICAgIEZpbHRlckZv
ck1vZGUoY29uc3QgU3RyaW5nJiBtb2RlKQorICAgICAgICA6IG1fbW9kZShtb2RlKQorICAgIHsK
KyAgICB9CisKKyAgICB2aXJ0dWFsIFdURjo6RGVxdWVDb25zdEl0ZXJhdG9yPFdvcmtlclJ1bkxv
b3A6OlRhc2tXaXRoTW9kZT4gZmluZChjb25zdCBEZXF1ZTxXb3JrZXJSdW5Mb29wOjpUYXNrV2l0
aE1vZGU+JiBkZXF1ZSkKKyAgICB7CisgICAgICAgIGZvciAoV1RGOjpEZXF1ZUNvbnN0SXRlcmF0
b3I8V29ya2VyUnVuTG9vcDo6VGFza1dpdGhNb2RlPiBpdCA9IGRlcXVlLmJlZ2luKCk7IGl0ICE9
IGRlcXVlLmVuZCgpOyArK2l0KSB7CisgICAgICAgICAgICBpZiAobV9tb2RlLmlzTnVsbCgpIHx8
IG1fbW9kZSA9PSBpdC0+bV9tb2RlKQorICAgICAgICAgICAgICAgIHJldHVybiBpdDsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4gZGVxdWUuZW5kKCk7CisgICAgfQorCitwcml2YXRlOgorICAg
IFN0cmluZyBtX21vZGU7Cit9OworCiBXb3JrZXJSdW5Mb29wOjpXb3JrZXJSdW5Mb29wKCkKICAg
ICA6IG1fc2hhcmVkVGltZXIoV29ya2VyU2hhcmVkVGltZXI6OmNyZWF0ZSgpKQorICAgICwgbV9u
ZXN0ZWRDb3VudCgwKQogewogfQogCiBXb3JrZXJSdW5Mb29wOjp+V29ya2VyUnVuTG9vcCgpCiB7
CisgICAgQVNTRVJUKCFtX25lc3RlZENvdW50KTsKK30KKwordm9pZCBXb3JrZXJSdW5Mb29wOjpw
cmVSdW5Jbk1vZGUoKQoreworICAgIGlmICghbV9uZXN0ZWRDb3VudCkKKyAgICAgICAgdGhyZWFk
R2xvYmFsRGF0YSgpLnRocmVhZFRpbWVycygpLnNldFNoYXJlZFRpbWVyKG1fc2hhcmVkVGltZXIu
Z2V0KCkpOworICAgIG1fbmVzdGVkQ291bnQrKzsKK30KKwordm9pZCBXb3JrZXJSdW5Mb29wOjpw
b3N0UnVuSW5Nb2RlKCkKK3sKKyAgICBtX25lc3RlZENvdW50LS07CisgICAgaWYgKCFtX25lc3Rl
ZENvdW50KQorICAgICAgICB0aHJlYWRHbG9iYWxEYXRhKCkudGhyZWFkVGltZXJzKCkuc2V0U2hh
cmVkVGltZXIoMCk7CiB9CiAKIHZvaWQgV29ya2VyUnVuTG9vcDo6cnVuKFdvcmtlckNvbnRleHQq
IGNvbnRleHQpCiB7CisgICAgcHJlUnVuSW5Nb2RlKCk7CisgICAgTWVzc2FnZVF1ZXVlV2FpdFJl
c3VsdCByZXN1bHQ7CisgICAgZG8geworICAgICAgICByZXN1bHQgPSBydW5Jbk1vZGUoY29udGV4
dCwgTlVMTCk7CisgICAgfSB3aGlsZSAocmVzdWx0ICE9IE1lc3NhZ2VRdWV1ZVRlcm1pbmF0ZWQp
OworICAgIHBvc3RSdW5Jbk1vZGUoKTsKK30KKworTWVzc2FnZVF1ZXVlV2FpdFJlc3VsdCBXb3Jr
ZXJSdW5Mb29wOjpydW5Jbk1vZGUoV29ya2VyQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5n
JiBtb2RlKQoreworICAgIHByZVJ1bkluTW9kZSgpOworICAgIEZpbHRlckZvck1vZGUgZmlsdGVy
Rm9yTW9kZShtb2RlKTsKKyAgICBNZXNzYWdlUXVldWVXYWl0UmVzdWx0IHJlc3VsdCA9IHJ1bklu
TW9kZShjb250ZXh0LCAmZmlsdGVyRm9yTW9kZSk7CisgICAgcG9zdFJ1bkluTW9kZSgpOworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK01lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgV29ya2VyUnVuTG9v
cDo6cnVuSW5Nb2RlKFdvcmtlckNvbnRleHQqIGNvbnRleHQsIE1lc3NhZ2VRdWV1ZTxUYXNrV2l0
aE1vZGU+OjpGaWx0ZXIqIGZpbHRlcikKK3sKICAgICBBU1NFUlQoY29udGV4dCk7CiAgICAgQVNT
RVJUKGNvbnRleHQtPnRocmVhZCgpKTsKICAgICBBU1NFUlQoY29udGV4dC0+dGhyZWFkKCktPnRo
cmVhZElEKCkgPT0gY3VycmVudFRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9uZXN0ZWRDb3VudCA+
IDApOwogCi0gICAgdGhyZWFkR2xvYmFsRGF0YSgpLnRocmVhZFRpbWVycygpLnNldFNoYXJlZFRp
bWVyKG1fc2hhcmVkVGltZXIuZ2V0KCkpOwotCi0gICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAg
UmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2s7Ci0gICAgICAgIE1lc3Nh
Z2VRdWV1ZVdhaXRSZXN1bHQgcmVzdWx0OwotCisgICAgVGFza1dpdGhNb2RlIHRhc2tXaXRoTW9k
ZTsKKyAgICBNZXNzYWdlUXVldWVXYWl0UmVzdWx0IHJlc3VsdDsKKyAgICBpZiAoIWZpbHRlcikg
ewogICAgICAgICBpZiAobV9zaGFyZWRUaW1lci0+aXNBY3RpdmUoKSkKLSAgICAgICAgICAgIHJl
c3VsdCA9IG1fbWVzc2FnZVF1ZXVlLndhaXRGb3JNZXNzYWdlVGltZWQodGFzaywgbV9zaGFyZWRU
aW1lci0+ZmlyZVRpbWUoKSk7CisgICAgICAgICAgICByZXN1bHQgPSBtX21lc3NhZ2VRdWV1ZS53
YWl0Rm9yTWVzc2FnZVRpbWVkKHRhc2tXaXRoTW9kZSwgbV9zaGFyZWRUaW1lci0+ZmlyZVRpbWUo
KSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3VsdCA9IChtX21lc3NhZ2VRdWV1ZS53
YWl0Rm9yTWVzc2FnZSh0YXNrKSA/IE1lc3NhZ2VRdWV1ZU1lc3NhZ2VSZWNlaXZlZCA6IE1lc3Nh
Z2VRdWV1ZVRlcm1pbmF0ZWQpOwotCi0gICAgICAgIGlmIChyZXN1bHQgPT0gTWVzc2FnZVF1ZXVl
VGVybWluYXRlZCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAKLSAgICAgICAgaWYgKHJl
c3VsdCA9PSBNZXNzYWdlUXVldWVNZXNzYWdlUmVjZWl2ZWQpCi0gICAgICAgICAgICB0YXNrLT5w
ZXJmb3JtVGFzayhjb250ZXh0KTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBBU1NFUlQo
cmVzdWx0ID09IE1lc3NhZ2VRdWV1ZVRpbWVvdXQpOwotICAgICAgICAgICAgbV9zaGFyZWRUaW1l
ci0+ZmlyZSgpOwotICAgICAgICB9CisgICAgICAgICAgICByZXN1bHQgPSBtX21lc3NhZ2VRdWV1
ZS53YWl0Rm9yTWVzc2FnZSh0YXNrV2l0aE1vZGUpID8gTWVzc2FnZVF1ZXVlTWVzc2FnZVJlY2Vp
dmVkIDogTWVzc2FnZVF1ZXVlVGVybWluYXRlZDsKKyAgICB9IGVsc2UKKyAgICAgICAgcmVzdWx0
ID0gbV9tZXNzYWdlUXVldWUud2FpdEZvck1lc3NhZ2VGaWx0ZXJlZCh0YXNrV2l0aE1vZGUsICpm
aWx0ZXIpID8gTWVzc2FnZVF1ZXVlTWVzc2FnZVJlY2VpdmVkIDogTWVzc2FnZVF1ZXVlVGVybWlu
YXRlZDsKKworICAgIHN3aXRjaCAocmVzdWx0KSB7CisgICAgY2FzZSBNZXNzYWdlUXVldWVUZXJt
aW5hdGVkOgorICAgICAgICBicmVhazsKKworICAgIGNhc2UgTWVzc2FnZVF1ZXVlTWVzc2FnZVJl
Y2VpdmVkOgorICAgICAgICB0YXNrV2l0aE1vZGUubV90YXNrLT5wZXJmb3JtVGFzayhjb250ZXh0
KTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIE1lc3NhZ2VRdWV1ZVRpbWVvdXQ6CisgICAg
ICAgIG1fc2hhcmVkVGltZXItPmZpcmUoKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAg
dGhyZWFkR2xvYmFsRGF0YSgpLnRocmVhZFRpbWVycygpLnNldFNoYXJlZFRpbWVyKDApOworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgV29ya2VyUnVuTG9vcDo6cG9zdFRhc2tGb3JNb2Rl
KFBhc3NSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaywgY29uc3QgU3Ry
aW5nJiBtb2RlKQoreworICAgIG1fbWVzc2FnZVF1ZXVlLmFwcGVuZChUYXNrV2l0aE1vZGUodGFz
aywgbW9kZS5jb3B5KCkpKTsKIH0KIAogdm9pZCBXb3JrZXJSdW5Mb29wOjp0ZXJtaW5hdGUoKQpA
QCAtMTE3LDcgKzE3OSw3IEBAIHZvaWQgV29ya2VyUnVuTG9vcDo6dGVybWluYXRlKCkKIAogdm9p
ZCBXb3JrZXJSdW5Mb29wOjpwb3N0VGFzayhQYXNzUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OlRhc2s+IHRhc2spCiB7Ci0gICAgbV9tZXNzYWdlUXVldWUuYXBwZW5kKHRhc2spOworICAg
IHBvc3RUYXNrRm9yTW9kZSh0YXNrLCBTdHJpbmcoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1dvcmtlclJ1bkxvb3AuaCBiL1dlYkNvcmUv
ZG9tL1dvcmtlclJ1bkxvb3AuaAppbmRleCA4YmRkYmUzLi4zZjYxMTNkIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2RvbS9Xb3JrZXJSdW5Mb29wLmgKKysrIGIvV2ViQ29yZS9kb20vV29ya2VyUnVuTG9v
cC5oCkBAIC01MCwxNSArNTAsMzYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAKICAg
ICAgICAgLy8gQmxvY2tpbmcgY2FsbC4gV2FpdHMgZm9yIHRhc2tzIGFuZCB0aW1lcnMsIGludm9r
ZXMgdGhlIGNhbGxiYWNrcy4KICAgICAgICAgdm9pZCBydW4oV29ya2VyQ29udGV4dCopOworCisg
ICAgICAgIC8vIFdhaXRzIGZvciBhIHNpbmdsZSB0YXNrIGFuZCByZXR1cm5zLgorICAgICAgICBN
ZXNzYWdlUXVldWVXYWl0UmVzdWx0IHJ1bkluTW9kZShXb3JrZXJDb250ZXh0KiwgY29uc3QgU3Ry
aW5nJiBtb2RlKTsKICAgICAgICAgCiAgICAgICAgIHZvaWQgdGVybWluYXRlKCk7CiAgICAgICAg
IGJvb2wgdGVybWluYXRlZCgpIHsgcmV0dXJuIG1fbWVzc2FnZVF1ZXVlLmtpbGxlZCgpOyB9CiAK
ICAgICAgICAgdm9pZCBwb3N0VGFzayhQYXNzUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2s+KTsKKyAgICAgICAgdm9pZCBwb3N0VGFza0Zvck1vZGUoUGFzc1JlZlB0cjxTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrPiwgY29uc3QgU3RyaW5nJiBtb2RlKTsKIAogICAgIHByaXZh
dGU6Ci0gICAgICAgIE1lc3NhZ2VRdWV1ZTxSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzaz4gPiBtX21lc3NhZ2VRdWV1ZTsKKyAgICAgICAgZnJpZW5kIGNsYXNzIEZpbHRlckZvck1v
ZGU7CisgICAgICAgIHN0cnVjdCBUYXNrV2l0aE1vZGUgeworICAgICAgICAgICAgVGFza1dpdGhN
b2RlKCkgeyB9CisgICAgICAgICAgICBUYXNrV2l0aE1vZGUoUmVmUHRyPFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlRhc2s+IHRhc2ssIGNvbnN0IFN0cmluZyYgbW9kZSkKKyAgICAgICAgICAgICAg
ICA6IG1fdGFzayh0YXNrKQorICAgICAgICAgICAgICAgICwgbV9tb2RlKG1vZGUpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6VGFzaz4gbV90YXNrOworICAgICAgICAgICAgU3RyaW5nIG1fbW9kZTsKKyAgICAg
ICAgfTsKKworICAgICAgICB2b2lkIHByZVJ1bkluTW9kZSgpOworICAgICAgICB2b2lkIHBvc3RS
dW5Jbk1vZGUoKTsKKyAgICAgICAgTWVzc2FnZVF1ZXVlV2FpdFJlc3VsdCBydW5Jbk1vZGUoV29y
a2VyQ29udGV4dCosIE1lc3NhZ2VRdWV1ZTxUYXNrV2l0aE1vZGU+OjpGaWx0ZXIqKTsKKworICAg
ICAgICBNZXNzYWdlUXVldWU8VGFza1dpdGhNb2RlPiBtX21lc3NhZ2VRdWV1ZTsKICAgICAgICAg
T3duUHRyPFdvcmtlclNoYXJlZFRpbWVyPiBtX3NoYXJlZFRpbWVyOworICAgICAgICBpbnQgbV9u
ZXN0ZWRDb3VudDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27720</attachid>
            <date>2009-02-17 01:09:57 -0800</date>
            <delta_ts>2009-02-18 19:19:35 -0800</delta_ts>
            <desc>Proposed fix.</desc>
            <filename>bug23980-2.txt</filename>
            <type>text/plain</type>
            <size>6810</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MmY5MDJkYi4uYmZjZjNhYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAwOS0wMi0xNyAgRGF2aWQgTGV2aW4g
IDxsZXZpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQnVnIDIzOTgwOiBXb3JrZXJSdW5Mb29wIG5lZWRzIGEgd2F5IHRvIHJ1
biBpbiBhIGdpdmVuIG1vZGUgc2ltaWxhciB0byBDRlJ1bkxvb3BJbk1vZGUuCisgICAgICAgIDxo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5ODA+CisKKyAgICAgICAg
Tm8gb2JzZXJ2YWJsZSBjaGFuZ2UgaW4gYmVoYXZpb3IsIHNvIG5vIHRlc3QuCisKKyAgICAgICAg
KiBkb20vV29ya2VyUnVuTG9vcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJGb3JNb2Rl
OjpGaWx0ZXJGb3JNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckZvck1vZGU6OmZpbmQp
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyUnVuTG9vcDo6V29ya2VyUnVuTG9vcCk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJSdW5Mb29wOjp+V29ya2VyUnVuTG9vcCk6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJSdW5Mb29wOjpzZXRTaGFyZWRUaW1lcik6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJSdW5Mb29wOjpyZXNldFNoYXJlZFRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlclJ1bkxvb3A6OnJ1bik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW5Mb29wOjpydW5J
bk1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyUnVuTG9vcDo6cG9zdFRhc2tGb3JNb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6OnBvc3RUYXNrKToKKyAgICAgICAg
KiBkb20vV29ya2VyUnVuTG9vcC5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyUnVuTG9vcDo6
VGFzazo6VGFzayk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW5Mb29wOjpUYXNrOjptb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6OlRhc2s6OnBlcmZvcm1UYXNrKToK
KwogMjAwOS0wMi0xNiAgRGF2aWQgTGV2aW4gIDxsZXZpbkBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9X
b3JrZXJSdW5Mb29wLmNwcCBiL1dlYkNvcmUvZG9tL1dvcmtlclJ1bkxvb3AuY3BwCmluZGV4IDdh
OGJlZGUuLmU0ZDViZTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1dvcmtlclJ1bkxvb3AuY3Bw
CisrKyBiL1dlYkNvcmUvZG9tL1dvcmtlclJ1bkxvb3AuY3BwCkBAIC03MCw0NCArNzAsMTA2IEBA
IHByaXZhdGU6CiAgICAgZG91YmxlIG1fbmV4dEZpcmVUaW1lOwogfTsKIAorY2xhc3MgRmlsdGVy
Rm9yTW9kZSA6IHB1YmxpYyBNZXNzYWdlUXVldWU8V29ya2VyUnVuTG9vcDo6VGFzaz46OkZpbHRl
ciB7CitwdWJsaWM6CisgICAgRmlsdGVyRm9yTW9kZShjb25zdCBTdHJpbmcmIG1vZGUpCisgICAg
ICAgIDogbV9tb2RlKG1vZGUpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgV1RGOjpEZXF1
ZUNvbnN0SXRlcmF0b3I8V29ya2VyUnVuTG9vcDo6VGFzaz4gZmluZChjb25zdCBEZXF1ZTxXb3Jr
ZXJSdW5Mb29wOjpUYXNrPiYgZGVxdWUpCisgICAgeworICAgICAgICBmb3IgKFdURjo6RGVxdWVD
b25zdEl0ZXJhdG9yPFdvcmtlclJ1bkxvb3A6OlRhc2s+IGl0ID0gZGVxdWUuYmVnaW4oKTsgaXQg
IT0gZGVxdWUuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgICAgIGlmIChtX21vZGUuaXNOdWxsKCkg
fHwgbV9tb2RlID09IGl0LT5tb2RlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGl0OworICAg
ICAgICB9CisgICAgICAgIHJldHVybiBkZXF1ZS5lbmQoKTsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgU3RyaW5nIG1fbW9kZTsKK307CisKIFdvcmtlclJ1bkxvb3A6OldvcmtlclJ1bkxvb3AoKQog
ICAgIDogbV9zaGFyZWRUaW1lcihXb3JrZXJTaGFyZWRUaW1lcjo6Y3JlYXRlKCkpCisgICAgLCBt
X25lc3RlZENvdW50KDApCiB7CiB9CiAKIFdvcmtlclJ1bkxvb3A6On5Xb3JrZXJSdW5Mb29wKCkK
IHsKKyAgICBBU1NFUlQoIW1fbmVzdGVkQ291bnQpOworfQorCit2b2lkIFdvcmtlclJ1bkxvb3A6
OnNldFNoYXJlZFRpbWVyKCkKK3sKKyAgICBpZiAoIW1fbmVzdGVkQ291bnQpCisgICAgICAgIHRo
cmVhZEdsb2JhbERhdGEoKS50aHJlYWRUaW1lcnMoKS5zZXRTaGFyZWRUaW1lcihtX3NoYXJlZFRp
bWVyLmdldCgpKTsKK30KKwordm9pZCBXb3JrZXJSdW5Mb29wOjpyZXNldFNoYXJlZFRpbWVyKCkK
K3sKKyAgICBpZiAoIW1fbmVzdGVkQ291bnQpCisgICAgICAgIHRocmVhZEdsb2JhbERhdGEoKS50
aHJlYWRUaW1lcnMoKS5zZXRTaGFyZWRUaW1lcigwKTsKIH0KIAogdm9pZCBXb3JrZXJSdW5Mb29w
OjpydW4oV29ya2VyQ29udGV4dCogY29udGV4dCkKIHsKKyAgICBzZXRTaGFyZWRUaW1lcigpOwor
ICAgIE1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgcmVzdWx0OworICAgIGRvIHsKKyAgICAgICAgcmVz
dWx0ID0gcnVuSW5Nb2RlKGNvbnRleHQsIE5VTEwpOworICAgIH0gd2hpbGUgKHJlc3VsdCAhPSBN
ZXNzYWdlUXVldWVUZXJtaW5hdGVkKTsKKyAgICByZXNldFNoYXJlZFRpbWVyKCk7Cit9CisKK01l
c3NhZ2VRdWV1ZVdhaXRSZXN1bHQgV29ya2VyUnVuTG9vcDo6cnVuSW5Nb2RlKFdvcmtlckNvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbW9kZSkKK3sKKyAgICBzZXRTaGFyZWRUaW1lcigp
OworICAgIEZpbHRlckZvck1vZGUgZmlsdGVyRm9yTW9kZShtb2RlKTsKKyAgICBNZXNzYWdlUXVl
dWVXYWl0UmVzdWx0IHJlc3VsdCA9IHJ1bkluTW9kZShjb250ZXh0LCAmZmlsdGVyRm9yTW9kZSk7
CisgICAgcmVzZXRTaGFyZWRUaW1lcigpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK01lc3Nh
Z2VRdWV1ZVdhaXRSZXN1bHQgV29ya2VyUnVuTG9vcDo6cnVuSW5Nb2RlKFdvcmtlckNvbnRleHQq
IGNvbnRleHQsIE1lc3NhZ2VRdWV1ZTxUYXNrPjo6RmlsdGVyKiBmaWx0ZXIpCit7CiAgICAgQVNT
RVJUKGNvbnRleHQpOwogICAgIEFTU0VSVChjb250ZXh0LT50aHJlYWQoKSk7CiAgICAgQVNTRVJU
KGNvbnRleHQtPnRocmVhZCgpLT50aHJlYWRJRCgpID09IGN1cnJlbnRUaHJlYWQoKSk7CiAKLSAg
ICB0aHJlYWRHbG9iYWxEYXRhKCkudGhyZWFkVGltZXJzKCkuc2V0U2hhcmVkVGltZXIobV9zaGFy
ZWRUaW1lci5nZXQoKSk7Ci0KLSAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBSZWZQdHI8U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzazsKLSAgICAgICAgTWVzc2FnZVF1ZXVlV2Fp
dFJlc3VsdCByZXN1bHQ7CisgICAgbV9uZXN0ZWRDb3VudCsrOwogCisgICAgVGFzayB0YXNrOwor
ICAgIE1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgcmVzdWx0OworICAgIGlmICghZmlsdGVyKSB7CiAg
ICAgICAgIGlmIChtX3NoYXJlZFRpbWVyLT5pc0FjdGl2ZSgpKQogICAgICAgICAgICAgcmVzdWx0
ID0gbV9tZXNzYWdlUXVldWUud2FpdEZvck1lc3NhZ2VUaW1lZCh0YXNrLCBtX3NoYXJlZFRpbWVy
LT5maXJlVGltZSgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0ID0gKG1fbWVz
c2FnZVF1ZXVlLndhaXRGb3JNZXNzYWdlKHRhc2spID8gTWVzc2FnZVF1ZXVlTWVzc2FnZVJlY2Vp
dmVkIDogTWVzc2FnZVF1ZXVlVGVybWluYXRlZCk7Ci0KLSAgICAgICAgaWYgKHJlc3VsdCA9PSBN
ZXNzYWdlUXVldWVUZXJtaW5hdGVkKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAotICAg
ICAgICBpZiAocmVzdWx0ID09IE1lc3NhZ2VRdWV1ZU1lc3NhZ2VSZWNlaXZlZCkKLSAgICAgICAg
ICAgIHRhc2stPnBlcmZvcm1UYXNrKGNvbnRleHQpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgIEFTU0VSVChyZXN1bHQgPT0gTWVzc2FnZVF1ZXVlVGltZW91dCk7Ci0gICAgICAgICAgICBt
X3NoYXJlZFRpbWVyLT5maXJlKCk7Ci0gICAgICAgIH0KKyAgICAgICAgICAgIHJlc3VsdCA9IG1f
bWVzc2FnZVF1ZXVlLndhaXRGb3JNZXNzYWdlKHRhc2spID8gTWVzc2FnZVF1ZXVlTWVzc2FnZVJl
Y2VpdmVkIDogTWVzc2FnZVF1ZXVlVGVybWluYXRlZDsKKyAgICB9IGVsc2UKKyAgICAgICAgcmVz
dWx0ID0gbV9tZXNzYWdlUXVldWUud2FpdEZvck1lc3NhZ2VGaWx0ZXJlZCh0YXNrLCAqZmlsdGVy
KSA/IE1lc3NhZ2VRdWV1ZU1lc3NhZ2VSZWNlaXZlZCA6IE1lc3NhZ2VRdWV1ZVRlcm1pbmF0ZWQ7
CisKKyAgICBzd2l0Y2ggKHJlc3VsdCkgeworICAgIGNhc2UgTWVzc2FnZVF1ZXVlVGVybWluYXRl
ZDoKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIE1lc3NhZ2VRdWV1ZU1lc3NhZ2VSZWNlaXZl
ZDoKKyAgICAgICAgdGFzay5wZXJmb3JtVGFzayhjb250ZXh0KTsKKyAgICAgICAgYnJlYWs7CisK
KyAgICBjYXNlIE1lc3NhZ2VRdWV1ZVRpbWVvdXQ6CisgICAgICAgIG1fc2hhcmVkVGltZXItPmZp
cmUoKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgdGhyZWFkR2xvYmFsRGF0YSgpLnRo
cmVhZFRpbWVycygpLnNldFNoYXJlZFRpbWVyKDApOworICAgIG1fbmVzdGVkQ291bnQtLTsKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIFdvcmtlclJ1bkxvb3A6OnBvc3RUYXNrRm9yTW9k
ZShQYXNzUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2ssIGNvbnN0IFN0
cmluZyYgbW9kZSkKK3sKKyAgICBtX21lc3NhZ2VRdWV1ZS5hcHBlbmQoVGFzayh0YXNrLCBtb2Rl
LmNvcHkoKSkpOwogfQogCiB2b2lkIFdvcmtlclJ1bkxvb3A6OnRlcm1pbmF0ZSgpCkBAIC0xMTcs
NyArMTc5LDcgQEAgdm9pZCBXb3JrZXJSdW5Mb29wOjp0ZXJtaW5hdGUoKQogCiB2b2lkIFdvcmtl
clJ1bkxvb3A6OnBvc3RUYXNrKFBhc3NSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFz
az4gdGFzaykKIHsKLSAgICBtX21lc3NhZ2VRdWV1ZS5hcHBlbmQodGFzayk7CisgICAgcG9zdFRh
c2tGb3JNb2RlKHRhc2ssIFN0cmluZygpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vV29ya2VyUnVuTG9vcC5oIGIvV2ViQ29yZS9kb20vV29y
a2VyUnVuTG9vcC5oCmluZGV4IDhiZGRiZTMuLjc1Mjk4YjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
ZG9tL1dvcmtlclJ1bkxvb3AuaAorKysgYi9XZWJDb3JlL2RvbS9Xb3JrZXJSdW5Mb29wLmgKQEAg
LTUwLDE1ICs1MCw0MiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIAogICAgICAgICAv
LyBCbG9ja2luZyBjYWxsLiBXYWl0cyBmb3IgdGFza3MgYW5kIHRpbWVycywgaW52b2tlcyB0aGUg
Y2FsbGJhY2tzLgogICAgICAgICB2b2lkIHJ1bihXb3JrZXJDb250ZXh0Kik7CisKKyAgICAgICAg
Ly8gV2FpdHMgZm9yIGEgc2luZ2xlIHRhc2sgYW5kIHJldHVybnMuCisgICAgICAgIE1lc3NhZ2VR
dWV1ZVdhaXRSZXN1bHQgcnVuSW5Nb2RlKFdvcmtlckNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG1v
ZGUpOwogICAgICAgICAKICAgICAgICAgdm9pZCB0ZXJtaW5hdGUoKTsKICAgICAgICAgYm9vbCB0
ZXJtaW5hdGVkKCkgeyByZXR1cm4gbV9tZXNzYWdlUXVldWUua2lsbGVkKCk7IH0KIAogICAgICAg
ICB2b2lkIHBvc3RUYXNrKFBhc3NSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4p
OworICAgICAgICB2b2lkIHBvc3RUYXNrRm9yTW9kZShQYXNzUmVmUHRyPFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlRhc2s+LCBjb25zdCBTdHJpbmcmIG1vZGUpOwogCiAgICAgcHJpdmF0ZToKLSAg
ICAgICAgTWVzc2FnZVF1ZXVlPFJlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiA+
IG1fbWVzc2FnZVF1ZXVlOworICAgICAgICBmcmllbmQgY2xhc3MgRmlsdGVyRm9yTW9kZTsKKyAg
ICAgICAgY2xhc3MgVGFzayB7CisgICAgICAgIHB1YmxpYzoKKyAgICAgICAgICAgIFRhc2soKSB7
IH0KKyAgICAgICAgICAgIFRhc2soUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+
IHRhc2ssIGNvbnN0IFN0cmluZyYgbW9kZSkKKyAgICAgICAgICAgICAgICA6IG1fdGFzayh0YXNr
KQorICAgICAgICAgICAgICAgICwgbV9tb2RlKG1vZGUpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgbW9kZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbW9kZTsgfQorICAgICAgICAgICAgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0KSB7IG1fdGFzay0+cGVyZm9ybVRhc2soY29udGV4dCk7IH0KKworICAg
ICAgICBwcml2YXRlOgorICAgICAgICAgICAgUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2s+IG1fdGFzazsKKyAgICAgICAgICAgIFN0cmluZyBtX21vZGU7CisgICAgICAgIH07CisK
KyAgICAgICAgdm9pZCBzZXRTaGFyZWRUaW1lcigpOworICAgICAgICB2b2lkIHJlc2V0U2hhcmVk
VGltZXIoKTsKKyAgICAgICAgTWVzc2FnZVF1ZXVlV2FpdFJlc3VsdCBydW5Jbk1vZGUoV29ya2Vy
Q29udGV4dCosIE1lc3NhZ2VRdWV1ZTxUYXNrPjo6RmlsdGVyKik7CisKKyAgICAgICAgTWVzc2Fn
ZVF1ZXVlPFRhc2s+IG1fbWVzc2FnZVF1ZXVlOwogICAgICAgICBPd25QdHI8V29ya2VyU2hhcmVk
VGltZXI+IG1fc2hhcmVkVGltZXI7CisgICAgICAgIGludCBtX25lc3RlZENvdW50OwogICAgIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27775</attachid>
            <date>2009-02-18 19:19:35 -0800</date>
            <delta_ts>2009-02-18 23:58:17 -0800</delta_ts>
            <desc>Proposed fix.</desc>
            <filename>bug23980.txt</filename>
            <type>text/plain</type>
            <size>7005</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MGQ0N2MyYy4uOWNiYmM1OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAwOS0wMi0xOCAgRGF2aWQgTGV2aW4g
IDxsZXZpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQnVnIDIzOTgwOiBXb3JrZXJSdW5Mb29wIG5lZWRzIGEgd2F5IHRvIHJ1
biBpbiBhIGdpdmVuIG1vZGUgc2ltaWxhciB0byBDRlJ1bkxvb3BJbk1vZGUuCisgICAgICAgIDxo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5ODA+CisKKyAgICAgICAg
Tm8gb2JzZXJ2YWJsZSBjaGFuZ2UgaW4gYmVoYXZpb3IsIHNvIG5vIHRlc3QuCisKKyAgICAgICAg
KiBkb20vV29ya2VyUnVuTG9vcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2RlUHJlZGljYXRl
OjpNb2RlUHJlZGljYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVQcmVkaWNhdGU6Om9wZXJh
dG9yKCkpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyUnVuTG9vcDo6V29ya2VyUnVuTG9vcCk6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW5Mb29wOjp+V29ya2VyUnVuTG9vcCk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJSdW5Mb29wOjpzZXRTaGFyZWRUaW1lcik6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJSdW5Mb29wOjpyZXNldFNoYXJlZFRpbWVyKToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlclJ1bkxvb3A6OnJ1bik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW5Mb29w
OjpydW5Jbk1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyUnVuTG9vcDo6cG9zdFRhc2sp
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyUnVuTG9vcDo6cG9zdFRhc2tGb3JNb2RlKToKKyAg
ICAgICAgKiBkb20vV29ya2VyUnVuTG9vcC5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyUnVu
TG9vcDo6VGFzazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6OlRh
c2s6Om1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyUnVuTG9vcDo6VGFzazo6cGVyZm9y
bVRhc2spOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyUnVuTG9vcDo6VGFzazo6VGFzayk6CisK
IDIwMDktMDItMTggIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEV4
cG9ydCBXZWJDb3JlOjpoYW5kQ3Vyc29yIGFuZCBDdXJzb3IuaApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9kb20vV29ya2VyUnVuTG9vcC5jcHAgYi9XZWJDb3JlL2RvbS9Xb3JrZXJSdW5Mb29wLmNwcApp
bmRleCA2YTllYmIzLi4zYjEzNGZhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Xb3JrZXJSdW5M
b29wLmNwcAorKysgYi9XZWJDb3JlL2RvbS9Xb3JrZXJSdW5Mb29wLmNwcApAQCAtNjQsNDQgKzY0
LDk2IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIG1fbmV4dEZpcmVUaW1lOwogfTsKIAorY2xhc3Mg
TW9kZVByZWRpY2F0ZSB7CitwdWJsaWM6CisgICAgTW9kZVByZWRpY2F0ZShjb25zdCBTdHJpbmcm
IG1vZGUpCisgICAgICAgIDogbV9tb2RlKG1vZGUpCisgICAgeworICAgIH0KKworICAgIGJvb2wg
b3BlcmF0b3IoKShQYXNzUmVmUHRyPFdvcmtlclJ1bkxvb3A6OlRhc2s+IHRhc2spCisgICAgewor
ICAgICAgICByZXR1cm4gbV9tb2RlLmlzTnVsbCgpIHx8IG1fbW9kZSA9PSB0YXNrLT5tb2RlKCk7
CisgICAgfQorCitwcml2YXRlOgorICAgIFN0cmluZyBtX21vZGU7Cit9OworCiBXb3JrZXJSdW5M
b29wOjpXb3JrZXJSdW5Mb29wKCkKICAgICA6IG1fc2hhcmVkVGltZXIobmV3IFdvcmtlclNoYXJl
ZFRpbWVyKQorICAgICwgbV9uZXN0ZWRDb3VudCgwKQogewogfQogCiBXb3JrZXJSdW5Mb29wOjp+
V29ya2VyUnVuTG9vcCgpCiB7CisgICAgQVNTRVJUKCFtX25lc3RlZENvdW50KTsKK30KKwordm9p
ZCBXb3JrZXJSdW5Mb29wOjpzZXRTaGFyZWRUaW1lcigpCit7CisgICAgaWYgKCFtX25lc3RlZENv
dW50KQorICAgICAgICB0aHJlYWRHbG9iYWxEYXRhKCkudGhyZWFkVGltZXJzKCkuc2V0U2hhcmVk
VGltZXIobV9zaGFyZWRUaW1lci5nZXQoKSk7CisgICAgbV9uZXN0ZWRDb3VudCsrOworfQorCit2
b2lkIFdvcmtlclJ1bkxvb3A6OnJlc2V0U2hhcmVkVGltZXIoKQoreworICAgIG1fbmVzdGVkQ291
bnQtLTsKKyAgICBpZiAoIW1fbmVzdGVkQ291bnQpCisgICAgICAgIHRocmVhZEdsb2JhbERhdGEo
KS50aHJlYWRUaW1lcnMoKS5zZXRTaGFyZWRUaW1lcigwKTsKIH0KIAogdm9pZCBXb3JrZXJSdW5M
b29wOjpydW4oV29ya2VyQ29udGV4dCogY29udGV4dCkKIHsKKyAgICBzZXRTaGFyZWRUaW1lcigp
OworICAgIE1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgcmVzdWx0OworICAgIGRvIHsKKyAgICAgICAg
cmVzdWx0ID0gcnVuSW5Nb2RlKGNvbnRleHQsIE5VTEwpOworICAgIH0gd2hpbGUgKHJlc3VsdCAh
PSBNZXNzYWdlUXVldWVUZXJtaW5hdGVkKTsKKyAgICByZXNldFNoYXJlZFRpbWVyKCk7Cit9CisK
K01lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgV29ya2VyUnVuTG9vcDo6cnVuSW5Nb2RlKFdvcmtlckNv
bnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbW9kZSkKK3sKKyAgICBzZXRTaGFyZWRUaW1l
cigpOworICAgIE1vZGVQcmVkaWNhdGUgbW9kZVByZWRpY2F0ZShtb2RlKTsKKyAgICBNZXNzYWdl
UXVldWVXYWl0UmVzdWx0IHJlc3VsdCA9IHJ1bkluTW9kZShjb250ZXh0LCAmbW9kZVByZWRpY2F0
ZSk7CisgICAgcmVzZXRTaGFyZWRUaW1lcigpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK01l
c3NhZ2VRdWV1ZVdhaXRSZXN1bHQgV29ya2VyUnVuTG9vcDo6cnVuSW5Nb2RlKFdvcmtlckNvbnRl
eHQqIGNvbnRleHQsIE1vZGVQcmVkaWNhdGUqIHByZWRpY2F0ZSkKK3sKICAgICBBU1NFUlQoY29u
dGV4dCk7CiAgICAgQVNTRVJUKGNvbnRleHQtPnRocmVhZCgpKTsKICAgICBBU1NFUlQoY29udGV4
dC0+dGhyZWFkKCktPnRocmVhZElEKCkgPT0gY3VycmVudFRocmVhZCgpKTsKIAotICAgIHRocmVh
ZEdsb2JhbERhdGEoKS50aHJlYWRUaW1lcnMoKS5zZXRTaGFyZWRUaW1lcihtX3NoYXJlZFRpbWVy
LmdldCgpKTsKLQotICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIFJlZlB0cjxTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrPiB0YXNrOwotICAgICAgICBNZXNzYWdlUXVldWVXYWl0UmVzdWx0
IHJlc3VsdDsKLQorICAgIFJlZlB0cjxUYXNrPiB0YXNrOworICAgIE1lc3NhZ2VRdWV1ZVdhaXRS
ZXN1bHQgcmVzdWx0OworICAgIGlmICghcHJlZGljYXRlKSB7CiAgICAgICAgIGlmIChtX3NoYXJl
ZFRpbWVyLT5pc0FjdGl2ZSgpKQogICAgICAgICAgICAgcmVzdWx0ID0gbV9tZXNzYWdlUXVldWUu
d2FpdEZvck1lc3NhZ2VUaW1lZCh0YXNrLCBtX3NoYXJlZFRpbWVyLT5maXJlVGltZSgpKTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0ID0gKG1fbWVzc2FnZVF1ZXVlLndhaXRGb3JN
ZXNzYWdlKHRhc2spID8gTWVzc2FnZVF1ZXVlTWVzc2FnZVJlY2VpdmVkIDogTWVzc2FnZVF1ZXVl
VGVybWluYXRlZCk7Ci0KLSAgICAgICAgaWYgKHJlc3VsdCA9PSBNZXNzYWdlUXVldWVUZXJtaW5h
dGVkKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAotICAgICAgICBpZiAocmVzdWx0ID09
IE1lc3NhZ2VRdWV1ZU1lc3NhZ2VSZWNlaXZlZCkKLSAgICAgICAgICAgIHRhc2stPnBlcmZvcm1U
YXNrKGNvbnRleHQpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIEFTU0VSVChyZXN1bHQg
PT0gTWVzc2FnZVF1ZXVlVGltZW91dCk7Ci0gICAgICAgICAgICBtX3NoYXJlZFRpbWVyLT5maXJl
KCk7Ci0gICAgICAgIH0KKyAgICAgICAgICAgIHJlc3VsdCA9IG1fbWVzc2FnZVF1ZXVlLndhaXRG
b3JNZXNzYWdlKHRhc2spID8gTWVzc2FnZVF1ZXVlTWVzc2FnZVJlY2VpdmVkIDogTWVzc2FnZVF1
ZXVlVGVybWluYXRlZDsKKyAgICB9IGVsc2UKKyAgICAgICAgcmVzdWx0ID0gbV9tZXNzYWdlUXVl
dWUud2FpdEZvck1lc3NhZ2VGaWx0ZXJlZCh0YXNrLCBwcmVkaWNhdGUpOworCisgICAgc3dpdGNo
IChyZXN1bHQpIHsKKyAgICBjYXNlIE1lc3NhZ2VRdWV1ZVRlcm1pbmF0ZWQ6CisgICAgICAgIGJy
ZWFrOworCisgICAgY2FzZSBNZXNzYWdlUXVldWVNZXNzYWdlUmVjZWl2ZWQ6CisgICAgICAgIHRh
c2stPnBlcmZvcm1UYXNrKGNvbnRleHQpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgTWVz
c2FnZVF1ZXVlVGltZW91dDoKKyAgICAgICAgbV9zaGFyZWRUaW1lci0+ZmlyZSgpOworICAgICAg
ICBicmVhazsKICAgICB9CiAKLSAgICB0aHJlYWRHbG9iYWxEYXRhKCkudGhyZWFkVGltZXJzKCku
c2V0U2hhcmVkVGltZXIoMCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogdm9pZCBXb3JrZXJS
dW5Mb29wOjp0ZXJtaW5hdGUoKQpAQCAtMTExLDcgKzE2MywxMiBAQCB2b2lkIFdvcmtlclJ1bkxv
b3A6OnRlcm1pbmF0ZSgpCiAKIHZvaWQgV29ya2VyUnVuTG9vcDo6cG9zdFRhc2soUGFzc1JlZlB0
cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrKQogewotICAgIG1fbWVzc2FnZVF1
ZXVlLmFwcGVuZCh0YXNrKTsKKyAgICBwb3N0VGFza0Zvck1vZGUodGFzaywgU3RyaW5nKCkpOwor
fQorCit2b2lkIFdvcmtlclJ1bkxvb3A6OnBvc3RUYXNrRm9yTW9kZShQYXNzUmVmUHRyPFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2ssIGNvbnN0IFN0cmluZyYgbW9kZSkKK3sKKyAg
ICBtX21lc3NhZ2VRdWV1ZS5hcHBlbmQoVGFzazo6Y3JlYXRlKHRhc2ssIG1vZGUuY29weSgpKSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1dv
cmtlclJ1bkxvb3AuaCBiL1dlYkNvcmUvZG9tL1dvcmtlclJ1bkxvb3AuaAppbmRleCA4YmRkYmUz
Li43NmVhZTA2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Xb3JrZXJSdW5Mb29wLmgKKysrIGIv
V2ViQ29yZS9kb20vV29ya2VyUnVuTG9vcC5oCkBAIC0zNyw5ICszNywxMSBAQAogI2luY2x1ZGUg
PHd0Zi9NZXNzYWdlUXVldWUuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorICAgIGNsYXNzIE1vZGVQcmVkaWNhdGU7CiAgICAgY2xhc3MgV29ya2Vy
Q29udGV4dDsKICAgICBjbGFzcyBXb3JrZXJTaGFyZWRUaW1lcjsKIApAQCAtNTAsMTUgKzUyLDQ2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgCiAgICAgICAgIC8vIEJsb2NraW5nIGNh
bGwuIFdhaXRzIGZvciB0YXNrcyBhbmQgdGltZXJzLCBpbnZva2VzIHRoZSBjYWxsYmFja3MuCiAg
ICAgICAgIHZvaWQgcnVuKFdvcmtlckNvbnRleHQqKTsKLSAgICAgICAgCisKKyAgICAgICAgLy8g
V2FpdHMgZm9yIGEgc2luZ2xlIHRhc2sgYW5kIHJldHVybnMuCisgICAgICAgIE1lc3NhZ2VRdWV1
ZVdhaXRSZXN1bHQgcnVuSW5Nb2RlKFdvcmtlckNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG1vZGUp
OworCiAgICAgICAgIHZvaWQgdGVybWluYXRlKCk7CiAgICAgICAgIGJvb2wgdGVybWluYXRlZCgp
IHsgcmV0dXJuIG1fbWVzc2FnZVF1ZXVlLmtpbGxlZCgpOyB9CiAKICAgICAgICAgdm9pZCBwb3N0
VGFzayhQYXNzUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KTsKKyAgICAgICAg
dm9pZCBwb3N0VGFza0Zvck1vZGUoUGFzc1JlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpU
YXNrPiwgY29uc3QgU3RyaW5nJiBtb2RlKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIE1lc3Nh
Z2VRdWV1ZTxSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gPiBtX21lc3NhZ2VR
dWV1ZTsKKyAgICAgICAgZnJpZW5kIGNsYXNzIE1vZGVQcmVkaWNhdGU7CisgICAgICAgIGNsYXNz
IFRhc2sgOiBwdWJsaWMgVGhyZWFkU2FmZVNoYXJlZDxUYXNrPiB7CisgICAgICAgIHB1YmxpYzoK
KyAgICAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRhc2s+IGNyZWF0ZShSZWZQdHI8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGFzayh0YXNrLCBt
b2RlKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgbW9kZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsgfQorICAgICAgICAgICAgdm9pZCBwZXJmb3JtVGFzayhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KSB7IG1fdGFzay0+cGVyZm9ybVRhc2soY29u
dGV4dCk7IH0KKworICAgICAgICBwcml2YXRlOgorICAgICAgICAgICAgVGFzayhSZWZQdHI8U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQorICAg
ICAgICAgICAgICAgIDogbV90YXNrKHRhc2spCisgICAgICAgICAgICAgICAgLCBtX21vZGUobW9k
ZS5jb3B5KCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFJl
ZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiBtX3Rhc2s7CisgICAgICAgICAgICBT
dHJpbmcgbV9tb2RlOworICAgICAgICB9OworCisgICAgICAgIHZvaWQgc2V0U2hhcmVkVGltZXIo
KTsKKyAgICAgICAgdm9pZCByZXNldFNoYXJlZFRpbWVyKCk7CisgICAgICAgIE1lc3NhZ2VRdWV1
ZVdhaXRSZXN1bHQgcnVuSW5Nb2RlKFdvcmtlckNvbnRleHQqLCBNb2RlUHJlZGljYXRlKik7CisK
KyAgICAgICAgTWVzc2FnZVF1ZXVlPFJlZlB0cjxUYXNrPiA+IG1fbWVzc2FnZVF1ZXVlOwogICAg
ICAgICBPd25QdHI8V29ya2VyU2hhcmVkVGltZXI+IG1fc2hhcmVkVGltZXI7CisgICAgICAgIGlu
dCBtX25lc3RlZENvdW50OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27780</attachid>
            <date>2009-02-19 00:07:31 -0800</date>
            <delta_ts>2009-02-19 10:46:10 -0800</delta_ts>
            <desc>proposed fix.</desc>
            <filename>bug23980.txt</filename>
            <type>text/plain</type>
            <size>6893</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MGQ0N2MyYy4uOWNiYmM1OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAwOS0wMi0xOCAgRGF2aWQgTGV2aW4g
IDxsZXZpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQnVnIDIzOTgwOiBXb3JrZXJSdW5Mb29wIG5lZWRzIGEgd2F5IHRvIHJ1
biBpbiBhIGdpdmVuIG1vZGUgc2ltaWxhciB0byBDRlJ1bkxvb3BJbk1vZGUuCisgICAgICAgIDxo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5ODA+CisKKyAgICAgICAg
Tm8gb2JzZXJ2YWJsZSBjaGFuZ2UgaW4gYmVoYXZpb3IsIHNvIG5vIHRlc3QuCisKKyAgICAgICAg
KiBkb20vV29ya2VyUnVuTG9vcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2RlUHJlZGljYXRl
OjpNb2RlUHJlZGljYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVQcmVkaWNhdGU6Om9wZXJh
dG9yKCkpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyUnVuTG9vcDo6V29ya2VyUnVuTG9vcCk6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW5Mb29wOjp+V29ya2VyUnVuTG9vcCk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJSdW5Mb29wOjpzZXRTaGFyZWRUaW1lcik6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJSdW5Mb29wOjpyZXNldFNoYXJlZFRpbWVyKToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlclJ1bkxvb3A6OnJ1bik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW5Mb29w
OjpydW5Jbk1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyUnVuTG9vcDo6cG9zdFRhc2sp
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyUnVuTG9vcDo6cG9zdFRhc2tGb3JNb2RlKToKKyAg
ICAgICAgKiBkb20vV29ya2VyUnVuTG9vcC5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyUnVu
TG9vcDo6VGFzazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6OlRh
c2s6Om1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyUnVuTG9vcDo6VGFzazo6cGVyZm9y
bVRhc2spOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyUnVuTG9vcDo6VGFzazo6VGFzayk6CisK
IDIwMDktMDItMTggIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEV4
cG9ydCBXZWJDb3JlOjpoYW5kQ3Vyc29yIGFuZCBDdXJzb3IuaApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9kb20vV29ya2VyUnVuTG9vcC5jcHAgYi9XZWJDb3JlL2RvbS9Xb3JrZXJSdW5Mb29wLmNwcApp
bmRleCA2YTllYmIzLi4zYjEzNGZhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Xb3JrZXJSdW5M
b29wLmNwcAorKysgYi9XZWJDb3JlL2RvbS9Xb3JrZXJSdW5Mb29wLmNwcApAQCAtNjQsNDQgKzY0
LDk2IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIG1fbmV4dEZpcmVUaW1lOwogfTsKIAorY2xhc3Mg
TW9kZVByZWRpY2F0ZSB7CitwdWJsaWM6CisgICAgTW9kZVByZWRpY2F0ZShjb25zdCBTdHJpbmcm
IG1vZGUpCisgICAgICAgIDogbV9tb2RlKG1vZGUpCisgICAgeworICAgIH0KKworICAgIGJvb2wg
b3BlcmF0b3IoKShQYXNzUmVmUHRyPFdvcmtlclJ1bkxvb3A6OlRhc2s+IHRhc2spCisgICAgewor
ICAgICAgICByZXR1cm4gbV9tb2RlLmlzTnVsbCgpIHx8IG1fbW9kZSA9PSB0YXNrLT5tb2RlKCk7
CisgICAgfQorCitwcml2YXRlOgorICAgIFN0cmluZyBtX21vZGU7Cit9OworCiBXb3JrZXJSdW5M
b29wOjpXb3JrZXJSdW5Mb29wKCkKICAgICA6IG1fc2hhcmVkVGltZXIobmV3IFdvcmtlclNoYXJl
ZFRpbWVyKQorICAgICwgbV9uZXN0ZWRDb3VudCgwKQogewogfQogCiBXb3JrZXJSdW5Mb29wOjp+
V29ya2VyUnVuTG9vcCgpCiB7CisgICAgQVNTRVJUKCFtX25lc3RlZENvdW50KTsKK30KKwordm9p
ZCBXb3JrZXJSdW5Mb29wOjpzZXRTaGFyZWRUaW1lcigpCit7CisgICAgaWYgKCFtX25lc3RlZENv
dW50KQorICAgICAgICB0aHJlYWRHbG9iYWxEYXRhKCkudGhyZWFkVGltZXJzKCkuc2V0U2hhcmVk
VGltZXIobV9zaGFyZWRUaW1lci5nZXQoKSk7CisgICAgbV9uZXN0ZWRDb3VudCsrOworfQorCit2
b2lkIFdvcmtlclJ1bkxvb3A6OnJlc2V0U2hhcmVkVGltZXIoKQoreworICAgIG1fbmVzdGVkQ291
bnQtLTsKKyAgICBpZiAoIW1fbmVzdGVkQ291bnQpCisgICAgICAgIHRocmVhZEdsb2JhbERhdGEo
KS50aHJlYWRUaW1lcnMoKS5zZXRTaGFyZWRUaW1lcigwKTsKIH0KIAogdm9pZCBXb3JrZXJSdW5M
b29wOjpydW4oV29ya2VyQ29udGV4dCogY29udGV4dCkKIHsKKyAgICBzZXRTaGFyZWRUaW1lcigp
OworICAgIE1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgcmVzdWx0OworICAgIGRvIHsKKyAgICAgICAg
cmVzdWx0ID0gcnVuSW5Nb2RlKGNvbnRleHQsIE5VTEwpOworICAgIH0gd2hpbGUgKHJlc3VsdCAh
PSBNZXNzYWdlUXVldWVUZXJtaW5hdGVkKTsKKyAgICByZXNldFNoYXJlZFRpbWVyKCk7Cit9CisK
K01lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgV29ya2VyUnVuTG9vcDo6cnVuSW5Nb2RlKFdvcmtlckNv
bnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbW9kZSkKK3sKKyAgICBzZXRTaGFyZWRUaW1l
cigpOworICAgIE1vZGVQcmVkaWNhdGUgbW9kZVByZWRpY2F0ZShtb2RlKTsKKyAgICBNZXNzYWdl
UXVldWVXYWl0UmVzdWx0IHJlc3VsdCA9IHJ1bkluTW9kZShjb250ZXh0LCAmbW9kZVByZWRpY2F0
ZSk7CisgICAgcmVzZXRTaGFyZWRUaW1lcigpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK01l
c3NhZ2VRdWV1ZVdhaXRSZXN1bHQgV29ya2VyUnVuTG9vcDo6cnVuSW5Nb2RlKFdvcmtlckNvbnRl
eHQqIGNvbnRleHQsIE1vZGVQcmVkaWNhdGUqIHByZWRpY2F0ZSkKK3sKICAgICBBU1NFUlQoY29u
dGV4dCk7CiAgICAgQVNTRVJUKGNvbnRleHQtPnRocmVhZCgpKTsKICAgICBBU1NFUlQoY29udGV4
dC0+dGhyZWFkKCktPnRocmVhZElEKCkgPT0gY3VycmVudFRocmVhZCgpKTsKIAotICAgIHRocmVh
ZEdsb2JhbERhdGEoKS50aHJlYWRUaW1lcnMoKS5zZXRTaGFyZWRUaW1lcihtX3NoYXJlZFRpbWVy
LmdldCgpKTsKLQotICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIFJlZlB0cjxTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrPiB0YXNrOwotICAgICAgICBNZXNzYWdlUXVldWVXYWl0UmVzdWx0
IHJlc3VsdDsKLQorICAgIFJlZlB0cjxUYXNrPiB0YXNrOworICAgIE1lc3NhZ2VRdWV1ZVdhaXRS
ZXN1bHQgcmVzdWx0OworICAgIGlmICghcHJlZGljYXRlKSB7CiAgICAgICAgIGlmIChtX3NoYXJl
ZFRpbWVyLT5pc0FjdGl2ZSgpKQogICAgICAgICAgICAgcmVzdWx0ID0gbV9tZXNzYWdlUXVldWUu
d2FpdEZvck1lc3NhZ2VUaW1lZCh0YXNrLCBtX3NoYXJlZFRpbWVyLT5maXJlVGltZSgpKTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0ID0gKG1fbWVzc2FnZVF1ZXVlLndhaXRGb3JN
ZXNzYWdlKHRhc2spID8gTWVzc2FnZVF1ZXVlTWVzc2FnZVJlY2VpdmVkIDogTWVzc2FnZVF1ZXVl
VGVybWluYXRlZCk7Ci0KLSAgICAgICAgaWYgKHJlc3VsdCA9PSBNZXNzYWdlUXVldWVUZXJtaW5h
dGVkKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAotICAgICAgICBpZiAocmVzdWx0ID09
IE1lc3NhZ2VRdWV1ZU1lc3NhZ2VSZWNlaXZlZCkKLSAgICAgICAgICAgIHRhc2stPnBlcmZvcm1U
YXNrKGNvbnRleHQpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIEFTU0VSVChyZXN1bHQg
PT0gTWVzc2FnZVF1ZXVlVGltZW91dCk7Ci0gICAgICAgICAgICBtX3NoYXJlZFRpbWVyLT5maXJl
KCk7Ci0gICAgICAgIH0KKyAgICAgICAgICAgIHJlc3VsdCA9IG1fbWVzc2FnZVF1ZXVlLndhaXRG
b3JNZXNzYWdlKHRhc2spID8gTWVzc2FnZVF1ZXVlTWVzc2FnZVJlY2VpdmVkIDogTWVzc2FnZVF1
ZXVlVGVybWluYXRlZDsKKyAgICB9IGVsc2UKKyAgICAgICAgcmVzdWx0ID0gbV9tZXNzYWdlUXVl
dWUud2FpdEZvck1lc3NhZ2VGaWx0ZXJlZCh0YXNrLCBwcmVkaWNhdGUpOworCisgICAgc3dpdGNo
IChyZXN1bHQpIHsKKyAgICBjYXNlIE1lc3NhZ2VRdWV1ZVRlcm1pbmF0ZWQ6CisgICAgICAgIGJy
ZWFrOworCisgICAgY2FzZSBNZXNzYWdlUXVldWVNZXNzYWdlUmVjZWl2ZWQ6CisgICAgICAgIHRh
c2stPnBlcmZvcm1UYXNrKGNvbnRleHQpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgTWVz
c2FnZVF1ZXVlVGltZW91dDoKKyAgICAgICAgbV9zaGFyZWRUaW1lci0+ZmlyZSgpOworICAgICAg
ICBicmVhazsKICAgICB9CiAKLSAgICB0aHJlYWRHbG9iYWxEYXRhKCkudGhyZWFkVGltZXJzKCku
c2V0U2hhcmVkVGltZXIoMCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogdm9pZCBXb3JrZXJS
dW5Mb29wOjp0ZXJtaW5hdGUoKQpAQCAtMTExLDcgKzE2MywxMiBAQCB2b2lkIFdvcmtlclJ1bkxv
b3A6OnRlcm1pbmF0ZSgpCiAKIHZvaWQgV29ya2VyUnVuTG9vcDo6cG9zdFRhc2soUGFzc1JlZlB0
cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrKQogewotICAgIG1fbWVzc2FnZVF1
ZXVlLmFwcGVuZCh0YXNrKTsKKyAgICBwb3N0VGFza0Zvck1vZGUodGFzaywgU3RyaW5nKCkpOwor
fQorCit2b2lkIFdvcmtlclJ1bkxvb3A6OnBvc3RUYXNrRm9yTW9kZShQYXNzUmVmUHRyPFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2ssIGNvbnN0IFN0cmluZyYgbW9kZSkKK3sKKyAg
ICBtX21lc3NhZ2VRdWV1ZS5hcHBlbmQoVGFzazo6Y3JlYXRlKHRhc2ssIG1vZGUuY29weSgpKSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1dv
cmtlclJ1bkxvb3AuaCBiL1dlYkNvcmUvZG9tL1dvcmtlclJ1bkxvb3AuaAppbmRleCA4YmRkYmUz
Li5kNDg2NmI2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Xb3JrZXJSdW5Mb29wLmgKKysrIGIv
V2ViQ29yZS9kb20vV29ya2VyUnVuTG9vcC5oCkBAIC00MCw2ICs0MCw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorICAgIGNsYXNzIE1vZGVQcmVkaWNhdGU7CiAgICAgY2xhc3MgV29ya2Vy
Q29udGV4dDsKICAgICBjbGFzcyBXb3JrZXJTaGFyZWRUaW1lcjsKIApAQCAtNTAsMTUgKzUxLDQ2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgCiAgICAgICAgIC8vIEJsb2NraW5nIGNh
bGwuIFdhaXRzIGZvciB0YXNrcyBhbmQgdGltZXJzLCBpbnZva2VzIHRoZSBjYWxsYmFja3MuCiAg
ICAgICAgIHZvaWQgcnVuKFdvcmtlckNvbnRleHQqKTsKLSAgICAgICAgCisKKyAgICAgICAgLy8g
V2FpdHMgZm9yIGEgc2luZ2xlIHRhc2sgYW5kIHJldHVybnMuCisgICAgICAgIE1lc3NhZ2VRdWV1
ZVdhaXRSZXN1bHQgcnVuSW5Nb2RlKFdvcmtlckNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG1vZGUp
OworCiAgICAgICAgIHZvaWQgdGVybWluYXRlKCk7CiAgICAgICAgIGJvb2wgdGVybWluYXRlZCgp
IHsgcmV0dXJuIG1fbWVzc2FnZVF1ZXVlLmtpbGxlZCgpOyB9CiAKICAgICAgICAgdm9pZCBwb3N0
VGFzayhQYXNzUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KTsKKyAgICAgICAg
dm9pZCBwb3N0VGFza0Zvck1vZGUoUGFzc1JlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpU
YXNrPiwgY29uc3QgU3RyaW5nJiBtb2RlKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIE1lc3Nh
Z2VRdWV1ZTxSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gPiBtX21lc3NhZ2VR
dWV1ZTsKKyAgICAgICAgZnJpZW5kIGNsYXNzIE1vZGVQcmVkaWNhdGU7CisgICAgICAgIGNsYXNz
IFRhc2sgOiBwdWJsaWMgUmVmQ291bnRlZDxUYXNrPiB7CisgICAgICAgIHB1YmxpYzoKKyAgICAg
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRhc2s+IGNyZWF0ZShQYXNzUmVmUHRyPFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2ssIGNvbnN0IFN0cmluZyYgbW9kZSkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRhc2sodGFzaywgbW9k
ZSkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjb25zdCBTdHJpbmcmIG1vZGUoKSBj
b25zdCB7IHJldHVybiBtX21vZGU7IH0KKyAgICAgICAgICAgIHZvaWQgcGVyZm9ybVRhc2soU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkgeyBtX3Rhc2stPnBlcmZvcm1UYXNrKGNvbnRl
eHQpOyB9CisKKyAgICAgICAgcHJpdmF0ZToKKyAgICAgICAgICAgIFRhc2soUGFzc1JlZlB0cjxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpCisg
ICAgICAgICAgICAgICAgOiBtX3Rhc2sodGFzaykKKyAgICAgICAgICAgICAgICAsIG1fbW9kZSht
b2RlLmNvcHkoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
UmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IG1fdGFzazsKKyAgICAgICAgICAg
IFN0cmluZyBtX21vZGU7CisgICAgICAgIH07CisKKyAgICAgICAgdm9pZCBzZXRTaGFyZWRUaW1l
cigpOworICAgICAgICB2b2lkIHJlc2V0U2hhcmVkVGltZXIoKTsKKyAgICAgICAgTWVzc2FnZVF1
ZXVlV2FpdFJlc3VsdCBydW5Jbk1vZGUoV29ya2VyQ29udGV4dCosIE1vZGVQcmVkaWNhdGUqKTsK
KworICAgICAgICBNZXNzYWdlUXVldWU8UmVmUHRyPFRhc2s+ID4gbV9tZXNzYWdlUXVldWU7CiAg
ICAgICAgIE93blB0cjxXb3JrZXJTaGFyZWRUaW1lcj4gbV9zaGFyZWRUaW1lcjsKKyAgICAgICAg
aW50IG1fbmVzdGVkQ291bnQ7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>
<flag name="review"
          id="13506"
          type_id="1"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27795</attachid>
            <date>2009-02-19 10:46:10 -0800</date>
            <delta_ts>2009-02-19 11:09:47 -0800</delta_ts>
            <desc>Proposed fix.</desc>
            <filename>bug23980.txt</filename>
            <type>text/plain</type>
            <size>8170</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MGQ0N2MyYy4uMDE3MzBjNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OCBAQAorMjAwOS0wMi0xOCAgRGF2aWQgTGV2aW4g
IDxsZXZpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQnVnIDIzOTgwOiBXb3JrZXJSdW5Mb29wIG5lZWRzIGEgd2F5IHRvIHJ1
biBpbiBhIGdpdmVuIG1vZGUgc2ltaWxhciB0byBDRlJ1bkxvb3BJbk1vZGUuCisgICAgICAgIDxo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5ODA+CisKKyAgICAgICAg
V29ya2VyUnVuTG9vcCBoYXMgdGhlIGFiaWxpdHkgdG8gcnVuIGluIGEgbW9kZSB3aGljaCBmaWx0
ZXJzIHRoZSB0YXNrcyB0byBiZSBydW4uCisgICAgICAgICogV2hlbiBXb3JrZXJSdW5Mb29wOjpy
dW5Jbk1vZGUgaXMgY2FsbGVkLCBvbmx5IHRhc2sgZm9yIHRoYXQgbW9kZSB3aWxsIHJ1bi4KKyAg
ICAgICAgKiBXaGVuIFdvcmtlclJ1bkxvb3A6OnJ1biBpcyBjYWxsZWQgKG9yIHRoZSBkZWZhdWx0
IG1vZGUgaXMgdXNlZCksIHRoZW4gYWxsIHRhc2tzCisgICAgICAgICAgd2lsbCBydW4gcmVnYXJk
bGVzcyBvZiB0aGVpciBwb3N0ZWQgbW9kZS4KKworICAgICAgICBIZXJlJ3MgYSBkZW1vc3RyYXRp
b24gb2YgdGhlIGFwaToKKworICAgICAgICAgICAgUmVmUHRyPE5hbWVSZXNvbHV0aW9uPiBuYW1l
UmVzb2x1dGlvbiA9IE5hbWVSZXNvbHV0aW9uOjpjcmVhdGUod29ya2VyUnVuTG9vcCk7CisKKyAg
ICAgICAgICAgIC8vICBJbnRlcm5hbGx5IG5hbWVSZXNvbHV0aW9uIHdpbGwgZG8gd29ya2VyUnVu
TG9vcC5wb3N0VGFza0Zvck1vZGUodGFzaywgIk15Q29vbE1vZGUiKQorICAgICAgICAgICAgLy8g
IGZvciBhbnl0aGluZyB0aGF0IG5lZWRzIHRvIGJlIHJ1biBkdXJpbmcgdGhpcyBsb29wLgorICAg
ICAgICAgICAgbmFtZVJlc29sdXRpb24tPnNldFRhc2tNb2RlKCJNeUNvb2xNb2RlIik7CisKKyAg
ICAgICAgICAgIG5hbWVSZXNvbHV0aW9uLT5zdGFydCgpOworICAgICAgICAgICAgd2hpbGUgKCFu
YW1lUmVzb2x1dGlvbi0+ZG9uZSgpKSB7CisgICAgICAgICAgICAgICAgLy8gT25seSB0YXNrcyB3
aGljaCBhcmUgcG9zdGVkIGZvciAiTXlDb29sTW9kZSIgd2lsbCBydW4uCisgICAgICAgICAgICAg
ICAgd29ya2VyUnVuTG9vcC5ydW5Jbk1vZGUoY29udGV4dCwgIk15Q29vbE1vZGUiKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICBObyBvYnNlcnZhYmxlIGNoYW5nZSBpbiBiZWhhdmlvciwgc28g
bm8gdGVzdC4KKworICAgICAgICAqIGRvbS9Xb3JrZXJSdW5Mb29wLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1vZGVQcmVkaWNhdGU6Ok1vZGVQcmVkaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TW9kZVByZWRpY2F0ZTo6b3BlcmF0b3IoKSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW5M
b29wOjpXb3JrZXJSdW5Mb29wKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6On5X
b3JrZXJSdW5Mb29wKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6OnNldFNoYXJl
ZFRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6OnJlc2V0U2hhcmVkVGlt
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyUnVuTG9vcDo6cnVuKToKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlclJ1bkxvb3A6OnJ1bkluTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJSdW5Mb29wOjpwb3N0VGFzayk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW5Mb29wOjpw
b3N0VGFza0Zvck1vZGUpOgorICAgICAgICAqIGRvbS9Xb3JrZXJSdW5Mb29wLmg6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJSdW5Mb29wOjpUYXNrOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyUnVuTG9vcDo6VGFzazo6bW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJS
dW5Mb29wOjpUYXNrOjpwZXJmb3JtVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW5M
b29wOjpUYXNrOjpUYXNrKToKKwogMjAwOS0wMi0xOCAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgRXhwb3J0IFdlYkNvcmU6OmhhbmRDdXJzb3IgYW5kIEN1cnNvci5o
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Xb3JrZXJSdW5Mb29wLmNwcCBiL1dlYkNvcmUvZG9t
L1dvcmtlclJ1bkxvb3AuY3BwCmluZGV4IDZhOWViYjMuLjYzZTNkMTAgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvZG9tL1dvcmtlclJ1bkxvb3AuY3BwCisrKyBiL1dlYkNvcmUvZG9tL1dvcmtlclJ1bkxv
b3AuY3BwCkBAIC02NCw0NCArNjQsMTM1IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIG1fbmV4dEZp
cmVUaW1lOwogfTsKIAorY2xhc3MgV29ya2VyUnVuTG9vcDo6VGFzayA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFRhc2s+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxUYXNrPiBjcmVhdGUo
UGFzc1JlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrLCBjb25zdCBTdHJp
bmcmIG1vZGUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRhc2sodGFzaywg
bW9kZSkpOworICAgIH0KKworICAgIGNvbnN0IFN0cmluZyYgbW9kZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbW9kZTsgfQorICAgIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCkgeyBtX3Rhc2stPnBlcmZvcm1UYXNrKGNvbnRleHQpOyB9CisKK3ByaXZhdGU6Cisg
ICAgVGFzayhQYXNzUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2ssIGNv
bnN0IFN0cmluZyYgbW9kZSkKKyAgICAgICAgOiBtX3Rhc2sodGFzaykKKyAgICAgICAgLCBtX21v
ZGUobW9kZS5jb3B5KCkpCisgICAgeworICAgIH0KKworICAgIFJlZlB0cjxTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpUYXNrPiBtX3Rhc2s7CisgICAgU3RyaW5nIG1fbW9kZTsKK307CisKK2NsYXNz
IE1vZGVQcmVkaWNhdGUgeworcHVibGljOgorICAgIE1vZGVQcmVkaWNhdGUoY29uc3QgU3RyaW5n
JiBtb2RlKQorICAgICAgICA6IG1fbW9kZShtb2RlKQorICAgICAgICAsIG1fZGVmYXVsdE1vZGUo
bW9kZSA9PSBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKQorICAgIHsKKyAgICB9CisKKyAg
ICBib29sIGlzRGVmYXVsdE1vZGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZGVm
YXVsdE1vZGU7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvcigpKFBhc3NSZWZQdHI8V29ya2Vy
UnVuTG9vcDo6VGFzaz4gdGFzaykKKyAgICB7CisgICAgICAgIHJldHVybiBtX2RlZmF1bHRNb2Rl
IHx8IG1fbW9kZSA9PSB0YXNrLT5tb2RlKCk7CisgICAgfQorCitwcml2YXRlOgorICAgIFN0cmlu
ZyBtX21vZGU7CisgICAgYm9vbCBtX2RlZmF1bHRNb2RlOworfTsKKwogV29ya2VyUnVuTG9vcDo6
V29ya2VyUnVuTG9vcCgpCiAgICAgOiBtX3NoYXJlZFRpbWVyKG5ldyBXb3JrZXJTaGFyZWRUaW1l
cikKKyAgICAsIG1fbmVzdGVkQ291bnQoMCkKIHsKIH0KIAogV29ya2VyUnVuTG9vcDo6fldvcmtl
clJ1bkxvb3AoKQogeworICAgIEFTU0VSVCghbV9uZXN0ZWRDb3VudCk7CiB9CiAKK1N0cmluZyBX
b3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpCit7CisgICAgcmV0dXJuIFN0cmluZygpOworfQor
CitjbGFzcyBSdW5Mb29wU2V0dXAgOiBOb25jb3B5YWJsZQoreworcHVibGljOgorICAgIFJ1bkxv
b3BTZXR1cChXb3JrZXJSdW5Mb29wJiBydW5Mb29wKQorICAgICAgICA6IG1fcnVuTG9vcChydW5M
b29wKQorICAgIHsKKyAgICAgICAgaWYgKCFtX3J1bkxvb3AubV9uZXN0ZWRDb3VudCkKKyAgICAg
ICAgICAgIHRocmVhZEdsb2JhbERhdGEoKS50aHJlYWRUaW1lcnMoKS5zZXRTaGFyZWRUaW1lciht
X3J1bkxvb3AubV9zaGFyZWRUaW1lci5nZXQoKSk7CisgICAgICAgIG1fcnVuTG9vcC5tX25lc3Rl
ZENvdW50Kys7CisgICAgfQorCisgICAgflJ1bkxvb3BTZXR1cCgpCisgICAgeworICAgICAgICBt
X3J1bkxvb3AubV9uZXN0ZWRDb3VudC0tOworICAgICAgICBpZiAoIW1fcnVuTG9vcC5tX25lc3Rl
ZENvdW50KQorICAgICAgICAgICAgdGhyZWFkR2xvYmFsRGF0YSgpLnRocmVhZFRpbWVycygpLnNl
dFNoYXJlZFRpbWVyKDApOworICAgIH0KK3ByaXZhdGU6CisgICAgV29ya2VyUnVuTG9vcCYgbV9y
dW5Mb29wOworfTsKKwogdm9pZCBXb3JrZXJSdW5Mb29wOjpydW4oV29ya2VyQ29udGV4dCogY29u
dGV4dCkKIHsKKyAgICBSdW5Mb29wU2V0dXAgc2V0dXAoKnRoaXMpOworICAgIE1vZGVQcmVkaWNh
dGUgbW9kZVByZWRpY2F0ZShkZWZhdWx0TW9kZSgpKTsKKyAgICBNZXNzYWdlUXVldWVXYWl0UmVz
dWx0IHJlc3VsdDsKKyAgICBkbyB7CisgICAgICAgIHJlc3VsdCA9IHJ1bkluTW9kZShjb250ZXh0
LCBtb2RlUHJlZGljYXRlKTsKKyAgICB9IHdoaWxlIChyZXN1bHQgIT0gTWVzc2FnZVF1ZXVlVGVy
bWluYXRlZCk7Cit9CisKK01lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgV29ya2VyUnVuTG9vcDo6cnVu
SW5Nb2RlKFdvcmtlckNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbW9kZSkKK3sKKyAg
ICBSdW5Mb29wU2V0dXAgc2V0dXAoKnRoaXMpOworICAgIE1vZGVQcmVkaWNhdGUgbW9kZVByZWRp
Y2F0ZShtb2RlKTsKKyAgICBNZXNzYWdlUXVldWVXYWl0UmVzdWx0IHJlc3VsdCA9IHJ1bkluTW9k
ZShjb250ZXh0LCBtb2RlUHJlZGljYXRlKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitNZXNz
YWdlUXVldWVXYWl0UmVzdWx0IFdvcmtlclJ1bkxvb3A6OnJ1bkluTW9kZShXb3JrZXJDb250ZXh0
KiBjb250ZXh0LCBNb2RlUHJlZGljYXRlJiBwcmVkaWNhdGUpCit7CiAgICAgQVNTRVJUKGNvbnRl
eHQpOwogICAgIEFTU0VSVChjb250ZXh0LT50aHJlYWQoKSk7CiAgICAgQVNTRVJUKGNvbnRleHQt
PnRocmVhZCgpLT50aHJlYWRJRCgpID09IGN1cnJlbnRUaHJlYWQoKSk7CiAKLSAgICB0aHJlYWRH
bG9iYWxEYXRhKCkudGhyZWFkVGltZXJzKCkuc2V0U2hhcmVkVGltZXIobV9zaGFyZWRUaW1lci5n
ZXQoKSk7Ci0KLSAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBSZWZQdHI8U2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzaz4gdGFzazsKLSAgICAgICAgTWVzc2FnZVF1ZXVlV2FpdFJlc3VsdCBy
ZXN1bHQ7Ci0KKyAgICBSZWZQdHI8VGFzaz4gdGFzazsKKyAgICBNZXNzYWdlUXVldWVXYWl0UmVz
dWx0IHJlc3VsdDsKKyAgICBpZiAocHJlZGljYXRlLmlzRGVmYXVsdE1vZGUoKSkgewogICAgICAg
ICBpZiAobV9zaGFyZWRUaW1lci0+aXNBY3RpdmUoKSkKICAgICAgICAgICAgIHJlc3VsdCA9IG1f
bWVzc2FnZVF1ZXVlLndhaXRGb3JNZXNzYWdlVGltZWQodGFzaywgbV9zaGFyZWRUaW1lci0+Zmly
ZVRpbWUoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3VsdCA9IChtX21lc3NhZ2VR
dWV1ZS53YWl0Rm9yTWVzc2FnZSh0YXNrKSA/IE1lc3NhZ2VRdWV1ZU1lc3NhZ2VSZWNlaXZlZCA6
IE1lc3NhZ2VRdWV1ZVRlcm1pbmF0ZWQpOwotCi0gICAgICAgIGlmIChyZXN1bHQgPT0gTWVzc2Fn
ZVF1ZXVlVGVybWluYXRlZCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAKLSAgICAgICAg
aWYgKHJlc3VsdCA9PSBNZXNzYWdlUXVldWVNZXNzYWdlUmVjZWl2ZWQpCi0gICAgICAgICAgICB0
YXNrLT5wZXJmb3JtVGFzayhjb250ZXh0KTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBB
U1NFUlQocmVzdWx0ID09IE1lc3NhZ2VRdWV1ZVRpbWVvdXQpOwotICAgICAgICAgICAgbV9zaGFy
ZWRUaW1lci0+ZmlyZSgpOwotICAgICAgICB9CisgICAgICAgICAgICByZXN1bHQgPSBtX21lc3Nh
Z2VRdWV1ZS53YWl0Rm9yTWVzc2FnZSh0YXNrKSA/IE1lc3NhZ2VRdWV1ZU1lc3NhZ2VSZWNlaXZl
ZCA6IE1lc3NhZ2VRdWV1ZVRlcm1pbmF0ZWQ7CisgICAgfSBlbHNlCisgICAgICAgIHJlc3VsdCA9
IG1fbWVzc2FnZVF1ZXVlLndhaXRGb3JNZXNzYWdlRmlsdGVyZWQodGFzaywgcHJlZGljYXRlKTsK
KworICAgIHN3aXRjaCAocmVzdWx0KSB7CisgICAgY2FzZSBNZXNzYWdlUXVldWVUZXJtaW5hdGVk
OgorICAgICAgICBicmVhazsKKworICAgIGNhc2UgTWVzc2FnZVF1ZXVlTWVzc2FnZVJlY2VpdmVk
OgorICAgICAgICB0YXNrLT5wZXJmb3JtVGFzayhjb250ZXh0KTsKKyAgICAgICAgYnJlYWs7CisK
KyAgICBjYXNlIE1lc3NhZ2VRdWV1ZVRpbWVvdXQ6CisgICAgICAgIG1fc2hhcmVkVGltZXItPmZp
cmUoKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgdGhyZWFkR2xvYmFsRGF0YSgpLnRo
cmVhZFRpbWVycygpLnNldFNoYXJlZFRpbWVyKDApOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
IHZvaWQgV29ya2VyUnVuTG9vcDo6dGVybWluYXRlKCkKQEAgLTExMSw3ICsyMDIsMTIgQEAgdm9p
ZCBXb3JrZXJSdW5Mb29wOjp0ZXJtaW5hdGUoKQogCiB2b2lkIFdvcmtlclJ1bkxvb3A6OnBvc3RU
YXNrKFBhc3NSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaykKIHsKLSAg
ICBtX21lc3NhZ2VRdWV1ZS5hcHBlbmQodGFzayk7CisgICAgcG9zdFRhc2tGb3JNb2RlKHRhc2ss
IGRlZmF1bHRNb2RlKCkpOworfQorCit2b2lkIFdvcmtlclJ1bkxvb3A6OnBvc3RUYXNrRm9yTW9k
ZShQYXNzUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2ssIGNvbnN0IFN0
cmluZyYgbW9kZSkKK3sKKyAgICBtX21lc3NhZ2VRdWV1ZS5hcHBlbmQoVGFzazo6Y3JlYXRlKHRh
c2ssIG1vZGUuY29weSgpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvZG9tL1dvcmtlclJ1bkxvb3AuaCBiL1dlYkNvcmUvZG9tL1dvcmtlclJ1bkxv
b3AuaAppbmRleCA4YmRkYmUzLi45YWU5ZmQ0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Xb3Jr
ZXJSdW5Mb29wLmgKKysrIGIvV2ViQ29yZS9kb20vV29ya2VyUnVuTG9vcC5oCkBAIC00MCw2ICs0
MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorICAgIGNsYXNzIE1vZGVQcmVkaWNhdGU7
CiAgICAgY2xhc3MgV29ya2VyQ29udGV4dDsKICAgICBjbGFzcyBXb3JrZXJTaGFyZWRUaW1lcjsK
IApAQCAtNTAsMTUgKzUxLDI1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgCiAgICAg
ICAgIC8vIEJsb2NraW5nIGNhbGwuIFdhaXRzIGZvciB0YXNrcyBhbmQgdGltZXJzLCBpbnZva2Vz
IHRoZSBjYWxsYmFja3MuCiAgICAgICAgIHZvaWQgcnVuKFdvcmtlckNvbnRleHQqKTsKLSAgICAg
ICAgCisKKyAgICAgICAgLy8gV2FpdHMgZm9yIGEgc2luZ2xlIHRhc2sgYW5kIHJldHVybnMuCisg
ICAgICAgIE1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgcnVuSW5Nb2RlKFdvcmtlckNvbnRleHQqLCBj
b25zdCBTdHJpbmcmIG1vZGUpOworCiAgICAgICAgIHZvaWQgdGVybWluYXRlKCk7CiAgICAgICAg
IGJvb2wgdGVybWluYXRlZCgpIHsgcmV0dXJuIG1fbWVzc2FnZVF1ZXVlLmtpbGxlZCgpOyB9CiAK
ICAgICAgICAgdm9pZCBwb3N0VGFzayhQYXNzUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2s+KTsKKyAgICAgICAgdm9pZCBwb3N0VGFza0Zvck1vZGUoUGFzc1JlZlB0cjxTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrPiwgY29uc3QgU3RyaW5nJiBtb2RlKTsKIAorICAgICAgICBz
dGF0aWMgU3RyaW5nIGRlZmF1bHRNb2RlKCk7CisgICAgICAgIGNsYXNzIFRhc2s7CiAgICAgcHJp
dmF0ZToKLSAgICAgICAgTWVzc2FnZVF1ZXVlPFJlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpUYXNrPiA+IG1fbWVzc2FnZVF1ZXVlOworICAgICAgICBmcmllbmQgY2xhc3MgUnVuTG9vcFNl
dHVwOworICAgICAgICBNZXNzYWdlUXVldWVXYWl0UmVzdWx0IHJ1bkluTW9kZShXb3JrZXJDb250
ZXh0KiwgTW9kZVByZWRpY2F0ZSYpOworCisgICAgICAgIE1lc3NhZ2VRdWV1ZTxSZWZQdHI8VGFz
az4gPiBtX21lc3NhZ2VRdWV1ZTsKICAgICAgICAgT3duUHRyPFdvcmtlclNoYXJlZFRpbWVyPiBt
X3NoYXJlZFRpbWVyOworICAgICAgICBpbnQgbV9uZXN0ZWRDb3VudDsKICAgICB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>
<flag name="review"
          id="13515"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>