<?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>77374</bug_id>
          
          <creation_ts>2012-01-30 15:12:40 -0800</creation_ts>
          <short_desc>IndexedDB: Raise exception during add/put call if autoIncrement key insertion will fail</short_desc>
          <delta_ts>2012-02-06 12:00:45 -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>WebCore Misc.</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>
          <dependson>76952</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joshua Bell">jsbell</reporter>
          <assigned_to name="Joshua Bell">jsbell</assigned_to>
          <cc>dgrogan</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>545459</commentid>
    <comment_count>0</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-01-30 15:12:40 -0800</bug_when>
    <thetext>For generated keys (i.e. autoIncrement) the generation step should occur within the async task within the transaction (per discussion on mailing list). 

Currently the key injection call is deferred until the asynchronous task is executed during the transaction. This leaves open a hole where the value may not support key injection (e.g. the value is a string, on which properties can not be set). In this case, Chrome currently fires an error event at the IDBRequest.

This may require that in put() we check to see if a value can be inserted (by inserting a dummy value?) and then in putInternal() we run the key generation step and actually insert the key.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545488</commentid>
    <comment_count>1</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-01-30 15:26:07 -0800</bug_when>
    <thetext>Don&apos;t try and fix this until the refactoring in https://bugs.webkit.org/show_bug.cgi?id=76952 lands</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548848</commentid>
    <comment_count>2</comment_count>
      <attachid>125363</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-03 10:48:38 -0800</bug_when>
    <thetext>Created attachment 125363
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549048</commentid>
    <comment_count>3</comment_count>
      <attachid>125363</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-02-03 13:57:58 -0800</bug_when>
    <thetext>Comment on attachment 125363
Patch

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

LGTM

I think you can delete at least the FIXME at line 211.  Can you change the line 214-217 if (!valueAfterInjection) clause to an ASSERT?

I&apos;m annoyed on behalf of the theoretical developer that we can&apos;t give error messages along with the exception so they don&apos;t have to consult the spec or other reference to figure out what, e.g., DATA_ERR actually means.

