<?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>6814</bug_id>
          
          <creation_ts>2006-01-25 18:41:40 -0800</creation_ts>
          <short_desc>Implement selection methods for RenderTextField</short_desc>
          <delta_ts>2006-03-09 11:40:35 -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>Forms</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>6986</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adele Peterson">adele</reporter>
          <assigned_to name="Adele Peterson">adele</assigned_to>
          <cc>justin.garcia</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>29963</commentid>
    <comment_count>0</comment_count>
    <who name="Adele Peterson">adele</who>
    <bug_when>2006-01-25 18:41:40 -0800</bug_when>
    <thetext> </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30432</commentid>
    <comment_count>1</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-01-28 17:12:38 -0800</bug_when>
    <thetext>These bugs that block us switching to the new text field shoul not be marked P1.

Once we turn it on, these would be P1/major bugs, of course, but at the moment they are just part of the &quot;switch to a new text field&quot; task and should not be in the P1 list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>34680</commentid>
    <comment_count>2</comment_count>
    <who name="Adele Peterson">adele</who>
    <bug_when>2006-03-01 16:59:45 -0800</bug_when>
    <thetext>&lt;rdar://problem/4463736&gt; Implement selection methods for RenderTextField (6814)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35359</commentid>
    <comment_count>3</comment_count>
      <attachid>6910</attachid>
    <who name="Adele Peterson">adele</who>
    <bug_when>2006-03-07 00:48:07 -0800</bug_when>
    <thetext>Created attachment 6910
patch

first cut at the selection methods.

selectionStart and selectionEnd work well-- although there might be a faster/easier way to compute them.

setSelectionRange doesn&apos;t quite work yet.  I think it has something to do with who has focus after the selection is set.  Not sure though.

Also, this has a proposed fix for the following bug which was blocking testing of the selection methods.
&lt;rdar://problem/4463742&gt; clicking on buttons or links outside of a contenteditable area causes selection to be lost</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35461</commentid>
    <comment_count>4</comment_count>
      <attachid>6926</attachid>
    <who name="Adele Peterson">adele</who>
    <bug_when>2006-03-07 14:51:23 -0800</bug_when>
    <thetext>Created attachment 6926
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35471</commentid>
    <comment_count>5</comment_count>
      <attachid>6926</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-03-07 16:36:08 -0800</bug_when>
    <thetext>Comment on attachment 6926
patch

Please use private instead of protected.

No need to check for a document() of 0 in RenderTextField::selectionStart(). A renderer can&apos;t outlast its document.

No need to explicitly convert to VisiblePosition in RenderTextField::selectionStart().

+    int start = kMax(s, 0);

Don&apos;t need that line of code, since getVisiblePositionForIndex already does the right thing.

The setSelection helper does nothing if either position is null. I don&apos;t think that&apos;s helpful behavior. I suggest asserting that neither is null, and further, I suggest asserting that each is within the text field&apos;s generated content. I don&apos;t think you need a separate function for this. It could be folded into setSelectionRange.

Frame needs a function that does setSelection after doing shouldChangeSelection and you should be calling that.

getVisiblePositionForIndex is willing to advance past the end of the div. That&apos;s not good -- if the caller of setSelectionRange passes a large value for end you&apos;ll end up selecting &quot;off the end&quot;. If you change it to instead return the end for those values, then it&apos;s guaranteed to never return null, which makes it easier to use.

Normally we leave out the word &quot;get&quot; from function names like these.

getIndexForVisiblePosition should take a const VisiblePosition&amp; rather than a VisiblePosition.

You can make a faster version of getVisiblePositionForIndex by using CharacterIterator.

You can make a much faster version of getIndexForVisiblePosition by composing a range and calling TextIterator::rangeLength.

I noticed that clearSelectionIfNeeded needs to be a private function in DocumentImpl.

As we discussed, we need to document what setFocusNode does clearly to figure out when it should and should not clear the selection. Once we understand that we can figure out whether a boolean parameter is an appropriate way to prevent it from doing so.

The change to the logic about clearing selections in dispatchMouseEvent is not clearly correct. We need more research to decide what rule we&apos;re trying to implement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35568</commentid>
    <comment_count>6</comment_count>
      <attachid>6948</attachid>
    <who name="Adele Peterson">adele</who>
    <bug_when>2006-03-08 15:29:40 -0800</bug_when>
    <thetext>Created attachment 6948
patch to address Darin&apos;s comments

I think this patch addresses Darin&apos;s comments.

I&apos;ve removed the setFocusNode changes, since those issues are tricky and still need to be worked out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35569</commentid>
    <comment_count>7</comment_count>
      <attachid>6948</attachid>
    <who name="Adele Peterson">adele</who>
    <bug_when>2006-03-08 16:06:44 -0800</bug_when>
    <thetext>Comment on attachment 6948
patch to address Darin&apos;s comments

ugh.  I&apos;m hitting the assert when the text field is invisible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35591</commentid>
    <comment_count>8</comment_count>
      <attachid>6948</attachid>
    <who name="Adele Peterson">adele</who>
    <bug_when>2006-03-08 22:27:32 -0800</bug_when>
    <thetext>Comment on attachment 6948
patch to address Darin&apos;s comments

On second thought, I&apos;m going to file another bug about this loose end with selection failing with hidden text fields.  I&apos;d like to fix that in a separate checkin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35594</commentid>
    <comment_count>9</comment_count>
    <who name="Adele Peterson">adele</who>
    <bug_when>2006-03-08 22:35:02 -0800</bug_when>
    <thetext>Two related bugs filed:
http://bugzilla.opendarwin.org/show_bug.cgi?id=7675
When new text fields change from visibility:hidden to visibility:visible, value doesn&apos;t display

and
http://bugzilla.opendarwin.org/show_bug.cgi?id=7676
Selection methods on new text fields don&apos;t work if text field is hidden</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35626</commentid>
    <comment_count>10</comment_count>
      <attachid>6948</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-03-09 07:55:03 -0800</bug_when>
    <thetext>Comment on attachment 6948
patch to address Darin&apos;s comments

a)

+    int indexForVisiblePosition(const VisiblePosition&amp; pos);

No need for the name pos here; I would leave it out.

b)

+    setSelectionRange(selectionStart(), end);

If you set an end that is &lt; the start with setSelectionEnd, should it move the start back too?

c)

+    end = kMax(end, start);

More use of kMax is deprecated. Instead you should use the standard max function template from &lt;algorithm&gt;. Just make sure something includes &lt;algorithm&gt; and something does &quot;using namespace std&quot; and then call max instead of kMax.

d)

If m_div is 0, then RenderTextField::setSelectionRange is going to fail its assertions. The actual function looks like it will just change the selection to nothing.

e)

RenderTextField::setSelectionRange always calls shouldChangeSelection even if there&apos;s no selection change; that doesn&apos;t seem good. I think there is a good argument for adding a function to frame that first checks if the new selection is any different from the old, then calls shouldChangeSelection and then setSelection.

f)

It&apos;s kind of annoying that CharacterIterator won&apos;t let you call advance if you&apos;re already at the end, because it does let you try to advance past the end and handles that correctly by pinging you at the end. At some point, we should fix that so you can remove the atEnd() check here.

g)

+    return VisiblePosition(it.range()-&gt;endContainer(ec), it.range()-&gt;endOffset(ec), DOWNSTREAM);

Maybe that should be UPSTREAM? I&apos;m not sure.

These are all minor, so I&apos;m marking this review+.

The most important issue is (d), and even that is an issue in debug versions only. I&apos;d like you to add some tests about how setSelectionRange behaves when m_div is 0, but I don&apos;t understand under what circumstances it can be 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35639</commentid>
    <comment_count>11</comment_count>
    <who name="Adele Peterson">adele</who>
    <bug_when>2006-03-09 11:22:54 -0800</bug_when>
    <thetext>After looking at the code more to fully understand when m_div gets initialized, I found that updateFromElement gets called right as the RenderTextField is being attached, so by the time any of the other methods are called on the renderer, m_div should already be initialized.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6910</attachid>
            <date>2006-03-07 00:48:07 -0800</date>
            <delta_ts>2006-03-07 14:51:23 -0800</delta_ts>
            <desc>patch</desc>
            <filename>select_patch.txt</filename>
            <type>text/plain</type>
            <size>6078</size>
            <attacher name="Adele Peterson">adele</attacher>
            
              <data encoding="base64">SW5kZXg6IHJlbmRlcmluZy9SZW5kZXJUZXh0RmllbGQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHJlbmRl
cmluZy9SZW5kZXJUZXh0RmllbGQuY3BwCShyZXZpc2lvbiAxMzE4MikKKysrIHJlbmRlcmluZy9S
ZW5kZXJUZXh0RmllbGQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw4IEBACiAjaW5j
bHVkZSAiSFRNTElucHV0RWxlbWVudEltcGwuaCIKICNpbmNsdWRlICJIVE1MVGV4dEZpZWxkSW5u
ZXJFbGVtZW50SW1wbC5oIgogI2luY2x1ZGUgImRvbV9lbGVtZW50aW1wbC5oIgorI2luY2x1ZGUg
IlNlbGVjdGlvbkNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJWaXNpYmxlUG9zaXRpb24uaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMjcsMjQgKzEyOSw1MCBAQAogCiBpbnQgUmVuZGVy
VGV4dEZpZWxkOjpzZWxlY3Rpb25TdGFydCgpCiB7Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCB0
aGlzLgorICAgIERvY3VtZW50SW1wbCogZG9jID0gZG9jdW1lbnQoKTsKKyAgICBpZiAoZG9jICYm
IG1fZGl2KSB7CisgICAgICAgIFNlbGVjdGlvbkNvbnRyb2xsZXIgc2VsZWN0aW9uID0gZG9jLT5m
cmFtZSgpLT5zZWxlY3Rpb24oKTsKKyAgICAgICAgaWYgKHNlbGVjdGlvbi5zdGFydCgpLm5vZGUo
KSAmJiBzZWxlY3Rpb24uc3RhcnQoKS5ub2RlKCktPnJvb3RFZGl0YWJsZUVsZW1lbnQoKSA9PSBt
X2RpdikgeworICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZwID0gVmlzaWJsZVBvc2l0aW9u
KHNlbGVjdGlvbi5zdGFydCgpKTsKKyAgICAgICAgICAgIFZpc2libGVQb3NpdGlvbiBpdCA9IFZp
c2libGVQb3NpdGlvbihtX2Rpdi5nZXQoKSwgMCwgRE9XTlNUUkVBTSk7CisgICAgICAgICAgICBp
bnQgY2hhcmFjdGVyX2NvdW50ID0gMDsKKyAgICAgICAgICAgIGZvciAoOyBpdC5pc05vdE51bGwo
KTsgaXQgPSBpdC5uZXh0KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNFcXVhbElnbm9yaW5n
QWZmaW5pdHkodnAsIGl0KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoYXJhY3Rlcl9j
b3VudDsKKyAgICAgICAgICAgICAgICBjaGFyYWN0ZXJfY291bnQrKzsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KICAgICByZXR1cm4gMDsKIH0KIAogaW50IFJlbmRlclRleHRGaWVs
ZDo6c2VsZWN0aW9uRW5kKCkKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCisgICAg
RG9jdW1lbnRJbXBsKiBkb2MgPSBkb2N1bWVudCgpOworICAgIGlmIChkb2MgJiYgbV9kaXYpIHsK
KyAgICAgICAgU2VsZWN0aW9uQ29udHJvbGxlciBzZWxlY3Rpb24gPSBkb2MtPmZyYW1lKCktPnNl
bGVjdGlvbigpOworICAgICAgICBpZiAoc2VsZWN0aW9uLmVuZCgpLm5vZGUoKSAmJiBzZWxlY3Rp
b24uZW5kKCkubm9kZSgpLT5yb290RWRpdGFibGVFbGVtZW50KCkgPT0gbV9kaXYpIHsKKyAgICAg
ICAgICAgIFZpc2libGVQb3NpdGlvbiB2cCA9IFZpc2libGVQb3NpdGlvbihzZWxlY3Rpb24uZW5k
KCkpOworICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIGl0ID0gVmlzaWJsZVBvc2l0aW9uKG1f
ZGl2LmdldCgpLCAwLCBET1dOU1RSRUFNKTsKKyAgICAgICAgICAgIGludCBjaGFyYWN0ZXJfY291
bnQgPSAwOworICAgICAgICAgICAgZm9yICg7IGl0LmlzTm90TnVsbCgpOyBpdCA9IGl0Lm5leHQo
KSkgeworICAgICAgICAgICAgICAgIGlmIChpc0VxdWFsSWdub3JpbmdBZmZpbml0eSh2cCwgaXQp
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2hhcmFjdGVyX2NvdW50OworICAgICAgICAg
ICAgICAgIGNoYXJhY3Rlcl9jb3VudCsrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQogICAgIHJldHVybiAwOwogfQogCiB2b2lkIFJlbmRlclRleHRGaWVsZDo6c2V0U2VsZWN0aW9u
U3RhcnQoaW50IHN0YXJ0KQogewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KKyAgICBz
ZXRTZWxlY3Rpb25SYW5nZShzdGFydCwgc2VsZWN0aW9uRW5kKCkpOwogfQogIAogdm9pZCBSZW5k
ZXJUZXh0RmllbGQ6OnNldFNlbGVjdGlvbkVuZChpbnQgZW5kKQogewotICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQgdGhpcy4KKyAgICBzZXRTZWxlY3Rpb25SYW5nZShzZWxlY3Rpb25TdGFydCgpLCBl
bmQpOwogfQogICAgIAogdm9pZCBSZW5kZXJUZXh0RmllbGQ6OnNlbGVjdCgpCkBAIC0xNTQsOSAr
MTgyLDI3IEBACiAgICAgICAgIGRvYy0+ZnJhbWUoKS0+c2VsZWN0Q29udGVudHNPZk5vZGUobV9k
aXYuZ2V0KCkpOwogfQogCi12b2lkIFJlbmRlclRleHRGaWVsZDo6c2V0U2VsZWN0aW9uUmFuZ2Uo
aW50IHN0YXJ0LCBpbnQgZW5kKQordm9pZCBSZW5kZXJUZXh0RmllbGQ6OnNldFNlbGVjdGlvblJh
bmdlKGludCBzLCBpbnQgZSkKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCisgICAg
aW50IHN0YXJ0ID0ga01heChzLCAwKTsKKyAgICBpbnQgZW5kID0ga01heChlLCBzdGFydCk7Cisg
ICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0UG9zaXRpb24gPSBWaXNpYmxlUG9zaXRpb24obV9kaXYu
Z2V0KCksIDAsIERPV05TVFJFQU0pOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc3RhcnQ7IGkr
KykgeworICAgICAgICBpZiAoc3RhcnRQb3NpdGlvbi5pc051bGwoKSkKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBzdGFydFBvc2l0aW9uID0gc3RhcnRQb3NpdGlvbi5uZXh0KCk7CisgICAg
fQorICAgIFZpc2libGVQb3NpdGlvbiBlbmRQb3NpdGlvbiA9IFZpc2libGVQb3NpdGlvbihzdGFy
dFBvc2l0aW9uKTsKKyAgICBmb3IgKGludCBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkrKykgeworICAg
ICAgICBpZiAoZW5kUG9zaXRpb24uaXNOdWxsKCkpCisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgZW5kUG9zaXRpb24gPSBlbmRQb3NpdGlvbi5uZXh0KCk7CisgICAgfQorICAgIGlmIChzdGFy
dFBvc2l0aW9uLmlzTm90TnVsbCgpICYmIGVuZFBvc2l0aW9uLmlzTm90TnVsbCgpKSB7CisgICAg
ICAgIFNlbGVjdGlvbkNvbnRyb2xsZXIgc2VsID0gU2VsZWN0aW9uQ29udHJvbGxlcihzdGFydFBv
c2l0aW9uLCBlbmRQb3NpdGlvbik7ICAgIAorICAgICAgICBpZiAoZG9jdW1lbnQoKS0+ZnJhbWUo
KS0+c2hvdWxkQ2hhbmdlU2VsZWN0aW9uKHNlbCkpCisgICAgICAgICAgICBkb2N1bWVudCgpLT5m
cmFtZSgpLT5zZXRTZWxlY3Rpb24oc2VsKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVuZGVyVGV4dEZp
ZWxkOjpzdWJ0cmVlSGFzQ2hhbmdlZCgpCkluZGV4OiBkb20vRG9jdW1lbnRJbXBsLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gZG9tL0RvY3VtZW50SW1wbC5oCShyZXZpc2lvbiAxMzE4MikKKysrIGRvbS9Eb2N1
bWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMzUzLDcgKzM1Myw3IEBACiAgICAgUVN0cmlu
Z0xpc3QgYXZhaWxhYmxlU3R5bGVTaGVldHMoKSBjb25zdDsKIAogICAgIE5vZGVJbXBsKiBmb2N1
c05vZGUoKSBjb25zdCB7IHJldHVybiBtX2ZvY3VzTm9kZS5nZXQoKTsgfQotICAgIGJvb2wgc2V0
Rm9jdXNOb2RlKFBhc3NSZWZQdHI8Tm9kZUltcGw+KTsKKyAgICBib29sIHNldEZvY3VzTm9kZShQ
YXNzUmVmUHRyPE5vZGVJbXBsPiwgYm9vbCByZXRhaW5TZWxlY3Rpb24gPSBmYWxzZSk7CiAgICAg
dm9pZCBjbGVhclNlbGVjdGlvbklmTmVlZGVkKE5vZGVJbXBsKik7CiAKICAgICBOb2RlSW1wbCog
aG92ZXJOb2RlKCkgY29uc3QgeyByZXR1cm4gbV9ob3Zlck5vZGUuZ2V0KCk7IH0KSW5kZXg6IGRv
bS9Eb2N1bWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGRvbS9Eb2N1bWVudEltcGwuY3BwCShy
ZXZpc2lvbiAxMzE4MikKKysrIGRvbS9Eb2N1bWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMDE4LDcgKzIwMTgsNyBAQAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxSZW5kZXJXaWRnZXQg
Kj4ocmVuZGVyZXIpLT53aWRnZXQoKTsKIH0KIAotYm9vbCBEb2N1bWVudEltcGw6OnNldEZvY3Vz
Tm9kZShQYXNzUmVmUHRyPE5vZGVJbXBsPiBuZXdGb2N1c05vZGUpCitib29sIERvY3VtZW50SW1w
bDo6c2V0Rm9jdXNOb2RlKFBhc3NSZWZQdHI8Tm9kZUltcGw+IG5ld0ZvY3VzTm9kZSwgYm9vbCBy
ZXRhaW5TZWxlY3Rpb24pCiB7ICAgIAogICAgIC8vIE1ha2Ugc3VyZSBuZXdGb2N1c05vZGUgaXMg
YWN0dWFsbHkgaW4gdGhpcyBkb2N1bWVudAogICAgIGlmIChuZXdGb2N1c05vZGUgJiYgKG5ld0Zv
Y3VzTm9kZS0+Z2V0RG9jdW1lbnQoKSAhPSB0aGlzKSkKQEAgLTIwMzMsNyArMjAzMyw4IEBACiAg
ICAgYm9vbCBmb2N1c0NoYW5nZUJsb2NrZWQgPSBmYWxzZTsKICAgICBSZWZQdHI8Tm9kZUltcGw+
IG9sZEZvY3VzTm9kZSA9IG1fZm9jdXNOb2RlOwogICAgIG1fZm9jdXNOb2RlID0gMDsKLSAgICBj
bGVhclNlbGVjdGlvbklmTmVlZGVkKG5ld0ZvY3VzTm9kZS5nZXQoKSk7CisgICAgaWYgKCFyZXRh
aW5TZWxlY3Rpb24pCisgICAgICAgIGNsZWFyU2VsZWN0aW9uSWZOZWVkZWQobmV3Rm9jdXNOb2Rl
LmdldCgpKTsKIAogICAgIC8vIFJlbW92ZSBmb2N1cyBmcm9tIHRoZSBleGlzdGluZyBmb2N1cyBu
b2RlIChpZiBhbnkpCiAgICAgaWYgKG9sZEZvY3VzTm9kZSAmJiAhb2xkRm9jdXNOb2RlLT5tX2lu
RGV0YWNoKSB7IApAQCAtMjA1NywxNCArMjA1OCwxNiBAQAogICAgICAgICAgICAgZm9jdXNDaGFu
Z2VCbG9ja2VkID0gdHJ1ZTsKICAgICAgICAgICAgIG5ld0ZvY3VzTm9kZSA9IDA7CiAgICAgICAg
IH0KLSAgICAgICAgY2xlYXJTZWxlY3Rpb25JZk5lZWRlZChuZXdGb2N1c05vZGUuZ2V0KCkpOwor
ICAgICAgICBpZiAoIXJldGFpblNlbGVjdGlvbikKKyAgICAgICAgICAgIGNsZWFyU2VsZWN0aW9u
SWZOZWVkZWQobmV3Rm9jdXNOb2RlLmdldCgpKTsKICAgICAgICAgb2xkRm9jdXNOb2RlLT5kaXNw
YXRjaFVJRXZlbnQoRE9NRm9jdXNPdXRFdmVudCk7CiAgICAgICAgIGlmIChtX2ZvY3VzTm9kZSkg
ewogICAgICAgICAgICAgLy8gaGFuZGxlciBzaGlmdGVkIGZvY3VzCiAgICAgICAgICAgICBmb2N1
c0NoYW5nZUJsb2NrZWQgPSB0cnVlOwogICAgICAgICAgICAgbmV3Rm9jdXNOb2RlID0gMDsKICAg
ICAgICAgfQotICAgICAgICBjbGVhclNlbGVjdGlvbklmTmVlZGVkKG5ld0ZvY3VzTm9kZS5nZXQo
KSk7CisgICAgICAgIGlmICghcmV0YWluU2VsZWN0aW9uKQorICAgICAgICAgICAgY2xlYXJTZWxl
Y3Rpb25JZk5lZWRlZChuZXdGb2N1c05vZGUuZ2V0KCkpOwogICAgICAgICBpZiAoKG9sZEZvY3Vz
Tm9kZS5nZXQoKSA9PSB0aGlzKSAmJiBvbGRGb2N1c05vZGUtPmhhc09uZVJlZigpKQogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAKSW5kZXg6IHBhZ2UvRnJhbWVWaWV3LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBwYWdlL0ZyYW1lVmlldy5jcHAJKHJldmlzaW9uIDEzMTgyKQorKysg
cGFnZS9GcmFtZVZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDA0LDggKzEwMDQsOSBAQAog
ICAgICAgICAgICAgaWYgKCFtX2ZyYW1lLT5kb2N1bWVudCgpLT5zZXRGb2N1c05vZGUobm9kZSkp
CiAgICAgICAgICAgICAgICAgc3dhbGxvd0V2ZW50ID0gdHJ1ZTsKICAgICAgICAgfSBlbHNlIGlm
ICghbm9kZSB8fCAhbm9kZS0+Zm9jdXNlZCgpKSB7Ci0gICAgICAgICAgICBpZiAoIW1fZnJhbWUt
PmRvY3VtZW50KCktPnNldEZvY3VzTm9kZSgwKSkKLSAgICAgICAgICAgIHN3YWxsb3dFdmVudCA9
IHRydWU7CisgICAgICAgICAgICBib29sIHNob3VsZFJldGFpblNlbGVjdGlvbiA9IG5vZGUgPyB0
cnVlIDogZmFsc2U7CisgICAgICAgICAgICBpZiAoIW1fZnJhbWUtPmRvY3VtZW50KCktPnNldEZv
Y3VzTm9kZSgwLCBzaG91bGRSZXRhaW5TZWxlY3Rpb24pKQorICAgICAgICAgICAgICAgIHN3YWxs
b3dFdmVudCA9IHRydWU7CiAgICAgICAgIH0KICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6926</attachid>
            <date>2006-03-07 14:51:23 -0800</date>
            <delta_ts>2006-03-08 15:29:40 -0800</delta_ts>
            <desc>patch</desc>
            <filename>selection_patch.txt</filename>
            <type>text/plain</type>
            <size>18274</size>
            <attacher name="Adele Peterson">adele</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxMzE5MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsMzQgQEAKIDIwMDYtMDMtMDcgIEFkZWxlIFBldGVyc29uICA8YWRlbGVAYXBwbGUu
