<?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>32748</bug_id>
          
          <creation_ts>2009-12-18 15:41:55 -0800</creation_ts>
          <short_desc>Index validation code must always copy client data</short_desc>
          <delta_ts>2010-01-03 18:40:20 -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>WebGL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kenneth Russell">kbr</reporter>
          <assigned_to name="Kenneth Russell">kbr</assigned_to>
          <cc>brettw</cc>
    
    <cc>cmarrin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>mjs</cc>
    
    <cc>oliver</cc>
    
    <cc>petersont</cc>
    
    <cc>rlp</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>173359</commentid>
    <comment_count>0</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2009-12-18 15:41:55 -0800</bug_when>
    <thetext>The index validation code added in https://bugs.webkit.org/show_bug.cgi?id=31239 tries to minimize copies of indices submitted to OpenGL by referring to client data during calls to bufferData. Unfortunately this optimization is illegal. The client can defeat the validation by uploading out-of-range indices and then changing them only in the client-side copy. Upon submitting data to GL via bufferData, the implementation must immediately copy the incoming data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173360</commentid>
    <comment_count>1</comment_count>
      <attachid>45195</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2009-12-18 15:46:46 -0800</bug_when>
    <thetext>Created attachment 45195
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173362</commentid>
    <comment_count>2</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-12-18 15:49:21 -0800</bug_when>
    <thetext>This is exactly the kind of issue i was referring to in the other bug -- honestly i think we should consider caching maximum values in the buffer itself.

Seriously what&apos;s the perf cost of disabling this optimisation simply to allow indexing arrays?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173363</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-18 15:50:46 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 45195 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173374</commentid>
    <comment_count>4</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2009-12-18 16:05:56 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; This is exactly the kind of issue i was referring to in the other bug --
&gt; honestly i think we should consider caching maximum values in the buffer
&gt; itself.

I remember our earlier discussion.

To be clear, this is a preexisting bug unrelated to the performance optimization I added in https://bugs.webkit.org/show_bug.cgi?id=32466 . Thanks for mentioning it there, because it encouraged me to dig deeper into the validation code.

The semantics of the index validation are that at draw time, precisely the indices referenced in the element array buffer must be validated against the bound array buffers. Always caching the maximum index stored in a WebGLUnsignedByteArray or WebGLUnsignedShortArray would not help. There are situations where a given draw call may not use a particular index in an element array buffer, and it is incorrect to require that all bound array buffers have enough storage to cover the unused index. This is the distinction between the &quot;conservative&quot; and &quot;precise&quot; validation.

&gt; Seriously what&apos;s the perf cost of disabling this optimisation simply to allow
&gt; indexing arrays?

I&apos;m not sure to which optimization you are referring. If you are asking why we don&apos;t always cache the maximum value in WebGLUnsignedByteArrays and WebGLUnsignedShortArrays, doing so would not help, per above, and it would also be very expensive. If you are asking about the performance optimization I added in https://bugs.webkit.org/show_bug.cgi?id=32466 , I&apos;ve measured speedups from 50% to 500% on various demos so I would consider it critical to preserve (and unrelated to this bug).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173411</commentid>
    <comment_count>5</comment_count>
      <attachid>45195</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2009-12-18 16:39:58 -0800</bug_when>
    <thetext>Comment on attachment 45195
Patch

&gt; Index: WebCore/html/canvas/WebGLBuffer.cpp
...
&gt; +        m_elementArrayBuffer = WebGLArrayBuffer::create(array-&gt;buffer().get());

Would it be valuable to change WebGLArrayBuffer to be internally copy-on-write?
Was there no good reason for delaying the copy previously?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173415</commentid>
    <comment_count>6</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2009-12-18 16:45:40 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 45195 [details])
&gt; &gt; Index: WebCore/html/canvas/WebGLBuffer.cpp
&gt; ...
&gt; &gt; +        m_elementArrayBuffer = WebGLArrayBuffer::create(array-&gt;buffer().get());
&gt; 
&gt; Would it be valuable to change WebGLArrayBuffer to be internally copy-on-write?
&gt; Was there no good reason for delaying the copy previously?

This wouldn&apos;t make sense. The WebGLArrayBuffer is the backing store for one or more views of the data in the form of WebGL[T]Arrays. The client assembles data to hand down to the GL using WebGL[T]Arrays.

The index validation is the only case where the WebGL code itself has to retain a copy of client-side data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175492</commentid>
    <comment_count>7</comment_count>
      <attachid>45195</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-12-29 04:34:05 -0800</bug_when>
    <thetext>Comment on attachment 45195
Patch

Code change loks fine, but can you please give the test case a more meaningful name than &quot;bug-32748&quot;? And could you add a description to the test that describes what it is actually testing? Maybe this should go in the ChangeLog too. Basically I&apos;m looking for something that completes the sentence, &quot;Index validation code must always copy client data, because if it doesn&apos;t then __________&quot;.

