<?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>96037</bug_id>
          
          <creation_ts>2012-09-06 16:29:17 -0700</creation_ts>
          <short_desc>IndexedDB: Optimize key decode and comparison operations</short_desc>
          <delta_ts>2012-09-11 16:18:22 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joshua Bell">jsbell</reporter>
          <assigned_to name="Joshua Bell">jsbell</assigned_to>
          <cc>alecflett</cc>
    
    <cc>dgrogan</cc>
    
    <cc>jamesr</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>713831</commentid>
    <comment_count>0</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-06 16:29:17 -0700</bug_when>
    <thetext>IndexedDB: Optimize key decode and comparison operations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713832</commentid>
    <comment_count>1</comment_count>
      <attachid>162617</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-06 16:30:26 -0700</bug_when>
    <thetext>Created attachment 162617
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713836</commentid>
    <comment_count>2</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-06 16:34:14 -0700</bug_when>
    <thetext>After some performance optimization work on https://bugs.webkit.org/show_bug.cgi?id=96036, the CPU bottleneck on deleting databases (and presumably other operations) are key comparisons.

We do a lot of unnecessary work when comparing keys, including:
* Slow extractions with multiple data copies
* Full decodes, even when we have optimized &quot;compareEncodedXXX&quot; functions

This shows up in memory allocations occurring during a LevelDB iteration as temporary objects with variable length data are allocated just for the purpose of compares.

