<?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>27673</bug_id>
          
          <creation_ts>2009-07-24 23:27:46 -0700</creation_ts>
          <short_desc>Inspector: Tab Through Attributes When Editing</short_desc>
          <delta_ts>2012-07-26 21:45:29 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ssoonh</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>134712</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-07-24 23:27:46 -0700</bug_when>
    <thetext>Nice feature that is in Firebug that most developers will expect.

Here is the work in progress, patch will be applied in a minute:
http://screencast.com/t/wAsMntnR1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134714</commentid>
    <comment_count>1</comment_count>
      <attachid>33486</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-07-24 23:49:02 -0700</bug_when>
    <thetext>Created attachment 33486
Tab Through Attributes

Also fixes (and improves the fix) for:
https://bugs.webkit.org/show_bug.cgi?id=27526</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134716</commentid>
    <comment_count>2</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-07-24 23:51:40 -0700</bug_when>
    <thetext>*** Bug 27526 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134717</commentid>
    <comment_count>3</comment_count>
      <attachid>33487</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-07-25 00:05:39 -0700</bug_when>
    <thetext>Created attachment 33487
Tab Through Attributes

I had forgotten the try/catch block from the earlier bug =).  All better now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134795</commentid>
    <comment_count>4</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-07-26 00:25:45 -0700</bug_when>
    <thetext>After the first patch is applied this next patch (attached in a secon) will allow for tabbing though CSS Properties!  This took absolutely forever to get perfect but I finally got it working exactly how I wanted it:
http://screencast.com/t/MMWHpaaK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134796</commentid>
    <comment_count>5</comment_count>
      <attachid>33503</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-07-26 00:26:26 -0700</bug_when>
    <thetext>Created attachment 33503
Tab Through CSS Properties (Needs First Patch)

See Previous Comment for a video.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134797</commentid>
    <comment_count>6</comment_count>
      <attachid>33504</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-07-26 00:38:30 -0700</bug_when>
    <thetext>Created attachment 33504
Tab Through CSS Properties (Needs First Patch)

