<?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>103782</bug_id>
          
          <creation_ts>2012-11-30 15:33:37 -0800</creation_ts>
          <short_desc>IndexedDB: Propagate more leveldb errors to IDBIndex and IDBObjectStore</short_desc>
          <delta_ts>2012-12-04 16:37:55 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>103688</dependson>
          <blocked>103960</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="David Grogan">dgrogan</reporter>
          <assigned_to name="David Grogan">dgrogan</assigned_to>
          <cc>alecflett</cc>
    
    <cc>jsbell</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>780479</commentid>
    <comment_count>0</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-11-30 15:33:37 -0800</bug_when>
    <thetext>IndexedDB: Propagate more leveldb errors to IDBIndex and IDBObjectStore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780480</commentid>
    <comment_count>1</comment_count>
      <attachid>177037</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-11-30 15:37:08 -0800</bug_when>
    <thetext>Created attachment 177037
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780490</commentid>
    <comment_count>2</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-11-30 15:43:50 -0800</bug_when>
    <thetext>Josh and Alec, could one of you take a look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780492</commentid>
    <comment_count>3</comment_count>
      <attachid>177037</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-11-30 15:48:23 -0800</bug_when>
    <thetext>Comment on attachment 177037
Patch

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

&gt; Source/WebCore/Modules/indexeddb/IDBBackingStore.cpp:670
&gt; +        InternalError(IDBLevelDBBackingStoreReadError0);

With the every-callsite patch in limbo I used 0, but if that patch lands I will add more entries to the InternalError enum.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782925</commentid>
    <comment_count>4</comment_count>
      <attachid>177559</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-04 14:14:38 -0800</bug_when>
    <thetext>Created attachment 177559
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782933</commentid>
    <comment_count>5</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-04 14:22:53 -0800</bug_when>
    <thetext>Josh or Alec, could one of you take a look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783049</commentid>
    <comment_count>6</comment_count>
      <attachid>177559</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-12-04 15:49:43 -0800</bug_when>
    <thetext>Comment on attachment 177559
Patch

One nit, otherwise LGTM

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

&gt; Source/WebCore/Modules/indexeddb/IDBBackingStore.cpp:999
&gt; +    exists = decodeInt(data.begin(), data.end()) == version;

Add parentheses for readability</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783066</commentid>
    <comment_count>7</comment_count>
      <attachid>177594</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-04 16:07:53 -0800</bug_when>
    <thetext>Created attachment 177594
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783068</commentid>
    <comment_count>8</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-04 16:08:35 -0800</bug_when>
    <thetext>Tony, could you review this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783070</commentid>
    <comment_count>9</comment_count>
      <attachid>177559</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-04 16:08:52 -0800</bug_when>
    <thetext>Comment on attachment 177559
Patch

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

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBBackingStore.cpp:999
&gt;&gt; +    exists = decodeInt(data.begin(), data.end()) == version;
&gt; 
&gt; Add parentheses for readability

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783076</commentid>
    <comment_count>10</comment_count>
      <attachid>177594</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-12-04 16:19:31 -0800</bug_when>
    <thetext>Comment on attachment 177594
Patch

You may want to start adding WARN_UNUSED_RETURN to your functions to make sure people check the return value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783087</commentid>
    <comment_count>11</comment_count>
      <attachid>177601</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-04 16:31:24 -0800</bug_when>
    <thetext>Created attachment 177601
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783089</commentid>
    <comment_count>12</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-04 16:31:49 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 177594 [details])
&gt; You may want to start adding WARN_UNUSED_RETURN to your functions to make sure people check the return value.

Thanks, done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783093</commentid>
    <comment_count>13</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-04 16:37:55 -0800</bug_when>
    <thetext>Committed r136592: &lt;http://trac.webkit.org/changeset/136592&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177037</attachid>
            <date>2012-11-30 15:37:08 -0800</date>
            <delta_ts>2012-12-04 14:14:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103782-20121130153440.patch</filename>
            <type>text/plain</type>
            <size>18620</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2MjU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDkwMGUwOTIwNzQyOTRm
