<?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>48275</bug_id>
          
          <creation_ts>2010-10-25 16:20:24 -0700</creation_ts>
          <short_desc>Teach webkit-patch how to read credentials from the environment</short_desc>
          <delta_ts>2010-10-26 16:15:41 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</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>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>abarth</cc>
    
    <cc>cjerdonek</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>299168</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-25 16:20:24 -0700</bug_when>
    <thetext>Teach webkit-patch how to read credentials from the environment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299174</commentid>
    <comment_count>1</comment_count>
      <attachid>71812</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-25 16:24:39 -0700</bug_when>
    <thetext>Created attachment 71812
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299180</commentid>
    <comment_count>2</comment_count>
      <attachid>71813</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-25 16:29:18 -0700</bug_when>
    <thetext>Created attachment 71813
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299184</commentid>
    <comment_count>3</comment_count>
      <attachid>71813</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-25 16:38:56 -0700</bug_when>
    <thetext>Comment on attachment 71813
Patch

ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299189</commentid>
    <comment_count>4</comment_count>
      <attachid>71813</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-10-25 16:47:47 -0700</bug_when>
    <thetext>Comment on attachment 71813
Patch

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

I&apos;m a bit scared of people putting this in an environment variable.  I think it&apos;s more common for environment variables to be leaked accidentally (e.g., build-webkit shows your env or crash dumps include your env).

It might be better to read a named file on disk or try to read the config file directly from ~/.subversion/auth.

&gt; WebKitTools/Scripts/webkitpy/common/net/credentials.py:128
&gt; +    def _credentials_from_environment(self):
&gt; +        return (self._read_environ(&quot;username&quot;), self._read_environ(&quot;password&quot;))

I&apos;m not convinced _read_environ and _environ_prefix buys you much over WEBKIT_BUGZILLA_USERNAME and WEBKIT_BUGZILLA_PASSWORD.  It does make grepping harder.

&gt; WebKitTools/Scripts/webkitpy/common/net/credentials.py:144
&gt; +            (username, password) = self._credentials_from_git()
&gt;          if not username or not password:
&gt;              (username, password) = self._credentials_from_keychain(username)

Nit: don&apos;t need () on the left side of =

&gt; WebKitTools/Scripts/webkitpy/common/net/credentials_unittest.py:132
&gt;          os.rmdir(temp_dir_path)

Do we leak this dir if the test fails?

&gt; WebKitTools/Scripts/webkitpy/common/net/credentials_unittest.py:153
&gt; +        # FIXME: Seems &apos;with&apos; would work better than a try/finally here.

How would &apos;with&apos; ensure that os.rmdir is called?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299190</commentid>
    <comment_count>5</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-10-25 16:48:06 -0700</bug_when>
    <thetext>err, didn&apos;t mean to clear abarth&apos;s r+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299248</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-25 19:44:28 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 71813 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=71813&amp;action=review
&gt; 
&gt; I&apos;m a bit scared of people putting this in an environment variable.  I think it&apos;s more common for environment variables to be leaked accidentally (e.g., build-webkit shows your env or crash dumps include your env).

Crash dumps (at least on mac) do not contain your environment.  It would be concerning if they did. :)

I see your concern, but I think for the current design this is simplest.

&gt; It might be better to read a named file on disk or try to read the config file directly from ~/.subversion/auth.

well, these are bugzilla credentials, which are different than your svn credentials.

&gt; &gt; WebKitTools/Scripts/webkitpy/common/net/credentials.py:128
&gt; &gt; +    def _credentials_from_environment(self):
&gt; &gt; +        return (self._read_environ(&quot;username&quot;), self._read_environ(&quot;password&quot;))
&gt; 
&gt; I&apos;m not convinced _read_environ and _environ_prefix buys you much over WEBKIT_BUGZILLA_USERNAME and WEBKIT_BUGZILLA_PASSWORD.  It does make grepping harder.

I can see that.  The goal of all this code in webkitpy was not to be unecessarily webkit specific.  That goal may be a bad idea, but it&apos;s what I&apos;ve been going with for now.

&gt; &gt; WebKitTools/Scripts/webkitpy/common/net/credentials.py:144
&gt; &gt; +            (username, password) = self._credentials_from_git()
&gt; &gt;          if not username or not password:
&gt; &gt;              (username, password) = self._credentials_from_keychain(username)
&gt; 
&gt; Nit: don&apos;t need () on the left side of =

Will fix.

&gt; &gt; WebKitTools/Scripts/webkitpy/common/net/credentials_unittest.py:132
&gt; &gt;          os.rmdir(temp_dir_path)
&gt; 
&gt; Do we leak this dir if the test fails?

Possibly.  Not sure.  I didn&apos;t edit the test.

&gt; &gt; WebKitTools/Scripts/webkitpy/common/net/credentials_unittest.py:153
&gt; &gt; +        # FIXME: Seems &apos;with&apos; would work better than a try/finally here.
&gt; 
&gt; How would &apos;with&apos; ensure that os.rmdir is called?

Well, one can certainly use &apos;with&apos; with TemporaryFile, maybe not with a temporary directory.  the __entered__ and __exited__ do the right thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299250</commentid>
    <comment_count>7</comment_count>
      <attachid>71835</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-25 19:46:59 -0700</bug_when>
    <thetext>Created attachment 71835
Fixed Tony&apos;s nit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299521</commentid>
    <comment_count>8</comment_count>
      <attachid>71835</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-10-26 09:35:49 -0700</bug_when>
    <thetext>Comment on attachment 71835
Fixed Tony&apos;s nit.

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

&gt; WebKitTools/Scripts/webkitpy/common/net/credentials_unittest.py:132
&gt;          os.rmdir(temp_dir_path)

While you&apos;re here, can you put this in a try/finally to make sure that this gets cleaned up even on failure?

&gt; WebKitTools/Scripts/webkitpy/common/net/credentials_unittest.py:153
&gt; +        # FIXME: Seems &apos;with&apos; would work better than a try/finally here.

Can you remove this comment?  The objects in tempfile that depend on scope seem to be specific to files, not directories.  I don&apos;t think &apos;with&apos; would work here.  Alternately, if there is a way to get &apos;with&apos; to delete the directory, even on failure, then go ahead and make the change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299595</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-26 10:58:27 -0700</bug_when>
    <thetext>I just made the class I wanted all along:

class _TemporaryDirectory(object):
    def __init__(self, **kwargs):
        self._kwargs = kwargs
        self._directory_path = None

    def __enter__(self):
        self._directory_path = tempfile.mkdtemp(**self._kwargs)
        return self._directory_path

    def __exit__(self, type, value, traceback):
        os.rmdir(self._directory_path)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299627</commentid>
    <comment_count>10</comment_count>
      <attachid>71916</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-26 11:23:34 -0700</bug_when>
    <thetext>Created attachment 71916
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299753</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-26 13:18:54 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 71916:

fast/dom/onerror-img.html

Please file bugs against the tests.  The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299756</commentid>
    <comment_count>12</comment_count>
      <attachid>71916</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-26 13:20:00 -0700</bug_when>
    <thetext>Comment on attachment 71916
Patch for landing

Clearing flags on attachment: 71916

Committed r70562: &lt;http://trac.webkit.org/changeset/70562&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299757</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-26 13:20:07 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299874</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-26 16:15:41 -0700</bug_when>
    <thetext>Committed r70586: &lt;http://trac.webkit.org/changeset/70586&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71812</attachid>
            <date>2010-10-25 16:24:39 -0700</date>
            <delta_ts>2010-10-25 16:29:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48275-20101025162437.patch</filename>
            <type>text/plain</type>
            <size>7785</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAwMzQyZmEzM2I2MGNiMTY2ODcwMTA4NWFjM2ZkODg3NzE5MTI5YWMxLi5hNjgxZmFm
