<?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>103540</bug_id>
          
          <creation_ts>2012-11-28 10:42:58 -0800</creation_ts>
          <short_desc>Use GeolocationController&apos;s last geoposition as cached position.</short_desc>
          <delta_ts>2012-12-03 04:05:30 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="John Knottenbelt">jknotten</reporter>
          <assigned_to name="John Knottenbelt">jknotten</assigned_to>
          <cc>benjamin</cc>
    
    <cc>jbadics</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>778052</commentid>
    <comment_count>0</comment_count>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2012-11-28 10:42:58 -0800</bug_when>
    <thetext>Use GeolocationController&apos;s last geoposition as cached position.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778059</commentid>
    <comment_count>1</comment_count>
      <attachid>176520</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2012-11-28 10:47:58 -0800</bug_when>
    <thetext>Created attachment 176520
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778064</commentid>
    <comment_count>2</comment_count>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2012-11-28 10:50:13 -0800</bug_when>
    <thetext>The page&apos;s GeolocationController mediates access to the GeolocationClient for multiple frames&apos; Geolocation instances.  This patch changes the position cache to be on the GeolocationController rather than on the Geolocation instance.

This fixes a bug where if one frame has added a watch and has received a position, then a request for a cached position from a second frame does not succeed because the Geolocation instance in the second frame&apos;s position cache hasn&apos;t received the position update that went to the first frame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778208</commentid>
    <comment_count>3</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-11-28 12:39:35 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; The page&apos;s GeolocationController mediates access to the GeolocationClient for multiple frames&apos; Geolocation instances.  This patch changes the position cache to be on the GeolocationController rather than on the Geolocation instance.

Yes, you are right.

The cached position could be even higher in the stack actually. Moving it towards GeolocationController sounds like a step in the right direction.

&gt; This fixes a bug where if one frame has added a watch and has received a position, then a request for a cached position from a second frame does not succeed because the Geolocation instance in the second frame&apos;s position cache hasn&apos;t received the position update that went to the first frame.

Note that this does not necessarily have to be true. If I remember correctly, the spec does not mandate the scope of the cache. What you describe seems like a desirable behavior though.

I&apos;ll review your patch later, I need to finish something.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778290</commentid>
    <comment_count>4</comment_count>
      <attachid>176520</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-11-28 13:43:53 -0800</bug_when>
    <thetext>Comment on attachment 176520
Patch

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

The patch looks good, the test seems well designed for what we want to cover.

One extra concern is privacy with the &quot;leaking&quot; of information through the page.

For example, by having a frame with Google Maps, you can find if the user has authorized Google Maps to access location.
I think this is not blocking because finding the same information through timing attacks is just as easy. Moreover, that is a pretty poor leak if the authorization client is implemented properly.

&gt; Source/WebCore/ChangeLog:9
&gt; +        GeolocationClient for multiple frames&apos; Geolocation instances.  This

Two space after the period.

&gt; LayoutTests/fast/dom/Geolocation/resources/cached-position-while-watching-inner.html:6
&gt; +            &apos;success&apos;:  true,

Double space after the colon.

&gt; LayoutTests/fast/dom/Geolocation/resources/cached-position-while-watching-inner.html:8
&gt; +            &apos;message&apos;: &apos;Received cached position lat: &apos; + position.coords.latitude + &apos;, long: &apos; +
&gt; +                       position.coords.longitude

Coding style: position.coords.longitude should be on the same line, or the &quot;+&quot; should be on the second line.

&gt; LayoutTests/fast/dom/Geolocation/script-tests/cached-position-while-watching.js:2
&gt; +description(&apos;Tests that a cached position can be obtained in one frame after another frame has created a geolocation watch.&apos;);
&gt; +

Maybe inline &quot;cached-position-while-watching.js&quot; in &quot;cached-position-while-watching.html&quot;? It is just my personal preference, your call.