(The attached patch is just a WIP; it eliminates some of the allocations but avoiding any allocation when doing a compare is desirable.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714831</commentid>
    <comment_count>3</comment_count>
      <attachid>162841</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-07 12:10:40 -0700</bug_when>
    <thetext>Created attachment 162841
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714833</commentid>
    <comment_count>4</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-07 12:14:03 -0700</bug_when>
    <thetext>Latest patch converts &quot;decodeAndCompare&quot; to (effectively) compare-but-only-decode-if-necessary, and adds specializations for two of the common cases that will result in the most compares.

This seems to be a dramatic speedup of the deleteDatabase case on my box, even without the transaction work in http://webkit.org/b/96036 - not a terrible surprise, as the transaction was made slow by the expensive compares!

The current patch is missing a specialization for IndexDataKey which is going to be the next most populous type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715042</commentid>
    <comment_count>5</comment_count>
      <attachid>162883</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-07 15:16:51 -0700</bug_when>
    <thetext>Created attachment 162883
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716505</commentid>
    <comment_count>6</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-10 14:18:57 -0700</bug_when>
    <thetext>I completed performance runs - details at http://crbug.com/146586 and pretty graph at:

https://docs.google.com/a/chromium.org/spreadsheet/ccc?key=0AoyP0VKkrFm8dE1VanBfR2Jpa1MwUkxCM1RsZ0RZTnc#gid=0

Seems like it&apos;ll be worth both landing this and http://webkit.org/b/96036

alecflett@ - can you take a look before I send this off for review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716632</commentid>
    <comment_count>7</comment_count>
      <attachid>162883</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-09-10 16:03:14 -0700</bug_when>
    <thetext>Comment on attachment 162883
Patch

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

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBCoding.cpp:884
&gt;          if (typeByteA == ObjectStoreMetaDataTypeByte)

Is there a reason this can&apos;t be a switch (I see it wasn&apos;t in the old code, mostly just curious)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716633</commentid>
    <comment_count>8</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-09-10 16:03:33 -0700</bug_when>
    <thetext>Forgot to add &quot;LGTM with or without the switch&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716646</commentid>
    <comment_count>9</comment_count>
      <attachid>162883</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-10 16:18:06 -0700</bug_when>
    <thetext>Comment on attachment 162883
Patch

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

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBCoding.cpp:884
&gt;&gt;          if (typeByteA == ObjectStoreMetaDataTypeByte)
&gt; 
&gt; Is there a reason this can&apos;t be a switch (I see it wasn&apos;t in the old code, mostly just curious)

No reason. Going to leave it as-is, though.

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBCoding.cpp:898
&gt;          ASSERT_NOT_REACHED();

Nor am I going to move this above the return statement. :P</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716647</commentid>
    <comment_count>10</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-10 16:18:25 -0700</bug_when>
    <thetext>tony@ - r? cq?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716664</commentid>
    <comment_count>11</comment_count>
      <attachid>162883</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-09-10 16:26:44 -0700</bug_when>
    <thetext>Comment on attachment 162883
Patch

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

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBCoding.cpp:898
&gt;&gt;          ASSERT_NOT_REACHED();
&gt; 
&gt; Nor am I going to move this above the return statement. :P

Can you just delete the ASSERT_NOT_REACHED()?  It looks like dead code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717409</commentid>
    <comment_count>12</comment_count>
      <attachid>163408</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-11 11:20:25 -0700</bug_when>
    <thetext>Created attachment 163408
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717437</commentid>
    <comment_count>13</comment_count>
      <attachid>163408</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-11 11:42:33 -0700</bug_when>
    <thetext>Comment on attachment 163408
Patch for landing

Clearing flags on attachment: 163408

Committed r128212: &lt;http://trac.webkit.org/changeset/128212&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717438</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-11 11:42:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717488</commentid>
    <comment_count>15</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-09-11 13:10:24 -0700</bug_when>
    <thetext>Lotsa crashes from this:

STDERR: SHOULD NEVER BE REACHED
STDERR: third_party/WebKit/Source/WebCore/Modules/indexeddb/IDBLevelDBCoding.cpp(897) : int WebCore::IDBLevelDBCoding::compare(const WebCore::LevelDBSlice&amp;, const WebCore::LevelDBSlice&amp;, bool)
STDERR: [2175:6522:14854634912430:ERROR:process_util_posix.cc(143)] Received signal 11
STDERR: 	base::debug::StackTrace::StackTrace() [0x7f5f2719115a]
STDERR: 	base::(anonymous namespace)::StackDumpSignalHandler() [0x7f5f271f874d]
STDERR: 	0x7f5f20c0faf0
STDERR: 	WebCore::IDBLevelDBCoding::compare() [0x7f5f2aa5b17b]
STDERR: 	WebCore::Comparator::compare() [0x7f5f2aa6d7e0]
STDERR: 	WebCore::ComparatorAdapter::Compare() [0x7f5f2a8231db]
STDERR: 	leveldb::Version::GetOverlappingInputs() [0x7f5f2a67dc26]
STDERR: 	leveldb::VersionSet::PickCompaction() [0x7f5f2a68072e]
STDERR: 	leveldb::DBImpl::BackgroundCompaction() [0x7f5f2a666703]
STDERR: 	leveldb::DBImpl::BackgroundCall() [0x7f5f2a666328]
STDERR: 	leveldb::DBImpl::BGWork() [0x7f5f2a66629e]
STDERR: 	leveldb::(anonymous namespace)::ChromiumEnv::BGThread() [0x7f5f2a660e38]
STDERR: 	leveldb::(anonymous namespace)::ChromiumEnv::BGThreadWrapper() [0x7f5f2a6609b0]
STDERR: 	leveldb::(anonymous namespace)::Thread::ThreadMain() [0x7f5f2a660c79]
STDERR: 	base::(anonymous namespace)::ThreadFunc() [0x7f5f27231ce7]
STDERR: 	start_thread [0x7f5f20f659ca]
STDERR: 	0x7f5f20cc2cdd</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717489</commentid>
    <comment_count>16</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-09-11 13:11:05 -0700</bug_when>
    <thetext>Pretty much all of storage/indexeddb seems to be hitting this assertion:

storage/indexeddb (64 tests)
storage/indexeddb/mozilla (4 tests)
http/tests/inspector/indexeddb/database-data.html
http/tests/inspector/indexeddb/database-names.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717491</commentid>
    <comment_count>17</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-11 13:12:05 -0700</bug_when>
    <thetext>Bleah, wonder why it wasn&apos;t caught. Please roll out if you haven&apos;t already.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717492</commentid>
    <comment_count>18</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-09-11 13:12:56 -0700</bug_when>
    <thetext>Looks like it&apos;s just 64 bit.  I&apos;ll roll out</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717493</commentid>
    <comment_count>19</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-09-11 13:14:22 -0700</bug_when>
    <thetext>Reverted r128212 for reason:

Assertion fails on linux 64

Committed r128220: &lt;http://trac.webkit.org/changeset/128220&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717622</commentid>
    <comment_count>20</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-11 15:29:44 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 162883 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=162883&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBCoding.cpp:898
&gt; &gt;&gt;          ASSERT_NOT_REACHED();
&gt; &gt; 
&gt; &gt; Nor am I going to move this above the return statement. :P
&gt; 
&gt; Can you just delete the ASSERT_NOT_REACHED()?  It looks like dead code.

So... rather than removing it I actually moved it above the return - the crashes were this assertion being hit. Made it through the commit queue somehow. :(

The issue is this test:

        if (typeByteA &lt;= 3)
             return 0;

... which is letting through 4 which is UserIntVersion. So that falls through to the &quot;return 0;&quot; in the current code, but would hit the relocated ASSERT_NOT_REACHED().

I&apos;ve removed the ASSERT_NOT_REACHED and added FIXMEs to (1) say that the magic number should be replaced and possibly account for UserIntVersion, and (2) that there should probably be an ASSERT_NOT_REACHED() before the return 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717623</commentid>
    <comment_count>21</comment_count>
      <attachid>163456</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-11 15:30:00 -0700</bug_when>
    <thetext>Created attachment 163456
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717692</commentid>
    <comment_count>22</comment_count>
      <attachid>163456</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-11 16:18:18 -0700</bug_when>
    <thetext>Comment on attachment 163456
Patch for landing

Clearing flags on attachment: 163456

Committed r128237: &lt;http://trac.webkit.org/changeset/128237&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717693</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-11 16:18:22 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162617</attachid>
            <date>2012-09-06 16:30:26 -0700</date>
            <delta_ts>2012-09-07 12:10:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96037-20120906163007.patch</filename>
            <type>text/plain</type>
            <size>3818</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NTMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzc3NjFkMGY5MGUzZDRj
MWJjMmY4NDc0MTZmZDVlODdjYmI5OWI4Zi4uZmFmYTZlZTg5NTUxNjNlYTA4NDgxNTljYjFhYmRm
YTI2ZDlkMWFlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTA5LTA2ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBPcHRp
bWl6ZSBrZXkgZGVjb2RlIGFuZCBjb21wYXJpc29uIG9wZXJhdGlvbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2MDM3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV09SSyBJTiBQUk9HUkVTUworCisgICAg
ICAgIE5vIG5ldyB0ZXN0cyAtIG9ubHkgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnRzLgorCisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJREJMZXZlbERCQ29kaW5nOjpleHRyYWN0RW5jb2RlZElEQktleSk6CisgICAgICAg
IChJREJMZXZlbERCQ29kaW5nKToKKwogMjAxMi0wOS0wMyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFBhcnQgMSBvZiByZW1vdmluZyBQbGF0Zm9ybVN0cmluZy5oLCBt
b3ZlIHJlbWFpbmluZyBmdW5jdGlvbnMgdG8gbmV3IGhvbWVzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuY3BwCmluZGV4IGIzZDc4
ZWZiMmVlZmFiZDUyODU0OTQzZGRmZjVmODIxZDQxODc4M2MuLjIzMDNlMWE4NzkwZDg1OTc0Nzdh
YjQwY2NhOWUyMjcwZWE3ODU2YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuY3BwCkBAIC01MDUsOSArNTA1LDggQEAgY29u
c3QgY2hhciogZGVjb2RlSURCS2V5KGNvbnN0IGNoYXIqIHAsIGNvbnN0IGNoYXIqIGxpbWl0LCBS
ZWZQdHI8SURCS2V5PiYgZm91bmQKICAgICByZXR1cm4gMDsKIH0KIAotY29uc3QgY2hhciogZXh0
cmFjdEVuY29kZWRJREJLZXkoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGxpbWl0LCBW
ZWN0b3I8Y2hhcj4qIHJlc3VsdCkKK2NvbnN0IGNoYXIqIGV4dHJhY3RFbmNvZGVkSURCS2V5KGNv
bnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBsaW1pdCwgVmVjdG9yPGNoYXI+KiByZXN1bHQg
PSAwKQogewotICAgIEFTU0VSVChyZXN1bHQpOwogICAgIGNvbnN0IGNoYXIqIHAgPSBzdGFydDsK
ICAgICBpZiAocCA+PSBsaW1pdCkKICAgICAgICAgcmV0dXJuIDA7CkBAIC01MTcsOCArNTE2LDcg
QEAgY29uc3QgY2hhciogZXh0cmFjdEVuY29kZWRJREJLZXkoY29uc3QgY2hhciogc3RhcnQsIGNv
bnN0IGNoYXIqIGxpbWl0LCBWZWN0b3I8Y2gKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNl
IElEQktleU51bGxUeXBlQnl0ZToKICAgICBjYXNlIElEQktleU1pbktleVR5cGVCeXRlOgotICAg
ICAgICAqcmVzdWx0ID0gZW5jb2RlQnl0ZSh0eXBlKTsKLSAgICAgICAgcmV0dXJuIHA7CisgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgSURCS2V5QXJyYXlUeXBlQnl0ZTogewogICAgICAgICBpbnQ2
NF90IGxlbmd0aDsKICAgICAgICAgcCA9IGRlY29kZVZhckludChwLCBsaW1pdCwgbGVuZ3RoKTsK
QEAgLTUyNiwxNiArNTI0LDEyIEBAIGNvbnN0IGNoYXIqIGV4dHJhY3RFbmNvZGVkSURCS2V5KGNv
bnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBsaW1pdCwgVmVjdG9yPGNoCiAgICAgICAgICAg
ICByZXR1cm4gMDsKICAgICAgICAgaWYgKGxlbmd0aCA8IDApCiAgICAgICAgICAgICByZXR1cm4g
MDsKLSAgICAgICAgcmVzdWx0LT5jbGVhcigpOwotICAgICAgICByZXN1bHQtPmFwcGVuZChzdGFy
dCwgcCAtIHN0YXJ0KTsKICAgICAgICAgd2hpbGUgKGxlbmd0aC0tKSB7Ci0gICAgICAgICAgICBW
ZWN0b3I8Y2hhcj4gc3Via2V5OwotICAgICAgICAgICAgcCA9IGV4dHJhY3RFbmNvZGVkSURCS2V5
KHAsIGxpbWl0LCAmc3Via2V5KTsKKyAgICAgICAgICAgIHAgPSBleHRyYWN0RW5jb2RlZElEQktl
eShwLCBsaW1pdCk7CiAgICAgICAgICAgICBpZiAoIXApCiAgICAgICAgICAgICAgICAgcmV0dXJu
IDA7Ci0gICAgICAgICAgICByZXN1bHQtPmFwcGVuZChzdWJrZXkpOwogICAgICAgICB9Ci0gICAg
ICAgIHJldHVybiBwOworICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBJREJLZXlTdHJp
bmdUeXBlQnl0ZTogewogICAgICAgICBpbnQ2NF90IGxlbmd0aDsKQEAgLTU0NCwyMCArNTM4LDI1
IEBAIGNvbnN0IGNoYXIqIGV4dHJhY3RFbmNvZGVkSURCS2V5KGNvbnN0IGNoYXIqIHN0YXJ0LCBj
b25zdCBjaGFyKiBsaW1pdCwgVmVjdG9yPGNoCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAg
ICAgaWYgKHAgKyBsZW5ndGggKiAyID4gbGltaXQpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAg
ICAgICAgcmVzdWx0LT5jbGVhcigpOwotICAgICAgICByZXN1bHQtPmFwcGVuZChzdGFydCwgcCAt
IHN0YXJ0ICsgbGVuZ3RoICogMik7Ci0gICAgICAgIHJldHVybiBwICsgbGVuZ3RoICogMjsKKyAg
ICAgICAgcCArPSBsZW5ndGggKiAyOworICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBJ
REJLZXlEYXRlVHlwZUJ5dGU6CiAgICAgY2FzZSBJREJLZXlOdW1iZXJUeXBlQnl0ZToKICAgICAg
ICAgaWYgKHAgKyBzaXplb2YoZG91YmxlKSA+IGxpbWl0KQogICAgICAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIHAgKz0gc2l6ZW9mKGRvdWJsZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwor
ICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgQVNTRVJUKHApOworICAgICAgICBBU1NFUlQocCA8
PSBsaW1pdCk7CiAgICAgICAgIHJlc3VsdC0+Y2xlYXIoKTsKLSAgICAgICAgcmVzdWx0LT5hcHBl
bmQoc3RhcnQsIDEgKyBzaXplb2YoZG91YmxlKSk7Ci0gICAgICAgIHJldHVybiBwICsgc2l6ZW9m
KGRvdWJsZSk7CisgICAgICAgIHJlc3VsdC0+YXBwZW5kKHN0YXJ0LCBwIC0gc3RhcnQpOwogICAg
IH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gMDsKKworICAgIHJldHVy
biBwOwogfQogCiBzdGF0aWMgSURCS2V5OjpUeXBlIGtleVR5cGVCeXRlVG9LZXlUeXBlKHVuc2ln
bmVkIGNoYXIgdHlwZSkKQEAgLTcyNiw2ICs3MjUsOCBAQCBpbnQgZGVjb2RlQW5kQ29tcGFyZShj
b25zdCBMZXZlbERCU2xpY2UmIGEsIGNvbnN0IExldmVsREJTbGljZSYgYikKICAgICBLZXlUeXBl
IGtleUE7CiAgICAgS2V5VHlwZSBrZXlCOwogCisgICAgLy8gRklYTUU6IFVzZSBvcHRpbWl6ZWQg
Y29tcGFyaXNvbnMgKGUuZy4gY29tcGFyZUVuY29kZWRJREJLZXlzKSB3aGVyZSBwb3NzaWJsZS4K
KwogICAgIGNvbnN0IGNoYXIqIHB0ckEgPSBLZXlUeXBlOjpkZWNvZGUoYS5iZWdpbigpLCBhLmVu
ZCgpLCAma2V5QSk7CiAgICAgQVNTRVJUX1VOVVNFRChwdHJBLCBwdHJBKTsKICAgICBjb25zdCBj
aGFyKiBwdHJCID0gS2V5VHlwZTo6ZGVjb2RlKGIuYmVnaW4oKSwgYi5lbmQoKSwgJmtleUIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162841</attachid>
            <date>2012-09-07 12:10:40 -0700</date>
            <delta_ts>2012-09-07 15:16:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96037-20120907121020.patch</filename>
            <type>text/plain</type>
            <size>8587</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NTMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzc3NjFkMGY5MGUzZDRj
MWJjMmY4NDc0MTZmZDVlODdjYmI5OWI4Zi4uZmFmYTZlZTg5NTUxNjNlYTA4NDgxNTljYjFhYmRm
YTI2ZDlkMWFlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTA5LTA2ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBPcHRp
bWl6ZSBrZXkgZGVjb2RlIGFuZCBjb21wYXJpc29uIG9wZXJhdGlvbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2MDM3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV09SSyBJTiBQUk9HUkVTUworCisgICAg
ICAgIE5vIG5ldyB0ZXN0cyAtIG9ubHkgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnRzLgorCisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJREJMZXZlbERCQ29kaW5nOjpleHRyYWN0RW5jb2RlZElEQktleSk6CisgICAgICAg
IChJREJMZXZlbERCQ29kaW5nKToKKwogMjAxMi0wOS0wMyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFBhcnQgMSBvZiByZW1vdmluZyBQbGF0Zm9ybVN0cmluZy5oLCBt
b3ZlIHJlbWFpbmluZyBmdW5jdGlvbnMgdG8gbmV3IGhvbWVzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuY3BwCmluZGV4IGIzZDc4
ZWZiMmVlZmFiZDUyODU0OTQzZGRmZjVmODIxZDQxODc4M2MuLjdmYjhiMGFiMzEwYTQzOTAyMTRm
YzQ0MDgwMzJhNDM1YTM5YTE5MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuY3BwCkBAIC01MDUsOSArNTA1LDggQEAgY29u
c3QgY2hhciogZGVjb2RlSURCS2V5KGNvbnN0IGNoYXIqIHAsIGNvbnN0IGNoYXIqIGxpbWl0LCBS
ZWZQdHI8SURCS2V5PiYgZm91bmQKICAgICByZXR1cm4gMDsKIH0KIAotY29uc3QgY2hhciogZXh0
cmFjdEVuY29kZWRJREJLZXkoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGxpbWl0LCBW
ZWN0b3I8Y2hhcj4qIHJlc3VsdCkKK2NvbnN0IGNoYXIqIGV4dHJhY3RFbmNvZGVkSURCS2V5KGNv
bnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBsaW1pdCwgVmVjdG9yPGNoYXI+KiByZXN1bHQg
PSAwKQogewotICAgIEFTU0VSVChyZXN1bHQpOwogICAgIGNvbnN0IGNoYXIqIHAgPSBzdGFydDsK
ICAgICBpZiAocCA+PSBsaW1pdCkKICAgICAgICAgcmV0dXJuIDA7CkBAIC01MTcsOCArNTE2LDcg
QEAgY29uc3QgY2hhciogZXh0cmFjdEVuY29kZWRJREJLZXkoY29uc3QgY2hhciogc3RhcnQsIGNv
bnN0IGNoYXIqIGxpbWl0LCBWZWN0b3I8Y2gKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNl
IElEQktleU51bGxUeXBlQnl0ZToKICAgICBjYXNlIElEQktleU1pbktleVR5cGVCeXRlOgotICAg
ICAgICAqcmVzdWx0ID0gZW5jb2RlQnl0ZSh0eXBlKTsKLSAgICAgICAgcmV0dXJuIHA7CisgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgSURCS2V5QXJyYXlUeXBlQnl0ZTogewogICAgICAgICBpbnQ2
NF90IGxlbmd0aDsKICAgICAgICAgcCA9IGRlY29kZVZhckludChwLCBsaW1pdCwgbGVuZ3RoKTsK
QEAgLTUyNiwxNiArNTI0LDEyIEBAIGNvbnN0IGNoYXIqIGV4dHJhY3RFbmNvZGVkSURCS2V5KGNv
bnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBsaW1pdCwgVmVjdG9yPGNoCiAgICAgICAgICAg
ICByZXR1cm4gMDsKICAgICAgICAgaWYgKGxlbmd0aCA8IDApCiAgICAgICAgICAgICByZXR1cm4g
MDsKLSAgICAgICAgcmVzdWx0LT5jbGVhcigpOwotICAgICAgICByZXN1bHQtPmFwcGVuZChzdGFy
dCwgcCAtIHN0YXJ0KTsKICAgICAgICAgd2hpbGUgKGxlbmd0aC0tKSB7Ci0gICAgICAgICAgICBW
ZWN0b3I8Y2hhcj4gc3Via2V5OwotICAgICAgICAgICAgcCA9IGV4dHJhY3RFbmNvZGVkSURCS2V5
KHAsIGxpbWl0LCAmc3Via2V5KTsKKyAgICAgICAgICAgIHAgPSBleHRyYWN0RW5jb2RlZElEQktl
eShwLCBsaW1pdCk7CiAgICAgICAgICAgICBpZiAoIXApCiAgICAgICAgICAgICAgICAgcmV0dXJu
IDA7Ci0gICAgICAgICAgICByZXN1bHQtPmFwcGVuZChzdWJrZXkpOwogICAgICAgICB9Ci0gICAg
ICAgIHJldHVybiBwOworICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBJREJLZXlTdHJp
bmdUeXBlQnl0ZTogewogICAgICAgICBpbnQ2NF90IGxlbmd0aDsKQEAgLTU0NCwyMCArNTM4LDI1
IEBAIGNvbnN0IGNoYXIqIGV4dHJhY3RFbmNvZGVkSURCS2V5KGNvbnN0IGNoYXIqIHN0YXJ0LCBj
b25zdCBjaGFyKiBsaW1pdCwgVmVjdG9yPGNoCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAg
ICAgaWYgKHAgKyBsZW5ndGggKiAyID4gbGltaXQpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAg
ICAgICAgcmVzdWx0LT5jbGVhcigpOwotICAgICAgICByZXN1bHQtPmFwcGVuZChzdGFydCwgcCAt
IHN0YXJ0ICsgbGVuZ3RoICogMik7Ci0gICAgICAgIHJldHVybiBwICsgbGVuZ3RoICogMjsKKyAg
ICAgICAgcCArPSBsZW5ndGggKiAyOworICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBJ
REJLZXlEYXRlVHlwZUJ5dGU6CiAgICAgY2FzZSBJREJLZXlOdW1iZXJUeXBlQnl0ZToKICAgICAg
ICAgaWYgKHAgKyBzaXplb2YoZG91YmxlKSA+IGxpbWl0KQogICAgICAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIHAgKz0gc2l6ZW9mKGRvdWJsZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwor
ICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgQVNTRVJUKHApOworICAgICAgICBBU1NFUlQocCA8
PSBsaW1pdCk7CiAgICAgICAgIHJlc3VsdC0+Y2xlYXIoKTsKLSAgICAgICAgcmVzdWx0LT5hcHBl
bmQoc3RhcnQsIDEgKyBzaXplb2YoZG91YmxlKSk7Ci0gICAgICAgIHJldHVybiBwICsgc2l6ZW9m
KGRvdWJsZSk7CisgICAgICAgIHJlc3VsdC0+YXBwZW5kKHN0YXJ0LCBwIC0gc3RhcnQpOwogICAg
IH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gMDsKKworICAgIHJldHVy
biBwOwogfQogCiBzdGF0aWMgSURCS2V5OjpUeXBlIGtleVR5cGVCeXRlVG9LZXlUeXBlKHVuc2ln
bmVkIGNoYXIgdHlwZSkKQEAgLTcyMCwxMiArNzE5LDE1IEBAIElEQktleVBhdGggZGVjb2RlSURC
S2V5UGF0aChjb25zdCBjaGFyKiBwLCBjb25zdCBjaGFyKiBsaW1pdCkKIH0KIAogbmFtZXNwYWNl
IHsKKwogdGVtcGxhdGU8dHlwZW5hbWUgS2V5VHlwZT4KLWludCBkZWNvZGVBbmRDb21wYXJlKGNv
bnN0IExldmVsREJTbGljZSYgYSwgY29uc3QgTGV2ZWxEQlNsaWNlJiBiKQoraW50IGNvbXBhcmUo
Y29uc3QgTGV2ZWxEQlNsaWNlJiBhLCBjb25zdCBMZXZlbERCU2xpY2UmIGIpCiB7CiAgICAgS2V5
VHlwZSBrZXlBOwogICAgIEtleVR5cGUga2V5QjsKIAorICAgIC8vIEZJWE1FOiBVc2Ugb3B0aW1p
emVkIGNvbXBhcmlzb25zIChlLmcuIGNvbXBhcmVFbmNvZGVkSURCS2V5cykgd2hlcmUgcG9zc2li
bGUuCisKICAgICBjb25zdCBjaGFyKiBwdHJBID0gS2V5VHlwZTo6ZGVjb2RlKGEuYmVnaW4oKSwg
YS5lbmQoKSwgJmtleUEpOwogICAgIEFTU0VSVF9VTlVTRUQocHRyQSwgcHRyQSk7CiAgICAgY29u
c3QgY2hhciogcHRyQiA9IEtleVR5cGU6OmRlY29kZShiLmJlZ2luKCksIGIuZW5kKCksICZrZXlC
KTsKQEAgLTczMyw2ICs3MzUsNTMgQEAgaW50IGRlY29kZUFuZENvbXBhcmUoY29uc3QgTGV2ZWxE
QlNsaWNlJiBhLCBjb25zdCBMZXZlbERCU2xpY2UmIGIpCiAKICAgICByZXR1cm4ga2V5QS5jb21w
YXJlKGtleUIpOwogfQorCit0ZW1wbGF0ZTw+CitpbnQgY29tcGFyZTxFeGlzdHNFbnRyeUtleT4o
Y29uc3QgTGV2ZWxEQlNsaWNlJiBhLCBjb25zdCBMZXZlbERCU2xpY2UmIGIpCit7CisgICAgS2V5
UHJlZml4IHByZWZpeEE7CisgICAgS2V5UHJlZml4IHByZWZpeEI7CisgICAgY29uc3QgY2hhciog
cHRyQSA9IEtleVByZWZpeDo6ZGVjb2RlKGEuYmVnaW4oKSwgYS5lbmQoKSwgJnByZWZpeEEpOwor
ICAgIGNvbnN0IGNoYXIqIHB0ckIgPSBLZXlQcmVmaXg6OmRlY29kZShiLmJlZ2luKCksIGIuZW5k
KCksICZwcmVmaXhCKTsKKyAgICBBU1NFUlQocHRyQSk7CisgICAgQVNTRVJUKHB0ckIpOworICAg
IEFTU0VSVChwcmVmaXhBLm1fZGF0YWJhc2VJZCk7CisgICAgQVNTRVJUKHByZWZpeEEubV9vYmpl
Y3RTdG9yZUlkKTsKKyAgICBBU1NFUlQocHJlZml4QS5tX2luZGV4SWQgPT0gU3BlY2lhbEluZGV4
TnVtYmVyKTsKKyAgICBBU1NFUlQocHJlZml4Qi5tX2RhdGFiYXNlSWQpOworICAgIEFTU0VSVChw
cmVmaXhCLm1fb2JqZWN0U3RvcmVJZCk7CisgICAgQVNTRVJUKHByZWZpeEIubV9pbmRleElkID09
IFNwZWNpYWxJbmRleE51bWJlcik7CisgICAgQVNTRVJUKHB0ckEgIT0gYS5lbmQoKSk7CisgICAg
QVNTRVJUKHB0ckIgIT0gYi5lbmQoKSk7CisgICAgLy8gUHJlZml4ZXMgYXJlIG5vdCBjb21wYXJl
ZCAtIGl0IGlzIGFzc3VtZWQgdGhpcyB3YXMgYWxyZWFkeSBkb25lLgorICAgIEFTU0VSVCghcHJl
Zml4QS5jb21wYXJlKHByZWZpeEIpKTsKKyAgICByZXR1cm4gY29tcGFyZUVuY29kZWRJREJLZXlz
KHB0ckEsIGEuZW5kKCksIHB0ckIsIGIuZW5kKCkpOworfQorCit0ZW1wbGF0ZTw+CitpbnQgY29t
cGFyZTxPYmplY3RTdG9yZURhdGFLZXk+KGNvbnN0IExldmVsREJTbGljZSYgYSwgY29uc3QgTGV2
ZWxEQlNsaWNlJiBiKQoreworICAgIEtleVByZWZpeCBwcmVmaXhBOworICAgIEtleVByZWZpeCBw
cmVmaXhCOworICAgIGNvbnN0IGNoYXIqIHB0ckEgPSBLZXlQcmVmaXg6OmRlY29kZShhLmJlZ2lu
KCksIGEuZW5kKCksICZwcmVmaXhBKTsKKyAgICBjb25zdCBjaGFyKiBwdHJCID0gS2V5UHJlZml4
OjpkZWNvZGUoYi5iZWdpbigpLCBiLmVuZCgpLCAmcHJlZml4Qik7CisgICAgLy8gUHJlZml4ZXMg
YXJlIG5vdCBjb21wYXJlZCAtIGl0IGlzIGFzc3VtZWQgdGhpcyB3YXMgYWxyZWFkeSBkb25lLgor
ICAgIEFTU0VSVChwdHJBKTsKKyAgICBBU1NFUlQocHRyQik7CisgICAgQVNTRVJUKHByZWZpeEEu
bV9kYXRhYmFzZUlkKTsKKyAgICBBU1NFUlQocHJlZml4QS5tX29iamVjdFN0b3JlSWQpOworICAg
IEFTU0VSVChwcmVmaXhBLm1faW5kZXhJZCA9PSBTcGVjaWFsSW5kZXhOdW1iZXIpOworICAgIEFT
U0VSVChwcmVmaXhCLm1fZGF0YWJhc2VJZCk7CisgICAgQVNTRVJUKHByZWZpeEIubV9vYmplY3RT
dG9yZUlkKTsKKyAgICBBU1NFUlQocHJlZml4Qi5tX2luZGV4SWQgPT0gU3BlY2lhbEluZGV4TnVt
YmVyKTsKKyAgICBBU1NFUlQocHRyQSAhPSBhLmVuZCgpKTsKKyAgICBBU1NFUlQocHRyQiAhPSBi
LmVuZCgpKTsKKyAgICAvLyBQcmVmaXhlcyBhcmUgbm90IGNvbXBhcmVkIC0gaXQgaXMgYXNzdW1l
ZCB0aGlzIHdhcyBhbHJlYWR5IGRvbmUuCisgICAgQVNTRVJUKCFwcmVmaXhBLmNvbXBhcmUocHJl
Zml4QikpOworICAgIHJldHVybiBjb21wYXJlRW5jb2RlZElEQktleXMocHRyQSwgYS5lbmQoKSwg
cHRyQiwgYi5lbmQoKSk7Cit9CisvLyBGSVhNRTogQWRkIHNwZWNpYWxpemF0aW9uIGZvciBJbmRl
eERhdGFLZXkKKwogfQogCiBpbnQgY29tcGFyZShjb25zdCBMZXZlbERCU2xpY2UmIGEsIGNvbnN0
IExldmVsREJTbGljZSYgYiwgYm9vbCBpbmRleEtleXMpCkBAIC03NjYsOSArODE1LDkgQEAgaW50
IGNvbXBhcmUoY29uc3QgTGV2ZWxEQlNsaWNlJiBhLCBjb25zdCBMZXZlbERCU2xpY2UmIGIsIGJv
b2wgaW5kZXhLZXlzKQogICAgICAgICBpZiAodHlwZUJ5dGVBIDw9IDEpCiAgICAgICAgICAgICBy
ZXR1cm4gMDsKICAgICAgICAgaWYgKHR5cGVCeXRlQSA9PSBEYXRhYmFzZUZyZWVMaXN0VHlwZUJ5
dGUpCi0gICAgICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ29tcGFyZTxEYXRhYmFzZUZyZWVMaXN0
S2V5PihhLCBiKTsKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlPERhdGFiYXNlRnJlZUxpc3RL
ZXk+KGEsIGIpOwogICAgICAgICBpZiAodHlwZUJ5dGVBID09IERhdGFiYXNlTmFtZVR5cGVCeXRl
KQotICAgICAgICAgICAgcmV0dXJuIGRlY29kZUFuZENvbXBhcmU8RGF0YWJhc2VOYW1lS2V5Pihh
LCBiKTsKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlPERhdGFiYXNlTmFtZUtleT4oYSwgYik7
CiAgICAgfQogCiAgICAgaWYgKHByZWZpeEEudHlwZSgpID09IEtleVByZWZpeDo6RGF0YWJhc2VN
ZXRhRGF0YSkgewpAQCAtNzg1LDE3ICs4MzQsMTcgQEAgaW50IGNvbXBhcmUoY29uc3QgTGV2ZWxE
QlNsaWNlJiBhLCBjb25zdCBMZXZlbERCU2xpY2UmIGIsIGJvb2wgaW5kZXhLZXlzKQogICAgICAg
ICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgaWYgKHR5cGVCeXRlQSA9PSBPYmplY3RTdG9yZU1l
dGFEYXRhVHlwZUJ5dGUpCi0gICAgICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ29tcGFyZTxPYmpl
Y3RTdG9yZU1ldGFEYXRhS2V5PihhLCBiKTsKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlPE9i
amVjdFN0b3JlTWV0YURhdGFLZXk+KGEsIGIpOwogICAgICAgICBpZiAodHlwZUJ5dGVBID09IElu
ZGV4TWV0YURhdGFUeXBlQnl0ZSkKLSAgICAgICAgICAgIHJldHVybiBkZWNvZGVBbmRDb21wYXJl
PEluZGV4TWV0YURhdGFLZXk+KGEsIGIpOworICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmU8SW5k
ZXhNZXRhRGF0YUtleT4oYSwgYik7CiAgICAgICAgIGlmICh0eXBlQnl0ZUEgPT0gT2JqZWN0U3Rv
cmVGcmVlTGlzdFR5cGVCeXRlKQotICAgICAgICAgICAgcmV0dXJuIGRlY29kZUFuZENvbXBhcmU8
T2JqZWN0U3RvcmVGcmVlTGlzdEtleT4oYSwgYik7CisgICAgICAgICAgICByZXR1cm4gY29tcGFy
ZTxPYmplY3RTdG9yZUZyZWVMaXN0S2V5PihhLCBiKTsKICAgICAgICAgaWYgKHR5cGVCeXRlQSA9
PSBJbmRleEZyZWVMaXN0VHlwZUJ5dGUpCi0gICAgICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ29t
cGFyZTxJbmRleEZyZWVMaXN0S2V5PihhLCBiKTsKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJl
PEluZGV4RnJlZUxpc3RLZXk+KGEsIGIpOwogICAgICAgICBpZiAodHlwZUJ5dGVBID09IE9iamVj
dFN0b3JlTmFtZXNUeXBlQnl0ZSkKLSAgICAgICAgICAgIHJldHVybiBkZWNvZGVBbmRDb21wYXJl
PE9iamVjdFN0b3JlTmFtZXNLZXk+KGEsIGIpOworICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmU8
T2JqZWN0U3RvcmVOYW1lc0tleT4oYSwgYik7CiAgICAgICAgIGlmICh0eXBlQnl0ZUEgPT0gSW5k
ZXhOYW1lc0tleVR5cGVCeXRlKQotICAgICAgICAgICAgcmV0dXJuIGRlY29kZUFuZENvbXBhcmU8
SW5kZXhOYW1lc0tleT4oYSwgYik7CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZTxJbmRleE5h
bWVzS2V5PihhLCBiKTsKIAogICAgICAgICByZXR1cm4gMDsKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CkBAIC04MDksNyArODU4LDcgQEAgaW50IGNvbXBhcmUoY29uc3QgTGV2ZWxEQlNs
aWNlJiBhLCBjb25zdCBMZXZlbERCU2xpY2UmIGIsIGJvb2wgaW5kZXhLZXlzKQogICAgICAgICBp
ZiAocHRyQiA9PSBlbmRCKQogICAgICAgICAgICAgcmV0dXJuIDE7IC8vIEZJWE1FOiBUaGlzIGNh
c2Ugb2Ygbm9uLWV4aXN0aW5nIHVzZXIga2V5cyBzaG91bGQgbm90IGhhdmUgdG8gYmUgaGFuZGxl
ZCB0aGlzIHdheS4KIAotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ29tcGFyZTxPYmplY3RTdG9y
ZURhdGFLZXk+KGEsIGIpOworICAgICAgICByZXR1cm4gY29tcGFyZTxPYmplY3RTdG9yZURhdGFL
ZXk+KGEsIGIpOwogICAgIH0KICAgICBpZiAocHJlZml4QS50eXBlKCkgPT0gS2V5UHJlZml4OjpF
eGlzdHNFbnRyeSkgewogICAgICAgICBpZiAocHRyQSA9PSBlbmRBICYmIHB0ckIgPT0gZW5kQikK
QEAgLTgxOSw3ICs4NjgsNyBAQCBpbnQgY29tcGFyZShjb25zdCBMZXZlbERCU2xpY2UmIGEsIGNv
bnN0IExldmVsREJTbGljZSYgYiwgYm9vbCBpbmRleEtleXMpCiAgICAgICAgIGlmIChwdHJCID09
IGVuZEIpCiAgICAgICAgICAgICByZXR1cm4gMTsgLy8gRklYTUU6IFRoaXMgY2FzZSBvZiBub24t
ZXhpc3RpbmcgdXNlciBrZXlzIHNob3VsZCBub3QgaGF2ZSB0byBiZSBoYW5kbGVkIHRoaXMgd2F5
LgogCi0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDb21wYXJlPEV4aXN0c0VudHJ5S2V5PihhLCBi
KTsKKyAgICAgICAgcmV0dXJuIGNvbXBhcmU8RXhpc3RzRW50cnlLZXk+KGEsIGIpOwogICAgIH0K
ICAgICBpZiAocHJlZml4QS50eXBlKCkgPT0gS2V5UHJlZml4OjpJbmRleERhdGEpIHsKICAgICAg
ICAgaWYgKHB0ckEgPT0gZW5kQSAmJiBwdHJCID09IGVuZEIpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162883</attachid>
            <date>2012-09-07 15:16:51 -0700</date>
            <delta_ts>2012-09-11 11:20:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96037-20120907151631.patch</filename>
            <type>text/plain</type>
            <size>14068</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NTMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzc3NjFkMGY5MGUzZDRj
MWJjMmY4NDc0MTZmZDVlODdjYmI5OWI4Zi4uZjAwYTA1NWVkOWExNGE5YjY1MmMzNmQ4MWExZDM4
NjEzZTYzMDk3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTA5LTA3ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBPcHRp
bWl6ZSBrZXkgZGVjb2RlIGFuZCBjb21wYXJpc29uIG9wZXJhdGlvbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2MDM3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRWxpbWluYXRlIG1lbW9yeSBhbGxvY2F0
aW9ucyBpbiBjb2RlIGlkZW50aWZpZWQgYXMgQ1BVIGJvdHRsZW5lY2tzIGluIElEQiBwcm9maWxp
bmcuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIC0ganVzdCBwZXJmb3JtYW5jZSB3b3JrLgorCisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5nOjpleHRyYWN0RW5jb2RlZElEQktleSk6IEF2b2lk
IGluY3JlbWVudGFsIGFsbG9jYXRpb25zLgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkNv
ZGluZzo6Y29tcGFyZUVuY29kZWRJREJLZXlzKTogUmVuYW1lIGNvbmZ1c2luZyB2YXJpYWJsZXMg
cCBhbmQgcS4KKyAgICAgICAgKElEQkxldmVsREJDb2RpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
SURCTGV2ZWxEQkNvZGluZzo6Y29tcGFyZSk6IFJlbmFtZSBmcm9tIGRlY29kZUFuZENvbXBhcmUs
IGFuZCBhZGQgc3BlY2lhbGl6YXRpb25zCisgICAgICAgIGZvciBmcmVxdWVudGx5IGVuY291bnRl
cmVkIHR5cGVzIChlLmcuIG9iamVjdC9pbmRleCBkYXRhKSB0aGF0IGNhbiBiZSBjb21wYXJlZCB3
aXRob3V0IGEKKyAgICAgICAgZnVsbCBkZWNvZGUuCisKIDIwMTItMDktMDMgIFNhbSBXZWluaWcg
IDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBQYXJ0IDEgb2YgcmVtb3ZpbmcgUGxhdGZvcm1T
dHJpbmcuaCwgbW92ZSByZW1haW5pbmcgZnVuY3Rpb25zIHRvIG5ldyBob21lcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmNwcApp
bmRleCBiM2Q3OGVmYjJlZWZhYmQ1Mjg1NDk0M2RkZmY1ZjgyMWQ0MTg3ODNjLi41MDM4ZTMwNzgw
YzFhMGNkOGQ3MzEzY2RhNGYzNWE3ZDlkMjc5MmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmNwcApAQCAtNTA1LDkgKzUw
NSw4IEBAIGNvbnN0IGNoYXIqIGRlY29kZUlEQktleShjb25zdCBjaGFyKiBwLCBjb25zdCBjaGFy
KiBsaW1pdCwgUmVmUHRyPElEQktleT4mIGZvdW5kCiAgICAgcmV0dXJuIDA7CiB9CiAKLWNvbnN0
IGNoYXIqIGV4dHJhY3RFbmNvZGVkSURCS2V5KGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFy
KiBsaW1pdCwgVmVjdG9yPGNoYXI+KiByZXN1bHQpCitjb25zdCBjaGFyKiBleHRyYWN0RW5jb2Rl
ZElEQktleShjb25zdCBjaGFyKiBzdGFydCwgY29uc3QgY2hhciogbGltaXQsIFZlY3RvcjxjaGFy
PiogcmVzdWx0ID0gMCkKIHsKLSAgICBBU1NFUlQocmVzdWx0KTsKICAgICBjb25zdCBjaGFyKiBw
ID0gc3RhcnQ7CiAgICAgaWYgKHAgPj0gbGltaXQpCiAgICAgICAgIHJldHVybiAwOwpAQCAtNTE3
LDggKzUxNiw3IEBAIGNvbnN0IGNoYXIqIGV4dHJhY3RFbmNvZGVkSURCS2V5KGNvbnN0IGNoYXIq
IHN0YXJ0LCBjb25zdCBjaGFyKiBsaW1pdCwgVmVjdG9yPGNoCiAgICAgc3dpdGNoICh0eXBlKSB7
CiAgICAgY2FzZSBJREJLZXlOdWxsVHlwZUJ5dGU6CiAgICAgY2FzZSBJREJLZXlNaW5LZXlUeXBl
Qnl0ZToKLSAgICAgICAgKnJlc3VsdCA9IGVuY29kZUJ5dGUodHlwZSk7Ci0gICAgICAgIHJldHVy
biBwOworICAgICAgICBicmVhazsKICAgICBjYXNlIElEQktleUFycmF5VHlwZUJ5dGU6IHsKICAg
ICAgICAgaW50NjRfdCBsZW5ndGg7CiAgICAgICAgIHAgPSBkZWNvZGVWYXJJbnQocCwgbGltaXQs
IGxlbmd0aCk7CkBAIC01MjYsMTYgKzUyNCwxMiBAQCBjb25zdCBjaGFyKiBleHRyYWN0RW5jb2Rl
ZElEQktleShjb25zdCBjaGFyKiBzdGFydCwgY29uc3QgY2hhciogbGltaXQsIFZlY3RvcjxjaAog
ICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGlmIChsZW5ndGggPCAwKQogICAgICAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgICAgIHJlc3VsdC0+Y2xlYXIoKTsKLSAgICAgICAgcmVzdWx0LT5h
cHBlbmQoc3RhcnQsIHAgLSBzdGFydCk7CiAgICAgICAgIHdoaWxlIChsZW5ndGgtLSkgewotICAg
ICAgICAgICAgVmVjdG9yPGNoYXI+IHN1YmtleTsKLSAgICAgICAgICAgIHAgPSBleHRyYWN0RW5j
b2RlZElEQktleShwLCBsaW1pdCwgJnN1YmtleSk7CisgICAgICAgICAgICBwID0gZXh0cmFjdEVu
Y29kZWRJREJLZXkocCwgbGltaXQpOwogICAgICAgICAgICAgaWYgKCFwKQogICAgICAgICAgICAg
ICAgIHJldHVybiAwOwotICAgICAgICAgICAgcmVzdWx0LT5hcHBlbmQoc3Via2V5KTsKICAgICAg
ICAgfQotICAgICAgICByZXR1cm4gcDsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ug
SURCS2V5U3RyaW5nVHlwZUJ5dGU6IHsKICAgICAgICAgaW50NjRfdCBsZW5ndGg7CkBAIC01NDQs
MjAgKzUzOCwyNSBAQCBjb25zdCBjaGFyKiBleHRyYWN0RW5jb2RlZElEQktleShjb25zdCBjaGFy
KiBzdGFydCwgY29uc3QgY2hhciogbGltaXQsIFZlY3RvcjxjaAogICAgICAgICAgICAgcmV0dXJu
IDA7CiAgICAgICAgIGlmIChwICsgbGVuZ3RoICogMiA+IGxpbWl0KQogICAgICAgICAgICAgcmV0
dXJuIDA7Ci0gICAgICAgIHJlc3VsdC0+Y2xlYXIoKTsKLSAgICAgICAgcmVzdWx0LT5hcHBlbmQo
c3RhcnQsIHAgLSBzdGFydCArIGxlbmd0aCAqIDIpOwotICAgICAgICByZXR1cm4gcCArIGxlbmd0
aCAqIDI7CisgICAgICAgIHAgKz0gbGVuZ3RoICogMjsKKyAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIGNhc2UgSURCS2V5RGF0ZVR5cGVCeXRlOgogICAgIGNhc2UgSURCS2V5TnVtYmVyVHlwZUJ5
dGU6CiAgICAgICAgIGlmIChwICsgc2l6ZW9mKGRvdWJsZSkgPiBsaW1pdCkKICAgICAgICAgICAg
IHJldHVybiAwOworICAgICAgICBwICs9IHNpemVvZihkb3VibGUpOworICAgICAgICBicmVhazsK
KyAgICB9CisKKyAgICBpZiAocmVzdWx0KSB7CisgICAgICAgIEFTU0VSVChwKTsKKyAgICAgICAg
QVNTRVJUKHAgPD0gbGltaXQpOwogICAgICAgICByZXN1bHQtPmNsZWFyKCk7Ci0gICAgICAgIHJl
c3VsdC0+YXBwZW5kKHN0YXJ0LCAxICsgc2l6ZW9mKGRvdWJsZSkpOwotICAgICAgICByZXR1cm4g
cCArIHNpemVvZihkb3VibGUpOworICAgICAgICByZXN1bHQtPmFwcGVuZChzdGFydCwgcCAtIHN0
YXJ0KTsKICAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIDA7CisK
KyAgICByZXR1cm4gcDsKIH0KIAogc3RhdGljIElEQktleTo6VHlwZSBrZXlUeXBlQnl0ZVRvS2V5
VHlwZSh1bnNpZ25lZCBjaGFyIHR5cGUpCkBAIC01ODEsMTMgKzU4MCwxMyBAQCBzdGF0aWMgSURC
S2V5OjpUeXBlIGtleVR5cGVCeXRlVG9LZXlUeXBlKHVuc2lnbmVkIGNoYXIgdHlwZSkKICAgICBy
ZXR1cm4gSURCS2V5OjpJbnZhbGlkVHlwZTsKIH0KIAotaW50IGNvbXBhcmVFbmNvZGVkSURCS2V5
cyhjb25zdCBjaGFyKiYgcCwgY29uc3QgY2hhciogbGltaXRBLCBjb25zdCBjaGFyKiYgcSwgY29u
c3QgY2hhciogbGltaXRCKQoraW50IGNvbXBhcmVFbmNvZGVkSURCS2V5cyhjb25zdCBjaGFyKiYg
cHRyQSwgY29uc3QgY2hhciogbGltaXRBLCBjb25zdCBjaGFyKiYgcHRyQiwgY29uc3QgY2hhciog
bGltaXRCKQogewotICAgIEFTU0VSVCgmcCAhPSAmcSk7Ci0gICAgQVNTRVJUKHAgPCBsaW1pdEEp
OwotICAgIEFTU0VSVChxIDwgbGltaXRCKTsKLSAgICB1bnNpZ25lZCBjaGFyIHR5cGVBID0gKnAr
KzsKLSAgICB1bnNpZ25lZCBjaGFyIHR5cGVCID0gKnErKzsKKyAgICBBU1NFUlQoJnB0ckEgIT0g
JnB0ckIpOworICAgIEFTU0VSVChwdHJBIDwgbGltaXRBKTsKKyAgICBBU1NFUlQocHRyQiA8IGxp
bWl0Qik7CisgICAgdW5zaWduZWQgY2hhciB0eXBlQSA9ICpwdHJBKys7CisgICAgdW5zaWduZWQg
Y2hhciB0eXBlQiA9ICpwdHJCKys7CiAKICAgICBpZiAoaW50IHggPSBJREJLZXk6OmNvbXBhcmVU
eXBlcyhrZXlUeXBlQnl0ZVRvS2V5VHlwZSh0eXBlQSksIGtleVR5cGVCeXRlVG9LZXlUeXBlKHR5
cGVCKSkpCiAgICAgICAgIHJldHVybiB4OwpAQCAtNTk5LDE2ICs1OTgsMTYgQEAgaW50IGNvbXBh
cmVFbmNvZGVkSURCS2V5cyhjb25zdCBjaGFyKiYgcCwgY29uc3QgY2hhciogbGltaXRBLCBjb25z
dCBjaGFyKiYgcSwgY28KICAgICAgICAgcmV0dXJuIDA7CiAgICAgY2FzZSBJREJLZXlBcnJheVR5
cGVCeXRlOiB7CiAgICAgICAgIGludDY0X3QgbGVuZ3RoQSwgbGVuZ3RoQjsKLSAgICAgICAgcCA9
IGRlY29kZVZhckludChwLCBsaW1pdEEsIGxlbmd0aEEpOwotICAgICAgICBpZiAoIXApCisgICAg
ICAgIHB0ckEgPSBkZWNvZGVWYXJJbnQocHRyQSwgbGltaXRBLCBsZW5ndGhBKTsKKyAgICAgICAg
aWYgKCFwdHJBKQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHEgPSBkZWNvZGVWYXJJ
bnQocSwgbGltaXRCLCBsZW5ndGhCKTsKLSAgICAgICAgaWYgKCFxKQorICAgICAgICBwdHJCID0g
ZGVjb2RlVmFySW50KHB0ckIsIGxpbWl0QiwgbGVuZ3RoQik7CisgICAgICAgIGlmICghcHRyQikK
ICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBpZiAobGVuZ3RoQSA8IDAgfHwgbGVuZ3Ro
QiA8IDApCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgZm9yIChpbnQ2NF90IGkgPSAw
OyBpIDwgbGVuZ3RoQSAmJiBpIDwgbGVuZ3RoQjsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoaW50
IGNtcCA9IGNvbXBhcmVFbmNvZGVkSURCS2V5cyhwLCBsaW1pdEEsIHEsIGxpbWl0QikpCisgICAg
ICAgICAgICBpZiAoaW50IGNtcCA9IGNvbXBhcmVFbmNvZGVkSURCS2V5cyhwdHJBLCBsaW1pdEEs
IHB0ckIsIGxpbWl0QikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNtcDsKICAgICAgICAgfQog
ICAgICAgICBpZiAobGVuZ3RoQSA8IGxlbmd0aEIpCkBAIC02MTgsMTQgKzYxNywxNCBAQCBpbnQg
Y29tcGFyZUVuY29kZWRJREJLZXlzKGNvbnN0IGNoYXIqJiBwLCBjb25zdCBjaGFyKiBsaW1pdEEs
IGNvbnN0IGNoYXIqJiBxLCBjbwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgY2FzZSBJ
REJLZXlTdHJpbmdUeXBlQnl0ZToKLSAgICAgICAgcmV0dXJuIGNvbXBhcmVFbmNvZGVkU3RyaW5n
c1dpdGhMZW5ndGgocCwgbGltaXRBLCBxLCBsaW1pdEIpOworICAgICAgICByZXR1cm4gY29tcGFy
ZUVuY29kZWRTdHJpbmdzV2l0aExlbmd0aChwdHJBLCBsaW1pdEEsIHB0ckIsIGxpbWl0Qik7CiAg
ICAgY2FzZSBJREJLZXlEYXRlVHlwZUJ5dGU6CiAgICAgY2FzZSBJREJLZXlOdW1iZXJUeXBlQnl0
ZTogewogICAgICAgICBkb3VibGUgZCwgZTsKLSAgICAgICAgcCA9IGRlY29kZURvdWJsZShwLCBs
aW1pdEEsICZkKTsKLSAgICAgICAgQVNTRVJUKHApOwotICAgICAgICBxID0gZGVjb2RlRG91Ymxl
KHEsIGxpbWl0QiwgJmUpOwotICAgICAgICBBU1NFUlQocSk7CisgICAgICAgIHB0ckEgPSBkZWNv
ZGVEb3VibGUocHRyQSwgbGltaXRBLCAmZCk7CisgICAgICAgIEFTU0VSVChwdHJBKTsKKyAgICAg
ICAgcHRyQiA9IGRlY29kZURvdWJsZShwdHJCLCBsaW1pdEIsICZlKTsKKyAgICAgICAgQVNTRVJU
KHB0ckIpOwogICAgICAgICBpZiAoZCA8IGUpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAg
ICAgIGlmIChkID4gZSkKQEAgLTY0MywxMiArNjQyLDEyIEBAIGludCBjb21wYXJlRW5jb2RlZElE
QktleXMoY29uc3QgVmVjdG9yPGNoYXI+JiBrZXlBLCBjb25zdCBWZWN0b3I8Y2hhcj4mIGtleUIp
CiAgICAgQVNTRVJUKGtleUEuc2l6ZSgpID49IDEpOwogICAgIEFTU0VSVChrZXlCLnNpemUoKSA+
PSAxKTsKIAotICAgIGNvbnN0IGNoYXIqIHAgPSBrZXlBLmRhdGEoKTsKLSAgICBjb25zdCBjaGFy
KiBsaW1pdEEgPSBwICsga2V5QS5zaXplKCk7Ci0gICAgY29uc3QgY2hhciogcSA9IGtleUIuZGF0
YSgpOwotICAgIGNvbnN0IGNoYXIqIGxpbWl0QiA9IHEgKyBrZXlCLnNpemUoKTsKKyAgICBjb25z
dCBjaGFyKiBwdHJBID0ga2V5QS5kYXRhKCk7CisgICAgY29uc3QgY2hhciogbGltaXRBID0gcHRy
QSArIGtleUEuc2l6ZSgpOworICAgIGNvbnN0IGNoYXIqIHB0ckIgPSBrZXlCLmRhdGEoKTsKKyAg
ICBjb25zdCBjaGFyKiBsaW1pdEIgPSBwdHJCICsga2V5Qi5zaXplKCk7CiAKLSAgICByZXR1cm4g
Y29tcGFyZUVuY29kZWRJREJLZXlzKHAsIGxpbWl0QSwgcSwgbGltaXRCKTsKKyAgICByZXR1cm4g
Y29tcGFyZUVuY29kZWRJREJLZXlzKHB0ckEsIGxpbWl0QSwgcHRyQiwgbGltaXRCKTsKIH0KIAog
VmVjdG9yPGNoYXI+IGVuY29kZUlEQktleVBhdGgoY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCkK
QEAgLTcyMCw4ICs3MTksOSBAQCBJREJLZXlQYXRoIGRlY29kZUlEQktleVBhdGgoY29uc3QgY2hh
ciogcCwgY29uc3QgY2hhciogbGltaXQpCiB9CiAKIG5hbWVzcGFjZSB7CisKIHRlbXBsYXRlPHR5
cGVuYW1lIEtleVR5cGU+Ci1pbnQgZGVjb2RlQW5kQ29tcGFyZShjb25zdCBMZXZlbERCU2xpY2Um
IGEsIGNvbnN0IExldmVsREJTbGljZSYgYikKK2ludCBjb21wYXJlKGNvbnN0IExldmVsREJTbGlj
ZSYgYSwgY29uc3QgTGV2ZWxEQlNsaWNlJiBiLCBib29sIGlnbm9yZUR1cGxpY2F0ZXMgPSBmYWxz
ZSkKIHsKICAgICBLZXlUeXBlIGtleUE7CiAgICAgS2V5VHlwZSBrZXlCOwpAQCAtNzMzLDYgKzcz
MywxMDMgQEAgaW50IGRlY29kZUFuZENvbXBhcmUoY29uc3QgTGV2ZWxEQlNsaWNlJiBhLCBjb25z
dCBMZXZlbERCU2xpY2UmIGIpCiAKICAgICByZXR1cm4ga2V5QS5jb21wYXJlKGtleUIpOwogfQor
Cit0ZW1wbGF0ZTw+CitpbnQgY29tcGFyZTxFeGlzdHNFbnRyeUtleT4oY29uc3QgTGV2ZWxEQlNs
aWNlJiBhLCBjb25zdCBMZXZlbERCU2xpY2UmIGIsIGJvb2wgaWdub3JlRHVwbGljYXRlcykKK3sK
KyAgICBLZXlQcmVmaXggcHJlZml4QTsKKyAgICBLZXlQcmVmaXggcHJlZml4QjsKKyAgICBjb25z
dCBjaGFyKiBwdHJBID0gS2V5UHJlZml4OjpkZWNvZGUoYS5iZWdpbigpLCBhLmVuZCgpLCAmcHJl
Zml4QSk7CisgICAgY29uc3QgY2hhciogcHRyQiA9IEtleVByZWZpeDo6ZGVjb2RlKGIuYmVnaW4o
KSwgYi5lbmQoKSwgJnByZWZpeEIpOworICAgIEFTU0VSVChwdHJBKTsKKyAgICBBU1NFUlQocHRy
Qik7CisgICAgQVNTRVJUKHByZWZpeEEubV9kYXRhYmFzZUlkKTsKKyAgICBBU1NFUlQocHJlZml4
QS5tX29iamVjdFN0b3JlSWQpOworICAgIEFTU0VSVChwcmVmaXhBLm1faW5kZXhJZCA9PSBFeGlz
dHNFbnRyeUtleTo6U3BlY2lhbEluZGV4TnVtYmVyKTsKKyAgICBBU1NFUlQocHJlZml4Qi5tX2Rh
dGFiYXNlSWQpOworICAgIEFTU0VSVChwcmVmaXhCLm1fb2JqZWN0U3RvcmVJZCk7CisgICAgQVNT
RVJUKHByZWZpeEIubV9pbmRleElkID09IEV4aXN0c0VudHJ5S2V5OjpTcGVjaWFsSW5kZXhOdW1i
ZXIpOworICAgIEFTU0VSVChwdHJBICE9IGEuZW5kKCkpOworICAgIEFTU0VSVChwdHJCICE9IGIu
ZW5kKCkpOworICAgIC8vIFByZWZpeGVzIGFyZSBub3QgY29tcGFyZWQgLSBpdCBpcyBhc3N1bWVk
IHRoaXMgd2FzIGFscmVhZHkgZG9uZS4KKyAgICBBU1NFUlQoIXByZWZpeEEuY29tcGFyZShwcmVm
aXhCKSk7CisKKyAgICByZXR1cm4gY29tcGFyZUVuY29kZWRJREJLZXlzKHB0ckEsIGEuZW5kKCks
IHB0ckIsIGIuZW5kKCkpOworfQorCit0ZW1wbGF0ZTw+CitpbnQgY29tcGFyZTxPYmplY3RTdG9y
ZURhdGFLZXk+KGNvbnN0IExldmVsREJTbGljZSYgYSwgY29uc3QgTGV2ZWxEQlNsaWNlJiBiLCBi
b29sIGlnbm9yZUR1cGxpY2F0ZXMpCit7CisgICAgS2V5UHJlZml4IHByZWZpeEE7CisgICAgS2V5
UHJlZml4IHByZWZpeEI7CisgICAgY29uc3QgY2hhciogcHRyQSA9IEtleVByZWZpeDo6ZGVjb2Rl
KGEuYmVnaW4oKSwgYS5lbmQoKSwgJnByZWZpeEEpOworICAgIGNvbnN0IGNoYXIqIHB0ckIgPSBL
ZXlQcmVmaXg6OmRlY29kZShiLmJlZ2luKCksIGIuZW5kKCksICZwcmVmaXhCKTsKKyAgICBBU1NF
UlQocHRyQSk7CisgICAgQVNTRVJUKHB0ckIpOworICAgIEFTU0VSVChwcmVmaXhBLm1fZGF0YWJh
c2VJZCk7CisgICAgQVNTRVJUKHByZWZpeEEubV9vYmplY3RTdG9yZUlkKTsKKyAgICBBU1NFUlQo
cHJlZml4QS5tX2luZGV4SWQgPT0gT2JqZWN0U3RvcmVEYXRhS2V5OjpTcGVjaWFsSW5kZXhOdW1i
ZXIpOworICAgIEFTU0VSVChwcmVmaXhCLm1fZGF0YWJhc2VJZCk7CisgICAgQVNTRVJUKHByZWZp
eEIubV9vYmplY3RTdG9yZUlkKTsKKyAgICBBU1NFUlQocHJlZml4Qi5tX2luZGV4SWQgPT0gT2Jq
ZWN0U3RvcmVEYXRhS2V5OjpTcGVjaWFsSW5kZXhOdW1iZXIpOworICAgIEFTU0VSVChwdHJBICE9
IGEuZW5kKCkpOworICAgIEFTU0VSVChwdHJCICE9IGIuZW5kKCkpOworICAgIC8vIFByZWZpeGVz
IGFyZSBub3QgY29tcGFyZWQgLSBpdCBpcyBhc3N1bWVkIHRoaXMgd2FzIGFscmVhZHkgZG9uZS4K
KyAgICBBU1NFUlQoIXByZWZpeEEuY29tcGFyZShwcmVmaXhCKSk7CisKKyAgICByZXR1cm4gY29t
cGFyZUVuY29kZWRJREJLZXlzKHB0ckEsIGEuZW5kKCksIHB0ckIsIGIuZW5kKCkpOworfQorCit0
ZW1wbGF0ZTw+CitpbnQgY29tcGFyZTxJbmRleERhdGFLZXk+KGNvbnN0IExldmVsREJTbGljZSYg
YSwgY29uc3QgTGV2ZWxEQlNsaWNlJiBiLCBib29sIGlnbm9yZUR1cGxpY2F0ZXMpCit7CisgICAg
S2V5UHJlZml4IHByZWZpeEE7CisgICAgS2V5UHJlZml4IHByZWZpeEI7CisgICAgY29uc3QgY2hh
ciogcHRyQSA9IEtleVByZWZpeDo6ZGVjb2RlKGEuYmVnaW4oKSwgYS5lbmQoKSwgJnByZWZpeEEp
OworICAgIGNvbnN0IGNoYXIqIHB0ckIgPSBLZXlQcmVmaXg6OmRlY29kZShiLmJlZ2luKCksIGIu
ZW5kKCksICZwcmVmaXhCKTsKKyAgICBBU1NFUlQocHRyQSk7CisgICAgQVNTRVJUKHB0ckIpOwor
ICAgIEFTU0VSVChwcmVmaXhBLm1fZGF0YWJhc2VJZCk7CisgICAgQVNTRVJUKHByZWZpeEEubV9v
YmplY3RTdG9yZUlkKTsKKyAgICBBU1NFUlQocHJlZml4QS5tX2luZGV4SWQgPj0gTWluaW11bUlu
ZGV4SWQpOworICAgIEFTU0VSVChwcmVmaXhCLm1fZGF0YWJhc2VJZCk7CisgICAgQVNTRVJUKHBy
ZWZpeEIubV9vYmplY3RTdG9yZUlkKTsKKyAgICBBU1NFUlQocHJlZml4Qi5tX2luZGV4SWQgPj0g
TWluaW11bUluZGV4SWQpOworICAgIEFTU0VSVChwdHJBICE9IGEuZW5kKCkpOworICAgIEFTU0VS
VChwdHJCICE9IGIuZW5kKCkpOworICAgIC8vIFByZWZpeGVzIGFyZSBub3QgY29tcGFyZWQgLSBp
dCBpcyBhc3N1bWVkIHRoaXMgd2FzIGFscmVhZHkgZG9uZS4KKyAgICBBU1NFUlQoIXByZWZpeEEu
Y29tcGFyZShwcmVmaXhCKSk7CisKKyAgICAvLyBpbmRleCBrZXkKKyAgICBpZiAoaW50IHggPSBj
b21wYXJlRW5jb2RlZElEQktleXMocHRyQSwgYS5lbmQoKSwgcHRyQiwgYi5lbmQoKSkpCisgICAg
ICAgIHJldHVybiB4OworICAgIGlmIChpZ25vcmVEdXBsaWNhdGVzKQorICAgICAgICByZXR1cm4g
MDsKKworICAgIC8vIHNlcXVlbmNlIG51bWJlciBbb3B0aW9uYWxdCisgICAgaW50NjRfdCBzZXF1
ZW5jZU51bWJlckEgPSAtMTsKKyAgICBpbnQ2NF90IHNlcXVlbmNlTnVtYmVyQiA9IC0xOworICAg
IGlmIChwdHJBICE9IGEuZW5kKCkpCisgICAgICAgIHB0ckEgPSBkZWNvZGVWYXJJbnQocHRyQSwg
YS5lbmQoKSwgc2VxdWVuY2VOdW1iZXJBKTsKKyAgICBpZiAocHRyQiAhPSBiLmVuZCgpKQorICAg
ICAgICBwdHJCID0gZGVjb2RlVmFySW50KHB0ckIsIGIuZW5kKCksIHNlcXVlbmNlTnVtYmVyQik7
CisKKyAgICAvLyBwcmltYXIga2V5IFtvcHRpb25hbF0KKyAgICBpZiAoIXB0ckEgfHwgIXB0ckIp
CisgICAgICAgIHJldHVybiAwOworICAgIGlmIChwdHJBID09IGEuZW5kKCkgJiYgcHRyQiA9PSBi
LmVuZCgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAocHRyQSA9PSBhLmVuZCgpKQorICAg
ICAgICByZXR1cm4gLTE7CisgICAgaWYgKHB0ckIgPT0gYi5lbmQoKSkKKyAgICAgICAgcmV0dXJu
IDE7CisKKyAgICBpZiAoaW50IHggPSBjb21wYXJlRW5jb2RlZElEQktleXMocHRyQSwgYS5lbmQo
KSwgcHRyQiwgYi5lbmQoKSkpCisgICAgICAgIHJldHVybiB4OworCisgICAgcmV0dXJuIGNvbXBh
cmVJbnRzKHNlcXVlbmNlTnVtYmVyQSwgc2VxdWVuY2VOdW1iZXJCKTsKK30KKwogfQogCiBpbnQg
Y29tcGFyZShjb25zdCBMZXZlbERCU2xpY2UmIGEsIGNvbnN0IExldmVsREJTbGljZSYgYiwgYm9v
bCBpbmRleEtleXMpCkBAIC03NjYsOSArODYzLDkgQEAgaW50IGNvbXBhcmUoY29uc3QgTGV2ZWxE
QlNsaWNlJiBhLCBjb25zdCBMZXZlbERCU2xpY2UmIGIsIGJvb2wgaW5kZXhLZXlzKQogICAgICAg
ICBpZiAodHlwZUJ5dGVBIDw9IDEpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgaWYg
KHR5cGVCeXRlQSA9PSBEYXRhYmFzZUZyZWVMaXN0VHlwZUJ5dGUpCi0gICAgICAgICAgICByZXR1
cm4gZGVjb2RlQW5kQ29tcGFyZTxEYXRhYmFzZUZyZWVMaXN0S2V5PihhLCBiKTsKKyAgICAgICAg
ICAgIHJldHVybiBjb21wYXJlPERhdGFiYXNlRnJlZUxpc3RLZXk+KGEsIGIpOwogICAgICAgICBp
ZiAodHlwZUJ5dGVBID09IERhdGFiYXNlTmFtZVR5cGVCeXRlKQotICAgICAgICAgICAgcmV0dXJu
IGRlY29kZUFuZENvbXBhcmU8RGF0YWJhc2VOYW1lS2V5PihhLCBiKTsKKyAgICAgICAgICAgIHJl
dHVybiBjb21wYXJlPERhdGFiYXNlTmFtZUtleT4oYSwgYik7CiAgICAgfQogCiAgICAgaWYgKHBy
ZWZpeEEudHlwZSgpID09IEtleVByZWZpeDo6RGF0YWJhc2VNZXRhRGF0YSkgewpAQCAtNzg1LDE3
ICs4ODIsMTcgQEAgaW50IGNvbXBhcmUoY29uc3QgTGV2ZWxEQlNsaWNlJiBhLCBjb25zdCBMZXZl
bERCU2xpY2UmIGIsIGJvb2wgaW5kZXhLZXlzKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAg
ICAgICAgaWYgKHR5cGVCeXRlQSA9PSBPYmplY3RTdG9yZU1ldGFEYXRhVHlwZUJ5dGUpCi0gICAg
ICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ29tcGFyZTxPYmplY3RTdG9yZU1ldGFEYXRhS2V5Pihh
LCBiKTsKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlPE9iamVjdFN0b3JlTWV0YURhdGFLZXk+
KGEsIGIpOwogICAgICAgICBpZiAodHlwZUJ5dGVBID09IEluZGV4TWV0YURhdGFUeXBlQnl0ZSkK
LSAgICAgICAgICAgIHJldHVybiBkZWNvZGVBbmRDb21wYXJlPEluZGV4TWV0YURhdGFLZXk+KGEs
IGIpOworICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmU8SW5kZXhNZXRhRGF0YUtleT4oYSwgYik7
CiAgICAgICAgIGlmICh0eXBlQnl0ZUEgPT0gT2JqZWN0U3RvcmVGcmVlTGlzdFR5cGVCeXRlKQot
ICAgICAgICAgICAgcmV0dXJuIGRlY29kZUFuZENvbXBhcmU8T2JqZWN0U3RvcmVGcmVlTGlzdEtl
eT4oYSwgYik7CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZTxPYmplY3RTdG9yZUZyZWVMaXN0
S2V5PihhLCBiKTsKICAgICAgICAgaWYgKHR5cGVCeXRlQSA9PSBJbmRleEZyZWVMaXN0VHlwZUJ5
dGUpCi0gICAgICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ29tcGFyZTxJbmRleEZyZWVMaXN0S2V5
PihhLCBiKTsKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlPEluZGV4RnJlZUxpc3RLZXk+KGEs
IGIpOwogICAgICAgICBpZiAodHlwZUJ5dGVBID09IE9iamVjdFN0b3JlTmFtZXNUeXBlQnl0ZSkK
LSAgICAgICAgICAgIHJldHVybiBkZWNvZGVBbmRDb21wYXJlPE9iamVjdFN0b3JlTmFtZXNLZXk+
KGEsIGIpOworICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmU8T2JqZWN0U3RvcmVOYW1lc0tleT4o
YSwgYik7CiAgICAgICAgIGlmICh0eXBlQnl0ZUEgPT0gSW5kZXhOYW1lc0tleVR5cGVCeXRlKQot
ICAgICAgICAgICAgcmV0dXJuIGRlY29kZUFuZENvbXBhcmU8SW5kZXhOYW1lc0tleT4oYSwgYik7
CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZTxJbmRleE5hbWVzS2V5PihhLCBiKTsKIAogICAg
ICAgICByZXR1cm4gMDsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC04MDksNyAr
OTA2LDcgQEAgaW50IGNvbXBhcmUoY29uc3QgTGV2ZWxEQlNsaWNlJiBhLCBjb25zdCBMZXZlbERC
U2xpY2UmIGIsIGJvb2wgaW5kZXhLZXlzKQogICAgICAgICBpZiAocHRyQiA9PSBlbmRCKQogICAg
ICAgICAgICAgcmV0dXJuIDE7IC8vIEZJWE1FOiBUaGlzIGNhc2Ugb2Ygbm9uLWV4aXN0aW5nIHVz
ZXIga2V5cyBzaG91bGQgbm90IGhhdmUgdG8gYmUgaGFuZGxlZCB0aGlzIHdheS4KIAotICAgICAg
ICByZXR1cm4gZGVjb2RlQW5kQ29tcGFyZTxPYmplY3RTdG9yZURhdGFLZXk+KGEsIGIpOworICAg
ICAgICByZXR1cm4gY29tcGFyZTxPYmplY3RTdG9yZURhdGFLZXk+KGEsIGIpOwogICAgIH0KICAg
ICBpZiAocHJlZml4QS50eXBlKCkgPT0gS2V5UHJlZml4OjpFeGlzdHNFbnRyeSkgewogICAgICAg
ICBpZiAocHRyQSA9PSBlbmRBICYmIHB0ckIgPT0gZW5kQikKQEAgLTgxOSw3ICs5MTYsNyBAQCBp
bnQgY29tcGFyZShjb25zdCBMZXZlbERCU2xpY2UmIGEsIGNvbnN0IExldmVsREJTbGljZSYgYiwg
Ym9vbCBpbmRleEtleXMpCiAgICAgICAgIGlmIChwdHJCID09IGVuZEIpCiAgICAgICAgICAgICBy
ZXR1cm4gMTsgLy8gRklYTUU6IFRoaXMgY2FzZSBvZiBub24tZXhpc3RpbmcgdXNlciBrZXlzIHNo
b3VsZCBub3QgaGF2ZSB0byBiZSBoYW5kbGVkIHRoaXMgd2F5LgogCi0gICAgICAgIHJldHVybiBk
ZWNvZGVBbmRDb21wYXJlPEV4aXN0c0VudHJ5S2V5PihhLCBiKTsKKyAgICAgICAgcmV0dXJuIGNv
bXBhcmU8RXhpc3RzRW50cnlLZXk+KGEsIGIpOwogICAgIH0KICAgICBpZiAocHJlZml4QS50eXBl
KCkgPT0gS2V5UHJlZml4OjpJbmRleERhdGEpIHsKICAgICAgICAgaWYgKHB0ckEgPT0gZW5kQSAm
JiBwdHJCID09IGVuZEIpCkBAIC04MjksMTYgKzkyNiw4IEBAIGludCBjb21wYXJlKGNvbnN0IExl
dmVsREJTbGljZSYgYSwgY29uc3QgTGV2ZWxEQlNsaWNlJiBiLCBib29sIGluZGV4S2V5cykKICAg
ICAgICAgaWYgKHB0ckIgPT0gZW5kQikKICAgICAgICAgICAgIHJldHVybiAxOyAvLyBGSVhNRTog
VGhpcyBjYXNlIG9mIG5vbi1leGlzdGluZyB1c2VyIGtleXMgc2hvdWxkIG5vdCBoYXZlIHRvIGJl
IGhhbmRsZWQgdGhpcyB3YXkuCiAKLSAgICAgICAgSW5kZXhEYXRhS2V5IGluZGV4RGF0YUtleUE7
Ci0gICAgICAgIEluZGV4RGF0YUtleSBpbmRleERhdGFLZXlCOwotCi0gICAgICAgIHB0ckEgPSBJ
bmRleERhdGFLZXk6OmRlY29kZShhLmJlZ2luKCksIGVuZEEsICZpbmRleERhdGFLZXlBKTsKLSAg
ICAgICAgcHRyQiA9IEluZGV4RGF0YUtleTo6ZGVjb2RlKGIuYmVnaW4oKSwgZW5kQiwgJmluZGV4
RGF0YUtleUIpOwotICAgICAgICBBU1NFUlQocHRyQSk7Ci0gICAgICAgIEFTU0VSVChwdHJCKTsK
LQogICAgICAgICBib29sIGlnbm9yZUR1cGxpY2F0ZXMgPSBpbmRleEtleXM7Ci0gICAgICAgIHJl
dHVybiBpbmRleERhdGFLZXlBLmNvbXBhcmUoaW5kZXhEYXRhS2V5QiwgaWdub3JlRHVwbGljYXRl
cyk7CisgICAgICAgIHJldHVybiBjb21wYXJlPEluZGV4RGF0YUtleT4oYSwgYiwgaWdub3JlRHVw
bGljYXRlcyk7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163408</attachid>
            <date>2012-09-11 11:20:25 -0700</date>
            <delta_ts>2012-09-11 15:29:58 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-96037-20120911112000.patch</filename>
            <type>text/plain</type>
            <size>14129</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4MDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWNhZTY2ZjExM2ExZjk5
NWQxY2NiMDY4YzY2YjViOTQwMTY5NjI4OC4uYjMyNDYwM2EwM2FjNGIzZmM5YTk3MzQwMmVkYTUx
MzM2Yjk4MTZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTA5LTA3ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBPcHRp
bWl6ZSBrZXkgZGVjb2RlIGFuZCBjb21wYXJpc29uIG9wZXJhdGlvbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2MDM3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgVG9ueSBDaGFuZy4KKworICAgICAgICBFbGltaW5hdGUgbWVtb3J5IGFsbG9jYXRpb25z
IGluIGNvZGUgaWRlbnRpZmllZCBhcyBDUFUgYm90dGxlbmVja3MgaW4gSURCIHByb2ZpbGluZy4K
KworICAgICAgICBObyBuZXcgdGVzdHMgLSBqdXN0IHBlcmZvcm1hbmNlIHdvcmsuCisKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklEQkxldmVsREJDb2Rpbmc6OmV4dHJhY3RFbmNvZGVkSURCS2V5KTogQXZvaWQgaW5j
cmVtZW50YWwgYWxsb2NhdGlvbnMuCisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5n
Ojpjb21wYXJlRW5jb2RlZElEQktleXMpOiBSZW5hbWUgY29uZnVzaW5nIHZhcmlhYmxlcyBwIGFu
ZCBxLgorICAgICAgICAoSURCTGV2ZWxEQkNvZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJREJM
ZXZlbERCQ29kaW5nOjpjb21wYXJlKTogUmVuYW1lIGZyb20gZGVjb2RlQW5kQ29tcGFyZSwgYW5k
IGFkZCBzcGVjaWFsaXphdGlvbnMKKyAgICAgICAgZm9yIGZyZXF1ZW50bHkgZW5jb3VudGVyZWQg
dHlwZXMgKGUuZy4gb2JqZWN0L2luZGV4IGRhdGEpIHRoYXQgY2FuIGJlIGNvbXBhcmVkIHdpdGhv
dXQgYQorICAgICAgICBmdWxsIGRlY29kZS4KKwogMjAxMi0wOS0wOSAgUGF0cmljayBHYW5zdGVy
ZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgU3RyaW5nQnVpbGRlcjo6YXBw
ZW5kTnVtYmVyKCkgYW5kIHVzZSBpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmNwcAppbmRleCBiM2Q3OGVmYjJlZWZhYmQ1Mjg1
NDk0M2RkZmY1ZjgyMWQ0MTg3ODNjLi45Nzc1M2MyYTgzOTM2ZmY1ZDU4MDQ2ZDNmMDVlZmNlZGFh
NzA4YjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJM
ZXZlbERCQ29kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJMZXZlbERCQ29kaW5nLmNwcApAQCAtNTA1LDkgKzUwNSw4IEBAIGNvbnN0IGNoYXIqIGRlY29k
ZUlEQktleShjb25zdCBjaGFyKiBwLCBjb25zdCBjaGFyKiBsaW1pdCwgUmVmUHRyPElEQktleT4m
IGZvdW5kCiAgICAgcmV0dXJuIDA7CiB9CiAKLWNvbnN0IGNoYXIqIGV4dHJhY3RFbmNvZGVkSURC
S2V5KGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBsaW1pdCwgVmVjdG9yPGNoYXI+KiBy
ZXN1bHQpCitjb25zdCBjaGFyKiBleHRyYWN0RW5jb2RlZElEQktleShjb25zdCBjaGFyKiBzdGFy
dCwgY29uc3QgY2hhciogbGltaXQsIFZlY3RvcjxjaGFyPiogcmVzdWx0ID0gMCkKIHsKLSAgICBB
U1NFUlQocmVzdWx0KTsKICAgICBjb25zdCBjaGFyKiBwID0gc3RhcnQ7CiAgICAgaWYgKHAgPj0g
bGltaXQpCiAgICAgICAgIHJldHVybiAwOwpAQCAtNTE3LDggKzUxNiw3IEBAIGNvbnN0IGNoYXIq
IGV4dHJhY3RFbmNvZGVkSURCS2V5KGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBsaW1p
dCwgVmVjdG9yPGNoCiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBJREJLZXlOdWxsVHlw
ZUJ5dGU6CiAgICAgY2FzZSBJREJLZXlNaW5LZXlUeXBlQnl0ZToKLSAgICAgICAgKnJlc3VsdCA9
IGVuY29kZUJ5dGUodHlwZSk7Ci0gICAgICAgIHJldHVybiBwOworICAgICAgICBicmVhazsKICAg
ICBjYXNlIElEQktleUFycmF5VHlwZUJ5dGU6IHsKICAgICAgICAgaW50NjRfdCBsZW5ndGg7CiAg
ICAgICAgIHAgPSBkZWNvZGVWYXJJbnQocCwgbGltaXQsIGxlbmd0aCk7CkBAIC01MjYsMTYgKzUy
NCwxMiBAQCBjb25zdCBjaGFyKiBleHRyYWN0RW5jb2RlZElEQktleShjb25zdCBjaGFyKiBzdGFy
dCwgY29uc3QgY2hhciogbGltaXQsIFZlY3RvcjxjaAogICAgICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgICAgIGlmIChsZW5ndGggPCAwKQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHJl
c3VsdC0+Y2xlYXIoKTsKLSAgICAgICAgcmVzdWx0LT5hcHBlbmQoc3RhcnQsIHAgLSBzdGFydCk7
CiAgICAgICAgIHdoaWxlIChsZW5ndGgtLSkgewotICAgICAgICAgICAgVmVjdG9yPGNoYXI+IHN1
YmtleTsKLSAgICAgICAgICAgIHAgPSBleHRyYWN0RW5jb2RlZElEQktleShwLCBsaW1pdCwgJnN1
YmtleSk7CisgICAgICAgICAgICBwID0gZXh0cmFjdEVuY29kZWRJREJLZXkocCwgbGltaXQpOwog
ICAgICAgICAgICAgaWYgKCFwKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAg
ICAgcmVzdWx0LT5hcHBlbmQoc3Via2V5KTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gcDsK
KyAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgSURCS2V5U3RyaW5nVHlwZUJ5dGU6IHsK
ICAgICAgICAgaW50NjRfdCBsZW5ndGg7CkBAIC01NDQsMjAgKzUzOCwyNSBAQCBjb25zdCBjaGFy
KiBleHRyYWN0RW5jb2RlZElEQktleShjb25zdCBjaGFyKiBzdGFydCwgY29uc3QgY2hhciogbGlt
aXQsIFZlY3RvcjxjaAogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGlmIChwICsgbGVu
Z3RoICogMiA+IGxpbWl0KQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHJlc3VsdC0+
Y2xlYXIoKTsKLSAgICAgICAgcmVzdWx0LT5hcHBlbmQoc3RhcnQsIHAgLSBzdGFydCArIGxlbmd0
aCAqIDIpOwotICAgICAgICByZXR1cm4gcCArIGxlbmd0aCAqIDI7CisgICAgICAgIHAgKz0gbGVu
Z3RoICogMjsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgSURCS2V5RGF0ZVR5cGVC
eXRlOgogICAgIGNhc2UgSURCS2V5TnVtYmVyVHlwZUJ5dGU6CiAgICAgICAgIGlmIChwICsgc2l6
ZW9mKGRvdWJsZSkgPiBsaW1pdCkKICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBwICs9
IHNpemVvZihkb3VibGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAocmVzdWx0
KSB7CisgICAgICAgIEFTU0VSVChwKTsKKyAgICAgICAgQVNTRVJUKHAgPD0gbGltaXQpOwogICAg
ICAgICByZXN1bHQtPmNsZWFyKCk7Ci0gICAgICAgIHJlc3VsdC0+YXBwZW5kKHN0YXJ0LCAxICsg
c2l6ZW9mKGRvdWJsZSkpOwotICAgICAgICByZXR1cm4gcCArIHNpemVvZihkb3VibGUpOworICAg
ICAgICByZXN1bHQtPmFwcGVuZChzdGFydCwgcCAtIHN0YXJ0KTsKICAgICB9Ci0gICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gcDsKIH0KIAogc3Rh
dGljIElEQktleTo6VHlwZSBrZXlUeXBlQnl0ZVRvS2V5VHlwZSh1bnNpZ25lZCBjaGFyIHR5cGUp
CkBAIC01ODEsMTMgKzU4MCwxMyBAQCBzdGF0aWMgSURCS2V5OjpUeXBlIGtleVR5cGVCeXRlVG9L
ZXlUeXBlKHVuc2lnbmVkIGNoYXIgdHlwZSkKICAgICByZXR1cm4gSURCS2V5OjpJbnZhbGlkVHlw
ZTsKIH0KIAotaW50IGNvbXBhcmVFbmNvZGVkSURCS2V5cyhjb25zdCBjaGFyKiYgcCwgY29uc3Qg
Y2hhciogbGltaXRBLCBjb25zdCBjaGFyKiYgcSwgY29uc3QgY2hhciogbGltaXRCKQoraW50IGNv
bXBhcmVFbmNvZGVkSURCS2V5cyhjb25zdCBjaGFyKiYgcHRyQSwgY29uc3QgY2hhciogbGltaXRB
LCBjb25zdCBjaGFyKiYgcHRyQiwgY29uc3QgY2hhciogbGltaXRCKQogewotICAgIEFTU0VSVCgm
cCAhPSAmcSk7Ci0gICAgQVNTRVJUKHAgPCBsaW1pdEEpOwotICAgIEFTU0VSVChxIDwgbGltaXRC
KTsKLSAgICB1bnNpZ25lZCBjaGFyIHR5cGVBID0gKnArKzsKLSAgICB1bnNpZ25lZCBjaGFyIHR5
cGVCID0gKnErKzsKKyAgICBBU1NFUlQoJnB0ckEgIT0gJnB0ckIpOworICAgIEFTU0VSVChwdHJB
IDwgbGltaXRBKTsKKyAgICBBU1NFUlQocHRyQiA8IGxpbWl0Qik7CisgICAgdW5zaWduZWQgY2hh
ciB0eXBlQSA9ICpwdHJBKys7CisgICAgdW5zaWduZWQgY2hhciB0eXBlQiA9ICpwdHJCKys7CiAK
ICAgICBpZiAoaW50IHggPSBJREJLZXk6OmNvbXBhcmVUeXBlcyhrZXlUeXBlQnl0ZVRvS2V5VHlw
ZSh0eXBlQSksIGtleVR5cGVCeXRlVG9LZXlUeXBlKHR5cGVCKSkpCiAgICAgICAgIHJldHVybiB4
OwpAQCAtNTk5LDE2ICs1OTgsMTYgQEAgaW50IGNvbXBhcmVFbmNvZGVkSURCS2V5cyhjb25zdCBj
aGFyKiYgcCwgY29uc3QgY2hhciogbGltaXRBLCBjb25zdCBjaGFyKiYgcSwgY28KICAgICAgICAg
cmV0dXJuIDA7CiAgICAgY2FzZSBJREJLZXlBcnJheVR5cGVCeXRlOiB7CiAgICAgICAgIGludDY0
X3QgbGVuZ3RoQSwgbGVuZ3RoQjsKLSAgICAgICAgcCA9IGRlY29kZVZhckludChwLCBsaW1pdEEs
IGxlbmd0aEEpOwotICAgICAgICBpZiAoIXApCisgICAgICAgIHB0ckEgPSBkZWNvZGVWYXJJbnQo
cHRyQSwgbGltaXRBLCBsZW5ndGhBKTsKKyAgICAgICAgaWYgKCFwdHJBKQogICAgICAgICAgICAg
cmV0dXJuIDA7Ci0gICAgICAgIHEgPSBkZWNvZGVWYXJJbnQocSwgbGltaXRCLCBsZW5ndGhCKTsK
LSAgICAgICAgaWYgKCFxKQorICAgICAgICBwdHJCID0gZGVjb2RlVmFySW50KHB0ckIsIGxpbWl0
QiwgbGVuZ3RoQik7CisgICAgICAgIGlmICghcHRyQikKICAgICAgICAgICAgIHJldHVybiAwOwog
ICAgICAgICBpZiAobGVuZ3RoQSA8IDAgfHwgbGVuZ3RoQiA8IDApCiAgICAgICAgICAgICByZXR1
cm4gMDsKICAgICAgICAgZm9yIChpbnQ2NF90IGkgPSAwOyBpIDwgbGVuZ3RoQSAmJiBpIDwgbGVu
Z3RoQjsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoaW50IGNtcCA9IGNvbXBhcmVFbmNvZGVkSURC
S2V5cyhwLCBsaW1pdEEsIHEsIGxpbWl0QikpCisgICAgICAgICAgICBpZiAoaW50IGNtcCA9IGNv
bXBhcmVFbmNvZGVkSURCS2V5cyhwdHJBLCBsaW1pdEEsIHB0ckIsIGxpbWl0QikpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGNtcDsKICAgICAgICAgfQogICAgICAgICBpZiAobGVuZ3RoQSA8IGxl
bmd0aEIpCkBAIC02MTgsMTQgKzYxNywxNCBAQCBpbnQgY29tcGFyZUVuY29kZWRJREJLZXlzKGNv
bnN0IGNoYXIqJiBwLCBjb25zdCBjaGFyKiBsaW1pdEEsIGNvbnN0IGNoYXIqJiBxLCBjbwogICAg
ICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgY2FzZSBJREJLZXlTdHJpbmdUeXBlQnl0ZToKLSAg
ICAgICAgcmV0dXJuIGNvbXBhcmVFbmNvZGVkU3RyaW5nc1dpdGhMZW5ndGgocCwgbGltaXRBLCBx
LCBsaW1pdEIpOworICAgICAgICByZXR1cm4gY29tcGFyZUVuY29kZWRTdHJpbmdzV2l0aExlbmd0
aChwdHJBLCBsaW1pdEEsIHB0ckIsIGxpbWl0Qik7CiAgICAgY2FzZSBJREJLZXlEYXRlVHlwZUJ5
dGU6CiAgICAgY2FzZSBJREJLZXlOdW1iZXJUeXBlQnl0ZTogewogICAgICAgICBkb3VibGUgZCwg
ZTsKLSAgICAgICAgcCA9IGRlY29kZURvdWJsZShwLCBsaW1pdEEsICZkKTsKLSAgICAgICAgQVNT
RVJUKHApOwotICAgICAgICBxID0gZGVjb2RlRG91YmxlKHEsIGxpbWl0QiwgJmUpOwotICAgICAg
ICBBU1NFUlQocSk7CisgICAgICAgIHB0ckEgPSBkZWNvZGVEb3VibGUocHRyQSwgbGltaXRBLCAm
ZCk7CisgICAgICAgIEFTU0VSVChwdHJBKTsKKyAgICAgICAgcHRyQiA9IGRlY29kZURvdWJsZShw
dHJCLCBsaW1pdEIsICZlKTsKKyAgICAgICAgQVNTRVJUKHB0ckIpOwogICAgICAgICBpZiAoZCA8
IGUpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIGlmIChkID4gZSkKQEAgLTY0Mywx
MiArNjQyLDEyIEBAIGludCBjb21wYXJlRW5jb2RlZElEQktleXMoY29uc3QgVmVjdG9yPGNoYXI+
JiBrZXlBLCBjb25zdCBWZWN0b3I8Y2hhcj4mIGtleUIpCiAgICAgQVNTRVJUKGtleUEuc2l6ZSgp
ID49IDEpOwogICAgIEFTU0VSVChrZXlCLnNpemUoKSA+PSAxKTsKIAotICAgIGNvbnN0IGNoYXIq
IHAgPSBrZXlBLmRhdGEoKTsKLSAgICBjb25zdCBjaGFyKiBsaW1pdEEgPSBwICsga2V5QS5zaXpl
KCk7Ci0gICAgY29uc3QgY2hhciogcSA9IGtleUIuZGF0YSgpOwotICAgIGNvbnN0IGNoYXIqIGxp
bWl0QiA9IHEgKyBrZXlCLnNpemUoKTsKKyAgICBjb25zdCBjaGFyKiBwdHJBID0ga2V5QS5kYXRh
KCk7CisgICAgY29uc3QgY2hhciogbGltaXRBID0gcHRyQSArIGtleUEuc2l6ZSgpOworICAgIGNv
bnN0IGNoYXIqIHB0ckIgPSBrZXlCLmRhdGEoKTsKKyAgICBjb25zdCBjaGFyKiBsaW1pdEIgPSBw
dHJCICsga2V5Qi5zaXplKCk7CiAKLSAgICByZXR1cm4gY29tcGFyZUVuY29kZWRJREJLZXlzKHAs
IGxpbWl0QSwgcSwgbGltaXRCKTsKKyAgICByZXR1cm4gY29tcGFyZUVuY29kZWRJREJLZXlzKHB0
ckEsIGxpbWl0QSwgcHRyQiwgbGltaXRCKTsKIH0KIAogVmVjdG9yPGNoYXI+IGVuY29kZUlEQktl
eVBhdGgoY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCkKQEAgLTcyMCw4ICs3MTksOSBAQCBJREJL
ZXlQYXRoIGRlY29kZUlEQktleVBhdGgoY29uc3QgY2hhciogcCwgY29uc3QgY2hhciogbGltaXQp
CiB9CiAKIG5hbWVzcGFjZSB7CisKIHRlbXBsYXRlPHR5cGVuYW1lIEtleVR5cGU+Ci1pbnQgZGVj
b2RlQW5kQ29tcGFyZShjb25zdCBMZXZlbERCU2xpY2UmIGEsIGNvbnN0IExldmVsREJTbGljZSYg
YikKK2ludCBjb21wYXJlKGNvbnN0IExldmVsREJTbGljZSYgYSwgY29uc3QgTGV2ZWxEQlNsaWNl
JiBiLCBib29sIGlnbm9yZUR1cGxpY2F0ZXMgPSBmYWxzZSkKIHsKICAgICBLZXlUeXBlIGtleUE7
CiAgICAgS2V5VHlwZSBrZXlCOwpAQCAtNzMzLDYgKzczMywxMDMgQEAgaW50IGRlY29kZUFuZENv
bXBhcmUoY29uc3QgTGV2ZWxEQlNsaWNlJiBhLCBjb25zdCBMZXZlbERCU2xpY2UmIGIpCiAKICAg
ICByZXR1cm4ga2V5QS5jb21wYXJlKGtleUIpOwogfQorCit0ZW1wbGF0ZTw+CitpbnQgY29tcGFy
ZTxFeGlzdHNFbnRyeUtleT4oY29uc3QgTGV2ZWxEQlNsaWNlJiBhLCBjb25zdCBMZXZlbERCU2xp
Y2UmIGIsIGJvb2wgaWdub3JlRHVwbGljYXRlcykKK3sKKyAgICBLZXlQcmVmaXggcHJlZml4QTsK
KyAgICBLZXlQcmVmaXggcHJlZml4QjsKKyAgICBjb25zdCBjaGFyKiBwdHJBID0gS2V5UHJlZml4
OjpkZWNvZGUoYS5iZWdpbigpLCBhLmVuZCgpLCAmcHJlZml4QSk7CisgICAgY29uc3QgY2hhciog
cHRyQiA9IEtleVByZWZpeDo6ZGVjb2RlKGIuYmVnaW4oKSwgYi5lbmQoKSwgJnByZWZpeEIpOwor
ICAgIEFTU0VSVChwdHJBKTsKKyAgICBBU1NFUlQocHRyQik7CisgICAgQVNTRVJUKHByZWZpeEEu
bV9kYXRhYmFzZUlkKTsKKyAgICBBU1NFUlQocHJlZml4QS5tX29iamVjdFN0b3JlSWQpOworICAg
IEFTU0VSVChwcmVmaXhBLm1faW5kZXhJZCA9PSBFeGlzdHNFbnRyeUtleTo6U3BlY2lhbEluZGV4
TnVtYmVyKTsKKyAgICBBU1NFUlQocHJlZml4Qi5tX2RhdGFiYXNlSWQpOworICAgIEFTU0VSVChw
cmVmaXhCLm1fb2JqZWN0U3RvcmVJZCk7CisgICAgQVNTRVJUKHByZWZpeEIubV9pbmRleElkID09
IEV4aXN0c0VudHJ5S2V5OjpTcGVjaWFsSW5kZXhOdW1iZXIpOworICAgIEFTU0VSVChwdHJBICE9
IGEuZW5kKCkpOworICAgIEFTU0VSVChwdHJCICE9IGIuZW5kKCkpOworICAgIC8vIFByZWZpeGVz
IGFyZSBub3QgY29tcGFyZWQgLSBpdCBpcyBhc3N1bWVkIHRoaXMgd2FzIGFscmVhZHkgZG9uZS4K
KyAgICBBU1NFUlQoIXByZWZpeEEuY29tcGFyZShwcmVmaXhCKSk7CisKKyAgICByZXR1cm4gY29t
cGFyZUVuY29kZWRJREJLZXlzKHB0ckEsIGEuZW5kKCksIHB0ckIsIGIuZW5kKCkpOworfQorCit0
ZW1wbGF0ZTw+CitpbnQgY29tcGFyZTxPYmplY3RTdG9yZURhdGFLZXk+KGNvbnN0IExldmVsREJT
bGljZSYgYSwgY29uc3QgTGV2ZWxEQlNsaWNlJiBiLCBib29sIGlnbm9yZUR1cGxpY2F0ZXMpCit7
CisgICAgS2V5UHJlZml4IHByZWZpeEE7CisgICAgS2V5UHJlZml4IHByZWZpeEI7CisgICAgY29u
c3QgY2hhciogcHRyQSA9IEtleVByZWZpeDo6ZGVjb2RlKGEuYmVnaW4oKSwgYS5lbmQoKSwgJnBy
ZWZpeEEpOworICAgIGNvbnN0IGNoYXIqIHB0ckIgPSBLZXlQcmVmaXg6OmRlY29kZShiLmJlZ2lu
KCksIGIuZW5kKCksICZwcmVmaXhCKTsKKyAgICBBU1NFUlQocHRyQSk7CisgICAgQVNTRVJUKHB0
ckIpOworICAgIEFTU0VSVChwcmVmaXhBLm1fZGF0YWJhc2VJZCk7CisgICAgQVNTRVJUKHByZWZp
eEEubV9vYmplY3RTdG9yZUlkKTsKKyAgICBBU1NFUlQocHJlZml4QS5tX2luZGV4SWQgPT0gT2Jq
ZWN0U3RvcmVEYXRhS2V5OjpTcGVjaWFsSW5kZXhOdW1iZXIpOworICAgIEFTU0VSVChwcmVmaXhC
Lm1fZGF0YWJhc2VJZCk7CisgICAgQVNTRVJUKHByZWZpeEIubV9vYmplY3RTdG9yZUlkKTsKKyAg
ICBBU1NFUlQocHJlZml4Qi5tX2luZGV4SWQgPT0gT2JqZWN0U3RvcmVEYXRhS2V5OjpTcGVjaWFs
SW5kZXhOdW1iZXIpOworICAgIEFTU0VSVChwdHJBICE9IGEuZW5kKCkpOworICAgIEFTU0VSVChw
dHJCICE9IGIuZW5kKCkpOworICAgIC8vIFByZWZpeGVzIGFyZSBub3QgY29tcGFyZWQgLSBpdCBp
cyBhc3N1bWVkIHRoaXMgd2FzIGFscmVhZHkgZG9uZS4KKyAgICBBU1NFUlQoIXByZWZpeEEuY29t
cGFyZShwcmVmaXhCKSk7CisKKyAgICByZXR1cm4gY29tcGFyZUVuY29kZWRJREJLZXlzKHB0ckEs
IGEuZW5kKCksIHB0ckIsIGIuZW5kKCkpOworfQorCit0ZW1wbGF0ZTw+CitpbnQgY29tcGFyZTxJ
bmRleERhdGFLZXk+KGNvbnN0IExldmVsREJTbGljZSYgYSwgY29uc3QgTGV2ZWxEQlNsaWNlJiBi
LCBib29sIGlnbm9yZUR1cGxpY2F0ZXMpCit7CisgICAgS2V5UHJlZml4IHByZWZpeEE7CisgICAg
S2V5UHJlZml4IHByZWZpeEI7CisgICAgY29uc3QgY2hhciogcHRyQSA9IEtleVByZWZpeDo6ZGVj
b2RlKGEuYmVnaW4oKSwgYS5lbmQoKSwgJnByZWZpeEEpOworICAgIGNvbnN0IGNoYXIqIHB0ckIg
PSBLZXlQcmVmaXg6OmRlY29kZShiLmJlZ2luKCksIGIuZW5kKCksICZwcmVmaXhCKTsKKyAgICBB
U1NFUlQocHRyQSk7CisgICAgQVNTRVJUKHB0ckIpOworICAgIEFTU0VSVChwcmVmaXhBLm1fZGF0
YWJhc2VJZCk7CisgICAgQVNTRVJUKHByZWZpeEEubV9vYmplY3RTdG9yZUlkKTsKKyAgICBBU1NF
UlQocHJlZml4QS5tX2luZGV4SWQgPj0gTWluaW11bUluZGV4SWQpOworICAgIEFTU0VSVChwcmVm
aXhCLm1fZGF0YWJhc2VJZCk7CisgICAgQVNTRVJUKHByZWZpeEIubV9vYmplY3RTdG9yZUlkKTsK
KyAgICBBU1NFUlQocHJlZml4Qi5tX2luZGV4SWQgPj0gTWluaW11bUluZGV4SWQpOworICAgIEFT
U0VSVChwdHJBICE9IGEuZW5kKCkpOworICAgIEFTU0VSVChwdHJCICE9IGIuZW5kKCkpOworICAg
IC8vIFByZWZpeGVzIGFyZSBub3QgY29tcGFyZWQgLSBpdCBpcyBhc3N1bWVkIHRoaXMgd2FzIGFs
cmVhZHkgZG9uZS4KKyAgICBBU1NFUlQoIXByZWZpeEEuY29tcGFyZShwcmVmaXhCKSk7CisKKyAg
ICAvLyBpbmRleCBrZXkKKyAgICBpZiAoaW50IHggPSBjb21wYXJlRW5jb2RlZElEQktleXMocHRy
QSwgYS5lbmQoKSwgcHRyQiwgYi5lbmQoKSkpCisgICAgICAgIHJldHVybiB4OworICAgIGlmIChp
Z25vcmVEdXBsaWNhdGVzKQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8vIHNlcXVlbmNlIG51
bWJlciBbb3B0aW9uYWxdCisgICAgaW50NjRfdCBzZXF1ZW5jZU51bWJlckEgPSAtMTsKKyAgICBp
bnQ2NF90IHNlcXVlbmNlTnVtYmVyQiA9IC0xOworICAgIGlmIChwdHJBICE9IGEuZW5kKCkpCisg
ICAgICAgIHB0ckEgPSBkZWNvZGVWYXJJbnQocHRyQSwgYS5lbmQoKSwgc2VxdWVuY2VOdW1iZXJB
KTsKKyAgICBpZiAocHRyQiAhPSBiLmVuZCgpKQorICAgICAgICBwdHJCID0gZGVjb2RlVmFySW50
KHB0ckIsIGIuZW5kKCksIHNlcXVlbmNlTnVtYmVyQik7CisKKyAgICAvLyBwcmltYXIga2V5IFtv
cHRpb25hbF0KKyAgICBpZiAoIXB0ckEgfHwgIXB0ckIpCisgICAgICAgIHJldHVybiAwOworICAg
IGlmIChwdHJBID09IGEuZW5kKCkgJiYgcHRyQiA9PSBiLmVuZCgpKQorICAgICAgICByZXR1cm4g
MDsKKyAgICBpZiAocHRyQSA9PSBhLmVuZCgpKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYg
KHB0ckIgPT0gYi5lbmQoKSkKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICBpZiAoaW50IHggPSBj
b21wYXJlRW5jb2RlZElEQktleXMocHRyQSwgYS5lbmQoKSwgcHRyQiwgYi5lbmQoKSkpCisgICAg
ICAgIHJldHVybiB4OworCisgICAgcmV0dXJuIGNvbXBhcmVJbnRzKHNlcXVlbmNlTnVtYmVyQSwg
c2VxdWVuY2VOdW1iZXJCKTsKK30KKwogfQogCiBpbnQgY29tcGFyZShjb25zdCBMZXZlbERCU2xp
Y2UmIGEsIGNvbnN0IExldmVsREJTbGljZSYgYiwgYm9vbCBpbmRleEtleXMpCkBAIC03NjYsOSAr
ODYzLDkgQEAgaW50IGNvbXBhcmUoY29uc3QgTGV2ZWxEQlNsaWNlJiBhLCBjb25zdCBMZXZlbERC
U2xpY2UmIGIsIGJvb2wgaW5kZXhLZXlzKQogICAgICAgICBpZiAodHlwZUJ5dGVBIDw9IDEpCiAg
ICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgaWYgKHR5cGVCeXRlQSA9PSBEYXRhYmFzZUZy
ZWVMaXN0VHlwZUJ5dGUpCi0gICAgICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ29tcGFyZTxEYXRh
YmFzZUZyZWVMaXN0S2V5PihhLCBiKTsKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlPERhdGFi
YXNlRnJlZUxpc3RLZXk+KGEsIGIpOwogICAgICAgICBpZiAodHlwZUJ5dGVBID09IERhdGFiYXNl
TmFtZVR5cGVCeXRlKQotICAgICAgICAgICAgcmV0dXJuIGRlY29kZUFuZENvbXBhcmU8RGF0YWJh
c2VOYW1lS2V5PihhLCBiKTsKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlPERhdGFiYXNlTmFt
ZUtleT4oYSwgYik7CiAgICAgfQogCiAgICAgaWYgKHByZWZpeEEudHlwZSgpID09IEtleVByZWZp
eDo6RGF0YWJhc2VNZXRhRGF0YSkgewpAQCAtNzg1LDIwICs4ODIsMjAgQEAgaW50IGNvbXBhcmUo
Y29uc3QgTGV2ZWxEQlNsaWNlJiBhLCBjb25zdCBMZXZlbERCU2xpY2UmIGIsIGJvb2wgaW5kZXhL
ZXlzKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgaWYgKHR5cGVCeXRlQSA9PSBP
YmplY3RTdG9yZU1ldGFEYXRhVHlwZUJ5dGUpCi0gICAgICAgICAgICByZXR1cm4gZGVjb2RlQW5k
Q29tcGFyZTxPYmplY3RTdG9yZU1ldGFEYXRhS2V5PihhLCBiKTsKKyAgICAgICAgICAgIHJldHVy
biBjb21wYXJlPE9iamVjdFN0b3JlTWV0YURhdGFLZXk+KGEsIGIpOwogICAgICAgICBpZiAodHlw
ZUJ5dGVBID09IEluZGV4TWV0YURhdGFUeXBlQnl0ZSkKLSAgICAgICAgICAgIHJldHVybiBkZWNv
ZGVBbmRDb21wYXJlPEluZGV4TWV0YURhdGFLZXk+KGEsIGIpOworICAgICAgICAgICAgcmV0dXJu
IGNvbXBhcmU8SW5kZXhNZXRhRGF0YUtleT4oYSwgYik7CiAgICAgICAgIGlmICh0eXBlQnl0ZUEg
PT0gT2JqZWN0U3RvcmVGcmVlTGlzdFR5cGVCeXRlKQotICAgICAgICAgICAgcmV0dXJuIGRlY29k
ZUFuZENvbXBhcmU8T2JqZWN0U3RvcmVGcmVlTGlzdEtleT4oYSwgYik7CisgICAgICAgICAgICBy
ZXR1cm4gY29tcGFyZTxPYmplY3RTdG9yZUZyZWVMaXN0S2V5PihhLCBiKTsKICAgICAgICAgaWYg
KHR5cGVCeXRlQSA9PSBJbmRleEZyZWVMaXN0VHlwZUJ5dGUpCi0gICAgICAgICAgICByZXR1cm4g
ZGVjb2RlQW5kQ29tcGFyZTxJbmRleEZyZWVMaXN0S2V5PihhLCBiKTsKKyAgICAgICAgICAgIHJl
dHVybiBjb21wYXJlPEluZGV4RnJlZUxpc3RLZXk+KGEsIGIpOwogICAgICAgICBpZiAodHlwZUJ5
dGVBID09IE9iamVjdFN0b3JlTmFtZXNUeXBlQnl0ZSkKLSAgICAgICAgICAgIHJldHVybiBkZWNv
ZGVBbmRDb21wYXJlPE9iamVjdFN0b3JlTmFtZXNLZXk+KGEsIGIpOworICAgICAgICAgICAgcmV0
dXJuIGNvbXBhcmU8T2JqZWN0U3RvcmVOYW1lc0tleT4oYSwgYik7CiAgICAgICAgIGlmICh0eXBl
Qnl0ZUEgPT0gSW5kZXhOYW1lc0tleVR5cGVCeXRlKQotICAgICAgICAgICAgcmV0dXJuIGRlY29k
ZUFuZENvbXBhcmU8SW5kZXhOYW1lc0tleT4oYSwgYik7CisgICAgICAgICAgICByZXR1cm4gY29t
cGFyZTxJbmRleE5hbWVzS2V5PihhLCBiKTsKIAotICAgICAgICByZXR1cm4gMDsKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOwogICAgIH0KIAogICAgIGlm
IChwcmVmaXhBLnR5cGUoKSA9PSBLZXlQcmVmaXg6Ok9iamVjdFN0b3JlRGF0YSkgewpAQCAtODA5
LDcgKzkwNiw3IEBAIGludCBjb21wYXJlKGNvbnN0IExldmVsREJTbGljZSYgYSwgY29uc3QgTGV2
ZWxEQlNsaWNlJiBiLCBib29sIGluZGV4S2V5cykKICAgICAgICAgaWYgKHB0ckIgPT0gZW5kQikK
ICAgICAgICAgICAgIHJldHVybiAxOyAvLyBGSVhNRTogVGhpcyBjYXNlIG9mIG5vbi1leGlzdGlu
ZyB1c2VyIGtleXMgc2hvdWxkIG5vdCBoYXZlIHRvIGJlIGhhbmRsZWQgdGhpcyB3YXkuCiAKLSAg
ICAgICAgcmV0dXJuIGRlY29kZUFuZENvbXBhcmU8T2JqZWN0U3RvcmVEYXRhS2V5PihhLCBiKTsK
KyAgICAgICAgcmV0dXJuIGNvbXBhcmU8T2JqZWN0U3RvcmVEYXRhS2V5PihhLCBiKTsKICAgICB9
CiAgICAgaWYgKHByZWZpeEEudHlwZSgpID09IEtleVByZWZpeDo6RXhpc3RzRW50cnkpIHsKICAg
ICAgICAgaWYgKHB0ckEgPT0gZW5kQSAmJiBwdHJCID09IGVuZEIpCkBAIC04MTksNyArOTE2LDcg
QEAgaW50IGNvbXBhcmUoY29uc3QgTGV2ZWxEQlNsaWNlJiBhLCBjb25zdCBMZXZlbERCU2xpY2Um
IGIsIGJvb2wgaW5kZXhLZXlzKQogICAgICAgICBpZiAocHRyQiA9PSBlbmRCKQogICAgICAgICAg
ICAgcmV0dXJuIDE7IC8vIEZJWE1FOiBUaGlzIGNhc2Ugb2Ygbm9uLWV4aXN0aW5nIHVzZXIga2V5
cyBzaG91bGQgbm90IGhhdmUgdG8gYmUgaGFuZGxlZCB0aGlzIHdheS4KIAotICAgICAgICByZXR1
cm4gZGVjb2RlQW5kQ29tcGFyZTxFeGlzdHNFbnRyeUtleT4oYSwgYik7CisgICAgICAgIHJldHVy
biBjb21wYXJlPEV4aXN0c0VudHJ5S2V5PihhLCBiKTsKICAgICB9CiAgICAgaWYgKHByZWZpeEEu
dHlwZSgpID09IEtleVByZWZpeDo6SW5kZXhEYXRhKSB7CiAgICAgICAgIGlmIChwdHJBID09IGVu
ZEEgJiYgcHRyQiA9PSBlbmRCKQpAQCAtODI5LDE2ICs5MjYsOCBAQCBpbnQgY29tcGFyZShjb25z
dCBMZXZlbERCU2xpY2UmIGEsIGNvbnN0IExldmVsREJTbGljZSYgYiwgYm9vbCBpbmRleEtleXMp
CiAgICAgICAgIGlmIChwdHJCID09IGVuZEIpCiAgICAgICAgICAgICByZXR1cm4gMTsgLy8gRklY
TUU6IFRoaXMgY2FzZSBvZiBub24tZXhpc3RpbmcgdXNlciBrZXlzIHNob3VsZCBub3QgaGF2ZSB0
byBiZSBoYW5kbGVkIHRoaXMgd2F5LgogCi0gICAgICAgIEluZGV4RGF0YUtleSBpbmRleERhdGFL
ZXlBOwotICAgICAgICBJbmRleERhdGFLZXkgaW5kZXhEYXRhS2V5QjsKLQotICAgICAgICBwdHJB
ID0gSW5kZXhEYXRhS2V5OjpkZWNvZGUoYS5iZWdpbigpLCBlbmRBLCAmaW5kZXhEYXRhS2V5QSk7
Ci0gICAgICAgIHB0ckIgPSBJbmRleERhdGFLZXk6OmRlY29kZShiLmJlZ2luKCksIGVuZEIsICZp
bmRleERhdGFLZXlCKTsKLSAgICAgICAgQVNTRVJUKHB0ckEpOwotICAgICAgICBBU1NFUlQocHRy
Qik7Ci0KICAgICAgICAgYm9vbCBpZ25vcmVEdXBsaWNhdGVzID0gaW5kZXhLZXlzOwotICAgICAg
ICByZXR1cm4gaW5kZXhEYXRhS2V5QS5jb21wYXJlKGluZGV4RGF0YUtleUIsIGlnbm9yZUR1cGxp
Y2F0ZXMpOworICAgICAgICByZXR1cm4gY29tcGFyZTxJbmRleERhdGFLZXk+KGEsIGIsIGlnbm9y
ZUR1cGxpY2F0ZXMpOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163456</attachid>
            <date>2012-09-11 15:30:00 -0700</date>
            <delta_ts>2012-09-11 16:18:18 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-96037-20120911152935.patch</filename>
            <type>text/plain</type>
            <size>14336</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4MDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWNhZTY2ZjExM2ExZjk5
NWQxY2NiMDY4YzY2YjViOTQwMTY5NjI4OC4uMWM5NzU1MzBmYjBiNjM2YTBmZjQ3ODhiODU2NTEz
MDcyYmJiMTZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTA5LTExICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBPcHRp
bWl6ZSBrZXkgZGVjb2RlIGFuZCBjb21wYXJpc29uIG9wZXJhdGlvbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2MDM3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgVG9ueSBDaGFuZy4KKworICAgICAgICBFbGltaW5hdGUgbWVtb3J5IGFsbG9jYXRpb25z
IGluIGNvZGUgaWRlbnRpZmllZCBhcyBDUFUgYm90dGxlbmVja3MgaW4gSURCIHByb2ZpbGluZy4K
KworICAgICAgICBObyBuZXcgdGVzdHMgLSBqdXN0IHBlcmZvcm1hbmNlIHdvcmsuCisKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklEQkxldmVsREJDb2Rpbmc6OmV4dHJhY3RFbmNvZGVkSURCS2V5KTogQXZvaWQgaW5j
cmVtZW50YWwgYWxsb2NhdGlvbnMuCisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5n
Ojpjb21wYXJlRW5jb2RlZElEQktleXMpOiBSZW5hbWUgY29uZnVzaW5nIHZhcmlhYmxlcyBwIGFu
ZCBxLgorICAgICAgICAoSURCTGV2ZWxEQkNvZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJREJM
ZXZlbERCQ29kaW5nOjpjb21wYXJlKTogUmVuYW1lIGZyb20gZGVjb2RlQW5kQ29tcGFyZSwgYW5k
IGFkZCBzcGVjaWFsaXphdGlvbnMKKyAgICAgICAgZm9yIGZyZXF1ZW50bHkgZW5jb3VudGVyZWQg
dHlwZXMgKGUuZy4gb2JqZWN0L2luZGV4IGRhdGEpIHRoYXQgY2FuIGJlIGNvbXBhcmVkIHdpdGhv
dXQgYQorICAgICAgICBmdWxsIGRlY29kZS4KKwogMjAxMi0wOS0wOSAgUGF0cmljayBHYW5zdGVy
ZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgU3RyaW5nQnVpbGRlcjo6YXBw
ZW5kTnVtYmVyKCkgYW5kIHVzZSBpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmNwcAppbmRleCBiM2Q3OGVmYjJlZWZhYmQ1Mjg1
NDk0M2RkZmY1ZjgyMWQ0MTg3ODNjLi5mNDJhNzcwMTk2OWQ0ZGZjYzBhMzk1YmFjMTg1YzQ4ZDYx
ODM1MWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJM
ZXZlbERCQ29kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJMZXZlbERCQ29kaW5nLmNwcApAQCAtNTA1LDkgKzUwNSw4IEBAIGNvbnN0IGNoYXIqIGRlY29k
ZUlEQktleShjb25zdCBjaGFyKiBwLCBjb25zdCBjaGFyKiBsaW1pdCwgUmVmUHRyPElEQktleT4m
IGZvdW5kCiAgICAgcmV0dXJuIDA7CiB9CiAKLWNvbnN0IGNoYXIqIGV4dHJhY3RFbmNvZGVkSURC
S2V5KGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBsaW1pdCwgVmVjdG9yPGNoYXI+KiBy
ZXN1bHQpCitjb25zdCBjaGFyKiBleHRyYWN0RW5jb2RlZElEQktleShjb25zdCBjaGFyKiBzdGFy
dCwgY29uc3QgY2hhciogbGltaXQsIFZlY3RvcjxjaGFyPiogcmVzdWx0ID0gMCkKIHsKLSAgICBB
U1NFUlQocmVzdWx0KTsKICAgICBjb25zdCBjaGFyKiBwID0gc3RhcnQ7CiAgICAgaWYgKHAgPj0g
bGltaXQpCiAgICAgICAgIHJldHVybiAwOwpAQCAtNTE3LDggKzUxNiw3IEBAIGNvbnN0IGNoYXIq
IGV4dHJhY3RFbmNvZGVkSURCS2V5KGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBsaW1p
dCwgVmVjdG9yPGNoCiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBJREJLZXlOdWxsVHlw
ZUJ5dGU6CiAgICAgY2FzZSBJREJLZXlNaW5LZXlUeXBlQnl0ZToKLSAgICAgICAgKnJlc3VsdCA9
IGVuY29kZUJ5dGUodHlwZSk7Ci0gICAgICAgIHJldHVybiBwOworICAgICAgICBicmVhazsKICAg
ICBjYXNlIElEQktleUFycmF5VHlwZUJ5dGU6IHsKICAgICAgICAgaW50NjRfdCBsZW5ndGg7CiAg
ICAgICAgIHAgPSBkZWNvZGVWYXJJbnQocCwgbGltaXQsIGxlbmd0aCk7CkBAIC01MjYsMTYgKzUy
NCwxMiBAQCBjb25zdCBjaGFyKiBleHRyYWN0RW5jb2RlZElEQktleShjb25zdCBjaGFyKiBzdGFy
dCwgY29uc3QgY2hhciogbGltaXQsIFZlY3RvcjxjaAogICAgICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgICAgIGlmIChsZW5ndGggPCAwKQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHJl
c3VsdC0+Y2xlYXIoKTsKLSAgICAgICAgcmVzdWx0LT5hcHBlbmQoc3RhcnQsIHAgLSBzdGFydCk7
CiAgICAgICAgIHdoaWxlIChsZW5ndGgtLSkgewotICAgICAgICAgICAgVmVjdG9yPGNoYXI+IHN1
YmtleTsKLSAgICAgICAgICAgIHAgPSBleHRyYWN0RW5jb2RlZElEQktleShwLCBsaW1pdCwgJnN1
YmtleSk7CisgICAgICAgICAgICBwID0gZXh0cmFjdEVuY29kZWRJREJLZXkocCwgbGltaXQpOwog
ICAgICAgICAgICAgaWYgKCFwKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAg
ICAgcmVzdWx0LT5hcHBlbmQoc3Via2V5KTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gcDsK
KyAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgSURCS2V5U3RyaW5nVHlwZUJ5dGU6IHsK
ICAgICAgICAgaW50NjRfdCBsZW5ndGg7CkBAIC01NDQsMjAgKzUzOCwyNSBAQCBjb25zdCBjaGFy
KiBleHRyYWN0RW5jb2RlZElEQktleShjb25zdCBjaGFyKiBzdGFydCwgY29uc3QgY2hhciogbGlt
aXQsIFZlY3RvcjxjaAogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGlmIChwICsgbGVu
Z3RoICogMiA+IGxpbWl0KQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHJlc3VsdC0+
Y2xlYXIoKTsKLSAgICAgICAgcmVzdWx0LT5hcHBlbmQoc3RhcnQsIHAgLSBzdGFydCArIGxlbmd0
aCAqIDIpOwotICAgICAgICByZXR1cm4gcCArIGxlbmd0aCAqIDI7CisgICAgICAgIHAgKz0gbGVu
Z3RoICogMjsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgSURCS2V5RGF0ZVR5cGVC
eXRlOgogICAgIGNhc2UgSURCS2V5TnVtYmVyVHlwZUJ5dGU6CiAgICAgICAgIGlmIChwICsgc2l6
ZW9mKGRvdWJsZSkgPiBsaW1pdCkKICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBwICs9
IHNpemVvZihkb3VibGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAocmVzdWx0
KSB7CisgICAgICAgIEFTU0VSVChwKTsKKyAgICAgICAgQVNTRVJUKHAgPD0gbGltaXQpOwogICAg
ICAgICByZXN1bHQtPmNsZWFyKCk7Ci0gICAgICAgIHJlc3VsdC0+YXBwZW5kKHN0YXJ0LCAxICsg
c2l6ZW9mKGRvdWJsZSkpOwotICAgICAgICByZXR1cm4gcCArIHNpemVvZihkb3VibGUpOworICAg
ICAgICByZXN1bHQtPmFwcGVuZChzdGFydCwgcCAtIHN0YXJ0KTsKICAgICB9Ci0gICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gcDsKIH0KIAogc3Rh
dGljIElEQktleTo6VHlwZSBrZXlUeXBlQnl0ZVRvS2V5VHlwZSh1bnNpZ25lZCBjaGFyIHR5cGUp
CkBAIC01ODEsMTMgKzU4MCwxMyBAQCBzdGF0aWMgSURCS2V5OjpUeXBlIGtleVR5cGVCeXRlVG9L
ZXlUeXBlKHVuc2lnbmVkIGNoYXIgdHlwZSkKICAgICByZXR1cm4gSURCS2V5OjpJbnZhbGlkVHlw
ZTsKIH0KIAotaW50IGNvbXBhcmVFbmNvZGVkSURCS2V5cyhjb25zdCBjaGFyKiYgcCwgY29uc3Qg
Y2hhciogbGltaXRBLCBjb25zdCBjaGFyKiYgcSwgY29uc3QgY2hhciogbGltaXRCKQoraW50IGNv
bXBhcmVFbmNvZGVkSURCS2V5cyhjb25zdCBjaGFyKiYgcHRyQSwgY29uc3QgY2hhciogbGltaXRB
LCBjb25zdCBjaGFyKiYgcHRyQiwgY29uc3QgY2hhciogbGltaXRCKQogewotICAgIEFTU0VSVCgm
cCAhPSAmcSk7Ci0gICAgQVNTRVJUKHAgPCBsaW1pdEEpOwotICAgIEFTU0VSVChxIDwgbGltaXRC
KTsKLSAgICB1bnNpZ25lZCBjaGFyIHR5cGVBID0gKnArKzsKLSAgICB1bnNpZ25lZCBjaGFyIHR5
cGVCID0gKnErKzsKKyAgICBBU1NFUlQoJnB0ckEgIT0gJnB0ckIpOworICAgIEFTU0VSVChwdHJB
IDwgbGltaXRBKTsKKyAgICBBU1NFUlQocHRyQiA8IGxpbWl0Qik7CisgICAgdW5zaWduZWQgY2hh
ciB0eXBlQSA9ICpwdHJBKys7CisgICAgdW5zaWduZWQgY2hhciB0eXBlQiA9ICpwdHJCKys7CiAK
ICAgICBpZiAoaW50IHggPSBJREJLZXk6OmNvbXBhcmVUeXBlcyhrZXlUeXBlQnl0ZVRvS2V5VHlw
ZSh0eXBlQSksIGtleVR5cGVCeXRlVG9LZXlUeXBlKHR5cGVCKSkpCiAgICAgICAgIHJldHVybiB4
OwpAQCAtNTk5LDE2ICs1OTgsMTYgQEAgaW50IGNvbXBhcmVFbmNvZGVkSURCS2V5cyhjb25zdCBj
aGFyKiYgcCwgY29uc3QgY2hhciogbGltaXRBLCBjb25zdCBjaGFyKiYgcSwgY28KICAgICAgICAg
cmV0dXJuIDA7CiAgICAgY2FzZSBJREJLZXlBcnJheVR5cGVCeXRlOiB7CiAgICAgICAgIGludDY0
X3QgbGVuZ3RoQSwgbGVuZ3RoQjsKLSAgICAgICAgcCA9IGRlY29kZVZhckludChwLCBsaW1pdEEs
IGxlbmd0aEEpOwotICAgICAgICBpZiAoIXApCisgICAgICAgIHB0ckEgPSBkZWNvZGVWYXJJbnQo
cHRyQSwgbGltaXRBLCBsZW5ndGhBKTsKKyAgICAgICAgaWYgKCFwdHJBKQogICAgICAgICAgICAg
cmV0dXJuIDA7Ci0gICAgICAgIHEgPSBkZWNvZGVWYXJJbnQocSwgbGltaXRCLCBsZW5ndGhCKTsK
LSAgICAgICAgaWYgKCFxKQorICAgICAgICBwdHJCID0gZGVjb2RlVmFySW50KHB0ckIsIGxpbWl0
QiwgbGVuZ3RoQik7CisgICAgICAgIGlmICghcHRyQikKICAgICAgICAgICAgIHJldHVybiAwOwog
ICAgICAgICBpZiAobGVuZ3RoQSA8IDAgfHwgbGVuZ3RoQiA8IDApCiAgICAgICAgICAgICByZXR1
cm4gMDsKICAgICAgICAgZm9yIChpbnQ2NF90IGkgPSAwOyBpIDwgbGVuZ3RoQSAmJiBpIDwgbGVu
Z3RoQjsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoaW50IGNtcCA9IGNvbXBhcmVFbmNvZGVkSURC
S2V5cyhwLCBsaW1pdEEsIHEsIGxpbWl0QikpCisgICAgICAgICAgICBpZiAoaW50IGNtcCA9IGNv
bXBhcmVFbmNvZGVkSURCS2V5cyhwdHJBLCBsaW1pdEEsIHB0ckIsIGxpbWl0QikpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGNtcDsKICAgICAgICAgfQogICAgICAgICBpZiAobGVuZ3RoQSA8IGxl
bmd0aEIpCkBAIC02MTgsMTQgKzYxNywxNCBAQCBpbnQgY29tcGFyZUVuY29kZWRJREJLZXlzKGNv
bnN0IGNoYXIqJiBwLCBjb25zdCBjaGFyKiBsaW1pdEEsIGNvbnN0IGNoYXIqJiBxLCBjbwogICAg
ICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgY2FzZSBJREJLZXlTdHJpbmdUeXBlQnl0ZToKLSAg
ICAgICAgcmV0dXJuIGNvbXBhcmVFbmNvZGVkU3RyaW5nc1dpdGhMZW5ndGgocCwgbGltaXRBLCBx
LCBsaW1pdEIpOworICAgICAgICByZXR1cm4gY29tcGFyZUVuY29kZWRTdHJpbmdzV2l0aExlbmd0
aChwdHJBLCBsaW1pdEEsIHB0ckIsIGxpbWl0Qik7CiAgICAgY2FzZSBJREJLZXlEYXRlVHlwZUJ5
dGU6CiAgICAgY2FzZSBJREJLZXlOdW1iZXJUeXBlQnl0ZTogewogICAgICAgICBkb3VibGUgZCwg
ZTsKLSAgICAgICAgcCA9IGRlY29kZURvdWJsZShwLCBsaW1pdEEsICZkKTsKLSAgICAgICAgQVNT
RVJUKHApOwotICAgICAgICBxID0gZGVjb2RlRG91YmxlKHEsIGxpbWl0QiwgJmUpOwotICAgICAg
ICBBU1NFUlQocSk7CisgICAgICAgIHB0ckEgPSBkZWNvZGVEb3VibGUocHRyQSwgbGltaXRBLCAm
ZCk7CisgICAgICAgIEFTU0VSVChwdHJBKTsKKyAgICAgICAgcHRyQiA9IGRlY29kZURvdWJsZShw
dHJCLCBsaW1pdEIsICZlKTsKKyAgICAgICAgQVNTRVJUKHB0ckIpOwogICAgICAgICBpZiAoZCA8
IGUpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIGlmIChkID4gZSkKQEAgLTY0Mywx
MiArNjQyLDEyIEBAIGludCBjb21wYXJlRW5jb2RlZElEQktleXMoY29uc3QgVmVjdG9yPGNoYXI+
JiBrZXlBLCBjb25zdCBWZWN0b3I8Y2hhcj4mIGtleUIpCiAgICAgQVNTRVJUKGtleUEuc2l6ZSgp
ID49IDEpOwogICAgIEFTU0VSVChrZXlCLnNpemUoKSA+PSAxKTsKIAotICAgIGNvbnN0IGNoYXIq
IHAgPSBrZXlBLmRhdGEoKTsKLSAgICBjb25zdCBjaGFyKiBsaW1pdEEgPSBwICsga2V5QS5zaXpl
KCk7Ci0gICAgY29uc3QgY2hhciogcSA9IGtleUIuZGF0YSgpOwotICAgIGNvbnN0IGNoYXIqIGxp
bWl0QiA9IHEgKyBrZXlCLnNpemUoKTsKKyAgICBjb25zdCBjaGFyKiBwdHJBID0ga2V5QS5kYXRh
KCk7CisgICAgY29uc3QgY2hhciogbGltaXRBID0gcHRyQSArIGtleUEuc2l6ZSgpOworICAgIGNv
bnN0IGNoYXIqIHB0ckIgPSBrZXlCLmRhdGEoKTsKKyAgICBjb25zdCBjaGFyKiBsaW1pdEIgPSBw
dHJCICsga2V5Qi5zaXplKCk7CiAKLSAgICByZXR1cm4gY29tcGFyZUVuY29kZWRJREJLZXlzKHAs
IGxpbWl0QSwgcSwgbGltaXRCKTsKKyAgICByZXR1cm4gY29tcGFyZUVuY29kZWRJREJLZXlzKHB0
ckEsIGxpbWl0QSwgcHRyQiwgbGltaXRCKTsKIH0KIAogVmVjdG9yPGNoYXI+IGVuY29kZUlEQktl
eVBhdGgoY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCkKQEAgLTcyMCw4ICs3MTksOSBAQCBJREJL
ZXlQYXRoIGRlY29kZUlEQktleVBhdGgoY29uc3QgY2hhciogcCwgY29uc3QgY2hhciogbGltaXQp
CiB9CiAKIG5hbWVzcGFjZSB7CisKIHRlbXBsYXRlPHR5cGVuYW1lIEtleVR5cGU+Ci1pbnQgZGVj
b2RlQW5kQ29tcGFyZShjb25zdCBMZXZlbERCU2xpY2UmIGEsIGNvbnN0IExldmVsREJTbGljZSYg
YikKK2ludCBjb21wYXJlKGNvbnN0IExldmVsREJTbGljZSYgYSwgY29uc3QgTGV2ZWxEQlNsaWNl
JiBiLCBib29sIGlnbm9yZUR1cGxpY2F0ZXMgPSBmYWxzZSkKIHsKICAgICBLZXlUeXBlIGtleUE7
CiAgICAgS2V5VHlwZSBrZXlCOwpAQCAtNzMzLDYgKzczMywxMDMgQEAgaW50IGRlY29kZUFuZENv
bXBhcmUoY29uc3QgTGV2ZWxEQlNsaWNlJiBhLCBjb25zdCBMZXZlbERCU2xpY2UmIGIpCiAKICAg
ICByZXR1cm4ga2V5QS5jb21wYXJlKGtleUIpOwogfQorCit0ZW1wbGF0ZTw+CitpbnQgY29tcGFy
ZTxFeGlzdHNFbnRyeUtleT4oY29uc3QgTGV2ZWxEQlNsaWNlJiBhLCBjb25zdCBMZXZlbERCU2xp
Y2UmIGIsIGJvb2wgaWdub3JlRHVwbGljYXRlcykKK3sKKyAgICBLZXlQcmVmaXggcHJlZml4QTsK
KyAgICBLZXlQcmVmaXggcHJlZml4QjsKKyAgICBjb25zdCBjaGFyKiBwdHJBID0gS2V5UHJlZml4
OjpkZWNvZGUoYS5iZWdpbigpLCBhLmVuZCgpLCAmcHJlZml4QSk7CisgICAgY29uc3QgY2hhciog
cHRyQiA9IEtleVByZWZpeDo6ZGVjb2RlKGIuYmVnaW4oKSwgYi5lbmQoKSwgJnByZWZpeEIpOwor
ICAgIEFTU0VSVChwdHJBKTsKKyAgICBBU1NFUlQocHRyQik7CisgICAgQVNTRVJUKHByZWZpeEEu
bV9kYXRhYmFzZUlkKTsKKyAgICBBU1NFUlQocHJlZml4QS5tX29iamVjdFN0b3JlSWQpOworICAg
IEFTU0VSVChwcmVmaXhBLm1faW5kZXhJZCA9PSBFeGlzdHNFbnRyeUtleTo6U3BlY2lhbEluZGV4
TnVtYmVyKTsKKyAgICBBU1NFUlQocHJlZml4Qi5tX2RhdGFiYXNlSWQpOworICAgIEFTU0VSVChw
cmVmaXhCLm1fb2JqZWN0U3RvcmVJZCk7CisgICAgQVNTRVJUKHByZWZpeEIubV9pbmRleElkID09
IEV4aXN0c0VudHJ5S2V5OjpTcGVjaWFsSW5kZXhOdW1iZXIpOworICAgIEFTU0VSVChwdHJBICE9
IGEuZW5kKCkpOworICAgIEFTU0VSVChwdHJCICE9IGIuZW5kKCkpOworICAgIC8vIFByZWZpeGVz
IGFyZSBub3QgY29tcGFyZWQgLSBpdCBpcyBhc3N1bWVkIHRoaXMgd2FzIGFscmVhZHkgZG9uZS4K
KyAgICBBU1NFUlQoIXByZWZpeEEuY29tcGFyZShwcmVmaXhCKSk7CisKKyAgICByZXR1cm4gY29t
cGFyZUVuY29kZWRJREJLZXlzKHB0ckEsIGEuZW5kKCksIHB0ckIsIGIuZW5kKCkpOworfQorCit0
ZW1wbGF0ZTw+CitpbnQgY29tcGFyZTxPYmplY3RTdG9yZURhdGFLZXk+KGNvbnN0IExldmVsREJT
bGljZSYgYSwgY29uc3QgTGV2ZWxEQlNsaWNlJiBiLCBib29sIGlnbm9yZUR1cGxpY2F0ZXMpCit7
CisgICAgS2V5UHJlZml4IHByZWZpeEE7CisgICAgS2V5UHJlZml4IHByZWZpeEI7CisgICAgY29u
c3QgY2hhciogcHRyQSA9IEtleVByZWZpeDo6ZGVjb2RlKGEuYmVnaW4oKSwgYS5lbmQoKSwgJnBy
ZWZpeEEpOworICAgIGNvbnN0IGNoYXIqIHB0ckIgPSBLZXlQcmVmaXg6OmRlY29kZShiLmJlZ2lu
KCksIGIuZW5kKCksICZwcmVmaXhCKTsKKyAgICBBU1NFUlQocHRyQSk7CisgICAgQVNTRVJUKHB0
ckIpOworICAgIEFTU0VSVChwcmVmaXhBLm1fZGF0YWJhc2VJZCk7CisgICAgQVNTRVJUKHByZWZp
eEEubV9vYmplY3RTdG9yZUlkKTsKKyAgICBBU1NFUlQocHJlZml4QS5tX2luZGV4SWQgPT0gT2Jq
ZWN0U3RvcmVEYXRhS2V5OjpTcGVjaWFsSW5kZXhOdW1iZXIpOworICAgIEFTU0VSVChwcmVmaXhC
Lm1fZGF0YWJhc2VJZCk7CisgICAgQVNTRVJUKHByZWZpeEIubV9vYmplY3RTdG9yZUlkKTsKKyAg
ICBBU1NFUlQocHJlZml4Qi5tX2luZGV4SWQgPT0gT2JqZWN0U3RvcmVEYXRhS2V5OjpTcGVjaWFs
SW5kZXhOdW1iZXIpOworICAgIEFTU0VSVChwdHJBICE9IGEuZW5kKCkpOworICAgIEFTU0VSVChw
dHJCICE9IGIuZW5kKCkpOworICAgIC8vIFByZWZpeGVzIGFyZSBub3QgY29tcGFyZWQgLSBpdCBp
cyBhc3N1bWVkIHRoaXMgd2FzIGFscmVhZHkgZG9uZS4KKyAgICBBU1NFUlQoIXByZWZpeEEuY29t
cGFyZShwcmVmaXhCKSk7CisKKyAgICByZXR1cm4gY29tcGFyZUVuY29kZWRJREJLZXlzKHB0ckEs
IGEuZW5kKCksIHB0ckIsIGIuZW5kKCkpOworfQorCit0ZW1wbGF0ZTw+CitpbnQgY29tcGFyZTxJ
bmRleERhdGFLZXk+KGNvbnN0IExldmVsREJTbGljZSYgYSwgY29uc3QgTGV2ZWxEQlNsaWNlJiBi
LCBib29sIGlnbm9yZUR1cGxpY2F0ZXMpCit7CisgICAgS2V5UHJlZml4IHByZWZpeEE7CisgICAg
S2V5UHJlZml4IHByZWZpeEI7CisgICAgY29uc3QgY2hhciogcHRyQSA9IEtleVByZWZpeDo6ZGVj
b2RlKGEuYmVnaW4oKSwgYS5lbmQoKSwgJnByZWZpeEEpOworICAgIGNvbnN0IGNoYXIqIHB0ckIg
PSBLZXlQcmVmaXg6OmRlY29kZShiLmJlZ2luKCksIGIuZW5kKCksICZwcmVmaXhCKTsKKyAgICBB
U1NFUlQocHRyQSk7CisgICAgQVNTRVJUKHB0ckIpOworICAgIEFTU0VSVChwcmVmaXhBLm1fZGF0
YWJhc2VJZCk7CisgICAgQVNTRVJUKHByZWZpeEEubV9vYmplY3RTdG9yZUlkKTsKKyAgICBBU1NF
UlQocHJlZml4QS5tX2luZGV4SWQgPj0gTWluaW11bUluZGV4SWQpOworICAgIEFTU0VSVChwcmVm
aXhCLm1fZGF0YWJhc2VJZCk7CisgICAgQVNTRVJUKHByZWZpeEIubV9vYmplY3RTdG9yZUlkKTsK
KyAgICBBU1NFUlQocHJlZml4Qi5tX2luZGV4SWQgPj0gTWluaW11bUluZGV4SWQpOworICAgIEFT
U0VSVChwdHJBICE9IGEuZW5kKCkpOworICAgIEFTU0VSVChwdHJCICE9IGIuZW5kKCkpOworICAg
IC8vIFByZWZpeGVzIGFyZSBub3QgY29tcGFyZWQgLSBpdCBpcyBhc3N1bWVkIHRoaXMgd2FzIGFs
cmVhZHkgZG9uZS4KKyAgICBBU1NFUlQoIXByZWZpeEEuY29tcGFyZShwcmVmaXhCKSk7CisKKyAg
ICAvLyBpbmRleCBrZXkKKyAgICBpZiAoaW50IHggPSBjb21wYXJlRW5jb2RlZElEQktleXMocHRy
QSwgYS5lbmQoKSwgcHRyQiwgYi5lbmQoKSkpCisgICAgICAgIHJldHVybiB4OworICAgIGlmIChp
Z25vcmVEdXBsaWNhdGVzKQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8vIHNlcXVlbmNlIG51
bWJlciBbb3B0aW9uYWxdCisgICAgaW50NjRfdCBzZXF1ZW5jZU51bWJlckEgPSAtMTsKKyAgICBp
bnQ2NF90IHNlcXVlbmNlTnVtYmVyQiA9IC0xOworICAgIGlmIChwdHJBICE9IGEuZW5kKCkpCisg
ICAgICAgIHB0ckEgPSBkZWNvZGVWYXJJbnQocHRyQSwgYS5lbmQoKSwgc2VxdWVuY2VOdW1iZXJB
KTsKKyAgICBpZiAocHRyQiAhPSBiLmVuZCgpKQorICAgICAgICBwdHJCID0gZGVjb2RlVmFySW50
KHB0ckIsIGIuZW5kKCksIHNlcXVlbmNlTnVtYmVyQik7CisKKyAgICAvLyBwcmltYXIga2V5IFtv
cHRpb25hbF0KKyAgICBpZiAoIXB0ckEgfHwgIXB0ckIpCisgICAgICAgIHJldHVybiAwOworICAg
IGlmIChwdHJBID09IGEuZW5kKCkgJiYgcHRyQiA9PSBiLmVuZCgpKQorICAgICAgICByZXR1cm4g
MDsKKyAgICBpZiAocHRyQSA9PSBhLmVuZCgpKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYg
KHB0ckIgPT0gYi5lbmQoKSkKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICBpZiAoaW50IHggPSBj
b21wYXJlRW5jb2RlZElEQktleXMocHRyQSwgYS5lbmQoKSwgcHRyQiwgYi5lbmQoKSkpCisgICAg
ICAgIHJldHVybiB4OworCisgICAgcmV0dXJuIGNvbXBhcmVJbnRzKHNlcXVlbmNlTnVtYmVyQSwg
c2VxdWVuY2VOdW1iZXJCKTsKK30KKwogfQogCiBpbnQgY29tcGFyZShjb25zdCBMZXZlbERCU2xp
Y2UmIGEsIGNvbnN0IExldmVsREJTbGljZSYgYiwgYm9vbCBpbmRleEtleXMpCkBAIC03NjYsOSAr
ODYzLDkgQEAgaW50IGNvbXBhcmUoY29uc3QgTGV2ZWxEQlNsaWNlJiBhLCBjb25zdCBMZXZlbERC
U2xpY2UmIGIsIGJvb2wgaW5kZXhLZXlzKQogICAgICAgICBpZiAodHlwZUJ5dGVBIDw9IDEpCiAg
ICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgaWYgKHR5cGVCeXRlQSA9PSBEYXRhYmFzZUZy
ZWVMaXN0VHlwZUJ5dGUpCi0gICAgICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ29tcGFyZTxEYXRh
YmFzZUZyZWVMaXN0S2V5PihhLCBiKTsKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlPERhdGFi
YXNlRnJlZUxpc3RLZXk+KGEsIGIpOwogICAgICAgICBpZiAodHlwZUJ5dGVBID09IERhdGFiYXNl
TmFtZVR5cGVCeXRlKQotICAgICAgICAgICAgcmV0dXJuIGRlY29kZUFuZENvbXBhcmU8RGF0YWJh
c2VOYW1lS2V5PihhLCBiKTsKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlPERhdGFiYXNlTmFt
ZUtleT4oYSwgYik7CiAgICAgfQogCiAgICAgaWYgKHByZWZpeEEudHlwZSgpID09IEtleVByZWZp
eDo6RGF0YWJhc2VNZXRhRGF0YSkgewpAQCAtNzgxLDI0ICs4NzgsMjUgQEAgaW50IGNvbXBhcmUo
Y29uc3QgTGV2ZWxEQlNsaWNlJiBhLCBjb25zdCBMZXZlbERCU2xpY2UmIGIsIGJvb2wgaW5kZXhL
ZXlzKQogICAgICAgICBpZiAoaW50IHggPSB0eXBlQnl0ZUEgLSB0eXBlQnl0ZUIpCiAgICAgICAg
ICAgICByZXR1cm4geDsKIAorICAgICAgICAvLyBGSVhNRTogUmVwbGFjZSB0aGlzIG1hZ2ljIG51
bWJlci4gU2hvdWxkIGl0IGFjY291bnQgZm9yIFVzZXJJbnRWZXJzaW9uPwogICAgICAgICBpZiAo
dHlwZUJ5dGVBIDw9IDMpCiAgICAgICAgICAgICByZXR1cm4gMDsKIAogICAgICAgICBpZiAodHlw
ZUJ5dGVBID09IE9iamVjdFN0b3JlTWV0YURhdGFUeXBlQnl0ZSkKLSAgICAgICAgICAgIHJldHVy
biBkZWNvZGVBbmRDb21wYXJlPE9iamVjdFN0b3JlTWV0YURhdGFLZXk+KGEsIGIpOworICAgICAg
ICAgICAgcmV0dXJuIGNvbXBhcmU8T2JqZWN0U3RvcmVNZXRhRGF0YUtleT4oYSwgYik7CiAgICAg
ICAgIGlmICh0eXBlQnl0ZUEgPT0gSW5kZXhNZXRhRGF0YVR5cGVCeXRlKQotICAgICAgICAgICAg
cmV0dXJuIGRlY29kZUFuZENvbXBhcmU8SW5kZXhNZXRhRGF0YUtleT4oYSwgYik7CisgICAgICAg
ICAgICByZXR1cm4gY29tcGFyZTxJbmRleE1ldGFEYXRhS2V5PihhLCBiKTsKICAgICAgICAgaWYg
KHR5cGVCeXRlQSA9PSBPYmplY3RTdG9yZUZyZWVMaXN0VHlwZUJ5dGUpCi0gICAgICAgICAgICBy
ZXR1cm4gZGVjb2RlQW5kQ29tcGFyZTxPYmplY3RTdG9yZUZyZWVMaXN0S2V5PihhLCBiKTsKKyAg
ICAgICAgICAgIHJldHVybiBjb21wYXJlPE9iamVjdFN0b3JlRnJlZUxpc3RLZXk+KGEsIGIpOwog
ICAgICAgICBpZiAodHlwZUJ5dGVBID09IEluZGV4RnJlZUxpc3RUeXBlQnl0ZSkKLSAgICAgICAg
ICAgIHJldHVybiBkZWNvZGVBbmRDb21wYXJlPEluZGV4RnJlZUxpc3RLZXk+KGEsIGIpOworICAg
ICAgICAgICAgcmV0dXJuIGNvbXBhcmU8SW5kZXhGcmVlTGlzdEtleT4oYSwgYik7CiAgICAgICAg
IGlmICh0eXBlQnl0ZUEgPT0gT2JqZWN0U3RvcmVOYW1lc1R5cGVCeXRlKQotICAgICAgICAgICAg
cmV0dXJuIGRlY29kZUFuZENvbXBhcmU8T2JqZWN0U3RvcmVOYW1lc0tleT4oYSwgYik7CisgICAg
ICAgICAgICByZXR1cm4gY29tcGFyZTxPYmplY3RTdG9yZU5hbWVzS2V5PihhLCBiKTsKICAgICAg
ICAgaWYgKHR5cGVCeXRlQSA9PSBJbmRleE5hbWVzS2V5VHlwZUJ5dGUpCi0gICAgICAgICAgICBy
ZXR1cm4gZGVjb2RlQW5kQ29tcGFyZTxJbmRleE5hbWVzS2V5PihhLCBiKTsKKyAgICAgICAgICAg
IHJldHVybiBjb21wYXJlPEluZGV4TmFtZXNLZXk+KGEsIGIpOwogCisgICAgICAgIC8vIEZJWE1F
OiBBc3NlcnQgbm90IHJlYWNoZWQgaGVyZT8KICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAogICAgIGlmIChwcmVmaXhBLnR5cGUoKSA9PSBL
ZXlQcmVmaXg6Ok9iamVjdFN0b3JlRGF0YSkgewpAQCAtODA5LDcgKzkwNyw3IEBAIGludCBjb21w
YXJlKGNvbnN0IExldmVsREJTbGljZSYgYSwgY29uc3QgTGV2ZWxEQlNsaWNlJiBiLCBib29sIGlu
ZGV4S2V5cykKICAgICAgICAgaWYgKHB0ckIgPT0gZW5kQikKICAgICAgICAgICAgIHJldHVybiAx
OyAvLyBGSVhNRTogVGhpcyBjYXNlIG9mIG5vbi1leGlzdGluZyB1c2VyIGtleXMgc2hvdWxkIG5v
dCBoYXZlIHRvIGJlIGhhbmRsZWQgdGhpcyB3YXkuCiAKLSAgICAgICAgcmV0dXJuIGRlY29kZUFu
ZENvbXBhcmU8T2JqZWN0U3RvcmVEYXRhS2V5PihhLCBiKTsKKyAgICAgICAgcmV0dXJuIGNvbXBh
cmU8T2JqZWN0U3RvcmVEYXRhS2V5PihhLCBiKTsKICAgICB9CiAgICAgaWYgKHByZWZpeEEudHlw
ZSgpID09IEtleVByZWZpeDo6RXhpc3RzRW50cnkpIHsKICAgICAgICAgaWYgKHB0ckEgPT0gZW5k
QSAmJiBwdHJCID09IGVuZEIpCkBAIC04MTksNyArOTE3LDcgQEAgaW50IGNvbXBhcmUoY29uc3Qg
TGV2ZWxEQlNsaWNlJiBhLCBjb25zdCBMZXZlbERCU2xpY2UmIGIsIGJvb2wgaW5kZXhLZXlzKQog
ICAgICAgICBpZiAocHRyQiA9PSBlbmRCKQogICAgICAgICAgICAgcmV0dXJuIDE7IC8vIEZJWE1F
OiBUaGlzIGNhc2Ugb2Ygbm9uLWV4aXN0aW5nIHVzZXIga2V5cyBzaG91bGQgbm90IGhhdmUgdG8g
YmUgaGFuZGxlZCB0aGlzIHdheS4KIAotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ29tcGFyZTxF
eGlzdHNFbnRyeUtleT4oYSwgYik7CisgICAgICAgIHJldHVybiBjb21wYXJlPEV4aXN0c0VudHJ5
S2V5PihhLCBiKTsKICAgICB9CiAgICAgaWYgKHByZWZpeEEudHlwZSgpID09IEtleVByZWZpeDo6
SW5kZXhEYXRhKSB7CiAgICAgICAgIGlmIChwdHJBID09IGVuZEEgJiYgcHRyQiA9PSBlbmRCKQpA
QCAtODI5LDE2ICs5MjcsOCBAQCBpbnQgY29tcGFyZShjb25zdCBMZXZlbERCU2xpY2UmIGEsIGNv
bnN0IExldmVsREJTbGljZSYgYiwgYm9vbCBpbmRleEtleXMpCiAgICAgICAgIGlmIChwdHJCID09
IGVuZEIpCiAgICAgICAgICAgICByZXR1cm4gMTsgLy8gRklYTUU6IFRoaXMgY2FzZSBvZiBub24t
ZXhpc3RpbmcgdXNlciBrZXlzIHNob3VsZCBub3QgaGF2ZSB0byBiZSBoYW5kbGVkIHRoaXMgd2F5
LgogCi0gICAgICAgIEluZGV4RGF0YUtleSBpbmRleERhdGFLZXlBOwotICAgICAgICBJbmRleERh
dGFLZXkgaW5kZXhEYXRhS2V5QjsKLQotICAgICAgICBwdHJBID0gSW5kZXhEYXRhS2V5OjpkZWNv
ZGUoYS5iZWdpbigpLCBlbmRBLCAmaW5kZXhEYXRhS2V5QSk7Ci0gICAgICAgIHB0ckIgPSBJbmRl
eERhdGFLZXk6OmRlY29kZShiLmJlZ2luKCksIGVuZEIsICZpbmRleERhdGFLZXlCKTsKLSAgICAg
ICAgQVNTRVJUKHB0ckEpOwotICAgICAgICBBU1NFUlQocHRyQik7Ci0KICAgICAgICAgYm9vbCBp
Z25vcmVEdXBsaWNhdGVzID0gaW5kZXhLZXlzOwotICAgICAgICByZXR1cm4gaW5kZXhEYXRhS2V5
QS5jb21wYXJlKGluZGV4RGF0YUtleUIsIGlnbm9yZUR1cGxpY2F0ZXMpOworICAgICAgICByZXR1
cm4gY29tcGFyZTxJbmRleERhdGFLZXk+KGEsIGIsIGlnbm9yZUR1cGxpY2F0ZXMpOwogICAgIH0K
IAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>