Y29tPgogCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0g
Rml4ZXMgZm9yOgorICAgICAgICBodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19i
dWcuY2dpP2lkPTY4MTQKKyAgICAgICAgSW1wbGVtZW50IHNlbGVjdGlvbiBtZXRob2RzIGZvciBS
ZW5kZXJUZXh0RmllbGQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ0NjM3NDI+CisgICAgICAg
IENsaWNraW5nIG9uIGJ1dHRvbnMgb3IgbGlua3Mgb3V0c2lkZSBvZiBhIGNvbnRlbnRlZGl0YWJs
ZSBhcmVhIGNhdXNlcyBzZWxlY3Rpb24gdG8gYmUgbG9zdAorCisgICAgICAgICogZG9tL0RvY3Vt
ZW50SW1wbC5jcHA6IChXZWJDb3JlOjpEb2N1bWVudEltcGw6OnNldEZvY3VzTm9kZSk6IEFkZGVk
IHJldGFpblNlbGVjdGlvbiBwYXJhbWV0ZXIgc28gdGhhdAorICAgICAgICBjYWxsZXJzIHdobyd2
ZSBqdXN0IHNldCB0aGUgc2VsZWN0aW9uIGNhbiB0ZWxsIHNldEZvY3VzTm9kZSBub3QgdG8gZGVz
dHJveSB0aGUgc2VsZWN0aW9uLgorICAgICAgICAqIGRvbS9Eb2N1bWVudEltcGwuaDogQWRkZWQg
cmV0YWluU2VsZWN0aW9uIHBhcmFtZXRlci4KKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDogKFdl
YkNvcmU6OkZyYW1lOjpzZXRGb2N1c05vZGVJZk5lZWRlZCk6IFNpbmNlIGFsbCBjYWxsZXJzIG9m
IHRoaXMgbWV0aG9kIGhhdmUgc2V0IHNlbGVjdGlvbnMgdGhhdCBhcmUgc3RpbGwgCisgICAgICAg
IG5lZWRlZCBhZnRlciB0aGUgbm9kZSBpcyBmb2N1c2VkLCB3ZSBjYWxsIHNldEZvY3VzTm9kZSB3
aXRoIHRoZSByZXRhaW5TZWxlY3Rpb24gcGFyYW1ldGVyIHNldCB0byB0cnVlLgorICAgICAgICAq
IHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6ZGlzcGF0
Y2hNb3VzZUV2ZW50KTogSWYgdGhlIG5ldyBub2RlIGlzbid0IG1vdXNlIGZvY3VzYWJsZSwgYW5k
IHlvdSdyZSBnb2luZyB0byBmb2N1cyB0aGUgd2hvbGUgZG9jIGluc3RlYWQgb2YgdGhlIG5vZGUs
IAorICAgICAgICBjYWxsIHNldEZvY3VzTm9kZSB3aXRoIHRoZSByZXRhaW5TZWxlY3Rpb24gcGFy
YW1ldGVyIHNldCB0byB0cnVlIHNvIHRoZSBzZWxlY3Rpb24gZG9lc24ndCBnZXQgYmxvd24gYXdh
eS4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dEZpZWxkLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRleHRGaWVsZDo6c2VsZWN0aW9uU3RhcnQpOiBDYWxscyBnZXRJbmRleEZv
clZpc2libGVQb3NpdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRGaWVsZDo6c2Vs
ZWN0aW9uRW5kKTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0RmllbGQ6OnNl
dFNlbGVjdGlvblN0YXJ0KTogY2FsbHMgc2V0U2VsZWN0aW9uUmFuZ2UuCisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUZXh0RmllbGQ6OnNldFNlbGVjdGlvbkVuZCk6IGRpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGV4dEZpZWxkOjpzZXRTZWxlY3Rpb25SYW5nZSk6IHZhbGlkYXRlcyBz
dGFydCBhbmQgZW5kIGluZGljZXMsIGFuZCBjYWxscyBzZXRTZWxlY3Rpb24uCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUZXh0RmllbGQ6OnNldFNlbGVjdGlvbik6IEFkZGVkIGhlbHBlciBtZXRo
b2QgdG8gc2V0IHNlbGVjdGlvbiBiYXNlZCBvZiBWaXNpYmxlUG9zaXRpb25zLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGV4dEZpZWxkOjpnZXRWaXNpYmxlUG9zaXRpb25Gb3JJbmRleCk6IEFk
ZGVkIGhlbHBlciBtZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0RmllbGQ6Omdl
dEluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKTogQWRkZWQgaGVscGVyIG1ldGhvZC4KKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVGV4dEZpZWxkLmg6IEFkZGVkIG5ldyBoZWxwZXIgbWV0aG9kcyBm
b3Igc2VsZWN0aW9uLgorCisyMDA2LTAzLTA3ICBBZGVsZSBQZXRlcnNvbiAgPGFkZWxlQGFwcGxl
LmNvbT4KKwogICAgICAgICBSZXZpZXdlZCBieSBIeWF0dC4KIAogICAgICAgICAtIEZpeCBmb3Ig
aHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD03MzE5CkluZGV4
OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0RmllbGQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0RmllbGQuaAkocmV2aXNpb24gMTMxODIpCisrKyBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0RmllbGQuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsOSAr
NTUsMTMgQEAKICAgICBTdHJpbmcgdGV4dCgpOwogCiBwcm90ZWN0ZWQ6CisgICAgdm9pZCBzZXRT
ZWxlY3Rpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBzdGFydCwgY29uc3QgVmlzaWJsZVBvc2l0
aW9uJiBlbmQpOworICAgIFZpc2libGVQb3NpdGlvbiBnZXRWaXNpYmxlUG9zaXRpb25Gb3JJbmRl
eChpbnQgaW5kZXgpOworICAgIGludCBnZXRJbmRleEZvclZpc2libGVQb3NpdGlvbihWaXNpYmxl
UG9zaXRpb24gcG9zKTsKKyAgICAKICAgICBSZWZQdHI8SFRNTFRleHRGaWVsZElubmVyRWxlbWVu
dEltcGw+IG1fZGl2OwotICAgIAogICAgIGJvb2wgbV9kaXJ0eTsKKwogfTsKIAogfQpJbmRleDog
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZpZWxkLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0RmllbGQuY3BwCShyZXZpc2lvbiAxMzE4MikKKysrIFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRGaWVsZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDYgKzI4LDggQEAKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50SW1wbC5oIgogI2luY2x1ZGUg
IkhUTUxUZXh0RmllbGRJbm5lckVsZW1lbnRJbXBsLmgiCiAjaW5jbHVkZSAiZG9tX2VsZW1lbnRp
bXBsLmgiCisjaW5jbHVkZSAiU2VsZWN0aW9uQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIlZpc2li
bGVQb3NpdGlvbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY0LDcgKzY2LDYgQEAK
ICAgICBkaXZTdHlsZS0+c2V0T3ZlcmZsb3coT0hJRERFTik7CiAgICAgZGl2U3R5bGUtPnNldFdo
aXRlU3BhY2UoTk9XUkFQKTsKICAgICBkaXZTdHlsZS0+c2V0VXNlck1vZGlmeShSRUFEX1dSSVRF
KTsKLSAgICAKICAgICByZXR1cm4gZGl2U3R5bGU7CiB9CiAKQEAgLTEyNywyNCArMTI4LDMyIEBA
CiAKIGludCBSZW5kZXJUZXh0RmllbGQ6OnNlbGVjdGlvblN0YXJ0KCkKIHsKLSAgICAvLyBGSVhN
RTogSW1wbGVtZW50IHRoaXMuCisgICAgRG9jdW1lbnRJbXBsKiBkb2MgPSBkb2N1bWVudCgpOwor
ICAgIGlmIChkb2MpIHsKKyAgICAgICAgU2VsZWN0aW9uQ29udHJvbGxlciBzZWxlY3Rpb24gPSBk
b2MtPmZyYW1lKCktPnNlbGVjdGlvbigpOworICAgICAgICByZXR1cm4gZ2V0SW5kZXhGb3JWaXNp
YmxlUG9zaXRpb24oVmlzaWJsZVBvc2l0aW9uKHNlbGVjdGlvbi5zdGFydCgpKSk7ICAgICAgICAK
KyAgICB9CiAgICAgcmV0dXJuIDA7CiB9CiAKIGludCBSZW5kZXJUZXh0RmllbGQ6OnNlbGVjdGlv
bkVuZCgpCiB7Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgorICAgIERvY3VtZW50SW1w
bCogZG9jID0gZG9jdW1lbnQoKTsKKyAgICBpZiAoZG9jKSB7CisgICAgICAgIFNlbGVjdGlvbkNv
bnRyb2xsZXIgc2VsZWN0aW9uID0gZG9jLT5mcmFtZSgpLT5zZWxlY3Rpb24oKTsKKyAgICAgICAg
cmV0dXJuIGdldEluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKFZpc2libGVQb3NpdGlvbihzZWxlY3Rp
b24uZW5kKCkpKTsgICAgICAgIAorICAgIH0KICAgICByZXR1cm4gMDsKIH0KIAogdm9pZCBSZW5k
ZXJUZXh0RmllbGQ6OnNldFNlbGVjdGlvblN0YXJ0KGludCBzdGFydCkKIHsKLSAgICAvLyBGSVhN
RTogSW1wbGVtZW50IHRoaXMuCisgICAgc2V0U2VsZWN0aW9uUmFuZ2Uoc3RhcnQsIHNlbGVjdGlv
bkVuZCgpKTsKIH0KICAKIHZvaWQgUmVuZGVyVGV4dEZpZWxkOjpzZXRTZWxlY3Rpb25FbmQoaW50
IGVuZCkKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCisgICAgc2V0U2VsZWN0aW9u
UmFuZ2Uoc2VsZWN0aW9uU3RhcnQoKSwgZW5kKTsKIH0KICAgICAKIHZvaWQgUmVuZGVyVGV4dEZp
ZWxkOjpzZWxlY3QoKQpAQCAtMTU0LDExICsxNjMsNDggQEAKICAgICAgICAgZG9jLT5mcmFtZSgp
LT5zZWxlY3RDb250ZW50c09mTm9kZShtX2Rpdi5nZXQoKSk7CiB9CiAKLXZvaWQgUmVuZGVyVGV4
dEZpZWxkOjpzZXRTZWxlY3Rpb25SYW5nZShpbnQgc3RhcnQsIGludCBlbmQpCit2b2lkIFJlbmRl
clRleHRGaWVsZDo6c2V0U2VsZWN0aW9uUmFuZ2UoaW50IHMsIGludCBlKQogewotICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQgdGhpcy4KKyAgICBpbnQgc3RhcnQgPSBrTWF4KHMsIDApOworICAgIGlu
dCBlbmQgPSBrTWF4KGUsIHN0YXJ0KTsKKyAgICBzZXRTZWxlY3Rpb24oZ2V0VmlzaWJsZVBvc2l0
aW9uRm9ySW5kZXgoc3RhcnQpLCBnZXRWaXNpYmxlUG9zaXRpb25Gb3JJbmRleChlbmQpKTsKIH0K
IAordm9pZCBSZW5kZXJUZXh0RmllbGQ6OnNldFNlbGVjdGlvbihjb25zdCBWaXNpYmxlUG9zaXRp
b24mIHN0YXJ0LCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGVuZCkKK3sKKyAgICBpZiAoc3RhcnQu
aXNOb3ROdWxsKCkgJiYgZW5kLmlzTm90TnVsbCgpKSB7CisgICAgICAgIFNlbGVjdGlvbkNvbnRy
b2xsZXIgc2VsID0gU2VsZWN0aW9uQ29udHJvbGxlcihzdGFydCwgZW5kKTsgICAgCisgICAgICAg
IGlmIChkb2N1bWVudCgpLT5mcmFtZSgpLT5zaG91bGRDaGFuZ2VTZWxlY3Rpb24oc2VsKSkKKyAg
ICAgICAgICAgIGRvY3VtZW50KCktPmZyYW1lKCktPnNldFNlbGVjdGlvbihzZWwpOworICAgIH0K
K30KKworVmlzaWJsZVBvc2l0aW9uIFJlbmRlclRleHRGaWVsZDo6Z2V0VmlzaWJsZVBvc2l0aW9u
Rm9ySW5kZXgoaW50IGluZGV4KQoreworICAgIFZpc2libGVQb3NpdGlvbiBwb3MgPSBWaXNpYmxl
UG9zaXRpb24obV9kaXYuZ2V0KCksIDAsIERPV05TVFJFQU0pOworICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgaW5kZXg7IGkrKykgeworICAgICAgICBpZiAocG9zLmlzTnVsbCgpKQorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIHBvcyA9IHBvcy5uZXh0KCk7CisgICAgfQorICAgIHJldHVybiBw
b3M7Cit9CisKK2ludCBSZW5kZXJUZXh0RmllbGQ6OmdldEluZGV4Rm9yVmlzaWJsZVBvc2l0aW9u
KFZpc2libGVQb3NpdGlvbiBwb3MpCit7CisgICAgRG9jdW1lbnRJbXBsKiBkb2MgPSBkb2N1bWVu
dCgpOworICAgIGlmIChkb2MgJiYgbV9kaXYgJiYgcG9zLmRlZXBFcXVpdmFsZW50KCkubm9kZSgp
ICYmIHBvcy5kZWVwRXF1aXZhbGVudCgpLm5vZGUoKS0+cm9vdEVkaXRhYmxlRWxlbWVudCgpID09
IG1fZGl2KSB7CisgICAgICAgIFZpc2libGVQb3NpdGlvbiBpdCA9IFZpc2libGVQb3NpdGlvbiht
X2Rpdi5nZXQoKSwgMCwgRE9XTlNUUkVBTSk7CisgICAgICAgIGludCBjaGFyYWN0ZXJfY291bnQg
PSAwOworICAgICAgICBmb3IgKDsgaXQuaXNOb3ROdWxsKCk7IGl0ID0gaXQubmV4dCgpKSB7Cisg
ICAgICAgICAgICBpZiAoaXNFcXVhbElnbm9yaW5nQWZmaW5pdHkocG9zLCBpdCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGNoYXJhY3Rlcl9jb3VudDsKKyAgICAgICAgICAgIGNoYXJhY3Rlcl9j
b3VudCsrOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAwOworfQorCiB2b2lkIFJlbmRl
clRleHRGaWVsZDo6c3VidHJlZUhhc0NoYW5nZWQoKQogewogICAgIEhUTUxJbnB1dEVsZW1lbnRJ
bXBsKiBpbnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnRJbXBsKj4oZWxlbWVudCgp
KTsKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50SW1wbC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvZG9tL0RvY3VtZW50SW1wbC5oCShyZXZpc2lvbiAxMzE4MikKKysrIFdlYkNvcmUvZG9tL0Rv
Y3VtZW50SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNTMsNyArMzUzLDcgQEAKICAgICBRU3Ry
aW5nTGlzdCBhdmFpbGFibGVTdHlsZVNoZWV0cygpIGNvbnN0OwogCiAgICAgTm9kZUltcGwqIGZv
Y3VzTm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9jdXNOb2RlLmdldCgpOyB9Ci0gICAgYm9vbCBz
ZXRGb2N1c05vZGUoUGFzc1JlZlB0cjxOb2RlSW1wbD4pOworICAgIGJvb2wgc2V0Rm9jdXNOb2Rl
KFBhc3NSZWZQdHI8Tm9kZUltcGw+LCBib29sIHJldGFpblNlbGVjdGlvbiA9IGZhbHNlKTsKICAg
ICB2b2lkIGNsZWFyU2VsZWN0aW9uSWZOZWVkZWQoTm9kZUltcGwqKTsKIAogICAgIE5vZGVJbXBs
KiBob3Zlck5vZGUoKSBjb25zdCB7IHJldHVybiBtX2hvdmVyTm9kZS5nZXQoKTsgfQpJbmRleDog
V2ViQ29yZS9kb20vRG9jdW1lbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9E
b2N1bWVudEltcGwuY3BwCShyZXZpc2lvbiAxMzE4MikKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50
SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMTgsNyArMjAxOCw3IEBACiAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PFJlbmRlcldpZGdldCAqPihyZW5kZXJlciktPndpZGdldCgpOwogfQogCi1i
b29sIERvY3VtZW50SW1wbDo6c2V0Rm9jdXNOb2RlKFBhc3NSZWZQdHI8Tm9kZUltcGw+IG5ld0Zv
Y3VzTm9kZSkKK2Jvb2wgRG9jdW1lbnRJbXBsOjpzZXRGb2N1c05vZGUoUGFzc1JlZlB0cjxOb2Rl
SW1wbD4gbmV3Rm9jdXNOb2RlLCBib29sIHJldGFpblNlbGVjdGlvbikKIHsgICAgCiAgICAgLy8g
TWFrZSBzdXJlIG5ld0ZvY3VzTm9kZSBpcyBhY3R1YWxseSBpbiB0aGlzIGRvY3VtZW50CiAgICAg
aWYgKG5ld0ZvY3VzTm9kZSAmJiAobmV3Rm9jdXNOb2RlLT5nZXREb2N1bWVudCgpICE9IHRoaXMp
KQpAQCAtMjAzMyw3ICsyMDMzLDggQEAKICAgICBib29sIGZvY3VzQ2hhbmdlQmxvY2tlZCA9IGZh
bHNlOwogICAgIFJlZlB0cjxOb2RlSW1wbD4gb2xkRm9jdXNOb2RlID0gbV9mb2N1c05vZGU7CiAg
ICAgbV9mb2N1c05vZGUgPSAwOwotICAgIGNsZWFyU2VsZWN0aW9uSWZOZWVkZWQobmV3Rm9jdXNO
b2RlLmdldCgpKTsKKyAgICBpZiAoIXJldGFpblNlbGVjdGlvbikKKyAgICAgICAgY2xlYXJTZWxl
Y3Rpb25JZk5lZWRlZChuZXdGb2N1c05vZGUuZ2V0KCkpOwogCiAgICAgLy8gUmVtb3ZlIGZvY3Vz
IGZyb20gdGhlIGV4aXN0aW5nIGZvY3VzIG5vZGUgKGlmIGFueSkKICAgICBpZiAob2xkRm9jdXNO
b2RlICYmICFvbGRGb2N1c05vZGUtPm1faW5EZXRhY2gpIHsgCkBAIC0yMDU3LDE0ICsyMDU4LDE2
IEBACiAgICAgICAgICAgICBmb2N1c0NoYW5nZUJsb2NrZWQgPSB0cnVlOwogICAgICAgICAgICAg
bmV3Rm9jdXNOb2RlID0gMDsKICAgICAgICAgfQotICAgICAgICBjbGVhclNlbGVjdGlvbklmTmVl
ZGVkKG5ld0ZvY3VzTm9kZS5nZXQoKSk7CisgICAgICAgIGlmICghcmV0YWluU2VsZWN0aW9uKQor
ICAgICAgICAgICAgY2xlYXJTZWxlY3Rpb25JZk5lZWRlZChuZXdGb2N1c05vZGUuZ2V0KCkpOwog
ICAgICAgICBvbGRGb2N1c05vZGUtPmRpc3BhdGNoVUlFdmVudChET01Gb2N1c091dEV2ZW50KTsK
ICAgICAgICAgaWYgKG1fZm9jdXNOb2RlKSB7CiAgICAgICAgICAgICAvLyBoYW5kbGVyIHNoaWZ0
ZWQgZm9jdXMKICAgICAgICAgICAgIGZvY3VzQ2hhbmdlQmxvY2tlZCA9IHRydWU7CiAgICAgICAg
ICAgICBuZXdGb2N1c05vZGUgPSAwOwogICAgICAgICB9Ci0gICAgICAgIGNsZWFyU2VsZWN0aW9u
SWZOZWVkZWQobmV3Rm9jdXNOb2RlLmdldCgpKTsKKyAgICAgICAgaWYgKCFyZXRhaW5TZWxlY3Rp
b24pCisgICAgICAgICAgICBjbGVhclNlbGVjdGlvbklmTmVlZGVkKG5ld0ZvY3VzTm9kZS5nZXQo
KSk7CiAgICAgICAgIGlmICgob2xkRm9jdXNOb2RlLmdldCgpID09IHRoaXMpICYmIG9sZEZvY3Vz
Tm9kZS0+aGFzT25lUmVmKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAg
IApJbmRleDogV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJldmlzaW9uIDEzMTgyKQorKysgV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMDQsOCArMTAwNCw5IEBACiAgICAgICAg
ICAgICBpZiAoIW1fZnJhbWUtPmRvY3VtZW50KCktPnNldEZvY3VzTm9kZShub2RlKSkKICAgICAg
ICAgICAgICAgICBzd2FsbG93RXZlbnQgPSB0cnVlOwogICAgICAgICB9IGVsc2UgaWYgKCFub2Rl
IHx8ICFub2RlLT5mb2N1c2VkKCkpIHsKLSAgICAgICAgICAgIGlmICghbV9mcmFtZS0+ZG9jdW1l
bnQoKS0+c2V0Rm9jdXNOb2RlKDApKQotICAgICAgICAgICAgc3dhbGxvd0V2ZW50ID0gdHJ1ZTsK
KyAgICAgICAgICAgIGJvb2wgc2hvdWxkUmV0YWluU2VsZWN0aW9uID0gbm9kZSA/IHRydWUgOiBm
YWxzZTsKKyAgICAgICAgICAgIGlmICghbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2V0Rm9jdXNOb2Rl
KDAsIHNob3VsZFJldGFpblNlbGVjdGlvbikpCisgICAgICAgICAgICAgICAgc3dhbGxvd0V2ZW50
ID0gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KIApJbmRleDogV2ViQ29yZS9wYWdlL0ZyYW1lLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCShyZXZpc2lvbiAxMzE4MikK
KysrIFdlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNTgsMTQgKzEy
NTgsMTQgQEAKICAgICAgICAgICAgIC8vIHNvIGFkZCB0aGUgIWlzRnJhbWVFbGVtZW50IGNoZWNr
IGhlcmUuIFRoZXJlJ3MgcHJvYmFibHkgYSBiZXR0ZXIgd2F5IHRvIG1ha2UgdGhpcwogICAgICAg
ICAgICAgLy8gd29yayBpbiB0aGUgbG9uZyB0ZXJtLCBidXQgdGhpcyBpcyB0aGUgc2FmZXN0IGZp
eCBhdCB0aGlzIHRpbWUuCiAgICAgICAgICAgICBpZiAodGFyZ2V0ICYmIHRhcmdldC0+aXNNb3Vz
ZUZvY3VzYWJsZSgpICYmICFpc0ZyYW1lRWxlbWVudCh0YXJnZXQpKSB7Ci0gICAgICAgICAgICAg
ICAgZG9jdW1lbnQoKS0+c2V0Rm9jdXNOb2RlKHRhcmdldCk7CisgICAgICAgICAgICAgICAgZG9j
dW1lbnQoKS0+c2V0Rm9jdXNOb2RlKHRhcmdldCwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmVuZGVyZXIgPSByZW5kZXJlci0+cGFy
ZW50KCk7CiAgICAgICAgICAgICBpZiAocmVuZGVyZXIpCiAgICAgICAgICAgICAgICAgdGFyZ2V0
ID0gcmVuZGVyZXItPmVsZW1lbnQoKTsKICAgICAgICAgfQotICAgICAgICBkb2N1bWVudCgpLT5z
ZXRGb2N1c05vZGUoMCk7CisgICAgICAgIGRvY3VtZW50KCktPnNldEZvY3VzTm9kZSgwLCB0cnVl
KTsKICAgICB9CiB9CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMTk1KQorKysgTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsMTUgQEAKIDIwMDYtMDMtMDcgIEFk
ZWxlIFBldGVyc29uICA8YWRlbGVAYXBwbGUuY29tPgogCisgICAgICAgIC0gVGVzdHMgZm9yIGh0
dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjgxNAorICAgICAg
ICBJbXBsZW1lbnQgc2VsZWN0aW9uIG1ldGhvZHMgZm9yIFJlbmRlclRleHRGaWVsZAorCisgICAg
ICAgICogZmFzdC9mb3Jtcy9pbnB1dC1hcHBlYXJhbmNlLXNlbGVjdGlvbi1leHBlY3RlZC5jaGVj
a3N1bTogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9pbnB1dC1hcHBlYXJhbmNlLXNlbGVj
dGlvbi1leHBlY3RlZC5wbmc6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvaW5wdXQtYXBw
ZWFyYW5jZS1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zv
cm1zL2lucHV0LWFwcGVhcmFuY2Utc2VsZWN0aW9uLmh0bWw6IEFkZGVkLgorCisyMDA2LTAzLTA3
ICBBZGVsZSBQZXRlcnNvbiAgPGFkZWxlQGFwcGxlLmNvbT4KKwogICAgICAgICBVcGRhdGluZyB0
ZXN0cyBmb3I6CiAgICAgICAgIGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzMxOQogICAgICAgICBDYW4ndCBzZWUgY2FyZXQgYXQgdGhlIGVuZCBvZiBhIGNv
bnRlbnRlZGl0YWJsZSBkaXYgd2l0aCBvdmVyZmxvdzpoaWRkZW4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvaW5wdXQtYXBwZWFyYW5jZS1zZWxlY3Rpb24tZXhwZWN0ZWQucG5nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjpt
aW1lLXR5cGUgPSBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KClByb3BlcnR5IGNoYW5nZXMgb246
IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtYXBwZWFyYW5jZS1zZWxlY3Rpb24tZXhwZWN0
ZWQucG5nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOm1pbWUtdHlwZQogICArIGFwcGxpY2F0aW9uL29j
dGV0LXN0cmVhbQoKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtYXBwZWFyYW5j
ZS1zZWxlY3Rpb24tZXhwZWN0ZWQuY2hlY2tzdW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9pbnB1dC1hcHBlYXJhbmNlLXNlbGVjdGlvbi1leHBlY3RlZC5jaGVja3N1bQko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtYXBwZWFyYW5jZS1z
ZWxlY3Rpb24tZXhwZWN0ZWQuY2hlY2tzdW0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKKzJl
ZGUzNWI5ZDkwOTQ5YzJhMGRlNzVjOWY5OTgyNGQ4ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1hcHBlYXJhbmNlLXNlbGVjdGlv
bi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1
dC1hcHBlYXJhbmNlLXNlbGVjdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LWFwcGVhcmFuY2Utc2VsZWN0aW9uLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NCBAQAorRURJVElORyBERUxFR0FURTogc2hvdWxk
Q2hhbmdlU2VsZWN0ZWRET01SYW5nZToobnVsbCkgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2Yg
I3RleHQgPiBESVYgdG8gMCBvZiAjdGV4dCA+IERJViBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmlu
aXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogd2Vi
Vmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0
aW9uCitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdl
IGZyb20gMCBvZiAjdGV4dCA+IERJViB0byAwIG9mICN0ZXh0ID4gRElWIHRvRE9NUmFuZ2U6cmFu
Z2UgZnJvbSAwIG9mICN0ZXh0ID4gRElWIHRvIDE3IG9mICN0ZXh0ID4gRElWIGFmZmluaXR5Ok5T
U2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5H
IERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxl
Y3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVk
RE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0ID4gRElWIHRvIDE3IG9mICN0ZXh0ID4gRElW
IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxMCBvZiAjdGV4dCA+IERJViB0byAxNyBvZiAjdGV4dCA+
IERJViBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGlu
ZzpGQUxTRQorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJW
aWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiBzaG91
bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMTAgb2YgI3RleHQgPiBESVYgdG8g
MTcgb2YgI3RleHQgPiBESVYgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDEwIG9mICN0ZXh0ID4gRElW
IHRvIDEwIG9mICN0ZXh0ID4gRElWIGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3Ry
ZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hh
bmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJ
TkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxMCBv
ZiAjdGV4dCA+IERJViB0byAxMCBvZiAjdGV4dCA+IERJViB0b0RPTVJhbmdlOnJhbmdlIGZyb20g
MyBvZiAjdGV4dCA+IERJViB0byAxMiBvZiAjdGV4dCA+IERJViBhZmZpbml0eTpOU1NlbGVjdGlv
bkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FU
RTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90
aWZpY2F0aW9uCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQ2FudmFzIGF0
ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRl
ckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZ
fSBhdCAoOCw4KSBzaXplIDc4NHg1NzYKKyAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0
ICgwLDApIHNpemUgNzg0eDE4CisgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNp
emUgMzM1eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMzM1OiAiVGhpcyB0
ZXN0cyB0aGUgc2VsZWN0aW9uIG1ldGhvZHMgb24gdGhlIG5ldyB0ZXh0IGZpZWxkLiIKKyAgICAg
IFJlbmRlckJsb2NrIHtQfSBhdCAoMCwzNCkgc2l6ZSA3ODR4MjMKKyAgICAgICAgUmVuZGVyVGV4
dEZpZWxkIHtJTlBVVH0gYXQgKDIsMikgc2l6ZSAxODZ4MTkKKyAgICAgICAgUmVuZGVyVGV4dCB7
VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKKyAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDcz
KSBzaXplIDc4NHgyNzAKKyAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MTgK
KyAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMTgpIHNpemUgMTk3eDE4CisgICAgICAg
ICAgdGV4dCBydW4gYXQgKDAsMTgpIHdpZHRoIDE5NzogIlRlc3QgMS4gc2V0U2VsZWN0aW9uUmFu
Z2UoMCwgMCkiCisgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDAKKyAgICAg
ICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMzYpIHNpemUgNDd4MTgKKyAgICAgICAgICB0ZXh0
IHJ1biBhdCAoMCwzNikgd2lkdGggNDc6ICJQYXNzZWQuIgorICAgICAgICBSZW5kZXJCUiB7QlJ9
IGF0ICgwLDApIHNpemUgMHgwCisgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsNTQpIHNpemUg
MHgxOAorICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCw3Mikgc2l6ZSAxNjF4MTgKKyAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMCw3Mikgd2lkdGggMTYxOiAiVGVzdCAyLiBzZWxlY3Rpb25F
bmQgPSAxNyIKKyAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAorICAgICAg
ICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCw5MCkgc2l6ZSA0N3gxOAorICAgICAgICAgIHRleHQg
cnVuIGF0ICgwLDkwKSB3aWR0aCA0NzogIlBhc3NlZC4iCisgICAgICAgIFJlbmRlckJSIHtCUn0g
YXQgKDAsMCkgc2l6ZSAweDAKKyAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwxMDgpIHNpemUg
MHgxOAorICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwxMjYpIHNpemUgMTY0eDE4Cisg
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTI2KSB3aWR0aCAxNjQ6ICJUZXN0IDMuIHNlbGVjdGlv
blN0YXJ0ID0gMTAiCisgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDAKKyAg
ICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMTQ0KSBzaXplIDQ3eDE4CisgICAgICAgICAg
dGV4dCBydW4gYXQgKDAsMTQ0KSB3aWR0aCA0NzogIlBhc3NlZC4iCisgICAgICAgIFJlbmRlckJS
IHtCUn0gYXQgKDAsMCkgc2l6ZSAweDAKKyAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwxNjIp
IHNpemUgMHgxOAorICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwxODApIHNpemUgMjA1
eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTgwKSB3aWR0aCAyMDU6ICJUZXN0IDQuIHNl
dFNlbGVjdGlvblJhbmdlKDEwLCAzKSIKKyAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBz
aXplIDB4MAorICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwxOTgpIHNpemUgNDd4MTgK
KyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxOTgpIHdpZHRoIDQ3OiAiUGFzc2VkLiIKKyAgICAg
ICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAorICAgICAgICBSZW5kZXJCUiB7QlJ9
IGF0ICgwLDIxNikgc2l6ZSAweDE4CisgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDIz
NCkgc2l6ZSAyMDV4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwyMzQpIHdpZHRoIDIwNTog
IlRlc3QgNC4gc2V0U2VsZWN0aW9uUmFuZ2UoMywgMTIpIgorICAgICAgICBSZW5kZXJCUiB7QlJ9
IGF0ICgwLDApIHNpemUgMHgwCisgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDI1Mikg
c2l6ZSA0N3gxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDI1Mikgd2lkdGggNDc6ICJQYXNz
ZWQuIgorICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUgMHgwCisgICAgICBSZW5k
ZXJCbG9jayB7UH0gYXQgKDAsMzU5KSBzaXplIDc4NHgwCitsYXllciBhdCAoMTMsNDcpIHNpemUg
MTgweDEzCisgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgzLDMpIHNpemUgMTgweDEzCisgICAgUmVu
ZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAxMzF4MTMKKyAgICAgIHRleHQgcnVuIGF0ICgw
LDApIHdpZHRoIDEzMTogIjEyMzQ1Njc4OSBBQkNERUZHSElKIgorc2VsZWN0aW9uIHN0YXJ0OiBw
b3NpdGlvbiAzIG9mIGNoaWxkIDAge1RFWFR9IG9mIGRvY3VtZW50CitzZWxlY3Rpb24gZW5kOiAg
IHBvc2l0aW9uIDEyIG9mIGNoaWxkIDAge1RFWFR9IG9mIGRvY3VtZW50CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL2lucHV0LWFwcGVhcmFuY2Utc2VsZWN0aW9uLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1hcHBlYXJhbmNlLXNlbGVjdGlvbi5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1hcHBlYXJh
bmNlLXNlbGVjdGlvbi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUzIEBACis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3QgKCkgeworICAgIHZhciB0ZiA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCd0MScpOworICAgIHZhciByZXMgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgncmVzdWx0Jyk7CisgICAgCisgICAgdGYuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgMCk7
CisgICAgcmVzLmlubmVySFRNTCA9IHJlcy5pbm5lckhUTUwgKyAiPGJyPlRlc3QgMS4gc2V0U2Vs
ZWN0aW9uUmFuZ2UoMCwgMCkiOworICAgIGlmICh0Zi5zZWxlY3Rpb25TdGFydCA9PSAgMCAmJiB0
Zi5zZWxlY3Rpb25FbmQgPT0gMCkKKyAgICAgICAgcmVzLmlubmVySFRNTCA9IHJlcy5pbm5lckhU
TUwgKyAiPGJyPlBhc3NlZC48YnI+IjsKKyAgICBlbHNlCisgICAgICAgIHJlcy5pbm5lckhUTUwg
PSByZXMuaW5uZXJIVE1MICsgIjxicj5GYWlsZWQuPGJyPiI7CisgICAgICAgIAorICAgIHRmLnNl
bGVjdGlvbkVuZCA9IDE3OworICAgIHJlcy5pbm5lckhUTUwgPSByZXMuaW5uZXJIVE1MICsgIjxi
cj5UZXN0IDIuIHNlbGVjdGlvbkVuZCA9IDE3IjsKKyAgICBpZiAodGYuc2VsZWN0aW9uU3RhcnQg
PT0gIDAgJiYgdGYuc2VsZWN0aW9uRW5kID09IDE3KQorICAgICAgICByZXMuaW5uZXJIVE1MID0g
cmVzLmlubmVySFRNTCArICI8YnI+UGFzc2VkLjxicj4iOworICAgIGVsc2UKKyAgICAgICAgcmVz
LmlubmVySFRNTCA9IHJlcy5pbm5lckhUTUwgKyAiPGJyPkZhaWxlZC48YnI+IjsKKyAgICAgICAg
CisgICAgdGYuc2VsZWN0aW9uU3RhcnQgPSAxMDsKKyAgICByZXMuaW5uZXJIVE1MID0gcmVzLmlu
bmVySFRNTCArICI8YnI+VGVzdCAzLiBzZWxlY3Rpb25TdGFydCA9IDEwIjsgICAgCisgICAgaWYg
KHRmLnNlbGVjdGlvblN0YXJ0ID09ICAxMCAmJiB0Zi5zZWxlY3Rpb25FbmQgPT0gMTcpCisgICAg
ICAgIHJlcy5pbm5lckhUTUwgPSByZXMuaW5uZXJIVE1MICsgIjxicj5QYXNzZWQuPGJyPiI7Cisg
ICAgZWxzZQorICAgICAgICByZXMuaW5uZXJIVE1MID0gcmVzLmlubmVySFRNTCArICI8YnI+RmFp
bGVkLjxicj4iOworICAgICAgICAKKyAgICB0Zi5zZXRTZWxlY3Rpb25SYW5nZSgxMCwgMyk7Cisg
ICAgcmVzLmlubmVySFRNTCA9IHJlcy5pbm5lckhUTUwgKyAiPGJyPlRlc3QgNC4gc2V0U2VsZWN0
aW9uUmFuZ2UoMTAsIDMpIjsgICAgICAgIAorICAgIGlmICh0Zi5zZWxlY3Rpb25TdGFydCA9PSAg
MTAgJiYgdGYuc2VsZWN0aW9uRW5kID09IDEwKQorICAgICAgICByZXMuaW5uZXJIVE1MID0gcmVz
LmlubmVySFRNTCArICI8YnI+UGFzc2VkLjxicj4iOworICAgIGVsc2UKKyAgICAgICAgcmVzLmlu
bmVySFRNTCA9IHJlcy5pbm5lckhUTUwgKyAiPGJyPkZhaWxlZC48YnI+IjsKKyAgICAgICAgCisg
ICAgdGYuc2V0U2VsZWN0aW9uUmFuZ2UoMywgMTIpOworICAgIHJlcy5pbm5lckhUTUwgPSByZXMu
aW5uZXJIVE1MICsgIjxicj5UZXN0IDQuIHNldFNlbGVjdGlvblJhbmdlKDMsIDEyKSI7ICAgICAg
ICAgICAgCisgICAgaWYgKHRmLnNlbGVjdGlvblN0YXJ0ID09ICAzICYmIHRmLnNlbGVjdGlvbkVu
ZCA9PSAxMikKKyAgICAgICAgcmVzLmlubmVySFRNTCA9IHJlcy5pbm5lckhUTUwgKyAiPGJyPlBh
c3NlZC48YnI+IjsKKyAgICBlbHNlCisgICAgICAgIHJlcy5pbm5lckhUTUwgPSByZXMuaW5uZXJI
VE1MICsgIjxicj5GYWlsZWQuPGJyPiI7CisgICAgCit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5IG9ubG9hZD0idGVzdCgpIj4KK1RoaXMgdGVzdHMgdGhlIHNlbGVjdGlvbiBtZXRob2RzIG9u
IHRoZSBuZXcgdGV4dCBmaWVsZC4KKzxwPgorPGlucHV0IHR5cGU9InRleHQiIGlkPSJ0MSIgc3R5
bGU9Ii1raHRtbC1hcHBlYXJhbmNlOnRleHRmaWVsZCIgdmFsdWU9IjEyMzQ1Njc4OSBBQkNERUZH
SElKIj48L2lucHV0PgorPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KKzwvcD4KKzwvYm9keT4KKzwv
aHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>
<flag name="review"
          id="1788"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6948</attachid>
            <date>2006-03-08 15:29:40 -0800</date>
            <delta_ts>2006-03-09 07:55:03 -0800</delta_ts>
            <desc>patch to address Darin&apos;s comments</desc>
            <filename>selection_patch_3_8_final.txt</filename>
            <type>text/plain</type>
            <size>14262</size>
            <attacher name="Adele Peterson">adele</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxMzIxOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMDYtMDMtMDggIEFkZWxlIFBldGVyc29uICA8YWRlbGVAYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0g