ZTE5MTMzZGU2MmYxN2ExYjIwZjFjNmJlYTY4YmU4ODViIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMTAtMTAtMjUgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlYWNoIHdlYmtpdC1wYXRjaCBo
b3cgdG8gcmVhZCBjcmVkZW50aWFscyBmcm9tIHRoZSBlbnZpcm9ubWVudAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDgyNzUKKworICAgICAgICBUaGlz
IG1ha2VzIGl0IHBvc3NpYmxlIGZvciBzdm4gdXNlcnMgdG8gaGF2ZSB0aGVpciBidWd6aWxsYSBj
cmVkZW50aWFscworICAgICAgICBzdG9yZWQgaW4gdGhlaXIgZW52aXJvbm1lbnQgaW5zdGVhZCBv
ZiB0eXBpbmcgdGhlbSBldmVyeSB0aW1lLgorCisgICAgICAgIFdlIG5lZWQgdGhpcyBmb3IgbWFr
aW5nIGl0IGVhc3kgdG8gcnVuIHRoZSB3aW4tZXdzIGJvdCAod2hpY2ggY3VycmVudGx5CisgICAg
ICAgIHVzZXMgc3ZuIGluc3RlYWQgb2YgZ2l0KS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvY29tbW9uL25ldC9jcmVkZW50aWFscy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9uZXQvY3JlZGVudGlhbHNfdW5pdHRlc3QucHk6CisKIDIwMTAtMTAtMjUgIEpvaG5u
eSBEaW5nICA8am5kQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBUb255IENo
YW5nLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0
L2NyZWRlbnRpYWxzLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0
L2NyZWRlbnRpYWxzLnB5CmluZGV4IDFjM2U2YzBlYTQxMGUwZTQ0MThmODg5MGIwNjA5MTc5Mjkw
YjJiM2MuLjlhZmVmYzRmYTA2N2ZmMTFjNmVlYmM5MzQ1YTA0MDkzMDUzM2MxMWMgMTAwNjQ0Ci0t
LSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9jcmVkZW50aWFscy5w
eQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvY3JlZGVudGlh
bHMucHkKQEAgLTQ4LDYgKzQ4LDcgQEAgZXhjZXB0IEltcG9ydEVycm9yOgogCiAKIGNsYXNzIENy
ZWRlbnRpYWxzKG9iamVjdCk6CisgICAgX2Vudmlyb25fcHJlZml4ID0gIndlYmtpdF9idWd6aWxs
YV8iCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwgZ2l0X3ByZWZpeD1Ob25lLCBleGVj
dXRpdmU9Tm9uZSwgY3dkPW9zLmdldGN3ZCgpLAogICAgICAgICAgICAgICAgICBrZXlyaW5nPWtl
eXJpbmcpOgpAQCAtNTgsOCArNTksMTcgQEAgY2xhc3MgQ3JlZGVudGlhbHMob2JqZWN0KToKICAg
ICAgICAgc2VsZi5fa2V5cmluZyA9IGtleXJpbmcKIAogICAgIGRlZiBfY3JlZGVudGlhbHNfZnJv
bV9naXQoc2VsZik6Ci0gICAgICAgIHJldHVybiBbR2l0LnJlYWRfZ2l0X2NvbmZpZyhzZWxmLmdp
dF9wcmVmaXggKyAidXNlcm5hbWUiKSwKLSAgICAgICAgICAgICAgICBHaXQucmVhZF9naXRfY29u
ZmlnKHNlbGYuZ2l0X3ByZWZpeCArICJwYXNzd29yZCIpXQorICAgICAgICBpZiBub3QgR2l0Lmlu
X3dvcmtpbmdfZGlyZWN0b3J5KHNlbGYuY3dkKToKKyAgICAgICAgICAgIHJldHVybiAoTm9uZSwg
Tm9uZSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIChHaXQucmVhZF9naXRfY29u
ZmlnKHNlbGYuZ2l0X3ByZWZpeCArICJ1c2VybmFtZSIpLAorICAgICAgICAgICAgICAgICAgICBH
aXQucmVhZF9naXRfY29uZmlnKHNlbGYuZ2l0X3ByZWZpeCArICJwYXNzd29yZCIpKQorICAgICAg
ICBleGNlcHQgT1NFcnJvciwgZToKKyAgICAgICAgICAgICMgQ2F0Y2ggYW5kIGlnbm9yZSBPU0Vy
cm9yIGV4Y2VwdGlvbnMgc3VjaCBhcyAibm8gc3VjaCBmaWxlCisgICAgICAgICAgICAjIG9yIGRp
cmVjdG9yeSIgKE9TRXJyb3IgZXJybm8gMiksIHdoaWNoIGltcGx5IHRoYXQgdGhlIEdpdAorICAg
ICAgICAgICAgIyBjb21tYW5kIGNhbm5vdCBiZSBmb3VuZC9pcyBub3QgaW5zdGFsbGVkLgorICAg
ICAgICAgICAgcGFzcworICAgICAgICByZXR1cm4gKE5vbmUsIE5vbmUpCiAKICAgICBkZWYgX2tl
eWNoYWluX3ZhbHVlX3dpdGhfbGFiZWwoc2VsZiwgbGFiZWwsIHNvdXJjZV90ZXh0KToKICAgICAg
ICAgbWF0Y2ggPSByZS5zZWFyY2goIiVzXCIoP1A8dmFsdWU+LispXCIiICUgbGFiZWwsCkBAIC0x
MTAsMTkgKzEyMCwyNiBAQCBjbGFzcyBDcmVkZW50aWFscyhvYmplY3QpOgogICAgICAgICBlbHNl
OgogICAgICAgICAgICAgcmV0dXJuIFtOb25lLCBOb25lXQogCi0gICAgZGVmIHJlYWRfY3JlZGVu
dGlhbHMoc2VsZik6Ci0gICAgICAgIHVzZXJuYW1lID0gTm9uZQotICAgICAgICBwYXNzd29yZCA9
IE5vbmUKKyAgICBkZWYgX3JlYWRfZW52aXJvbihzZWxmLCBrZXkpOgorICAgICAgICBlbnZpcm9u
X2tleSA9IHNlbGYuX2Vudmlyb25fcHJlZml4ICsga2V5CisgICAgICAgIHJldHVybiBvcy5lbnZp
cm9uLmdldChlbnZpcm9uX2tleS51cHBlcigpKQogCi0gICAgICAgIHRyeToKLSAgICAgICAgICAg
IGlmIEdpdC5pbl93b3JraW5nX2RpcmVjdG9yeShzZWxmLmN3ZCk6Ci0gICAgICAgICAgICAgICAg
KHVzZXJuYW1lLCBwYXNzd29yZCkgPSBzZWxmLl9jcmVkZW50aWFsc19mcm9tX2dpdCgpCi0gICAg
ICAgIGV4Y2VwdCBPU0Vycm9yLCBlOgotICAgICAgICAgICAgIyBDYXRjaCBhbmQgaWdub3JlIE9T
RXJyb3IgZXhjZXB0aW9ucyBzdWNoIGFzICJubyBzdWNoIGZpbGUgCi0gICAgICAgICAgICAjIG9y
IGRpcmVjdG9yeSIgKE9TRXJyb3IgZXJybm8gMiksIHdoaWNoIGltcGx5IHRoYXQgdGhlIEdpdAot
ICAgICAgICAgICAgIyBjb21tYW5kIGNhbm5vdCBiZSBmb3VuZC9pcyBub3QgaW5zdGFsbGVkLgot
ICAgICAgICAgICAgcGFzcworICAgIGRlZiBfY3JlZGVudGlhbHNfZnJvbV9lbnZpcm9ubWVudChz
ZWxmKToKKyAgICAgICAgcmV0dXJuIChzZWxmLl9yZWFkX2Vudmlyb24oInVzZXJuYW1lIiksIHNl
bGYuX3JlYWRfZW52aXJvbigicGFzc3dvcmQiKSkKKworICAgIGRlZiBfb2ZmZXJfdG9fc3RvcmVf
Y3JlZGVudGlhbHNfaW5fa2V5cmluZyhzZWxmLCB1c2VybmFtZSwgcGFzc3dvcmQpOgorICAgICAg
ICBpZiBub3Qgc2VsZi5fa2V5cmluZzoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBu
b3QgVXNlcigpLmNvbmZpcm0oIlN0b3JlIHBhc3N3b3JkIGluIHN5c3RlbSBrZXlyaW5nPyIsIFVz
ZXIuREVGQVVMVF9OTyk6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgc2VsZi5fa2V5cmlu
Zy5zZXRfcGFzc3dvcmQoc2VsZi5ob3N0LCB1c2VybmFtZSwgcGFzc3dvcmQpCiAKKyAgICBkZWYg
cmVhZF9jcmVkZW50aWFscyhzZWxmKToKKyAgICAgICAgdXNlcm5hbWUsIHBhc3N3b3JkID0gc2Vs
Zi5fY3JlZGVudGlhbHNfZnJvbV9lbnZpcm9ubWVudCgpCisgICAgICAgICMgRklYTUU6IFdlIGRv
bid0IGN1cnJlbnRseSBzdXBwb3J0IHB1bGxpbmcgdGhlIHVzZXJuYW1lIGZyb20gb25lCisgICAg
ICAgICMgc291cmNlIGFuZCB0aGUgcGFzc3dvcmQgZnJvbSBhIHNlcGFyYXRlIHNvdXJjZS4KKyAg
ICAgICAgaWYgbm90IHVzZXJuYW1lIG9yIG5vdCBwYXNzd29yZDoKKyAgICAgICAgICAgICh1c2Vy
bmFtZSwgcGFzc3dvcmQpID0gc2VsZi5fY3JlZGVudGlhbHNfZnJvbV9naXQoKQogICAgICAgICBp
ZiBub3QgdXNlcm5hbWUgb3Igbm90IHBhc3N3b3JkOgogICAgICAgICAgICAgKHVzZXJuYW1lLCBw
YXNzd29yZCkgPSBzZWxmLl9jcmVkZW50aWFsc19mcm9tX2tleWNoYWluKHVzZXJuYW1lKQogCkBA
IC0xMzIsMTMgKzE0OSw3IEBAIGNsYXNzIENyZWRlbnRpYWxzKG9iamVjdCk6CiAgICAgICAgIGlm
IG5vdCB1c2VybmFtZToKICAgICAgICAgICAgIHVzZXJuYW1lID0gVXNlci5wcm9tcHQoIiVzIGxv
Z2luOiAiICUgc2VsZi5ob3N0KQogICAgICAgICBpZiBub3QgcGFzc3dvcmQ6Ci0gICAgICAgICAg
ICBwYXNzd29yZCA9IGdldHBhc3MuZ2V0cGFzcygiJXMgcGFzc3dvcmQgZm9yICVzOiAiICUgKHNl
bGYuaG9zdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdXNlcm5hbWUpKQorICAgICAgICAgICAgcGFzc3dvcmQgPSBnZXRw
YXNzLmdldHBhc3MoIiVzIHBhc3N3b3JkIGZvciAlczogIiAlIChzZWxmLmhvc3QsIHVzZXJuYW1l
KSkKKyAgICAgICAgICAgIHNlbGYuX29mZmVyX3RvX3N0b3JlX2NyZWRlbnRpYWxzX2luX2tleXJp
bmcodXNlcm5hbWUsIHBhc3N3b3JkKQogCi0gICAgICAgICAgICBpZiBzZWxmLl9rZXlyaW5nOgot
ICAgICAgICAgICAgICAgIHN0b3JlX3Bhc3N3b3JkID0gVXNlcigpLmNvbmZpcm0oCi0gICAgICAg
ICAgICAgICAgICAgICJTdG9yZSBwYXNzd29yZCBpbiBzeXN0ZW0ga2V5cmluZz8iLCBVc2VyLkRF
RkFVTFRfTk8pCi0gICAgICAgICAgICAgICAgaWYgc3RvcmVfcGFzc3dvcmQ6Ci0gICAgICAgICAg
ICAgICAgICAgIHNlbGYuX2tleXJpbmcuc2V0X3Bhc3N3b3JkKHNlbGYuaG9zdCwgdXNlcm5hbWUs
IHBhc3N3b3JkKQotCi0gICAgICAgIHJldHVybiBbdXNlcm5hbWUsIHBhc3N3b3JkXQorICAgICAg
ICByZXR1cm4gKHVzZXJuYW1lLCBwYXNzd29yZCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9jcmVkZW50aWFsc191bml0dGVzdC5weSBiL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9jcmVkZW50aWFsc191bml0dGVzdC5w
eQppbmRleCBkMzAyOTFiNGM3ZTA3YWFhODgyNmI4YjQ5YmE3ZWMyNTc5MjJlNGM0Li41NGE2YjUw
NWQ4YWYxMGY2NzE2OGFiNTQzN2U4MmM0YTY2M2MxMjQ3IDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvY3JlZGVudGlhbHNfdW5pdHRlc3QucHkKKysr
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2NyZWRlbnRpYWxzX3Vu
aXR0ZXN0LnB5CkBAIC0xMDEsMTYgKzEwMSwzNCBAQCBwYXNzd29yZDogIlNFQ1JFVFNBVUNFIgog
ICAgICAgICBzZWxmLl9hc3NlcnRfc2VjdXJpdHlfY2FsbCgpCiAgICAgICAgIHNlbGYuX2Fzc2Vy
dF9zZWN1cml0eV9jYWxsKHVzZXJuYW1lPSJmb28iKQogCisgICAgZGVmIHRlc3RfY3JlZGVudGlh
bHNfZnJvbV9lbnZpcm9ubWVudChzZWxmKToKKyAgICAgICAgZXhlY3V0aXZlX21vY2sgPSBNb2Nr
KCkKKyAgICAgICAgY3JlZGVudGlhbHMgPSBDcmVkZW50aWFscygiZXhhbXBsZS5jb20iLCBleGVj
dXRpdmU9ZXhlY3V0aXZlX21vY2spCisKKyAgICAgICAgc2F2ZWRfZW52aXJvbiA9IG9zLmVudmly
b24uY29weSgpCisgICAgICAgIG9zLmVudmlyb25bJ1dFQktJVF9CVUdaSUxMQV9VU0VSTkFNRSdd
ID0gImZvbyIKKyAgICAgICAgb3MuZW52aXJvblsnV0VCS0lUX0JVR1pJTExBX1BBU1NXT1JEJ10g
PSAiYmFyIgorICAgICAgICB1c2VybmFtZSwgcGFzc3dvcmQgPSBjcmVkZW50aWFscy5fY3JlZGVu
dGlhbHNfZnJvbV9lbnZpcm9ubWVudCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHVzZXJu
YW1lLCAiZm9vIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocGFzc3dvcmQsICJiYXIiKQor
ICAgICAgICBvcy5lbnZpcm9uID0gc2F2ZWRfZW52aXJvbgorCiAgICAgZGVmIHRlc3RfcmVhZF9j
cmVkZW50aWFsc193aXRob3V0X2dpdF9yZXBvKHNlbGYpOgogICAgICAgICBjbGFzcyBGYWtlQ3Jl
ZGVudGlhbHMoQ3JlZGVudGlhbHMpOgogICAgICAgICAgICAgZGVmIF9pc19tYWNfb3NfeChzZWxm
KToKICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCiAgICAgICAgICAgICBkZWYgX2NyZWRl
bnRpYWxzX2Zyb21fa2V5Y2hhaW4oc2VsZiwgdXNlcm5hbWUpOgotICAgICAgICAgICAgICAgIHJl
dHVybiBbInRlc3RAd2Via2l0Lm9yZyIsICJTRUNSRVRTQVVDRSJdCisgICAgICAgICAgICAgICAg
cmV0dXJuICgidGVzdEB3ZWJraXQub3JnIiwgIlNFQ1JFVFNBVUNFIikKKworICAgICAgICAgICAg
ZGVmIF9jcmVkZW50aWFsc19mcm9tX2Vudmlyb25tZW50KHNlbGYpOgorICAgICAgICAgICAgICAg
IHJldHVybiAoTm9uZSwgTm9uZSkKIAogICAgICAgICB0ZW1wX2Rpcl9wYXRoID0gdGVtcGZpbGUu
bWtkdGVtcChzdWZmaXg9Im5vdF9hX2dpdF9yZXBvIikKICAgICAgICAgY3JlZGVudGlhbHMgPSBG
YWtlQ3JlZGVudGlhbHMoImJ1Z3Mud2Via2l0Lm9yZyIsIGN3ZD10ZW1wX2Rpcl9wYXRoKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGNyZWRlbnRpYWxzLnJlYWRfY3JlZGVudGlhbHMoKSwgWyJ0
ZXN0QHdlYmtpdC5vcmciLCAiU0VDUkVUU0FVQ0UiXSkKKyAgICAgICAgIyBGSVhNRTogVXNpbmcg
cmVhZF9jcmVkZW50aWFscyBoZXJlIHNlZW1zIHRvbyBicm9hZCBhcyBoaWdoZXItcHJpb3JpdHkK
KyAgICAgICAgIyBjcmVkZW50aWFsIHNvdXJjZSBjb3VsZCBiZSBlZmZlY3RlZCBieSB0aGUgdXNl
cidzIGVudmlyb25tZW50LgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNyZWRlbnRpYWxzLnJl
YWRfY3JlZGVudGlhbHMoKSwgKCJ0ZXN0QHdlYmtpdC5vcmciLCAiU0VDUkVUU0FVQ0UiKSkKICAg
ICAgICAgb3Mucm1kaXIodGVtcF9kaXJfcGF0aCkKIAogICAgIGRlZiB0ZXN0X2tleXJpbmdfd2l0
aG91dF9naXRfcmVwbyhzZWxmKToKQEAgLTEyOSwxMiArMTQ3LDE5IEBAIHBhc3N3b3JkOiAiU0VD
UkVUU0FVQ0UiCiAgICAgICAgICAgICBkZWYgX2NyZWRlbnRpYWxzX2Zyb21fa2V5Y2hhaW4oc2Vs
ZiwgdXNlcm5hbWUpOgogICAgICAgICAgICAgICAgIHJldHVybiAoInRlc3RAd2Via2l0Lm9yZyIs
IE5vbmUpCiAKKyAgICAgICAgICAgIGRlZiBfY3JlZGVudGlhbHNfZnJvbV9lbnZpcm9ubWVudChz
ZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gKE5vbmUsIE5vbmUpCisKKyAgICAgICAgIyBG
SVhNRTogU2VlbXMgJ3dpdGgnIHdvdWxkIHdvcmsgYmV0dGVyIHRoYW4gYSB0cnkvZmluYWxseSBo
ZXJlLgogICAgICAgICB0ZW1wX2Rpcl9wYXRoID0gdGVtcGZpbGUubWtkdGVtcChzdWZmaXg9Im5v
dF9hX2dpdF9yZXBvIikKICAgICAgICAgY3JlZGVudGlhbHMgPSBGYWtlQ3JlZGVudGlhbHModGVt
cF9kaXJfcGF0aCkKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChj
cmVkZW50aWFscy5yZWFkX2NyZWRlbnRpYWxzKCksIFsidGVzdEB3ZWJraXQub3JnIiwgIk5PTU5P
TU5PTSJdKQorICAgICAgICAgICAgIyBGSVhNRTogVXNpbmcgcmVhZF9jcmVkZW50aWFscyBoZXJl
IHNlZW1zIHRvbyBicm9hZCBhcyBoaWdoZXItcHJpb3JpdHkKKyAgICAgICAgICAgICMgY3JlZGVu
dGlhbCBzb3VyY2UgY291bGQgYmUgZWZmZWN0ZWQgYnkgdGhlIHVzZXIncyBlbnZpcm9ubWVudC4K
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3JlZGVudGlhbHMucmVhZF9jcmVkZW50aWFs
cygpLCAoInRlc3RAd2Via2l0Lm9yZyIsICJOT01OT01OT00iKSkKICAgICAgICAgZmluYWxseToK
ICAgICAgICAgICAgIG9zLnJtZGlyKHRlbXBfZGlyX3BhdGgpCiAKKwogaWYgX19uYW1lX18gPT0g
J19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71813</attachid>
            <date>2010-10-25 16:29:18 -0700</date>
            <delta_ts>2010-10-25 19:46:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48275-20101025162916.patch</filename>
            <type>text/plain</type>
            <size>7785</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAwMzQyZmEzM2I2MGNiMTY2ODcwMTA4NWFjM2ZkODg3NzE5MTI5YWMxLi5hNjgxZmFm
