<?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>76958</bug_id>
          
          <creation_ts>2012-01-24 16:23:11 -0800</creation_ts>
          <short_desc>webkit-patch works oddly on local Git branches</short_desc>
          <delta_ts>2012-03-08 13:03:24 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>eric</cc>
    
    <cc>evan</cc>
    
    <cc>levin</cc>
    
    <cc>mrobinson</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>541822</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-24 16:23:11 -0800</bug_when>
    <thetext>If I have one branch &apos;foo&apos; off of HEAD, and then I branc &apos;bar&apos; off of foo, ideally, if I have bar checked out I should be able to say webkit-patch -g foo and get just the changes on bar plus whatever is dirty in the tree. Instead, I&apos;m not sure what happens. If I say -g foo..HEAD, I get just the checked in files (which makes sense), but then there is no way to create or edit the ChangeLog and have it get rolled into the patch. You have to run it once, break out, edit the ChangeLog, check it back in, and run it again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541825</commentid>
    <comment_count>1</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-24 16:23:55 -0800</bug_when>
    <thetext>Also, it would be nice if webkit-patch looked for branch.&lt;branch&gt;.merge to pick the upstream instead of trying to find the remote.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559954</commentid>
    <comment_count>2</comment_count>
      <attachid>127743</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-19 15:11:12 -0800</bug_when>
    <thetext>Created attachment 127743
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559959</commentid>
    <comment_count>3</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-19 15:31:58 -0800</bug_when>
    <thetext>Okay, I&apos;ve dug into this a bit more, and I understand what the current code does, but not why. I have also upload a patch that starts to approximate the behavior I&apos;d like, but the patch needs tests and I&apos;m not sure what the best way to handle command line switches is.

First, here&apos;s the current implementation, in webkitpy/common/checkout/scm/git.py:

    def merge_base(self, git_commit):                                           
        if git_commit:                                                          
            # Special-case HEAD.. to mean working-copy changes only.            
            if git_commit.upper() == &apos;HEAD..&apos;:                                  
                return &apos;HEAD&apos;                                                   
                                                                                
            if &apos;..&apos; not in git_commit:                                          
                git_commit = git_commit + &quot;^..&quot; + git_commit                    
            return git_commit                                                   
                                                                                
        return self.remote_merge_base()                                         
                                                                                
where remote_merge_base will diff against the svn head if set, and if not, the remote head (and this is the default if git_commit isn&apos;t set).

First, I have no idea why we rewrite &apos;-g bar&apos; into &apos;-g bar^..bar&apos;. 

Second, I don&apos;t know why we we rewrite &apos;-g HEAD..&apos; except that it&apos;s probably to get around the rewriting of &apos;-g bar&apos;.

However, the &apos;-g bar&apos; rewrite means that I can&apos;t actually get the diff I want (diff against a tracking branch *and* including the working changes) without code changes. 

At any rate, this is pretty much never the default behavior I want, at least for &apos;pretty-patch&apos; or &apos;upload&apos;. For me, I always want to diff against the tracking branch (which if you are on branch &apos;foo&apos;, is set in the git config variable &apos;branch.foo.merge&apos;). 

Specifically, what I&apos;d like is, if I am on a branch &apos;foo&apos; that tracks &apos;bar&apos; that tracks &apos;master&apos;, and I type &apos;webkit-patch upload&apos;, and I have not yet created a ChangeLog, for it to prepare a changelog based on the changes in &apos;git diff -g bar&apos; (note that this includes any uncommitted changes in my working directory), preview the diff (including the changelog in the diff), and then post the whole patch up to the bug.

Given the patch I just posted, I can get this with &apos;webkit-patch -g UPSTREAM..&apos;.

But, it seems to me that -- unless there are reasons to the contrary -- we&apos;d be better off deleting some of these special cases and letting the user specify the intent more directly? E.g., delete the two special cases, default to diffing against the tracking branch, and only diffing against the remote_merge_base() if the tracking branch isn&apos;t set?

What do others think? Surely there are reasons for the existing behavior? Do others have strong preferences for the defaults including (or not including) working-copy changes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563291</commentid>
    <comment_count>4</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-23 11:25:50 -0800</bug_when>
    <thetext>Anyone have any thoughts on this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563302</commentid>
    <comment_count>5</comment_count>
    <who name="Evan Martin">evan</who>
    <bug_when>2012-02-23 11:37:26 -0800</bug_when>
    <thetext>In principle I approve of deleting special cases and just requiring &quot;normal&quot; git syntax for describing what to upload.

In practice I worry that someone relies on the current behavior (after all, they implemented it...).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563323</commentid>
    <comment_count>6</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-23 11:52:31 -0800</bug_when>
    <thetext>Okay, spelunking around in the history, it looks like much of the behavior was implemented in bug 39364 and bug 39624. On those bugs, mrobinson, ddkilzer, and aroben commented about possible workflow variations.

I&apos;m not sure how many of them will be affected by this, since much of the discussion was around squash/no-squash which (I don&apos;t think) I&apos;m affecting. However, adding them to this bug in case they have any thoughts

Ojan, David, Adam (Roben), Martin - any thoughts?

I can also send a note out to webkit-dev to see if anyone else has habits that might be hurt by this.

It looks like the &apos;-g bar&apos; -&gt; &apos;-g bar^..bar&apos; rewrite was probably done so that we could get an easy cherry-pick-style upload. Personally, I&apos;d probably prefer that we use a different flag for that syntax and leave -g for the general commitish notation, but I could also be open to adding a new flag for the new behavior if changing -g would be too undesirable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563427</commentid>
    <comment_count>7</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-02-23 13:46:13 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Okay, spelunking around in the history, it looks like much of the behavior was implemented in bug 39364 and bug 39624. On those bugs, mrobinson, ddkilzer, and aroben commented about possible workflow variations.
&gt; 
&gt; I&apos;m not sure how many of them will be affected by this, since much of the discussion was around squash/no-squash which (I don&apos;t think) I&apos;m affecting.

squash/no-squash doesn&apos;t exist anymore.

&gt; However, adding them to this bug in case they have any thoughts
&gt; 
&gt; Ojan, David, Adam (Roben), Martin - any thoughts?

I don&apos;t have opinions on this and generally agree that fewer special cases is a good thing. In practice, the only workflows I use are not having -g or having -g point to a single commit hash.

&gt; It looks like the &apos;-g bar&apos; -&gt; &apos;-g bar^..bar&apos; rewrite was probably done so that we could get an easy cherry-pick-style upload. Personally, I&apos;d probably prefer that we use a different flag for that syntax and leave -g for the general commitish notation, but I could also be open to adding a new flag for the new behavior if changing -g would be too undesirable.

&quot;webkit-patch upload -g commit_hash&quot; should upload that one commit, no?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563442</commentid>
    <comment_count>8</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-23 13:57:06 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; &gt; It looks like the &apos;-g bar&apos; -&gt; &apos;-g bar^..bar&apos; rewrite was probably done so that we could get an easy cherry-pick-style upload. Personally, I&apos;d probably prefer that we use a different flag for that syntax and leave -g for the general commitish notation, but I could also be open to adding a new flag for the new behavior if changing -g would be too undesirable.
&gt; 
&gt; &quot;webkit-patch upload -g commit_hash&quot; should upload that one commit, no?

I&apos;m not sure what you mean by &quot;should&quot; here ...