Rml4IGZvciBodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTY4
MTQKKyAgICAgICAgSW1wbGVtZW50IHNlbGVjdGlvbiBtZXRob2RzIGZvciBSZW5kZXJUZXh0Rmll
bGQKKworICAgICAgICBUZXN0OiBmYXN0L2Zvcm1zL2lucHV0LWFwcGVhcmFuY2Utc2VsZWN0aW9u
Lmh0bWwKKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0RmllbGQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGV4dEZpZWxkOjpzZWxlY3Rpb25TdGFydCk6IENhbGxzIGluZGV4
Rm9yVmlzaWJsZVBvc2l0aW9uLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dEZpZWxkOjpz
ZWxlY3Rpb25FbmQpOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRGaWVsZDo6
c2V0U2VsZWN0aW9uU3RhcnQpOiBjYWxscyBzZXRTZWxlY3Rpb25SYW5nZS4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRleHRGaWVsZDo6c2V0U2VsZWN0aW9uRW5kKTogZGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUZXh0RmllbGQ6OnNldFNlbGVjdGlvblJhbmdlKTogZ2V0cyBWaXNp
YmxlUG9zaXRpb25zIGZvciBib3RoIGluZGljZXMsIGFuZCBzZXRzIHRoZSBzZWxlY3Rpb24uCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0RmllbGQ6OnZpc2libGVQb3NpdGlvbkZvckluZGV4
KTogQWRkZWQgaGVscGVyIG1ldGhvZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRGaWVs
ZDo6aW5kZXhGb3JWaXNpYmxlUG9zaXRpb24pOiBBZGRlZCBoZWxwZXIgbWV0aG9kLgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0RmllbGQuaDogQWRkZWQgbmV3IGhlbHBlciBtZXRob2Rz
IGZvciBzZWxlY3Rpb24uCisKIDIwMDYtMDMtMDggIEVyaWMgU2VpZGVsICA8ZXNlaWRlbEBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgaHlhdHQuCkluZGV4OiBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0RmllbGQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0RmllbGQuaAkocmV2aXNpb24gMTMyMTQpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0RmllbGQuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsMTAgKzU0LDEzIEBACiAgICAg
dm9pZCBzdWJ0cmVlSGFzQ2hhbmdlZCgpOwogICAgIFN0cmluZyB0ZXh0KCk7CiAKLXByb3RlY3Rl
ZDoKK3ByaXZhdGU6CisgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvckluZGV4
KGludCBpbmRleCk7CisgICAgaW50IGluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYgcG9zKTsKKyAgICAKICAgICBSZWZQdHI8SFRNTFRleHRGaWVsZElubmVyRWxl
bWVudEltcGw+IG1fZGl2OwotICAgIAogICAgIGJvb2wgbV9kaXJ0eTsKKwogfTsKIAogfQpJbmRl
eDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZpZWxkLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0RmllbGQuY3BwCShyZXZpc2lvbiAxMzIxNCkKKysr
IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRGaWVsZC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI4LDYgKzI4LDkgQEAKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50SW1wbC5oIgogI2luY2x1
ZGUgIkhUTUxUZXh0RmllbGRJbm5lckVsZW1lbnRJbXBsLmgiCiAjaW5jbHVkZSAiZG9tX2VsZW1l
bnRpbXBsLmgiCisjaW5jbHVkZSAiU2VsZWN0aW9uQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIlZp
c2libGVQb3NpdGlvbi5oIgorI2luY2x1ZGUgInZpc2libGVfdGV4dC5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTY0LDcgKzY3LDYgQEAKICAgICBkaXZTdHlsZS0+c2V0T3ZlcmZsb3co
T0hJRERFTik7CiAgICAgZGl2U3R5bGUtPnNldFdoaXRlU3BhY2UoTk9XUkFQKTsKICAgICBkaXZT
dHlsZS0+c2V0VXNlck1vZGlmeShSRUFEX1dSSVRFKTsKLSAgICAKICAgICByZXR1cm4gZGl2U3R5
bGU7CiB9CiAKQEAgLTEyNywzOCArMTI5LDczIEBACiAKIGludCBSZW5kZXJUZXh0RmllbGQ6OnNl
bGVjdGlvblN0YXJ0KCkKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCi0gICAgcmV0
dXJuIDA7CisgICAgcmV0dXJuIGluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKGRvY3VtZW50KCktPmZy
YW1lKCktPnNlbGVjdGlvbigpLnN0YXJ0KCkpOyAgICAgICAgCiB9CiAKIGludCBSZW5kZXJUZXh0
RmllbGQ6OnNlbGVjdGlvbkVuZCgpCiB7Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgot
ICAgIHJldHVybiAwOworICAgIHJldHVybiBpbmRleEZvclZpc2libGVQb3NpdGlvbihkb2N1bWVu
dCgpLT5mcmFtZSgpLT5zZWxlY3Rpb24oKS5lbmQoKSk7ICAgICAgICAKIH0KIAogdm9pZCBSZW5k
ZXJUZXh0RmllbGQ6OnNldFNlbGVjdGlvblN0YXJ0KGludCBzdGFydCkKIHsKLSAgICAvLyBGSVhN
RTogSW1wbGVtZW50IHRoaXMuCisgICAgc2V0U2VsZWN0aW9uUmFuZ2Uoc3RhcnQsIHNlbGVjdGlv
bkVuZCgpKTsKIH0KICAKIHZvaWQgUmVuZGVyVGV4dEZpZWxkOjpzZXRTZWxlY3Rpb25FbmQoaW50
IGVuZCkKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCisgICAgc2V0U2VsZWN0aW9u
UmFuZ2Uoc2VsZWN0aW9uU3RhcnQoKSwgZW5kKTsKIH0KICAgICAKIHZvaWQgUmVuZGVyVGV4dEZp
ZWxkOjpzZWxlY3QoKQogewotICAgIERvY3VtZW50SW1wbCogZG9jID0gZG9jdW1lbnQoKTsKLSAg
ICBpZiAoZG9jICYmIG1fZGl2KQotICAgICAgICBkb2MtPmZyYW1lKCktPnNlbGVjdENvbnRlbnRz
T2ZOb2RlKG1fZGl2LmdldCgpKTsKKyAgICBpZiAobV9kaXYpCisgICAgICAgIGRvY3VtZW50KCkt
PmZyYW1lKCktPnNlbGVjdENvbnRlbnRzT2ZOb2RlKG1fZGl2LmdldCgpKTsKIH0KIAogdm9pZCBS
ZW5kZXJUZXh0RmllbGQ6OnNldFNlbGVjdGlvblJhbmdlKGludCBzdGFydCwgaW50IGVuZCkKIHsK
LSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCisgICAgZW5kID0ga01heChlbmQsIHN0YXJ0
KTsKKyAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnRQb3NpdGlvbiA9IHZpc2libGVQb3NpdGlvbkZv
ckluZGV4KHN0YXJ0KTsKKyAgICBWaXNpYmxlUG9zaXRpb24gZW5kUG9zaXRpb24gPSB2aXNpYmxl
UG9zaXRpb25Gb3JJbmRleChlbmQpOworICAgIAorICAgIEFTU0VSVChzdGFydFBvc2l0aW9uLmlz
Tm90TnVsbCgpICYmIGVuZFBvc2l0aW9uLmlzTm90TnVsbCgpKTsKKyAgICBBU1NFUlQoc3RhcnRQ
b3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpLm5vZGUoKS0+cm9vdEVkaXRhYmxlRWxlbWVudCgpID09
IG1fZGl2ICYmIGVuZFBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkubm9kZSgpLT5yb290RWRpdGFi
bGVFbGVtZW50KCkgPT0gbV9kaXYpOworICAgIAorICAgIFNlbGVjdGlvbkNvbnRyb2xsZXIgc2Vs
ID0gU2VsZWN0aW9uQ29udHJvbGxlcihzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7ICAgIAor
ICAgIGlmIChkb2N1bWVudCgpLT5mcmFtZSgpLT5zaG91bGRDaGFuZ2VTZWxlY3Rpb24oc2VsKSkK
KyAgICAgICAgZG9jdW1lbnQoKS0+ZnJhbWUoKS0+c2V0U2VsZWN0aW9uKHNlbCk7CiB9CiAKK1Zp
c2libGVQb3NpdGlvbiBSZW5kZXJUZXh0RmllbGQ6OnZpc2libGVQb3NpdGlvbkZvckluZGV4KGlu
dCBpbmRleCkKK3sgICAgCisgICAgaWYgKCFtX2RpdikKKyAgICAgICAgcmV0dXJuIFZpc2libGVQ
b3NpdGlvbigpOworICAgIGlmIChpbmRleCA8PSAwKQorICAgICAgICByZXR1cm4gVmlzaWJsZVBv
c2l0aW9uKG1fZGl2LmdldCgpLCAwLCBET1dOU1RSRUFNKTsKKyAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKKyAgICBSZWZQdHI8UmFuZ2VJbXBsPiByYW5nZSA9IG5ldyBSYW5nZUltcGwoZG9jdW1l
bnQoKSk7CisgICAgcmFuZ2UtPnNlbGVjdE5vZGVDb250ZW50cyhtX2Rpdi5nZXQoKSwgZWMpOwor
ICAgIENoYXJhY3Rlckl0ZXJhdG9yIGl0KHJhbmdlLmdldCgpKTsKKyAgICBpZiAoIWl0LmF0RW5k
KCkpCisgICAgICAgIGl0LmFkdmFuY2UoaW5kZXggLSAxKTsKKyAgICByZXR1cm4gVmlzaWJsZVBv
c2l0aW9uKGl0LnJhbmdlKCktPmVuZENvbnRhaW5lcihlYyksIGl0LnJhbmdlKCktPmVuZE9mZnNl
dChlYyksIERPV05TVFJFQU0pOworfQorCitpbnQgUmVuZGVyVGV4dEZpZWxkOjppbmRleEZvclZp
c2libGVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvcykKK3sKKyAgICBpZiAoIW1f
ZGl2KQorICAgICAgICByZXR1cm4gMDsKKyAgICBQb3NpdGlvbiBpbmRleFBvc2l0aW9uID0gcG9z
LmRlZXBFcXVpdmFsZW50KCk7CisgICAgaWYgKCFpbmRleFBvc2l0aW9uLm5vZGUoKSB8fCBpbmRl
eFBvc2l0aW9uLm5vZGUoKS0+cm9vdEVkaXRhYmxlRWxlbWVudCgpICE9IG1fZGl2KQorICAgICAg
ICByZXR1cm4gMDsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBSZWZQdHI8UmFuZ2VJ
bXBsPiByYW5nZSA9IG5ldyBSYW5nZUltcGwoZG9jdW1lbnQoKSk7CisgICAgcmFuZ2UtPnNldFN0
YXJ0KG1fZGl2LmdldCgpLCAwLCBlYyk7CisgICAgcmFuZ2UtPnNldEVuZChpbmRleFBvc2l0aW9u
Lm5vZGUoKSwgaW5kZXhQb3NpdGlvbi5vZmZzZXQoKSwgZWMpOworICAgIHJldHVybiBUZXh0SXRl
cmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlLmdldCgpKTsKK30KKwogdm9pZCBSZW5kZXJUZXh0Rmll
bGQ6OnN1YnRyZWVIYXNDaGFuZ2VkKCkKIHsKICAgICBIVE1MSW5wdXRFbGVtZW50SW1wbCogaW5w
dXQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50SW1wbCo+KGVsZW1lbnQoKSk7CkluZGV4
OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxMzIxOSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDA2LTAzLTA4ICBBZGVsZSBQZXRlcnNvbiAgPGFkZWxl
QGFwcGxlLmNvbT4KKworICAgICAgICAtIFRlc3RzIGZvciBodHRwOi8vYnVnemlsbGEub3BlbmRh
cndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTY4MTQKKyAgICAgICAgSW1wbGVtZW50IHNlbGVjdGlv
biBtZXRob2RzIGZvciBSZW5kZXJUZXh0RmllbGQKKworICAgICAgICAqIGZhc3QvZm9ybXMvaW5w
dXQtYXBwZWFyYW5jZS1zZWxlY3Rpb24tZXhwZWN0ZWQuY2hlY2tzdW06IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZm9ybXMvaW5wdXQtYXBwZWFyYW5jZS1zZWxlY3Rpb24tZXhwZWN0ZWQucG5nOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2lucHV0LWFwcGVhcmFuY2Utc2VsZWN0aW9uLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9pbnB1dC1hcHBlYXJhbmNl
LXNlbGVjdGlvbi5odG1sOiBBZGRlZC4KKwogMjAwNi0wMy0wOCAgUm9iIEJ1aXMgIDxidWlzQGtk
ZS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgZXNlaWRlbC4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvaW5wdXQtYXBwZWFyYW5jZS1zZWxlY3Rpb24tZXhwZWN0ZWQucG5nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjpt
aW1lLXR5cGUgPSBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KClByb3BlcnR5IGNoYW5nZXMgb246
IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtYXBwZWFyYW5jZS1zZWxlY3Rpb24tZXhwZWN0
ZWQucG5nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOm1pbWUtdHlwZQogICArIGFwcGxpY2F0aW9uL29j
dGV0LXN0cmVhbQoKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtYXBwZWFyYW5j
ZS1zZWxlY3Rpb24tZXhwZWN0ZWQuY2hlY2tzdW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9pbnB1dC1hcHBlYXJhbmNlLXNlbGVjdGlvbi1leHBlY3RlZC5jaGVja3N1bQko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtYXBwZWFyYW5jZS1z
ZWxlY3Rpb24tZXhwZWN0ZWQuY2hlY2tzdW0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKKzhh
YmU1YzA3NTVlOWM5Mjk5MDU1YzVkMmFmNWE1MDhiClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1hcHBlYXJhbmNlLXNlbGVjdGlv
bi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1
dC1hcHBlYXJhbmNlLXNlbGVjdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LWFwcGVhcmFuY2Utc2VsZWN0aW9uLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NCBAQAorRURJVElORyBERUxFR0FURTogc2hvdWxk
Q2hhbmdlU2VsZWN0ZWRET01SYW5nZToobnVsbCkgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2Yg
I3RleHQgPiBESVYgdG8gMCBvZiAjdGV4dCA+IERJViBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmlu
aXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogd2Vi
Vmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0
aW9uCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdE
aWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENo
YW5nZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0
ZXh0ID4gRElWIHRvIDE3IG9mICN0ZXh0ID4gRElWIGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5p
dHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiB3ZWJW
aWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRp
b24KK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2Ug
ZnJvbSAwIG9mICN0ZXh0ID4gRElWIHRvIDE3IG9mICN0ZXh0ID4gRElWIHRvRE9NUmFuZ2U6cmFu
Z2UgZnJvbSAxIG9mICN0ZXh0ID4gRElWIHRvIDE3IG9mICN0ZXh0ID4gRElWIGFmZmluaXR5Ok5T
U2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5H
IERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxl
Y3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVk
RE9NUmFuZ2U6cmFuZ2UgZnJvbSAxIG9mICN0ZXh0ID4gRElWIHRvIDE3IG9mICN0ZXh0ID4gRElW
IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxMCBvZiAjdGV4dCA+IERJViB0byAxMCBvZiAjdGV4dCA+
IERJViBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGlu
ZzpGQUxTRQorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJW
aWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiBzaG91
bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMTAgb2YgI3RleHQgPiBESVYgdG8g
MTAgb2YgI3RleHQgPiBESVYgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgI3RleHQgPiBESVYg
dG8gMjAgb2YgI3RleHQgPiBESVYgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJl
YW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFu
Z2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElO
RyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDAgb2Yg
I3RleHQgPiBESVYgdG8gMjAgb2YgI3RleHQgPiBESVYgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDMg
b2YgI3RleHQgPiBESVYgdG8gMTIgb2YgI3RleHQgPiBESVYgYWZmaW5pdHk6TlNTZWxlY3Rpb25B
ZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6
IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlm
aWNhdGlvbgorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckNhbnZhcyBhdCAo
MCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJC
bG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0g
YXQgKDgsOCkgc2l6ZSA3ODR4NTc2CisgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAo
MCwwKSBzaXplIDc4NHgxOAorICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXpl
IDMzNXgxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDMzNTogIlRoaXMgdGVz
dHMgdGhlIHNlbGVjdGlvbiBtZXRob2RzIG9uIHRoZSBuZXcgdGV4dCBmaWVsZC4iCisgICAgICBS
ZW5kZXJCbG9jayB7UH0gYXQgKDAsMzQpIHNpemUgNzg0eDIzCisgICAgICAgIFJlbmRlclRleHRG
aWVsZCB7SU5QVVR9IGF0ICgyLDIpIHNpemUgMTg2eDE5CisgICAgICAgIFJlbmRlclRleHQge1RF
WFR9IGF0ICgwLDApIHNpemUgMHgwCisgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCw3Mykg
c2l6ZSA3ODR4MzI0CisgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDE4Cisg
ICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDE4KSBzaXplIDE5N3gxOAorICAgICAgICAg
IHRleHQgcnVuIGF0ICgwLDE4KSB3aWR0aCAxOTc6ICJUZXN0IDE6IHNldFNlbGVjdGlvblJhbmdl
KDAsIDApIgorICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUgMHgwCisgICAgICAg
IFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDM2KSBzaXplIDQ3eDE4CisgICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsMzYpIHdpZHRoIDQ3OiAiUGFzc2VkLiIKKyAgICAgICAgUmVuZGVyQlIge0JSfSBh
dCAoMCwwKSBzaXplIDB4MAorICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDU0KSBzaXplIDB4
MTgKKyAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsNzIpIHNpemUgMTYxeDE4CisgICAg
ICAgICAgdGV4dCBydW4gYXQgKDAsNzIpIHdpZHRoIDE2MTogIlRlc3QgMjogc2VsZWN0aW9uRW5k
ID0gMTciCisgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDAKKyAgICAgICAg
UmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsOTApIHNpemUgNDd4MTgKKyAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMCw5MCkgd2lkdGggNDc6ICJQYXNzZWQuIgorICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0
ICgwLDApIHNpemUgMHgwCisgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMTA4KSBzaXplIDB4
MTgKKyAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMTI2KSBzaXplIDE1NngxOAorICAg
ICAgICAgIHRleHQgcnVuIGF0ICgwLDEyNikgd2lkdGggMTU2OiAiVGVzdCAzOiBzZWxlY3Rpb25T
dGFydCA9IDEiCisgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDAKKyAgICAg
ICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMTQ0KSBzaXplIDQ3eDE4CisgICAgICAgICAgdGV4
dCBydW4gYXQgKDAsMTQ0KSB3aWR0aCA0NzogIlBhc3NlZC4iCisgICAgICAgIFJlbmRlckJSIHtC
Un0gYXQgKDAsMCkgc2l6ZSAweDAKKyAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwxNjIpIHNp
emUgMHgxOAorICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwxODApIHNpemUgMjA1eDE4
CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTgwKSB3aWR0aCAyMDU6ICJUZXN0IDQ6IHNldFNl
bGVjdGlvblJhbmdlKDEwLCAzKSIKKyAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXpl
IDB4MAorICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwxOTgpIHNpemUgNDd4MTgKKyAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxOTgpIHdpZHRoIDQ3OiAiUGFzc2VkLiIKKyAgICAgICAg
UmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAorICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0
ICgwLDIxNikgc2l6ZSAweDE4CisgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDIzNCkg
c2l6ZSAyMTB4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwyMzQpIHdpZHRoIDIxMDogIlRl
c3QgNTogc2V0U2VsZWN0aW9uUmFuZ2UoLTUsIDgwKSIKKyAgICAgICAgUmVuZGVyQlIge0JSfSBh
dCAoMCwwKSBzaXplIDB4MAorICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwyNTIpIHNp
emUgNDd4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwyNTIpIHdpZHRoIDQ3OiAiUGFzc2Vk
LiIKKyAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAorICAgICAgICBSZW5k
ZXJCUiB7QlJ9IGF0ICgwLDI3MCkgc2l6ZSAweDE4CisgICAgICAgIFJlbmRlclRleHQge1RFWFR9
IGF0ICgwLDI4OCkgc2l6ZSAyMDV4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwyODgpIHdp
ZHRoIDIwNTogIlRlc3QgNjogc2V0U2VsZWN0aW9uUmFuZ2UoMywgMTIpIgorICAgICAgICBSZW5k
ZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUgMHgwCisgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0
ICgwLDMwNikgc2l6ZSA0N3gxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDMwNikgd2lkdGgg
NDc6ICJQYXNzZWQuIgorICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUgMHgwCisg
ICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsNDEzKSBzaXplIDc4NHgwCitsYXllciBhdCAoMTMs
NDcpIHNpemUgMTgweDEzCisgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgzLDMpIHNpemUgMTgweDEz
CisgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAxMzF4MTMKKyAgICAgIHRleHQg
cnVuIGF0ICgwLDApIHdpZHRoIDEzMTogIjEyMzQ1Njc4OSBBQkNERUZHSElKIgorc2VsZWN0aW9u
IHN0YXJ0OiBwb3NpdGlvbiAzIG9mIGNoaWxkIDAge1RFWFR9IG9mIGRvY3VtZW50CitzZWxlY3Rp
b24gZW5kOiAgIHBvc2l0aW9uIDEyIG9mIGNoaWxkIDAge1RFWFR9IG9mIGRvY3VtZW50CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LWFwcGVhcmFuY2Utc2VsZWN0aW9uLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1hcHBlYXJhbmNlLXNl
bGVjdGlvbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1
dC1hcHBlYXJhbmNlLXNlbGVjdGlvbi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU1IEBA
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3QgKCkgeworICAgIHZhciB0
ZXN0RmllbGQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndDEnKTsKKyAgICB2YXIgcmVzdWx0
cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKTsKKyAgICAKKyAgICB0ZXN0U2Vs
ZWN0aW9uUmFuZ2UoMSwgMCwgMCwgMCwgMCwgdGVzdEZpZWxkLCByZXN1bHRzKTsKKyAgICB0ZXN0
U2VsZWN0aW9uRW5kKDIsIDE3LCAwLCAxNywgdGVzdEZpZWxkLCByZXN1bHRzKTsKKyAgICB0ZXN0
U2VsZWN0aW9uU3RhcnQoMywgMSwgMSwgMTcsIHRlc3RGaWVsZCwgcmVzdWx0cyk7CisgICAgdGVz
dFNlbGVjdGlvblJhbmdlKDQsIDEwLCAzLCAxMCwgMTAsIHRlc3RGaWVsZCwgcmVzdWx0cyk7Cisg
ICAgdGVzdFNlbGVjdGlvblJhbmdlKDUsIC01LCA4MCwgMCwgMjAsIHRlc3RGaWVsZCwgcmVzdWx0
cyk7CisgICAgdGVzdFNlbGVjdGlvblJhbmdlKDYsIDMsIDEyLCAzLCAxMiwgdGVzdEZpZWxkLCBy
ZXN1bHRzKTsKK30KKworZnVuY3Rpb24gdGVzdFNlbGVjdGlvblJhbmdlICh0ZXN0TnVtYmVyLCBz
dGFydCwgZW5kLCBleHBlY3RlZFN0YXJ0LCBleHBlY3RlZEVuZCwgdGYsIHJlcykKK3sKKyAgICB0
Zi5zZXRTZWxlY3Rpb25SYW5nZShzdGFydCwgZW5kKTsKKyAgICByZXMuaW5uZXJIVE1MID0gcmVz
LmlubmVySFRNTCArICI8YnI+VGVzdCAiICsgdGVzdE51bWJlciArICI6IHNldFNlbGVjdGlvblJh
bmdlKCIgKyBzdGFydCArICIsICIgKyBlbmQgKyAiKSI7ICAgICAgICAgICAgCisgICAgaWYgKHRm
LnNlbGVjdGlvblN0YXJ0ID09IGV4cGVjdGVkU3RhcnQgJiYgdGYuc2VsZWN0aW9uRW5kID09IGV4
cGVjdGVkRW5kKQorICAgICAgICByZXMuaW5uZXJIVE1MID0gcmVzLmlubmVySFRNTCArICI8YnI+
UGFzc2VkLjxicj4iOworICAgIGVsc2UKKyAgICAgICAgcmVzLmlubmVySFRNTCA9IHJlcy5pbm5l
ckhUTUwgKyAiPGJyPkZhaWxlZC48YnI+IjsKK30KKworZnVuY3Rpb24gdGVzdFNlbGVjdGlvblN0
YXJ0ICh0ZXN0TnVtYmVyLCBzdGFydCwgZXhwZWN0ZWRTdGFydCwgZXhwZWN0ZWRFbmQsIHRmLCBy
ZXMpCit7CisgICAgdGYuc2VsZWN0aW9uU3RhcnQgPSBzdGFydDsKKyAgICByZXMuaW5uZXJIVE1M
ID0gcmVzLmlubmVySFRNTCArICI8YnI+VGVzdCAiICsgdGVzdE51bWJlciArICI6IHNlbGVjdGlv
blN0YXJ0ID0gIiArIHN0YXJ0OyAgICAgICAKKyAgICBpZiAodGYuc2VsZWN0aW9uU3RhcnQgPT0g
ZXhwZWN0ZWRTdGFydCAmJiB0Zi5zZWxlY3Rpb25FbmQgPT0gZXhwZWN0ZWRFbmQpCisgICAgICAg
IHJlcy5pbm5lckhUTUwgPSByZXMuaW5uZXJIVE1MICsgIjxicj5QYXNzZWQuPGJyPiI7CisgICAg
ZWxzZQorICAgICAgICByZXMuaW5uZXJIVE1MID0gcmVzLmlubmVySFRNTCArICI8YnI+RmFpbGVk
Ljxicj4iOworfQorCitmdW5jdGlvbiB0ZXN0U2VsZWN0aW9uRW5kICh0ZXN0TnVtYmVyLCBlbmQs
IGV4cGVjdGVkU3RhcnQsIGV4cGVjdGVkRW5kLCB0ZiwgcmVzKQoreworICAgIHRmLnNlbGVjdGlv
bkVuZCA9IGVuZDsKKyAgICByZXMuaW5uZXJIVE1MID0gcmVzLmlubmVySFRNTCArICI8YnI+VGVz
dCAiICsgdGVzdE51bWJlciArICI6IHNlbGVjdGlvbkVuZCA9ICIgKyBlbmQ7ICAgICAgIAorICAg
IGlmICh0Zi5zZWxlY3Rpb25TdGFydCA9PSBleHBlY3RlZFN0YXJ0ICYmIHRmLnNlbGVjdGlvbkVu
ZCA9PSBleHBlY3RlZEVuZCkKKyAgICAgICAgcmVzLmlubmVySFRNTCA9IHJlcy5pbm5lckhUTUwg
KyAiPGJyPlBhc3NlZC48YnI+IjsKKyAgICBlbHNlCisgICAgICAgIHJlcy5pbm5lckhUTUwgPSBy
ZXMuaW5uZXJIVE1MICsgIjxicj5GYWlsZWQuPGJyPiI7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorVGhpcyB0ZXN0cyB0aGUgc2VsZWN0aW9uIG1ldGhv
ZHMgb24gdGhlIG5ldyB0ZXh0IGZpZWxkLgorPHA+Cis8aW5wdXQgdHlwZT0idGV4dCIgaWQ9InQx
IiBzdHlsZT0iLWtodG1sLWFwcGVhcmFuY2U6dGV4dGZpZWxkIiB2YWx1ZT0iMTIzNDU2Nzg5IEFC
Q0RFRkdISUoiPjwvaW5wdXQ+Cis8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgorPC9wPgorPC9ib2R5
PgorPC9odG1sPgoK
</data>
<flag name="review"
          id="1801"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>