<?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>102243</bug_id>
          
          <creation_ts>2012-11-14 08:53:28 -0800</creation_ts>
          <short_desc>IndexedDB: Check SSV version when opening backing store</short_desc>
          <delta_ts>2012-12-07 09:53:37 -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>102255</dependson>
          <blocked>102230</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Joshua Bell">jsbell</reporter>
          <assigned_to name="Joshua Bell">jsbell</assigned_to>
          <cc>abarth</cc>
    
    <cc>alecflett</cc>
    
    <cc>dgrogan</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>noel.gordon</cc>
    
    <cc>tony</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>766948</commentid>
    <comment_count>0</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-14 08:53:28 -0800</bug_when>
    <thetext>Scenario:

(1) SSV is revved from 5 to 6 to support a new data type (e.g. uchar strings)
(2) IndexedDB records are persisted to disk using the new type
(3) User &quot;downgrades&quot; to an older browser version without clearing IDB profile directory
(4) IndexedDB opens backing store - everything looks fine
(5) When opening a record, SSV fails decoding the data type from the future - sadness

Ideally:

(1) SSV is revved from 5 to 6 to support a new data type (e.g. uchar strings)
(2) IndexedDB records are persisted to disk using the new type
(3) User &quot;downgrades&quot; to an older browser version without clearing IDB profile directory
(4) IndexedDB opens backing store, and detects that the SSV version is not known
(5) IndexedDB does its recovery stuff (just like if there was an schema change)

We either need to always bump the IDB internal schema version when the SSV encoding changes, or have IDB record the SSV version and check it as well as its internal schema version. Or something equally clever. Doing this when a record is read is insufficient - this MUST be done at backing store open time or data corruption can occur.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767050</commentid>
    <comment_count>1</comment_count>
      <attachid>174203</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-14 10:51:12 -0800</bug_when>
    <thetext>Created attachment 174203
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767052</commentid>
    <comment_count>2</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-14 10:52:04 -0800</bug_when>
    <thetext>First stab at this. Needs tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767055</commentid>
    <comment_count>3</comment_count>
      <attachid>174203</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-14 10:53:45 -0800</bug_when>
    <thetext>Comment on attachment 174203
Patch

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

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBCoding.cpp:158
&gt; +static const unsigned char MaxGlobalMetaDataSimpleTypeByte = 3;

This name sucks, since it looks like a regular piece of metadata - suggestions?

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBCoding.cpp:864
&gt; +        if (typeByteA &lt;= MaxGlobalMetaDataSimpleTypeByte)

Here&apos;s where it&apos;s used, replacing a magic number.

&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:1990
&gt; +uint32_t SerializedScriptValue::wireFormatVersion()

Alternate naming suggestions appreciated...

&gt; Source/WebCore/bindings/v8/SerializedScriptValue.cpp:2351
&gt; +    return WebCore::wireFormatVersion;

... especially due to this name conflict; would be nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767061</commentid>
    <comment_count>4</comment_count>
      <attachid>174203</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-14 10:59:18 -0800</bug_when>
    <thetext>Comment on attachment 174203
Patch

Attachment 174203 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/14828544</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767089</commentid>
    <comment_count>5</comment_count>
      <attachid>174203</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2012-11-14 11:21:52 -0800</bug_when>
    <thetext>Comment on attachment 174203
Patch

Attachment 174203 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/14845081</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767090</commentid>
    <comment_count>6</comment_count>
      <attachid>174203</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-11-14 11:22:41 -0800</bug_when>
    <thetext>Comment on attachment 174203
Patch

Attachment 174203 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14838383</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767116</commentid>
    <comment_count>7</comment_count>
      <attachid>174203</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-14 11:35:48 -0800</bug_when>
    <thetext>Comment on attachment 174203
Patch

Attachment 174203 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14834428</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767126</commentid>
    <comment_count>8</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-14 11:39:23 -0800</bug_when>
    <thetext>Better handling of the metadata comparisons (and a bug fix) is introduced in http://webkit.org/b/102255 - that should land first and this should be rebased.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767131</commentid>
    <comment_count>9</comment_count>
      <attachid>174213</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-14 11:41:38 -0800</bug_when>
    <thetext>Created attachment 174213
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767132</commentid>
    <comment_count>10</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-14 11:42:01 -0800</bug_when>
    <thetext>Let&apos;s try putting that inside the namespace { }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767288</commentid>
    <comment_count>11</comment_count>
      <attachid>174213</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-11-14 14:03:26 -0800</bug_when>
    <thetext>Comment on attachment 174213
Patch

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

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBCoding.cpp:864
&gt; +        if (typeByteA &lt;= MaxGlobalMetaDataSimpleTypeByte)

should be strictly less than?  Though I suppose that only changes behavior in debug mode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767290</commentid>
    <comment_count>12</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-14 14:04:33 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 174213 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=174213&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/IDBLevelDBCoding.cpp:864
&gt; &gt; +        if (typeByteA &lt;= MaxGlobalMetaDataSimpleTypeByte)
&gt; 
&gt; should be strictly less than?  Though I suppose that only changes behavior in debug mode.

You&apos;re right, that&apos;s a typo.

Over in https://bugs.webkit.org/show_bug.cgi?id=102255 I think I have it correct...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770868</commentid>
    <comment_count>13</comment_count>
      <attachid>175008</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-19 11:04:10 -0800</bug_when>
    <thetext>Created attachment 175008
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770871</commentid>
    <comment_count>14</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-19 11:10:45 -0800</bug_when>
    <thetext>Rebased now that 102255 has landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770872</commentid>
    <comment_count>15</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-19 11:11:49 -0800</bug_when>
    <thetext>This still needs tests, obviously.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785368</commentid>
    <comment_count>16</comment_count>
      <attachid>178098</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-06 15:58:10 -0800</bug_when>
    <thetext>Created attachment 178098
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785370</commentid>
    <comment_count>17</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-06 15:59:00 -0800</bug_when>
    <thetext>Chromium-side test in review at: https://codereview.chromium.org/11470013/

dgrogan@, alecflett@ - please take a look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785375</commentid>
    <comment_count>18</comment_count>
      <attachid>178098</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-12-06 16:05:16 -0800</bug_when>
    <thetext>Comment on attachment 178098
Patch

Minor naming nit, but otherwise LGTM.


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

&gt; Source/WebCore/Modules/indexeddb/IDBBackingStore.cpp:192
&gt; +    if (schemaVersion &gt; latestSchemaVersion)

I feel like &apos;latest&apos; needs to be &apos;current&apos; or something - or maybe &apos;schemaVersion&apos; needs to be &apos;databaseSchemaVersion&apos; or something. (and same for *Data below) In any case I find this confusing knowing which side of the &apos;&gt;&apos; is the one in the database, and which is the constant.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785387</commentid>
    <comment_count>19</comment_count>
      <attachid>178098</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-06 16:22:04 -0800</bug_when>
    <thetext>Comment on attachment 178098
Patch

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

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBBackingStore.cpp:192
&gt;&gt; +    if (schemaVersion &gt; latestSchemaVersion)
&gt; 
&gt; I feel like &apos;latest&apos; needs to be &apos;current&apos; or something - or maybe &apos;schemaVersion&apos; needs to be &apos;databaseSchemaVersion&apos; or something. (and same for *Data below) In any case I find this confusing knowing which side of the &apos;&gt;&apos; is the one in the database, and which is the constant.

I agree it&apos;s confusing. How about s/latest/latestKnown/ and &apos;db&apos; as a prefix on the other, so this turns into:

if (dbSchemaVersion &gt; latestKnownSchemaVersion)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785391</commentid>
    <comment_count>20</comment_count>
      <attachid>178098</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-06 16:23:09 -0800</bug_when>
    <thetext>Comment on attachment 178098
Patch

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

&gt;&gt;&gt; Source/WebCore/Modules/indexeddb/IDBBackingStore.cpp:192
&gt;&gt;&gt; +    if (schemaVersion &gt; latestSchemaVersion)
&gt;&gt; 
&gt;&gt; I feel like &apos;latest&apos; needs to be &apos;current&apos; or something - or maybe &apos;schemaVersion&apos; needs to be &apos;databaseSchemaVersion&apos; or something. (and same for *Data below) In any case I find this confusing knowing which side of the &apos;&gt;&apos; is the one in the database, and which is the constant.
&gt; 
&gt; I agree it&apos;s confusing. How about s/latest/latestKnown/ and &apos;db&apos; as a prefix on the other, so this turns into:
&gt; 
&gt; if (dbSchemaVersion &gt; latestKnownSchemaVersion)

lgtm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785410</commentid>
    <comment_count>21</comment_count>
      <attachid>178107</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-06 16:41:27 -0800</bug_when>
    <thetext>Created attachment 178107
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785411</commentid>
    <comment_count>22</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-06 16:42:57 -0800</bug_when>
    <thetext>tony@ - r?

There&apos;s a little more context over in https://bugs.webkit.org/show_bug.cgi?id=102230</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785929</commentid>
    <comment_count>23</comment_count>
      <attachid>178107</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-12-07 09:33:54 -0800</bug_when>
    <thetext>Comment on attachment 178107
Patch

committing this for jsbell because I want to make sure this gets some bake time in canary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785942</commentid>
    <comment_count>24</comment_count>
      <attachid>178107</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-07 09:53:32 -0800</bug_when>
    <thetext>Comment on attachment 178107
Patch

Clearing flags on attachment: 178107

Committed r136958: &lt;http://trac.webkit.org/changeset/136958&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785943</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-07 09:53:37 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174203</attachid>
            <date>2012-11-14 10:51:12 -0800</date>
            <delta_ts>2012-11-14 11:41:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102243-20121114104911.patch</filename>
            <type>text/plain</type>
            <size>11214</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0NjE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDIwYjMzNTU5NmFjOTU4