&gt; LayoutTests/fast/dom/Geolocation/script-tests/cached-position-while-watching.js:17
&gt; +navigator.geolocation.watchPosition(
&gt; +    function() {

You could use getCurrentPosition(). That would avoid isFirstPosition and make the timing more interesting for the test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779028</commentid>
    <comment_count>5</comment_count>
      <attachid>176520</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2012-11-29 08:37:01 -0800</bug_when>
    <thetext>Comment on attachment 176520
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:9
&gt;&gt; +        GeolocationClient for multiple frames&apos; Geolocation instances.  This
&gt; 
&gt; Two space after the period.

Done.

&gt;&gt; LayoutTests/fast/dom/Geolocation/resources/cached-position-while-watching-inner.html:6
&gt;&gt; +            &apos;success&apos;:  true,
&gt; 
&gt; Double space after the colon.

Done.

&gt;&gt; LayoutTests/fast/dom/Geolocation/resources/cached-position-while-watching-inner.html:8
&gt;&gt; +                       position.coords.longitude
&gt; 
&gt; Coding style: position.coords.longitude should be on the same line, or the &quot;+&quot; should be on the second line.

Thanks, I put it all on one line.

&gt;&gt; LayoutTests/fast/dom/Geolocation/script-tests/cached-position-while-watching.js:2
&gt;&gt; +
&gt; 
&gt; Maybe inline &quot;cached-position-while-watching.js&quot; in &quot;cached-position-while-watching.html&quot;? It is just my personal preference, your call.

I had done that originally, but I changed it to use a separate js for consistency with the other tests in fast/dom/Geolocation which also use the test framework (../resources/js-test-pre.js, ../resources/js-test-post.js). I prefer to keep it as is, if it&apos;s ok with you.

&gt;&gt; LayoutTests/fast/dom/Geolocation/script-tests/cached-position-while-watching.js:17
&gt;&gt; +    function() {
&gt; 
&gt; You could use getCurrentPosition(). That would avoid isFirstPosition and make the timing more interesting for the test.

You&apos;re right, the watch is unnecessary. I&apos;ll change it to use getCurrentPosition.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779030</commentid>
    <comment_count>6</comment_count>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2012-11-29 08:37:37 -0800</bug_when>
    <thetext>Thanks for reviewing, Benjamin! I&apos;ll upload an improved version shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779047</commentid>
    <comment_count>7</comment_count>
      <attachid>176744</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2012-11-29 08:53:17 -0800</bug_when>
    <thetext>Created attachment 176744
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779419</commentid>
    <comment_count>8</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-11-29 14:02:17 -0800</bug_when>
    <thetext>&gt; &gt; Maybe inline &quot;cached-position-while-watching.js&quot; in &quot;cached-position-while-watching.html&quot;? It is just my personal preference, your call.
&gt; 
&gt; I had done that originally, but I changed it to use a separate js for consistency with the other tests in fast/dom/Geolocation which also use the test framework (../resources/js-test-pre.js, ../resources/js-test-post.js). I prefer to keep it as is, if it&apos;s ok with you.

There used to be a policy regarding that, which is why most tests in Geolocation use that style.
As far as I know, nobody enforce that anymore. Some recent Geolocation tests have the JavaScript in the html file.

In the end, I think both style of tests are useful since both are used on the Web.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779431</commentid>
    <comment_count>9</comment_count>
      <attachid>176744</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-29 14:19:23 -0800</bug_when>
    <thetext>Comment on attachment 176744
Patch

Clearing flags on attachment: 176744

Committed r136164: &lt;http://trac.webkit.org/changeset/136164&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779433</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-29 14:19:26 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781324</commentid>
    <comment_count>11</comment_count>
    <who name="János Badics">jbadics</who>
    <bug_when>2012-12-03 04:05:30 -0800</bug_when>
    <thetext>After r136164, fast/dom/Geolocation/cached-position-iframe.html fails with timeout on Qt-WK2. Detailed information can be found at bug 103876:

I will skip this test until the proper fix.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176520</attachid>
            <date>2012-11-28 10:47:58 -0800</date>
            <delta_ts>2012-11-29 08:53:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103540-20121128184532.patch</filename>
            <type>text/plain</type>
            <size>9436</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1ODYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWI3NGQzOTZhNzBkNjU4
NTc1YWIxNjEyNzEzNTJkMDUzMjFlOGJjNS4uN2YxMjQ2YmMzNTEzZDI0ZjYwYTQ1YTUyM2YxNmFh
NjU2OGY0OTVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTExLTI4ICBKb2hu
IEtub3R0ZW5iZWx0ICA8amtub3R0ZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFVzZSBHZW9s
b2NhdGlvbkNvbnRyb2xsZXIncyBsYXN0IGdlb3Bvc2l0aW9uIGFzIGNhY2hlZCBwb3NpdGlvbi4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzU0MAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBwYWdl
J3MgR2VvbG9jYXRpb25Db250cm9sbGVyIG1lZGlhdGVzIGFjY2VzcyB0byB0aGUKKyAgICAgICAg
R2VvbG9jYXRpb25DbGllbnQgZm9yIG11bHRpcGxlIGZyYW1lcycgR2VvbG9jYXRpb24gaW5zdGFu
Y2VzLiAgVGhpcworICAgICAgICBwYXRjaCBjaGFuZ2VzIHRoZSBwb3NpdGlvbiBjYWNoZSB0byBi
ZSBvbiB0aGUgR2VvbG9jYXRpb25Db250cm9sbGVyCisgICAgICAgIHJhdGhlciB0aGFuIG9uIHRo
ZSBHZW9sb2NhdGlvbiBpbnN0YW5jZS4KKworICAgICAgICBUaGlzIGZpeGVzIGEgYnVnIHdoZXJl
IGlmIG9uZSBmcmFtZSBoYXMgYWRkZWQgYSB3YXRjaCBhbmQgaGFzIHJlY2VpdmVkCisgICAgICAg
IGEgcG9zaXRpb24sIHRoZW4gYSByZXF1ZXN0IGZvciBhIGNhY2hlZCBwb3NpdGlvbiBmcm9tIGEg
c2Vjb25kIGZyYW1lCisgICAgICAgIGRvZXMgbm90IHN1Y2NlZWQgYmVjYXVzZSB0aGUgR2VvbG9j
YXRpb24gaW5zdGFuY2UgaW4gdGhlIHNlY29uZCBmcmFtZSdzCisgICAgICAgIHBvc2l0aW9uIGNh
Y2hlIGhhc24ndCByZWNlaXZlZCB0aGUgcG9zaXRpb24gdXBkYXRlIHRoYXQgd2VudCB0byB0aGUK
KyAgICAgICAgZmlyc3QgZnJhbWUuCisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vR2VvbG9jYXRp
b24vY2FjaGVkLXBvc2l0aW9uLXdoaWxlLXdhdGNoaW5nLmh0bWwKKworICAgICAgICAqIE1vZHVs
ZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9j
YXRpb246Om1ha2VDYWNoZWRQb3NpdGlvbkNhbGxiYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpH
ZW9sb2NhdGlvbjo6aGF2ZVN1aXRhYmxlQ2FjaGVkUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6R2VvbG9jYXRpb246OnBvc2l0aW9uQ2hhbmdlZCk6CisgICAgICAgICogTW9kdWxlcy9nZW9s
b2NhdGlvbi9HZW9sb2NhdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2Vv
bG9jYXRpb25Db250cm9sbGVyLmg6CisgICAgICAgIChHZW9sb2NhdGlvbkNvbnRyb2xsZXIpOgor
CiAyMDEyLTExLTI3ICBBbGVjIEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBJbmRleGVkREI6IHN0dWIgb3V0IElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6Y3Jl
YXRlVHJhbnNhY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9j
YXRpb24vR2VvbG9jYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlv
bi9HZW9sb2NhdGlvbi5jcHAKaW5kZXggNTE5YTFlNDVhOTQ0NTUzOGU5OTdmYmJkOTg4Y2IxOTI4
NTI3ZDZkYi4uOThiMTBkMDM4YzVhMTdmYTQ0Yjc0MzljMGI3NWViYjk4NmFhMzMyMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAK
QEAgLTM3Myw3ICszNzMsNyBAQCB2b2lkIEdlb2xvY2F0aW9uOjptYWtlQ2FjaGVkUG9zaXRpb25D
YWxsYmFja3MoKQogICAgIEdlb05vdGlmaWVyU2V0Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3Jl
cXVlc3RzQXdhaXRpbmdDYWNoZWRQb3NpdGlvbi5lbmQoKTsKICAgICBmb3IgKEdlb05vdGlmaWVy
U2V0Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gbV9yZXF1ZXN0c0F3YWl0aW5nQ2FjaGVkUG9zaXRp
b24uYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewogICAgICAgICBHZW9Ob3RpZmllciog
bm90aWZpZXIgPSBpdGVyLT5nZXQoKTsKLSAgICAgICAgbm90aWZpZXItPnJ1blN1Y2Nlc3NDYWxs
YmFjayhtX2NhY2hlZFBvc2l0aW9uLmdldCgpKTsKKyAgICAgICAgbm90aWZpZXItPnJ1blN1Y2Nl
c3NDYWxsYmFjayhsYXN0UG9zaXRpb24oKSk7CiAKICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIG9u
ZS1zaG90IHJlcXVlc3QsIHN0b3AgaXQuIE90aGVyd2lzZSwgaWYgdGhlIHdhdGNoIHN0aWxsCiAg
ICAgICAgIC8vIGV4aXN0cywgc3RhcnQgdGhlIHNlcnZpY2UgdG8gZ2V0IHVwZGF0ZXMuCkBAIC00
MDQsMTQgKzQwNCwxNSBAQCB2b2lkIEdlb2xvY2F0aW9uOjpyZXF1ZXN0VGltZWRPdXQoR2VvTm90
aWZpZXIqIG5vdGlmaWVyKQogCiBib29sIEdlb2xvY2F0aW9uOjpoYXZlU3VpdGFibGVDYWNoZWRQ
b3NpdGlvbihQb3NpdGlvbk9wdGlvbnMqIG9wdGlvbnMpCiB7Ci0gICAgaWYgKCFtX2NhY2hlZFBv
c2l0aW9uKQorICAgIEdlb3Bvc2l0aW9uKiBjYWNoZWRQb3NpdGlvbiA9IGxhc3RQb3NpdGlvbigp
OworICAgIGlmICghY2FjaGVkUG9zaXRpb24pCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBp
ZiAoIW9wdGlvbnMtPmhhc01heGltdW1BZ2UoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
aWYgKCFvcHRpb25zLT5tYXhpbXVtQWdlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBE
T01UaW1lU3RhbXAgY3VycmVudFRpbWVNaWxsaXMgPSBjb252ZXJ0U2Vjb25kc1RvRE9NVGltZVN0
YW1wKGN1cnJlbnRUaW1lKCkpOwotICAgIHJldHVybiBtX2NhY2hlZFBvc2l0aW9uLT50aW1lc3Rh
bXAoKSA+IGN1cnJlbnRUaW1lTWlsbGlzIC0gb3B0aW9ucy0+bWF4aW11bUFnZSgpOworICAgIHJl
dHVybiBjYWNoZWRQb3NpdGlvbi0+dGltZXN0YW1wKCkgPiBjdXJyZW50VGltZU1pbGxpcyAtIG9w
dGlvbnMtPm1heGltdW1BZ2UoKTsKIH0KIAogdm9pZCBHZW9sb2NhdGlvbjo6Y2xlYXJXYXRjaChp
bnQgd2F0Y2hJRCkKQEAgLTYyNCw4ICs2MjUsNiBAQCB2b2lkIEdlb2xvY2F0aW9uOjpwb3NpdGlv
bkNoYW5nZWQoKQogewogICAgIEFTU0VSVChpc0FsbG93ZWQoKSk7CiAKLSAgICBtX2NhY2hlZFBv
c2l0aW9uID0gbGFzdFBvc2l0aW9uKCk7Ci0KICAgICAvLyBTdG9wIGFsbCBjdXJyZW50bHkgcnVu
bmluZyB0aW1lcnMuCiAgICAgc3RvcFRpbWVycygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmgKaW5kZXggMGQ5NWY0ZDY0ZmFiNTY5MzNi
YWE3NmE4Mzc3ZmVmZmQzMzM3YTQ5Mi4uZjNiZWQzNGVlY2QyNzc3YzIwYTY2YmY3YzUxNzY0ZDhl
MTBiZjhlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9H
ZW9sb2NhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2Vv
bG9jYXRpb24uaApAQCAtMTczLDcgKzE3Myw2IEBAIHByaXZhdGU6CiAgICAgICAgIE5vCiAgICAg
fSBtX2FsbG93R2VvbG9jYXRpb247CiAKLSAgICBSZWZQdHI8R2VvcG9zaXRpb24+IG1fY2FjaGVk
UG9zaXRpb247CiAgICAgR2VvTm90aWZpZXJTZXQgbV9yZXF1ZXN0c0F3YWl0aW5nQ2FjaGVkUG9z
aXRpb247CiB9OwogICAgIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDMyMzE0MTA4ZWYyN2YwOTk0YTIwN2RkNzhjNGFmNDU0
MDMxMDMyMTIuLmY1YTYwYjg0NjI5OGM1OWU1MjViY2FmZTNhZjJiNWVmMjMwMjFjZWMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyNyBAQAorMjAxMi0xMS0yOCAgSm9obiBLbm90dGVuYmVsdCAgPGprbm90dGVu
QGNocm9taXVtLm9yZz4KKworICAgICAgICBVc2UgR2VvbG9jYXRpb25Db250cm9sbGVyJ3MgbGFz
dCBnZW9wb3NpdGlvbiBhcyBjYWNoZWQgcG9zaXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM1NDAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgcGFnZSdzIEdlb2xvY2F0aW9uQ29udHJvbGxl
ciBtZWRpYXRlcyBhY2Nlc3MgdG8gdGhlCisgICAgICAgIEdlb2xvY2F0aW9uQ2xpZW50IGZvciBt
dWx0aXBsZSBmcmFtZXMnIEdlb2xvY2F0aW9uIGluc3RhbmNlcy4gIFRoaXMKKyAgICAgICAgcGF0
Y2ggY2hhbmdlcyB0aGUgcG9zaXRpb24gY2FjaGUgdG8gYmUgb24gdGhlIEdlb2xvY2F0aW9uQ29u
dHJvbGxlcgorICAgICAgICByYXRoZXIgdGhhbiBvbiB0aGUgR2VvbG9jYXRpb24gaW5zdGFuY2Uu
CisKKyAgICAgICAgVGhpcyBmaXhlcyBhIGJ1ZyB3aGVyZSBpZiBvbmUgZnJhbWUgaGFzIGFkZGVk
IGEgd2F0Y2ggYW5kIGhhcyByZWNlaXZlZAorICAgICAgICBhIHBvc2l0aW9uLCB0aGVuIGEgcmVx
dWVzdCBmb3IgYSBjYWNoZWQgcG9zaXRpb24gZnJvbSBhIHNlY29uZCBmcmFtZQorICAgICAgICBk
b2VzIG5vdCBzdWNjZWVkIGJlY2F1c2UgdGhlIEdlb2xvY2F0aW9uIGluc3RhbmNlIGluIHRoZSBz
ZWNvbmQgZnJhbWUncworICAgICAgICBwb3NpdGlvbiBjYWNoZSBoYXNuJ3QgcmVjZWl2ZWQgdGhl
IHBvc2l0aW9uIHVwZGF0ZSB0aGF0IHdlbnQgdG8gdGhlCisgICAgICAgIGZpcnN0IGZyYW1lLgor
CisgICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24vY2FjaGVkLXBvc2l0aW9uLXdoaWxlLXdh
dGNoaW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRp
b24vY2FjaGVkLXBvc2l0aW9uLXdoaWxlLXdhdGNoaW5nLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZG9tL0dlb2xvY2F0aW9uL3Jlc291cmNlcy9jYWNoZWQtcG9zaXRpb24td2hpbGUtd2F0
Y2hpbmctaW5uZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24v
c2NyaXB0LXRlc3RzL2NhY2hlZC1wb3NpdGlvbi13aGlsZS13YXRjaGluZy5qczogQWRkZWQuCisg
ICAgICAgICh3aW5kb3cub25tZXNzYWdlKToKKwogMjAxMi0xMS0yNyAgSnVzdGluIE5vdm9zYWQg
IDxqdW5vdkBnb29nbGUuY29tPgogCiAgICAgICAgIENvbnZlcnQgdGVzdCBmYXN0L2JhY2tncm91
bmRzL2JhY2tncm91bmQtb3BhcXVlLWltYWdlcy1vdmVyLWNvbG9yLmh0bWwgdG8gYSByZWYgdGVz
dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vY2FjaGVkLXBv
c2l0aW9uLXdoaWxlLXdhdGNoaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L0dlb2xvY2F0aW9uL2NhY2hlZC1wb3NpdGlvbi13aGlsZS13YXRjaGluZy1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTBkOWExNTE3NTNkNDVjMTc3MzJiZGViMjNmMGNkNGRhOWRlMGY0YQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2NhY2hlZC1w
b3NpdGlvbi13aGlsZS13YXRjaGluZy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAorVGVz
dHMgdGhhdCBhIGNhY2hlZCBwb3NpdGlvbiBjYW4gYmUgb2J0YWluZWQgaW4gb25lIGZyYW1lIGFm
dGVyIGFub3RoZXIgZnJhbWUgaGFzIGNyZWF0ZWQgYSBnZW9sb2NhdGlvbiB3YXRjaC4KKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1JlY2VpdmVkIGNhY2hlZCBwb3NpdGlvbiBsYXQ6
IDUxLjQ3OCwgbG9uZzogLTAuMTY2CitQQVNTIHN1Y2Nlc3MgaXMgdHJ1ZQorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2NhY2hlZC1wb3NpdGlvbi13aGlsZS13YXRjaGlu
Zy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vY2FjaGVkLXBvc2l0aW9u
LXdoaWxlLXdhdGNoaW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGM2NTcwYmRjYzk1NjdmZWMxYzVjYmE0
ZDVmMWM1MTQ5NWE3NDJkNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L0dlb2xvY2F0aW9uL2NhY2hlZC1wb3NpdGlvbi13aGlsZS13YXRjaGluZy5odG1sCkBAIC0wLDAg
KzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10
ZXN0cy9jYWNoZWQtcG9zaXRpb24td2hpbGUtd2F0Y2hpbmcuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRp
b24vcmVzb3VyY2VzL2NhY2hlZC1wb3NpdGlvbi13aGlsZS13YXRjaGluZy1pbm5lci5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vcmVzb3VyY2VzL2NhY2hlZC1wb3NpdGlv
bi13aGlsZS13YXRjaGluZy1pbm5lci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIzZDIwMzY5ZTQ5YWQ5NTlm
MWQzOTdhMmRkNDViNmI0ODU5ZGM0YjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9HZW9sb2NhdGlvbi9yZXNvdXJjZXMvY2FjaGVkLXBvc2l0aW9uLXdoaWxlLXdhdGNo
aW5nLWlubmVyLmh0bWwKQEAgLTAsMCArMSwyNyBAQAorPGh0bWw+Cis8Ym9keT4KKyAgPHNjcmlw
dD4KKyAgICBmdW5jdGlvbiBzdWNjZXNzQ2FsbGJhY2socG9zaXRpb24pIHsKKyAgICAgICAgdmFy
IG1lc3NhZ2UgPSB7CisgICAgICAgICAgICAnc3VjY2Vzcyc6ICB0cnVlLAorICAgICAgICAgICAg
J21lc3NhZ2UnOiAnUmVjZWl2ZWQgY2FjaGVkIHBvc2l0aW9uIGxhdDogJyArIHBvc2l0aW9uLmNv
b3Jkcy5sYXRpdHVkZSArICcsIGxvbmc6ICcgKworICAgICAgICAgICAgICAgICAgICAgICBwb3Np
dGlvbi5jb29yZHMubG9uZ2l0dWRlCisgICAgICAgIH07CisgICAgICAgIHBhcmVudC5wb3N0TWVz
c2FnZShtZXNzYWdlLCAnKicpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGVycm9yQ2FsbGJhY2so
ZXJyb3IpIHsKKyAgICAgICAgdmFyIG1lc3NhZ2UgPSB7CisgICAgICAgICAgICAnc3VjY2Vzcyc6
IGZhbHNlLAorICAgICAgICAgICAgJ21lc3NhZ2UnOiAnRmFpbGVkIHRvIGdldCBwb3NpdGlvbi4n
CisgICAgICAgIH0KKyAgICAgICAgcGFyZW50LnBvc3RNZXNzYWdlKG1lc3NhZ2UsICcqJyk7Cisg
ICAgfQorCisgICAgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbigKKyAg
ICAgICAgc3VjY2Vzc0NhbGxiYWNrLAorICAgICAgICBlcnJvckNhbGxiYWNrLAorICAgICAgICB7
IG1heGltdW1BZ2U6NjAwMDAwLCB0aW1lb3V0OjAgfSk7CisgIDwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2Ny
aXB0LXRlc3RzL2NhY2hlZC1wb3NpdGlvbi13aGlsZS13YXRjaGluZy5qcyBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9jYWNoZWQtcG9zaXRpb24td2hpbGUt
d2F0Y2hpbmcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzcxY2E5Y2E2ZGNhNjViZTViNThjOTI4ZTQ0ZjIzZDQ3
YzQxOWIxMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0
aW9uL3NjcmlwdC10ZXN0cy9jYWNoZWQtcG9zaXRpb24td2hpbGUtd2F0Y2hpbmcuanMKQEAgLTAs
MCArMSwyOCBAQAorZGVzY3JpcHRpb24oJ1Rlc3RzIHRoYXQgYSBjYWNoZWQgcG9zaXRpb24gY2Fu
IGJlIG9idGFpbmVkIGluIG9uZSBmcmFtZSBhZnRlciBhbm90aGVyIGZyYW1lIGhhcyBjcmVhdGVk
IGEgZ2VvbG9jYXRpb24gd2F0Y2guJyk7CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAg
IHRlc3RSdW5uZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oNTEuNDc4LCAtMC4xNjYsIDEw
MCk7CisgICAgdGVzdFJ1bm5lci5zZXRHZW9sb2NhdGlvblBlcm1pc3Npb24odHJ1ZSk7Cit9CisK
K3dpbmRvdy5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAobWVzc2FnZUV2ZW50KSB7CisgICAgZGVidWco
bWVzc2FnZUV2ZW50LmRhdGEubWVzc2FnZSk7CisgICAgc3VjY2VzcyA9IG1lc3NhZ2VFdmVudC5k
YXRhLnN1Y2Nlc3M7CisgICAgc2hvdWxkQmVUcnVlKCdzdWNjZXNzJyk7CisgICAgZmluaXNoSlNU
ZXN0KCk7Cit9CisKK3ZhciBpc0ZpcnN0UG9zaXRpb24gPSB0cnVlOworbmF2aWdhdG9yLmdlb2xv
Y2F0aW9uLndhdGNoUG9zaXRpb24oCisgICAgZnVuY3Rpb24oKSB7CisgICAgICAgIGlmIChpc0Zp
cnN0UG9zaXRpb24pIHsKKyAgICAgICAgICAgIC8vIEtpY2sgb2ZmIHRoZSBpZnJhbWUgdG8gcmVx
dWVzdCBhIGNhY2hlZCBwb3NpdGlvbi4gVGhlIGlmcmFtZQorICAgICAgICAgICAgLy8gd2lsbCBw
b3N0IGEgbWVzc2FnZSBiYWNrIG9uIHN1Y2Nlc3MgLyBmYWlsdXJlLgorICAgICAgICAgICAgaXNG
aXJzdFBvc2l0aW9uID0gZmFsc2U7CisgICAgICAgICAgICBpZnJhbWUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdpZnJhbWUnKTsKKyAgICAgICAgICAgIGlmcmFtZS5zcmMgPSAncmVzb3VyY2Vz
L2NhY2hlZC1wb3NpdGlvbi13aGlsZS13YXRjaGluZy1pbm5lci5odG1sJzsKKyAgICAgICAgICAg
IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lKTsKKyAgICAgICAgfQorICAgIH0pOwor
Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176744</attachid>
            <date>2012-11-29 08:53:17 -0800</date>
            <delta_ts>2012-11-29 14:19:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103540-20121129165050.patch</filename>
            <type>text/plain</type>
            <size>9074</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2MTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmQ5MmYwZTRlOGUwZmRm
YTFmYTE5ZmNiOGU4MDgzZjdjNDk2NjBhNi4uNzRkYzRiNTVmMjJlN2ZjYzMxZjdhNWJjYjVhYzM2
YzcxM2U5OTFiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTExLTI5ICBKb2hu
IEtub3R0ZW5iZWx0ICA8amtub3R0ZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFVzZSBHZW9s
b2NhdGlvbkNvbnRyb2xsZXIncyBsYXN0IGdlb3Bvc2l0aW9uIGFzIGNhY2hlZCBwb3NpdGlvbi4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzU0MAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBwYWdl
J3MgR2VvbG9jYXRpb25Db250cm9sbGVyIG1lZGlhdGVzIGFjY2VzcyB0byB0aGUKKyAgICAgICAg
R2VvbG9jYXRpb25DbGllbnQgZm9yIG11bHRpcGxlIGZyYW1lcycgR2VvbG9jYXRpb24gaW5zdGFu
Y2VzLiBUaGlzCisgICAgICAgIHBhdGNoIGNoYW5nZXMgdGhlIHBvc2l0aW9uIGNhY2hlIHRvIGJl
IG9uIHRoZSBHZW9sb2NhdGlvbkNvbnRyb2xsZXIKKyAgICAgICAgcmF0aGVyIHRoYW4gb24gdGhl
IEdlb2xvY2F0aW9uIGluc3RhbmNlLgorCisgICAgICAgIFRoaXMgZml4ZXMgYSBidWcgd2hlcmUg
aWYgb25lIGZyYW1lIGhhcyBoYXMgcmVjZWl2ZWQgYSBmcmVzaAorICAgICAgICBwb3NpdGlvbiwg
dGhlbiBhIHJlcXVlc3QgZm9yIGEgY2FjaGVkIHBvc2l0aW9uIGZyb20gYSBzZWNvbmQgZnJhbWUK
KyAgICAgICAgZG9lcyBub3Qgc3VjY2VlZCBiZWNhdXNlIHRoZSBHZW9sb2NhdGlvbiBpbnN0YW5j
ZSBpbiB0aGUgc2Vjb25kCisgICAgICAgIGZyYW1lJ3MgcG9zaXRpb24gY2FjaGUgaGFzbid0IHJl
Y2VpdmVkIHRoZSBwb3NpdGlvbiB1cGRhdGUgdGhhdAorICAgICAgICB3ZW50IHRvIHRoZSBmaXJz
dCBmcmFtZS4KKworICAgICAgICBUZXN0OiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9jYWNoZWQtcG9z
aXRpb24taWZyYW1lLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9j
YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246Om1ha2VDYWNoZWRQb3Np
dGlvbkNhbGxiYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6aGF2ZVN1aXRh
YmxlQ2FjaGVkUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OnBvc2l0
aW9uQ2hhbmdlZCk6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5o
OgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmg6
CisgICAgICAgIChHZW9sb2NhdGlvbkNvbnRyb2xsZXIpOgorCiAyMDEyLTExLTI5ICBBbmR5IFNo
YXcgIDxhbmR5LnNoYXdAZGlnaWEuY29tPgogCiAgICAgICAgIFtRdF0gSW1wbGVtZW50IHN1cHBv
cnQgZm9yIENvY29hIGJhc2VkIE5QQVBJIHBsdWdpbnMgb24gTWFjCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwCmluZGV4IDUxOWExZTQ1
YTk0NDU1MzhlOTk3ZmJiZDk4OGNiMTkyODUyN2Q2ZGIuLjk4YjEwZDAzOGM1YTE3ZmE0NGI3NDM5
YzBiNzVlYmI5ODZhYTMzMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2Vv
bG9jYXRpb24vR2VvbG9jYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2Vv
bG9jYXRpb24vR2VvbG9jYXRpb24uY3BwCkBAIC0zNzMsNyArMzczLDcgQEAgdm9pZCBHZW9sb2Nh
dGlvbjo6bWFrZUNhY2hlZFBvc2l0aW9uQ2FsbGJhY2tzKCkKICAgICBHZW9Ob3RpZmllclNldDo6
Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9yZXF1ZXN0c0F3YWl0aW5nQ2FjaGVkUG9zaXRpb24uZW5k
KCk7CiAgICAgZm9yIChHZW9Ob3RpZmllclNldDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1fcmVx
dWVzdHNBd2FpdGluZ0NhY2hlZFBvc2l0aW9uLmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIp
IHsKICAgICAgICAgR2VvTm90aWZpZXIqIG5vdGlmaWVyID0gaXRlci0+Z2V0KCk7Ci0gICAgICAg
IG5vdGlmaWVyLT5ydW5TdWNjZXNzQ2FsbGJhY2sobV9jYWNoZWRQb3NpdGlvbi5nZXQoKSk7Cisg
ICAgICAgIG5vdGlmaWVyLT5ydW5TdWNjZXNzQ2FsbGJhY2sobGFzdFBvc2l0aW9uKCkpOwogCiAg
ICAgICAgIC8vIElmIHRoaXMgaXMgYSBvbmUtc2hvdCByZXF1ZXN0LCBzdG9wIGl0LiBPdGhlcndp
c2UsIGlmIHRoZSB3YXRjaCBzdGlsbAogICAgICAgICAvLyBleGlzdHMsIHN0YXJ0IHRoZSBzZXJ2
aWNlIHRvIGdldCB1cGRhdGVzLgpAQCAtNDA0LDE0ICs0MDQsMTUgQEAgdm9pZCBHZW9sb2NhdGlv
bjo6cmVxdWVzdFRpbWVkT3V0KEdlb05vdGlmaWVyKiBub3RpZmllcikKIAogYm9vbCBHZW9sb2Nh
dGlvbjo6aGF2ZVN1aXRhYmxlQ2FjaGVkUG9zaXRpb24oUG9zaXRpb25PcHRpb25zKiBvcHRpb25z
KQogewotICAgIGlmICghbV9jYWNoZWRQb3NpdGlvbikKKyAgICBHZW9wb3NpdGlvbiogY2FjaGVk
UG9zaXRpb24gPSBsYXN0UG9zaXRpb24oKTsKKyAgICBpZiAoIWNhY2hlZFBvc2l0aW9uKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFvcHRpb25zLT5oYXNNYXhpbXVtQWdlKCkpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmICghb3B0aW9ucy0+bWF4aW11bUFnZSgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgRE9NVGltZVN0YW1wIGN1cnJlbnRUaW1lTWlsbGlzID0g
Y29udmVydFNlY29uZHNUb0RPTVRpbWVTdGFtcChjdXJyZW50VGltZSgpKTsKLSAgICByZXR1cm4g
bV9jYWNoZWRQb3NpdGlvbi0+dGltZXN0YW1wKCkgPiBjdXJyZW50VGltZU1pbGxpcyAtIG9wdGlv
bnMtPm1heGltdW1BZ2UoKTsKKyAgICByZXR1cm4gY2FjaGVkUG9zaXRpb24tPnRpbWVzdGFtcCgp
ID4gY3VycmVudFRpbWVNaWxsaXMgLSBvcHRpb25zLT5tYXhpbXVtQWdlKCk7CiB9CiAKIHZvaWQg
R2VvbG9jYXRpb246OmNsZWFyV2F0Y2goaW50IHdhdGNoSUQpCkBAIC02MjQsOCArNjI1LDYgQEAg
dm9pZCBHZW9sb2NhdGlvbjo6cG9zaXRpb25DaGFuZ2VkKCkKIHsKICAgICBBU1NFUlQoaXNBbGxv
d2VkKCkpOwogCi0gICAgbV9jYWNoZWRQb3NpdGlvbiA9IGxhc3RQb3NpdGlvbigpOwotCiAgICAg
Ly8gU3RvcCBhbGwgY3VycmVudGx5IHJ1bm5pbmcgdGltZXJzLgogICAgIHN0b3BUaW1lcnMoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2Nh
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5o
CmluZGV4IDBkOTVmNGQ2NGZhYjU2OTMzYmFhNzZhODM3N2ZlZmZkMzMzN2E0OTIuLmYzYmVkMzRl
ZWNkMjc3N2MyMGE2NmJmN2M1MTc2NGQ4ZTEwYmY4ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmgKQEAgLTE3Myw3ICsxNzMsNiBAQCBw
cml2YXRlOgogICAgICAgICBObwogICAgIH0gbV9hbGxvd0dlb2xvY2F0aW9uOwogCi0gICAgUmVm
UHRyPEdlb3Bvc2l0aW9uPiBtX2NhY2hlZFBvc2l0aW9uOwogICAgIEdlb05vdGlmaWVyU2V0IG1f
cmVxdWVzdHNBd2FpdGluZ0NhY2hlZFBvc2l0aW9uOwogfTsKICAgICAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxODAxY2Y0
NDdlOWZkMWNmNTVjOTg4MzY2ZDBjODk3OWI0MTdkNWRjLi45NDUwNDBkMmJhMWM0YmFhNDg5MWJh
ODRjMDUzOTkxZjUyYmVkY2UyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTItMTEtMjkgIEpv
aG4gS25vdHRlbmJlbHQgIDxqa25vdHRlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgVXNlIEdl
b2xvY2F0aW9uQ29udHJvbGxlcidzIGxhc3QgZ2VvcG9zaXRpb24gYXMgY2FjaGVkIHBvc2l0aW9u
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzNTQw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIHBh
Z2UncyBHZW9sb2NhdGlvbkNvbnRyb2xsZXIgbWVkaWF0ZXMgYWNjZXNzIHRvIHRoZQorICAgICAg
ICBHZW9sb2NhdGlvbkNsaWVudCBmb3IgbXVsdGlwbGUgZnJhbWVzJyBHZW9sb2NhdGlvbiBpbnN0
YW5jZXMuIFRoaXMKKyAgICAgICAgcGF0Y2ggY2hhbmdlcyB0aGUgcG9zaXRpb24gY2FjaGUgdG8g
YmUgb24gdGhlIEdlb2xvY2F0aW9uQ29udHJvbGxlcgorICAgICAgICByYXRoZXIgdGhhbiBvbiB0
aGUgR2VvbG9jYXRpb24gaW5zdGFuY2UuCisKKyAgICAgICAgVGhpcyBmaXhlcyBhIGJ1ZyB3aGVy
ZSBpZiBvbmUgZnJhbWUgaGFzIGhhcyByZWNlaXZlZCBhIGZyZXNoCisgICAgICAgIHBvc2l0aW9u
LCB0aGVuIGEgcmVxdWVzdCBmb3IgYSBjYWNoZWQgcG9zaXRpb24gZnJvbSBhIHNlY29uZCBmcmFt
ZQorICAgICAgICBkb2VzIG5vdCBzdWNjZWVkIGJlY2F1c2UgdGhlIEdlb2xvY2F0aW9uIGluc3Rh
bmNlIGluIHRoZSBzZWNvbmQKKyAgICAgICAgZnJhbWUncyBwb3NpdGlvbiBjYWNoZSBoYXNuJ3Qg
cmVjZWl2ZWQgdGhlIHBvc2l0aW9uIHVwZGF0ZSB0aGF0CisgICAgICAgIHdlbnQgdG8gdGhlIGZp
cnN0IGZyYW1lLgorCisgICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24vY2FjaGVkLXBvc2l0
aW9uLWlmcmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0dlb2xv
Y2F0aW9uL2NhY2hlZC1wb3NpdGlvbi1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9kb20vR2VvbG9jYXRpb24vcmVzb3VyY2VzL2NhY2hlZC1wb3NpdGlvbi1pZnJhbWUtaW5uZXIu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3Rz
L2NhY2hlZC1wb3NpdGlvbi1pZnJhbWUuanM6IEFkZGVkLgorICAgICAgICAod2luZG93Lm9ubWVz
c2FnZSk6CisKIDIwMTItMTEtMjkgIEt3YW5nWW9uZyBDaG9pICA8a3kwLmNob2lAc2Ftc3VuZy5j
b20+CiAKICAgICAgICAgW0VGTF0gUmVtb3ZlIGR1cGxpY2F0ZWQgZW50cmllcyBmcm9tIGVmbC13
azEvVGVzdEV4cGVjdGF0aW9ucwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2Vv
bG9jYXRpb24vY2FjaGVkLXBvc2l0aW9uLWlmcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9jYWNoZWQtcG9zaXRpb24taWZyYW1lLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kMTYxNzZiMzZmOTYxNTk2NjAxMjI3ODFiNTU1YjM0Njc5MWMzNTJlCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vY2FjaGVk
LXBvc2l0aW9uLWlmcmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAorVGVzdHMgdGhh
dCBhIGNhY2hlZCBwb3NpdGlvbiBjYW4gYmUgb2J0YWluZWQgaW4gb25lIGZyYW1lIGFmdGVyIGFu
b3RoZXIgZnJhbWUgaGFzIHJlY2VpdmVkIGEgZnJlc2ggcG9zaXRpb24uCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitSZWNlaXZlZCBjYWNoZWQgcG9zaXRpb24gbGF0OiA1MS40Nzgs
IGxvbmc6IC0wLjE2NgorUEFTUyBzdWNjZXNzIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9HZW9sb2NhdGlvbi9jYWNoZWQtcG9zaXRpb24taWZyYW1lLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9jYWNoZWQtcG9zaXRpb24taWZyYW1lLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODczNTFjODQyYzlhMzc5ZDQ0MmM5ODY2OGRlNTU5NDYxM2JiNTkzNAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2NhY2hlZC1wb3Np
dGlvbi1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMg
Ii0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvY2FjaGVkLXBvc2l0aW9uLWlmcmFtZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9HZW9sb2NhdGlvbi9yZXNvdXJjZXMvY2FjaGVkLXBvc2l0aW9uLWlmcmFtZS1pbm5l
ci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vcmVzb3VyY2VzL2NhY2hl
ZC1wb3NpdGlvbi1pZnJhbWUtaW5uZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZDRlZTg3YTQ4OWZmYzI4
MjNiNDQwN2MwNzkyMzljN2VkN2NmOTdmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vR2VvbG9jYXRpb24vcmVzb3VyY2VzL2NhY2hlZC1wb3NpdGlvbi1pZnJhbWUtaW5u
ZXIuaHRtbApAQCAtMCwwICsxLDI2IEBACis8aHRtbD4KKzxib2R5PgorICA8c2NyaXB0PgorICAg
IGZ1bmN0aW9uIHN1Y2Nlc3NDYWxsYmFjayhwb3NpdGlvbikgeworICAgICAgICB2YXIgbWVzc2Fn
ZSA9IHsKKyAgICAgICAgICAgICdzdWNjZXNzJzogdHJ1ZSwKKyAgICAgICAgICAgICdtZXNzYWdl
JzogJ1JlY2VpdmVkIGNhY2hlZCBwb3NpdGlvbiBsYXQ6ICcgKyBwb3NpdGlvbi5jb29yZHMubGF0
aXR1ZGUgKyAnLCBsb25nOiAnICsgcG9zaXRpb24uY29vcmRzLmxvbmdpdHVkZQorICAgICAgICB9
OworICAgICAgICBwYXJlbnQucG9zdE1lc3NhZ2UobWVzc2FnZSwgJyonKTsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBlcnJvckNhbGxiYWNrKGVycm9yKSB7CisgICAgICAgIHZhciBtZXNzYWdlID0g
eworICAgICAgICAgICAgJ3N1Y2Nlc3MnOiBmYWxzZSwKKyAgICAgICAgICAgICdtZXNzYWdlJzog
J0ZhaWxlZCB0byBnZXQgcG9zaXRpb24uJworICAgICAgICB9CisgICAgICAgIHBhcmVudC5wb3N0
TWVzc2FnZShtZXNzYWdlLCAnKicpOworICAgIH0KKworICAgIG5hdmlnYXRvci5nZW9sb2NhdGlv
bi5nZXRDdXJyZW50UG9zaXRpb24oCisgICAgICAgIHN1Y2Nlc3NDYWxsYmFjaywKKyAgICAgICAg
ZXJyb3JDYWxsYmFjaywKKyAgICAgICAgeyBtYXhpbXVtQWdlOjYwMDAwMCwgdGltZW91dDowIH0p
OworICA8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9jYWNoZWQtcG9zaXRpb24taWZyYW1l
LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL2NhY2hl
ZC1wb3NpdGlvbi1pZnJhbWUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjRjNjhhYTBhODY2YzYwOGJkZjhhZTI4
NDRmNDYxYmU3ZDEyOWUzYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9jYWNoZWQtcG9zaXRpb24taWZyYW1lLmpzCkBAIC0w
LDAgKzEsMjQgQEAKK2Rlc2NyaXB0aW9uKCdUZXN0cyB0aGF0IGEgY2FjaGVkIHBvc2l0aW9uIGNh
biBiZSBvYnRhaW5lZCBpbiBvbmUgZnJhbWUgYWZ0ZXIgYW5vdGhlciBmcmFtZSBoYXMgcmVjZWl2
ZWQgYSBmcmVzaCBwb3NpdGlvbi4nKTsKKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
dGVzdFJ1bm5lci5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbig1MS40NzgsIC0wLjE2NiwgMTAw
KTsKKyAgICB0ZXN0UnVubmVyLnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbih0cnVlKTsKK30KKwor
d2luZG93Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChtZXNzYWdlRXZlbnQpIHsKKyAgICBkZWJ1Zyht
ZXNzYWdlRXZlbnQuZGF0YS5tZXNzYWdlKTsKKyAgICBzdWNjZXNzID0gbWVzc2FnZUV2ZW50LmRh
dGEuc3VjY2VzczsKKyAgICBzaG91bGRCZVRydWUoJ3N1Y2Nlc3MnKTsKKyAgICBmaW5pc2hKU1Rl
c3QoKTsKK30KKworbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbigKKyAg
ICBmdW5jdGlvbigpIHsKKyAgICAgICAgLy8gS2ljayBvZmYgdGhlIGlmcmFtZSB0byByZXF1ZXN0
IGEgY2FjaGVkIHBvc2l0aW9uLiBUaGUgaWZyYW1lCisgICAgICAgIC8vIHdpbGwgcG9zdCBhIG1l
c3NhZ2UgYmFjayBvbiBzdWNjZXNzIC8gZmFpbHVyZS4KKyAgICAgICAgaWZyYW1lID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7CisgICAgICAgIGlmcmFtZS5zcmMgPSAncmVzb3Vy
Y2VzL2NhY2hlZC1wb3NpdGlvbi1pZnJhbWUtaW5uZXIuaHRtbCc7CisgICAgICAgIGRvY3VtZW50
LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lKTsKKyAgICB9KTsKKword2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>