<?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>22847</bug_id>
          
          <creation_ts>2008-12-13 15:01:11 -0800</creation_ts>
          <short_desc>Geolocation PositionOptions cannot be an arbitrary object</short_desc>
          <delta_ts>2008-12-15 13:12:06 -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>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></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="Nobody">webkit-unassigned</assigned_to>
          <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>102462</commentid>
    <comment_count>0</comment_count>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-12-13 15:01:11 -0800</bug_when>
    <thetext>Geolocation PositionOptions cannot be an arbitrary object

From webkit-dev:
Date: Fri, 12 Dec 2008 12:50:35 -0800 (PST)
From: Aurelian Maga aurelianmaga at yahoo com
To: webkit-dev@lists.webkit.org

Hello,

I&apos;m trying the geolocation api (gtk implementation with geoclue) and in a javascript I&apos;m creating a postionoptions object like this:

var options = {enableHighAccuracy:true,timeout:30000};

and pass this to getCurrentPosition.  The GeolocationServiceGtk::startUpdating(PositionOptions* options) is being called but the options object is null.

Could someone point me in  the right direction to fix this?

Thank you,
Relu</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102464</commentid>
    <comment_count>1</comment_count>
      <attachid>26006</attachid>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-12-13 15:27:49 -0800</bug_when>
    <thetext>Created attachment 26006
Patch implementing the fix

This is the patch from Sam.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102522</commentid>
    <comment_count>2</comment_count>
      <attachid>26006</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-12-14 18:18:12 -0800</bug_when>
    <thetext>Comment on attachment 26006
Patch implementing the fix

&gt; Index: WebCore/ChangeLog
&gt; ===================================================================
&gt; --- WebCore/ChangeLog	(revision 39282)
&gt; +++ WebCore/ChangeLog	(working copy)
&gt; @@ -1,3 +1,19 @@
&gt; +2008-12-13  Greg Bolsinga  &lt;bolsinga@apple.com&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=22847
&gt; +        
&gt; +        PositionOptions can be any aribitrary object.
&gt; +
&gt; +        * DerivedSources.make:
&gt; +        * WebCore.xcodeproj/project.pbxproj:
&gt; +        * bindings/js/JSGeolocationCustom.cpp:
&gt; +        (WebCore::createPositionOptions):
&gt; +        (WebCore::JSGeolocation::getCurrentPosition):
&gt; +        (WebCore::JSGeolocation::watchPosition):
&gt; +        * page/PositionOptions.idl:

I&apos;d like to see slightly more detailed comments explaining the changes.

Also, arbitrary is misspelled here.

&gt; +    // FIXME: Appropriately deal with an exception being thrown.

Is this really something we have to put off? Can&apos;t you make a test case that throws an exception, and decide what we want to do in that case?

&gt; +    unsigned timeout = timeoutValue-&gt;toInt32(exec);

Should be toUInt32 if you&apos;re storing this in an unsigned.

And are you sure we want the toUInt32 rules? This do modulo arithmetic. Another option is to use toNumber and then range check and convert to an integer. You should make test cases that are outside the 32-bit integer range and see what they do.