ZTU2Mjk3ZGMyOWYyMTZmZDliMzFjNjVmMS4uODcwOTBmZmY1OGM4YTFlMTRkYzMyYWUxNWYyZWE0
YTViYmI1NTY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTExLTE0ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBDaGVj
ayBTU1YgdmVyc2lvbiB3aGVuIG9wZW5pbmcgZGF0YWJhc2UKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjI0MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuc3VyZSB0aGF0IHRoZSBkYXRhIGZvcm1hdCAo
U2VyaWFsaXplZFNjcmlwdFZhbHVlKSBpc24ndCAiZnJvbSB0aGUgZnV0dXJlIiB3aGVuIG9wZW5p
bmcKKyAgICAgICAgYSBiYWNraW5nIHN0b3JlLiBUcmVhdCBhbiB1bmtub3duIHZlcnNpb24gdGhl
IHNhbWUgYXMgYW4gdW5rbm93biBzY2hlbWEgdmVyc2lvbi4KKworICAgICAgICBGSVhNRTogQWRk
IHRlc3RzIGJlZm9yZSBsYW5kaW5nLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
QmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
aXNTY2hlbWFLbm93bik6IENoZWNrIGRhdGEgdmVyc2lvbiBhcyB3ZWxsLgorICAgICAgICAoV2Vi
Q29yZTo6c2V0VXBNZXRhZGF0YSk6IEVuc3VyZSBkYXRhIHZlcnNpb24gaXMgcmVjb3JkZWQ7IGJ1
bXAgc2NoZW1hIHZlcnNpb24uCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxE
QkNvZGluZy5jcHA6IEVuY29kaW5nIGZvciAiRGF0YVZlcnNpb24iIGdsb2JhbCBtZXRhZGF0YSBl
bnRyeS4KKyAgICAgICAgKElEQkxldmVsREJDb2RpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SURC
TGV2ZWxEQkNvZGluZzo6Y29tcGFyZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29k
aW5nOjpEYXRhVmVyc2lvbktleTo6ZW5jb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJMZXZlbERCQ29kaW5nLmg6CisgICAgICAgIChEYXRhVmVyc2lvbktleSk6CisgICAgICAg
IChJREJMZXZlbERCQ29kaW5nKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwOgorICAgICAgICAoU2VyaWFsaXplZFNjcmlwdFZhbHVlOjp3aXJlRm9ybWF0
VmVyc2lvbik6IE5ldyBtZXRob2QgKEpTQyBzaWRlKS4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
Ojp3aXJlRm9ybWF0VmVyc2lvbik6IE5ldyBtZXRob2QgKFY4IHNpZGUpLgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6Cisg
ICAgICAgIChTZXJpYWxpemVkU2NyaXB0VmFsdWUpOgorCiAyMDEyLTExLTE0ICBFcmlrIEFydmlk
c3NvbiAgPGFydkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVXBkYXRlIERPTUV4Y2VwdGlvbiBu
YW1lOiBJbmRleFNpemVFcnJvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMWVhM2M5NDQ0YTNmYTk4Mzc5YjljZjUw
OWI4MGYzN2ZjYjdlMDdjYS4uODUwNTc4N2M0NDAxNDJmZGQ1ZTIyNTUzNDNmOTFmOTcwNzNkNGFj
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2lu
Z1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNr
aW5nU3RvcmUuY3BwCkBAIC0xNTYsMzAgKzE1Niw1MCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBj
b25zdCBjaGFyKiBuYW1lKCkgY29uc3QgeyByZXR1cm4gImlkYl9jbXAxIjsgfQogfTsKIAotY29u
c3QgaW50NjRfdCBsYXRlc3RTY2hlbWFWZXJzaW9uID0gMTsKKy8vIDAgLSBJbml0aWFsIHZlcnNp
b24uCisvLyAxIC0gQWRkcyBVc2VySW50VmVyc2lvbiB0byBEYXRhYmFzZU1ldGFEYXRhLgorLy8g
MiAtIEFkZHMgRGF0YVZlcnNpb24gdG8gdG8gZ2xvYmFsIG1ldGFkYXRhLgorY29uc3QgaW50NjRf
dCBsYXRlc3RTY2hlbWFWZXJzaW9uID0gMjsKIHN0YXRpYyBib29sIGlzU2NoZW1hS25vd24oTGV2
ZWxEQkRhdGFiYXNlKiBkYikKIHsKICAgICBpbnQ2NF90IHNjaGVtYVZlcnNpb24gPSAwOwotICAg
IGNvbnN0IFZlY3RvcjxjaGFyPiBtZXRhRGF0YUtleSA9IFNjaGVtYVZlcnNpb25LZXk6OmVuY29k
ZSgpOwotICAgIGlmICghZ2V0SW50KGRiLCBtZXRhRGF0YUtleSwgc2NoZW1hVmVyc2lvbikpCisg
ICAgaWYgKCFnZXRJbnQoZGIsIFNjaGVtYVZlcnNpb25LZXk6OmVuY29kZSgpLCBzY2hlbWFWZXJz
aW9uKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIHNjaGVtYVZlcnNpb24gPD0g
bGF0ZXN0U2NoZW1hVmVyc2lvbjsKKyAgICBpZiAoc2NoZW1hVmVyc2lvbiA+IGxhdGVzdFNjaGVt
YVZlcnNpb24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNvbnN0IHVpbnQzMl90IGxh
dGVzdERhdGFWZXJzaW9uID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjp3aXJlRm9ybWF0VmVyc2lv
bigpOworICAgIGludDY0X3QgZGF0YVZlcnNpb24gPSAwOworICAgIGlmICghZ2V0SW50KGRiLCBE
YXRhVmVyc2lvbktleTo6ZW5jb2RlKCksIGRhdGFWZXJzaW9uKSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgaWYgKGRhdGFWZXJzaW9uID4gbGF0ZXN0RGF0YVZlcnNpb24pCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBzZXRVcE1l
dGFkYXRhKExldmVsREJEYXRhYmFzZSogZGIsIGNvbnN0IFN0cmluZyYgb3JpZ2luKQogewotICAg
IGNvbnN0IFZlY3RvcjxjaGFyPiBtZXRhRGF0YUtleSA9IFNjaGVtYVZlcnNpb25LZXk6OmVuY29k
ZSgpOworICAgIGNvbnN0IHVpbnQzMl90IGxhdGVzdERhdGFWZXJzaW9uID0gU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjp3aXJlRm9ybWF0VmVyc2lvbigpOworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBz
Y2hlbWFWZXJzaW9uS2V5ID0gU2NoZW1hVmVyc2lvbktleTo6ZW5jb2RlKCk7CisgICAgY29uc3Qg
VmVjdG9yPGNoYXI+IGRhdGFWZXJzaW9uS2V5ID0gRGF0YVZlcnNpb25LZXk6OmVuY29kZSgpOwor
CiAgICAgUmVmUHRyPExldmVsREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24gPSBMZXZlbERCVHJh
bnNhY3Rpb246OmNyZWF0ZShkYik7CiAKICAgICBpbnQ2NF90IHNjaGVtYVZlcnNpb24gPSAwOwot
ICAgIGlmICghZ2V0SW50KHRyYW5zYWN0aW9uLmdldCgpLCBtZXRhRGF0YUtleSwgc2NoZW1hVmVy
c2lvbikpIHsKKyAgICBpbnQ2NF90IGRhdGFWZXJzaW9uID0gMDsKKyAgICBpZiAoIWdldEludCh0
cmFuc2FjdGlvbi5nZXQoKSwgc2NoZW1hVmVyc2lvbktleSwgc2NoZW1hVmVyc2lvbikpIHsKKyAg
ICAgICAgLy8gSW5pdGlhbGl6ZSBuZXcgYmFja2luZyBzdG9yZXMuCiAgICAgICAgIHNjaGVtYVZl
cnNpb24gPSBsYXRlc3RTY2hlbWFWZXJzaW9uOwotICAgICAgICBwdXRJbnQodHJhbnNhY3Rpb24u
Z2V0KCksIG1ldGFEYXRhS2V5LCBsYXRlc3RTY2hlbWFWZXJzaW9uKTsKKyAgICAgICAgcHV0SW50
KHRyYW5zYWN0aW9uLmdldCgpLCBzY2hlbWFWZXJzaW9uS2V5LCBzY2hlbWFWZXJzaW9uKTsKKyAg
ICAgICAgZGF0YVZlcnNpb24gPSBsYXRlc3REYXRhVmVyc2lvbjsKKyAgICAgICAgcHV0SW50KHRy
YW5zYWN0aW9uLmdldCgpLCBkYXRhVmVyc2lvbktleSwgZGF0YVZlcnNpb24pOwogICAgIH0gZWxz
ZSB7CisgICAgICAgIC8vIFVwZ3JhZGUgb2xkIGJhY2tpbmcgc3RvcmVzLgogICAgICAgICBBU1NF
UlQoc2NoZW1hVmVyc2lvbiA8PSBsYXRlc3RTY2hlbWFWZXJzaW9uKTsKLSAgICAgICAgaWYgKCFz
Y2hlbWFWZXJzaW9uKSB7CisgICAgICAgIGlmIChzY2hlbWFWZXJzaW9uIDwgMSkgewogICAgICAg
ICAgICAgc2NoZW1hVmVyc2lvbiA9IGxhdGVzdFNjaGVtYVZlcnNpb247Ci0gICAgICAgICAgICBw
dXRJbnQodHJhbnNhY3Rpb24uZ2V0KCksIG1ldGFEYXRhS2V5LCBzY2hlbWFWZXJzaW9uKTsKKyAg
ICAgICAgICAgIHB1dEludCh0cmFuc2FjdGlvbi5nZXQoKSwgc2NoZW1hVmVyc2lvbktleSwgc2No
ZW1hVmVyc2lvbik7CiAgICAgICAgICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gc3RhcnRLZXkgPSBE
YXRhYmFzZU5hbWVLZXk6OmVuY29kZU1pbktleUZvck9yaWdpbihvcmlnaW4pOwogICAgICAgICAg
ICAgY29uc3QgVmVjdG9yPGNoYXI+IHN0b3BLZXkgPSBEYXRhYmFzZU5hbWVLZXk6OmVuY29kZVN0
b3BLZXlGb3JPcmlnaW4ob3JpZ2luKTsKICAgICAgICAgICAgIE93blB0cjxMZXZlbERCSXRlcmF0
b3I+IGl0ID0gZGItPmNyZWF0ZUl0ZXJhdG9yKCk7CkBAIC0xOTIsMTAgKzIxMiwyOCBAQCBzdGF0
aWMgYm9vbCBzZXRVcE1ldGFkYXRhKExldmVsREJEYXRhYmFzZSogZGIsIGNvbnN0IFN0cmluZyYg
b3JpZ2luKQogICAgICAgICAgICAgICAgIFZlY3RvcjxjaGFyPiBpbnRWZXJzaW9uS2V5ID0gRGF0
YWJhc2VNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIERhdGFiYXNlTWV0YURhdGFLZXk6
OlVzZXJJbnRWZXJzaW9uKTsKICAgICAgICAgICAgICAgICBwdXRWYXJJbnQodHJhbnNhY3Rpb24u
Z2V0KCksIGludFZlcnNpb25LZXksIElEQkRhdGFiYXNlTWV0YWRhdGE6OkRlZmF1bHRJbnRWZXJz
aW9uKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNjaGVtYVZlcnNpb24gPSAxOworICAg
ICAgICB9CisgICAgICAgIGlmIChzY2hlbWFWZXJzaW9uIDwgMikgeworICAgICAgICAgICAgZGF0
YVZlcnNpb24gPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OndpcmVGb3JtYXRWZXJzaW9uKCk7Cisg
ICAgICAgICAgICBwdXRJbnQodHJhbnNhY3Rpb24uZ2V0KCksIGRhdGFWZXJzaW9uS2V5LCBkYXRh
VmVyc2lvbik7CisgICAgICAgICAgICBzY2hlbWFWZXJzaW9uID0gMjsKICAgICAgICAgfQogICAg
IH0KIAorICAgIC8vIEFsbCBuZXcgdmFsdWVzIHdpbGwgYmUgd3JpdHRlbiB1c2luZyB0aGlzIHNl
cmlhbGl6YXRpb24gdmVyc2lvbi4KKyAgICBpZiAoIWdldEludCh0cmFuc2FjdGlvbi5nZXQoKSwg
ZGF0YVZlcnNpb25LZXksIGRhdGFWZXJzaW9uKSkgeworICAgICAgICBJbnRlcm5hbEVycm9yKElE
QkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3IpOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorICAgIGlmIChkYXRhVmVyc2lvbiA8IGxhdGVzdERhdGFWZXJzaW9uKSB7CisgICAgICAg
IGRhdGFWZXJzaW9uID0gbGF0ZXN0RGF0YVZlcnNpb247CisgICAgICAgIHB1dEludCh0cmFuc2Fj
dGlvbi5nZXQoKSwgZGF0YVZlcnNpb25LZXksIGRhdGFWZXJzaW9uKTsKKyAgICB9CisKICAgICBB
U1NFUlQoc2NoZW1hVmVyc2lvbiA9PSBsYXRlc3RTY2hlbWFWZXJzaW9uKTsKKyAgICBBU1NFUlQo
ZGF0YVZlcnNpb24gPT0gbGF0ZXN0RGF0YVZlcnNpb24pOworCiAgICAgaWYgKCF0cmFuc2FjdGlv
bi0+Y29tbWl0KCkpIHsKICAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0
b3JlV3JpdGVFcnJvcik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAKaW5kZXggNzBj
ODE3ZmNjZmIyNzFhY2FkMzVlMmFiYTVhMWZiNGNhZDFmZDhmZi4uNjJmZjc4MjA0ZjFiYzMwYjRm
YTRkNTUzZjZjN2UzZDdiNTdlMDFlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAKQEAgLTQ3LDggKzQ3LDkgQEAKIC8v
CiAvLyBHbG9iYWwgbWV0YS1kYXRhIGhhdmUga2V5cyB3aXRoIHByZWZpeCAoMCwwLDApLCBmb2xs
b3dlZCBieSBhIHR5cGUgYnl0ZToKIC8vCi0vLyAgICAgPDAsIDAsIDAsIDA+ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+IEluZGV4ZWREQi9MZXZlbERCIHNjaGVt
YSB2ZXJzaW9uICgwIGZvciBub3cpIFtTY2hlbWFWZXJzaW9uS2V5XQorLy8gICAgIDwwLCAwLCAw
LCAwPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiBJbmRleGVk
REIvTGV2ZWxEQiBzY2hlbWEgdmVyc2lvbiBbU2NoZW1hVmVyc2lvbktleV0KIC8vICAgICA8MCwg
MCwgMCwgMT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gVGhl
IG1heGltdW0gZGF0YWJhc2UgaWQgZXZlciBhbGxvY2F0ZWQgW01heERhdGFiYXNlSWRLZXldCisv
LyAgICAgPDAsIDAsIDAsIDI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSB2ZXJzaW9uIFtEYXRhVmVyc2lvbktleV0KIC8v
ICAgICA8MCwgMCwgMCwgMTAwLCBkYXRhYmFzZSBpZD4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPT4gRXhpc3RlbmNlIGltcGxpZXMgdGhlIGRhdGFiYXNlIGlkIGlzIGluIHRoZSBmcmVlIGxp
c3QgW0RhdGFiYXNlRnJlZUxpc3RLZXldCiAvLyAgICAgPDAsIDAsIDAsIDIwMSwgdXRmMTYgb3Jp
Z2luIG5hbWUsIHV0ZjE2IGRhdGFiYXNlIG5hbWU+ID0+IERhdGFiYXNlIGlkIFtEYXRhYmFzZU5h
bWVLZXldCiAvLwpAQCAtMTUzLDYgKzE1NCw4IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy
IEV4aXN0c0VudHJ5SW5kZXhJZCA9IDI7CiAKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIFNj
aGVtYVZlcnNpb25UeXBlQnl0ZSA9IDA7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBNYXhE
YXRhYmFzZUlkVHlwZUJ5dGUgPSAxOworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgRGF0YVZl
cnNpb25UeXBlQnl0ZSA9IDI7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBNYXhHbG9iYWxN
ZXRhRGF0YVNpbXBsZVR5cGVCeXRlID0gMzsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIERh
dGFiYXNlRnJlZUxpc3RUeXBlQnl0ZSA9IDEwMDsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy
IERhdGFiYXNlTmFtZVR5cGVCeXRlID0gMjAxOwogCkBAIC04NTgsNyArODYxLDcgQEAgaW50IGNv
bXBhcmUoY29uc3QgTGV2ZWxEQlNsaWNlJiBhLCBjb25zdCBMZXZlbERCU2xpY2UmIGIsIGJvb2wg
aW5kZXhLZXlzKQogICAgICAgICBpZiAoaW50IHggPSB0eXBlQnl0ZUEgLSB0eXBlQnl0ZUIpCiAg
ICAgICAgICAgICByZXR1cm4geDsKIAotICAgICAgICBpZiAodHlwZUJ5dGVBIDw9IDEpCisgICAg
ICAgIGlmICh0eXBlQnl0ZUEgPD0gTWF4R2xvYmFsTWV0YURhdGFTaW1wbGVUeXBlQnl0ZSkKICAg
ICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBpZiAodHlwZUJ5dGVBID09IERhdGFiYXNlRnJl
ZUxpc3RUeXBlQnl0ZSkKICAgICAgICAgICAgIHJldHVybiBjb21wYXJlPERhdGFiYXNlRnJlZUxp
c3RLZXk+KGEsIGIpOwpAQCAtMTA1MCw2ICsxMDUzLDE0IEBAIFZlY3RvcjxjaGFyPiBNYXhEYXRh
YmFzZUlkS2V5OjplbmNvZGUoKQogICAgIHJldHVybiByZXQ7CiB9CiAKK1ZlY3RvcjxjaGFyPiBE
YXRhVmVyc2lvbktleTo6ZW5jb2RlKCkKK3sKKyAgICBLZXlQcmVmaXggcHJlZml4KDAsIDAsIDAp
OworICAgIFZlY3RvcjxjaGFyPiByZXQgPSBwcmVmaXguZW5jb2RlKCk7CisgICAgcmV0LmFwcGVu
ZChlbmNvZGVCeXRlKERhdGFWZXJzaW9uVHlwZUJ5dGUpKTsKKyAgICByZXR1cm4gcmV0OworfQor
CiBEYXRhYmFzZUZyZWVMaXN0S2V5OjpEYXRhYmFzZUZyZWVMaXN0S2V5KCkKICAgICA6IG1fZGF0
YWJhc2VJZCgtMSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkxldmVsREJDb2RpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkxldmVsREJDb2RpbmcuaAppbmRleCAxYjE2NjZhZThkOWFjNzE2NTZiZjkwMjUzNjNmMGQy
ZmMwZTg1NTNmLi40ZTBkNjMyZGNjOTc3MjhiMWY0ZWMxN2FiNGI1NzBhNzJhNWViNzMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5n
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGlu
Zy5oCkBAIC0xMTEsNiArMTExLDExIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgVmVjdG9yPGNoYXI+
IGVuY29kZSgpOwogfTsKIAorY2xhc3MgRGF0YVZlcnNpb25LZXkgeworcHVibGljOgorICAgIHN0
YXRpYyBWZWN0b3I8Y2hhcj4gZW5jb2RlKCk7Cit9OworCiBjbGFzcyBEYXRhYmFzZUZyZWVMaXN0
S2V5IHsKIHB1YmxpYzoKICAgICBEYXRhYmFzZUZyZWVMaXN0S2V5KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCA0
NTgxMmJiMjExZmRjMTM1OGZjZjY5MmU3NjU5NmU0MDFjOTE1NjRjLi44OTcyNTkyYzY0OTc4YzIw
OTI1YjFhOWZhYjIyZDg0YjM5NjI4OTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTE5ODYsMyArMTk4Niw4IEBA
IGJvb2wgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpzZXJpYWxpemF0aW9uRGlkQ29tcGxldGVTdWNj
ZXNzZnVsbHkoU2VyaWFsaXphdGlvblJlCiB9CiAKIH0KKwordWludDMyX3QgU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjp3aXJlRm9ybWF0VmVyc2lvbigpCit7CisgICAgcmV0dXJuIEN1cnJlbnRWZXJz
aW9uOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuaAppbmRleCA4MzJiNWQ0YmY2ZDY1MDM0NTY1OGUxOWRhNzBjODJhZWYwN2JlZWMz
Li43NzE4OTFiZDUyYzg3OGRmZWI1ZWM0ZTA5NzRmNWQ5ZjUzMjdkNTQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaApAQCAtODMs
NiArODMsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiB1bmRlZmluZWRWYWx1ZSgpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gYm9vbGVhblZhbHVlKGJvb2wgdmFsdWUpOwogCisgICAgc3RhdGljIHVp
bnQzMl90IHdpcmVGb3JtYXRWZXJzaW9uKCk7CisKICAgICBTdHJpbmcgdG9TdHJpbmcoKTsKICAg
ICAKICAgICBKU0M6OkpTVmFsdWUgZGVzZXJpYWxpemUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgTWVzc2FnZVBvcnRBcnJheSosIFNlcmlhbGl6YXRpb25FcnJvck1vZGUg
PSBUaHJvd2luZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCA0YzMxMGQ4OTEyMjNjNWFhOGY2Yzc2ZjFjMWI0MzY1
NmM4YjMzMTMyLi5jZTI4N2YwNTY4ZjgwNjc4NTVjOTFhNGVkOGJiMDcwYmNjMjYxNWE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5jcHAKQEAgLTIzNDYsNCArMjM0Niw5IEBAIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6flNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSgpCiAgICAgfQogfQogCit1aW50MzJfdCBTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OndpcmVGb3JtYXRWZXJzaW9uKCkKK3sKKyAgICByZXR1cm4gV2ViQ29yZTo6d2lyZUZv
cm1hdFZlcnNpb247Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggY2I2NjM4
NGQ0MmI3OTIzYjU0YWI3Y2JjODIzNTdkZjk4OTlmZjlmOC4uNjllYThkODMyMDY4YjZhNWExODcx
NDhiZWNiNGU1Y2IyY2YzNzhmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTY1LDYgKzY1LDggQEAgcHVibGljOgogICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gYm9vbGVhblZhbHVlKGJv
b2wgdmFsdWUsIHY4OjpJc29sYXRlKiA9IDApOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gbnVtYmVyVmFsdWUoZG91YmxlIHZhbHVlLCB2ODo6SXNvbGF0ZSog
PSAwKTsKIAorICAgIHN0YXRpYyB1aW50MzJfdCB3aXJlRm9ybWF0VmVyc2lvbigpOworCiAgICAg
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHJlbGVhc2UoKTsKIAogICAgIFN0cmlu
ZyB0b1dpcmVTdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174213</attachid>
            <date>2012-11-14 11:41:38 -0800</date>
            <delta_ts>2012-11-19 11:04:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102243-20121114113936.patch</filename>
            <type>text/plain</type>
            <size>11259</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0NjE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDIwYjMzNTU5NmFjOTU4