I was suggesting that webkit-patch upload -g commit_hash should upload the patch you&apos;d get by &apos;git diff commit_hash&apos;, which is the difference between that change and your current working copy.

It sounds like you want &apos;-g commit_hash&apos; to produce the patch specified by &apos;commit_hash^..commit_hash&apos; (which is of course what the code currently does). 

I personally find the latter useless to me, but if it&apos;s useful to you then I certainly don&apos;t want to just get rid of it :) We could either make the latter a new argument, or make the former a new argument, or come up with some additional syntactic hack to get both kinds of functionality in the existing single argument. Personally, I don&apos;t care about either of the first two, but I would prefer not to do the third (the syntactic hack), since I think it&apos;s just confusing.

Note that at the same time I am suggesting we have a syntactic shortcut for &apos;diff against the tracking/upstream branch&apos; so that webkit-patch will figure out what the upstream branch is automatically.

Make sense?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563502</commentid>
    <comment_count>9</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-23 14:42:40 -0800</bug_when>
    <thetext>Hum ... of course, it would be helpful if I could remember what I actually wrote in my patch. Sorry, Ojan ...

Given the patch as it is uploaded, yes, &apos;-g commit_hash&apos; will produce just that single diff, and in fact I am getting my &apos;diff against upstream&apos; behavior using a syntactic hack, but I can&apos;t actually diff against any other ref and include the working changes. 

Rather, what I was suggesting is to strip out the special-case logic in lines 193-200 as well as include some sort of &apos;UPSTREAM&apos; tweak. But it sounds like there&apos;s a use for that code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566702</commentid>
    <comment_count>10</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2012-02-28 08:26:55 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Ojan, David, Adam (Roben), Martin - any thoughts?
&gt; 
&gt; I can also send a note out to webkit-dev to see if anyone else has habits that might be hurt by this.
&gt; 
&gt; It looks like the &apos;-g bar&apos; -&gt; &apos;-g bar^..bar&apos; rewrite was probably done so that we could get an easy cherry-pick-style upload. Personally, I&apos;d probably prefer that we use a different flag for that syntax and leave -g for the general commitish notation, but I could also be open to adding a new flag for the new behavior if changing -g would be too undesirable.

I use &quot;webkit-patch create-bug&quot; whenever there isn&apos;t a bug on bugs.webkit.org yet because it&apos;s quicker when I&apos;ve already committed locally with a ChangeLog.

Otherwise, when using &quot;webkit-patch upload&quot; I almost always use the -g switch with the assumption that it will pick up a single commit, although that&apos;s largely because it&apos;s how -g was implemented originally.

I&apos;m fine with making the &quot;-g&quot; switch more git-like in general, although an email to webkit-dev is always appreciated when a widely-used tool&apos;s behavior changes significantly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567008</commentid>
    <comment_count>11</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-28 13:07:34 -0800</bug_when>
    <thetext>As just mentioned on webkit-dev, I think I will change this patch so that -g remains unchanged and we add another command line flag that gives the &quot;pure git&quot; behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572238</commentid>
    <comment_count>12</comment_count>
      <attachid>130460</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-06 16:03:09 -0800</bug_when>
    <thetext>Created attachment 130460
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572243</commentid>
    <comment_count>13</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-06 16:08:49 -0800</bug_when>
    <thetext>Okay, adding another command line flag looked like it would be a huge hassle and make the SCM interface even more confusing, so I&apos;ve decided to stay with one flag and overload it slightly more:

Assume you have a branch &apos;foo&apos; with one commit &apos;commit1&apos;, and then a branch &apos;bar&apos; branched off of foo (using checkout -t -b foo)  with another &apos;commit2&apos;, and then a local working copy with &apos;commit3&apos;:

webkit-patch -g foo  =&gt; git diff foo^..foo =&gt; (commit1), as before
webkit-patch -g foo.. =&gt; git diff foo..HEAD =&gt; (commit1, commit2)
webkit-patch -g foo.... =&gt; git diff foo =&gt; (commit1, commit2, commit3)
webkit-patch -g UPSTREAM =&gt; git diff foo^..foo =&gt; (commit1)  (since foo is the upstream branch of bar, the current branch)
webkit-patch -g UPSTREAM.. =&gt; git diff foo^..HEAD
webkit-patch -g UPSTREAM.... =&gt; git diff foo =&gt; (commit1, commit2, commit3)

apart from changing &quot;..&quot; to &quot;....&quot; so that it didn&apos;t have the opposite semantics of the underlying git syntax, the behavior of -g should be unchanged.

Ojan and/or Adam, please review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573336</commentid>
    <comment_count>14</comment_count>
      <attachid>130460</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-03-07 16:07:49 -0800</bug_when>
    <thetext>Comment on attachment 130460
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=130460&amp;action=review

&gt; Tools/Scripts/webkitpy/tool/steps/options.py:47
&gt; +    git_commit = make_option(&quot;-g&quot;, &quot;--git-commit&quot;, action=&quot;store&quot;, dest=&quot;git_commit&quot;, help=&quot;Operate on a local commit. If a range, the commits are squashed into one. &lt;ref&gt;.. includes the working copy changes. UPSTREAM can be used for the upstream/tracking branch.&quot;)

This should be &quot;&lt;ref&gt;.... includes the working copy changes&quot; right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573652</commentid>
    <comment_count>15</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-07 23:30:36 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 130460 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=130460&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/tool/steps/options.py:47
&gt; &gt; +    git_commit = make_option(&quot;-g&quot;, &quot;--git-commit&quot;, action=&quot;store&quot;, dest=&quot;git_commit&quot;, help=&quot;Operate on a local commit. If a range, the commits are squashed into one. &lt;ref&gt;.. includes the working copy changes. UPSTREAM can be used for the upstream/tracking branch.&quot;)
&gt; 
&gt; This should be &quot;&lt;ref&gt;.... includes the working copy changes&quot; right?

right! will fix. Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574111</commentid>
    <comment_count>16</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-08 13:03:24 -0800</bug_when>
    <thetext>Committed r110195: &lt;http://trac.webkit.org/changeset/110195&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127743</attachid>
            <date>2012-02-19 15:11:12 -0800</date>
            <delta_ts>2012-02-28 13:07:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76958-20120219151113.patch</filename>
            <type>text/plain</type>
            <size>6143</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MTgyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTYxYzdhMmUzZWYyNDZjYTJlYzBjM2FkYjI5ODg2MTQ5