ZTE5MTMzZGU2MmYxN2ExYjIwZjFjNmJlYTY4YmU4ODViIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMTAtMTAtMjUgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlYWNoIHdlYmtpdC1wYXRjaCBo
b3cgdG8gcmVhZCBjcmVkZW50aWFscyBmcm9tIHRoZSBlbnZpcm9ubWVudAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDgyNzUKKworICAgICAgICBUaGlz
IG1ha2VzIGl0IHBvc3NpYmxlIGZvciBzdm4gdXNlcnMgdG8gaGF2ZSB0aGVpciBidWd6aWxsYSBj
cmVkZW50aWFscworICAgICAgICBzdG9yZWQgaW4gdGhlaXIgZW52aXJvbm1lbnQgaW5zdGVhZCBv
ZiB0eXBpbmcgdGhlbSBldmVyeSB0aW1lLgorCisgICAgICAgIFdlIG5lZWQgdGhpcyBmb3IgbWFr
aW5nIGl0IGVhc3kgdG8gcnVuIHRoZSB3aW4tZXdzIGJvdCAod2hpY2ggY3VycmVudGx5CisgICAg
ICAgIHVzZXMgc3ZuIGluc3RlYWQgb2YgZ2l0KS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvY29tbW9uL25ldC9jcmVkZW50aWFscy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9uZXQvY3JlZGVudGlhbHNfdW5pdHRlc3QucHk6CisKIDIwMTAtMTAtMjUgIEpvaG5u
eSBEaW5nICA8am5kQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBUb255IENo
YW5nLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0
L2NyZWRlbnRpYWxzLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0
L2NyZWRlbnRpYWxzLnB5CmluZGV4IDFjM2U2YzBlYTQxMGUwZTQ0MThmODg5MGIwNjA5MTc5Mjkw
YjJiM2MuLjlhZmVmYzRmYTA2N2ZmMTFjNmVlYmM5MzQ1YTA0MDkzMDUzM2MxMWMgMTAwNjQ0Ci0t
LSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9jcmVkZW50aWFscy5w
eQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvY3JlZGVudGlh
bHMucHkKQEAgLTQ4LDYgKzQ4LDcgQEAgZXhjZXB0IEltcG9ydEVycm9yOgogCiAKIGNsYXNzIENy
ZWRlbnRpYWxzKG9iamVjdCk6CisgICAgX2Vudmlyb25fcHJlZml4ID0gIndlYmtpdF9idWd6aWxs
YV8iCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwgZ2l0X3ByZWZpeD1Ob25lLCBleGVj
dXRpdmU9Tm9uZSwgY3dkPW9zLmdldGN3ZCgpLAogICAgICAgICAgICAgICAgICBrZXlyaW5nPWtl
eXJpbmcpOgpAQCAtNTgsOCArNTksMTcgQEAgY2xhc3MgQ3JlZGVudGlhbHMob2JqZWN0KToKICAg
ICAgICAgc2VsZi5fa2V5cmluZyA9IGtleXJpbmcKIAogICAgIGRlZiBfY3JlZGVudGlhbHNfZnJv
bV9naXQoc2VsZik6Ci0gICAgICAgIHJldHVybiBbR2l0LnJlYWRfZ2l0X2NvbmZpZyhzZWxmLmdp
dF9wcmVmaXggKyAidXNlcm5hbWUiKSwKLSAgICAgICAgICAgICAgICBHaXQucmVhZF9naXRfY29u
ZmlnKHNlbGYuZ2l0X3ByZWZpeCArICJwYXNzd29yZCIpXQorICAgICAgICBpZiBub3QgR2l0Lmlu
X3dvcmtpbmdfZGlyZWN0b3J5KHNlbGYuY3dkKToKKyAgICAgICAgICAgIHJldHVybiAoTm9uZSwg
Tm9uZSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIChHaXQucmVhZF9naXRfY29u
ZmlnKHNlbGYuZ2l0X3ByZWZpeCArICJ1c2VybmFtZSIpLAorICAgICAgICAgICAgICAgICAgICBH
aXQucmVhZF9naXRfY29uZmlnKHNlbGYuZ2l0X3ByZWZpeCArICJwYXNzd29yZCIpKQorICAgICAg
ICBleGNlcHQgT1NFcnJvciwgZToKKyAgICAgICAgICAgICMgQ2F0Y2ggYW5kIGlnbm9yZSBPU0Vy
cm9yIGV4Y2VwdGlvbnMgc3VjaCBhcyAibm8gc3VjaCBmaWxlCisgICAgICAgICAgICAjIG9yIGRp
cmVjdG9yeSIgKE9TRXJyb3IgZXJybm8gMiksIHdoaWNoIGltcGx5IHRoYXQgdGhlIEdpdAorICAg
ICAgICAgICAgIyBjb21tYW5kIGNhbm5vdCBiZSBmb3VuZC9pcyBub3QgaW5zdGFsbGVkLgorICAg
ICAgICAgICAgcGFzcworICAgICAgICByZXR1cm4gKE5vbmUsIE5vbmUpCiAKICAgICBkZWYgX2tl
eWNoYWluX3ZhbHVlX3dpdGhfbGFiZWwoc2VsZiwgbGFiZWwsIHNvdXJjZV90ZXh0KToKICAgICAg
ICAgbWF0Y2ggPSByZS5zZWFyY2goIiVzXCIoP1A8dmFsdWU+LispXCIiICUgbGFiZWwsCkBAIC0x
MTAsMTkgKzEyMCwyNiBAQCBjbGFzcyBDcmVkZW50aWFscyhvYmplY3QpOgogICAgICAgICBlbHNl
OgogICAgICAgICAgICAgcmV0dXJuIFtOb25lLCBOb25lXQogCi0gICAgZGVmIHJlYWRfY3JlZGVu
dGlhbHMoc2VsZik6Ci0gICAgICAgIHVzZXJuYW1lID0gTm9uZQotICAgICAgICBwYXNzd29yZCA9
IE5vbmUKKyAgICBkZWYgX3JlYWRfZW52aXJvbihzZWxmLCBrZXkpOgorICAgICAgICBlbnZpcm9u
X2tleSA9IHNlbGYuX2Vudmlyb25fcHJlZml4ICsga2V5CisgICAgICAgIHJldHVybiBvcy5lbnZp
cm9uLmdldChlbnZpcm9uX2tleS51cHBlcigpKQogCi0gICAgICAgIHRyeToKLSAgICAgICAgICAg
IGlmIEdpdC5pbl93b3JraW5nX2RpcmVjdG9yeShzZWxmLmN3ZCk6Ci0gICAgICAgICAgICAgICAg
KHVzZXJuYW1lLCBwYXNzd29yZCkgPSBzZWxmLl9jcmVkZW50aWFsc19mcm9tX2dpdCgpCi0gICAg
ICAgIGV4Y2VwdCBPU0Vycm9yLCBlOgotICAgICAgICAgICAgIyBDYXRjaCBhbmQgaWdub3JlIE9T
RXJyb3IgZXhjZXB0aW9ucyBzdWNoIGFzICJubyBzdWNoIGZpbGUgCi0gICAgICAgICAgICAjIG9y
IGRpcmVjdG9yeSIgKE9TRXJyb3IgZXJybm8gMiksIHdoaWNoIGltcGx5IHRoYXQgdGhlIEdpdAot
ICAgICAgICAgICAgIyBjb21tYW5kIGNhbm5vdCBiZSBmb3VuZC9pcyBub3QgaW5zdGFsbGVkLgot
ICAgICAgICAgICAgcGFzcworICAgIGRlZiBfY3JlZGVudGlhbHNfZnJvbV9lbnZpcm9ubWVudChz
ZWxmKToKKyAgICAgICAgcmV0dXJuIChzZWxmLl9yZWFkX2Vudmlyb24oInVzZXJuYW1lIiksIHNl
bGYuX3JlYWRfZW52aXJvbigicGFzc3dvcmQiKSkKKworICAgIGRlZiBfb2ZmZXJfdG9fc3RvcmVf
Y3JlZGVudGlhbHNfaW5fa2V5cmluZyhzZWxmLCB1c2VybmFtZSwgcGFzc3dvcmQpOgorICAgICAg
ICBpZiBub3Qgc2VsZi5fa2V5cmluZzoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBu
b3QgVXNlcigpLmNvbmZpcm0oIlN0b3JlIHBhc3N3b3JkIGluIHN5c3RlbSBrZXlyaW5nPyIsIFVz
ZXIuREVGQVVMVF9OTyk6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgc2VsZi5fa2V5cmlu
Zy5zZXRfcGFzc3dvcmQoc2VsZi5ob3N0LCB1c2VybmFtZSwgcGFzc3dvcmQpCiAKKyAgICBkZWYg
cmVhZF9jcmVkZW50aWFscyhzZWxmKToKKyAgICAgICAgdXNlcm5hbWUsIHBhc3N3b3JkID0gc2Vs
Zi5fY3JlZGVudGlhbHNfZnJvbV9lbnZpcm9ubWVudCgpCisgICAgICAgICMgRklYTUU6IFdlIGRv
bid0IGN1cnJlbnRseSBzdXBwb3J0IHB1bGxpbmcgdGhlIHVzZXJuYW1lIGZyb20gb25lCisgICAg
ICAgICMgc291cmNlIGFuZCB0aGUgcGFzc3dvcmQgZnJvbSBhIHNlcGFyYXRlIHNvdXJjZS4KKyAg
ICAgICAgaWYgbm90IHVzZXJuYW1lIG9yIG5vdCBwYXNzd29yZDoKKyAgICAgICAgICAgICh1c2Vy
bmFtZSwgcGFzc3dvcmQpID0gc2VsZi5fY3JlZGVudGlhbHNfZnJvbV9naXQoKQogICAgICAgICBp
ZiBub3QgdXNlcm5hbWUgb3Igbm90IHBhc3N3b3JkOgogICAgICAgICAgICAgKHVzZXJuYW1lLCBw
YXNzd29yZCkgPSBzZWxmLl9jcmVkZW50aWFsc19mcm9tX2tleWNoYWluKHVzZXJuYW1lKQogCkBA
IC0xMzIsMTMgKzE0OSw3IEBAIGNsYXNzIENyZWRlbnRpYWxzKG9iamVjdCk6CiAgICAgICAgIGlm
IG5vdCB1c2VybmFtZToKICAgICAgICAgICAgIHVzZXJuYW1lID0gVXNlci5wcm9tcHQoIiVzIGxv
Z2luOiAiICUgc2VsZi5ob3N0KQogICAgICAgICBpZiBub3QgcGFzc3dvcmQ6Ci0gICAgICAgICAg
ICBwYXNzd29yZCA9IGdldHBhc3MuZ2V0cGFzcygiJXMgcGFzc3dvcmQgZm9yICVzOiAiICUgKHNl
bGYuaG9zdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdXNlcm5hbWUpKQorICAgICAgICAgICAgcGFzc3dvcmQgPSBnZXRw
YXNzLmdldHBhc3MoIiVzIHBhc3N3b3JkIGZvciAlczogIiAlIChzZWxmLmhvc3QsIHVzZXJuYW1l
KSkKKyAgICAgICAgICAgIHNlbGYuX29mZmVyX3RvX3N0b3JlX2NyZWRlbnRpYWxzX2luX2tleXJp
bmcodXNlcm5hbWUsIHBhc3N3b3JkKQogCi0gICAgICAgICAgICBpZiBzZWxmLl9rZXlyaW5nOgot
ICAgICAgICAgICAgICAgIHN0b3JlX3Bhc3N3b3JkID0gVXNlcigpLmNvbmZpcm0oCi0gICAgICAg
ICAgICAgICAgICAgICJTdG9yZSBwYXNzd29yZCBpbiBzeXN0ZW0ga2V5cmluZz8iLCBVc2VyLkRF
RkFVTFRfTk8pCi0gICAgICAgICAgICAgICAgaWYgc3RvcmVfcGFzc3dvcmQ6Ci0gICAgICAgICAg
ICAgICAgICAgIHNlbGYuX2tleXJpbmcuc2V0X3Bhc3N3b3JkKHNlbGYuaG9zdCwgdXNlcm5hbWUs
IHBhc3N3b3JkKQotCi0gICAgICAgIHJldHVybiBbdXNlcm5hbWUsIHBhc3N3b3JkXQorICAgICAg
ICByZXR1cm4gKHVzZXJuYW1lLCBwYXNzd29yZCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9jcmVkZW50aWFsc191bml0dGVzdC5weSBiL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9jcmVkZW50aWFsc191bml0dGVzdC5w
eQppbmRleCBkMzAyOTFiNGM3ZTA3YWFhODgyNmI4YjQ5YmE3ZWMyNTc5MjJlNGM0Li4zMjg1NjRl
MjEzZjUzMjczOTY1MGNkOWQ5MDFhMDM5YWM0OTA5NjgxIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvY3JlZGVudGlhbHNfdW5pdHRlc3QucHkKKysr
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2NyZWRlbnRpYWxzX3Vu
aXR0ZXN0LnB5CkBAIC0xMDEsMTYgKzEwMSwzNCBAQCBwYXNzd29yZDogIlNFQ1JFVFNBVUNFIgog
ICAgICAgICBzZWxmLl9hc3NlcnRfc2VjdXJpdHlfY2FsbCgpCiAgICAgICAgIHNlbGYuX2Fzc2Vy
dF9zZWN1cml0eV9jYWxsKHVzZXJuYW1lPSJmb28iKQogCisgICAgZGVmIHRlc3RfY3JlZGVudGlh
bHNfZnJvbV9lbnZpcm9ubWVudChzZWxmKToKKyAgICAgICAgZXhlY3V0aXZlX21vY2sgPSBNb2Nr
KCkKKyAgICAgICAgY3JlZGVudGlhbHMgPSBDcmVkZW50aWFscygiZXhhbXBsZS5jb20iLCBleGVj
dXRpdmU9ZXhlY3V0aXZlX21vY2spCisKKyAgICAgICAgc2F2ZWRfZW52aXJvbiA9IG9zLmVudmly
b24uY29weSgpCisgICAgICAgIG9zLmVudmlyb25bJ1dFQktJVF9CVUdaSUxMQV9VU0VSTkFNRSdd
ID0gImZvbyIKKyAgICAgICAgb3MuZW52aXJvblsnV0VCS0lUX0JVR1pJTExBX1BBU1NXT1JEJ10g
PSAiYmFyIgorICAgICAgICB1c2VybmFtZSwgcGFzc3dvcmQgPSBjcmVkZW50aWFscy5fY3JlZGVu
dGlhbHNfZnJvbV9lbnZpcm9ubWVudCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHVzZXJu
YW1lLCAiZm9vIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocGFzc3dvcmQsICJiYXIiKQor
ICAgICAgICBvcy5lbnZpcm9uID0gc2F2ZWRfZW52aXJvbgorCiAgICAgZGVmIHRlc3RfcmVhZF9j
cmVkZW50aWFsc193aXRob3V0X2dpdF9yZXBvKHNlbGYpOgogICAgICAgICBjbGFzcyBGYWtlQ3Jl
ZGVudGlhbHMoQ3JlZGVudGlhbHMpOgogICAgICAgICAgICAgZGVmIF9pc19tYWNfb3NfeChzZWxm
KToKICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCiAgICAgICAgICAgICBkZWYgX2NyZWRl
bnRpYWxzX2Zyb21fa2V5Y2hhaW4oc2VsZiwgdXNlcm5hbWUpOgotICAgICAgICAgICAgICAgIHJl
dHVybiBbInRlc3RAd2Via2l0Lm9yZyIsICJTRUNSRVRTQVVDRSJdCisgICAgICAgICAgICAgICAg
cmV0dXJuICgidGVzdEB3ZWJraXQub3JnIiwgIlNFQ1JFVFNBVUNFIikKKworICAgICAgICAgICAg
ZGVmIF9jcmVkZW50aWFsc19mcm9tX2Vudmlyb25tZW50KHNlbGYpOgorICAgICAgICAgICAgICAg
IHJldHVybiAoTm9uZSwgTm9uZSkKIAogICAgICAgICB0ZW1wX2Rpcl9wYXRoID0gdGVtcGZpbGUu
bWtkdGVtcChzdWZmaXg9Im5vdF9hX2dpdF9yZXBvIikKICAgICAgICAgY3JlZGVudGlhbHMgPSBG
YWtlQ3JlZGVudGlhbHMoImJ1Z3Mud2Via2l0Lm9yZyIsIGN3ZD10ZW1wX2Rpcl9wYXRoKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGNyZWRlbnRpYWxzLnJlYWRfY3JlZGVudGlhbHMoKSwgWyJ0
ZXN0QHdlYmtpdC5vcmciLCAiU0VDUkVUU0FVQ0UiXSkKKyAgICAgICAgIyBGSVhNRTogVXNpbmcg
cmVhZF9jcmVkZW50aWFscyBoZXJlIHNlZW1zIHRvbyBicm9hZCBhcyBoaWdoZXItcHJpb3JpdHkK
KyAgICAgICAgIyBjcmVkZW50aWFsIHNvdXJjZSBjb3VsZCBiZSBhZmZlY3RlZCBieSB0aGUgdXNl
cidzIGVudmlyb25tZW50LgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNyZWRlbnRpYWxzLnJl
YWRfY3JlZGVudGlhbHMoKSwgKCJ0ZXN0QHdlYmtpdC5vcmciLCAiU0VDUkVUU0FVQ0UiKSkKICAg
ICAgICAgb3Mucm1kaXIodGVtcF9kaXJfcGF0aCkKIAogICAgIGRlZiB0ZXN0X2tleXJpbmdfd2l0
aG91dF9naXRfcmVwbyhzZWxmKToKQEAgLTEyOSwxMiArMTQ3LDE5IEBAIHBhc3N3b3JkOiAiU0VD
UkVUU0FVQ0UiCiAgICAgICAgICAgICBkZWYgX2NyZWRlbnRpYWxzX2Zyb21fa2V5Y2hhaW4oc2Vs
ZiwgdXNlcm5hbWUpOgogICAgICAgICAgICAgICAgIHJldHVybiAoInRlc3RAd2Via2l0Lm9yZyIs
IE5vbmUpCiAKKyAgICAgICAgICAgIGRlZiBfY3JlZGVudGlhbHNfZnJvbV9lbnZpcm9ubWVudChz
ZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gKE5vbmUsIE5vbmUpCisKKyAgICAgICAgIyBG
SVhNRTogU2VlbXMgJ3dpdGgnIHdvdWxkIHdvcmsgYmV0dGVyIHRoYW4gYSB0cnkvZmluYWxseSBo
ZXJlLgogICAgICAgICB0ZW1wX2Rpcl9wYXRoID0gdGVtcGZpbGUubWtkdGVtcChzdWZmaXg9Im5v
dF9hX2dpdF9yZXBvIikKICAgICAgICAgY3JlZGVudGlhbHMgPSBGYWtlQ3JlZGVudGlhbHModGVt
cF9kaXJfcGF0aCkKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChj
cmVkZW50aWFscy5yZWFkX2NyZWRlbnRpYWxzKCksIFsidGVzdEB3ZWJraXQub3JnIiwgIk5PTU5P
TU5PTSJdKQorICAgICAgICAgICAgIyBGSVhNRTogVXNpbmcgcmVhZF9jcmVkZW50aWFscyBoZXJl
IHNlZW1zIHRvbyBicm9hZCBhcyBoaWdoZXItcHJpb3JpdHkKKyAgICAgICAgICAgICMgY3JlZGVu
dGlhbCBzb3VyY2UgY291bGQgYmUgYWZmZWN0ZWQgYnkgdGhlIHVzZXIncyBlbnZpcm9ubWVudC4K
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3JlZGVudGlhbHMucmVhZF9jcmVkZW50aWFs
cygpLCAoInRlc3RAd2Via2l0Lm9yZyIsICJOT01OT01OT00iKSkKICAgICAgICAgZmluYWxseToK
ICAgICAgICAgICAgIG9zLnJtZGlyKHRlbXBfZGlyX3BhdGgpCiAKKwogaWYgX19uYW1lX18gPT0g
J19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71835</attachid>
            <date>2010-10-25 19:46:59 -0700</date>
            <delta_ts>2010-10-26 11:23:29 -0700</delta_ts>
            <desc>Fixed Tony&apos;s nit.</desc>
            <filename>bug-48275-20101025194657.patch</filename>
            <type>text/plain</type>
            <size>8897</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAwMzQyZmEzM2I2MGNiMTY2ODcwMTA4NWFjM2ZkODg3NzE5MTI5YWMxLi5hNjgxZmFm