ZTU2Mjk3ZGMyOWYyMTZmZDliMzFjNjVmMS4uODcwOTBmZmY1OGM4YTFlMTRkYzMyYWUxNWYyZWE0
YTViYmI1NTY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTExLTE0ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBDaGVj
ayBTU1YgdmVyc2lvbiB3aGVuIG9wZW5pbmcgZGF0YWJhc2UKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjI0MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuc3VyZSB0aGF0IHRoZSBkYXRhIGZvcm1hdCAo
U2VyaWFsaXplZFNjcmlwdFZhbHVlKSBpc24ndCAiZnJvbSB0aGUgZnV0dXJlIiB3aGVuIG9wZW5p
bmcKKyAgICAgICAgYSBiYWNraW5nIHN0b3JlLiBUcmVhdCBhbiB1bmtub3duIHZlcnNpb24gdGhl
IHNhbWUgYXMgYW4gdW5rbm93biBzY2hlbWEgdmVyc2lvbi4KKworICAgICAgICBGSVhNRTogQWRk
IHRlc3RzIGJlZm9yZSBsYW5kaW5nLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
QmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
aXNTY2hlbWFLbm93bik6IENoZWNrIGRhdGEgdmVyc2lvbiBhcyB3ZWxsLgorICAgICAgICAoV2Vi
Q29yZTo6c2V0VXBNZXRhZGF0YSk6IEVuc3VyZSBkYXRhIHZlcnNpb24gaXMgcmVjb3JkZWQ7IGJ1
bXAgc2NoZW1hIHZlcnNpb24uCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxE
QkNvZGluZy5jcHA6IEVuY29kaW5nIGZvciAiRGF0YVZlcnNpb24iIGdsb2JhbCBtZXRhZGF0YSBl
bnRyeS4KKyAgICAgICAgKElEQkxldmVsREJDb2RpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SURC
TGV2ZWxEQkNvZGluZzo6Y29tcGFyZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29k
aW5nOjpEYXRhVmVyc2lvbktleTo6ZW5jb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJMZXZlbERCQ29kaW5nLmg6CisgICAgICAgIChEYXRhVmVyc2lvbktleSk6CisgICAgICAg
IChJREJMZXZlbERCQ29kaW5nKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwOgorICAgICAgICAoU2VyaWFsaXplZFNjcmlwdFZhbHVlOjp3aXJlRm9ybWF0
VmVyc2lvbik6IE5ldyBtZXRob2QgKEpTQyBzaWRlKS4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
Ojp3aXJlRm9ybWF0VmVyc2lvbik6IE5ldyBtZXRob2QgKFY4IHNpZGUpLgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6Cisg
ICAgICAgIChTZXJpYWxpemVkU2NyaXB0VmFsdWUpOgorCiAyMDEyLTExLTE0ICBFcmlrIEFydmlk
c3NvbiAgPGFydkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVXBkYXRlIERPTUV4Y2VwdGlvbiBu
YW1lOiBJbmRleFNpemVFcnJvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMWVhM2M5NDQ0YTNmYTk4Mzc5YjljZjUw
OWI4MGYzN2ZjYjdlMDdjYS4uODUwNTc4N2M0NDAxNDJmZGQ1ZTIyNTUzNDNmOTFmOTcwNzNkNGFj
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2lu
Z1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNr
aW5nU3RvcmUuY3BwCkBAIC0xNTYsMzAgKzE1Niw1MCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBj
b25zdCBjaGFyKiBuYW1lKCkgY29uc3QgeyByZXR1cm4gImlkYl9jbXAxIjsgfQogfTsKIAotY29u
c3QgaW50NjRfdCBsYXRlc3RTY2hlbWFWZXJzaW9uID0gMTsKKy8vIDAgLSBJbml0aWFsIHZlcnNp
b24uCisvLyAxIC0gQWRkcyBVc2VySW50VmVyc2lvbiB0byBEYXRhYmFzZU1ldGFEYXRhLgorLy8g
MiAtIEFkZHMgRGF0YVZlcnNpb24gdG8gdG8gZ2xvYmFsIG1ldGFkYXRhLgorY29uc3QgaW50NjRf
dCBsYXRlc3RTY2hlbWFWZXJzaW9uID0gMjsKIHN0YXRpYyBib29sIGlzU2NoZW1hS25vd24oTGV2
ZWxEQkRhdGFiYXNlKiBkYikKIHsKICAgICBpbnQ2NF90IHNjaGVtYVZlcnNpb24gPSAwOwotICAg
IGNvbnN0IFZlY3RvcjxjaGFyPiBtZXRhRGF0YUtleSA9IFNjaGVtYVZlcnNpb25LZXk6OmVuY29k
ZSgpOwotICAgIGlmICghZ2V0SW50KGRiLCBtZXRhRGF0YUtleSwgc2NoZW1hVmVyc2lvbikpCisg
ICAgaWYgKCFnZXRJbnQoZGIsIFNjaGVtYVZlcnNpb25LZXk6OmVuY29kZSgpLCBzY2hlbWFWZXJz
aW9uKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIHNjaGVtYVZlcnNpb24gPD0g
bGF0ZXN0U2NoZW1hVmVyc2lvbjsKKyAgICBpZiAoc2NoZW1hVmVyc2lvbiA+IGxhdGVzdFNjaGVt
YVZlcnNpb24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNvbnN0IHVpbnQzMl90IGxh
dGVzdERhdGFWZXJzaW9uID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjp3aXJlRm9ybWF0VmVyc2lv
bigpOworICAgIGludDY0X3QgZGF0YVZlcnNpb24gPSAwOworICAgIGlmICghZ2V0SW50KGRiLCBE
YXRhVmVyc2lvbktleTo6ZW5jb2RlKCksIGRhdGFWZXJzaW9uKSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgaWYgKGRhdGFWZXJzaW9uID4gbGF0ZXN0RGF0YVZlcnNpb24pCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBzZXRVcE1l
dGFkYXRhKExldmVsREJEYXRhYmFzZSogZGIsIGNvbnN0IFN0cmluZyYgb3JpZ2luKQogewotICAg
IGNvbnN0IFZlY3RvcjxjaGFyPiBtZXRhRGF0YUtleSA9IFNjaGVtYVZlcnNpb25LZXk6OmVuY29k
ZSgpOworICAgIGNvbnN0IHVpbnQzMl90IGxhdGVzdERhdGFWZXJzaW9uID0gU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjp3aXJlRm9ybWF0VmVyc2lvbigpOworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBz
Y2hlbWFWZXJzaW9uS2V5ID0gU2NoZW1hVmVyc2lvbktleTo6ZW5jb2RlKCk7CisgICAgY29uc3Qg
VmVjdG9yPGNoYXI+IGRhdGFWZXJzaW9uS2V5ID0gRGF0YVZlcnNpb25LZXk6OmVuY29kZSgpOwor
CiAgICAgUmVmUHRyPExldmVsREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24gPSBMZXZlbERCVHJh
bnNhY3Rpb246OmNyZWF0ZShkYik7CiAKICAgICBpbnQ2NF90IHNjaGVtYVZlcnNpb24gPSAwOwot
ICAgIGlmICghZ2V0SW50KHRyYW5zYWN0aW9uLmdldCgpLCBtZXRhRGF0YUtleSwgc2NoZW1hVmVy
c2lvbikpIHsKKyAgICBpbnQ2NF90IGRhdGFWZXJzaW9uID0gMDsKKyAgICBpZiAoIWdldEludCh0
cmFuc2FjdGlvbi5nZXQoKSwgc2NoZW1hVmVyc2lvbktleSwgc2NoZW1hVmVyc2lvbikpIHsKKyAg
ICAgICAgLy8gSW5pdGlhbGl6ZSBuZXcgYmFja2luZyBzdG9yZXMuCiAgICAgICAgIHNjaGVtYVZl
cnNpb24gPSBsYXRlc3RTY2hlbWFWZXJzaW9uOwotICAgICAgICBwdXRJbnQodHJhbnNhY3Rpb24u
Z2V0KCksIG1ldGFEYXRhS2V5LCBsYXRlc3RTY2hlbWFWZXJzaW9uKTsKKyAgICAgICAgcHV0SW50
KHRyYW5zYWN0aW9uLmdldCgpLCBzY2hlbWFWZXJzaW9uS2V5LCBzY2hlbWFWZXJzaW9uKTsKKyAg
ICAgICAgZGF0YVZlcnNpb24gPSBsYXRlc3REYXRhVmVyc2lvbjsKKyAgICAgICAgcHV0SW50KHRy
YW5zYWN0aW9uLmdldCgpLCBkYXRhVmVyc2lvbktleSwgZGF0YVZlcnNpb24pOwogICAgIH0gZWxz
ZSB7CisgICAgICAgIC8vIFVwZ3JhZGUgb2xkIGJhY2tpbmcgc3RvcmVzLgogICAgICAgICBBU1NF
UlQoc2NoZW1hVmVyc2lvbiA8PSBsYXRlc3RTY2hlbWFWZXJzaW9uKTsKLSAgICAgICAgaWYgKCFz
Y2hlbWFWZXJzaW9uKSB7CisgICAgICAgIGlmIChzY2hlbWFWZXJzaW9uIDwgMSkgewogICAgICAg
ICAgICAgc2NoZW1hVmVyc2lvbiA9IGxhdGVzdFNjaGVtYVZlcnNpb247Ci0gICAgICAgICAgICBw
dXRJbnQodHJhbnNhY3Rpb24uZ2V0KCksIG1ldGFEYXRhS2V5LCBzY2hlbWFWZXJzaW9uKTsKKyAg
ICAgICAgICAgIHB1dEludCh0cmFuc2FjdGlvbi5nZXQoKSwgc2NoZW1hVmVyc2lvbktleSwgc2No
ZW1hVmVyc2lvbik7CiAgICAgICAgICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gc3RhcnRLZXkgPSBE
YXRhYmFzZU5hbWVLZXk6OmVuY29kZU1pbktleUZvck9yaWdpbihvcmlnaW4pOwogICAgICAgICAg
ICAgY29uc3QgVmVjdG9yPGNoYXI+IHN0b3BLZXkgPSBEYXRhYmFzZU5hbWVLZXk6OmVuY29kZVN0
b3BLZXlGb3JPcmlnaW4ob3JpZ2luKTsKICAgICAgICAgICAgIE93blB0cjxMZXZlbERCSXRlcmF0
b3I+IGl0ID0gZGItPmNyZWF0ZUl0ZXJhdG9yKCk7CkBAIC0xOTIsMTAgKzIxMiwyOCBAQCBzdGF0
aWMgYm9vbCBzZXRVcE1ldGFkYXRhKExldmVsREJEYXRhYmFzZSogZGIsIGNvbnN0IFN0cmluZyYg
b3JpZ2luKQogICAgICAgICAgICAgICAgIFZlY3RvcjxjaGFyPiBpbnRWZXJzaW9uS2V5ID0gRGF0
YWJhc2VNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIERhdGFiYXNlTWV0YURhdGFLZXk6
OlVzZXJJbnRWZXJzaW9uKTsKICAgICAgICAgICAgICAgICBwdXRWYXJJbnQodHJhbnNhY3Rpb24u
Z2V0KCksIGludFZlcnNpb25LZXksIElEQkRhdGFiYXNlTWV0YWRhdGE6OkRlZmF1bHRJbnRWZXJz
aW9uKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNjaGVtYVZlcnNpb24gPSAxOworICAg
ICAgICB9CisgICAgICAgIGlmIChzY2hlbWFWZXJzaW9uIDwgMikgeworICAgICAgICAgICAgZGF0
YVZlcnNpb24gPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OndpcmVGb3JtYXRWZXJzaW9uKCk7Cisg
ICAgICAgICAgICBwdXRJbnQodHJhbnNhY3Rpb24uZ2V0KCksIGRhdGFWZXJzaW9uS2V5LCBkYXRh
VmVyc2lvbik7CisgICAgICAgICAgICBzY2hlbWFWZXJzaW9uID0gMjsKICAgICAgICAgfQogICAg
IH0KIAorICAgIC8vIEFsbCBuZXcgdmFsdWVzIHdpbGwgYmUgd3JpdHRlbiB1c2luZyB0aGlzIHNl
cmlhbGl6YXRpb24gdmVyc2lvbi4KKyAgICBpZiAoIWdldEludCh0cmFuc2FjdGlvbi5nZXQoKSwg
ZGF0YVZlcnNpb25LZXksIGRhdGFWZXJzaW9uKSkgeworICAgICAgICBJbnRlcm5hbEVycm9yKElE
QkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3IpOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorICAgIGlmIChkYXRhVmVyc2lvbiA8IGxhdGVzdERhdGFWZXJzaW9uKSB7CisgICAgICAg
IGRhdGFWZXJzaW9uID0gbGF0ZXN0RGF0YVZlcnNpb247CisgICAgICAgIHB1dEludCh0cmFuc2Fj
dGlvbi5nZXQoKSwgZGF0YVZlcnNpb25LZXksIGRhdGFWZXJzaW9uKTsKKyAgICB9CisKICAgICBB
U1NFUlQoc2NoZW1hVmVyc2lvbiA9PSBsYXRlc3RTY2hlbWFWZXJzaW9uKTsKKyAgICBBU1NFUlQo
ZGF0YVZlcnNpb24gPT0gbGF0ZXN0RGF0YVZlcnNpb24pOworCiAgICAgaWYgKCF0cmFuc2FjdGlv
bi0+Y29tbWl0KCkpIHsKICAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0
b3JlV3JpdGVFcnJvcik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAKaW5kZXggNzBj
ODE3ZmNjZmIyNzFhY2FkMzVlMmFiYTVhMWZiNGNhZDFmZDhmZi4uNjJmZjc4MjA0ZjFiYzMwYjRm
YTRkNTUzZjZjN2UzZDdiNTdlMDFlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAKQEAgLTQ3LDggKzQ3LDkgQEAKIC8v
CiAvLyBHbG9iYWwgbWV0YS1kYXRhIGhhdmUga2V5cyB3aXRoIHByZWZpeCAoMCwwLDApLCBmb2xs
b3dlZCBieSBhIHR5cGUgYnl0ZToKIC8vCi0vLyAgICAgPDAsIDAsIDAsIDA+ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+IEluZGV4ZWREQi9MZXZlbERCIHNjaGVt
YSB2ZXJzaW9uICgwIGZvciBub3cpIFtTY2hlbWFWZXJzaW9uS2V5XQorLy8gICAgIDwwLCAwLCAw
LCAwPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiBJbmRleGVk
REIvTGV2ZWxEQiBzY2hlbWEgdmVyc2lvbiBbU2NoZW1hVmVyc2lvbktleV0KIC8vICAgICA8MCwg
MCwgMCwgMT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gVGhl
IG1heGltdW0gZGF0YWJhc2UgaWQgZXZlciBhbGxvY2F0ZWQgW01heERhdGFiYXNlSWRLZXldCisv
LyAgICAgPDAsIDAsIDAsIDI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSB2ZXJzaW9uIFtEYXRhVmVyc2lvbktleV0KIC8v
ICAgICA8MCwgMCwgMCwgMTAwLCBkYXRhYmFzZSBpZD4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPT4gRXhpc3RlbmNlIGltcGxpZXMgdGhlIGRhdGFiYXNlIGlkIGlzIGluIHRoZSBmcmVlIGxp
c3QgW0RhdGFiYXNlRnJlZUxpc3RLZXldCiAvLyAgICAgPDAsIDAsIDAsIDIwMSwgdXRmMTYgb3Jp
Z2luIG5hbWUsIHV0ZjE2IGRhdGFiYXNlIG5hbWU+ID0+IERhdGFiYXNlIGlkIFtEYXRhYmFzZU5h
bWVLZXldCiAvLwpAQCAtMTUzLDYgKzE1NCw4IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy
IEV4aXN0c0VudHJ5SW5kZXhJZCA9IDI7CiAKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIFNj
aGVtYVZlcnNpb25UeXBlQnl0ZSA9IDA7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBNYXhE
YXRhYmFzZUlkVHlwZUJ5dGUgPSAxOworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgRGF0YVZl
cnNpb25UeXBlQnl0ZSA9IDI7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBNYXhHbG9iYWxN
ZXRhRGF0YVNpbXBsZVR5cGVCeXRlID0gMzsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIERh
dGFiYXNlRnJlZUxpc3RUeXBlQnl0ZSA9IDEwMDsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy
IERhdGFiYXNlTmFtZVR5cGVCeXRlID0gMjAxOwogCkBAIC04NTgsNyArODYxLDcgQEAgaW50IGNv
bXBhcmUoY29uc3QgTGV2ZWxEQlNsaWNlJiBhLCBjb25zdCBMZXZlbERCU2xpY2UmIGIsIGJvb2wg
aW5kZXhLZXlzKQogICAgICAgICBpZiAoaW50IHggPSB0eXBlQnl0ZUEgLSB0eXBlQnl0ZUIpCiAg
ICAgICAgICAgICByZXR1cm4geDsKIAotICAgICAgICBpZiAodHlwZUJ5dGVBIDw9IDEpCisgICAg
ICAgIGlmICh0eXBlQnl0ZUEgPD0gTWF4R2xvYmFsTWV0YURhdGFTaW1wbGVUeXBlQnl0ZSkKICAg
ICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBpZiAodHlwZUJ5dGVBID09IERhdGFiYXNlRnJl
ZUxpc3RUeXBlQnl0ZSkKICAgICAgICAgICAgIHJldHVybiBjb21wYXJlPERhdGFiYXNlRnJlZUxp
c3RLZXk+KGEsIGIpOwpAQCAtMTA1MCw2ICsxMDUzLDE0IEBAIFZlY3RvcjxjaGFyPiBNYXhEYXRh
YmFzZUlkS2V5OjplbmNvZGUoKQogICAgIHJldHVybiByZXQ7CiB9CiAKK1ZlY3RvcjxjaGFyPiBE
YXRhVmVyc2lvbktleTo6ZW5jb2RlKCkKK3sKKyAgICBLZXlQcmVmaXggcHJlZml4KDAsIDAsIDAp
OworICAgIFZlY3RvcjxjaGFyPiByZXQgPSBwcmVmaXguZW5jb2RlKCk7CisgICAgcmV0LmFwcGVu
ZChlbmNvZGVCeXRlKERhdGFWZXJzaW9uVHlwZUJ5dGUpKTsKKyAgICByZXR1cm4gcmV0OworfQor
CiBEYXRhYmFzZUZyZWVMaXN0S2V5OjpEYXRhYmFzZUZyZWVMaXN0S2V5KCkKICAgICA6IG1fZGF0
YWJhc2VJZCgtMSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkxldmVsREJDb2RpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkxldmVsREJDb2RpbmcuaAppbmRleCAxYjE2NjZhZThkOWFjNzE2NTZiZjkwMjUzNjNmMGQy
ZmMwZTg1NTNmLi40ZTBkNjMyZGNjOTc3MjhiMWY0ZWMxN2FiNGI1NzBhNzJhNWViNzMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5n
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGlu
Zy5oCkBAIC0xMTEsNiArMTExLDExIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgVmVjdG9yPGNoYXI+
IGVuY29kZSgpOwogfTsKIAorY2xhc3MgRGF0YVZlcnNpb25LZXkgeworcHVibGljOgorICAgIHN0
YXRpYyBWZWN0b3I8Y2hhcj4gZW5jb2RlKCk7Cit9OworCiBjbGFzcyBEYXRhYmFzZUZyZWVMaXN0
S2V5IHsKIHB1YmxpYzoKICAgICBEYXRhYmFzZUZyZWVMaXN0S2V5KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCA0
NTgxMmJiMjExZmRjMTM1OGZjZjY5MmU3NjU5NmU0MDFjOTE1NjRjLi5hNDk2ZTQ2NGIxY2MyZTll
ZjIwMDZlMThmMmZmMWRmZjY0Yjk2ZmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTE5ODUsNCArMTk4NSw5IEBA
IGJvb2wgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpzZXJpYWxpemF0aW9uRGlkQ29tcGxldGVTdWNj
ZXNzZnVsbHkoU2VyaWFsaXphdGlvblJlCiAgICAgcmV0dXJuIChjb2RlID09IFN1Y2Nlc3NmdWxs
eUNvbXBsZXRlZCk7CiB9CiAKK3VpbnQzMl90IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6d2lyZUZv
cm1hdFZlcnNpb24oKQoreworICAgIHJldHVybiBDdXJyZW50VmVyc2lvbjsKK30KKwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaApp
bmRleCA4MzJiNWQ0YmY2ZDY1MDM0NTY1OGUxOWRhNzBjODJhZWYwN2JlZWMzLi43NzE4OTFiZDUy
Yzg3OGRmZWI1ZWM0ZTA5NzRmNWQ5ZjUzMjdkNTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaApAQCAtODMsNiArODMsOCBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB1bmRl
ZmluZWRWYWx1ZSgpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gYm9vbGVhblZhbHVlKGJvb2wgdmFsdWUpOwogCisgICAgc3RhdGljIHVpbnQzMl90IHdpcmVG
b3JtYXRWZXJzaW9uKCk7CisKICAgICBTdHJpbmcgdG9TdHJpbmcoKTsKICAgICAKICAgICBKU0M6
OkpTVmFsdWUgZGVzZXJpYWxpemUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgTWVzc2FnZVBvcnRBcnJheSosIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgPSBUaHJvd2luZyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcAppbmRleCA0YzMxMGQ4OTEyMjNjNWFhOGY2Yzc2ZjFjMWI0MzY1NmM4YjMzMTMyLi5j
ZTI4N2YwNTY4ZjgwNjc4NTVjOTFhNGVkOGJiMDcwYmNjMjYxNWE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTIz
NDYsNCArMjM0Niw5IEBAIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6flNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSgpCiAgICAgfQogfQogCit1aW50MzJfdCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OndpcmVG
b3JtYXRWZXJzaW9uKCkKK3sKKyAgICByZXR1cm4gV2ViQ29yZTo6d2lyZUZvcm1hdFZlcnNpb247
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggY2I2NjM4NGQ0MmI3OTIzYjU0
YWI3Y2JjODIzNTdkZjk4OTlmZjlmOC4uNjllYThkODMyMDY4YjZhNWExODcxNDhiZWNiNGU1Y2Iy
Y2YzNzhmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmgKQEAgLTY1LDYgKzY1LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gYm9vbGVhblZhbHVlKGJvb2wgdmFsdWUsIHY4
OjpJc29sYXRlKiA9IDApOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gbnVtYmVyVmFsdWUoZG91YmxlIHZhbHVlLCB2ODo6SXNvbGF0ZSogPSAwKTsKIAorICAg
IHN0YXRpYyB1aW50MzJfdCB3aXJlRm9ybWF0VmVyc2lvbigpOworCiAgICAgUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IHJlbGVhc2UoKTsKIAogICAgIFN0cmluZyB0b1dpcmVTdHJp
bmcoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175008</attachid>
            <date>2012-11-19 11:04:10 -0800</date>
            <delta_ts>2012-12-06 15:58:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102243-20121119110201.patch</filename>
            <type>text/plain</type>
            <size>10993</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MDQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWRhYzg2NmMwOGYyZGJi
