<?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>25149</bug_id>
          
          <creation_ts>2009-04-12 12:54:22 -0700</creation_ts>
          <short_desc>Geolocation should start timer after permission is granted</short_desc>
          <delta_ts>2009-04-13 12:06:13 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Greg Bolsinga">bolsinga</reporter>
          <assigned_to name="Greg Bolsinga">bolsinga</assigned_to>
          <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>117263</commentid>
    <comment_count>0</comment_count>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2009-04-12 12:54:22 -0700</bug_when>
    <thetext>http://lists.w3.org/Archives/Public/public-geolocation/2009Mar/0068.html

In the current implementation, the timer starts right at the first request, and may fire before the user has granted permission.

&lt;rdar://problem/6672275&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117264</commentid>
    <comment_count>1</comment_count>
      <attachid>29422</attachid>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2009-04-12 13:12:22 -0700</bug_when>
    <thetext>Created attachment 29422
implements the fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117265</commentid>
    <comment_count>2</comment_count>
      <attachid>29423</attachid>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2009-04-12 13:38:23 -0700</bug_when>
    <thetext>Created attachment 29423
updated patch to compile

this compiles. I brought the change from iPhone, which is slightly different.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117268</commentid>
    <comment_count>3</comment_count>
      <attachid>29423</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-04-12 14:22:55 -0700</bug_when>
    <thetext>Comment on attachment 29423
updated patch to compile

r-.  Some concerns below.

&gt; +        * page/Geolocation.cpp: Add a RefPtr&lt;PositionOptions&gt; so it can be used
&gt; +	later when the timer is started. Change PositionOptions* to PassRefPtr&lt;PositionOptions&gt;
&gt; +	where needed.

Please remove the tabs.


