<?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>137409</bug_id>
          
          <creation_ts>2014-10-03 15:06:25 -0700</creation_ts>
          <short_desc>[Win] Extend AVFoundationCF Media Implementation</short_desc>
          <delta_ts>2014-10-21 11:54:55 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</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>
          
          <blocked>137710</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1039370</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-10-03 15:06:25 -0700</bug_when>
    <thetext>Correct  few errors in the existing AVFoundationCF implementation, and add initial support for encrypted streams.

This code is not being built as part of the standard build yet, and is not yet being tested. These changes are only accessible if you manually modify the ENCRYPTED_MEDIA_V2 is enabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039373</commentid>
    <comment_count>1</comment_count>
      <attachid>239241</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-10-03 15:17:59 -0700</bug_when>
    <thetext>Created attachment 239241
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039375</commentid>
    <comment_count>2</comment_count>
      <attachid>239242</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-10-03 15:22:12 -0700</bug_when>
    <thetext>Created attachment 239242
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039498</commentid>
    <comment_count>3</comment_count>
      <attachid>239242</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-10-04 05:34:26 -0700</bug_when>
    <thetext>Comment on attachment 239242
Patch

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

&gt; Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:929
&gt; +    if (!keySystem.isEmpty()) {

Nit: this could become an early return.

&gt; Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:2033
&gt; +    if (requestsIterator == m_keyURIToRequestMap.end()) {

Nit: this could also become an early return.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039764</commentid>
    <comment_count>4</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-10-06 10:49:28 -0700</bug_when>
    <thetext>Committed r174346: &lt;http://trac.webkit.org/changeset/174346&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039765</commentid>
    <comment_count>5</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-10-06 11:02:20 -0700</bug_when>
    <thetext>Build fix for machines without ENCYPTED_MEDIA_V2 enabled checked in under r174350:
&lt;http://trac.webkit.org/changeset/174350&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239241</attachid>
            <date>2014-10-03 15:17:59 -0700</date>
            <delta_ts>2014-10-03 15:22:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137409-20141003152107.patch</filename>
            <type>text/plain</type>
            <size>22137</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3NDI5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY0IEBACisyMDE0LTEwLTAzICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXaW5dIEV4dGVuZCBBVkZv
dW5kYXRpb25DRiBNZWRpYSBJbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3NDA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjb2RlIGlzIG5vdCB5ZXQgYmVpbmcgYnVpbHQg
YW5kIHRlc3RlZCBieSBvdXIgc3lzdGVtLiBBcHByb3ByaWF0ZQorICAgICAgICB0ZXN0cyB3aWxs
IGJlIGFjdGl2YXRlZCB3aGVuIHdlIGVuYWJsZSB0aGUgYnVpbGQuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQVZGb3VuZGF0aW9uQ0ZTb2Z0TGlua2luZy5o
OiBBZGQKKyAgICAgICAgbWlzc2luZyBkZWNsYXJhdGlvbi4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkZvdW5kYXRpb25DRjo6Z2VuZXJhdGVLZXlSZXF1
ZXN0KTogVGlnaHRlbiB1cCBzY29wZQorICAgICAgICBvZiAndW5kZXJseWluZ0Vycm9yJy4KKyAg
ICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkZvdW5kYXRpb25DRjo6dXBkYXRlKTogQWRkIGNh
bGwgdG8gY29tcGxldGUgdGhlCisgICAgICAgIGxvYWRpbmcgcHJvY2Vzcy4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFW
Q0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0Y6Omxh
YmVsKTogSGFuZGxlIG51bGwgdGl0bGVzIENGQXJyYXkKKyAgICAgICAgZm91bmQgZHVyaW5nIHRl
c3RpbmcuCisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRjo6bGFu
Z3VhZ2UpOiBEaXR0byBmb3IgYSBudWxsIGxvY2FsZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnJl
Z2lzdGVyTWVkaWFFbmdpbmUpOiBBZGQgc3VwcG9ydAorICAgICAgICBmb3IgdGhlIG5ldyAnc3Vw
cG9ydHNLZXlTeXN0ZW0nIG1ldGhvZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbkNGOjpjcmVhdGVDb250ZXh0VmlkZW9SZW5kZXJlcik6IEFkZAorICAg
ICAgICBhc3NlcnRpb24gZm9yIG1haW5UaHJlYWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6ZGVzdHJveUNvbnRleHRWaWRlb1JlbmRlcmVyKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25D
Rjo6Y3JlYXRlVmlkZW9MYXllcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmRlc3Ryb3lWaWRlb0xheWVyKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6Y3JlYXRlQVZQ
bGF5ZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGOjpjcmVhdGVBVlBsYXllckl0ZW0pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpwbGF0Zm9ybUxheWVyKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cGxh
dGZvcm1TZXRWaXNpYmxlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25DRjo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpwYWlu
dCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0Y6OnN1cHBvcnRzS2V5U3lzdGVtKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6c2l6ZUNoYW5nZWQpOiBBZGQgYXNzZXJ0aW9u
IHRoYXQgdGhpcworICAgICAgICBpcyBiZWluZyBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnByb2Nl
c3NNZWRpYVNlbGVjdGlvbk9wdGlvbnMpOiBIYW5kbGUKKyAgICAgICAgdGhlIGFsbG93cyBlbXB0
eSBtZWRpYSBzZWxlY3Rpb24gcHJvcGVybHkgYmFzZWQgb24gdGVzdCBiZWhhdmlvci4KKyAgICAg
ICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6OkFWRldyYXBwZXIpOiBJbml0aWFsaXplIHJlc291cmNl
IGxvYWRlciBjYWxsYmFjayBzdHJ1Y3R1cmUKKyAgICAgICAgd2hlbiBidWlsZGluZyB3aXRoIEFW
Rk9VTkRBVElPTl9MT0FERVJfREVMRUdBVEUuCisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVy
OjpjcmVhdGVBc3NldEZvclVSTCk6IFVzZSBBVkZXcmFwcGVyJ3MgbG9hZGVyIGNhbGxiYWNrIHN0
cnVjdCwKKyAgICAgICAgcmF0aGVyIHRoYW4gcGFzc2luZyB0aGUgYWRkcmVzcyBvZiBhIHRlbXBv
cmFyeSB2YWx1ZS4KKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6OnByb2Nlc3NOb3RpZmlj
YXRpb24pOiBTdG9wIHVzaW5nIHRoZSBkZXByZWNhdGVkIAorICAgICAgICAnZGlzcGF0Y2hfZ2V0
X2N1cnJlbnRfcXVldWUnIGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6
cHJvY2Vzc0N1ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6bGVnaWJs
ZU91dHB1dENhbGxiYWNrKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpw
cm9jZXNzU2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKTogUGFzcyBhIHZhbGlkIENGRXJy
b3IKKyAgICAgICAgb2JqZWN0OyBudWxscHRyIGlzIG5vdCBhbGxvd2VkIGFzIGFuIGFyZ3VtZW50
IHRvIHRoZSAiLi4uRmluaXNoZWRMb2FkaW5nV2l0aEVycm9yIgorICAgICAgICBtZXRob2QuCisg
ICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3Vy
Y2UpOiBBZGQgc3VwcG9ydCBmb3IgbXVsdGlwbGUKKyAgICAgICAgaW4tZmxpZ2h0IHJlcXVlc3Rz
LgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6cGxhdGZvcm1MYXllcik6IEFzc2VydCB3
ZSBhcmUgb24gdGhlIG1haW4gdGhyZWFkLgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6
c2V0UmVxdWVzdEZvcktleSk6IEFkZCBzdXBwb3J0IGZvciBtdWx0aXBsZSBpbi1mbGlnaHQgcmVx
dWVzdHMuCisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjp0YWtlUmVxdWVzdEZvcktleVVS
SSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDbGllbnQ6OnBsYXRmb3JtQ0FMYXll
ckxheW91dFN1YmxheWVyc09mTGF5ZXIpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZS
ZXNvdXJjZUxvYWRlci5jcHA6IE1ha2Ugc3VyZSB3ZSBwYXNzCisgICAgICAgIHZhbGlkIENGRXJy
b3Igb2JqZWN0cywgcmF0aGVyIHRoYW4gbnVsbHB0ci4KKwogMjAxNC0xMC0wMyAgQnJlbnQgRnVs
Z2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luXSBVbnJldmlld2VkIGJ1
aWxkIGZpeCBmb3IgTVNWQyAyMDEzIFNQIDMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQVZGb3VuZGF0aW9uQ0ZTb2Z0TGlua2luZy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9jZi9BVkZvdW5kYXRpb25DRlNvZnRMaW5raW5nLmgJKHJldmlzaW9uIDE3NDI3NSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9BVkZvdW5kYXRp
b25DRlNvZnRMaW5raW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwMiw2ICszMDIsOSBAQCBTT0ZU
X0xJTktfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDCiBTT0ZUX0xJTktfRExMX0lNUE9S
VChBVkZvdW5kYXRpb25DRiwgQVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdEdldFVSTFJl
cXVlc3QsIENGVVJMUmVxdWVzdFJlZiwgX19jZGVjbCwgKEFWQ0ZBc3NldFJlc291cmNlTG9hZGlu
Z1JlcXVlc3RSZWYgbG9hZGluZ1JlcXVlc3QpLCAobG9hZGluZ1JlcXVlc3QpKQogI2RlZmluZSBB
VkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0R2V0VVJMUmVxdWVzdCAgc29mdExpbmtfQVZD
RkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdEdldFVSTFJlcXVlc3QgCiAKK1NPRlRfTElOS19E
TExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0
RmluaXNoTG9hZGluZ1dpdGhSZXNwb25zZSwgdm9pZCwgX19jZGVjbCwgKEFWQ0ZBc3NldFJlc291
cmNlTG9hZGluZ1JlcXVlc3RSZWYgbG9hZGluZ1JlcXVlc3QsIENGVVJMUmVzcG9uc2VSZWYgcmVz
cG9uc2UsIENGRGF0YVJlZiBkYXRhLCBDRlVSTFJlcXVlc3RSZWYgcmVkaXJlY3QpLCAobG9hZGlu
Z1JlcXVlc3QsIHJlc3BvbnNlLCBkYXRhLCByZWRpcmVjdCkpCisjZGVmaW5lIEFWQ0ZBc3NldFJl
c291cmNlTG9hZGluZ1JlcXVlc3RGaW5pc2hMb2FkaW5nV2l0aFJlc3BvbnNlICBzb2Z0TGlua19B
VkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0RmluaXNoTG9hZGluZ1dpdGhSZXNwb25zZSAK
KwogI2VuZGlmCiAKIC8vIFZhcmlhYmxlcwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25DRi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25DRi5jcHAJKHJldmlzaW9uIDE3NDI3NSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9DRE1TZXNzaW9u
QVZGb3VuZGF0aW9uQ0YuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSw4ICs4NSw3IEBAIFBhc3NS
ZWZQdHI8VWludDhBcnJheT4gQ0RNU2Vzc2lvbkFWRm91bmQKICAgICAgICAgICAgIHVzZXJJbmZv
ID0gYWRvcHRDRihDRkVycm9yQ29weVVzZXJJbmZvKGNmRXJyb3IpKTsKIAogICAgICAgICAgICAg
aWYgKHVzZXJJbmZvKSB7Ci0gICAgICAgICAgICAgICAgQ0ZFcnJvclJlZiB1bmRlcmx5aW5nRXJy
b3IgPSAoQ0ZFcnJvclJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwga0NG
RXJyb3JVbmRlcmx5aW5nRXJyb3JLZXkpOwotICAgICAgICAgICAgICAgIGlmICh1bmRlcmx5aW5n
RXJyb3IpCisgICAgICAgICAgICAgICAgaWYgKENGRXJyb3JSZWYgdW5kZXJseWluZ0Vycm9yID0g
KENGRXJyb3JSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtDRkVycm9y
VW5kZXJseWluZ0Vycm9yS2V5KSkKICAgICAgICAgICAgICAgICAgICAgc3lzdGVtQ29kZSA9IENG
RXJyb3JHZXRDb2RlKHVuZGVybHlpbmdFcnJvcik7CiAgICAgICAgICAgICB9CiAKQEAgLTExMyw5
ICsxMTIsNyBAQCBib29sIENETVNlc3Npb25BVkZvdW5kYXRpb25DRjo6dXBkYXRlKFVpCiAgICAg
UmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IGtleURhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0
ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga2V5LT5ieXRlTGVuZ3RoKCkpKTsKICAgICBD
RkRhdGFBcHBlbmRCeXRlcyhrZXlEYXRhLmdldCgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJ
bnQ4Kj4oa2V5LT5iYXNlQWRkcmVzcygpKSwga2V5LT5ieXRlTGVuZ3RoKCkpOwogCi0gICAgLy8g
VE9ETzogQVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nRGF0YVJlcXVlc3RSZXNwb25kV2l0aERhdGEo
bV9yZXF1ZXN0LmdldCgpLCBrZXlEYXRhLmdldCgpKTsKLSAgICAvLyBUT0RPOiBBVkNGQXNzZXRS
ZXNvdXJjZUxvYWRpbmdSZXF1ZXN0RmluaXNoZWRMb2FkaW5nKG1fcmVxdWVzdC5nZXQoKSk7Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0
RmluaXNoTG9hZGluZ1dpdGhSZXNwb25zZShtX3JlcXVlc3QuZ2V0KCksIG51bGxwdHIsIGtleURh
dGEuZ2V0KCksIG51bGxwdHIpOwogCiAgICAgZXJyb3JDb2RlID0gTWVkaWFQbGF5ZXI6Ok5vRXJy
b3I7CiAgICAgc3lzdGVtQ29kZSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5jcHAJKHJldmlzaW9uIDE3NDI3NSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRU
ZXh0VHJhY2tQcml2YXRlQVZDRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Myw2ICsxNDMsOSBA
QCBBdG9taWNTdHJpbmcgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0Y6CiAKICAgICBSZXRhaW5Q
dHI8Q0ZBcnJheVJlZj4gY29tbW9uTWV0YURhdGEgPSBhZG9wdENGKEFWQ0ZNZWRpYVNlbGVjdGlv
bk9wdGlvbkNvcHlDb21tb25NZXRhZGF0YShtZWRpYVNlbGVjdGlvbk9wdGlvbigpKSk7CiAgICAg
UmV0YWluUHRyPENGQXJyYXlSZWY+IHRpdGxlcyA9IGFkb3B0Q0YoQVZDRk1ldGFkYXRhSXRlbUNv
cHlJdGVtc1dpdGhLZXlBbmRLZXlTcGFjZShjb21tb25NZXRhRGF0YS5nZXQoKSwgQVZDRk1ldGFk
YXRhQ29tbW9uS2V5VGl0bGUsIEFWQ0ZNZXRhZGF0YUtleVNwYWNlQ29tbW9uKSk7CisgICAgaWYg
KCF0aXRsZXMpCisgICAgICAgIHJldHVybiBlbXB0eUF0b207CisKICAgICBDRkluZGV4IHRpdGxl
c0NvdW50ID0gQ0ZBcnJheUdldENvdW50KHRpdGxlcy5nZXQoKSk7CiAgICAgaWYgKCF0aXRsZXND
b3VudCkKICAgICAgICAgcmV0dXJuIGVtcHR5QXRvbTsKQEAgLTE3MCw2ICsxNzMsOSBAQCBBdG9t
aWNTdHJpbmcgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0Y6CiAgICAgICAgIHJldHVybiBlbXB0
eUF0b207CiAKICAgICBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+IGxvY2FsZSA9IGFkb3B0Q0YoQVZD
Rk1lZGlhU2VsZWN0aW9uT3B0aW9uQ29weUxvY2FsZShtZWRpYVNlbGVjdGlvbk9wdGlvbigpKSk7
CisgICAgaWYgKCFsb2NhbGUpCisgICAgICAgIHJldHVybiBlbXB0eUF0b207CisKICAgICByZXR1
cm4gQ0ZMb2NhbGVHZXRJZGVudGlmaWVyKGxvY2FsZS5nZXQoKSk7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbkNGLmNwcAkocmV2aXNpb24gMTc0Mjc1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNG
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDYgKzE1Myw3IEBAIHB1YmxpYzoKIAogI2lmIEVO
QUJMRShFTkNSWVBURURfTUVESUFfVjIpCiAgICAgUmV0YWluUHRyPEFWQ0ZBc3NldFJlc291cmNl
TG9hZGluZ1JlcXVlc3RSZWY+IHRha2VSZXF1ZXN0Rm9yS2V5VVJJKGNvbnN0IFN0cmluZyYpOwor
ICAgIHZvaWQgc2V0UmVxdWVzdEZvcktleShjb25zdCBTdHJpbmcmIGtleVVSSSwgQVZDRkFzc2V0
UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFJlZiBhdlJlcXVlc3QpOwogI2VuZGlmCiAKIHByaXZhdGU6
CkBAIC0xOTcsNyArMTk4LDggQEAgcHJpdmF0ZToKICAgICBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
QVZGKiBtX2N1cnJlbnRUZXh0VHJhY2s7CiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1Yy
KQotICAgIEhhc2hNYXA8U3RyaW5nLCBSZXRhaW5QdHI8QVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5n
UmVxdWVzdFJlZj4+IG1fa2V5VVJJVG9SZXF1ZXN0TWFwOworICAgIEhhc2hNYXA8U3RyaW5nLCBW
ZWN0b3I8UmV0YWluUHRyPEFWQ0ZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3RSZWY+Pj4gbV9r
ZXlVUklUb1JlcXVlc3RNYXA7CisgICAgQVZDRkFzc2V0UmVzb3VyY2VMb2FkZXJDYWxsYmFja3Mg
bV9yZXNvdXJjZUxvYWRlckNhbGxiYWNrczsKICNlbmRpZgogfTsKIApAQCAtMzQyLDcgKzM0NCw3
IEBAIFBhc3NPd25QdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPgogdm9pZCBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2lu
ZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgaWYgKGlzQXZhaWxhYmxlKCkpCi0gICAgICAg
IHJlZ2lzdHJhcihjcmVhdGUsIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIDAsIDAs
IDAsIDApOworICAgICAgICByZWdpc3RyYXIoY3JlYXRlLCBnZXRTdXBwb3J0ZWRUeXBlcywgc3Vw
cG9ydHNUeXBlLCAwLCAwLCAwLCBzdXBwb3J0c0tleVN5c3RlbSk7CiB9CiAKIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRihN
ZWRpYVBsYXllciogcGxheWVyKQpAQCAtNDA3LDYgKzQwOSw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmgKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0Y6OmNyZWF0ZUNvbnRleHRWaWRlb1JlbmRlcmVyKCkKIHsKICAgICBMT0coTWVkaWEsICJN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6Y3JlYXRlQ29udGV4dFZpZGVvUmVuZGVy
ZXIoJXApIiwgdGhpcyk7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIGlmIChp
bWFnZUdlbmVyYXRvcihtX2F2ZldyYXBwZXIpKQogICAgICAgICByZXR1cm47CkBAIC00MTcsMTIg
KzQyMCwxNCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpjCiAKIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmRlc3Ryb3lDb250ZXh0VmlkZW9S
ZW5kZXJlcigpCiB7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAobV9hdmZX
cmFwcGVyKQogICAgICAgICBtX2F2ZldyYXBwZXItPmRlc3Ryb3lJbWFnZUdlbmVyYXRvcigpOwog
fQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpjcmVhdGVWaWRlb0xh
eWVyKCkKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChzdXBwb3J0
c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkpOwogCiAgICAgaWYgKG1fYXZmV3JhcHBlcikKQEAgLTQz
MSw2ICs0MzYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpjCiAK
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmRlc3Ryb3lWaWRlb0xheWVy
KCkKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhNZWRpYSwgIk1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpkZXN0cm95VmlkZW9MYXllciglcCkgLSBkZXN0
cm95aW5nICVwIiwgdGhpcywgdmlkZW9MYXllcihtX2F2ZldyYXBwZXIpKTsKICAgICBpZiAobV9h
dmZXcmFwcGVyKQogICAgICAgICBtX2F2ZldyYXBwZXItPmRlc3Ryb3lWaWRlb0xheWVyKCk7CkBA
IC00NzAsNiArNDc2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6
YwogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpjcmVhdGVBVlBsYXll
cigpCiB7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9hdmZXcmFw
cGVyKTsKICAgICAKICAgICBzZXREZWxheUNhbGxiYWNrcyh0cnVlKTsKQEAgLTQ3OSw2ICs0ODYs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpjCiAKIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmNyZWF0ZUFWUGxheWVySXRlbSgpCiB7Cisg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9hdmZXcmFwcGVyKTsKICAg
ICAKICAgICBzZXREZWxheUNhbGxiYWNrcyh0cnVlKTsKQEAgLTUyOSw2ICs1MzcsNyBAQCBQbGF0
Zm9ybU1lZGlhIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhCiAKIFBsYXRmb3JtTGF5ZXIqIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKIHsK
KyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmICghbV9hdmZXcmFwcGVyKQogICAg
ICAgICByZXR1cm4gMDsKIApAQCAtNTM3LDYgKzU0Niw3IEBAIFBsYXRmb3JtTGF5ZXIqIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmQKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25DRjo6cGxhdGZvcm1TZXRWaXNpYmxlKGJvb2wgaXNWaXNpYmxlKQogeworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAgICAgaWYgKCFtX2F2ZldyYXBwZXIpCiAgICAgICAgIHJldHVybjsK
ICAgICAKQEAgLTgyOSw2ICs4MzksNyBAQCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246
OkFzc2V0U3RhCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnBhaW50
Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50
UmVjdCYgcmVjdCkKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmICghbWV0
YURhdGFBdmFpbGFibGUoKSB8fCBjb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAg
IHJldHVybjsKIApAQCAtODQzLDYgKzg1NCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uQ0Y6OnAKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6
cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQogewor
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgaWYgKCFtZXRhRGF0YUF2YWlsYWJsZSgp
IHx8IGNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSB8fCAhaW1hZ2VHZW5lcmF0b3IobV9hdmZX
cmFwcGVyKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC05MTEsNiArOTIzLDI0IEBAIE1lZGlhUGxh
eWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcmkKICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6
OklzTm90U3VwcG9ydGVkOwogfQogCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bkNGOjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSkKK3sKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSB8fCBFTkFCTEUo
RU5DUllQVEVEX01FRElBX1YyKQorICAgIGlmICgha2V5U3lzdGVtLmlzRW1wdHkoKSkgeworICAg
ICAgICBpZiAoIWtleVN5c3RlbUlzU3VwcG9ydGVkKGtleVN5c3RlbSkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaWYgKCFtaW1lVHlwZS5pc0VtcHR5KCkgJiYgIW1pbWVU
eXBlQ2FjaGUoKS5jb250YWlucyhtaW1lVHlwZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0o
a2V5U3lzdGVtKTsKKyAgICBVTlVTRURfUEFSQU0obWltZVR5cGUpOworI2VuZGlmCisgICAgcmV0
dXJuIGZhbHNlOworfQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpp
c0F2YWlsYWJsZSgpCiB7CkBAIC0xMDM3LDYgKzEwNjcsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbkNGOjp0CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0Y6OnNpemVDaGFuZ2VkKCkKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAg
IGlmICghYXZBc3NldChtX2F2ZldyYXBwZXIpKQogICAgICAgICByZXR1cm47CiAgICAgCkBAIC0x
MTU3LDExICsxMTg4LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6
cAogCiAgICAgLy8gV2UgZW5hYmxlZCBhdXRvbWF0aWMgbWVkaWEgc2VsZWN0aW9uIGJlY2F1c2Ug
d2Ugd2FudCBhbHRlcm5hdGUgYXVkaW8gdHJhY2tzIHRvIGJlIGVuYWJsZWQvZGlzYWJsZWQgYXV0
b21hdGljYWxseSwKICAgICAvLyBidXQgc2V0IHRoZSBzZWxlY3RlZCBsZWdpYmxlIHRyYWNrIHRv
IG5pbCBzbyB0ZXh0IHRyYWNrcyB3aWxsIG5vdCBiZSBhdXRvbWF0aWNhbGx5IGNvbmZpZ3VyZWQu
Ci0gICAgaWYgKCFtX3RleHRUcmFja3Muc2l6ZSgpKSB7Ci0gICAgICAgIEFTU0VSVChBVkNGTWVk
aWFTZWxlY3Rpb25Hcm91cEFsbG93c0VtcHR5U2VsZWN0aW9uKGxlZ2libGVHcm91cCkpOwotICAg
ICAgICBBVkNGUGxheWVySXRlbVJlZiBwbGF5ZXJJdGVtID0gYXZQbGF5ZXJJdGVtKG1fYXZmV3Jh
cHBlcik7Ci0KLSAgICAgICAgaWYgKHBsYXllckl0ZW0pCisgICAgaWYgKCFtX3RleHRUcmFja3Mu
c2l6ZSgpICYmIEFWQ0ZNZWRpYVNlbGVjdGlvbkdyb3VwQWxsb3dzRW1wdHlTZWxlY3Rpb24obGVn
aWJsZUdyb3VwKSkgeworICAgICAgICBpZiAoQVZDRlBsYXllckl0ZW1SZWYgcGxheWVySXRlbSA9
IGF2UGxheWVySXRlbShtX2F2ZldyYXBwZXIpKQogICAgICAgICAgICAgQVZDRlBsYXllckl0ZW1T
ZWxlY3RNZWRpYU9wdGlvbkluTWVkaWFTZWxlY3Rpb25Hcm91cChwbGF5ZXJJdGVtLCAwLCBsZWdp
YmxlR3JvdXApOwogICAgIH0KIApAQCAtMTI4NSw2ICsxMzEzLDEzIEBAIEFWRldyYXBwZXI6OkFW
RldyYXBwZXIoTWVkaWFQbGF5ZXJQcml2YXQKICAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpB
VkZXcmFwcGVyKCVwKSIsIHRoaXMpOwogCiAgICAgbV9ub3RpZmljYXRpb25RdWV1ZSA9IGRpc3Bh
dGNoX3F1ZXVlX2NyZWF0ZSgiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Yubm90aWZp
Y2F0aW9uUXVldWUiLCAwKTsKKworI2lmIEhBVkUoQVZGT1VOREFUSU9OX0xPQURFUl9ERUxFR0FU
RSkKKyAgICBtX3Jlc291cmNlTG9hZGVyQ2FsbGJhY2tzLnZlcnNpb24gPSBrQVZDRkFzc2V0UmVz
b3VyY2VMb2FkZXJfQ2FsbGJhY2tzVmVyc2lvbl8xOworICAgIG1fcmVzb3VyY2VMb2FkZXJDYWxs
YmFja3MuY29udGV4dCA9IG51bGxwdHI7CisgICAgbV9yZXNvdXJjZUxvYWRlckNhbGxiYWNrcy5y
ZXNvdXJjZUxvYWRlclNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXF1ZXN0ZWRSZXNvdXJjZSA9IEFW
RldyYXBwZXI6OnJlc291cmNlTG9hZGVyU2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlcXVlc3RlZFJl
c291cmNlOworI2VuZGlmCisKICAgICBhZGRUb01hcCgpOwogfQogCkBAIC0xNDMxLDE0ICsxNDY2
LDExIEBAIHZvaWQgQVZGV3JhcHBlcjo6Y3JlYXRlQXNzZXRGb3JVUkwoY29uc3QKICAgICBtX2F2
QXNzZXQgPSBhZG9wdENGKEFWQ0ZVUkxBc3NldENyZWF0ZVdpdGhVUkxBbmRPcHRpb25zKGtDRkFs
bG9jYXRvckRlZmF1bHQsIHVybFJlZi5nZXQoKSwgb3B0aW9uc1JlZi5nZXQoKSwgbV9ub3RpZmlj
YXRpb25RdWV1ZSkpOwogCiAjaWYgSEFWRShBVkZPVU5EQVRJT05fTE9BREVSX0RFTEVHQVRFKQot
ICAgIEFWQ0ZBc3NldFJlc291cmNlTG9hZGVyQ2FsbGJhY2tzIGxvYWRlckNhbGxiYWNrczsKLSAg
ICBsb2FkZXJDYWxsYmFja3MudmVyc2lvbiA9IGtBVkNGQXNzZXRSZXNvdXJjZUxvYWRlcl9DYWxs
YmFja3NWZXJzaW9uXzE7CiAgICAgQVNTRVJUKGNhbGxiYWNrQ29udGV4dCgpKTsKLSAgICBsb2Fk
ZXJDYWxsYmFja3MuY29udGV4dCA9IGNhbGxiYWNrQ29udGV4dCgpOwotICAgIGxvYWRlckNhbGxi
YWNrcy5yZXNvdXJjZUxvYWRlclNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXF1ZXN0ZWRSZXNvdXJj
ZSA9IEFWRldyYXBwZXI6OnJlc291cmNlTG9hZGVyU2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlcXVl
c3RlZFJlc291cmNlOworICAgIG1fcmVzb3VyY2VMb2FkZXJDYWxsYmFja3MuY29udGV4dCA9IGNh
bGxiYWNrQ29udGV4dCgpOwogCiAgICAgQVZDRkFzc2V0UmVzb3VyY2VMb2FkZXJSZWYgcmVzb3Vy
Y2VMb2FkZXIgPSBBVkNGVVJMQXNzZXRHZXRSZXNvdXJjZUxvYWRlcihtX2F2QXNzZXQuZ2V0KCkp
OwotICAgIEFWQ0ZBc3NldFJlc291cmNlTG9hZGVyU2V0Q2FsbGJhY2tzKHJlc291cmNlTG9hZGVy
LCAmbG9hZGVyQ2FsbGJhY2tzLCBnbG9iYWxMb2FkZXJEZWxlZ2F0ZVF1ZXVlKCkpOworICAgIEFW
Q0ZBc3NldFJlc291cmNlTG9hZGVyU2V0Q2FsbGJhY2tzKHJlc291cmNlTG9hZGVyLCAmbV9yZXNv
dXJjZUxvYWRlckNhbGxiYWNrcywgZ2xvYmFsTG9hZGVyRGVsZWdhdGVRdWV1ZSgpKTsKICNlbmRp
ZgogfQogCkBAIC0xNTcyLDcgKzE2MDQsNyBAQCBzdHJ1Y3QgTm90aWZpY2F0aW9uQ2FsbGJhY2tE
YXRhIHsKIAogdm9pZCBBVkZXcmFwcGVyOjpwcm9jZXNzTm90aWZpY2F0aW9uKHZvaWQqIGNvbnRl
eHQpCiB7Ci0gICAgQVNTRVJUKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkgPT0gZGlzcGF0Y2hf
Z2V0X2N1cnJlbnRfcXVldWUoKSk7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBB
U1NFUlQoY29udGV4dCk7CiAKICAgICBpZiAoIWNvbnRleHQpCkBAIC0xNzE4LDcgKzE3NTAsNyBA
QCBzdHJ1Y3QgTGVnaWJsZU91dHB1dERhdGEgewogCiB2b2lkIEFWRldyYXBwZXI6OnByb2Nlc3ND
dWUodm9pZCogY29udGV4dCkKIHsKLSAgICBBU1NFUlQoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUo
KSA9PSBkaXNwYXRjaF9nZXRfY3VycmVudF9xdWV1ZSgpKTsKKyAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwogICAgIEFTU0VSVChjb250ZXh0KTsKIAogICAgIGlmICghY29udGV4dCkKQEAgLTE3
NDEsNyArMTc3Myw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6cHJvY2Vzc0N1ZSh2b2lkKiBjb250ZXgK
IAogdm9pZCBBVkZXcmFwcGVyOjpsZWdpYmxlT3V0cHV0Q2FsbGJhY2sodm9pZCogY29udGV4dCwg
QVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0UmVmIGxlZ2libGVPdXRwdXQsIENGQXJyYXlSZWYg
YXR0cmlidXRlZFN0cmluZ3MsIENGQXJyYXlSZWYgbmF0aXZlU2FtcGxlQnVmZmVycywgQ01UaW1l
IGl0ZW1UaW1lKQogewotICAgIEFTU0VSVChkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpICE9IGRp
c3BhdGNoX2dldF9jdXJyZW50X3F1ZXVlKCkpOworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkp
OwogICAgIE11dGV4TG9ja2VyIGxvY2tlcihtYXBMb2NrKCkpOwogICAgIEFWRldyYXBwZXIqIHNl
bGYgPSBhdmZXcmFwcGVyRm9yQ2FsbGJhY2tDb250ZXh0KGNvbnRleHQpOwogICAgIGlmICghc2Vs
ZikgewpAQCAtMTc4NCwxMiArMTgxNiwxNSBAQCB2b2lkIEFWRldyYXBwZXI6OnByb2Nlc3NTaG91
bGRXYWl0Rm9yTG9hCiAgICAgQVZGV3JhcHBlciogc2VsZiA9IGF2ZldyYXBwZXJGb3JDYWxsYmFj
a0NvbnRleHQobG9hZFJlcXVlc3REYXRhLT5tX2NvbnRleHQpOwogICAgIGlmICghc2VsZikgewog
ICAgICAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpwcm9jZXNzU2hvdWxkV2FpdEZvckxvYWRp
bmdPZlJlc291cmNlIGludm9rZWQgZm9yIGRlbGV0ZWQgQVZGV3JhcHBlciAlZCIsIHJlaW50ZXJw
cmV0X2Nhc3Q8dWludHB0cl90Pihjb250ZXh0KSk7Ci0gICAgICAgIEFWQ0ZBc3NldFJlc291cmNl
TG9hZGluZ1JlcXVlc3RGaW5pc2hMb2FkaW5nV2l0aEVycm9yKGxvYWRSZXF1ZXN0RGF0YS0+bV9y
ZXF1ZXN0LmdldCgpLCBudWxscHRyKTsKKyAgICAgICAgUmV0YWluUHRyPENGRXJyb3JSZWY+IGVy
cm9yID0gYWRvcHRDRihDRkVycm9yQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRkVycm9y
RG9tYWluQ0ZOZXR3b3JrLCBrQ0ZVUkxFcnJvclVua25vd24sIG51bGxwdHIpKTsKKyAgICAgICAg
QVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdEZpbmlzaExvYWRpbmdXaXRoRXJyb3IobG9h
ZFJlcXVlc3REYXRhLT5tX3JlcXVlc3QuZ2V0KCksIGVycm9yLmdldCgpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGlmICghc2VsZi0+c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291
cmNlKGxvYWRSZXF1ZXN0RGF0YS0+bV9yZXF1ZXN0LmdldCgpKSkKLSAgICAgICAgQVZDRkFzc2V0
UmVzb3VyY2VMb2FkaW5nUmVxdWVzdEZpbmlzaExvYWRpbmdXaXRoRXJyb3IobG9hZFJlcXVlc3RE
YXRhLT5tX3JlcXVlc3QuZ2V0KCksIG51bGxwdHIpOworICAgIGlmICghc2VsZi0+c2hvdWxkV2Fp
dEZvckxvYWRpbmdPZlJlc291cmNlKGxvYWRSZXF1ZXN0RGF0YS0+bV9yZXF1ZXN0LmdldCgpKSkg
eworICAgICAgICBSZXRhaW5QdHI8Q0ZFcnJvclJlZj4gZXJyb3IgPSBhZG9wdENGKENGRXJyb3JD
cmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGRXJyb3JEb21haW5DRk5ldHdvcmssIGtDRlVS
TEVycm9yVW5rbm93biwgbnVsbHB0cikpOworICAgICAgICBBVkNGQXNzZXRSZXNvdXJjZUxvYWRp
bmdSZXF1ZXN0RmluaXNoTG9hZGluZ1dpdGhFcnJvcihsb2FkUmVxdWVzdERhdGEtPm1fcmVxdWVz
dC5nZXQoKSwgZXJyb3IuZ2V0KCkpOworICAgIH0KIH0KIAogYm9vbCBBVkZXcmFwcGVyOjpzaG91
bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UoQVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVz
dFJlZiBhdlJlcXVlc3QpCkBAIC0xODE5LDcgKzE4NTQsNyBAQCBib29sIEFWRldyYXBwZXI6OnNo
b3VsZFdhaXRGb3JMb2FkaW5nT2ZSCiAgICAgICAgIGlmICghbV9vd25lci0+cGxheWVyKCktPmtl
eU5lZWRlZChpbml0RGF0YS5nZXQoKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICAgICAgbV9rZXlVUklUb1JlcXVlc3RNYXAuc2V0KGtleVVSSSwgYXZSZXF1ZXN0KTsKKyAgICAg
ICAgc2V0UmVxdWVzdEZvcktleShrZXlVUkksIGF2UmVxdWVzdCk7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KICNlbmRpZgpAQCAtMTg2MSw2ICsxODk2LDcgQEAgdm9pZCBBVkZXcmFwcGVy
OjpzZXRBc3NldChBVkNGVVJMQXNzZXRSZQogCiBQbGF0Zm9ybUxheWVyKiBBVkZXcmFwcGVyOjpw
bGF0Zm9ybUxheWVyKCkKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmICht
X3ZpZGVvTGF5ZXJXcmFwcGVyKQogICAgICAgICByZXR1cm4gbV92aWRlb0xheWVyV3JhcHBlci0+
cGxhdGZvcm1MYXllcigpOwogCkBAIC0xOTkxLDE0ICsyMDI3LDM2IEBAIHZvaWQgQVZGV3JhcHBl
cjo6dXBkYXRlVmlkZW9MYXllckdyYXZpdHkKIH0KIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVE
SUFfVjIpCit2b2lkIEFWRldyYXBwZXI6OnNldFJlcXVlc3RGb3JLZXkoY29uc3QgU3RyaW5nJiBr
ZXlVUkksIEFWQ0ZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3RSZWYgYXZSZXF1ZXN0KQorewor
ICAgIGF1dG8gcmVxdWVzdHNJdGVyYXRvciA9IG1fa2V5VVJJVG9SZXF1ZXN0TWFwLmZpbmQoa2V5
VVJJKTsKKyAgICBpZiAocmVxdWVzdHNJdGVyYXRvciA9PSBtX2tleVVSSVRvUmVxdWVzdE1hcC5l
bmQoKSkgeworICAgICAgICBWZWN0b3I8UmV0YWluUHRyPEFWQ0ZBc3NldFJlc291cmNlTG9hZGlu
Z1JlcXVlc3RSZWY+PiByZXF1ZXN0czsKKyAgICAgICAgcmVxdWVzdHMuYXBwZW5kKGF2UmVxdWVz
dCk7CisgICAgICAgIG1fa2V5VVJJVG9SZXF1ZXN0TWFwLnNldChrZXlVUkksIHJlcXVlc3RzKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHJlcXVlc3RzSXRlcmF0b3ItPnZhbHVlLmFw
cGVuZChhdlJlcXVlc3QpOworfQorCiBSZXRhaW5QdHI8QVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5n
UmVxdWVzdFJlZj4gQVZGV3JhcHBlcjo6dGFrZVJlcXVlc3RGb3JLZXlVUkkoY29uc3QgU3RyaW5n
JiBrZXlVUkkpCiB7Ci0gICAgcmV0dXJuIG1fa2V5VVJJVG9SZXF1ZXN0TWFwLnRha2Uoa2V5VVJJ
KTsKKyAgICBhdXRvIHJlcXVlc3RzSXRlcmF0b3IgPSBtX2tleVVSSVRvUmVxdWVzdE1hcC5maW5k
KGtleVVSSSk7CisgICAgaWYgKHJlcXVlc3RzSXRlcmF0b3IgPT0gbV9rZXlVUklUb1JlcXVlc3RN
YXAuZW5kKCkpCisgICAgICAgIHJldHVybiBSZXRhaW5QdHI8QVZDRkFzc2V0UmVzb3VyY2VMb2Fk
aW5nUmVxdWVzdFJlZj4oKTsKKworICAgIGF1dG8gcmVxdWVzdCA9IHJlcXVlc3RzSXRlcmF0b3It
PnZhbHVlLnRha2VMYXN0KCk7CisgICAgaWYgKHJlcXVlc3RzSXRlcmF0b3ItPnZhbHVlLmlzRW1w
dHkoKSkKKyAgICAgICAgbV9rZXlVUklUb1JlcXVlc3RNYXAudGFrZShrZXlVUkkpOworCisgICAg
cmV0dXJuIHJlcXVlc3Q7CiB9CiAjZW5kaWYKIAogdm9pZCBMYXllckNsaWVudDo6cGxhdGZvcm1D
QUxheWVyTGF5b3V0U3VibGF5ZXJzT2ZMYXllcihQbGF0Zm9ybUNBTGF5ZXIqIHdyYXBwZXJMYXll
cikKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX3BhcmVudCk7
CiAgICAgQVNTRVJUKG1fcGFyZW50LT52aWRlb0xheWVyV3JhcHBlcigpID09IHdyYXBwZXJMYXll
ci0+cGxhdGZvcm1MYXllcigpKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmgJKHJldmlzaW9uIDE3NDI3
NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw2
ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8TWVkaWFQbGF5ZXJQcml2
YXRlSW50ZXJmYWNlPiBjcmVhdGUoTWVkaWFQbGF5ZXIqKTsKICAgICBzdGF0aWMgdm9pZCBnZXRT
dXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZz4mIHR5cGVzKTsKICAgICBzdGF0aWMgTWVkaWFQ
bGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0
UGFyYW1ldGVycyYpOworICAgIHN0YXRpYyBib29sIHN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0
cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKICAgICBzdGF0aWMgYm9v
bCBpc0F2YWlsYWJsZSgpOwogCiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbExvYWQoKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3Jl
QVZDRlJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5j
cHAJKHJldmlzaW9uIDE3NDI3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODEsNyArODEsOCBAQCB2b2lkIFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI6OnN0
YXJ0TG9hCiAgICAgICAgIG1fcmVzb3VyY2UtPmFkZENsaWVudCh0aGlzKTsKICAgICBlbHNlIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gc3RhcnQgbG9hZCBmb3IgbWVkaWEgYXQgdXJs
ICVzIiwgcmVxdWVzdFVSTC5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7Ci0gICAgICAgIEFWQ0ZB
c3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3RGaW5pc2hMb2FkaW5nV2l0aEVycm9yKG1fYXZSZXF1
ZXN0LmdldCgpLCBudWxscHRyKTsKKyAgICAgICAgUmV0YWluUHRyPENGRXJyb3JSZWY+IGVycm9y
ID0gYWRvcHRDRihDRkVycm9yQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRkVycm9yRG9t
YWluQ0ZOZXR3b3JrLCBrQ0ZVUkxFcnJvclVua25vd24sIG51bGxwdHIpKTsKKyAgICAgICAgQVZD
RkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdEZpbmlzaExvYWRpbmdXaXRoRXJyb3IobV9hdlJl
cXVlc3QuZ2V0KCksIGVycm9yLmdldCgpKTsKICAgICB9CiB9CiAKQEAgLTExMCw3ICsxMTEsOCBA
QCB2b2lkIFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlCiAKICAgICBpbnQgc3Rh
dHVzID0gcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKTsKICAgICBpZiAoc3RhdHVzICYmIChzdGF0
dXMgPCAyMDAgfHwgc3RhdHVzID4gMjk5KSkgewotICAgICAgICBBVkNGQXNzZXRSZXNvdXJjZUxv
YWRpbmdSZXF1ZXN0RmluaXNoTG9hZGluZ1dpdGhFcnJvcihtX2F2UmVxdWVzdC5nZXQoKSwgbnVs
bHB0cik7CisgICAgICAgIFJldGFpblB0cjxDRkVycm9yUmVmPiBlcnJvciA9IGFkb3B0Q0YoQ0ZF
cnJvckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZFcnJvckRvbWFpbkNGTmV0d29yaywg
c3RhdHVzLCBudWxscHRyKSk7CisgICAgICAgIEFWQ0ZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVl
c3RGaW5pc2hMb2FkaW5nV2l0aEVycm9yKG1fYXZSZXF1ZXN0LmdldCgpLCBlcnJvci5nZXQoKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzMSw3ICsxMzMsOCBAQCB2b2lkIFdlYkNv
cmVBVkNGUmVzb3VyY2VMb2FkZXI6Om5vdGlmeUZpCiAgICAgICAgIC8vIEZJWE1FOiAgICBbW21f
YXZSZXF1ZXN0LmdldCgpIGNvbnRlbnRJbmZvcm1hdGlvblJlcXVlc3RdIHNldENvbnRlbnRUeXBl
OkAiIl07CiAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CiAKLSAgICAgICAgQVZDRkFzc2V0UmVz
b3VyY2VMb2FkaW5nUmVxdWVzdEZpbmlzaExvYWRpbmdXaXRoRXJyb3IobV9hdlJlcXVlc3QuZ2V0
KCksIG51bGxwdHIpOworICAgICAgICBSZXRhaW5QdHI8Q0ZFcnJvclJlZj4gZXJyb3IgPSBhZG9w
dENGKENGRXJyb3JDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGRXJyb3JEb21haW5DRk5l
dHdvcmssIGtDRlVSTEVycm9yVW5rbm93biwgbnVsbHB0cikpOworICAgICAgICBBVkNGQXNzZXRS
ZXNvdXJjZUxvYWRpbmdSZXF1ZXN0RmluaXNoTG9hZGluZ1dpdGhFcnJvcihtX2F2UmVxdWVzdC5n
ZXQoKSwgZXJyb3IuZ2V0KCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGZ1bGZpbGxSZXF1ZXN0
V2l0aFJlc291cmNlKHJlc291cmNlKTsKICAgICAgICAgLy8gRklYTUU6IFttX2F2UmVxdWVzdC5n
ZXQoKSBmaW5pc2hMb2FkaW5nXTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239242</attachid>
            <date>2014-10-03 15:22:12 -0700</date>
            <delta_ts>2014-10-21 11:54:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137409-20141003152520.patch</filename>
            <type>text/plain</type>
            <size>22554</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3NDI5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcwIEBACisyMDE0LTEwLTAzICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXaW5dIEV4dGVuZCBBVkZv
dW5kYXRpb25DRiBNZWRpYSBJbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3NDA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjb2RlIGlzIG5vdCB5ZXQgYmVpbmcgYnVpbHQg
YW5kIHRlc3RlZCBieSBvdXIgc3lzdGVtLiBBcHByb3ByaWF0ZQorICAgICAgICB0ZXN0cyB3aWxs
IGJlIGFjdGl2YXRlZCB3aGVuIHdlIGVuYWJsZSB0aGUgYnVpbGQuCisKKyAgICAgICAgTW9zdCBv
ZiB0aGlzIHBhdGNoIGludm9sdmVzIGNvcnJlY3Rpbmcgc29tZSBtaXN1c2Ugb2YgdGhlIEFWRm91
bmRhdGlvbkNGIEFQSS4KKyAgICAgICAgMS4gSXQgaXMgbmV2ZXIgYXBwcm9wcmlhdGUgaW4gQVZD
RiB0byBwYXNzIGEgbnVsbCBDRkVycm9yUmVmOyBpbnN0ZWFkIHlvdSBtdXN0CisgICAgICAgICAg
IHBhc3MgYSBDRkVycm9yUmVmIHdpdGggZXJyb3IgdHlwZSBrQ0ZVUkxFcnJvclVua25vd24uCisg
ICAgICAgIDIuIEJlY2F1c2Ugb2YgdGhlIGFzeW5jaHJvbm91cyB3YXkgd2UgaGFuZGxlIHRoZSBy
ZXF1ZXN0L3Jlc3BvbnNlLCBpdCBpcyBwb3NzaWJsZQorICAgICAgICAgICBmb3IgQVZDRiB0byBt
YWtlIHR3byBBVkNGIHJlcXVlc3RzIHdoaWxlIG5lZ290aWF0aW5nIHRoZSBrZXkgZXhjaGFuZ2Uu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQVZGb3VuZGF0
aW9uQ0ZTb2Z0TGlua2luZy5oOiBBZGQKKyAgICAgICAgbWlzc2luZyBkZWNsYXJhdGlvbi4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91
bmRhdGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkZvdW5kYXRpb25D
Rjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KTogVGlnaHRlbiB1cCBzY29wZQorICAgICAgICBvZiAndW5k
ZXJseWluZ0Vycm9yJy4KKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkZvdW5kYXRpb25D
Rjo6dXBkYXRlKTogQWRkIGNhbGwgdG8gY29tcGxldGUgdGhlCisgICAgICAgIGxvYWRpbmcgcHJv
Y2Vzcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUFWQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWQ0Y6OmxhYmVsKTogSGFuZGxlIG51bGwgdGl0bGVzIENGQXJyYXkKKyAgICAg
ICAgZm91bmQgZHVyaW5nIHRlc3RpbmcuCisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlQVZDRjo6bGFuZ3VhZ2UpOiBEaXR0byBmb3IgYSBudWxsIGxvY2FsZS4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uQ0Y6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOiBBZGQgc3VwcG9ydAorICAgICAg
ICBmb3IgdGhlIG5ldyAnc3VwcG9ydHNLZXlTeXN0ZW0nIG1ldGhvZC4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpjcmVhdGVDb250ZXh0VmlkZW9S
ZW5kZXJlcik6IEFkZAorICAgICAgICBhc3NlcnRpb24gZm9yIG1haW5UaHJlYWQuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6ZGVzdHJveUNvbnRl
eHRWaWRlb1JlbmRlcmVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25DRjo6Y3JlYXRlVmlkZW9MYXllcik6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmRlc3Ryb3lWaWRlb0xh
eWVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25DRjo6Y3JlYXRlQVZQbGF5ZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpjcmVhdGVBVlBsYXllckl0ZW0pOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpwbGF0
Zm9ybUxheWVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25DRjo6cGxhdGZvcm1TZXRWaXNpYmxlKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cGFpbnRDdXJyZW50RnJhbWVJ
bkNvbnRleHQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbkNGOjpwYWludCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnN1cHBvcnRzS2V5U3lzdGVtKTogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6c2l6ZUNoYW5n
ZWQpOiBBZGQgYXNzZXJ0aW9uIHRoYXQgdGhpcworICAgICAgICBpcyBiZWluZyBjYWxsZWQgb24g
dGhlIG1haW4gdGhyZWFkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uQ0Y6OnByb2Nlc3NNZWRpYVNlbGVjdGlvbk9wdGlvbnMpOiBIYW5kbGUKKyAgICAg
ICAgdGhlIGFsbG93cyBlbXB0eSBtZWRpYSBzZWxlY3Rpb24gcHJvcGVybHkgYmFzZWQgb24gdGVz
dCBiZWhhdmlvci4KKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6OkFWRldyYXBwZXIpOiBJ
bml0aWFsaXplIHJlc291cmNlIGxvYWRlciBjYWxsYmFjayBzdHJ1Y3R1cmUKKyAgICAgICAgd2hl
biBidWlsZGluZyB3aXRoIEFWRk9VTkRBVElPTl9MT0FERVJfREVMRUdBVEUuCisgICAgICAgIChX
ZWJDb3JlOjpBVkZXcmFwcGVyOjpjcmVhdGVBc3NldEZvclVSTCk6IFVzZSBBVkZXcmFwcGVyJ3Mg
bG9hZGVyIGNhbGxiYWNrIHN0cnVjdCwKKyAgICAgICAgcmF0aGVyIHRoYW4gcGFzc2luZyB0aGUg
YWRkcmVzcyBvZiBhIHRlbXBvcmFyeSB2YWx1ZS4KKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBw
ZXI6OnByb2Nlc3NOb3RpZmljYXRpb24pOiBTdG9wIHVzaW5nIHRoZSBkZXByZWNhdGVkIAorICAg
ICAgICAnZGlzcGF0Y2hfZ2V0X2N1cnJlbnRfcXVldWUnIGZ1bmN0aW9uLgorICAgICAgICAoV2Vi
Q29yZTo6QVZGV3JhcHBlcjo6cHJvY2Vzc0N1ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
QVZGV3JhcHBlcjo6bGVnaWJsZU91dHB1dENhbGxiYWNrKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpBVkZXcmFwcGVyOjpwcm9jZXNzU2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKTog
UGFzcyBhIHZhbGlkIENGRXJyb3IKKyAgICAgICAgb2JqZWN0OyBudWxscHRyIGlzIG5vdCBhbGxv
d2VkIGFzIGFuIGFyZ3VtZW50IHRvIHRoZSAiLi4uRmluaXNoZWRMb2FkaW5nV2l0aEVycm9yIgor
ICAgICAgICBtZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpzaG91bGRXYWl0
Rm9yTG9hZGluZ09mUmVzb3VyY2UpOiBBZGQgc3VwcG9ydCBmb3IgbXVsdGlwbGUKKyAgICAgICAg
aW4tZmxpZ2h0IHJlcXVlc3RzLgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6cGxhdGZv
cm1MYXllcik6IEFzc2VydCB3ZSBhcmUgb24gdGhlIG1haW4gdGhyZWFkLgorICAgICAgICAoV2Vi
Q29yZTo6QVZGV3JhcHBlcjo6c2V0UmVxdWVzdEZvcktleSk6IEFkZCBzdXBwb3J0IGZvciBtdWx0
aXBsZSBpbi1mbGlnaHQgcmVxdWVzdHMuCisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjp0
YWtlUmVxdWVzdEZvcktleVVSSSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDbGll
bnQ6OnBsYXRmb3JtQ0FMYXllckxheW91dFN1YmxheWVyc09mTGF5ZXIpOiBEaXR0by4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uQ0YuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5jcHA6IE1ha2Ugc3VyZSB3ZSBwYXNzCisg
ICAgICAgIHZhbGlkIENGRXJyb3Igb2JqZWN0cywgcmF0aGVyIHRoYW4gbnVsbHB0ci4KKwogMjAx
NC0xMC0wMyAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBb
V2luXSBVbnJldmlld2VkIGJ1aWxkIGZpeCBmb3IgTVNWQyAyMDEzIFNQIDMuCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQVZGb3VuZGF0aW9u
Q0ZTb2Z0TGlua2luZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9BVkZvdW5kYXRpb25DRlNvZnRMaW5raW5nLmgJKHJldmlz
aW9uIDE3NDI3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9jZi9BVkZvdW5kYXRpb25DRlNvZnRMaW5raW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTMw
Miw2ICszMDIsOSBAQCBTT0ZUX0xJTktfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDCiBT
T0ZUX0xJTktfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRkFzc2V0UmVzb3VyY2VMb2Fk
aW5nUmVxdWVzdEdldFVSTFJlcXVlc3QsIENGVVJMUmVxdWVzdFJlZiwgX19jZGVjbCwgKEFWQ0ZB
c3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3RSZWYgbG9hZGluZ1JlcXVlc3QpLCAobG9hZGluZ1Jl
cXVlc3QpKQogI2RlZmluZSBBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0R2V0VVJMUmVx
dWVzdCAgc29mdExpbmtfQVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdEdldFVSTFJlcXVl
c3QgCiAKK1NPRlRfTElOS19ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGQXNzZXRSZXNv
dXJjZUxvYWRpbmdSZXF1ZXN0RmluaXNoTG9hZGluZ1dpdGhSZXNwb25zZSwgdm9pZCwgX19jZGVj
bCwgKEFWQ0ZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3RSZWYgbG9hZGluZ1JlcXVlc3QsIENG
VVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UsIENGRGF0YVJlZiBkYXRhLCBDRlVSTFJlcXVlc3RSZWYg
cmVkaXJlY3QpLCAobG9hZGluZ1JlcXVlc3QsIHJlc3BvbnNlLCBkYXRhLCByZWRpcmVjdCkpCisj
ZGVmaW5lIEFWQ0ZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3RGaW5pc2hMb2FkaW5nV2l0aFJl
c3BvbnNlICBzb2Z0TGlua19BVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0RmluaXNoTG9h
ZGluZ1dpdGhSZXNwb25zZSAKKwogI2VuZGlmCiAKIC8vIFZhcmlhYmxlcwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0NETVNlc3Npb25BVkZv
dW5kYXRpb25DRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25DRi5jcHAJKHJldmlz
aW9uIDE3NDI3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9jZi9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
NSw4ICs4NSw3IEBAIFBhc3NSZWZQdHI8VWludDhBcnJheT4gQ0RNU2Vzc2lvbkFWRm91bmQKICAg
ICAgICAgICAgIHVzZXJJbmZvID0gYWRvcHRDRihDRkVycm9yQ29weVVzZXJJbmZvKGNmRXJyb3Ip
KTsKIAogICAgICAgICAgICAgaWYgKHVzZXJJbmZvKSB7Ci0gICAgICAgICAgICAgICAgQ0ZFcnJv
clJlZiB1bmRlcmx5aW5nRXJyb3IgPSAoQ0ZFcnJvclJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZSh1
c2VySW5mby5nZXQoKSwga0NGRXJyb3JVbmRlcmx5aW5nRXJyb3JLZXkpOwotICAgICAgICAgICAg
ICAgIGlmICh1bmRlcmx5aW5nRXJyb3IpCisgICAgICAgICAgICAgICAgaWYgKENGRXJyb3JSZWYg
dW5kZXJseWluZ0Vycm9yID0gKENGRXJyb3JSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUodXNlcklu
Zm8uZ2V0KCksIGtDRkVycm9yVW5kZXJseWluZ0Vycm9yS2V5KSkKICAgICAgICAgICAgICAgICAg
ICAgc3lzdGVtQ29kZSA9IENGRXJyb3JHZXRDb2RlKHVuZGVybHlpbmdFcnJvcik7CiAgICAgICAg
ICAgICB9CiAKQEAgLTExMyw5ICsxMTIsNyBAQCBib29sIENETVNlc3Npb25BVkZvdW5kYXRpb25D
Rjo6dXBkYXRlKFVpCiAgICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IGtleURhdGEgPSBh
ZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga2V5LT5ieXRl
TGVuZ3RoKCkpKTsKICAgICBDRkRhdGFBcHBlbmRCeXRlcyhrZXlEYXRhLmdldCgpLCByZWludGVy
cHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oa2V5LT5iYXNlQWRkcmVzcygpKSwga2V5LT5ieXRlTGVu
Z3RoKCkpOwogCi0gICAgLy8gVE9ETzogQVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nRGF0YVJlcXVl
c3RSZXNwb25kV2l0aERhdGEobV9yZXF1ZXN0LmdldCgpLCBrZXlEYXRhLmdldCgpKTsKLSAgICAv
LyBUT0RPOiBBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0RmluaXNoZWRMb2FkaW5nKG1f
cmVxdWVzdC5nZXQoKSk7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBBVkNGQXNzZXRSZXNv
dXJjZUxvYWRpbmdSZXF1ZXN0RmluaXNoTG9hZGluZ1dpdGhSZXNwb25zZShtX3JlcXVlc3QuZ2V0
KCksIG51bGxwdHIsIGtleURhdGEuZ2V0KCksIG51bGxwdHIpOwogCiAgICAgZXJyb3JDb2RlID0g
TWVkaWFQbGF5ZXI6Ok5vRXJyb3I7CiAgICAgc3lzdGVtQ29kZSA9IDA7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWQ0YuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5jcHAJKHJl
dmlzaW9uIDE3NDI3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE0Myw2ICsxNDMsOSBAQCBBdG9taWNTdHJpbmcgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFW
Q0Y6CiAKICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gY29tbW9uTWV0YURhdGEgPSBhZG9wdENG
KEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvbkNvcHlDb21tb25NZXRhZGF0YShtZWRpYVNlbGVjdGlv
bk9wdGlvbigpKSk7CiAgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IHRpdGxlcyA9IGFkb3B0Q0Yo
QVZDRk1ldGFkYXRhSXRlbUNvcHlJdGVtc1dpdGhLZXlBbmRLZXlTcGFjZShjb21tb25NZXRhRGF0
YS5nZXQoKSwgQVZDRk1ldGFkYXRhQ29tbW9uS2V5VGl0bGUsIEFWQ0ZNZXRhZGF0YUtleVNwYWNl
Q29tbW9uKSk7CisgICAgaWYgKCF0aXRsZXMpCisgICAgICAgIHJldHVybiBlbXB0eUF0b207CisK
ICAgICBDRkluZGV4IHRpdGxlc0NvdW50ID0gQ0ZBcnJheUdldENvdW50KHRpdGxlcy5nZXQoKSk7
CiAgICAgaWYgKCF0aXRsZXNDb3VudCkKICAgICAgICAgcmV0dXJuIGVtcHR5QXRvbTsKQEAgLTE3
MCw2ICsxNzMsOSBAQCBBdG9taWNTdHJpbmcgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0Y6CiAg
ICAgICAgIHJldHVybiBlbXB0eUF0b207CiAKICAgICBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+IGxv
Y2FsZSA9IGFkb3B0Q0YoQVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9uQ29weUxvY2FsZShtZWRpYVNl
bGVjdGlvbk9wdGlvbigpKSk7CisgICAgaWYgKCFsb2NhbGUpCisgICAgICAgIHJldHVybiBlbXB0
eUF0b207CisKICAgICByZXR1cm4gQ0ZMb2NhbGVHZXRJZGVudGlmaWVyKGxvY2FsZS5nZXQoKSk7
CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAkocmV2aXNpb24gMTc0Mjc1KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbkNGLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDYgKzE1Myw3IEBA
IHB1YmxpYzoKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCiAgICAgUmV0YWluUHRy
PEFWQ0ZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3RSZWY+IHRha2VSZXF1ZXN0Rm9yS2V5VVJJ
KGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc2V0UmVxdWVzdEZvcktleShjb25zdCBTdHJpbmcm
IGtleVVSSSwgQVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFJlZiBhdlJlcXVlc3QpOwog
I2VuZGlmCiAKIHByaXZhdGU6CkBAIC0xOTcsNyArMTk4LDggQEAgcHJpdmF0ZToKICAgICBJbmJh
bmRUZXh0VHJhY2tQcml2YXRlQVZGKiBtX2N1cnJlbnRUZXh0VHJhY2s7CiAKICNpZiBFTkFCTEUo
RU5DUllQVEVEX01FRElBX1YyKQotICAgIEhhc2hNYXA8U3RyaW5nLCBSZXRhaW5QdHI8QVZDRkFz
c2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFJlZj4+IG1fa2V5VVJJVG9SZXF1ZXN0TWFwOworICAg
IEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8UmV0YWluUHRyPEFWQ0ZBc3NldFJlc291cmNlTG9hZGlu
Z1JlcXVlc3RSZWY+Pj4gbV9rZXlVUklUb1JlcXVlc3RNYXA7CisgICAgQVZDRkFzc2V0UmVzb3Vy
Y2VMb2FkZXJDYWxsYmFja3MgbV9yZXNvdXJjZUxvYWRlckNhbGxiYWNrczsKICNlbmRpZgogfTsK
IApAQCAtMzQyLDcgKzM0NCw3IEBAIFBhc3NPd25QdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJm
YWNlPgogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cmVnaXN0ZXJNZWRp
YUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgaWYgKGlzQXZh
aWxhYmxlKCkpCi0gICAgICAgIHJlZ2lzdHJhcihjcmVhdGUsIGdldFN1cHBvcnRlZFR5cGVzLCBz
dXBwb3J0c1R5cGUsIDAsIDAsIDAsIDApOworICAgICAgICByZWdpc3RyYXIoY3JlYXRlLCBnZXRT
dXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCAwLCAwLCAwLCBzdXBwb3J0c0tleVN5c3RlbSk7
CiB9CiAKIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25DRihNZWRpYVBsYXllciogcGxheWVyKQpAQCAtNDA3LDYgKzQwOSw3IEBA
IGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmgKIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmNyZWF0ZUNvbnRleHRWaWRlb1JlbmRlcmVyKCkKIHsK
ICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6Y3JlYXRl
Q29udGV4dFZpZGVvUmVuZGVyZXIoJXApIiwgdGhpcyk7CisgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKIAogICAgIGlmIChpbWFnZUdlbmVyYXRvcihtX2F2ZldyYXBwZXIpKQogICAgICAgICBy
ZXR1cm47CkBAIC00MTcsMTIgKzQyMCwxNCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGOjpjCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmRl
c3Ryb3lDb250ZXh0VmlkZW9SZW5kZXJlcigpCiB7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKICAgICBpZiAobV9hdmZXcmFwcGVyKQogICAgICAgICBtX2F2ZldyYXBwZXItPmRlc3Ryb3lJ
bWFnZUdlbmVyYXRvcigpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bkNGOjpjcmVhdGVWaWRlb0xheWVyKCkKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
ICAgIEFTU0VSVChzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkpOwogCiAgICAgaWYgKG1f
YXZmV3JhcHBlcikKQEAgLTQzMSw2ICs0MzYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbkNGOjpjCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6
OmRlc3Ryb3lWaWRlb0xheWVyKCkKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAg
IExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpkZXN0cm95Vmlk
ZW9MYXllciglcCkgLSBkZXN0cm95aW5nICVwIiwgdGhpcywgdmlkZW9MYXllcihtX2F2ZldyYXBw
ZXIpKTsKICAgICBpZiAobV9hdmZXcmFwcGVyKQogICAgICAgICBtX2F2ZldyYXBwZXItPmRlc3Ry
b3lWaWRlb0xheWVyKCk7CkBAIC00NzAsNiArNDc2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25DRjo6YwogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bkNGOjpjcmVhdGVBVlBsYXllcigpCiB7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAg
ICBBU1NFUlQobV9hdmZXcmFwcGVyKTsKICAgICAKICAgICBzZXREZWxheUNhbGxiYWNrcyh0cnVl
KTsKQEAgLTQ3OSw2ICs0ODYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bkNGOjpjCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmNyZWF0ZUFW
UGxheWVySXRlbSgpCiB7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQo
bV9hdmZXcmFwcGVyKTsKICAgICAKICAgICBzZXREZWxheUNhbGxiYWNrcyh0cnVlKTsKQEAgLTUy
OSw2ICs1MzcsNyBAQCBQbGF0Zm9ybU1lZGlhIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhCiAK
IFBsYXRmb3JtTGF5ZXIqIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpwbGF0Zm9y
bUxheWVyKCkgY29uc3QKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmICgh
bV9hdmZXcmFwcGVyKQogICAgICAgICByZXR1cm4gMDsKIApAQCAtNTM3LDYgKzU0Niw3IEBAIFBs
YXRmb3JtTGF5ZXIqIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmQKIAogdm9pZCBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25DRjo6cGxhdGZvcm1TZXRWaXNpYmxlKGJvb2wgaXNWaXNpYmxl
KQogeworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgaWYgKCFtX2F2ZldyYXBwZXIp
CiAgICAgICAgIHJldHVybjsKICAgICAKQEAgLTgyOSw2ICs4MzksNyBAQCBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb246OkFzc2V0U3RhCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uQ0Y6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogICAgIGlmICghbWV0YURhdGFBdmFpbGFibGUoKSB8fCBjb250ZXh0LT5wYWludGluZ0Rp
c2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtODQzLDYgKzg1NCw3IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnAKIAogdm9pZCBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25DRjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJ
bnRSZWN0JiByZWN0KQogeworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgaWYgKCFt
ZXRhRGF0YUF2YWlsYWJsZSgpIHx8IGNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSB8fCAhaW1h
Z2VHZW5lcmF0b3IobV9hdmZXcmFwcGVyKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC05MTEsNiAr
OTIzLDI0IEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcmkKICAgICBy
ZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOwogfQogCitib29sIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtl
eVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK3sKKyNpZiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKSB8fCBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQorICAgIGlmICgha2V5U3lzdGVt
LmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoIWtleVN5c3RlbUlzU3VwcG9ydGVkKGtleVN5c3Rl
bSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaWYgKCFtaW1lVHlwZS5p
c0VtcHR5KCkgJiYgIW1pbWVUeXBlQ2FjaGUoKS5jb250YWlucyhtaW1lVHlwZSkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorI2Vsc2UK
KyAgICBVTlVTRURfUEFSQU0oa2V5U3lzdGVtKTsKKyAgICBVTlVTRURfUEFSQU0obWltZVR5cGUp
OworI2VuZGlmCisgICAgcmV0dXJuIGZhbHNlOworfQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGOjppc0F2YWlsYWJsZSgpCiB7CkBAIC0xMDM3LDYgKzEwNjcsNyBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjp0CiAKIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnNpemVDaGFuZ2VkKCkKIHsKKyAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwogICAgIGlmICghYXZBc3NldChtX2F2ZldyYXBwZXIpKQogICAgICAgICBy
ZXR1cm47CiAgICAgCkBAIC0xMTU3LDExICsxMTg4LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25DRjo6cAogCiAgICAgLy8gV2UgZW5hYmxlZCBhdXRvbWF0aWMgbWVkaWEg
c2VsZWN0aW9uIGJlY2F1c2Ugd2Ugd2FudCBhbHRlcm5hdGUgYXVkaW8gdHJhY2tzIHRvIGJlIGVu
YWJsZWQvZGlzYWJsZWQgYXV0b21hdGljYWxseSwKICAgICAvLyBidXQgc2V0IHRoZSBzZWxlY3Rl
ZCBsZWdpYmxlIHRyYWNrIHRvIG5pbCBzbyB0ZXh0IHRyYWNrcyB3aWxsIG5vdCBiZSBhdXRvbWF0
aWNhbGx5IGNvbmZpZ3VyZWQuCi0gICAgaWYgKCFtX3RleHRUcmFja3Muc2l6ZSgpKSB7Ci0gICAg
ICAgIEFTU0VSVChBVkNGTWVkaWFTZWxlY3Rpb25Hcm91cEFsbG93c0VtcHR5U2VsZWN0aW9uKGxl
Z2libGVHcm91cCkpOwotICAgICAgICBBVkNGUGxheWVySXRlbVJlZiBwbGF5ZXJJdGVtID0gYXZQ
bGF5ZXJJdGVtKG1fYXZmV3JhcHBlcik7Ci0KLSAgICAgICAgaWYgKHBsYXllckl0ZW0pCisgICAg
aWYgKCFtX3RleHRUcmFja3Muc2l6ZSgpICYmIEFWQ0ZNZWRpYVNlbGVjdGlvbkdyb3VwQWxsb3dz
RW1wdHlTZWxlY3Rpb24obGVnaWJsZUdyb3VwKSkgeworICAgICAgICBpZiAoQVZDRlBsYXllckl0
ZW1SZWYgcGxheWVySXRlbSA9IGF2UGxheWVySXRlbShtX2F2ZldyYXBwZXIpKQogICAgICAgICAg
ICAgQVZDRlBsYXllckl0ZW1TZWxlY3RNZWRpYU9wdGlvbkluTWVkaWFTZWxlY3Rpb25Hcm91cChw
bGF5ZXJJdGVtLCAwLCBsZWdpYmxlR3JvdXApOwogICAgIH0KIApAQCAtMTI4NSw2ICsxMzEzLDEz
IEBAIEFWRldyYXBwZXI6OkFWRldyYXBwZXIoTWVkaWFQbGF5ZXJQcml2YXQKICAgICBMT0coTWVk
aWEsICJBVkZXcmFwcGVyOjpBVkZXcmFwcGVyKCVwKSIsIHRoaXMpOwogCiAgICAgbV9ub3RpZmlj
YXRpb25RdWV1ZSA9IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uQ0Yubm90aWZpY2F0aW9uUXVldWUiLCAwKTsKKworI2lmIEhBVkUoQVZGT1VOREFU
SU9OX0xPQURFUl9ERUxFR0FURSkKKyAgICBtX3Jlc291cmNlTG9hZGVyQ2FsbGJhY2tzLnZlcnNp
b24gPSBrQVZDRkFzc2V0UmVzb3VyY2VMb2FkZXJfQ2FsbGJhY2tzVmVyc2lvbl8xOworICAgIG1f
cmVzb3VyY2VMb2FkZXJDYWxsYmFja3MuY29udGV4dCA9IG51bGxwdHI7CisgICAgbV9yZXNvdXJj
ZUxvYWRlckNhbGxiYWNrcy5yZXNvdXJjZUxvYWRlclNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXF1
ZXN0ZWRSZXNvdXJjZSA9IEFWRldyYXBwZXI6OnJlc291cmNlTG9hZGVyU2hvdWxkV2FpdEZvckxv
YWRpbmdPZlJlcXVlc3RlZFJlc291cmNlOworI2VuZGlmCisKICAgICBhZGRUb01hcCgpOwogfQog
CkBAIC0xNDMxLDE0ICsxNDY2LDExIEBAIHZvaWQgQVZGV3JhcHBlcjo6Y3JlYXRlQXNzZXRGb3JV
UkwoY29uc3QKICAgICBtX2F2QXNzZXQgPSBhZG9wdENGKEFWQ0ZVUkxBc3NldENyZWF0ZVdpdGhV
UkxBbmRPcHRpb25zKGtDRkFsbG9jYXRvckRlZmF1bHQsIHVybFJlZi5nZXQoKSwgb3B0aW9uc1Jl
Zi5nZXQoKSwgbV9ub3RpZmljYXRpb25RdWV1ZSkpOwogCiAjaWYgSEFWRShBVkZPVU5EQVRJT05f
TE9BREVSX0RFTEVHQVRFKQotICAgIEFWQ0ZBc3NldFJlc291cmNlTG9hZGVyQ2FsbGJhY2tzIGxv
YWRlckNhbGxiYWNrczsKLSAgICBsb2FkZXJDYWxsYmFja3MudmVyc2lvbiA9IGtBVkNGQXNzZXRS
ZXNvdXJjZUxvYWRlcl9DYWxsYmFja3NWZXJzaW9uXzE7CiAgICAgQVNTRVJUKGNhbGxiYWNrQ29u
dGV4dCgpKTsKLSAgICBsb2FkZXJDYWxsYmFja3MuY29udGV4dCA9IGNhbGxiYWNrQ29udGV4dCgp
OwotICAgIGxvYWRlckNhbGxiYWNrcy5yZXNvdXJjZUxvYWRlclNob3VsZFdhaXRGb3JMb2FkaW5n
T2ZSZXF1ZXN0ZWRSZXNvdXJjZSA9IEFWRldyYXBwZXI6OnJlc291cmNlTG9hZGVyU2hvdWxkV2Fp
dEZvckxvYWRpbmdPZlJlcXVlc3RlZFJlc291cmNlOworICAgIG1fcmVzb3VyY2VMb2FkZXJDYWxs
YmFja3MuY29udGV4dCA9IGNhbGxiYWNrQ29udGV4dCgpOwogCiAgICAgQVZDRkFzc2V0UmVzb3Vy
Y2VMb2FkZXJSZWYgcmVzb3VyY2VMb2FkZXIgPSBBVkNGVVJMQXNzZXRHZXRSZXNvdXJjZUxvYWRl
cihtX2F2QXNzZXQuZ2V0KCkpOwotICAgIEFWQ0ZBc3NldFJlc291cmNlTG9hZGVyU2V0Q2FsbGJh
Y2tzKHJlc291cmNlTG9hZGVyLCAmbG9hZGVyQ2FsbGJhY2tzLCBnbG9iYWxMb2FkZXJEZWxlZ2F0
ZVF1ZXVlKCkpOworICAgIEFWQ0ZBc3NldFJlc291cmNlTG9hZGVyU2V0Q2FsbGJhY2tzKHJlc291
cmNlTG9hZGVyLCAmbV9yZXNvdXJjZUxvYWRlckNhbGxiYWNrcywgZ2xvYmFsTG9hZGVyRGVsZWdh
dGVRdWV1ZSgpKTsKICNlbmRpZgogfQogCkBAIC0xNTcyLDcgKzE2MDQsNyBAQCBzdHJ1Y3QgTm90
aWZpY2F0aW9uQ2FsbGJhY2tEYXRhIHsKIAogdm9pZCBBVkZXcmFwcGVyOjpwcm9jZXNzTm90aWZp
Y2F0aW9uKHZvaWQqIGNvbnRleHQpCiB7Ci0gICAgQVNTRVJUKGRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCkgPT0gZGlzcGF0Y2hfZ2V0X2N1cnJlbnRfcXVldWUoKSk7CisgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKICAgICBBU1NFUlQoY29udGV4dCk7CiAKICAgICBpZiAoIWNvbnRleHQpCkBA
IC0xNzE4LDcgKzE3NTAsNyBAQCBzdHJ1Y3QgTGVnaWJsZU91dHB1dERhdGEgewogCiB2b2lkIEFW
RldyYXBwZXI6OnByb2Nlc3NDdWUodm9pZCogY29udGV4dCkKIHsKLSAgICBBU1NFUlQoZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSA9PSBkaXNwYXRjaF9nZXRfY3VycmVudF9xdWV1ZSgpKTsKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChjb250ZXh0KTsKIAogICAgIGlm
ICghY29udGV4dCkKQEAgLTE3NDEsNyArMTc3Myw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6cHJvY2Vz
c0N1ZSh2b2lkKiBjb250ZXgKIAogdm9pZCBBVkZXcmFwcGVyOjpsZWdpYmxlT3V0cHV0Q2FsbGJh
Y2sodm9pZCogY29udGV4dCwgQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0UmVmIGxlZ2libGVP
dXRwdXQsIENGQXJyYXlSZWYgYXR0cmlidXRlZFN0cmluZ3MsIENGQXJyYXlSZWYgbmF0aXZlU2Ft
cGxlQnVmZmVycywgQ01UaW1lIGl0ZW1UaW1lKQogewotICAgIEFTU0VSVChkaXNwYXRjaF9nZXRf
bWFpbl9xdWV1ZSgpICE9IGRpc3BhdGNoX2dldF9jdXJyZW50X3F1ZXVlKCkpOworICAgIEFTU0VS
VCghaXNNYWluVGhyZWFkKCkpOwogICAgIE11dGV4TG9ja2VyIGxvY2tlcihtYXBMb2NrKCkpOwog
ICAgIEFWRldyYXBwZXIqIHNlbGYgPSBhdmZXcmFwcGVyRm9yQ2FsbGJhY2tDb250ZXh0KGNvbnRl
eHQpOwogICAgIGlmICghc2VsZikgewpAQCAtMTc4NCwxMiArMTgxNiwxNSBAQCB2b2lkIEFWRldy
YXBwZXI6OnByb2Nlc3NTaG91bGRXYWl0Rm9yTG9hCiAgICAgQVZGV3JhcHBlciogc2VsZiA9IGF2
ZldyYXBwZXJGb3JDYWxsYmFja0NvbnRleHQobG9hZFJlcXVlc3REYXRhLT5tX2NvbnRleHQpOwog
ICAgIGlmICghc2VsZikgewogICAgICAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpwcm9jZXNz
U2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlIGludm9rZWQgZm9yIGRlbGV0ZWQgQVZGV3Jh
cHBlciAlZCIsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihjb250ZXh0KSk7Ci0gICAgICAg
IEFWQ0ZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3RGaW5pc2hMb2FkaW5nV2l0aEVycm9yKGxv
YWRSZXF1ZXN0RGF0YS0+bV9yZXF1ZXN0LmdldCgpLCBudWxscHRyKTsKKyAgICAgICAgUmV0YWlu
UHRyPENGRXJyb3JSZWY+IGVycm9yID0gYWRvcHRDRihDRkVycm9yQ3JlYXRlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIGtDRkVycm9yRG9tYWluQ0ZOZXR3b3JrLCBrQ0ZVUkxFcnJvclVua25vd24sIG51
bGxwdHIpKTsKKyAgICAgICAgQVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdEZpbmlzaExv
YWRpbmdXaXRoRXJyb3IobG9hZFJlcXVlc3REYXRhLT5tX3JlcXVlc3QuZ2V0KCksIGVycm9yLmdl
dCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghc2VsZi0+c2hvdWxkV2Fp
dEZvckxvYWRpbmdPZlJlc291cmNlKGxvYWRSZXF1ZXN0RGF0YS0+bV9yZXF1ZXN0LmdldCgpKSkK
LSAgICAgICAgQVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdEZpbmlzaExvYWRpbmdXaXRo
RXJyb3IobG9hZFJlcXVlc3REYXRhLT5tX3JlcXVlc3QuZ2V0KCksIG51bGxwdHIpOworICAgIGlm
ICghc2VsZi0+c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKGxvYWRSZXF1ZXN0RGF0YS0+
bV9yZXF1ZXN0LmdldCgpKSkgeworICAgICAgICBSZXRhaW5QdHI8Q0ZFcnJvclJlZj4gZXJyb3Ig
PSBhZG9wdENGKENGRXJyb3JDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGRXJyb3JEb21h
aW5DRk5ldHdvcmssIGtDRlVSTEVycm9yVW5rbm93biwgbnVsbHB0cikpOworICAgICAgICBBVkNG
QXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0RmluaXNoTG9hZGluZ1dpdGhFcnJvcihsb2FkUmVx
dWVzdERhdGEtPm1fcmVxdWVzdC5nZXQoKSwgZXJyb3IuZ2V0KCkpOworICAgIH0KIH0KIAogYm9v
bCBBVkZXcmFwcGVyOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UoQVZDRkFzc2V0UmVz
b3VyY2VMb2FkaW5nUmVxdWVzdFJlZiBhdlJlcXVlc3QpCkBAIC0xODE5LDcgKzE4NTQsNyBAQCBi
b29sIEFWRldyYXBwZXI6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSCiAgICAgICAgIGlmICghbV9v
d25lci0+cGxheWVyKCktPmtleU5lZWRlZChpbml0RGF0YS5nZXQoKSkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgbV9rZXlVUklUb1JlcXVlc3RNYXAuc2V0KGtleVVSSSwg
YXZSZXF1ZXN0KTsKKyAgICAgICAgc2V0UmVxdWVzdEZvcktleShrZXlVUkksIGF2UmVxdWVzdCk7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICNlbmRpZgpAQCAtMTg2MSw2ICsxODk2LDcg
QEAgdm9pZCBBVkZXcmFwcGVyOjpzZXRBc3NldChBVkNGVVJMQXNzZXRSZQogCiBQbGF0Zm9ybUxh
eWVyKiBBVkZXcmFwcGVyOjpwbGF0Zm9ybUxheWVyKCkKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwogICAgIGlmIChtX3ZpZGVvTGF5ZXJXcmFwcGVyKQogICAgICAgICByZXR1cm4gbV92
aWRlb0xheWVyV3JhcHBlci0+cGxhdGZvcm1MYXllcigpOwogCkBAIC0xOTkxLDE0ICsyMDI3LDM2
IEBAIHZvaWQgQVZGV3JhcHBlcjo6dXBkYXRlVmlkZW9MYXllckdyYXZpdHkKIH0KIAogI2lmIEVO
QUJMRShFTkNSWVBURURfTUVESUFfVjIpCit2b2lkIEFWRldyYXBwZXI6OnNldFJlcXVlc3RGb3JL
ZXkoY29uc3QgU3RyaW5nJiBrZXlVUkksIEFWQ0ZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3RS
ZWYgYXZSZXF1ZXN0KQoreworICAgIGF1dG8gcmVxdWVzdHNJdGVyYXRvciA9IG1fa2V5VVJJVG9S
ZXF1ZXN0TWFwLmZpbmQoa2V5VVJJKTsKKyAgICBpZiAocmVxdWVzdHNJdGVyYXRvciA9PSBtX2tl
eVVSSVRvUmVxdWVzdE1hcC5lbmQoKSkgeworICAgICAgICBWZWN0b3I8UmV0YWluUHRyPEFWQ0ZB
c3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3RSZWY+PiByZXF1ZXN0czsKKyAgICAgICAgcmVxdWVz
dHMuYXBwZW5kKGF2UmVxdWVzdCk7CisgICAgICAgIG1fa2V5VVJJVG9SZXF1ZXN0TWFwLnNldChr
ZXlVUkksIHJlcXVlc3RzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHJlcXVlc3Rz
SXRlcmF0b3ItPnZhbHVlLmFwcGVuZChhdlJlcXVlc3QpOworfQorCiBSZXRhaW5QdHI8QVZDRkFz
c2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFJlZj4gQVZGV3JhcHBlcjo6dGFrZVJlcXVlc3RGb3JL
ZXlVUkkoY29uc3QgU3RyaW5nJiBrZXlVUkkpCiB7Ci0gICAgcmV0dXJuIG1fa2V5VVJJVG9SZXF1
ZXN0TWFwLnRha2Uoa2V5VVJJKTsKKyAgICBhdXRvIHJlcXVlc3RzSXRlcmF0b3IgPSBtX2tleVVS
SVRvUmVxdWVzdE1hcC5maW5kKGtleVVSSSk7CisgICAgaWYgKHJlcXVlc3RzSXRlcmF0b3IgPT0g
bV9rZXlVUklUb1JlcXVlc3RNYXAuZW5kKCkpCisgICAgICAgIHJldHVybiBSZXRhaW5QdHI8QVZD
RkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFJlZj4oKTsKKworICAgIGF1dG8gcmVxdWVzdCA9
IHJlcXVlc3RzSXRlcmF0b3ItPnZhbHVlLnRha2VMYXN0KCk7CisgICAgaWYgKHJlcXVlc3RzSXRl
cmF0b3ItPnZhbHVlLmlzRW1wdHkoKSkKKyAgICAgICAgbV9rZXlVUklUb1JlcXVlc3RNYXAudGFr
ZShrZXlVUkkpOworCisgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAjZW5kaWYKIAogdm9pZCBMYXll
ckNsaWVudDo6cGxhdGZvcm1DQUxheWVyTGF5b3V0U3VibGF5ZXJzT2ZMYXllcihQbGF0Zm9ybUNB
TGF5ZXIqIHdyYXBwZXJMYXllcikKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAg
IEFTU0VSVChtX3BhcmVudCk7CiAgICAgQVNTRVJUKG1fcGFyZW50LT52aWRlb0xheWVyV3JhcHBl
cigpID09IHdyYXBwZXJMYXllci0+cGxhdGZvcm1MYXllcigpKTsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNG
LmgJKHJldmlzaW9uIDE3NDI3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02NCw2ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIFBhc3NPd25Q
dHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBjcmVhdGUoTWVkaWFQbGF5ZXIqKTsKICAg
ICBzdGF0aWMgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZz4mIHR5cGVzKTsK
ICAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3Qg
TWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYpOworICAgIHN0YXRpYyBib29sIHN1cHBvcnRz
S2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
KTsKICAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOwogCiAgICAgdmlydHVhbCB2b2lkIGNh
bmNlbExvYWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFW
Q0ZSZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDE3NDI3NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9h
ZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODEsNyArODEsOCBAQCB2b2lkIFdlYkNvcmVBVkNG
UmVzb3VyY2VMb2FkZXI6OnN0YXJ0TG9hCiAgICAgICAgIG1fcmVzb3VyY2UtPmFkZENsaWVudCh0
aGlzKTsKICAgICBlbHNlIHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gc3RhcnQgbG9h
ZCBmb3IgbWVkaWEgYXQgdXJsICVzIiwgcmVxdWVzdFVSTC5zdHJpbmcoKS5hc2NpaSgpLmRhdGEo
KSk7Ci0gICAgICAgIEFWQ0ZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3RGaW5pc2hMb2FkaW5n
V2l0aEVycm9yKG1fYXZSZXF1ZXN0LmdldCgpLCBudWxscHRyKTsKKyAgICAgICAgUmV0YWluUHRy
PENGRXJyb3JSZWY+IGVycm9yID0gYWRvcHRDRihDRkVycm9yQ3JlYXRlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGtDRkVycm9yRG9tYWluQ0ZOZXR3b3JrLCBrQ0ZVUkxFcnJvclVua25vd24sIG51bGxw
dHIpKTsKKyAgICAgICAgQVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdEZpbmlzaExvYWRp
bmdXaXRoRXJyb3IobV9hdlJlcXVlc3QuZ2V0KCksIGVycm9yLmdldCgpKTsKICAgICB9CiB9CiAK
QEAgLTExMCw3ICsxMTEsOCBAQCB2b2lkIFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI6OnJlc3Bv
bnNlCiAKICAgICBpbnQgc3RhdHVzID0gcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKTsKICAgICBp
ZiAoc3RhdHVzICYmIChzdGF0dXMgPCAyMDAgfHwgc3RhdHVzID4gMjk5KSkgewotICAgICAgICBB
VkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0RmluaXNoTG9hZGluZ1dpdGhFcnJvcihtX2F2
UmVxdWVzdC5nZXQoKSwgbnVsbHB0cik7CisgICAgICAgIFJldGFpblB0cjxDRkVycm9yUmVmPiBl
cnJvciA9IGFkb3B0Q0YoQ0ZFcnJvckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZFcnJv
ckRvbWFpbkNGTmV0d29yaywgc3RhdHVzLCBudWxscHRyKSk7CisgICAgICAgIEFWQ0ZBc3NldFJl
c291cmNlTG9hZGluZ1JlcXVlc3RGaW5pc2hMb2FkaW5nV2l0aEVycm9yKG1fYXZSZXF1ZXN0Lmdl
dCgpLCBlcnJvci5nZXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzMSw3ICsx
MzMsOCBAQCB2b2lkIFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI6Om5vdGlmeUZpCiAgICAgICAg
IC8vIEZJWE1FOiAgICBbW21fYXZSZXF1ZXN0LmdldCgpIGNvbnRlbnRJbmZvcm1hdGlvblJlcXVl
c3RdIHNldENvbnRlbnRUeXBlOkAiIl07CiAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CiAKLSAg
ICAgICAgQVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdEZpbmlzaExvYWRpbmdXaXRoRXJy
b3IobV9hdlJlcXVlc3QuZ2V0KCksIG51bGxwdHIpOworICAgICAgICBSZXRhaW5QdHI8Q0ZFcnJv
clJlZj4gZXJyb3IgPSBhZG9wdENGKENGRXJyb3JDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
a0NGRXJyb3JEb21haW5DRk5ldHdvcmssIGtDRlVSTEVycm9yVW5rbm93biwgbnVsbHB0cikpOwor
ICAgICAgICBBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0RmluaXNoTG9hZGluZ1dpdGhF
cnJvcihtX2F2UmVxdWVzdC5nZXQoKSwgZXJyb3IuZ2V0KCkpOwogICAgIH0gZWxzZSB7CiAgICAg
ICAgIGZ1bGZpbGxSZXF1ZXN0V2l0aFJlc291cmNlKHJlc291cmNlKTsKICAgICAgICAgLy8gRklY
TUU6IFttX2F2UmVxdWVzdC5nZXQoKSBmaW5pc2hMb2FkaW5nXTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>