MmQ2ODliZTJhZTE1Y2JiMGU1M2JmZTBiOC4uYzk5OTFiYmQ4NDRhNWQ0MTA0MzY3OTljMWIxODMy
YjJiOTk3OTBhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTExLTE0ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBDaGVj
ayBTU1YgdmVyc2lvbiB3aGVuIG9wZW5pbmcgZGF0YWJhc2UKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjI0MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuc3VyZSB0aGF0IHRoZSBkYXRhIGZvcm1hdCAo
U2VyaWFsaXplZFNjcmlwdFZhbHVlKSBpc24ndCAiZnJvbSB0aGUgZnV0dXJlIiB3aGVuIG9wZW5p
bmcKKyAgICAgICAgYSBiYWNraW5nIHN0b3JlLiBUcmVhdCBhbiB1bmtub3duIHZlcnNpb24gdGhl
IHNhbWUgYXMgYW4gdW5rbm93biBzY2hlbWEgdmVyc2lvbi4KKworICAgICAgICBGSVhNRTogQWRk
IHRlc3RzIGJlZm9yZSBsYW5kaW5nLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
QmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
aXNTY2hlbWFLbm93bik6IENoZWNrIGRhdGEgdmVyc2lvbiBhcyB3ZWxsLgorICAgICAgICAoV2Vi
Q29yZTo6c2V0VXBNZXRhZGF0YSk6IEVuc3VyZSBkYXRhIHZlcnNpb24gaXMgcmVjb3JkZWQ7IGJ1
bXAgc2NoZW1hIHZlcnNpb24uCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxE
QkNvZGluZy5jcHA6IEVuY29kaW5nIGZvciAiRGF0YVZlcnNpb24iIGdsb2JhbCBtZXRhZGF0YSBl
bnRyeS4KKyAgICAgICAgKElEQkxldmVsREJDb2RpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SURC
TGV2ZWxEQkNvZGluZzo6Y29tcGFyZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29k
aW5nOjpEYXRhVmVyc2lvbktleTo6ZW5jb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJMZXZlbERCQ29kaW5nLmg6CisgICAgICAgIChEYXRhVmVyc2lvbktleSk6CisgICAgICAg
IChJREJMZXZlbERCQ29kaW5nKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwOgorICAgICAgICAoU2VyaWFsaXplZFNjcmlwdFZhbHVlOjp3aXJlRm9ybWF0
VmVyc2lvbik6IE5ldyBtZXRob2QgKEpTQyBzaWRlKS4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
Ojp3aXJlRm9ybWF0VmVyc2lvbik6IE5ldyBtZXRob2QgKFY4IHNpZGUpLgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6Cisg
ICAgICAgIChTZXJpYWxpemVkU2NyaXB0VmFsdWUpOgorCiAyMDEyLTExLTE3ICBCYWxhenMgS2Vs
ZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KIAogICAgICAgICBbQ29vcmRpbmF0ZWQgR3JhcGhp
Y3NdIFJlc3VtZWQgYW5pbWF0aW9ucyBsZWF2ZSBhbiBvYnNvbGF0ZSBHcmFwaGljc0xheWVyQW5p
bWF0aW9uIGJlaGluZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMWVhM2M5NDQ0YTNmYTk4Mzc5YjljZjUwOWI4MGYz
N2ZjYjdlMDdjYS4uODUwNTc4N2M0NDAxNDJmZGQ1ZTIyNTUzNDNmOTFmOTcwNzNkNGFjNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3Rv
cmUuY3BwCkBAIC0xNTYsMzAgKzE1Niw1MCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBjb25zdCBj
aGFyKiBuYW1lKCkgY29uc3QgeyByZXR1cm4gImlkYl9jbXAxIjsgfQogfTsKIAotY29uc3QgaW50
NjRfdCBsYXRlc3RTY2hlbWFWZXJzaW9uID0gMTsKKy8vIDAgLSBJbml0aWFsIHZlcnNpb24uCisv
LyAxIC0gQWRkcyBVc2VySW50VmVyc2lvbiB0byBEYXRhYmFzZU1ldGFEYXRhLgorLy8gMiAtIEFk
ZHMgRGF0YVZlcnNpb24gdG8gdG8gZ2xvYmFsIG1ldGFkYXRhLgorY29uc3QgaW50NjRfdCBsYXRl
c3RTY2hlbWFWZXJzaW9uID0gMjsKIHN0YXRpYyBib29sIGlzU2NoZW1hS25vd24oTGV2ZWxEQkRh
dGFiYXNlKiBkYikKIHsKICAgICBpbnQ2NF90IHNjaGVtYVZlcnNpb24gPSAwOwotICAgIGNvbnN0
IFZlY3RvcjxjaGFyPiBtZXRhRGF0YUtleSA9IFNjaGVtYVZlcnNpb25LZXk6OmVuY29kZSgpOwot
ICAgIGlmICghZ2V0SW50KGRiLCBtZXRhRGF0YUtleSwgc2NoZW1hVmVyc2lvbikpCisgICAgaWYg
KCFnZXRJbnQoZGIsIFNjaGVtYVZlcnNpb25LZXk6OmVuY29kZSgpLCBzY2hlbWFWZXJzaW9uKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIHNjaGVtYVZlcnNpb24gPD0gbGF0ZXN0
U2NoZW1hVmVyc2lvbjsKKyAgICBpZiAoc2NoZW1hVmVyc2lvbiA+IGxhdGVzdFNjaGVtYVZlcnNp
b24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNvbnN0IHVpbnQzMl90IGxhdGVzdERh
dGFWZXJzaW9uID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjp3aXJlRm9ybWF0VmVyc2lvbigpOwor
ICAgIGludDY0X3QgZGF0YVZlcnNpb24gPSAwOworICAgIGlmICghZ2V0SW50KGRiLCBEYXRhVmVy
c2lvbktleTo6ZW5jb2RlKCksIGRhdGFWZXJzaW9uKSkKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgaWYgKGRhdGFWZXJzaW9uID4gbGF0ZXN0RGF0YVZlcnNpb24pCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBzZXRVcE1ldGFkYXRh
KExldmVsREJEYXRhYmFzZSogZGIsIGNvbnN0IFN0cmluZyYgb3JpZ2luKQogewotICAgIGNvbnN0
IFZlY3RvcjxjaGFyPiBtZXRhRGF0YUtleSA9IFNjaGVtYVZlcnNpb25LZXk6OmVuY29kZSgpOwor
ICAgIGNvbnN0IHVpbnQzMl90IGxhdGVzdERhdGFWZXJzaW9uID0gU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjp3aXJlRm9ybWF0VmVyc2lvbigpOworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBzY2hlbWFW
ZXJzaW9uS2V5ID0gU2NoZW1hVmVyc2lvbktleTo6ZW5jb2RlKCk7CisgICAgY29uc3QgVmVjdG9y
PGNoYXI+IGRhdGFWZXJzaW9uS2V5ID0gRGF0YVZlcnNpb25LZXk6OmVuY29kZSgpOworCiAgICAg
UmVmUHRyPExldmVsREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24gPSBMZXZlbERCVHJhbnNhY3Rp
b246OmNyZWF0ZShkYik7CiAKICAgICBpbnQ2NF90IHNjaGVtYVZlcnNpb24gPSAwOwotICAgIGlm
ICghZ2V0SW50KHRyYW5zYWN0aW9uLmdldCgpLCBtZXRhRGF0YUtleSwgc2NoZW1hVmVyc2lvbikp
IHsKKyAgICBpbnQ2NF90IGRhdGFWZXJzaW9uID0gMDsKKyAgICBpZiAoIWdldEludCh0cmFuc2Fj
dGlvbi5nZXQoKSwgc2NoZW1hVmVyc2lvbktleSwgc2NoZW1hVmVyc2lvbikpIHsKKyAgICAgICAg
Ly8gSW5pdGlhbGl6ZSBuZXcgYmFja2luZyBzdG9yZXMuCiAgICAgICAgIHNjaGVtYVZlcnNpb24g
PSBsYXRlc3RTY2hlbWFWZXJzaW9uOwotICAgICAgICBwdXRJbnQodHJhbnNhY3Rpb24uZ2V0KCks
IG1ldGFEYXRhS2V5LCBsYXRlc3RTY2hlbWFWZXJzaW9uKTsKKyAgICAgICAgcHV0SW50KHRyYW5z
YWN0aW9uLmdldCgpLCBzY2hlbWFWZXJzaW9uS2V5LCBzY2hlbWFWZXJzaW9uKTsKKyAgICAgICAg
ZGF0YVZlcnNpb24gPSBsYXRlc3REYXRhVmVyc2lvbjsKKyAgICAgICAgcHV0SW50KHRyYW5zYWN0
aW9uLmdldCgpLCBkYXRhVmVyc2lvbktleSwgZGF0YVZlcnNpb24pOwogICAgIH0gZWxzZSB7Cisg
ICAgICAgIC8vIFVwZ3JhZGUgb2xkIGJhY2tpbmcgc3RvcmVzLgogICAgICAgICBBU1NFUlQoc2No
ZW1hVmVyc2lvbiA8PSBsYXRlc3RTY2hlbWFWZXJzaW9uKTsKLSAgICAgICAgaWYgKCFzY2hlbWFW
ZXJzaW9uKSB7CisgICAgICAgIGlmIChzY2hlbWFWZXJzaW9uIDwgMSkgewogICAgICAgICAgICAg
c2NoZW1hVmVyc2lvbiA9IGxhdGVzdFNjaGVtYVZlcnNpb247Ci0gICAgICAgICAgICBwdXRJbnQo
dHJhbnNhY3Rpb24uZ2V0KCksIG1ldGFEYXRhS2V5LCBzY2hlbWFWZXJzaW9uKTsKKyAgICAgICAg
ICAgIHB1dEludCh0cmFuc2FjdGlvbi5nZXQoKSwgc2NoZW1hVmVyc2lvbktleSwgc2NoZW1hVmVy
c2lvbik7CiAgICAgICAgICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gc3RhcnRLZXkgPSBEYXRhYmFz
ZU5hbWVLZXk6OmVuY29kZU1pbktleUZvck9yaWdpbihvcmlnaW4pOwogICAgICAgICAgICAgY29u
c3QgVmVjdG9yPGNoYXI+IHN0b3BLZXkgPSBEYXRhYmFzZU5hbWVLZXk6OmVuY29kZVN0b3BLZXlG
b3JPcmlnaW4ob3JpZ2luKTsKICAgICAgICAgICAgIE93blB0cjxMZXZlbERCSXRlcmF0b3I+IGl0
ID0gZGItPmNyZWF0ZUl0ZXJhdG9yKCk7CkBAIC0xOTIsMTAgKzIxMiwyOCBAQCBzdGF0aWMgYm9v
bCBzZXRVcE1ldGFkYXRhKExldmVsREJEYXRhYmFzZSogZGIsIGNvbnN0IFN0cmluZyYgb3JpZ2lu
KQogICAgICAgICAgICAgICAgIFZlY3RvcjxjaGFyPiBpbnRWZXJzaW9uS2V5ID0gRGF0YWJhc2VN
ZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIERhdGFiYXNlTWV0YURhdGFLZXk6OlVzZXJJ
bnRWZXJzaW9uKTsKICAgICAgICAgICAgICAgICBwdXRWYXJJbnQodHJhbnNhY3Rpb24uZ2V0KCks
IGludFZlcnNpb25LZXksIElEQkRhdGFiYXNlTWV0YWRhdGE6OkRlZmF1bHRJbnRWZXJzaW9uKTsK
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNjaGVtYVZlcnNpb24gPSAxOworICAgICAgICB9
CisgICAgICAgIGlmIChzY2hlbWFWZXJzaW9uIDwgMikgeworICAgICAgICAgICAgZGF0YVZlcnNp
b24gPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OndpcmVGb3JtYXRWZXJzaW9uKCk7CisgICAgICAg
ICAgICBwdXRJbnQodHJhbnNhY3Rpb24uZ2V0KCksIGRhdGFWZXJzaW9uS2V5LCBkYXRhVmVyc2lv
bik7CisgICAgICAgICAgICBzY2hlbWFWZXJzaW9uID0gMjsKICAgICAgICAgfQogICAgIH0KIAor
ICAgIC8vIEFsbCBuZXcgdmFsdWVzIHdpbGwgYmUgd3JpdHRlbiB1c2luZyB0aGlzIHNlcmlhbGl6
YXRpb24gdmVyc2lvbi4KKyAgICBpZiAoIWdldEludCh0cmFuc2FjdGlvbi5nZXQoKSwgZGF0YVZl
cnNpb25LZXksIGRhdGFWZXJzaW9uKSkgeworICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVs
REJCYWNraW5nU3RvcmVSZWFkRXJyb3IpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICAgIGlmIChkYXRhVmVyc2lvbiA8IGxhdGVzdERhdGFWZXJzaW9uKSB7CisgICAgICAgIGRhdGFW
ZXJzaW9uID0gbGF0ZXN0RGF0YVZlcnNpb247CisgICAgICAgIHB1dEludCh0cmFuc2FjdGlvbi5n
ZXQoKSwgZGF0YVZlcnNpb25LZXksIGRhdGFWZXJzaW9uKTsKKyAgICB9CisKICAgICBBU1NFUlQo
c2NoZW1hVmVyc2lvbiA9PSBsYXRlc3RTY2hlbWFWZXJzaW9uKTsKKyAgICBBU1NFUlQoZGF0YVZl
cnNpb24gPT0gbGF0ZXN0RGF0YVZlcnNpb24pOworCiAgICAgaWYgKCF0cmFuc2FjdGlvbi0+Y29t
bWl0KCkpIHsKICAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlV3Jp
dGVFcnJvcik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAKaW5kZXggN2FmZmMyOGVi
MzNhYzM5ODE4ZDM1ZDhiNTRkYjdlODAzNDNkMmU2Ny4uMWRhZWRiMGFlNzhiZmIwN2VlZTc3MDNk
ODhiYjk4MWQ0ODFhZDViYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAKQEAgLTQ3LDggKzQ3LDkgQEAKIC8vCiAvLyBH
bG9iYWwgbWV0YS1kYXRhIGhhdmUga2V5cyB3aXRoIHByZWZpeCAoMCwwLDApLCBmb2xsb3dlZCBi
eSBhIHR5cGUgYnl0ZToKIC8vCi0vLyAgICAgPDAsIDAsIDAsIDA+ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0+IEluZGV4ZWREQi9MZXZlbERCIHNjaGVtYSB2ZXJz
aW9uICgwIGZvciBub3cpIFtTY2hlbWFWZXJzaW9uS2V5XQorLy8gICAgIDwwLCAwLCAwLCAwPiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiBJbmRleGVkREIvTGV2
ZWxEQiBzY2hlbWEgdmVyc2lvbiBbU2NoZW1hVmVyc2lvbktleV0KIC8vICAgICA8MCwgMCwgMCwg
MT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gVGhlIG1heGlt
dW0gZGF0YWJhc2UgaWQgZXZlciBhbGxvY2F0ZWQgW01heERhdGFiYXNlSWRLZXldCisvLyAgICAg
PDAsIDAsIDAsIDI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSB2ZXJzaW9uIFtEYXRhVmVyc2lvbktleV0KIC8vICAgICA8
MCwgMCwgMCwgMTAwLCBkYXRhYmFzZSBpZD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4g
RXhpc3RlbmNlIGltcGxpZXMgdGhlIGRhdGFiYXNlIGlkIGlzIGluIHRoZSBmcmVlIGxpc3QgW0Rh
dGFiYXNlRnJlZUxpc3RLZXldCiAvLyAgICAgPDAsIDAsIDAsIDIwMSwgdXRmMTYgb3JpZ2luIG5h
bWUsIHV0ZjE2IGRhdGFiYXNlIG5hbWU+ID0+IERhdGFiYXNlIGlkIFtEYXRhYmFzZU5hbWVLZXld
CiAvLwpAQCAtMTU0LDcgKzE1NSw4IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIEV4aXN0
c0VudHJ5SW5kZXhJZCA9IDI7CiAKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIFNjaGVtYVZl
cnNpb25UeXBlQnl0ZSA9IDA7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBNYXhEYXRhYmFz
ZUlkVHlwZUJ5dGUgPSAxOwotc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgTWF4U2ltcGxlR2xv
YmFsTWV0YURhdGFUeXBlQnl0ZSA9IDI7IC8vIEluc2VydCBiZWZvcmUgdGhpcyBhbmQgaW5jcmVt
ZW50Lgorc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgRGF0YVZlcnNpb25UeXBlQnl0ZSA9IDI7
CitzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBNYXhTaW1wbGVHbG9iYWxNZXRhRGF0YVR5cGVC
eXRlID0gMzsgLy8gSW5zZXJ0IGJlZm9yZSB0aGlzIGFuZCBpbmNyZW1lbnQuCiBzdGF0aWMgY29u
c3QgdW5zaWduZWQgY2hhciBEYXRhYmFzZUZyZWVMaXN0VHlwZUJ5dGUgPSAxMDA7CiBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgY2hhciBEYXRhYmFzZU5hbWVUeXBlQnl0ZSA9IDIwMTsKIApAQCAtMTA0
Nyw2ICsxMDQ5LDE0IEBAIFZlY3RvcjxjaGFyPiBNYXhEYXRhYmFzZUlkS2V5OjplbmNvZGUoKQog
ICAgIHJldHVybiByZXQ7CiB9CiAKK1ZlY3RvcjxjaGFyPiBEYXRhVmVyc2lvbktleTo6ZW5jb2Rl
KCkKK3sKKyAgICBLZXlQcmVmaXggcHJlZml4KDAsIDAsIDApOworICAgIFZlY3RvcjxjaGFyPiBy
ZXQgPSBwcmVmaXguZW5jb2RlKCk7CisgICAgcmV0LmFwcGVuZChlbmNvZGVCeXRlKERhdGFWZXJz
aW9uVHlwZUJ5dGUpKTsKKyAgICByZXR1cm4gcmV0OworfQorCiBEYXRhYmFzZUZyZWVMaXN0S2V5
OjpEYXRhYmFzZUZyZWVMaXN0S2V5KCkKICAgICA6IG1fZGF0YWJhc2VJZCgtMSkKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2Rpbmcu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuaApp
bmRleCA3OWY4NzYxNzAwNGIwYzZmZDY5MmZiMzhmZjI2YjRhNTkxOGY0YjFjLi4wMGY3Y2RiMDE1
NTkxZmFiYmY1OWI4NWNhZDkxNjFhMTlmN2JmODk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5oCkBAIC0xMTEsNiArMTExLDEx
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgVmVjdG9yPGNoYXI+IGVuY29kZSgpOwogfTsKIAorY2xh
c3MgRGF0YVZlcnNpb25LZXkgeworcHVibGljOgorICAgIHN0YXRpYyBWZWN0b3I8Y2hhcj4gZW5j
b2RlKCk7Cit9OworCiBjbGFzcyBEYXRhYmFzZUZyZWVMaXN0S2V5IHsKIHB1YmxpYzoKICAgICBE
YXRhYmFzZUZyZWVMaXN0S2V5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCA0NTgxMmJiMjExZmRjMTM1OGZjZjY5
MmU3NjU5NmU0MDFjOTE1NjRjLi5hNDk2ZTQ2NGIxY2MyZTllZjIwMDZlMThmMmZmMWRmZjY0Yjk2
ZmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5jcHAKQEAgLTE5ODUsNCArMTk4NSw5IEBAIGJvb2wgU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjpzZXJpYWxpemF0aW9uRGlkQ29tcGxldGVTdWNjZXNzZnVsbHkoU2VyaWFsaXphdGlv
blJlCiAgICAgcmV0dXJuIChjb2RlID09IFN1Y2Nlc3NmdWxseUNvbXBsZXRlZCk7CiB9CiAKK3Vp
bnQzMl90IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6d2lyZUZvcm1hdFZlcnNpb24oKQoreworICAg
IHJldHVybiBDdXJyZW50VmVyc2lvbjsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAppbmRleCBkOTRhODY3NTlkMjg5OWRl
OGI2YWQyNzYxNGFhMTU2YWQwZmMzYmY1Li4wNjVkNGU1ZWQzZGU2NjkyNzE0M2NjY2I5YWMxMDA5
ZmVkYzVhMmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuaApAQCAtODQsNiArODQsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB1bmRlZmluZWRWYWx1ZSgpOwogICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gYm9vbGVhblZhbHVlKGJvb2wg
dmFsdWUpOwogCisgICAgc3RhdGljIHVpbnQzMl90IHdpcmVGb3JtYXRWZXJzaW9uKCk7CisKICAg
ICBTdHJpbmcgdG9TdHJpbmcoKTsKICAgICBTdHJpbmcgdG9XaXJlU3RyaW5nKCkgeyByZXR1cm4g
dG9TdHJpbmcoKTsgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggYjYxOTEwNTg2NTAwZDc5MzNhMjNhZWI5
ZTNkNTU0YTNhOTJmMGMxYi4uNGM2YTQ0NDQ1YTBlYjlhYzRlNWVkZTQzNGIwNThlNGUxOGM5OTBm
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwCkBAIC0yMzUyLDQgKzIzNTIsOSBAQCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6
On5TZXJpYWxpemVkU2NyaXB0VmFsdWUoKQogICAgIH0KIH0KIAordWludDMyX3QgU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjp3aXJlRm9ybWF0VmVyc2lvbigpCit7CisgICAgcmV0dXJuIFdlYkNvcmU6
OndpcmVGb3JtYXRWZXJzaW9uOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4
IGNiNjYzODRkNDJiNzkyM2I1NGFiN2NiYzgyMzU3ZGY5ODk5ZmY5ZjguLjY5ZWE4ZDgzMjA2OGI2
YTVhMTg3MTQ4YmVjYjRlNWNiMmNmMzc4ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC02NSw2ICs2NSw4IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGJvb2xlYW5W
YWx1ZShib29sIHZhbHVlLCB2ODo6SXNvbGF0ZSogPSAwKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG51bWJlclZhbHVlKGRvdWJsZSB2YWx1ZSwgdjg6Oklz
b2xhdGUqID0gMCk7CiAKKyAgICBzdGF0aWMgdWludDMyX3Qgd2lyZUZvcm1hdFZlcnNpb24oKTsK
KwogICAgIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiByZWxlYXNlKCk7CiAKICAg
ICBTdHJpbmcgdG9XaXJlU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178098</attachid>
            <date>2012-12-06 15:58:10 -0800</date>
            <delta_ts>2012-12-06 16:41:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102243-20121206155535.patch</filename>
            <type>text/plain</type>
            <size>11102</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2ODM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzVmYmRlNWM0ZWZkMjNi