&gt; -void Geolocation::getCurrentPosition(PassRefPtr&lt;PositionCallback&gt; successCallback, PassRefPtr&lt;PositionErrorCallback&gt; errorCallback, PositionOptions* options)
&gt; +void Geolocation::getCurrentPosition(PassRefPtr&lt;PositionCallback&gt; successCallback, PassRefPtr&lt;PositionErrorCallback&gt; errorCallback, PassRefPtr&lt;PositionOptions&gt; options)
&gt;  {
&gt;      RefPtr&lt;GeoNotifier&gt; notifier = GeoNotifier::create(successCallback, errorCallback, options);
&gt;  
&gt; -    if (!m_service-&gt;startUpdating(options)) {
&gt; +    if (!m_service-&gt;startUpdating(options.get())) {

I am not sure it is safe to use the PRP options like this after passing it to GeoNotifier::create.  Instead, you should use notifier-&gt;m_options as is one for notifier-&gt;m_errorCallback.

&gt;          if (notifier-&gt;m_errorCallback) {

&gt; +int Geolocation::watchPosition(PassRefPtr&lt;PositionCallback&gt; successCallback, PassRefPtr&lt;PositionErrorCallback&gt; errorCallback, PassRefPtr&lt;PositionOptions&gt; options)
&gt;  {
&gt;      RefPtr&lt;GeoNotifier&gt; notifier = GeoNotifier::create(successCallback, errorCallback, options);
&gt;  
&gt; -    if (!m_service-&gt;startUpdating(options)) {
&gt; +    if (!m_service-&gt;startUpdating(options.get())) {

Same here.

&gt; +void Geolocation::startTimer(Vector&lt;RefPtr&lt;GeoNotifier&gt; &gt;&amp; notifiers)

Can this function be a static function instead of a member function?

&gt; +
&gt; +void Geolocation::startTimersForOneShots()
&gt; +{
&gt; +    Vector&lt;RefPtr&lt;GeoNotifier&gt; &gt; copy;
&gt; +    copyToVector(m_oneShots, copy);

If starting the timer cannot alter m_oneShot, I don&apos;t think there is any reason to copy the set into a vector. 

&gt; +void Geolocation::startTimersForWatchers()
&gt; +{
&gt; +    Vector&lt;RefPtr&lt;GeoNotifier&gt; &gt; copy;
&gt; +    copyValuesToVector(m_watchers, copy);

Same comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117271</commentid>
    <comment_count>4</comment_count>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2009-04-12 15:42:19 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 29423 [review])
&gt; r-.  Some concerns below.

&gt; &gt; +
&gt; &gt; +void Geolocation::startTimersForOneShots()
&gt; &gt; +{
&gt; &gt; +    Vector&lt;RefPtr&lt;GeoNotifier&gt; &gt; copy;
&gt; &gt; +    copyToVector(m_oneShots, copy);
&gt; 
&gt; If starting the timer cannot alter m_oneShot, I don&apos;t think there is any reason
&gt; to copy the set into a vector. 
&gt; 
&gt; &gt; +void Geolocation::startTimersForWatchers()
&gt; &gt; +{
&gt; &gt; +    Vector&lt;RefPtr&lt;GeoNotifier&gt; &gt; copy;
&gt; &gt; +    copyValuesToVector(m_watchers, copy);
&gt; 
&gt; Same comment.
&gt; 

Each of these are not Vectors, and this allows me to have a common startTimers call between the two.

I&apos;m addressing your other comments, and will have a new patch shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117274</commentid>
    <comment_count>5</comment_count>
      <attachid>29425</attachid>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2009-04-12 16:28:26 -0700</bug_when>
    <thetext>Created attachment 29425
Addresses Sam&apos;s review comments.

It still gets the Vector for the oneShots and watchers when it starts the timers. This is so there is a common method between the two. One is a HashMap, the other a HashSet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117307</commentid>
    <comment_count>6</comment_count>
      <attachid>29425</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-04-13 10:28:38 -0700</bug_when>
    <thetext>Comment on attachment 29425
Addresses Sam&apos;s review comments.

&gt;      
&gt; +    static void startTimer(Vector&lt;RefPtr&lt;GeoNotifier&gt; &gt;&amp;);

This doesn&apos;t need to be in the header.  You can just declare it static in the cpp file.

Otherwise, r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117323</commentid>
    <comment_count>7</comment_count>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2009-04-13 12:03:57 -0700</bug_when>
    <thetext>startTimer uses GeoNotifier, which is private to Geolocation. If I remove the declaration from the class, I get errors when using GeoNotifier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117324</commentid>
    <comment_count>8</comment_count>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2009-04-13 12:06:13 -0700</bug_when>
    <thetext>bolsinga:WebKit bolsinga$ svn commit
Sending        WebCore/ChangeLog
Sending        WebCore/bindings/js/JSGeolocationCustom.cpp
Sending        WebCore/page/Geolocation.cpp
Sending        WebCore/page/Geolocation.h
Transmitting file data ....
Committed revision 42445.
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29422</attachid>
            <date>2009-04-12 13:12:22 -0700</date>
            <delta_ts>2009-04-12 13:38:23 -0700</delta_ts>
            <desc>implements the fix</desc>
            <filename>25149.patch.txt</filename>
            <type>text/plain</type>
            <size>8764</size>
            <attacher name="Greg Bolsinga">bolsinga</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MjQyNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMDktMDQtMTIgIEdyZWcgQm9sc2luZ2EgIDxib2xzaW5nYUBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1MTQ5CisKKyAgICAgICAg
VGhlIEdlb2xvY2F0aW9uIHRpbWVyIG5lZWRzIHRvIHN0YXJ0IGFmdGVyIHRoZSBVQSBoYXMgZ3Jh
bnRlZCBwZXJtaXNzaW9uLgorCQorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTR2VvbG9jYXRpb25D
dXN0b20uY3BwOiBVc2UgUGFzc1JlZlB0cjxQb3NpdGlvbk9wdGlvbnM+CisgICAgICAgIChXZWJD
b3JlOjpKU0dlb2xvY2F0aW9uOjpnZXRDdXJyZW50UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6SlNHZW9sb2NhdGlvbjo6d2F0Y2hQb3NpdGlvbik6CisgICAgICAgICogcGFnZS9HZW9sb2Nh
dGlvbi5jcHA6IEFkZCBhIFJlZlB0cjxQb3NpdGlvbk9wdGlvbnM+IHNvIGl0IGNhbiBiZSB1c2Vk
CisJbGF0ZXIgd2hlbiB0aGUgdGltZXIgaXMgc3RhcnRlZC4gQ2hhbmdlIFBvc2l0aW9uT3B0aW9u
cyogdG8gUGFzc1JlZlB0cjxQb3NpdGlvbk9wdGlvbnM+CisJd2hlcmUgbmVlZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6R2VvbG9jYXRpb246Okdlb05vdGlmaWVyOjpHZW9Ob3RpZmllcik6CisgICAg
ICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6R2VvTm90aWZpZXI6OnN0YXJ0VGltZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OmdldEN1cnJlbnRQb3NpdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6d2F0Y2hQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpHZW9sb2NhdGlvbjo6c2V0SXNBbGxvd2VkKTogU3RhcnQgdGhlIHRpbWVyIGlzIHRoZSBVQSBh
bGxvd3MKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpzdGFydFRpbWVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpzdGFydFRpbWVyc0Zvck9uZVNob3RzKToKKyAgICAg
ICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpzdGFydFRpbWVyc0ZvcldhdGNoZXJzKToKKyAgICAg
ICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpzdGFydFRpbWVycyk6CisgICAgICAgICogcGFnZS9H
ZW9sb2NhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246Okdlb05vdGlmaWVy
OjpjcmVhdGUpOgorCiAyMDA5LTA0LTEyICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxl
LmNvbT4KIAogICAgICAgICBBIHJlc291cmNlJ3MgZmlsZW5hbWUgaXMgbm90IGNvcnJlY3QgYWZ0
ZXIgYSByZWRpcmVjdCBpbiB0aGUgSW5zcGVjdG9yLgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdz
L2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3BwCShyZXZpc2lvbiA0MjQyNykKKysrIFdlYkNvcmUv
YmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEw
NCw3ICsxMDQsNyBAQCBKU1ZhbHVlUHRyIEpTR2VvbG9jYXRpb246OmdldEN1cnJlbnRQb3NpCiAg
ICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CiAKLSAgICBtX2ltcGwtPmdl
dEN1cnJlbnRQb3NpdGlvbihwb3NpdGlvbkNhbGxiYWNrLnJlbGVhc2UoKSwgcG9zaXRpb25FcnJv
ckNhbGxiYWNrLnJlbGVhc2UoKSwgcG9zaXRpb25PcHRpb25zLmdldCgpKTsKKyAgICBtX2ltcGwt
PmdldEN1cnJlbnRQb3NpdGlvbihwb3NpdGlvbkNhbGxiYWNrLnJlbGVhc2UoKSwgcG9zaXRpb25F
cnJvckNhbGxiYWNrLnJlbGVhc2UoKSwgcG9zaXRpb25PcHRpb25zLnJlbGVhc2UoKSk7CiAgICAg
CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CkBAIC0xNDMsNyArMTQzLDcgQEAgSlNWYWx1
ZVB0ciBKU0dlb2xvY2F0aW9uOjp3YXRjaFBvc2l0aW9uKAogICAgICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiAgICAgfQogCi0gICAgaW50IHdhdGNoSUQgPSBtX2ltcGwtPndhdGNoUG9z
aXRpb24ocG9zaXRpb25DYWxsYmFjay5yZWxlYXNlKCksIHBvc2l0aW9uRXJyb3JDYWxsYmFjay5y
ZWxlYXNlKCksIHBvc2l0aW9uT3B0aW9ucy5nZXQoKSk7CisgICAgaW50IHdhdGNoSUQgPSBtX2lt
cGwtPndhdGNoUG9zaXRpb24ocG9zaXRpb25DYWxsYmFjay5yZWxlYXNlKCksIHBvc2l0aW9uRXJy
b3JDYWxsYmFjay5yZWxlYXNlKCksIHBvc2l0aW9uT3B0aW9ucy5yZWxlYXNlKCkpOwogICAgIHJl
dHVybiBqc051bWJlcihleGVjLCB3YXRjaElEKTsKIH0KIApJbmRleDogV2ViQ29yZS9wYWdlL0dl
b2xvY2F0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uY3Bw
CShyZXZpc2lvbiA0MjQyNykKKysrIFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM0LDEzICszNCwxOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUdl
b2xvY2F0aW9uOjpHZW9Ob3RpZmllcjo6R2VvTm90aWZpZXIoUGFzc1JlZlB0cjxQb3NpdGlvbkNh
bGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNr
PiBlcnJvckNhbGxiYWNrLCBQb3NpdGlvbk9wdGlvbnMqIG9wdGlvbnMpCitHZW9sb2NhdGlvbjo6
R2VvTm90aWZpZXI6Okdlb05vdGlmaWVyKFBhc3NSZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4gc3Vj
Y2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxs
YmFjaywgUGFzc1JlZlB0cjxQb3NpdGlvbk9wdGlvbnM+IG9wdGlvbnMpCiAgICAgOiBtX3N1Y2Nl
c3NDYWxsYmFjayhzdWNjZXNzQ2FsbGJhY2spCiAgICAgLCBtX2Vycm9yQ2FsbGJhY2soZXJyb3JD
YWxsYmFjaykKKyAgICAsIG1fb3B0aW9ucyhvcHRpb25zKQogICAgICwgbV90aW1lcih0aGlzLCAm
R2VvbG9jYXRpb246Okdlb05vdGlmaWVyOjp0aW1lckZpcmVkKQogewotICAgIGlmIChtX2Vycm9y
Q2FsbGJhY2sgJiYgb3B0aW9ucykKLSAgICAgICAgbV90aW1lci5zdGFydE9uZVNob3Qob3B0aW9u
cy0+dGltZW91dCgpIC8gMTAwMC4wKTsKK30KKworR2VvbG9jYXRpb246Okdlb05vdGlmaWVyOjpz
dGFydFRpbWVyKCkKK3sKKyAgICBpZiAobV9lcnJvckNhbGxiYWNrICYmIG1fb3B0aW9ucykKKyAg
ICAgICAgbV90aW1lci5zdGFydE9uZVNob3QobV9vcHRpb25zLT50aW1lb3V0KCkgLyAxMDAwLjAp
OwogfQogCiB2b2lkIEdlb2xvY2F0aW9uOjpHZW9Ob3RpZmllcjo6dGltZXJGaXJlZChUaW1lcjxH
ZW9Ob3RpZmllcj4qKQpAQCAtNzUsNyArODAsNyBAQCB2b2lkIEdlb2xvY2F0aW9uOjpnZXRDdXJy
ZW50UG9zaXRpb24oUGFzCiB7CiAgICAgUmVmUHRyPEdlb05vdGlmaWVyPiBub3RpZmllciA9IEdl
b05vdGlmaWVyOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBvcHRpb25z
KTsKIAotICAgIGlmICghbV9zZXJ2aWNlLT5zdGFydFVwZGF0aW5nKG9wdGlvbnMpKSB7CisgICAg
aWYgKCFtX3NlcnZpY2UtPnN0YXJ0VXBkYXRpbmcob3B0aW9ucy5nZXQoKSkpIHsKICAgICAgICAg
aWYgKG5vdGlmaWVyLT5tX2Vycm9yQ2FsbGJhY2spIHsKICAgICAgICAgICAgIFJlZlB0cjxQb3Np
dGlvbkVycm9yPiBlcnJvciA9IFBvc2l0aW9uRXJyb3I6OmNyZWF0ZShQb3NpdGlvbkVycm9yOjpQ
RVJNSVNTSU9OX0RFTklFRCwgIlVuYWJsZSB0byBTdGFydCIpOwogICAgICAgICAgICAgbm90aWZp
ZXItPm1fZXJyb3JDYWxsYmFjay0+aGFuZGxlRXZlbnQoZXJyb3IuZ2V0KCkpOwpAQCAtODYsMTEg
KzkxLDExIEBAIHZvaWQgR2VvbG9jYXRpb246OmdldEN1cnJlbnRQb3NpdGlvbihQYXMKICAgICBt
X29uZVNob3RzLmFkZChub3RpZmllcik7CiB9CiAKLWludCBHZW9sb2NhdGlvbjo6d2F0Y2hQb3Np
dGlvbihQYXNzUmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1Jl
ZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssIFBvc2l0aW9uT3B0aW9u
cyogb3B0aW9ucykKK2ludCBHZW9sb2NhdGlvbjo6d2F0Y2hQb3NpdGlvbihQYXNzUmVmUHRyPFBv
c2l0aW9uQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxQb3NpdGlvbkVycm9y
Q2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssIFBhc3NSZWZQdHI8UG9zaXRpb25PcHRpb25zPiBvcHRp
b25zKQogewogICAgIFJlZlB0cjxHZW9Ob3RpZmllcj4gbm90aWZpZXIgPSBHZW9Ob3RpZmllcjo6
Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgb3B0aW9ucyk7CiAKLSAgICBp
ZiAoIW1fc2VydmljZS0+c3RhcnRVcGRhdGluZyhvcHRpb25zKSkgeworICAgIGlmICghbV9zZXJ2
aWNlLT5zdGFydFVwZGF0aW5nKG9wdGlvbnMuZ2V0KCkpKSB7CiAgICAgICAgIGlmIChub3RpZmll
ci0+bV9lcnJvckNhbGxiYWNrKSB7CiAgICAgICAgICAgICBSZWZQdHI8UG9zaXRpb25FcnJvcj4g
ZXJyb3IgPSBQb3NpdGlvbkVycm9yOjpjcmVhdGUoUG9zaXRpb25FcnJvcjo6UEVSTUlTU0lPTl9E
RU5JRUQsICJVbmFibGUgdG8gU3RhcnQiKTsKICAgICAgICAgICAgIG5vdGlmaWVyLT5tX2Vycm9y
Q2FsbGJhY2stPmhhbmRsZUV2ZW50KGVycm9yLmdldCgpKTsKQEAgLTEyOSw5ICsxMzQsMTAgQEAg
dm9pZCBHZW9sb2NhdGlvbjo6c2V0SXNBbGxvd2VkKGJvb2wgYWxsbwogewogICAgIG1fYWxsb3dH
ZW9sb2NhdGlvbiA9IGFsbG93ZWQgPyBZZXMgOiBObzsKICAgICAKLSAgICBpZiAoaXNBbGxvd2Vk
KCkpCisgICAgaWYgKGlzQWxsb3dlZCgpKSB7CisgICAgICAgIHN0YXJ0VGltZXJzKCk7CiAgICAg
ICAgIGdlb2xvY2F0aW9uU2VydmljZVBvc2l0aW9uQ2hhbmdlZChtX3NlcnZpY2UuZ2V0KCkpOwot
ICAgIGVsc2UgeworICAgIH0gZWxzZSB7CiAgICAgICAgIFdURjo6UmVmUHRyPFdlYkNvcmU6OlBv
c2l0aW9uRXJyb3I+IGVycm9yID0gV2ViQ29yZTo6UG9zaXRpb25FcnJvcjo6Y3JlYXRlKFBvc2l0
aW9uRXJyb3I6OlBFUk1JU1NJT05fREVOSUVELCAiVXNlciBkaXNhbGxvd2VkIEdlb0xvY2F0aW9u
Iik7CiAgICAgICAgIGhhbmRsZUVycm9yKGVycm9yLmdldCgpKTsKICAgICB9CkBAIC0yMDUsNiAr
MjExLDM3IEBAIHZvaWQgR2VvbG9jYXRpb246OnNlbmRQb3NpdGlvblRvV2F0Y2hlcnMKICAgICB9
CiB9CiAKK3ZvaWQgR2VvbG9jYXRpb246OnN0YXJ0VGltZXIoVmVjdG9yPFJlZlB0cjxHZW9Ob3Rp
Zmllcj4gPiYgbm90aWZpZXJzKQoreworICAgIFZlY3RvcjxSZWZQdHI8R2VvTm90aWZpZXI+ID46
OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG5vdGlmaWVycy5lbmQoKTsKKyAgICBmb3IgKFZlY3RvcjxS
ZWZQdHI8R2VvTm90aWZpZXI+ID46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbm90aWZpZXJzLmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBSZWZQdHI8R2VvTm90aWZpZXI+IG5vdGlm
aWVyID0gKml0OworICAgICAgICBub3RpZmllci0+c3RhcnRUaW1lcigpOworICAgIH0KK30KKwor
dm9pZCBHZW9sb2NhdGlvbjo6c3RhcnRUaW1lcnNGb3JPbmVTaG90cygpCit7CisgICAgVmVjdG9y
PFJlZlB0cjxHZW9Ob3RpZmllcj4gPiBjb3B5OworICAgIGNvcHlUb1ZlY3RvcihtX29uZVNob3Rz
LCBjb3B5KTsKKyAgICAKKyAgICBzdGFydFRpbWVyKGNvcHkpOworfQorCit2b2lkIEdlb2xvY2F0
aW9uOjpzdGFydFRpbWVyc0ZvcldhdGNoZXJzKCkKK3sKKyAgICBWZWN0b3I8UmVmUHRyPEdlb05v
dGlmaWVyPiA+IGNvcHk7CisgICAgY29weVZhbHVlc1RvVmVjdG9yKG1fd2F0Y2hlcnMsIGNvcHkp
OworICAgIAorICAgIHN0YXJ0VGltZXIoY29weSk7Cit9CisKK3ZvaWQgR2VvbG9jYXRpb246OnN0
YXJ0VGltZXJzKCkKK3sKKyAgICBzdGFydFRpbWVyc0Zvck9uZVNob3RzKCk7CisgICAgc3RhcnRU
aW1lcnNGb3JXYXRjaGVycygpOworfQorCiB2b2lkIEdlb2xvY2F0aW9uOjpoYW5kbGVFcnJvcihQ
b3NpdGlvbkVycm9yKiBlcnJvcikKIHsKICAgICBBU1NFUlQoZXJyb3IpOwpJbmRleDogV2ViQ29y
ZS9wYWdlL0dlb2xvY2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0dlb2xvY2F0
aW9uLmgJKHJldmlzaW9uIDQyNDI3KQorKysgV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTU0LDggKzU0LDggQEAgcHVibGljOgogICAgIAogICAgIEdlb3Bvc2l0
aW9uKiBsYXN0UG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2UtPmxhc3RQb3NpdGlv
bigpOyB9CiAKLSAgICB2b2lkIGdldEN1cnJlbnRQb3NpdGlvbihQYXNzUmVmUHRyPFBvc2l0aW9u
Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4sIFBvc2l0aW9uT3B0
aW9ucyopOwotICAgIGludCB3YXRjaFBvc2l0aW9uKFBhc3NSZWZQdHI8UG9zaXRpb25DYWxsYmFj
az4sIFBhc3NSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiwgUG9zaXRpb25PcHRpb25zKik7
CisgICAgdm9pZCBnZXRDdXJyZW50UG9zaXRpb24oUGFzc1JlZlB0cjxQb3NpdGlvbkNhbGxiYWNr
PiwgUGFzc1JlZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPFBvc2l0aW9u
T3B0aW9ucz4pOworICAgIGludCB3YXRjaFBvc2l0aW9uKFBhc3NSZWZQdHI8UG9zaXRpb25DYWxs
YmFjaz4sIFBhc3NSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiwgUGFzc1JlZlB0cjxQb3Np
dGlvbk9wdGlvbnM+KTsKICAgICB2b2lkIGNsZWFyV2F0Y2goaW50IHdhdGNoSWQpOwogCiAgICAg
dm9pZCBzdXNwZW5kKCk7CkBAIC03MiwxNiArNzIsMTggQEAgcHJpdmF0ZToKIAogICAgIGNsYXNz
IEdlb05vdGlmaWVyIDogcHVibGljIFJlZkNvdW50ZWQ8R2VvTm90aWZpZXI+IHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdlb05vdGlmaWVyPiBjcmVhdGUoUGFzc1Jl
ZlB0cjxQb3NpdGlvbkNhbGxiYWNrPiBwb3NpdGlvbkNhbGxiYWNrLCBQYXNzUmVmUHRyPFBvc2l0
aW9uRXJyb3JDYWxsYmFjaz4gcG9zaXRpb25FcnJvckNhbGxiYWNrLCBQb3NpdGlvbk9wdGlvbnMq
IG9wdGlvbnMpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBHZW9Ob3RpZmllcihwb3NpdGlvbkNhbGxi
YWNrLCBwb3NpdGlvbkVycm9yQ2FsbGJhY2ssIG9wdGlvbnMpKTsgfQorICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxHZW9Ob3RpZmllcj4gY3JlYXRlKFBhc3NSZWZQdHI8UG9zaXRpb25DYWxsYmFj
az4gcG9zaXRpb25DYWxsYmFjaywgUGFzc1JlZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+IHBv
c2l0aW9uRXJyb3JDYWxsYmFjaywgUGFzc1JlZlB0cjxQb3NpdGlvbk9wdGlvbnM+IG9wdGlvbnMp
IHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBHZW9Ob3RpZmllcihwb3NpdGlvbkNhbGxiYWNrLCBwb3Np
dGlvbkVycm9yQ2FsbGJhY2ssIG9wdGlvbnMpKTsgfQogICAgICAgICAKKyAgICAgICAgdm9pZCBz
dGFydFRpbWVyKCk7CiAgICAgICAgIHZvaWQgdGltZXJGaXJlZChUaW1lcjxHZW9Ob3RpZmllcj4q
KTsKICAgICAgICAgCiAgICAgICAgIFJlZlB0cjxQb3NpdGlvbkNhbGxiYWNrPiBtX3N1Y2Nlc3ND
YWxsYmFjazsKICAgICAgICAgUmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4gbV9lcnJvckNh
bGxiYWNrOworICAgICAgICBSZWZQdHI8UG9zaXRpb25PcHRpb25zPiBtX29wdGlvbnM7CiAgICAg
ICAgIFRpbWVyPEdlb05vdGlmaWVyPiBtX3RpbWVyOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
R2VvTm90aWZpZXIoUGFzc1JlZlB0cjxQb3NpdGlvbkNhbGxiYWNrPiwgUGFzc1JlZlB0cjxQb3Np
dGlvbkVycm9yQ2FsbGJhY2s+LCBQb3NpdGlvbk9wdGlvbnMqKTsKKyAgICAgICAgR2VvTm90aWZp
ZXIoUGFzc1JlZlB0cjxQb3NpdGlvbkNhbGxiYWNrPiwgUGFzc1JlZlB0cjxQb3NpdGlvbkVycm9y
Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPFBvc2l0aW9uT3B0aW9ucz4pOwogICAgIH07CiAKICAgICBi
b29sIGhhc0xpc3RlbmVycygpIGNvbnN0IHsgcmV0dXJuICFtX29uZVNob3RzLmlzRW1wdHkoKSB8
fCAhbV93YXRjaGVycy5pc0VtcHR5KCk7IH0KQEAgLTkxLDYgKzkzLDExIEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBzZW5kUG9zaXRpb25Ub09uZVNob3RzKEdlb3Bvc2l0aW9uKik7CiAgICAgdm9pZCBz
ZW5kUG9zaXRpb25Ub1dhdGNoZXJzKEdlb3Bvc2l0aW9uKik7CiAgICAgCisgICAgdm9pZCBzdGFy
dFRpbWVyKFZlY3RvcjxSZWZQdHI8R2VvTm90aWZpZXI+ID4mKTsKKyAgICB2b2lkIHN0YXJ0VGlt
ZXJzRm9yT25lU2hvdHMoKTsKKyAgICB2b2lkIHN0YXJ0VGltZXJzRm9yV2F0Y2hlcnMoKTsKKyAg
ICB2b2lkIHN0YXJ0VGltZXJzKCk7CisgICAgCiAgICAgdm9pZCBoYW5kbGVFcnJvcihQb3NpdGlv
bkVycm9yKik7CiAKICAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29423</attachid>
            <date>2009-04-12 13:38:23 -0700</date>
            <delta_ts>2009-04-12 16:28:26 -0700</delta_ts>
            <desc>updated patch to compile</desc>
            <filename>25149.patch.txt</filename>
            <type>text/plain</type>
            <size>9269</size>
            <attacher name="Greg Bolsinga">bolsinga</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MjQyNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMDktMDQtMTIgIEdyZWcgQm9sc2luZ2EgIDxib2xzaW5nYUBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1MTQ5CisKKyAgICAgICAg
VGhlIEdlb2xvY2F0aW9uIHRpbWVyIG5lZWRzIHRvIHN0YXJ0IGFmdGVyIHRoZSBVQSBoYXMgZ3Jh
bnRlZCBwZXJtaXNzaW9uLgorCQorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTR2VvbG9jYXRpb25D
dXN0b20uY3BwOiBVc2UgUGFzc1JlZlB0cjxQb3NpdGlvbk9wdGlvbnM+CisgICAgICAgIChXZWJD
b3JlOjpKU0dlb2xvY2F0aW9uOjpnZXRDdXJyZW50UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6SlNHZW9sb2NhdGlvbjo6d2F0Y2hQb3NpdGlvbik6CisgICAgICAgICogcGFnZS9HZW9sb2Nh
dGlvbi5jcHA6IEFkZCBhIFJlZlB0cjxQb3NpdGlvbk9wdGlvbnM+IHNvIGl0IGNhbiBiZSB1c2Vk
CisJbGF0ZXIgd2hlbiB0aGUgdGltZXIgaXMgc3RhcnRlZC4gQ2hhbmdlIFBvc2l0aW9uT3B0aW9u
cyogdG8gUGFzc1JlZlB0cjxQb3NpdGlvbk9wdGlvbnM+CisJd2hlcmUgbmVlZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6R2VvbG9jYXRpb246Okdlb05vdGlmaWVyOjpHZW9Ob3RpZmllcik6CisgICAg
ICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6R2VvTm90aWZpZXI6OnN0YXJ0VGltZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OmdldEN1cnJlbnRQb3NpdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6d2F0Y2hQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpHZW9sb2NhdGlvbjo6c2V0SXNBbGxvd2VkKTogU3RhcnQgdGhlIHRpbWVyIGlzIHRoZSBVQSBh
bGxvd3MKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpzdGFydFRpbWVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpzdGFydFRpbWVyc0Zvck9uZVNob3RzKToKKyAgICAg
ICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpzdGFydFRpbWVyc0ZvcldhdGNoZXJzKToKKyAgICAg
ICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpzdGFydFRpbWVycyk6CisgICAgICAgICogcGFnZS9H
ZW9sb2NhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246Okdlb05vdGlmaWVy
OjpjcmVhdGUpOgorCiAyMDA5LTA0LTEyICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxl
LmNvbT4KIAogICAgICAgICBBIHJlc291cmNlJ3MgZmlsZW5hbWUgaXMgbm90IGNvcnJlY3QgYWZ0
ZXIgYSByZWRpcmVjdCBpbiB0aGUgSW5zcGVjdG9yLgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdz
L2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3BwCShyZXZpc2lvbiA0MjQyNykKKysrIFdlYkNvcmUv
YmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEw
NCw3ICsxMDQsNyBAQCBKU1ZhbHVlUHRyIEpTR2VvbG9jYXRpb246OmdldEN1cnJlbnRQb3NpCiAg
ICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CiAKLSAgICBtX2ltcGwtPmdl
dEN1cnJlbnRQb3NpdGlvbihwb3NpdGlvbkNhbGxiYWNrLnJlbGVhc2UoKSwgcG9zaXRpb25FcnJv
ckNhbGxiYWNrLnJlbGVhc2UoKSwgcG9zaXRpb25PcHRpb25zLmdldCgpKTsKKyAgICBtX2ltcGwt
PmdldEN1cnJlbnRQb3NpdGlvbihwb3NpdGlvbkNhbGxiYWNrLnJlbGVhc2UoKSwgcG9zaXRpb25F
cnJvckNhbGxiYWNrLnJlbGVhc2UoKSwgcG9zaXRpb25PcHRpb25zLnJlbGVhc2UoKSk7CiAgICAg
CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CkBAIC0xNDMsNyArMTQzLDcgQEAgSlNWYWx1
ZVB0ciBKU0dlb2xvY2F0aW9uOjp3YXRjaFBvc2l0aW9uKAogICAgICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiAgICAgfQogCi0gICAgaW50IHdhdGNoSUQgPSBtX2ltcGwtPndhdGNoUG9z
aXRpb24ocG9zaXRpb25DYWxsYmFjay5yZWxlYXNlKCksIHBvc2l0aW9uRXJyb3JDYWxsYmFjay5y
ZWxlYXNlKCksIHBvc2l0aW9uT3B0aW9ucy5nZXQoKSk7CisgICAgaW50IHdhdGNoSUQgPSBtX2lt
cGwtPndhdGNoUG9zaXRpb24ocG9zaXRpb25DYWxsYmFjay5yZWxlYXNlKCksIHBvc2l0aW9uRXJy
b3JDYWxsYmFjay5yZWxlYXNlKCksIHBvc2l0aW9uT3B0aW9ucy5yZWxlYXNlKCkpOwogICAgIHJl
dHVybiBqc051bWJlcihleGVjLCB3YXRjaElEKTsKIH0KIApJbmRleDogV2ViQ29yZS9wYWdlL0dl
b2xvY2F0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uY3Bw
CShyZXZpc2lvbiA0MjQyNykKKysrIFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM0LDEzICszNCwxOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUdl
b2xvY2F0aW9uOjpHZW9Ob3RpZmllcjo6R2VvTm90aWZpZXIoUGFzc1JlZlB0cjxQb3NpdGlvbkNh
bGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNr
PiBlcnJvckNhbGxiYWNrLCBQb3NpdGlvbk9wdGlvbnMqIG9wdGlvbnMpCitHZW9sb2NhdGlvbjo6
R2VvTm90aWZpZXI6Okdlb05vdGlmaWVyKFBhc3NSZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4gc3Vj
Y2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxs
YmFjaywgUGFzc1JlZlB0cjxQb3NpdGlvbk9wdGlvbnM+IG9wdGlvbnMpCiAgICAgOiBtX3N1Y2Nl
c3NDYWxsYmFjayhzdWNjZXNzQ2FsbGJhY2spCiAgICAgLCBtX2Vycm9yQ2FsbGJhY2soZXJyb3JD
YWxsYmFjaykKKyAgICAsIG1fb3B0aW9ucyhvcHRpb25zKQogICAgICwgbV90aW1lcih0aGlzLCAm
R2VvbG9jYXRpb246Okdlb05vdGlmaWVyOjp0aW1lckZpcmVkKQogewotICAgIGlmIChtX2Vycm9y
Q2FsbGJhY2sgJiYgb3B0aW9ucykKLSAgICAgICAgbV90aW1lci5zdGFydE9uZVNob3Qob3B0aW9u
cy0+dGltZW91dCgpIC8gMTAwMC4wKTsKK30KKwordm9pZCBHZW9sb2NhdGlvbjo6R2VvTm90aWZp
ZXI6OnN0YXJ0VGltZXIoKQoreworICAgIGlmIChtX2Vycm9yQ2FsbGJhY2sgJiYgbV9vcHRpb25z
KQorICAgICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdChtX29wdGlvbnMtPnRpbWVvdXQoKSAvIDEw
MDAuMCk7CiB9CiAKIHZvaWQgR2VvbG9jYXRpb246Okdlb05vdGlmaWVyOjp0aW1lckZpcmVkKFRp
bWVyPEdlb05vdGlmaWVyPiopCkBAIC03MSwxMSArNzYsMTEgQEAgdm9pZCBHZW9sb2NhdGlvbjo6
ZGlzY29ubmVjdEZyYW1lKCkKICAgICBtX2ZyYW1lID0gMDsKIH0KIAotdm9pZCBHZW9sb2NhdGlv
bjo6Z2V0Q3VycmVudFBvc2l0aW9uKFBhc3NSZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4gc3VjY2Vz
c0NhbGxiYWNrLCBQYXNzUmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFj
aywgUG9zaXRpb25PcHRpb25zKiBvcHRpb25zKQordm9pZCBHZW9sb2NhdGlvbjo6Z2V0Q3VycmVu
dFBvc2l0aW9uKFBhc3NSZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQ
YXNzUmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaywgUGFzc1JlZlB0
cjxQb3NpdGlvbk9wdGlvbnM+IG9wdGlvbnMpCiB7CiAgICAgUmVmUHRyPEdlb05vdGlmaWVyPiBu
b3RpZmllciA9IEdlb05vdGlmaWVyOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxi
YWNrLCBvcHRpb25zKTsKIAotICAgIGlmICghbV9zZXJ2aWNlLT5zdGFydFVwZGF0aW5nKG9wdGlv
bnMpKSB7CisgICAgaWYgKCFtX3NlcnZpY2UtPnN0YXJ0VXBkYXRpbmcob3B0aW9ucy5nZXQoKSkp
IHsKICAgICAgICAgaWYgKG5vdGlmaWVyLT5tX2Vycm9yQ2FsbGJhY2spIHsKICAgICAgICAgICAg
IFJlZlB0cjxQb3NpdGlvbkVycm9yPiBlcnJvciA9IFBvc2l0aW9uRXJyb3I6OmNyZWF0ZShQb3Np
dGlvbkVycm9yOjpQRVJNSVNTSU9OX0RFTklFRCwgIlVuYWJsZSB0byBTdGFydCIpOwogICAgICAg
ICAgICAgbm90aWZpZXItPm1fZXJyb3JDYWxsYmFjay0+aGFuZGxlRXZlbnQoZXJyb3IuZ2V0KCkp
OwpAQCAtODYsMTEgKzkxLDExIEBAIHZvaWQgR2VvbG9jYXRpb246OmdldEN1cnJlbnRQb3NpdGlv
bihQYXMKICAgICBtX29uZVNob3RzLmFkZChub3RpZmllcik7CiB9CiAKLWludCBHZW9sb2NhdGlv
bjo6d2F0Y2hQb3NpdGlvbihQYXNzUmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxs
YmFjaywgUGFzc1JlZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssIFBv
c2l0aW9uT3B0aW9ucyogb3B0aW9ucykKK2ludCBHZW9sb2NhdGlvbjo6d2F0Y2hQb3NpdGlvbihQ
YXNzUmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxQ
b3NpdGlvbkVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssIFBhc3NSZWZQdHI8UG9zaXRpb25P
cHRpb25zPiBvcHRpb25zKQogewogICAgIFJlZlB0cjxHZW9Ob3RpZmllcj4gbm90aWZpZXIgPSBH
ZW9Ob3RpZmllcjo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgb3B0aW9u
cyk7CiAKLSAgICBpZiAoIW1fc2VydmljZS0+c3RhcnRVcGRhdGluZyhvcHRpb25zKSkgeworICAg
IGlmICghbV9zZXJ2aWNlLT5zdGFydFVwZGF0aW5nKG9wdGlvbnMuZ2V0KCkpKSB7CiAgICAgICAg
IGlmIChub3RpZmllci0+bV9lcnJvckNhbGxiYWNrKSB7CiAgICAgICAgICAgICBSZWZQdHI8UG9z
aXRpb25FcnJvcj4gZXJyb3IgPSBQb3NpdGlvbkVycm9yOjpjcmVhdGUoUG9zaXRpb25FcnJvcjo6
UEVSTUlTU0lPTl9ERU5JRUQsICJVbmFibGUgdG8gU3RhcnQiKTsKICAgICAgICAgICAgIG5vdGlm
aWVyLT5tX2Vycm9yQ2FsbGJhY2stPmhhbmRsZUV2ZW50KGVycm9yLmdldCgpKTsKQEAgLTEyOSw5
ICsxMzQsMTAgQEAgdm9pZCBHZW9sb2NhdGlvbjo6c2V0SXNBbGxvd2VkKGJvb2wgYWxsbwogewog
ICAgIG1fYWxsb3dHZW9sb2NhdGlvbiA9IGFsbG93ZWQgPyBZZXMgOiBObzsKICAgICAKLSAgICBp
ZiAoaXNBbGxvd2VkKCkpCisgICAgaWYgKGlzQWxsb3dlZCgpKSB7CisgICAgICAgIHN0YXJ0VGlt
ZXJzKCk7CiAgICAgICAgIGdlb2xvY2F0aW9uU2VydmljZVBvc2l0aW9uQ2hhbmdlZChtX3NlcnZp
Y2UuZ2V0KCkpOwotICAgIGVsc2UgeworICAgIH0gZWxzZSB7CiAgICAgICAgIFdURjo6UmVmUHRy
PFdlYkNvcmU6OlBvc2l0aW9uRXJyb3I+IGVycm9yID0gV2ViQ29yZTo6UG9zaXRpb25FcnJvcjo6
Y3JlYXRlKFBvc2l0aW9uRXJyb3I6OlBFUk1JU1NJT05fREVOSUVELCAiVXNlciBkaXNhbGxvd2Vk
IEdlb0xvY2F0aW9uIik7CiAgICAgICAgIGhhbmRsZUVycm9yKGVycm9yLmdldCgpKTsKICAgICB9
CkBAIC0yMDUsNiArMjExLDM3IEBAIHZvaWQgR2VvbG9jYXRpb246OnNlbmRQb3NpdGlvblRvV2F0
Y2hlcnMKICAgICB9CiB9CiAKK3ZvaWQgR2VvbG9jYXRpb246OnN0YXJ0VGltZXIoVmVjdG9yPFJl
ZlB0cjxHZW9Ob3RpZmllcj4gPiYgbm90aWZpZXJzKQoreworICAgIFZlY3RvcjxSZWZQdHI8R2Vv
Tm90aWZpZXI+ID46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG5vdGlmaWVycy5lbmQoKTsKKyAgICBm
b3IgKFZlY3RvcjxSZWZQdHI8R2VvTm90aWZpZXI+ID46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbm90
aWZpZXJzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBSZWZQdHI8R2VvTm90
aWZpZXI+IG5vdGlmaWVyID0gKml0OworICAgICAgICBub3RpZmllci0+c3RhcnRUaW1lcigpOwor
ICAgIH0KK30KKwordm9pZCBHZW9sb2NhdGlvbjo6c3RhcnRUaW1lcnNGb3JPbmVTaG90cygpCit7
CisgICAgVmVjdG9yPFJlZlB0cjxHZW9Ob3RpZmllcj4gPiBjb3B5OworICAgIGNvcHlUb1ZlY3Rv
cihtX29uZVNob3RzLCBjb3B5KTsKKyAgICAKKyAgICBzdGFydFRpbWVyKGNvcHkpOworfQorCit2
b2lkIEdlb2xvY2F0aW9uOjpzdGFydFRpbWVyc0ZvcldhdGNoZXJzKCkKK3sKKyAgICBWZWN0b3I8
UmVmUHRyPEdlb05vdGlmaWVyPiA+IGNvcHk7CisgICAgY29weVZhbHVlc1RvVmVjdG9yKG1fd2F0
Y2hlcnMsIGNvcHkpOworICAgIAorICAgIHN0YXJ0VGltZXIoY29weSk7Cit9CisKK3ZvaWQgR2Vv
bG9jYXRpb246OnN0YXJ0VGltZXJzKCkKK3sKKyAgICBzdGFydFRpbWVyc0Zvck9uZVNob3RzKCk7
CisgICAgc3RhcnRUaW1lcnNGb3JXYXRjaGVycygpOworfQorCiB2b2lkIEdlb2xvY2F0aW9uOjpo
YW5kbGVFcnJvcihQb3NpdGlvbkVycm9yKiBlcnJvcikKIHsKICAgICBBU1NFUlQoZXJyb3IpOwpJ
bmRleDogV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
YWdlL0dlb2xvY2F0aW9uLmgJKHJldmlzaW9uIDQyNDI3KQorKysgV2ViQ29yZS9wYWdlL0dlb2xv
Y2F0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC01NCw4ICs1NSw4IEBAIHB1YmxpYzoKICAgICAKICAgICBHZW9wb3NpdGlvbiogbGFz
dFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlLT5sYXN0UG9zaXRpb24oKTsgfQog
Ci0gICAgdm9pZCBnZXRDdXJyZW50UG9zaXRpb24oUGFzc1JlZlB0cjxQb3NpdGlvbkNhbGxiYWNr
PiwgUGFzc1JlZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+LCBQb3NpdGlvbk9wdGlvbnMqKTsK
LSAgICBpbnQgd2F0Y2hQb3NpdGlvbihQYXNzUmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+LCBQYXNz
UmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4sIFBvc2l0aW9uT3B0aW9ucyopOworICAgIHZv
aWQgZ2V0Q3VycmVudFBvc2l0aW9uKFBhc3NSZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4sIFBhc3NS
ZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiwgUGFzc1JlZlB0cjxQb3NpdGlvbk9wdGlvbnM+
KTsKKyAgICBpbnQgd2F0Y2hQb3NpdGlvbihQYXNzUmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+LCBQ
YXNzUmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4sIFBhc3NSZWZQdHI8UG9zaXRpb25PcHRp
b25zPik7CiAgICAgdm9pZCBjbGVhcldhdGNoKGludCB3YXRjaElkKTsKIAogICAgIHZvaWQgc3Vz
cGVuZCgpOwpAQCAtNzIsMTYgKzczLDE4IEBAIHByaXZhdGU6CiAKICAgICBjbGFzcyBHZW9Ob3Rp
ZmllciA6IHB1YmxpYyBSZWZDb3VudGVkPEdlb05vdGlmaWVyPiB7CiAgICAgcHVibGljOgotICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxHZW9Ob3RpZmllcj4gY3JlYXRlKFBhc3NSZWZQdHI8UG9z
aXRpb25DYWxsYmFjaz4gcG9zaXRpb25DYWxsYmFjaywgUGFzc1JlZlB0cjxQb3NpdGlvbkVycm9y
Q2FsbGJhY2s+IHBvc2l0aW9uRXJyb3JDYWxsYmFjaywgUG9zaXRpb25PcHRpb25zKiBvcHRpb25z
KSB7IHJldHVybiBhZG9wdFJlZihuZXcgR2VvTm90aWZpZXIocG9zaXRpb25DYWxsYmFjaywgcG9z
aXRpb25FcnJvckNhbGxiYWNrLCBvcHRpb25zKSk7IH0KKyAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8R2VvTm90aWZpZXI+IGNyZWF0ZShQYXNzUmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+IHBvc2l0
aW9uQ2FsbGJhY2ssIFBhc3NSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiBwb3NpdGlvbkVy
cm9yQ2FsbGJhY2ssIFBhc3NSZWZQdHI8UG9zaXRpb25PcHRpb25zPiBvcHRpb25zKSB7IHJldHVy
biBhZG9wdFJlZihuZXcgR2VvTm90aWZpZXIocG9zaXRpb25DYWxsYmFjaywgcG9zaXRpb25FcnJv
ckNhbGxiYWNrLCBvcHRpb25zKSk7IH0KICAgICAgICAgCisgICAgICAgIHZvaWQgc3RhcnRUaW1l
cigpOwogICAgICAgICB2b2lkIHRpbWVyRmlyZWQoVGltZXI8R2VvTm90aWZpZXI+Kik7CiAgICAg
ICAgIAogICAgICAgICBSZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4gbV9zdWNjZXNzQ2FsbGJhY2s7
CiAgICAgICAgIFJlZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+IG1fZXJyb3JDYWxsYmFjazsK
KyAgICAgICAgUmVmUHRyPFBvc2l0aW9uT3B0aW9ucz4gbV9vcHRpb25zOwogICAgICAgICBUaW1l
cjxHZW9Ob3RpZmllcj4gbV90aW1lcjsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEdlb05vdGlm
aWVyKFBhc3NSZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4sIFBhc3NSZWZQdHI8UG9zaXRpb25FcnJv
ckNhbGxiYWNrPiwgUG9zaXRpb25PcHRpb25zKik7CisgICAgICAgIEdlb05vdGlmaWVyKFBhc3NS
ZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4sIFBhc3NSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNr
PiwgUGFzc1JlZlB0cjxQb3NpdGlvbk9wdGlvbnM+KTsKICAgICB9OwogCiAgICAgYm9vbCBoYXNM
aXN0ZW5lcnMoKSBjb25zdCB7IHJldHVybiAhbV9vbmVTaG90cy5pc0VtcHR5KCkgfHwgIW1fd2F0
Y2hlcnMuaXNFbXB0eSgpOyB9CkBAIC05MSw2ICs5NCwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQg
c2VuZFBvc2l0aW9uVG9PbmVTaG90cyhHZW9wb3NpdGlvbiopOwogICAgIHZvaWQgc2VuZFBvc2l0
aW9uVG9XYXRjaGVycyhHZW9wb3NpdGlvbiopOwogICAgIAorICAgIHZvaWQgc3RhcnRUaW1lcihW
ZWN0b3I8UmVmUHRyPEdlb05vdGlmaWVyPiA+Jik7CisgICAgdm9pZCBzdGFydFRpbWVyc0Zvck9u
ZVNob3RzKCk7CisgICAgdm9pZCBzdGFydFRpbWVyc0ZvcldhdGNoZXJzKCk7CisgICAgdm9pZCBz
dGFydFRpbWVycygpOworICAgIAogICAgIHZvaWQgaGFuZGxlRXJyb3IoUG9zaXRpb25FcnJvciop
OwogCiAgICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbigpOwo=
</data>
<flag name="review"
          id="14641"
          type_id="1"
          status="-"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29425</attachid>
            <date>2009-04-12 16:28:26 -0700</date>
            <delta_ts>2009-04-13 10:28:38 -0700</delta_ts>
            <desc>Addresses Sam&apos;s review comments.</desc>
            <filename>25149.patch.txt</filename>
            <type>text/plain</type>
            <size>9314</size>
            <attacher name="Greg Bolsinga">bolsinga</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MjQyNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMDktMDQtMTIgIEdyZWcgQm9sc2luZ2EgIDxib2xzaW5nYUBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1MTQ5CisKKyAgICAgICAg
VGhlIEdlb2xvY2F0aW9uIHRpbWVyIG5lZWRzIHRvIHN0YXJ0IGFmdGVyIHRoZSBVQSBoYXMgZ3Jh
bnRlZCBwZXJtaXNzaW9uLgorCQorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTR2VvbG9jYXRpb25D
dXN0b20uY3BwOiBVc2UgUGFzc1JlZlB0cjxQb3NpdGlvbk9wdGlvbnM+CisgICAgICAgIChXZWJD
b3JlOjpKU0dlb2xvY2F0aW9uOjpnZXRDdXJyZW50UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6SlNHZW9sb2NhdGlvbjo6d2F0Y2hQb3NpdGlvbik6CisgICAgICAgICogcGFnZS9HZW9sb2Nh
dGlvbi5jcHA6IEFkZCBhIFJlZlB0cjxQb3NpdGlvbk9wdGlvbnM+IHNvIGl0IGNhbiBiZSB1c2Vk
CisgICAgICAgIGxhdGVyIHdoZW4gdGhlIHRpbWVyIGlzIHN0YXJ0ZWQuIENoYW5nZSBQb3NpdGlv
bk9wdGlvbnMqIHRvIFBhc3NSZWZQdHI8UG9zaXRpb25PcHRpb25zPgorICAgICAgICB3aGVyZSBu
ZWVkZWQuCisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6R2VvTm90aWZpZXI6Okdlb05v
dGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpHZW9Ob3RpZmllcjo6c3Rh
cnRUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6Z2V0Q3VycmVudFBvc2l0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjp3YXRjaFBvc2l0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpzZXRJc0FsbG93ZWQpOiBTdGFydCB0aGUgdGlt
ZXIgaXMgdGhlIFVBIGFsbG93cworICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OnN0YXJ0
VGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OnN0YXJ0VGltZXJzRm9yT25l
U2hvdHMpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OnN0YXJ0VGltZXJzRm9yV2F0
Y2hlcnMpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OnN0YXJ0VGltZXJzKToKKyAg
ICAgICAgKiBwYWdlL0dlb2xvY2F0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlv
bjo6R2VvTm90aWZpZXI6OmNyZWF0ZSk6CisKIDIwMDktMDQtMTIgIFRpbW90aHkgSGF0Y2hlciAg
PHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAgICAgIEEgcmVzb3VyY2UncyBmaWxlbmFtZSBpcyBu
b3QgY29ycmVjdCBhZnRlciBhIHJlZGlyZWN0IGluIHRoZSBJbnNwZWN0b3IuCkluZGV4OiBXZWJD
b3JlL2JpbmRpbmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDQyNDI3
KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw3IEBAIEpTVmFsdWVQdHIgSlNHZW9sb2NhdGlvbjo6Z2V0
Q3VycmVudFBvc2kKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KIAot
ICAgIG1faW1wbC0+Z2V0Q3VycmVudFBvc2l0aW9uKHBvc2l0aW9uQ2FsbGJhY2sucmVsZWFzZSgp
LCBwb3NpdGlvbkVycm9yQ2FsbGJhY2sucmVsZWFzZSgpLCBwb3NpdGlvbk9wdGlvbnMuZ2V0KCkp
OworICAgIG1faW1wbC0+Z2V0Q3VycmVudFBvc2l0aW9uKHBvc2l0aW9uQ2FsbGJhY2sucmVsZWFz
ZSgpLCBwb3NpdGlvbkVycm9yQ2FsbGJhY2sucmVsZWFzZSgpLCBwb3NpdGlvbk9wdGlvbnMucmVs
ZWFzZSgpKTsKICAgICAKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KQEAgLTE0Myw3ICsx
NDMsNyBAQCBKU1ZhbHVlUHRyIEpTR2VvbG9jYXRpb246OndhdGNoUG9zaXRpb24oCiAgICAgICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CiAKLSAgICBpbnQgd2F0Y2hJRCA9IG1f
aW1wbC0+d2F0Y2hQb3NpdGlvbihwb3NpdGlvbkNhbGxiYWNrLnJlbGVhc2UoKSwgcG9zaXRpb25F
cnJvckNhbGxiYWNrLnJlbGVhc2UoKSwgcG9zaXRpb25PcHRpb25zLmdldCgpKTsKKyAgICBpbnQg
d2F0Y2hJRCA9IG1faW1wbC0+d2F0Y2hQb3NpdGlvbihwb3NpdGlvbkNhbGxiYWNrLnJlbGVhc2Uo
KSwgcG9zaXRpb25FcnJvckNhbGxiYWNrLnJlbGVhc2UoKSwgcG9zaXRpb25PcHRpb25zLnJlbGVh
c2UoKSk7CiAgICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMsIHdhdGNoSUQpOwogfQogCkluZGV4OiBX
ZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9H
ZW9sb2NhdGlvbi5jcHAJKHJldmlzaW9uIDQyNDI3KQorKysgV2ViQ29yZS9wYWdlL0dlb2xvY2F0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTMgKzM0LDE4IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotR2VvbG9jYXRpb246Okdlb05vdGlmaWVyOjpHZW9Ob3RpZmllcihQYXNzUmVm
UHRyPFBvc2l0aW9uQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxQb3NpdGlv
bkVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssIFBvc2l0aW9uT3B0aW9ucyogb3B0aW9ucykK
K0dlb2xvY2F0aW9uOjpHZW9Ob3RpZmllcjo6R2VvTm90aWZpZXIoUGFzc1JlZlB0cjxQb3NpdGlv
bkNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxi
YWNrPiBlcnJvckNhbGxiYWNrLCBQYXNzUmVmUHRyPFBvc2l0aW9uT3B0aW9ucz4gb3B0aW9ucykK
ICAgICA6IG1fc3VjY2Vzc0NhbGxiYWNrKHN1Y2Nlc3NDYWxsYmFjaykKICAgICAsIG1fZXJyb3JD
YWxsYmFjayhlcnJvckNhbGxiYWNrKQorICAgICwgbV9vcHRpb25zKG9wdGlvbnMpCiAgICAgLCBt
X3RpbWVyKHRoaXMsICZHZW9sb2NhdGlvbjo6R2VvTm90aWZpZXI6OnRpbWVyRmlyZWQpCiB7Ci0g
ICAgaWYgKG1fZXJyb3JDYWxsYmFjayAmJiBvcHRpb25zKQotICAgICAgICBtX3RpbWVyLnN0YXJ0
T25lU2hvdChvcHRpb25zLT50aW1lb3V0KCkgLyAxMDAwLjApOworfQorCit2b2lkIEdlb2xvY2F0
aW9uOjpHZW9Ob3RpZmllcjo6c3RhcnRUaW1lcigpCit7CisgICAgaWYgKG1fZXJyb3JDYWxsYmFj
ayAmJiBtX29wdGlvbnMpCisgICAgICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KG1fb3B0aW9ucy0+
dGltZW91dCgpIC8gMTAwMC4wKTsKIH0KIAogdm9pZCBHZW9sb2NhdGlvbjo6R2VvTm90aWZpZXI6
OnRpbWVyRmlyZWQoVGltZXI8R2VvTm90aWZpZXI+KikKQEAgLTcxLDExICs3NiwxMSBAQCB2b2lk
IEdlb2xvY2F0aW9uOjpkaXNjb25uZWN0RnJhbWUoKQogICAgIG1fZnJhbWUgPSAwOwogfQogCi12
b2lkIEdlb2xvY2F0aW9uOjpnZXRDdXJyZW50UG9zaXRpb24oUGFzc1JlZlB0cjxQb3NpdGlvbkNh
bGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNr
PiBlcnJvckNhbGxiYWNrLCBQb3NpdGlvbk9wdGlvbnMqIG9wdGlvbnMpCit2b2lkIEdlb2xvY2F0
aW9uOjpnZXRDdXJyZW50UG9zaXRpb24oUGFzc1JlZlB0cjxQb3NpdGlvbkNhbGxiYWNrPiBzdWNj
ZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiBlcnJvckNhbGxi
YWNrLCBQYXNzUmVmUHRyPFBvc2l0aW9uT3B0aW9ucz4gb3B0aW9ucykKIHsKICAgICBSZWZQdHI8
R2VvTm90aWZpZXI+IG5vdGlmaWVyID0gR2VvTm90aWZpZXI6OmNyZWF0ZShzdWNjZXNzQ2FsbGJh
Y2ssIGVycm9yQ2FsbGJhY2ssIG9wdGlvbnMpOwogCi0gICAgaWYgKCFtX3NlcnZpY2UtPnN0YXJ0
VXBkYXRpbmcob3B0aW9ucykpIHsKKyAgICBpZiAoIW1fc2VydmljZS0+c3RhcnRVcGRhdGluZyhu
b3RpZmllci0+bV9vcHRpb25zLmdldCgpKSkgewogICAgICAgICBpZiAobm90aWZpZXItPm1fZXJy
b3JDYWxsYmFjaykgewogICAgICAgICAgICAgUmVmUHRyPFBvc2l0aW9uRXJyb3I+IGVycm9yID0g
UG9zaXRpb25FcnJvcjo6Y3JlYXRlKFBvc2l0aW9uRXJyb3I6OlBFUk1JU1NJT05fREVOSUVELCAi
VW5hYmxlIHRvIFN0YXJ0Iik7CiAgICAgICAgICAgICBub3RpZmllci0+bV9lcnJvckNhbGxiYWNr
LT5oYW5kbGVFdmVudChlcnJvci5nZXQoKSk7CkBAIC04NiwxMSArOTEsMTEgQEAgdm9pZCBHZW9s
b2NhdGlvbjo6Z2V0Q3VycmVudFBvc2l0aW9uKFBhcwogICAgIG1fb25lU2hvdHMuYWRkKG5vdGlm
aWVyKTsKIH0KIAotaW50IEdlb2xvY2F0aW9uOjp3YXRjaFBvc2l0aW9uKFBhc3NSZWZQdHI8UG9z
aXRpb25DYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPFBvc2l0aW9uRXJyb3JD
YWxsYmFjaz4gZXJyb3JDYWxsYmFjaywgUG9zaXRpb25PcHRpb25zKiBvcHRpb25zKQoraW50IEdl
b2xvY2F0aW9uOjp3YXRjaFBvc2l0aW9uKFBhc3NSZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4gc3Vj
Y2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxs
YmFjaywgUGFzc1JlZlB0cjxQb3NpdGlvbk9wdGlvbnM+IG9wdGlvbnMpCiB7CiAgICAgUmVmUHRy
PEdlb05vdGlmaWVyPiBub3RpZmllciA9IEdlb05vdGlmaWVyOjpjcmVhdGUoc3VjY2Vzc0NhbGxi
YWNrLCBlcnJvckNhbGxiYWNrLCBvcHRpb25zKTsKIAotICAgIGlmICghbV9zZXJ2aWNlLT5zdGFy
dFVwZGF0aW5nKG9wdGlvbnMpKSB7CisgICAgaWYgKCFtX3NlcnZpY2UtPnN0YXJ0VXBkYXRpbmco
bm90aWZpZXItPm1fb3B0aW9ucy5nZXQoKSkpIHsKICAgICAgICAgaWYgKG5vdGlmaWVyLT5tX2Vy
cm9yQ2FsbGJhY2spIHsKICAgICAgICAgICAgIFJlZlB0cjxQb3NpdGlvbkVycm9yPiBlcnJvciA9
IFBvc2l0aW9uRXJyb3I6OmNyZWF0ZShQb3NpdGlvbkVycm9yOjpQRVJNSVNTSU9OX0RFTklFRCwg
IlVuYWJsZSB0byBTdGFydCIpOwogICAgICAgICAgICAgbm90aWZpZXItPm1fZXJyb3JDYWxsYmFj
ay0+aGFuZGxlRXZlbnQoZXJyb3IuZ2V0KCkpOwpAQCAtMTI5LDkgKzEzNCwxMCBAQCB2b2lkIEdl
b2xvY2F0aW9uOjpzZXRJc0FsbG93ZWQoYm9vbCBhbGxvCiB7CiAgICAgbV9hbGxvd0dlb2xvY2F0
aW9uID0gYWxsb3dlZCA/IFllcyA6IE5vOwogICAgIAotICAgIGlmIChpc0FsbG93ZWQoKSkKKyAg
ICBpZiAoaXNBbGxvd2VkKCkpIHsKKyAgICAgICAgc3RhcnRUaW1lcnMoKTsKICAgICAgICAgZ2Vv
bG9jYXRpb25TZXJ2aWNlUG9zaXRpb25DaGFuZ2VkKG1fc2VydmljZS5nZXQoKSk7Ci0gICAgZWxz
ZSB7CisgICAgfSBlbHNlIHsKICAgICAgICAgV1RGOjpSZWZQdHI8V2ViQ29yZTo6UG9zaXRpb25F
cnJvcj4gZXJyb3IgPSBXZWJDb3JlOjpQb3NpdGlvbkVycm9yOjpjcmVhdGUoUG9zaXRpb25FcnJv
cjo6UEVSTUlTU0lPTl9ERU5JRUQsICJVc2VyIGRpc2FsbG93ZWQgR2VvTG9jYXRpb24iKTsKICAg
ICAgICAgaGFuZGxlRXJyb3IoZXJyb3IuZ2V0KCkpOwogICAgIH0KQEAgLTIwNSw2ICsyMTEsMzcg
QEAgdm9pZCBHZW9sb2NhdGlvbjo6c2VuZFBvc2l0aW9uVG9XYXRjaGVycwogICAgIH0KIH0KIAor
dm9pZCBHZW9sb2NhdGlvbjo6c3RhcnRUaW1lcihWZWN0b3I8UmVmUHRyPEdlb05vdGlmaWVyPiA+
JiBub3RpZmllcnMpCit7CisgICAgVmVjdG9yPFJlZlB0cjxHZW9Ob3RpZmllcj4gPjo6Y29uc3Rf
aXRlcmF0b3IgZW5kID0gbm90aWZpZXJzLmVuZCgpOworICAgIGZvciAoVmVjdG9yPFJlZlB0cjxH
ZW9Ob3RpZmllcj4gPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBub3RpZmllcnMuYmVnaW4oKTsgaXQg
IT0gZW5kOyArK2l0KSB7CisgICAgICAgIFJlZlB0cjxHZW9Ob3RpZmllcj4gbm90aWZpZXIgPSAq
aXQ7CisgICAgICAgIG5vdGlmaWVyLT5zdGFydFRpbWVyKCk7CisgICAgfQorfQorCit2b2lkIEdl
b2xvY2F0aW9uOjpzdGFydFRpbWVyc0Zvck9uZVNob3RzKCkKK3sKKyAgICBWZWN0b3I8UmVmUHRy
PEdlb05vdGlmaWVyPiA+IGNvcHk7CisgICAgY29weVRvVmVjdG9yKG1fb25lU2hvdHMsIGNvcHkp
OworICAgIAorICAgIHN0YXJ0VGltZXIoY29weSk7Cit9CisKK3ZvaWQgR2VvbG9jYXRpb246OnN0
YXJ0VGltZXJzRm9yV2F0Y2hlcnMoKQoreworICAgIFZlY3RvcjxSZWZQdHI8R2VvTm90aWZpZXI+
ID4gY29weTsKKyAgICBjb3B5VmFsdWVzVG9WZWN0b3IobV93YXRjaGVycywgY29weSk7CisgICAg
CisgICAgc3RhcnRUaW1lcihjb3B5KTsKK30KKwordm9pZCBHZW9sb2NhdGlvbjo6c3RhcnRUaW1l
cnMoKQoreworICAgIHN0YXJ0VGltZXJzRm9yT25lU2hvdHMoKTsKKyAgICBzdGFydFRpbWVyc0Zv
cldhdGNoZXJzKCk7Cit9CisKIHZvaWQgR2VvbG9jYXRpb246OmhhbmRsZUVycm9yKFBvc2l0aW9u
RXJyb3IqIGVycm9yKQogewogICAgIEFTU0VSVChlcnJvcik7CkluZGV4OiBXZWJDb3JlL3BhZ2Uv
R2VvbG9jYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uaAko
cmV2aXNpb24gNDI0MjcpCisrKyBXZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uaAkod29ya2luZyBj
b3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU0LDggKzU1LDgg
QEAgcHVibGljOgogICAgIAogICAgIEdlb3Bvc2l0aW9uKiBsYXN0UG9zaXRpb24oKSBjb25zdCB7
IHJldHVybiBtX3NlcnZpY2UtPmxhc3RQb3NpdGlvbigpOyB9CiAKLSAgICB2b2lkIGdldEN1cnJl
bnRQb3NpdGlvbihQYXNzUmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPFBvc2l0
aW9uRXJyb3JDYWxsYmFjaz4sIFBvc2l0aW9uT3B0aW9ucyopOwotICAgIGludCB3YXRjaFBvc2l0
aW9uKFBhc3NSZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4sIFBhc3NSZWZQdHI8UG9zaXRpb25FcnJv
ckNhbGxiYWNrPiwgUG9zaXRpb25PcHRpb25zKik7CisgICAgdm9pZCBnZXRDdXJyZW50UG9zaXRp
b24oUGFzc1JlZlB0cjxQb3NpdGlvbkNhbGxiYWNrPiwgUGFzc1JlZlB0cjxQb3NpdGlvbkVycm9y
Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPFBvc2l0aW9uT3B0aW9ucz4pOworICAgIGludCB3YXRjaFBv
c2l0aW9uKFBhc3NSZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4sIFBhc3NSZWZQdHI8UG9zaXRpb25F
cnJvckNhbGxiYWNrPiwgUGFzc1JlZlB0cjxQb3NpdGlvbk9wdGlvbnM+KTsKICAgICB2b2lkIGNs
ZWFyV2F0Y2goaW50IHdhdGNoSWQpOwogCiAgICAgdm9pZCBzdXNwZW5kKCk7CkBAIC03MiwxNiAr
NzMsMTggQEAgcHJpdmF0ZToKIAogICAgIGNsYXNzIEdlb05vdGlmaWVyIDogcHVibGljIFJlZkNv
dW50ZWQ8R2VvTm90aWZpZXI+IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEdlb05vdGlmaWVyPiBjcmVhdGUoUGFzc1JlZlB0cjxQb3NpdGlvbkNhbGxiYWNrPiBwb3Np
dGlvbkNhbGxiYWNrLCBQYXNzUmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4gcG9zaXRpb25F
cnJvckNhbGxiYWNrLCBQb3NpdGlvbk9wdGlvbnMqIG9wdGlvbnMpIHsgcmV0dXJuIGFkb3B0UmVm
KG5ldyBHZW9Ob3RpZmllcihwb3NpdGlvbkNhbGxiYWNrLCBwb3NpdGlvbkVycm9yQ2FsbGJhY2ss
IG9wdGlvbnMpKTsgfQorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxHZW9Ob3RpZmllcj4gY3Jl
YXRlKFBhc3NSZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4gcG9zaXRpb25DYWxsYmFjaywgUGFzc1Jl
ZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+IHBvc2l0aW9uRXJyb3JDYWxsYmFjaywgUGFzc1Jl
ZlB0cjxQb3NpdGlvbk9wdGlvbnM+IG9wdGlvbnMpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBHZW9O
b3RpZmllcihwb3NpdGlvbkNhbGxiYWNrLCBwb3NpdGlvbkVycm9yQ2FsbGJhY2ssIG9wdGlvbnMp
KTsgfQogICAgICAgICAKKyAgICAgICAgdm9pZCBzdGFydFRpbWVyKCk7CiAgICAgICAgIHZvaWQg
dGltZXJGaXJlZChUaW1lcjxHZW9Ob3RpZmllcj4qKTsKICAgICAgICAgCiAgICAgICAgIFJlZlB0
cjxQb3NpdGlvbkNhbGxiYWNrPiBtX3N1Y2Nlc3NDYWxsYmFjazsKICAgICAgICAgUmVmUHRyPFBv
c2l0aW9uRXJyb3JDYWxsYmFjaz4gbV9lcnJvckNhbGxiYWNrOworICAgICAgICBSZWZQdHI8UG9z
aXRpb25PcHRpb25zPiBtX29wdGlvbnM7CiAgICAgICAgIFRpbWVyPEdlb05vdGlmaWVyPiBtX3Rp
bWVyOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgR2VvTm90aWZpZXIoUGFzc1JlZlB0cjxQb3Np
dGlvbkNhbGxiYWNrPiwgUGFzc1JlZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+LCBQb3NpdGlv
bk9wdGlvbnMqKTsKKyAgICAgICAgR2VvTm90aWZpZXIoUGFzc1JlZlB0cjxQb3NpdGlvbkNhbGxi
YWNrPiwgUGFzc1JlZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPFBvc2l0
aW9uT3B0aW9ucz4pOwogICAgIH07CiAKICAgICBib29sIGhhc0xpc3RlbmVycygpIGNvbnN0IHsg
cmV0dXJuICFtX29uZVNob3RzLmlzRW1wdHkoKSB8fCAhbV93YXRjaGVycy5pc0VtcHR5KCk7IH0K
QEAgLTkxLDYgKzk0LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZW5kUG9zaXRpb25Ub09uZVNo
b3RzKEdlb3Bvc2l0aW9uKik7CiAgICAgdm9pZCBzZW5kUG9zaXRpb25Ub1dhdGNoZXJzKEdlb3Bv
c2l0aW9uKik7CiAgICAgCisgICAgc3RhdGljIHZvaWQgc3RhcnRUaW1lcihWZWN0b3I8UmVmUHRy
PEdlb05vdGlmaWVyPiA+Jik7CisgICAgdm9pZCBzdGFydFRpbWVyc0Zvck9uZVNob3RzKCk7Cisg
ICAgdm9pZCBzdGFydFRpbWVyc0ZvcldhdGNoZXJzKCk7CisgICAgdm9pZCBzdGFydFRpbWVycygp
OworICAgIAogICAgIHZvaWQgaGFuZGxlRXJyb3IoUG9zaXRpb25FcnJvciopOwogCiAgICAgdm9p
ZCByZXF1ZXN0UGVybWlzc2lvbigpOwo=
</data>
<flag name="review"
          id="14643"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>