ODFjNzFlOC4uZWQ3MzNjYjc5NWMxNDFlZTk5ODkzMGRjYWJlODUyYWVhZDU5MTZmZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4
IEBACisyMDEyLTAyLTE5ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIHdlYmtpdC1wYXRjaCB3b3JrcyBvZGRseSBmb3IgR2l0IGJyYW5jaGVzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Njk1OAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluaXRpYWwgYXR0ZW1wdCBh
dCBmaXhpbmcgdGhlIGJ1ZzsgdGhpcyBuZWVkcyB0ZXN0cyBhbmQgSSdtIG5vdAorICAgICAgICBx
dWl0ZSBzdXJlIHRoYXQgdGhpcyBpcyB0aGUgaW50ZXJmYWNlIHdlIHNob3VsZCBoYXZlIHlldC4K
KworICAgICAgICBUaGlzIGFkZHMgYSBzcGVjaWFsIGNhc2UgZm9yIGhhbmRsaW5nICctZyBVUFNU
UkVBTS4uJyBhcyBpZiBpdAorICAgICAgICB3YXMgYSBkaWZmIGFnYWluc3QgdGhlIHVwc3RyZWFt
IGJyYW5jaCBhcyBzZXQgYnkKKyAgICAgICAgZ2l0LjxjdXJyZW50LWJyYW5jaD4ubWVyZ2UgKHVz
aW5nIGdpdCBjaGVja291dCAtdCBhbmQvb3IgZ2l0IGJyYW5jaAorICAgICAgICAtLXNldC11cHN0
cmVhbSkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20v
Z2l0LnB5OgorICAgICAgICAoR2l0Ll9icmFuY2hfZnJvbV9yZWYpOgorICAgICAgICAoR2l0KToK
KyAgICAgICAgKEdpdC5fY3VycmVudF9icmFuY2gpOgorICAgICAgICAoR2l0Ll91cHN0cmVhbV9i
cmFuY2gpOgorICAgICAgICAoR2l0Lm1lcmdlX2Jhc2UpOgorICAgICAgICAoR2l0Ll9jb21taXRf
b25fYnJhbmNoKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvb3B0aW9u
cy5weToKKyAgICAgICAgKE9wdGlvbnMpOgorCiAyMDEyLTAyLTE4ICBEaXJrIFByYW5rZSAgPGRw
cmFua2VAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEZpeCBvbmUgbW9yZSBkYW5nbGluZyByZWZl
cmVuY2UgdG8gd29ya2VyX2Nvbm5lY3Rpb24ubmFtZSwgZGVsZXRlIHVudXNlZCBjb2RlLgpkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL2dpdC5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9naXQucHkKaW5k
ZXggYWI5NmI4ZmE3NTRlNTQyZjg0ODA2Y2Y4Zjk0NTgwNGFjNWM5YThjYS4uMTU2NjUyMWI0MWQx
YjU3NzY1NzA5MmVmNGM4MTBiY2MzODA4MTk4YSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL2dpdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vZ2l0LnB5CkBAIC0xNzEsOCArMTcxLDI1IEBAIGNs
YXNzIEdpdChTQ00sIFNWTlJlcG9zaXRvcnkpOgogICAgICAgICByZXR1cm5fY29kZSA9IHNlbGYu
cnVuKFsiZ2l0IiwgInNob3ciLCAiSEVBRDolcyIgJSBwYXRoXSwgcmV0dXJuX2V4aXRfY29kZT1U
cnVlLCBkZWNvZGVfb3V0cHV0PUZhbHNlKQogICAgICAgICByZXR1cm4gcmV0dXJuX2NvZGUgIT0g
c2VsZi5FUlJPUl9GSUxFX0lTX01JU1NJTkcKIAorICAgIGRlZiBfYnJhbmNoX2Zyb21fcmVmKHNl
bGYsIHJlZik6CisgICAgICAgIHJldHVybiByZWYucmVwbGFjZSgncmVmcy9oZWFkcy8nLCAnJykK
KworICAgIGRlZiBfY3VycmVudF9icmFuY2goc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9i
cmFuY2hfZnJvbV9yZWYoc2VsZi5ydW4oWydnaXQnLCAnc3ltYm9saWMtcmVmJywgJy1xJywgJ0hF
QUQnXSwgY3dkPXNlbGYuY2hlY2tvdXRfcm9vdCkuc3RyaXAoKSkKKworICAgIGRlZiBfdXBzdHJl
YW1fYnJhbmNoKHNlbGYpOgorICAgICAgICBjdXJyZW50X2JyYW5jaCA9IHNlbGYuX2N1cnJlbnRf
YnJhbmNoKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2JyYW5jaF9mcm9tX3JlZihzZWxmLnJlYWRf
Z2l0X2NvbmZpZygnYnJhbmNoLiVzLm1lcmdlJyAlIGN1cnJlbnRfYnJhbmNoLCBjd2Q9c2VsZi5j
aGVja291dF9yb290KS5zdHJpcCgpKQorCiAgICAgZGVmIG1lcmdlX2Jhc2Uoc2VsZiwgZ2l0X2Nv
bW1pdCk6CiAgICAgICAgIGlmIGdpdF9jb21taXQ6CisgICAgICAgICAgICAjIFNwZWNpYWwtY2Fz
ZSBVUFNUUkVBTS4uIHRvIG1lYW4gYWxsIGNoYW5nZXMgZnJvbSB0aGUgdXBzdHJlYW0gYnJhbmNo
IChpbmNsdWRpbmcgY2hhbmdlcyBvbmx5IGluIHRoZSB3b3JraW5nLWNvcHkpLgorICAgICAgICAg
ICAgaWYgZ2l0X2NvbW1pdC51cHBlcigpID09ICdVUFNUUkVBTS4uJzoKKyAgICAgICAgICAgICAg
ICB1cHN0cmVhbSA9IHNlbGYuX3Vwc3RyZWFtX2JyYW5jaCgpCisgICAgICAgICAgICAgICAgaWYg
bm90IHVwc3RyZWFtOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBTY3JpcHRFcnJvcihtZXNz
YWdlPSdObyB1cHN0cmVhbS90cmFja2luZyBicmFuY2ggc2V0LicpCisgICAgICAgICAgICAgICAg
cmV0dXJuIHVwc3RyZWFtCisKICAgICAgICAgICAgICMgU3BlY2lhbC1jYXNlIEhFQUQuLiB0byBt
ZWFuIHdvcmtpbmctY29weSBjaGFuZ2VzIG9ubHkuCiAgICAgICAgICAgICBpZiBnaXRfY29tbWl0
LnVwcGVyKCkgPT0gJ0hFQUQuLic6CiAgICAgICAgICAgICAgICAgcmV0dXJuICdIRUFEJwpAQCAt
MzUxLDggKzM2OCw3IEBAIGNsYXNzIEdpdChTQ00sIFNWTlJlcG9zaXRvcnkpOgogICAgICAgICBy
ZXR1cm4gc2VsZi5wdXNoX2xvY2FsX2NvbW1pdHNfdG9fc2VydmVyKHVzZXJuYW1lPXVzZXJuYW1l
LCBwYXNzd29yZD1wYXNzd29yZCkKIAogICAgIGRlZiBfY29tbWl0X29uX2JyYW5jaChzZWxmLCBt
ZXNzYWdlLCBnaXRfY29tbWl0LCB1c2VybmFtZT1Ob25lLCBwYXNzd29yZD1Ob25lKToKLSAgICAg
ICAgYnJhbmNoX3JlZiA9IHNlbGYucnVuKFsnZ2l0JywgJ3N5bWJvbGljLXJlZicsICdIRUFEJ10p
LnN0cmlwKCkKLSAgICAgICAgYnJhbmNoX25hbWUgPSBicmFuY2hfcmVmLnJlcGxhY2UoJ3JlZnMv
aGVhZHMvJywgJycpCisgICAgICAgIGJyYW5jaF9uYW1lID0gc2VsZi5fY3VycmVudF9icmFuY2go
KQogICAgICAgICBjb21taXRfaWRzID0gc2VsZi5jb21taXRfaWRzX2Zyb21fY29tbWl0aXNoX2Fy
Z3VtZW50cyhbZ2l0X2NvbW1pdF0pCiAKICAgICAgICAgIyBXZSB3YW50IHRvIHNxdWFzaCBhbGwg
dGhpcyBicmFuY2gncyBjb21taXRzIGludG8gb25lIGNvbW1pdCB3aXRoIHRoZSBwcm9wZXIgZGVz
Y3JpcHRpb24uCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMv
b3B0aW9ucy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9vcHRpb25zLnB5
CmluZGV4IDExNDFkZjdlNDQxYTQ3ZjUwNjA2ZmI3YjdkZWQ2NjQwMzdjNTI1OWUuLmYwNDYxNDlk
OTFmOTlhYmEyYjZjZTJhMTAxMDQzZTI2OWQ1OTU3ZTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9zdGVwcy9vcHRpb25zLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9zdGVwcy9vcHRpb25zLnB5CkBAIC0xLDkgKzEsOSBAQAogIyBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMgCisjCiAjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCiAjIG1ldDoKLSMgCisjCiAjICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CiAjIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KICMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQpAQCAtMTMsNyArMTMsNyBAQAogIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCiAjIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCiAjIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jIAor
IwogIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCiAjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCiAjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgpAQCAtNDQsNyArNDQs
NyBAQCBjbGFzcyBPcHRpb25zKG9iamVjdCk6CiAgICAgZGVzY3JpcHRpb24gPSBtYWtlX29wdGlv
bigiLW0iLCAiLS1kZXNjcmlwdGlvbiIsIGFjdGlvbj0ic3RvcmUiLCB0eXBlPSJzdHJpbmciLCBk
ZXN0PSJkZXNjcmlwdGlvbiIsIGhlbHA9IkRlc2NyaXB0aW9uIHN0cmluZyBmb3IgdGhlIGF0dGFj
aG1lbnQiKQogICAgIGVtYWlsID0gbWFrZV9vcHRpb24oIi0tZW1haWwiLCBhY3Rpb249InN0b3Jl
IiwgdHlwZT0ic3RyaW5nIiwgZGVzdD0iZW1haWwiLCBoZWxwPSJFbWFpbCBhZGRyZXNzIHRvIHVz
ZSBpbiBDaGFuZ2VMb2dzLiIpCiAgICAgZm9yY2VfY2xlYW4gPSBtYWtlX29wdGlvbigiLS1mb3Jj
ZS1jbGVhbiIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9ImZvcmNlX2NsZWFuIiwgZGVmYXVs
dD1GYWxzZSwgaGVscD0iQ2xlYW4gd29ya2luZyBkaXJlY3RvcnkgYmVmb3JlIGFwcGx5aW5nIHBh
dGNoZXMgKHJlbW92ZXMgbG9jYWwgY2hhbmdlcyBhbmQgY29tbWl0cykiKQotICAgIGdpdF9jb21t
aXQgPSBtYWtlX29wdGlvbigiLWciLCAiLS1naXQtY29tbWl0IiwgYWN0aW9uPSJzdG9yZSIsIGRl
c3Q9ImdpdF9jb21taXQiLCBoZWxwPSJPcGVyYXRlIG9uIGEgbG9jYWwgY29tbWl0LiBJZiBhIHJh
bmdlLCB0aGUgY29tbWl0cyBhcmUgc3F1YXNoZWQgaW50byBvbmUuIEhFQUQuLiBvcGVyYXRlcyBv
biB3b3JraW5nIGNvcHkgY2hhbmdlcyBvbmx5LiIpCisgICAgZ2l0X2NvbW1pdCA9IG1ha2Vfb3B0
aW9uKCItZyIsICItLWdpdC1jb21taXQiLCBhY3Rpb249InN0b3JlIiwgZGVzdD0iZ2l0X2NvbW1p
dCIsIGhlbHA9Ik9wZXJhdGUgb24gYSBsb2NhbCBjb21taXQuIElmIGEgcmFuZ2UsIHRoZSBjb21t
aXRzIGFyZSBzcXVhc2hlZCBpbnRvIG9uZS4gSEVBRC4uIG9wZXJhdGVzIG9uIHdvcmtpbmcgY29w
eSBjaGFuZ2VzIG9ubHkuIFVQU1RSRUFNLi4gb3BlcmF0ZXMgb24gY2hhbmdlcyBmcm9tIHRoZSB1
cHN0cmVhbSBicmFuY2ggKGluY2x1ZGluZyB3b3JraW5nIGNvcHkgY2hhbmdlcykuIikKICAgICBs
b2NhbF9jb21taXQgPSBtYWtlX29wdGlvbigiLS1sb2NhbC1jb21taXQiLCBhY3Rpb249InN0b3Jl
X3RydWUiLCBkZXN0PSJsb2NhbF9jb21taXQiLCBkZWZhdWx0PUZhbHNlLCBoZWxwPSJNYWtlIGEg
bG9jYWwgY29tbWl0IGZvciBlYWNoIGFwcGxpZWQgcGF0Y2giKQogICAgIG5vbl9pbnRlcmFjdGl2
ZSA9IG1ha2Vfb3B0aW9uKCItLW5vbi1pbnRlcmFjdGl2ZSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIs
IGRlc3Q9Im5vbl9pbnRlcmFjdGl2ZSIsIGRlZmF1bHQ9RmFsc2UsIGhlbHA9Ik5ldmVyIHByb21w
dCB0aGUgdXNlciwgZmFpbCBhcyBmYXN0IGFzIHBvc3NpYmxlLiIpCiAgICAgb2Jzb2xldGVfcGF0
Y2hlcyA9IG1ha2Vfb3B0aW9uKCItLW5vLW9ic29sZXRlIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIs
IGRlc3Q9Im9ic29sZXRlX3BhdGNoZXMiLCBkZWZhdWx0PVRydWUsIGhlbHA9IkRvIG5vdCBvYnNv
bGV0ZSBvbGQgcGF0Y2hlcyBiZWZvcmUgcG9zdGluZyB0aGlzIG9uZS4iKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130460</attachid>
            <date>2012-03-06 16:03:09 -0800</date>
            <delta_ts>2012-03-07 16:07:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76958-20120306160308.patch</filename>
            <type>text/plain</type>
            <size>12311</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5OTUwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOWQ3ZWQwYjU2MTBiZGY5YThkMTUxODAwYzI5NDZhYTFi