OGFiMmJjMzRkZTE1ODk3NTU3OTExZGM1Mi4uMzg3MWUxNzk0YzVkYzI4OGUyNGY5ODExYTk1ZjIx
NmIwNzg1OTcxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTExLTE0ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBDaGVj
ayBTU1YgdmVyc2lvbiB3aGVuIG9wZW5pbmcgZGF0YWJhc2UKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjI0MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuc3VyZSB0aGF0IHRoZSBkYXRhIGZvcm1hdCAo
U2VyaWFsaXplZFNjcmlwdFZhbHVlKSBpc24ndCAiZnJvbSB0aGUgZnV0dXJlIiB3aGVuIG9wZW5p
bmcKKyAgICAgICAgYSBiYWNraW5nIHN0b3JlLiBUcmVhdCBhbiB1bmtub3duIHZlcnNpb24gdGhl
IHNhbWUgYXMgYW4gdW5rbm93biBzY2hlbWEgdmVyc2lvbi4KKworICAgICAgICBDaHJvbWl1bS1z
aWRlIHRlc3QgYXQgaHR0cHM6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9yZy8xMTQ3MDAxMy8gKHNh
bWUgYXMgb3RoZXIgc2NoZW1hIHZlcnNpb24gdGVzdHMpCisKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjppc1NjaGVtYUtub3duKTogQ2hlY2sgZGF0YSB2ZXJzaW9uIGFzIHdlbGwuCisg
ICAgICAgIChXZWJDb3JlOjpzZXRVcE1ldGFkYXRhKTogRW5zdXJlIGRhdGEgdmVyc2lvbiBpcyBy
ZWNvcmRlZDsgYnVtcCBzY2hlbWEgdmVyc2lvbi4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJMZXZlbERCQ29kaW5nLmNwcDogRW5jb2RpbmcgZm9yICJEYXRhVmVyc2lvbiIgZ2xvYmFs
IG1ldGFkYXRhIGVudHJ5LgorICAgICAgICAoSURCTGV2ZWxEQkNvZGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJMZXZlbERCQ29kaW5nOjpjb21wYXJlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkxldmVsREJDb2Rpbmc6OkRhdGFWZXJzaW9uS2V5OjplbmNvZGUpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuaDoKKyAgICAgICAgKERhdGFWZXJzaW9uS2V5
KToKKyAgICAgICAgKElEQkxldmVsREJDb2RpbmcpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OndpcmVGb3JtYXRWZXJzaW9uKTogTmV3IG1ldGhvZCAoSlNDIHNpZGUpLgorICAgICAgICAqIGJp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OndpcmVGb3JtYXRWZXJzaW9uKTogTmV3IG1ldGhvZCAoVjggc2lkZSkuCisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuaDoKKyAgICAgICAgKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk6CisKIDIwMTItMTItMDYg
IFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEludGVy
bmFscy5nZXRFbGVtZW50QnlJZEluU2hhZG93Um9vdCBpcyBub25zZW5zZSBub3cuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNwcApp
bmRleCBiNzYxNTdlNjRlNjc1ZDMxYmFjNTA3Zjg4ZjgyYzVmOGRlMjgwNDUzLi41NjgzMDQ5MmVk
ZGNmNzg0MTZhODc5ZmYyMDYwZjhkZWZlZTI5MzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTE4MCwzMCArMTgw
LDUxIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdCB7IHJl
dHVybiAiaWRiX2NtcDEiOyB9CiB9OwogCi1jb25zdCBpbnQ2NF90IGxhdGVzdFNjaGVtYVZlcnNp
b24gPSAxOworLy8gMCAtIEluaXRpYWwgdmVyc2lvbi4KKy8vIDEgLSBBZGRzIFVzZXJJbnRWZXJz
aW9uIHRvIERhdGFiYXNlTWV0YURhdGEuCisvLyAyIC0gQWRkcyBEYXRhVmVyc2lvbiB0byB0byBn
bG9iYWwgbWV0YWRhdGEuCitjb25zdCBpbnQ2NF90IGxhdGVzdFNjaGVtYVZlcnNpb24gPSAyOwog
c3RhdGljIGJvb2wgaXNTY2hlbWFLbm93bihMZXZlbERCRGF0YWJhc2UqIGRiKQogewogICAgIGlu
dDY0X3Qgc2NoZW1hVmVyc2lvbiA9IDA7Ci0gICAgY29uc3QgVmVjdG9yPGNoYXI+IG1ldGFEYXRh
S2V5ID0gU2NoZW1hVmVyc2lvbktleTo6ZW5jb2RlKCk7Ci0gICAgaWYgKCFnZXRJbnQoZGIsIG1l
dGFEYXRhS2V5LCBzY2hlbWFWZXJzaW9uKSkKKyAgICBpZiAoIWdldEludChkYiwgU2NoZW1hVmVy
c2lvbktleTo6ZW5jb2RlKCksIHNjaGVtYVZlcnNpb24pKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICByZXR1cm4gc2NoZW1hVmVyc2lvbiA8PSBsYXRlc3RTY2hlbWFWZXJzaW9uOworICAgIGlm
IChzY2hlbWFWZXJzaW9uID4gbGF0ZXN0U2NoZW1hVmVyc2lvbikKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgY29uc3QgdWludDMyX3QgbGF0ZXN0RGF0YVZlcnNpb24gPSBTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OndpcmVGb3JtYXRWZXJzaW9uKCk7CisgICAgaW50NjRfdCBkYXRhVmVyc2lv
biA9IDA7CisgICAgaWYgKCFnZXRJbnQoZGIsIERhdGFWZXJzaW9uS2V5OjplbmNvZGUoKSwgZGF0
YVZlcnNpb24pKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChkYXRhVmVyc2lvbiA+
IGxhdGVzdERhdGFWZXJzaW9uKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgc2V0VXBNZXRhZGF0YShMZXZlbERCRGF0YWJhc2UqIGRi
LCBjb25zdCBTdHJpbmcmIG9yaWdpbikKIHsKLSAgICBjb25zdCBWZWN0b3I8Y2hhcj4gbWV0YURh
dGFLZXkgPSBTY2hlbWFWZXJzaW9uS2V5OjplbmNvZGUoKTsKKyAgICBjb25zdCB1aW50MzJfdCBs
YXRlc3REYXRhVmVyc2lvbiA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6d2lyZUZvcm1hdFZlcnNp
b24oKTsKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4gc2NoZW1hVmVyc2lvbktleSA9IFNjaGVtYVZl
cnNpb25LZXk6OmVuY29kZSgpOworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBkYXRhVmVyc2lvbktl
eSA9IERhdGFWZXJzaW9uS2V5OjplbmNvZGUoKTsKKwogICAgIFJlZlB0cjxMZXZlbERCVHJhbnNh
Y3Rpb24+IHRyYW5zYWN0aW9uID0gTGV2ZWxEQlRyYW5zYWN0aW9uOjpjcmVhdGUoZGIpOwogCiAg
ICAgaW50NjRfdCBzY2hlbWFWZXJzaW9uID0gMDsKLSAgICBpZiAoIWdldEludCh0cmFuc2FjdGlv
bi5nZXQoKSwgbWV0YURhdGFLZXksIHNjaGVtYVZlcnNpb24pKSB7CisgICAgaW50NjRfdCBkYXRh
VmVyc2lvbiA9IDA7CisgICAgaWYgKCFnZXRJbnQodHJhbnNhY3Rpb24uZ2V0KCksIHNjaGVtYVZl
cnNpb25LZXksIHNjaGVtYVZlcnNpb24pKSB7CisgICAgICAgIC8vIEluaXRpYWxpemUgbmV3IGJh
Y2tpbmcgc3RvcmUuCiAgICAgICAgIHNjaGVtYVZlcnNpb24gPSBsYXRlc3RTY2hlbWFWZXJzaW9u
OwotICAgICAgICBwdXRJbnQodHJhbnNhY3Rpb24uZ2V0KCksIG1ldGFEYXRhS2V5LCBsYXRlc3RT
Y2hlbWFWZXJzaW9uKTsKKyAgICAgICAgcHV0SW50KHRyYW5zYWN0aW9uLmdldCgpLCBzY2hlbWFW
ZXJzaW9uS2V5LCBzY2hlbWFWZXJzaW9uKTsKKyAgICAgICAgZGF0YVZlcnNpb24gPSBsYXRlc3RE
YXRhVmVyc2lvbjsKKyAgICAgICAgcHV0SW50KHRyYW5zYWN0aW9uLmdldCgpLCBkYXRhVmVyc2lv
bktleSwgZGF0YVZlcnNpb24pOwogICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFVwZ3JhZGUgb2xk
IGJhY2tpbmcgc3RvcmUuCiAgICAgICAgIEFTU0VSVChzY2hlbWFWZXJzaW9uIDw9IGxhdGVzdFNj
aGVtYVZlcnNpb24pOwotICAgICAgICBpZiAoIXNjaGVtYVZlcnNpb24pIHsKKyAgICAgICAgaWYg
KHNjaGVtYVZlcnNpb24gPCAxKSB7CiAgICAgICAgICAgICBzY2hlbWFWZXJzaW9uID0gbGF0ZXN0
U2NoZW1hVmVyc2lvbjsKLSAgICAgICAgICAgIHB1dEludCh0cmFuc2FjdGlvbi5nZXQoKSwgbWV0
YURhdGFLZXksIHNjaGVtYVZlcnNpb24pOworICAgICAgICAgICAgcHV0SW50KHRyYW5zYWN0aW9u
LmdldCgpLCBzY2hlbWFWZXJzaW9uS2V5LCBzY2hlbWFWZXJzaW9uKTsKICAgICAgICAgICAgIGNv
bnN0IFZlY3RvcjxjaGFyPiBzdGFydEtleSA9IERhdGFiYXNlTmFtZUtleTo6ZW5jb2RlTWluS2V5
Rm9yT3JpZ2luKG9yaWdpbik7CiAgICAgICAgICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gc3RvcEtl
eSA9IERhdGFiYXNlTmFtZUtleTo6ZW5jb2RlU3RvcEtleUZvck9yaWdpbihvcmlnaW4pOwogICAg
ICAgICAgICAgT3duUHRyPExldmVsREJJdGVyYXRvcj4gaXQgPSBkYi0+Y3JlYXRlSXRlcmF0b3Io
KTsKQEAgLTIxNiwxMCArMjM3LDI4IEBAIHN0YXRpYyBib29sIHNldFVwTWV0YWRhdGEoTGV2ZWxE
QkRhdGFiYXNlKiBkYiwgY29uc3QgU3RyaW5nJiBvcmlnaW4pCiAgICAgICAgICAgICAgICAgVmVj
dG9yPGNoYXI+IGludFZlcnNpb25LZXkgPSBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUoZGF0
YWJhc2VJZCwgRGF0YWJhc2VNZXRhRGF0YUtleTo6VXNlckludFZlcnNpb24pOwogICAgICAgICAg
ICAgICAgIHB1dFZhckludCh0cmFuc2FjdGlvbi5nZXQoKSwgaW50VmVyc2lvbktleSwgSURCRGF0
YWJhc2VNZXRhZGF0YTo6RGVmYXVsdEludFZlcnNpb24pOwogICAgICAgICAgICAgfQorICAgICAg
ICAgICAgc2NoZW1hVmVyc2lvbiA9IDE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNjaGVtYVZl
cnNpb24gPCAyKSB7CisgICAgICAgICAgICBkYXRhVmVyc2lvbiA9IFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6d2lyZUZvcm1hdFZlcnNpb24oKTsKKyAgICAgICAgICAgIHB1dEludCh0cmFuc2FjdGlv
bi5nZXQoKSwgZGF0YVZlcnNpb25LZXksIGRhdGFWZXJzaW9uKTsKKyAgICAgICAgICAgIHNjaGVt
YVZlcnNpb24gPSAyOwogICAgICAgICB9CiAgICAgfQogCisgICAgLy8gQWxsIG5ldyB2YWx1ZXMg
d2lsbCBiZSB3cml0dGVuIHVzaW5nIHRoaXMgc2VyaWFsaXphdGlvbiB2ZXJzaW9uLgorICAgIGlm
ICghZ2V0SW50KHRyYW5zYWN0aW9uLmdldCgpLCBkYXRhVmVyc2lvbktleSwgZGF0YVZlcnNpb24p
KSB7CisgICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJv
cik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaWYgKGRhdGFWZXJzaW9uIDwg
bGF0ZXN0RGF0YVZlcnNpb24pIHsKKyAgICAgICAgZGF0YVZlcnNpb24gPSBsYXRlc3REYXRhVmVy
c2lvbjsKKyAgICAgICAgcHV0SW50KHRyYW5zYWN0aW9uLmdldCgpLCBkYXRhVmVyc2lvbktleSwg
ZGF0YVZlcnNpb24pOworICAgIH0KKwogICAgIEFTU0VSVChzY2hlbWFWZXJzaW9uID09IGxhdGVz
dFNjaGVtYVZlcnNpb24pOworICAgIEFTU0VSVChkYXRhVmVyc2lvbiA9PSBsYXRlc3REYXRhVmVy
c2lvbik7CisKICAgICBpZiAoIXRyYW5zYWN0aW9uLT5jb21taXQoKSkgewogICAgICAgICBJbnRl
cm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVXcml0ZUVycm9yKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCTGV2ZWxEQkNvZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJMZXZlbERCQ29kaW5nLmNwcAppbmRleCA3YWZmYzI4ZWIzM2FjMzk4MThkMzVkOGI1NGRiN2U4
MDM0M2QyZTY3Li4xZGFlZGIwYWU3OGJmYjA3ZWVlNzcwM2Q4OGJiOTgxZDQ4MWFkNWJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5n
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29k
aW5nLmNwcApAQCAtNDcsOCArNDcsOSBAQAogLy8KIC8vIEdsb2JhbCBtZXRhLWRhdGEgaGF2ZSBr
ZXlzIHdpdGggcHJlZml4ICgwLDAsMCksIGZvbGxvd2VkIGJ5IGEgdHlwZSBieXRlOgogLy8KLS8v
ICAgICA8MCwgMCwgMCwgMD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPT4gSW5kZXhlZERCL0xldmVsREIgc2NoZW1hIHZlcnNpb24gKDAgZm9yIG5vdykgW1NjaGVt
YVZlcnNpb25LZXldCisvLyAgICAgPDAsIDAsIDAsIDA+ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0+IEluZGV4ZWREQi9MZXZlbERCIHNjaGVtYSB2ZXJzaW9uIFtT
Y2hlbWFWZXJzaW9uS2V5XQogLy8gICAgIDwwLCAwLCAwLCAxPiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9PiBUaGUgbWF4aW11bSBkYXRhYmFzZSBpZCBldmVyIGFs
bG9jYXRlZCBbTWF4RGF0YWJhc2VJZEtleV0KKy8vICAgICA8MCwgMCwgMCwgMj4gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gU2VyaWFsaXplZFNjcmlwdFZhbHVl
IHZlcnNpb24gW0RhdGFWZXJzaW9uS2V5XQogLy8gICAgIDwwLCAwLCAwLCAxMDAsIGRhdGFiYXNl
IGlkPiAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiBFeGlzdGVuY2UgaW1wbGllcyB0aGUg
ZGF0YWJhc2UgaWQgaXMgaW4gdGhlIGZyZWUgbGlzdCBbRGF0YWJhc2VGcmVlTGlzdEtleV0KIC8v
ICAgICA8MCwgMCwgMCwgMjAxLCB1dGYxNiBvcmlnaW4gbmFtZSwgdXRmMTYgZGF0YWJhc2UgbmFt
ZT4gPT4gRGF0YWJhc2UgaWQgW0RhdGFiYXNlTmFtZUtleV0KIC8vCkBAIC0xNTQsNyArMTU1LDgg
QEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgRXhpc3RzRW50cnlJbmRleElkID0gMjsKIAog
c3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgU2NoZW1hVmVyc2lvblR5cGVCeXRlID0gMDsKIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIE1heERhdGFiYXNlSWRUeXBlQnl0ZSA9IDE7Ci1zdGF0
aWMgY29uc3QgdW5zaWduZWQgY2hhciBNYXhTaW1wbGVHbG9iYWxNZXRhRGF0YVR5cGVCeXRlID0g
MjsgLy8gSW5zZXJ0IGJlZm9yZSB0aGlzIGFuZCBpbmNyZW1lbnQuCitzdGF0aWMgY29uc3QgdW5z
aWduZWQgY2hhciBEYXRhVmVyc2lvblR5cGVCeXRlID0gMjsKK3N0YXRpYyBjb25zdCB1bnNpZ25l
ZCBjaGFyIE1heFNpbXBsZUdsb2JhbE1ldGFEYXRhVHlwZUJ5dGUgPSAzOyAvLyBJbnNlcnQgYmVm
b3JlIHRoaXMgYW5kIGluY3JlbWVudC4KIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIERhdGFi
YXNlRnJlZUxpc3RUeXBlQnl0ZSA9IDEwMDsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIERh
dGFiYXNlTmFtZVR5cGVCeXRlID0gMjAxOwogCkBAIC0xMDQ3LDYgKzEwNDksMTQgQEAgVmVjdG9y
PGNoYXI+IE1heERhdGFiYXNlSWRLZXk6OmVuY29kZSgpCiAgICAgcmV0dXJuIHJldDsKIH0KIAor
VmVjdG9yPGNoYXI+IERhdGFWZXJzaW9uS2V5OjplbmNvZGUoKQoreworICAgIEtleVByZWZpeCBw
cmVmaXgoMCwgMCwgMCk7CisgICAgVmVjdG9yPGNoYXI+IHJldCA9IHByZWZpeC5lbmNvZGUoKTsK
KyAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoRGF0YVZlcnNpb25UeXBlQnl0ZSkpOworICAgIHJl
dHVybiByZXQ7Cit9CisKIERhdGFiYXNlRnJlZUxpc3RLZXk6OkRhdGFiYXNlRnJlZUxpc3RLZXko
KQogICAgIDogbV9kYXRhYmFzZUlkKC0xKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5oCmluZGV4IDc5Zjg3NjE3MDA0YjBjNmZk
NjkyZmIzOGZmMjZiNGE1OTE4ZjRiMWMuLjAwZjdjZGIwMTU1OTFmYWJiZjU5Yjg1Y2FkOTE2MWEx
OWY3YmY4OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkxldmVsREJDb2RpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJMZXZlbERCQ29kaW5nLmgKQEAgLTExMSw2ICsxMTEsMTEgQEAgcHVibGljOgogICAgIHN0YXRp
YyBWZWN0b3I8Y2hhcj4gZW5jb2RlKCk7CiB9OwogCitjbGFzcyBEYXRhVmVyc2lvbktleSB7Citw
dWJsaWM6CisgICAgc3RhdGljIFZlY3RvcjxjaGFyPiBlbmNvZGUoKTsKK307CisKIGNsYXNzIERh
dGFiYXNlRnJlZUxpc3RLZXkgewogcHVibGljOgogICAgIERhdGFiYXNlRnJlZUxpc3RLZXkoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwCmluZGV4IDdkYzlhZWQwYjU4MjIyMTYyOTkyNmMxOTI0YzQ1ZjNkZTM4NmEyMDAuLjhh
MDI4NDY5M2U5YWRjZTA1YzQyMTQ3ZTkxMWFhMzI4Mjc5M2YyM2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtMTk4
NSw0ICsxOTg1LDkgQEAgYm9vbCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OnNlcmlhbGl6YXRpb25E
aWRDb21wbGV0ZVN1Y2Nlc3NmdWxseShTZXJpYWxpemF0aW9uUmUKICAgICByZXR1cm4gKGNvZGUg
PT0gU3VjY2Vzc2Z1bGx5Q29tcGxldGVkKTsKIH0KIAordWludDMyX3QgU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjp3aXJlRm9ybWF0VmVyc2lvbigpCit7CisgICAgcmV0dXJuIEN1cnJlbnRWZXJzaW9u
OworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oCmluZGV4IGVjY2E4MjA2NzBlNTdkMGEzNjY1NWJmN2U2YWEyZTFjZDA3ZTEy
NWUuLjgwOTE4NTNlOWMyMmZkNTliN2U0YjNmMDZlNzBlNDU1NzNhNmRhYTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC04
Myw2ICs4Myw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IHVuZGVmaW5lZFZhbHVlKCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBib29sZWFuVmFsdWUoYm9vbCB2YWx1ZSk7CiAKKyAgICBzdGF0aWMg
dWludDMyX3Qgd2lyZUZvcm1hdFZlcnNpb24oKTsKKwogICAgIFN0cmluZyB0b1N0cmluZygpOwog
ICAgIAogICAgIEpTQzo6SlNWYWx1ZSBkZXNlcmlhbGl6ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBNZXNzYWdlUG9ydEFycmF5KiwgU2VyaWFsaXphdGlvbkVycm9yTW9k
ZSA9IFRocm93aW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDYyYTA0OGFjMWE2YWY4OTQxM2Y5ODg5YzEwMTYy
NGE4YmJjMTA3NjkuLjkxZjhlZjBjMDEzNmVjZjc2YmIyY2NmZTMzMjY5OTAxOTMwNjc1ZTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcApAQCAtMjQ0OSw0ICsyNDQ5LDkgQEAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjp+U2Vy
aWFsaXplZFNjcmlwdFZhbHVlKCkKICAgICB9CiB9CiAKK3VpbnQzMl90IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6d2lyZUZvcm1hdFZlcnNpb24oKQoreworICAgIHJldHVybiBXZWJDb3JlOjp3aXJl
Rm9ybWF0VmVyc2lvbjsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAppbmRleCBjYjY2
Mzg0ZDQyYjc5MjNiNTRhYjdjYmM4MjM1N2RmOTg5OWZmOWY4Li42OWVhOGQ4MzIwNjhiNmE1YTE4
NzE0OGJlY2I0ZTVjYjJjZjM3OGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaApAQCAtNjUsNiArNjUsOCBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBib29sZWFuVmFsdWUo
Ym9vbCB2YWx1ZSwgdjg6Oklzb2xhdGUqID0gMCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBudW1iZXJWYWx1ZShkb3VibGUgdmFsdWUsIHY4OjpJc29sYXRl
KiA9IDApOwogCisgICAgc3RhdGljIHVpbnQzMl90IHdpcmVGb3JtYXRWZXJzaW9uKCk7CisKICAg
ICBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gcmVsZWFzZSgpOwogCiAgICAgU3Ry
aW5nIHRvV2lyZVN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178107</attachid>
            <date>2012-12-06 16:41:27 -0800</date>
            <delta_ts>2012-12-07 09:53:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102243-20121206163852.patch</filename>
            <type>text/plain</type>
            <size>11382</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2ODM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzVmYmRlNWM0ZWZkMjNi
