<?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>63392</bug_id>
          
          <creation_ts>2011-06-25 17:49:35 -0700</creation_ts>
          <short_desc>Indirectly including TextPosition.h and XPathGrammar.h causes compile errors</short_desc>
          <delta_ts>2011-06-28 09:57:15 -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>WebKit Misc.</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="Juan C. Montemayor">j.mont</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>caseq</cc>
    
    <cc>j.mont</cc>
    
    <cc>mrowe</cc>
    
    <cc>peter.rybin</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>427468</commentid>
    <comment_count>0</comment_count>
    <who name="Juan C. Montemayor">j.mont</who>
    <bug_when>2011-06-25 17:49:35 -0700</bug_when>
    <thetext>When both TextPosition.h and XPathGrammar.h are included a compile-error is caused, since XPathGrammar.h defines a macro called NUMBER and TextPosition has a typedef named NUMBER.

PS. I am not sure JavaScriptCore is the right component for this bug... If it is, then new test cases aren&apos;t relevant since no new code was added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427469</commentid>
    <comment_count>1</comment_count>
      <attachid>98611</attachid>
    <who name="Juan C. Montemayor">j.mont</who>
    <bug_when>2011-06-25 17:51:29 -0700</bug_when>
    <thetext>Created attachment 98611
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427470</commentid>
    <comment_count>2</comment_count>
      <attachid>98612</attachid>
    <who name="Juan C. Montemayor">j.mont</who>
    <bug_when>2011-06-25 18:05:02 -0700</bug_when>
    <thetext>Created attachment 98612
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427489</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-06-26 00:22:25 -0700</bug_when>
    <thetext>We use all-uppercase words for macros, so TextPosition.h is indeed wrong using it as template parameter. A similar problem exists in InspectorValues.cpp.

TextPosition has a ton of problems - from a bad name to a huge number of style errors in its code. Supporting both 1-based and 0-based offsets is a particularly bad idea - and that&apos;s why the class is templatized in the first place. It shouldn&apos;t have passed review in its current form.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427518</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-26 07:32:55 -0700</bug_when>
    <thetext>&gt; Supporting both 1-based and 0-based offsets is a particularly bad idea.

I&apos;m not sure we have much of an option in that regard.  The point of TextPosition is for the C++ type checker to help us avoid off-by-one bugs with 1-based and 0-based line numbering systems.  If you see a way to switch to only a 1-based or 0-based line numbering scheme, please write a patch.