&gt; Index: WebCore/page/PositionOptions.idl
&gt; ===================================================================
&gt; --- WebCore/page/PositionOptions.idl	(revision 39281)
&gt; +++ WebCore/page/PositionOptions.idl	(working copy)
&gt; @@ -25,9 +25,8 @@
&gt;  
&gt;  module core {
&gt;  
&gt; -    interface [
&gt; -        GenerateConstructor
&gt; -    ] PositionOptions {
&gt; +    // This interface generates no binding for JavaScript.
&gt; +    interface PositionOptions {
&gt;          attribute boolean enableHighAccuracy;
&gt;          attribute unsigned long timeout;
&gt;      };

I think we should eliminate the IDL file entirely.

I see you taking things out of DerivedSources.make and the Xcode project. What about the build files for other platforms? Won&apos;t this break the build?

I&apos;m going to say review- because I don&apos;t think it&apos;s OK to break all the other platforms. Please consider my other comments too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102576</commentid>
    <comment_count>3</comment_count>
      <attachid>26027</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-12-15 12:08:30 -0800</bug_when>
    <thetext>Created attachment 26027
Updated patch

Greg, this is an updated version of the patch which hopefully addresses Darin&apos;s comments.  It would great if you could test this with some malformed PositionOptions to make sure all is well.

Example of malformed PositionOptions include:

// Exception being thrown
var o = { get timeout() { throw 1; } }

// Overflow (note UINT_MAX doesn&apos;t exist in JS, so you will have to fill it in yourself)
var o = { timeout: UINT_MAX + 1; }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102580</commentid>
    <comment_count>4</comment_count>
      <attachid>26027</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-12-15 12:34:55 -0800</bug_when>
    <thetext>Comment on attachment 26027
Updated patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102585</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-12-15 13:12:06 -0800</bug_when>
    <thetext>Fixed in r39311.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26006</attachid>
            <date>2008-12-13 15:27:49 -0800</date>
            <delta_ts>2008-12-15 12:08:30 -0800</delta_ts>
            <desc>Patch implementing the fix</desc>
            <filename>Bug22847.patch.txt</filename>
            <type>text/plain</type>
            <size>8195</size>
            <attacher name="Greg Bolsinga">bolsinga</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzOTI4MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMDgtMTItMTMgIEdyZWcgQm9sc2luZ2EgIDxib2xzaW5nYUBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODQ3CisgICAgICAgIAor
ICAgICAgICBQb3NpdGlvbk9wdGlvbnMgY2FuIGJlIGFueSBhcmliaXRyYXJ5IG9iamVjdC4KKwor
ICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTR2VvbG9jYXRpb25D
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUG9zaXRpb25PcHRpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTR2VvbG9jYXRpb246OmdldEN1cnJlbnRQb3NpdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpKU0dlb2xvY2F0aW9uOjp3YXRjaFBvc2l0aW9uKToKKyAgICAgICAgKiBw
YWdlL1Bvc2l0aW9uT3B0aW9ucy5pZGw6CisKIDIwMDgtMTItMTMgIERhcmluIEFkbGVyICA8ZGFy
aW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCkluZGV4
OiBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9EZXJp
dmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAzOTI4MSkKKysrIFdlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTg1LDcgKzE4NSw2IEBAIERPTV9DTEFTU0VTID0g
XAogICAgIFBvc2l0aW9uQ2FsbGJhY2sgXAogICAgIFBvc2l0aW9uRXJyb3IgXAogICAgIFBvc2l0
aW9uRXJyb3JDYWxsYmFjayBcCi0gICAgUG9zaXRpb25PcHRpb25zIFwKICAgICBQcm9jZXNzaW5n
SW5zdHJ1Y3Rpb24gXAogICAgIFByb2dyZXNzRXZlbnQgXAogICAgIFJHQkNvbG9yIFwKSW5kZXg6
IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAzOTI4
MSkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC00MzU4LDggKzQzNTgsNiBAQAogCQlGRTgwREE2NjBFOUM0NzAzMDAwRDZGNzUg
LyogSlNHZW9wb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkU4MERBNjIwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvcG9zaXRpb24uaCAqLzsg
fTsKIAkJRkU4MERBNzEwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwREE2RDBFOUM0
NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbkVycm9yLmNwcCAqLzsgfTsKIAkJRkU4MERBNzIwRTlD
NDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MERBNkUwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9z
aXRpb25FcnJvci5oICovOyB9OwotCQlGRTgwREE3MzBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3Np
dGlvbk9wdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkU4MERBNkYwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25PcHRpb25zLmNwcCAq
LzsgfTsKLQkJRkU4MERBNzQwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25PcHRpb25zLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwREE3MDBF
OUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbk9wdGlvbnMuaCAqLzsgfTsKIAkJRkVBQjkwMTIw
RUE1MUI5QzAwNjM0OEMzIC8qIEdlb2xvY2F0aW9uU2VydmljZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUFCOTAxMDBFQTUxQjlDMDA2MzQ4QzMg
LyogR2VvbG9jYXRpb25TZXJ2aWNlLmNwcCAqLzsgfTsKIAkJRkVBQjkwMTMwRUE1MUI5QzAwNjM0
OEMzIC8qIEdlb2xvY2F0aW9uU2VydmljZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkVBQjkwMTEwRUE1MUI5QzAwNjM0OEMzIC8qIEdlb2xvY2F0aW9u
U2VydmljZS5oICovOyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCkBAIC05MTIy
LDggKzkxMjAsNiBAQAogCQlGRTgwREE2MjBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9wb3NpdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0dlb3Bvc2l0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFODBEQTZEMEU5QzQ3MkYwMDBENkY3NSAvKiBK
U1Bvc2l0aW9uRXJyb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNQb3NpdGlvbkVycm9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU4MERB
NkUwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU1Bvc2l0aW9uRXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJRkU4MERBNkYwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25PcHRpb25zLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUG9zaXRpb25PcHRpb25z
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkU4MERBNzAwRTlDNDcyRjAwMEQ2
Rjc1IC8qIEpTUG9zaXRpb25PcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTUG9zaXRpb25PcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZF
QUI5MDEwMEVBNTFCOUMwMDYzNDhDMyAvKiBHZW9sb2NhdGlvblNlcnZpY2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VvbG9jYXRpb25TZXJ2aWNlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVBQjkwMTEwRUE1MUI5QzAwNjM0OEMzIC8qIEdl
b2xvY2F0aW9uU2VydmljZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW9s
b2NhdGlvblNlcnZpY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhG
aWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KQEAgLTEyMDYwLDggKzEyMDU2LDYgQEAKIAkJCQk2NURG
MzFFQTA5RDFDQzYwMDAwQkUzMjUgLyogSlNOb3RhdGlvbi5oICovLAogCQkJCUZFODBEQTZEMEU5
QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuY3BwICovLAogCQkJCUZFODBEQTZFMEU5
QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuaCAqLywKLQkJCQlGRTgwREE2RjBFOUM0
NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbk9wdGlvbnMuY3BwICovLAotCQkJCUZFODBEQTcwMEU5
QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uT3B0aW9ucy5oICovLAogCQkJCTY1REYzMUVCMDlE
MUNDNjAwMDBCRTMyNSAvKiBKU1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAgKi8sCiAJCQkJNjVE
RjMxRUMwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTUHJvY2Vzc2luZ0luc3RydWN0aW9uLmggKi8sCiAJ
CQkJRTRCNDIzODUwQ0JGQjczQzAwQUYyRUNFIC8qIEpTUHJvZ3Jlc3NFdmVudC5jcHAgKi8sCkBA
IC0xNTU0NCw3ICsxNTUzOCw2IEBACiAJCQkJQTlEMjQ4MDEwRDc1N0U2OTAwRkRGOTU5IC8qIEpT
UGx1Z2luQXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQjcwRDZDMDlFQjBDN0MwMDlEODQ2
OCAvKiBKU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFODBE
QTcyMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuaCBpbiBIZWFkZXJzICovLAot
CQkJCUZFODBEQTc0MEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uT3B0aW9ucy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNjVERjMyMDAwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTUHJvY2Vzc2luZ0lu
c3RydWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDQ2MTNFRTBDRDY4MUJCMDBGQURBNzUg
LyogSlNQcm9ncmVzc0V2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlDMDkxNTg4RjBEQjQyMDky
MDBFNTVBRjQgLyogSlNRdWFyYW50aW5lZE9iamVjdFdyYXBwZXIuaCBpbiBIZWFkZXJzICovLApA
QCAtMTc1MzIsNyArMTc1MjUsNiBAQAogCQkJCUE5QzZFNjREMEQ3NDY1RTcwMDY0NDJFOSAvKiBK
U1BsdWdpbkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0I3MEQ2QjA5RUIwQzdDMDA5
RDg0NjggLyogSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUZFODBEQTcxMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJRkU4MERBNzMwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25PcHRpb25z
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1REYzMUZGMDlEMUNDNjAwMDBCRTMyNSAvKiBKU1By
b2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDQ2MTNFRDBDRDY4
MUJBMDBGQURBNzUgLyogSlNQcm9ncmVzc0V2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMw
OTE1ODhFMERCNDIwOTIwMEU1NUFGNCAvKiBKU1F1YXJhbnRpbmVkT2JqZWN0V3JhcHBlci5jcHAg
aW4gU291cmNlcyAqLywKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1
c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9u
Q3VzdG9tLmNwcAkocmV2aXNpb24gMzkyODEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTR2Vv
bG9jYXRpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMiArMzMsMzAgQEAKICNp
bmNsdWRlICJKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suaCIKICNpbmNsdWRlICJKU0N1c3RvbVBv
c2l0aW9uRXJyb3JDYWxsYmFjay5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCi0jaW5jbHVk
ZSAiSlNQb3NpdGlvbk9wdGlvbnMuaCIKKyNpbmNsdWRlICJQb3NpdGlvbk9wdGlvbnMuaCIKIAog
dXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMgUGFz
c1JlZlB0cjxQb3NpdGlvbk9wdGlvbnM+IGNyZWF0ZVBvc2l0aW9uT3B0aW9ucyhFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUqIHZhbHVlKQoreworICAgIGlmICghdmFsdWUtPmlzT2JqZWN0KCkpCisg
ICAgICAgIHJldHVybiAwOworCisgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHZhbHVl
KTsKKworICAgIC8vIEZJWE1FOiBBcHByb3ByaWF0ZWx5IGRlYWwgd2l0aCBhbiBleGNlcHRpb24g
YmVpbmcgdGhyb3duLgorCisgICAgSlNWYWx1ZSogZW5hYmxlSGlnaEFjY3VyYWN5VmFsdWUgPSBv
YmplY3QtPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJlbmFibGVIaWdoQWNjdXJhY3kiKSk7
CisgICAgYm9vbCBlbmFibGVIaWdoQWNjdXJhY3kgPSBlbmFibGVIaWdoQWNjdXJhY3lWYWx1ZS0+
dG9Cb29sZWFuKGV4ZWMpOworCisgICAgSlNWYWx1ZSogdGltZW91dFZhbHVlID0gb2JqZWN0LT5n
ZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAidGltZW91dCIpKTsKKyAgICB1bnNpZ25lZCB0aW1l
b3V0ID0gdGltZW91dFZhbHVlLT50b0ludDMyKGV4ZWMpOworCisgICAgcmV0dXJuIFBvc2l0aW9u
T3B0aW9uczo6Y3JlYXRlKGVuYWJsZUhpZ2hBY2N1cmFjeSwgdGltZW91dCk7Cit9CisKIEpTVmFs
dWUqIEpTR2VvbG9jYXRpb246OmdldEN1cnJlbnRQb3NpdGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CiAgICAgLy8gQXJndW1lbnRzOiBQb3NpdGlvbkNhbGxiYWNr
LCAob3B0aW9uYWwpUG9zaXRpb25FcnJvckNhbGxiYWNrLCAob3B0aW9uYWwpUG9zaXRpb25PcHRp
b25zCkBAIC02OCw3ICs4Niw3IEBAIEpTVmFsdWUqIEpTR2VvbG9jYXRpb246OmdldEN1cnJlbnRQ
b3NpdGkKICAgICAKICAgICBSZWZQdHI8UG9zaXRpb25PcHRpb25zPiBwb3NpdGlvbk9wdGlvbnM7
CiAgICAgaWYgKCFhcmdzLmF0KGV4ZWMsIDIpLT5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAg
ICBwb3NpdGlvbk9wdGlvbnMgPSB0b1Bvc2l0aW9uT3B0aW9ucyhhcmdzLmF0KGV4ZWMsIDIpKTsK
KyAgICAgICAgcG9zaXRpb25PcHRpb25zID0gY3JlYXRlUG9zaXRpb25PcHRpb25zKGV4ZWMsIGFy
Z3MuYXQoZXhlYywgMikpOwogICAgIAogICAgIG1faW1wbC0+Z2V0Q3VycmVudFBvc2l0aW9uKHBv
c2l0aW9uQ2FsbGJhY2sucmVsZWFzZSgpLCBwb3NpdGlvbkVycm9yQ2FsbGJhY2sucmVsZWFzZSgp
LCBwb3NpdGlvbk9wdGlvbnMuZ2V0KCkpOwogICAgIApAQCAtMTA0LDcgKzEyMiw3IEBAIEpTVmFs
dWUqIEpTR2VvbG9jYXRpb246OndhdGNoUG9zaXRpb24oRXgKICAgICAKICAgICBSZWZQdHI8UG9z
aXRpb25PcHRpb25zPiBwb3NpdGlvbk9wdGlvbnM7CiAgICAgaWYgKCFhcmdzLmF0KGV4ZWMsIDIp
LT5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICBwb3NpdGlvbk9wdGlvbnMgPSB0b1Bvc2l0
aW9uT3B0aW9ucyhhcmdzLmF0KGV4ZWMsIDIpKTsKKyAgICAgICAgcG9zaXRpb25PcHRpb25zID0g
Y3JlYXRlUG9zaXRpb25PcHRpb25zKGV4ZWMsIGFyZ3MuYXQoZXhlYywgMikpOwogICAgIAogICAg
IGludCB3YXRjaElEID0gbV9pbXBsLT53YXRjaFBvc2l0aW9uKHBvc2l0aW9uQ2FsbGJhY2sucmVs
ZWFzZSgpLCBwb3NpdGlvbkVycm9yQ2FsbGJhY2sucmVsZWFzZSgpLCBwb3NpdGlvbk9wdGlvbnMu
Z2V0KCkpOwogICAgIHJldHVybiBqc051bWJlcihleGVjLCB3YXRjaElEKTsKSW5kZXg6IFdlYkNv
cmUvcGFnZS9Qb3NpdGlvbk9wdGlvbnMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9Q
b3NpdGlvbk9wdGlvbnMuaWRsCShyZXZpc2lvbiAzOTI4MSkKKysrIFdlYkNvcmUvcGFnZS9Qb3Np
dGlvbk9wdGlvbnMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw5ICsyNSw4IEBACiAKIG1vZHVs
ZSBjb3JlIHsKIAotICAgIGludGVyZmFjZSBbCi0gICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3IK
LSAgICBdIFBvc2l0aW9uT3B0aW9ucyB7CisgICAgLy8gVGhpcyBpbnRlcmZhY2UgZ2VuZXJhdGVz
IG5vIGJpbmRpbmcgZm9yIEphdmFTY3JpcHQuCisgICAgaW50ZXJmYWNlIFBvc2l0aW9uT3B0aW9u
cyB7CiAgICAgICAgIGF0dHJpYnV0ZSBib29sZWFuIGVuYWJsZUhpZ2hBY2N1cmFjeTsKICAgICAg
ICAgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgdGltZW91dDsKICAgICB9Owo=
</data>
<flag name="review"
          id="12239"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26027</attachid>
            <date>2008-12-15 12:08:30 -0800</date>
            <delta_ts>2008-12-15 12:34:55 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>updated.diff</filename>
            <type>text/plain</type>
            <size>12250</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDM5MzA3
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMDgtMTIt
MTUgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjg0NworICAgICAgICBHZW9sb2NhdGlvbiBQb3NpdGlvbk9wdGlv
bnMgY2Fubm90IGJlIGFuIGFyYml0cmFyeSBvYmplY3QuCisKKyAgICAgICAgQWxsb3cgdGhlIFBv
c2l0aW9uT3B0aW9ucyB0byBiZSBhIHZhbmlsbGEgSlMgb2JqZWN0IGFuZCBwYXJzZSBpdAorICAg
ICAgICBhcHByb3ByaWF0ZWx5LgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZTogUmVt
b3ZlIFBvc2l0aW9uT3B0aW9ucy4KKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogRGl0dG8uCisg
ICAgICAgICogV2ViQ29yZS5wcm86IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmVTb3VyY2VzLmJrbDogRGl0dG8uCisK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZVBvc2l0aW9uT3B0aW9ucyk6IEFkZGVkLiBFeHRyYWN0cyB0aGUgZW5h
YmxlSGlnaEFjY3VyYWN5CisgICAgICAgIGFuZCB0aW1lb3V0IGZpZWxkcyBmcm9tIGEgdmFuaWxs
YSBKUyBvYmplY3QgaW4gb3JkZXIgdG8gY3JlYXRlIHRoZSAKKyAgICAgICAgUG9zaXRpb25PcHRp
b25zIG9iamVjdCwgY2hlY2tpbmcgZm9yIGV4Y2VwdGlvbnMgYXMgbmVjZXNzYXJ5LgorICAgICAg
ICAoV2ViQ29yZTo6SlNHZW9sb2NhdGlvbjo6Z2V0Q3VycmVudFBvc2l0aW9uKTogVXNlIGNyZWF0
ZVBvc2l0aW9uT3B0aW9ucworICAgICAgICBpbnN0ZWFkIG9mIHRvUG9zaXRpb25PcHRpb25zLgor
ICAgICAgICAoV2ViQ29yZTo6SlNHZW9sb2NhdGlvbjo6d2F0Y2hQb3NpdGlvbik6IERpdHRvLgor
ICAgICAgICAqIHBhZ2UvUG9zaXRpb25PcHRpb25zLmlkbDogUmVtb3ZlZAorCiAyMDA4LTEyLTE1
ICBDYW1lcm9uIFp3YXJpY2ggIDx6d2FyaWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IERlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gMzkzMDYpCisrKyBEZXJpdmVkU291cmNl
cy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xODUsNyArMTg1LDYgQEAgRE9NX0NMQVNTRVMgPSBc
CiAgICAgUG9zaXRpb25DYWxsYmFjayBcCiAgICAgUG9zaXRpb25FcnJvciBcCiAgICAgUG9zaXRp
b25FcnJvckNhbGxiYWNrIFwKLSAgICBQb3NpdGlvbk9wdGlvbnMgXAogICAgIFByb2Nlc3NpbmdJ
bnN0cnVjdGlvbiBcCiAgICAgUHJvZ3Jlc3NFdmVudCBcCiAgICAgUkdCQ29sb3IgXApJbmRleDog
R05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDM5
MzA2KQorKysgR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTIxOCw3ICsyMTgsNiBA
QCBJRExfQklORElOR1MgKz0gXAogCVdlYkNvcmUvcGFnZS9Mb2NhdGlvbi5pZGwgXAogCVdlYkNv
cmUvcGFnZS9OYXZpZ2F0b3IuaWRsIFwKIAlXZWJDb3JlL3BhZ2UvUG9zaXRpb25FcnJvci5pZGwg
XAotCVdlYkNvcmUvcGFnZS9Qb3NpdGlvbk9wdGlvbnMuaWRsIFwKIAlXZWJDb3JlL3BhZ2UvU2Ny
ZWVuLmlkbCBcCiAJV2ViQ29yZS9wYWdlL1dvcmtlck5hdmlnYXRvci5pZGwgXAogCVdlYkNvcmUv
cGx1Z2lucy9NaW1lVHlwZS5pZGwgXApJbmRleDogV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS5wcm8JKHJldmlzaW9uIDM5MzA2KQorKysgV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29w
eSkKQEAgLTM1NCw3ICszNTQsNiBAQCBJRExfQklORElOR1MgKz0gXAogICAgIHBhZ2UvTG9jYXRp
b24uaWRsIFwKICAgICBwYWdlL05hdmlnYXRvci5pZGwgXAogICAgIHBhZ2UvUG9zaXRpb25FcnJv
ci5pZGwgXAotICAgIHBhZ2UvUG9zaXRpb25PcHRpb25zLmlkbCBcCiAgICAgcGFnZS9TY3JlZW4u
aWRsIFwKICAgICBwYWdlL1dvcmtlck5hdmlnYXRvci5pZGwgXAogICAgIHBsdWdpbnMvUGx1Z2lu
LmlkbCBcCkluZGV4OiBXZWJDb3JlU291cmNlcy5ia2wKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZVNv
dXJjZXMuYmtsCShyZXZpc2lvbiAzOTMwNikKKysrIFdlYkNvcmVTb3VyY2VzLmJrbAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMyLDcgKzMzMiw2IEBAIFRoaXMgZmlsZSBjb250YWlucyB0aGUgbGlzdCBv
ZiBmaWxlcyBuZWUKICAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1BsdWdpbi5jcHAK
ICAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1BsdWdpbkFycmF5LmNwcAogICAgICAg
ICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUG9zaXRpb25FcnJvci5jcHAKLSAgICAgICAgRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU1Bvc2l0aW9uT3B0aW9ucy5jcHAKICAgICAgICAgRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKICAgICAgICAgRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU1Byb2dyZXNzRXZlbnQuY3BwCiAgICAgICAgIERlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNSYW5nZS5jcHAKSW5kZXg6IFdlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZp
c2lvbiAzOTMwNikKKysrIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDY0LDEwICsxMDY0LDYgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxl
DQotCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1l
KVxEZXJpdmVkU291cmNlc1xKU1Bvc2l0aW9uT3B0aW9ucy5oIg0KLQkJCQk+DQotCQkJPC9GaWxl
Pg0KLQkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwk
KFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIg0K
IAkJCQk+DQogCQkJPC9GaWxlPg0KSW5kZXg6IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDM5MzA2KQorKysgV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MzYzLDggKzQzNjMsNiBAQAogCQlGRTgwREE2NjBFOUM0NzAzMDAwRDZG
NzUgLyogSlNHZW9wb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkU4MERBNjIwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvcG9zaXRpb24uaCAq
LzsgfTsKIAkJRkU4MERBNzEwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwREE2RDBF
OUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbkVycm9yLmNwcCAqLzsgfTsKIAkJRkU4MERBNzIw
RTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MERBNkUwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpT
UG9zaXRpb25FcnJvci5oICovOyB9OwotCQlGRTgwREE3MzBFOUM0NzJGMDAwRDZGNzUgLyogSlNQ
b3NpdGlvbk9wdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkU4MERBNkYwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25PcHRpb25zLmNw
cCAqLzsgfTsKLQkJRkU4MERBNzQwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25PcHRpb25z
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwREE3
MDBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbk9wdGlvbnMuaCAqLzsgfTsKIAkJRkVBQjkw
MTIwRUE1MUI5QzAwNjM0OEMzIC8qIEdlb2xvY2F0aW9uU2VydmljZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUFCOTAxMDBFQTUxQjlDMDA2MzQ4
QzMgLyogR2VvbG9jYXRpb25TZXJ2aWNlLmNwcCAqLzsgfTsKIAkJRkVBQjkwMTMwRUE1MUI5QzAw
NjM0OEMzIC8qIEdlb2xvY2F0aW9uU2VydmljZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkVBQjkwMTEwRUE1MUI5QzAwNjM0OEMzIC8qIEdlb2xvY2F0
aW9uU2VydmljZS5oICovOyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCkBAIC05
MTMyLDggKzkxMzAsNiBAQAogCQlGRTgwREE2MjBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9wb3Np
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0dlb3Bvc2l0aW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFODBEQTZEMEU5QzQ3MkYwMDBENkY3NSAv
KiBKU1Bvc2l0aW9uRXJyb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNQb3NpdGlvbkVycm9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU4
MERBNkUwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU1Bvc2l0aW9uRXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRkU4MERBNkYwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25PcHRpb25z
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUG9zaXRpb25PcHRp
b25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkU4MERBNzAwRTlDNDcyRjAw
MEQ2Rjc1IC8qIEpTUG9zaXRpb25PcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTUG9zaXRpb25PcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUZFQUI5MDEwMEVBNTFCOUMwMDYzNDhDMyAvKiBHZW9sb2NhdGlvblNlcnZpY2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VvbG9jYXRpb25TZXJ2aWNlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVBQjkwMTEwRUE1MUI5QzAwNjM0OEMzIC8q
IEdlb2xvY2F0aW9uU2VydmljZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBH
ZW9sb2NhdGlvblNlcnZpY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQ
QlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KQEAgLTEyMDcwLDggKzEyMDY2LDYgQEAKIAkJCQk2
NURGMzFFQTA5RDFDQzYwMDAwQkUzMjUgLyogSlNOb3RhdGlvbi5oICovLAogCQkJCUZFODBEQTZE
MEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuY3BwICovLAogCQkJCUZFODBEQTZF
MEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuaCAqLywKLQkJCQlGRTgwREE2RjBF
OUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbk9wdGlvbnMuY3BwICovLAotCQkJCUZFODBEQTcw
MEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uT3B0aW9ucy5oICovLAogCQkJCTY1REYzMUVC
MDlEMUNDNjAwMDBCRTMyNSAvKiBKU1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAgKi8sCiAJCQkJ
NjVERjMxRUMwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTUHJvY2Vzc2luZ0luc3RydWN0aW9uLmggKi8s
CiAJCQkJRTRCNDIzODUwQ0JGQjczQzAwQUYyRUNFIC8qIEpTUHJvZ3Jlc3NFdmVudC5jcHAgKi8s
CkBAIC0xNTU1OSw3ICsxNTU1Myw2IEBACiAJCQkJQTlEMjQ4MDEwRDc1N0U2OTAwRkRGOTU5IC8q
IEpTUGx1Z2luQXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQjcwRDZDMDlFQjBDN0MwMDlE
ODQ2OCAvKiBKU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZF
ODBEQTcyMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuaCBpbiBIZWFkZXJzICov
LAotCQkJCUZFODBEQTc0MEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uT3B0aW9ucy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNjVERjMyMDAwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTUHJvY2Vzc2lu
Z0luc3RydWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDQ2MTNFRTBDRDY4MUJCMDBGQURB
NzUgLyogSlNQcm9ncmVzc0V2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlDMDkxNTg4RjBEQjQy
MDkyMDBFNTVBRjQgLyogSlNRdWFyYW50aW5lZE9iamVjdFdyYXBwZXIuaCBpbiBIZWFkZXJzICov
LApAQCAtMTc1NTAsNyArMTc1NDMsNiBAQAogCQkJCUE5QzZFNjREMEQ3NDY1RTcwMDY0NDJFOSAv
KiBKU1BsdWdpbkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0I3MEQ2QjA5RUIwQzdD
MDA5RDg0NjggLyogSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUZFODBEQTcxMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJRkU4MERBNzMwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25PcHRp
b25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1REYzMUZGMDlEMUNDNjAwMDBCRTMyNSAvKiBK
U1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDQ2MTNFRDBD
RDY4MUJBMDBGQURBNzUgLyogSlNQcm9ncmVzc0V2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUMwOTE1ODhFMERCNDIwOTIwMEU1NUFGNCAvKiBKU1F1YXJhbnRpbmVkT2JqZWN0V3JhcHBlci5j
cHAgaW4gU291cmNlcyAqLywKSW5kZXg6IGJpbmRpbmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0b20u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIGJpbmRpbmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3BwCShy
ZXZpc2lvbiAzOTMwNikKKysrIGJpbmRpbmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMywxMiArMzMsMzYgQEAKICNpbmNsdWRlICJKU0N1c3RvbVBvc2l0
aW9uQ2FsbGJhY2suaCIKICNpbmNsdWRlICJKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5o
IgogI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCi0jaW5jbHVkZSAiSlNQb3NpdGlvbk9wdGlvbnMu
aCIKKyNpbmNsdWRlICJQb3NpdGlvbk9wdGlvbnMuaCIKIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMgUGFzc1JlZlB0cjxQb3NpdGlvbk9wdGlv
bnM+IGNyZWF0ZVBvc2l0aW9uT3B0aW9ucyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUqIHZhbHVl
KQoreworICAgIGlmICghdmFsdWUtPmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybiAwOworCisg
ICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHZhbHVlKTsKKworICAgIEpTVmFsdWUqIGVu
YWJsZUhpZ2hBY2N1cmFjeVZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVj
LCAiZW5hYmxlSGlnaEFjY3VyYWN5IikpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgYm9vbCBlbmFibGVIaWdoQWNjdXJhY3kgPSBlbmFibGVI
aWdoQWNjdXJhY3lWYWx1ZS0+dG9Cb29sZWFuKGV4ZWMpOworICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBKU1ZhbHVlKiB0aW1lb3V0VmFsdWUg
PSBvYmplY3QtPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJ0aW1lb3V0IikpOworICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgdW5zaWduZWQg
dGltZW91dCA9IHRpbWVvdXRWYWx1ZS0+dG9VSW50MzIoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBQb3NpdGlvbk9w
dGlvbnM6OmNyZWF0ZShlbmFibGVIaWdoQWNjdXJhY3ksIHRpbWVvdXQpOworfQorCiBKU1ZhbHVl
KiBKU0dlb2xvY2F0aW9uOjpnZXRDdXJyZW50UG9zaXRpb24oRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBBcmdMaXN0JiBhcmdzKQogewogICAgIC8vIEFyZ3VtZW50czogUG9zaXRpb25DYWxsYmFjaywg
KG9wdGlvbmFsKVBvc2l0aW9uRXJyb3JDYWxsYmFjaywgKG9wdGlvbmFsKVBvc2l0aW9uT3B0aW9u
cwpAQCAtNjcsOSArOTEsMTIgQEAgSlNWYWx1ZSogSlNHZW9sb2NhdGlvbjo6Z2V0Q3VycmVudFBv
c2l0aQogICAgIH0KICAgICAKICAgICBSZWZQdHI8UG9zaXRpb25PcHRpb25zPiBwb3NpdGlvbk9w
dGlvbnM7Ci0gICAgaWYgKCFhcmdzLmF0KGV4ZWMsIDIpLT5pc1VuZGVmaW5lZE9yTnVsbCgpKQot
ICAgICAgICBwb3NpdGlvbk9wdGlvbnMgPSB0b1Bvc2l0aW9uT3B0aW9ucyhhcmdzLmF0KGV4ZWMs
IDIpKTsKLSAgICAKKyAgICBpZiAoIWFyZ3MuYXQoZXhlYywgMiktPmlzVW5kZWZpbmVkT3JOdWxs
KCkpIHsKKyAgICAgICAgcG9zaXRpb25PcHRpb25zID0gY3JlYXRlUG9zaXRpb25PcHRpb25zKGV4
ZWMsIGFyZ3MuYXQoZXhlYywgMikpOworICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CisgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CisKICAgICBtX2ltcGwt
PmdldEN1cnJlbnRQb3NpdGlvbihwb3NpdGlvbkNhbGxiYWNrLnJlbGVhc2UoKSwgcG9zaXRpb25F
cnJvckNhbGxiYWNrLnJlbGVhc2UoKSwgcG9zaXRpb25PcHRpb25zLmdldCgpKTsKICAgICAKICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTEwMyw5ICsxMzAsMTIgQEAgSlNWYWx1ZSogSlNH
ZW9sb2NhdGlvbjo6d2F0Y2hQb3NpdGlvbihFeAogICAgIH0KICAgICAKICAgICBSZWZQdHI8UG9z
aXRpb25PcHRpb25zPiBwb3NpdGlvbk9wdGlvbnM7Ci0gICAgaWYgKCFhcmdzLmF0KGV4ZWMsIDIp
LT5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICBwb3NpdGlvbk9wdGlvbnMgPSB0b1Bvc2l0
aW9uT3B0aW9ucyhhcmdzLmF0KGV4ZWMsIDIpKTsKLSAgICAKKyAgICBpZiAoIWFyZ3MuYXQoZXhl
YywgMiktPmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgcG9zaXRpb25PcHRpb25zID0g
Y3JlYXRlUG9zaXRpb25PcHRpb25zKGV4ZWMsIGFyZ3MuYXQoZXhlYywgMikpOworICAgICAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKKyAgICB9CisKICAgICBpbnQgd2F0Y2hJRCA9IG1faW1wbC0+d2F0Y2hQb3NpdGlvbihwb3Np
dGlvbkNhbGxiYWNrLnJlbGVhc2UoKSwgcG9zaXRpb25FcnJvckNhbGxiYWNrLnJlbGVhc2UoKSwg
cG9zaXRpb25PcHRpb25zLmdldCgpKTsKICAgICByZXR1cm4ganNOdW1iZXIoZXhlYywgd2F0Y2hJ
RCk7CiB9CkluZGV4OiBwYWdlL1Bvc2l0aW9uT3B0aW9ucy5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGFn
ZS9Qb3NpdGlvbk9wdGlvbnMuaWRsCShyZXZpc2lvbiAzOTMwNikKKysrIHBhZ2UvUG9zaXRpb25P
cHRpb25zLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSwzNSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLW1vZHVsZSBjb3JlIHsKLQotICAgIGlu
dGVyZmFjZSBbCi0gICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3IKLSAgICBdIFBvc2l0aW9uT3B0
aW9ucyB7Ci0gICAgICAgIGF0dHJpYnV0ZSBib29sZWFuIGVuYWJsZUhpZ2hBY2N1cmFjeTsKLSAg
ICAgICAgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgdGltZW91dDsKLSAgICB9OwotCi19Cg==
</data>
<flag name="review"
          id="12255"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>