OGFiMmJjMzRkZTE1ODk3NTU3OTExZGM1Mi4uMzg3MWUxNzk0YzVkYzI4OGUyNGY5ODExYTk1ZjIx
NmIwNzg1OTcxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTExLTE0ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBDaGVj
ayBTU1YgdmVyc2lvbiB3aGVuIG9wZW5pbmcgZGF0YWJhc2UKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjI0MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuc3VyZSB0aGF0IHRoZSBkYXRhIGZvcm1hdCAo
U2VyaWFsaXplZFNjcmlwdFZhbHVlKSBpc24ndCAiZnJvbSB0aGUgZnV0dXJlIiB3aGVuIG9wZW5p
bmcKKyAgICAgICAgYSBiYWNraW5nIHN0b3JlLiBUcmVhdCBhbiB1bmtub3duIHZlcnNpb24gdGhl
IHNhbWUgYXMgYW4gdW5rbm93biBzY2hlbWEgdmVyc2lvbi4KKworICAgICAgICBDaHJvbWl1bS1z
aWRlIHRlc3QgYXQgaHR0cHM6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9yZy8xMTQ3MDAxMy8gKHNh
bWUgYXMgb3RoZXIgc2NoZW1hIHZlcnNpb24gdGVzdHMpCisKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjppc1NjaGVtYUtub3duKTogQ2hlY2sgZGF0YSB2ZXJzaW9uIGFzIHdlbGwuCisg
ICAgICAgIChXZWJDb3JlOjpzZXRVcE1ldGFkYXRhKTogRW5zdXJlIGRhdGEgdmVyc2lvbiBpcyBy
ZWNvcmRlZDsgYnVtcCBzY2hlbWEgdmVyc2lvbi4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJMZXZlbERCQ29kaW5nLmNwcDogRW5jb2RpbmcgZm9yICJEYXRhVmVyc2lvbiIgZ2xvYmFs
IG1ldGFkYXRhIGVudHJ5LgorICAgICAgICAoSURCTGV2ZWxEQkNvZGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJMZXZlbERCQ29kaW5nOjpjb21wYXJlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkxldmVsREJDb2Rpbmc6OkRhdGFWZXJzaW9uS2V5OjplbmNvZGUpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuaDoKKyAgICAgICAgKERhdGFWZXJzaW9uS2V5
KToKKyAgICAgICAgKElEQkxldmVsREJDb2RpbmcpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OndpcmVGb3JtYXRWZXJzaW9uKTogTmV3IG1ldGhvZCAoSlNDIHNpZGUpLgorICAgICAgICAqIGJp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OndpcmVGb3JtYXRWZXJzaW9uKTogTmV3IG1ldGhvZCAoVjggc2lkZSkuCisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuaDoKKyAgICAgICAgKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk6CisKIDIwMTItMTItMDYg
IFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEludGVy
bmFscy5nZXRFbGVtZW50QnlJZEluU2hhZG93Um9vdCBpcyBub25zZW5zZSBub3cuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNwcApp
bmRleCBiNzYxNTdlNjRlNjc1ZDMxYmFjNTA3Zjg4ZjgyYzVmOGRlMjgwNDUzLi42ZGQzMDMzMTU4
OTEyY2FkMGZjMWMzNzcwMzQwYzNmMTljNTE0NWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTE4MCwzMCArMTgw
LDUxIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdCB7IHJl
dHVybiAiaWRiX2NtcDEiOyB9CiB9OwogCi1jb25zdCBpbnQ2NF90IGxhdGVzdFNjaGVtYVZlcnNp
b24gPSAxOworLy8gMCAtIEluaXRpYWwgdmVyc2lvbi4KKy8vIDEgLSBBZGRzIFVzZXJJbnRWZXJz
aW9uIHRvIERhdGFiYXNlTWV0YURhdGEuCisvLyAyIC0gQWRkcyBEYXRhVmVyc2lvbiB0byB0byBn
bG9iYWwgbWV0YWRhdGEuCitjb25zdCBpbnQ2NF90IGxhdGVzdEtub3duU2NoZW1hVmVyc2lvbiA9
IDI7CiBzdGF0aWMgYm9vbCBpc1NjaGVtYUtub3duKExldmVsREJEYXRhYmFzZSogZGIpCiB7Ci0g
ICAgaW50NjRfdCBzY2hlbWFWZXJzaW9uID0gMDsKLSAgICBjb25zdCBWZWN0b3I8Y2hhcj4gbWV0
YURhdGFLZXkgPSBTY2hlbWFWZXJzaW9uS2V5OjplbmNvZGUoKTsKLSAgICBpZiAoIWdldEludChk
YiwgbWV0YURhdGFLZXksIHNjaGVtYVZlcnNpb24pKQorICAgIGludDY0X3QgZGJTY2hlbWFWZXJz
aW9uID0gMDsKKyAgICBpZiAoIWdldEludChkYiwgU2NoZW1hVmVyc2lvbktleTo6ZW5jb2RlKCks
IGRiU2NoZW1hVmVyc2lvbikpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBzY2hl
bWFWZXJzaW9uIDw9IGxhdGVzdFNjaGVtYVZlcnNpb247CisgICAgaWYgKGRiU2NoZW1hVmVyc2lv
biA+IGxhdGVzdEtub3duU2NoZW1hVmVyc2lvbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgY29uc3QgdWludDMyX3QgbGF0ZXN0S25vd25EYXRhVmVyc2lvbiA9IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6d2lyZUZvcm1hdFZlcnNpb24oKTsKKyAgICBpbnQ2NF90IGRiRGF0YVZlcnNpb24g
PSAwOworICAgIGlmICghZ2V0SW50KGRiLCBEYXRhVmVyc2lvbktleTo6ZW5jb2RlKCksIGRiRGF0
YVZlcnNpb24pKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChkYkRhdGFWZXJzaW9u
ID4gbGF0ZXN0S25vd25EYXRhVmVyc2lvbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
cmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIHNldFVwTWV0YWRhdGEoTGV2ZWxEQkRhdGFi
YXNlKiBkYiwgY29uc3QgU3RyaW5nJiBvcmlnaW4pCiB7Ci0gICAgY29uc3QgVmVjdG9yPGNoYXI+
IG1ldGFEYXRhS2V5ID0gU2NoZW1hVmVyc2lvbktleTo6ZW5jb2RlKCk7CisgICAgY29uc3QgdWlu
dDMyX3QgbGF0ZXN0S25vd25EYXRhVmVyc2lvbiA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6d2ly
ZUZvcm1hdFZlcnNpb24oKTsKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4gc2NoZW1hVmVyc2lvbktl
eSA9IFNjaGVtYVZlcnNpb25LZXk6OmVuY29kZSgpOworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBk
YXRhVmVyc2lvbktleSA9IERhdGFWZXJzaW9uS2V5OjplbmNvZGUoKTsKKwogICAgIFJlZlB0cjxM
ZXZlbERCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uID0gTGV2ZWxEQlRyYW5zYWN0aW9uOjpjcmVh
dGUoZGIpOwogCi0gICAgaW50NjRfdCBzY2hlbWFWZXJzaW9uID0gMDsKLSAgICBpZiAoIWdldElu
dCh0cmFuc2FjdGlvbi5nZXQoKSwgbWV0YURhdGFLZXksIHNjaGVtYVZlcnNpb24pKSB7Ci0gICAg
ICAgIHNjaGVtYVZlcnNpb24gPSBsYXRlc3RTY2hlbWFWZXJzaW9uOwotICAgICAgICBwdXRJbnQo
dHJhbnNhY3Rpb24uZ2V0KCksIG1ldGFEYXRhS2V5LCBsYXRlc3RTY2hlbWFWZXJzaW9uKTsKKyAg
ICBpbnQ2NF90IGRiU2NoZW1hVmVyc2lvbiA9IDA7CisgICAgaW50NjRfdCBkYkRhdGFWZXJzaW9u
ID0gMDsKKyAgICBpZiAoIWdldEludCh0cmFuc2FjdGlvbi5nZXQoKSwgc2NoZW1hVmVyc2lvbktl
eSwgZGJTY2hlbWFWZXJzaW9uKSkgeworICAgICAgICAvLyBJbml0aWFsaXplIG5ldyBiYWNraW5n
IHN0b3JlLgorICAgICAgICBkYlNjaGVtYVZlcnNpb24gPSBsYXRlc3RLbm93blNjaGVtYVZlcnNp
b247CisgICAgICAgIHB1dEludCh0cmFuc2FjdGlvbi5nZXQoKSwgc2NoZW1hVmVyc2lvbktleSwg
ZGJTY2hlbWFWZXJzaW9uKTsKKyAgICAgICAgZGJEYXRhVmVyc2lvbiA9IGxhdGVzdEtub3duRGF0
YVZlcnNpb247CisgICAgICAgIHB1dEludCh0cmFuc2FjdGlvbi5nZXQoKSwgZGF0YVZlcnNpb25L
ZXksIGRiRGF0YVZlcnNpb24pOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIEFTU0VSVChzY2hlbWFW
ZXJzaW9uIDw9IGxhdGVzdFNjaGVtYVZlcnNpb24pOwotICAgICAgICBpZiAoIXNjaGVtYVZlcnNp
b24pIHsKLSAgICAgICAgICAgIHNjaGVtYVZlcnNpb24gPSBsYXRlc3RTY2hlbWFWZXJzaW9uOwot
ICAgICAgICAgICAgcHV0SW50KHRyYW5zYWN0aW9uLmdldCgpLCBtZXRhRGF0YUtleSwgc2NoZW1h
VmVyc2lvbik7CisgICAgICAgIC8vIFVwZ3JhZGUgb2xkIGJhY2tpbmcgc3RvcmUuCisgICAgICAg
IEFTU0VSVChkYlNjaGVtYVZlcnNpb24gPD0gbGF0ZXN0S25vd25TY2hlbWFWZXJzaW9uKTsKKyAg
ICAgICAgaWYgKGRiU2NoZW1hVmVyc2lvbiA8IDEpIHsKKyAgICAgICAgICAgIGRiU2NoZW1hVmVy
c2lvbiA9IDE7CisgICAgICAgICAgICBwdXRJbnQodHJhbnNhY3Rpb24uZ2V0KCksIHNjaGVtYVZl
cnNpb25LZXksIGRiU2NoZW1hVmVyc2lvbik7CiAgICAgICAgICAgICBjb25zdCBWZWN0b3I8Y2hh
cj4gc3RhcnRLZXkgPSBEYXRhYmFzZU5hbWVLZXk6OmVuY29kZU1pbktleUZvck9yaWdpbihvcmln
aW4pOwogICAgICAgICAgICAgY29uc3QgVmVjdG9yPGNoYXI+IHN0b3BLZXkgPSBEYXRhYmFzZU5h
bWVLZXk6OmVuY29kZVN0b3BLZXlGb3JPcmlnaW4ob3JpZ2luKTsKICAgICAgICAgICAgIE93blB0
cjxMZXZlbERCSXRlcmF0b3I+IGl0ID0gZGItPmNyZWF0ZUl0ZXJhdG9yKCk7CkBAIC0yMTcsOSAr
MjM4LDI3IEBAIHN0YXRpYyBib29sIHNldFVwTWV0YWRhdGEoTGV2ZWxEQkRhdGFiYXNlKiBkYiwg
Y29uc3QgU3RyaW5nJiBvcmlnaW4pCiAgICAgICAgICAgICAgICAgcHV0VmFySW50KHRyYW5zYWN0
aW9uLmdldCgpLCBpbnRWZXJzaW9uS2V5LCBJREJEYXRhYmFzZU1ldGFkYXRhOjpEZWZhdWx0SW50
VmVyc2lvbik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgaWYgKGRiU2NoZW1h
VmVyc2lvbiA8IDIpIHsKKyAgICAgICAgICAgIGRiU2NoZW1hVmVyc2lvbiA9IDI7CisgICAgICAg
ICAgICBwdXRJbnQodHJhbnNhY3Rpb24uZ2V0KCksIHNjaGVtYVZlcnNpb25LZXksIGRiU2NoZW1h
VmVyc2lvbik7CisgICAgICAgICAgICBkYkRhdGFWZXJzaW9uID0gU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjp3aXJlRm9ybWF0VmVyc2lvbigpOworICAgICAgICAgICAgcHV0SW50KHRyYW5zYWN0aW9u
LmdldCgpLCBkYXRhVmVyc2lvbktleSwgZGJEYXRhVmVyc2lvbik7CisgICAgICAgIH0KICAgICB9
CiAKLSAgICBBU1NFUlQoc2NoZW1hVmVyc2lvbiA9PSBsYXRlc3RTY2hlbWFWZXJzaW9uKTsKKyAg
ICAvLyBBbGwgbmV3IHZhbHVlcyB3aWxsIGJlIHdyaXR0ZW4gdXNpbmcgdGhpcyBzZXJpYWxpemF0
aW9uIHZlcnNpb24uCisgICAgaWYgKCFnZXRJbnQodHJhbnNhY3Rpb24uZ2V0KCksIGRhdGFWZXJz
aW9uS2V5LCBkYkRhdGFWZXJzaW9uKSkgeworICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVs
REJCYWNraW5nU3RvcmVSZWFkRXJyb3IpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICAgIGlmIChkYkRhdGFWZXJzaW9uIDwgbGF0ZXN0S25vd25EYXRhVmVyc2lvbikgeworICAgICAg
ICBkYkRhdGFWZXJzaW9uID0gbGF0ZXN0S25vd25EYXRhVmVyc2lvbjsKKyAgICAgICAgcHV0SW50
KHRyYW5zYWN0aW9uLmdldCgpLCBkYXRhVmVyc2lvbktleSwgZGJEYXRhVmVyc2lvbik7CisgICAg
fQorCisgICAgQVNTRVJUKGRiU2NoZW1hVmVyc2lvbiA9PSBsYXRlc3RLbm93blNjaGVtYVZlcnNp
b24pOworICAgIEFTU0VSVChkYkRhdGFWZXJzaW9uID09IGxhdGVzdEtub3duRGF0YVZlcnNpb24p
OworCiAgICAgaWYgKCF0cmFuc2FjdGlvbi0+Y29tbWl0KCkpIHsKICAgICAgICAgSW50ZXJuYWxF
cnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlV3JpdGVFcnJvcik7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxl
dmVsREJDb2RpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2
ZWxEQkNvZGluZy5jcHAKaW5kZXggN2FmZmMyOGViMzNhYzM5ODE4ZDM1ZDhiNTRkYjdlODAzNDNk
MmU2Ny4uMWRhZWRiMGFlNzhiZmIwN2VlZTc3MDNkODhiYjk4MWQ0ODFhZDViYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5j
cHAKQEAgLTQ3LDggKzQ3LDkgQEAKIC8vCiAvLyBHbG9iYWwgbWV0YS1kYXRhIGhhdmUga2V5cyB3
aXRoIHByZWZpeCAoMCwwLDApLCBmb2xsb3dlZCBieSBhIHR5cGUgYnl0ZToKIC8vCi0vLyAgICAg
PDAsIDAsIDAsIDA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+
IEluZGV4ZWREQi9MZXZlbERCIHNjaGVtYSB2ZXJzaW9uICgwIGZvciBub3cpIFtTY2hlbWFWZXJz
aW9uS2V5XQorLy8gICAgIDwwLCAwLCAwLCAwPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9PiBJbmRleGVkREIvTGV2ZWxEQiBzY2hlbWEgdmVyc2lvbiBbU2NoZW1h
VmVyc2lvbktleV0KIC8vICAgICA8MCwgMCwgMCwgMT4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPT4gVGhlIG1heGltdW0gZGF0YWJhc2UgaWQgZXZlciBhbGxvY2F0
ZWQgW01heERhdGFiYXNlSWRLZXldCisvLyAgICAgPDAsIDAsIDAsIDI+ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSB2ZXJz
aW9uIFtEYXRhVmVyc2lvbktleV0KIC8vICAgICA8MCwgMCwgMCwgMTAwLCBkYXRhYmFzZSBpZD4g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gRXhpc3RlbmNlIGltcGxpZXMgdGhlIGRhdGFi
YXNlIGlkIGlzIGluIHRoZSBmcmVlIGxpc3QgW0RhdGFiYXNlRnJlZUxpc3RLZXldCiAvLyAgICAg
PDAsIDAsIDAsIDIwMSwgdXRmMTYgb3JpZ2luIG5hbWUsIHV0ZjE2IGRhdGFiYXNlIG5hbWU+ID0+
IERhdGFiYXNlIGlkIFtEYXRhYmFzZU5hbWVLZXldCiAvLwpAQCAtMTU0LDcgKzE1NSw4IEBAIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIEV4aXN0c0VudHJ5SW5kZXhJZCA9IDI7CiAKIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBjaGFyIFNjaGVtYVZlcnNpb25UeXBlQnl0ZSA9IDA7CiBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgY2hhciBNYXhEYXRhYmFzZUlkVHlwZUJ5dGUgPSAxOwotc3RhdGljIGNv
bnN0IHVuc2lnbmVkIGNoYXIgTWF4U2ltcGxlR2xvYmFsTWV0YURhdGFUeXBlQnl0ZSA9IDI7IC8v
IEluc2VydCBiZWZvcmUgdGhpcyBhbmQgaW5jcmVtZW50Lgorc3RhdGljIGNvbnN0IHVuc2lnbmVk
IGNoYXIgRGF0YVZlcnNpb25UeXBlQnl0ZSA9IDI7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hh
ciBNYXhTaW1wbGVHbG9iYWxNZXRhRGF0YVR5cGVCeXRlID0gMzsgLy8gSW5zZXJ0IGJlZm9yZSB0
aGlzIGFuZCBpbmNyZW1lbnQuCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBEYXRhYmFzZUZy
ZWVMaXN0VHlwZUJ5dGUgPSAxMDA7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBEYXRhYmFz
ZU5hbWVUeXBlQnl0ZSA9IDIwMTsKIApAQCAtMTA0Nyw2ICsxMDQ5LDE0IEBAIFZlY3RvcjxjaGFy
PiBNYXhEYXRhYmFzZUlkS2V5OjplbmNvZGUoKQogICAgIHJldHVybiByZXQ7CiB9CiAKK1ZlY3Rv
cjxjaGFyPiBEYXRhVmVyc2lvbktleTo6ZW5jb2RlKCkKK3sKKyAgICBLZXlQcmVmaXggcHJlZml4
KDAsIDAsIDApOworICAgIFZlY3RvcjxjaGFyPiByZXQgPSBwcmVmaXguZW5jb2RlKCk7CisgICAg
cmV0LmFwcGVuZChlbmNvZGVCeXRlKERhdGFWZXJzaW9uVHlwZUJ5dGUpKTsKKyAgICByZXR1cm4g
cmV0OworfQorCiBEYXRhYmFzZUZyZWVMaXN0S2V5OjpEYXRhYmFzZUZyZWVMaXN0S2V5KCkKICAg
ICA6IG1fZGF0YWJhc2VJZCgtMSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuaAppbmRleCA3OWY4NzYxNzAwNGIwYzZmZDY5MmZi
MzhmZjI2YjRhNTkxOGY0YjFjLi4wMGY3Y2RiMDE1NTkxZmFiYmY1OWI4NWNhZDkxNjFhMTlmN2Jm
ODk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZl
bERCQ29kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2
ZWxEQkNvZGluZy5oCkBAIC0xMTEsNiArMTExLDExIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgVmVj
dG9yPGNoYXI+IGVuY29kZSgpOwogfTsKIAorY2xhc3MgRGF0YVZlcnNpb25LZXkgeworcHVibGlj
OgorICAgIHN0YXRpYyBWZWN0b3I8Y2hhcj4gZW5jb2RlKCk7Cit9OworCiBjbGFzcyBEYXRhYmFz
ZUZyZWVMaXN0S2V5IHsKIHB1YmxpYzoKICAgICBEYXRhYmFzZUZyZWVMaXN0S2V5KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNw
cAppbmRleCA3ZGM5YWVkMGI1ODIyMjE2Mjk5MjZjMTkyNGM0NWYzZGUzODZhMjAwLi44YTAyODQ2
OTNlOWFkY2UwNWM0MjE0N2U5MTFhYTMyODI3OTNmMjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTE5ODUsNCAr
MTk4NSw5IEBAIGJvb2wgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpzZXJpYWxpemF0aW9uRGlkQ29t
cGxldGVTdWNjZXNzZnVsbHkoU2VyaWFsaXphdGlvblJlCiAgICAgcmV0dXJuIChjb2RlID09IFN1
Y2Nlc3NmdWxseUNvbXBsZXRlZCk7CiB9CiAKK3VpbnQzMl90IFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6d2lyZUZvcm1hdFZlcnNpb24oKQoreworICAgIHJldHVybiBDdXJyZW50VmVyc2lvbjsKK30K
KwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuaAppbmRleCBlY2NhODIwNjcwZTU3ZDBhMzY2NTViZjdlNmFhMmUxY2QwN2UxMjVlLi44
MDkxODUzZTljMjJmZDU5YjdlNGIzZjA2ZTcwZTQ1NTczYTZkYWE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaApAQCAtODMsNiAr
ODMsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiB1bmRlZmluZWRWYWx1ZSgpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gYm9vbGVhblZhbHVlKGJvb2wgdmFsdWUpOwogCisgICAgc3RhdGljIHVpbnQz
Ml90IHdpcmVGb3JtYXRWZXJzaW9uKCk7CisKICAgICBTdHJpbmcgdG9TdHJpbmcoKTsKICAgICAK
ICAgICBKU0M6OkpTVmFsdWUgZGVzZXJpYWxpemUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgTWVzc2FnZVBvcnRBcnJheSosIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgPSBU
aHJvd2luZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmNwcAppbmRleCA2MmEwNDhhYzFhNmFmODk0MTNmOTg4OWMxMDE2MjRhOGJi
YzEwNzY5Li45MWY4ZWYwYzAxMzZlY2Y3NmJiMmNjZmUzMzI2OTkwMTkzMDY3NWU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHAKQEAgLTI0NDksNCArMjQ0OSw5IEBAIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6flNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSgpCiAgICAgfQogfQogCit1aW50MzJfdCBTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OndpcmVGb3JtYXRWZXJzaW9uKCkKK3sKKyAgICByZXR1cm4gV2ViQ29yZTo6d2lyZUZvcm1h
dFZlcnNpb247Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggY2I2NjM4NGQ0
MmI3OTIzYjU0YWI3Y2JjODIzNTdkZjk4OTlmZjlmOC4uNjllYThkODMyMDY4YjZhNWExODcxNDhi
ZWNiNGU1Y2IyY2YzNzhmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTY1LDYgKzY1LDggQEAgcHVibGljOgogICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gYm9vbGVhblZhbHVlKGJvb2wg
dmFsdWUsIHY4OjpJc29sYXRlKiA9IDApOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gbnVtYmVyVmFsdWUoZG91YmxlIHZhbHVlLCB2ODo6SXNvbGF0ZSogPSAw
KTsKIAorICAgIHN0YXRpYyB1aW50MzJfdCB3aXJlRm9ybWF0VmVyc2lvbigpOworCiAgICAgUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHJlbGVhc2UoKTsKIAogICAgIFN0cmluZyB0
b1dpcmVTdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>