I will happily r+ this if you can provide that clarification.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175566</commentid>
    <comment_count>8</comment_count>
      <attachid>45603</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2009-12-29 08:43:51 -0800</bug_when>
    <thetext>Created attachment 45603
Revised patch

Addressed review feedback. Renamed test, changed description and added same text to ChangeLogs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175567</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-29 08:45:32 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 45603 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176061</commentid>
    <comment_count>10</comment_count>
      <attachid>45603</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-12-30 15:04:27 -0800</bug_when>
    <thetext>Comment on attachment 45603
Revised patch

Thanks for updating the patch!

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176065</commentid>
    <comment_count>11</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2009-12-30 15:13:06 -0800</bug_when>
    <thetext>Thanks for the review; could you please cq+ the patch? I don&apos;t have commit privileges yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176223</commentid>
    <comment_count>12</comment_count>
      <attachid>45603</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-12-31 10:40:52 -0800</bug_when>
    <thetext>Comment on attachment 45603
Revised patch

Rejecting patch 45603 from commit-queue.

Failed to run &quot;[&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;, &apos;--exit-after-n-failures=1&apos;, &apos;--quiet&apos;]&quot; exit_code: 1
Running build-dumprendertree
Running tests from /Users/eseidel/Projects/CommitQueueSVN/LayoutTests
Testing 11859 test cases.
animations/3d/state-at-end-event-transform.html -&gt; new (results generated in /Users/eseidel/Projects/CommitQueueSVN/LayoutTests/platform/mac/animations/3d)

Exiting early after 1 failures. 113 tests run.
13.49s total testing time

112 test cases (99%) succeeded
1 test case (&lt;1%) was new
1 test case (&lt;1%) had stderr output

Full output: http://webkit-commit-queue.appspot.com/results/155189</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176245</commentid>
    <comment_count>13</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2009-12-31 15:54:07 -0800</bug_when>
    <thetext>I&apos;m not sure whether this is a flaky or broken layout test but its failure is unrelated to my changes. Requesting commit-queue again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176272</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-01 10:30:24 -0800</bug_when>
    <thetext>I suspect this is another instance of bug 28603.  I really should move the commit-queue back to using git until bug 28603 can be fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176500</commentid>
    <comment_count>15</comment_count>
      <attachid>45603</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-01-03 18:40:11 -0800</bug_when>
    <thetext>Comment on attachment 45603
Revised patch

Clearing flags on attachment: 45603

Committed r52700: &lt;http://trac.webkit.org/changeset/52700&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176501</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-01-03 18:40:20 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45195</attachid>
            <date>2009-12-18 15:46:46 -0800</date>
            <delta_ts>2009-12-29 08:43:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>index-mutation.patch</filename>
            <type>text/plain</type>
            <size>7435</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MjM0NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMDktMTItMTggIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElu
ZGV4IHZhbGlkYXRpb24gY29kZSBtdXN0IGFsd2F5cyBjb3B5IGNsaWVudCBkYXRhCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjc0OAorCisgICAgICAg
IFRlc3Q6IGZhc3QvY2FudmFzL3dlYmdsL2J1Zy0zMjc0OC5odG1sCisKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEJ1ZmZlcjo6
V2ViR0xCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xCdWZmZXI6OmFzc29jaWF0ZUJ1
ZmZlckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xCdWZmZXI6OmFzc29jaWF0ZUJ1ZmZl
clN1YkRhdGEpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmg6CisKIDIwMDkt
MTItMTggIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggbWFjIEdl
b2xvY2F0aW9uIGJ1aWxkLgpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHAJKHJl
dmlzaW9uIDUyMzQ1KQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDYgQEAgV2ViR0xCdWZmZXI6OldlYkdMQnVmZmVyKFdl
YkdMUmVuZGVyaW5nQwogICAgIDogQ2FudmFzT2JqZWN0KGN0eCkKICAgICAsIG1fZWxlbWVudEFy
cmF5QnVmZmVyQnl0ZUxlbmd0aCgwKQogICAgICwgbV9hcnJheUJ1ZmZlckJ5dGVMZW5ndGgoMCkK
LSAgICAsIG1fZWxlbWVudEFycmF5QnVmZmVyQ2xvbmVkKGZhbHNlKQogICAgICwgbV9uZXh0QXZh
aWxhYmxlQ2FjaGVFbnRyeSgwKQogewogICAgIHNldE9iamVjdChjb250ZXh0KCktPmdyYXBoaWNz
Q29udGV4dDNEKCktPmNyZWF0ZUJ1ZmZlcigpKTsKQEAgLTg5LDggKzg4LDEwIEBAIGJvb2wgV2Vi
R0xCdWZmZXI6OmFzc29jaWF0ZUJ1ZmZlckRhdGEodW4KICAgICBpZiAodGFyZ2V0ID09IEdyYXBo
aWNzQ29udGV4dDNEOjpFTEVNRU5UX0FSUkFZX0JVRkZFUikgewogICAgICAgICBjbGVhckNhY2hl
ZE1heEluZGljZXMoKTsKICAgICAgICAgbV9lbGVtZW50QXJyYXlCdWZmZXJCeXRlTGVuZ3RoID0g
YXJyYXktPmJ5dGVMZW5ndGgoKTsKLSAgICAgICAgbV9lbGVtZW50QXJyYXlCdWZmZXIgPSBhcnJh
eS0+YnVmZmVyKCk7Ci0gICAgICAgIG1fZWxlbWVudEFycmF5QnVmZmVyQ2xvbmVkID0gZmFsc2U7
CisgICAgICAgIC8vIFdlIG11c3QgYWx3YXlzIGNsb25lIHRoZSBpbmNvbWluZyBkYXRhIGJlY2F1
c2UgY2xpZW50LXNpZGUKKyAgICAgICAgLy8gbW9kaWZpY2F0aW9ucyB3aXRob3V0IGNhbGxpbmcg
YnVmZmVyRGF0YSBvciBidWZmZXJTdWJEYXRhCisgICAgICAgIC8vIG11c3QgbmV2ZXIgYmUgYWJs
ZSB0byBjaGFuZ2UgdGhlIHZhbGlkYXRpb24gcmVzdWx0cy4KKyAgICAgICAgbV9lbGVtZW50QXJy
YXlCdWZmZXIgPSBXZWJHTEFycmF5QnVmZmVyOjpjcmVhdGUoYXJyYXktPmJ1ZmZlcigpLmdldCgp
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIApAQCAtMTE4LDEyICsxMTksNiBA
QCBib29sIFdlYkdMQnVmZmVyOjphc3NvY2lhdGVCdWZmZXJTdWJEYXRhCiAgICAgICAgIGlmICh1
b2Zmc2V0ID4gbV9lbGVtZW50QXJyYXlCdWZmZXJCeXRlTGVuZ3RoIHx8IGFycmF5LT5ieXRlTGVu
Z3RoKCkgPiBtX2VsZW1lbnRBcnJheUJ1ZmZlckJ5dGVMZW5ndGggLSB1b2Zmc2V0KQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgCi0gICAgICAgIC8vIElmIHdlIGFscmVh
ZHkgaGF2ZSBhIGJ1ZmZlciwgd2UgbmVlZCB0byBjbG9uZSBpdCBhbmQgYWRkIHRoZSBuZXcgZGF0
YQotICAgICAgICBpZiAobV9lbGVtZW50QXJyYXlCdWZmZXIgJiYgIW1fZWxlbWVudEFycmF5QnVm
ZmVyQ2xvbmVkKSB7Ci0gICAgICAgICAgICBtX2VsZW1lbnRBcnJheUJ1ZmZlciA9IFdlYkdMQXJy
YXlCdWZmZXI6OmNyZWF0ZShtX2VsZW1lbnRBcnJheUJ1ZmZlci5nZXQoKSk7Ci0gICAgICAgICAg
ICBtX2VsZW1lbnRBcnJheUJ1ZmZlckNsb25lZCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAg
ICAgIAogICAgICAgICBtZW1jcHkoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KG1fZWxlbWVu
dEFycmF5QnVmZmVyLT5kYXRhKCkpICsgb2Zmc2V0LCBhcnJheS0+YmFzZUFkZHJlc3MoKSwgYXJy
YXktPmJ5dGVMZW5ndGgoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KSW5kZXg6IFdl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMQnVmZmVyLmgJKHJldmlzaW9uIDUyMzQ1KQorKysgV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTEJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgUmVmUHRyPFdlYkdMQXJyYXlCdWZmZXI+IG1fZWxl
bWVudEFycmF5QnVmZmVyOwogICAgICAgICB1bnNpZ25lZCBtX2VsZW1lbnRBcnJheUJ1ZmZlckJ5
dGVMZW5ndGg7CiAgICAgICAgIHVuc2lnbmVkIG1fYXJyYXlCdWZmZXJCeXRlTGVuZ3RoOwotICAg
ICAgICBib29sIG1fZWxlbWVudEFycmF5QnVmZmVyQ2xvbmVkOwogCiAgICAgICAgIC8vIE9wdGlt
aXphdGlvbiBmb3IgaW5kZXggdmFsaWRhdGlvbi4gRm9yIGVhY2ggdHlwZSBvZiBpbmRleAogICAg
ICAgICAvLyAoaS5lLiwgVU5TSUdORURfU0hPUlQpLCBjYWNoZSB0aGUgbWF4aW11bSBpbmRleCBp
biB0aGUKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDUyMzQ2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDktMTItMTggIEtlbm5ldGggUnVz
c2VsbCAgPGtickBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEluZGV4IHZhbGlkYXRpb24gY29kZSBtdXN0IGFsd2F5cyBjb3B5IGNs
aWVudCBkYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zMjc0OAorCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvYnVnLTMyNzQ4LWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvYnVnLTMyNzQ4Lmh0bWw6
IEFkZGVkLgorCiAyMDA5LTEyLTE4ICBCcmlhbiBXZWluc3RlaW4gIDxid2VpbnN0ZWluQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFJvYmVuLgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvd2ViZ2wvYnVnLTMyNzQ4LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9idWctMzI3NDgtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvYnVnLTMyNzQ4LWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNiBAQAorUmVncmVzc2lvbiB0ZXN0
IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI3NDggOiBJbmRl
eCB2YWxpZGF0aW9uIGNvZGUgbXVzdCBhbHdheXMgY29weSBjbGllbnQgZGF0YQorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKK1Rlc3QgdGhhdCBjbGllbnQtc2lkZSBtb2RpZmljYXRpb25z
IG9mIGluZGljZXMgZG8gbm90IGNoYW5nZSB2YWxpZGF0aW9uIHJlc3VsdHMKK1BBU1MgY29udGV4
dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRV9TVFJJUCwgNCwgY29udGV4dC5VTlNJR05F
RF9TSE9SVCwgMikgaXMgdW5kZWZpbmVkLgorUEFTUyBjb250ZXh0LmRyYXdFbGVtZW50cyhjb250
ZXh0LlRSSUFOR0xFX1NUUklQLCA0LCBjb250ZXh0LlVOU0lHTkVEX1NIT1JULCAwKSB0aHJldyBl
eGNlcHRpb24gR0wgZXJyb3IgMTI4MiBpbiBkcmF3RWxlbWVudHMuCitQQVNTIGNvbnRleHQuZHJh
d0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVfU1RSSVAsIDQsIGNvbnRleHQuVU5TSUdORURfU0hP
UlQsIDQpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIGRyYXdFbGVtZW50cy4KK1BB
U1MgY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRV9TVFJJUCwgNCwgY29udGV4
dC5VTlNJR05FRF9TSE9SVCwgMikgaXMgdW5kZWZpbmVkLgorUEFTUyBjb250ZXh0LmRyYXdFbGVt
ZW50cyhjb250ZXh0LlRSSUFOR0xFX1NUUklQLCA0LCBjb250ZXh0LlVOU0lHTkVEX1NIT1JULCAw
KSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MiBpbiBkcmF3RWxlbWVudHMuCitQQVNTIGNv
bnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVfU1RSSVAsIDQsIGNvbnRleHQuVU5T
SUdORURfU0hPUlQsIDQpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIGRyYXdFbGVt
ZW50cy4KKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2J1Zy0zMjc0OC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2J1Zy0zMjc0OC5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvYnVnLTMyNzQ4
Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDYgQEAKKzxodG1sPgorPGhlYWQ+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYmdsLXRlc3QuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdSZWdyZXNzaW9uIHRl
c3QgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
Mjc0OCI+aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyNzQ4PC9hPiA6
IDxjb2RlPkluZGV4IHZhbGlkYXRpb24gY29kZSBtdXN0IGFsd2F5cyBjb3B5IGNsaWVudCBkYXRh
PC9jb2RlPicpOworCit2YXIgY29udGV4dCA9IGNyZWF0ZTNERGVidWdDb250ZXh0KCk7Cit2YXIg
cHJvZ3JhbSA9IGxvYWRTdGFuZGFyZFByb2dyYW0oY29udGV4dCk7CisKK2NvbnRleHQudXNlUHJv
Z3JhbShwcm9ncmFtKTsKK3ZhciB2ZXJ0ZXhPYmplY3QgPSBjb250ZXh0LmNyZWF0ZUJ1ZmZlcigp
OworY29udGV4dC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsKK2NvbnRleHQuYmluZEJ1ZmZl
cihjb250ZXh0LkFSUkFZX0JVRkZFUiwgdmVydGV4T2JqZWN0KTsKKy8vIDQgdmVydGljZXMgLT4g
MiB0cmlhbmdsZXMKK2NvbnRleHQuYnVmZmVyRGF0YShjb250ZXh0LkFSUkFZX0JVRkZFUiwgbmV3
IFdlYkdMRmxvYXRBcnJheShbIDAsMCwwLCAwLDEsMCwgMSwwLDAsIDEsMSwwIF0pLCBjb250ZXh0
LlNUQVRJQ19EUkFXKTsKK2NvbnRleHQudmVydGV4QXR0cmliUG9pbnRlcigwLCAzLCBjb250ZXh0
LkZMT0FULCBmYWxzZSwgMCwgMCk7CisKK3ZhciBpbmRleE9iamVjdCA9IGNvbnRleHQuY3JlYXRl
QnVmZmVyKCk7CisKK2RlYnVnKCJUZXN0IHRoYXQgY2xpZW50LXNpZGUgbW9kaWZpY2F0aW9ucyBv
ZiBpbmRpY2VzIGRvIG5vdCBjaGFuZ2UgdmFsaWRhdGlvbiByZXN1bHRzIikKK2NvbnRleHQuYmlu
ZEJ1ZmZlcihjb250ZXh0LkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBpbmRleE9iamVjdCk7Cit2YXIg
aW5kaWNlcyA9IG5ldyBXZWJHTFVuc2lnbmVkU2hvcnRBcnJheShbIDEwMDAwLCAwLCAxLCAyLCAz
LCAxMDAwMCBdKTsKK2NvbnRleHQuYnVmZmVyRGF0YShjb250ZXh0LkVMRU1FTlRfQVJSQVlfQlVG
RkVSLCBpbmRpY2VzLCBjb250ZXh0LlNUQVRJQ19EUkFXKTsKK3Nob3VsZEJlVW5kZWZpbmVkKCJj
b250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFX1NUUklQLCA0LCBjb250ZXh0LlVO
U0lHTkVEX1NIT1JULCAyKSIpOworc2hvdWxkVGhyb3coImNvbnRleHQuZHJhd0VsZW1lbnRzKGNv
bnRleHQuVFJJQU5HTEVfU1RSSVAsIDQsIGNvbnRleHQuVU5TSUdORURfU0hPUlQsIDApIik7Citz
aG91bGRUaHJvdygiY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRV9TVFJJUCwg
NCwgY29udGV4dC5VTlNJR05FRF9TSE9SVCwgNCkiKTsKK2luZGljZXNbMF0gPSAyOworaW5kaWNl
c1s1XSA9IDE7CitzaG91bGRCZVVuZGVmaW5lZCgiY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4
dC5UUklBTkdMRV9TVFJJUCwgNCwgY29udGV4dC5VTlNJR05FRF9TSE9SVCwgMikiKTsKK3Nob3Vs
ZFRocm93KCJjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFX1NUUklQLCA0LCBj
b250ZXh0LlVOU0lHTkVEX1NIT1JULCAwKSIpOworc2hvdWxkVGhyb3coImNvbnRleHQuZHJhd0Vs
ZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVfU1RSSVAsIDQsIGNvbnRleHQuVU5TSUdORURfU0hPUlQs
IDQpIik7CisKK2RlYnVnKCIiKQorc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0
PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="27180"
          type_id="1"
          status="-"
          setter="mjs"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45603</attachid>
            <date>2009-12-29 08:43:51 -0800</date>
            <delta_ts>2010-01-03 18:40:11 -0800</delta_ts>
            <desc>Revised patch</desc>
            <filename>index-validation.patch</filename>
            <type>text/plain</type>
            <size>8303</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MjYyMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMDktMTItMjkgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElu
ZGV4IHZhbGlkYXRpb24gY29kZSBtdXN0IGFsd2F5cyBjb3B5IGNsaWVudCBkYXRhCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjc0OAorCisgICAgICAg
IENsaWVudCBkYXRhIG11c3QgYWx3YXlzIGJlIGNvcGllZCBkdXJpbmcgYnVmZmVyRGF0YSBhbmQK
KyAgICAgICAgYnVmZmVyU3ViRGF0YSBjYWxscywgYmVjYXVzZSBvdGhlcndpc2UgdGhlIGRhdGEg
dGhlIEdMIHVzZXMgdG8KKyAgICAgICAgZHJhdyBtYXkgZGlmZmVyIGZyb20gdGhhdCBjaGVja2Vk
IGJ5IHRoZSBpbmRleCB2YWxpZGF0aW9uIGNvZGUuCisKKyAgICAgICAgVGVzdDogZmFzdC9jYW52
YXMvd2ViZ2wvaW5kZXgtdmFsaWRhdGlvbi1jb3BpZXMtaW5kaWNlcy5odG1sCisKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEJ1
ZmZlcjo6V2ViR0xCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xCdWZmZXI6OmFzc29j
aWF0ZUJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xCdWZmZXI6OmFzc29jaWF0
ZUJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmg6CisK
IDIwMDktMTItMjkgIExhc3psbyBHb21ib3MgIDxsYXN6bG8uMS5nb21ib3NAbm9raWEuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpJbmRleDog
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHAJKHJldmlzaW9uIDUyNjIwKQorKysgV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2
LDYgQEAgV2ViR0xCdWZmZXI6OldlYkdMQnVmZmVyKFdlYkdMUmVuZGVyaW5nQwogICAgIDogQ2Fu
dmFzT2JqZWN0KGN0eCkKICAgICAsIG1fZWxlbWVudEFycmF5QnVmZmVyQnl0ZUxlbmd0aCgwKQog
ICAgICwgbV9hcnJheUJ1ZmZlckJ5dGVMZW5ndGgoMCkKLSAgICAsIG1fZWxlbWVudEFycmF5QnVm
ZmVyQ2xvbmVkKGZhbHNlKQogICAgICwgbV9uZXh0QXZhaWxhYmxlQ2FjaGVFbnRyeSgwKQogewog
ICAgIHNldE9iamVjdChjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4dDNEKCktPmNyZWF0ZUJ1ZmZl
cigpKTsKQEAgLTg5LDggKzg4LDEwIEBAIGJvb2wgV2ViR0xCdWZmZXI6OmFzc29jaWF0ZUJ1ZmZl
ckRhdGEodW4KICAgICBpZiAodGFyZ2V0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpFTEVNRU5UX0FS
UkFZX0JVRkZFUikgewogICAgICAgICBjbGVhckNhY2hlZE1heEluZGljZXMoKTsKICAgICAgICAg
bV9lbGVtZW50QXJyYXlCdWZmZXJCeXRlTGVuZ3RoID0gYXJyYXktPmJ5dGVMZW5ndGgoKTsKLSAg
ICAgICAgbV9lbGVtZW50QXJyYXlCdWZmZXIgPSBhcnJheS0+YnVmZmVyKCk7Ci0gICAgICAgIG1f
ZWxlbWVudEFycmF5QnVmZmVyQ2xvbmVkID0gZmFsc2U7CisgICAgICAgIC8vIFdlIG11c3QgYWx3
YXlzIGNsb25lIHRoZSBpbmNvbWluZyBkYXRhIGJlY2F1c2UgY2xpZW50LXNpZGUKKyAgICAgICAg
Ly8gbW9kaWZpY2F0aW9ucyB3aXRob3V0IGNhbGxpbmcgYnVmZmVyRGF0YSBvciBidWZmZXJTdWJE
YXRhCisgICAgICAgIC8vIG11c3QgbmV2ZXIgYmUgYWJsZSB0byBjaGFuZ2UgdGhlIHZhbGlkYXRp
b24gcmVzdWx0cy4KKyAgICAgICAgbV9lbGVtZW50QXJyYXlCdWZmZXIgPSBXZWJHTEFycmF5QnVm
ZmVyOjpjcmVhdGUoYXJyYXktPmJ1ZmZlcigpLmdldCgpKTsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogICAgIApAQCAtMTE4LDEyICsxMTksNiBAQCBib29sIFdlYkdMQnVmZmVyOjphc3Nv
Y2lhdGVCdWZmZXJTdWJEYXRhCiAgICAgICAgIGlmICh1b2Zmc2V0ID4gbV9lbGVtZW50QXJyYXlC
dWZmZXJCeXRlTGVuZ3RoIHx8IGFycmF5LT5ieXRlTGVuZ3RoKCkgPiBtX2VsZW1lbnRBcnJheUJ1
ZmZlckJ5dGVMZW5ndGggLSB1b2Zmc2V0KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICAgICAgCi0gICAgICAgIC8vIElmIHdlIGFscmVhZHkgaGF2ZSBhIGJ1ZmZlciwgd2UgbmVl
ZCB0byBjbG9uZSBpdCBhbmQgYWRkIHRoZSBuZXcgZGF0YQotICAgICAgICBpZiAobV9lbGVtZW50
QXJyYXlCdWZmZXIgJiYgIW1fZWxlbWVudEFycmF5QnVmZmVyQ2xvbmVkKSB7Ci0gICAgICAgICAg
ICBtX2VsZW1lbnRBcnJheUJ1ZmZlciA9IFdlYkdMQXJyYXlCdWZmZXI6OmNyZWF0ZShtX2VsZW1l
bnRBcnJheUJ1ZmZlci5nZXQoKSk7Ci0gICAgICAgICAgICBtX2VsZW1lbnRBcnJheUJ1ZmZlckNs
b25lZCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgICAgIAogICAgICAgICBtZW1jcHkoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KG1fZWxlbWVudEFycmF5QnVmZmVyLT5kYXRhKCkpICsg
b2Zmc2V0LCBhcnJheS0+YmFzZUFkZHJlc3MoKSwgYXJyYXktPmJ5dGVMZW5ndGgoKSk7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xC
dWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmgJ
KHJldmlzaW9uIDUyNjIwKQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgUmVmUHRyPFdlYkdMQXJyYXlCdWZmZXI+IG1fZWxlbWVudEFycmF5QnVmZmVyOwogICAgICAg
ICB1bnNpZ25lZCBtX2VsZW1lbnRBcnJheUJ1ZmZlckJ5dGVMZW5ndGg7CiAgICAgICAgIHVuc2ln
bmVkIG1fYXJyYXlCdWZmZXJCeXRlTGVuZ3RoOwotICAgICAgICBib29sIG1fZWxlbWVudEFycmF5
QnVmZmVyQ2xvbmVkOwogCiAgICAgICAgIC8vIE9wdGltaXphdGlvbiBmb3IgaW5kZXggdmFsaWRh
dGlvbi4gRm9yIGVhY2ggdHlwZSBvZiBpbmRleAogICAgICAgICAvLyAoaS5lLiwgVU5TSUdORURf
U0hPUlQpLCBjYWNoZSB0aGUgbWF4aW11bSBpbmRleCBpbiB0aGUKSW5kZXg6IExheW91dFRlc3Rz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDUyNjIyKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTcgQEAKKzIwMDktMTItMjkgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluZGV4IHZh
bGlkYXRpb24gY29kZSBtdXN0IGFsd2F5cyBjb3B5IGNsaWVudCBkYXRhCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjc0OAorCisgICAgICAgIENsaWVu
dCBkYXRhIG11c3QgYWx3YXlzIGJlIGNvcGllZCBkdXJpbmcgYnVmZmVyRGF0YSBhbmQKKyAgICAg
ICAgYnVmZmVyU3ViRGF0YSBjYWxscywgYmVjYXVzZSBvdGhlcndpc2UgdGhlIGRhdGEgdGhlIEdM
IHVzZXMgdG8KKyAgICAgICAgZHJhdyBtYXkgZGlmZmVyIGZyb20gdGhhdCBjaGVja2VkIGJ5IHRo
ZSBpbmRleCB2YWxpZGF0aW9uIGNvZGUuCisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9p
bmRleC12YWxpZGF0aW9uLWNvcGllcy1pbmRpY2VzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9jYW52YXMvd2ViZ2wvaW5kZXgtdmFsaWRhdGlvbi1jb3BpZXMtaW5kaWNlcy5o
dG1sOiBBZGRlZC4KKwogMjAwOS0xMi0yOSAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFjaWVqIFN0YWNob3dpYWsuCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9pbmRleC12YWxpZGF0aW9uLWNvcGllcy1pbmRpY2Vz
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJn
bC9pbmRleC12YWxpZGF0aW9uLWNvcGllcy1pbmRpY2VzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2luZGV4LXZhbGlkYXRpb24tY29w
aWVzLWluZGljZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2IEBACitU
ZXN0IHRoYXQgY2xpZW50IGRhdGEgaXMgYWx3YXlzIGNvcGllZCBkdXJpbmcgYnVmZmVyRGF0YSBh
bmQgYnVmZmVyU3ViRGF0YSBjYWxscywgYmVjYXVzZSBvdGhlcndpc2UgdGhlIGRhdGEgdGhlIEdM
IHVzZXMgdG8gZHJhdyBtYXkgZGlmZmVyIGZyb20gdGhhdCBjaGVja2VkIGJ5IHRoZSBpbmRleCB2
YWxpZGF0aW9uIGNvZGUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUmVncmVzc2lv
biB0ZXN0IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI3NDgg
OiBJbmRleCB2YWxpZGF0aW9uIGNvZGUgbXVzdCBhbHdheXMgY29weSBjbGllbnQgZGF0YQorUEFT
UyBjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFX1NUUklQLCA0LCBjb250ZXh0
LlVOU0lHTkVEX1NIT1JULCAyKSBpcyB1bmRlZmluZWQuCitQQVNTIGNvbnRleHQuZHJhd0VsZW1l
bnRzKGNvbnRleHQuVFJJQU5HTEVfU1RSSVAsIDQsIGNvbnRleHQuVU5TSUdORURfU0hPUlQsIDAp
IHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIGRyYXdFbGVtZW50cy4KK1BBU1MgY29u
dGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRV9TVFJJUCwgNCwgY29udGV4dC5VTlNJ
R05FRF9TSE9SVCwgNCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODIgaW4gZHJhd0VsZW1l
bnRzLgorUEFTUyBjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFX1NUUklQLCA0
LCBjb250ZXh0LlVOU0lHTkVEX1NIT1JULCAyKSBpcyB1bmRlZmluZWQuCitQQVNTIGNvbnRleHQu
ZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVfU1RSSVAsIDQsIGNvbnRleHQuVU5TSUdORURf
U0hPUlQsIDApIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIGRyYXdFbGVtZW50cy4K
K1BBU1MgY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRV9TVFJJUCwgNCwgY29u
dGV4dC5VTlNJR05FRF9TSE9SVCwgNCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODIgaW4g
ZHJhd0VsZW1lbnRzLgorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvaW5kZXgtdmFs
aWRhdGlvbi1jb3BpZXMtaW5kaWNlcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvY2FudmFzL3dlYmdsL2luZGV4LXZhbGlkYXRpb24tY29waWVzLWluZGljZXMuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2luZGV4LXZhbGlkYXRp
b24tY29waWVzLWluZGljZXMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NyBAQAorPGh0
bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2ViZ2wt
dGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRp
b24oJ1Rlc3QgdGhhdCBjbGllbnQgZGF0YSBpcyBhbHdheXMgY29waWVkIGR1cmluZyBidWZmZXJE
YXRhIGFuZCBidWZmZXJTdWJEYXRhIGNhbGxzLCBiZWNhdXNlIG90aGVyd2lzZSB0aGUgZGF0YSB0
aGUgR0wgdXNlcyB0byBkcmF3IG1heSBkaWZmZXIgZnJvbSB0aGF0IGNoZWNrZWQgYnkgdGhlIGlu
ZGV4IHZhbGlkYXRpb24gY29kZS4nKQorCitkZWJ1ZygnUmVncmVzc2lvbiB0ZXN0IGZvciA8YSBo
cmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI3NDgiPmh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjc0ODwvYT4gOiA8Y29kZT5JbmRl
eCB2YWxpZGF0aW9uIGNvZGUgbXVzdCBhbHdheXMgY29weSBjbGllbnQgZGF0YTwvY29kZT4nKTsK
KwordmFyIGNvbnRleHQgPSBjcmVhdGUzRERlYnVnQ29udGV4dCgpOwordmFyIHByb2dyYW0gPSBs
b2FkU3RhbmRhcmRQcm9ncmFtKGNvbnRleHQpOworCitjb250ZXh0LnVzZVByb2dyYW0ocHJvZ3Jh
bSk7Cit2YXIgdmVydGV4T2JqZWN0ID0gY29udGV4dC5jcmVhdGVCdWZmZXIoKTsKK2NvbnRleHQu
ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMCk7Citjb250ZXh0LmJpbmRCdWZmZXIoY29udGV4dC5B
UlJBWV9CVUZGRVIsIHZlcnRleE9iamVjdCk7CisvLyA0IHZlcnRpY2VzIC0+IDIgdHJpYW5nbGVz
Citjb250ZXh0LmJ1ZmZlckRhdGEoY29udGV4dC5BUlJBWV9CVUZGRVIsIG5ldyBXZWJHTEZsb2F0
QXJyYXkoWyAwLDAsMCwgMCwxLDAsIDEsMCwwLCAxLDEsMCBdKSwgY29udGV4dC5TVEFUSUNfRFJB
Vyk7Citjb250ZXh0LnZlcnRleEF0dHJpYlBvaW50ZXIoMCwgMywgY29udGV4dC5GTE9BVCwgZmFs
c2UsIDAsIDApOworCit2YXIgaW5kZXhPYmplY3QgPSBjb250ZXh0LmNyZWF0ZUJ1ZmZlcigpOwor
Citjb250ZXh0LmJpbmRCdWZmZXIoY29udGV4dC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgaW5kZXhP
YmplY3QpOwordmFyIGluZGljZXMgPSBuZXcgV2ViR0xVbnNpZ25lZFNob3J0QXJyYXkoWyAxMDAw
MCwgMCwgMSwgMiwgMywgMTAwMDAgXSk7Citjb250ZXh0LmJ1ZmZlckRhdGEoY29udGV4dC5FTEVN
RU5UX0FSUkFZX0JVRkZFUiwgaW5kaWNlcywgY29udGV4dC5TVEFUSUNfRFJBVyk7CitzaG91bGRC
ZVVuZGVmaW5lZCgiY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRV9TVFJJUCwg
NCwgY29udGV4dC5VTlNJR05FRF9TSE9SVCwgMikiKTsKK3Nob3VsZFRocm93KCJjb250ZXh0LmRy
YXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFX1NUUklQLCA0LCBjb250ZXh0LlVOU0lHTkVEX1NI
T1JULCAwKSIpOworc2hvdWxkVGhyb3coImNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJ
QU5HTEVfU1RSSVAsIDQsIGNvbnRleHQuVU5TSUdORURfU0hPUlQsIDQpIik7CitpbmRpY2VzWzBd
ID0gMjsKK2luZGljZXNbNV0gPSAxOworc2hvdWxkQmVVbmRlZmluZWQoImNvbnRleHQuZHJhd0Vs
ZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVfU1RSSVAsIDQsIGNvbnRleHQuVU5TSUdORURfU0hPUlQs
IDIpIik7CitzaG91bGRUaHJvdygiY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdM
RV9TVFJJUCwgNCwgY29udGV4dC5VTlNJR05FRF9TSE9SVCwgMCkiKTsKK3Nob3VsZFRocm93KCJj
b250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFX1NUUklQLCA0LCBjb250ZXh0LlVO
U0lHTkVEX1NIT1JULCA0KSIpOworCitkZWJ1ZygiIikKK3N1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>