ZTE5MTMzZGU2MmYxN2ExYjIwZjFjNmJlYTY4YmU4ODViIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMTAtMTAtMjUgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlYWNoIHdlYmtpdC1wYXRjaCBo
b3cgdG8gcmVhZCBjcmVkZW50aWFscyBmcm9tIHRoZSBlbnZpcm9ubWVudAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDgyNzUKKworICAgICAgICBUaGlz
IG1ha2VzIGl0IHBvc3NpYmxlIGZvciBzdm4gdXNlcnMgdG8gaGF2ZSB0aGVpciBidWd6aWxsYSBj
cmVkZW50aWFscworICAgICAgICBzdG9yZWQgaW4gdGhlaXIgZW52aXJvbm1lbnQgaW5zdGVhZCBv
ZiB0eXBpbmcgdGhlbSBldmVyeSB0aW1lLgorCisgICAgICAgIFdlIG5lZWQgdGhpcyBmb3IgbWFr
aW5nIGl0IGVhc3kgdG8gcnVuIHRoZSB3aW4tZXdzIGJvdCAod2hpY2ggY3VycmVudGx5CisgICAg
ICAgIHVzZXMgc3ZuIGluc3RlYWQgb2YgZ2l0KS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvY29tbW9uL25ldC9jcmVkZW50aWFscy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9uZXQvY3JlZGVudGlhbHNfdW5pdHRlc3QucHk6CisKIDIwMTAtMTAtMjUgIEpvaG5u
eSBEaW5nICA8am5kQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBUb255IENo
YW5nLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0
L2J1Z3ppbGxhLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1
Z3ppbGxhLnB5CmluZGV4IDk0NTE5YTcxOGMzOTY5MTlkNDZmMjU0ZTY0MGQxM2U4NmM0ODNiNTMu
LmIwOTg4OTU0MjM4NjM5NzdkYzhlZjI3ZmJkNzVlOTcwNTE3N2IzNDEgMTAwNjQ0Ci0tLSBhL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS5weQorKysgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEucHkKQEAgLTU5
MSwxMSArNTkxLDEyIEBAIGNsYXNzIEJ1Z3ppbGxhKG9iamVjdCk6CiAgICAgICAgICAgICBzZWxm
LmF1dGhlbnRpY2F0ZWQgPSBUcnVlCiAgICAgICAgICAgICByZXR1cm4KIAorICAgICAgICBjcmVk
ZW50aWFscyA9IENyZWRlbnRpYWxzKHNlbGYuYnVnX3NlcnZlcl9ob3N0LCBnaXRfcHJlZml4PSJi
dWd6aWxsYSIpCisKICAgICAgICAgYXR0ZW1wdHMgPSAwCiAgICAgICAgIHdoaWxlIG5vdCBzZWxm
LmF1dGhlbnRpY2F0ZWQ6CiAgICAgICAgICAgICBhdHRlbXB0cyArPSAxCi0gICAgICAgICAgICAo
dXNlcm5hbWUsIHBhc3N3b3JkKSA9IENyZWRlbnRpYWxzKAotICAgICAgICAgICAgICAgIHNlbGYu
YnVnX3NlcnZlcl9ob3N0LCBnaXRfcHJlZml4PSJidWd6aWxsYSIpLnJlYWRfY3JlZGVudGlhbHMo
KQorICAgICAgICAgICAgdXNlcm5hbWUsIHBhc3N3b3JkID0gY3JlZGVudGlhbHMucmVhZF9jcmVk
ZW50aWFscygpCiAKICAgICAgICAgICAgIGxvZygiTG9nZ2luZyBpbiBhcyAlcy4uLiIgJSB1c2Vy
bmFtZSkKICAgICAgICAgICAgIHNlbGYuYnJvd3Nlci5vcGVuKHNlbGYuYnVnX3NlcnZlcl91cmwg
KwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2Ny
ZWRlbnRpYWxzLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2Ny
ZWRlbnRpYWxzLnB5CmluZGV4IDFjM2U2YzBlYTQxMGUwZTQ0MThmODg5MGIwNjA5MTc5MjkwYjJi
M2MuLjY0MDk2ZDhiYzYyYjQ4ZmVmODk0NDNiM2M0N2RjMjM3YjVkM2M0ZmQgMTAwNjQ0Ci0tLSBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9jcmVkZW50aWFscy5weQor
KysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvY3JlZGVudGlhbHMu
cHkKQEAgLTQ4LDYgKzQ4LDcgQEAgZXhjZXB0IEltcG9ydEVycm9yOgogCiAKIGNsYXNzIENyZWRl
bnRpYWxzKG9iamVjdCk6CisgICAgX2Vudmlyb25fcHJlZml4ID0gIndlYmtpdF9idWd6aWxsYV8i
CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwgZ2l0X3ByZWZpeD1Ob25lLCBleGVjdXRp
dmU9Tm9uZSwgY3dkPW9zLmdldGN3ZCgpLAogICAgICAgICAgICAgICAgICBrZXlyaW5nPWtleXJp
bmcpOgpAQCAtNTgsOCArNTksMTcgQEAgY2xhc3MgQ3JlZGVudGlhbHMob2JqZWN0KToKICAgICAg
ICAgc2VsZi5fa2V5cmluZyA9IGtleXJpbmcKIAogICAgIGRlZiBfY3JlZGVudGlhbHNfZnJvbV9n
aXQoc2VsZik6Ci0gICAgICAgIHJldHVybiBbR2l0LnJlYWRfZ2l0X2NvbmZpZyhzZWxmLmdpdF9w
cmVmaXggKyAidXNlcm5hbWUiKSwKLSAgICAgICAgICAgICAgICBHaXQucmVhZF9naXRfY29uZmln
KHNlbGYuZ2l0X3ByZWZpeCArICJwYXNzd29yZCIpXQorICAgICAgICBpZiBub3QgR2l0LmluX3dv
cmtpbmdfZGlyZWN0b3J5KHNlbGYuY3dkKToKKyAgICAgICAgICAgIHJldHVybiAoTm9uZSwgTm9u
ZSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIChHaXQucmVhZF9naXRfY29uZmln
KHNlbGYuZ2l0X3ByZWZpeCArICJ1c2VybmFtZSIpLAorICAgICAgICAgICAgICAgICAgICBHaXQu
cmVhZF9naXRfY29uZmlnKHNlbGYuZ2l0X3ByZWZpeCArICJwYXNzd29yZCIpKQorICAgICAgICBl
eGNlcHQgT1NFcnJvciwgZToKKyAgICAgICAgICAgICMgQ2F0Y2ggYW5kIGlnbm9yZSBPU0Vycm9y
IGV4Y2VwdGlvbnMgc3VjaCBhcyAibm8gc3VjaCBmaWxlCisgICAgICAgICAgICAjIG9yIGRpcmVj
dG9yeSIgKE9TRXJyb3IgZXJybm8gMiksIHdoaWNoIGltcGx5IHRoYXQgdGhlIEdpdAorICAgICAg
ICAgICAgIyBjb21tYW5kIGNhbm5vdCBiZSBmb3VuZC9pcyBub3QgaW5zdGFsbGVkLgorICAgICAg
ICAgICAgcGFzcworICAgICAgICByZXR1cm4gKE5vbmUsIE5vbmUpCiAKICAgICBkZWYgX2tleWNo
YWluX3ZhbHVlX3dpdGhfbGFiZWwoc2VsZiwgbGFiZWwsIHNvdXJjZV90ZXh0KToKICAgICAgICAg
bWF0Y2ggPSByZS5zZWFyY2goIiVzXCIoP1A8dmFsdWU+LispXCIiICUgbGFiZWwsCkBAIC0xMTAs
MjEgKzEyMCwyOCBAQCBjbGFzcyBDcmVkZW50aWFscyhvYmplY3QpOgogICAgICAgICBlbHNlOgog
ICAgICAgICAgICAgcmV0dXJuIFtOb25lLCBOb25lXQogCi0gICAgZGVmIHJlYWRfY3JlZGVudGlh
bHMoc2VsZik6Ci0gICAgICAgIHVzZXJuYW1lID0gTm9uZQotICAgICAgICBwYXNzd29yZCA9IE5v
bmUKKyAgICBkZWYgX3JlYWRfZW52aXJvbihzZWxmLCBrZXkpOgorICAgICAgICBlbnZpcm9uX2tl
eSA9IHNlbGYuX2Vudmlyb25fcHJlZml4ICsga2V5CisgICAgICAgIHJldHVybiBvcy5lbnZpcm9u
LmdldChlbnZpcm9uX2tleS51cHBlcigpKQogCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGlm
IEdpdC5pbl93b3JraW5nX2RpcmVjdG9yeShzZWxmLmN3ZCk6Ci0gICAgICAgICAgICAgICAgKHVz
ZXJuYW1lLCBwYXNzd29yZCkgPSBzZWxmLl9jcmVkZW50aWFsc19mcm9tX2dpdCgpCi0gICAgICAg
IGV4Y2VwdCBPU0Vycm9yLCBlOgotICAgICAgICAgICAgIyBDYXRjaCBhbmQgaWdub3JlIE9TRXJy
b3IgZXhjZXB0aW9ucyBzdWNoIGFzICJubyBzdWNoIGZpbGUgCi0gICAgICAgICAgICAjIG9yIGRp
cmVjdG9yeSIgKE9TRXJyb3IgZXJybm8gMiksIHdoaWNoIGltcGx5IHRoYXQgdGhlIEdpdAotICAg
ICAgICAgICAgIyBjb21tYW5kIGNhbm5vdCBiZSBmb3VuZC9pcyBub3QgaW5zdGFsbGVkLgotICAg
ICAgICAgICAgcGFzcworICAgIGRlZiBfY3JlZGVudGlhbHNfZnJvbV9lbnZpcm9ubWVudChzZWxm
KToKKyAgICAgICAgcmV0dXJuIChzZWxmLl9yZWFkX2Vudmlyb24oInVzZXJuYW1lIiksIHNlbGYu
X3JlYWRfZW52aXJvbigicGFzc3dvcmQiKSkKKworICAgIGRlZiBfb2ZmZXJfdG9fc3RvcmVfY3Jl
ZGVudGlhbHNfaW5fa2V5cmluZyhzZWxmLCB1c2VybmFtZSwgcGFzc3dvcmQpOgorICAgICAgICBp
ZiBub3Qgc2VsZi5fa2V5cmluZzoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBub3Qg
VXNlcigpLmNvbmZpcm0oIlN0b3JlIHBhc3N3b3JkIGluIHN5c3RlbSBrZXlyaW5nPyIsIFVzZXIu
REVGQVVMVF9OTyk6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgc2VsZi5fa2V5cmluZy5z
ZXRfcGFzc3dvcmQoc2VsZi5ob3N0LCB1c2VybmFtZSwgcGFzc3dvcmQpCiAKKyAgICBkZWYgcmVh
ZF9jcmVkZW50aWFscyhzZWxmKToKKyAgICAgICAgdXNlcm5hbWUsIHBhc3N3b3JkID0gc2VsZi5f
Y3JlZGVudGlhbHNfZnJvbV9lbnZpcm9ubWVudCgpCisgICAgICAgICMgRklYTUU6IFdlIGRvbid0
IGN1cnJlbnRseSBzdXBwb3J0IHB1bGxpbmcgdGhlIHVzZXJuYW1lIGZyb20gb25lCisgICAgICAg
ICMgc291cmNlIGFuZCB0aGUgcGFzc3dvcmQgZnJvbSBhIHNlcGFyYXRlIHNvdXJjZS4KKyAgICAg
ICAgaWYgbm90IHVzZXJuYW1lIG9yIG5vdCBwYXNzd29yZDoKKyAgICAgICAgICAgIHVzZXJuYW1l
LCBwYXNzd29yZCA9IHNlbGYuX2NyZWRlbnRpYWxzX2Zyb21fZ2l0KCkKICAgICAgICAgaWYgbm90
IHVzZXJuYW1lIG9yIG5vdCBwYXNzd29yZDoKLSAgICAgICAgICAgICh1c2VybmFtZSwgcGFzc3dv
cmQpID0gc2VsZi5fY3JlZGVudGlhbHNfZnJvbV9rZXljaGFpbih1c2VybmFtZSkKKyAgICAgICAg
ICAgIHVzZXJuYW1lLCBwYXNzd29yZCA9IHNlbGYuX2NyZWRlbnRpYWxzX2Zyb21fa2V5Y2hhaW4o
dXNlcm5hbWUpCiAKICAgICAgICAgaWYgdXNlcm5hbWUgYW5kIG5vdCBwYXNzd29yZCBhbmQgc2Vs
Zi5fa2V5cmluZzoKICAgICAgICAgICAgIHBhc3N3b3JkID0gc2VsZi5fa2V5cmluZy5nZXRfcGFz
c3dvcmQoc2VsZi5ob3N0LCB1c2VybmFtZSkKQEAgLTEzMiwxMyArMTQ5LDcgQEAgY2xhc3MgQ3Jl
ZGVudGlhbHMob2JqZWN0KToKICAgICAgICAgaWYgbm90IHVzZXJuYW1lOgogICAgICAgICAgICAg
dXNlcm5hbWUgPSBVc2VyLnByb21wdCgiJXMgbG9naW46ICIgJSBzZWxmLmhvc3QpCiAgICAgICAg
IGlmIG5vdCBwYXNzd29yZDoKLSAgICAgICAgICAgIHBhc3N3b3JkID0gZ2V0cGFzcy5nZXRwYXNz
KCIlcyBwYXNzd29yZCBmb3IgJXM6ICIgJSAoc2VsZi5ob3N0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VybmFtZSkp
CisgICAgICAgICAgICBwYXNzd29yZCA9IGdldHBhc3MuZ2V0cGFzcygiJXMgcGFzc3dvcmQgZm9y
ICVzOiAiICUgKHNlbGYuaG9zdCwgdXNlcm5hbWUpKQorICAgICAgICAgICAgc2VsZi5fb2ZmZXJf
dG9fc3RvcmVfY3JlZGVudGlhbHNfaW5fa2V5cmluZyh1c2VybmFtZSwgcGFzc3dvcmQpCiAKLSAg
ICAgICAgICAgIGlmIHNlbGYuX2tleXJpbmc6Ci0gICAgICAgICAgICAgICAgc3RvcmVfcGFzc3dv
cmQgPSBVc2VyKCkuY29uZmlybSgKLSAgICAgICAgICAgICAgICAgICAgIlN0b3JlIHBhc3N3b3Jk
IGluIHN5c3RlbSBrZXlyaW5nPyIsIFVzZXIuREVGQVVMVF9OTykKLSAgICAgICAgICAgICAgICBp
ZiBzdG9yZV9wYXNzd29yZDoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fa2V5cmluZy5zZXRf
cGFzc3dvcmQoc2VsZi5ob3N0LCB1c2VybmFtZSwgcGFzc3dvcmQpCi0KLSAgICAgICAgcmV0dXJu
IFt1c2VybmFtZSwgcGFzc3dvcmRdCisgICAgICAgIHJldHVybiAodXNlcm5hbWUsIHBhc3N3b3Jk
KQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2Ny
ZWRlbnRpYWxzX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vbmV0L2NyZWRlbnRpYWxzX3VuaXR0ZXN0LnB5CmluZGV4IGQzMDI5MWI0YzdlMDdhYWE4ODI2
YjhiNDliYTdlYzI1NzkyMmU0YzQuLjMyODU2NGUyMTNmNTMyNzM5NjUwY2Q5ZDkwMWEwMzlhYzQ5
MDk2ODEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25l
dC9jcmVkZW50aWFsc191bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9uZXQvY3JlZGVudGlhbHNfdW5pdHRlc3QucHkKQEAgLTEwMSwxNiArMTAxLDM0
IEBAIHBhc3N3b3JkOiAiU0VDUkVUU0FVQ0UiCiAgICAgICAgIHNlbGYuX2Fzc2VydF9zZWN1cml0
eV9jYWxsKCkKICAgICAgICAgc2VsZi5fYXNzZXJ0X3NlY3VyaXR5X2NhbGwodXNlcm5hbWU9ImZv
byIpCiAKKyAgICBkZWYgdGVzdF9jcmVkZW50aWFsc19mcm9tX2Vudmlyb25tZW50KHNlbGYpOgor
ICAgICAgICBleGVjdXRpdmVfbW9jayA9IE1vY2soKQorICAgICAgICBjcmVkZW50aWFscyA9IENy
ZWRlbnRpYWxzKCJleGFtcGxlLmNvbSIsIGV4ZWN1dGl2ZT1leGVjdXRpdmVfbW9jaykKKworICAg
ICAgICBzYXZlZF9lbnZpcm9uID0gb3MuZW52aXJvbi5jb3B5KCkKKyAgICAgICAgb3MuZW52aXJv
blsnV0VCS0lUX0JVR1pJTExBX1VTRVJOQU1FJ10gPSAiZm9vIgorICAgICAgICBvcy5lbnZpcm9u
WydXRUJLSVRfQlVHWklMTEFfUEFTU1dPUkQnXSA9ICJiYXIiCisgICAgICAgIHVzZXJuYW1lLCBw
YXNzd29yZCA9IGNyZWRlbnRpYWxzLl9jcmVkZW50aWFsc19mcm9tX2Vudmlyb25tZW50KCkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHModXNlcm5hbWUsICJmb28iKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFscyhwYXNzd29yZCwgImJhciIpCisgICAgICAgIG9zLmVudmlyb24gPSBzYXZlZF9l
bnZpcm9uCisKICAgICBkZWYgdGVzdF9yZWFkX2NyZWRlbnRpYWxzX3dpdGhvdXRfZ2l0X3JlcG8o
c2VsZik6CiAgICAgICAgIGNsYXNzIEZha2VDcmVkZW50aWFscyhDcmVkZW50aWFscyk6CiAgICAg
ICAgICAgICBkZWYgX2lzX21hY19vc194KHNlbGYpOgogICAgICAgICAgICAgICAgIHJldHVybiBU
cnVlCisKICAgICAgICAgICAgIGRlZiBfY3JlZGVudGlhbHNfZnJvbV9rZXljaGFpbihzZWxmLCB1
c2VybmFtZSk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFsidGVzdEB3ZWJraXQub3JnIiwgIlNF
Q1JFVFNBVUNFIl0KKyAgICAgICAgICAgICAgICByZXR1cm4gKCJ0ZXN0QHdlYmtpdC5vcmciLCAi
U0VDUkVUU0FVQ0UiKQorCisgICAgICAgICAgICBkZWYgX2NyZWRlbnRpYWxzX2Zyb21fZW52aXJv
bm1lbnQoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIChOb25lLCBOb25lKQogCiAgICAg
ICAgIHRlbXBfZGlyX3BhdGggPSB0ZW1wZmlsZS5ta2R0ZW1wKHN1ZmZpeD0ibm90X2FfZ2l0X3Jl
cG8iKQogICAgICAgICBjcmVkZW50aWFscyA9IEZha2VDcmVkZW50aWFscygiYnVncy53ZWJraXQu
b3JnIiwgY3dkPXRlbXBfZGlyX3BhdGgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3JlZGVu
dGlhbHMucmVhZF9jcmVkZW50aWFscygpLCBbInRlc3RAd2Via2l0Lm9yZyIsICJTRUNSRVRTQVVD
RSJdKQorICAgICAgICAjIEZJWE1FOiBVc2luZyByZWFkX2NyZWRlbnRpYWxzIGhlcmUgc2VlbXMg
dG9vIGJyb2FkIGFzIGhpZ2hlci1wcmlvcml0eQorICAgICAgICAjIGNyZWRlbnRpYWwgc291cmNl
IGNvdWxkIGJlIGFmZmVjdGVkIGJ5IHRoZSB1c2VyJ3MgZW52aXJvbm1lbnQuCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoY3JlZGVudGlhbHMucmVhZF9jcmVkZW50aWFscygpLCAoInRlc3RAd2Vi
a2l0Lm9yZyIsICJTRUNSRVRTQVVDRSIpKQogICAgICAgICBvcy5ybWRpcih0ZW1wX2Rpcl9wYXRo
KQogCiAgICAgZGVmIHRlc3Rfa2V5cmluZ193aXRob3V0X2dpdF9yZXBvKHNlbGYpOgpAQCAtMTI5
LDEyICsxNDcsMTkgQEAgcGFzc3dvcmQ6ICJTRUNSRVRTQVVDRSIKICAgICAgICAgICAgIGRlZiBf
Y3JlZGVudGlhbHNfZnJvbV9rZXljaGFpbihzZWxmLCB1c2VybmFtZSk6CiAgICAgICAgICAgICAg
ICAgcmV0dXJuICgidGVzdEB3ZWJraXQub3JnIiwgTm9uZSkKIAorICAgICAgICAgICAgZGVmIF9j
cmVkZW50aWFsc19mcm9tX2Vudmlyb25tZW50KHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVy
biAoTm9uZSwgTm9uZSkKKworICAgICAgICAjIEZJWE1FOiBTZWVtcyAnd2l0aCcgd291bGQgd29y
ayBiZXR0ZXIgdGhhbiBhIHRyeS9maW5hbGx5IGhlcmUuCiAgICAgICAgIHRlbXBfZGlyX3BhdGgg
PSB0ZW1wZmlsZS5ta2R0ZW1wKHN1ZmZpeD0ibm90X2FfZ2l0X3JlcG8iKQogICAgICAgICBjcmVk
ZW50aWFscyA9IEZha2VDcmVkZW50aWFscyh0ZW1wX2Rpcl9wYXRoKQogICAgICAgICB0cnk6Ci0g
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNyZWRlbnRpYWxzLnJlYWRfY3JlZGVudGlhbHMo
KSwgWyJ0ZXN0QHdlYmtpdC5vcmciLCAiTk9NTk9NTk9NIl0pCisgICAgICAgICAgICAjIEZJWE1F
OiBVc2luZyByZWFkX2NyZWRlbnRpYWxzIGhlcmUgc2VlbXMgdG9vIGJyb2FkIGFzIGhpZ2hlci1w
cmlvcml0eQorICAgICAgICAgICAgIyBjcmVkZW50aWFsIHNvdXJjZSBjb3VsZCBiZSBhZmZlY3Rl
ZCBieSB0aGUgdXNlcidzIGVudmlyb25tZW50LgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChjcmVkZW50aWFscy5yZWFkX2NyZWRlbnRpYWxzKCksICgidGVzdEB3ZWJraXQub3JnIiwgIk5P
TU5PTU5PTSIpKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgb3Mucm1kaXIodGVtcF9k
aXJfcGF0aCkKIAorCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1h
aW4oKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71916</attachid>
            <date>2010-10-26 11:23:34 -0700</date>
            <delta_ts>2010-10-26 13:20:00 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-48275-20101026112333.patch</filename>
            <type>text/plain</type>
            <size>10492</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBkOWY4Nzk0ZGRkZjdkMmE1MWFhNGE3ZTEyODM1OWMxNTQyZGYzZTZiLi5lYzU1ZGY1