(The style issues, of course, should be fixed.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427555</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-06-26 11:13:28 -0700</bug_when>
    <thetext>Do we have a real need to have both numbering systems in core code, not just when displaying a position in Web Inspector? That seems unlikely.

C++ type safety only comes into play when assigning from one TextPosition to another, so off by one errors will still be likely when converting to or from integers anyway.

I don&apos;t think that I&apos;m supposed write a patch for every design/review failure that I see.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427558</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-26 11:20:52 -0700</bug_when>
    <thetext>&gt; Do we have a real need to have both numbering systems in core code, not just when displaying a position in Web Inspector? That seems unlikely.

I don&apos;t see how to avoid this issue.  If you see how to avoid it, please let the rest of us know.

&gt; C++ type safety only comes into play when assigning from one TextPosition to another, so off by one errors will still be likely when converting to or from integers anyway.

Indeed.  However, these values get passed around a bunch of places and it&apos;s helpful to keep track of whether they&apos;re one-based or zero-based.

&gt; I don&apos;t think that I&apos;m supposed write a patch for every design/review failure that I see.

You&apos;re claiming this machinery isn&apos;t needed, but I suspect you don&apos;t understand the design pressures that lead to its creation.  If you see a way to remove it, I&apos;d be more than happy to review such a ptach.  I don&apos;t see how to do it, which is why we have these types.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427559</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-06-26 11:45:31 -0700</bug_when>
    <thetext>Yes, It&apos;s quite possible that I&apos;m missing some design constraints, as I didn&apos;t look at call sites. However, fixing this seems incredibly trivial - in every place that creates TextPosition&lt;OneBasedNumber&gt;, subtract one when constructing. And make matching changes when looking at the values.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428371</commentid>
    <comment_count>8</comment_count>
      <attachid>98612</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2011-06-27 15:20:49 -0700</bug_when>
    <thetext>Comment on attachment 98612
Patch

This change is fine and addresses a build issue.  If anyone is unhappy with the design of TextPosition then please file a new bug to follow up on that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428427</commentid>
    <comment_count>9</comment_count>
      <attachid>98612</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-27 16:16:49 -0700</bug_when>
    <thetext>Comment on attachment 98612
Patch

Clearing flags on attachment: 98612

Committed r89875: &lt;http://trac.webkit.org/changeset/89875&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428428</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-27 16:16:54 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428436</commentid>
    <comment_count>11</comment_count>
    <who name="Peter Rybin">peter.rybin</who>
    <bug_when>2011-06-27 16:33:46 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Yes, It&apos;s quite possible that I&apos;m missing some design constraints, as I didn&apos;t look at call sites. However, fixing this seems incredibly trivial - in every place that creates TextPosition&lt;OneBasedNumber&gt;, subtract one when constructing. And make matching changes when looking at the values.

Alexey,

0 and 1 (as it is stated inside TextPostion.h) was meant as a part of transition phase -- the first step was to keep all integers values intact, only wrap them in annotation types. That would make the change less drastic and more safe. This way all the places that used to work with 1-based numbers now have OneBaseNumber, and the same with 0-based. As you see there has always been some kind of mixture of different number bases. In particular XMLDocumentParserQt.cpp source still contains incorrect 0 -&gt; 1 reinterpertation, that is now revealed and documented and should be fixed.

You are absolutely right -- WebKit doesn&apos;t need to keep both types. In fact they are ready to be easily merged together. You just need to literally merge their interfaces, because all methods have prepared names and constructors are hidden (and decide on internals: 0 or 1). Everything should compile and work.

Unfortunately I&apos;m not involved with WebKit so much to start doing this myself, at least doing this alone.

Peter</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428509</commentid>
    <comment_count>12</comment_count>
    <who name="Peter Rybin">peter.rybin</who>
    <bug_when>2011-06-27 17:51:55 -0700</bug_when>
    <thetext>As a follow-up.
This bug in XMLDocumentParserQt.cpp may need TextPosition0 and TextPosition1 types separate: it is proven that there is bug somewhere, because we end up reinterpreting type. Is could be much easier to track the problem down while integers are still annotated. At least that&apos;s how it seems to me now.

Aside from this merge should be easy. Probably I should prepare it.

Peter


(In reply to comment #11)
&gt; (In reply to comment #7)
&gt; &gt; Yes, It&apos;s quite possible that I&apos;m missing some design constraints, as I didn&apos;t look at call sites. However, fixing this seems incredibly trivial - in every place that creates TextPosition&lt;OneBasedNumber&gt;, subtract one when constructing. And make matching changes when looking at the values.
&gt; 
&gt; Alexey,
&gt; 
&gt; 0 and 1 (as it is stated inside TextPostion.h) was meant as a part of transition phase -- the first step was to keep all integers values intact, only wrap them in annotation types. That would make the change less drastic and more safe. This way all the places that used to work with 1-based numbers now have OneBaseNumber, and the same with 0-based. As you see there has always been some kind of mixture of different number bases. In particular XMLDocumentParserQt.cpp source still contains incorrect 0 -&gt; 1 reinterpertation, that is now revealed and documented and should be fixed.
&gt; 
&gt; You are absolutely right -- WebKit doesn&apos;t need to keep both types. In fact they are ready to be easily merged together. You just need to literally merge their interfaces, because all methods have prepared names and constructors are hidden (and decide on internals: 0 or 1). Everything should compile and work.
&gt; 
&gt; Unfortunately I&apos;m not involved with WebKit so much to start doing this myself, at least doing this alone.
&gt; 
&gt; Peter</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428559</commentid>
    <comment_count>13</comment_count>
    <who name="Peter Rybin">peter.rybin</who>
    <bug_when>2011-06-27 18:44:42 -0700</bug_when>
    <thetext>This is how merge could be done. In place of ZeroBasedNumber and OneBasedNumber the following code could be placed:

class BasedNumber {
public:
    static BasedNumber fromZeroBasedInt(int zeroBasedInt) { return BasedNumber(zeroBasedInt); }
    static BasedNumber fromOneBasedInt(int oneBasedInt) { return BasedNumber(oneBasedInt - 1); }

    BasedNumber() {}

    int zeroBasedInt() const { return m_value0; }
    int oneBasedInt() const { return m_value0 + 1; }

    int convertAsOneBasedInt() const { return m_value0 + 1; }
    int convertAsZeroBasedInt() const { return m_value0; }

    BasedNumber convertToOneBased() const { return *this; }
    BasedNumber convertToZeroBased() const { return *this; }

    bool operator==(BasedNumber other) { return m_value0 == other.m_value0; }
    bool operator!=(BasedNumber other) { return !((*this) == other); }

    static BasedNumber base() { return BasedNumber(0); }
    static BasedNumber belowBase() { return BasedNumber(-1); }

private:
    BasedNumber(int value0) : m_value0(value0) {}
    int m_value0;
};


typedef BasedNumber ZeroBasedNumber;
typedef BasedNumber OneBasedNumber;


This should compile. Obviously, this is only a first step of refactoring.
I would be happy to help doing this, but probably I&apos;m not ready to start this whole thing myself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428694</commentid>
    <comment_count>14</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-06-28 00:50:48 -0700</bug_when>
    <thetext>Would you be willing to file a new bug, and to post these ideas there?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428937</commentid>
    <comment_count>15</comment_count>
    <who name="Peter Rybin">peter.rybin</who>
    <bug_when>2011-06-28 09:57:15 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; Would you be willing to file a new bug, and to post these ideas there?

Sure.
https://bugs.webkit.org/show_bug.cgi?id=63541</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98611</attachid>
            <date>2011-06-25 17:51:29 -0700</date>
            <delta_ts>2011-06-25 18:04:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63392-20110625175128.patch</filename>
            <type>text/plain</type>
            <size>2232</size>
            <attacher name="Juan C. Montemayor">j.mont</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODk3NTkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTEtMDYtMjUgIEp1YW4gQy4gTW9udGVtYXlvciAgPGptb250QGFwcGxlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbmRpcmVjdGx5IGlu
Y2x1ZGluZyBUZXh0UG9zaXRpb24uaCBhbmQgWFBhdGhHcmFtbWFyLmggY2F1c2VzIGNvbXBpbGUg
ZXJyb3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
MzM5MgorCisgICAgICAgICogd3RmL3RleHQvVGV4dFBvc2l0aW9uLmg6CisgICAgICAgIChXVEY6
OlRleHRQb3NpdGlvbjo6VGV4dFBvc2l0aW9uKToKKyAgICAgICAgKFdURjo6VGV4dFBvc2l0aW9u
OjptaW5pbXVtUG9zaXRpb24pOgorICAgICAgICAoV1RGOjpUZXh0UG9zaXRpb246OmJlbG93UmFu
Z2VQb3NpdGlvbik6CisKIDIwMTEtMDYtMjQgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJt
YW5uQHJpbS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUm9iIEJ1aXMuCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvVGV4dFBvc2l0aW9uLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1RleHRQb3NpdGlvbi5oCShyZXZpc2lvbiA4
OTcxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9UZXh0UG9zaXRpb24uaAko
d29ya2luZyBjb3B5KQpAQCAtNTYsMjcgKzU2LDI2IEBAIG5hbWVzcGFjZSBXVEYgewogICogaW50
LXJlY2VpdmluZyBjb25zdHJ1Y3RvcnMgYXJlIGhpZGRlbiBmcm9tIEFQSS4KICAqLwogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBOVU1CRVI+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogY2xhc3MgVGV4dFBv
c2l0aW9uIHsKIHB1YmxpYzoKLSAgICBUZXh0UG9zaXRpb24oTlVNQkVSIGxpbmUsIE5VTUJFUiBj
b2x1bW4pCisgICAgVGV4dFBvc2l0aW9uKFQgbGluZSwgVCBjb2x1bW4pCiAgICAgICAgIDogbV9s
aW5lKGxpbmUpCiAgICAgICAgICwgbV9jb2x1bW4oY29sdW1uKQogICAgIHsKICAgICB9CiAgICAg
VGV4dFBvc2l0aW9uKCkge30KLQogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUZXh0UG9zaXRp
b24mIG90aGVyKSB7IHJldHVybiBtX2xpbmUgPT0gb3RoZXIubV9saW5lICYmIG1fY29sdW1uID09
IG90aGVyLm1fY29sdW1uOyB9CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFRleHRQb3NpdGlv
biYgb3RoZXIpIHsgcmV0dXJuICEoKCp0aGlzKSA9PSBvdGhlcik7IH0KIAogICAgIC8vIEEgJ21p
bmltdW0nIHZhbHVlIG9mIHBvc2l0aW9uLCB1c2VkIGFzIGEgZGVmYXVsdCB2YWx1ZS4KLSAgICBz
dGF0aWMgVGV4dFBvc2l0aW9uPE5VTUJFUj4gbWluaW11bVBvc2l0aW9uKCkgeyByZXR1cm4gVGV4
dFBvc2l0aW9uPE5VTUJFUj4oTlVNQkVSOjpiYXNlKCksIE5VTUJFUjo6YmFzZSgpKTsgfQorICAg
IHN0YXRpYyBUZXh0UG9zaXRpb248VD4gbWluaW11bVBvc2l0aW9uKCkgeyByZXR1cm4gVGV4dFBv
c2l0aW9uPFQ+KFQ6OmJhc2UoKSwgVDo6YmFzZSgpKTsgfQogCiAgICAgLy8gQSB2YWx1ZSB3aXRo
IGxpbmUgdmFsdWUgbGVzcyB0aGFuIGEgbWluaW11bTsgdXNlZCBhcyBhbiBpbXBvc3NpYmxlIHBv
c2l0aW9uLgotICAgIHN0YXRpYyBUZXh0UG9zaXRpb248TlVNQkVSPiBiZWxvd1JhbmdlUG9zaXRp
b24oKSB7IHJldHVybiBUZXh0UG9zaXRpb248TlVNQkVSPihOVU1CRVI6OmJlbG93QmFzZSgpLCBO
VU1CRVI6OmJlbG93QmFzZSgpKTsgfQorICAgIHN0YXRpYyBUZXh0UG9zaXRpb248VD4gYmVsb3dS
YW5nZVBvc2l0aW9uKCkgeyByZXR1cm4gVGV4dFBvc2l0aW9uPFQ+KFQ6OmJlbG93QmFzZSgpLCBU
OjpiZWxvd0Jhc2UoKSk7IH0KIAotICAgIE5VTUJFUiBtX2xpbmU7Ci0gICAgTlVNQkVSIG1fY29s
dW1uOworICAgIFQgbV9saW5lOworICAgIFQgbV9jb2x1bW47CiB9OwogCiBjbGFzcyBPbmVCYXNl
ZE51bWJlcjsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98612</attachid>
            <date>2011-06-25 18:05:02 -0700</date>
            <delta_ts>2011-06-27 16:16:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63392-20110625180501.patch</filename>
            <type>text/plain</type>
            <size>2450</size>
            <attacher name="Juan C. Montemayor">j.mont</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODk3NTkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMTEtMDYtMjUgIEp1YW4gQy4gTW9udGVtYXlvciAgPGptb250QGFwcGxlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbmRpcmVjdGx5IGlu
Y2x1ZGluZyBUZXh0UG9zaXRpb24uaCBhbmQgWFBhdGhHcmFtbWFyLmggY2F1c2VzIGNvbXBpbGUg
ZXJyb3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
MzM5MgorICAgICAgICAKKyAgICAgICAgV2hlbiBib3RoIFRleHRQb3NpdGlvbi5oIGFuZCBYUGF0
aEdyYW1tYXIuaCBhcmUgaW5jbHVkZWQgYSBjb21waWxlLWVycm9yCisgICAgICAgIGlzIGNhdXNl
ZCwgc2luY2UgWFBhdGhHcmFtbWFyLmggZGVmaW5lcyBhIG1hY3JvIGNhbGxlZCBOVU1CRVIgYW5k
IAorICAgICAgICBUZXh0UG9zaXRpb24gaGFzIGEgdHlwZWRlZiBuYW1lZCBOVU1CRVIuCisKKyAg
ICAgICAgKiB3dGYvdGV4dC9UZXh0UG9zaXRpb24uaDoKKyAgICAgICAgKFdURjo6VGV4dFBvc2l0
aW9uOjpUZXh0UG9zaXRpb24pOgorICAgICAgICAoV1RGOjpUZXh0UG9zaXRpb246Om1pbmltdW1Q
b3NpdGlvbik6CisgICAgICAgIChXVEY6OlRleHRQb3NpdGlvbjo6YmVsb3dSYW5nZVBvc2l0aW9u
KToKKwogMjAxMS0wNi0yNCAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5AcmltLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBSb2IgQnVpcy4KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvdGV4dC9UZXh0UG9zaXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL3RleHQvVGV4dFBvc2l0aW9uLmgJKHJldmlzaW9uIDg5NzEwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1RleHRQb3NpdGlvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC01NiwyNyArNTYsMjYgQEAgbmFtZXNwYWNlIFdURiB7CiAgKiBpbnQtcmVjZWl2aW5n
IGNvbnN0cnVjdG9ycyBhcmUgaGlkZGVuIGZyb20gQVBJLgogICovCiAKLXRlbXBsYXRlPHR5cGVu
YW1lIE5VTUJFUj4KK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CiBjbGFzcyBUZXh0UG9zaXRpb24gewog
cHVibGljOgotICAgIFRleHRQb3NpdGlvbihOVU1CRVIgbGluZSwgTlVNQkVSIGNvbHVtbikKKyAg
ICBUZXh0UG9zaXRpb24oVCBsaW5lLCBUIGNvbHVtbikKICAgICAgICAgOiBtX2xpbmUobGluZSkK
ICAgICAgICAgLCBtX2NvbHVtbihjb2x1bW4pCiAgICAgewogICAgIH0KICAgICBUZXh0UG9zaXRp
b24oKSB7fQotCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRleHRQb3NpdGlvbiYgb3RoZXIp
IHsgcmV0dXJuIG1fbGluZSA9PSBvdGhlci5tX2xpbmUgJiYgbV9jb2x1bW4gPT0gb3RoZXIubV9j
b2x1bW47IH0KICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgVGV4dFBvc2l0aW9uJiBvdGhlcikg
eyByZXR1cm4gISgoKnRoaXMpID09IG90aGVyKTsgfQogCiAgICAgLy8gQSAnbWluaW11bScgdmFs
dWUgb2YgcG9zaXRpb24sIHVzZWQgYXMgYSBkZWZhdWx0IHZhbHVlLgotICAgIHN0YXRpYyBUZXh0
UG9zaXRpb248TlVNQkVSPiBtaW5pbXVtUG9zaXRpb24oKSB7IHJldHVybiBUZXh0UG9zaXRpb248
TlVNQkVSPihOVU1CRVI6OmJhc2UoKSwgTlVNQkVSOjpiYXNlKCkpOyB9CisgICAgc3RhdGljIFRl
eHRQb3NpdGlvbjxUPiBtaW5pbXVtUG9zaXRpb24oKSB7IHJldHVybiBUZXh0UG9zaXRpb248VD4o
VDo6YmFzZSgpLCBUOjpiYXNlKCkpOyB9CiAKICAgICAvLyBBIHZhbHVlIHdpdGggbGluZSB2YWx1
ZSBsZXNzIHRoYW4gYSBtaW5pbXVtOyB1c2VkIGFzIGFuIGltcG9zc2libGUgcG9zaXRpb24uCi0g
ICAgc3RhdGljIFRleHRQb3NpdGlvbjxOVU1CRVI+IGJlbG93UmFuZ2VQb3NpdGlvbigpIHsgcmV0
dXJuIFRleHRQb3NpdGlvbjxOVU1CRVI+KE5VTUJFUjo6YmVsb3dCYXNlKCksIE5VTUJFUjo6YmVs
b3dCYXNlKCkpOyB9CisgICAgc3RhdGljIFRleHRQb3NpdGlvbjxUPiBiZWxvd1JhbmdlUG9zaXRp
b24oKSB7IHJldHVybiBUZXh0UG9zaXRpb248VD4oVDo6YmVsb3dCYXNlKCksIFQ6OmJlbG93QmFz
ZSgpKTsgfQogCi0gICAgTlVNQkVSIG1fbGluZTsKLSAgICBOVU1CRVIgbV9jb2x1bW47CisgICAg
VCBtX2xpbmU7CisgICAgVCBtX2NvbHVtbjsKIH07CiAKIGNsYXNzIE9uZUJhc2VkTnVtYmVyOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>