Removed Excess Whitespace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134809</commentid>
    <comment_count>7</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-07-26 06:55:35 -0700</bug_when>
    <thetext>Rik` (Anthony Ricaud) from IRC  just mentioned:

Need a way to go to the next CSS declaration:
https://bugs.webkit.org/show_bug.cgi?id=21629

Adding new CSS style properties to HTML nodes using Web Inspector:
https://bugs.webkit.org/show_bug.cgi?id=18224

I will mark 21629 as a duplicate of this one, but 18224 still exists and can probably be solved quite similarly (or like its done with element attributes).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134810</commentid>
    <comment_count>8</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-07-26 06:55:58 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 21629 ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134812</commentid>
    <comment_count>9</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-07-26 06:56:51 -0700</bug_when>
    <thetext>Wrong way around.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134814</commentid>
    <comment_count>10</comment_count>
      <attachid>33510</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-07-26 07:05:51 -0700</bug_when>
    <thetext>Created attachment 33510
Tab Through CSS Properties (Needs First Patch)

I found a way to eliminate firing the &quot;dblclick&quot; event in one case and just directly start editing (thanks to bug 18224&apos;s patch from way back when).  This case is for the new property and there is no text to select. I might even eventually do the same for the condition (tabbing to a non-new attribute), but for right now its fine, because it gets to specifically pick something to have selected when starting to edit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134816</commentid>
    <comment_count>11</comment_count>
      <attachid>33487</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-07-26 07:36:50 -0700</bug_when>
    <thetext>Comment on attachment 33487
Tab Through Attributes


&gt; +                attributeElements[i].nextSibling.nextSibling.dispatchEvent(event); // &quot;=&quot; textNode, then the &quot;webkit-html-attribute-value&quot; node

All looks fine except this. I fear this is too fragile. It would be better to loop through the next siblings until you found &quot;webkit-html-attribute-value&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134817</commentid>
    <comment_count>12</comment_count>
      <attachid>33510</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-07-26 07:46:10 -0700</bug_when>
    <thetext>Comment on attachment 33510
Tab Through CSS Properties (Needs First Patch)

&gt; +                if (elem.className === &quot;name&quot;) {

This would be safer as &quot;elem.hasStyleClass(&quot;name&quot;)&quot; so if we add more to the className later it still works.

&gt; +            // Find the attribute we were supposed to start editing in this section
&gt; +            var list = section.propertiesTreeOutline._childrenListNode.childNodes;
&gt; +            for (var i = 0, len = list.length; i &lt; len; ++i) {
&gt; +                var listItem = list[i];
&gt; +                var spans = listItem.getElementsByTagName(&quot;span&quot;);
&gt; +                if (spans[0].textContent === nameOfPropretyToEdit) {
&gt; +                    var event = document.createEvent(&quot;MouseEvents&quot;);
&gt; +                    event.initMouseEvent(&quot;dblclick&quot;, true, true);
&gt; +                    spans[1].dispatchEvent(event); // the value
&gt; +                    return;
&gt; +                }
&gt; +            }
&gt; +        }

Over all these patches look good, but I think they are too low level and fragile at this point. They are working with the DOM too much when they should just be working with the high-level TreeElements and TreeOutlines. This would require additions to StylePropertyTreeElement like &quot;editName&quot; or &quot;editValue&quot; that would start editing on one of the parts without the need for a fake event and getElementsByTagName or using private properties like _childrenListNode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134818</commentid>
    <comment_count>13</comment_count>
      <attachid>33487</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-07-26 07:48:04 -0700</bug_when>
    <thetext>Comment on attachment 33487
Tab Through Attributes


&gt; +        var attributeElements = this.listItemElement.getElementsByClassName(&quot;webkit-html-attribute-name&quot;);
&gt; +        for (var i = 0, len = attributeElements.length; i &lt; len; ++i) {
&gt; +            if (attributeElements[i].textContent === attributeName) {
&gt; +                var event = document.createEvent(&quot;MouseEvents&quot;);
&gt; +                event.initMouseEvent(&quot;dblclick&quot;, true, true);
&gt; +                attributeElements[i].nextSibling.nextSibling.dispatchEvent(event); // &quot;=&quot; textNode, then the &quot;webkit-html-attribute-value&quot; node
&gt; +                break;
&gt; +            }
&gt; +        }
&gt; +    },

This should be done without a fake event by asking the ElementsTreeElement to start editing on a specific attribute&apos;s value or name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134820</commentid>
    <comment_count>14</comment_count>
      <attachid>33511</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-07-26 10:15:09 -0700</bug_when>
    <thetext>Created attachment 33511
Tab Through Attributes/Properties (BOTH)

Both patches together.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134822</commentid>
    <comment_count>15</comment_count>
      <attachid>33512</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-07-26 10:27:24 -0700</bug_when>
    <thetext>Created attachment 33512
Tab Through Attributes/Properties (BOTH)

Sorry about the spam, I had forgotten a Changelog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134823</commentid>
    <comment_count>16</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-07-26 10:34:22 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; All looks fine except this. I fear this is too fragile. It would be better to
&gt; loop through the next siblings until you found &quot;webkit-html-attribute-value&quot;.

Done. Ultimately Element Attributes should become more like CSS Properties in the StylesSidebar.  Right now the attributes are generated HTML and I am forced to use DOM Traversal functions.  In the StylesSidebar they are actual TreeElements and I can work on a higher level.

&gt; This would be safer as &quot;elem.hasStyleClass(&quot;name&quot;)&quot; so if we add more to the
&gt; className later it still works.

No Longer Needed (see next).

&gt; Over all these patches look good, but I think they are too low level and
&gt; fragile at this point. They are working with the DOM too much when they should
&gt; just be working with the high-level TreeElements and TreeOutlines.

Done. Once I understood the structure of the higher-level nodes it became much easier (TreeOutline, Pane, TreeSection, TreeElement).(In reply to comment #13)

&gt; This should be done without a fake event by asking the ElementsTreeElement to
&gt; start editing on a specific attribute&apos;s value or name.

Done. The only remaining fake-event is with Element Attributes of which I cannot find a workaround for until its refactored.

---

There are a lot of edge cases in ElementAttributes due to the fact that it is just loosely floating HTML.  And there are even some edge cases in CSS Properties (such as editing an attribute and then pushing tab silently wipes things!).  I believe I handle everything correctly and I&apos;ve tested quite a bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135027</commentid>
    <comment_count>17</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-07-27 14:58:41 -0700</bug_when>
    <thetext>Landed in r46429.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33486</attachid>
            <date>2009-07-24 23:49:02 -0700</date>
            <delta_ts>2009-07-25 00:05:39 -0700</delta_ts>
            <desc>Tab Through Attributes</desc>
            <filename>TabThroughAttributes.patch</filename>
            <type>text/plain</type>
            <size>7934</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZGU0ZDJmYi4uNzExNTk0NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAwOS0wNy0yNCAgSm9zZXBoIFBlY29y
YXJvICA8am9lcGVjazAyQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbnNwZWN0b3I6IFRhYiBUaHJvdWdoIEF0dHJpYnV0ZXMgV2hl
biBFZGl0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yNzY3MworCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRs
aW5lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90
eXBlLl9zdGFydEVkaXRpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVs
ZW1lbnQucHJvdG90eXBlLl9hZGROZXdBdHRyaWJ1dGUpOiByZWZhY3RvcmVkIHRvIHJlbW92ZSBl
eGNlc3MKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LnByb3RvdHlw
ZS5fdHJpZ2dlckVkaXRBdHRyaWJ1dGUpOiBwcm92aWRlIGFuIGF0dHJpYnV0ZSBuYW1lIGFuZCB0
aGlzIHdpbGwgc3RhcnQgZWRpdGluZyBpdAorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRz
VHJlZUVsZW1lbnQucHJvdG90eXBlLl9hdHRyaWJ1dGVFZGl0aW5nQ29tbWl0dGVkLm1vdmVUb05l
eHRBdHRyaWJ1dGVJZk5lZWRlZCk6IG1vdmUgYmV0d2VlbiBhdHRyaWJ1dGVzCisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUuX2F0dHJpYnV0ZUVkaXRp
bmdDb21taXR0ZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGluZy5lZGl0aW5nQ29tbWl0dGVkKTog
aW5jbHVkZSB0aGUgbW92ZSBkaXJlY3Rpb24gYXMgYSBwYXJhbWV0ZXIgdG8gdGhlIGNvbW1pdCBj
YWxsYmFjaworICAgICAgICAoV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGluZy5lbGVtZW50LmhhbmRs
ZUtleUV2ZW50KTogaGFuZGxlIHRoZSB0YWIga2V5IHRvIHNwZWNpZnkgdGhlIG1vdmUgZGlyZWN0
aW9uCisgICAgICAgIChXZWJJbnNwZWN0b3Iuc3RhcnRFZGl0aW5nKToKKwogMjAwOS0wNy0yNCAg
RGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1l
bnRzVHJlZU91dGxpbmUuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNU
cmVlT3V0bGluZS5qcwppbmRleCAwYzkyZDUyLi4yMGU4ZmZkIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qcworKysgYi9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qcwpAQCAtMSw2ICsxLDcg
QEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBNYXR0IExpbGVrIDx3ZWJraXRAbWF0
dGxpbGVrLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBKb3NlcGggUGVjb3Jhcm8KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTU3LDEyICs1NTgsMTIgQEAgV2ViSW5zcGVj
dG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogCiAgICAgICAgIHZhciBuZXdB
dHRyaWJ1dGUgPSBldmVudC50YXJnZXQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhDbGFzcygiYWRk
LWF0dHJpYnV0ZSIpOwogICAgICAgICBpZiAobmV3QXR0cmlidXRlKQotICAgICAgICAgICAgcmV0
dXJuIHRoaXMuX2FkZE5ld0F0dHJpYnV0ZShldmVudCwgdHJlZUVsZW1lbnQpOworICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuX2FkZE5ld0F0dHJpYnV0ZSh0cmVlRWxlbWVudC5saXN0SXRlbUVsZW1l
bnQpOwogCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9LAogCi0gICAgX2FkZE5ld0F0dHJp
YnV0ZTogZnVuY3Rpb24oZXZlbnQsIHRyZWVFbGVtZW50KQorICAgIF9hZGROZXdBdHRyaWJ1dGU6
IGZ1bmN0aW9uKGxpc3RJdGVtRWxlbWVudCkKICAgICB7CiAgICAgICAgIHZhciBhdHRyID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgICBhdHRyLmNsYXNzTmFtZSA9ICJ3
ZWJraXQtaHRtbC1hdHRyaWJ1dGUiOwpAQCAtNTc2LDcgKzU3Nyw3IEBAIFdlYkluc3BlY3Rvci5F
bGVtZW50c1RyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgYXR0ci5hcHBlbmRDaGls
ZChuYW1lKTsKICAgICAgICAgYXR0ci5hcHBlbmRDaGlsZCh2YWx1ZSk7CiAKLSAgICAgICAgdmFy
IHRhZyA9IHRyZWVFbGVtZW50Lmxpc3RJdGVtRWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1l
KCJ3ZWJraXQtaHRtbC10YWciKVswXTsKKyAgICAgICAgdmFyIHRhZyA9IGxpc3RJdGVtRWxlbWVu
dC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJ3ZWJraXQtaHRtbC10YWciKVswXTsKICAgICAgICAg
dGhpcy5faW5zZXJ0SW5MYXN0QXR0cmlidXRlUG9zaXRpb24odGFnLCBhdHRyKTsKIAogICAgICAg
ICAvLyBTdGFydCBlZGl0aW5nIHRoZSBhdHRyIHNwYW4gYW5kIGhpZ2hsaWdodCBpdCBmaXJzdApA
QCAtNTg1LDYgKzU4NiwxOSBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIC8vIHdyb25nIHRhcmdldCBlbGVtZW50CiAgICAgICAgIHJldHVy
biB0aGlzLl9zdGFydEVkaXRpbmdBdHRyaWJ1dGUoYXR0ciwge3RhcmdldDogYXR0cn0pOwogICAg
IH0sCisgICAgCisgICAgX3RyaWdnZXJFZGl0QXR0cmlidXRlOiBmdW5jdGlvbihhdHRyaWJ1dGVO
YW1lKQorICAgIHsKKyAgICAgICAgdmFyIGF0dHJpYnV0ZUVsZW1lbnRzID0gdGhpcy5saXN0SXRl
bUVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgid2Via2l0LWh0bWwtYXR0cmlidXRlLW5h
bWUiKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGF0dHJpYnV0ZUVsZW1lbnRzLmxl
bmd0aDsgaSA8IGxlbjsgKytpKSB7CisgICAgICAgICAgICBpZiAoYXR0cmlidXRlRWxlbWVudHNb
aV0udGV4dENvbnRlbnQgPT09IGF0dHJpYnV0ZU5hbWUpIHsKKyAgICAgICAgICAgICAgICB2YXIg
ZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgiTW91c2VFdmVudHMiKTsKKyAgICAgICAgICAg
ICAgICBldmVudC5pbml0TW91c2VFdmVudCgiZGJsY2xpY2siLCB0cnVlLCB0cnVlKTsKKyAgICAg
ICAgICAgICAgICBhdHRyaWJ1dGVFbGVtZW50c1tpXS5uZXh0U2libGluZy5uZXh0U2libGluZy5k
aXNwYXRjaEV2ZW50KGV2ZW50KTsgLy8gIj0iIHRleHROb2RlLCB0aGVuIHRoZSAid2Via2l0LWh0
bWwtYXR0cmlidXRlLXZhbHVlIiBub2RlCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9LAogCiAgICAgX3N0YXJ0RWRpdGluZ0F0dHJpYnV0ZTog
ZnVuY3Rpb24oYXR0cmlidXRlLCBldmVudCkKICAgICB7CkBAIC02MzUsMTUgKzY0OSw1NiBAQCBX
ZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0sCiAKLSAgICBfYXR0cmlidXRlRWRpdGluZ0NvbW1pdHRlZDogZnVu
Y3Rpb24oZWxlbWVudCwgbmV3VGV4dCwgb2xkVGV4dCwgYXR0cmlidXRlTmFtZSkKKyAgICBfYXR0
cmlidXRlRWRpdGluZ0NvbW1pdHRlZDogZnVuY3Rpb24oZWxlbWVudCwgbmV3VGV4dCwgb2xkVGV4
dCwgYXR0cmlidXRlTmFtZSwgbW92ZURpcmVjdGlvbikKICAgICB7CiAgICAgICAgIGRlbGV0ZSB0
aGlzLl9lZGl0aW5nOwogCisgICAgICAgIC8vIEJlZm9yZSB3ZSBkbyBhbnl0aGluZywgZGV0ZXJt
aW5lIHdoZXJlIHdlIHNob3VsZCBtb3ZlCisgICAgICAgIC8vIG5leHQgYmFzZWQgb24gdGhlIGN1
cnJlbnQgZWxlbWVudCdzIHNldHRpbmdzCisgICAgICAgIHZhciBtb3ZlVG9BdHRyaWJ1dGU7Cisg
ICAgICAgIHZhciBuZXdBdHRyaWJ1dGU7CisgICAgICAgIGlmIChtb3ZlRGlyZWN0aW9uKSB7Cisg
ICAgICAgICAgICB2YXIgZm91bmQgPSBmYWxzZTsKKyAgICAgICAgICAgIHZhciBhdHRyaWJ1dGVz
ID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdC5hdHRyaWJ1dGVzOworICAgICAgICAgICAgZm9yICh2
YXIgaSA9IDAsIGxlbiA9IGF0dHJpYnV0ZXMubGVuZ3RoOyBpIDwgbGVuOyArK2kpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoYXR0cmlidXRlc1tpXS5uYW1lID09PSBhdHRyaWJ1dGVOYW1lKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KG1vdmVEaXJlY3Rpb24gPT09ICJiYWNrd2FyZCIgJiYgaSA+IDApCisgICAgICAgICAgICAgICAg
ICAgICAgICBtb3ZlVG9BdHRyaWJ1dGUgPSBhdHRyaWJ1dGVzW2kgLSAxXS5uYW1lOworICAgICAg
ICAgICAgICAgICAgICBlbHNlIGlmIChtb3ZlRGlyZWN0aW9uID09PSAiZm9yd2FyZCIgJiYgaSA8
IGF0dHJpYnV0ZXMubGVuZ3RoIC0gMSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVUb0F0
dHJpYnV0ZSA9IGF0dHJpYnV0ZXNbaSArIDFdLm5hbWU7CisgICAgICAgICAgICAgICAgICAgIGVs
c2UgaWYgKG1vdmVEaXJlY3Rpb24gPT09ICJmb3J3YXJkIiAmJiBpID09PSBhdHRyaWJ1dGVzLmxl
bmd0aCAtIDEpCisgICAgICAgICAgICAgICAgICAgICAgICBuZXdBdHRyaWJ1dGUgPSB0cnVlOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFmb3Vu
ZCAmJiBtb3ZlRGlyZWN0aW9uID09PSAiYmFja3dhcmQiKQorICAgICAgICAgICAgICAgIG1vdmVU
b0F0dHJpYnV0ZSA9IGF0dHJpYnV0ZXNbYXR0cmlidXRlcy5sZW5ndGggLSAxXS5uYW1lOworICAg
ICAgICAgICAgZWxzZSBpZiAoIWZvdW5kICYmIG1vdmVEaXJlY3Rpb24gPT09ICJmb3J3YXJkIiAm
JiAhL15ccyokLy50ZXN0KG5ld1RleHQpKQorICAgICAgICAgICAgICAgIG5ld0F0dHJpYnV0ZSA9
IHRydWU7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBtb3ZlVG9OZXh0QXR0cmlidXRl
SWZOZWVkZWQoKSB7CisgICAgICAgICAgICBpZiAobW92ZVRvQXR0cmlidXRlKQorICAgICAgICAg
ICAgICAgIHRoaXMuX3RyaWdnZXJFZGl0QXR0cmlidXRlKG1vdmVUb0F0dHJpYnV0ZSk7CisgICAg
ICAgICAgICBlbHNlIGlmIChuZXdBdHRyaWJ1dGUpCisgICAgICAgICAgICAgICAgdGhpcy5fYWRk
TmV3QXR0cmlidXRlKHRoaXMubGlzdEl0ZW1FbGVtZW50KTsgICAgICAgICAgICAKKyAgICAgICAg
fQorCiAgICAgICAgIHZhciBwYXJzZUNvbnRhaW5lckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJzcGFuIik7CiAgICAgICAgIHBhcnNlQ29udGFpbmVyRWxlbWVudC5pbm5lckhUTUwg
PSAiPHNwYW4gIiArIG5ld1RleHQgKyAiPjwvc3Bhbj4iOwogICAgICAgICB2YXIgcGFyc2VFbGVt
ZW50ID0gcGFyc2VDb250YWluZXJFbGVtZW50LmZpcnN0Q2hpbGQ7Ci0gICAgICAgIGlmICghcGFy
c2VFbGVtZW50IHx8ICFwYXJzZUVsZW1lbnQuaGFzQXR0cmlidXRlcygpKSB7CisKKyAgICAgICAg
aWYgKCFwYXJzZUVsZW1lbnQpIHsKICAgICAgICAgICAgIHRoaXMuX2VkaXRpbmdDYW5jZWxsZWQo
ZWxlbWVudCwgYXR0cmlidXRlTmFtZSk7CisgICAgICAgICAgICBtb3ZlVG9OZXh0QXR0cmlidXRl
SWZOZWVkZWQuY2FsbCh0aGlzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmICghcGFyc2VFbGVtZW50Lmhhc0F0dHJpYnV0ZXMoKSkgeworICAgICAgICAgICAg
SW5zcGVjdG9yQ29udHJvbGxlci5pbnNwZWN0ZWRXaW5kb3coKS5FbGVtZW50LnByb3RvdHlwZS5y
ZW1vdmVBdHRyaWJ1dGUuY2FsbCh0aGlzLnJlcHJlc2VudGVkT2JqZWN0LCBhdHRyaWJ1dGVOYW1l
KTsKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVRpdGxlKCk7CisgICAgICAgICAgICBtb3ZlVG9O
ZXh0QXR0cmlidXRlSWZOZWVkZWQuY2FsbCh0aGlzKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCkBAIC02NjAsNiArNzE1LDggQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVs
ZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl91cGRhdGVUaXRsZSgpOwogCiAgICAg
ICAgIHRoaXMudHJlZU91dGxpbmUuZm9jdXNlZE5vZGVDaGFuZ2VkKHRydWUpOworCisgICAgICAg
IG1vdmVUb05leHRBdHRyaWJ1dGVJZk5lZWRlZC5jYWxsKHRoaXMpOwogICAgIH0sCiAKICAgICBf
dGV4dE5vZGVFZGl0aW5nQ29tbWl0dGVkOiBmdW5jdGlvbihlbGVtZW50LCBuZXdUZXh0KQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcyBiL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKaW5kZXggMzYzZjNkZC4uZDNmMDdi
MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwor
KysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCkBAIC0xMjg3LDYg
KzEyODcsNyBAQCBXZWJJbnNwZWN0b3Iuc3RhcnRFZGl0aW5nID0gZnVuY3Rpb24oZWxlbWVudCwg
Y29tbWl0dGVkQ2FsbGJhY2ssIGNhbmNlbGxlZENhbGxiYQogCiAgICAgdmFyIG9sZFRleHQgPSBl
bGVtZW50LnRleHRDb250ZW50OwogICAgIHZhciBvbGRIYW5kbGVLZXlFdmVudCA9IGVsZW1lbnQu
aGFuZGxlS2V5RXZlbnQ7CisgICAgdmFyIG1vdmVEaXJlY3Rpb24gPSAiIjsKIAogICAgIGVsZW1l
bnQuYWRkU3R5bGVDbGFzcygiZWRpdGluZyIpOwogCkBAIC0xMzI0LDcgKzEzMjUsNyBAQCBXZWJJ
bnNwZWN0b3Iuc3RhcnRFZGl0aW5nID0gZnVuY3Rpb24oZWxlbWVudCwgY29tbWl0dGVkQ2FsbGJh
Y2ssIGNhbmNlbGxlZENhbGxiYQogICAgIGZ1bmN0aW9uIGVkaXRpbmdDb21taXR0ZWQoKSB7CiAg
ICAgICAgIGNsZWFuVXBBZnRlckVkaXRpbmcuY2FsbCh0aGlzKTsKIAotICAgICAgICBjb21taXR0
ZWRDYWxsYmFjayh0aGlzLCB0aGlzLnRleHRDb250ZW50LCBvbGRUZXh0LCBjb250ZXh0KTsKKyAg
ICAgICAgY29tbWl0dGVkQ2FsbGJhY2sodGhpcywgdGhpcy50ZXh0Q29udGVudCwgb2xkVGV4dCwg
Y29udGV4dCwgbW92ZURpcmVjdGlvbik7CiAgICAgfQogCiAgICAgZWxlbWVudC5oYW5kbGVLZXlF
dmVudCA9IGZ1bmN0aW9uKGV2ZW50KSB7CkBAIC0xMzQwLDcgKzEzNDEsOCBAQCBXZWJJbnNwZWN0
b3Iuc3RhcnRFZGl0aW5nID0gZnVuY3Rpb24oZWxlbWVudCwgY29tbWl0dGVkQ2FsbGJhY2ssIGNh
bmNlbGxlZENhbGxiYQogICAgICAgICAgICAgZWRpdGluZ0NhbmNlbGxlZC5jYWxsKGVsZW1lbnQp
OwogICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgIGV2ZW50
LmhhbmRsZWQgPSB0cnVlOwotICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5
SWRlbnRpZmllciA9PT0gIlUrMDAwOSIpIC8vIFRhYiBrZXkKKyAgICAgICAgICAgIG1vdmVEaXJl
Y3Rpb24gPSAoZXZlbnQuc2hpZnRLZXkgPyAiYmFja3dhcmQiIDogImZvcndhcmQiKTsKICAgICB9
CiAKICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLCBibHVyRXZlbnRMaXN0ZW5l
ciwgZmFsc2UpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33487</attachid>
            <date>2009-07-25 00:05:39 -0700</date>
            <delta_ts>2009-07-26 10:15:09 -0700</delta_ts>
            <desc>Tab Through Attributes</desc>
            <filename>TabThroughAttributesBetter.patch</filename>
            <type>text/plain</type>
            <size>8660</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZGU0ZDJmYi4uMWY1ZjU0ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAwOS0wNy0yNSAgSm9zZXBoIFBlY29y
YXJvICA8am9lcGVjazAyQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbnNwZWN0b3I6IFRhYiBUaHJvdWdoIEF0dHJpYnV0ZXMgV2hl
biBFZGl0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yNzY3MworCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRs
aW5lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90
eXBlLl9zdGFydEVkaXRpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVs
ZW1lbnQucHJvdG90eXBlLl9hZGROZXdBdHRyaWJ1dGUpOiByZWZhY3RvcmVkIHRvIHJlbW92ZSBl
eGNlc3MKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LnByb3RvdHlw
ZS5fdHJpZ2dlckVkaXRBdHRyaWJ1dGUpOiBwcm92aWRlIGFuIGF0dHJpYnV0ZSBuYW1lIGFuZCB0
aGlzIHdpbGwgc3RhcnQgZWRpdGluZyBpdAorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRz
VHJlZUVsZW1lbnQucHJvdG90eXBlLl9hdHRyaWJ1dGVFZGl0aW5nQ29tbWl0dGVkLm1vdmVUb05l
eHRBdHRyaWJ1dGVJZk5lZWRlZCk6IG1vdmUgYmV0d2VlbiBhdHRyaWJ1dGVzCisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUuX2F0dHJpYnV0ZUVkaXRp
bmdDb21taXR0ZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGluZy5lZGl0aW5nQ29tbWl0dGVkKTog
aW5jbHVkZSB0aGUgbW92ZSBkaXJlY3Rpb24gYXMgYSBwYXJhbWV0ZXIgdG8gdGhlIGNvbW1pdCBj
YWxsYmFjaworICAgICAgICAoV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGluZy5lbGVtZW50LmhhbmRs
ZUtleUV2ZW50KTogaGFuZGxlIHRoZSB0YWIga2V5IHRvIHNwZWNpZnkgdGhlIG1vdmUgZGlyZWN0
aW9uCisgICAgICAgIChXZWJJbnNwZWN0b3Iuc3RhcnRFZGl0aW5nKToKKwogMjAwOS0wNy0yNCAg
RGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1l
bnRzVHJlZU91dGxpbmUuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNU
cmVlT3V0bGluZS5qcwppbmRleCAwYzkyZDUyLi45ZTA2MjU4IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qcworKysgYi9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qcwpAQCAtMSw2ICsxLDcg
QEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBNYXR0IExpbGVrIDx3ZWJraXRAbWF0
dGxpbGVrLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBKb3NlcGggUGVjb3Jhcm8KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTU3LDEyICs1NTgsMTIgQEAgV2ViSW5zcGVj
dG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogCiAgICAgICAgIHZhciBuZXdB
dHRyaWJ1dGUgPSBldmVudC50YXJnZXQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhDbGFzcygiYWRk
LWF0dHJpYnV0ZSIpOwogICAgICAgICBpZiAobmV3QXR0cmlidXRlKQotICAgICAgICAgICAgcmV0
dXJuIHRoaXMuX2FkZE5ld0F0dHJpYnV0ZShldmVudCwgdHJlZUVsZW1lbnQpOworICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuX2FkZE5ld0F0dHJpYnV0ZSh0cmVlRWxlbWVudC5saXN0SXRlbUVsZW1l
bnQpOwogCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9LAogCi0gICAgX2FkZE5ld0F0dHJp
YnV0ZTogZnVuY3Rpb24oZXZlbnQsIHRyZWVFbGVtZW50KQorICAgIF9hZGROZXdBdHRyaWJ1dGU6
IGZ1bmN0aW9uKGxpc3RJdGVtRWxlbWVudCkKICAgICB7CiAgICAgICAgIHZhciBhdHRyID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgICBhdHRyLmNsYXNzTmFtZSA9ICJ3
ZWJraXQtaHRtbC1hdHRyaWJ1dGUiOwpAQCAtNTc2LDcgKzU3Nyw3IEBAIFdlYkluc3BlY3Rvci5F
bGVtZW50c1RyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgYXR0ci5hcHBlbmRDaGls
ZChuYW1lKTsKICAgICAgICAgYXR0ci5hcHBlbmRDaGlsZCh2YWx1ZSk7CiAKLSAgICAgICAgdmFy
IHRhZyA9IHRyZWVFbGVtZW50Lmxpc3RJdGVtRWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1l
KCJ3ZWJraXQtaHRtbC10YWciKVswXTsKKyAgICAgICAgdmFyIHRhZyA9IGxpc3RJdGVtRWxlbWVu
dC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJ3ZWJraXQtaHRtbC10YWciKVswXTsKICAgICAgICAg
dGhpcy5faW5zZXJ0SW5MYXN0QXR0cmlidXRlUG9zaXRpb24odGFnLCBhdHRyKTsKIAogICAgICAg
ICAvLyBTdGFydCBlZGl0aW5nIHRoZSBhdHRyIHNwYW4gYW5kIGhpZ2hsaWdodCBpdCBmaXJzdApA
QCAtNTg1LDYgKzU4NiwxOSBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIC8vIHdyb25nIHRhcmdldCBlbGVtZW50CiAgICAgICAgIHJldHVy
biB0aGlzLl9zdGFydEVkaXRpbmdBdHRyaWJ1dGUoYXR0ciwge3RhcmdldDogYXR0cn0pOwogICAg
IH0sCisgICAgCisgICAgX3RyaWdnZXJFZGl0QXR0cmlidXRlOiBmdW5jdGlvbihhdHRyaWJ1dGVO
YW1lKQorICAgIHsKKyAgICAgICAgdmFyIGF0dHJpYnV0ZUVsZW1lbnRzID0gdGhpcy5saXN0SXRl
bUVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgid2Via2l0LWh0bWwtYXR0cmlidXRlLW5h
bWUiKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGF0dHJpYnV0ZUVsZW1lbnRzLmxl
bmd0aDsgaSA8IGxlbjsgKytpKSB7CisgICAgICAgICAgICBpZiAoYXR0cmlidXRlRWxlbWVudHNb
aV0udGV4dENvbnRlbnQgPT09IGF0dHJpYnV0ZU5hbWUpIHsKKyAgICAgICAgICAgICAgICB2YXIg
ZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgiTW91c2VFdmVudHMiKTsKKyAgICAgICAgICAg
ICAgICBldmVudC5pbml0TW91c2VFdmVudCgiZGJsY2xpY2siLCB0cnVlLCB0cnVlKTsKKyAgICAg
ICAgICAgICAgICBhdHRyaWJ1dGVFbGVtZW50c1tpXS5uZXh0U2libGluZy5uZXh0U2libGluZy5k
aXNwYXRjaEV2ZW50KGV2ZW50KTsgLy8gIj0iIHRleHROb2RlLCB0aGVuIHRoZSAid2Via2l0LWh0
bWwtYXR0cmlidXRlLXZhbHVlIiBub2RlCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9LAogCiAgICAgX3N0YXJ0RWRpdGluZ0F0dHJpYnV0ZTog
ZnVuY3Rpb24oYXR0cmlidXRlLCBldmVudCkKICAgICB7CkBAIC02MzUsMTUgKzY0OSw1NiBAQCBX
ZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0sCiAKLSAgICBfYXR0cmlidXRlRWRpdGluZ0NvbW1pdHRlZDogZnVu
Y3Rpb24oZWxlbWVudCwgbmV3VGV4dCwgb2xkVGV4dCwgYXR0cmlidXRlTmFtZSkKKyAgICBfYXR0
cmlidXRlRWRpdGluZ0NvbW1pdHRlZDogZnVuY3Rpb24oZWxlbWVudCwgbmV3VGV4dCwgb2xkVGV4
dCwgYXR0cmlidXRlTmFtZSwgbW92ZURpcmVjdGlvbikKICAgICB7CiAgICAgICAgIGRlbGV0ZSB0
aGlzLl9lZGl0aW5nOwogCisgICAgICAgIC8vIEJlZm9yZSB3ZSBkbyBhbnl0aGluZywgZGV0ZXJt
aW5lIHdoZXJlIHdlIHNob3VsZCBtb3ZlCisgICAgICAgIC8vIG5leHQgYmFzZWQgb24gdGhlIGN1
cnJlbnQgZWxlbWVudCdzIHNldHRpbmdzCisgICAgICAgIHZhciBtb3ZlVG9BdHRyaWJ1dGU7Cisg
ICAgICAgIHZhciBuZXdBdHRyaWJ1dGU7CisgICAgICAgIGlmIChtb3ZlRGlyZWN0aW9uKSB7Cisg
ICAgICAgICAgICB2YXIgZm91bmQgPSBmYWxzZTsKKyAgICAgICAgICAgIHZhciBhdHRyaWJ1dGVz
ID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdC5hdHRyaWJ1dGVzOworICAgICAgICAgICAgZm9yICh2
YXIgaSA9IDAsIGxlbiA9IGF0dHJpYnV0ZXMubGVuZ3RoOyBpIDwgbGVuOyArK2kpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoYXR0cmlidXRlc1tpXS5uYW1lID09PSBhdHRyaWJ1dGVOYW1lKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KG1vdmVEaXJlY3Rpb24gPT09ICJiYWNrd2FyZCIgJiYgaSA+IDApCisgICAgICAgICAgICAgICAg
ICAgICAgICBtb3ZlVG9BdHRyaWJ1dGUgPSBhdHRyaWJ1dGVzW2kgLSAxXS5uYW1lOworICAgICAg
ICAgICAgICAgICAgICBlbHNlIGlmIChtb3ZlRGlyZWN0aW9uID09PSAiZm9yd2FyZCIgJiYgaSA8
IGF0dHJpYnV0ZXMubGVuZ3RoIC0gMSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVUb0F0
dHJpYnV0ZSA9IGF0dHJpYnV0ZXNbaSArIDFdLm5hbWU7CisgICAgICAgICAgICAgICAgICAgIGVs
c2UgaWYgKG1vdmVEaXJlY3Rpb24gPT09ICJmb3J3YXJkIiAmJiBpID09PSBhdHRyaWJ1dGVzLmxl
bmd0aCAtIDEpCisgICAgICAgICAgICAgICAgICAgICAgICBuZXdBdHRyaWJ1dGUgPSB0cnVlOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFmb3Vu
ZCAmJiBtb3ZlRGlyZWN0aW9uID09PSAiYmFja3dhcmQiKQorICAgICAgICAgICAgICAgIG1vdmVU
b0F0dHJpYnV0ZSA9IGF0dHJpYnV0ZXNbYXR0cmlidXRlcy5sZW5ndGggLSAxXS5uYW1lOworICAg
ICAgICAgICAgZWxzZSBpZiAoIWZvdW5kICYmIG1vdmVEaXJlY3Rpb24gPT09ICJmb3J3YXJkIiAm
JiAhL15ccyokLy50ZXN0KG5ld1RleHQpKQorICAgICAgICAgICAgICAgIG5ld0F0dHJpYnV0ZSA9
IHRydWU7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBtb3ZlVG9OZXh0QXR0cmlidXRl
SWZOZWVkZWQoKSB7CisgICAgICAgICAgICBpZiAobW92ZVRvQXR0cmlidXRlKQorICAgICAgICAg
ICAgICAgIHRoaXMuX3RyaWdnZXJFZGl0QXR0cmlidXRlKG1vdmVUb0F0dHJpYnV0ZSk7CisgICAg
ICAgICAgICBlbHNlIGlmIChuZXdBdHRyaWJ1dGUpCisgICAgICAgICAgICAgICAgdGhpcy5fYWRk
TmV3QXR0cmlidXRlKHRoaXMubGlzdEl0ZW1FbGVtZW50KTsgICAgICAgICAgICAKKyAgICAgICAg
fQorCiAgICAgICAgIHZhciBwYXJzZUNvbnRhaW5lckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJzcGFuIik7CiAgICAgICAgIHBhcnNlQ29udGFpbmVyRWxlbWVudC5pbm5lckhUTUwg
PSAiPHNwYW4gIiArIG5ld1RleHQgKyAiPjwvc3Bhbj4iOwogICAgICAgICB2YXIgcGFyc2VFbGVt
ZW50ID0gcGFyc2VDb250YWluZXJFbGVtZW50LmZpcnN0Q2hpbGQ7Ci0gICAgICAgIGlmICghcGFy
c2VFbGVtZW50IHx8ICFwYXJzZUVsZW1lbnQuaGFzQXR0cmlidXRlcygpKSB7CisKKyAgICAgICAg
aWYgKCFwYXJzZUVsZW1lbnQpIHsKICAgICAgICAgICAgIHRoaXMuX2VkaXRpbmdDYW5jZWxsZWQo
ZWxlbWVudCwgYXR0cmlidXRlTmFtZSk7CisgICAgICAgICAgICBtb3ZlVG9OZXh0QXR0cmlidXRl
SWZOZWVkZWQuY2FsbCh0aGlzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmICghcGFyc2VFbGVtZW50Lmhhc0F0dHJpYnV0ZXMoKSkgeworICAgICAgICAgICAg
SW5zcGVjdG9yQ29udHJvbGxlci5pbnNwZWN0ZWRXaW5kb3coKS5FbGVtZW50LnByb3RvdHlwZS5y
ZW1vdmVBdHRyaWJ1dGUuY2FsbCh0aGlzLnJlcHJlc2VudGVkT2JqZWN0LCBhdHRyaWJ1dGVOYW1l
KTsKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVRpdGxlKCk7CisgICAgICAgICAgICBtb3ZlVG9O
ZXh0QXR0cmlidXRlSWZOZWVkZWQuY2FsbCh0aGlzKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCkBAIC02NTEsNyArNzA2LDkgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVs
ZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhcnNlRWxl
bWVudC5hdHRyaWJ1dGVzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICB2YXIgYXR0ciA9IHBh
cnNlRWxlbWVudC5hdHRyaWJ1dGVzW2ldOwogICAgICAgICAgICAgZm91bmRPcmlnaW5hbEF0dHJp
YnV0ZSA9IGZvdW5kT3JpZ2luYWxBdHRyaWJ1dGUgfHwgYXR0ci5uYW1lID09PSBhdHRyaWJ1dGVO
YW1lOwotICAgICAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlci5pbnNwZWN0ZWRXaW5kb3coKS5F
bGVtZW50LnByb3RvdHlwZS5zZXRBdHRyaWJ1dGUuY2FsbCh0aGlzLnJlcHJlc2VudGVkT2JqZWN0
LCBhdHRyLm5hbWUsIGF0dHIudmFsdWUpOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JDb250cm9sbGVyLmluc3BlY3RlZFdpbmRvdygpLkVsZW1lbnQucHJvdG90
eXBlLnNldEF0dHJpYnV0ZS5jYWxsKHRoaXMucmVwcmVzZW50ZWRPYmplY3QsIGF0dHIubmFtZSwg
YXR0ci52YWx1ZSk7CisgICAgICAgICAgICB9IGNhdGNoKGUpIHt9IC8vIGlnbm9yZSBpbnZhbGlk
IGF0dHJpYnV0ZSAoaW5uZXJIVE1MIGRvZXNuJ3QgdGhyb3cgZXJyb3JzLCBidXQgdGhpcyBjYW4p
CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIWZvdW5kT3JpZ2luYWxBdHRyaWJ1dGUpCkBAIC02
NjAsNiArNzE3LDggQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBl
ID0gewogICAgICAgICB0aGlzLl91cGRhdGVUaXRsZSgpOwogCiAgICAgICAgIHRoaXMudHJlZU91
dGxpbmUuZm9jdXNlZE5vZGVDaGFuZ2VkKHRydWUpOworCisgICAgICAgIG1vdmVUb05leHRBdHRy
aWJ1dGVJZk5lZWRlZC5jYWxsKHRoaXMpOwogICAgIH0sCiAKICAgICBfdGV4dE5vZGVFZGl0aW5n
Q29tbWl0dGVkOiBmdW5jdGlvbihlbGVtZW50LCBuZXdUZXh0KQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9pbnNwZWN0b3IuanMKaW5kZXggMzYzZjNkZC4uZDNmMDdiMiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcworKysgYi9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCkBAIC0xMjg3LDYgKzEyODcsNyBAQCBXZWJJ
bnNwZWN0b3Iuc3RhcnRFZGl0aW5nID0gZnVuY3Rpb24oZWxlbWVudCwgY29tbWl0dGVkQ2FsbGJh
Y2ssIGNhbmNlbGxlZENhbGxiYQogCiAgICAgdmFyIG9sZFRleHQgPSBlbGVtZW50LnRleHRDb250
ZW50OwogICAgIHZhciBvbGRIYW5kbGVLZXlFdmVudCA9IGVsZW1lbnQuaGFuZGxlS2V5RXZlbnQ7
CisgICAgdmFyIG1vdmVEaXJlY3Rpb24gPSAiIjsKIAogICAgIGVsZW1lbnQuYWRkU3R5bGVDbGFz
cygiZWRpdGluZyIpOwogCkBAIC0xMzI0LDcgKzEzMjUsNyBAQCBXZWJJbnNwZWN0b3Iuc3RhcnRF
ZGl0aW5nID0gZnVuY3Rpb24oZWxlbWVudCwgY29tbWl0dGVkQ2FsbGJhY2ssIGNhbmNlbGxlZENh
bGxiYQogICAgIGZ1bmN0aW9uIGVkaXRpbmdDb21taXR0ZWQoKSB7CiAgICAgICAgIGNsZWFuVXBB
ZnRlckVkaXRpbmcuY2FsbCh0aGlzKTsKIAotICAgICAgICBjb21taXR0ZWRDYWxsYmFjayh0aGlz
LCB0aGlzLnRleHRDb250ZW50LCBvbGRUZXh0LCBjb250ZXh0KTsKKyAgICAgICAgY29tbWl0dGVk
Q2FsbGJhY2sodGhpcywgdGhpcy50ZXh0Q29udGVudCwgb2xkVGV4dCwgY29udGV4dCwgbW92ZURp
cmVjdGlvbik7CiAgICAgfQogCiAgICAgZWxlbWVudC5oYW5kbGVLZXlFdmVudCA9IGZ1bmN0aW9u
KGV2ZW50KSB7CkBAIC0xMzQwLDcgKzEzNDEsOCBAQCBXZWJJbnNwZWN0b3Iuc3RhcnRFZGl0aW5n
ID0gZnVuY3Rpb24oZWxlbWVudCwgY29tbWl0dGVkQ2FsbGJhY2ssIGNhbmNlbGxlZENhbGxiYQog
ICAgICAgICAgICAgZWRpdGluZ0NhbmNlbGxlZC5jYWxsKGVsZW1lbnQpOwogICAgICAgICAgICAg
ZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgIGV2ZW50LmhhbmRsZWQgPSB0cnVl
OwotICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5SWRlbnRpZmllciA9PT0g
IlUrMDAwOSIpIC8vIFRhYiBrZXkKKyAgICAgICAgICAgIG1vdmVEaXJlY3Rpb24gPSAoZXZlbnQu
c2hpZnRLZXkgPyAiYmFja3dhcmQiIDogImZvcndhcmQiKTsKICAgICB9CiAKICAgICBlbGVtZW50
LmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLCBibHVyRXZlbnRMaXN0ZW5lciwgZmFsc2UpOwo=
</data>
<flag name="review"
          id="17758"
          type_id="1"
          status="-"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33503</attachid>
            <date>2009-07-26 00:26:26 -0700</date>
            <delta_ts>2009-07-26 00:38:30 -0700</delta_ts>
            <desc>Tab Through CSS Properties (Needs First Patch)</desc>
            <filename>TabThroughCSSProperties.patch</filename>
            <type>text/plain</type>
            <size>5698</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZGU0ZDJmYi4uYmYwNDdkYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAwOS0wNy0yNiAgSm9zZXBoIFBlY29y
YXJvICA8am9lcGVjazAyQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbnNwZWN0b3I6IFRhYiBUaHJvdWdoIFByb3BlcnRpZXMgV2hl
biBFZGl0aW5nIENTUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Mjc2NzMKKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJh
clBhbmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5w
cm90b3R5cGUudXBkYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJl
ZUVsZW1lbnQucHJvdG90eXBlLik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0
eVRyZWVFbGVtZW50LnByb3RvdHlwZSk6CisKIDIwMDktMDctMjQgIERhbiBCZXJuc3RlaW4gIDxt
aXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcyBi
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcwppbmRleCBj
MzA0NDRiLi4zOTAzZDgxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
U3R5bGVzU2lkZWJhclBhbmUuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0
eWxlc1NpZGViYXJQYW5lLmpzCkBAIC0zODcsNiArMzg3LDExIEBAIFdlYkluc3BlY3Rvci5TdHls
ZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBjaGlsZCA9
IGNoaWxkLnRyYXZlcnNlTmV4dFRyZWVFbGVtZW50KGZhbHNlLCBudWxsLCB0cnVlKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQorCisgICAgICAgIGlmICh0aGlzLl9hZnRlclVwZGF0ZSkgewor
ICAgICAgICAgICAgdGhpcy5fYWZ0ZXJVcGRhdGUodGhpcyk7CisgICAgICAgICAgICBkZWxldGUg
dGhpcy5fYWZ0ZXJVcGRhdGU7CisgICAgICAgIH0KICAgICB9LAogCiAgICAgb25wb3B1bGF0ZTog
ZnVuY3Rpb24oKQpAQCAtODQzLDE0ICs4NDgsNjYgQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVy
dHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuZWRpdGluZ0VuZGVkKGNv
bnRleHQpOwogICAgIH0sCiAKLSAgICBlZGl0aW5nQ29tbWl0dGVkOiBmdW5jdGlvbihlbGVtZW50
LCB1c2VySW5wdXQsIHByZXZpb3VzQ29udGVudCwgY29udGV4dCkKLSAgICB7CisgICAgZWRpdGlu
Z0NvbW1pdHRlZDogZnVuY3Rpb24oZWxlbWVudCwgdXNlcklucHV0LCBwcmV2aW91c0NvbnRlbnQs
IGNvbnRleHQsIG1vdmVEaXJlY3Rpb24pCisgICAgeyAgICAgICAgCiAgICAgICAgIHRoaXMuZWRp
dGluZ0VuZGVkKGNvbnRleHQpOworICAgICAgICAKKyAgICAgICAgLy8gRGV0ZXJtaW5lIHdoZXJl
IHRvIG1vdmUgdG8gYmVmb3JlIG1ha2luZyBjaGFuZ2VzCisgICAgICAgIHZhciBuYW1lT2ZQcm9w
cmV0eVRvRWRpdDsKKyAgICAgICAgdmFyIG5ld1Byb3BlcnR5ID0gZmFsc2U7CisgICAgICAgIHZh
ciBtb3ZlVG8gPSAobW92ZURpcmVjdGlvbiA9PT0gImZvcndhcmQiID8gdGhpcy5saXN0SXRlbUVs
ZW1lbnQubmV4dFNpYmxpbmcgOiB0aGlzLmxpc3RJdGVtRWxlbWVudC5wcmV2aW91c1NpYmxpbmcp
OworICAgICAgICBpZiAobW92ZVRvKSB7CisgICAgICAgICAgICBmb3IgKHZhciBlbGVtID0gbW92
ZVRvLmZpcnN0Q2hpbGQ7IGVsZW07IGVsZW0gPSBlbGVtLm5leHRTaWJsaW5nKSB7CisgICAgICAg
ICAgICAgICAgaWYgKGVsZW0uY2xhc3NOYW1lID09PSAibmFtZSIpIHsKKyAgICAgICAgICAgICAg
ICAgICAgbmFtZU9mUHJvcHJldHlUb0VkaXQgPSBlbGVtLnRleHRDb250ZW50OworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgIH0gZWxzZSBpZiAobW92ZURpcmVjdGlvbiA9PT0gImZvcndhcmQiKQorICAgICAgICAgICAg
bmV3UHJvcGVydHkgPSB0cnVlOworCisgICAgICAgIC8vIE1ha2UgdGhlIENoYW5nZXMgYW5kIHRy
aWdnZXIgdGhlIG1vdmVUb05leHRDYWxsYmFjayBhZnRlciB1cGRhdGluZworICAgICAgICB2YXIg
YmxhbmtJbnB1dCA9IC9eXHMqJC8udGVzdCh1c2VySW5wdXQpOworICAgICAgICBpZiAodXNlcklu
cHV0ICE9PSBwcmV2aW91c0NvbnRlbnQgfHwgKHRoaXMuX25ld1Byb3BlcnR5ICYmIGJsYW5rSW5w
dXQpICkgeyAvLyBvbmx5IGlmIHNvbWV0aGluZyBjaGFuZ2VkLCBvciBhZGRpbmcgYSBuZXcgc3R5
bGUgYW5kIGl0IHdhcyBibGFuaworICAgICAgICAgICAgdGhpcy50cmVlT3V0bGluZS5zZWN0aW9u
Ll9hZnRlclVwZGF0ZSA9IG1vdmVUb05leHRDYWxsYmFjay5iaW5kKHRoaXMsIHRoaXMuX25ld1By
b3BlcnR5LCAhYmxhbmtJbnB1dCk7CisgICAgICAgICAgICB0aGlzLmFwcGx5U3R5bGVUZXh0KHVz
ZXJJbnB1dCwgdHJ1ZSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbW92ZVRvTmV4dENh
bGxiYWNrKHRoaXMuX25ld1Byb3BlcnR5LCBmYWxzZSwgdGhpcy50cmVlT3V0bGluZS5zZWN0aW9u
KTsKIAotICAgICAgICBpZiAodXNlcklucHV0ID09PSBwcmV2aW91c0NvbnRlbnQpCi0gICAgICAg
ICAgICByZXR1cm47IC8vIG5vdGhpbmcgY2hhbmdlZCwgc28gZG8gbm90aGluZyBlbHNlCisgICAg
ICAgIC8vIFRoZSBDYWxsYmFjayB0byBzdGFydCBlZGl0aW5nIHRoZSBuZXh0IHByb3BlcnR5Cisg
ICAgICAgIGZ1bmN0aW9uIG1vdmVUb05leHRDYWxsYmFjayhhbHJlYWR5TmV3LCB2YWx1ZUNoYW5n
ZWQsIHNlY3Rpb24pIHsKKyAgICAgICAgICAgIGlmICghbW92ZURpcmVjdGlvbikKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIHZhciBldmVudCA9IGRvY3VtZW50LmNyZWF0
ZUV2ZW50KCJNb3VzZUV2ZW50cyIpOworICAgICAgICAgICAgZXZlbnQuaW5pdE1vdXNlRXZlbnQo
ImRibGNsaWNrIiwgdHJ1ZSwgdHJ1ZSk7CisgICAgICAgIAorICAgICAgICAgICAgLy8gQ3JlYXRl
IGEgbmV3IGF0dHJpYnV0ZSBpbiB0aGlzIHNlY3Rpb24KKyAgICAgICAgICAgIGlmIChuZXdQcm9w
ZXJ0eSkgeworICAgICAgICAgICAgICAgIGlmIChhbHJlYWR5TmV3ICYmICF2YWx1ZUNoYW5nZWQp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIHZhciBpdGVt
ID0gbmV3IFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQoc2VjdGlvbi5zdHls
ZVJ1bGUuc3R5bGUsICIiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CisgICAgICAgICAg
ICAgICAgc2VjdGlvbi5wcm9wZXJ0aWVzVHJlZU91dGxpbmUuYXBwZW5kQ2hpbGQoaXRlbSk7Cisg
ICAgICAgICAgICAgICAgaXRlbS5fbmV3UHJvcGVydHkgPSB0cnVlOworICAgICAgICAgICAgICAg
IGl0ZW0ubGlzdEl0ZW1FbGVtZW50LnRleHRDb250ZW50ID0gIiI7CisgICAgICAgICAgICAgICAg
aXRlbS5saXN0SXRlbUVsZW1lbnQuZGlzcGF0Y2hFdmVudChldmVudCk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgICAgIC8vIEZpbmQg
dGhlIGF0dHJpYnV0ZSB3ZSB3ZXJlIHN1cHBvc2VkIHRvIHN0YXJ0IGVkaXRpbmcgaW4gdGhpcyBz
ZWN0aW9uCisgICAgICAgICAgICB2YXIgbGlzdCA9IHNlY3Rpb24ucHJvcGVydGllc1RyZWVPdXRs
aW5lLl9jaGlsZHJlbkxpc3ROb2RlLmNoaWxkTm9kZXM7CisgICAgICAgICAgICBmb3IgKHZhciBp
ID0gMCwgbGVuID0gbGlzdC5sZW5ndGg7IGkgPCBsZW47ICsraSkgeworICAgICAgICAgICAgICAg
IHZhciBsaXN0SXRlbSA9IGxpc3RbaV07CisgICAgICAgICAgICAgICAgdmFyIHNwYW5zID0gbGlz
dEl0ZW0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNwYW4iKTsKKyAgICAgICAgICAgICAgICBpZiAo
c3BhbnNbMF0udGV4dENvbnRlbnQgPT09IG5hbWVPZlByb3ByZXR5VG9FZGl0KSB7CisgICAgICAg
ICAgICAgICAgICAgIHNwYW5zWzFdLmRpc3BhdGNoRXZlbnQoZXZlbnQpOyAvLyB0aGUgdmFsdWUK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKworICAgICAgICB9CiAKLSAgICAgICAgdGhpcy5hcHBseVN0eWxlVGV4dCh1c2VySW5w
dXQsIHRydWUpOwogICAgIH0sCiAKICAgICBhcHBseVN0eWxlVGV4dDogZnVuY3Rpb24oc3R5bGVU
ZXh0LCB1cGRhdGVJbnRlcmZhY2UpCkBAIC04NzYsNyArOTMzLDkgQEAgV2ViSW5zcGVjdG9yLlN0
eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKCFzdHls
ZVRleHRMZW5ndGgpIHsKICAgICAgICAgICAgIGlmICh1cGRhdGVJbnRlcmZhY2UpIHsKLSAgICAg
ICAgICAgICAgICAvLyBUaGUgdXNlciBkZWxldGVkIHRoZSBldmVyeXRoaW5nLCBzbyByZW1vdmUg
dGhlIHRyZWUgZWxlbWVudCBhbmQgdXBkYXRlLgorICAgICAgICAgICAgICAgIC8vIFRoZSB1c2Vy
IGRlbGV0ZWQgZXZlcnl0aGluZywgc28gcmVtb3ZlIHRoZSB0cmVlIGVsZW1lbnQgYW5kIHVwZGF0
ZS4KKyAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX25ld1Byb3BlcnR5KQorICAgICAgICAgICAg
ICAgICAgICBkZWxldGUgdGhpcy50cmVlT3V0bGluZS5zZWN0aW9uLl9hZnRlclVwZGF0ZTsKICAg
ICAgICAgICAgICAgICBpZiAodGhpcy50cmVlT3V0bGluZS5zZWN0aW9uICYmIHRoaXMudHJlZU91
dGxpbmUuc2VjdGlvbi5wYW5lKQogICAgICAgICAgICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5l
LnNlY3Rpb24ucGFuZS51cGRhdGUoKTsKICAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC5yZW1v
dmVDaGlsZCh0aGlzKTsKQEAgLTg4Niw3ICs5NDUsMTIgQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJv
cGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKCF0ZW1wU3R5bGUu
bGVuZ3RoKSB7CiAgICAgICAgICAgICAvLyBUaGUgdXNlciB0eXBlZCBzb21ldGhpbmcsIGJ1dCBp
dCBkaWRuJ3QgcGFyc2UuIEp1c3QgYWJvcnQgYW5kIHJlc3RvcmUKLSAgICAgICAgICAgIC8vIHRo
ZSBvcmlnaW5hbCB0aXRsZSBmb3IgdGhpcyBwcm9wZXJ0eS4KKyAgICAgICAgICAgIC8vIHRoZSBv
cmlnaW5hbCB0aXRsZSBmb3IgdGhpcyBwcm9wZXJ0eS4gIElmIHRoaXMgd2FzIGEgbmV3IGF0dHJp
YnV0ZSBhbmQKKyAgICAgICAgICAgIC8vIHdlIGNvdWxkbid0IHBhcnNlLCB0aGVuIGp1c3QgcmVt
b3ZlIGl0LgorICAgICAgICAgICAgaWYgKHRoaXMuX25ld1Byb3BlcnR5KSB7CisgICAgICAgICAg
ICAgICAgdGhpcy5wYXJlbnQucmVtb3ZlQ2hpbGQodGhpcyk7CisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHVwZGF0ZUludGVyZmFjZSkKICAg
ICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVRpdGxlKCk7CiAgICAgICAgICAgICByZXR1cm47Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33504</attachid>
            <date>2009-07-26 00:38:30 -0700</date>
            <delta_ts>2009-07-26 07:05:51 -0700</delta_ts>
            <desc>Tab Through CSS Properties (Needs First Patch)</desc>
            <filename>TabThroughCSSProperties.patch</filename>
            <type>text/plain</type>
            <size>5657</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZGU0ZDJmYi4uYmYwNDdkYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAwOS0wNy0yNiAgSm9zZXBoIFBlY29y
YXJvICA8am9lcGVjazAyQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbnNwZWN0b3I6IFRhYiBUaHJvdWdoIFByb3BlcnRpZXMgV2hl
biBFZGl0aW5nIENTUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Mjc2NzMKKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJh
clBhbmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5w
cm90b3R5cGUudXBkYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJl
ZUVsZW1lbnQucHJvdG90eXBlLik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0
eVRyZWVFbGVtZW50LnByb3RvdHlwZSk6CisKIDIwMDktMDctMjQgIERhbiBCZXJuc3RlaW4gIDxt
aXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcyBi
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcwppbmRleCBj
MzA0NDRiLi5lZjYwYWI4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
U3R5bGVzU2lkZWJhclBhbmUuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0
eWxlc1NpZGViYXJQYW5lLmpzCkBAIC0zODcsNiArMzg3LDExIEBAIFdlYkluc3BlY3Rvci5TdHls
ZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBjaGlsZCA9
IGNoaWxkLnRyYXZlcnNlTmV4dFRyZWVFbGVtZW50KGZhbHNlLCBudWxsLCB0cnVlKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQorCisgICAgICAgIGlmICh0aGlzLl9hZnRlclVwZGF0ZSkgewor
ICAgICAgICAgICAgdGhpcy5fYWZ0ZXJVcGRhdGUodGhpcyk7CisgICAgICAgICAgICBkZWxldGUg
dGhpcy5fYWZ0ZXJVcGRhdGU7CisgICAgICAgIH0KICAgICB9LAogCiAgICAgb25wb3B1bGF0ZTog
ZnVuY3Rpb24oKQpAQCAtODQzLDE0ICs4NDgsNjUgQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVy
dHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuZWRpdGluZ0VuZGVkKGNv
bnRleHQpOwogICAgIH0sCiAKLSAgICBlZGl0aW5nQ29tbWl0dGVkOiBmdW5jdGlvbihlbGVtZW50
LCB1c2VySW5wdXQsIHByZXZpb3VzQ29udGVudCwgY29udGV4dCkKKyAgICBlZGl0aW5nQ29tbWl0
dGVkOiBmdW5jdGlvbihlbGVtZW50LCB1c2VySW5wdXQsIHByZXZpb3VzQ29udGVudCwgY29udGV4
dCwgbW92ZURpcmVjdGlvbikKICAgICB7CiAgICAgICAgIHRoaXMuZWRpdGluZ0VuZGVkKGNvbnRl
eHQpOwogCi0gICAgICAgIGlmICh1c2VySW5wdXQgPT09IHByZXZpb3VzQ29udGVudCkKLSAgICAg
ICAgICAgIHJldHVybjsgLy8gbm90aGluZyBjaGFuZ2VkLCBzbyBkbyBub3RoaW5nIGVsc2UKKyAg
ICAgICAgLy8gRGV0ZXJtaW5lIHdoZXJlIHRvIG1vdmUgdG8gYmVmb3JlIG1ha2luZyBjaGFuZ2Vz
CisgICAgICAgIHZhciBuYW1lT2ZQcm9wcmV0eVRvRWRpdDsKKyAgICAgICAgdmFyIG5ld1Byb3Bl
cnR5ID0gZmFsc2U7CisgICAgICAgIHZhciBtb3ZlVG8gPSAobW92ZURpcmVjdGlvbiA9PT0gImZv
cndhcmQiID8gdGhpcy5saXN0SXRlbUVsZW1lbnQubmV4dFNpYmxpbmcgOiB0aGlzLmxpc3RJdGVt
RWxlbWVudC5wcmV2aW91c1NpYmxpbmcpOworICAgICAgICBpZiAobW92ZVRvKSB7CisgICAgICAg
ICAgICBmb3IgKHZhciBlbGVtID0gbW92ZVRvLmZpcnN0Q2hpbGQ7IGVsZW07IGVsZW0gPSBlbGVt
Lm5leHRTaWJsaW5nKSB7CisgICAgICAgICAgICAgICAgaWYgKGVsZW0uY2xhc3NOYW1lID09PSAi
bmFtZSIpIHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZU9mUHJvcHJldHlUb0VkaXQgPSBlbGVt
LnRleHRDb250ZW50OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAobW92ZURpcmVjdGlvbiA9PT0g
ImZvcndhcmQiKQorICAgICAgICAgICAgbmV3UHJvcGVydHkgPSB0cnVlOworCisgICAgICAgIC8v
IE1ha2UgdGhlIENoYW5nZXMgYW5kIHRyaWdnZXIgdGhlIG1vdmVUb05leHRDYWxsYmFjayBhZnRl
ciB1cGRhdGluZworICAgICAgICB2YXIgYmxhbmtJbnB1dCA9IC9eXHMqJC8udGVzdCh1c2VySW5w
dXQpOworICAgICAgICBpZiAodXNlcklucHV0ICE9PSBwcmV2aW91c0NvbnRlbnQgfHwgKHRoaXMu
X25ld1Byb3BlcnR5ICYmIGJsYW5rSW5wdXQpICkgeyAvLyBvbmx5IGlmIHNvbWV0aGluZyBjaGFu
Z2VkLCBvciBhZGRpbmcgYSBuZXcgc3R5bGUgYW5kIGl0IHdhcyBibGFuaworICAgICAgICAgICAg
dGhpcy50cmVlT3V0bGluZS5zZWN0aW9uLl9hZnRlclVwZGF0ZSA9IG1vdmVUb05leHRDYWxsYmFj
ay5iaW5kKHRoaXMsIHRoaXMuX25ld1Byb3BlcnR5LCAhYmxhbmtJbnB1dCk7CisgICAgICAgICAg
ICB0aGlzLmFwcGx5U3R5bGVUZXh0KHVzZXJJbnB1dCwgdHJ1ZSk7CisgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgbW92ZVRvTmV4dENhbGxiYWNrKHRoaXMuX25ld1Byb3BlcnR5LCBmYWxzZSwg
dGhpcy50cmVlT3V0bGluZS5zZWN0aW9uKTsKKworICAgICAgICAvLyBUaGUgQ2FsbGJhY2sgdG8g
c3RhcnQgZWRpdGluZyB0aGUgbmV4dCBwcm9wZXJ0eQorICAgICAgICBmdW5jdGlvbiBtb3ZlVG9O
ZXh0Q2FsbGJhY2soYWxyZWFkeU5ldywgdmFsdWVDaGFuZ2VkLCBzZWN0aW9uKSB7CisgICAgICAg
ICAgICBpZiAoIW1vdmVEaXJlY3Rpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgICAgICB2YXIgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgiTW91c2VFdmVudHMiKTsK
KyAgICAgICAgICAgIGV2ZW50LmluaXRNb3VzZUV2ZW50KCJkYmxjbGljayIsIHRydWUsIHRydWUp
OworCisgICAgICAgICAgICAvLyBDcmVhdGUgYSBuZXcgYXR0cmlidXRlIGluIHRoaXMgc2VjdGlv
bgorICAgICAgICAgICAgaWYgKG5ld1Byb3BlcnR5KSB7CisgICAgICAgICAgICAgICAgaWYgKGFs
cmVhZHlOZXcgJiYgIXZhbHVlQ2hhbmdlZCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgICAgICAgICAgdmFyIGl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVy
dHlUcmVlRWxlbWVudChzZWN0aW9uLnN0eWxlUnVsZS5zdHlsZSwgIiIsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICBzZWN0aW9uLnByb3BlcnRpZXNUcmVlT3V0
bGluZS5hcHBlbmRDaGlsZChpdGVtKTsKKyAgICAgICAgICAgICAgICBpdGVtLl9uZXdQcm9wZXJ0
eSA9IHRydWU7CisgICAgICAgICAgICAgICAgaXRlbS5saXN0SXRlbUVsZW1lbnQudGV4dENvbnRl
bnQgPSAiIjsKKyAgICAgICAgICAgICAgICBpdGVtLmxpc3RJdGVtRWxlbWVudC5kaXNwYXRjaEV2
ZW50KGV2ZW50KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIC8vIEZpbmQgdGhlIGF0dHJpYnV0ZSB3ZSB3ZXJlIHN1cHBvc2VkIHRvIHN0YXJ0
IGVkaXRpbmcgaW4gdGhpcyBzZWN0aW9uCisgICAgICAgICAgICB2YXIgbGlzdCA9IHNlY3Rpb24u
cHJvcGVydGllc1RyZWVPdXRsaW5lLl9jaGlsZHJlbkxpc3ROb2RlLmNoaWxkTm9kZXM7CisgICAg
ICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gbGlzdC5sZW5ndGg7IGkgPCBsZW47ICsraSkg
eworICAgICAgICAgICAgICAgIHZhciBsaXN0SXRlbSA9IGxpc3RbaV07CisgICAgICAgICAgICAg
ICAgdmFyIHNwYW5zID0gbGlzdEl0ZW0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNwYW4iKTsKKyAg
ICAgICAgICAgICAgICBpZiAoc3BhbnNbMF0udGV4dENvbnRlbnQgPT09IG5hbWVPZlByb3ByZXR5
VG9FZGl0KSB7CisgICAgICAgICAgICAgICAgICAgIHNwYW5zWzFdLmRpc3BhdGNoRXZlbnQoZXZl
bnQpOyAvLyB0aGUgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogCi0gICAgICAgIHRoaXMuYXBwbHlT
dHlsZVRleHQodXNlcklucHV0LCB0cnVlKTsKICAgICB9LAogCiAgICAgYXBwbHlTdHlsZVRleHQ6
IGZ1bmN0aW9uKHN0eWxlVGV4dCwgdXBkYXRlSW50ZXJmYWNlKQpAQCAtODc2LDcgKzkzMiw5IEBA
IFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogCiAg
ICAgICAgIGlmICghc3R5bGVUZXh0TGVuZ3RoKSB7CiAgICAgICAgICAgICBpZiAodXBkYXRlSW50
ZXJmYWNlKSB7Ci0gICAgICAgICAgICAgICAgLy8gVGhlIHVzZXIgZGVsZXRlZCB0aGUgZXZlcnl0
aGluZywgc28gcmVtb3ZlIHRoZSB0cmVlIGVsZW1lbnQgYW5kIHVwZGF0ZS4KKyAgICAgICAgICAg
ICAgICAvLyBUaGUgdXNlciBkZWxldGVkIGV2ZXJ5dGhpbmcsIHNvIHJlbW92ZSB0aGUgdHJlZSBl
bGVtZW50IGFuZCB1cGRhdGUuCisgICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9uZXdQcm9wZXJ0
eSkKKyAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMudHJlZU91dGxpbmUuc2VjdGlvbi5f
YWZ0ZXJVcGRhdGU7CiAgICAgICAgICAgICAgICAgaWYgKHRoaXMudHJlZU91dGxpbmUuc2VjdGlv
biAmJiB0aGlzLnRyZWVPdXRsaW5lLnNlY3Rpb24ucGFuZSkKICAgICAgICAgICAgICAgICAgICAg
dGhpcy50cmVlT3V0bGluZS5zZWN0aW9uLnBhbmUudXBkYXRlKCk7CiAgICAgICAgICAgICAgICAg
dGhpcy5wYXJlbnQucmVtb3ZlQ2hpbGQodGhpcyk7CkBAIC04ODYsNyArOTQ0LDEyIEBAIFdlYklu
c3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogCiAgICAgICAg
IGlmICghdGVtcFN0eWxlLmxlbmd0aCkgewogICAgICAgICAgICAgLy8gVGhlIHVzZXIgdHlwZWQg
c29tZXRoaW5nLCBidXQgaXQgZGlkbid0IHBhcnNlLiBKdXN0IGFib3J0IGFuZCByZXN0b3JlCi0g
ICAgICAgICAgICAvLyB0aGUgb3JpZ2luYWwgdGl0bGUgZm9yIHRoaXMgcHJvcGVydHkuCisgICAg
ICAgICAgICAvLyB0aGUgb3JpZ2luYWwgdGl0bGUgZm9yIHRoaXMgcHJvcGVydHkuICBJZiB0aGlz
IHdhcyBhIG5ldyBhdHRyaWJ1dGUgYW5kCisgICAgICAgICAgICAvLyB3ZSBjb3VsZG4ndCBwYXJz
ZSwgdGhlbiBqdXN0IHJlbW92ZSBpdC4KKyAgICAgICAgICAgIGlmICh0aGlzLl9uZXdQcm9wZXJ0
eSkgeworICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LnJlbW92ZUNoaWxkKHRoaXMpOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICh1cGRh
dGVJbnRlcmZhY2UpCiAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUaXRsZSgpOwogICAgICAg
ICAgICAgcmV0dXJuOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33510</attachid>
            <date>2009-07-26 07:05:51 -0700</date>
            <delta_ts>2009-07-26 10:15:09 -0700</delta_ts>
            <desc>Tab Through CSS Properties (Needs First Patch)</desc>
            <filename>TabThroughCSSPropertiesBetter.patch</filename>
            <type>text/plain</type>
            <size>5649</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZGU0ZDJmYi4uYmYwNDdkYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAwOS0wNy0yNiAgSm9zZXBoIFBlY29y
YXJvICA8am9lcGVjazAyQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbnNwZWN0b3I6IFRhYiBUaHJvdWdoIFByb3BlcnRpZXMgV2hl
biBFZGl0aW5nIENTUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Mjc2NzMKKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJh
clBhbmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5w
cm90b3R5cGUudXBkYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJl
ZUVsZW1lbnQucHJvdG90eXBlLik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0
eVRyZWVFbGVtZW50LnByb3RvdHlwZSk6CisKIDIwMDktMDctMjQgIERhbiBCZXJuc3RlaW4gIDxt
aXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcyBi
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcwppbmRleCBj
MzA0NDRiLi5lYTdkMGE5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
U3R5bGVzU2lkZWJhclBhbmUuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0
eWxlc1NpZGViYXJQYW5lLmpzCkBAIC0zODcsNiArMzg3LDExIEBAIFdlYkluc3BlY3Rvci5TdHls
ZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBjaGlsZCA9
IGNoaWxkLnRyYXZlcnNlTmV4dFRyZWVFbGVtZW50KGZhbHNlLCBudWxsLCB0cnVlKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQorCisgICAgICAgIGlmICh0aGlzLl9hZnRlclVwZGF0ZSkgewor
ICAgICAgICAgICAgdGhpcy5fYWZ0ZXJVcGRhdGUodGhpcyk7CisgICAgICAgICAgICBkZWxldGUg
dGhpcy5fYWZ0ZXJVcGRhdGU7CisgICAgICAgIH0KICAgICB9LAogCiAgICAgb25wb3B1bGF0ZTog
ZnVuY3Rpb24oKQpAQCAtODQzLDE0ICs4NDgsNjQgQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVy
dHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuZWRpdGluZ0VuZGVkKGNv
bnRleHQpOwogICAgIH0sCiAKLSAgICBlZGl0aW5nQ29tbWl0dGVkOiBmdW5jdGlvbihlbGVtZW50
LCB1c2VySW5wdXQsIHByZXZpb3VzQ29udGVudCwgY29udGV4dCkKKyAgICBlZGl0aW5nQ29tbWl0
dGVkOiBmdW5jdGlvbihlbGVtZW50LCB1c2VySW5wdXQsIHByZXZpb3VzQ29udGVudCwgY29udGV4
dCwgbW92ZURpcmVjdGlvbikKICAgICB7CiAgICAgICAgIHRoaXMuZWRpdGluZ0VuZGVkKGNvbnRl
eHQpOwogCi0gICAgICAgIGlmICh1c2VySW5wdXQgPT09IHByZXZpb3VzQ29udGVudCkKLSAgICAg
ICAgICAgIHJldHVybjsgLy8gbm90aGluZyBjaGFuZ2VkLCBzbyBkbyBub3RoaW5nIGVsc2UKKyAg
ICAgICAgLy8gRGV0ZXJtaW5lIHdoZXJlIHRvIG1vdmUgdG8gYmVmb3JlIG1ha2luZyBjaGFuZ2Vz
CisgICAgICAgIHZhciBuYW1lT2ZQcm9wcmV0eVRvRWRpdDsKKyAgICAgICAgdmFyIG5ld1Byb3Bl
cnR5ID0gZmFsc2U7CisgICAgICAgIHZhciBtb3ZlVG8gPSAobW92ZURpcmVjdGlvbiA9PT0gImZv
cndhcmQiID8gdGhpcy5saXN0SXRlbUVsZW1lbnQubmV4dFNpYmxpbmcgOiB0aGlzLmxpc3RJdGVt
RWxlbWVudC5wcmV2aW91c1NpYmxpbmcpOworICAgICAgICBpZiAobW92ZVRvKSB7CisgICAgICAg
ICAgICBmb3IgKHZhciBlbGVtID0gbW92ZVRvLmZpcnN0Q2hpbGQ7IGVsZW07IGVsZW0gPSBlbGVt
Lm5leHRTaWJsaW5nKSB7CisgICAgICAgICAgICAgICAgaWYgKGVsZW0uY2xhc3NOYW1lID09PSAi
bmFtZSIpIHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZU9mUHJvcHJldHlUb0VkaXQgPSBlbGVt
LnRleHRDb250ZW50OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAobW92ZURpcmVjdGlvbiA9PT0g
ImZvcndhcmQiKQorICAgICAgICAgICAgbmV3UHJvcGVydHkgPSB0cnVlOworCisgICAgICAgIC8v
IE1ha2UgdGhlIENoYW5nZXMgYW5kIHRyaWdnZXIgdGhlIG1vdmVUb05leHRDYWxsYmFjayBhZnRl
ciB1cGRhdGluZworICAgICAgICB2YXIgYmxhbmtJbnB1dCA9IC9eXHMqJC8udGVzdCh1c2VySW5w
dXQpOworICAgICAgICBpZiAodXNlcklucHV0ICE9PSBwcmV2aW91c0NvbnRlbnQgfHwgKHRoaXMu
X25ld1Byb3BlcnR5ICYmIGJsYW5rSW5wdXQpICkgeyAvLyBvbmx5IGlmIHNvbWV0aGluZyBjaGFu
Z2VkLCBvciBhZGRpbmcgYSBuZXcgc3R5bGUgYW5kIGl0IHdhcyBibGFuaworICAgICAgICAgICAg
dGhpcy50cmVlT3V0bGluZS5zZWN0aW9uLl9hZnRlclVwZGF0ZSA9IG1vdmVUb05leHRDYWxsYmFj
ay5iaW5kKHRoaXMsIHRoaXMuX25ld1Byb3BlcnR5LCAhYmxhbmtJbnB1dCk7CisgICAgICAgICAg
ICB0aGlzLmFwcGx5U3R5bGVUZXh0KHVzZXJJbnB1dCwgdHJ1ZSk7CisgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgbW92ZVRvTmV4dENhbGxiYWNrKHRoaXMuX25ld1Byb3BlcnR5LCBmYWxzZSwg
dGhpcy50cmVlT3V0bGluZS5zZWN0aW9uKTsKKworICAgICAgICAvLyBUaGUgQ2FsbGJhY2sgdG8g
c3RhcnQgZWRpdGluZyB0aGUgbmV4dCBwcm9wZXJ0eQorICAgICAgICBmdW5jdGlvbiBtb3ZlVG9O
ZXh0Q2FsbGJhY2soYWxyZWFkeU5ldywgdmFsdWVDaGFuZ2VkLCBzZWN0aW9uKSB7CisgICAgICAg
ICAgICBpZiAoIW1vdmVEaXJlY3Rpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgICAgICAvLyBDcmVhdGUgYSBuZXcgYXR0cmlidXRlIGluIHRoaXMgc2VjdGlvbgorICAgICAg
ICAgICAgaWYgKG5ld1Byb3BlcnR5KSB7CisgICAgICAgICAgICAgICAgaWYgKGFscmVhZHlOZXcg
JiYgIXZhbHVlQ2hhbmdlZCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
ICAgICAgICAgdmFyIGl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxl
bWVudChzZWN0aW9uLnN0eWxlUnVsZS5zdHlsZSwgIiIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh
bHNlKTsKKyAgICAgICAgICAgICAgICBzZWN0aW9uLnByb3BlcnRpZXNUcmVlT3V0bGluZS5hcHBl
bmRDaGlsZChpdGVtKTsKKyAgICAgICAgICAgICAgICBpdGVtLl9uZXdQcm9wZXJ0eSA9IHRydWU7
CisgICAgICAgICAgICAgICAgaXRlbS5saXN0SXRlbUVsZW1lbnQudGV4dENvbnRlbnQgPSAiIjsK
KyAgICAgICAgICAgICAgICBpdGVtLnN0YXJ0RWRpdGluZygpOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gRmluZCB0aGUgYXR0cmlidXRl
IHdlIHdlcmUgc3VwcG9zZWQgdG8gc3RhcnQgZWRpdGluZyBpbiB0aGlzIHNlY3Rpb24KKyAgICAg
ICAgICAgIHZhciBsaXN0ID0gc2VjdGlvbi5wcm9wZXJ0aWVzVHJlZU91dGxpbmUuX2NoaWxkcmVu
TGlzdE5vZGUuY2hpbGROb2RlczsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBs
aXN0Lmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7CisgICAgICAgICAgICAgICAgdmFyIGxpc3RJdGVt
ID0gbGlzdFtpXTsKKyAgICAgICAgICAgICAgICB2YXIgc3BhbnMgPSBsaXN0SXRlbS5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgic3BhbiIpOworICAgICAgICAgICAgICAgIGlmIChzcGFuc1swXS50ZXh0
Q29udGVudCA9PT0gbmFtZU9mUHJvcHJldHlUb0VkaXQpIHsKKyAgICAgICAgICAgICAgICAgICAg
dmFyIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoIk1vdXNlRXZlbnRzIik7CisgICAgICAg
ICAgICAgICAgICAgIGV2ZW50LmluaXRNb3VzZUV2ZW50KCJkYmxjbGljayIsIHRydWUsIHRydWUp
OworICAgICAgICAgICAgICAgICAgICBzcGFuc1sxXS5kaXNwYXRjaEV2ZW50KGV2ZW50KTsgLy8g
dGhlIHZhbHVlCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgIH0KIAotICAgICAgICB0aGlzLmFwcGx5U3R5bGVUZXh0
KHVzZXJJbnB1dCwgdHJ1ZSk7CiAgICAgfSwKIAogICAgIGFwcGx5U3R5bGVUZXh0OiBmdW5jdGlv
bihzdHlsZVRleHQsIHVwZGF0ZUludGVyZmFjZSkKQEAgLTg3Niw3ICs5MzEsOSBAQCBXZWJJbnNw
ZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKIAogICAgICAgICBp
ZiAoIXN0eWxlVGV4dExlbmd0aCkgewogICAgICAgICAgICAgaWYgKHVwZGF0ZUludGVyZmFjZSkg
ewotICAgICAgICAgICAgICAgIC8vIFRoZSB1c2VyIGRlbGV0ZWQgdGhlIGV2ZXJ5dGhpbmcsIHNv
IHJlbW92ZSB0aGUgdHJlZSBlbGVtZW50IGFuZCB1cGRhdGUuCisgICAgICAgICAgICAgICAgLy8g
VGhlIHVzZXIgZGVsZXRlZCBldmVyeXRoaW5nLCBzbyByZW1vdmUgdGhlIHRyZWUgZWxlbWVudCBh
bmQgdXBkYXRlLgorICAgICAgICAgICAgICAgIGlmICghdGhpcy5fbmV3UHJvcGVydHkpCisgICAg
ICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLnRyZWVPdXRsaW5lLnNlY3Rpb24uX2FmdGVyVXBk
YXRlOwogICAgICAgICAgICAgICAgIGlmICh0aGlzLnRyZWVPdXRsaW5lLnNlY3Rpb24gJiYgdGhp
cy50cmVlT3V0bGluZS5zZWN0aW9uLnBhbmUpCiAgICAgICAgICAgICAgICAgICAgIHRoaXMudHJl
ZU91dGxpbmUuc2VjdGlvbi5wYW5lLnVwZGF0ZSgpOwogICAgICAgICAgICAgICAgIHRoaXMucGFy
ZW50LnJlbW92ZUNoaWxkKHRoaXMpOwpAQCAtODg2LDcgKzk0MywxMiBAQCBXZWJJbnNwZWN0b3Iu
U3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAoIXRl
bXBTdHlsZS5sZW5ndGgpIHsKICAgICAgICAgICAgIC8vIFRoZSB1c2VyIHR5cGVkIHNvbWV0aGlu
ZywgYnV0IGl0IGRpZG4ndCBwYXJzZS4gSnVzdCBhYm9ydCBhbmQgcmVzdG9yZQotICAgICAgICAg
ICAgLy8gdGhlIG9yaWdpbmFsIHRpdGxlIGZvciB0aGlzIHByb3BlcnR5LgorICAgICAgICAgICAg
Ly8gdGhlIG9yaWdpbmFsIHRpdGxlIGZvciB0aGlzIHByb3BlcnR5LiAgSWYgdGhpcyB3YXMgYSBu
ZXcgYXR0cmlidXRlIGFuZAorICAgICAgICAgICAgLy8gd2UgY291bGRuJ3QgcGFyc2UsIHRoZW4g
anVzdCByZW1vdmUgaXQuCisgICAgICAgICAgICBpZiAodGhpcy5fbmV3UHJvcGVydHkpIHsKKyAg
ICAgICAgICAgICAgICB0aGlzLnBhcmVudC5yZW1vdmVDaGlsZCh0aGlzKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAodXBkYXRlSW50ZXJm
YWNlKQogICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVGl0bGUoKTsKICAgICAgICAgICAgIHJl
dHVybjsK
</data>
<flag name="review"
          id="17776"
          type_id="1"
          status="-"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33511</attachid>
            <date>2009-07-26 10:15:09 -0700</date>
            <delta_ts>2009-07-26 10:27:24 -0700</delta_ts>
            <desc>Tab Through Attributes/Properties (BOTH)</desc>
            <filename>TabThroughEverything.patch</filename>
            <type>text/plain</type>
            <size>14990</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRs
aW5lLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUu
anMKaW5kZXggMGM5MmQ1Mi4uMzM4ZDBmMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMKQEAgLTEsNiArMSw3IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggTWF0dCBMaWxlayA8d2Via2l0QG1hdHRsaWxlay5jb20+
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSm9zZXBoIFBlY29yYXJvCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI1NSw4ICsyNTYsNyBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNU
cmVlRWxlbWVudCA9IGZ1bmN0aW9uKG5vZGUpCiAKICAgICAvLyBUaGUgdGl0bGUgd2lsbCBiZSB1
cGRhdGVkIGluIG9uYXR0YWNoLgogICAgIFRyZWVFbGVtZW50LmNhbGwodGhpcywgIiIsIG5vZGUs
IHRpdGxlSW5mby5oYXNDaGlsZHJlbik7Ci0gICAgCi0gICAgLy8gQ2FuIGFkZCBhdHRyaWJ1dGVz
CisKICAgICBpZiAodGhpcy5yZXByZXNlbnRlZE9iamVjdC5ub2RlVHlwZSA9PSBOb2RlLkVMRU1F
TlRfTk9ERSkKICAgICAgICAgdGhpcy5fY2FuQWRkQXR0cmlidXRlcyA9IHRydWU7CiB9CkBAIC01
NTMsMTYgKzU1MywxNiBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5
cGUgPSB7CiAKICAgICAgICAgdmFyIGF0dHJpYnV0ZSA9IGV2ZW50LnRhcmdldC5lbmNsb3NpbmdO
b2RlT3JTZWxmV2l0aENsYXNzKCJ3ZWJraXQtaHRtbC1hdHRyaWJ1dGUiKTsKICAgICAgICAgaWYg
KGF0dHJpYnV0ZSkKLSAgICAgICAgICAgIHJldHVybiB0aGlzLl9zdGFydEVkaXRpbmdBdHRyaWJ1
dGUoYXR0cmlidXRlLCBldmVudCk7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5fc3RhcnRFZGl0
aW5nQXR0cmlidXRlKGF0dHJpYnV0ZSwgZXZlbnQudGFyZ2V0KTsKIAogICAgICAgICB2YXIgbmV3
QXR0cmlidXRlID0gZXZlbnQudGFyZ2V0LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoQ2xhc3MoImFk
ZC1hdHRyaWJ1dGUiKTsKICAgICAgICAgaWYgKG5ld0F0dHJpYnV0ZSkKLSAgICAgICAgICAgIHJl
dHVybiB0aGlzLl9hZGROZXdBdHRyaWJ1dGUoZXZlbnQsIHRyZWVFbGVtZW50KTsKKyAgICAgICAg
ICAgIHJldHVybiB0aGlzLl9hZGROZXdBdHRyaWJ1dGUodHJlZUVsZW1lbnQubGlzdEl0ZW1FbGVt
ZW50KTsKIAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfSwKIAotICAgIF9hZGROZXdBdHRy
aWJ1dGU6IGZ1bmN0aW9uKGV2ZW50LCB0cmVlRWxlbWVudCkKKyAgICBfYWRkTmV3QXR0cmlidXRl
OiBmdW5jdGlvbihsaXN0SXRlbUVsZW1lbnQpCiAgICAgewogICAgICAgICB2YXIgYXR0ciA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKICAgICAgICAgYXR0ci5jbGFzc05hbWUgPSAi
d2Via2l0LWh0bWwtYXR0cmlidXRlIjsKQEAgLTU3NiwxNyArNTc2LDI4IEBAIFdlYkluc3BlY3Rv
ci5FbGVtZW50c1RyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgYXR0ci5hcHBlbmRD
aGlsZChuYW1lKTsKICAgICAgICAgYXR0ci5hcHBlbmRDaGlsZCh2YWx1ZSk7CiAKLSAgICAgICAg
dmFyIHRhZyA9IHRyZWVFbGVtZW50Lmxpc3RJdGVtRWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NO
YW1lKCJ3ZWJraXQtaHRtbC10YWciKVswXTsKKyAgICAgICAgdmFyIHRhZyA9IGxpc3RJdGVtRWxl
bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJ3ZWJraXQtaHRtbC10YWciKVswXTsKICAgICAg
ICAgdGhpcy5faW5zZXJ0SW5MYXN0QXR0cmlidXRlUG9zaXRpb24odGFnLCBhdHRyKTsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuX3N0YXJ0RWRpdGluZ0F0dHJpYnV0ZShhdHRyLCBhdHRyKTsKKyAgICB9
LAogCi0gICAgICAgIC8vIFN0YXJ0IGVkaXRpbmcgdGhlIGF0dHIgc3BhbiBhbmQgaGlnaGxpZ2h0
IGl0IGZpcnN0Ci0gICAgICAgIC8vIE5PVEU6IF9zdGFydEVkaXRpbmdBdHRyaWJ1dGUgb25seSBs
b29rcyBhdCB0aGUgInRhcmdldCIsIHNvIHdlCi0gICAgICAgIC8vIGNhbiBmYWtlIGFuIG9iamVj
dCBoZXJlIGluc3RlYWQgb2YgcGFzc2luZyB0aGUgImV2ZW50IiB3aXRoIHRoZQotICAgICAgICAv
LyB3cm9uZyB0YXJnZXQgZWxlbWVudAotICAgICAgICByZXR1cm4gdGhpcy5fc3RhcnRFZGl0aW5n
QXR0cmlidXRlKGF0dHIsIHt0YXJnZXQ6IGF0dHJ9KTsKKyAgICBfdHJpZ2dlckVkaXRBdHRyaWJ1
dGU6IGZ1bmN0aW9uKGF0dHJpYnV0ZU5hbWUpCisgICAgeworICAgICAgICB2YXIgYXR0cmlidXRl
RWxlbWVudHMgPSB0aGlzLmxpc3RJdGVtRWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJ3
ZWJraXQtaHRtbC1hdHRyaWJ1dGUtbmFtZSIpOworICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVu
ID0gYXR0cmlidXRlRWxlbWVudHMubGVuZ3RoOyBpIDwgbGVuOyArK2kpIHsKKyAgICAgICAgICAg
IGlmIChhdHRyaWJ1dGVFbGVtZW50c1tpXS50ZXh0Q29udGVudCA9PT0gYXR0cmlidXRlTmFtZSkg
eworICAgICAgICAgICAgICAgIGZvciAodmFyIGVsZW0gPSBhdHRyaWJ1dGVFbGVtZW50c1tpXS5u
ZXh0U2libGluZzsgZWxlbTsgZWxlbSA9IGVsZW0ubmV4dFNpYmxpbmcpIHsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGVsZW0ubm9kZVR5cGUgIT09IE5vZGUuRUxFTUVOVF9OT0RFKQorICAgICAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGVs
ZW0uaGFzU3R5bGVDbGFzcygid2Via2l0LWh0bWwtYXR0cmlidXRlLXZhbHVlIikpCisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fc3RhcnRFZGl0aW5nQXR0cmlidXRlKGF0dHJp
YnV0ZUVsZW1lbnRzW2ldLnBhcmVudE5vZGUsIGVsZW0pOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0sCiAKLSAgICBfc3RhcnRFZGl0aW5nQXR0cmli
dXRlOiBmdW5jdGlvbihhdHRyaWJ1dGUsIGV2ZW50KQorICAgIF9zdGFydEVkaXRpbmdBdHRyaWJ1
dGU6IGZ1bmN0aW9uKGF0dHJpYnV0ZSwgZWxlbWVudEZvclNlbGVjdGlvbikKICAgICB7CiAgICAg
ICAgIGlmIChXZWJJbnNwZWN0b3IuaXNCZWluZ0VkaXRlZChhdHRyaWJ1dGUpKQogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CkBAIC02MTcsNyArNjI4LDcgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRz
VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9lZGl0aW5nID0gdHJ1ZTsK
IAogICAgICAgICBXZWJJbnNwZWN0b3Iuc3RhcnRFZGl0aW5nKGF0dHJpYnV0ZSwgdGhpcy5fYXR0
cmlidXRlRWRpdGluZ0NvbW1pdHRlZC5iaW5kKHRoaXMpLCB0aGlzLl9lZGl0aW5nQ2FuY2VsbGVk
LmJpbmQodGhpcyksIGF0dHJpYnV0ZU5hbWUpOwotICAgICAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuc2V0QmFzZUFuZEV4dGVudChldmVudC50YXJnZXQsIDAsIGV2ZW50LnRhcmdldCwgMSk7Cisg
ICAgICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRCYXNlQW5kRXh0ZW50KGVsZW1lbnRGb3JT
ZWxlY3Rpb24sIDAsIGVsZW1lbnRGb3JTZWxlY3Rpb24sIDEpOwogCiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0sCkBAIC02MzUsMTUgKzY0Niw1NiBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNU
cmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0sCiAK
LSAgICBfYXR0cmlidXRlRWRpdGluZ0NvbW1pdHRlZDogZnVuY3Rpb24oZWxlbWVudCwgbmV3VGV4
dCwgb2xkVGV4dCwgYXR0cmlidXRlTmFtZSkKKyAgICBfYXR0cmlidXRlRWRpdGluZ0NvbW1pdHRl
ZDogZnVuY3Rpb24oZWxlbWVudCwgbmV3VGV4dCwgb2xkVGV4dCwgYXR0cmlidXRlTmFtZSwgbW92
ZURpcmVjdGlvbikKICAgICB7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9lZGl0aW5nOwogCisgICAg
ICAgIC8vIEJlZm9yZSB3ZSBkbyBhbnl0aGluZywgZGV0ZXJtaW5lIHdoZXJlIHdlIHNob3VsZCBt
b3ZlCisgICAgICAgIC8vIG5leHQgYmFzZWQgb24gdGhlIGN1cnJlbnQgZWxlbWVudCdzIHNldHRp
bmdzCisgICAgICAgIHZhciBtb3ZlVG9BdHRyaWJ1dGU7CisgICAgICAgIHZhciBuZXdBdHRyaWJ1
dGU7CisgICAgICAgIGlmIChtb3ZlRGlyZWN0aW9uKSB7CisgICAgICAgICAgICB2YXIgZm91bmQg
PSBmYWxzZTsKKyAgICAgICAgICAgIHZhciBhdHRyaWJ1dGVzID0gdGhpcy5yZXByZXNlbnRlZE9i
amVjdC5hdHRyaWJ1dGVzOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGF0dHJp
YnV0ZXMubGVuZ3RoOyBpIDwgbGVuOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAoYXR0cmli
dXRlc1tpXS5uYW1lID09PSBhdHRyaWJ1dGVOYW1lKSB7CisgICAgICAgICAgICAgICAgICAgIGZv
dW5kID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1vdmVEaXJlY3Rpb24gPT09ICJi
YWNrd2FyZCIgJiYgaSA+IDApCisgICAgICAgICAgICAgICAgICAgICAgICBtb3ZlVG9BdHRyaWJ1
dGUgPSBhdHRyaWJ1dGVzW2kgLSAxXS5uYW1lOworICAgICAgICAgICAgICAgICAgICBlbHNlIGlm
IChtb3ZlRGlyZWN0aW9uID09PSAiZm9yd2FyZCIgJiYgaSA8IGF0dHJpYnV0ZXMubGVuZ3RoIC0g
MSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVUb0F0dHJpYnV0ZSA9IGF0dHJpYnV0ZXNb
aSArIDFdLm5hbWU7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1vdmVEaXJlY3Rpb24g
PT09ICJmb3J3YXJkIiAmJiBpID09PSBhdHRyaWJ1dGVzLmxlbmd0aCAtIDEpCisgICAgICAgICAg
ICAgICAgICAgICAgICBuZXdBdHRyaWJ1dGUgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFmb3VuZCAmJiBtb3ZlRGlyZWN0aW9uID09
PSAiYmFja3dhcmQiKQorICAgICAgICAgICAgICAgIG1vdmVUb0F0dHJpYnV0ZSA9IGF0dHJpYnV0
ZXNbYXR0cmlidXRlcy5sZW5ndGggLSAxXS5uYW1lOworICAgICAgICAgICAgZWxzZSBpZiAoIWZv
dW5kICYmIG1vdmVEaXJlY3Rpb24gPT09ICJmb3J3YXJkIiAmJiAhL15ccyokLy50ZXN0KG5ld1Rl
eHQpKQorICAgICAgICAgICAgICAgIG5ld0F0dHJpYnV0ZSA9IHRydWU7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBtb3ZlVG9OZXh0QXR0cmlidXRlSWZOZWVkZWQoKSB7CisgICAgICAg
ICAgICBpZiAobW92ZVRvQXR0cmlidXRlKQorICAgICAgICAgICAgICAgIHRoaXMuX3RyaWdnZXJF
ZGl0QXR0cmlidXRlKG1vdmVUb0F0dHJpYnV0ZSk7CisgICAgICAgICAgICBlbHNlIGlmIChuZXdB
dHRyaWJ1dGUpCisgICAgICAgICAgICAgICAgdGhpcy5fYWRkTmV3QXR0cmlidXRlKHRoaXMubGlz
dEl0ZW1FbGVtZW50KTsgICAgICAgICAgICAKKyAgICAgICAgfQorCiAgICAgICAgIHZhciBwYXJz
ZUNvbnRhaW5lckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAg
ICAgIHBhcnNlQ29udGFpbmVyRWxlbWVudC5pbm5lckhUTUwgPSAiPHNwYW4gIiArIG5ld1RleHQg
KyAiPjwvc3Bhbj4iOwogICAgICAgICB2YXIgcGFyc2VFbGVtZW50ID0gcGFyc2VDb250YWluZXJF
bGVtZW50LmZpcnN0Q2hpbGQ7Ci0gICAgICAgIGlmICghcGFyc2VFbGVtZW50IHx8ICFwYXJzZUVs
ZW1lbnQuaGFzQXR0cmlidXRlcygpKSB7CisKKyAgICAgICAgaWYgKCFwYXJzZUVsZW1lbnQpIHsK
ICAgICAgICAgICAgIHRoaXMuX2VkaXRpbmdDYW5jZWxsZWQoZWxlbWVudCwgYXR0cmlidXRlTmFt
ZSk7CisgICAgICAgICAgICBtb3ZlVG9OZXh0QXR0cmlidXRlSWZOZWVkZWQuY2FsbCh0aGlzKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghcGFyc2VFbGVt
ZW50Lmhhc0F0dHJpYnV0ZXMoKSkgeworICAgICAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlci5p
bnNwZWN0ZWRXaW5kb3coKS5FbGVtZW50LnByb3RvdHlwZS5yZW1vdmVBdHRyaWJ1dGUuY2FsbCh0
aGlzLnJlcHJlc2VudGVkT2JqZWN0LCBhdHRyaWJ1dGVOYW1lKTsKKyAgICAgICAgICAgIHRoaXMu
X3VwZGF0ZVRpdGxlKCk7CisgICAgICAgICAgICBtb3ZlVG9OZXh0QXR0cmlidXRlSWZOZWVkZWQu
Y2FsbCh0aGlzKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC02NTEsNyAr
NzAzLDkgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewog
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhcnNlRWxlbWVudC5hdHRyaWJ1dGVzLmxlbmd0
aDsgKytpKSB7CiAgICAgICAgICAgICB2YXIgYXR0ciA9IHBhcnNlRWxlbWVudC5hdHRyaWJ1dGVz
W2ldOwogICAgICAgICAgICAgZm91bmRPcmlnaW5hbEF0dHJpYnV0ZSA9IGZvdW5kT3JpZ2luYWxB
dHRyaWJ1dGUgfHwgYXR0ci5uYW1lID09PSBhdHRyaWJ1dGVOYW1lOwotICAgICAgICAgICAgSW5z
cGVjdG9yQ29udHJvbGxlci5pbnNwZWN0ZWRXaW5kb3coKS5FbGVtZW50LnByb3RvdHlwZS5zZXRB
dHRyaWJ1dGUuY2FsbCh0aGlzLnJlcHJlc2VudGVkT2JqZWN0LCBhdHRyLm5hbWUsIGF0dHIudmFs
dWUpOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JDb250cm9s
bGVyLmluc3BlY3RlZFdpbmRvdygpLkVsZW1lbnQucHJvdG90eXBlLnNldEF0dHJpYnV0ZS5jYWxs
KHRoaXMucmVwcmVzZW50ZWRPYmplY3QsIGF0dHIubmFtZSwgYXR0ci52YWx1ZSk7CisgICAgICAg
ICAgICB9IGNhdGNoKGUpIHt9IC8vIGlnbm9yZSBpbnZhbGlkIGF0dHJpYnV0ZSAoaW5uZXJIVE1M
IGRvZXNuJ3QgdGhyb3cgZXJyb3JzLCBidXQgdGhpcyBjYW4pCiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAoIWZvdW5kT3JpZ2luYWxBdHRyaWJ1dGUpCkBAIC02NjAsNiArNzE0LDggQEAgV2ViSW5z
cGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl91
cGRhdGVUaXRsZSgpOwogCiAgICAgICAgIHRoaXMudHJlZU91dGxpbmUuZm9jdXNlZE5vZGVDaGFu
Z2VkKHRydWUpOworCisgICAgICAgIG1vdmVUb05leHRBdHRyaWJ1dGVJZk5lZWRlZC5jYWxsKHRo
aXMpOwogICAgIH0sCiAKICAgICBfdGV4dE5vZGVFZGl0aW5nQ29tbWl0dGVkOiBmdW5jdGlvbihl
bGVtZW50LCBuZXdUZXh0KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1N0eWxlc1NpZGViYXJQYW5lLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxl
c1NpZGViYXJQYW5lLmpzCmluZGV4IGMzMDQ0NGIuLjE3ODVkNzcgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcworKysgYi9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMKQEAgLTEsNSArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSm9zZXBoIFBlY29yYXJvCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4Nyw2ICszODgsMTEgQEAgV2ViSW5zcGVjdG9yLlN0eWxl
UHJvcGVydGllc1NlY3Rpb24ucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIGNoaWxkID0g
Y2hpbGQudHJhdmVyc2VOZXh0VHJlZUVsZW1lbnQoZmFsc2UsIG51bGwsIHRydWUpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CisKKyAgICAgICAgaWYgKHRoaXMuX2FmdGVyVXBkYXRlKSB7Cisg
ICAgICAgICAgICB0aGlzLl9hZnRlclVwZGF0ZSh0aGlzKTsKKyAgICAgICAgICAgIGRlbGV0ZSB0
aGlzLl9hZnRlclVwZGF0ZTsKKyAgICAgICAgfQogICAgIH0sCiAKICAgICBvbnBvcHVsYXRlOiBm
dW5jdGlvbigpCkBAIC00MjUsNiArNDMxLDI2IEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnRp
ZXNTZWN0aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHZhciBpdGVtID0gbmV3IFdlYklu
c3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQoc3R5bGUsIG5hbWUsIGlzU2hvcnRoYW5k
LCBpbmhlcml0ZWQsIG92ZXJsb2FkZWQsIGRpc2FibGVkKTsKICAgICAgICAgICAgIHRoaXMucHJv
cGVydGllc1RyZWVPdXRsaW5lLmFwcGVuZENoaWxkKGl0ZW0pOwogICAgICAgICB9CisgICAgfSwK
KworICAgIGZpbmRUcmVlRWxlbWVudFdpdGhOYW1lOiBmdW5jdGlvbihuYW1lKQorICAgIHsKKyAg
ICAgICAgdmFyIHRyZWVFbGVtZW50ID0gdGhpcy5wcm9wZXJ0aWVzVHJlZU91dGxpbmUuY2hpbGRy
ZW5bMF07CisgICAgICAgIHdoaWxlICh0cmVlRWxlbWVudCkgeworICAgICAgICAgICAgaWYgKHRy
ZWVFbGVtZW50Lm5hbWUgPT09IG5hbWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRyZWVFbGVt
ZW50OworICAgICAgICAgICAgdHJlZUVsZW1lbnQgPSB0cmVlRWxlbWVudC50cmF2ZXJzZU5leHRU
cmVlRWxlbWVudCh0cnVlLCBudWxsLCB0cnVlKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
bnVsbDsKKyAgICB9LAorCisgICAgYWRkTmV3QmxhbmtQcm9wZXJ0eTogZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgdmFyIGl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVl
RWxlbWVudCh0aGlzLnN0eWxlUnVsZS5zdHlsZSwgIiIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh
bHNlKTsKKyAgICAgICAgdGhpcy5wcm9wZXJ0aWVzVHJlZU91dGxpbmUuYXBwZW5kQ2hpbGQoaXRl
bSk7CisgICAgICAgIGl0ZW0ubGlzdEl0ZW1FbGVtZW50LnRleHRDb250ZW50ID0gIiI7CisgICAg
ICAgIGl0ZW0uX25ld1Byb3BlcnR5ID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGl0ZW07CiAgICAg
fQogfQogCkBAIC01NTgsMTAgKzU4NCwxMiBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRy
ZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIG5hbWVFbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgICBuYW1lRWxlbWVudC5jbGFzc05hbWUg
PSAibmFtZSI7CiAgICAgICAgIG5hbWVFbGVtZW50LnRleHRDb250ZW50ID0gdGhpcy5uYW1lOwor
ICAgICAgICB0aGlzLm5hbWVFbGVtZW50ID0gbmFtZUVsZW1lbnQ7CiAKICAgICAgICAgdmFyIHZh
bHVlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKICAgICAgICAgdmFs
dWVFbGVtZW50LmNsYXNzTmFtZSA9ICJ2YWx1ZSI7CiAgICAgICAgIHZhbHVlRWxlbWVudC5pbm5l
ckhUTUwgPSBodG1sVmFsdWU7CisgICAgICAgIHRoaXMudmFsdWVFbGVtZW50ID0gdmFsdWVFbGVt
ZW50OwogCiAgICAgICAgIGlmIChwcmlvcml0eSkgewogICAgICAgICAgICAgdmFyIHByaW9yaXR5
RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKQEAgLTg0MywxNCArODcx
LDU2IEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0g
ewogICAgICAgICB0aGlzLmVkaXRpbmdFbmRlZChjb250ZXh0KTsKICAgICB9LAogCi0gICAgZWRp
dGluZ0NvbW1pdHRlZDogZnVuY3Rpb24oZWxlbWVudCwgdXNlcklucHV0LCBwcmV2aW91c0NvbnRl
bnQsIGNvbnRleHQpCisgICAgZWRpdGluZ0NvbW1pdHRlZDogZnVuY3Rpb24oZWxlbWVudCwgdXNl
cklucHV0LCBwcmV2aW91c0NvbnRlbnQsIGNvbnRleHQsIG1vdmVEaXJlY3Rpb24pCiAgICAgewog
ICAgICAgICB0aGlzLmVkaXRpbmdFbmRlZChjb250ZXh0KTsKIAotICAgICAgICBpZiAodXNlcklu
cHV0ID09PSBwcmV2aW91c0NvbnRlbnQpCi0gICAgICAgICAgICByZXR1cm47IC8vIG5vdGhpbmcg
Y2hhbmdlZCwgc28gZG8gbm90aGluZyBlbHNlCisgICAgICAgIC8vIERldGVybWluZSB3aGVyZSB0
byBtb3ZlIHRvIGJlZm9yZSBtYWtpbmcgY2hhbmdlcworICAgICAgICB2YXIgbmV3UHJvcGVydHkg
PSBmYWxzZTsKKyAgICAgICAgdmFyIG1vdmVUb1Byb3BlcnR5TmFtZTsKKyAgICAgICAgdmFyIG1v
dmVUbyA9IChtb3ZlRGlyZWN0aW9uID09PSAiZm9yd2FyZCIgPyB0aGlzLm5leHRTaWJsaW5nIDog
dGhpcy5wcmV2aW91c1NpYmxpbmcpOworICAgICAgICBpZiAobW92ZVRvKQorICAgICAgICAgICAg
bW92ZVRvUHJvcGVydHlOYW1lID0gbW92ZVRvLm5hbWU7CisgICAgICAgIGVsc2UgaWYgKG1vdmVE
aXJlY3Rpb24gPT09ICJmb3J3YXJkIikKKyAgICAgICAgICAgIG5ld1Byb3BlcnR5ID0gdHJ1ZTsK
KworICAgICAgICAvLyBNYWtlIHRoZSBDaGFuZ2VzIGFuZCB0cmlnZ2VyIHRoZSBtb3ZlVG9OZXh0
Q2FsbGJhY2sgYWZ0ZXIgdXBkYXRpbmcKKyAgICAgICAgdmFyIGJsYW5rSW5wdXQgPSAvXlxzKiQv
LnRlc3QodXNlcklucHV0KTsKKyAgICAgICAgaWYgKHVzZXJJbnB1dCAhPT0gcHJldmlvdXNDb250
ZW50IHx8ICh0aGlzLl9uZXdQcm9wZXJ0eSAmJiBibGFua0lucHV0KSkgeyAvLyBvbmx5IGlmIHNv
bWV0aGluZyBjaGFuZ2VkLCBvciBhZGRpbmcgYSBuZXcgc3R5bGUgYW5kIGl0IHdhcyBibGFuawor
ICAgICAgICAgICAgdGhpcy50cmVlT3V0bGluZS5zZWN0aW9uLl9hZnRlclVwZGF0ZSA9IG1vdmVU
b05leHRDYWxsYmFjay5iaW5kKHRoaXMsIHRoaXMuX25ld1Byb3BlcnR5LCAhYmxhbmtJbnB1dCk7
CisgICAgICAgICAgICB0aGlzLmFwcGx5U3R5bGVUZXh0KHVzZXJJbnB1dCwgdHJ1ZSk7CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgbW92ZVRvTmV4dENhbGxiYWNrKHRoaXMuX25ld1Byb3Bl
cnR5LCBmYWxzZSwgdGhpcy50cmVlT3V0bGluZS5zZWN0aW9uLCBmYWxzZSk7CisKKyAgICAgICAg
Ly8gVGhlIENhbGxiYWNrIHRvIHN0YXJ0IGVkaXRpbmcgdGhlIG5leHQgcHJvcGVydHkKKyAgICAg
ICAgZnVuY3Rpb24gbW92ZVRvTmV4dENhbGxiYWNrKGFscmVhZHlOZXcsIHZhbHVlQ2hhbmdlZCwg
c2VjdGlvbikgeworICAgICAgICAgICAgaWYgKCFtb3ZlRGlyZWN0aW9uKQorICAgICAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICAgICAgLy8gVXNlciBqdXN0IHRhYmJlZCB0aHJvdWdoIHdp
dGhvdXQgY2hhbmdlcworICAgICAgICAgICAgaWYgKG1vdmVUbyAmJiBtb3ZlVG8ucGFyZW50KSB7
CisgICAgICAgICAgICAgICAgbW92ZVRvLnN0YXJ0RWRpdGluZyhtb3ZlVG8udmFsdWVFbGVtZW50
KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IC8vIFVzZXIgaGFzIG1hZGUgYSBjaGFuZ2UgdGhlbiB0YWJiZWQsIHdpcGluZyBhbGwgdGhlIG9y
aWdpbmFsIHRyZWVFbGVtZW50cywKKyAgICAgICAgICAgIC8vIHJlY2FsY3VsYXRlIHRoZSBuZXcg
dHJlZUVsZW1lbnQgZm9yIHRoZSBzYW1lIHByb3BlcnR5IHdlIHdlcmUgZ29pbmcgdG8gZWRpdCBu
ZXh0CisgICAgICAgICAgICBpZiAobW92ZVRvICYmICFtb3ZlVG8ucGFyZW50KSB7CisgICAgICAg
ICAgICAgICAgdmFyIHRyZWVFbGVtZW50ID0gc2VjdGlvbi5maW5kVHJlZUVsZW1lbnRXaXRoTmFt
ZShtb3ZlVG9Qcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAgICAgIGlmICh0cmVlRWxlbWVudCkK
KyAgICAgICAgICAgICAgICAgICAgdHJlZUVsZW1lbnQuc3RhcnRFZGl0aW5nKHRyZWVFbGVtZW50
LnZhbHVlRWxlbWVudCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAvLyBDcmVhdGUgYSBuZXcgYXR0cmlidXRlIGluIHRoaXMgc2VjdGlvbgor
ICAgICAgICAgICAgaWYgKG5ld1Byb3BlcnR5KSB7CisgICAgICAgICAgICAgICAgaWYgKGFscmVh
ZHlOZXcgJiYgIXZhbHVlQ2hhbmdlZCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgIHRoaXMuYXBwbHlTdHlsZVRleHQodXNlcklucHV0LCB0cnVlKTsKKyAgICAgICAgICAg
ICAgICB2YXIgaXRlbSA9IHNlY3Rpb24uYWRkTmV3QmxhbmtQcm9wZXJ0eSgpOworICAgICAgICAg
ICAgICAgIGl0ZW0uc3RhcnRFZGl0aW5nKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAg
ICB9LAogCiAgICAgYXBwbHlTdHlsZVRleHQ6IGZ1bmN0aW9uKHN0eWxlVGV4dCwgdXBkYXRlSW50
ZXJmYWNlKQpAQCAtODc2LDcgKzk0Niw5IEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJl
ZUVsZW1lbnQucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmICghc3R5bGVUZXh0TGVuZ3RoKSB7
CiAgICAgICAgICAgICBpZiAodXBkYXRlSW50ZXJmYWNlKSB7Ci0gICAgICAgICAgICAgICAgLy8g
VGhlIHVzZXIgZGVsZXRlZCB0aGUgZXZlcnl0aGluZywgc28gcmVtb3ZlIHRoZSB0cmVlIGVsZW1l
bnQgYW5kIHVwZGF0ZS4KKyAgICAgICAgICAgICAgICAvLyBUaGUgdXNlciBkZWxldGVkIGV2ZXJ5
dGhpbmcsIHNvIHJlbW92ZSB0aGUgdHJlZSBlbGVtZW50IGFuZCB1cGRhdGUuCisgICAgICAgICAg
ICAgICAgaWYgKCF0aGlzLl9uZXdQcm9wZXJ0eSkKKyAgICAgICAgICAgICAgICAgICAgZGVsZXRl
IHRoaXMudHJlZU91dGxpbmUuc2VjdGlvbi5fYWZ0ZXJVcGRhdGU7CiAgICAgICAgICAgICAgICAg
aWYgKHRoaXMudHJlZU91dGxpbmUuc2VjdGlvbiAmJiB0aGlzLnRyZWVPdXRsaW5lLnNlY3Rpb24u
cGFuZSkKICAgICAgICAgICAgICAgICAgICAgdGhpcy50cmVlT3V0bGluZS5zZWN0aW9uLnBhbmUu
dXBkYXRlKCk7CiAgICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQucmVtb3ZlQ2hpbGQodGhpcyk7
CkBAIC04ODYsNyArOTU4LDEyIEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1l
bnQucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmICghdGVtcFN0eWxlLmxlbmd0aCkgewogICAg
ICAgICAgICAgLy8gVGhlIHVzZXIgdHlwZWQgc29tZXRoaW5nLCBidXQgaXQgZGlkbid0IHBhcnNl
LiBKdXN0IGFib3J0IGFuZCByZXN0b3JlCi0gICAgICAgICAgICAvLyB0aGUgb3JpZ2luYWwgdGl0
bGUgZm9yIHRoaXMgcHJvcGVydHkuCisgICAgICAgICAgICAvLyB0aGUgb3JpZ2luYWwgdGl0bGUg
Zm9yIHRoaXMgcHJvcGVydHkuICBJZiB0aGlzIHdhcyBhIG5ldyBhdHRyaWJ1dGUgYW5kCisgICAg
ICAgICAgICAvLyB3ZSBjb3VsZG4ndCBwYXJzZSwgdGhlbiBqdXN0IHJlbW92ZSBpdC4KKyAgICAg
ICAgICAgIGlmICh0aGlzLl9uZXdQcm9wZXJ0eSkgeworICAgICAgICAgICAgICAgIHRoaXMucGFy
ZW50LnJlbW92ZUNoaWxkKHRoaXMpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGlmICh1cGRhdGVJbnRlcmZhY2UpCiAgICAgICAgICAgICAgICAg
dGhpcy51cGRhdGVUaXRsZSgpOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcyBiL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9pbnNwZWN0b3IuanMKaW5kZXggMzYzZjNkZC4uZDNmMDdiMiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcworKysgYi9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCkBAIC0xMjg3LDYgKzEyODcsNyBAQCBX
ZWJJbnNwZWN0b3Iuc3RhcnRFZGl0aW5nID0gZnVuY3Rpb24oZWxlbWVudCwgY29tbWl0dGVkQ2Fs
bGJhY2ssIGNhbmNlbGxlZENhbGxiYQogCiAgICAgdmFyIG9sZFRleHQgPSBlbGVtZW50LnRleHRD
b250ZW50OwogICAgIHZhciBvbGRIYW5kbGVLZXlFdmVudCA9IGVsZW1lbnQuaGFuZGxlS2V5RXZl
bnQ7CisgICAgdmFyIG1vdmVEaXJlY3Rpb24gPSAiIjsKIAogICAgIGVsZW1lbnQuYWRkU3R5bGVD
bGFzcygiZWRpdGluZyIpOwogCkBAIC0xMzI0LDcgKzEzMjUsNyBAQCBXZWJJbnNwZWN0b3Iuc3Rh
cnRFZGl0aW5nID0gZnVuY3Rpb24oZWxlbWVudCwgY29tbWl0dGVkQ2FsbGJhY2ssIGNhbmNlbGxl
ZENhbGxiYQogICAgIGZ1bmN0aW9uIGVkaXRpbmdDb21taXR0ZWQoKSB7CiAgICAgICAgIGNsZWFu
VXBBZnRlckVkaXRpbmcuY2FsbCh0aGlzKTsKIAotICAgICAgICBjb21taXR0ZWRDYWxsYmFjayh0
aGlzLCB0aGlzLnRleHRDb250ZW50LCBvbGRUZXh0LCBjb250ZXh0KTsKKyAgICAgICAgY29tbWl0
dGVkQ2FsbGJhY2sodGhpcywgdGhpcy50ZXh0Q29udGVudCwgb2xkVGV4dCwgY29udGV4dCwgbW92
ZURpcmVjdGlvbik7CiAgICAgfQogCiAgICAgZWxlbWVudC5oYW5kbGVLZXlFdmVudCA9IGZ1bmN0
aW9uKGV2ZW50KSB7CkBAIC0xMzQwLDcgKzEzNDEsOCBAQCBXZWJJbnNwZWN0b3Iuc3RhcnRFZGl0
aW5nID0gZnVuY3Rpb24oZWxlbWVudCwgY29tbWl0dGVkQ2FsbGJhY2ssIGNhbmNlbGxlZENhbGxi
YQogICAgICAgICAgICAgZWRpdGluZ0NhbmNlbGxlZC5jYWxsKGVsZW1lbnQpOwogICAgICAgICAg
ICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgIGV2ZW50LmhhbmRsZWQgPSB0
cnVlOwotICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5SWRlbnRpZmllciA9
PT0gIlUrMDAwOSIpIC8vIFRhYiBrZXkKKyAgICAgICAgICAgIG1vdmVEaXJlY3Rpb24gPSAoZXZl
bnQuc2hpZnRLZXkgPyAiYmFja3dhcmQiIDogImZvcndhcmQiKTsKICAgICB9CiAKICAgICBlbGVt
ZW50LmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLCBibHVyRXZlbnRMaXN0ZW5lciwgZmFsc2UpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33512</attachid>
            <date>2009-07-26 10:27:24 -0700</date>
            <delta_ts>2009-07-26 10:38:17 -0700</delta_ts>
            <desc>Tab Through Attributes/Properties (BOTH)</desc>
            <filename>TabThroughEverythingWithChangelog.patch</filename>
            <type>text/plain</type>
            <size>17034</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZGU0ZDJmYi4uZTEyYmEyZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAwOS0wNy0yNiAgSm9zZXBoIFBlY29y
YXJvICA8am9lcGVjazAyQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbnNwZWN0b3I6IFRhYiBUaHJvdWdoIEVsZW1lbnQgQXR0cmli
dXRlcyBhbmQgQ1NTIFByb3BlcnRpZXMgV2hlbiBFZGl0aW5nCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzY3MworCisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkVsZW1lbnRzVHJlZUVsZW1lbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJl
ZUVsZW1lbnQucHJvdG90eXBlLl9zdGFydEVkaXRpbmcpOiByZWZhY3RvcmVkIHBhcmFtZXRlcgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBlLl9hZGRO
ZXdBdHRyaWJ1dGUpOiByZWZhY3RvcmVkIHRvIHJlbW92ZSBleGNlc3MKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LnByb3RvdHlwZS5fdHJpZ2dlckVkaXRBdHRyaWJ1
dGUpOiBwcm92aWRlIGFuIGF0dHJpYnV0ZSBuYW1lIGFuZCB0aGlzIHdpbGwgc3RhcnQgZWRpdGlu
ZyBpdAorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBl
Ll9hdHRyaWJ1dGVFZGl0aW5nQ29tbWl0dGVkLm1vdmVUb05leHRBdHRyaWJ1dGVJZk5lZWRlZCk6
IG1vdmUgYmV0d2VlbiBhdHRyaWJ1dGVzCisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNU
cmVlRWxlbWVudC5wcm90b3R5cGUuX2F0dHJpYnV0ZUVkaXRpbmdDb21taXR0ZWQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUub25wb3B1bGF0ZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUu
ZmluZFRyZWVFbGVtZW50V2l0aE5hbWUpOiBzZWFyY2ggdGhyb3VnaCB0cmVlRWxlbWVudHMgZm9y
IGEgc3R5bGUgcHJvcGVydHkgbmFtZQorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVy
dGllc1NlY3Rpb24ucHJvdG90eXBlLmFkZE5ld0JsYW5rUHJvcGVydHkpOiBpbml0aWFsaXplIGEg
YmxhbmsgcHJvcGVydHkgZm9yIGFkZGluZyBuZXcgcHJvcGVydGllcworICAgICAgICAoV2ViSW5z
cGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUudXBkYXRlVGl0bGUpOiBh
ZGQgcmVmZXJlbmNlcyB0byB0aGUgbmFtZSBhbmQgdmFsdWUgZWxlbWVudHMKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlLik6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSk6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3Iuc3RhcnRFZGl0aW5nLmVkaXRpbmdDb21taXR0ZWQpOiBpbmNsdWRlIHRoZSBtb3ZlIGRp
cmVjdGlvbiBhcyBhIHBhcmFtZXRlciB0byB0aGUgY29tbWl0IGNhbGxiYWNrCisgICAgICAgIChX
ZWJJbnNwZWN0b3Iuc3RhcnRFZGl0aW5nLmVsZW1lbnQuaGFuZGxlS2V5RXZlbnQpOiBoYW5kbGUg
dGhlIHRhYiBrZXkgdG8gc3BlY2lmeSB0aGUgbW92ZSBkaXJlY3Rpb24KKyAgICAgICAgKFdlYklu
c3BlY3Rvci5zdGFydEVkaXRpbmcpOgorCiAyMDA5LTA3LTI0ICBEYW4gQmVybnN0ZWluICA8bWl0
ekBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qcyBi
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzCmluZGV4
IDBjOTJkNTIuLjMzOGQwZjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAwNywgMjAwOCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29w
eXJpZ2h0IChDKSAyMDA4IE1hdHQgTGlsZWsgPHdlYmtpdEBtYXR0bGlsZWsuY29tPgorICogQ29w
eXJpZ2h0IChDKSAyMDA5IEpvc2VwaCBQZWNvcmFybwogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yNTUsOCArMjU2LDcgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1l
bnQgPSBmdW5jdGlvbihub2RlKQogCiAgICAgLy8gVGhlIHRpdGxlIHdpbGwgYmUgdXBkYXRlZCBp
biBvbmF0dGFjaC4KICAgICBUcmVlRWxlbWVudC5jYWxsKHRoaXMsICIiLCBub2RlLCB0aXRsZUlu
Zm8uaGFzQ2hpbGRyZW4pOwotICAgIAotICAgIC8vIENhbiBhZGQgYXR0cmlidXRlcworCiAgICAg
aWYgKHRoaXMucmVwcmVzZW50ZWRPYmplY3Qubm9kZVR5cGUgPT0gTm9kZS5FTEVNRU5UX05PREUp
CiAgICAgICAgIHRoaXMuX2NhbkFkZEF0dHJpYnV0ZXMgPSB0cnVlOwogfQpAQCAtNTUzLDE2ICs1
NTMsMTYgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewog
CiAgICAgICAgIHZhciBhdHRyaWJ1dGUgPSBldmVudC50YXJnZXQuZW5jbG9zaW5nTm9kZU9yU2Vs
ZldpdGhDbGFzcygid2Via2l0LWh0bWwtYXR0cmlidXRlIik7CiAgICAgICAgIGlmIChhdHRyaWJ1
dGUpCi0gICAgICAgICAgICByZXR1cm4gdGhpcy5fc3RhcnRFZGl0aW5nQXR0cmlidXRlKGF0dHJp
YnV0ZSwgZXZlbnQpOworICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXJ0RWRpdGluZ0F0dHJp
YnV0ZShhdHRyaWJ1dGUsIGV2ZW50LnRhcmdldCk7CiAKICAgICAgICAgdmFyIG5ld0F0dHJpYnV0
ZSA9IGV2ZW50LnRhcmdldC5lbmNsb3NpbmdOb2RlT3JTZWxmV2l0aENsYXNzKCJhZGQtYXR0cmli
dXRlIik7CiAgICAgICAgIGlmIChuZXdBdHRyaWJ1dGUpCi0gICAgICAgICAgICByZXR1cm4gdGhp
cy5fYWRkTmV3QXR0cmlidXRlKGV2ZW50LCB0cmVlRWxlbWVudCk7CisgICAgICAgICAgICByZXR1
cm4gdGhpcy5fYWRkTmV3QXR0cmlidXRlKHRyZWVFbGVtZW50Lmxpc3RJdGVtRWxlbWVudCk7CiAK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0sCiAKLSAgICBfYWRkTmV3QXR0cmlidXRlOiBm
dW5jdGlvbihldmVudCwgdHJlZUVsZW1lbnQpCisgICAgX2FkZE5ld0F0dHJpYnV0ZTogZnVuY3Rp
b24obGlzdEl0ZW1FbGVtZW50KQogICAgIHsKICAgICAgICAgdmFyIGF0dHIgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgIGF0dHIuY2xhc3NOYW1lID0gIndlYmtpdC1o
dG1sLWF0dHJpYnV0ZSI7CkBAIC01NzYsMTcgKzU3NiwyOCBAQCBXZWJJbnNwZWN0b3IuRWxlbWVu
dHNUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGF0dHIuYXBwZW5kQ2hpbGQobmFt
ZSk7CiAgICAgICAgIGF0dHIuYXBwZW5kQ2hpbGQodmFsdWUpOwogCi0gICAgICAgIHZhciB0YWcg
PSB0cmVlRWxlbWVudC5saXN0SXRlbUVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgid2Vi
a2l0LWh0bWwtdGFnIilbMF07CisgICAgICAgIHZhciB0YWcgPSBsaXN0SXRlbUVsZW1lbnQuZ2V0
RWxlbWVudHNCeUNsYXNzTmFtZSgid2Via2l0LWh0bWwtdGFnIilbMF07CiAgICAgICAgIHRoaXMu
X2luc2VydEluTGFzdEF0dHJpYnV0ZVBvc2l0aW9uKHRhZywgYXR0cik7CisgICAgICAgIHJldHVy
biB0aGlzLl9zdGFydEVkaXRpbmdBdHRyaWJ1dGUoYXR0ciwgYXR0cik7CisgICAgfSwKIAotICAg
ICAgICAvLyBTdGFydCBlZGl0aW5nIHRoZSBhdHRyIHNwYW4gYW5kIGhpZ2hsaWdodCBpdCBmaXJz
dAotICAgICAgICAvLyBOT1RFOiBfc3RhcnRFZGl0aW5nQXR0cmlidXRlIG9ubHkgbG9va3MgYXQg
dGhlICJ0YXJnZXQiLCBzbyB3ZQotICAgICAgICAvLyBjYW4gZmFrZSBhbiBvYmplY3QgaGVyZSBp
bnN0ZWFkIG9mIHBhc3NpbmcgdGhlICJldmVudCIgd2l0aCB0aGUKLSAgICAgICAgLy8gd3Jvbmcg
dGFyZ2V0IGVsZW1lbnQKLSAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXJ0RWRpdGluZ0F0dHJpYnV0
ZShhdHRyLCB7dGFyZ2V0OiBhdHRyfSk7CisgICAgX3RyaWdnZXJFZGl0QXR0cmlidXRlOiBmdW5j
dGlvbihhdHRyaWJ1dGVOYW1lKQorICAgIHsKKyAgICAgICAgdmFyIGF0dHJpYnV0ZUVsZW1lbnRz
ID0gdGhpcy5saXN0SXRlbUVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgid2Via2l0LWh0
bWwtYXR0cmlidXRlLW5hbWUiKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGF0dHJp
YnV0ZUVsZW1lbnRzLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7CisgICAgICAgICAgICBpZiAoYXR0
cmlidXRlRWxlbWVudHNbaV0udGV4dENvbnRlbnQgPT09IGF0dHJpYnV0ZU5hbWUpIHsKKyAgICAg
ICAgICAgICAgICBmb3IgKHZhciBlbGVtID0gYXR0cmlidXRlRWxlbWVudHNbaV0ubmV4dFNpYmxp
bmc7IGVsZW07IGVsZW0gPSBlbGVtLm5leHRTaWJsaW5nKSB7CisgICAgICAgICAgICAgICAgICAg
IGlmIChlbGVtLm5vZGVUeXBlICE9PSBOb2RlLkVMRU1FTlRfTk9ERSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgICAgIGlmIChlbGVtLmhhc1N0
eWxlQ2xhc3MoIndlYmtpdC1odG1sLWF0dHJpYnV0ZS12YWx1ZSIpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXJ0RWRpdGluZ0F0dHJpYnV0ZShhdHRyaWJ1dGVFbGVt
ZW50c1tpXS5wYXJlbnROb2RlLCBlbGVtKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KICAgICB9LAogCi0gICAgX3N0YXJ0RWRpdGluZ0F0dHJpYnV0ZTogZnVu
Y3Rpb24oYXR0cmlidXRlLCBldmVudCkKKyAgICBfc3RhcnRFZGl0aW5nQXR0cmlidXRlOiBmdW5j
dGlvbihhdHRyaWJ1dGUsIGVsZW1lbnRGb3JTZWxlY3Rpb24pCiAgICAgewogICAgICAgICBpZiAo
V2ViSW5zcGVjdG9yLmlzQmVpbmdFZGl0ZWQoYXR0cmlidXRlKSkKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwpAQCAtNjE3LDcgKzYyOCw3IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVt
ZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fZWRpdGluZyA9IHRydWU7CiAKICAgICAg
ICAgV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGluZyhhdHRyaWJ1dGUsIHRoaXMuX2F0dHJpYnV0ZUVk
aXRpbmdDb21taXR0ZWQuYmluZCh0aGlzKSwgdGhpcy5fZWRpdGluZ0NhbmNlbGxlZC5iaW5kKHRo
aXMpLCBhdHRyaWJ1dGVOYW1lKTsKLSAgICAgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnNldEJh
c2VBbmRFeHRlbnQoZXZlbnQudGFyZ2V0LCAwLCBldmVudC50YXJnZXQsIDEpOworICAgICAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0QmFzZUFuZEV4dGVudChlbGVtZW50Rm9yU2VsZWN0aW9u
LCAwLCBlbGVtZW50Rm9yU2VsZWN0aW9uLCAxKTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9LApAQCAtNjM1LDE1ICs2NDYsNTYgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1l
bnQucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9LAogCi0gICAgX2F0
dHJpYnV0ZUVkaXRpbmdDb21taXR0ZWQ6IGZ1bmN0aW9uKGVsZW1lbnQsIG5ld1RleHQsIG9sZFRl
eHQsIGF0dHJpYnV0ZU5hbWUpCisgICAgX2F0dHJpYnV0ZUVkaXRpbmdDb21taXR0ZWQ6IGZ1bmN0
aW9uKGVsZW1lbnQsIG5ld1RleHQsIG9sZFRleHQsIGF0dHJpYnV0ZU5hbWUsIG1vdmVEaXJlY3Rp
b24pCiAgICAgewogICAgICAgICBkZWxldGUgdGhpcy5fZWRpdGluZzsKIAorICAgICAgICAvLyBC
ZWZvcmUgd2UgZG8gYW55dGhpbmcsIGRldGVybWluZSB3aGVyZSB3ZSBzaG91bGQgbW92ZQorICAg
ICAgICAvLyBuZXh0IGJhc2VkIG9uIHRoZSBjdXJyZW50IGVsZW1lbnQncyBzZXR0aW5ncworICAg
ICAgICB2YXIgbW92ZVRvQXR0cmlidXRlOworICAgICAgICB2YXIgbmV3QXR0cmlidXRlOworICAg
ICAgICBpZiAobW92ZURpcmVjdGlvbikgeworICAgICAgICAgICAgdmFyIGZvdW5kID0gZmFsc2U7
CisgICAgICAgICAgICB2YXIgYXR0cmlidXRlcyA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3QuYXR0
cmlidXRlczsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBhdHRyaWJ1dGVzLmxl
bmd0aDsgaSA8IGxlbjsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXNbaV0u
bmFtZSA9PT0gYXR0cmlidXRlTmFtZSkgeworICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IHRy
dWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChtb3ZlRGlyZWN0aW9uID09PSAiYmFja3dhcmQi
ICYmIGkgPiAwKQorICAgICAgICAgICAgICAgICAgICAgICAgbW92ZVRvQXR0cmlidXRlID0gYXR0
cmlidXRlc1tpIC0gMV0ubmFtZTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobW92ZURp
cmVjdGlvbiA9PT0gImZvcndhcmQiICYmIGkgPCBhdHRyaWJ1dGVzLmxlbmd0aCAtIDEpCisgICAg
ICAgICAgICAgICAgICAgICAgICBtb3ZlVG9BdHRyaWJ1dGUgPSBhdHRyaWJ1dGVzW2kgKyAxXS5u
YW1lOworICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChtb3ZlRGlyZWN0aW9uID09PSAiZm9y
d2FyZCIgJiYgaSA9PT0gYXR0cmlidXRlcy5sZW5ndGggLSAxKQorICAgICAgICAgICAgICAgICAg
ICAgICAgbmV3QXR0cmlidXRlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGlmICghZm91bmQgJiYgbW92ZURpcmVjdGlvbiA9PT0gImJhY2t3
YXJkIikKKyAgICAgICAgICAgICAgICBtb3ZlVG9BdHRyaWJ1dGUgPSBhdHRyaWJ1dGVzW2F0dHJp
YnV0ZXMubGVuZ3RoIC0gMV0ubmFtZTsKKyAgICAgICAgICAgIGVsc2UgaWYgKCFmb3VuZCAmJiBt
b3ZlRGlyZWN0aW9uID09PSAiZm9yd2FyZCIgJiYgIS9eXHMqJC8udGVzdChuZXdUZXh0KSkKKyAg
ICAgICAgICAgICAgICBuZXdBdHRyaWJ1dGUgPSB0cnVlOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gbW92ZVRvTmV4dEF0dHJpYnV0ZUlmTmVlZGVkKCkgeworICAgICAgICAgICAgaWYg
KG1vdmVUb0F0dHJpYnV0ZSkKKyAgICAgICAgICAgICAgICB0aGlzLl90cmlnZ2VyRWRpdEF0dHJp
YnV0ZShtb3ZlVG9BdHRyaWJ1dGUpOworICAgICAgICAgICAgZWxzZSBpZiAobmV3QXR0cmlidXRl
KQorICAgICAgICAgICAgICAgIHRoaXMuX2FkZE5ld0F0dHJpYnV0ZSh0aGlzLmxpc3RJdGVtRWxl
bWVudCk7ICAgICAgICAgICAgCisgICAgICAgIH0KKwogICAgICAgICB2YXIgcGFyc2VDb250YWlu
ZXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgICBwYXJz
ZUNvbnRhaW5lckVsZW1lbnQuaW5uZXJIVE1MID0gIjxzcGFuICIgKyBuZXdUZXh0ICsgIj48L3Nw
YW4+IjsKICAgICAgICAgdmFyIHBhcnNlRWxlbWVudCA9IHBhcnNlQ29udGFpbmVyRWxlbWVudC5m
aXJzdENoaWxkOwotICAgICAgICBpZiAoIXBhcnNlRWxlbWVudCB8fCAhcGFyc2VFbGVtZW50Lmhh
c0F0dHJpYnV0ZXMoKSkgeworCisgICAgICAgIGlmICghcGFyc2VFbGVtZW50KSB7CiAgICAgICAg
ICAgICB0aGlzLl9lZGl0aW5nQ2FuY2VsbGVkKGVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUpOworICAg
ICAgICAgICAgbW92ZVRvTmV4dEF0dHJpYnV0ZUlmTmVlZGVkLmNhbGwodGhpcyk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXBhcnNlRWxlbWVudC5oYXNB
dHRyaWJ1dGVzKCkpIHsKKyAgICAgICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXIuaW5zcGVjdGVk
V2luZG93KCkuRWxlbWVudC5wcm90b3R5cGUucmVtb3ZlQXR0cmlidXRlLmNhbGwodGhpcy5yZXBy
ZXNlbnRlZE9iamVjdCwgYXR0cmlidXRlTmFtZSk7CisgICAgICAgICAgICB0aGlzLl91cGRhdGVU
aXRsZSgpOworICAgICAgICAgICAgbW92ZVRvTmV4dEF0dHJpYnV0ZUlmTmVlZGVkLmNhbGwodGhp
cyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtNjUxLDcgKzcwMyw5IEBA
IFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBwYXJzZUVsZW1lbnQuYXR0cmlidXRlcy5sZW5ndGg7ICsraSkg
ewogICAgICAgICAgICAgdmFyIGF0dHIgPSBwYXJzZUVsZW1lbnQuYXR0cmlidXRlc1tpXTsKICAg
ICAgICAgICAgIGZvdW5kT3JpZ2luYWxBdHRyaWJ1dGUgPSBmb3VuZE9yaWdpbmFsQXR0cmlidXRl
IHx8IGF0dHIubmFtZSA9PT0gYXR0cmlidXRlTmFtZTsKLSAgICAgICAgICAgIEluc3BlY3RvckNv
bnRyb2xsZXIuaW5zcGVjdGVkV2luZG93KCkuRWxlbWVudC5wcm90b3R5cGUuc2V0QXR0cmlidXRl
LmNhbGwodGhpcy5yZXByZXNlbnRlZE9iamVjdCwgYXR0ci5uYW1lLCBhdHRyLnZhbHVlKTsKKyAg
ICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlci5pbnNw
ZWN0ZWRXaW5kb3coKS5FbGVtZW50LnByb3RvdHlwZS5zZXRBdHRyaWJ1dGUuY2FsbCh0aGlzLnJl
cHJlc2VudGVkT2JqZWN0LCBhdHRyLm5hbWUsIGF0dHIudmFsdWUpOworICAgICAgICAgICAgfSBj
YXRjaChlKSB7fSAvLyBpZ25vcmUgaW52YWxpZCBhdHRyaWJ1dGUgKGlubmVySFRNTCBkb2Vzbid0
IHRocm93IGVycm9ycywgYnV0IHRoaXMgY2FuKQogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFm
b3VuZE9yaWdpbmFsQXR0cmlidXRlKQpAQCAtNjYwLDYgKzcxNCw4IEBAIFdlYkluc3BlY3Rvci5F
bGVtZW50c1RyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fdXBkYXRlVGl0
bGUoKTsKIAogICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLmZvY3VzZWROb2RlQ2hhbmdlZCh0cnVl
KTsKKworICAgICAgICBtb3ZlVG9OZXh0QXR0cmlidXRlSWZOZWVkZWQuY2FsbCh0aGlzKTsKICAg
ICB9LAogCiAgICAgX3RleHROb2RlRWRpdGluZ0NvbW1pdHRlZDogZnVuY3Rpb24oZWxlbWVudCwg
bmV3VGV4dCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNT
aWRlYmFyUGFuZS5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFy
UGFuZS5qcwppbmRleCBjMzA0NDRiLi4xNzg1ZDc3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzCkBAIC0xLDUgKzEsNiBAQAogLyoKICAq
IENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA5IEpvc2VwaCBQZWNvcmFybwogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zODcsNiArMzg4LDExIEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnRp
ZXNTZWN0aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBjaGlsZCA9IGNoaWxkLnRy
YXZlcnNlTmV4dFRyZWVFbGVtZW50KGZhbHNlLCBudWxsLCB0cnVlKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQorCisgICAgICAgIGlmICh0aGlzLl9hZnRlclVwZGF0ZSkgeworICAgICAgICAg
ICAgdGhpcy5fYWZ0ZXJVcGRhdGUodGhpcyk7CisgICAgICAgICAgICBkZWxldGUgdGhpcy5fYWZ0
ZXJVcGRhdGU7CisgICAgICAgIH0KICAgICB9LAogCiAgICAgb25wb3B1bGF0ZTogZnVuY3Rpb24o
KQpAQCAtNDI1LDYgKzQzMSwyNiBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlv
bi5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB2YXIgaXRlbSA9IG5ldyBXZWJJbnNwZWN0b3Iu
U3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50KHN0eWxlLCBuYW1lLCBpc1Nob3J0aGFuZCwgaW5oZXJp
dGVkLCBvdmVybG9hZGVkLCBkaXNhYmxlZCk7CiAgICAgICAgICAgICB0aGlzLnByb3BlcnRpZXNU
cmVlT3V0bGluZS5hcHBlbmRDaGlsZChpdGVtKTsKICAgICAgICAgfQorICAgIH0sCisKKyAgICBm
aW5kVHJlZUVsZW1lbnRXaXRoTmFtZTogZnVuY3Rpb24obmFtZSkKKyAgICB7CisgICAgICAgIHZh
ciB0cmVlRWxlbWVudCA9IHRoaXMucHJvcGVydGllc1RyZWVPdXRsaW5lLmNoaWxkcmVuWzBdOwor
ICAgICAgICB3aGlsZSAodHJlZUVsZW1lbnQpIHsKKyAgICAgICAgICAgIGlmICh0cmVlRWxlbWVu
dC5uYW1lID09PSBuYW1lKQorICAgICAgICAgICAgICAgIHJldHVybiB0cmVlRWxlbWVudDsKKyAg
ICAgICAgICAgIHRyZWVFbGVtZW50ID0gdHJlZUVsZW1lbnQudHJhdmVyc2VOZXh0VHJlZUVsZW1l
bnQodHJ1ZSwgbnVsbCwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG51bGw7Cisg
ICAgfSwKKworICAgIGFkZE5ld0JsYW5rUHJvcGVydHk6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIHZhciBpdGVtID0gbmV3IFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQo
dGhpcy5zdHlsZVJ1bGUuc3R5bGUsICIiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7Cisg
ICAgICAgIHRoaXMucHJvcGVydGllc1RyZWVPdXRsaW5lLmFwcGVuZENoaWxkKGl0ZW0pOworICAg
ICAgICBpdGVtLmxpc3RJdGVtRWxlbWVudC50ZXh0Q29udGVudCA9ICIiOworICAgICAgICBpdGVt
Ll9uZXdQcm9wZXJ0eSA9IHRydWU7CisgICAgICAgIHJldHVybiBpdGVtOwogICAgIH0KIH0KIApA
QCAtNTU4LDEwICs1ODQsMTIgQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVu
dC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBuYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoInNwYW4iKTsKICAgICAgICAgbmFtZUVsZW1lbnQuY2xhc3NOYW1lID0gIm5hbWUi
OwogICAgICAgICBuYW1lRWxlbWVudC50ZXh0Q29udGVudCA9IHRoaXMubmFtZTsKKyAgICAgICAg
dGhpcy5uYW1lRWxlbWVudCA9IG5hbWVFbGVtZW50OwogCiAgICAgICAgIHZhciB2YWx1ZUVsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgIHZhbHVlRWxlbWVu
dC5jbGFzc05hbWUgPSAidmFsdWUiOwogICAgICAgICB2YWx1ZUVsZW1lbnQuaW5uZXJIVE1MID0g
aHRtbFZhbHVlOworICAgICAgICB0aGlzLnZhbHVlRWxlbWVudCA9IHZhbHVlRWxlbWVudDsKIAog
ICAgICAgICBpZiAocHJpb3JpdHkpIHsKICAgICAgICAgICAgIHZhciBwcmlvcml0eUVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CkBAIC04NDMsMTQgKzg3MSw1NiBAQCBX
ZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgdGhpcy5lZGl0aW5nRW5kZWQoY29udGV4dCk7CiAgICAgfSwKIAotICAgIGVkaXRpbmdDb21t
aXR0ZWQ6IGZ1bmN0aW9uKGVsZW1lbnQsIHVzZXJJbnB1dCwgcHJldmlvdXNDb250ZW50LCBjb250
ZXh0KQorICAgIGVkaXRpbmdDb21taXR0ZWQ6IGZ1bmN0aW9uKGVsZW1lbnQsIHVzZXJJbnB1dCwg
cHJldmlvdXNDb250ZW50LCBjb250ZXh0LCBtb3ZlRGlyZWN0aW9uKQogICAgIHsKICAgICAgICAg
dGhpcy5lZGl0aW5nRW5kZWQoY29udGV4dCk7CiAKLSAgICAgICAgaWYgKHVzZXJJbnB1dCA9PT0g
cHJldmlvdXNDb250ZW50KQotICAgICAgICAgICAgcmV0dXJuOyAvLyBub3RoaW5nIGNoYW5nZWQs
IHNvIGRvIG5vdGhpbmcgZWxzZQorICAgICAgICAvLyBEZXRlcm1pbmUgd2hlcmUgdG8gbW92ZSB0
byBiZWZvcmUgbWFraW5nIGNoYW5nZXMKKyAgICAgICAgdmFyIG5ld1Byb3BlcnR5ID0gZmFsc2U7
CisgICAgICAgIHZhciBtb3ZlVG9Qcm9wZXJ0eU5hbWU7CisgICAgICAgIHZhciBtb3ZlVG8gPSAo
bW92ZURpcmVjdGlvbiA9PT0gImZvcndhcmQiID8gdGhpcy5uZXh0U2libGluZyA6IHRoaXMucHJl
dmlvdXNTaWJsaW5nKTsKKyAgICAgICAgaWYgKG1vdmVUbykKKyAgICAgICAgICAgIG1vdmVUb1By
b3BlcnR5TmFtZSA9IG1vdmVUby5uYW1lOworICAgICAgICBlbHNlIGlmIChtb3ZlRGlyZWN0aW9u
ID09PSAiZm9yd2FyZCIpCisgICAgICAgICAgICBuZXdQcm9wZXJ0eSA9IHRydWU7CisKKyAgICAg
ICAgLy8gTWFrZSB0aGUgQ2hhbmdlcyBhbmQgdHJpZ2dlciB0aGUgbW92ZVRvTmV4dENhbGxiYWNr
IGFmdGVyIHVwZGF0aW5nCisgICAgICAgIHZhciBibGFua0lucHV0ID0gL15ccyokLy50ZXN0KHVz
ZXJJbnB1dCk7CisgICAgICAgIGlmICh1c2VySW5wdXQgIT09IHByZXZpb3VzQ29udGVudCB8fCAo
dGhpcy5fbmV3UHJvcGVydHkgJiYgYmxhbmtJbnB1dCkpIHsgLy8gb25seSBpZiBzb21ldGhpbmcg
Y2hhbmdlZCwgb3IgYWRkaW5nIGEgbmV3IHN0eWxlIGFuZCBpdCB3YXMgYmxhbmsKKyAgICAgICAg
ICAgIHRoaXMudHJlZU91dGxpbmUuc2VjdGlvbi5fYWZ0ZXJVcGRhdGUgPSBtb3ZlVG9OZXh0Q2Fs
bGJhY2suYmluZCh0aGlzLCB0aGlzLl9uZXdQcm9wZXJ0eSwgIWJsYW5rSW5wdXQpOworICAgICAg
ICAgICAgdGhpcy5hcHBseVN0eWxlVGV4dCh1c2VySW5wdXQsIHRydWUpOworICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgIG1vdmVUb05leHRDYWxsYmFjayh0aGlzLl9uZXdQcm9wZXJ0eSwgZmFs
c2UsIHRoaXMudHJlZU91dGxpbmUuc2VjdGlvbiwgZmFsc2UpOworCisgICAgICAgIC8vIFRoZSBD
YWxsYmFjayB0byBzdGFydCBlZGl0aW5nIHRoZSBuZXh0IHByb3BlcnR5CisgICAgICAgIGZ1bmN0
aW9uIG1vdmVUb05leHRDYWxsYmFjayhhbHJlYWR5TmV3LCB2YWx1ZUNoYW5nZWQsIHNlY3Rpb24p
IHsKKyAgICAgICAgICAgIGlmICghbW92ZURpcmVjdGlvbikKKyAgICAgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgICAgIC8vIFVzZXIganVzdCB0YWJiZWQgdGhyb3VnaCB3aXRob3V0IGNo
YW5nZXMKKyAgICAgICAgICAgIGlmIChtb3ZlVG8gJiYgbW92ZVRvLnBhcmVudCkgeworICAgICAg
ICAgICAgICAgIG1vdmVUby5zdGFydEVkaXRpbmcobW92ZVRvLnZhbHVlRWxlbWVudCk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBVc2Vy
IGhhcyBtYWRlIGEgY2hhbmdlIHRoZW4gdGFiYmVkLCB3aXBpbmcgYWxsIHRoZSBvcmlnaW5hbCB0
cmVlRWxlbWVudHMsCisgICAgICAgICAgICAvLyByZWNhbGN1bGF0ZSB0aGUgbmV3IHRyZWVFbGVt
ZW50IGZvciB0aGUgc2FtZSBwcm9wZXJ0eSB3ZSB3ZXJlIGdvaW5nIHRvIGVkaXQgbmV4dAorICAg
ICAgICAgICAgaWYgKG1vdmVUbyAmJiAhbW92ZVRvLnBhcmVudCkgeworICAgICAgICAgICAgICAg
IHZhciB0cmVlRWxlbWVudCA9IHNlY3Rpb24uZmluZFRyZWVFbGVtZW50V2l0aE5hbWUobW92ZVRv
UHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgICAgICBpZiAodHJlZUVsZW1lbnQpCisgICAgICAg
ICAgICAgICAgICAgIHRyZWVFbGVtZW50LnN0YXJ0RWRpdGluZyh0cmVlRWxlbWVudC52YWx1ZUVs
ZW1lbnQpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgLy8gQ3JlYXRlIGEgbmV3IGF0dHJpYnV0ZSBpbiB0aGlzIHNlY3Rpb24KKyAgICAgICAg
ICAgIGlmIChuZXdQcm9wZXJ0eSkgeworICAgICAgICAgICAgICAgIGlmIChhbHJlYWR5TmV3ICYm
ICF2YWx1ZUNoYW5nZWQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB0
aGlzLmFwcGx5U3R5bGVUZXh0KHVzZXJJbnB1dCwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgdmFy
IGl0ZW0gPSBzZWN0aW9uLmFkZE5ld0JsYW5rUHJvcGVydHkoKTsKKyAgICAgICAgICAgICAgICBp
dGVtLnN0YXJ0RWRpdGluZygpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfSwKIAog
ICAgIGFwcGx5U3R5bGVUZXh0OiBmdW5jdGlvbihzdHlsZVRleHQsIHVwZGF0ZUludGVyZmFjZSkK
QEAgLTg3Niw3ICs5NDYsOSBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50
LnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAoIXN0eWxlVGV4dExlbmd0aCkgewogICAgICAg
ICAgICAgaWYgKHVwZGF0ZUludGVyZmFjZSkgewotICAgICAgICAgICAgICAgIC8vIFRoZSB1c2Vy
IGRlbGV0ZWQgdGhlIGV2ZXJ5dGhpbmcsIHNvIHJlbW92ZSB0aGUgdHJlZSBlbGVtZW50IGFuZCB1
cGRhdGUuCisgICAgICAgICAgICAgICAgLy8gVGhlIHVzZXIgZGVsZXRlZCBldmVyeXRoaW5nLCBz
byByZW1vdmUgdGhlIHRyZWUgZWxlbWVudCBhbmQgdXBkYXRlLgorICAgICAgICAgICAgICAgIGlm
ICghdGhpcy5fbmV3UHJvcGVydHkpCisgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLnRy
ZWVPdXRsaW5lLnNlY3Rpb24uX2FmdGVyVXBkYXRlOwogICAgICAgICAgICAgICAgIGlmICh0aGlz
LnRyZWVPdXRsaW5lLnNlY3Rpb24gJiYgdGhpcy50cmVlT3V0bGluZS5zZWN0aW9uLnBhbmUpCiAg
ICAgICAgICAgICAgICAgICAgIHRoaXMudHJlZU91dGxpbmUuc2VjdGlvbi5wYW5lLnVwZGF0ZSgp
OwogICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LnJlbW92ZUNoaWxkKHRoaXMpOwpAQCAtODg2
LDcgKzk1OCwxMiBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3Rv
dHlwZSA9IHsKIAogICAgICAgICBpZiAoIXRlbXBTdHlsZS5sZW5ndGgpIHsKICAgICAgICAgICAg
IC8vIFRoZSB1c2VyIHR5cGVkIHNvbWV0aGluZywgYnV0IGl0IGRpZG4ndCBwYXJzZS4gSnVzdCBh
Ym9ydCBhbmQgcmVzdG9yZQotICAgICAgICAgICAgLy8gdGhlIG9yaWdpbmFsIHRpdGxlIGZvciB0
aGlzIHByb3BlcnR5LgorICAgICAgICAgICAgLy8gdGhlIG9yaWdpbmFsIHRpdGxlIGZvciB0aGlz
IHByb3BlcnR5LiAgSWYgdGhpcyB3YXMgYSBuZXcgYXR0cmlidXRlIGFuZAorICAgICAgICAgICAg
Ly8gd2UgY291bGRuJ3QgcGFyc2UsIHRoZW4ganVzdCByZW1vdmUgaXQuCisgICAgICAgICAgICBp
ZiAodGhpcy5fbmV3UHJvcGVydHkpIHsKKyAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC5yZW1v
dmVDaGlsZCh0aGlzKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBpZiAodXBkYXRlSW50ZXJmYWNlKQogICAgICAgICAgICAgICAgIHRoaXMudXBk
YXRlVGl0bGUoKTsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvaW5zcGVjdG9yLmpzCmluZGV4IDM2M2YzZGQuLmQzZjA3YjIgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpAQCAtMTI4Nyw2ICsxMjg3LDcgQEAgV2ViSW5zcGVj
dG9yLnN0YXJ0RWRpdGluZyA9IGZ1bmN0aW9uKGVsZW1lbnQsIGNvbW1pdHRlZENhbGxiYWNrLCBj
YW5jZWxsZWRDYWxsYmEKIAogICAgIHZhciBvbGRUZXh0ID0gZWxlbWVudC50ZXh0Q29udGVudDsK
ICAgICB2YXIgb2xkSGFuZGxlS2V5RXZlbnQgPSBlbGVtZW50LmhhbmRsZUtleUV2ZW50OworICAg
IHZhciBtb3ZlRGlyZWN0aW9uID0gIiI7CiAKICAgICBlbGVtZW50LmFkZFN0eWxlQ2xhc3MoImVk
aXRpbmciKTsKIApAQCAtMTMyNCw3ICsxMzI1LDcgQEAgV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGlu
ZyA9IGZ1bmN0aW9uKGVsZW1lbnQsIGNvbW1pdHRlZENhbGxiYWNrLCBjYW5jZWxsZWRDYWxsYmEK
ICAgICBmdW5jdGlvbiBlZGl0aW5nQ29tbWl0dGVkKCkgewogICAgICAgICBjbGVhblVwQWZ0ZXJF
ZGl0aW5nLmNhbGwodGhpcyk7CiAKLSAgICAgICAgY29tbWl0dGVkQ2FsbGJhY2sodGhpcywgdGhp
cy50ZXh0Q29udGVudCwgb2xkVGV4dCwgY29udGV4dCk7CisgICAgICAgIGNvbW1pdHRlZENhbGxi
YWNrKHRoaXMsIHRoaXMudGV4dENvbnRlbnQsIG9sZFRleHQsIGNvbnRleHQsIG1vdmVEaXJlY3Rp
b24pOwogICAgIH0KIAogICAgIGVsZW1lbnQuaGFuZGxlS2V5RXZlbnQgPSBmdW5jdGlvbihldmVu
dCkgewpAQCAtMTM0MCw3ICsxMzQxLDggQEAgV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGluZyA9IGZ1
bmN0aW9uKGVsZW1lbnQsIGNvbW1pdHRlZENhbGxiYWNrLCBjYW5jZWxsZWRDYWxsYmEKICAgICAg
ICAgICAgIGVkaXRpbmdDYW5jZWxsZWQuY2FsbChlbGVtZW50KTsKICAgICAgICAgICAgIGV2ZW50
LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICBldmVudC5oYW5kbGVkID0gdHJ1ZTsKLSAg
ICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJVKzAw
MDkiKSAvLyBUYWIga2V5CisgICAgICAgICAgICBtb3ZlRGlyZWN0aW9uID0gKGV2ZW50LnNoaWZ0
S2V5ID8gImJhY2t3YXJkIiA6ICJmb3J3YXJkIik7CiAgICAgfQogCiAgICAgZWxlbWVudC5hZGRF
dmVudExpc3RlbmVyKCJibHVyIiwgYmx1ckV2ZW50TGlzdGVuZXIsIGZhbHNlKTsK
</data>
<flag name="review"
          id="17778"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>