YTE0NTRiYS4uZTJiMzgzOGNlMGJlY2Q4ZGNlNmYxZTJhMzBmMWUyZDdhYjJmYTVkOCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQw
IEBACisyMDEyLTAzLTA2ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIHdlYmtpdC1wYXRjaCB3b3JrcyBvZGRseSBvbiBsb2NhbCBHaXQgYnJhbmNoZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2OTU4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjaGFuZ2Ug
bWFrZXMgdGhlICctZycgZmxhZyB0byB3ZWJraXQtcGF0Y2ggYmVoYXZlIGEKKyAgICAgICAgbGl0
dGxlIG1vcmUgY29uc2lzdGVudGx5IHdpdGggZ2l0LiBUaGUgJ0hFQUQuLicgc3ludGF4CisgICAg
ICAgIGlzIGNoYW5nZWQgdG8gJ0hFQUQuLi4uJyAoZm91ciBkb3RzKSwgc28gYXMgdG8gbm90Cisg
ICAgICAgIGNvbGxpZGUgd2l0aCB0aGUgdW5kZXJseWluZyBnaXQgc3ludGF4LiBXZSBhbHNvIGdl
bmVyYWxpemUKKyAgICAgICAgdGhlIHN5bnRheCB0byBzdXBwb3J0IGFueSByZWZuYW1lLCBzbyAn
Zm9vLi4uLicgbWVhbnMKKyAgICAgICAgZGlmZiBhZ2FpbnN0IGZvbyBhbmQgaW5jbHVkZSB3b3Jr
aW5nIGNvcHkgY2hhbmdlcy4KKworICAgICAgICBUaGlzIGNoYW5nZSBhbHNvIGFkZHMgdGhlICdV
UFNUUkVBTScgc2hvcnRjdXQgdG8gaWRlbnRpZnkKKyAgICAgICAgd2hhdGV2ZXIgdGhlIGN1cnJl
bnQgdXBzdHJlYW0vdHJhY2tpbmcgYnJhbmNoIGlzOyB0aGlzIGlzCisgICAgICAgIHVzZWZ1bCBp
ZiB5b3UgaGF2ZSBtdWx0aXBsZSBsb2NhbCBicmFuY2hlcyBzdGFja2VkIHVwLgorCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL2dpdC5weToKKyAgICAgICAg
KEdpdC5fYnJhbmNoX2Zyb21fcmVmKToKKyAgICAgICAgKEdpdCk6CisgICAgICAgIChHaXQuX2N1
cnJlbnRfYnJhbmNoKToKKyAgICAgICAgKEdpdC5fdXBzdHJlYW1fYnJhbmNoKToKKyAgICAgICAg
KEdpdC5tZXJnZV9iYXNlKToKKyAgICAgICAgKEdpdC5fY29tbWl0X29uX2JyYW5jaCk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbV91bml0dGVzdC5w
eToKKyAgICAgICAgKEdpdFNWTlRlc3QuX3NlY29uZF9sb2NhbF9jb21taXQpOgorICAgICAgICAo
R2l0U1ZOVGVzdC5fdHdvX2xvY2FsX2NvbW1pdHMpOgorICAgICAgICAoR2l0U1ZOVGVzdC50ZXN0
X2NvbW1pdF93aXRoX21lc3NhZ2VfZ2l0X2NvbW1pdF9yYW5nZSk6CisgICAgICAgIChHaXRTVk5U
ZXN0LnRlc3RfdXBzdHJlYW1fYnJhbmNoKToKKyAgICAgICAgKEdpdFNWTlRlc3QudGVzdF9jcmVh
dGVfcGF0Y2hfd29ya2luZ19jb3B5X29ubHkpOgorICAgICAgICAoR2l0U1ZOVGVzdC50ZXN0X2No
YW5nZWRfZmlsZXNfbG9jYWxfcGx1c193b3JraW5nX2NvcHkpOgorICAgICAgICAoR2l0U1ZOVGVz
dC50ZXN0X2NoYW5nZWRfZmlsZXNfd29ya2luZ19jb3B5X29ubHkpOgorICAgICAgICAoR2l0U1ZO
VGVzdC50ZXN0X2NoYW5nZWRfZmlsZXNfdXBzdHJlYW0pOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9zdGVwcy9vcHRpb25zLnB5OgorICAgICAgICAoT3B0aW9ucyk6CisKIDIwMTIt
MDMtMDUgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBZGQgYSBt
ZWNoYW5pc20gdG8gcmViYXNlbGluZSBuZXcgcG9ydHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9naXQucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vZ2l0LnB5CmluZGV4IDdjNWQ4MGNjMzE5ZjcwN2U5
OTVlMjc5MDE0ZDQ2MTIyM2M1NmRhNjMuLmM3ZGJkN2NhMTNjODVmMjU2OGI3MmE3ZTdjMzdhMGZk
M2NlODM0ZmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNr
b3V0L3NjbS9naXQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tv
dXQvc2NtL2dpdC5weQpAQCAtMTcwLDExICsxNzAsMjggQEAgY2xhc3MgR2l0KFNDTSwgU1ZOUmVw
b3NpdG9yeSk6CiAgICAgICAgIHJldHVybl9jb2RlID0gc2VsZi5ydW4oWyJnaXQiLCAic2hvdyIs
ICJIRUFEOiVzIiAlIHBhdGhdLCByZXR1cm5fZXhpdF9jb2RlPVRydWUsIGRlY29kZV9vdXRwdXQ9
RmFsc2UpCiAgICAgICAgIHJldHVybiByZXR1cm5fY29kZSAhPSBzZWxmLkVSUk9SX0ZJTEVfSVNf
TUlTU0lORwogCisgICAgZGVmIF9icmFuY2hfZnJvbV9yZWYoc2VsZiwgcmVmKToKKyAgICAgICAg
cmV0dXJuIHJlZi5yZXBsYWNlKCdyZWZzL2hlYWRzLycsICcnKQorCisgICAgZGVmIF9jdXJyZW50
X2JyYW5jaChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2JyYW5jaF9mcm9tX3JlZihzZWxm
LnJ1bihbJ2dpdCcsICdzeW1ib2xpYy1yZWYnLCAnLXEnLCAnSEVBRCddLCBjd2Q9c2VsZi5jaGVj
a291dF9yb290KS5zdHJpcCgpKQorCisgICAgZGVmIF91cHN0cmVhbV9icmFuY2goc2VsZik6Cisg
ICAgICAgIGN1cnJlbnRfYnJhbmNoID0gc2VsZi5fY3VycmVudF9icmFuY2goKQorICAgICAgICBy
ZXR1cm4gc2VsZi5fYnJhbmNoX2Zyb21fcmVmKHNlbGYucmVhZF9naXRfY29uZmlnKCdicmFuY2gu
JXMubWVyZ2UnICUgY3VycmVudF9icmFuY2gsIGN3ZD1zZWxmLmNoZWNrb3V0X3Jvb3QpLnN0cmlw
KCkpCisKICAgICBkZWYgbWVyZ2VfYmFzZShzZWxmLCBnaXRfY29tbWl0KToKICAgICAgICAgaWYg
Z2l0X2NvbW1pdDoKLSAgICAgICAgICAgICMgU3BlY2lhbC1jYXNlIEhFQUQuLiB0byBtZWFuIHdv
cmtpbmctY29weSBjaGFuZ2VzIG9ubHkuCi0gICAgICAgICAgICBpZiBnaXRfY29tbWl0LnVwcGVy
KCkgPT0gJ0hFQUQuLic6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICdIRUFEJworICAgICAgICAg
ICAgIyBSZXdyaXRlIFVQU1RSRUFNIHRvIHRoZSB1cHN0cmVhbSBicmFuY2gKKyAgICAgICAgICAg
IGlmICdVUFNUUkVBTScgaW4gZ2l0X2NvbW1pdDoKKyAgICAgICAgICAgICAgICB1cHN0cmVhbSA9
IHNlbGYuX3Vwc3RyZWFtX2JyYW5jaCgpCisgICAgICAgICAgICAgICAgaWYgbm90IHVwc3RyZWFt
OgorICAgICAgICAgICAgICAgICAgICByYWlzZSBTY3JpcHRFcnJvcihtZXNzYWdlPSdObyB1cHN0
cmVhbS90cmFja2luZyBicmFuY2ggc2V0LicpCisgICAgICAgICAgICAgICAgZ2l0X2NvbW1pdCA9
IGdpdF9jb21taXQucmVwbGFjZSgnVVBTVFJFQU0nLCB1cHN0cmVhbSkKKworICAgICAgICAgICAg
IyBTcGVjaWFsLWNhc2UgPHJlZm5hbWU+Li4gdG8gaW5jbHVkZSB3b3JraW5nIGNvcHkgY2hhbmdl
cywgZS5nLiwgJ0hFQUQuLi4uJyBzaG93cyBvbmx5IHRoZSBkaWZmcyBmcm9tIEhFQUQuCisgICAg
ICAgICAgICBpZiBnaXRfY29tbWl0LmVuZHN3aXRoKCcuLi4uJyk6CisgICAgICAgICAgICAgICAg
cmV0dXJuIGdpdF9jb21taXRbOi00XQogCiAgICAgICAgICAgICBpZiAnLi4nIG5vdCBpbiBnaXRf
Y29tbWl0OgogICAgICAgICAgICAgICAgIGdpdF9jb21taXQgPSBnaXRfY29tbWl0ICsgIl4uLiIg
KyBnaXRfY29tbWl0CkBAIC0zNTAsOCArMzY3LDcgQEAgY2xhc3MgR2l0KFNDTSwgU1ZOUmVwb3Np
dG9yeSk6CiAgICAgICAgIHJldHVybiBzZWxmLnB1c2hfbG9jYWxfY29tbWl0c190b19zZXJ2ZXIo
dXNlcm5hbWU9dXNlcm5hbWUsIHBhc3N3b3JkPXBhc3N3b3JkKQogCiAgICAgZGVmIF9jb21taXRf
b25fYnJhbmNoKHNlbGYsIG1lc3NhZ2UsIGdpdF9jb21taXQsIHVzZXJuYW1lPU5vbmUsIHBhc3N3
b3JkPU5vbmUpOgotICAgICAgICBicmFuY2hfcmVmID0gc2VsZi5ydW4oWydnaXQnLCAnc3ltYm9s
aWMtcmVmJywgJ0hFQUQnXSkuc3RyaXAoKQotICAgICAgICBicmFuY2hfbmFtZSA9IGJyYW5jaF9y
ZWYucmVwbGFjZSgncmVmcy9oZWFkcy8nLCAnJykKKyAgICAgICAgYnJhbmNoX25hbWUgPSBzZWxm
Ll9jdXJyZW50X2JyYW5jaCgpCiAgICAgICAgIGNvbW1pdF9pZHMgPSBzZWxmLmNvbW1pdF9pZHNf
ZnJvbV9jb21taXRpc2hfYXJndW1lbnRzKFtnaXRfY29tbWl0XSkKIAogICAgICAgICAjIFdlIHdh
bnQgdG8gc3F1YXNoIGFsbCB0aGlzIGJyYW5jaCdzIGNvbW1pdHMgaW50byBvbmUgY29tbWl0IHdp
dGggdGhlIHByb3BlciBkZXNjcmlwdGlvbi4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY21fdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtX3VuaXR0ZXN0LnB5CmluZGV4IDRiODhj
M2RhMWJlYjY5OTdhNWY4ODY5ZTQyZmY2NDA0NWVlYjA1MDUuLjdjZTcxNGExOWJhYjY5OTk4MGU5
NmYzZGVlZGY0YjM0M2FiNzkyMDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL2NoZWNrb3V0L3NjbS9zY21fdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbV91bml0dGVzdC5weQpAQCAtMTE2Nyw5ICsx
MTY3LDEyIEBAIGNsYXNzIEdpdFNWTlRlc3QoU0NNVGVzdCk6CiAgICAgICAgIHdyaXRlX2ludG9f
ZmlsZV9hdF9wYXRoKCd0ZXN0X2ZpbGVfY29tbWl0MicsICdzdGlsbCBtb3JlIHRlc3QgY29udGVu
dCcpCiAgICAgICAgIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ2FkZCcsICd0ZXN0X2ZpbGVfY29tbWl0
MiddKQogCisgICAgZGVmIF9zZWNvbmRfbG9jYWxfY29tbWl0KHNlbGYpOgorICAgICAgICBzZWxm
Ll9sb2NhbF9jb21taXQoJ3Rlc3RfZmlsZV9jb21taXQyJywgJ3N0aWxsIG1vcmUgdGVzdCBjb250
ZW50JywgJ3lldCBhbm90aGVyIHRlc3QgY29tbWl0JykKKwogICAgIGRlZiBfdHdvX2xvY2FsX2Nv
bW1pdHMoc2VsZik6CiAgICAgICAgIHNlbGYuX29uZV9sb2NhbF9jb21taXQoKQotICAgICAgICBz
ZWxmLl9sb2NhbF9jb21taXQoJ3Rlc3RfZmlsZV9jb21taXQyJywgJ3N0aWxsIG1vcmUgdGVzdCBj
b250ZW50JywgJ3lldCBhbm90aGVyIHRlc3QgY29tbWl0JykKKyAgICAgICAgc2VsZi5fc2Vjb25k
X2xvY2FsX2NvbW10KCkKIAogICAgIGRlZiBfdGhyZWVfbG9jYWxfY29tbWl0cyhzZWxmKToKICAg
ICAgICAgc2VsZi5fbG9jYWxfY29tbWl0KCd0ZXN0X2ZpbGVfY29tbWl0MCcsICdtb3JlIHRlc3Qg
Y29udGVudCcsICdhbm90aGVyIHRlc3QgY29tbWl0JykKQEAgLTEyMTMsMTMgKzEyMTYsNiBAQCBj
bGFzcyBHaXRTVk5UZXN0KFNDTVRlc3QpOgogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2Vh
cmNoKHIndGVzdF9maWxlX2NvbW1pdDEnLCBzdm5fbG9nKSkKICAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQyJywgc3ZuX2xvZykpCiAKLSAgICBkZWYg
dGVzdF9jaGFuZ2VkX2ZpbGVzX3dvcmtpbmdfY29weV9vbmx5KHNlbGYpOgotICAgICAgICBzZWxm
Ll9vbmVfbG9jYWxfY29tbWl0X3BsdXNfd29ya2luZ19jb3B5X2NoYW5nZXMoKQotICAgICAgICBz
Y20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQotICAgICAgICBj
b21taXRfdGV4dCA9IHNjbS5jb21taXRfd2l0aF9tZXNzYWdlKCJhbm90aGVyIHRlc3QgY29tbWl0
IiwgZ2l0X2NvbW1pdD0iSEVBRC4uIikKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyZS5zZWFy
Y2gocid0ZXN0X2ZpbGVfY29tbWl0MScsIHN2bl9sb2cpKQotICAgICAgICBzZWxmLmFzc2VydFRy
dWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDInLCBzdm5fbG9nKSkKLQogICAgIGRlZiB0
ZXN0X2NvbW1pdF93aXRoX21lc3NhZ2Vfb25seV9sb2NhbF9jb21taXQoc2VsZik6CiAgICAgICAg
IHNlbGYuX29uZV9sb2NhbF9jb21taXQoKQogICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3Rl
bShzZWxmLmdpdF9jaGVja291dF9wYXRoKQpAQCAtMTI5MSw2ICsxMjg3LDExIEBAIGNsYXNzIEdp
dFNWTlRlc3QoU0NNVGVzdCk6CiAgICAgICAgICMgVGhlcmUncyBhIGNvbmZsaWN0IGJldHdlZW4g
dHJ1bmsgYW5kIHRoZSB0ZXN0X2ZpbGUyIG1vZGlmaWNhdGlvbi4KICAgICAgICAgc2VsZi5hc3Nl
cnRSYWlzZXMoU2NyaXB0RXJyb3IsIHNjbS5jb21taXRfd2l0aF9tZXNzYWdlLCAiYW5vdGhlciB0
ZXN0IGNvbW1pdCIsIGZvcmNlX3NxdWFzaD1UcnVlKQogCisgICAgZGVmIHRlc3RfdXBzdHJlYW1f
YnJhbmNoKHNlbGYpOgorICAgICAgICBydW5fY29tbWFuZChbJ2dpdCcsICdjaGVja291dCcsICct
dCcsICctYicsICdteS1icmFuY2gnXSkKKyAgICAgICAgcnVuX2NvbW1hbmQoWydnaXQnLCAnY2hl
Y2tvdXQnLCAnLXQnLCAnLWInLCAnbXktc2Vjb25kLWJyYW5jaCddKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFscyhzZWxmLnNjbS5fdXBzdHJlYW1fYnJhbmNoKCksICdteS1icmFuY2gnKQorCiAg
ICAgZGVmIHRlc3RfcmVtb3RlX2JyYW5jaF9yZWYoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc2VsZi5zY20ucmVtb3RlX2JyYW5jaF9yZWYoKSwgJ3JlZnMvcmVtb3Rlcy90cnVuaycp
CiAKQEAgLTEzNjAsNyArMTM2MSw3IEBAIGNsYXNzIEdpdFNWTlRlc3QoU0NNVGVzdCk6CiAgICAg
ZGVmIHRlc3RfY3JlYXRlX3BhdGNoX3dvcmtpbmdfY29weV9vbmx5KHNlbGYpOgogICAgICAgICBz
ZWxmLl9vbmVfbG9jYWxfY29tbWl0X3BsdXNfd29ya2luZ19jb3B5X2NoYW5nZXMoKQogICAgICAg
ICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQotICAgICAg
ICBwYXRjaCA9IHNjbS5jcmVhdGVfcGF0Y2goZ2l0X2NvbW1pdD0iSEVBRC4uIikKKyAgICAgICAg
cGF0Y2ggPSBzY20uY3JlYXRlX3BhdGNoKGdpdF9jb21taXQ9IkhFQUQuLi4uIikKICAgICAgICAg
c2VsZi5hc3NlcnRGYWxzZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MScsIHBhdGNoKSkK
ICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQyJywg
cGF0Y2gpKQogCkBAIC0xNDEzLDYgKzE0MTQsMTYgQEAgY2xhc3MgR2l0U1ZOVGVzdChTQ01UZXN0
KToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd0ZXN0X2ZpbGVfY29tbWl0MScgaW4gZmlsZXMp
CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgndGVzdF9maWxlX2NvbW1pdDInIGluIGZpbGVzKQog
CisgICAgICAgICMgd29ya2luZyBjb3B5IHNob3VsZCAqbm90KiBiZSBpbiB0aGUgbGlzdC4KKyAg
ICAgICAgZmlsZXMgPSBzY20uY2hhbmdlZF9maWxlcygndHJ1bmsuLicpCisgICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZSgndGVzdF9maWxlX2NvbW1pdDEnIGluIGZpbGVzKQorICAgICAgICBzZWxmLmFz
c2VydEZhbHNlKCd0ZXN0X2ZpbGVfY29tbWl0MicgaW4gZmlsZXMpCisKKyAgICAgICAgIyB3b3Jr
aW5nIGNvcHkgKnNob3VsZCogYmUgaW4gdGhlIGxpc3QuCisgICAgICAgIGZpbGVzID0gc2NtLmNo
YW5nZWRfZmlsZXMoJ3RydW5rLi4uLicpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgndGVzdF9m
aWxlX2NvbW1pdDEnIGluIGZpbGVzKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3Rlc3RfZmls
ZV9jb21taXQyJyBpbiBmaWxlcykKKwogICAgIGRlZiB0ZXN0X2NoYW5nZWRfZmlsZXNfZ2l0X2Nv
bW1pdChzZWxmKToKICAgICAgICAgc2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMoKQogICAgICAgICBz
Y20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQpAQCAtMTQzMSw3
ICsxNDQyLDcgQEAgY2xhc3MgR2l0U1ZOVGVzdChTQ01UZXN0KToKICAgICBkZWYgdGVzdF9jaGFu
Z2VkX2ZpbGVzX3dvcmtpbmdfY29weV9vbmx5KHNlbGYpOgogICAgICAgICBzZWxmLl9vbmVfbG9j
YWxfY29tbWl0X3BsdXNfd29ya2luZ19jb3B5X2NoYW5nZXMoKQogICAgICAgICBzY20gPSBkZXRl
Y3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQotICAgICAgICBmaWxlcyA9IHNj
bS5jaGFuZ2VkX2ZpbGVzKGdpdF9jb21taXQ9IkhFQUQuLiIpCisgICAgICAgIGZpbGVzID0gc2Nt
LmNoYW5nZWRfZmlsZXMoZ2l0X2NvbW1pdD0iSEVBRC4uLi4iKQogICAgICAgICBzZWxmLmFzc2Vy
dEZhbHNlKCd0ZXN0X2ZpbGVfY29tbWl0MScgaW4gZmlsZXMpCiAgICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZSgndGVzdF9maWxlX2NvbW1pdDInIGluIGZpbGVzKQogCkBAIC0xNDY2LDYgKzE0NzcsMjYg
QEAgY2xhc3MgR2l0U1ZOVGVzdChTQ01UZXN0KToKICAgICBkZWYgdGVzdF9jaGFuZ2VkX2ZpbGVz
X2Zvcl9yZXZpc2lvbihzZWxmKToKICAgICAgICAgc2VsZi5fc2hhcmVkX3Rlc3RfY2hhbmdlZF9m
aWxlc19mb3JfcmV2aXNpb24oKQogCisgICAgZGVmIHRlc3RfY2hhbmdlZF9maWxlc191cHN0cmVh
bShzZWxmKToKKyAgICAgICAgcnVuX2NvbW1hbmQoWydnaXQnLCAnY2hlY2tvdXQnLCAnLXQnLCAn
LWInLCAnbXktYnJhbmNoJ10pCisgICAgICAgIHNlbGYuX29uZV9sb2NhbF9jb21taXQoKQorICAg
ICAgICBydW5fY29tbWFuZChbJ2dpdCcsICdjaGVja291dCcsICctdCcsICctYicsICdteS1zZWNv
bmQtYnJhbmNoJ10pCisgICAgICAgIHNlbGYuX3NlY29uZF9sb2NhbF9jb21taXQoKQorICAgICAg
ICB3cml0ZV9pbnRvX2ZpbGVfYXRfcGF0aCgndGVzdF9maWxlX2NvbW1pdDAnLCAnbW9yZSB0ZXN0
IGNvbnRlbnQnKQorICAgICAgICBydW5fY29tbWFuZChbJ2dpdCcsICdhZGQnLCAndGVzdF9maWxl
X2NvbW1pdDAnXSkKKworICAgICAgICAjIGVxdWl2YWxlbnQgdG8gJ2dpdCBkaWZmIG15LWJyYW5j
aC4uSEVBRCwgc2hvdWxkIG5vdCBpbmNsdWRlIHdvcmtpbmcgY2hhbmdlcworICAgICAgICBmaWxl
cyA9IHNlbGYuc2NtLmNoYW5nZWRfZmlsZXMoZ2l0X2NvbW1pdD0nVVBTVFJFQU0uLicpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ3Rlc3RfZmlsZV9jb21taXQxJyBpbiBmaWxlcykKKyAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKCd0ZXN0X2ZpbGVfY29tbWl0MicgaW4gZmlsZXMpCisgICAgICAg
IHNlbGYuYXNzZXJ0RmFsc2UoJ3Rlc3RfZmlsZV9jb21taXQwJyBpbiBmaWxlcykKKworICAgICAg
ICAjIGVxdWl2YWxlbnQgdG8gJ2dpdCBkaWZmIG15LWJyYW5jaCcsICpzaG91bGQqIGluY2x1ZGUg
d29ya2luZyBjaGFuZ2VzCisgICAgICAgIGZpbGVzID0gc2VsZi5zY20uY2hhbmdlZF9maWxlcyhn
aXRfY29tbWl0PSdVUFNUUkVBTS4uLi4nKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCd0ZXN0
X2ZpbGVfY29tbWl0MScgaW4gZmlsZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgndGVzdF9m
aWxlX2NvbW1pdDInIGluIGZpbGVzKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3Rlc3RfZmls
ZV9jb21taXQwJyBpbiBmaWxlcykKKwogICAgIGRlZiB0ZXN0X2NvbnRlbnRzX2F0X3JldmlzaW9u
KHNlbGYpOgogICAgICAgICBzZWxmLl9zaGFyZWRfdGVzdF9jb250ZW50c19hdF9yZXZpc2lvbigp
CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9vcHRpb25z
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL29wdGlvbnMucHkKaW5kZXgg
MTE0MWRmN2U0NDFhNDdmNTA2MDZmYjdiN2RlZDY2NDAzN2M1MjU5ZS4uNGE0ZTJkNDU4NGI4ZDY4
YjNhYTE5YWJlODAwYmY0Nzg3NzI2NmI0ZCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90b29sL3N0ZXBzL29wdGlvbnMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL3N0ZXBzL29wdGlvbnMucHkKQEAgLTEsOSArMSw5IEBACiAjIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIyAKKyMKICMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKICMgbWV0OgotIyAKKyMKICMgICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKICMgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgogIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCkBAIC0xMyw3ICsxMyw3IEBACiAjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKICMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KICMgdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMgCisjCiAjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKICMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKICMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkBAIC00NCw3ICs0NCw3IEBAIGNs
YXNzIE9wdGlvbnMob2JqZWN0KToKICAgICBkZXNjcmlwdGlvbiA9IG1ha2Vfb3B0aW9uKCItbSIs
ICItLWRlc2NyaXB0aW9uIiwgYWN0aW9uPSJzdG9yZSIsIHR5cGU9InN0cmluZyIsIGRlc3Q9ImRl
c2NyaXB0aW9uIiwgaGVscD0iRGVzY3JpcHRpb24gc3RyaW5nIGZvciB0aGUgYXR0YWNobWVudCIp
CiAgICAgZW1haWwgPSBtYWtlX29wdGlvbigiLS1lbWFpbCIsIGFjdGlvbj0ic3RvcmUiLCB0eXBl
PSJzdHJpbmciLCBkZXN0PSJlbWFpbCIsIGhlbHA9IkVtYWlsIGFkZHJlc3MgdG8gdXNlIGluIENo
YW5nZUxvZ3MuIikKICAgICBmb3JjZV9jbGVhbiA9IG1ha2Vfb3B0aW9uKCItLWZvcmNlLWNsZWFu
IiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0iZm9yY2VfY2xlYW4iLCBkZWZhdWx0PUZhbHNl
LCBoZWxwPSJDbGVhbiB3b3JraW5nIGRpcmVjdG9yeSBiZWZvcmUgYXBwbHlpbmcgcGF0Y2hlcyAo
cmVtb3ZlcyBsb2NhbCBjaGFuZ2VzIGFuZCBjb21taXRzKSIpCi0gICAgZ2l0X2NvbW1pdCA9IG1h
a2Vfb3B0aW9uKCItZyIsICItLWdpdC1jb21taXQiLCBhY3Rpb249InN0b3JlIiwgZGVzdD0iZ2l0
X2NvbW1pdCIsIGhlbHA9Ik9wZXJhdGUgb24gYSBsb2NhbCBjb21taXQuIElmIGEgcmFuZ2UsIHRo
ZSBjb21taXRzIGFyZSBzcXVhc2hlZCBpbnRvIG9uZS4gSEVBRC4uIG9wZXJhdGVzIG9uIHdvcmtp
bmcgY29weSBjaGFuZ2VzIG9ubHkuIikKKyAgICBnaXRfY29tbWl0ID0gbWFrZV9vcHRpb24oIi1n
IiwgIi0tZ2l0LWNvbW1pdCIsIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJnaXRfY29tbWl0IiwgaGVs
cD0iT3BlcmF0ZSBvbiBhIGxvY2FsIGNvbW1pdC4gSWYgYSByYW5nZSwgdGhlIGNvbW1pdHMgYXJl
IHNxdWFzaGVkIGludG8gb25lLiA8cmVmPi4uIGluY2x1ZGVzIHRoZSB3b3JraW5nIGNvcHkgY2hh
bmdlcy4gVVBTVFJFQU0gY2FuIGJlIHVzZWQgZm9yIHRoZSB1cHN0cmVhbS90cmFja2luZyBicmFu
Y2guIikKICAgICBsb2NhbF9jb21taXQgPSBtYWtlX29wdGlvbigiLS1sb2NhbC1jb21taXQiLCBh
Y3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJsb2NhbF9jb21taXQiLCBkZWZhdWx0PUZhbHNlLCBo
ZWxwPSJNYWtlIGEgbG9jYWwgY29tbWl0IGZvciBlYWNoIGFwcGxpZWQgcGF0Y2giKQogICAgIG5v
bl9pbnRlcmFjdGl2ZSA9IG1ha2Vfb3B0aW9uKCItLW5vbi1pbnRlcmFjdGl2ZSIsIGFjdGlvbj0i
c3RvcmVfdHJ1ZSIsIGRlc3Q9Im5vbl9pbnRlcmFjdGl2ZSIsIGRlZmF1bHQ9RmFsc2UsIGhlbHA9
Ik5ldmVyIHByb21wdCB0aGUgdXNlciwgZmFpbCBhcyBmYXN0IGFzIHBvc3NpYmxlLiIpCiAgICAg
b2Jzb2xldGVfcGF0Y2hlcyA9IG1ha2Vfb3B0aW9uKCItLW5vLW9ic29sZXRlIiwgYWN0aW9uPSJz
dG9yZV9mYWxzZSIsIGRlc3Q9Im9ic29sZXRlX3BhdGNoZXMiLCBkZWZhdWx0PVRydWUsIGhlbHA9
IkRvIG5vdCBvYnNvbGV0ZSBvbGQgcGF0Y2hlcyBiZWZvcmUgcG9zdGluZyB0aGlzIG9uZS4iKQo=
</data>
<flag name="review"
          id="133469"
          type_id="1"
          status="+"
          setter="ojan"
    />
          </attachment>
      

    </bug>

</bugzilla>