&gt; Source/WebCore/storage/IDBObjectStoreBackendImpl.cpp:156
&gt; +            if (autoIncrement &amp;&amp; !keyPathKey) {

Bummer that we have to do another sync call out to the utility process while the renderer process is synchronously waiting for the browser process.  Hopefully idb.next saves us from this madness soon.

&gt; Source/WebCore/storage/IDBObjectStoreBackendImpl.cpp:-171
&gt; -        const bool hasKeyPath = !objectStore-&gt;m_keyPath.isNull();

sanity check: these are strictly stylistic?  It seems lame that we assign objectStore = this and then use objectStore instead of just passing PassRefPtr&lt;IDBObjectStoreBackendImpl&gt;(this) to transaction-&gt;scheduleTask.  Though maybe I&apos;m missing a reason that that&apos;s not desirable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549065</commentid>
    <comment_count>4</comment_count>
      <attachid>125363</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-03 14:17:31 -0800</bug_when>
    <thetext>Comment on attachment 125363
Patch

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

&gt; I think you can delete at least the FIXME at line 211.  Can you change the line 214-217 if (!valueAfterInjection) clause to an ASSERT?

Will do.

&gt; I&apos;m annoyed on behalf of the theoretical developer that we can&apos;t give error messages along with the exception so they don&apos;t have to consult the spec or other reference to figure out what, e.g., DATA_ERR actually means.

No argument there. Even worse, in the latest revs of the spec several of the IDB-specific exception types are replaced with generic DOM4 exception types. Wheee. (I should file a bug on that, actually...)

&gt;&gt; Source/WebCore/storage/IDBObjectStoreBackendImpl.cpp:156
&gt;&gt; +            if (autoIncrement &amp;&amp; !keyPathKey) {
&gt; 
&gt; Bummer that we have to do another sync call out to the utility process while the renderer process is synchronously waiting for the browser process.  Hopefully idb.next saves us from this madness soon.

Indeed. :(

(As an aside, there&apos;s an incremental step we could consider: we could pull all of these precondition checks to the front end where they could be done in-proc. The only reason we can&apos;t do it trivially right now is that the metadata about the store is only stored in the back end and lookups like this-&gt;autoIncrement() are sync IPC call to the back end.)

&gt;&gt; Source/WebCore/storage/IDBObjectStoreBackendImpl.cpp:-171
&gt;&gt; -        const bool hasKeyPath = !objectStore-&gt;m_keyPath.isNull();
&gt; 
&gt; sanity check: these are strictly stylistic?  It seems lame that we assign objectStore = this and then use objectStore instead of just passing PassRefPtr&lt;IDBObjectStoreBackendImpl&gt;(this) to transaction-&gt;scheduleTask.  Though maybe I&apos;m missing a reason that that&apos;s not desirable.

Yes, stylistic.

Most of the uses in put() stem from my moving of checks from the static putInternal() function to the put() method. But the &quot;objectStore = this&quot; pattern is used throughout the IDB*BackendImpl.cpp files. The &quot;objectStore = this&quot; pattern is used in several methods; it would only be necessary if the scheduleTask call would deref |this| (which it would if the transaction was finished) and our refcount was already 0 (which it shouldn&apos;t be). I&apos;m not sure it was put in for a reason, or just cargo cult programming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549114</commentid>
    <comment_count>5</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-02-03 14:45:38 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt;&gt; Source/WebCore/storage/IDBObjectStoreBackendImpl.cpp:-171
&gt; &gt;&gt; -        const bool hasKeyPath = !objectStore-&gt;m_keyPath.isNull();
&gt; &gt; 
&gt; &gt; sanity check: these are strictly stylistic?  It seems lame that we assign objectStore = this and then use objectStore instead of just passing PassRefPtr&lt;IDBObjectStoreBackendImpl&gt;(this) to transaction-&gt;scheduleTask.  Though maybe I&apos;m missing a reason that that&apos;s not desirable.
&gt; 
&gt; Yes, stylistic.
&gt; 
&gt; Most of the uses in put() stem from my moving of checks from the static putInternal() function to the put() method. But the &quot;objectStore = this&quot; pattern is used throughout the IDB*BackendImpl.cpp files. The &quot;objectStore = this&quot; pattern is used in several methods; it would only be necessary if the scheduleTask call would deref |this| (which it would if the transaction was finished) and our refcount was already 0 (which it shouldn&apos;t be). I&apos;m not sure it was put in for a reason, or just cargo cult programming.

I think the refcount on IDBObjectStoreBackendImpl can be decremented on the webkit thread in response to an incoming IPC message.  The PassRefPtr needs to be used to guard against being deallocated in between scheduling the task and executing it.

git blame directed me here: https://bugs.webkit.org/show_bug.cgi?id=46823 where Andrei talks about it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549165</commentid>
    <comment_count>6</comment_count>
      <attachid>125435</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-03 15:38:29 -0800</bug_when>
    <thetext>Created attachment 125435
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549168</commentid>
    <comment_count>7</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-03 15:41:00 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; I think the refcount on IDBObjectStoreBackendImpl can be decremented on the webkit thread in response to an incoming IPC message.  The PassRefPtr needs to be used to guard against being deallocated in between scheduling the task and executing it.

*shakes fist at IPC* 

Okay. Although not necessary, I rolled back the stylistic changes in the latest patch so they&apos;re consistent. I added the ASSERT but left the &quot;if&quot; in place, changing the error type to UNKNOWN_ERR.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549246</commentid>
    <comment_count>8</comment_count>
      <attachid>125448</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-03 16:55:45 -0800</bug_when>
    <thetext>Created attachment 125448
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549249</commentid>
    <comment_count>9</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-03 16:57:58 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Created an attachment (id=125448) [details]
&gt; Patch

Rebased &amp; fixed merge conflict with other patch.

tony@, can you review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550172</commentid>
    <comment_count>10</comment_count>
      <attachid>125448</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-06 12:00:41 -0800</bug_when>
    <thetext>Comment on attachment 125448
Patch

Clearing flags on attachment: 125448

Committed r106830: &lt;http://trac.webkit.org/changeset/106830&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550173</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-06 12:00:45 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125363</attachid>
            <date>2012-02-03 10:48:38 -0800</date>
            <delta_ts>2012-02-03 15:38:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77374-20120203104837.patch</filename>
            <type>text/plain</type>
            <size>8879</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmVmNjU5OTFkYjhjNmQx
ODQ3ZjIyZWJjYmZjODM5YmM3ZGY4YzdlMC4uNjZiOGRjNmMxZTMyYTBjZDc4MDIzMjBlMzBkZGQ0
MDgyOWFlZDA1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTAyLTAzICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBSYWlz
ZSBleGNlcHRpb24gZHVyaW5nIGFkZC9wdXQgY2FsbCBpZiBhdXRvSW5jcmVtZW50IGtleSBpbnNl
cnRpb24gd2lsbCBmYWlsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03NzM3NAorCisgICAgICAgIElmIGEgcHV0IHJlcXVlc3Qgd2lsbCB1c2UgYSBrZXkg
Z2VuZXJhdG9yLCB0cnkgaW5zZXJ0aW5nIGEgZHVtbXkga2V5IGR1cmluZyB0aGUgc3luYworICAg
ICAgICBwdXQoKSBjYWxsIHRvIGNoZWNrIGlmIHRoZSBrZXkgaW5zZXJ0aW9uIHdpbGwgc3VjY2Vl
ZCBzbyBhbiBleGNlcHRpb24gY2FuIGJlIHJhaXNlZAorICAgICAgICBlYXJseSwgcmF0aGVyIHRo
YW4gZGVmZXJyaW5nIHRvIHRoZSBhc3luY2hyb25vdXMgdGFzay4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBzdG9yYWdlL2luZGV4ZWRkYi9r
ZXlwYXRoLWVkZ2VzLmh0bWwKKworICAgICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
OjpwdXQpOgorCiAyMDEyLTAyLTAyICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbR3RrXSBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQoKSBz
b21ldGltZXMgZmFpbHMgdG8gcHJvdmlkZSB0aGUgY29ycmVjdCBsaW5lCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAppbmRleCBj
ZTA0MmJlYjZmZDY2NDdlODI4NTI2Mjg0YmJlZmM5NTI4ZjFmNjc3Li5mMGM2MjNiNWM5ZTE5NDdi
NjBmMDgzMTQ2NjNlYTk0ZTU2NjU1M2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKQEAgLTEzMyw3ICsxMzMsNyBAQCB2
b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gcHJwVmFsdWUsCiAKICAgICBpZiAocHV0TW9kZSAhPSBDdXJzb3JVcGRhdGUp
IHsKICAgICAgICAgY29uc3QgYm9vbCBhdXRvSW5jcmVtZW50ID0gb2JqZWN0U3RvcmUtPmF1dG9J
bmNyZW1lbnQoKTsKLSAgICAgICAgY29uc3QgYm9vbCBoYXNLZXlQYXRoID0gIW9iamVjdFN0b3Jl
LT5tX2tleVBhdGguaXNOdWxsKCk7CisgICAgICAgIGNvbnN0IGJvb2wgaGFzS2V5UGF0aCA9ICFt
X2tleVBhdGguaXNOdWxsKCk7CiAKICAgICAgICAgaWYgKGhhc0tleVBhdGggJiYga2V5KSB7CiAg
ICAgICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKQEAgLTE0NCw3
ICsxNDQsNyBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dChQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gcHJwVmFsdWUsCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKGhhc0tleVBhdGgpIHsKLSAgICAgICAgICAgIFJlZlB0cjxJ
REJLZXk+IGtleVBhdGhLZXkgPSBmZXRjaEtleUZyb21LZXlQYXRoKHZhbHVlLmdldCgpLCBvYmpl
Y3RTdG9yZS0+bV9rZXlQYXRoKTsKKyAgICAgICAgICAgIFJlZlB0cjxJREJLZXk+IGtleVBhdGhL
ZXkgPSBmZXRjaEtleUZyb21LZXlQYXRoKHZhbHVlLmdldCgpLCBtX2tleVBhdGgpOwogICAgICAg
ICAgICAgaWYgKGtleVBhdGhLZXkgJiYgIWtleVBhdGhLZXktPnZhbGlkKCkpIHsKICAgICAgICAg
ICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKICAgICAgICAgICAg
ICAgICByZXR1cm47CkBAIC0xNTMsNiArMTUzLDE0IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbDo6cHV0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBwcnBWYWx1ZSwK
ICAgICAgICAgICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoYXV0
b0luY3JlbWVudCAmJiAha2V5UGF0aEtleSkgeworICAgICAgICAgICAgICAgIFJlZlB0cjxJREJL
ZXk+IGR1bW15S2V5ID0gSURCS2V5OjpjcmVhdGVOdW1iZXIoLTEpOworICAgICAgICAgICAgICAg
IFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlQWZ0ZXJJbmplY3Rpb24gPSBpbmpl
Y3RLZXlJbnRvS2V5UGF0aChkdW1teUtleSwgdmFsdWUsIG1fa2V5UGF0aCk7CisgICAgICAgICAg
ICAgICAgaWYgKCF2YWx1ZUFmdGVySW5qZWN0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgIGVj
ID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFfRVJSOworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
ICAgIGlmIChrZXkgJiYgIWtleS0+dmFsaWQoKSkgewogICAgICAgICAgICAgZWMgPSBJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7CkBAIC0xNjgsOSArMTc2LDkgQEAgdm9pZCBJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsOjpwdXQoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IHBycFZhbHVlLAogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUKGtleSk7
Ci0gICAgICAgIGNvbnN0IGJvb2wgaGFzS2V5UGF0aCA9ICFvYmplY3RTdG9yZS0+bV9rZXlQYXRo
LmlzTnVsbCgpOworICAgICAgICBjb25zdCBib29sIGhhc0tleVBhdGggPSAhbV9rZXlQYXRoLmlz
TnVsbCgpOwogICAgICAgICBpZiAoaGFzS2V5UGF0aCkgewotICAgICAgICAgICAgUmVmUHRyPElE
QktleT4ga2V5UGF0aEtleSA9IGZldGNoS2V5RnJvbUtleVBhdGgodmFsdWUuZ2V0KCksIG9iamVj
dFN0b3JlLT5tX2tleVBhdGgpOworICAgICAgICAgICAgUmVmUHRyPElEQktleT4ga2V5UGF0aEtl
eSA9IGZldGNoS2V5RnJvbUtleVBhdGgodmFsdWUuZ2V0KCksIG1fa2V5UGF0aCk7CiAgICAgICAg
ICAgICBpZiAoIWtleVBhdGhLZXkgfHwgIWtleVBhdGhLZXktPmlzRXF1YWwoa2V5LmdldCgpKSkg
ewogICAgICAgICAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFfRVJSOwog
ICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmYzU3NGIxYWEwMWQ4YzFiZjkxZGE2NzYz
NGQxZGE3ZjI3M2ZiZDNiLi40N2Q0NzBhMTczMDQwMWIzOWYzMTJlZDgxNDYxMzBmNzJmYjc4ZTMz
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDItMDMgIEpvc2h1YSBCZWxsICA8anNiZWxs
QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFJhaXNlIGV4Y2VwdGlvbiBkdXJp
bmcgYWRkL3B1dCBjYWxsIGlmIGF1dG9JbmNyZW1lbnQga2V5IGluc2VydGlvbiB3aWxsIGZhaWwK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3Mzc0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdG9yYWdl
L2luZGV4ZWRkYi9rZXlwYXRoLWVkZ2VzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdl
L2luZGV4ZWRkYi9rZXlwYXRoLWVkZ2VzLmh0bWw6CisKIDIwMTItMDItMDIgIFJhdWwgSHVkZWEg
IDxyaHVkZWFAYWRvYmUuY29tPgogCiAgICAgICAgIFJlZ2lvbnMgc2hvdWxkIGlnbm9yZSB0aGUg
c2F2ZWQgY3VycmVudFJlbmRlckZsb3dUaHJlYWQgZHVyaW5nIHJlcGFpbnRpbmcKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgtZWRnZXMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5cGF0aC1lZGdlcy1leHBlY3Rl
ZC50eHQKaW5kZXggZTVmY2EzMmFjNzliNzUyMDI2MTI5OGRkZDZlZjI5YWRkZjVkOTVkOC4uOTJk
MmFlOWI5YmY4ODBjNjgyY2E4NGI0OTg3MWNjN2FmMmU0ZTQwYiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5cGF0aC1lZGdlcy1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5cGF0aC1lZGdlcy1leHBlY3RlZC50eHQK
QEAgLTQ1LDEyICs0NSwxNSBAQCB0ZXN0S2V5UGF0aHNBbmRHZW5lcmF0b3IoKToKIHRyYW5zYWN0
aW9uID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZS13aXRoLXBhdGgtYW5kLWdlbmVyYXRvciddLCBJ
REJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKQogc3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9y
ZSgnc3RvcmUtd2l0aC1wYXRoLWFuZC1nZW5lcmF0b3InKQogCi1LZXkgcGF0aCBkb2Vzbid0IHJl
c29sdmUgdG8gYSB2YWx1ZTsgc2hvdWxkIHlpZWxkIG51bGwsIHB1dCByZXF1ZXN0IHNob3VsZCBy
YWlzZSBlcnJvciBldmVudAotc3RvcmUucHV0KG51bGwpCi1QQVNTIEVycm9yIGV2ZW50IHJhaXNl
ZDogVGhlIGdlbmVyYXRlZCBrZXkgY291bGQgbm90IGJlIGluc2VydGVkIGludG8gdGhlIG9iamVj
dCB1c2luZyB0aGUga2V5UGF0aC4KLVBBU1MgZXZlbnQudGFyZ2V0LmVycm9yQ29kZSBpcyBJREJE
YXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUgotUEFTUyBldmVudC5jYW5jZWxhYmxlIGlzIHRydWUK
LWV2ZW50LnByZXZlbnREZWZhdWx0KCkKK0tleSBwYXRoIGRvZXNuJ3QgcmVzb2x2ZSB0byBhIHZh
bHVlOyBzaG91bGQgeWllbGQgbnVsbCBidXQgaW5zZXJ0aW9uIHdvdWxkIGZhaWwsIHNvIHB1dCBy
ZXF1ZXN0IHNob3VsZCByYWlzZSBleGNlcHRpb24KK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBz
dG9yZS5wdXQobnVsbCkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMg
SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIKKworS2V5IHBhdGggZG9lc24ndCByZXNvbHZl
IHRvIGEgdmFsdWU7IHNob3VsZCB5aWVsZCBudWxsIGJ1dCBpbnNlcnRpb24gd291bGQgZmFpbCwg
c28gcHV0IHJlcXVlc3Qgc2hvdWxkIHJhaXNlIGV4Y2VwdGlvbgorRXhwZWN0aW5nIGV4Y2VwdGlv
biBmcm9tIHN0b3JlLnB1dCgnc3RyaW5nJykKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQ
QVNTIGNvZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIKIAogS2V5IHBhdGggZG9l
c24ndCByZXNvbHZlIHRvIGEgdmFsdWU7IHNob3VsZCB5aWVsZCBudWxsLCBrZXkgc2hvdWxkIGJl
IGdlbmVyYXRlZCwgcHV0IHJlcXVlc3Qgc2hvdWxkIHN1Y2NlZWQKIHN0b3JlLnB1dCh7fSkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgtZWRnZXMuaHRt
bCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgtZWRnZXMuaHRtbAppbmRl
eCA3NjgwOGNhYzJiY2YzZTA3ZGZjOTFhMjM1ZDFhYTQ0NTA5YzllNWZiLi5mOGM5MDQ5YjM4ODhh
NjkxOGVhYTczNGE1MjZiOWQ4NjZkODVhNjRkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9rZXlwYXRoLWVkZ2VzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIva2V5cGF0aC1lZGdlcy5odG1sCkBAIC04OCwzMiArODgsMzEgQEAgZnVuY3Rp
b24gdGVzdEtleVBhdGhzQW5kR2VuZXJhdG9yKCkKICAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0
b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlLXdpdGgtcGF0aC1hbmQtZ2VuZXJh
dG9yJykiKTsKIAogICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiS2V5IHBhdGggZG9lc24ndCBy
ZXNvbHZlIHRvIGEgdmFsdWU7IHNob3VsZCB5aWVsZCBudWxsLCBwdXQgcmVxdWVzdCBzaG91bGQg
cmFpc2UgZXJyb3IgZXZlbnQiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUucHV0
KG51bGwpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24gKGUpIHsKLSAgICAgICAg
dGVzdFBhc3NlZCgiRXJyb3IgZXZlbnQgcmFpc2VkOiAiICsgZS50YXJnZXQud2Via2l0RXJyb3JN
ZXNzYWdlKTsKLSAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5lcnJvckNvZGUiLCAiSURC
RGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCJldmVu
dC5jYW5jZWxhYmxlIik7Ci0gICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnByZXZlbnREZWZhdWx0
KCkiKTsKKyAgICBkZWJ1ZygiS2V5IHBhdGggZG9lc24ndCByZXNvbHZlIHRvIGEgdmFsdWU7IHNo
b3VsZCB5aWVsZCBudWxsIGJ1dCBpbnNlcnRpb24gd291bGQgZmFpbCwgc28gcHV0IHJlcXVlc3Qg
c2hvdWxkIHJhaXNlIGV4Y2VwdGlvbiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0
b3JlLnB1dChudWxsKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworCisgICAg
ZGVidWcoIiIpOworICAgIGRlYnVnKCJLZXkgcGF0aCBkb2Vzbid0IHJlc29sdmUgdG8gYSB2YWx1
ZTsgc2hvdWxkIHlpZWxkIG51bGwgYnV0IGluc2VydGlvbiB3b3VsZCBmYWlsLCBzbyBwdXQgcmVx
dWVzdCBzaG91bGQgcmFpc2UgZXhjZXB0aW9uIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlv
bigic3RvcmUucHV0KCdzdHJpbmcnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIp
OworCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJLZXkgcGF0aCBkb2Vzbid0IHJlc29sdmUg
dG8gYSB2YWx1ZTsgc2hvdWxkIHlpZWxkIG51bGwsIGtleSBzaG91bGQgYmUgZ2VuZXJhdGVkLCBw
dXQgcmVxdWVzdCBzaG91bGQgc3VjY2VlZCIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJz
dG9yZS5wdXQoe30pIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgIHRl
c3RQYXNzZWQoInN0b3JlLnB1dCBzdWNjZWVkZWQiKTsKKworICAgICAgICBkZWJ1ZygiIik7Cisg
ICAgICAgIGRlYnVnKCJLZXkgcGF0aCByZXNvbHZlcyB0byBhIHZhbHVlIHRoYXQgaXMgaW52YWxp
ZCBrZXk7IHNob3VsZCB5aWVsZCAnaW52YWxpZCcga2V5LCBzaG91bGQgdGhyb3cgREFUQV9FUlIi
KTsKKyAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUucHV0KHtmb286IG51bGx9
KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwogCiAgICAgICAgIGRlYnVnKCIi
KTsKLSAgICAgICAgZGVidWcoIktleSBwYXRoIGRvZXNuJ3QgcmVzb2x2ZSB0byBhIHZhbHVlOyBz
aG91bGQgeWllbGQgbnVsbCwga2V5IHNob3VsZCBiZSBnZW5lcmF0ZWQsIHB1dCByZXF1ZXN0IHNo
b3VsZCBzdWNjZWVkIik7Ci0gICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5wdXQo
e30pIik7CisgICAgICAgIGRlYnVnKCJLZXkgcGF0aCByZXNvbHZlcyB0byBhIHZhbHVlIHRoYXQg
aXMgdmFsaWQga2V5OyBzaG91bGQgeWllbGQgJ3N0cmluZycga2V5LCBzaG91bGQgc3VjY2VlZCIp
OworICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUucHV0KHtmb286ICd6b28nfSki
KTsKICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CiAg
ICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgdGVz
dFBhc3NlZCgic3RvcmUucHV0IHN1Y2NlZWRlZCIpOwogCi0gICAgICAgICAgICBkZWJ1ZygiIik7
Ci0gICAgICAgICAgICBkZWJ1ZygiS2V5IHBhdGggcmVzb2x2ZXMgdG8gYSB2YWx1ZSB0aGF0IGlz
IGludmFsaWQga2V5OyBzaG91bGQgeWllbGQgJ2ludmFsaWQnIGtleSwgc2hvdWxkIHRocm93IERB
VEFfRVJSIik7Ci0gICAgICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5wdXQo
e2ZvbzogbnVsbH0pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0KLSAgICAg
ICAgICAgIGRlYnVnKCIiKTsKLSAgICAgICAgICAgIGRlYnVnKCJLZXkgcGF0aCByZXNvbHZlcyB0
byBhIHZhbHVlIHRoYXQgaXMgdmFsaWQga2V5OyBzaG91bGQgeWllbGQgJ3N0cmluZycga2V5LCBz
aG91bGQgc3VjY2VlZCIpOwotICAgICAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3Jl
LnB1dCh7Zm9vOiAnem9vJ30pIik7Ci0gICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVu
Y3Rpb24gKCkgewotICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoInN0b3JlLnB1dCBzdWNjZWVk
ZWQiKTsKLSAgICAgICAgICAgIH07CiAgICAgICAgIH07CiAgICAgfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125435</attachid>
            <date>2012-02-03 15:38:29 -0800</date>
            <delta_ts>2012-02-03 16:55:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77374-20120203153828.patch</filename>
            <type>text/plain</type>
            <size>8643</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NjY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjQ2MzllMmYxNzU1Mzc1
YzU3M2NkMmJhZGU4YjA4MDBjMjg2ZGUzNi4uNGM3OTAwYzQzZTJlMDlmZjE0ZWQ1ZjhlYWY3ZGNk
ZTgwNDk4MGZhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTAyLTAzICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBSYWlz
ZSBleGNlcHRpb24gZHVyaW5nIGFkZC9wdXQgY2FsbCBpZiBhdXRvSW5jcmVtZW50IGtleSBpbnNl
cnRpb24gd2lsbCBmYWlsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03NzM3NAorCisgICAgICAgIElmIGEgcHV0IHJlcXVlc3Qgd2lsbCB1c2UgYSBrZXkg
Z2VuZXJhdG9yLCB0cnkgaW5zZXJ0aW5nIGEgZHVtbXkga2V5IGR1cmluZyB0aGUgc3luYworICAg
ICAgICBwdXQoKSBjYWxsIHRvIGNoZWNrIGlmIHRoZSBrZXkgaW5zZXJ0aW9uIHdpbGwgc3VjY2Vl
ZCBzbyBhbiBleGNlcHRpb24gY2FuIGJlIHJhaXNlZAorICAgICAgICBlYXJseSwgcmF0aGVyIHRo
YW4gZGVmZXJyaW5nIHRvIHRoZSBhc3luY2hyb25vdXMgdGFzay4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBzdG9yYWdlL2luZGV4ZWRkYi9r
ZXlwYXRoLWVkZ2VzLmh0bWwKKworICAgICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
OjpwdXQpOgorCiAyMDEyLTAyLTAzICBCYWxhenMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBTcGVjdWxhdGl2ZSB1bnJldmlld2VkIGJ1aWxkIGZpeCBmb3IgUXQtV2lu
ZG93cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbC5jcHAKaW5kZXggY2UwNDJiZWI2ZmQ2NjQ3ZTgyODUyNjI4NGJiZWZjOTUyOGYxZjY3
Ny4uNzlhMmYyODEwZWNlZTI1MTRmMzBhNzZiMTdhMDQwNmQ2M2RjOWVjYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCkBA
IC0xNTMsNiArMTUzLDE0IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0KFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBwcnBWYWx1ZSwKICAgICAgICAgICAgICAg
ICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoYXV0b0luY3JlbWVudCAmJiAh
a2V5UGF0aEtleSkgeworICAgICAgICAgICAgICAgIFJlZlB0cjxJREJLZXk+IGR1bW15S2V5ID0g
SURCS2V5OjpjcmVhdGVOdW1iZXIoLTEpOworICAgICAgICAgICAgICAgIFJlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IHZhbHVlQWZ0ZXJJbmplY3Rpb24gPSBpbmplY3RLZXlJbnRvS2V5UGF0
aChkdW1teUtleSwgdmFsdWUsIG9iamVjdFN0b3JlLT5tX2tleVBhdGgpOworICAgICAgICAgICAg
ICAgIGlmICghdmFsdWVBZnRlckluamVjdGlvbikgeworICAgICAgICAgICAgICAgICAgICBlYyA9
IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAg
ICBpZiAoa2V5ICYmICFrZXktPnZhbGlkKCkpIHsKICAgICAgICAgICAgIGVjID0gSURCRGF0YWJh
c2VFeGNlcHRpb246OkRBVEFfRVJSOwpAQCAtMjAwLDExICsyMDgsMTIgQEAgdm9pZCBJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsOjpwdXRJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
UGFzc1JlZlB0cjwKICAgICAgICAgICAgIGlmICgha2V5KSB7CiAgICAgICAgICAgICAgICAgUmVm
UHRyPElEQktleT4gYXV0b0luY0tleSA9IG9iamVjdFN0b3JlLT5nZW5BdXRvSW5jcmVtZW50S2V5
KCk7CiAgICAgICAgICAgICAgICAgaWYgKGhhc0tleVBhdGgpIHsKLSAgICAgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IEFkZCBjaGVja3MgaW4gcHV0KCkgdG8gZW5zdXJlIHRoaXMgd2lsbCBhbHdh
eXMgc3VjY2VlZCAoYXBhcnQgZnJvbSBJL08gZXJyb3JzKS4KLSAgICAgICAgICAgICAgICAgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3Mzc0CiAgICAgICAg
ICAgICAgICAgICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlQWZ0ZXJJbmpl
Y3Rpb24gPSBpbmplY3RLZXlJbnRvS2V5UGF0aChhdXRvSW5jS2V5LCB2YWx1ZSwgb2JqZWN0U3Rv
cmUtPm1fa2V5UGF0aCk7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVCh2YWx1ZUFmdGVySW5q
ZWN0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZUFmdGVySW5qZWN0aW9uKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VF
cnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUiwgIlRoZSBnZW5lcmF0
ZWQga2V5IGNvdWxkIG5vdCBiZSBpbnNlcnRlZCBpbnRvIHRoZSBvYmplY3QgdXNpbmcgdGhlIGtl
eVBhdGguIikpOworICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2tzIGluIHB1dCgpIGVu
c3VyZSB0aGlzIHNob3VsZCBvbmx5IGhhcHBlbiBpZiBJL08gZXJyb3Igb2NjdXJzLgorICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoZSBJbmRleGVkIERhdGFiYXNlIHNwZWNpZmlj
YXRpb24gZG9lcyBub3QgaGF2ZSBhbiBlcnJvciBjb2RlIGRlZGljYXRlZCB0byBJL08gZXJyb3Jz
LgorICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNl
RXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJJbnRlcm5h
bCBlcnJvciBpbnNlcnRpbmcgZ2VuZXJhdGVkIGtleSBpbnRvIHRoZSBvYmplY3QuIikpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWVBZnRlckluamVjdGlvbjsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0YTc0
ZTc2MWYxYzM1YTZmNmIzZDAzYWQ4NzFjYzg1ZjdmMjM0NGJmLi5hM2Q4MjQxNjBmYzE0MGU3ZjBh
MjEzYjI0YzBiMWJjOGI5MTEzYjdlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDItMDMg
IEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6
IFJhaXNlIGV4Y2VwdGlvbiBkdXJpbmcgYWRkL3B1dCBjYWxsIGlmIGF1dG9JbmNyZW1lbnQga2V5
IGluc2VydGlvbiB3aWxsIGZhaWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTc3Mzc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWVkZ2VzLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWVkZ2VzLmh0bWw6CisKIDIw
MTItMDItMDMgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDY2NTQuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWVkZ2VzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgtZWRnZXMtZXhwZWN0ZWQudHh0Cmlu
ZGV4IGU1ZmNhMzJhYzc5Yjc1MjAyNjEyOThkZGQ2ZWYyOWFkZGY1ZDk1ZDguLjkyZDJhZTliOWJm
ODgwYzY4MmNhODRiNDk4NzFjYzdhZjJlNGU0MGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgtZWRnZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgtZWRnZXMtZXhwZWN0ZWQudHh0CkBAIC00NSwx
MiArNDUsMTUgQEAgdGVzdEtleVBhdGhzQW5kR2VuZXJhdG9yKCk6CiB0cmFuc2FjdGlvbiA9IGRi
LnRyYW5zYWN0aW9uKFsnc3RvcmUtd2l0aC1wYXRoLWFuZC1nZW5lcmF0b3InXSwgSURCVHJhbnNh
Y3Rpb24uUkVBRF9XUklURSkKIHN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3Jl
LXdpdGgtcGF0aC1hbmQtZ2VuZXJhdG9yJykKIAotS2V5IHBhdGggZG9lc24ndCByZXNvbHZlIHRv
IGEgdmFsdWU7IHNob3VsZCB5aWVsZCBudWxsLCBwdXQgcmVxdWVzdCBzaG91bGQgcmFpc2UgZXJy
b3IgZXZlbnQKLXN0b3JlLnB1dChudWxsKQotUEFTUyBFcnJvciBldmVudCByYWlzZWQ6IFRoZSBn
ZW5lcmF0ZWQga2V5IGNvdWxkIG5vdCBiZSBpbnNlcnRlZCBpbnRvIHRoZSBvYmplY3QgdXNpbmcg
dGhlIGtleVBhdGguCi1QQVNTIGV2ZW50LnRhcmdldC5lcnJvckNvZGUgaXMgSURCRGF0YWJhc2VF
eGNlcHRpb24uREFUQV9FUlIKLVBBU1MgZXZlbnQuY2FuY2VsYWJsZSBpcyB0cnVlCi1ldmVudC5w
cmV2ZW50RGVmYXVsdCgpCitLZXkgcGF0aCBkb2Vzbid0IHJlc29sdmUgdG8gYSB2YWx1ZTsgc2hv
dWxkIHlpZWxkIG51bGwgYnV0IGluc2VydGlvbiB3b3VsZCBmYWlsLCBzbyBwdXQgcmVxdWVzdCBz
aG91bGQgcmFpc2UgZXhjZXB0aW9uCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmUucHV0
KG51bGwpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIElEQkRhdGFi
YXNlRXhjZXB0aW9uLkRBVEFfRVJSCisKK0tleSBwYXRoIGRvZXNuJ3QgcmVzb2x2ZSB0byBhIHZh
bHVlOyBzaG91bGQgeWllbGQgbnVsbCBidXQgaW5zZXJ0aW9uIHdvdWxkIGZhaWwsIHNvIHB1dCBy
ZXF1ZXN0IHNob3VsZCByYWlzZSBleGNlcHRpb24KK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBz
dG9yZS5wdXQoJ3N0cmluZycpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2Rl
IGlzIElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSCiAKIEtleSBwYXRoIGRvZXNuJ3QgcmVz
b2x2ZSB0byBhIHZhbHVlOyBzaG91bGQgeWllbGQgbnVsbCwga2V5IHNob3VsZCBiZSBnZW5lcmF0
ZWQsIHB1dCByZXF1ZXN0IHNob3VsZCBzdWNjZWVkCiBzdG9yZS5wdXQoe30pCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWVkZ2VzLmh0bWwgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWVkZ2VzLmh0bWwKaW5kZXggNzY4MDhj
YWMyYmNmM2UwN2RmYzkxYTIzNWQxYWE0NDUwOWM5ZTVmYi4uZjhjOTA0OWIzODg4YTY5MThlYWE3
MzRhNTI2YjlkODY2ZDg1YTY0ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIva2V5cGF0aC1lZGdlcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL2tleXBhdGgtZWRnZXMuaHRtbApAQCAtODgsMzIgKzg4LDMxIEBAIGZ1bmN0aW9uIHRlc3RL
ZXlQYXRoc0FuZEdlbmVyYXRvcigpCiAgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRy
YW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZS13aXRoLXBhdGgtYW5kLWdlbmVyYXRvcicpIik7
CiAKICAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIktleSBwYXRoIGRvZXNuJ3QgcmVzb2x2ZSB0
byBhIHZhbHVlOyBzaG91bGQgeWllbGQgbnVsbCwgcHV0IHJlcXVlc3Qgc2hvdWxkIHJhaXNlIGVy
cm9yIGV2ZW50Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLnB1dChudWxsKSIp
OwotICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uIChlKSB7Ci0gICAgICAgIHRlc3RQYXNz
ZWQoIkVycm9yIGV2ZW50IHJhaXNlZDogIiArIGUudGFyZ2V0LndlYmtpdEVycm9yTWVzc2FnZSk7
Ci0gICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQuZXJyb3JDb2RlIiwgIklEQkRhdGFiYXNl
RXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgiZXZlbnQuY2FuY2Vs
YWJsZSIpOwotICAgICAgICBldmFsQW5kTG9nKCJldmVudC5wcmV2ZW50RGVmYXVsdCgpIik7Cisg
ICAgZGVidWcoIktleSBwYXRoIGRvZXNuJ3QgcmVzb2x2ZSB0byBhIHZhbHVlOyBzaG91bGQgeWll
bGQgbnVsbCBidXQgaW5zZXJ0aW9uIHdvdWxkIGZhaWwsIHNvIHB1dCByZXF1ZXN0IHNob3VsZCBy
YWlzZSBleGNlcHRpb24iKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5wdXQo
bnVsbCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKworICAgIGRlYnVnKCIi
KTsKKyAgICBkZWJ1ZygiS2V5IHBhdGggZG9lc24ndCByZXNvbHZlIHRvIGEgdmFsdWU7IHNob3Vs
ZCB5aWVsZCBudWxsIGJ1dCBpbnNlcnRpb24gd291bGQgZmFpbCwgc28gcHV0IHJlcXVlc3Qgc2hv
dWxkIHJhaXNlIGV4Y2VwdGlvbiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3Jl
LnB1dCgnc3RyaW5nJykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKworICAg
IGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiS2V5IHBhdGggZG9lc24ndCByZXNvbHZlIHRvIGEgdmFs
dWU7IHNob3VsZCB5aWVsZCBudWxsLCBrZXkgc2hvdWxkIGJlIGdlbmVyYXRlZCwgcHV0IHJlcXVl
c3Qgc2hvdWxkIHN1Y2NlZWQiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUucHV0
KHt9KSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICB0ZXN0UGFzc2Vk
KCJzdG9yZS5wdXQgc3VjY2VlZGVkIik7CisKKyAgICAgICAgZGVidWcoIiIpOworICAgICAgICBk
ZWJ1ZygiS2V5IHBhdGggcmVzb2x2ZXMgdG8gYSB2YWx1ZSB0aGF0IGlzIGludmFsaWQga2V5OyBz
aG91bGQgeWllbGQgJ2ludmFsaWQnIGtleSwgc2hvdWxkIHRocm93IERBVEFfRVJSIik7CisgICAg
ICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLnB1dCh7Zm9vOiBudWxsfSkiLCAiSURC
RGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKIAogICAgICAgICBkZWJ1ZygiIik7Ci0gICAg
ICAgIGRlYnVnKCJLZXkgcGF0aCBkb2Vzbid0IHJlc29sdmUgdG8gYSB2YWx1ZTsgc2hvdWxkIHlp
ZWxkIG51bGwsIGtleSBzaG91bGQgYmUgZ2VuZXJhdGVkLCBwdXQgcmVxdWVzdCBzaG91bGQgc3Vj
Y2VlZCIpOwotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUucHV0KHt9KSIpOwor
ICAgICAgICBkZWJ1ZygiS2V5IHBhdGggcmVzb2x2ZXMgdG8gYSB2YWx1ZSB0aGF0IGlzIHZhbGlk
IGtleTsgc2hvdWxkIHlpZWxkICdzdHJpbmcnIGtleSwgc2hvdWxkIHN1Y2NlZWQiKTsKKyAgICAg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLnB1dCh7Zm9vOiAnem9vJ30pIik7CiAgICAg
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwogICAgICAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIHRlc3RQYXNzZWQo
InN0b3JlLnB1dCBzdWNjZWVkZWQiKTsKIAotICAgICAgICAgICAgZGVidWcoIiIpOwotICAgICAg
ICAgICAgZGVidWcoIktleSBwYXRoIHJlc29sdmVzIHRvIGEgdmFsdWUgdGhhdCBpcyBpbnZhbGlk
IGtleTsgc2hvdWxkIHlpZWxkICdpbnZhbGlkJyBrZXksIHNob3VsZCB0aHJvdyBEQVRBX0VSUiIp
OwotICAgICAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUucHV0KHtmb286IG51
bGx9KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotCi0gICAgICAgICAgICBk
ZWJ1ZygiIik7Ci0gICAgICAgICAgICBkZWJ1ZygiS2V5IHBhdGggcmVzb2x2ZXMgdG8gYSB2YWx1
ZSB0aGF0IGlzIHZhbGlkIGtleTsgc2hvdWxkIHlpZWxkICdzdHJpbmcnIGtleSwgc2hvdWxkIHN1
Y2NlZWQiKTsKLSAgICAgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5wdXQoe2Zv
bzogJ3pvbyd9KSIpOwotICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci0gICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgp
IHsKLSAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJzdG9yZS5wdXQgc3VjY2VlZGVkIik7Ci0g
ICAgICAgICAgICB9OwogICAgICAgICB9OwogICAgIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125448</attachid>
            <date>2012-02-03 16:55:45 -0800</date>
            <delta_ts>2012-02-06 12:00:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77374-20120203165544.patch</filename>
            <type>text/plain</type>
            <size>8827</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NzA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTRmNzJhZmE4NGFhOTk1
N2VlYTQxZjgzZjhhMDk2MGVkOGM0MmY3NS4uZDAzMmY0MGMxYWFmOTE4ZDRmNmUxMzViZDJjZThi
MWU4NThkZGI2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTAyLTAzICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBSYWlz
ZSBleGNlcHRpb24gZHVyaW5nIGFkZC9wdXQgY2FsbCBpZiBhdXRvSW5jcmVtZW50IGtleSBpbnNl
cnRpb24gd2lsbCBmYWlsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03NzM3NAorCisgICAgICAgIElmIGEgcHV0IHJlcXVlc3Qgd2lsbCB1c2UgYSBrZXkg
Z2VuZXJhdG9yLCB0cnkgaW5zZXJ0aW5nIGEgZHVtbXkga2V5IGR1cmluZyB0aGUgc3luYworICAg
ICAgICBwdXQoKSBjYWxsIHRvIGNoZWNrIGlmIHRoZSBrZXkgaW5zZXJ0aW9uIHdpbGwgc3VjY2Vl
ZCBzbyBhbiBleGNlcHRpb24gY2FuIGJlIHJhaXNlZAorICAgICAgICBlYXJseSwgcmF0aGVyIHRo
YW4gZGVmZXJyaW5nIHRvIHRoZSBhc3luY2hyb25vdXMgdGFzay4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBzdG9yYWdlL2luZGV4ZWRkYi9r
ZXlwYXRoLWVkZ2VzLmh0bWwKKworICAgICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
OjpwdXQpOgorCiAyMDEyLTAyLTAzICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4K
IAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTA3NDI0NDE+IGFuZCBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc3NjYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCmluZGV4IGY5YmQ3ODAyMzM0MWNk
NTNmYWFhZGU1NDgzODI5NTk3MzZkNDA2ODAuLmYwN2VhM2VlYmE2ZWU3YTMwNWU3ZTk1ZjIzM2Nh
NzBlOTkwN2U2NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsLmNwcApAQCAtMTUzLDYgKzE1MywxNCBAQCB2b2lkIElEQk9iamVj
dFN0b3JlQmFja2VuZEltcGw6OnB1dChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
cHJwVmFsdWUsCiAgICAgICAgICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFU
QV9FUlI7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQorICAgICAgICAg
ICAgaWYgKGF1dG9JbmNyZW1lbnQgJiYgIWtleVBhdGhLZXkpIHsKKyAgICAgICAgICAgICAgICBS
ZWZQdHI8SURCS2V5PiBkdW1teUtleSA9IElEQktleTo6Y3JlYXRlTnVtYmVyKC0xKTsKKyAgICAg
ICAgICAgICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZUFmdGVySW5qZWN0
aW9uID0gaW5qZWN0S2V5SW50b0tleVBhdGgoZHVtbXlLZXksIHZhbHVlLCBvYmplY3RTdG9yZS0+
bV9rZXlQYXRoKTsKKyAgICAgICAgICAgICAgICBpZiAoIXZhbHVlQWZ0ZXJJbmplY3Rpb24pIHsK
KyAgICAgICAgICAgICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICAgICAgaWYgKGtleSAmJiAha2V5LT52YWxpZCgpKSB7CiAg
ICAgICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKQEAgLTIwOCwx
MiArMjE2LDEzIEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0SW50ZXJuYWwo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8CiAgICAgICAgICAgICBpZiAoIWtl
eSkgewogICAgICAgICAgICAgICAgIFJlZlB0cjxJREJLZXk+IGF1dG9JbmNLZXkgPSBvYmplY3RT
dG9yZS0+Z2VuQXV0b0luY3JlbWVudEtleSgpOwogICAgICAgICAgICAgICAgIGlmIChoYXNLZXlQ
YXRoKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgY2hlY2tzIGluIHB1dCgp
IHRvIGVuc3VyZSB0aGlzIHdpbGwgYWx3YXlzIHN1Y2NlZWQgKGFwYXJ0IGZyb20gSS9PIGVycm9y
cykuCi0gICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03NzM3NAogICAgICAgICAgICAgICAgICAgICBSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiB2YWx1ZUFmdGVySW5qZWN0aW9uID0gaW5qZWN0S2V5SW50b0tleVBhdGgoYXV0
b0luY0tleSwgdmFsdWUsIG9iamVjdFN0b3JlLT5tX2tleVBhdGgpOworICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQodmFsdWVBZnRlckluamVjdGlvbik7CiAgICAgICAgICAgICAgICAgICAgIGlm
ICghdmFsdWVBZnRlckluamVjdGlvbikgewogICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0
U3RvcmUtPnJlc2V0QXV0b0luY3JlbWVudEtleUNhY2hlKCk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFi
YXNlRXhjZXB0aW9uOjpEQVRBX0VSUiwgIlRoZSBnZW5lcmF0ZWQga2V5IGNvdWxkIG5vdCBiZSBp
bnNlcnRlZCBpbnRvIHRoZSBvYmplY3QgdXNpbmcgdGhlIGtleVBhdGguIikpOworICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gQ2hlY2tzIGluIHB1dCgpIGVuc3VyZSB0aGlzIHNob3VsZCBvbmx5
IGhhcHBlbiBpZiBJL08gZXJyb3Igb2NjdXJzLgorICAgICAgICAgICAgICAgICAgICAgICAgLy8g
RklYTUU6IFRoZSBJbmRleGVkIERhdGFiYXNlIHNwZWNpZmljYXRpb24gZG9lcyBub3QgaGF2ZSBh
biBlcnJvciBjb2RlIGRlZGljYXRlZCB0byBJL08gZXJyb3JzLgorICAgICAgICAgICAgICAgICAg
ICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJJbnRlcm5hbCBlcnJvciBpbnNlcnRpbmcgZ2Vu
ZXJhdGVkIGtleSBpbnRvIHRoZSBvYmplY3QuIikpOwogICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIHZhbHVl
ID0gdmFsdWVBZnRlckluamVjdGlvbjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlZmRhZmQ3N2VlNjA3NGVkZTg1NjQwZTA0
NDRhMzQwYmVjZWM4MzZhLi5lY2ZiMjExOWMzZjRjMGIwODA5NTUyMmRkMzhmYzNjZTEzMTE3YjFj
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMTUgQEAKIDIwMTItMDItMDMgIEpvc2h1YSBCZWxsICA8anNiZWxs
QGNocm9taXVtLm9yZz4KIAorICAgICAgICBJbmRleGVkREI6IFJhaXNlIGV4Y2VwdGlvbiBkdXJp
bmcgYWRkL3B1dCBjYWxsIGlmIGF1dG9JbmNyZW1lbnQga2V5IGluc2VydGlvbiB3aWxsIGZhaWwK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3Mzc0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdG9yYWdl
L2luZGV4ZWRkYi9rZXlwYXRoLWVkZ2VzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdl
L2luZGV4ZWRkYi9rZXlwYXRoLWVkZ2VzLmh0bWw6CisKKzIwMTItMDItMDMgIEpvc2h1YSBCZWxs
ICA8anNiZWxsQGNocm9taXVtLm9yZz4KKwogICAgICAgICBJbmRleGVkREI6IEtleSBnZW5lcmF0
b3JzIG5vdCByb2xsZWQgYmFjayBpZiBpbnNlcnRpb24gZmFpbHMgb3IgaXMgYWJvcnRlZAogICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzcwNjAKIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5cGF0aC1lZGdlcy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWVkZ2VzLWV4
cGVjdGVkLnR4dAppbmRleCBlNWZjYTMyYWM3OWI3NTIwMjYxMjk4ZGRkNmVmMjlhZGRmNWQ5NWQ4
Li45MmQyYWU5YjliZjg4MGM2ODJjYTg0YjQ5ODcxY2M3YWYyZTRlNDBiIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWVkZ2VzLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWVkZ2VzLWV4cGVjdGVk
LnR4dApAQCAtNDUsMTIgKzQ1LDE1IEBAIHRlc3RLZXlQYXRoc0FuZEdlbmVyYXRvcigpOgogdHJh
bnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlLXdpdGgtcGF0aC1hbmQtZ2VuZXJhdG9y
J10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpCiBzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVj
dFN0b3JlKCdzdG9yZS13aXRoLXBhdGgtYW5kLWdlbmVyYXRvcicpCiAKLUtleSBwYXRoIGRvZXNu
J3QgcmVzb2x2ZSB0byBhIHZhbHVlOyBzaG91bGQgeWllbGQgbnVsbCwgcHV0IHJlcXVlc3Qgc2hv
dWxkIHJhaXNlIGVycm9yIGV2ZW50Ci1zdG9yZS5wdXQobnVsbCkKLVBBU1MgRXJyb3IgZXZlbnQg
cmFpc2VkOiBUaGUgZ2VuZXJhdGVkIGtleSBjb3VsZCBub3QgYmUgaW5zZXJ0ZWQgaW50byB0aGUg
b2JqZWN0IHVzaW5nIHRoZSBrZXlQYXRoLgotUEFTUyBldmVudC50YXJnZXQuZXJyb3JDb2RlIGlz
IElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSCi1QQVNTIGV2ZW50LmNhbmNlbGFibGUgaXMg
dHJ1ZQotZXZlbnQucHJldmVudERlZmF1bHQoKQorS2V5IHBhdGggZG9lc24ndCByZXNvbHZlIHRv
IGEgdmFsdWU7IHNob3VsZCB5aWVsZCBudWxsIGJ1dCBpbnNlcnRpb24gd291bGQgZmFpbCwgc28g
cHV0IHJlcXVlc3Qgc2hvdWxkIHJhaXNlIGV4Y2VwdGlvbgorRXhwZWN0aW5nIGV4Y2VwdGlvbiBm
cm9tIHN0b3JlLnB1dChudWxsKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29k
ZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUgorCitLZXkgcGF0aCBkb2Vzbid0IHJl
c29sdmUgdG8gYSB2YWx1ZTsgc2hvdWxkIHlpZWxkIG51bGwgYnV0IGluc2VydGlvbiB3b3VsZCBm
YWlsLCBzbyBwdXQgcmVxdWVzdCBzaG91bGQgcmFpc2UgZXhjZXB0aW9uCitFeHBlY3RpbmcgZXhj
ZXB0aW9uIGZyb20gc3RvcmUucHV0KCdzdHJpbmcnKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93
bi4KK1BBU1MgY29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUgogCiBLZXkgcGF0
aCBkb2Vzbid0IHJlc29sdmUgdG8gYSB2YWx1ZTsgc2hvdWxkIHlpZWxkIG51bGwsIGtleSBzaG91
bGQgYmUgZ2VuZXJhdGVkLCBwdXQgcmVxdWVzdCBzaG91bGQgc3VjY2VlZAogc3RvcmUucHV0KHt9
KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5cGF0aC1lZGdl
cy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5cGF0aC1lZGdlcy5odG1s
CmluZGV4IDc2ODA4Y2FjMmJjZjNlMDdkZmM5MWEyMzVkMWFhNDQ1MDljOWU1ZmIuLmY4YzkwNDli
Mzg4OGE2OTE4ZWFhNzM0YTUyNmI5ZDg2NmQ4NWE2NGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgtZWRnZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWVkZ2VzLmh0bWwKQEAgLTg4LDMyICs4OCwzMSBAQCBm
dW5jdGlvbiB0ZXN0S2V5UGF0aHNBbmRHZW5lcmF0b3IoKQogICAgIHN0b3JlID0gZXZhbEFuZExv
Zygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUtd2l0aC1wYXRoLWFuZC1n
ZW5lcmF0b3InKSIpOwogCiAgICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJLZXkgcGF0aCBkb2Vz
bid0IHJlc29sdmUgdG8gYSB2YWx1ZTsgc2hvdWxkIHlpZWxkIG51bGwsIHB1dCByZXF1ZXN0IHNo
b3VsZCByYWlzZSBlcnJvciBldmVudCIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9y
ZS5wdXQobnVsbCkiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbiAoZSkgewotICAg
ICAgICB0ZXN0UGFzc2VkKCJFcnJvciBldmVudCByYWlzZWQ6ICIgKyBlLnRhcmdldC53ZWJraXRF
cnJvck1lc3NhZ2UpOwotICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LmVycm9yQ29kZSIs
ICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotICAgICAgICBzaG91bGRCZVRydWUo
ImV2ZW50LmNhbmNlbGFibGUiKTsKLSAgICAgICAgZXZhbEFuZExvZygiZXZlbnQucHJldmVudERl
ZmF1bHQoKSIpOworICAgIGRlYnVnKCJLZXkgcGF0aCBkb2Vzbid0IHJlc29sdmUgdG8gYSB2YWx1
ZTsgc2hvdWxkIHlpZWxkIG51bGwgYnV0IGluc2VydGlvbiB3b3VsZCBmYWlsLCBzbyBwdXQgcmVx
dWVzdCBzaG91bGQgcmFpc2UgZXhjZXB0aW9uIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlv
bigic3RvcmUucHV0KG51bGwpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisK
KyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIktleSBwYXRoIGRvZXNuJ3QgcmVzb2x2ZSB0byBh
IHZhbHVlOyBzaG91bGQgeWllbGQgbnVsbCBidXQgaW5zZXJ0aW9uIHdvdWxkIGZhaWwsIHNvIHB1
dCByZXF1ZXN0IHNob3VsZCByYWlzZSBleGNlcHRpb24iKTsKKyAgICBldmFsQW5kRXhwZWN0RXhj
ZXB0aW9uKCJzdG9yZS5wdXQoJ3N0cmluZycpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFf
RVJSIik7CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIktleSBwYXRoIGRvZXNuJ3QgcmVz
b2x2ZSB0byBhIHZhbHVlOyBzaG91bGQgeWllbGQgbnVsbCwga2V5IHNob3VsZCBiZSBnZW5lcmF0
ZWQsIHB1dCByZXF1ZXN0IHNob3VsZCBzdWNjZWVkIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInN0b3JlLnB1dCh7fSkiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgdGVzdFBhc3NlZCgic3RvcmUucHV0IHN1Y2NlZWRlZCIpOworCisgICAgICAgIGRlYnVnKCIi
KTsKKyAgICAgICAgZGVidWcoIktleSBwYXRoIHJlc29sdmVzIHRvIGEgdmFsdWUgdGhhdCBpcyBp
bnZhbGlkIGtleTsgc2hvdWxkIHlpZWxkICdpbnZhbGlkJyBrZXksIHNob3VsZCB0aHJvdyBEQVRB
X0VSUiIpOworICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5wdXQoe2Zvbzog
bnVsbH0pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CiAKICAgICAgICAgZGVi
dWcoIiIpOwotICAgICAgICBkZWJ1ZygiS2V5IHBhdGggZG9lc24ndCByZXNvbHZlIHRvIGEgdmFs
dWU7IHNob3VsZCB5aWVsZCBudWxsLCBrZXkgc2hvdWxkIGJlIGdlbmVyYXRlZCwgcHV0IHJlcXVl
c3Qgc2hvdWxkIHN1Y2NlZWQiKTsKLSAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3Jl
LnB1dCh7fSkiKTsKKyAgICAgICAgZGVidWcoIktleSBwYXRoIHJlc29sdmVzIHRvIGEgdmFsdWUg
dGhhdCBpcyB2YWxpZCBrZXk7IHNob3VsZCB5aWVsZCAnc3RyaW5nJyBrZXksIHNob3VsZCBzdWNj
ZWVkIik7CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5wdXQoe2ZvbzogJ3pv
byd9KSIpOwogICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJzdG9yZS5wdXQgc3VjY2VlZGVkIik7CiAKLSAgICAgICAgICAgIGRlYnVn
KCIiKTsKLSAgICAgICAgICAgIGRlYnVnKCJLZXkgcGF0aCByZXNvbHZlcyB0byBhIHZhbHVlIHRo
YXQgaXMgaW52YWxpZCBrZXk7IHNob3VsZCB5aWVsZCAnaW52YWxpZCcga2V5LCBzaG91bGQgdGhy
b3cgREFUQV9FUlIiKTsKLSAgICAgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3Jl
LnB1dCh7Zm9vOiBudWxsfSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLQot
ICAgICAgICAgICAgZGVidWcoIiIpOwotICAgICAgICAgICAgZGVidWcoIktleSBwYXRoIHJlc29s
dmVzIHRvIGEgdmFsdWUgdGhhdCBpcyB2YWxpZCBrZXk7IHNob3VsZCB5aWVsZCAnc3RyaW5nJyBr
ZXksIHNob3VsZCBzdWNjZWVkIik7Ci0gICAgICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
c3RvcmUucHV0KHtmb286ICd6b28nfSkiKTsKLSAgICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgic3RvcmUucHV0IHN1
Y2NlZWRlZCIpOwotICAgICAgICAgICAgfTsKICAgICAgICAgfTsKICAgICB9OwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>