NDJhZTYwMDg1MzA4YzllNWQzMDU0NGU4ZWQ5OWY1YjU5IDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMTAtMTAtMjYgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IFRvbnkgQ2hhbmcuCisKKyAgICAgICAgVGVhY2ggd2Via2l0LXBhdGNoIGhvdyB0
byByZWFkIGNyZWRlbnRpYWxzIGZyb20gdGhlIGVudmlyb25tZW50CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODI3NQorCisgICAgICAgIFRoaXMgbWFr
ZXMgaXQgcG9zc2libGUgZm9yIHN2biB1c2VycyB0byBoYXZlIHRoZWlyIGJ1Z3ppbGxhIGNyZWRl
bnRpYWxzCisgICAgICAgIHN0b3JlZCBpbiB0aGVpciBlbnZpcm9ubWVudCBpbnN0ZWFkIG9mIHR5
cGluZyB0aGVtIGV2ZXJ5IHRpbWUuCisKKyAgICAgICAgV2UgbmVlZCB0aGlzIGZvciBtYWtpbmcg
aXQgZWFzeSB0byBydW4gdGhlIHdpbi1ld3MgYm90ICh3aGljaCBjdXJyZW50bHkKKyAgICAgICAg
dXNlcyBzdm4gaW5zdGVhZCBvZiBnaXQpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9j
b21tb24vbmV0L2NyZWRlbnRpYWxzLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29t
bW9uL25ldC9jcmVkZW50aWFsc191bml0dGVzdC5weToKKwogMjAxMC0xMC0yNiAgQWRhbSBSb2Jl
biAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgUHVsbCBpbiB0aGUgRmVhdHVyZURlZmlu
ZXMqLnZzcHJvcHMgZmlsZXMgd2hlbiBidWlsZGluZyBEUlQKZGlmZiAtLWdpdCBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS5weSBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS5weQppbmRleCA5NDUxOWE3MThj
Mzk2OTE5ZDQ2ZjI1NGU2NDBkMTNlODZjNDgzYjUzLi5iMDk4ODk1NDIzODYzOTc3ZGM4ZWYyN2Zi
ZDc1ZTk3MDUxNzdiMzQxIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9uZXQvYnVnemlsbGEucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vbmV0L2J1Z3ppbGxhLnB5CkBAIC01OTEsMTEgKzU5MSwxMiBAQCBjbGFzcyBCdWd6
aWxsYShvYmplY3QpOgogICAgICAgICAgICAgc2VsZi5hdXRoZW50aWNhdGVkID0gVHJ1ZQogICAg
ICAgICAgICAgcmV0dXJuCiAKKyAgICAgICAgY3JlZGVudGlhbHMgPSBDcmVkZW50aWFscyhzZWxm
LmJ1Z19zZXJ2ZXJfaG9zdCwgZ2l0X3ByZWZpeD0iYnVnemlsbGEiKQorCiAgICAgICAgIGF0dGVt
cHRzID0gMAogICAgICAgICB3aGlsZSBub3Qgc2VsZi5hdXRoZW50aWNhdGVkOgogICAgICAgICAg
ICAgYXR0ZW1wdHMgKz0gMQotICAgICAgICAgICAgKHVzZXJuYW1lLCBwYXNzd29yZCkgPSBDcmVk
ZW50aWFscygKLSAgICAgICAgICAgICAgICBzZWxmLmJ1Z19zZXJ2ZXJfaG9zdCwgZ2l0X3ByZWZp
eD0iYnVnemlsbGEiKS5yZWFkX2NyZWRlbnRpYWxzKCkKKyAgICAgICAgICAgIHVzZXJuYW1lLCBw
YXNzd29yZCA9IGNyZWRlbnRpYWxzLnJlYWRfY3JlZGVudGlhbHMoKQogCiAgICAgICAgICAgICBs
b2coIkxvZ2dpbmcgaW4gYXMgJXMuLi4iICUgdXNlcm5hbWUpCiAgICAgICAgICAgICBzZWxmLmJy
b3dzZXIub3BlbihzZWxmLmJ1Z19zZXJ2ZXJfdXJsICsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9jcmVkZW50aWFscy5weSBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9jcmVkZW50aWFscy5weQppbmRleCAxYzNlNmMw
ZWE0MTBlMGU0NDE4Zjg4OTBiMDYwOTE3OTI5MGIyYjNjLi42NDA5NmQ4YmM2MmI0OGZlZjg5NDQz
YjNjNDdkYzIzN2I1ZDNjNGZkIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9uZXQvY3JlZGVudGlhbHMucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vbmV0L2NyZWRlbnRpYWxzLnB5CkBAIC00OCw2ICs0OCw3IEBAIGV4Y2Vw
dCBJbXBvcnRFcnJvcjoKIAogCiBjbGFzcyBDcmVkZW50aWFscyhvYmplY3QpOgorICAgIF9lbnZp
cm9uX3ByZWZpeCA9ICJ3ZWJraXRfYnVnemlsbGFfIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYs
IGhvc3QsIGdpdF9wcmVmaXg9Tm9uZSwgZXhlY3V0aXZlPU5vbmUsIGN3ZD1vcy5nZXRjd2QoKSwK
ICAgICAgICAgICAgICAgICAga2V5cmluZz1rZXlyaW5nKToKQEAgLTU4LDggKzU5LDE3IEBAIGNs
YXNzIENyZWRlbnRpYWxzKG9iamVjdCk6CiAgICAgICAgIHNlbGYuX2tleXJpbmcgPSBrZXlyaW5n
CiAKICAgICBkZWYgX2NyZWRlbnRpYWxzX2Zyb21fZ2l0KHNlbGYpOgotICAgICAgICByZXR1cm4g
W0dpdC5yZWFkX2dpdF9jb25maWcoc2VsZi5naXRfcHJlZml4ICsgInVzZXJuYW1lIiksCi0gICAg
ICAgICAgICAgICAgR2l0LnJlYWRfZ2l0X2NvbmZpZyhzZWxmLmdpdF9wcmVmaXggKyAicGFzc3dv
cmQiKV0KKyAgICAgICAgaWYgbm90IEdpdC5pbl93b3JraW5nX2RpcmVjdG9yeShzZWxmLmN3ZCk6
CisgICAgICAgICAgICByZXR1cm4gKE5vbmUsIE5vbmUpCisgICAgICAgIHRyeToKKyAgICAgICAg
ICAgIHJldHVybiAoR2l0LnJlYWRfZ2l0X2NvbmZpZyhzZWxmLmdpdF9wcmVmaXggKyAidXNlcm5h
bWUiKSwKKyAgICAgICAgICAgICAgICAgICAgR2l0LnJlYWRfZ2l0X2NvbmZpZyhzZWxmLmdpdF9w
cmVmaXggKyAicGFzc3dvcmQiKSkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IsIGU6CisgICAgICAg
ICAgICAjIENhdGNoIGFuZCBpZ25vcmUgT1NFcnJvciBleGNlcHRpb25zIHN1Y2ggYXMgIm5vIHN1
Y2ggZmlsZQorICAgICAgICAgICAgIyBvciBkaXJlY3RvcnkiIChPU0Vycm9yIGVycm5vIDIpLCB3
aGljaCBpbXBseSB0aGF0IHRoZSBHaXQKKyAgICAgICAgICAgICMgY29tbWFuZCBjYW5ub3QgYmUg
Zm91bmQvaXMgbm90IGluc3RhbGxlZC4KKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgcmV0dXJu
IChOb25lLCBOb25lKQogCiAgICAgZGVmIF9rZXljaGFpbl92YWx1ZV93aXRoX2xhYmVsKHNlbGYs
IGxhYmVsLCBzb3VyY2VfdGV4dCk6CiAgICAgICAgIG1hdGNoID0gcmUuc2VhcmNoKCIlc1wiKD9Q
PHZhbHVlPi4rKVwiIiAlIGxhYmVsLApAQCAtMTEwLDIxICsxMjAsMjggQEAgY2xhc3MgQ3JlZGVu
dGlhbHMob2JqZWN0KToKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBbTm9uZSwg
Tm9uZV0KIAotICAgIGRlZiByZWFkX2NyZWRlbnRpYWxzKHNlbGYpOgotICAgICAgICB1c2VybmFt
ZSA9IE5vbmUKLSAgICAgICAgcGFzc3dvcmQgPSBOb25lCisgICAgZGVmIF9yZWFkX2Vudmlyb24o
c2VsZiwga2V5KToKKyAgICAgICAgZW52aXJvbl9rZXkgPSBzZWxmLl9lbnZpcm9uX3ByZWZpeCAr
IGtleQorICAgICAgICByZXR1cm4gb3MuZW52aXJvbi5nZXQoZW52aXJvbl9rZXkudXBwZXIoKSkK
IAotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpZiBHaXQuaW5fd29ya2luZ19kaXJlY3Rvcnko
c2VsZi5jd2QpOgotICAgICAgICAgICAgICAgICh1c2VybmFtZSwgcGFzc3dvcmQpID0gc2VsZi5f
Y3JlZGVudGlhbHNfZnJvbV9naXQoKQotICAgICAgICBleGNlcHQgT1NFcnJvciwgZToKLSAgICAg
ICAgICAgICMgQ2F0Y2ggYW5kIGlnbm9yZSBPU0Vycm9yIGV4Y2VwdGlvbnMgc3VjaCBhcyAibm8g
c3VjaCBmaWxlIAotICAgICAgICAgICAgIyBvciBkaXJlY3RvcnkiIChPU0Vycm9yIGVycm5vIDIp
LCB3aGljaCBpbXBseSB0aGF0IHRoZSBHaXQKLSAgICAgICAgICAgICMgY29tbWFuZCBjYW5ub3Qg
YmUgZm91bmQvaXMgbm90IGluc3RhbGxlZC4KLSAgICAgICAgICAgIHBhc3MKKyAgICBkZWYgX2Ny
ZWRlbnRpYWxzX2Zyb21fZW52aXJvbm1lbnQoc2VsZik6CisgICAgICAgIHJldHVybiAoc2VsZi5f
cmVhZF9lbnZpcm9uKCJ1c2VybmFtZSIpLCBzZWxmLl9yZWFkX2Vudmlyb24oInBhc3N3b3JkIikp
CisKKyAgICBkZWYgX29mZmVyX3RvX3N0b3JlX2NyZWRlbnRpYWxzX2luX2tleXJpbmcoc2VsZiwg
dXNlcm5hbWUsIHBhc3N3b3JkKToKKyAgICAgICAgaWYgbm90IHNlbGYuX2tleXJpbmc6CisgICAg
ICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgbm90IFVzZXIoKS5jb25maXJtKCJTdG9yZSBwYXNz
d29yZCBpbiBzeXN0ZW0ga2V5cmluZz8iLCBVc2VyLkRFRkFVTFRfTk8pOgorICAgICAgICAgICAg
cmV0dXJuCisgICAgICAgIHNlbGYuX2tleXJpbmcuc2V0X3Bhc3N3b3JkKHNlbGYuaG9zdCwgdXNl
cm5hbWUsIHBhc3N3b3JkKQogCisgICAgZGVmIHJlYWRfY3JlZGVudGlhbHMoc2VsZik6CisgICAg
ICAgIHVzZXJuYW1lLCBwYXNzd29yZCA9IHNlbGYuX2NyZWRlbnRpYWxzX2Zyb21fZW52aXJvbm1l
bnQoKQorICAgICAgICAjIEZJWE1FOiBXZSBkb24ndCBjdXJyZW50bHkgc3VwcG9ydCBwdWxsaW5n
IHRoZSB1c2VybmFtZSBmcm9tIG9uZQorICAgICAgICAjIHNvdXJjZSBhbmQgdGhlIHBhc3N3b3Jk
IGZyb20gYSBzZXBhcmF0ZSBzb3VyY2UuCisgICAgICAgIGlmIG5vdCB1c2VybmFtZSBvciBub3Qg
cGFzc3dvcmQ6CisgICAgICAgICAgICB1c2VybmFtZSwgcGFzc3dvcmQgPSBzZWxmLl9jcmVkZW50
aWFsc19mcm9tX2dpdCgpCiAgICAgICAgIGlmIG5vdCB1c2VybmFtZSBvciBub3QgcGFzc3dvcmQ6
Ci0gICAgICAgICAgICAodXNlcm5hbWUsIHBhc3N3b3JkKSA9IHNlbGYuX2NyZWRlbnRpYWxzX2Zy
b21fa2V5Y2hhaW4odXNlcm5hbWUpCisgICAgICAgICAgICB1c2VybmFtZSwgcGFzc3dvcmQgPSBz
ZWxmLl9jcmVkZW50aWFsc19mcm9tX2tleWNoYWluKHVzZXJuYW1lKQogCiAgICAgICAgIGlmIHVz
ZXJuYW1lIGFuZCBub3QgcGFzc3dvcmQgYW5kIHNlbGYuX2tleXJpbmc6CiAgICAgICAgICAgICBw
YXNzd29yZCA9IHNlbGYuX2tleXJpbmcuZ2V0X3Bhc3N3b3JkKHNlbGYuaG9zdCwgdXNlcm5hbWUp
CkBAIC0xMzIsMTMgKzE0OSw3IEBAIGNsYXNzIENyZWRlbnRpYWxzKG9iamVjdCk6CiAgICAgICAg
IGlmIG5vdCB1c2VybmFtZToKICAgICAgICAgICAgIHVzZXJuYW1lID0gVXNlci5wcm9tcHQoIiVz
IGxvZ2luOiAiICUgc2VsZi5ob3N0KQogICAgICAgICBpZiBub3QgcGFzc3dvcmQ6Ci0gICAgICAg
ICAgICBwYXNzd29yZCA9IGdldHBhc3MuZ2V0cGFzcygiJXMgcGFzc3dvcmQgZm9yICVzOiAiICUg
KHNlbGYuaG9zdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdXNlcm5hbWUpKQorICAgICAgICAgICAgcGFzc3dvcmQgPSBn
ZXRwYXNzLmdldHBhc3MoIiVzIHBhc3N3b3JkIGZvciAlczogIiAlIChzZWxmLmhvc3QsIHVzZXJu
YW1lKSkKKyAgICAgICAgICAgIHNlbGYuX29mZmVyX3RvX3N0b3JlX2NyZWRlbnRpYWxzX2luX2tl
eXJpbmcodXNlcm5hbWUsIHBhc3N3b3JkKQogCi0gICAgICAgICAgICBpZiBzZWxmLl9rZXlyaW5n
OgotICAgICAgICAgICAgICAgIHN0b3JlX3Bhc3N3b3JkID0gVXNlcigpLmNvbmZpcm0oCi0gICAg
ICAgICAgICAgICAgICAgICJTdG9yZSBwYXNzd29yZCBpbiBzeXN0ZW0ga2V5cmluZz8iLCBVc2Vy
LkRFRkFVTFRfTk8pCi0gICAgICAgICAgICAgICAgaWYgc3RvcmVfcGFzc3dvcmQ6Ci0gICAgICAg
ICAgICAgICAgICAgIHNlbGYuX2tleXJpbmcuc2V0X3Bhc3N3b3JkKHNlbGYuaG9zdCwgdXNlcm5h
bWUsIHBhc3N3b3JkKQotCi0gICAgICAgIHJldHVybiBbdXNlcm5hbWUsIHBhc3N3b3JkXQorICAg
ICAgICByZXR1cm4gKHVzZXJuYW1lLCBwYXNzd29yZCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9jcmVkZW50aWFsc191bml0dGVzdC5weSBiL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9jcmVkZW50aWFsc191bml0dGVz
dC5weQppbmRleCBkMzAyOTFiNGM3ZTA3YWFhODgyNmI4YjQ5YmE3ZWMyNTc5MjJlNGM0Li4zZTA0
MjIzY2VlYzI0OWQ2YzU0MTMwNTcwYWFiNTBiODY2Y2RlOTFmIDEwMDY0NAotLS0gYS9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvY3JlZGVudGlhbHNfdW5pdHRlc3QucHkK
KysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2NyZWRlbnRpYWxz
X3VuaXR0ZXN0LnB5CkBAIC0zNCw2ICszNCwyMSBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3Rl
bS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJlCiBmcm9tIHdlYmtpdHB5LnRoaXJk
cGFydHkubW9jayBpbXBvcnQgTW9jawogCisKKyMgRklYTUU6IE90aGVyIHVuaXQgdGVzdHMgcHJv
YmFibHkgd2FudCB0aGlzIGNsYXNzLgorY2xhc3MgX1RlbXBvcmFyeURpcmVjdG9yeShvYmplY3Qp
OgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3YXJncyk6CisgICAgICAgIHNlbGYuX2t3YXJn
cyA9IGt3YXJncworICAgICAgICBzZWxmLl9kaXJlY3RvcnlfcGF0aCA9IE5vbmUKKworICAgIGRl
ZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIHNlbGYuX2RpcmVjdG9yeV9wYXRoID0gdGVtcGZp
bGUubWtkdGVtcCgqKnNlbGYuX2t3YXJncykKKyAgICAgICAgcmV0dXJuIHNlbGYuX2RpcmVjdG9y
eV9wYXRoCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgdHlwZSwgdmFsdWUsIHRyYWNlYmFjayk6
CisgICAgICAgIG9zLnJtZGlyKHNlbGYuX2RpcmVjdG9yeV9wYXRoKQorCisKIGNsYXNzIENyZWRl
bnRpYWxzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZXhhbXBsZV9zZWN1cml0eV9vdXRw
dXQgPSAiIiJrZXljaGFpbjogIi9Vc2Vycy90ZXN0L0xpYnJhcnkvS2V5Y2hhaW5zL2xvZ2luLmtl
eWNoYWluIgogY2xhc3M6ICJpbmV0IgpAQCAtMTAxLDQwICsxMTYsNTkgQEAgcGFzc3dvcmQ6ICJT
RUNSRVRTQVVDRSIKICAgICAgICAgc2VsZi5fYXNzZXJ0X3NlY3VyaXR5X2NhbGwoKQogICAgICAg
ICBzZWxmLl9hc3NlcnRfc2VjdXJpdHlfY2FsbCh1c2VybmFtZT0iZm9vIikKIAorICAgIGRlZiB0
ZXN0X2NyZWRlbnRpYWxzX2Zyb21fZW52aXJvbm1lbnQoc2VsZik6CisgICAgICAgIGV4ZWN1dGl2
ZV9tb2NrID0gTW9jaygpCisgICAgICAgIGNyZWRlbnRpYWxzID0gQ3JlZGVudGlhbHMoImV4YW1w
bGUuY29tIiwgZXhlY3V0aXZlPWV4ZWN1dGl2ZV9tb2NrKQorCisgICAgICAgIHNhdmVkX2Vudmly
b24gPSBvcy5lbnZpcm9uLmNvcHkoKQorICAgICAgICBvcy5lbnZpcm9uWydXRUJLSVRfQlVHWklM
TEFfVVNFUk5BTUUnXSA9ICJmb28iCisgICAgICAgIG9zLmVudmlyb25bJ1dFQktJVF9CVUdaSUxM
QV9QQVNTV09SRCddID0gImJhciIKKyAgICAgICAgdXNlcm5hbWUsIHBhc3N3b3JkID0gY3JlZGVu
dGlhbHMuX2NyZWRlbnRpYWxzX2Zyb21fZW52aXJvbm1lbnQoKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscyh1c2VybmFtZSwgImZvbyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHBhc3N3
b3JkLCAiYmFyIikKKyAgICAgICAgb3MuZW52aXJvbiA9IHNhdmVkX2Vudmlyb24KKwogICAgIGRl
ZiB0ZXN0X3JlYWRfY3JlZGVudGlhbHNfd2l0aG91dF9naXRfcmVwbyhzZWxmKToKKyAgICAgICAg
IyBGSVhNRTogVGhpcyBzaG91bGQgc2hhcmUgbW9yZSBjb2RlIHdpdGggdGVzdF9rZXlyaW5nX3dp
dGhvdXRfZ2l0X3JlcG8KICAgICAgICAgY2xhc3MgRmFrZUNyZWRlbnRpYWxzKENyZWRlbnRpYWxz
KToKICAgICAgICAgICAgIGRlZiBfaXNfbWFjX29zX3goc2VsZik6CiAgICAgICAgICAgICAgICAg
cmV0dXJuIFRydWUKKwogICAgICAgICAgICAgZGVmIF9jcmVkZW50aWFsc19mcm9tX2tleWNoYWlu
KHNlbGYsIHVzZXJuYW1lKToKLSAgICAgICAgICAgICAgICByZXR1cm4gWyJ0ZXN0QHdlYmtpdC5v
cmciLCAiU0VDUkVUU0FVQ0UiXQorICAgICAgICAgICAgICAgIHJldHVybiAoInRlc3RAd2Via2l0
Lm9yZyIsICJTRUNSRVRTQVVDRSIpCisKKyAgICAgICAgICAgIGRlZiBfY3JlZGVudGlhbHNfZnJv
bV9lbnZpcm9ubWVudChzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gKE5vbmUsIE5vbmUp
CisKKyAgICAgICAgd2l0aCBfVGVtcG9yYXJ5RGlyZWN0b3J5KHN1ZmZpeD0ibm90X2FfZ2l0X3Jl
cG8iKSBhcyB0ZW1wX2Rpcl9wYXRoOgorICAgICAgICAgICAgY3JlZGVudGlhbHMgPSBGYWtlQ3Jl
ZGVudGlhbHMoImJ1Z3Mud2Via2l0Lm9yZyIsIGN3ZD10ZW1wX2Rpcl9wYXRoKQorICAgICAgICAg
ICAgIyBGSVhNRTogVXNpbmcgcmVhZF9jcmVkZW50aWFscyBoZXJlIHNlZW1zIHRvbyBicm9hZCBh
cyBoaWdoZXItcHJpb3JpdHkKKyAgICAgICAgICAgICMgY3JlZGVudGlhbCBzb3VyY2UgY291bGQg
YmUgYWZmZWN0ZWQgYnkgdGhlIHVzZXIncyBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoY3JlZGVudGlhbHMucmVhZF9jcmVkZW50aWFscygpLCAoInRlc3RAd2Via2l0
Lm9yZyIsICJTRUNSRVRTQVVDRSIpKQogCi0gICAgICAgIHRlbXBfZGlyX3BhdGggPSB0ZW1wZmls
ZS5ta2R0ZW1wKHN1ZmZpeD0ibm90X2FfZ2l0X3JlcG8iKQotICAgICAgICBjcmVkZW50aWFscyA9
IEZha2VDcmVkZW50aWFscygiYnVncy53ZWJraXQub3JnIiwgY3dkPXRlbXBfZGlyX3BhdGgpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3JlZGVudGlhbHMucmVhZF9jcmVkZW50aWFscygpLCBb
InRlc3RAd2Via2l0Lm9yZyIsICJTRUNSRVRTQVVDRSJdKQotICAgICAgICBvcy5ybWRpcih0ZW1w
X2Rpcl9wYXRoKQogCiAgICAgZGVmIHRlc3Rfa2V5cmluZ193aXRob3V0X2dpdF9yZXBvKHNlbGYp
OgorICAgICAgICAjIEZJWE1FOiBUaGlzIHNob3VsZCBzaGFyZSBtb3JlIGNvZGUgd2l0aCB0ZXN0
X3JlYWRfY3JlZGVudGlhbHNfd2l0aG91dF9naXRfcmVwbwogICAgICAgICBjbGFzcyBNb2NrS2V5
cmluZyhvYmplY3QpOgogICAgICAgICAgICAgZGVmIGdldF9wYXNzd29yZChzZWxmLCBob3N0LCB1
c2VybmFtZSk6CiAgICAgICAgICAgICAgICAgcmV0dXJuICJOT01OT01OT00iCiAKICAgICAgICAg
Y2xhc3MgRmFrZUNyZWRlbnRpYWxzKENyZWRlbnRpYWxzKToKLSAgICAgICAgICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBjd2QpOgotICAgICAgICAgICAgICAgIENyZWRlbnRpYWxzLl9faW5pdF9fKHNl
bGYsICJmYWtlLmhvc3RuYW1lIiwgY3dkPWN3ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBrZXlyaW5nPU1vY2tLZXlyaW5nKCkpCi0KICAgICAgICAgICAgIGRlZiBfaXNf
bWFjX29zX3goc2VsZik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKIAogICAgICAgICAg
ICAgZGVmIF9jcmVkZW50aWFsc19mcm9tX2tleWNoYWluKHNlbGYsIHVzZXJuYW1lKToKICAgICAg
ICAgICAgICAgICByZXR1cm4gKCJ0ZXN0QHdlYmtpdC5vcmciLCBOb25lKQogCi0gICAgICAgIHRl
bXBfZGlyX3BhdGggPSB0ZW1wZmlsZS5ta2R0ZW1wKHN1ZmZpeD0ibm90X2FfZ2l0X3JlcG8iKQot
ICAgICAgICBjcmVkZW50aWFscyA9IEZha2VDcmVkZW50aWFscyh0ZW1wX2Rpcl9wYXRoKQotICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNyZWRlbnRpYWxzLnJlYWRf
Y3JlZGVudGlhbHMoKSwgWyJ0ZXN0QHdlYmtpdC5vcmciLCAiTk9NTk9NTk9NIl0pCi0gICAgICAg
IGZpbmFsbHk6Ci0gICAgICAgICAgICBvcy5ybWRpcih0ZW1wX2Rpcl9wYXRoKQorICAgICAgICAg
ICAgZGVmIF9jcmVkZW50aWFsc19mcm9tX2Vudmlyb25tZW50KHNlbGYpOgorICAgICAgICAgICAg
ICAgIHJldHVybiAoTm9uZSwgTm9uZSkKKworICAgICAgICB3aXRoIF9UZW1wb3JhcnlEaXJlY3Rv
cnkoc3VmZml4PSJub3RfYV9naXRfcmVwbyIpIGFzIHRlbXBfZGlyX3BhdGg6CisgICAgICAgICAg
ICBjcmVkZW50aWFscyA9IEZha2VDcmVkZW50aWFscygiZmFrZS5ob3N0bmFtZSIsIGN3ZD10ZW1w
X2Rpcl9wYXRoLCBrZXlyaW5nPU1vY2tLZXlyaW5nKCkpCisgICAgICAgICAgICAjIEZJWE1FOiBV
c2luZyByZWFkX2NyZWRlbnRpYWxzIGhlcmUgc2VlbXMgdG9vIGJyb2FkIGFzIGhpZ2hlci1wcmlv
cml0eQorICAgICAgICAgICAgIyBjcmVkZW50aWFsIHNvdXJjZSBjb3VsZCBiZSBhZmZlY3RlZCBi
eSB0aGUgdXNlcidzIGVudmlyb25tZW50LgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChj
cmVkZW50aWFscy5yZWFkX2NyZWRlbnRpYWxzKCksICgidGVzdEB3ZWJraXQub3JnIiwgIk5PTU5P
TU5PTSIpKQorCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFp
bigpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>