ODFiYThiMTQyOTU5YjZiNjgzYjI2ODc1Ni4uMzgwNTM3MDYzZTRmY2YwYzc2ZjQ2ODIzMzgzNDM0
MmMzZGQxNjUxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTExLTMwICBEYXZp
ZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFBy
b3BhZ2F0ZSBtb3JlIGxldmVsZGIgZXJyb3JzIHRvIElEQkluZGV4IGFuZCBJREJPYmplY3RTdG9y
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzNzgy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaW5kZXgu
Z2V0W0tleV0oKSBvYmplY3RTdG9yZS5nZXQoKSB3aWxsIHJlY2VpdmUgbW9yZSBlcnJvciBldmVu
dHMuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQpOgorICAgICAgICAo
V2ViQ29yZTo6dmVyc2lvbkV4aXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3Rv
cmU6OmZpbmRLZXlJbkluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkJhY2tpbmdTdG9yZTo6
Z2V0UHJpbWFyeUtleVZpYUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkJhY2tpbmdTdG9y
ZTo6a2V5RXhpc3RzSW5JbmRleCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQmFj
a2luZ1N0b3JlLmg6CisgICAgICAgIChJREJCYWNraW5nU3RvcmUpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCSW5kZXhCYWNrZW5kSW1wbDo6Z2V0SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6SURC
SW5kZXhCYWNrZW5kSW1wbDo6Z2V0S2V5SW50ZXJuYWwpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Z2V0SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29y
ZSk6CisKIDIwMTItMTEtMjkgIERhdmlkIEdyb2dhbiAgPGRncm9nYW5AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIEluZGV4ZWREQjogRWFjaCBwbGFjZSBvZiBmYWlsdXJlIHNob3VsZCBoYXZlIGl0
cyBvd24gaGlzdG9ncmFtIGVudHJ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGU1OTdk
MzEzZmM1MjE4ZmY4ZjQ4ZjUwODFiNjcxMWQ4OTk5Y2IyNGQuLjdhM2RhYjExODkzYTgzNDc1YmVl
ZDYxY2U2MTZkMDcwYWY3YTQxMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTItMTEtMzAgIERhdmlkIEdyb2dhbiAgPGRncm9nYW5AY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIEluZGV4ZWREQjogUHJvcGFnYXRlIG1vcmUgbGV2ZWxkYiBlcnJvcnMgdG8g
SURCSW5kZXggYW5kIElEQk9iamVjdFN0b3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM3ODIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHRlc3RzL0lEQkZha2VCYWNraW5nU3RvcmUuaDoKKyAgICAg
ICAgICBSZW1vdmUgY2hhbmdlZCBtZXRob2RzIHRoYXQgYXJlIG5vIGxvbmdlciBuZWNlc3Nhcnku
CisKIDIwMTItMTEtMjkgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CiAK
ICAgICAgICAgU3BlZWNoIFJlY29nbml0aW9uIEFQSTogVXBkYXRlIFNwZWVjaFJlY29nbml0aW9u
RXZlbnQgdG8gbWF0Y2ggdGhlIHNwZWNpZmljYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IGI4MGFhYmU2YzFm
MWU2OTg3NGYzYzU2ZDVlMmFmNGZmNmE4YzA4NDEuLjNkM2FjZWYwY2NhMjgyNmIyOTc1YmFhYjMy
YTY5MDkxMGU4ZGFhMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCQmFja2luZ1N0b3JlLmNwcApAQCAtNjU1LDcgKzY1NSw3IEBAIHZvaWQgSURCQmFj
a2luZ1N0b3JlOjpkZWxldGVPYmplY3RTdG9yZShJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9u
KiB0cmFuc2FjdGlvCiAgICAgY2xlYXJPYmplY3RTdG9yZSh0cmFuc2FjdGlvbiwgZGF0YWJhc2VJ
ZCwgb2JqZWN0U3RvcmVJZCk7CiB9CiAKLVN0cmluZyBJREJCYWNraW5nU3RvcmU6OmdldFJlY29y
ZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRh
YmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYga2V5KQorYm9vbCBJ
REJCYWNraW5nU3RvcmU6OmdldFJlY29yZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0
cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNv
bnN0IElEQktleSYga2V5LCBTdHJpbmcmIHJlY29yZCkKIHsKICAgICBJREJfVFJBQ0UoIklEQkJh
Y2tpbmdTdG9yZTo6Z2V0UmVjb3JkIik7CiAgICAgTGV2ZWxEQlRyYW5zYWN0aW9uKiBsZXZlbERC
VHJhbnNhY3Rpb24gPSBJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uOjpsZXZlbERCVHJhbnNh
Y3Rpb25Gcm9tKHRyYW5zYWN0aW9uKTsKQEAgLTY2MywxOCArNjYzLDI0IEBAIFN0cmluZyBJREJC
YWNraW5nU3RvcmU6OmdldFJlY29yZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFu
c2FjdGlvbiwgaW50CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+IGxldmVsZGJLZXkgPSBPYmplY3RT
dG9yZURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBrZXkpOwogICAg
IFZlY3RvcjxjaGFyPiBkYXRhOwogCi0gICAgaWYgKCFsZXZlbERCVHJhbnNhY3Rpb24tPmdldChs
ZXZlbGRiS2V5LCBkYXRhKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIGJvb2wgZm91
bmQgPSBmYWxzZTsKKyAgICBib29sIG9rID0gbGV2ZWxEQlRyYW5zYWN0aW9uLT5zYWZlR2V0KGxl
dmVsZGJLZXksIGRhdGEsIGZvdW5kKTsKKyAgICBpZiAoIW9rKSB7CisgICAgICAgIHJlY29yZCA9
IFN0cmluZygpOworICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVS
ZWFkRXJyb3IwKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAogICAgIGludDY0X3Qg
dmVyc2lvbjsKICAgICBjb25zdCBjaGFyKiBwID0gZGVjb2RlVmFySW50KGRhdGEuYmVnaW4oKSwg
ZGF0YS5lbmQoKSwgdmVyc2lvbik7CiAgICAgaWYgKCFwKSB7CiAgICAgICAgIEludGVybmFsRXJy
b3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvcjExKTsKLSAgICAgICAgcmV0dXJuIFN0
cmluZygpOworICAgICAgICByZWNvcmQgPSBTdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KLSAgICAodm9pZCkgdmVyc2lvbjsKIAotICAgIHJldHVybiBkZWNvZGVTdHJpbmco
cCwgZGF0YS5lbmQoKSk7CisgICAgcmVjb3JkID0gZGVjb2RlU3RyaW5nKHAsIGRhdGEuZW5kKCkp
OworICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgaW50NjRfdCBnZXROZXdWZXJzaW9uTnVt
YmVyKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwg
aW50NjRfdCBvYmplY3RTdG9yZUlkKQpAQCAtOTkyLDIxICs5OTgsMjggQEAgc3RhdGljIGJvb2wg
ZmluZEdyZWF0ZXN0S2V5TGVzc1RoYW5PckVxdWFsKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNh
Y3Rpb24sIGNvbnMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wgdmVyc2lvbkV4
aXN0cyhMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQs
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCB2ZXJzaW9uLCBjb25zdCBWZWN0b3I8Y2hh
cj4mIGVuY29kZWRQcmltYXJ5S2V5KQorc3RhdGljIGJvb2wgdmVyc2lvbkV4aXN0cyhMZXZlbERC
VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgaW50NjRfdCB2ZXJzaW9uLCBjb25zdCBWZWN0b3I8Y2hhcj4mIGVuY29kZWRQ
cmltYXJ5S2V5LCBib29sJiBleGlzdHMpCiB7CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+IGtleSA9
IEV4aXN0c0VudHJ5S2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgZW5jb2Rl
ZFByaW1hcnlLZXkpOwogICAgIFZlY3RvcjxjaGFyPiBkYXRhOwogCi0gICAgaWYgKCF0cmFuc2Fj
dGlvbi0+Z2V0KGtleSwgZGF0YSkpCisgICAgYm9vbCBvayA9IHRyYW5zYWN0aW9uLT5zYWZlR2V0
KGtleSwgZGF0YSwgZXhpc3RzKTsKKyAgICBpZiAoIW9rKSB7CisgICAgICAgIEludGVybmFsRXJy
b3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvcjApOwogICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorICAgIGlmICghZXhpc3RzKQorICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAg
IHJldHVybiBkZWNvZGVJbnQoZGF0YS5iZWdpbigpLCBkYXRhLmVuZCgpKSA9PSB2ZXJzaW9uOwor
ICAgIGV4aXN0cyA9IGRlY29kZUludChkYXRhLmJlZ2luKCksIGRhdGEuZW5kKCkpID09IHZlcnNp
b247CisgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSURCQmFja2luZ1N0b3JlOjpmaW5kS2V5
SW5JbmRleChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29u
c3QgSURCS2V5JiBrZXksIFZlY3RvcjxjaGFyPiYgZm91bmRFbmNvZGVkUHJpbWFyeUtleSkKK2Jv
b2wgSURCQmFja2luZ1N0b3JlOjpmaW5kS2V5SW5JbmRleChJREJCYWNraW5nU3RvcmU6OlRyYW5z
YWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiBrZXksIFZlY3RvcjxjaGFyPiYg
Zm91bmRFbmNvZGVkUHJpbWFyeUtleSwgYm9vbCYgZm91bmQpCiB7CiAgICAgSURCX1RSQUNFKCJJ
REJCYWNraW5nU3RvcmU6OmZpbmRLZXlJbkluZGV4Iik7CiAgICAgQVNTRVJUKGZvdW5kRW5jb2Rl
ZFByaW1hcnlLZXkuaXNFbXB0eSgpKTsKKyAgICBmb3VuZCA9IGZhbHNlOwogCiAgICAgTGV2ZWxE
QlRyYW5zYWN0aW9uKiBsZXZlbERCVHJhbnNhY3Rpb24gPSBJREJCYWNraW5nU3RvcmU6OlRyYW5z
YWN0aW9uOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRyYW5zYWN0aW9uKTsKICAgICBjb25zdCBW
ZWN0b3I8Y2hhcj4gbGV2ZWxkYktleSA9IEluZGV4RGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQs
IG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIGtleSk7CkBAIC0xMDE1LDkgKzEwMjgsOSBAQCBib29s
IElEQkJhY2tpbmdTdG9yZTo6ZmluZEtleUluSW5kZXgoSURCQmFja2luZ1N0b3JlOjpUcmFuc2Fj
dGlvbiogdHJhbnNhY3Rpb24sCiAKICAgICBmb3IgKDs7KSB7CiAgICAgICAgIGlmICghaXQtPmlz
VmFsaWQoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICBpZiAoY29tcGFyZUluZGV4S2V5cyhpdC0+a2V5KCksIGxldmVsZGJLZXkp
ID4gMCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OwogCiAgICAgICAgIGludDY0X3QgdmVyc2lvbjsKICAgICAgICAgY29uc3QgY2hhciogcCA9IGRl
Y29kZVZhckludChpdC0+dmFsdWUoKS5iZWdpbigpLCBpdC0+dmFsdWUoKS5lbmQoKSwgdmVyc2lv
bik7CkBAIC0xMDI3LDM4ICsxMDQwLDUzIEBAIGJvb2wgSURCQmFja2luZ1N0b3JlOjpmaW5kS2V5
SW5JbmRleChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwKICAgICAg
ICAgfQogICAgICAgICBmb3VuZEVuY29kZWRQcmltYXJ5S2V5LmFwcGVuZChwLCBpdC0+dmFsdWUo
KS5lbmQoKSAtIHApOwogCi0gICAgICAgIGlmICghdmVyc2lvbkV4aXN0cyhsZXZlbERCVHJhbnNh
Y3Rpb24sIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIHZlcnNpb24sIGZvdW5kRW5jb2RlZFBy
aW1hcnlLZXkpKSB7CisgICAgICAgIGJvb2wgZXhpc3RzID0gZmFsc2U7CisgICAgICAgIGJvb2wg
b2sgPSB2ZXJzaW9uRXhpc3RzKGxldmVsREJUcmFuc2FjdGlvbiwgZGF0YWJhc2VJZCwgb2JqZWN0
U3RvcmVJZCwgdmVyc2lvbiwgZm91bmRFbmNvZGVkUHJpbWFyeUtleSwgZXhpc3RzKTsKKyAgICAg
ICAgaWYgKCFvaykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFleGlz
dHMpIHsKICAgICAgICAgICAgIC8vIERlbGV0ZSBzdGFsZSBpbmRleCBkYXRhIGVudHJ5IGFuZCBj
b250aW51ZS4KICAgICAgICAgICAgIGxldmVsREJUcmFuc2FjdGlvbi0+cmVtb3ZlKGl0LT5rZXko
KSk7CiAgICAgICAgICAgICBpdC0+bmV4dCgpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIH0KLQorICAgICAgICBmb3VuZCA9IHRydWU7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KIH0KIAotUGFzc1JlZlB0cjxJREJLZXk+IElEQkJhY2tpbmdTdG9yZTo6Z2V0UHJpbWFyeUtl
eVZpYUluZGV4KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2
NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBj
b25zdCBJREJLZXkmIGtleSkKK2Jvb2wgSURCQmFja2luZ1N0b3JlOjpnZXRQcmltYXJ5S2V5Vmlh
SW5kZXgoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3Qg
ZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0
IElEQktleSYga2V5LCBSZWZQdHI8SURCS2V5PiYgcHJpbWFyeUtleSkKIHsKICAgICBJREJfVFJB
Q0UoIklEQkJhY2tpbmdTdG9yZTo6Z2V0UHJpbWFyeUtleVZpYUluZGV4Iik7CiAKKyAgICBib29s
IGZvdW5kID0gZmFsc2U7CiAgICAgVmVjdG9yPGNoYXI+IGZvdW5kRW5jb2RlZFByaW1hcnlLZXk7
Ci0gICAgaWYgKGZpbmRLZXlJbkluZGV4KHRyYW5zYWN0aW9uLCBkYXRhYmFzZUlkLCBvYmplY3RT
dG9yZUlkLCBpbmRleElkLCBrZXksIGZvdW5kRW5jb2RlZFByaW1hcnlLZXkpKSB7Ci0gICAgICAg
IFJlZlB0cjxJREJLZXk+IHByaW1hcnlLZXk7CisgICAgYm9vbCBvayA9IGZpbmRLZXlJbkluZGV4
KHRyYW5zYWN0aW9uLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBrZXksIGZv
dW5kRW5jb2RlZFByaW1hcnlLZXksIGZvdW5kKTsKKyAgICBpZiAoIW9rKSB7CisgICAgICAgIElu
dGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvcjApOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGlmIChmb3VuZCkgewogICAgICAgICBkZWNvZGVJREJL
ZXkoZm91bmRFbmNvZGVkUHJpbWFyeUtleS5iZWdpbigpLCBmb3VuZEVuY29kZWRQcmltYXJ5S2V5
LmVuZCgpLCBwcmltYXJ5S2V5KTsKLSAgICAgICAgcmV0dXJuIHByaW1hcnlLZXkucmVsZWFzZSgp
OworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICByZXR1cm4gMDsKKyAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luSW5kZXgoSURC
QmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJ
ZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYg
aW5kZXhLZXksIFJlZlB0cjxJREJLZXk+JiBmb3VuZFByaW1hcnlLZXkpCitib29sIElEQkJhY2tp
bmdTdG9yZTo6a2V5RXhpc3RzSW5JbmRleChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0
cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGlu
dDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiBpbmRleEtleSwgUmVmUHRyPElEQktleT4mIGZv
dW5kUHJpbWFyeUtleSwgYm9vbCYgZXhpc3RzKQogewogICAgIElEQl9UUkFDRSgiSURCQmFja2lu
Z1N0b3JlOjprZXlFeGlzdHNJbkluZGV4Iik7CiAKKyAgICBleGlzdHMgPSBmYWxzZTsKICAgICBW
ZWN0b3I8Y2hhcj4gZm91bmRFbmNvZGVkUHJpbWFyeUtleTsKLSAgICBpZiAoIWZpbmRLZXlJbklu
ZGV4KHRyYW5zYWN0aW9uLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBpbmRl
eEtleSwgZm91bmRFbmNvZGVkUHJpbWFyeUtleSkpCisgICAgYm9vbCBvayA9IGZpbmRLZXlJbklu
ZGV4KHRyYW5zYWN0aW9uLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBpbmRl
eEtleSwgZm91bmRFbmNvZGVkUHJpbWFyeUtleSwgZXhpc3RzKTsKKyAgICBpZiAoIW9rKSB7Cisg
ICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvcjApOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGlmICghZXhpc3RzKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAogICAgIGRlY29kZUlEQktleShmb3VuZEVuY29kZWRQcmltYXJ5S2V5LmJl
Z2luKCksIGZvdW5kRW5jb2RlZFByaW1hcnlLZXkuZW5kKCksIGZvdW5kUHJpbWFyeUtleSk7CiAg
ICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkJhY2tpbmdTdG9yZS5oCmluZGV4IDRmNTU5Njg1ODhkOTllMDY1ZjBkMGQyZjI4NTkzNGM2
ZmY4MWRmNjYuLjhjZjRjMGEzOGQ3YmYxYzZkMjJmOTE1MjY3YTQ5NTA4NmY2OGIyMTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5o
CkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgaW50NjRfdCBtX3ZlcnNpb247CiAg
ICAgfTsKIAotICAgIHZpcnR1YWwgU3RyaW5nIGdldFJlY29yZChJREJCYWNraW5nU3RvcmU6OlRy
YW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNv
bnN0IElEQktleSYpOworICAgIHZpcnR1YWwgYm9vbCBnZXRSZWNvcmQoSURCQmFja2luZ1N0b3Jl
OjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
LCBjb25zdCBJREJLZXkmLCBTdHJpbmcmIHJlY29yZCk7CiAgICAgdmlydHVhbCB2b2lkIHB1dFJl
Y29yZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYsIGNvbnN0IFN0cmluZyYgdmFsdWUs
IFJlY29yZElkZW50aWZpZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJPYmplY3RTdG9yZShJ
REJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVSZWNvcmQoSURCQmFja2lu
Z1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBjb25zdCBSZWNvcmRJZGVudGlmaWVyJik7CkBAIC04OSw4ICs4OSw4IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlSW5kZXgoSURCQmFja2luZ1N0b3JlOjpUcmFuc2Fj
dGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90
IGluZGV4SWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgaXNV
bmlxdWUsIGJvb2wgaXNNdWx0aUVudHJ5KTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlSW5kZXgo
SURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQpOwogICAgIHZpcnR1YWwgdm9pZCBwdXRJ
bmRleERhdGFGb3JSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3Qg
ZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0
IElEQktleSYsIGNvbnN0IFJlY29yZElkZW50aWZpZXImKTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8SURCS2V5PiBnZXRQcmltYXJ5S2V5VmlhSW5kZXgoSURCQmFja2luZ1N0b3JlOjpUcmFuc2Fj
dGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90
IGluZGV4SWQsIGNvbnN0IElEQktleSYpOwotICAgIHZpcnR1YWwgYm9vbCBrZXlFeGlzdHNJbklu
ZGV4KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkmIGluZGV4
S2V5LCBSZWZQdHI8SURCS2V5PiYgZm91bmRQcmltYXJ5S2V5KTsKKyAgICB2aXJ0dWFsIGJvb2wg
Z2V0UHJpbWFyeUtleVZpYUluZGV4KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2
NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBj
b25zdCBJREJLZXkmLCBSZWZQdHI8SURCS2V5PiYgcHJpbWFyeUtleSk7CisgICAgdmlydHVhbCBi
b29sIGtleUV4aXN0c0luSW5kZXgoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNv
bnN0IElEQktleSYgaW5kZXhLZXksIFJlZlB0cjxJREJLZXk+JiBmb3VuZFByaW1hcnlLZXksIGJv
b2wmIGV4aXN0cyk7CiAKICAgICBjbGFzcyBDdXJzb3IgOiBwdWJsaWMgUmVmQ291bnRlZDxDdXJz
b3I+IHsKICAgICBwdWJsaWM6CkBAIC0xNjgsNyArMTY4LDcgQEAgcHJvdGVjdGVkOgogICAgIElE
QkJhY2tpbmdTdG9yZSgpOwogCiBwcml2YXRlOgotICAgIGJvb2wgZmluZEtleUluSW5kZXgoSURC
QmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYsIFZlY3RvcjxjaGFy
PiYgZm91bmRFbmNvZGVkUHJpbWFyeUtleSk7CisgICAgYm9vbCBmaW5kS2V5SW5JbmRleChJREJC
YWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiwgVmVjdG9yPGNoYXI+
JiBmb3VuZEVuY29kZWRQcmltYXJ5S2V5LCBib29sJiBmb3VuZCk7CiAKICAgICBTdHJpbmcgbV9p
ZGVudGlmaWVyOwogICAgIFJlZlB0cjxJREJGYWN0b3J5QmFja2VuZEltcGw+IG1fZmFjdG9yeTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFj
a2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhC
YWNrZW5kSW1wbC5jcHAKaW5kZXggMTNlNjk5Zjk2NjY4MjFjZmIwMGI5MDUwZGE4MTk5ZTAxNDc0
MzMyYS4uMjNjNDNlYjNlNGVjYWExNGVmNGQ3ZGI1MTI3YTdjMDE2MzlkY2E2MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5k
SW1wbC5jcHAKQEAgLTE1Nyw5ICsxNTcsMTkgQEAgdm9pZCBJREJJbmRleEJhY2tlbmRJbXBsOjpn
ZXRJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJJbmQKICAg
ICAgICAga2V5ID0gYmFja2luZ1N0b3JlQ3Vyc29yLT5rZXkoKTsKICAgICB9CiAKLSAgICBSZWZQ
dHI8SURCS2V5PiBwcmltYXJ5S2V5ID0gaW5kZXgtPmJhY2tpbmdTdG9yZSgpLT5nZXRQcmltYXJ5
S2V5VmlhSW5kZXgodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIGluZGV4
LT5kYXRhYmFzZUlkKCksIGluZGV4LT5tX29iamVjdFN0b3JlQmFja2VuZC0+aWQoKSwgaW5kZXgt
PmlkKCksICprZXkpOworICAgIFJlZlB0cjxJREJLZXk+IHByaW1hcnlLZXk7CisgICAgYm9vbCBv
ayA9IGluZGV4LT5iYWNraW5nU3RvcmUoKS0+Z2V0UHJpbWFyeUtleVZpYUluZGV4KHRyYW5zYWN0
aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBpbmRleC0+ZGF0YWJhc2VJZCgpLCBpbmRl
eC0+bV9vYmplY3RTdG9yZUJhY2tlbmQtPmlkKCksIGluZGV4LT5pZCgpLCAqa2V5LCBwcmltYXJ5
S2V5KTsKKyAgICBpZiAoIW9rKSB7CisgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRh
YmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVOS05PV05fRVJSLCAiSW50
ZXJuYWwgZXJyb3IgaW4gZ2V0UHJpbWFyeUtleVZpYUluZGV4LiIpKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KIAotICAgIFN0cmluZyB2YWx1ZSA9IGluZGV4LT5iYWNraW5nU3RvcmUoKS0+Z2V0
UmVjb3JkKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBpbmRleC0+ZGF0
YWJhc2VJZCgpLCBpbmRleC0+bV9vYmplY3RTdG9yZUJhY2tlbmQtPmlkKCksICpwcmltYXJ5S2V5
KTsKKyAgICBTdHJpbmcgdmFsdWU7CisgICAgb2sgPSBpbmRleC0+YmFja2luZ1N0b3JlKCktPmdl
dFJlY29yZCh0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgaW5kZXgtPmRh
dGFiYXNlSWQoKSwgaW5kZXgtPm1fb2JqZWN0U3RvcmVCYWNrZW5kLT5pZCgpLCAqcHJpbWFyeUtl
eSwgdmFsdWUpOworICAgIGlmICghb2spIHsKKyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElE
QkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIs
ICJJbnRlcm5hbCBlcnJvciBpbiBnZXRSZWNvcmQuIikpOworICAgICAgICByZXR1cm47CisgICAg
fQogCiAgICAgaWYgKHZhbHVlLmlzTnVsbCgpKSB7CiAgICAgICAgIGNhbGxiYWNrcy0+b25TdWNj
ZXNzKCk7CkBAIC0xODUsNyArMTk1LDEyIEBAIHZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6Z2V0
S2V5SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8SURCS2V5PiBrZXlSZXN1bHQgPSBpbmRl
eC0+YmFja2luZ1N0b3JlKCktPmdldFByaW1hcnlLZXlWaWFJbmRleCh0cmFuc2FjdGlvbi0+YmFj
a2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgaW5kZXgtPmRhdGFiYXNlSWQoKSwgaW5kZXgtPm1fb2Jq
ZWN0U3RvcmVCYWNrZW5kLT5pZCgpLCBpbmRleC0+aWQoKSwgKmJhY2tpbmdTdG9yZUN1cnNvci0+
a2V5KCkpOworICAgIFJlZlB0cjxJREJLZXk+IGtleVJlc3VsdDsKKyAgICBib29sIG9rID0gaW5k
ZXgtPmJhY2tpbmdTdG9yZSgpLT5nZXRQcmltYXJ5S2V5VmlhSW5kZXgodHJhbnNhY3Rpb24tPmJh
Y2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIGluZGV4LT5kYXRhYmFzZUlkKCksIGluZGV4LT5tX29i
amVjdFN0b3JlQmFja2VuZC0+aWQoKSwgaW5kZXgtPmlkKCksICpiYWNraW5nU3RvcmVDdXJzb3It
PmtleSgpLCBrZXlSZXN1bHQpOworICAgIGlmICghb2spIHsKKyAgICAgICAgY2FsbGJhY2tzLT5v
bkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VU5L
Tk9XTl9FUlIsICJJbnRlcm5hbCBlcnJvciBpbiBnZXRQcmltYXJ5S2V5VmlhSW5kZXguIikpOwor
ICAgICAgICByZXR1cm47CisgICAgfQogICAgIGlmICgha2V5UmVzdWx0KSB7CiAgICAgICAgIGNh
bGxiYWNrcy0+b25TdWNjZXNzKHN0YXRpY19jYXN0PElEQktleSo+KDApKTsKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAppbmRleCA3MTRhZWQ1ZGE2NWFjMjg4YjQz
MGFmZWVjMTkwNWFlMDBmNzZmMWYwLi5hOGM3NTk0NWE0OWZlZjMzZTBkZjRmODFiOTg2N2M3Mjcx
MTQzYWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcApAQCAtOTEsNyArOTEsMTIgQEAg
dm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpnZXRJbnRlcm5hbChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgUGFzc1JlZlB0cjwKICAgICAgICAga2V5ID0gYmFja2luZ1N0b3JlQ3Vyc29y
LT5rZXkoKTsKICAgICB9CiAKLSAgICBTdHJpbmcgd2lyZURhdGEgPSBvYmplY3RTdG9yZS0+YmFj
a2luZ1N0b3JlKCktPmdldFJlY29yZCh0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rp
b24oKSwgb2JqZWN0U3RvcmUtPmRhdGFiYXNlSWQoKSwgb2JqZWN0U3RvcmUtPmlkKCksICprZXkp
OworICAgIFN0cmluZyB3aXJlRGF0YTsKKyAgICBib29sIG9rID0gb2JqZWN0U3RvcmUtPmJhY2tp
bmdTdG9yZSgpLT5nZXRSZWNvcmQodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9u
KCksIG9iamVjdFN0b3JlLT5kYXRhYmFzZUlkKCksIG9iamVjdFN0b3JlLT5pZCgpLCAqa2V5LCB3
aXJlRGF0YSk7CisgICAgaWYgKCFvaykgeworICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURC
RGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwg
IkludGVybmFsIGVycm9yIGluIGdldFJlY29yZC4iKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CiAgICAgaWYgKHdpcmVEYXRhLmlzTnVsbCgpKSB7CiAgICAgICAgIGNhbGxiYWNrcy0+b25TdWNj
ZXNzKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTE3Myw3ICsxNzgsMTAgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgICAgIFJlZlB0cjxJREJLZXk+IGZvdW5kUHJp
bWFyeUtleTsKLSAgICAgICAgYm9vbCBmb3VuZCA9IGJhY2tpbmdTdG9yZS5rZXlFeGlzdHNJbklu
ZGV4KHRyYW5zYWN0aW9uLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCAqaW5k
ZXhLZXksIGZvdW5kUHJpbWFyeUtleSk7CisgICAgICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKKyAg
ICAgICAgYm9vbCBvayA9IGJhY2tpbmdTdG9yZS5rZXlFeGlzdHNJbkluZGV4KHRyYW5zYWN0aW9u
LCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCAqaW5kZXhLZXksIGZvdW5kUHJp
bWFyeUtleSwgZm91bmQpOworICAgICAgICAvLyBGSVhNRTogUHJvcGFnYXRlIHRoaXMgZXJyb3Ig
dXAgdG8gc2NyaXB0LgorICAgICAgICBBU1NFUlRfVU5VU0VEKG9rLCBvayk7CiAgICAgICAgIGlm
ICghZm91bmQpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgaWYgKHByaW1hcnlL
ZXkgJiYgZm91bmRQcmltYXJ5S2V5LT5pc0VxdWFsKHByaW1hcnlLZXkpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJGYWtlQmFja2luZ1N0b3JlLmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkZha2VCYWNraW5nU3RvcmUuaAppbmRleCA3NDE4
YmEzNmM3ZWYyYzQ1ZDdlZWVjMGIzMGU0ODNmODZkYTI5NzI0Li41NWZmNWI4ZDBhOTgxMzgzNTA2
OTc5YjNmYTQ3ODFiZjBjZGJhYTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0lEQkZha2VCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0lEQkZha2VCYWNraW5nU3RvcmUuaApAQCAtNDMsNyArNDMsNiBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBib29sIGNyZWF0ZU9iamVjdFN0b3JlKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBk
YXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgSURCS2V5UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCkgT1ZFUlJJREUgeyByZXR1cm4gZmFs
c2U7IH07CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKFRyYW5zYWN0aW9uKiwg
aW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpIE9WRVJSSURFIHsgfQog
Ci0gICAgdmlydHVhbCBTdHJpbmcgZ2V0UmVjb3JkKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRh
YmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYpIE9WRVJSSURFIHsg
cmV0dXJuIFN0cmluZygpOyB9CiAgICAgdmlydHVhbCB2b2lkIHB1dFJlY29yZChUcmFuc2FjdGlv
biosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJL
ZXkmLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBSZWNvcmRJZGVudGlmaWVyKikgT1ZFUlJJREUgeyB9
CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyT2JqZWN0U3RvcmUoVHJhbnNhY3Rpb24qLCBpbnQ2NF90
IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkgT1ZFUlJJREUgeyB9CiAgICAgdmly
dHVhbCB2b2lkIGRlbGV0ZVJlY29yZChUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwg
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBSZWNvcmRJZGVudGlmaWVyJikgT1ZFUlJJREUg
eyB9CkBAIC01NSw4ICs1NCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlSW5k
ZXgoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgm
LCBib29sIGlzVW5pcXVlLCBib29sIGlzTXVsdGlFbnRyeSkgT1ZFUlJJREUgeyByZXR1cm4gZmFs
c2U7IH07CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUluZGV4KFRyYW5zYWN0aW9uKiwgaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCkgT1ZF
UlJJREUgeyB9CiAgICAgdmlydHVhbCB2b2lkIHB1dEluZGV4RGF0YUZvclJlY29yZChUcmFuc2Fj
dGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90
IGluZGV4SWQsIGNvbnN0IElEQktleSYsIGNvbnN0IFJlY29yZElkZW50aWZpZXImKSBPVkVSUklE
RSB7IH0KLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCS2V5PiBnZXRQcmltYXJ5S2V5VmlhSW5k
ZXgoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkmKSBPVkVSUklERSB7IHJldHVybiBQYXNz
UmVmUHRyPElEQktleT4oKTsgfQotICAgIHZpcnR1YWwgYm9vbCBrZXlFeGlzdHNJbkluZGV4KFRy
YW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZWlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGlu
dDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiBpbmRleEtleSwgUmVmUHRyPElEQktleT4mIGZv
dW5kUHJpbWFyeUtleSkgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxDdXJzb3I+IG9wZW5PYmplY3RTdG9yZUtleUN1cnNvcihUcmFuc2FjdGlvbios
IGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXlS
YW5nZSosIElEQkN1cnNvcjo6RGlyZWN0aW9uKSBPVkVSUklERSB7IHJldHVybiBQYXNzUmVmUHRy
PEN1cnNvcj4oKTsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXJzb3I+IG9wZW5PYmplY3RT
dG9yZUN1cnNvcihUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkLCBjb25zdCBJREJLZXlSYW5nZSosIElEQkN1cnNvcjo6RGlyZWN0aW9uKSBPVkVS
UklERSB7IHJldHVybiBQYXNzUmVmUHRyPEN1cnNvcj4oKTsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177559</attachid>
            <date>2012-12-04 14:14:38 -0800</date>
            <delta_ts>2012-12-04 16:08:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103782-20121204141204.patch</filename>
            <type>text/plain</type>
            <size>19186</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWFjODllZjJhYjZjNjA1
YzIxZmM2MjBkMzY1MzBmOTZiYTVkOTgyMS4uNzYzNGVkOTMyNDg0MjVjNzBkODUwYWMwZTk2ODYz
YTA5MmIzMTZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTExLTMwICBEYXZp
ZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFBy
b3BhZ2F0ZSBtb3JlIGxldmVsZGIgZXJyb3JzIHRvIElEQkluZGV4IGFuZCBJREJPYmplY3RTdG9y
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzNzgy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaW5kZXgu
Z2V0W0tleV0oKSBhbmQgb2JqZWN0U3RvcmUuZ2V0KCkgd2lsbCByZWNlaXZlIG1vcmUgZXJyb3Ig
ZXZlbnRzLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKToKKyAgICAg
ICAgKFdlYkNvcmU6OnZlcnNpb25FeGlzdHMpOgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2lu
Z1N0b3JlOjpmaW5kS2V5SW5JbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3Rv
cmU6OmdldFByaW1hcnlLZXlWaWFJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5n
U3RvcmU6OmtleUV4aXN0c0luSW5kZXgpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
QkJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoSURCQmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQkluZGV4QmFja2VuZEltcGw6OmdldEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkluZGV4QmFja2VuZEltcGw6OmdldEtleUludGVybmFsKToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmdldEludGVybmFsKToKKyAgICAgICAgKFdl
YkNvcmUpOgorCiAyMDEyLTEyLTA0ICBKdWxpZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJr
aXQub3JnPgogCiAgICAgICAgIEhlYXAtdXNlLWFmdGVyLWZyZWUgaW4gV2ViQ29yZTo6UmVuZGVy
TGF5ZXI6OnBhaW50TGlzdCBbTWF0aE1MXQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBi
ODQwNmIwMDA4YTk1YmUyMDEzNmIxZjkxNTA3Y2ZkOTU0ZWMwMTkzLi4zOTZmYjNjOGNmODBkYzI5
NzA1YmI2ODNmOTY0MGFmNDA0MTA2NjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEzIEBACisyMDEyLTExLTMwICBEYXZpZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFByb3BhZ2F0ZSBtb3JlIGxldmVsZGIgZXJyb3Jz
IHRvIElEQkluZGV4IGFuZCBJREJPYmplY3RTdG9yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzNzgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0cy9JREJGYWtlQmFja2luZ1N0b3JlLmg6Cisg
ICAgICAgICAgUmVtb3ZlIGNoYW5nZWQgbWV0aG9kcyB0aGF0IGFyZSBubyBsb25nZXIgbmVjZXNz
YXJ5LgorCiAyMDEyLTEyLTA0ICBTdGVwaGVuIFdoaXRlICA8c2Vub3JibGFuY29AY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJvbGxlZCBERVBTICh3L0xpbnV4IGJ1aWxkIGZpeCkuICBVbnJldmll
d2VkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFj
a2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tp
bmdTdG9yZS5jcHAKaW5kZXggZjc0NTViODc4MDUzOWQxYTgzNDU2NDIxNzAxNTQxZTE2OGE0MmVi
Mi4uZTZlYjZlOTkxODhiNjY1MDJlM2YyZGZiNGJjYzI5ODYyOThmOGJiYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwCkBA
IC02NCw2ICs2NCw5IEBAIGVudW0gSURCTGV2ZWxEQkJhY2tpbmdTdG9yZUludGVybmFsRXJyb3JU
eXBlIHsKICAgICBJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yS2V5RXhpc3RzSW5PYmpl
Y3RTdG9yZSwKICAgICBJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yTG9hZEN1cnJlbnRS
b3csCiAgICAgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvclNldHVwTWV0YWRhdGEsCisg
ICAgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvckdldFByaW1hcnlLZXlWaWFJbmRleCwK
KyAgICBJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yS2V5RXhpc3RzSW5JbmRleCwKKyAg
ICBJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yVmVyc2lvbkV4aXN0cywKICAgICBJREJM
ZXZlbERCQmFja2luZ1N0b3JlSW50ZXJuYWxFcnJvck1heCwKIH07CiBzdGF0aWMgaW5saW5lIHZv
aWQgcmVjb3JkSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlSW50ZXJuYWxFcnJv
clR5cGUgdHlwZSkKQEAgLTYzNyw3ICs2NDAsNyBAQCB2b2lkIElEQkJhY2tpbmdTdG9yZTo6ZGVs
ZXRlT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpbwog
ICAgIGNsZWFyT2JqZWN0U3RvcmUodHJhbnNhY3Rpb24sIGRhdGFiYXNlSWQsIG9iamVjdFN0b3Jl
SWQpOwogfQogCi1TdHJpbmcgSURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQoSURCQmFja2luZ1N0
b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkmIGtleSkKK2Jvb2wgSURCQmFja2luZ1N0b3Jl
OjpnZXRSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGlu
dDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkmIGtl
eSwgU3RyaW5nJiByZWNvcmQpCiB7CiAgICAgSURCX1RSQUNFKCJJREJCYWNraW5nU3RvcmU6Omdl
dFJlY29yZCIpOwogICAgIExldmVsREJUcmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9uID0g
SURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbjo6bGV2ZWxEQlRyYW5zYWN0aW9uRnJvbSh0cmFu
c2FjdGlvbik7CkBAIC02NDUsMTggKzY0OCwyNCBAQCBTdHJpbmcgSURCQmFja2luZ1N0b3JlOjpn
ZXRSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludAog
ICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBsZXZlbGRiS2V5ID0gT2JqZWN0U3RvcmVEYXRhS2V5Ojpl
bmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwga2V5KTsKICAgICBWZWN0b3I8Y2hhcj4g
ZGF0YTsKIAotICAgIGlmICghbGV2ZWxEQlRyYW5zYWN0aW9uLT5nZXQobGV2ZWxkYktleSwgZGF0
YSkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICBib29sIGZvdW5kID0gZmFsc2U7Cisg
ICAgYm9vbCBvayA9IGxldmVsREJUcmFuc2FjdGlvbi0+c2FmZUdldChsZXZlbGRiS2V5LCBkYXRh
LCBmb3VuZCk7CisgICAgaWYgKCFvaykgeworICAgICAgICByZWNvcmQgPSBTdHJpbmcoKTsKKyAg
ICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yR2V0UmVj
b3JkKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAogICAgIGludDY0X3QgdmVyc2lv
bjsKICAgICBjb25zdCBjaGFyKiBwID0gZGVjb2RlVmFySW50KGRhdGEuYmVnaW4oKSwgZGF0YS5l
bmQoKSwgdmVyc2lvbik7CiAgICAgaWYgKCFwKSB7CiAgICAgICAgIEludGVybmFsRXJyb3IoSURC
TGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvckdldFJlY29yZCk7Ci0gICAgICAgIHJldHVybiBT
dHJpbmcoKTsKKyAgICAgICAgcmVjb3JkID0gU3RyaW5nKCk7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9Ci0gICAgKHZvaWQpIHZlcnNpb247CiAKLSAgICByZXR1cm4gZGVjb2RlU3RyaW5n
KHAsIGRhdGEuZW5kKCkpOworICAgIHJlY29yZCA9IGRlY29kZVN0cmluZyhwLCBkYXRhLmVuZCgp
KTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGludDY0X3QgZ2V0TmV3VmVyc2lvbk51
bWJlcihMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQs
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCkKQEAgLTk3NCwyMSArOTgzLDI4IEBAIHN0YXRpYyBib29s
IGZpbmRHcmVhdGVzdEtleUxlc3NUaGFuT3JFcXVhbChMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5z
YWN0aW9uLCBjb25zCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29sIHZlcnNpb25F
eGlzdHMoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlk
LCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgdmVyc2lvbiwgY29uc3QgVmVjdG9yPGNo
YXI+JiBlbmNvZGVkUHJpbWFyeUtleSkKK3N0YXRpYyBib29sIHZlcnNpb25FeGlzdHMoTGV2ZWxE
QlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIGludDY0X3QgdmVyc2lvbiwgY29uc3QgVmVjdG9yPGNoYXI+JiBlbmNvZGVk
UHJpbWFyeUtleSwgYm9vbCYgZXhpc3RzKQogewogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBrZXkg
PSBFeGlzdHNFbnRyeUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGVuY29k
ZWRQcmltYXJ5S2V5KTsKICAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKIAotICAgIGlmICghdHJhbnNh
Y3Rpb24tPmdldChrZXksIGRhdGEpKQorICAgIGJvb2wgb2sgPSB0cmFuc2FjdGlvbi0+c2FmZUdl
dChrZXksIGRhdGEsIGV4aXN0cyk7CisgICAgaWYgKCFvaykgeworICAgICAgICBJbnRlcm5hbEVy
cm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3JWZXJzaW9uRXhpc3RzKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBpZiAoIWV4aXN0cykKKyAgICAgICAgcmV0dXJu
IHRydWU7CiAKLSAgICByZXR1cm4gZGVjb2RlSW50KGRhdGEuYmVnaW4oKSwgZGF0YS5lbmQoKSkg
PT0gdmVyc2lvbjsKKyAgICBleGlzdHMgPSBkZWNvZGVJbnQoZGF0YS5iZWdpbigpLCBkYXRhLmVu
ZCgpKSA9PSB2ZXJzaW9uOworICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIElEQkJhY2tpbmdT
dG9yZTo6ZmluZEtleUluSW5kZXgoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNh
Y3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90
IGluZGV4SWQsIGNvbnN0IElEQktleSYga2V5LCBWZWN0b3I8Y2hhcj4mIGZvdW5kRW5jb2RlZFBy
aW1hcnlLZXkpCitib29sIElEQkJhY2tpbmdTdG9yZTo6ZmluZEtleUluSW5kZXgoSURCQmFja2lu
Z1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYga2V5LCBW
ZWN0b3I8Y2hhcj4mIGZvdW5kRW5jb2RlZFByaW1hcnlLZXksIGJvb2wmIGZvdW5kKQogewogICAg
IElEQl9UUkFDRSgiSURCQmFja2luZ1N0b3JlOjpmaW5kS2V5SW5JbmRleCIpOwogICAgIEFTU0VS
VChmb3VuZEVuY29kZWRQcmltYXJ5S2V5LmlzRW1wdHkoKSk7CisgICAgZm91bmQgPSBmYWxzZTsK
IAogICAgIExldmVsREJUcmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9uID0gSURCQmFja2lu
Z1N0b3JlOjpUcmFuc2FjdGlvbjo6bGV2ZWxEQlRyYW5zYWN0aW9uRnJvbSh0cmFuc2FjdGlvbik7
CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+IGxldmVsZGJLZXkgPSBJbmRleERhdGFLZXk6OmVuY29k
ZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBrZXkpOwpAQCAtOTk3LDkgKzEw
MTMsOSBAQCBib29sIElEQkJhY2tpbmdTdG9yZTo6ZmluZEtleUluSW5kZXgoSURCQmFja2luZ1N0
b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sCiAKICAgICBmb3IgKDs7KSB7CiAgICAgICAg
IGlmICghaXQtPmlzVmFsaWQoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICBpZiAoY29tcGFyZUluZGV4S2V5cyhpdC0+a2V5KCks
IGxldmVsZGJLZXkpID4gMCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOwogCiAgICAgICAgIGludDY0X3QgdmVyc2lvbjsKICAgICAgICAgY29uc3Qg
Y2hhciogcCA9IGRlY29kZVZhckludChpdC0+dmFsdWUoKS5iZWdpbigpLCBpdC0+dmFsdWUoKS5l
bmQoKSwgdmVyc2lvbik7CkBAIC0xMDA5LDM4ICsxMDI1LDUzIEBAIGJvb2wgSURCQmFja2luZ1N0
b3JlOjpmaW5kS2V5SW5JbmRleChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2Fj
dGlvbiwKICAgICAgICAgfQogICAgICAgICBmb3VuZEVuY29kZWRQcmltYXJ5S2V5LmFwcGVuZChw
LCBpdC0+dmFsdWUoKS5lbmQoKSAtIHApOwogCi0gICAgICAgIGlmICghdmVyc2lvbkV4aXN0cyhs
ZXZlbERCVHJhbnNhY3Rpb24sIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIHZlcnNpb24sIGZv
dW5kRW5jb2RlZFByaW1hcnlLZXkpKSB7CisgICAgICAgIGJvb2wgZXhpc3RzID0gZmFsc2U7Cisg
ICAgICAgIGJvb2wgb2sgPSB2ZXJzaW9uRXhpc3RzKGxldmVsREJUcmFuc2FjdGlvbiwgZGF0YWJh
c2VJZCwgb2JqZWN0U3RvcmVJZCwgdmVyc2lvbiwgZm91bmRFbmNvZGVkUHJpbWFyeUtleSwgZXhp
c3RzKTsKKyAgICAgICAgaWYgKCFvaykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgaWYgKCFleGlzdHMpIHsKICAgICAgICAgICAgIC8vIERlbGV0ZSBzdGFsZSBpbmRleCBkYXRh
IGVudHJ5IGFuZCBjb250aW51ZS4KICAgICAgICAgICAgIGxldmVsREJUcmFuc2FjdGlvbi0+cmVt
b3ZlKGl0LT5rZXkoKSk7CiAgICAgICAgICAgICBpdC0+bmV4dCgpOwogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIH0KLQorICAgICAgICBmb3VuZCA9IHRydWU7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIH0KIAotUGFzc1JlZlB0cjxJREJLZXk+IElEQkJhY2tpbmdTdG9yZTo6
Z2V0UHJpbWFyeUtleVZpYUluZGV4KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5z
YWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRf
dCBpbmRleElkLCBjb25zdCBJREJLZXkmIGtleSkKK2Jvb2wgSURCQmFja2luZ1N0b3JlOjpnZXRQ
cmltYXJ5S2V5VmlhSW5kZXgoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rp
b24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGlu
ZGV4SWQsIGNvbnN0IElEQktleSYga2V5LCBSZWZQdHI8SURCS2V5PiYgcHJpbWFyeUtleSkKIHsK
ICAgICBJREJfVFJBQ0UoIklEQkJhY2tpbmdTdG9yZTo6Z2V0UHJpbWFyeUtleVZpYUluZGV4Iik7
CiAKKyAgICBib29sIGZvdW5kID0gZmFsc2U7CiAgICAgVmVjdG9yPGNoYXI+IGZvdW5kRW5jb2Rl
ZFByaW1hcnlLZXk7Ci0gICAgaWYgKGZpbmRLZXlJbkluZGV4KHRyYW5zYWN0aW9uLCBkYXRhYmFz
ZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBrZXksIGZvdW5kRW5jb2RlZFByaW1hcnlLZXkp
KSB7Ci0gICAgICAgIFJlZlB0cjxJREJLZXk+IHByaW1hcnlLZXk7CisgICAgYm9vbCBvayA9IGZp
bmRLZXlJbkluZGV4KHRyYW5zYWN0aW9uLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRl
eElkLCBrZXksIGZvdW5kRW5jb2RlZFByaW1hcnlLZXksIGZvdW5kKTsKKyAgICBpZiAoIW9rKSB7
CisgICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvckdl
dFByaW1hcnlLZXlWaWFJbmRleCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAg
aWYgKGZvdW5kKSB7CiAgICAgICAgIGRlY29kZUlEQktleShmb3VuZEVuY29kZWRQcmltYXJ5S2V5
LmJlZ2luKCksIGZvdW5kRW5jb2RlZFByaW1hcnlLZXkuZW5kKCksIHByaW1hcnlLZXkpOwotICAg
ICAgICByZXR1cm4gcHJpbWFyeUtleS5yZWxlYXNlKCk7CisgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KIAotICAgIHJldHVybiAwOworICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIElEQkJh
Y2tpbmdTdG9yZTo6a2V5RXhpc3RzSW5JbmRleChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9u
KiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQs
IGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiBpbmRleEtleSwgUmVmUHRyPElEQktleT4m
IGZvdW5kUHJpbWFyeUtleSkKK2Jvb2wgSURCQmFja2luZ1N0b3JlOjprZXlFeGlzdHNJbkluZGV4
KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFi
YXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJL
ZXkmIGluZGV4S2V5LCBSZWZQdHI8SURCS2V5PiYgZm91bmRQcmltYXJ5S2V5LCBib29sJiBleGlz
dHMpCiB7CiAgICAgSURCX1RSQUNFKCJJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luSW5kZXgi
KTsKIAorICAgIGV4aXN0cyA9IGZhbHNlOwogICAgIFZlY3RvcjxjaGFyPiBmb3VuZEVuY29kZWRQ
cmltYXJ5S2V5OwotICAgIGlmICghZmluZEtleUluSW5kZXgodHJhbnNhY3Rpb24sIGRhdGFiYXNl
SWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIGluZGV4S2V5LCBmb3VuZEVuY29kZWRQcmltYXJ5
S2V5KSkKKyAgICBib29sIG9rID0gZmluZEtleUluSW5kZXgodHJhbnNhY3Rpb24sIGRhdGFiYXNl
SWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIGluZGV4S2V5LCBmb3VuZEVuY29kZWRQcmltYXJ5
S2V5LCBleGlzdHMpOworICAgIGlmICghb2spIHsKKyAgICAgICAgSW50ZXJuYWxFcnJvcihJREJM
ZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yS2V5RXhpc3RzSW5JbmRleCk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisgICAgaWYgKCFleGlzdHMpCisgICAgICAgIHJldHVybiB0cnVl
OwogCiAgICAgZGVjb2RlSURCS2V5KGZvdW5kRW5jb2RlZFByaW1hcnlLZXkuYmVnaW4oKSwgZm91
bmRFbmNvZGVkUHJpbWFyeUtleS5lbmQoKSwgZm91bmRQcmltYXJ5S2V5KTsKICAgICByZXR1cm4g
dHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJh
Y2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2lu
Z1N0b3JlLmgKaW5kZXggNGY1NTk2ODU4OGQ5OWUwNjVmMGQwZDJmMjg1OTM0YzZmZjgxZGY2Ni4u
OGNmNGMwYTM4ZDdiZjFjNmQyMmY5MTUyNjdhNDk1MDg2ZjY4YjIxNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmgKQEAgLTc3LDcg
Kzc3LDcgQEAgcHVibGljOgogICAgICAgICBpbnQ2NF90IG1fdmVyc2lvbjsKICAgICB9OwogCi0g
ICAgdmlydHVhbCBTdHJpbmcgZ2V0UmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24q
LCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5
Jik7CisgICAgdmlydHVhbCBib29sIGdldFJlY29yZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0
aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElE
QktleSYsIFN0cmluZyYgcmVjb3JkKTsKICAgICB2aXJ0dWFsIHZvaWQgcHV0UmVjb3JkKElEQkJh
Y2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5JiwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgUmVjb3JkSWRl
bnRpZmllciopOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhck9iamVjdFN0b3JlKElEQkJhY2tpbmdT
dG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCk7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVJlY29yZChJREJCYWNraW5nU3RvcmU6OlRy
YW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNv
bnN0IFJlY29yZElkZW50aWZpZXImKTsKQEAgLTg5LDggKzg5LDggQEAgcHVibGljOgogICAgIHZp
cnR1YWwgYm9vbCBjcmVhdGVJbmRleChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50
NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCBpc1VuaXF1ZSwgYm9v
bCBpc011bHRpRW50cnkpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVJbmRleChJREJCYWNraW5n
U3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIGludDY0X3QgaW5kZXhJZCk7CiAgICAgdmlydHVhbCB2b2lkIHB1dEluZGV4RGF0YUZv
clJlY29yZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlk
LCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5Jiwg
Y29uc3QgUmVjb3JkSWRlbnRpZmllciYpOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJLZXk+
IGdldFByaW1hcnlLZXlWaWFJbmRleChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50
NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwg
Y29uc3QgSURCS2V5Jik7Ci0gICAgdmlydHVhbCBib29sIGtleUV4aXN0c0luSW5kZXgoSURCQmFj
a2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYgaW5kZXhLZXksIFJlZlB0
cjxJREJLZXk+JiBmb3VuZFByaW1hcnlLZXkpOworICAgIHZpcnR1YWwgYm9vbCBnZXRQcmltYXJ5
S2V5VmlhSW5kZXgoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJh
c2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktl
eSYsIFJlZlB0cjxJREJLZXk+JiBwcmltYXJ5S2V5KTsKKyAgICB2aXJ0dWFsIGJvb2wga2V5RXhp
c3RzSW5JbmRleChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFz
ZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5
JiBpbmRleEtleSwgUmVmUHRyPElEQktleT4mIGZvdW5kUHJpbWFyeUtleSwgYm9vbCYgZXhpc3Rz
KTsKIAogICAgIGNsYXNzIEN1cnNvciA6IHB1YmxpYyBSZWZDb3VudGVkPEN1cnNvcj4gewogICAg
IHB1YmxpYzoKQEAgLTE2OCw3ICsxNjgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSURCQmFja2luZ1N0
b3JlKCk7CiAKIHByaXZhdGU6Ci0gICAgYm9vbCBmaW5kS2V5SW5JbmRleChJREJCYWNraW5nU3Rv
cmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiwgVmVjdG9yPGNoYXI+JiBmb3VuZEVu
Y29kZWRQcmltYXJ5S2V5KTsKKyAgICBib29sIGZpbmRLZXlJbkluZGV4KElEQkJhY2tpbmdTdG9y
ZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkmLCBWZWN0b3I8Y2hhcj4mIGZvdW5kRW5j
b2RlZFByaW1hcnlLZXksIGJvb2wmIGZvdW5kKTsKIAogICAgIFN0cmluZyBtX2lkZW50aWZpZXI7
CiAgICAgUmVmUHRyPElEQkZhY3RvcnlCYWNrZW5kSW1wbD4gbV9mYWN0b3J5OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBs
LmNwcAppbmRleCA5YWQ0YjhkNmUzNmJhZjM0ZTZlM2Q5NjUxYTkxMWI3NTE3MmE4MjllLi45Zjdj
Mjk3MDc1ZTQ1ODYxMTdmYWNjMjE1MzMwOWYzNWY0NDNlYTE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmNwcApA
QCAtMTg3LDkgKzE4NywxOSBAQCB2b2lkIElEQkluZGV4QmFja2VuZEltcGw6OkluZGV4UmVmZXJl
bmNlZFZhbHVlUmV0cmlldmFsT3BlcmF0aW9uOjpwZXJmb3JtKFNjcmlwdAogICAgICAgICBrZXkg
PSBiYWNraW5nU3RvcmVDdXJzb3ItPmtleSgpOwogICAgIH0KIAotICAgIFJlZlB0cjxJREJLZXk+
IHByaW1hcnlLZXkgPSBpbmRleC0+YmFja2luZ1N0b3JlKCktPmdldFByaW1hcnlLZXlWaWFJbmRl
eCh0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgaW5kZXgtPmRhdGFiYXNl
SWQoKSwgaW5kZXgtPm1fb2JqZWN0U3RvcmVCYWNrZW5kLT5pZCgpLCBpbmRleC0+aWQoKSwgKmtl
eSk7CisgICAgUmVmUHRyPElEQktleT4gcHJpbWFyeUtleTsKKyAgICBib29sIG9rID0gaW5kZXgt
PmJhY2tpbmdTdG9yZSgpLT5nZXRQcmltYXJ5S2V5VmlhSW5kZXgodHJhbnNhY3Rpb24tPmJhY2tp
bmdTdG9yZVRyYW5zYWN0aW9uKCksIGluZGV4LT5kYXRhYmFzZUlkKCksIGluZGV4LT5tX29iamVj
dFN0b3JlQmFja2VuZC0+aWQoKSwgaW5kZXgtPmlkKCksICprZXksIHByaW1hcnlLZXkpOworICAg
IGlmICghb2spIHsKKyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6
OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJy
b3IgaW4gZ2V0UHJpbWFyeUtleVZpYUluZGV4LiIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
IAotICAgIFN0cmluZyB2YWx1ZSA9IGluZGV4LT5iYWNraW5nU3RvcmUoKS0+Z2V0UmVjb3JkKHRy
YW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBpbmRleC0+ZGF0YWJhc2VJZCgp
LCBpbmRleC0+bV9vYmplY3RTdG9yZUJhY2tlbmQtPmlkKCksICpwcmltYXJ5S2V5KTsKKyAgICBT
dHJpbmcgdmFsdWU7CisgICAgb2sgPSBpbmRleC0+YmFja2luZ1N0b3JlKCktPmdldFJlY29yZCh0
cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgaW5kZXgtPmRhdGFiYXNlSWQo
KSwgaW5kZXgtPm1fb2JqZWN0U3RvcmVCYWNrZW5kLT5pZCgpLCAqcHJpbWFyeUtleSwgdmFsdWUp
OworICAgIGlmICghb2spIHsKKyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNl
RXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJu
YWwgZXJyb3IgaW4gZ2V0UmVjb3JkLiIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAg
IGlmICh2YWx1ZS5pc051bGwoKSkgewogICAgICAgICBjYWxsYmFja3MtPm9uU3VjY2VzcygpOwpA
QCAtMjE2LDcgKzIyNiwxMiBAQCB2b2lkIElEQkluZGV4QmFja2VuZEltcGw6OkluZGV4VmFsdWVS
ZXRyaWV2YWxPcGVyYXRpb246OnBlcmZvcm0oU2NyaXB0RXhlY3V0aW9uQwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgUmVmUHRyPElEQktleT4ga2V5UmVzdWx0ID0gaW5kZXgtPmJhY2tp
bmdTdG9yZSgpLT5nZXRQcmltYXJ5S2V5VmlhSW5kZXgodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9y
ZVRyYW5zYWN0aW9uKCksIGluZGV4LT5kYXRhYmFzZUlkKCksIGluZGV4LT5tX29iamVjdFN0b3Jl
QmFja2VuZC0+aWQoKSwgaW5kZXgtPmlkKCksICpiYWNraW5nU3RvcmVDdXJzb3ItPmtleSgpKTsK
KyAgICBSZWZQdHI8SURCS2V5PiBrZXlSZXN1bHQ7CisgICAgYm9vbCBvayA9IGluZGV4LT5iYWNr
aW5nU3RvcmUoKS0+Z2V0UHJpbWFyeUtleVZpYUluZGV4KHRyYW5zYWN0aW9uLT5iYWNraW5nU3Rv
cmVUcmFuc2FjdGlvbigpLCBpbmRleC0+ZGF0YWJhc2VJZCgpLCBpbmRleC0+bV9vYmplY3RTdG9y
ZUJhY2tlbmQtPmlkKCksIGluZGV4LT5pZCgpLCAqYmFja2luZ1N0b3JlQ3Vyc29yLT5rZXkoKSwg
a2V5UmVzdWx0KTsKKyAgICBpZiAoIW9rKSB7CisgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJ
REJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJv
ciwgIkludGVybmFsIGVycm9yIGluIGdldFByaW1hcnlLZXlWaWFJbmRleC4iKSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CiAgICAgaWYgKCFrZXlSZXN1bHQpIHsKICAgICAgICAgY2FsbGJhY2tz
LT5vblN1Y2Nlc3Moc3RhdGljX2Nhc3Q8SURCS2V5Kj4oMCkpOwogICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9i
amVjdFN0b3JlQmFja2VuZEltcGwuY3BwCmluZGV4IGNhOGFkNjE3MmRlOTgxNWI1NmVkZDMzMWE5
YTczNTZlY2YxOThkYTYuLjlmNjExY2IwMWJkOTM0NTQ4YzgzYmQxNmM5NmI5MGU0ZGI4N2YwM2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCkBAIC0xOTksNyArMTk5LDEyIEBAIHZvaWQg
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6T2JqZWN0U3RvcmVSZXRyaWV2YWxPcGVyYXRpb246
OnBlcmZvcm0oU2NyaXB0RXhlCiAgICAgICAgIGtleSA9IGJhY2tpbmdTdG9yZUN1cnNvci0+a2V5
KCk7CiAgICAgfQogCi0gICAgU3RyaW5nIHdpcmVEYXRhID0gb2JqZWN0U3RvcmUtPmJhY2tpbmdT
dG9yZSgpLT5nZXRSZWNvcmQodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCks
IG9iamVjdFN0b3JlLT5kYXRhYmFzZUlkKCksIG9iamVjdFN0b3JlLT5pZCgpLCAqa2V5KTsKKyAg
ICBTdHJpbmcgd2lyZURhdGE7CisgICAgYm9vbCBvayA9IG9iamVjdFN0b3JlLT5iYWNraW5nU3Rv
cmUoKS0+Z2V0UmVjb3JkKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBv
YmplY3RTdG9yZS0+ZGF0YWJhc2VJZCgpLCBvYmplY3RTdG9yZS0+aWQoKSwgKmtleSwgd2lyZURh
dGEpOworICAgIGlmICghb2spIHsKKyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFi
YXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50
ZXJuYWwgZXJyb3IgaW4gZ2V0UmVjb3JkLiIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAg
ICBpZiAod2lyZURhdGEuaXNOdWxsKCkpIHsKICAgICAgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3Mo
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjc3LDcgKzI4MiwxMCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAgICAgUmVmUHRyPElEQktleT4gZm91bmRQcmltYXJ5
S2V5OwotICAgICAgICBib29sIGZvdW5kID0gYmFja2luZ1N0b3JlLmtleUV4aXN0c0luSW5kZXgo
dHJhbnNhY3Rpb24sIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsICppbmRleEtl
eSwgZm91bmRQcmltYXJ5S2V5KTsKKyAgICAgICAgYm9vbCBmb3VuZCA9IGZhbHNlOworICAgICAg
ICBib29sIG9rID0gYmFja2luZ1N0b3JlLmtleUV4aXN0c0luSW5kZXgodHJhbnNhY3Rpb24sIGRh
dGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsICppbmRleEtleSwgZm91bmRQcmltYXJ5
S2V5LCBmb3VuZCk7CisgICAgICAgIC8vIEZJWE1FOiBQcm9wYWdhdGUgdGhpcyBlcnJvciB1cCB0
byBzY3JpcHQuCisgICAgICAgIEFTU0VSVF9VTlVTRUQob2ssIG9rKTsKICAgICAgICAgaWYgKCFm
b3VuZCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBpZiAocHJpbWFyeUtleSAm
JiBmb3VuZFByaW1hcnlLZXktPmlzRXF1YWwocHJpbWFyeUtleSkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkZha2VCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRmFrZUJhY2tpbmdTdG9yZS5oCmluZGV4IDc0MThiYTM2
YzdlZjJjNDVkN2VlZWMwYjMwZTQ4M2Y4NmRhMjk3MjQuLjU1ZmY1YjhkMGE5ODEzODM1MDY5Nzli
M2ZhNDc4MWJmMGNkYmFhM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvSURCRmFrZUJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvSURCRmFrZUJhY2tpbmdTdG9yZS5oCkBAIC00Myw3ICs0Myw2IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGJvb2wgY3JlYXRlT2JqZWN0U3RvcmUoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFi
YXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJ
REJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50KSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsg
fTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoVHJhbnNhY3Rpb24qLCBpbnQ2
NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkgT1ZFUlJJREUgeyB9CiAKLSAg
ICB2aXJ0dWFsIFN0cmluZyBnZXRSZWNvcmQoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNl
SWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5JikgT1ZFUlJJREUgeyByZXR1
cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgcHV0UmVjb3JkKFRyYW5zYWN0aW9uKiwg
aW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYs
IGNvbnN0IFN0cmluZyYgdmFsdWUsIFJlY29yZElkZW50aWZpZXIqKSBPVkVSUklERSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgY2xlYXJPYmplY3RTdG9yZShUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0
YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgZGVsZXRlUmVjb3JkKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2
NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFJlY29yZElkZW50aWZpZXImKSBPVkVSUklERSB7IH0K
QEAgLTU1LDggKzU0LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJbmRleChU
cmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBp
bnQ2NF90IGluZGV4SWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJv
b2wgaXNVbmlxdWUsIGJvb2wgaXNNdWx0aUVudHJ5KSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsg
fTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlSW5kZXgoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRh
dGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkKSBPVkVSUklE
RSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcHV0SW5kZXhEYXRhRm9yUmVjb3JkKFRyYW5zYWN0aW9u
KiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5k
ZXhJZCwgY29uc3QgSURCS2V5JiwgY29uc3QgUmVjb3JkSWRlbnRpZmllciYpIE9WRVJSSURFIHsg
fQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJLZXk+IGdldFByaW1hcnlLZXlWaWFJbmRleChU
cmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBp
bnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYpIE9WRVJSSURFIHsgcmV0dXJuIFBhc3NSZWZQ
dHI8SURCS2V5PigpOyB9Ci0gICAgdmlydHVhbCBib29sIGtleUV4aXN0c0luSW5kZXgoVHJhbnNh
Y3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlaWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRf
dCBpbmRleElkLCBjb25zdCBJREJLZXkmIGluZGV4S2V5LCBSZWZQdHI8SURCS2V5PiYgZm91bmRQ
cmltYXJ5S2V5KSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCBQYXNz
UmVmUHRyPEN1cnNvcj4gb3Blbk9iamVjdFN0b3JlS2V5Q3Vyc29yKFRyYW5zYWN0aW9uKiwgaW50
NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleVJhbmdl
KiwgSURCQ3Vyc29yOjpEaXJlY3Rpb24pIE9WRVJSSURFIHsgcmV0dXJuIFBhc3NSZWZQdHI8Q3Vy
c29yPigpOyB9CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1cnNvcj4gb3Blbk9iamVjdFN0b3Jl
Q3Vyc29yKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIGNvbnN0IElEQktleVJhbmdlKiwgSURCQ3Vyc29yOjpEaXJlY3Rpb24pIE9WRVJSSURF
IHsgcmV0dXJuIFBhc3NSZWZQdHI8Q3Vyc29yPigpOyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177594</attachid>
            <date>2012-12-04 16:07:53 -0800</date>
            <delta_ts>2012-12-04 16:31:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103782-20121204160518.patch</filename>
            <type>text/plain</type>
            <size>19188</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWFjODllZjJhYjZjNjA1
YzIxZmM2MjBkMzY1MzBmOTZiYTVkOTgyMS4uNzYzNGVkOTMyNDg0MjVjNzBkODUwYWMwZTk2ODYz
YTA5MmIzMTZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTExLTMwICBEYXZp
ZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFBy
b3BhZ2F0ZSBtb3JlIGxldmVsZGIgZXJyb3JzIHRvIElEQkluZGV4IGFuZCBJREJPYmplY3RTdG9y
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzNzgy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaW5kZXgu
Z2V0W0tleV0oKSBhbmQgb2JqZWN0U3RvcmUuZ2V0KCkgd2lsbCByZWNlaXZlIG1vcmUgZXJyb3Ig
ZXZlbnRzLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKToKKyAgICAg
ICAgKFdlYkNvcmU6OnZlcnNpb25FeGlzdHMpOgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2lu
Z1N0b3JlOjpmaW5kS2V5SW5JbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3Rv
cmU6OmdldFByaW1hcnlLZXlWaWFJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5n
U3RvcmU6OmtleUV4aXN0c0luSW5kZXgpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
QkJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoSURCQmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQkluZGV4QmFja2VuZEltcGw6OmdldEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkluZGV4QmFja2VuZEltcGw6OmdldEtleUludGVybmFsKToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmdldEludGVybmFsKToKKyAgICAgICAgKFdl
YkNvcmUpOgorCiAyMDEyLTEyLTA0ICBKdWxpZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJr
aXQub3JnPgogCiAgICAgICAgIEhlYXAtdXNlLWFmdGVyLWZyZWUgaW4gV2ViQ29yZTo6UmVuZGVy
TGF5ZXI6OnBhaW50TGlzdCBbTWF0aE1MXQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBi
ODQwNmIwMDA4YTk1YmUyMDEzNmIxZjkxNTA3Y2ZkOTU0ZWMwMTkzLi4zOTZmYjNjOGNmODBkYzI5
NzA1YmI2ODNmOTY0MGFmNDA0MTA2NjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEzIEBACisyMDEyLTExLTMwICBEYXZpZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFByb3BhZ2F0ZSBtb3JlIGxldmVsZGIgZXJyb3Jz
IHRvIElEQkluZGV4IGFuZCBJREJPYmplY3RTdG9yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzNzgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0cy9JREJGYWtlQmFja2luZ1N0b3JlLmg6Cisg
ICAgICAgICAgUmVtb3ZlIGNoYW5nZWQgbWV0aG9kcyB0aGF0IGFyZSBubyBsb25nZXIgbmVjZXNz
YXJ5LgorCiAyMDEyLTEyLTA0ICBTdGVwaGVuIFdoaXRlICA8c2Vub3JibGFuY29AY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJvbGxlZCBERVBTICh3L0xpbnV4IGJ1aWxkIGZpeCkuICBVbnJldmll
d2VkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFj
a2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tp
bmdTdG9yZS5jcHAKaW5kZXggZjc0NTViODc4MDUzOWQxYTgzNDU2NDIxNzAxNTQxZTE2OGE0MmVi
Mi4uYjc2MTU3ZTY0ZTY3NWQzMWJhYzUwN2Y4OGY4MmM1ZjhkZTI4MDQ1MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwCkBA
IC02NCw2ICs2NCw5IEBAIGVudW0gSURCTGV2ZWxEQkJhY2tpbmdTdG9yZUludGVybmFsRXJyb3JU
eXBlIHsKICAgICBJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yS2V5RXhpc3RzSW5PYmpl
Y3RTdG9yZSwKICAgICBJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yTG9hZEN1cnJlbnRS
b3csCiAgICAgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvclNldHVwTWV0YWRhdGEsCisg
ICAgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvckdldFByaW1hcnlLZXlWaWFJbmRleCwK
KyAgICBJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yS2V5RXhpc3RzSW5JbmRleCwKKyAg
ICBJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yVmVyc2lvbkV4aXN0cywKICAgICBJREJM
ZXZlbERCQmFja2luZ1N0b3JlSW50ZXJuYWxFcnJvck1heCwKIH07CiBzdGF0aWMgaW5saW5lIHZv
aWQgcmVjb3JkSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlSW50ZXJuYWxFcnJv
clR5cGUgdHlwZSkKQEAgLTYzNyw3ICs2NDAsNyBAQCB2b2lkIElEQkJhY2tpbmdTdG9yZTo6ZGVs
ZXRlT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpbwog
ICAgIGNsZWFyT2JqZWN0U3RvcmUodHJhbnNhY3Rpb24sIGRhdGFiYXNlSWQsIG9iamVjdFN0b3Jl
SWQpOwogfQogCi1TdHJpbmcgSURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQoSURCQmFja2luZ1N0
b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkmIGtleSkKK2Jvb2wgSURCQmFja2luZ1N0b3Jl
OjpnZXRSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGlu
dDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkmIGtl
eSwgU3RyaW5nJiByZWNvcmQpCiB7CiAgICAgSURCX1RSQUNFKCJJREJCYWNraW5nU3RvcmU6Omdl
dFJlY29yZCIpOwogICAgIExldmVsREJUcmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9uID0g
SURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbjo6bGV2ZWxEQlRyYW5zYWN0aW9uRnJvbSh0cmFu
c2FjdGlvbik7CkBAIC02NDUsMTggKzY0OCwyNCBAQCBTdHJpbmcgSURCQmFja2luZ1N0b3JlOjpn
ZXRSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludAog
ICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBsZXZlbGRiS2V5ID0gT2JqZWN0U3RvcmVEYXRhS2V5Ojpl
bmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwga2V5KTsKICAgICBWZWN0b3I8Y2hhcj4g
ZGF0YTsKIAotICAgIGlmICghbGV2ZWxEQlRyYW5zYWN0aW9uLT5nZXQobGV2ZWxkYktleSwgZGF0
YSkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICBib29sIGZvdW5kID0gZmFsc2U7Cisg
ICAgYm9vbCBvayA9IGxldmVsREJUcmFuc2FjdGlvbi0+c2FmZUdldChsZXZlbGRiS2V5LCBkYXRh
LCBmb3VuZCk7CisgICAgaWYgKCFvaykgeworICAgICAgICByZWNvcmQgPSBTdHJpbmcoKTsKKyAg
ICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yR2V0UmVj
b3JkKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAogICAgIGludDY0X3QgdmVyc2lv
bjsKICAgICBjb25zdCBjaGFyKiBwID0gZGVjb2RlVmFySW50KGRhdGEuYmVnaW4oKSwgZGF0YS5l
bmQoKSwgdmVyc2lvbik7CiAgICAgaWYgKCFwKSB7CiAgICAgICAgIEludGVybmFsRXJyb3IoSURC
TGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvckdldFJlY29yZCk7Ci0gICAgICAgIHJldHVybiBT
dHJpbmcoKTsKKyAgICAgICAgcmVjb3JkID0gU3RyaW5nKCk7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9Ci0gICAgKHZvaWQpIHZlcnNpb247CiAKLSAgICByZXR1cm4gZGVjb2RlU3RyaW5n
KHAsIGRhdGEuZW5kKCkpOworICAgIHJlY29yZCA9IGRlY29kZVN0cmluZyhwLCBkYXRhLmVuZCgp
KTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGludDY0X3QgZ2V0TmV3VmVyc2lvbk51
bWJlcihMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQs
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCkKQEAgLTk3NCwyMSArOTgzLDI4IEBAIHN0YXRpYyBib29s
IGZpbmRHcmVhdGVzdEtleUxlc3NUaGFuT3JFcXVhbChMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5z
YWN0aW9uLCBjb25zCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29sIHZlcnNpb25F
eGlzdHMoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlk
LCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgdmVyc2lvbiwgY29uc3QgVmVjdG9yPGNo
YXI+JiBlbmNvZGVkUHJpbWFyeUtleSkKK3N0YXRpYyBib29sIHZlcnNpb25FeGlzdHMoTGV2ZWxE
QlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIGludDY0X3QgdmVyc2lvbiwgY29uc3QgVmVjdG9yPGNoYXI+JiBlbmNvZGVk
UHJpbWFyeUtleSwgYm9vbCYgZXhpc3RzKQogewogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBrZXkg
PSBFeGlzdHNFbnRyeUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGVuY29k
ZWRQcmltYXJ5S2V5KTsKICAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKIAotICAgIGlmICghdHJhbnNh
Y3Rpb24tPmdldChrZXksIGRhdGEpKQorICAgIGJvb2wgb2sgPSB0cmFuc2FjdGlvbi0+c2FmZUdl
dChrZXksIGRhdGEsIGV4aXN0cyk7CisgICAgaWYgKCFvaykgeworICAgICAgICBJbnRlcm5hbEVy
cm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3JWZXJzaW9uRXhpc3RzKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBpZiAoIWV4aXN0cykKKyAgICAgICAgcmV0dXJu
IHRydWU7CiAKLSAgICByZXR1cm4gZGVjb2RlSW50KGRhdGEuYmVnaW4oKSwgZGF0YS5lbmQoKSkg
PT0gdmVyc2lvbjsKKyAgICBleGlzdHMgPSAoZGVjb2RlSW50KGRhdGEuYmVnaW4oKSwgZGF0YS5l
bmQoKSkgPT0gdmVyc2lvbik7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSURCQmFja2lu
Z1N0b3JlOjpmaW5kS2V5SW5JbmRleChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFu
c2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0
X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiBrZXksIFZlY3RvcjxjaGFyPiYgZm91bmRFbmNvZGVk
UHJpbWFyeUtleSkKK2Jvb2wgSURCQmFja2luZ1N0b3JlOjpmaW5kS2V5SW5JbmRleChJREJCYWNr
aW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiBrZXks
IFZlY3RvcjxjaGFyPiYgZm91bmRFbmNvZGVkUHJpbWFyeUtleSwgYm9vbCYgZm91bmQpCiB7CiAg
ICAgSURCX1RSQUNFKCJJREJCYWNraW5nU3RvcmU6OmZpbmRLZXlJbkluZGV4Iik7CiAgICAgQVNT
RVJUKGZvdW5kRW5jb2RlZFByaW1hcnlLZXkuaXNFbXB0eSgpKTsKKyAgICBmb3VuZCA9IGZhbHNl
OwogCiAgICAgTGV2ZWxEQlRyYW5zYWN0aW9uKiBsZXZlbERCVHJhbnNhY3Rpb24gPSBJREJCYWNr
aW5nU3RvcmU6OlRyYW5zYWN0aW9uOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRyYW5zYWN0aW9u
KTsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gbGV2ZWxkYktleSA9IEluZGV4RGF0YUtleTo6ZW5j
b2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIGtleSk7CkBAIC05OTcsOSAr
MTAxMyw5IEBAIGJvb2wgSURCQmFja2luZ1N0b3JlOjpmaW5kS2V5SW5JbmRleChJREJCYWNraW5n
U3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwKIAogICAgIGZvciAoOzspIHsKICAgICAg
ICAgaWYgKCFpdC0+aXNWYWxpZCgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGlmIChjb21wYXJlSW5kZXhLZXlzKGl0LT5rZXko
KSwgbGV2ZWxkYktleSkgPiAwKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKICAgICAgICAgaW50NjRfdCB2ZXJzaW9uOwogICAgICAgICBjb25z
dCBjaGFyKiBwID0gZGVjb2RlVmFySW50KGl0LT52YWx1ZSgpLmJlZ2luKCksIGl0LT52YWx1ZSgp
LmVuZCgpLCB2ZXJzaW9uKTsKQEAgLTEwMDksMzggKzEwMjUsNTMgQEAgYm9vbCBJREJCYWNraW5n
U3RvcmU6OmZpbmRLZXlJbkluZGV4KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5z
YWN0aW9uLAogICAgICAgICB9CiAgICAgICAgIGZvdW5kRW5jb2RlZFByaW1hcnlLZXkuYXBwZW5k
KHAsIGl0LT52YWx1ZSgpLmVuZCgpIC0gcCk7CiAKLSAgICAgICAgaWYgKCF2ZXJzaW9uRXhpc3Rz
KGxldmVsREJUcmFuc2FjdGlvbiwgZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgdmVyc2lvbiwg
Zm91bmRFbmNvZGVkUHJpbWFyeUtleSkpIHsKKyAgICAgICAgYm9vbCBleGlzdHMgPSBmYWxzZTsK
KyAgICAgICAgYm9vbCBvayA9IHZlcnNpb25FeGlzdHMobGV2ZWxEQlRyYW5zYWN0aW9uLCBkYXRh
YmFzZUlkLCBvYmplY3RTdG9yZUlkLCB2ZXJzaW9uLCBmb3VuZEVuY29kZWRQcmltYXJ5S2V5LCBl
eGlzdHMpOworICAgICAgICBpZiAoIW9rKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICBpZiAoIWV4aXN0cykgewogICAgICAgICAgICAgLy8gRGVsZXRlIHN0YWxlIGluZGV4IGRh
dGEgZW50cnkgYW5kIGNvbnRpbnVlLgogICAgICAgICAgICAgbGV2ZWxEQlRyYW5zYWN0aW9uLT5y
ZW1vdmUoaXQtPmtleSgpKTsKICAgICAgICAgICAgIGl0LT5uZXh0KCk7CiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgfQotCisgICAgICAgIGZvdW5kID0gdHJ1ZTsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogfQogCi1QYXNzUmVmUHRyPElEQktleT4gSURCQmFja2luZ1N0b3Jl
OjpnZXRQcmltYXJ5S2V5VmlhSW5kZXgoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJh
bnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2
NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYga2V5KQorYm9vbCBJREJCYWNraW5nU3RvcmU6Omdl
dFByaW1hcnlLZXlWaWFJbmRleChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2Fj
dGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3Qg
aW5kZXhJZCwgY29uc3QgSURCS2V5JiBrZXksIFJlZlB0cjxJREJLZXk+JiBwcmltYXJ5S2V5KQog
ewogICAgIElEQl9UUkFDRSgiSURCQmFja2luZ1N0b3JlOjpnZXRQcmltYXJ5S2V5VmlhSW5kZXgi
KTsKIAorICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKICAgICBWZWN0b3I8Y2hhcj4gZm91bmRFbmNv
ZGVkUHJpbWFyeUtleTsKLSAgICBpZiAoZmluZEtleUluSW5kZXgodHJhbnNhY3Rpb24sIGRhdGFi
YXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIGtleSwgZm91bmRFbmNvZGVkUHJpbWFyeUtl
eSkpIHsKLSAgICAgICAgUmVmUHRyPElEQktleT4gcHJpbWFyeUtleTsKKyAgICBib29sIG9rID0g
ZmluZEtleUluSW5kZXgodHJhbnNhY3Rpb24sIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGlu
ZGV4SWQsIGtleSwgZm91bmRFbmNvZGVkUHJpbWFyeUtleSwgZm91bmQpOworICAgIGlmICghb2sp
IHsKKyAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9y
R2V0UHJpbWFyeUtleVZpYUluZGV4KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAg
ICBpZiAoZm91bmQpIHsKICAgICAgICAgZGVjb2RlSURCS2V5KGZvdW5kRW5jb2RlZFByaW1hcnlL
ZXkuYmVnaW4oKSwgZm91bmRFbmNvZGVkUHJpbWFyeUtleS5lbmQoKSwgcHJpbWFyeUtleSk7Ci0g
ICAgICAgIHJldHVybiBwcmltYXJ5S2V5LnJlbGVhc2UoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSURC
QmFja2luZ1N0b3JlOjprZXlFeGlzdHNJbkluZGV4KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rp
b24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkmIGluZGV4S2V5LCBSZWZQdHI8SURCS2V5
PiYgZm91bmRQcmltYXJ5S2V5KQorYm9vbCBJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luSW5k
ZXgoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0
YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElE
QktleSYgaW5kZXhLZXksIFJlZlB0cjxJREJLZXk+JiBmb3VuZFByaW1hcnlLZXksIGJvb2wmIGV4
aXN0cykKIHsKICAgICBJREJfVFJBQ0UoIklEQkJhY2tpbmdTdG9yZTo6a2V5RXhpc3RzSW5JbmRl
eCIpOwogCisgICAgZXhpc3RzID0gZmFsc2U7CiAgICAgVmVjdG9yPGNoYXI+IGZvdW5kRW5jb2Rl
ZFByaW1hcnlLZXk7Ci0gICAgaWYgKCFmaW5kS2V5SW5JbmRleCh0cmFuc2FjdGlvbiwgZGF0YWJh
c2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgaW5kZXhLZXksIGZvdW5kRW5jb2RlZFByaW1h
cnlLZXkpKQorICAgIGJvb2wgb2sgPSBmaW5kS2V5SW5JbmRleCh0cmFuc2FjdGlvbiwgZGF0YWJh
c2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgaW5kZXhLZXksIGZvdW5kRW5jb2RlZFByaW1h
cnlLZXksIGV4aXN0cyk7CisgICAgaWYgKCFvaykgeworICAgICAgICBJbnRlcm5hbEVycm9yKElE
QkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3JLZXlFeGlzdHNJbkluZGV4KTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBpZiAoIWV4aXN0cykKKyAgICAgICAgcmV0dXJuIHRy
dWU7CiAKICAgICBkZWNvZGVJREJLZXkoZm91bmRFbmNvZGVkUHJpbWFyeUtleS5iZWdpbigpLCBm
b3VuZEVuY29kZWRQcmltYXJ5S2V5LmVuZCgpLCBmb3VuZFByaW1hcnlLZXkpOwogICAgIHJldHVy
biB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
QmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNr
aW5nU3RvcmUuaAppbmRleCA0ZjU1OTY4NTg4ZDk5ZTA2NWYwZDBkMmYyODU5MzRjNmZmODFkZjY2
Li44Y2Y0YzBhMzhkN2JmMWM2ZDIyZjkxNTI2N2E0OTUwODZmNjhiMjE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaApAQCAtNzcs
NyArNzcsNyBAQCBwdWJsaWM6CiAgICAgICAgIGludDY0X3QgbV92ZXJzaW9uOwogICAgIH07CiAK
LSAgICB2aXJ0dWFsIFN0cmluZyBnZXRSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlv
biosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJL
ZXkmKTsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0UmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNh
Y3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3Qg
SURCS2V5JiwgU3RyaW5nJiByZWNvcmQpOwogICAgIHZpcnR1YWwgdm9pZCBwdXRSZWNvcmQoSURC
QmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkmLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBSZWNvcmRJ
ZGVudGlmaWVyKik7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyT2JqZWN0U3RvcmUoSURCQmFja2lu
Z1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlUmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6
VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwg
Y29uc3QgUmVjb3JkSWRlbnRpZmllciYpOwpAQCAtODksOCArODksOCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBib29sIGNyZWF0ZUluZGV4KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBp
bnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElk
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGlzVW5pcXVlLCBi
b29sIGlzTXVsdGlFbnRyeSk7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUluZGV4KElEQkJhY2tp
bmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgaW50NjRfdCBpbmRleElkKTsKICAgICB2aXJ0dWFsIHZvaWQgcHV0SW5kZXhEYXRh
Rm9yUmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNl
SWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkm
LCBjb25zdCBSZWNvcmRJZGVudGlmaWVyJik7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQktl
eT4gZ2V0UHJpbWFyeUtleVZpYUluZGV4KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBp
bnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElk
LCBjb25zdCBJREJLZXkmKTsKLSAgICB2aXJ0dWFsIGJvb2wga2V5RXhpc3RzSW5JbmRleChJREJC
YWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiBpbmRleEtleSwgUmVm
UHRyPElEQktleT4mIGZvdW5kUHJpbWFyeUtleSk7CisgICAgdmlydHVhbCBib29sIGdldFByaW1h
cnlLZXlWaWFJbmRleChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRh
YmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURC
S2V5JiwgUmVmUHRyPElEQktleT4mIHByaW1hcnlLZXkpOworICAgIHZpcnR1YWwgYm9vbCBrZXlF
eGlzdHNJbkluZGV4KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFi
YXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJL
ZXkmIGluZGV4S2V5LCBSZWZQdHI8SURCS2V5PiYgZm91bmRQcmltYXJ5S2V5LCBib29sJiBleGlz
dHMpOwogCiAgICAgY2xhc3MgQ3Vyc29yIDogcHVibGljIFJlZkNvdW50ZWQ8Q3Vyc29yPiB7CiAg
ICAgcHVibGljOgpAQCAtMTY4LDcgKzE2OCw3IEBAIHByb3RlY3RlZDoKICAgICBJREJCYWNraW5n
U3RvcmUoKTsKIAogcHJpdmF0ZToKLSAgICBib29sIGZpbmRLZXlJbkluZGV4KElEQkJhY2tpbmdT
dG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkmLCBWZWN0b3I8Y2hhcj4mIGZvdW5k
RW5jb2RlZFByaW1hcnlLZXkpOworICAgIGJvb2wgZmluZEtleUluSW5kZXgoSURCQmFja2luZ1N0
b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYsIFZlY3RvcjxjaGFyPiYgZm91bmRF
bmNvZGVkUHJpbWFyeUtleSwgYm9vbCYgZm91bmQpOwogCiAgICAgU3RyaW5nIG1faWRlbnRpZmll
cjsKICAgICBSZWZQdHI8SURCRmFjdG9yeUJhY2tlbmRJbXBsPiBtX2ZhY3Rvcnk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZElt
cGwuY3BwCmluZGV4IDlhZDRiOGQ2ZTM2YmFmMzRlNmUzZDk2NTFhOTExYjc1MTcyYTgyOWUuLjlm
N2MyOTcwNzVlNDU4NjExN2ZhY2MyMTUzMzA5ZjM1ZjQ0M2VhMTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwuY3Bw
CkBAIC0xODcsOSArMTg3LDE5IEBAIHZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6SW5kZXhSZWZl
cmVuY2VkVmFsdWVSZXRyaWV2YWxPcGVyYXRpb246OnBlcmZvcm0oU2NyaXB0CiAgICAgICAgIGtl
eSA9IGJhY2tpbmdTdG9yZUN1cnNvci0+a2V5KCk7CiAgICAgfQogCi0gICAgUmVmUHRyPElEQktl
eT4gcHJpbWFyeUtleSA9IGluZGV4LT5iYWNraW5nU3RvcmUoKS0+Z2V0UHJpbWFyeUtleVZpYUlu
ZGV4KHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBpbmRleC0+ZGF0YWJh
c2VJZCgpLCBpbmRleC0+bV9vYmplY3RTdG9yZUJhY2tlbmQtPmlkKCksIGluZGV4LT5pZCgpLCAq
a2V5KTsKKyAgICBSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5OworICAgIGJvb2wgb2sgPSBpbmRl
eC0+YmFja2luZ1N0b3JlKCktPmdldFByaW1hcnlLZXlWaWFJbmRleCh0cmFuc2FjdGlvbi0+YmFj
a2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgaW5kZXgtPmRhdGFiYXNlSWQoKSwgaW5kZXgtPm1fb2Jq
ZWN0U3RvcmVCYWNrZW5kLT5pZCgpLCBpbmRleC0+aWQoKSwgKmtleSwgcHJpbWFyeUtleSk7Cisg
ICAgaWYgKCFvaykgeworICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJv
cjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJJbnRlcm5hbCBl
cnJvciBpbiBnZXRQcmltYXJ5S2V5VmlhSW5kZXguIikpOworICAgICAgICByZXR1cm47CisgICAg
fQogCi0gICAgU3RyaW5nIHZhbHVlID0gaW5kZXgtPmJhY2tpbmdTdG9yZSgpLT5nZXRSZWNvcmQo
dHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIGluZGV4LT5kYXRhYmFzZUlk
KCksIGluZGV4LT5tX29iamVjdFN0b3JlQmFja2VuZC0+aWQoKSwgKnByaW1hcnlLZXkpOworICAg
IFN0cmluZyB2YWx1ZTsKKyAgICBvayA9IGluZGV4LT5iYWNraW5nU3RvcmUoKS0+Z2V0UmVjb3Jk
KHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBpbmRleC0+ZGF0YWJhc2VJ
ZCgpLCBpbmRleC0+bV9vYmplY3RTdG9yZUJhY2tlbmQtPmlkKCksICpwcmltYXJ5S2V5LCB2YWx1
ZSk7CisgICAgaWYgKCFvaykgeworICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJh
c2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJJbnRl
cm5hbCBlcnJvciBpbiBnZXRSZWNvcmQuIikpOworICAgICAgICByZXR1cm47CisgICAgfQogCiAg
ICAgaWYgKHZhbHVlLmlzTnVsbCgpKSB7CiAgICAgICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKCk7
CkBAIC0yMTYsNyArMjI2LDEyIEBAIHZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6SW5kZXhWYWx1
ZVJldHJpZXZhbE9wZXJhdGlvbjo6cGVyZm9ybShTY3JpcHRFeGVjdXRpb25DCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8SURCS2V5PiBrZXlSZXN1bHQgPSBpbmRleC0+YmFj
a2luZ1N0b3JlKCktPmdldFByaW1hcnlLZXlWaWFJbmRleCh0cmFuc2FjdGlvbi0+YmFja2luZ1N0
b3JlVHJhbnNhY3Rpb24oKSwgaW5kZXgtPmRhdGFiYXNlSWQoKSwgaW5kZXgtPm1fb2JqZWN0U3Rv
cmVCYWNrZW5kLT5pZCgpLCBpbmRleC0+aWQoKSwgKmJhY2tpbmdTdG9yZUN1cnNvci0+a2V5KCkp
OworICAgIFJlZlB0cjxJREJLZXk+IGtleVJlc3VsdDsKKyAgICBib29sIG9rID0gaW5kZXgtPmJh
Y2tpbmdTdG9yZSgpLT5nZXRQcmltYXJ5S2V5VmlhSW5kZXgodHJhbnNhY3Rpb24tPmJhY2tpbmdT
dG9yZVRyYW5zYWN0aW9uKCksIGluZGV4LT5kYXRhYmFzZUlkKCksIGluZGV4LT5tX29iamVjdFN0
b3JlQmFja2VuZC0+aWQoKSwgaW5kZXgtPmlkKCksICpiYWNraW5nU3RvcmVDdXJzb3ItPmtleSgp
LCBrZXlSZXN1bHQpOworICAgIGlmICghb2spIHsKKyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9y
KElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVy
cm9yLCAiSW50ZXJuYWwgZXJyb3IgaW4gZ2V0UHJpbWFyeUtleVZpYUluZGV4LiIpKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KICAgICBpZiAoIWtleVJlc3VsdCkgewogICAgICAgICBjYWxsYmFj
a3MtPm9uU3VjY2VzcyhzdGF0aWNfY2FzdDxJREJLZXkqPigwKSk7CiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKaW5kZXggY2E4YWQ2MTcyZGU5ODE1YjU2ZWRkMzMx
YTlhNzM1NmVjZjE5OGRhNi4uOWY2MTFjYjAxYmQ5MzQ1NDhjODNiZDE2Yzk2YjkwZTRkYjg3ZjAz
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKQEAgLTE5OSw3ICsxOTksMTIgQEAgdm9p
ZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpPYmplY3RTdG9yZVJldHJpZXZhbE9wZXJhdGlv
bjo6cGVyZm9ybShTY3JpcHRFeGUKICAgICAgICAga2V5ID0gYmFja2luZ1N0b3JlQ3Vyc29yLT5r
ZXkoKTsKICAgICB9CiAKLSAgICBTdHJpbmcgd2lyZURhdGEgPSBvYmplY3RTdG9yZS0+YmFja2lu
Z1N0b3JlKCktPmdldFJlY29yZCh0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24o
KSwgb2JqZWN0U3RvcmUtPmRhdGFiYXNlSWQoKSwgb2JqZWN0U3RvcmUtPmlkKCksICprZXkpOwor
ICAgIFN0cmluZyB3aXJlRGF0YTsKKyAgICBib29sIG9rID0gb2JqZWN0U3RvcmUtPmJhY2tpbmdT
dG9yZSgpLT5nZXRSZWNvcmQodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCks
IG9iamVjdFN0b3JlLT5kYXRhYmFzZUlkKCksIG9iamVjdFN0b3JlLT5pZCgpLCAqa2V5LCB3aXJl
RGF0YSk7CisgICAgaWYgKCFvaykgeworICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0
YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJJ
bnRlcm5hbCBlcnJvciBpbiBnZXRSZWNvcmQuIikpOworICAgICAgICByZXR1cm47CisgICAgfQog
ICAgIGlmICh3aXJlRGF0YS5pc051bGwoKSkgewogICAgICAgICBjYWxsYmFja3MtPm9uU3VjY2Vz
cygpOwogICAgICAgICByZXR1cm47CkBAIC0yNzcsNyArMjgyLDEwIEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgICAgICBSZWZQdHI8SURCS2V5PiBmb3VuZFByaW1h
cnlLZXk7Ci0gICAgICAgIGJvb2wgZm91bmQgPSBiYWNraW5nU3RvcmUua2V5RXhpc3RzSW5JbmRl
eCh0cmFuc2FjdGlvbiwgZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgKmluZGV4
S2V5LCBmb3VuZFByaW1hcnlLZXkpOworICAgICAgICBib29sIGZvdW5kID0gZmFsc2U7CisgICAg
ICAgIGJvb2wgb2sgPSBiYWNraW5nU3RvcmUua2V5RXhpc3RzSW5JbmRleCh0cmFuc2FjdGlvbiwg
ZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgKmluZGV4S2V5LCBmb3VuZFByaW1h
cnlLZXksIGZvdW5kKTsKKyAgICAgICAgLy8gRklYTUU6IFByb3BhZ2F0ZSB0aGlzIGVycm9yIHVw
IHRvIHNjcmlwdC4KKyAgICAgICAgQVNTRVJUX1VOVVNFRChvaywgb2spOwogICAgICAgICBpZiAo
IWZvdW5kKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGlmIChwcmltYXJ5S2V5
ICYmIGZvdW5kUHJpbWFyeUtleS0+aXNFcXVhbChwcmltYXJ5S2V5KSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRmFrZUJhY2tpbmdTdG9yZS5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJGYWtlQmFja2luZ1N0b3JlLmgKaW5kZXggNzQxOGJh
MzZjN2VmMmM0NWQ3ZWVlYzBiMzBlNDgzZjg2ZGEyOTcyNC4uNTVmZjViOGQwYTk4MTM4MzUwNjk3
OWIzZmE0NzgxYmYwY2RiYWEzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9JREJGYWtlQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9JREJGYWtlQmFja2luZ1N0b3JlLmgKQEAgLTQzLDcgKzQzLDYgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgYm9vbCBjcmVhdGVPYmplY3RTdG9yZShUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0
YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNl
OyB9OwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShUcmFuc2FjdGlvbiosIGlu
dDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKSBPVkVSUklERSB7IH0KIAot
ICAgIHZpcnR1YWwgU3RyaW5nIGdldFJlY29yZChUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJh
c2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkmKSBPVkVSUklERSB7IHJl
dHVybiBTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBwdXRSZWNvcmQoVHJhbnNhY3Rpb24q
LCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5
JiwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgUmVjb3JkSWRlbnRpZmllciopIE9WRVJSSURFIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBjbGVhck9iamVjdFN0b3JlKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBk
YXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpIE9WRVJSSURFIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBkZWxldGVSZWNvcmQoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgUmVjb3JkSWRlbnRpZmllciYpIE9WRVJSSURFIHsg
fQpAQCAtNTUsOCArNTQsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGNyZWF0ZUluZGV4
KFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQs
IGludDY0X3QgaW5kZXhJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwg
Ym9vbCBpc1VuaXF1ZSwgYm9vbCBpc011bHRpRW50cnkpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNl
OyB9OwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVJbmRleChUcmFuc2FjdGlvbiosIGludDY0X3Qg
ZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQpIE9WRVJS
SURFIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwdXRJbmRleERhdGFGb3JSZWNvcmQoVHJhbnNhY3Rp
b24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBp
bmRleElkLCBjb25zdCBJREJLZXkmLCBjb25zdCBSZWNvcmRJZGVudGlmaWVyJikgT1ZFUlJJREUg
eyB9Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQktleT4gZ2V0UHJpbWFyeUtleVZpYUluZGV4
KFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQs
IGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JikgT1ZFUlJJREUgeyByZXR1cm4gUGFzc1Jl
ZlB0cjxJREJLZXk+KCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wga2V5RXhpc3RzSW5JbmRleChUcmFu
c2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VpZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2
NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYgaW5kZXhLZXksIFJlZlB0cjxJREJLZXk+JiBmb3Vu
ZFByaW1hcnlLZXkpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8Q3Vyc29yPiBvcGVuT2JqZWN0U3RvcmVLZXlDdXJzb3IoVHJhbnNhY3Rpb24qLCBp
bnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5UmFu
Z2UqLCBJREJDdXJzb3I6OkRpcmVjdGlvbikgT1ZFUlJJREUgeyByZXR1cm4gUGFzc1JlZlB0cjxD
dXJzb3I+KCk7IH0KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29yPiBvcGVuT2JqZWN0U3Rv
cmVDdXJzb3IoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgY29uc3QgSURCS2V5UmFuZ2UqLCBJREJDdXJzb3I6OkRpcmVjdGlvbikgT1ZFUlJJ
REUgeyByZXR1cm4gUGFzc1JlZlB0cjxDdXJzb3I+KCk7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177601</attachid>
            <date>2012-12-04 16:31:24 -0800</date>
            <delta_ts>2012-12-04 16:32:23 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-103782-20121204162850.patch</filename>
            <type>text/plain</type>
            <size>19237</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWFjODllZjJhYjZjNjA1
YzIxZmM2MjBkMzY1MzBmOTZiYTVkOTgyMS4uZjE1NmYzZTZhNmQ1OWQxNDc2MDU4MjZjZjkwMDNh
YzAxNTIyMmY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTExLTMwICBEYXZp
ZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFBy
b3BhZ2F0ZSBtb3JlIGxldmVsZGIgZXJyb3JzIHRvIElEQkluZGV4IGFuZCBJREJPYmplY3RTdG9y
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzNzgy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVG9ueSBDaGFuZy4KKworICAgICAgICBpbmRleC5nZXRb
S2V5XSgpIGFuZCBvYmplY3RTdG9yZS5nZXQoKSB3aWxsIHJlY2VpdmUgbW9yZSBlcnJvciBldmVu
dHMuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQpOgorICAgICAgICAo
V2ViQ29yZTo6dmVyc2lvbkV4aXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3Rv
cmU6OmZpbmRLZXlJbkluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkJhY2tpbmdTdG9yZTo6
Z2V0UHJpbWFyeUtleVZpYUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkJhY2tpbmdTdG9y
ZTo6a2V5RXhpc3RzSW5JbmRleCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQmFj
a2luZ1N0b3JlLmg6CisgICAgICAgIChJREJCYWNraW5nU3RvcmUpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCSW5kZXhCYWNrZW5kSW1wbDo6Z2V0SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6SURC
SW5kZXhCYWNrZW5kSW1wbDo6Z2V0S2V5SW50ZXJuYWwpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Z2V0SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29y
ZSk6CisKIDIwMTItMTItMDQgIEp1bGllbiBDaGFmZnJhaXggIDxqY2hhZmZyYWl4QHdlYmtpdC5v
cmc+CiAKICAgICAgICAgSGVhcC11c2UtYWZ0ZXItZnJlZSBpbiBXZWJDb3JlOjpSZW5kZXJMYXll
cjo6cGFpbnRMaXN0IFtNYXRoTUxdCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGI4NDA2
YjAwMDhhOTViZTIwMTM2YjFmOTE1MDdjZmQ5NTRlYzAxOTMuLmFjNzQxY2MxYjlmMmMzMTY2ZGI0
OGE3Y2U4NDIxZDc1ZjdmMDE1YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTItMTEtMzAgIERhdmlkIEdyb2dhbiAgPGRncm9nYW5AY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIEluZGV4ZWREQjogUHJvcGFnYXRlIG1vcmUgbGV2ZWxkYiBlcnJvcnMgdG8g
SURCSW5kZXggYW5kIElEQk9iamVjdFN0b3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM3ODIKKworICAgICAgICBSZXZpZXdlZCBieSBUb255IENo
YW5nLgorCisgICAgICAgICogdGVzdHMvSURCRmFrZUJhY2tpbmdTdG9yZS5oOgorICAgICAgICAg
IFJlbW92ZSBjaGFuZ2VkIG1ldGhvZHMgdGhhdCBhcmUgbm8gbG9uZ2VyIG5lY2Vzc2FyeS4KKwog
MjAxMi0xMi0wNCAgU3RlcGhlbiBXaGl0ZSAgPHNlbm9yYmxhbmNvQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSb2xsZWQgREVQUyAody9MaW51eCBidWlsZCBmaXgpLiAgVW5yZXZpZXdlZC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUu
Y3BwCmluZGV4IGY3NDU1Yjg3ODA1MzlkMWE4MzQ1NjQyMTcwMTU0MWUxNjhhNDJlYjIuLmI3NjE1
N2U2NGU2NzVkMzFiYWM1MDdmODhmODJjNWY4ZGUyODA0NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNwcApAQCAtNjQsNiAr
NjQsOSBAQCBlbnVtIElEQkxldmVsREJCYWNraW5nU3RvcmVJbnRlcm5hbEVycm9yVHlwZSB7CiAg
ICAgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvcktleUV4aXN0c0luT2JqZWN0U3RvcmUs
CiAgICAgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvckxvYWRDdXJyZW50Um93LAogICAg
IElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3JTZXR1cE1ldGFkYXRhLAorICAgIElEQkxl
dmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3JHZXRQcmltYXJ5S2V5VmlhSW5kZXgsCisgICAgSURC
TGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvcktleUV4aXN0c0luSW5kZXgsCisgICAgSURCTGV2
ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvclZlcnNpb25FeGlzdHMsCiAgICAgSURCTGV2ZWxEQkJh
Y2tpbmdTdG9yZUludGVybmFsRXJyb3JNYXgsCiB9Owogc3RhdGljIGlubGluZSB2b2lkIHJlY29y
ZEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZUludGVybmFsRXJyb3JUeXBlIHR5
cGUpCkBAIC02MzcsNyArNjQwLDcgQEAgdm9pZCBJREJCYWNraW5nU3RvcmU6OmRlbGV0ZU9iamVj
dFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW8KICAgICBjbGVh
ck9iamVjdFN0b3JlKHRyYW5zYWN0aW9uLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkKTsKIH0K
IAotU3RyaW5nIElEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6VHJh
bnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgY29uc3QgSURCS2V5JiBrZXkpCitib29sIElEQkJhY2tpbmdTdG9yZTo6Z2V0UmVj
b3JkKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRh
dGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5JiBrZXksIFN0cmlu
ZyYgcmVjb3JkKQogewogICAgIElEQl9UUkFDRSgiSURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQi
KTsKICAgICBMZXZlbERCVHJhbnNhY3Rpb24qIGxldmVsREJUcmFuc2FjdGlvbiA9IElEQkJhY2tp
bmdTdG9yZTo6VHJhbnNhY3Rpb246OmxldmVsREJUcmFuc2FjdGlvbkZyb20odHJhbnNhY3Rpb24p
OwpAQCAtNjQ1LDE4ICs2NDgsMjQgQEAgU3RyaW5nIElEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3Jk
KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQKICAgICBjb25z
dCBWZWN0b3I8Y2hhcj4gbGV2ZWxkYktleSA9IE9iamVjdFN0b3JlRGF0YUtleTo6ZW5jb2RlKGRh
dGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGtleSk7CiAgICAgVmVjdG9yPGNoYXI+IGRhdGE7CiAK
LSAgICBpZiAoIWxldmVsREJUcmFuc2FjdGlvbi0+Z2V0KGxldmVsZGJLZXksIGRhdGEpKQotICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgYm9vbCBmb3VuZCA9IGZhbHNlOworICAgIGJvb2wg
b2sgPSBsZXZlbERCVHJhbnNhY3Rpb24tPnNhZmVHZXQobGV2ZWxkYktleSwgZGF0YSwgZm91bmQp
OworICAgIGlmICghb2spIHsKKyAgICAgICAgcmVjb3JkID0gU3RyaW5nKCk7CisgICAgICAgIElu
dGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvckdldFJlY29yZCk7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAKICAgICBpbnQ2NF90IHZlcnNpb247CiAgICAg
Y29uc3QgY2hhciogcCA9IGRlY29kZVZhckludChkYXRhLmJlZ2luKCksIGRhdGEuZW5kKCksIHZl
cnNpb24pOwogICAgIGlmICghcCkgewogICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJC
YWNraW5nU3RvcmVSZWFkRXJyb3JHZXRSZWNvcmQpOwotICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CisgICAgICAgIHJlY29yZCA9IFN0cmluZygpOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQotICAgICh2b2lkKSB2ZXJzaW9uOwogCi0gICAgcmV0dXJuIGRlY29kZVN0cmluZyhwLCBkYXRh
LmVuZCgpKTsKKyAgICByZWNvcmQgPSBkZWNvZGVTdHJpbmcocCwgZGF0YS5lbmQoKSk7CisgICAg
cmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBpbnQ2NF90IGdldE5ld1ZlcnNpb25OdW1iZXIoTGV2
ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQpCkBAIC05NzQsMjEgKzk4MywyOCBAQCBzdGF0aWMgYm9vbCBmaW5kR3Jl
YXRlc3RLZXlMZXNzVGhhbk9yRXF1YWwoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwg
Y29ucwogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgYm9vbCB2ZXJzaW9uRXhpc3RzKExl
dmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IHZlcnNpb24sIGNvbnN0IFZlY3RvcjxjaGFyPiYgZW5j
b2RlZFByaW1hcnlLZXkpCitzdGF0aWMgYm9vbCB2ZXJzaW9uRXhpc3RzKExldmVsREJUcmFuc2Fj
dGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBpbnQ2NF90IHZlcnNpb24sIGNvbnN0IFZlY3RvcjxjaGFyPiYgZW5jb2RlZFByaW1hcnlL
ZXksIGJvb2wmIGV4aXN0cykKIHsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4ga2V5ID0gRXhpc3Rz
RW50cnlLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBlbmNvZGVkUHJpbWFy
eUtleSk7CiAgICAgVmVjdG9yPGNoYXI+IGRhdGE7CiAKLSAgICBpZiAoIXRyYW5zYWN0aW9uLT5n
ZXQoa2V5LCBkYXRhKSkKKyAgICBib29sIG9rID0gdHJhbnNhY3Rpb24tPnNhZmVHZXQoa2V5LCBk
YXRhLCBleGlzdHMpOworICAgIGlmICghb2spIHsKKyAgICAgICAgSW50ZXJuYWxFcnJvcihJREJM
ZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yVmVyc2lvbkV4aXN0cyk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisgICAgaWYgKCFleGlzdHMpCisgICAgICAgIHJldHVybiB0cnVlOwog
Ci0gICAgcmV0dXJuIGRlY29kZUludChkYXRhLmJlZ2luKCksIGRhdGEuZW5kKCkpID09IHZlcnNp
b247CisgICAgZXhpc3RzID0gKGRlY29kZUludChkYXRhLmJlZ2luKCksIGRhdGEuZW5kKCkpID09
IHZlcnNpb24pOworICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIElEQkJhY2tpbmdTdG9yZTo6
ZmluZEtleUluSW5kZXgoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24s
IGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4
SWQsIGNvbnN0IElEQktleSYga2V5LCBWZWN0b3I8Y2hhcj4mIGZvdW5kRW5jb2RlZFByaW1hcnlL
ZXkpCitib29sIElEQkJhY2tpbmdTdG9yZTo6ZmluZEtleUluSW5kZXgoSURCQmFja2luZ1N0b3Jl
OjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYga2V5LCBWZWN0b3I8
Y2hhcj4mIGZvdW5kRW5jb2RlZFByaW1hcnlLZXksIGJvb2wmIGZvdW5kKQogewogICAgIElEQl9U
UkFDRSgiSURCQmFja2luZ1N0b3JlOjpmaW5kS2V5SW5JbmRleCIpOwogICAgIEFTU0VSVChmb3Vu
ZEVuY29kZWRQcmltYXJ5S2V5LmlzRW1wdHkoKSk7CisgICAgZm91bmQgPSBmYWxzZTsKIAogICAg
IExldmVsREJUcmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9uID0gSURCQmFja2luZ1N0b3Jl
OjpUcmFuc2FjdGlvbjo6bGV2ZWxEQlRyYW5zYWN0aW9uRnJvbSh0cmFuc2FjdGlvbik7CiAgICAg
Y29uc3QgVmVjdG9yPGNoYXI+IGxldmVsZGJLZXkgPSBJbmRleERhdGFLZXk6OmVuY29kZShkYXRh
YmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBrZXkpOwpAQCAtOTk3LDkgKzEwMTMsOSBA
QCBib29sIElEQkJhY2tpbmdTdG9yZTo6ZmluZEtleUluSW5kZXgoSURCQmFja2luZ1N0b3JlOjpU
cmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sCiAKICAgICBmb3IgKDs7KSB7CiAgICAgICAgIGlmICgh
aXQtPmlzVmFsaWQoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICBpZiAoY29tcGFyZUluZGV4S2V5cyhpdC0+a2V5KCksIGxldmVs
ZGJLZXkpID4gMCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOwogCiAgICAgICAgIGludDY0X3QgdmVyc2lvbjsKICAgICAgICAgY29uc3QgY2hhciog
cCA9IGRlY29kZVZhckludChpdC0+dmFsdWUoKS5iZWdpbigpLCBpdC0+dmFsdWUoKS5lbmQoKSwg
dmVyc2lvbik7CkBAIC0xMDA5LDM4ICsxMDI1LDUzIEBAIGJvb2wgSURCQmFja2luZ1N0b3JlOjpm
aW5kS2V5SW5JbmRleChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwK
ICAgICAgICAgfQogICAgICAgICBmb3VuZEVuY29kZWRQcmltYXJ5S2V5LmFwcGVuZChwLCBpdC0+
dmFsdWUoKS5lbmQoKSAtIHApOwogCi0gICAgICAgIGlmICghdmVyc2lvbkV4aXN0cyhsZXZlbERC
VHJhbnNhY3Rpb24sIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIHZlcnNpb24sIGZvdW5kRW5j
b2RlZFByaW1hcnlLZXkpKSB7CisgICAgICAgIGJvb2wgZXhpc3RzID0gZmFsc2U7CisgICAgICAg
IGJvb2wgb2sgPSB2ZXJzaW9uRXhpc3RzKGxldmVsREJUcmFuc2FjdGlvbiwgZGF0YWJhc2VJZCwg
b2JqZWN0U3RvcmVJZCwgdmVyc2lvbiwgZm91bmRFbmNvZGVkUHJpbWFyeUtleSwgZXhpc3RzKTsK
KyAgICAgICAgaWYgKCFvaykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYg
KCFleGlzdHMpIHsKICAgICAgICAgICAgIC8vIERlbGV0ZSBzdGFsZSBpbmRleCBkYXRhIGVudHJ5
IGFuZCBjb250aW51ZS4KICAgICAgICAgICAgIGxldmVsREJUcmFuc2FjdGlvbi0+cmVtb3ZlKGl0
LT5rZXkoKSk7CiAgICAgICAgICAgICBpdC0+bmV4dCgpOwogICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIH0KLQorICAgICAgICBmb3VuZCA9IHRydWU7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KIH0KIAotUGFzc1JlZlB0cjxJREJLZXk+IElEQkJhY2tpbmdTdG9yZTo6Z2V0UHJp
bWFyeUtleVZpYUluZGV4KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9u
LCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRl
eElkLCBjb25zdCBJREJLZXkmIGtleSkKK2Jvb2wgSURCQmFja2luZ1N0b3JlOjpnZXRQcmltYXJ5
S2V5VmlhSW5kZXgoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGlu
dDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQs
IGNvbnN0IElEQktleSYga2V5LCBSZWZQdHI8SURCS2V5PiYgcHJpbWFyeUtleSkKIHsKICAgICBJ
REJfVFJBQ0UoIklEQkJhY2tpbmdTdG9yZTo6Z2V0UHJpbWFyeUtleVZpYUluZGV4Iik7CiAKKyAg
ICBib29sIGZvdW5kID0gZmFsc2U7CiAgICAgVmVjdG9yPGNoYXI+IGZvdW5kRW5jb2RlZFByaW1h
cnlLZXk7Ci0gICAgaWYgKGZpbmRLZXlJbkluZGV4KHRyYW5zYWN0aW9uLCBkYXRhYmFzZUlkLCBv
YmplY3RTdG9yZUlkLCBpbmRleElkLCBrZXksIGZvdW5kRW5jb2RlZFByaW1hcnlLZXkpKSB7Ci0g
ICAgICAgIFJlZlB0cjxJREJLZXk+IHByaW1hcnlLZXk7CisgICAgYm9vbCBvayA9IGZpbmRLZXlJ
bkluZGV4KHRyYW5zYWN0aW9uLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBr
ZXksIGZvdW5kRW5jb2RlZFByaW1hcnlLZXksIGZvdW5kKTsKKyAgICBpZiAoIW9rKSB7CisgICAg
ICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvckdldFByaW1h
cnlLZXlWaWFJbmRleCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaWYgKGZv
dW5kKSB7CiAgICAgICAgIGRlY29kZUlEQktleShmb3VuZEVuY29kZWRQcmltYXJ5S2V5LmJlZ2lu
KCksIGZvdW5kRW5jb2RlZFByaW1hcnlLZXkuZW5kKCksIHByaW1hcnlLZXkpOwotICAgICAgICBy
ZXR1cm4gcHJpbWFyeUtleS5yZWxlYXNlKCk7CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
IAotICAgIHJldHVybiAwOworICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIElEQkJhY2tpbmdT
dG9yZTo6a2V5RXhpc3RzSW5JbmRleChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFu
c2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0
X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiBpbmRleEtleSwgUmVmUHRyPElEQktleT4mIGZvdW5k
UHJpbWFyeUtleSkKK2Jvb2wgSURCQmFja2luZ1N0b3JlOjprZXlFeGlzdHNJbkluZGV4KElEQkJh
Y2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQs
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkmIGlu
ZGV4S2V5LCBSZWZQdHI8SURCS2V5PiYgZm91bmRQcmltYXJ5S2V5LCBib29sJiBleGlzdHMpCiB7
CiAgICAgSURCX1RSQUNFKCJJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luSW5kZXgiKTsKIAor
ICAgIGV4aXN0cyA9IGZhbHNlOwogICAgIFZlY3RvcjxjaGFyPiBmb3VuZEVuY29kZWRQcmltYXJ5
S2V5OwotICAgIGlmICghZmluZEtleUluSW5kZXgodHJhbnNhY3Rpb24sIGRhdGFiYXNlSWQsIG9i
amVjdFN0b3JlSWQsIGluZGV4SWQsIGluZGV4S2V5LCBmb3VuZEVuY29kZWRQcmltYXJ5S2V5KSkK
KyAgICBib29sIG9rID0gZmluZEtleUluSW5kZXgodHJhbnNhY3Rpb24sIGRhdGFiYXNlSWQsIG9i
amVjdFN0b3JlSWQsIGluZGV4SWQsIGluZGV4S2V5LCBmb3VuZEVuY29kZWRQcmltYXJ5S2V5LCBl
eGlzdHMpOworICAgIGlmICghb2spIHsKKyAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERC
QmFja2luZ1N0b3JlUmVhZEVycm9yS2V5RXhpc3RzSW5JbmRleCk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisgICAgaWYgKCFleGlzdHMpCisgICAgICAgIHJldHVybiB0cnVlOwogCiAg
ICAgZGVjb2RlSURCS2V5KGZvdW5kRW5jb2RlZFByaW1hcnlLZXkuYmVnaW4oKSwgZm91bmRFbmNv
ZGVkUHJpbWFyeUtleS5lbmQoKSwgZm91bmRQcmltYXJ5S2V5KTsKICAgICByZXR1cm4gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdT
dG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3Jl
LmgKaW5kZXggNGY1NTk2ODU4OGQ5OWUwNjVmMGQwZDJmMjg1OTM0YzZmZjgxZGY2Ni4uZDNhM2Nm
OThiMzYzZTQ5ZGFhZWViZDkzMzA2ODNkODdlYzYwYmE3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmgKQEAgLTc3LDcgKzc3LDcg
QEAgcHVibGljOgogICAgICAgICBpbnQ2NF90IG1fdmVyc2lvbjsKICAgICB9OwogCi0gICAgdmly
dHVhbCBTdHJpbmcgZ2V0UmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2
NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5Jik7Cisg
ICAgdmlydHVhbCBib29sIGdldFJlY29yZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwg
aW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYs
IFN0cmluZyYgcmVjb3JkKSBXQVJOX1VOVVNFRF9SRVRVUk47CiAgICAgdmlydHVhbCB2b2lkIHB1
dFJlY29yZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlk
LCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYsIGNvbnN0IFN0cmluZyYgdmFs
dWUsIFJlY29yZElkZW50aWZpZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJPYmplY3RTdG9y
ZShJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2
NF90IG9iamVjdFN0b3JlSWQpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVSZWNvcmQoSURCQmFj
a2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkLCBjb25zdCBSZWNvcmRJZGVudGlmaWVyJik7CkBAIC04OSw4ICs4OSw4IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlSW5kZXgoSURCQmFja2luZ1N0b3JlOjpUcmFu
c2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2
NF90IGluZGV4SWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wg
aXNVbmlxdWUsIGJvb2wgaXNNdWx0aUVudHJ5KTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlSW5k
ZXgoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQpOwogICAgIHZpcnR1YWwgdm9pZCBw
dXRJbmRleERhdGFGb3JSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNv
bnN0IElEQktleSYsIGNvbnN0IFJlY29yZElkZW50aWZpZXImKTsKLSAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8SURCS2V5PiBnZXRQcmltYXJ5S2V5VmlhSW5kZXgoSURCQmFja2luZ1N0b3JlOjpUcmFu
c2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2
NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYpOwotICAgIHZpcnR1YWwgYm9vbCBrZXlFeGlzdHNJ
bkluZGV4KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQs
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkmIGlu
ZGV4S2V5LCBSZWZQdHI8SURCS2V5PiYgZm91bmRQcmltYXJ5S2V5KTsKKyAgICB2aXJ0dWFsIGJv
b2wgZ2V0UHJpbWFyeUtleVZpYUluZGV4KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBp
bnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElk
LCBjb25zdCBJREJLZXkmLCBSZWZQdHI8SURCS2V5PiYgcHJpbWFyeUtleSkgV0FSTl9VTlVTRURf
UkVUVVJOOworICAgIHZpcnR1YWwgYm9vbCBrZXlFeGlzdHNJbkluZGV4KElEQkJhY2tpbmdTdG9y
ZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkmIGluZGV4S2V5LCBSZWZQdHI8SURCS2V5
PiYgZm91bmRQcmltYXJ5S2V5LCBib29sJiBleGlzdHMpIFdBUk5fVU5VU0VEX1JFVFVSTjsKIAog
ICAgIGNsYXNzIEN1cnNvciA6IHB1YmxpYyBSZWZDb3VudGVkPEN1cnNvcj4gewogICAgIHB1Ymxp
YzoKQEAgLTE2OCw3ICsxNjgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSURCQmFja2luZ1N0b3JlKCk7
CiAKIHByaXZhdGU6Ci0gICAgYm9vbCBmaW5kS2V5SW5JbmRleChJREJCYWNraW5nU3RvcmU6OlRy
YW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGlu
dDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiwgVmVjdG9yPGNoYXI+JiBmb3VuZEVuY29kZWRQ
cmltYXJ5S2V5KTsKKyAgICBib29sIGZpbmRLZXlJbkluZGV4KElEQkJhY2tpbmdTdG9yZTo6VHJh
bnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50
NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkmLCBWZWN0b3I8Y2hhcj4mIGZvdW5kRW5jb2RlZFBy
aW1hcnlLZXksIGJvb2wmIGZvdW5kKTsKIAogICAgIFN0cmluZyBtX2lkZW50aWZpZXI7CiAgICAg
UmVmUHRyPElEQkZhY3RvcnlCYWNrZW5kSW1wbD4gbV9mYWN0b3J5OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmNwcApp
bmRleCA5YWQ0YjhkNmUzNmJhZjM0ZTZlM2Q5NjUxYTkxMWI3NTE3MmE4MjllLi45ZjdjMjk3MDc1
ZTQ1ODYxMTdmYWNjMjE1MzMwOWYzNWY0NDNlYTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmNwcApAQCAtMTg3
LDkgKzE4NywxOSBAQCB2b2lkIElEQkluZGV4QmFja2VuZEltcGw6OkluZGV4UmVmZXJlbmNlZFZh
bHVlUmV0cmlldmFsT3BlcmF0aW9uOjpwZXJmb3JtKFNjcmlwdAogICAgICAgICBrZXkgPSBiYWNr
aW5nU3RvcmVDdXJzb3ItPmtleSgpOwogICAgIH0KIAotICAgIFJlZlB0cjxJREJLZXk+IHByaW1h
cnlLZXkgPSBpbmRleC0+YmFja2luZ1N0b3JlKCktPmdldFByaW1hcnlLZXlWaWFJbmRleCh0cmFu
c2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgaW5kZXgtPmRhdGFiYXNlSWQoKSwg
aW5kZXgtPm1fb2JqZWN0U3RvcmVCYWNrZW5kLT5pZCgpLCBpbmRleC0+aWQoKSwgKmtleSk7Cisg
ICAgUmVmUHRyPElEQktleT4gcHJpbWFyeUtleTsKKyAgICBib29sIG9rID0gaW5kZXgtPmJhY2tp
bmdTdG9yZSgpLT5nZXRQcmltYXJ5S2V5VmlhSW5kZXgodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9y
ZVRyYW5zYWN0aW9uKCksIGluZGV4LT5kYXRhYmFzZUlkKCksIGluZGV4LT5tX29iamVjdFN0b3Jl
QmFja2VuZC0+aWQoKSwgaW5kZXgtPmlkKCksICprZXksIHByaW1hcnlLZXkpOworICAgIGlmICgh
b2spIHsKKyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0
ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3IgaW4g
Z2V0UHJpbWFyeUtleVZpYUluZGV4LiIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAg
IFN0cmluZyB2YWx1ZSA9IGluZGV4LT5iYWNraW5nU3RvcmUoKS0+Z2V0UmVjb3JkKHRyYW5zYWN0
aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBpbmRleC0+ZGF0YWJhc2VJZCgpLCBpbmRl
eC0+bV9vYmplY3RTdG9yZUJhY2tlbmQtPmlkKCksICpwcmltYXJ5S2V5KTsKKyAgICBTdHJpbmcg
dmFsdWU7CisgICAgb2sgPSBpbmRleC0+YmFja2luZ1N0b3JlKCktPmdldFJlY29yZCh0cmFuc2Fj
dGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgaW5kZXgtPmRhdGFiYXNlSWQoKSwgaW5k
ZXgtPm1fb2JqZWN0U3RvcmVCYWNrZW5kLT5pZCgpLCAqcHJpbWFyeUtleSwgdmFsdWUpOworICAg
IGlmICghb2spIHsKKyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6
OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJy
b3IgaW4gZ2V0UmVjb3JkLiIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIGlmICh2
YWx1ZS5pc051bGwoKSkgewogICAgICAgICBjYWxsYmFja3MtPm9uU3VjY2VzcygpOwpAQCAtMjE2
LDcgKzIyNiwxMiBAQCB2b2lkIElEQkluZGV4QmFja2VuZEltcGw6OkluZGV4VmFsdWVSZXRyaWV2
YWxPcGVyYXRpb246OnBlcmZvcm0oU2NyaXB0RXhlY3V0aW9uQwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgUmVmUHRyPElEQktleT4ga2V5UmVzdWx0ID0gaW5kZXgtPmJhY2tpbmdTdG9y
ZSgpLT5nZXRQcmltYXJ5S2V5VmlhSW5kZXgodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5z
YWN0aW9uKCksIGluZGV4LT5kYXRhYmFzZUlkKCksIGluZGV4LT5tX29iamVjdFN0b3JlQmFja2Vu
ZC0+aWQoKSwgaW5kZXgtPmlkKCksICpiYWNraW5nU3RvcmVDdXJzb3ItPmtleSgpKTsKKyAgICBS
ZWZQdHI8SURCS2V5PiBrZXlSZXN1bHQ7CisgICAgYm9vbCBvayA9IGluZGV4LT5iYWNraW5nU3Rv
cmUoKS0+Z2V0UHJpbWFyeUtleVZpYUluZGV4KHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFu
c2FjdGlvbigpLCBpbmRleC0+ZGF0YWJhc2VJZCgpLCBpbmRleC0+bV9vYmplY3RTdG9yZUJhY2tl
bmQtPmlkKCksIGluZGV4LT5pZCgpLCAqYmFja2luZ1N0b3JlQ3Vyc29yLT5rZXkoKSwga2V5UmVz
dWx0KTsKKyAgICBpZiAoIW9rKSB7CisgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRh
YmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIklu
dGVybmFsIGVycm9yIGluIGdldFByaW1hcnlLZXlWaWFJbmRleC4iKSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CiAgICAgaWYgKCFrZXlSZXN1bHQpIHsKICAgICAgICAgY2FsbGJhY2tzLT5vblN1
Y2Nlc3Moc3RhdGljX2Nhc3Q8SURCS2V5Kj4oMCkpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlQmFja2VuZEltcGwuY3BwCmluZGV4IGNhOGFkNjE3MmRlOTgxNWI1NmVkZDMzMWE5YTczNTZl
Y2YxOThkYTYuLjlmNjExY2IwMWJkOTM0NTQ4YzgzYmQxNmM5NmI5MGU0ZGI4N2YwM2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9i
amVjdFN0b3JlQmFja2VuZEltcGwuY3BwCkBAIC0xOTksNyArMTk5LDEyIEBAIHZvaWQgSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbDo6T2JqZWN0U3RvcmVSZXRyaWV2YWxPcGVyYXRpb246OnBlcmZv
cm0oU2NyaXB0RXhlCiAgICAgICAgIGtleSA9IGJhY2tpbmdTdG9yZUN1cnNvci0+a2V5KCk7CiAg
ICAgfQogCi0gICAgU3RyaW5nIHdpcmVEYXRhID0gb2JqZWN0U3RvcmUtPmJhY2tpbmdTdG9yZSgp
LT5nZXRSZWNvcmQodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG9iamVj
dFN0b3JlLT5kYXRhYmFzZUlkKCksIG9iamVjdFN0b3JlLT5pZCgpLCAqa2V5KTsKKyAgICBTdHJp
bmcgd2lyZURhdGE7CisgICAgYm9vbCBvayA9IG9iamVjdFN0b3JlLT5iYWNraW5nU3RvcmUoKS0+
Z2V0UmVjb3JkKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBvYmplY3RT
dG9yZS0+ZGF0YWJhc2VJZCgpLCBvYmplY3RTdG9yZS0+aWQoKSwgKmtleSwgd2lyZURhdGEpOwor
ICAgIGlmICghb2spIHsKKyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJy
b3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwg
ZXJyb3IgaW4gZ2V0UmVjb3JkLiIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBpZiAo
d2lyZURhdGEuaXNOdWxsKCkpIHsKICAgICAgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoKTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtMjc3LDcgKzI4MiwxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAKICAgICAgICAgUmVmUHRyPElEQktleT4gZm91bmRQcmltYXJ5S2V5Owot
ICAgICAgICBib29sIGZvdW5kID0gYmFja2luZ1N0b3JlLmtleUV4aXN0c0luSW5kZXgodHJhbnNh
Y3Rpb24sIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsICppbmRleEtleSwgZm91
bmRQcmltYXJ5S2V5KTsKKyAgICAgICAgYm9vbCBmb3VuZCA9IGZhbHNlOworICAgICAgICBib29s
IG9rID0gYmFja2luZ1N0b3JlLmtleUV4aXN0c0luSW5kZXgodHJhbnNhY3Rpb24sIGRhdGFiYXNl
SWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsICppbmRleEtleSwgZm91bmRQcmltYXJ5S2V5LCBm
b3VuZCk7CisgICAgICAgIC8vIEZJWE1FOiBQcm9wYWdhdGUgdGhpcyBlcnJvciB1cCB0byBzY3Jp
cHQuCisgICAgICAgIEFTU0VSVF9VTlVTRUQob2ssIG9rKTsKICAgICAgICAgaWYgKCFmb3VuZCkK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBpZiAocHJpbWFyeUtleSAmJiBmb3Vu
ZFByaW1hcnlLZXktPmlzRXF1YWwocHJpbWFyeUtleSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0lEQkZha2VCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvSURCRmFrZUJhY2tpbmdTdG9yZS5oCmluZGV4IDc0MThiYTM2YzdlZjJj
NDVkN2VlZWMwYjMwZTQ4M2Y4NmRhMjk3MjQuLjU1ZmY1YjhkMGE5ODEzODM1MDY5NzliM2ZhNDc4
MWJmMGNkYmFhM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURC
RmFrZUJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURC
RmFrZUJhY2tpbmdTdG9yZS5oCkBAIC00Myw3ICs0Myw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgY3JlYXRlT2JqZWN0U3RvcmUoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQs
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQ
YXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50KSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRh
dGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkgT1ZFUlJJREUgeyB9CiAKLSAgICB2aXJ0
dWFsIFN0cmluZyBnZXRSZWNvcmQoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5JikgT1ZFUlJJREUgeyByZXR1cm4gU3Ry
aW5nKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgcHV0UmVjb3JkKFRyYW5zYWN0aW9uKiwgaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYsIGNvbnN0
IFN0cmluZyYgdmFsdWUsIFJlY29yZElkZW50aWZpZXIqKSBPVkVSUklERSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgY2xlYXJPYmplY3RTdG9yZShUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJ
ZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
ZGVsZXRlUmVjb3JkKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIGNvbnN0IFJlY29yZElkZW50aWZpZXImKSBPVkVSUklERSB7IH0KQEAgLTU1
LDggKzU0LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJbmRleChUcmFuc2Fj
dGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90
IGluZGV4SWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgaXNV
bmlxdWUsIGJvb2wgaXNNdWx0aUVudHJ5KSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGVsZXRlSW5kZXgoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNl
SWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkKSBPVkVSUklERSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgcHV0SW5kZXhEYXRhRm9yUmVjb3JkKFRyYW5zYWN0aW9uKiwgaW50
NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwg
Y29uc3QgSURCS2V5JiwgY29uc3QgUmVjb3JkSWRlbnRpZmllciYpIE9WRVJSSURFIHsgfQotICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxJREJLZXk+IGdldFByaW1hcnlLZXlWaWFJbmRleChUcmFuc2Fj
dGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90
IGluZGV4SWQsIGNvbnN0IElEQktleSYpIE9WRVJSSURFIHsgcmV0dXJuIFBhc3NSZWZQdHI8SURC
S2V5PigpOyB9Ci0gICAgdmlydHVhbCBib29sIGtleUV4aXN0c0luSW5kZXgoVHJhbnNhY3Rpb24q
LCBpbnQ2NF90IGRhdGFiYXNlaWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRl
eElkLCBjb25zdCBJREJLZXkmIGluZGV4S2V5LCBSZWZQdHI8SURCS2V5PiYgZm91bmRQcmltYXJ5
S2V5KSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PEN1cnNvcj4gb3Blbk9iamVjdFN0b3JlS2V5Q3Vyc29yKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBk
YXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleVJhbmdlKiwgSURC
Q3Vyc29yOjpEaXJlY3Rpb24pIE9WRVJSSURFIHsgcmV0dXJuIFBhc3NSZWZQdHI8Q3Vyc29yPigp
OyB9CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1cnNvcj4gb3Blbk9iamVjdFN0b3JlQ3Vyc29y
KFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQs
IGNvbnN0IElEQktleVJhbmdlKiwgSURCQ3Vyc29yOjpEaXJlY3Rpb24pIE9WRVJSSURFIHsgcmV0
dXJuIFBhc3NSZWZQdHI8Q3Vyc29yPigpOyB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>