<?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>103536</bug_id>
          
          <creation_ts>2012-11-28 10:17:30 -0800</creation_ts>
          <short_desc>IndexedDB: Simplify IDBTransactionBackendImpl::scheduleTask usage</short_desc>
          <delta_ts>2013-01-03 10:25:20 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joshua Bell">jsbell</reporter>
          <assigned_to name="Joshua Bell">jsbell</assigned_to>
          <cc>abarth</cc>
    
    <cc>alecflett</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dgrogan</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>778019</commentid>
    <comment_count>0</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-28 10:17:30 -0800</bug_when>
    <thetext>Currently it returns true/false but we eventually drop the return type on the floor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778036</commentid>
    <comment_count>1</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-11-28 10:32:28 -0800</bug_when>
    <thetext>which function?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778037</commentid>
    <comment_count>2</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-28 10:33:15 -0800</bug_when>
    <thetext>Whoops - scheduleTask. Fixed title.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779319</commentid>
    <comment_count>3</comment_count>
      <attachid>176787</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-29 12:28:53 -0800</bug_when>
    <thetext>Created attachment 176787
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779326</commentid>
    <comment_count>4</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-29 12:31:07 -0800</bug_when>
    <thetext>So hrm. Two reasons this can&apos;t be all glorious cleanup:

* The schema change methods (create/delete ObjectStore/Index) are still synchronous and return exception codes.

* The other (async) calls rely on callback-&gt;onError(ABORT_ERR) to clean up internal callback tracking inside Chromium, even though the AbortError actually gets generated on the front end.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780475</commentid>
    <comment_count>5</comment_count>
      <attachid>177036</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-30 15:30:58 -0800</bug_when>
    <thetext>Created attachment 177036
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780478</commentid>
    <comment_count>6</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-30 15:33:23 -0800</bug_when>
    <thetext>So this patch doesn&apos;t actually simplify anything; I&apos;m going to punt on it for now.

An alternate approach might be to optionally pass the IDBCallback into scheduleTask, and have scheduleTask() responsible for calling callbacks-&gt;onError(), which would take care of most of the cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781978</commentid>
    <comment_count>7</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-03 15:51:14 -0800</bug_when>
    <thetext>Or have the WebIDBCallbacksProxy destructor call onError if it never fired onSuccess/onError - that&apos;s probably the best approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782021</commentid>
    <comment_count>8</comment_count>
      <attachid>177368</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-03 16:37:08 -0800</bug_when>
    <thetext>Created attachment 177368
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782022</commentid>
    <comment_count>9</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-03 16:38:04 -0800</bug_when>
    <thetext>I took another stab at this, making chromium clean up itself. Still not sure this is worth it, but I&apos;m liking it more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782023</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-03 16:38:54 -0800</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782055</commentid>
    <comment_count>11</comment_count>
      <attachid>177368</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-03 17:11:20 -0800</bug_when>
    <thetext>Comment on attachment 177368
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        back-end after an asynchronous transaction abort out of WebCore, since the

Asynchronous transaction abort == one that was initiated by code in the browser process, not by script?

&gt; Source/WebKit/chromium/src/WebIDBCallbacksImpl.cpp:62
&gt; +        m_callbacks-&gt;onError(WebIDBDatabaseError(WebIDBDatabaseExceptionAbortError, WebString()));

This just calls IDBRequest::onError without going through chrome code, doesn&apos;t it? Was this supposed to go in IDBCallbacksProxy?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782067</commentid>
    <comment_count>12</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-03 17:23:51 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 177368 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=177368&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:9
&gt; &gt; +        back-end after an asynchronous transaction abort out of WebCore, since the
&gt; 
&gt; Asynchronous transaction abort == one that was initiated by code in the browser process, not by script?

Correct. The scenario is that there are requests in-flight from the front end via async IPC when the back-end decides to abort.

&gt; &gt; Source/WebKit/chromium/src/WebIDBCallbacksImpl.cpp:62
&gt; &gt; +        m_callbacks-&gt;onError(WebIDBDatabaseError(WebIDBDatabaseExceptionAbortError, WebString()));
&gt; 
&gt; This just calls IDBRequest::onError without going through chrome code, doesn&apos;t it? Was this supposed to go in IDBCallbacksProxy?
q
*sigh* Yes, thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782597</commentid>
    <comment_count>13</comment_count>
      <attachid>177497</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-04 09:02:16 -0800</bug_when>
    <thetext>Created attachment 177497
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783037</commentid>
    <comment_count>14</comment_count>
      <attachid>177497</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-04 15:31:38 -0800</bug_when>
    <thetext>Comment on attachment 177497
Patch

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

LGTM

&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:260
&gt;          ec = IDBDatabaseException::TransactionInactiveError;

Could you add a FIXME to add a test for this clause? It seems like it would be hard to test without flakiness.

&gt; Source/WebCore/Modules/indexeddb/IDBObjectStoreBackendImpl.cpp:514
&gt;          ec = IDBDatabaseException::TransactionInactiveError;

Could you add a FIXME to add a test for this clause?

&gt; Source/WebKit/chromium/src/IDBCallbacksProxy.cpp:69
&gt; +    // This cleans up the request&apos;s IPC id.

To test this, I suppose you&apos;d need a browser test that loaded up a page that tries to trigger this scenario (backend aborts while there was an in-flight request from the frontend) many times. Then the browser test code would retrieve the IndexedDBDispatcherHost and check its maps for residual callbacks entries. Seems like you wouldn&apos;t be able to guarantee that the page triggered this scenario.

Or we could let the valgrind bots run our layout tests in content_shell and see if we get any reports. I don&apos;t know if stray map entries is something valgrind would catch though.

Any other options you&apos;ve thought of? If you haven&apos;t come up with something better I&apos;d say just add a FIXME noting that this has no test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785127</commentid>
    <comment_count>15</comment_count>
      <attachid>178054</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-06 12:06:39 -0800</bug_when>
    <thetext>Created attachment 178054
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785131</commentid>
    <comment_count>16</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-06 12:10:01 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; Created an attachment (id=178054) [details]
&gt; Patch

(Just a rebase, I haven&apos;t addressed the above comments yet)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798978</commentid>
    <comment_count>17</comment_count>
      <attachid>181082</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-01-02 15:27:25 -0800</bug_when>
    <thetext>Created attachment 181082
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798982</commentid>
    <comment_count>18</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-01-02 15:29:12 -0800</bug_when>
    <thetext>Revised the patch to remove the need to explicitly test transaction-&gt;isFinished() before calling scheduleTask(), and have the latter still return a success flag. This streamlines the code and is less likely to lead to flaky bugs in the future where a dev adds a scheduleTask() call without checking.

dgrogan@, alecflett@ - one more look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799040</commentid>
    <comment_count>19</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2013-01-02 16:08:15 -0800</bug_when>
    <thetext>lgtm except that the bug title is now inaccurate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799043</commentid>
    <comment_count>20</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-01-02 16:09:32 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; lgtm except that the bug title is now inaccurate.

Hah, will fix. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799111</commentid>
    <comment_count>21</comment_count>
      <attachid>181116</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-01-02 17:13:10 -0800</bug_when>
    <thetext>Created attachment 181116
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799113</commentid>
    <comment_count>22</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-01-02 17:14:50 -0800</bug_when>
    <thetext>abarth@ - r? for the trivial Chromium public API change?
tony@ - r? overall?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799115</commentid>
    <comment_count>23</comment_count>
      <attachid>181116</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-02 17:17:26 -0800</bug_when>
    <thetext>Comment on attachment 181116
Patch

API change LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799116</commentid>
    <comment_count>24</comment_count>
      <attachid>181116</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-01-02 17:19:38 -0800</bug_when>
    <thetext>Comment on attachment 181116
Patch

any reason scheduleTask can&apos;t now return void as you originally tried?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799117</commentid>
    <comment_count>25</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-01-02 17:21:13 -0800</bug_when>
    <thetext>oh wait comment 4..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799122</commentid>
    <comment_count>26</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-01-02 17:23:43 -0800</bug_when>
    <thetext>(In reply to comment #25)
&gt; oh wait comment 4..

Yep. :) Once {create,delete}{ObjectStore,Index} are async we can probably simplify further.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799461</commentid>
    <comment_count>27</comment_count>
      <attachid>181116</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-03 10:25:14 -0800</bug_when>
    <thetext>Comment on attachment 181116
Patch

Clearing flags on attachment: 181116

Committed r138716: &lt;http://trac.webkit.org/changeset/138716&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799462</commentid>
    <comment_count>28</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-03 10:25:20 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176787</attachid>
            <date>2012-11-29 12:28:53 -0800</date>
            <delta_ts>2012-11-30 15:30:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103536-20121129122626.patch</filename>
            <type>text/plain</type>
            <size>32661</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2MTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmQ5MmYwZTRlOGUwZmRm
YTFmYTE5ZmNiOGU4MDgzZjdjNDk2NjBhNi4uZThhY2UwNzY0YzQzMmQwYTVjZDQ4M2MyZTJkODk2
Y2FmNWEwMDVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDEyLTExLTI5ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBNYWtl
IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnNjaGVkdWxlVGFzaydzIHJldHVybiB0eXBlIHZv
aWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzUz
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGl0
aW9uYWwgaW5mb3JtYXRpb24gb2YgdGhlIGNoYW5nZSBzdWNoIGFzIGFwcHJvYWNoLCByYXRpb25h
bGUuIFBsZWFzZSBhZGQgcGVyLWZ1bmN0aW9uIGRlc2NyaXB0aW9ucyBiZWxvdyAoT09QUyEpLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vy
c29yQmFja2VuZEltcGw6OmNvbnRpbnVlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURC
Q3Vyc29yQmFja2VuZEltcGw6OmFkdmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29y
QmFja2VuZEltcGw6OmRlbGV0ZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNv
ckJhY2tlbmRJbXBsOjpwcmVmZXRjaENvbnRpbnVlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRh
dGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmRlbGV0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnJ1bkludFZlcnNpb25DaGFuZ2VUcmFuc2Fj
dGlvbik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleEJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29yKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEltcGw6Om9wZW5LZXlDdXJzb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW1wbDo6Y291bnQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW1wbDo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkluZGV4QmFja2VuZEltcGw6OmdldEtleSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsOjpnZXQpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbDo6cHV0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6c2V0SW5kZXhlc1JlYWR5KToKKyAgICAgICAg
KFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUZ1bmN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNsZWFyKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZUluZGV4KToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUluZGV4KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Om9wZW5DdXJzb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y291bnQpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6c2NoZWR1bGVU
YXNrKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpzY2hl
ZHVsZVRhc2spOgorICAgICAgICAoSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCk6CisKIDIwMTIt
MTEtMjkgIEFuZHkgU2hhdyAgPGFuZHkuc2hhd0BkaWdpYS5jb20+CiAKICAgICAgICAgW1F0XSBJ
bXBsZW1lbnQgc3VwcG9ydCBmb3IgQ29jb2EgYmFzZWQgTlBBUEkgcGx1Z2lucyBvbiBNYWMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tl
bmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJh
Y2tlbmRJbXBsLmNwcAppbmRleCAyMjM1N2Y4ZDRhODgyNjkwNTI0N2Y2Y2I4ZTA3MmY3YjIyNTdi
ZDgxLi44YmM5NzU0Mzk3NTE5ZjA4ODNiYTkxYmI5MzUwYWI4NTM3Y2U0M2ZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2Vu
ZEltcGwuY3BwCkBAIC02MywyMiArNjMsMjQgQEAgSURCQ3Vyc29yQmFja2VuZEltcGw6On5JREJD
dXJzb3JCYWNrZW5kSW1wbCgpCiAgICAgbV9vYmplY3RTdG9yZS5jbGVhcigpOwogfQogCi12b2lk
IElEQkN1cnNvckJhY2tlbmRJbXBsOjpjb250aW51ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5
PiBwcnBLZXksIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIEV4Y2VwdGlv
bkNvZGUmKQordm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y29udGludWVGdW5jdGlvbihQYXNz
UmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBF
eGNlcHRpb25Db2RlJikKIHsKICAgICBJREJfVFJBQ0UoIklEQkN1cnNvckJhY2tlbmRJbXBsOjpj
b250aW51ZSIpOwotICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxi
YWNrczsKLQotICAgIGlmICghbV90cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKG1fdGFza1R5cGUs
IGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCQ3Vyc29yQmFja2VuZEltcGw6OmNvbnRpbnVlRnVuY3Rp
b25JbnRlcm5hbCwgdGhpcywgcHJwS2V5LCBjYWxsYmFja3MpKSkKKyAgICBpZiAobV90cmFuc2Fj
dGlvbi0+aXNGaW5pc2hlZCgpKSB7CiAgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRh
YmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9BQk9SVF9FUlIpKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX3RyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2so
bV90YXNrVHlwZSwgY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y29u
dGludWVGdW5jdGlvbkludGVybmFsLCB0aGlzLCBrZXksIGNhbGxiYWNrcykpOwogfQogCi12b2lk
IElEQkN1cnNvckJhY2tlbmRJbXBsOjphZHZhbmNlKHVuc2lnbmVkIGxvbmcgY291bnQsIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBJ
REJDdXJzb3JCYWNrZW5kSW1wbDo6YWR2YW5jZSh1bnNpZ25lZCBsb25nIGNvdW50LCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBFeGNlcHRpb25Db2RlJikKIHsKICAgICBJREJf
VFJBQ0UoIklEQkN1cnNvckJhY2tlbmRJbXBsOjphZHZhbmNlIik7Ci0gICAgUmVmUHRyPElEQkNh
bGxiYWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOwotCi0gICAgaWYgKCFtX3RyYW5zYWN0
aW9uLT5zY2hlZHVsZVRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJDdXJzb3JCYWNrZW5kSW1w
bDo6YWR2YW5jZUludGVybmFsLCB0aGlzLCBjb3VudCwgY2FsbGJhY2tzKSkpCisgICAgaWYgKG1f
dHJhbnNhY3Rpb24tPmlzRmluaXNoZWQoKSkgewogICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3Io
SURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfQUJPUlRf
RVJSKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV90cmFuc2FjdGlvbi0+c2NoZWR1
bGVUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCQ3Vyc29yQmFja2VuZEltcGw6OmFkdmFuY2VJ
bnRlcm5hbCwgdGhpcywgY291bnQsIGNhbGxiYWNrcykpOwogfQogCiB2b2lkIElEQkN1cnNvckJh
Y2tlbmRJbXBsOjphZHZhbmNlSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NS
ZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+IHBycEN1cnNvciwgdW5zaWduZWQgbG9uZyBjb3Vu
dCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKQEAgLTEwOSw3ICsxMTEsNyBA
QCB2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpjb250aW51ZUZ1bmN0aW9uSW50ZXJuYWwoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIFBhcwogICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKGN1cnNv
ci0+a2V5KCksIGN1cnNvci0+cHJpbWFyeUtleSgpLCBjdXJzb3ItPnZhbHVlKCkpOwogfQogCi12
b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgSURCQ3Vyc29yQmFj
a2VuZEltcGw6OmRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFj
a3MsIEV4Y2VwdGlvbkNvZGUmKQogewogICAgIElEQl9UUkFDRSgiSURCQ3Vyc29yQmFja2VuZElt
cGw6OmRlbGV0ZSIpOwogICAgIEFTU0VSVChtX3RyYW5zYWN0aW9uLT5tb2RlKCkgIT0gSURCVHJh
bnNhY3Rpb246OlJFQURfT05MWSk7CkBAIC0xMTgsMTYgKzEyMCwxOCBAQCB2b2lkIElEQkN1cnNv
ckJhY2tlbmRJbXBsOjpkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJw
Q2FsbGJhY2tzLAogICAgIFJlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UgPSBJREJLZXlSYW5n
ZTo6b25seShtX2N1cnNvci0+cHJpbWFyeUtleSgpLCBlYyk7CiAgICAgQVNTRVJUKCFlYyk7CiAK
LSAgICBtX29iamVjdFN0b3JlLT5kZWxldGVGdW5jdGlvbihrZXlSYW5nZS5yZWxlYXNlKCksIHBy
cENhbGxiYWNrcywgbV90cmFuc2FjdGlvbi5nZXQoKSwgZWMpOworICAgIG1fb2JqZWN0U3RvcmUt
PmRlbGV0ZUZ1bmN0aW9uKGtleVJhbmdlLnJlbGVhc2UoKSwgY2FsbGJhY2tzLCBtX3RyYW5zYWN0
aW9uLmdldCgpLCBlYyk7CiAgICAgQVNTRVJUKCFlYyk7CiB9CiAKLXZvaWQgSURCQ3Vyc29yQmFj
a2VuZEltcGw6OnByZWZldGNoQ29udGludWUoaW50IG51bWJlclRvRmV0Y2gsIFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBJREJDdXJz
b3JCYWNrZW5kSW1wbDo6cHJlZmV0Y2hDb250aW51ZShpbnQgbnVtYmVyVG9GZXRjaCwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgRXhjZXB0aW9uQ29kZSYpCiB7CiAgICAgSURC
X1RSQUNFKCJJREJDdXJzb3JCYWNrZW5kSW1wbDo6cHJlZmV0Y2hDb250aW51ZSIpOwotICAgIFJl
ZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKLSAgICBpZiAoIW1f
dHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhtX3Rhc2tUeXBlLCBjcmVhdGVDYWxsYmFja1Rhc2so
JklEQkN1cnNvckJhY2tlbmRJbXBsOjpwcmVmZXRjaENvbnRpbnVlSW50ZXJuYWwsIHRoaXMsIG51
bWJlclRvRmV0Y2gsIGNhbGxiYWNrcykpKQorICAgIGlmIChtX3RyYW5zYWN0aW9uLT5pc0Zpbmlz
aGVkKCkpIHsKICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNy
ZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0FCT1JUX0VSUikpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIG1fdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhtX3Rhc2tUeXBlLCBj
cmVhdGVDYWxsYmFja1Rhc2soJklEQkN1cnNvckJhY2tlbmRJbXBsOjpwcmVmZXRjaENvbnRpbnVl
SW50ZXJuYWwsIHRoaXMsIG51bWJlclRvRmV0Y2gsIGNhbGxiYWNrcykpOwogfQogCiB2b2lkIElE
QkN1cnNvckJhY2tlbmRJbXBsOjpwcmVmZXRjaENvbnRpbnVlSW50ZXJuYWwoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+IHBycEN1cnNvciwg
aW50IG51bWJlclRvRmV0Y2gsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJh
Y2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlQmFja2VuZEltcGwuY3BwCmluZGV4IDJjYmY5YjNjODFiYmYxMDdhOTViN2U5YmMyNmI5ZThk
ZjE4NTA4MDkuLjE0M2UwNTRjMmU3YWUxYTY5YmViMTg5ZDYwODU0ODZmNjFlMGVlODEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2Vu
ZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlQmFja2VuZEltcGwuY3BwCkBAIC0xNTEsMjQgKzE1MSwyNCBAQCBJREJEYXRhYmFzZU1ldGFk
YXRhIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om1ldGFkYXRhKCkgY29uc3QKIFBhc3NSZWZQdHI8
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpj
cmVhdGVPYmplY3RTdG9yZShpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElE
QktleVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAg
QVNTRVJUKCFtX29iamVjdFN0b3Jlcy5jb250YWlucyhpZCkpOwotCiAgICAgUmVmUHRyPElEQk9i
amVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlID0gSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbDo6Y3JlYXRlKHRoaXMsIElEQk9iamVjdFN0b3JlTWV0YWRhdGEobmFtZSwgaWQsIGtleVBh
dGgsIGF1dG9JbmNyZW1lbnQsIElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZTo6TWluaW11
bUluZGV4SWQpKTsKICAgICBBU1NFUlQob2JqZWN0U3RvcmUtPm5hbWUoKSA9PSBuYW1lKTsKIAog
ICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9IElEQlRy
YW5zYWN0aW9uQmFja2VuZEltcGw6OmZyb20odHJhbnNhY3Rpb25QdHIpOwogICAgIEFTU0VSVCh0
cmFuc2FjdGlvbi0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRSk7Cisg
ICAgaWYgKHRyYW5zYWN0aW9uLT5pc0ZpbmlzaGVkKCkpIHsKKyAgICAgICAgZWMgPSBJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6VFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSOworICAgICAgICByZXR1cm4g
MDsKKyAgICB9CiAKICAgICAvLyBGSVhNRTogRml4IGVkZ2UgY2FzZXMgYXJvdW5kIHRyYW5zYWN0
aW9uIGFib3J0cyB0aGF0IHByZXZlbnQgdGhpcyBmcm9tIGp1c3QgYmVpbmcgQVNTRVJUKGlkID09
IG1fbWV0YWRhdGEubWF4T2JqZWN0U3RvcmVJZCArIDEpCiAgICAgQVNTRVJUKGlkID4gbV9tZXRh
ZGF0YS5tYXhPYmplY3RTdG9yZUlkKTsKICAgICBtX21ldGFkYXRhLm1heE9iamVjdFN0b3JlSWQg
PSBpZDsKIAogICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBkYXRhYmFzZSA9IHRo
aXM7Ci0gICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKAotICAgICAgICAgICAgY3Jl
YXRlQ2FsbGJhY2tUYXNrKCZJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGVPYmplY3RTdG9y
ZUludGVybmFsLCBkYXRhYmFzZSwgb2JqZWN0U3RvcmUsIHRyYW5zYWN0aW9uKSwKLSAgICAgICAg
ICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cmVtb3ZlT2Jq
ZWN0U3RvcmVGcm9tTWFwLCBkYXRhYmFzZSwgb2JqZWN0U3RvcmUpKSkgewotICAgICAgICBlYyA9
IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElWRV9FUlI7Ci0gICAgICAg
IHJldHVybiAwOwotICAgIH0KKyAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKAorICAgICAg
ICBjcmVhdGVDYWxsYmFja1Rhc2soJklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZU9iamVj
dFN0b3JlSW50ZXJuYWwsIGRhdGFiYXNlLCBvYmplY3RTdG9yZSwgdHJhbnNhY3Rpb24pLAorICAg
ICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnJlbW92ZU9i
amVjdFN0b3JlRnJvbU1hcCwgZGF0YWJhc2UsIG9iamVjdFN0b3JlKSk7CiAKICAgICBtX29iamVj
dFN0b3Jlcy5zZXQoaWQsIG9iamVjdFN0b3JlKTsKICAgICByZXR1cm4gb2JqZWN0U3RvcmUucmVs
ZWFzZSgpOwpAQCAtMTk1LDEzICsxOTUsMTQgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OjpkZWxldGVPYmplY3RTdG9yZShpbnQ2NF90IGlkLCBJREJUcmFuc2FjdGlvbkJhY2tlbmQKICAg
ICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUgPSBtX29iamVj
dFN0b3Jlcy5nZXQoaWQpOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0
cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmZyb20odHJhbnNhY3Rpb25Q
dHIpOwogICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpW
RVJTSU9OX0NIQU5HRSk7Ci0KLSAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soCi0g
ICAgICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmRl
bGV0ZU9iamVjdFN0b3JlSW50ZXJuYWwsIGRhdGFiYXNlLCBvYmplY3RTdG9yZSwgdHJhbnNhY3Rp
b24pLAotICAgICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjphZGRPYmplY3RTdG9yZVRvTWFwLCBkYXRhYmFzZSwgb2JqZWN0U3RvcmUpKSkgeworICAg
IGlmICh0cmFuc2FjdGlvbi0+aXNGaW5pc2hlZCgpKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJh
c2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUjsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KKworICAgIHRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soCisgICAgICAgIGNyZWF0ZUNh
bGxiYWNrVGFzaygmSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6ZGVsZXRlT2JqZWN0U3RvcmVJbnRl
cm5hbCwgZGF0YWJhc2UsIG9iamVjdFN0b3JlLCB0cmFuc2FjdGlvbiksCisgICAgICAgIGNyZWF0
ZUNhbGxiYWNrVGFzaygmSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6YWRkT2JqZWN0U3RvcmVUb01h
cCwgZGF0YWJhc2UsIG9iamVjdFN0b3JlKSk7CiAgICAgbV9vYmplY3RTdG9yZXMucmVtb3ZlKGlk
KTsKIH0KIApAQCAtMzg0LDEzICszODUsMTIgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OjpydW5JbnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oaW50NjRfdCByZXF1ZXN0ZWRWZXIKICAg
ICBWZWN0b3I8aW50NjRfdD4gb2JqZWN0U3RvcmVJZHM7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb25JbnRlcmZhY2UgPSB0cmFuc2FjdGlvbihv
YmplY3RTdG9yZUlkcywgSURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFKTsKICAgICBSZWZQ
dHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbXBsOjpmcm9tKHRyYW5zYWN0aW9uSW50ZXJmYWNlLmdldCgpKTsKKyAgICBBU1NF
UlQoIXRyYW5zYWN0aW9uLT5pc0ZpbmlzaGVkKCkpOwogCiAgICAgUmVmUHRyPElEQkRhdGFiYXNl
QmFja2VuZEltcGw+IGRhdGFiYXNlID0gdGhpczsKICAgICBPd25QdHI8U2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6VGFzaz4gaW50VmVyc2lvblRhc2sgPSBjcmVhdGVDYWxsYmFja1Rhc2soJklEQkRh
dGFiYXNlQmFja2VuZEltcGw6OnNldEludFZlcnNpb25JbnRlcm5hbCwgZGF0YWJhc2UsIHJlcXVl
c3RlZFZlcnNpb24sIGNhbGxiYWNrcywgZGF0YWJhc2VDYWxsYmFja3MsIHRyYW5zYWN0aW9uKTsK
ICAgICBPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gcmVzZXRWZXJzaW9uT25B
Ym9ydFRhc2sgPSBjcmVhdGVDYWxsYmFja1Rhc2soJklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnJl
c2V0VmVyc2lvbiwgZGF0YWJhc2UsIG1fbWV0YWRhdGEudmVyc2lvbiwgbV9tZXRhZGF0YS5pbnRW
ZXJzaW9uKTsKLSAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soaW50VmVyc2lvblRh
c2sucmVsZWFzZSgpLCByZXNldFZlcnNpb25PbkFib3J0VGFzay5yZWxlYXNlKCkpKSB7Ci0gICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KKyAgICB0cmFuc2FjdGlvbi0+c2NoZWR1
bGVUYXNrKGludFZlcnNpb25UYXNrLnJlbGVhc2UoKSwgcmVzZXRWZXJzaW9uT25BYm9ydFRhc2su
cmVsZWFzZSgpKTsKICAgICBBU1NFUlQoIW1fcGVuZGluZ1NlY29uZEhhbGZPcGVuV2l0aFZlcnNp
b24pOwogICAgIG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuYWRkKGRhdGFiYXNlQ2FsbGJhY2tzKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4
QmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5k
ZXhCYWNrZW5kSW1wbC5jcHAKaW5kZXggMTNlNjk5Zjk2NjY4MjFjZmIwMGI5MDUwZGE4MTk5ZTAx
NDc0MzMyYS4uMDQxODM1NmU1NjMyZGQ3NjU4MzZjZGMzZTkyNTQwNzJhYjQ4MmMxMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNr
ZW5kSW1wbC5jcHAKQEAgLTg4LDI4ICs4OCwzMCBAQCB2b2lkIElEQkluZGV4QmFja2VuZEltcGw6
Om9wZW5DdXJzb3JJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cgog
ICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKGN1cnNvciwgY3Vyc29yLT5rZXkoKSwgY3Vyc29yLT5w
cmltYXJ5S2V5KCksIGN1cnNvci0+dmFsdWUoKSk7CiB9CiAKLXZvaWQgSURCSW5kZXhCYWNrZW5k
SW1wbDo6b3BlbkN1cnNvcihQYXNzUmVmUHRyPElEQktleVJhbmdlPiBwcnBLZXlSYW5nZSwgdW5z
aWduZWQgc2hvcnQgZGlyZWN0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJh
Y2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBFeGNl
cHRpb25Db2RlJikKK3ZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6b3BlbkN1cnNvcihQYXNzUmVm
UHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBFeGNlcHRpb25Db2RlJikKIHsKICAgICBJREJfVFJBQ0Uo
IklEQkluZGV4QmFja2VuZEltcGw6Om9wZW5DdXJzb3IiKTsKICAgICBSZWZQdHI8SURCSW5kZXhC
YWNrZW5kSW1wbD4gaW5kZXggPSB0aGlzOwotICAgIFJlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFu
Z2UgPSBwcnBLZXlSYW5nZTsKLSAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBw
cnBDYWxsYmFja3M7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5z
YWN0aW9uID0gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6ZnJvbSh0cmFuc2FjdGlvblB0cik7
Ci0gICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKAotICAgICAgICAgICAgY3JlYXRl
Q2FsbGJhY2tUYXNrKCZvcGVuQ3Vyc29ySW50ZXJuYWwsIGluZGV4LCBrZXlSYW5nZSwgZGlyZWN0
aW9uLCBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpJbmRleEN1cnNvciwgY2FsbGJhY2tzLCB0
cmFuc2FjdGlvbikpKQorICAgIGlmICh0cmFuc2FjdGlvbi0+aXNGaW5pc2hlZCgpKSB7CiAgICAg
ICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJh
c2VFeGNlcHRpb246OklEQl9BQk9SVF9FUlIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2so
Jm9wZW5DdXJzb3JJbnRlcm5hbCwgaW5kZXgsIGtleVJhbmdlLCBkaXJlY3Rpb24sIElEQkN1cnNv
ckJhY2tlbmRJbnRlcmZhY2U6OkluZGV4Q3Vyc29yLCBjYWxsYmFja3MsIHRyYW5zYWN0aW9uKSk7
CiB9CiAKLXZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6b3BlbktleUN1cnNvcihQYXNzUmVmUHRy
PElEQktleVJhbmdlPiBwcnBLZXlSYW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgSURCSW5kZXhC
YWNrZW5kSW1wbDo6b3BlbktleUN1cnNvcihQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5n
ZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2Fs
bGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBF
eGNlcHRpb25Db2RlJikKIHsKICAgICBJREJfVFJBQ0UoIklEQkluZGV4QmFja2VuZEltcGw6Om9w
ZW5LZXlDdXJzb3IiKTsKICAgICBSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gaW5kZXggPSB0
aGlzOwotICAgIFJlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UgPSBwcnBLZXlSYW5nZTsKLSAg
ICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7CiAgICAgUmVm
UHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uID0gSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbDo6ZnJvbSh0cmFuc2FjdGlvblB0cik7Ci0gICAgaWYgKCF0cmFuc2FjdGlv
bi0+c2NoZWR1bGVUYXNrKAotICAgICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZvcGVuQ3Vy
c29ySW50ZXJuYWwsIGluZGV4LCBrZXlSYW5nZSwgZGlyZWN0aW9uLCBJREJDdXJzb3JCYWNrZW5k
SW50ZXJmYWNlOjpJbmRleEtleUN1cnNvciwgY2FsbGJhY2tzLCB0cmFuc2FjdGlvbikpKQorICAg
IGlmICh0cmFuc2FjdGlvbi0+aXNGaW5pc2hlZCgpKSB7CiAgICAgICAgIGNhbGxiYWNrcy0+b25F
cnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9B
Qk9SVF9FUlIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB0cmFuc2FjdGlvbi0+c2No
ZWR1bGVUYXNrKAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJm9wZW5DdXJzb3JJbnRlcm5h
bCwgaW5kZXgsIGtleVJhbmdlLCBkaXJlY3Rpb24sIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6
OkluZGV4S2V5Q3Vyc29yLCBjYWxsYmFja3MsIHRyYW5zYWN0aW9uKSk7CiB9CiAKIHZvaWQgSURC
SW5kZXhCYWNrZW5kSW1wbDo6Y291bnRJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
UGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiBpbmRleCwgUGFzc1JlZlB0cjxJREJLZXlS
YW5nZT4gcmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQ
dHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24pCkBAIC0xMzQsOSArMTM2
LDEyIEBAIHZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6Y291bnQoUGFzc1JlZlB0cjxJREJLZXlS
YW5nZT4gcmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsCiB7CiAgICAgSURCX1RSQUNFKCJJREJJbmRl
eEJhY2tlbmRJbXBsOjpjb3VudCIpOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsPiB0cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmZyb20odHJhbnNh
Y3Rpb25QdHIpOwotICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzaygKLSAgICAgICAg
ICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmY291bnRJbnRlcm5hbCwgdGhpcywgcmFuZ2UsIGNhbGxi
YWNrcywgdHJhbnNhY3Rpb24pKSkKKyAgICBpZiAodHJhbnNhY3Rpb24tPmlzRmluaXNoZWQoKSkg
ewogICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfQUJPUlRfRVJSKSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzaygKKyAgICAgICAgY3JlYXRlQ2FsbGJh
Y2tUYXNrKCZjb3VudEludGVybmFsLCB0aGlzLCByYW5nZSwgY2FsbGJhY2tzLCB0cmFuc2FjdGlv
bikpOwogfQogCiB2b2lkIElEQkluZGV4QmFja2VuZEltcGw6OmdldEludGVybmFsKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+IGluZGV4LCBQ
YXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2Fj
dGlvbikKQEAgLTE5NCwyNyArMTk5LDI4IEBAIHZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6Z2V0
S2V5SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlCiB9CiAK
IAotdm9pZCBJREJJbmRleEJhY2tlbmRJbXBsOjpnZXQoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4g
cHJwS2V5UmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIElEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUm
KQordm9pZCBJREJJbmRleEJhY2tlbmRJbXBsOjpnZXQoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4g
a2V5UmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmKQogewog
ICAgIElEQl9UUkFDRSgiSURCSW5kZXhCYWNrZW5kSW1wbDo6Z2V0Iik7CiAgICAgUmVmUHRyPElE
QkluZGV4QmFja2VuZEltcGw+IGluZGV4ID0gdGhpczsKLSAgICBSZWZQdHI8SURCS2V5UmFuZ2U+
IGtleVJhbmdlID0gcHJwS2V5UmFuZ2U7Ci0gICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJh
Y2tzID0gcHJwQ2FsbGJhY2tzOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
PiB0cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmZyb20odHJhbnNhY3Rp
b25QdHIpOwotICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhjcmVhdGVDYWxsYmFj
a1Rhc2soJmdldEludGVybmFsLCBpbmRleCwga2V5UmFuZ2UsIGNhbGxiYWNrcywgdHJhbnNhY3Rp
b24pKSkKKyAgICBpZiAodHJhbnNhY3Rpb24tPmlzRmluaXNoZWQoKSkgewogICAgICAgICBjYWxs
YmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpJREJfQUJPUlRfRVJSKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgdHJhbnNh
Y3Rpb24tPnNjaGVkdWxlVGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJmdldEludGVybmFsLCBpbmRl
eCwga2V5UmFuZ2UsIGNhbGxiYWNrcywgdHJhbnNhY3Rpb24pKTsKIH0KIAotdm9pZCBJREJJbmRl
eEJhY2tlbmRJbXBsOjpnZXRLZXkoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcHJwS2V5UmFuZ2Us
IFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBJREJJ
bmRleEJhY2tlbmRJbXBsOjpnZXRLZXkoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2Us
IFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZSogdHJhbnNhY3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmKQogewogICAgIElEQl9U
UkFDRSgiSURCSW5kZXhCYWNrZW5kSW1wbDo6Z2V0S2V5Iik7CiAgICAgUmVmUHRyPElEQkluZGV4
QmFja2VuZEltcGw+IGluZGV4ID0gdGhpczsKLSAgICBSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJh
bmdlID0gcHJwS2V5UmFuZ2U7Ci0gICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzID0g
cHJwQ2FsbGJhY2tzOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFu
c2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmZyb20odHJhbnNhY3Rpb25QdHIp
OwotICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzaygKLSAgICAgICAgICAgIGNyZWF0
ZUNhbGxiYWNrVGFzaygmZ2V0S2V5SW50ZXJuYWwsIGluZGV4LCBrZXlSYW5nZSwgY2FsbGJhY2tz
LCB0cmFuc2FjdGlvbikpKQorICAgIGlmICh0cmFuc2FjdGlvbi0+aXNGaW5pc2hlZCgpKSB7CiAg
ICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0
YWJhc2VFeGNlcHRpb246OklEQl9BQk9SVF9FUlIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmZ2V0S2V5
SW50ZXJuYWwsIGluZGV4LCBrZXlSYW5nZSwgY2FsbGJhY2tzLCB0cmFuc2FjdGlvbikpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCmluZGV4
IGM5MGRhYzIyNGQ0NTVjMDEwNTE2NjdlM2M5MjRiOWM3M2ExODk2YjEuLjczYmEzNDVhYTg3Y2Q0
MzkzZWM1NjllN2FlODYxMGY1ZWMwN2U1MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3Bw
CkBAIC02NCwxNiArNjQsMTcgQEAgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSBJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsOjptZXRhZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG1ldGFkYXRhOwogfQog
Ci12b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmdldChQYXNzUmVmUHRyPElEQktleVJh
bmdlPiBwcnBLZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywg
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9u
Q29kZSYpCit2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmdldChQYXNzUmVmUHRyPElE
QktleVJhbmdlPiBrZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywg
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9u
Q29kZSYpCiB7CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpnZXQi
KTsKICAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUgPSB0
aGlzOwotICAgIFJlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UgPSBwcnBLZXlSYW5nZTsKLSAg
ICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7CiAgICAgUmVm
UHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uID0gSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbDo6ZnJvbSh0cmFuc2FjdGlvblB0cik7Ci0gICAgaWYgKCF0cmFuc2FjdGlv
bi0+c2NoZWR1bGVUYXNrKAotICAgICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsOjpnZXRJbnRlcm5hbCwgb2JqZWN0U3RvcmUsIGtleVJhbmdlLCBj
YWxsYmFja3MsIHRyYW5zYWN0aW9uKSkpCisgICAgaWYgKHRyYW5zYWN0aW9uLT5pc0ZpbmlzaGVk
KCkpIHsKICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0
ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0FCT1JUX0VSUikpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIHRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soCisgICAgICAgIGNyZWF0ZUNh
bGxiYWNrVGFzaygmSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Z2V0SW50ZXJuYWwsIG9iamVj
dFN0b3JlLCBrZXlSYW5nZSwgY2FsbGJhY2tzLCB0cmFuc2FjdGlvbikpOwogfQogCiB2b2lkIElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmdldEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlLCBQ
YXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2Fj
dGlvbikKQEAgLTEwNSwyNSArMTA2LDI0IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bDo6Z2V0SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8CiAgICAg
Y2FsbGJhY2tzLT5vblN1Y2Nlc3MoU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2ly
ZSh3aXJlRGF0YSkpOwogfQogCi12b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dChQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gcHJwVmFsdWUsIFBhc3NSZWZQdHI8SURC
S2V5PiBwcnBLZXksIFB1dE1vZGUgcHV0TW9kZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBy
cENhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvblB0
ciwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElkcywgY29uc3QgVmVjdG9yPEluZGV4S2V5
cz4mIGluZGV4S2V5cykKK3ZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0KFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+IGtl
eSwgUHV0TW9kZSBwdXRNb2RlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBjb25zdCBWZWN0
b3I8aW50NjRfdD4mIGluZGV4SWRzLCBjb25zdCBWZWN0b3I8SW5kZXhLZXlzPiYgaW5kZXhLZXlz
KQogewogICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0Iik7CiAK
ICAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUgPSB0aGlz
OwotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlID0gcHJwVmFsdWU7Ci0g
ICAgUmVmUHRyPElEQktleT4ga2V5ID0gcHJwS2V5OwotICAgIFJlZlB0cjxJREJDYWxsYmFja3M+
IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpmcm9tKHRy
YW5zYWN0aW9uUHRyKTsKICAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSAhPSBJREJUcmFu
c2FjdGlvbjo6UkVBRF9PTkxZKTsKLQogICAgIE93blB0cjxWZWN0b3I8aW50NjRfdD4gPiBuZXdJ
bmRleElkcyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8aW50NjRfdD4oaW5kZXhJZHMpKTsKICAgICBP
d25QdHI8VmVjdG9yPEluZGV4S2V5cz4gPiBuZXdJbmRleEtleXMgPSBhZG9wdFB0cihuZXcgVmVj
dG9yPEluZGV4S2V5cz4oaW5kZXhLZXlzKSk7CiAKLSAgICBBU1NFUlQoYXV0b0luY3JlbWVudCgp
IHx8IGtleSk7CisgICAgQVNTRVJUKGF1dG9JbmNyZW1lbnQoKSB8fCBrZXkuZ2V0KCkpOwogCi0g
ICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKAotICAgICAgICBjcmVhdGVDYWxsYmFj
a1Rhc2soJklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dEludGVybmFsLCBvYmplY3RTdG9y
ZSwgdmFsdWUsIGtleSwgcHV0TW9kZSwgY2FsbGJhY2tzLCB0cmFuc2FjdGlvbiwgbmV3SW5kZXhJ
ZHMucmVsZWFzZSgpLCBuZXdJbmRleEtleXMucmVsZWFzZSgpKSkpCisgICAgaWYgKHRyYW5zYWN0
aW9uLT5pc0ZpbmlzaGVkKCkpIHsKICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFi
YXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0FCT1JUX0VSUikpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIHRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soCisg
ICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0
SW50ZXJuYWwsIG9iamVjdFN0b3JlLCB2YWx1ZSwga2V5LCBwdXRNb2RlLCBjYWxsYmFja3MsIHRy
YW5zYWN0aW9uLCBuZXdJbmRleElkcy5yZWxlYXNlKCksIG5ld0luZGV4S2V5cy5yZWxlYXNlKCkp
KTsKIH0KIAogbmFtZXNwYWNlIHsKQEAgLTI2MCwxMCArMjYwLDkgQEAgdm9pZCBJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsOjpzZXRJbmRleGVzUmVhZHkoY29uc3QgVmVjdG9yPGludDY0X3Q+JiBp
bmRleElkcywKICAgICBpZiAodHJhbnNhY3Rpb24tPmlzRmluaXNoZWQoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKAotICAgICAgICAgICAg
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlOjpQcmVlbXB0aXZlVGFzaywKLSAgICAgICAg
ICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6c2V0SW5k
ZXhlc1JlYWR5SW50ZXJuYWwsIG9iamVjdFN0b3JlLCBuZXdJbmRleElkcy5yZWxlYXNlKCksIHRy
YW5zYWN0aW9uKSkpCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHRyYW5zYWN0
aW9uLT5zY2hlZHVsZVRhc2soCisgICAgICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZTo6UHJlZW1wdGl2ZVRhc2ssCisgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbDo6c2V0SW5kZXhlc1JlYWR5SW50ZXJuYWwsIG9iamVjdFN0b3JlLCBu
ZXdJbmRleElkcy5yZWxlYXNlKCksIHRyYW5zYWN0aW9uKSk7CiB9CiAKIHZvaWQgSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbDo6c2V0SW5kZXhlc1JlYWR5SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3Rv
cmUsIFBhc3NPd25QdHI8VmVjdG9yPGludDY0X3Q+ID4gcG9wSW5kZXhJZHMsIFBhc3NSZWZQdHI8
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24pCkBAIC0zMjcsMjAgKzMyNiwx
OSBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dEludGVybmFsKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPAogICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKGtl
eS5yZWxlYXNlKCkpOwogfQogCi12b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0
ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHBycEtleVJhbmdlLCBQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2UqIHRyYW5zYWN0aW9uUHRyLCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbDo6ZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFu
Z2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmKQogewogICAgIElE
Ql9UUkFDRSgiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlIik7CiAKICAgICBSZWZQ
dHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbXBsOjpmcm9tKHRyYW5zYWN0aW9uUHRyKTsKICAgICBBU1NFUlQodHJhbnNhY3Rp
b24tPm1vZGUoKSAhPSBJREJUcmFuc2FjdGlvbjo6UkVBRF9PTkxZKTsKLQotICAgIFJlZlB0cjxJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSA9IHRoaXM7Ci0gICAgUmVmUHRy
PElEQktleVJhbmdlPiBrZXlSYW5nZSA9IHBycEtleVJhbmdlOwotICAgIFJlZlB0cjxJREJDYWxs
YmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKLQotICAgIGlmICghdHJhbnNhY3Rpb24t
PnNjaGVkdWxlVGFzaygKLSAgICAgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlSW50ZXJuYWwsIG9iamVjdFN0b3JlLCBrZXlSYW5nZSwg
Y2FsbGJhY2tzLCB0cmFuc2FjdGlvbikpKQorICAgIGlmICh0cmFuc2FjdGlvbi0+aXNGaW5pc2hl
ZCgpKSB7CiAgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVh
dGUoSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9BQk9SVF9FUlIpKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3Rv
cmUgPSB0aGlzOworICAgIHRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soCisgICAgICAgIGNyZWF0
ZUNhbGxiYWNrVGFzaygmSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlSW50ZXJuYWws
IG9iamVjdFN0b3JlLCBrZXlSYW5nZSwgY2FsbGJhY2tzLCB0cmFuc2FjdGlvbikpOwogfQogCiB2
b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUludGVybmFsKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVj
dFN0b3JlLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
PiB0cmFuc2FjdGlvbikKQEAgLTM1OSwxOSArMzU3LDE5IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbDo6ZGVsZXRlSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NS
ZWZQCiAgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoKTsKIH0KIAotdm9pZCBJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsOjpjbGVhcihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tz
LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBFeGNlcHRp
b25Db2RlJikKK3ZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y2xlYXIoUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
KiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9uQ29kZSYpCiB7CiAgICAgSURCX1RSQUNFKCJJREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjbGVhciIpOwogCiAgICAgUmVmUHRyPElEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uID0gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6
ZnJvbSh0cmFuc2FjdGlvblB0cik7CiAgICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5tb2RlKCkgIT0g
SURCVHJhbnNhY3Rpb246OlJFQURfT05MWSk7Ci0KLSAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUgPSB0aGlzOwotICAgIFJlZlB0cjxJREJDYWxsYmFja3M+
IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKLQotICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVk
dWxlVGFzaygKLSAgICAgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbDo6Y2xlYXJJbnRlcm5hbCwgb2JqZWN0U3RvcmUsIGNhbGxiYWNrcywgdHJhbnNh
Y3Rpb24pKSkKKyAgICBpZiAodHJhbnNhY3Rpb24tPmlzRmluaXNoZWQoKSkgewogICAgICAgICBj
YWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpJREJfQUJPUlRfRVJSKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgUmVm
UHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlID0gdGhpczsKKyAgICB0
cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJklE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNsZWFySW50ZXJuYWwsIG9iamVjdFN0b3JlLCBjYWxs
YmFja3MsIHRyYW5zYWN0aW9uKSk7CiB9CiAKIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bDo6Y2xlYXJJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFu
c2FjdGlvbikKQEAgLTM5MywxMyArMzkxLDE1IEBAIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5k
SW50ZXJmYWNlPiBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleChpbnQ2CiAg
ICAgbV9tZXRhZGF0YS5tYXhJbmRleElkID0gaWQ7CiAKICAgICBSZWZQdHI8SURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUgPSB0aGlzOwotICAgIGlmICghdHJhbnNhY3Rpb24t
PnNjaGVkdWxlVGFzaygKLSAgICAgICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleEludGVybmFsLCBvYmplY3RTdG9yZSwgaW5k
ZXgsIHRyYW5zYWN0aW9uKSwKLSAgICAgICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsOjpyZW1vdmVJbmRleEZyb21NYXAsIG9iamVjdFN0b3JlLCBp
bmRleCkpKSB7CisgICAgaWYgKHRyYW5zYWN0aW9uLT5pc0ZpbmlzaGVkKCkpIHsKICAgICAgICAg
ZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSOwogICAg
ICAgICByZXR1cm4gMDsKICAgICB9CiAKKyAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKAor
ICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNy
ZWF0ZUluZGV4SW50ZXJuYWwsIG9iamVjdFN0b3JlLCBpbmRleCwgdHJhbnNhY3Rpb24pLAorICAg
ICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnJlbW92
ZUluZGV4RnJvbU1hcCwgb2JqZWN0U3RvcmUsIGluZGV4KSk7CisKICAgICBtX2luZGV4ZXMuc2V0
KGlkLCBpbmRleCk7CiAgICAgcmV0dXJuIGluZGV4LnJlbGVhc2UoKTsKIH0KQEAgLTQyNywxMyAr
NDI3LDE1IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlSW5kZXgoaW50
NjRfdCBpbmRleElkLCBJREJUcmFuc2FjdGlvbkJhY2tlCiAgICAgUmVmUHRyPElEQkluZGV4QmFj
a2VuZEltcGw+IGluZGV4ID0gbV9pbmRleGVzLmdldChpbmRleElkKTsKICAgICBSZWZQdHI8SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsOjpmcm9tKHRyYW5zYWN0aW9uUHRyKTsKICAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1v
ZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpOwotCi0gICAgaWYgKCF0cmFu
c2FjdGlvbi0+c2NoZWR1bGVUYXNrKAotICAgICAgICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2so
JklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUluZGV4SW50ZXJuYWwsIG9iamVjdFN0
b3JlLCBpbmRleCwgdHJhbnNhY3Rpb24pLAotICAgICAgICAgICAgICBjcmVhdGVDYWxsYmFja1Rh
c2soJklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmFkZEluZGV4VG9NYXAsIG9iamVjdFN0b3Jl
LCBpbmRleCkpKSB7CisgICAgaWYgKHRyYW5zYWN0aW9uLT5pc0ZpbmlzaGVkKCkpIHsKICAgICAg
ICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSOwog
ICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzaygK
KyAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpk
ZWxldGVJbmRleEludGVybmFsLCBvYmplY3RTdG9yZSwgaW5kZXgsIHRyYW5zYWN0aW9uKSwKKyAg
ICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjphZGRJ
bmRleFRvTWFwLCBvYmplY3RTdG9yZSwgaW5kZXgpKTsKKwogICAgIG1faW5kZXhlcy5yZW1vdmUo
aW5kZXhJZCk7CiB9CiAKQEAgLTQ0MiwxNyArNDQ0LDE4IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbDo6ZGVsZXRlSW5kZXhJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
UGFzCiAgICAgb2JqZWN0U3RvcmUtPmJhY2tpbmdTdG9yZSgpLT5kZWxldGVJbmRleCh0cmFuc2Fj
dGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgb2JqZWN0U3RvcmUtPmRhdGFiYXNlSWQo
KSwgb2JqZWN0U3RvcmUtPmlkKCksIGluZGV4LT5pZCgpKTsKIH0KIAotdm9pZCBJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHBycFJh
bmdlLCBJREJDdXJzb3I6OkRpcmVjdGlvbiBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiBwcnBDYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZTo6VGFza1R5
cGUgdGFza1R5cGUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb25Q
dHIsIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpvcGVu
Q3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBJREJDdXJzb3I6OkRpcmVj
dGlvbiBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIElEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUgdGFza1R5cGUsIElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmKQogewog
ICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6b3BlbkN1cnNvciIpOwot
ICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSA9IHRoaXM7
Ci0gICAgUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSA9IHBycFJhbmdlOwotICAgIFJlZlB0cjxJ
REJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKICAgICBSZWZQdHI8SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsOjpmcm9tKHRyYW5zYWN0aW9uUHRyKTsKLSAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVs
ZVRhc2soCi0gICAgICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJklEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGw6Om9wZW5DdXJzb3JJbnRlcm5hbCwgb2JqZWN0U3RvcmUsIHJhbmdlLCBkaXJlY3Rp
b24sIGNhbGxiYWNrcywgdGFza1R5cGUsIHRyYW5zYWN0aW9uKSkpIHsKKyAgICBpZiAodHJhbnNh
Y3Rpb24tPmlzRmluaXNoZWQoKSkgewogICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0
YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfQUJPUlRfRVJSKSk7
CisgICAgICAgIHJldHVybjsKICAgICB9CisKKyAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbD4gb2JqZWN0U3RvcmUgPSB0aGlzOworICAgIHRyYW5zYWN0aW9uLT5zY2hlZHVsZVRh
c2soCisgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bDo6b3BlbkN1cnNvckludGVybmFsLCBvYmplY3RTdG9yZSwga2V5UmFuZ2UsIGRpcmVjdGlvbiwg
Y2FsbGJhY2tzLCB0YXNrVHlwZSwgdHJhbnNhY3Rpb24pKTsKIH0KIAogdm9pZCBJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29ySW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUsIFBh
c3NSZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdlLCBJREJDdXJzb3I6OkRpcmVjdGlvbiBkaXJlY3Rp
b24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZTo6VGFza1R5cGUgdGFza1R5cGUsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24pCkBAIC00NzksOSArNDgyLDEzIEBAIHZvaWQgSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y291bnQoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcmFu
Z2UsIFBhc3NSZWZQdHI8CiB7CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsOjpjb3VudCIpOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFu
c2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmZyb20odHJhbnNhY3Rpb25QdHIp
OwotICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzaygKLSAgICAgICAgICAgIGNyZWF0
ZUNhbGxiYWNrVGFzaygmSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y291bnRJbnRlcm5hbCwg
dGhpcywgcmFuZ2UsIGNhbGxiYWNrcywgdHJhbnNhY3Rpb24pKSkKKyAgICBpZiAodHJhbnNhY3Rp
b24tPmlzRmluaXNoZWQoKSkgewogICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJh
c2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfQUJPUlRfRVJSKSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKAor
ICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNv
dW50SW50ZXJuYWwsIHRoaXMsIHJhbmdlLCBjYWxsYmFja3MsIHRyYW5zYWN0aW9uKSk7CiB9CiAK
IHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y291bnRJbnRlcm5hbChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmpl
Y3RTdG9yZSwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4g
dHJhbnNhY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwCmluZGV4IGI4Yzc3ZWQ3ZDBl
MDVlODZlZDY5MDc5N2ZmNWJkNzA1ZTdlZmNjN2QuLmU3OWMwN2UwYjcwMzc3MjFiZjg5MjBkMTM0
NjIzYWNkYTczYmRlNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwCkBAIC03NiwxMCAr
NzYsOSBAQCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbDo6b2JqZWN0U3RvcgogICAgIHJldHVybiBvYmplY3RTdG9yZS5y
ZWxlYXNlKCk7CiB9CiAKLWJvb2wgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6c2NoZWR1bGVU
YXNrKFRhc2tUeXBlIHR5cGUsIFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFz
az4gdGFzaywgUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiBhYm9ydFRh
c2spCit2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnNjaGVkdWxlVGFzayhUYXNrVHlw
ZSB0eXBlLCBQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2ssIFBh
c3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gYWJvcnRUYXNrKQogewotICAg
IGlmIChtX3N0YXRlID09IEZpbmlzaGVkKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgQVNT
RVJUKG1fc3RhdGUgIT0gRmluaXNoZWQpOwogCiAgICAgaWYgKHR5cGUgPT0gTm9ybWFsVGFzaykK
ICAgICAgICAgbV90YXNrUXVldWUuYXBwZW5kKHRhc2spOwpAQCAtOTMsOCArOTIsNiBAQCBib29s
IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnNjaGVkdWxlVGFzayhUYXNrVHlwZSB0eXBlLCBQ
YXNzT3duUHRyPFNjcmlwdEV4ZQogICAgICAgICBzdGFydCgpOwogICAgIGVsc2UgaWYgKG1fc3Rh
dGUgPT0gUnVubmluZyAmJiAhbV90YXNrVGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV90YXNr
VGltZXIuc3RhcnRPbmVTaG90KDApOwotCi0gICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6YWJvcnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oCmlu
ZGV4IGQyYTk1ODUwNjA4ZGE4OWY5ZDE3NDUzNWYzYmIxYTI4YzhjYjMyYTkuLjEzNTQwNDIyMGEz
YmE5NzdhOWE4ZDNjMGVmMDI1OTk3ZDdhNjU2M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgK
QEAgLTYwLDggKzYwLDggQEAgcHVibGljOgogICAgIHZvaWQgcnVuKCk7CiAgICAgdW5zaWduZWQg
c2hvcnQgbW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsgfQogICAgIGJvb2wgaXNGaW5pc2hl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gRmluaXNoZWQ7IH0KLSAgICBib29sIHNjaGVk
dWxlVGFzayhQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2ssIFBh
c3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gYWJvcnRUYXNrID0gbnVsbHB0
cikgeyByZXR1cm4gc2NoZWR1bGVUYXNrKE5vcm1hbFRhc2ssIHRhc2ssIGFib3J0VGFzayk7IH0K
LSAgICBib29sIHNjaGVkdWxlVGFzayhUYXNrVHlwZSwgUGFzc093blB0cjxTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpUYXNrPiwgUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
PiBhYm9ydFRhc2sgPSBudWxscHRyKTsKKyAgICB2b2lkIHNjaGVkdWxlVGFzayhQYXNzT3duUHRy
PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2ssIFBhc3NPd25QdHI8U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6VGFzaz4gYWJvcnRUYXNrID0gbnVsbHB0cikgeyBzY2hlZHVsZVRhc2so
Tm9ybWFsVGFzaywgdGFzaywgYWJvcnRUYXNrKTsgfQorICAgIHZvaWQgc2NoZWR1bGVUYXNrKFRh
c2tUeXBlLCBQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+LCBQYXNzT3du
UHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IGFib3J0VGFzayA9IG51bGxwdHIpOwog
ICAgIHZvaWQgcmVnaXN0ZXJPcGVuQ3Vyc29yKElEQkN1cnNvckJhY2tlbmRJbXBsKik7CiAgICAg
dm9pZCB1bnJlZ2lzdGVyT3BlbkN1cnNvcihJREJDdXJzb3JCYWNrZW5kSW1wbCopOwogICAgIHZv
aWQgYWRkUHJlZW1wdGl2ZUV2ZW50KCkgeyBtX3BlbmRpbmdQcmVlbXB0aXZlRXZlbnRzKys7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177036</attachid>
            <date>2012-11-30 15:30:58 -0800</date>
            <delta_ts>2012-12-03 16:37:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103536-20121130152829.patch</filename>
            <type>text/plain</type>
            <size>30280</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2MjcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjEwZWQ4YWUzMDg2ZWI2
OTc1OGM0ZmZhODVjMDRiNjE3MTA0NzI1ZS4uZTg2YzMwODAyZTdkZGU3YWY5NTdmMDJhYjIxZTUw
MTI2Y2EzNzY4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTExLTI5ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBNYWtl
IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnNjaGVkdWxlVGFzaydzIHJldHVybiB0eXBlIHZv
aWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzUz
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbXBs
aWZ5IHNjaGVkdWxlVGFzayBieSBoYXZpbmcgY2FsbGVycyBwcm9iZSBmb3IgYXN5bmNocm9ub3Vz
bHkgY29tcGxldGVkCisgICAgICAgIHRyYW5zYWN0aW9ucyBiZWZvcmUgdXNpbmcgaXQuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzIC0ganVzdCBhIHJlZmFjdG9yLgorCisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCQ3Vyc29yQmFja2VuZEltcGw6OmNvbnRpbnVlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ3Vyc29yQmFja2VuZEltcGw6OmFkdmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6SURC
Q3Vyc29yQmFja2VuZEltcGw6OmRlbGV0ZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkN1cnNvckJhY2tlbmRJbXBsOjpwcmVmZXRjaENvbnRpbnVlKToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmRlbGV0ZU9iamVjdFN0b3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnJ1bkludFZlcnNpb25DaGFuZ2VU
cmFuc2FjdGlvbik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5k
SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleEJhY2tlbmRJbXBsOjpvcGVuQ3Vy
c29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEltcGw6Om9wZW5LZXlDdXJz
b3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW1wbDo6Y291bnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW1wbDo6Z2V0KToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkluZGV4QmFja2VuZEltcGw6OmdldEtleSk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpnZXQpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6c2V0SW5kZXhlc1JlYWR5KToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUZ1bmN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNsZWFyKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZUluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUlu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Om9wZW5D
dXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y291
bnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZElt
cGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6c2No
ZWR1bGVUYXNrKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
OjpzY2hlZHVsZVRhc2spOgorICAgICAgICAoSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCk6CisK
IDIwMTItMTEtMzAgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBJbmRleGVkREI6IFJlcGxhY2UgdXNlIG9mIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sg
KFBhcnQgMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkN1cnNvckJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcAppbmRleCAyY2MxYjhmZDEzMjRhYjgwZWQ0YjY4OGIz
ZmVlNWY2ODQyYWZlOTk3Li5mNGM2ZTcxMjZjZGU0NDZhOTY5ZjY4ODgyZWRkZGY2M2ZmZTYyZWVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JC
YWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
Q3Vyc29yQmFja2VuZEltcGwuY3BwCkBAIC05NCwyMSArOTQsMjQgQEAgSURCQ3Vyc29yQmFja2Vu
ZEltcGw6On5JREJDdXJzb3JCYWNrZW5kSW1wbCgpCiB9CiAKIAotdm9pZCBJREJDdXJzb3JCYWNr
ZW5kSW1wbDo6Y29udGludWVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgSURC
Q3Vyc29yQmFja2VuZEltcGw6OmNvbnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXk+IGtl
eSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgRXhjZXB0aW9uQ29kZSYpCiB7
CiAgICAgSURCX1RSQUNFKCJJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y29udGludWUiKTsKLSAgICBS
ZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7Ci0gICAgaWYgKCFt
X3RyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2sobV90YXNrVHlwZSwgQ3Vyc29ySXRlcmF0aW9uT3Bl
cmF0aW9uOjpjcmVhdGUodGhpcywga2V5LCBjYWxsYmFja3MpKSkKKyAgICBpZiAobV90cmFuc2Fj
dGlvbi0+aXNGaW5pc2hlZCgpKSB7CiAgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRh
YmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9BQk9SVF9FUlIpKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX3RyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2so
bV90YXNrVHlwZSwgQ3Vyc29ySXRlcmF0aW9uT3BlcmF0aW9uOjpjcmVhdGUodGhpcywga2V5LCBj
YWxsYmFja3MpKTsKIH0KIAotdm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6YWR2YW5jZSh1bnNp
Z25lZCBsb25nIGNvdW50LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBF
eGNlcHRpb25Db2RlJikKK3ZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OmFkdmFuY2UodW5zaWdu
ZWQgbG9uZyBjb3VudCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgRXhjZXB0
aW9uQ29kZSYpCiB7CiAgICAgSURCX1RSQUNFKCJJREJDdXJzb3JCYWNrZW5kSW1wbDo6YWR2YW5j
ZSIpOwotICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsK
LQotICAgIGlmICghbV90cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKEN1cnNvckFkdmFuY2VPcGVy
YXRpb246OmNyZWF0ZSh0aGlzLCBjb3VudCwgY2FsbGJhY2tzKSkpCisgICAgaWYgKG1fdHJhbnNh
Y3Rpb24tPmlzRmluaXNoZWQoKSkgewogICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0
YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfQUJPUlRfRVJSKSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV90cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNr
KEN1cnNvckFkdmFuY2VPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBjb3VudCwgY2FsbGJhY2tzKSk7
CiB9CiAKIHZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OkN1cnNvckFkdmFuY2VPcGVyYXRpb246
OnBlcmZvcm0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFj
a2VuZEltcGw+IHBycEN1cnNvciwgdW5zaWduZWQgbG9uZyBjb3VudCwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+IGNhbGxiYWNrcykKQEAgLTE0OSwxMiArMTUyLDE0IEBAIHZvaWQgSURCQ3Vyc29y
QmFja2VuZEltcGw6OmRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBD
YWxsYmFja3MsCiAgICAgQVNTRVJUKCFlYyk7CiB9CiAKLXZvaWQgSURCQ3Vyc29yQmFja2VuZElt
cGw6OnByZWZldGNoQ29udGludWUoaW50IG51bWJlclRvRmV0Y2gsIFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPiBwcnBDYWxsYmFja3MsIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBJREJDdXJzb3JCYWNr
ZW5kSW1wbDo6cHJlZmV0Y2hDb250aW51ZShpbnQgbnVtYmVyVG9GZXRjaCwgUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+IGNhbGxiYWNrcywgRXhjZXB0aW9uQ29kZSYpCiB7CiAgICAgSURCX1RSQUNF
KCJJREJDdXJzb3JCYWNrZW5kSW1wbDo6cHJlZmV0Y2hDb250aW51ZSIpOwotICAgIFJlZlB0cjxJ
REJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKLSAgICBpZiAoIW1fdHJhbnNh
Y3Rpb24tPnNjaGVkdWxlVGFzayhtX3Rhc2tUeXBlLCBDdXJzb3JQcmVmZXRjaEl0ZXJhdGlvbk9w
ZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIG51bWJlclRvRmV0Y2gsIGNhbGxiYWNrcykpKQorICAgIGlm
IChtX3RyYW5zYWN0aW9uLT5pc0ZpbmlzaGVkKCkpIHsKICAgICAgICAgY2FsbGJhY2tzLT5vbkVy
cm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0FC
T1JUX0VSUikpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fdHJhbnNhY3Rpb24tPnNj
aGVkdWxlVGFzayhtX3Rhc2tUeXBlLCBDdXJzb3JQcmVmZXRjaEl0ZXJhdGlvbk9wZXJhdGlvbjo6
Y3JlYXRlKHRoaXMsIG51bWJlclRvRmV0Y2gsIGNhbGxiYWNrcykpOwogfQogCiB2b2lkIElEQkN1
cnNvckJhY2tlbmRJbXBsOjpDdXJzb3JQcmVmZXRjaEl0ZXJhdGlvbk9wZXJhdGlvbjo6cGVyZm9y
bShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW1w
bD4gcHJwQ3Vyc29yLCBpbnQgbnVtYmVyVG9GZXRjaCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
IGNhbGxiYWNrcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKaW5kZXggM2RkOWZmODA1ZmJlZTgyN2Iw
MDA4N2UwZjVhOGJlMjJkNDBiZGJiNi4uYzU4YzU2OGE5NzFhNGFlNTY4MzE4YzIwNTdlOThhZDg2
YmZiN2YwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKQEAgLTIxOSwxNSArMjE5LDE2IEBAIFBh
c3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjpjcmVhdGVPYmplY3RTCiAKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpmcm9tKHRyYW5z
YWN0aW9uUHRyKTsKICAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFuc2Fj
dGlvbjo6VkVSU0lPTl9DSEFOR0UpOworICAgIGlmICh0cmFuc2FjdGlvbi0+aXNGaW5pc2hlZCgp
KSB7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNU
SVZFX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogCiAgICAgLy8gRklYTUU6IEZpeCBl
ZGdlIGNhc2VzIGFyb3VuZCB0cmFuc2FjdGlvbiBhYm9ydHMgdGhhdCBwcmV2ZW50IHRoaXMgZnJv
bSBqdXN0IGJlaW5nIEFTU0VSVChpZCA9PSBtX21ldGFkYXRhLm1heE9iamVjdFN0b3JlSWQgKyAx
KQogICAgIEFTU0VSVChpZCA+IG1fbWV0YWRhdGEubWF4T2JqZWN0U3RvcmVJZCk7CiAgICAgbV9t
ZXRhZGF0YS5tYXhPYmplY3RTdG9yZUlkID0gaWQ7CiAKLSAgICBpZiAoIXRyYW5zYWN0aW9uLT5z
Y2hlZHVsZVRhc2soQ3JlYXRlT2JqZWN0U3RvcmVPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBvYmpl
Y3RTdG9yZSwgdHJhbnNhY3Rpb24pLCBDcmVhdGVPYmplY3RTdG9yZUFib3J0T3BlcmF0aW9uOjpj
cmVhdGUodGhpcywgb2JqZWN0U3RvcmUpKSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElWRV9FUlI7Ci0gICAgICAgIHJldHVybiAwOwotICAg
IH0KKyAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKENyZWF0ZU9iamVjdFN0b3JlT3BlcmF0
aW9uOjpjcmVhdGUodGhpcywgb2JqZWN0U3RvcmUsIHRyYW5zYWN0aW9uKSwgQ3JlYXRlT2JqZWN0
U3RvcmVBYm9ydE9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIG9iamVjdFN0b3JlKSk7CiAKICAgICBt
X29iamVjdFN0b3Jlcy5zZXQoaWQsIG9iamVjdFN0b3JlKTsKICAgICByZXR1cm4gb2JqZWN0U3Rv
cmUucmVsZWFzZSgpOwpAQCAtMjU0LDExICsyNTUsMTIgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjpkZWxldGVPYmplY3RTdG9yZShpbnQ2NF90IGlkLCBJREJUcmFuc2FjdGlvbkJhY2tl
bmQKICAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUgPSBt
X29iamVjdFN0b3Jlcy5nZXQoaWQpOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsPiB0cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmZyb20odHJhbnNh
Y3Rpb25QdHIpOwogICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpID09IElEQlRyYW5zYWN0
aW9uOjpWRVJTSU9OX0NIQU5HRSk7Ci0KLSAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRh
c2soRGVsZXRlT2JqZWN0U3RvcmVPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBvYmplY3RTdG9yZSwg
dHJhbnNhY3Rpb24pLCBEZWxldGVPYmplY3RTdG9yZUFib3J0T3BlcmF0aW9uOjpjcmVhdGUodGhp
cywgb2JqZWN0U3RvcmUpKSkgeworICAgIGlmICh0cmFuc2FjdGlvbi0+aXNGaW5pc2hlZCgpKSB7
CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZF
X0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIHRyYW5zYWN0aW9uLT5zY2hlZHVs
ZVRhc2soRGVsZXRlT2JqZWN0U3RvcmVPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBvYmplY3RTdG9y
ZSwgdHJhbnNhY3Rpb24pLCBEZWxldGVPYmplY3RTdG9yZUFib3J0T3BlcmF0aW9uOjpjcmVhdGUo
dGhpcywgb2JqZWN0U3RvcmUpKTsKICAgICBtX29iamVjdFN0b3Jlcy5yZW1vdmUoaWQpOwogfQog
CkBAIC00NDMsMTAgKzQ0NSw5IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cnVuSW50
VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKGludDY0X3QgcmVxdWVzdGVkVmVyCiAgICAgVmVjdG9y
PGludDY0X3Q+IG9iamVjdFN0b3JlSWRzOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uSW50ZXJmYWNlID0gdHJhbnNhY3Rpb24ob2JqZWN0U3Rv
cmVJZHMsIElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRSk7CiAgICAgUmVmUHRyPElEQlRy
YW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uID0gSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbDo6ZnJvbSh0cmFuc2FjdGlvbkludGVyZmFjZS5nZXQoKSk7CisgICAgQVNTRVJUKCF0cmFu
c2FjdGlvbi0+aXNGaW5pc2hlZCgpKTsKIAotICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxl
VGFzayhWZXJzaW9uQ2hhbmdlT3BlcmF0aW9uOjpjcmVhdGUodGhpcywgcmVxdWVzdGVkVmVyc2lv
biwgY2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcywgdHJhbnNhY3Rpb24pLCBWZXJzaW9uQ2hh
bmdlQWJvcnRPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBtX21ldGFkYXRhLnZlcnNpb24sIG1fbWV0
YWRhdGEuaW50VmVyc2lvbikpKSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IH0KKyAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKFZlcnNpb25DaGFuZ2VPcGVyYXRpb246
OmNyZWF0ZSh0aGlzLCByZXF1ZXN0ZWRWZXJzaW9uLCBjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJh
Y2tzLCB0cmFuc2FjdGlvbiksIFZlcnNpb25DaGFuZ2VBYm9ydE9wZXJhdGlvbjo6Y3JlYXRlKHRo
aXMsIG1fbWV0YWRhdGEudmVyc2lvbiwgbV9tZXRhZGF0YS5pbnRWZXJzaW9uKSk7CiAgICAgQVNT
RVJUKCFtX3BlbmRpbmdTZWNvbmRIYWxmT3BlbldpdGhWZXJzaW9uKTsKICAgICBtX2RhdGFiYXNl
Q2FsbGJhY2tzU2V0LmFkZChkYXRhYmFzZUNhbGxiYWNrcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwuY3BwCmlu
ZGV4IDFhMDVjMjBkYjk1MjcwZTQ5OWI0YTMwMmUxY2Y2ZDI4YTE3ZjZlNjguLjVkNjU1MDVkMWVj
NGRjOTNlOTlkYWI5ODMzNGRkNjEzZDdmY2E3ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwuY3BwCkBAIC0xMjQs
MjIgKzEyNCwyNiBAQCB2b2lkIElEQkluZGV4QmFja2VuZEltcGw6Ok9wZW5JbmRleEN1cnNvck9w
ZXJhdGlvbjo6cGVyZm9ybShTY3JpcHRFeGVjdXRpb25Db250ZQogICAgIGNhbGxiYWNrcy0+b25T
dWNjZXNzKGN1cnNvciwgY3Vyc29yLT5rZXkoKSwgY3Vyc29yLT5wcmltYXJ5S2V5KCksIGN1cnNv
ci0+dmFsdWUoKSk7CiB9CiAKLXZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6b3BlbkN1cnNvcihQ
YXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9u
LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgSURC
SW5kZXhCYWNrZW5kSW1wbDo6b3BlbkN1cnNvcihQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlS
YW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4g
Y2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRy
LCBFeGNlcHRpb25Db2RlJikKIHsKICAgICBJREJfVFJBQ0UoIklEQkluZGV4QmFja2VuZEltcGw6
Om9wZW5DdXJzb3IiKTsKLSAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBD
YWxsYmFja3M7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0
aW9uID0gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6ZnJvbSh0cmFuc2FjdGlvblB0cik7Ci0g
ICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKE9wZW5JbmRleEN1cnNvck9wZXJhdGlv
bjo6Y3JlYXRlKHRoaXMsIGtleVJhbmdlLCBkaXJlY3Rpb24sIElEQkN1cnNvckJhY2tlbmRJbnRl
cmZhY2U6OkluZGV4Q3Vyc29yLCBjYWxsYmFja3MsIHRyYW5zYWN0aW9uKSkpCisgICAgaWYgKHRy
YW5zYWN0aW9uLT5pc0ZpbmlzaGVkKCkpIHsKICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElE
QkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0FCT1JUX0VS
UikpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHRyYW5zYWN0aW9uLT5zY2hlZHVsZVRh
c2soT3BlbkluZGV4Q3Vyc29yT3BlcmF0aW9uOjpjcmVhdGUodGhpcywga2V5UmFuZ2UsIGRpcmVj
dGlvbiwgSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6SW5kZXhDdXJzb3IsIGNhbGxiYWNrcywg
dHJhbnNhY3Rpb24pKTsKIH0KIAotdm9pZCBJREJJbmRleEJhY2tlbmRJbXBsOjpvcGVuS2V5Q3Vy
c29yKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCB1bnNpZ25lZCBzaG9ydCBkaXJl
Y3Rpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmKQordm9p
ZCBJREJJbmRleEJhY2tlbmRJbXBsOjpvcGVuS2V5Q3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5UmFu
Z2U+IGtleVJhbmdlLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPiBjYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNh
Y3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmKQogewogICAgIElEQl9UUkFDRSgiSURCSW5kZXhCYWNr
ZW5kSW1wbDo6b3BlbktleUN1cnNvciIpOwotICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxi
YWNrcyA9IHBycENhbGxiYWNrczsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1w
bD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpmcm9tKHRyYW5zYWN0
aW9uUHRyKTsKLSAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soT3BlbkluZGV4Q3Vy
c29yT3BlcmF0aW9uOjpjcmVhdGUodGhpcywga2V5UmFuZ2UsIGRpcmVjdGlvbiwgSURCQ3Vyc29y
QmFja2VuZEludGVyZmFjZTo6SW5kZXhLZXlDdXJzb3IsIGNhbGxiYWNrcywgdHJhbnNhY3Rpb24p
KSkKKyAgICBpZiAodHJhbnNhY3Rpb24tPmlzRmluaXNoZWQoKSkgewogICAgICAgICBjYWxsYmFj
a3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpJREJfQUJPUlRfRVJSKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgdHJhbnNhY3Rp
b24tPnNjaGVkdWxlVGFzayhPcGVuSW5kZXhDdXJzb3JPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBr
ZXlSYW5nZSwgZGlyZWN0aW9uLCBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpJbmRleEtleUN1
cnNvciwgY2FsbGJhY2tzLCB0cmFuc2FjdGlvbikpOwogfQogCiB2b2lkIElEQkluZGV4QmFja2Vu
ZEltcGw6OkluZGV4Q291bnRPcGVyYXRpb246OnBlcmZvcm0oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gaW5kZXgsIFBhc3NSZWZQdHI8SURC
S2V5UmFuZ2U+IHJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNz
UmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uKQpAQCAtMTYwLDEz
ICsxNjQsMTUgQEAgdm9pZCBJREJJbmRleEJhY2tlbmRJbXBsOjpJbmRleENvdW50T3BlcmF0aW9u
OjpwZXJmb3JtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLAogICAgIGNhbGxiYWNrcy0+b25TdWNj
ZXNzKGNvdW50KTsKIH0KIAotdm9pZCBJREJJbmRleEJhY2tlbmRJbXBsOjpjb3VudChQYXNzUmVm
UHRyPElEQktleVJhbmdlPiByYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxi
YWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgRXhj
ZXB0aW9uQ29kZSYpCit2b2lkIElEQkluZGV4QmFja2VuZEltcGw6OmNvdW50KFBhc3NSZWZQdHI8
SURCS2V5UmFuZ2U+IHJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBFeGNlcHRpb25D
b2RlJikKIHsKICAgICBJREJfVFJBQ0UoIklEQkluZGV4QmFja2VuZEltcGw6OmNvdW50Iik7Ci0g
ICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOwogICAgIFJl
ZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGw6OmZyb20odHJhbnNhY3Rpb25QdHIpOwotICAgIGlmICghdHJhbnNhY3Rp
b24tPnNjaGVkdWxlVGFzayhJbmRleENvdW50T3BlcmF0aW9uOjpjcmVhdGUodGhpcywgcmFuZ2Us
IGNhbGxiYWNrcywgdHJhbnNhY3Rpb24pKSkKKyAgICBpZiAodHJhbnNhY3Rpb24tPmlzRmluaXNo
ZWQoKSkgewogICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3Jl
YXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfQUJPUlRfRVJSKSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhJbmRleENvdW50T3BlcmF0
aW9uOjpjcmVhdGUodGhpcywgcmFuZ2UsIGNhbGxiYWNrcywgdHJhbnNhY3Rpb24pKTsKIH0KIAog
dm9pZCBJREJJbmRleEJhY2tlbmRJbXBsOjpJbmRleFJlZmVyZW5jZWRWYWx1ZVJldHJpZXZhbE9w
ZXJhdGlvbjo6cGVyZm9ybShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJJ
bmRleEJhY2tlbmRJbXBsPiBpbmRleCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2Us
IFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24pCkBAIC0yMjQsMjIgKzIzMCwyNiBAQCB2b2lk
IElEQkluZGV4QmFja2VuZEltcGw6OkluZGV4VmFsdWVSZXRyaWV2YWxPcGVyYXRpb246OnBlcmZv
cm0oU2NyaXB0RXhlY3V0aW9uQwogICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKGtleVJlc3VsdC5n
ZXQoKSk7CiB9CiAKLXZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6Z2V0KFBhc3NSZWZQdHI8SURC
S2V5UmFuZ2U+IGtleVJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tz
LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBFeGNlcHRp
b25Db2RlJikKK3ZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6Z2V0KFBhc3NSZWZQdHI8SURCS2V5
UmFuZ2U+IGtleVJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBFeGNlcHRpb25Db2Rl
JikKIHsKICAgICBJREJfVFJBQ0UoIklEQkluZGV4QmFja2VuZEltcGw6OmdldCIpOwotICAgIFJl
ZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKICAgICBSZWZQdHI8
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsOjpmcm9tKHRyYW5zYWN0aW9uUHRyKTsKLSAgICBpZiAoIXRyYW5zYWN0aW9uLT5z
Y2hlZHVsZVRhc2soSW5kZXhSZWZlcmVuY2VkVmFsdWVSZXRyaWV2YWxPcGVyYXRpb246OmNyZWF0
ZSh0aGlzLCBrZXlSYW5nZSwgY2FsbGJhY2tzLCB0cmFuc2FjdGlvbikpKQorICAgIGlmICh0cmFu
c2FjdGlvbi0+aXNGaW5pc2hlZCgpKSB7CiAgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJE
YXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9BQk9SVF9FUlIp
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNr
KEluZGV4UmVmZXJlbmNlZFZhbHVlUmV0cmlldmFsT3BlcmF0aW9uOjpjcmVhdGUodGhpcywga2V5
UmFuZ2UsIGNhbGxiYWNrcywgdHJhbnNhY3Rpb24pKTsKIH0KIAotdm9pZCBJREJJbmRleEJhY2tl
bmRJbXBsOjpnZXRLZXkoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZSogdHJhbnNhY3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBJREJJbmRleEJhY2tl
bmRJbXBsOjpnZXRLZXkoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZSogdHJhbnNhY3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmKQogewogICAgIElEQl9UUkFDRSgiSURC
SW5kZXhCYWNrZW5kSW1wbDo6Z2V0S2V5Iik7Ci0gICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2Fs
bGJhY2tzID0gcHJwQ2FsbGJhY2tzOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsPiB0cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmZyb20odHJhbnNh
Y3Rpb25QdHIpOwotICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhJbmRleFZhbHVl
UmV0cmlldmFsT3BlcmF0aW9uOjpjcmVhdGUodGhpcywga2V5UmFuZ2UsIGNhbGxiYWNrcywgdHJh
bnNhY3Rpb24pKSkKKyAgICBpZiAodHJhbnNhY3Rpb24tPmlzRmluaXNoZWQoKSkgewogICAgICAg
ICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpJREJfQUJPUlRfRVJSKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
dHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhJbmRleFZhbHVlUmV0cmlldmFsT3BlcmF0aW9uOjpj
cmVhdGUodGhpcywga2V5UmFuZ2UsIGNhbGxiYWNrcywgdHJhbnNhY3Rpb24pKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAppbmRleCAxMDI0
MGUxMDU4ODk0OTgzMTZlNzIyZDNlN2ZjYzhhZDE0ZjM0NGVkLi5kMjk3ZDA5ZjYxZDc3YmIzNjAw
MTgzZDcwNGIyZTQwYjNiZmIxOTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcApAQCAt
MTc1LDEzICsxNzUsMTUgQEAgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSBJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsOjptZXRhZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG1ldGFkYXRhOwogfQogCi12
b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmdldChQYXNzUmVmUHRyPElEQktleVJhbmdl
PiBrZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9uQ29kZSYp
Cit2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmdldChQYXNzUmVmUHRyPElEQktleVJh
bmdlPiBrZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9uQ29kZSYp
CiB7CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpnZXQiKTsKLSAg
ICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7CiAgICAgUmVm
UHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uID0gSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbDo6ZnJvbSh0cmFuc2FjdGlvblB0cik7Ci0gICAgaWYgKCF0cmFuc2FjdGlv
bi0+c2NoZWR1bGVUYXNrKE9iamVjdFN0b3JlUmV0cmlldmFsT3BlcmF0aW9uOjpjcmVhdGUodGhp
cywga2V5UmFuZ2UsIGNhbGxiYWNrcywgdHJhbnNhY3Rpb24pKSkKKyAgICBpZiAodHJhbnNhY3Rp
b24tPmlzRmluaXNoZWQoKSkgewogICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJh
c2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfQUJPUlRfRVJSKSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhPYmpl
Y3RTdG9yZVJldHJpZXZhbE9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIGtleVJhbmdlLCBjYWxsYmFj
a3MsIHRyYW5zYWN0aW9uKSk7CiB9CiAKIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6
T2JqZWN0U3RvcmVSZXRyaWV2YWxPcGVyYXRpb246OnBlcmZvcm0oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUs
IFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5z
YWN0aW9uKQpAQCAtMjEzLDIxICsyMTUsMjMgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsOjpPYmplY3RTdG9yZVJldHJpZXZhbE9wZXJhdGlvbjo6cGVyZm9ybShTY3JpcHRFeGUKICAg
ICBjYWxsYmFja3MtPm9uU3VjY2VzcyhTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21X
aXJlKHdpcmVEYXRhKSk7CiB9CiAKLXZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0
KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgUGFzc1JlZlB0cjxJREJL
ZXk+IGtleSwgUHV0TW9kZSBwdXRNb2RlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2Fs
bGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBj
b25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzLCBjb25zdCBWZWN0b3I8SW5kZXhLZXlzPiYg
aW5kZXhLZXlzKQordm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpwdXQoUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQ
dXRNb2RlIHB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIElEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb25QdHIsIGNvbnN0IFZlY3Rvcjxp
bnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0IFZlY3RvcjxJbmRleEtleXM+JiBpbmRleEtleXMpCiB7
CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpwdXQiKTsKIAotICAg
IFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKICAgICBSZWZQ
dHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbXBsOjpmcm9tKHRyYW5zYWN0aW9uUHRyKTsKICAgICBBU1NFUlQodHJhbnNhY3Rp
b24tPm1vZGUoKSAhPSBJREJUcmFuc2FjdGlvbjo6UkVBRF9PTkxZKTsKKyAgICBpZiAodHJhbnNh
Y3Rpb24tPmlzRmluaXNoZWQoKSkgeworICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0
YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfQUJPUlRfRVJSKSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBPd25QdHI8VmVjdG9yPGludDY0X3Q+ID4g
bmV3SW5kZXhJZHMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPGludDY0X3Q+KGluZGV4SWRzKSk7CiAg
ICAgT3duUHRyPFZlY3RvcjxJbmRleEtleXM+ID4gbmV3SW5kZXhLZXlzID0gYWRvcHRQdHIobmV3
IFZlY3RvcjxJbmRleEtleXM+KGluZGV4S2V5cykpOwogCiAgICAgQVNTRVJUKGF1dG9JbmNyZW1l
bnQoKSB8fCBrZXkuZ2V0KCkpOwogCi0gICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNr
KE9iamVjdFN0b3JlU3RvcmFnZU9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIHZhbHVlLCBrZXksIHB1
dE1vZGUsIGNhbGxiYWNrcywgdHJhbnNhY3Rpb24sIG5ld0luZGV4SWRzLnJlbGVhc2UoKSwgbmV3
SW5kZXhLZXlzLnJlbGVhc2UoKSkpKQotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0
YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfQUJPUlRfRVJSKSk7
CisgICAgdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhPYmplY3RTdG9yZVN0b3JhZ2VPcGVyYXRp
b246OmNyZWF0ZSh0aGlzLCB2YWx1ZSwga2V5LCBwdXRNb2RlLCBjYWxsYmFja3MsIHRyYW5zYWN0
aW9uLCBuZXdJbmRleElkcy5yZWxlYXNlKCksIG5ld0luZGV4S2V5cy5yZWxlYXNlKCkpKTsKIH0K
IAogbmFtZXNwYWNlIHsKQEAgLTM3MCw4ICszNzQsNyBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGw6OnNldEluZGV4ZXNSZWFkeShjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRz
LAogICAgIGlmICh0cmFuc2FjdGlvbi0+aXNGaW5pc2hlZCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlOjpQcmVlbXB0aXZlVGFzaywgT2JqZWN0U3RvcmVJbmRleGVzUmVhZHlPcGVyYXRp
b246OmNyZWF0ZSh0aGlzLCBuZXdJbmRleElkcy5yZWxlYXNlKCksIHRyYW5zYWN0aW9uKSkpCi0g
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHRyYW5zYWN0aW9uLT5zY2hlZHVsZVRh
c2soSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlOjpQcmVlbXB0aXZlVGFzaywgT2JqZWN0
U3RvcmVJbmRleGVzUmVhZHlPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBuZXdJbmRleElkcy5yZWxl
YXNlKCksIHRyYW5zYWN0aW9uKSk7CiB9CiAKIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bDo6T2JqZWN0U3RvcmVJbmRleGVzUmVhZHlPcGVyYXRpb246OnBlcmZvcm0oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0
U3RvcmUsIFBhc3NPd25QdHI8VmVjdG9yPGludDY0X3Q+ID4gcG9wSW5kZXhJZHMsIFBhc3NSZWZQ
dHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24pCkBAIC00NDgsMTYgKzQ1
MSwxNyBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Ok9iamVjdFN0b3JlU3RvcmFn
ZU9wZXJhdGlvbjo6cGVyZm9ybShTY3JpcHRFeGVjdQogICAgIGNhbGxiYWNrcy0+b25TdWNjZXNz
KGtleS5yZWxlYXNlKCkpOwogfQogCi12b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRl
bGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2UqIHRyYW5zYWN0aW9uUHRyLCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbDo6ZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFu
Z2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmKQogewogICAgIElE
Ql9UUkFDRSgiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlIik7CiAKICAgICBSZWZQ
dHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbXBsOjpmcm9tKHRyYW5zYWN0aW9uUHRyKTsKICAgICBBU1NFUlQodHJhbnNhY3Rp
b24tPm1vZGUoKSAhPSBJREJUcmFuc2FjdGlvbjo6UkVBRF9PTkxZKTsKLSAgICBSZWZQdHI8SURC
Q2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7Ci0KLSAgICBpZiAoIXRyYW5zYWN0
aW9uLT5zY2hlZHVsZVRhc2soT2JqZWN0U3RvcmVEZWxldGlvbk9wZXJhdGlvbjo6Y3JlYXRlKHRo
aXMsIGtleVJhbmdlLCBjYWxsYmFja3MsIHRyYW5zYWN0aW9uKSkpCisgICAgaWYgKHRyYW5zYWN0
aW9uLT5pc0ZpbmlzaGVkKCkpIHsKICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFi
YXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0FCT1JUX0VSUikpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIHRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soT2Jq
ZWN0U3RvcmVEZWxldGlvbk9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIGtleVJhbmdlLCBjYWxsYmFj
a3MsIHRyYW5zYWN0aW9uKSk7CiB9CiAKIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6
T2JqZWN0U3RvcmVEZWxldGlvbk9wZXJhdGlvbjo6cGVyZm9ybShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSwg
UGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNh
Y3Rpb24pCkBAIC00NzYsMTYgKzQ4MCwxNyBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZElt
cGw6Ok9iamVjdFN0b3JlRGVsZXRpb25PcGVyYXRpb246OnBlcmZvcm0oU2NyaXB0RXhlYwogICAg
IGNhbGxiYWNrcy0+b25TdWNjZXNzKCk7CiB9CiAKLXZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbDo6Y2xlYXIoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9uQ29kZSYp
Cit2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNsZWFyKFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPiBjYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNh
Y3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmKQogewogICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbDo6Y2xlYXIiKTsKIAogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsPiB0cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmZyb20odHJh
bnNhY3Rpb25QdHIpOwogICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpICE9IElEQlRyYW5z
YWN0aW9uOjpSRUFEX09OTFkpOwotICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9
IHBycENhbGxiYWNrczsKLQotICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhPYmpl
Y3RTdG9yZUNsZWFyT3BlcmF0aW9uOjpjcmVhdGUodGhpcywgY2FsbGJhY2tzLCB0cmFuc2FjdGlv
bikpKQorICAgIGlmICh0cmFuc2FjdGlvbi0+aXNGaW5pc2hlZCgpKSB7CiAgICAgICAgIGNhbGxi
YWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRp
b246OklEQl9BQk9SVF9FUlIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB0cmFuc2Fj
dGlvbi0+c2NoZWR1bGVUYXNrKE9iamVjdFN0b3JlQ2xlYXJPcGVyYXRpb246OmNyZWF0ZSh0aGlz
LCBjYWxsYmFja3MsIHRyYW5zYWN0aW9uKSk7CiB9CiAKIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbDo6T2JqZWN0U3RvcmVDbGVhck9wZXJhdGlvbjo6cGVyZm9ybShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RT
dG9yZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbikKQEAgLTQ5OSwxOCArNTA0LDIwIEBA
IFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsOjpjcmVhdGVJbmRleChpbnQ2CiB7CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9p
bmRleGVzLmNvbnRhaW5zKGlkKSwgIkluZGV4ZXMgYWxyZWFkeSBjb250YWluICVzIiwgbmFtZS51
dGY4KCkuZGF0YSgpKTsKIAorICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0
cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmZyb20odHJhbnNhY3Rpb25Q
dHIpOworICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpW
RVJTSU9OX0NIQU5HRSk7CisgICAgaWYgKHRyYW5zYWN0aW9uLT5pc0ZpbmlzaGVkKCkpIHsKKyAg
ICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJS
OworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKICAgICBSZWZQdHI8SURCSW5kZXhCYWNrZW5k
SW1wbD4gaW5kZXggPSBJREJJbmRleEJhY2tlbmRJbXBsOjpjcmVhdGUobV9kYXRhYmFzZSwgdGhp
cywgSURCSW5kZXhNZXRhZGF0YShuYW1lLCBpZCwga2V5UGF0aCwgdW5pcXVlLCBtdWx0aUVudHJ5
KSk7CiAgICAgQVNTRVJUKGluZGV4LT5uYW1lKCkgPT0gbmFtZSk7CiAKLSAgICBSZWZQdHI8SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsOjpmcm9tKHRyYW5zYWN0aW9uUHRyKTsKLSAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1v
ZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpOwogICAgIEFTU0VSVChpZCA+
IG1fbWV0YWRhdGEubWF4SW5kZXhJZCk7CiAgICAgbV9tZXRhZGF0YS5tYXhJbmRleElkID0gaWQ7
CiAKLSAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soQ3JlYXRlSW5kZXhPcGVyYXRp
b246OmNyZWF0ZSh0aGlzLCBpbmRleCwgdHJhbnNhY3Rpb24pLCBDcmVhdGVJbmRleEFib3J0T3Bl
cmF0aW9uOjpjcmVhdGUodGhpcywgaW5kZXgpKSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElWRV9FUlI7Ci0gICAgICAgIHJldHVybiAwOwot
ICAgIH0KKyAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKENyZWF0ZUluZGV4T3BlcmF0aW9u
OjpjcmVhdGUodGhpcywgaW5kZXgsIHRyYW5zYWN0aW9uKSwgQ3JlYXRlSW5kZXhBYm9ydE9wZXJh
dGlvbjo6Y3JlYXRlKHRoaXMsIGluZGV4KSk7CiAKICAgICBtX2luZGV4ZXMuc2V0KGlkLCBpbmRl
eCk7CiAgICAgcmV0dXJuIGluZGV4LnJlbGVhc2UoKTsKQEAgLTUzNiwxNCArNTQzLDE1IEBAIHZv
aWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlSW5kZXgoaW50NjRfdCBpbmRleElk
LCBJREJUcmFuc2FjdGlvbkJhY2tlCiB7CiAgICAgQVNTRVJUKG1faW5kZXhlcy5jb250YWlucyhp
bmRleElkKSk7CiAKLSAgICBSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gaW5kZXggPSBtX2lu
ZGV4ZXMuZ2V0KGluZGV4SWQpOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
PiB0cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmZyb20odHJhbnNhY3Rp
b25QdHIpOwogICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9u
OjpWRVJTSU9OX0NIQU5HRSk7Ci0KLSAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2so
RGVsZXRlSW5kZXhPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBpbmRleCwgdHJhbnNhY3Rpb24pLCBE
ZWxldGVJbmRleEFib3J0T3BlcmF0aW9uOjpjcmVhdGUodGhpcywgaW5kZXgpKSkgeworICAgIGlm
ICh0cmFuc2FjdGlvbi0+aXNGaW5pc2hlZCgpKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VF
eGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KKworICAgIFJlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiBpbmRleCA9IG1faW5kZXhlcy5n
ZXQoaW5kZXhJZCk7CisgICAgdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhEZWxldGVJbmRleE9w
ZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIGluZGV4LCB0cmFuc2FjdGlvbiksIERlbGV0ZUluZGV4QWJv
cnRPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBpbmRleCkpOwogICAgIG1faW5kZXhlcy5yZW1vdmUo
aW5kZXhJZCk7CiB9CiAKQEAgLTU1MywxNCArNTYxLDE1IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbDo6RGVsZXRlSW5kZXhPcGVyYXRpb246OnBlcmZvcm0oU2NyaXB0RXhlY3V0aW9u
Q29uCiAgICAgb2JqZWN0U3RvcmUtPmJhY2tpbmdTdG9yZSgpLT5kZWxldGVJbmRleCh0cmFuc2Fj
dGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgb2JqZWN0U3RvcmUtPmRhdGFiYXNlSWQo
KSwgb2JqZWN0U3RvcmUtPmlkKCksIGluZGV4LT5pZCgpKTsKIH0KIAotdm9pZCBJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdl
LCBJREJDdXJzb3I6OkRpcmVjdGlvbiBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiBwcnBDYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUg
dGFza1R5cGUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb25QdHIs
IEV4Y2VwdGlvbkNvZGUmKQordm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpvcGVuQ3Vy
c29yKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdlLCBJREJDdXJzb3I6OkRpcmVjdGlvbiBk
aXJlY3Rpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUgdGFza1R5cGUsIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmKQogewogICAgIElE
Ql9UUkFDRSgiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6b3BlbkN1cnNvciIpOwotICAgIFJl
ZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKICAgICBSZWZQdHI8
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsOjpmcm9tKHRyYW5zYWN0aW9uUHRyKTsKLSAgICBpZiAoIXRyYW5zYWN0aW9uLT5z
Y2hlZHVsZVRhc2soT3Blbk9iamVjdFN0b3JlQ3Vyc29yT3BlcmF0aW9uOjpjcmVhdGUodGhpcywg
cmFuZ2UsIGRpcmVjdGlvbiwgY2FsbGJhY2tzLCB0YXNrVHlwZSwgdHJhbnNhY3Rpb24pKSkgewor
ICAgIGlmICh0cmFuc2FjdGlvbi0+aXNGaW5pc2hlZCgpKSB7CiAgICAgICAgIGNhbGxiYWNrcy0+
b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OklE
Ql9BQk9SVF9FUlIpKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICB0cmFuc2FjdGlvbi0+
c2NoZWR1bGVUYXNrKE9wZW5PYmplY3RTdG9yZUN1cnNvck9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMs
IHJhbmdlLCBkaXJlY3Rpb24sIGNhbGxiYWNrcywgdGFza1R5cGUsIHRyYW5zYWN0aW9uKSk7CiB9
CiAKIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6T3Blbk9iamVjdFN0b3JlQ3Vyc29y
T3BlcmF0aW9uOjpwZXJmb3JtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlLCBQYXNzUmVmUHRyPElEQktleVJh
bmdlPiByYW5nZSwgSURCQ3Vyc29yOjpEaXJlY3Rpb24gZGlyZWN0aW9uLCBQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U6OlRh
c2tUeXBlIHRhc2tUeXBlLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRy
YW5zYWN0aW9uKQpAQCAtNTgzLDEzICs1OTIsMTUgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsOjpPcGVuT2JqZWN0U3RvcmVDdXJzb3JPcGVyYXRpb246OnBlcmZvcm0oU2NyaXB0RXgK
ICAgICBjYWxsYmFja3MtPm9uU3VjY2VzcyhjdXJzb3IsIGN1cnNvci0+a2V5KCksIGN1cnNvci0+
cHJpbWFyeUtleSgpLCBjdXJzb3ItPnZhbHVlKCkpOwogfQogCi12b2lkIElEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGw6OmNvdW50KFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdlLCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbDo6Y291bnQoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZSogdHJhbnNhY3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmKQogewogICAgIElEQl9UUkFDRSgi
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y291bnQiKTsKLSAgICBSZWZQdHI8SURCQ2FsbGJh
Y2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGw+IHRyYW5zYWN0aW9uID0gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6ZnJv
bSh0cmFuc2FjdGlvblB0cik7Ci0gICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKE9i
amVjdFN0b3JlQ291bnRPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCByYW5nZSwgY2FsbGJhY2tzLCB0
cmFuc2FjdGlvbikpKQorICAgIGlmICh0cmFuc2FjdGlvbi0+aXNGaW5pc2hlZCgpKSB7CiAgICAg
ICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJh
c2VFeGNlcHRpb246OklEQl9BQk9SVF9FUlIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKE9iamVjdFN0b3JlQ291bnRPcGVyYXRpb246OmNy
ZWF0ZSh0aGlzLCByYW5nZSwgY2FsbGJhY2tzLCB0cmFuc2FjdGlvbikpOwogfQogCiB2b2lkIElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGw6Ok9iamVjdFN0b3JlQ291bnRPcGVyYXRpb246OnBlcmZv
cm0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbD4gb2JqZWN0U3RvcmUsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdlLCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGw+IHRyYW5zYWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcAppbmRl
eCBiOGM3N2VkN2QwZTA1ZTg2ZWQ2OTA3OTdmZjViZDcwNWU3ZWZjYzdkLi5lNzljMDdlMGI3MDM3
NzIxYmY4OTIwZDEzNDYyM2FjZGE3M2JkZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNw
cApAQCAtNzYsMTAgKzc2LDkgQEAgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRl
cmZhY2U+IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6Om9iamVjdFN0b3IKICAgICByZXR1cm4g
b2JqZWN0U3RvcmUucmVsZWFzZSgpOwogfQogCi1ib29sIElEQlRyYW5zYWN0aW9uQmFja2VuZElt
cGw6OnNjaGVkdWxlVGFzayhUYXNrVHlwZSB0eXBlLCBQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlRhc2s+IHRhc2ssIFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzaz4gYWJvcnRUYXNrKQordm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpzY2hlZHVs
ZVRhc2soVGFza1R5cGUgdHlwZSwgUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpU
YXNrPiB0YXNrLCBQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IGFib3J0
VGFzaykKIHsKLSAgICBpZiAobV9zdGF0ZSA9PSBGaW5pc2hlZCkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIEFTU0VSVChtX3N0YXRlICE9IEZpbmlzaGVkKTsKIAogICAgIGlmICh0eXBlID09
IE5vcm1hbFRhc2spCiAgICAgICAgIG1fdGFza1F1ZXVlLmFwcGVuZCh0YXNrKTsKQEAgLTkzLDgg
KzkyLDYgQEAgYm9vbCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpzY2hlZHVsZVRhc2soVGFz
a1R5cGUgdHlwZSwgUGFzc093blB0cjxTY3JpcHRFeGUKICAgICAgICAgc3RhcnQoKTsKICAgICBl
bHNlIGlmIChtX3N0YXRlID09IFJ1bm5pbmcgJiYgIW1fdGFza1RpbWVyLmlzQWN0aXZlKCkpCiAg
ICAgICAgIG1fdGFza1RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKLQotICAgIHJldHVybiB0cnVlOwog
fQogCiB2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmFib3J0KCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZElt
cGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFj
a2VuZEltcGwuaAppbmRleCBkMmE5NTg1MDYwOGRhODlmOWQxNzQ1MzVmM2JiMWEyOGM4Y2IzMmE5
Li4xMzU0MDQyMjBhM2JhOTc3YTlhOGQzYzBlZjAyNTk5N2Q3YTY1NjNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbC5oCkBAIC02MCw4ICs2MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJ1bigpOwog
ICAgIHVuc2lnbmVkIHNob3J0IG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21vZGU7IH0KICAgICBi
b29sIGlzRmluaXNoZWQoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09IEZpbmlzaGVkOyB9Ci0g
ICAgYm9vbCBzY2hlZHVsZVRhc2soUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpU
YXNrPiB0YXNrLCBQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IGFib3J0
VGFzayA9IG51bGxwdHIpIHsgcmV0dXJuIHNjaGVkdWxlVGFzayhOb3JtYWxUYXNrLCB0YXNrLCBh
Ym9ydFRhc2spOyB9Ci0gICAgYm9vbCBzY2hlZHVsZVRhc2soVGFza1R5cGUsIFBhc3NPd25QdHI8
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4sIFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6VGFzaz4gYWJvcnRUYXNrID0gbnVsbHB0cik7CisgICAgdm9pZCBzY2hlZHVsZVRh
c2soUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrLCBQYXNzT3du
UHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IGFib3J0VGFzayA9IG51bGxwdHIpIHsg
c2NoZWR1bGVUYXNrKE5vcm1hbFRhc2ssIHRhc2ssIGFib3J0VGFzayk7IH0KKyAgICB2b2lkIHNj
aGVkdWxlVGFzayhUYXNrVHlwZSwgUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpU
YXNrPiwgUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiBhYm9ydFRhc2sg
PSBudWxscHRyKTsKICAgICB2b2lkIHJlZ2lzdGVyT3BlbkN1cnNvcihJREJDdXJzb3JCYWNrZW5k
SW1wbCopOwogICAgIHZvaWQgdW5yZWdpc3Rlck9wZW5DdXJzb3IoSURCQ3Vyc29yQmFja2VuZElt
cGwqKTsKICAgICB2b2lkIGFkZFByZWVtcHRpdmVFdmVudCgpIHsgbV9wZW5kaW5nUHJlZW1wdGl2
ZUV2ZW50cysrOyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177368</attachid>
            <date>2012-12-03 16:37:08 -0800</date>
            <delta_ts>2012-12-04 09:02:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103536-20121203163434.patch</filename>
            <type>text/plain</type>
            <size>30367</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NDM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjg0YjBmY2RhODlmN2U5
ZDUyZGRhNzRkZmRjYTQxMzhkNjJmNzhmYi4uMGEyZjg0OGM1MzllZDU1YmRmNDczOGJiZjBiZmMx
NGIzNmE2ZmQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTEyLTAzICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBNYWtl
IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnNjaGVkdWxlVGFzaydzIHJldHVybiB0eXBlIHZv
aWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzUz
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUg
cmVzcG9uc2liaWxpdHkgZm9yIGZpcmluZyBhYm9ydCBlcnJvcnMgZnJvbSByZXF1ZXN0cyB0aGF0
IGFycml2ZSBvbiB0aGUKKyAgICAgICAgYmFjay1lbmQgYWZ0ZXIgYW4gYXN5bmNocm9ub3VzIHRy
YW5zYWN0aW9uIGFib3J0IG91dCBvZiBXZWJDb3JlLCBzaW5jZSB0aGUKKyAgICAgICAgZnJvbnQt
ZW5kIHRha2VzIGNhcmUgb2YgdGhpcyBhcyBmYXIgYXMgc2NyaXB0IGlzIGNvbmNlcm5lZC4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMgLSBqdXN0IGEgcmVmYWN0b3IuCisKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y29udGludWVGdW5jdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpJREJDdXJzb3JCYWNrZW5kSW1wbDo6YWR2YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJDdXJzb3JCYWNrZW5kSW1wbDo6cHJlZmV0Y2hDb250aW51ZSk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpydW5JbnRWZXJzaW9uQ2hhbmdl
VHJhbnNhY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2Vu
ZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW1wbDo6b3BlbkN1
cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleEJhY2tlbmRJbXBsOjpvcGVuS2V5Q3Vy
c29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEltcGw6OmNvdW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEltcGw6OmdldCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJJbmRleEJhY2tlbmRJbXBsOjpnZXRLZXkpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9i
amVjdFN0b3JlQmFja2VuZEltcGw6OnB1dCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnNldEluZGV4ZXNSZWFkeSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVGdW5jdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjbGVhcik6
CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRl
eCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVJ
bmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpvcGVu
Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNv
dW50KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnNj
aGVkdWxlVGFzayk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1w
bDo6c2NoZWR1bGVUYXNrKToKKyAgICAgICAgKElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwpOgor
CiAyMDEyLTEyLTAzICBGbG9yaW4gTWFsaXRhICA8Zm1hbGl0YUBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgW1NraWFdIERlZmVycmVkIFNrQ2FudmFzIHNhdmUoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwppbmRleCBlYjI1MTUwZGY4N2JmMTc2YTZmYjQyYWI0ODEwNDYyZWYyYjgwZmFkLi5mYTdk
Y2ZkNjUxYWFkNjVkZjgwMDA2NmRkMjM3Njc4ZTc1MzllZjJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTEyLTAzICBKb3NodWEgQmVsbCAgPGpzYmVs
bEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBNYWtlIElEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGw6OnNjaGVkdWxlVGFzaydzIHJldHVybiB0eXBlIHZvaWQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzUzNgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRyYWNrIHdoZXRoZXIgSURCQ2Fs
bGJhY2tzIGhhcyBmaXJlZCBiZWZvcmUgYmVpbmcgZGVzdHJ1Y3RlZC4gSWYgbm90IGl0IHByb2Jh
Ymx5CisgICAgICAgIGNhbWUgaW4gYWZ0ZXIgYSB0cmFuc2FjdGlvbiBoYWQgYXN5bmNocm9ub3Vz
bHkgYWJvcnRlZDsgZmlyZSBhbiBhYm9ydCBlcnJvciB3aGljaAorICAgICAgICB3aWxsIGJlIGln
bm9yZWQgb24gdGhlIGZyb250LWVuZCBidXQgd2lsbCBjbGVhbiB1cCBsaW5nZXJpbmcgSVBDIHRy
YWNraW5nLgorCisgICAgICAgICogcHVibGljL1dlYklEQkRhdGFiYXNlRXhjZXB0aW9uLmg6Cisg
ICAgICAgICogc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwOgorICAgICAgICAqIHNyYy9XZWJJ
REJDYWxsYmFja3NJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ2FsbGJhY2tzSW1w
bDo6V2ViSURCQ2FsbGJhY2tzSW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNhbGxiYWNr
c0ltcGw6On5XZWJJREJDYWxsYmFja3NJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ2Fs
bGJhY2tzSW1wbDo6b25FcnJvcik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNhbGxiYWNrc0lt
cGw6Om9uU3VjY2Vzcyk6CisgICAgICAgICogc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaDoKKyAg
ICAgICAgKFdlYklEQkNhbGxiYWNrc0ltcGwpOgorCiAyMDEyLTEyLTAzICBFdWdlbmUgS2x5dWNo
bmlrb3YgIDxldXN0YXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IE1h
a2UgbWFpbi10aHJlYWQgbW9uaXRvcmluZyBnbyB0aHJvdWdoIEluc3BlY3RvckNvbnRyb2xsZXIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJh
Y2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNv
ckJhY2tlbmRJbXBsLmNwcAppbmRleCA4NjRlOWZhZGViM2ZlZTYxYzc0NTg2OWE2YzViNDdiOGJj
NDQyYzFjLi4xZGExODIxNWY4MTM2ODZmOTRlYWJiMWE0MTJlZTFmYWIwNThhY2I5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFj
a2VuZEltcGwuY3BwCkBAIC05OCwxNyArOTgsMTggQEAgdm9pZCBJREJDdXJzb3JCYWNrZW5kSW1w
bDo6Y29udGludWVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPEkK
IHsKICAgICBJREJfVFJBQ0UoIklEQkN1cnNvckJhY2tlbmRJbXBsOjpjb250aW51ZSIpOwogICAg
IFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKLSAgICBpZiAo
IW1fdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhtX3Rhc2tUeXBlLCBDdXJzb3JJdGVyYXRpb25P
cGVyYXRpb246OmNyZWF0ZSh0aGlzLCBrZXksIGNhbGxiYWNrcykpKQotICAgICAgICBjYWxsYmFj
a3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpBYm9ydEVycm9yKSk7CisgICAgaWYgKG1fdHJhbnNhY3Rpb24tPmlzRmluaXNoZWQoKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIG1fdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhtX3Rhc2tUeXBl
LCBDdXJzb3JJdGVyYXRpb25PcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBrZXksIGNhbGxiYWNrcykp
OwogfQogCiB2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjphZHZhbmNlKHVuc2lnbmVkIGxvbmcg
Y291bnQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIEV4Y2VwdGlvbkNv
ZGUmKQogewogICAgIElEQl9UUkFDRSgiSURCQ3Vyc29yQmFja2VuZEltcGw6OmFkdmFuY2UiKTsK
ICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7Ci0KLSAg
ICBpZiAoIW1fdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhDdXJzb3JBZHZhbmNlT3BlcmF0aW9u
OjpjcmVhdGUodGhpcywgY291bnQsIGNhbGxiYWNrcykpKQotICAgICAgICBjYWxsYmFja3MtPm9u
RXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpBYm9y
dEVycm9yKSk7CisgICAgaWYgKG1fdHJhbnNhY3Rpb24tPmlzRmluaXNoZWQoKSkKKyAgICAgICAg
cmV0dXJuOworICAgIG1fdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhDdXJzb3JBZHZhbmNlT3Bl
cmF0aW9uOjpjcmVhdGUodGhpcywgY291bnQsIGNhbGxiYWNrcykpOwogfQogCiB2b2lkIElEQkN1
cnNvckJhY2tlbmRJbXBsOjpDdXJzb3JBZHZhbmNlT3BlcmF0aW9uOjpwZXJmb3JtKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiBwcnBDdXJz
b3IsIHVuc2lnbmVkIGxvbmcgY291bnQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFj
a3MpCkBAIC0xNTMsOCArMTU0LDkgQEAgdm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6cHJlZmV0
Y2hDb250aW51ZShpbnQgbnVtYmVyVG9GZXRjaCwgUGFzc1JlZlB0cjxJREJDYWwKIHsKICAgICBJ
REJfVFJBQ0UoIklEQkN1cnNvckJhY2tlbmRJbXBsOjpwcmVmZXRjaENvbnRpbnVlIik7CiAgICAg
UmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOwotICAgIGlmICgh
bV90cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKG1fdGFza1R5cGUsIEN1cnNvclByZWZldGNoSXRl
cmF0aW9uT3BlcmF0aW9uOjpjcmVhdGUodGhpcywgbnVtYmVyVG9GZXRjaCwgY2FsbGJhY2tzKSkp
Ci0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURC
RGF0YWJhc2VFeGNlcHRpb246OkFib3J0RXJyb3IpKTsKKyAgICBpZiAobV90cmFuc2FjdGlvbi0+
aXNGaW5pc2hlZCgpKQorICAgICAgICByZXR1cm47CisgICAgbV90cmFuc2FjdGlvbi0+c2NoZWR1
bGVUYXNrKG1fdGFza1R5cGUsIEN1cnNvclByZWZldGNoSXRlcmF0aW9uT3BlcmF0aW9uOjpjcmVh
dGUodGhpcywgbnVtYmVyVG9GZXRjaCwgY2FsbGJhY2tzKSk7CiB9CiAKIHZvaWQgSURCQ3Vyc29y
QmFja2VuZEltcGw6OkN1cnNvclByZWZldGNoSXRlcmF0aW9uT3BlcmF0aW9uOjpwZXJmb3JtKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiBw
cnBDdXJzb3IsIGludCBudW1iZXJUb0ZldGNoLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2Fs
bGJhY2tzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAppbmRleCA0NjM4ODc3NjRiNTdkZTM2ZDVkOWQx
N2JkYzNkZjk0OGY0YWM1OTVkLi4yMWQ3YjhlODkyMTMyODRhYjU3OWNlYmMyY2M0ODIwZTVmZTUx
YWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcApAQCAtMjI0LDEwICsyMjQsMTEgQEAgUGFzc1Jl
ZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IElEQkRhdGFiYXNlQmFja2VuZElt
cGw6OmNyZWF0ZU9iamVjdFMKICAgICBBU1NFUlQoaWQgPiBtX21ldGFkYXRhLm1heE9iamVjdFN0
b3JlSWQpOwogICAgIG1fbWV0YWRhdGEubWF4T2JqZWN0U3RvcmVJZCA9IGlkOwogCi0gICAgaWYg
KCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKENyZWF0ZU9iamVjdFN0b3JlT3BlcmF0aW9uOjpj
cmVhdGUodGhpcywgb2JqZWN0U3RvcmUsIHRyYW5zYWN0aW9uKSwgQ3JlYXRlT2JqZWN0U3RvcmVB
Ym9ydE9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIG9iamVjdFN0b3JlKSkpIHsKKyAgICBpZiAodHJh
bnNhY3Rpb24tPmlzRmluaXNoZWQoKSkgewogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3I7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0K
KyAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKENyZWF0ZU9iamVjdFN0b3JlT3BlcmF0aW9u
OjpjcmVhdGUodGhpcywgb2JqZWN0U3RvcmUsIHRyYW5zYWN0aW9uKSwgQ3JlYXRlT2JqZWN0U3Rv
cmVBYm9ydE9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIG9iamVjdFN0b3JlKSk7CiAKICAgICBtX29i
amVjdFN0b3Jlcy5zZXQoaWQsIG9iamVjdFN0b3JlKTsKICAgICByZXR1cm4gb2JqZWN0U3RvcmUu
cmVsZWFzZSgpOwpAQCAtMjU1LDEwICsyNTYsMTEgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpkZWxldGVPYmplY3RTdG9yZShpbnQ2NF90IGlkLCBJREJUcmFuc2FjdGlvbkJhY2tlbmQK
ICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpmcm9tKHRyYW5zYWN0aW9uUHRyKTsKICAgICBBU1NFUlQo
dHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpOwog
Ci0gICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKERlbGV0ZU9iamVjdFN0b3JlT3Bl
cmF0aW9uOjpjcmVhdGUodGhpcywgb2JqZWN0U3RvcmUsIHRyYW5zYWN0aW9uKSwgRGVsZXRlT2Jq
ZWN0U3RvcmVBYm9ydE9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIG9iamVjdFN0b3JlKSkpIHsKKyAg
ICBpZiAodHJhbnNhY3Rpb24tPmlzRmluaXNoZWQoKSkgewogICAgICAgICBlYyA9IElEQkRhdGFi
YXNlRXhjZXB0aW9uOjpUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3I7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CisgICAgdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhEZWxldGVPYmplY3RTdG9yZU9w
ZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIG9iamVjdFN0b3JlLCB0cmFuc2FjdGlvbiksIERlbGV0ZU9i
amVjdFN0b3JlQWJvcnRPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBvYmplY3RTdG9yZSkpOwogICAg
IG1fb2JqZWN0U3RvcmVzLnJlbW92ZShpZCk7CiB9CiAKQEAgLTQzOCwxMCArNDQwLDkgQEAgdm9p
ZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpydW5JbnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24o
aW50NjRfdCByZXF1ZXN0ZWRWZXIKICAgICAvLyBGSVhNRTogVGhlIHRyYW5zYWN0aW9uSWQgbmVl
ZHMgdG8gYmUgcGlwZWQgaW4gdGhyb3VnaCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6Om9w
ZW4oKS4KICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2Fj
dGlvbkludGVyZmFjZSA9IGNyZWF0ZVRyYW5zYWN0aW9uKDAsIG9iamVjdFN0b3JlSWRzLCBJREJU
cmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmZyb20o
dHJhbnNhY3Rpb25JbnRlcmZhY2UuZ2V0KCkpOworICAgIEFTU0VSVCghdHJhbnNhY3Rpb24tPmlz
RmluaXNoZWQoKSk7CiAKLSAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soVmVyc2lv
bkNoYW5nZU9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIHJlcXVlc3RlZFZlcnNpb24sIGNhbGxiYWNr
cywgZGF0YWJhc2VDYWxsYmFja3MsIHRyYW5zYWN0aW9uKSwgVmVyc2lvbkNoYW5nZUFib3J0T3Bl
cmF0aW9uOjpjcmVhdGUodGhpcywgbV9tZXRhZGF0YS52ZXJzaW9uLCBtX21ldGFkYXRhLmludFZl
cnNpb24pKSkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9CisgICAgdHJh
bnNhY3Rpb24tPnNjaGVkdWxlVGFzayhWZXJzaW9uQ2hhbmdlT3BlcmF0aW9uOjpjcmVhdGUodGhp
cywgcmVxdWVzdGVkVmVyc2lvbiwgY2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcywgdHJhbnNh
Y3Rpb24pLCBWZXJzaW9uQ2hhbmdlQWJvcnRPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBtX21ldGFk
YXRhLnZlcnNpb24sIG1fbWV0YWRhdGEuaW50VmVyc2lvbikpOwogICAgIEFTU0VSVCghbV9wZW5k
aW5nU2Vjb25kSGFsZk9wZW5XaXRoVmVyc2lvbik7CiAgICAgbV9kYXRhYmFzZUNhbGxiYWNrc1Nl
dC5hZGQoZGF0YWJhc2VDYWxsYmFja3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmNwcAppbmRleCA5YWQ0Yjhk
NmUzNmJhZjM0ZTZlM2Q5NjUxYTkxMWI3NTE3MmE4MjllLi5jNzkxMzcxOTVkNjYzMzMyNjllOGU1
MDk0ZjE3NjlkYmM0ODZlM2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmNwcApAQCAtMTI5LDggKzEyOSw5IEBA
IHZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6b3BlbkN1cnNvcihQYXNzUmVmUHRyPElEQktleVJh
bmdlPiBrZXlSYW5nZSwgdW5zaWduZWQKICAgICBJREJfVFJBQ0UoIklEQkluZGV4QmFja2VuZElt
cGw6Om9wZW5DdXJzb3IiKTsKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBw
cnBDYWxsYmFja3M7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5z
YWN0aW9uID0gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6ZnJvbSh0cmFuc2FjdGlvblB0cik7
Ci0gICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKE9wZW5JbmRleEN1cnNvck9wZXJh
dGlvbjo6Y3JlYXRlKHRoaXMsIGtleVJhbmdlLCBkaXJlY3Rpb24sIElEQkN1cnNvckJhY2tlbmRJ
bnRlcmZhY2U6OkluZGV4Q3Vyc29yLCBjYWxsYmFja3MsIHRyYW5zYWN0aW9uKSkpCi0gICAgICAg
IGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VF
eGNlcHRpb246OkFib3J0RXJyb3IpKTsKKyAgICBpZiAodHJhbnNhY3Rpb24tPmlzRmluaXNoZWQo
KSkKKyAgICAgICAgcmV0dXJuOworICAgIHRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soT3Blbklu
ZGV4Q3Vyc29yT3BlcmF0aW9uOjpjcmVhdGUodGhpcywga2V5UmFuZ2UsIGRpcmVjdGlvbiwgSURC
Q3Vyc29yQmFja2VuZEludGVyZmFjZTo6SW5kZXhDdXJzb3IsIGNhbGxiYWNrcywgdHJhbnNhY3Rp
b24pKTsKIH0KIAogdm9pZCBJREJJbmRleEJhY2tlbmRJbXBsOjpvcGVuS2V5Q3Vyc29yKFBhc3NS
ZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZSogdHJhbnNhY3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmKQpAQCAtMTM4LDggKzEz
OSw5IEBAIHZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6b3BlbktleUN1cnNvcihQYXNzUmVmUHRy
PElEQktleVJhbmdlPiBrZXlSYW5nZSwgdW5zaWduCiAgICAgSURCX1RSQUNFKCJJREJJbmRleEJh
Y2tlbmRJbXBsOjpvcGVuS2V5Q3Vyc29yIik7CiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2Fs
bGJhY2tzID0gcHJwQ2FsbGJhY2tzOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsPiB0cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmZyb20odHJhbnNh
Y3Rpb25QdHIpOwotICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhPcGVuSW5kZXhD
dXJzb3JPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBrZXlSYW5nZSwgZGlyZWN0aW9uLCBJREJDdXJz
b3JCYWNrZW5kSW50ZXJmYWNlOjpJbmRleEtleUN1cnNvciwgY2FsbGJhY2tzLCB0cmFuc2FjdGlv
bikpKQotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRl
KElEQkRhdGFiYXNlRXhjZXB0aW9uOjpBYm9ydEVycm9yKSk7CisgICAgaWYgKHRyYW5zYWN0aW9u
LT5pc0ZpbmlzaGVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICB0cmFuc2FjdGlvbi0+c2NoZWR1
bGVUYXNrKE9wZW5JbmRleEN1cnNvck9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIGtleVJhbmdlLCBk
aXJlY3Rpb24sIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OkluZGV4S2V5Q3Vyc29yLCBjYWxs
YmFja3MsIHRyYW5zYWN0aW9uKSk7CiB9CiAKIHZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6SW5k
ZXhDb3VudE9wZXJhdGlvbjo6cGVyZm9ybShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1Jl
ZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiBpbmRleCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4g
cmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24pCkBAIC0xNjUsOCArMTY3LDkgQEAg
dm9pZCBJREJJbmRleEJhY2tlbmRJbXBsOjpjb3VudChQYXNzUmVmUHRyPElEQktleVJhbmdlPiBy
YW5nZSwgUGFzc1JlZlB0cjxJREJDYWwKICAgICBJREJfVFJBQ0UoIklEQkluZGV4QmFja2VuZElt
cGw6OmNvdW50Iik7CiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzID0gcHJwQ2Fs
bGJhY2tzOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlv
biA9IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmZyb20odHJhbnNhY3Rpb25QdHIpOwotICAg
IGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhJbmRleENvdW50T3BlcmF0aW9uOjpjcmVh
dGUodGhpcywgcmFuZ2UsIGNhbGxiYWNrcywgdHJhbnNhY3Rpb24pKSkKLSAgICAgICAgY2FsbGJh
Y2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6QWJvcnRFcnJvcikpOworICAgIGlmICh0cmFuc2FjdGlvbi0+aXNGaW5pc2hlZCgpKQorICAg
ICAgICByZXR1cm47CisgICAgdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhJbmRleENvdW50T3Bl
cmF0aW9uOjpjcmVhdGUodGhpcywgcmFuZ2UsIGNhbGxiYWNrcywgdHJhbnNhY3Rpb24pKTsKIH0K
IAogdm9pZCBJREJJbmRleEJhY2tlbmRJbXBsOjpJbmRleFJlZmVyZW5jZWRWYWx1ZVJldHJpZXZh
bE9wZXJhdGlvbjo6cGVyZm9ybShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJ
REJJbmRleEJhY2tlbmRJbXBsPiBpbmRleCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFu
Z2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24pCkBAIC0yMjksOCArMjMyLDkgQEAgdm9p
ZCBJREJJbmRleEJhY2tlbmRJbXBsOjpnZXQoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFu
Z2UsIFBhc3NSZWZQdHI8SURCQ2EKICAgICBJREJfVFJBQ0UoIklEQkluZGV4QmFja2VuZEltcGw6
OmdldCIpOwogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNr
czsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpmcm9tKHRyYW5zYWN0aW9uUHRyKTsKLSAgICBpZiAo
IXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soSW5kZXhSZWZlcmVuY2VkVmFsdWVSZXRyaWV2YWxP
cGVyYXRpb246OmNyZWF0ZSh0aGlzLCBrZXlSYW5nZSwgY2FsbGJhY2tzLCB0cmFuc2FjdGlvbikp
KQotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpBYm9ydEVycm9yKSk7CisgICAgaWYgKHRyYW5zYWN0aW9uLT5p
c0ZpbmlzaGVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVU
YXNrKEluZGV4UmVmZXJlbmNlZFZhbHVlUmV0cmlldmFsT3BlcmF0aW9uOjpjcmVhdGUodGhpcywg
a2V5UmFuZ2UsIGNhbGxiYWNrcywgdHJhbnNhY3Rpb24pKTsKIH0KIAogdm9pZCBJREJJbmRleEJh
Y2tlbmRJbXBsOjpnZXRLZXkoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZSogdHJhbnNhY3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmKQpAQCAtMjM4LDggKzI0Miw5
IEBAIHZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6Z2V0S2V5KFBhc3NSZWZQdHI8SURCS2V5UmFu
Z2U+IGtleVJhbmdlLCBQYXNzUmVmUHRyPElECiAgICAgSURCX1RSQUNFKCJJREJJbmRleEJhY2tl
bmRJbXBsOjpnZXRLZXkiKTsKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBw
cnBDYWxsYmFja3M7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5z
YWN0aW9uID0gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6ZnJvbSh0cmFuc2FjdGlvblB0cik7
Ci0gICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKEluZGV4VmFsdWVSZXRyaWV2YWxP
cGVyYXRpb246OmNyZWF0ZSh0aGlzLCBrZXlSYW5nZSwgY2FsbGJhY2tzLCB0cmFuc2FjdGlvbikp
KQotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpBYm9ydEVycm9yKSk7CisgICAgaWYgKHRyYW5zYWN0aW9uLT5p
c0ZpbmlzaGVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVU
YXNrKEluZGV4VmFsdWVSZXRyaWV2YWxPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBrZXlSYW5nZSwg
Y2FsbGJhY2tzLCB0cmFuc2FjdGlvbikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9i
amVjdFN0b3JlQmFja2VuZEltcGwuY3BwCmluZGV4IGNhOGFkNjE3MmRlOTgxNWI1NmVkZDMzMWE5
YTczNTZlY2YxOThkYTYuLjk4YjQ1ZjQ1NjNmODJjOGMwMWJlYWVmZmNhODc1NTg4MDE4YzIwN2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCkBAIC0xODAsOCArMTgwLDkgQEAgdm9pZCBJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpnZXQoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5
UmFuZ2UsIFBhc3NSZWZQdHIKICAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlQmFja2VuZElt
cGw6OmdldCIpOwogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxi
YWNrczsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24g
PSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpmcm9tKHRyYW5zYWN0aW9uUHRyKTsKLSAgICBp
ZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soT2JqZWN0U3RvcmVSZXRyaWV2YWxPcGVyYXRp
b246OmNyZWF0ZSh0aGlzLCBrZXlSYW5nZSwgY2FsbGJhY2tzLCB0cmFuc2FjdGlvbikpKQotICAg
ICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFi
YXNlRXhjZXB0aW9uOjpBYm9ydEVycm9yKSk7CisgICAgaWYgKHRyYW5zYWN0aW9uLT5pc0Zpbmlz
aGVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKE9i
amVjdFN0b3JlUmV0cmlldmFsT3BlcmF0aW9uOjpjcmVhdGUodGhpcywga2V5UmFuZ2UsIGNhbGxi
YWNrcywgdHJhbnNhY3Rpb24pKTsKIH0KIAogdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
OjpPYmplY3RTdG9yZVJldHJpZXZhbE9wZXJhdGlvbjo6cGVyZm9ybShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9y
ZSwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJh
bnNhY3Rpb24pCkBAIC0yMjAsMTQgKzIyMSwxNSBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGw6OnB1dChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIFBhcwog
ICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKICAgICBS
ZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsOjpmcm9tKHRyYW5zYWN0aW9uUHRyKTsKICAgICBBU1NFUlQodHJhbnNh
Y3Rpb24tPm1vZGUoKSAhPSBJREJUcmFuc2FjdGlvbjo6UkVBRF9PTkxZKTsKKyAgICBpZiAodHJh
bnNhY3Rpb24tPmlzRmluaXNoZWQoKSkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgT3duUHRyPFZl
Y3RvcjxpbnQ2NF90PiA+IG5ld0luZGV4SWRzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxpbnQ2NF90
PihpbmRleElkcykpOwogICAgIE93blB0cjxWZWN0b3I8SW5kZXhLZXlzPiA+IG5ld0luZGV4S2V5
cyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8SW5kZXhLZXlzPihpbmRleEtleXMpKTsKIAogICAgIEFT
U0VSVChhdXRvSW5jcmVtZW50KCkgfHwga2V5LmdldCgpKTsKIAotICAgIGlmICghdHJhbnNhY3Rp
b24tPnNjaGVkdWxlVGFzayhPYmplY3RTdG9yZVN0b3JhZ2VPcGVyYXRpb246OmNyZWF0ZSh0aGlz
LCB2YWx1ZSwga2V5LCBwdXRNb2RlLCBjYWxsYmFja3MsIHRyYW5zYWN0aW9uLCBuZXdJbmRleElk
cy5yZWxlYXNlKCksIG5ld0luZGV4S2V5cy5yZWxlYXNlKCkpKSkKLSAgICAgICAgY2FsbGJhY2tz
LT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
QWJvcnRFcnJvcikpOworICAgIHRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soT2JqZWN0U3RvcmVT
dG9yYWdlT3BlcmF0aW9uOjpjcmVhdGUodGhpcywgdmFsdWUsIGtleSwgcHV0TW9kZSwgY2FsbGJh
Y2tzLCB0cmFuc2FjdGlvbiwgbmV3SW5kZXhJZHMucmVsZWFzZSgpLCBuZXdJbmRleEtleXMucmVs
ZWFzZSgpKSk7CiB9CiAKIG5hbWVzcGFjZSB7CkBAIC0zNzAsOCArMzcyLDcgQEAgdm9pZCBJREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsOjpzZXRJbmRleGVzUmVhZHkoY29uc3QgVmVjdG9yPGludDY0
X3Q+JiBpbmRleElkcywKICAgICBpZiAodHJhbnNhY3Rpb24tPmlzRmluaXNoZWQoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZTo6UHJlZW1wdGl2ZVRhc2ssIE9iamVjdFN0b3JlSW5kZXhl
c1JlYWR5T3BlcmF0aW9uOjpjcmVhdGUodGhpcywgbmV3SW5kZXhJZHMucmVsZWFzZSgpLCB0cmFu
c2FjdGlvbikpKQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB0cmFuc2FjdGlv
bi0+c2NoZWR1bGVUYXNrKElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZTo6UHJlZW1wdGl2
ZVRhc2ssIE9iamVjdFN0b3JlSW5kZXhlc1JlYWR5T3BlcmF0aW9uOjpjcmVhdGUodGhpcywgbmV3
SW5kZXhJZHMucmVsZWFzZSgpLCB0cmFuc2FjdGlvbikpOwogfQogCiB2b2lkIElEQk9iamVjdFN0
b3JlQmFja2VuZEltcGw6Ok9iamVjdFN0b3JlSW5kZXhlc1JlYWR5T3BlcmF0aW9uOjpwZXJmb3Jt
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGw+IG9iamVjdFN0b3JlLCBQYXNzT3duUHRyPFZlY3RvcjxpbnQ2NF90PiA+IHBvcEluZGV4
SWRzLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uKQpA
QCAtNDU0LDEwICs0NTUsMTEgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxl
dGVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwKIAogICAgIFJlZlB0
cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGw6OmZyb20odHJhbnNhY3Rpb25QdHIpOwogICAgIEFTU0VSVCh0cmFuc2FjdGlv
bi0+bW9kZSgpICE9IElEQlRyYW5zYWN0aW9uOjpSRUFEX09OTFkpOworICAgIGlmICh0cmFuc2Fj
dGlvbi0+aXNGaW5pc2hlZCgpKQorICAgICAgICByZXR1cm47CiAgICAgUmVmUHRyPElEQkNhbGxi
YWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOwogCi0gICAgaWYgKCF0cmFuc2FjdGlvbi0+
c2NoZWR1bGVUYXNrKE9iamVjdFN0b3JlRGVsZXRpb25PcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBr
ZXlSYW5nZSwgY2FsbGJhY2tzLCB0cmFuc2FjdGlvbikpKQotICAgICAgICBjYWxsYmFja3MtPm9u
RXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpBYm9y
dEVycm9yKSk7CisgICAgdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhPYmplY3RTdG9yZURlbGV0
aW9uT3BlcmF0aW9uOjpjcmVhdGUodGhpcywga2V5UmFuZ2UsIGNhbGxiYWNrcywgdHJhbnNhY3Rp
b24pKTsKIH0KIAogdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpPYmplY3RTdG9yZURl
bGV0aW9uT3BlcmF0aW9uOjpwZXJmb3JtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVm
UHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlLCBQYXNzUmVmUHRyPElE
QktleVJhbmdlPiBrZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywg
UGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbikKQEAgLTQ4
MiwxMCArNDg0LDExIEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y2xlYXIoUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgSURCCiAKICAgICBSZWZQdHI8SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsOjpmcm9tKHRyYW5zYWN0aW9uUHRyKTsKICAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1v
ZGUoKSAhPSBJREJUcmFuc2FjdGlvbjo6UkVBRF9PTkxZKTsKKyAgICBpZiAodHJhbnNhY3Rpb24t
PmlzRmluaXNoZWQoKSkKKyAgICAgICAgcmV0dXJuOwogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+
IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKIAotICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVk
dWxlVGFzayhPYmplY3RTdG9yZUNsZWFyT3BlcmF0aW9uOjpjcmVhdGUodGhpcywgY2FsbGJhY2tz
LCB0cmFuc2FjdGlvbikpKQotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VF
cnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpBYm9ydEVycm9yKSk7CisgICAgdHJh
bnNhY3Rpb24tPnNjaGVkdWxlVGFzayhPYmplY3RTdG9yZUNsZWFyT3BlcmF0aW9uOjpjcmVhdGUo
dGhpcywgY2FsbGJhY2tzLCB0cmFuc2FjdGlvbikpOwogfQogCiB2b2lkIElEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGw6Ok9iamVjdFN0b3JlQ2xlYXJPcGVyYXRpb246OnBlcmZvcm0oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2Jq
ZWN0U3RvcmUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24pCkBAIC01MDcsMTAgKzUxMCwx
MSBAQCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbDo6Y3JlYXRlSW5kZXgoaW50NgogICAgIEFTU0VSVChpZCA+IG1fbWV0YWRhdGEu
bWF4SW5kZXhJZCk7CiAgICAgbV9tZXRhZGF0YS5tYXhJbmRleElkID0gaWQ7CiAKLSAgICBpZiAo
IXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soQ3JlYXRlSW5kZXhPcGVyYXRpb246OmNyZWF0ZSh0
aGlzLCBpbmRleCwgdHJhbnNhY3Rpb24pLCBDcmVhdGVJbmRleEFib3J0T3BlcmF0aW9uOjpjcmVh
dGUodGhpcywgaW5kZXgpKSkgeworICAgIGlmICh0cmFuc2FjdGlvbi0+aXNGaW5pc2hlZCgpKSB7
CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRyYW5zYWN0aW9uSW5hY3RpdmVF
cnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorICAgIHRyYW5zYWN0aW9uLT5zY2hlZHVs
ZVRhc2soQ3JlYXRlSW5kZXhPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBpbmRleCwgdHJhbnNhY3Rp
b24pLCBDcmVhdGVJbmRleEFib3J0T3BlcmF0aW9uOjpjcmVhdGUodGhpcywgaW5kZXgpKTsKIAog
ICAgIG1faW5kZXhlcy5zZXQoaWQsIGluZGV4KTsKICAgICByZXR1cm4gaW5kZXgucmVsZWFzZSgp
OwpAQCAtNTM5LDExICs1NDMsMTEgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpk
ZWxldGVJbmRleChpbnQ2NF90IGluZGV4SWQsIElEQlRyYW5zYWN0aW9uQmFja2UKICAgICBSZWZQ
dHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gaW5kZXggPSBtX2luZGV4ZXMuZ2V0KGluZGV4SWQpOwog
ICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9IElEQlRy
YW5zYWN0aW9uQmFja2VuZEltcGw6OmZyb20odHJhbnNhY3Rpb25QdHIpOwogICAgIEFTU0VSVCh0
cmFuc2FjdGlvbi0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRSk7Ci0K
LSAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soRGVsZXRlSW5kZXhPcGVyYXRpb246
OmNyZWF0ZSh0aGlzLCBpbmRleCwgdHJhbnNhY3Rpb24pLCBEZWxldGVJbmRleEFib3J0T3BlcmF0
aW9uOjpjcmVhdGUodGhpcywgaW5kZXgpKSkgeworICAgIGlmICh0cmFuc2FjdGlvbi0+aXNGaW5p
c2hlZCgpKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRyYW5zYWN0aW9u
SW5hY3RpdmVFcnJvcjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICB0cmFuc2FjdGlvbi0+
c2NoZWR1bGVUYXNrKERlbGV0ZUluZGV4T3BlcmF0aW9uOjpjcmVhdGUodGhpcywgaW5kZXgsIHRy
YW5zYWN0aW9uKSwgRGVsZXRlSW5kZXhBYm9ydE9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIGluZGV4
KSk7CiAgICAgbV9pbmRleGVzLnJlbW92ZShpbmRleElkKTsKIH0KIApAQCAtNTU4LDkgKzU2Miw5
IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6b3BlbkN1cnNvcihQYXNzUmVmUHRy
PElEQktleVJhbmdlPiByYW5nZSwgSURCQ3VyCiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29yIik7CiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2Fs
bGJhY2tzID0gcHJwQ2FsbGJhY2tzOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsPiB0cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmZyb20odHJhbnNh
Y3Rpb25QdHIpOwotICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhPcGVuT2JqZWN0
U3RvcmVDdXJzb3JPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCByYW5nZSwgZGlyZWN0aW9uLCBjYWxs
YmFja3MsIHRhc2tUeXBlLCB0cmFuc2FjdGlvbikpKSB7Ci0gICAgICAgIGNhbGxiYWNrcy0+b25F
cnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkFib3J0
RXJyb3IpKTsKLSAgICB9CisgICAgaWYgKHRyYW5zYWN0aW9uLT5pc0ZpbmlzaGVkKCkpCisgICAg
ICAgIHJldHVybjsKKyAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKE9wZW5PYmplY3RTdG9y
ZUN1cnNvck9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIHJhbmdlLCBkaXJlY3Rpb24sIGNhbGxiYWNr
cywgdGFza1R5cGUsIHRyYW5zYWN0aW9uKSk7CiB9CiAKIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbDo6T3Blbk9iamVjdFN0b3JlQ3Vyc29yT3BlcmF0aW9uOjpwZXJmb3JtKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9i
amVjdFN0b3JlLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwgSURCQ3Vyc29yOjpEaXJl
Y3Rpb24gZGlyZWN0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlIHRhc2tUeXBlLCBQYXNzUmVmUHRy
PElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uKQpAQCAtNTg4LDggKzU5Miw5
IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y291bnQoUGFzc1JlZlB0cjxJREJL
ZXlSYW5nZT4gcmFuZ2UsIFBhc3NSZWZQdHI8CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsOjpjb3VudCIpOwogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNr
cyA9IHBycENhbGxiYWNrczsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4g
dHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpmcm9tKHRyYW5zYWN0aW9u
UHRyKTsKLSAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soT2JqZWN0U3RvcmVDb3Vu
dE9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIHJhbmdlLCBjYWxsYmFja3MsIHRyYW5zYWN0aW9uKSkp
Ci0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURC
RGF0YWJhc2VFeGNlcHRpb246OkFib3J0RXJyb3IpKTsKKyAgICBpZiAodHJhbnNhY3Rpb24tPmlz
RmluaXNoZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIHRyYW5zYWN0aW9uLT5zY2hlZHVsZVRh
c2soT2JqZWN0U3RvcmVDb3VudE9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIHJhbmdlLCBjYWxsYmFj
a3MsIHRyYW5zYWN0aW9uKSk7CiB9CiAKIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6
T2JqZWN0U3RvcmVDb3VudE9wZXJhdGlvbjo6cGVyZm9ybShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSwgUGFz
c1JlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxs
YmFja3MsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwCmluZGV4IGM1NDJmZGQ3OTA4OTllZWFiYTE0NDEy
NGU4ZTMyZTkzNDNlNzA0ZTAuLjNhODM1Y2Q1ODdjNTgzMGY5NmQ5OGY4NDlmODMwYTFlOGRhNjM3
NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwCkBAIC03NiwxMCArNzYsOSBAQCBQYXNz
UmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW1wbDo6b2JqZWN0U3RvcgogICAgIHJldHVybiBvYmplY3RTdG9yZS5yZWxlYXNlKCk7CiB9
CiAKLWJvb2wgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6c2NoZWR1bGVUYXNrKFRhc2tUeXBl
IHR5cGUsIFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaywgUGFz
c093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiBhYm9ydFRhc2spCit2b2lkIElE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnNjaGVkdWxlVGFzayhUYXNrVHlwZSB0eXBlLCBQYXNz
T3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2ssIFBhc3NPd25QdHI8U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gYWJvcnRUYXNrKQogewotICAgIGlmIChtX3N0YXRl
ID09IEZpbmlzaGVkKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgQVNTRVJUKG1fc3RhdGUg
IT0gRmluaXNoZWQpOwogCiAgICAgaWYgKHR5cGUgPT0gTm9ybWFsVGFzaykKICAgICAgICAgbV90
YXNrUXVldWUuYXBwZW5kKHRhc2spOwpAQCAtOTMsOCArOTIsNiBAQCBib29sIElEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGw6OnNjaGVkdWxlVGFzayhUYXNrVHlwZSB0eXBlLCBQYXNzT3duUHRyPFNj
cmlwdEV4ZQogICAgICAgICBzdGFydCgpOwogICAgIGVsc2UgaWYgKG1fc3RhdGUgPT0gUnVubmlu
ZyAmJiAhbV90YXNrVGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV90YXNrVGltZXIuc3RhcnRP
bmVTaG90KDApOwotCi0gICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbDo6YWJvcnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oCmluZGV4IGQyYTk1ODUw
NjA4ZGE4OWY5ZDE3NDUzNWYzYmIxYTI4YzhjYjMyYTkuLjEzNTQwNDIyMGEzYmE5NzdhOWE4ZDNj
MGVmMDI1OTk3ZDdhNjU2M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgKQEAgLTYwLDggKzYw
LDggQEAgcHVibGljOgogICAgIHZvaWQgcnVuKCk7CiAgICAgdW5zaWduZWQgc2hvcnQgbW9kZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsgfQogICAgIGJvb2wgaXNGaW5pc2hlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhdGUgPT0gRmluaXNoZWQ7IH0KLSAgICBib29sIHNjaGVkdWxlVGFzayhQYXNz
T3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2ssIFBhc3NPd25QdHI8U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gYWJvcnRUYXNrID0gbnVsbHB0cikgeyByZXR1cm4g
c2NoZWR1bGVUYXNrKE5vcm1hbFRhc2ssIHRhc2ssIGFib3J0VGFzayk7IH0KLSAgICBib29sIHNj
aGVkdWxlVGFzayhUYXNrVHlwZSwgUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpU
YXNrPiwgUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiBhYm9ydFRhc2sg
PSBudWxscHRyKTsKKyAgICB2b2lkIHNjaGVkdWxlVGFzayhQYXNzT3duUHRyPFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2ssIFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzaz4gYWJvcnRUYXNrID0gbnVsbHB0cikgeyBzY2hlZHVsZVRhc2soTm9ybWFsVGFzaywg
dGFzaywgYWJvcnRUYXNrKTsgfQorICAgIHZvaWQgc2NoZWR1bGVUYXNrKFRhc2tUeXBlLCBQYXNz
T3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+LCBQYXNzT3duUHRyPFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IGFib3J0VGFzayA9IG51bGxwdHIpOwogICAgIHZvaWQgcmVn
aXN0ZXJPcGVuQ3Vyc29yKElEQkN1cnNvckJhY2tlbmRJbXBsKik7CiAgICAgdm9pZCB1bnJlZ2lz
dGVyT3BlbkN1cnNvcihJREJDdXJzb3JCYWNrZW5kSW1wbCopOwogICAgIHZvaWQgYWRkUHJlZW1w
dGl2ZUV2ZW50KCkgeyBtX3BlbmRpbmdQcmVlbXB0aXZlRXZlbnRzKys7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlRXhjZXB0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZUV4Y2VwdGlvbi5o
CmluZGV4IDhjMDBhMGYwMmU1MGFiNThjNzExZTQwY2VjYmUyM2Q1NDViYWYxOGQuLmYwOWExYWFj
YjBhZDkyZTk4YWEzZDEyNDhlYWFlZWQ4N2I5MGYzNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlRXhjZXB0aW9uLmgKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2VFeGNlcHRpb24uaApAQCAtMzUs
NiArMzUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogZW51bSBXZWJJREJEYXRhYmFzZUV4Y2Vw
dGlvbiB7CiAgICAgV2ViSURCRGF0YWJhc2VFeGNlcHRpb25EYXRhRXJyb3IgPSAxMjAzLAorICAg
IFdlYklEQkRhdGFiYXNlRXhjZXB0aW9uQWJvcnRFcnJvciA9IDEyMTAsCiAgICAgV2ViSURCRGF0
YWJhc2VFeGNlcHRpb25RdW90YUVycm9yID0gMTIxMiwKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKaW5kZXggNGQ3YjhiY2Mw
YjI1NDM0ZTk1MDczNzFjNzE0YWU0NzAxMjVkMTIxNi4uMmNmNWM3MThmMDYzYWYzZWNmZTc3NmI2
Y2MyZGExZWRiZTdiNTI0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
QXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
QXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKQEAgLTQ3OSwxMCArNDc5LDExIEBAIENPTVBJTEVfQVNT
RVJUX01BVENISU5HX0VOVU0oV2ViVmlldzo6VXNlckNvbnRlbnRJbmplY3RJblRvcEZyYW1lT25s
eSwgSW5qZWN0SW5UCiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlZpZXc6OlVzZXJT
dHlsZUluamVjdEluRXhpc3RpbmdEb2N1bWVudHMsIEluamVjdEluRXhpc3RpbmdEb2N1bWVudHMp
OwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJWaWV3OjpVc2VyU3R5bGVJbmplY3RJ
blN1YnNlcXVlbnREb2N1bWVudHMsIEluamVjdEluU3Vic2VxdWVudERvY3VtZW50cyk7CiAKKyNp
ZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0o
V2ViSURCRGF0YWJhc2VFeGNlcHRpb25EYXRhRXJyb3IsIElEQkRhdGFiYXNlRXhjZXB0aW9uOjpE
YXRhRXJyb3IpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJEYXRhYmFzZUV4
Y2VwdGlvbkFib3J0RXJyb3IsIElEQkRhdGFiYXNlRXhjZXB0aW9uOjpBYm9ydEVycm9yKTsKIENP
TVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViSURCRGF0YWJhc2VFeGNlcHRpb25RdW90YUVy
cm9yLCBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6UXVvdGFFeGNlZWRlZEVycm9yKTsKIAotI2lmIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJ
REJLZXk6OkludmFsaWRUeXBlLCBJREJLZXk6OkludmFsaWRUeXBlKTsKIENPTVBJTEVfQVNTRVJU
X01BVENISU5HX0VOVU0oV2ViSURCS2V5OjpBcnJheVR5cGUsIElEQktleTo6QXJyYXlUeXBlKTsK
IENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViSURCS2V5OjpTdHJpbmdUeXBlLCBJREJL
ZXk6OlN0cmluZ1R5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSURCQ2FsbGJhY2tzSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJDYWxsYmFja3NJbXBsLmNwcAppbmRleCBkY2YzMDNiMzkxMTJhYWExZTY3YzY1ZGY3NDJkOTNh
MjRiMDZmZDkyLi4yODIxM2IyMjI1ZDRjNjg0NjVkY2VkNjlkMjI2MWZiNWFjMGQyMmM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmNw
cApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIldlYklEQkNhbGxiYWNrcy5oIgogI2luY2x1
ZGUgIldlYklEQkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VFcnJvci5oIgor
I2luY2x1ZGUgIldlYklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiV2ViSURCS2V5
LmgiCiAjaW5jbHVkZSAiV2ViSURCVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9X
ZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKQEAgLTUwLDMwICs1MSwzOCBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIFdlYklEQkNhbGxiYWNrc0ltcGw6OldlYklEQkNhbGxiYWNrc0ltcGwoUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICA6IG1fY2FsbGJhY2tzKGNhbGxiYWNr
cykKICAgICAsIG1fZGlkQ3JlYXRlRGF0YWJhc2VQcm94eShmYWxzZSkKKyAgICAsIG1fZGlkQ29t
cGxldGUoZmFsc2UpCiB7CiB9CiAKIFdlYklEQkNhbGxiYWNrc0ltcGw6On5XZWJJREJDYWxsYmFj
a3NJbXBsKCkKIHsKKyAgICAvLyBUaGlzIGNsZWFucyB1cCB0aGUgcmVxdWVzdCdzIElQQyBpZC4K
KyAgICBpZiAoIW1fZGlkQ29tcGxldGUpCisgICAgICAgIG1fY2FsbGJhY2tzLT5vbkVycm9yKFdl
YklEQkRhdGFiYXNlRXJyb3IoV2ViSURCRGF0YWJhc2VFeGNlcHRpb25BYm9ydEVycm9yLCBXZWJT
dHJpbmcoKSkpOwogfQogCiB2b2lkIFdlYklEQkNhbGxiYWNrc0ltcGw6Om9uRXJyb3IoY29uc3Qg
V2ViSURCRGF0YWJhc2VFcnJvciYgZXJyb3IpCiB7CisgICAgbV9kaWRDb21wbGV0ZSA9IHRydWU7
CiAgICAgbV9jYWxsYmFja3MtPm9uRXJyb3IoZXJyb3IpOwogfQogCiB2b2lkIFdlYklEQkNhbGxi
YWNrc0ltcGw6Om9uU3VjY2Vzcyhjb25zdCBXZWJET01TdHJpbmdMaXN0JiBkb21TdHJpbmdMaXN0
KQogeworICAgIG1fZGlkQ29tcGxldGUgPSB0cnVlOwogICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nl
c3MoZG9tU3RyaW5nTGlzdCk7CiB9CiAKIHZvaWQgV2ViSURCQ2FsbGJhY2tzSW1wbDo6b25TdWNj
ZXNzKFdlYklEQkN1cnNvciogY3Vyc29yLCBjb25zdCBXZWJJREJLZXkmIGtleSwgY29uc3QgV2Vi
SURCS2V5JiBwcmltYXJ5S2V5LCBjb25zdCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmIHZhbHVl
KQogeworICAgIG1fZGlkQ29tcGxldGUgPSB0cnVlOwogICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nl
c3MoSURCQ3Vyc29yQmFja2VuZFByb3h5OjpjcmVhdGUoYWRvcHRQdHIoY3Vyc29yKSksIGtleSwg
cHJpbWFyeUtleSwgdmFsdWUpOwogfQogCiB2b2lkIFdlYklEQkNhbGxiYWNrc0ltcGw6Om9uU3Vj
Y2VzcyhXZWJJREJEYXRhYmFzZSogd2ViS2l0SW5zdGFuY2UpCiB7CisgICAgbV9kaWRDb21wbGV0
ZSA9IHRydWU7CiAgICAgaWYgKG1fZGlkQ3JlYXRlRGF0YWJhc2VQcm94eSkgewogICAgICAgICBt
X2NhbGxiYWNrcy0+b25TdWNjZXNzKElEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpjcmVhdGUoYWRv
cHRQdHIoc3RhdGljX2Nhc3Q8V2ViSURCRGF0YWJhc2UqPigwKSkpKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtODMsMzEgKzkyLDM3IEBAIHZvaWQgV2ViSURCQ2FsbGJhY2tzSW1wbDo6b25TdWNjZXNz
KFdlYklEQkRhdGFiYXNlKiB3ZWJLaXRJbnN0YW5jZSkKIAogdm9pZCBXZWJJREJDYWxsYmFja3NJ
bXBsOjpvblN1Y2Nlc3MoY29uc3QgV2ViSURCS2V5JiBrZXkpCiB7CisgICAgbV9kaWRDb21wbGV0
ZSA9IHRydWU7CiAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhrZXkpOwogfQogCiB2b2lkIFdl
YklEQkNhbGxiYWNrc0ltcGw6Om9uU3VjY2Vzcyhjb25zdCBXZWJTZXJpYWxpemVkU2NyaXB0VmFs
dWUmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkKIHsKKyAgICBtX2RpZENvbXBsZXRlID0gdHJ1ZTsK
ICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk7CiB9CiAK
IHZvaWQgV2ViSURCQ2FsbGJhY2tzSW1wbDo6b25TdWNjZXNzKGNvbnN0IFdlYlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSYgc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBjb25zdCBXZWJJREJLZXkmIGtleSwg
Y29uc3QgV2ViSURCS2V5UGF0aCYga2V5UGF0aCkKIHsKKyAgICBtX2RpZENvbXBsZXRlID0gdHJ1
ZTsKICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwga2V5
LCBrZXlQYXRoKTsKIH0KIAogdm9pZCBXZWJJREJDYWxsYmFja3NJbXBsOjpvblN1Y2Nlc3MobG9u
ZyBsb25nIHZhbHVlKQogeworICAgIG1fZGlkQ29tcGxldGUgPSB0cnVlOwogICAgIG1fY2FsbGJh
Y2tzLT5vblN1Y2Nlc3ModmFsdWUpOwogfQogCiB2b2lkIFdlYklEQkNhbGxiYWNrc0ltcGw6Om9u
U3VjY2VzcygpCiB7CisgICAgbV9kaWRDb21wbGV0ZSA9IHRydWU7CiAgICAgbV9jYWxsYmFja3Mt
Pm9uU3VjY2VzcygpOwogfQogCiB2b2lkIFdlYklEQkNhbGxiYWNrc0ltcGw6Om9uU3VjY2Vzcyhj
b25zdCBXZWJJREJLZXkmIGtleSwgY29uc3QgV2ViSURCS2V5JiBwcmltYXJ5S2V5LCBjb25zdCBX
ZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmIHZhbHVlKQogeworICAgIG1fZGlkQ29tcGxldGUgPSB0
cnVlOwogICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3Moa2V5LCBwcmltYXJ5S2V5LCB2YWx1ZSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxi
YWNrc0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0lt
cGwuaAppbmRleCA4ZjhjMDJhYWEwMjhjZmMzOWJlOTIxYWJjMGQ2YjdkYTNmZDUzMjZmLi45Mjg1
ZjQwZWJlZGQ0OWYwNmZmYzU2ZDhhZmZiMzE3NWIxMjc3MWJiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5oCkBAIC01OCw2ICs1OCw3IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4gbV9j
YWxsYmFja3M7CiAgICAgYm9vbCBtX2RpZENyZWF0ZURhdGFiYXNlUHJveHk7CisgICAgYm9vbCBt
X2RpZENvbXBsZXRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177497</attachid>
            <date>2012-12-04 09:02:16 -0800</date>
            <delta_ts>2012-12-06 12:06:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103536-20121204085941.patch</filename>
            <type>text/plain</type>
            <size>30680</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NDM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjg0YjBmY2RhODlmN2U5
ZDUyZGRhNzRkZmRjYTQxMzhkNjJmNzhmYi4uMGEyZjg0OGM1MzllZDU1YmRmNDczOGJiZjBiZmMx
NGIzNmE2ZmQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTEyLTAzICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBNYWtl
IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnNjaGVkdWxlVGFzaydzIHJldHVybiB0eXBlIHZv
aWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzUz
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUg
cmVzcG9uc2liaWxpdHkgZm9yIGZpcmluZyBhYm9ydCBlcnJvcnMgZnJvbSByZXF1ZXN0cyB0aGF0
IGFycml2ZSBvbiB0aGUKKyAgICAgICAgYmFjay1lbmQgYWZ0ZXIgYW4gYXN5bmNocm9ub3VzIHRy
YW5zYWN0aW9uIGFib3J0IG91dCBvZiBXZWJDb3JlLCBzaW5jZSB0aGUKKyAgICAgICAgZnJvbnQt
ZW5kIHRha2VzIGNhcmUgb2YgdGhpcyBhcyBmYXIgYXMgc2NyaXB0IGlzIGNvbmNlcm5lZC4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMgLSBqdXN0IGEgcmVmYWN0b3IuCisKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y29udGludWVGdW5jdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpJREJDdXJzb3JCYWNrZW5kSW1wbDo6YWR2YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJDdXJzb3JCYWNrZW5kSW1wbDo6cHJlZmV0Y2hDb250aW51ZSk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpydW5JbnRWZXJzaW9uQ2hhbmdl
VHJhbnNhY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2Vu
ZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW1wbDo6b3BlbkN1
cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleEJhY2tlbmRJbXBsOjpvcGVuS2V5Q3Vy
c29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEltcGw6OmNvdW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEltcGw6OmdldCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJJbmRleEJhY2tlbmRJbXBsOjpnZXRLZXkpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9i
amVjdFN0b3JlQmFja2VuZEltcGw6OnB1dCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnNldEluZGV4ZXNSZWFkeSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVGdW5jdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjbGVhcik6
CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRl
eCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVJ
bmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpvcGVu
Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNv
dW50KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnNj
aGVkdWxlVGFzayk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1w
bDo6c2NoZWR1bGVUYXNrKToKKyAgICAgICAgKElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwpOgor
CiAyMDEyLTEyLTAzICBGbG9yaW4gTWFsaXRhICA8Zm1hbGl0YUBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgW1NraWFdIERlZmVycmVkIFNrQ2FudmFzIHNhdmUoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwppbmRleCBlYjI1MTUwZGY4N2JmMTc2YTZmYjQyYWI0ODEwNDYyZWYyYjgwZmFkLi42NjZk
OTVjZjdkODcxMGUxNDA4ODExMThhOTNlM2ExMjM3MjA1M2YzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTEyLTAzICBKb3NodWEgQmVsbCAgPGpzYmVs
bEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBNYWtlIElEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGw6OnNjaGVkdWxlVGFzaydzIHJldHVybiB0eXBlIHZvaWQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzUzNgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRyYWNrIHdoZXRoZXIgSURCQ2Fs
bGJhY2tzIGhhcyBmaXJlZCBiZWZvcmUgYmVpbmcgZGVzdHJ1Y3RlZC4gSWYgbm90IGl0IHByb2Jh
Ymx5CisgICAgICAgIGNhbWUgaW4gYWZ0ZXIgYSB0cmFuc2FjdGlvbiBoYWQgYXN5bmNocm9ub3Vz
bHkgYWJvcnRlZDsgZmlyZSBhbiBhYm9ydCBlcnJvciB3aGljaAorICAgICAgICB3aWxsIGJlIGln
bm9yZWQgb24gdGhlIGZyb250LWVuZCBidXQgd2lsbCBjbGVhbiB1cCBsaW5nZXJpbmcgSVBDIHRy
YWNraW5nLgorCisgICAgICAgICogcHVibGljL1dlYklEQkRhdGFiYXNlRXhjZXB0aW9uLmg6Cisg
ICAgICAgICogc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwOgorICAgICAgICAqIHNyYy9JREJD
YWxsYmFja3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OklEQkNhbGxiYWNrc1Byb3h5OjpJ
REJDYWxsYmFja3NQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OklEQkNhbGxiYWNrc1Byb3h5Ojp+
SURCQ2FsbGJhY2tzUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpJREJDYWxsYmFja3NQcm94eTo6
b25FcnJvcik6CisgICAgICAgIChXZWJLaXQ6OklEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3Mp
OgorICAgICAgICAqIHNyYy9JREJDYWxsYmFja3NQcm94eS5oOgorICAgICAgICAoSURCQ2FsbGJh
Y2tzUHJveHkpOgorCiAyMDEyLTEyLTAzICBFdWdlbmUgS2x5dWNobmlrb3YgIDxldXN0YXNAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IE1ha2UgbWFpbi10aHJlYWQgbW9u
aXRvcmluZyBnbyB0aHJvdWdoIEluc3BlY3RvckNvbnRyb2xsZXIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcApp
bmRleCA4NjRlOWZhZGViM2ZlZTYxYzc0NTg2OWE2YzViNDdiOGJjNDQyYzFjLi4xZGExODIxNWY4
MTM2ODZmOTRlYWJiMWE0MTJlZTFmYWIwNThhY2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwCkBAIC05
OCwxNyArOTgsMTggQEAgdm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y29udGludWVGdW5jdGlv
bihQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPEkKIHsKICAgICBJREJfVFJBQ0Uo
IklEQkN1cnNvckJhY2tlbmRJbXBsOjpjb250aW51ZSIpOwogICAgIFJlZlB0cjxJREJDYWxsYmFj
a3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKLSAgICBpZiAoIW1fdHJhbnNhY3Rpb24tPnNj
aGVkdWxlVGFzayhtX3Rhc2tUeXBlLCBDdXJzb3JJdGVyYXRpb25PcGVyYXRpb246OmNyZWF0ZSh0
aGlzLCBrZXksIGNhbGxiYWNrcykpKQotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0
YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpBYm9ydEVycm9yKSk7Cisg
ICAgaWYgKG1fdHJhbnNhY3Rpb24tPmlzRmluaXNoZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAg
IG1fdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhtX3Rhc2tUeXBlLCBDdXJzb3JJdGVyYXRpb25P
cGVyYXRpb246OmNyZWF0ZSh0aGlzLCBrZXksIGNhbGxiYWNrcykpOwogfQogCiB2b2lkIElEQkN1
cnNvckJhY2tlbmRJbXBsOjphZHZhbmNlKHVuc2lnbmVkIGxvbmcgY291bnQsIFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIEV4Y2VwdGlvbkNvZGUmKQogewogICAgIElEQl9U
UkFDRSgiSURCQ3Vyc29yQmFja2VuZEltcGw6OmFkdmFuY2UiKTsKICAgICBSZWZQdHI8SURCQ2Fs
bGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7Ci0KLSAgICBpZiAoIW1fdHJhbnNhY3Rp
b24tPnNjaGVkdWxlVGFzayhDdXJzb3JBZHZhbmNlT3BlcmF0aW9uOjpjcmVhdGUodGhpcywgY291
bnQsIGNhbGxiYWNrcykpKQotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VF
cnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpBYm9ydEVycm9yKSk7CisgICAgaWYg
KG1fdHJhbnNhY3Rpb24tPmlzRmluaXNoZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fdHJh
bnNhY3Rpb24tPnNjaGVkdWxlVGFzayhDdXJzb3JBZHZhbmNlT3BlcmF0aW9uOjpjcmVhdGUodGhp
cywgY291bnQsIGNhbGxiYWNrcykpOwogfQogCiB2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpD
dXJzb3JBZHZhbmNlT3BlcmF0aW9uOjpwZXJmb3JtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQ
YXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiBwcnBDdXJzb3IsIHVuc2lnbmVkIGxvbmcg
Y291bnQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCkBAIC0xNTMsOCArMTU0
LDkgQEAgdm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6cHJlZmV0Y2hDb250aW51ZShpbnQgbnVt
YmVyVG9GZXRjaCwgUGFzc1JlZlB0cjxJREJDYWwKIHsKICAgICBJREJfVFJBQ0UoIklEQkN1cnNv
ckJhY2tlbmRJbXBsOjpwcmVmZXRjaENvbnRpbnVlIik7CiAgICAgUmVmUHRyPElEQkNhbGxiYWNr
cz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOwotICAgIGlmICghbV90cmFuc2FjdGlvbi0+c2No
ZWR1bGVUYXNrKG1fdGFza1R5cGUsIEN1cnNvclByZWZldGNoSXRlcmF0aW9uT3BlcmF0aW9uOjpj
cmVhdGUodGhpcywgbnVtYmVyVG9GZXRjaCwgY2FsbGJhY2tzKSkpCi0gICAgICAgIGNhbGxiYWNr
cy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246
OkFib3J0RXJyb3IpKTsKKyAgICBpZiAobV90cmFuc2FjdGlvbi0+aXNGaW5pc2hlZCgpKQorICAg
ICAgICByZXR1cm47CisgICAgbV90cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKG1fdGFza1R5cGUs
IEN1cnNvclByZWZldGNoSXRlcmF0aW9uT3BlcmF0aW9uOjpjcmVhdGUodGhpcywgbnVtYmVyVG9G
ZXRjaCwgY2FsbGJhY2tzKSk7CiB9CiAKIHZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OkN1cnNv
clByZWZldGNoSXRlcmF0aW9uT3BlcmF0aW9uOjpwZXJmb3JtKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiBwcnBDdXJzb3IsIGludCBudW1i
ZXJUb0ZldGNoLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1w
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tl
bmRJbXBsLmNwcAppbmRleCA0NjM4ODc3NjRiNTdkZTM2ZDVkOWQxN2JkYzNkZjk0OGY0YWM1OTVk
Li4yMWQ3YjhlODkyMTMyODRhYjU3OWNlYmMyY2M0ODIwZTVmZTUxYWQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tl
bmRJbXBsLmNwcApAQCAtMjI0LDEwICsyMjQsMTEgQEAgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbnRlcmZhY2U+IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZU9iamVjdFMK
ICAgICBBU1NFUlQoaWQgPiBtX21ldGFkYXRhLm1heE9iamVjdFN0b3JlSWQpOwogICAgIG1fbWV0
YWRhdGEubWF4T2JqZWN0U3RvcmVJZCA9IGlkOwogCi0gICAgaWYgKCF0cmFuc2FjdGlvbi0+c2No
ZWR1bGVUYXNrKENyZWF0ZU9iamVjdFN0b3JlT3BlcmF0aW9uOjpjcmVhdGUodGhpcywgb2JqZWN0
U3RvcmUsIHRyYW5zYWN0aW9uKSwgQ3JlYXRlT2JqZWN0U3RvcmVBYm9ydE9wZXJhdGlvbjo6Y3Jl
YXRlKHRoaXMsIG9iamVjdFN0b3JlKSkpIHsKKyAgICBpZiAodHJhbnNhY3Rpb24tPmlzRmluaXNo
ZWQoKSkgewogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUcmFuc2FjdGlvbklu
YWN0aXZlRXJyb3I7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KKyAgICB0cmFuc2FjdGlvbi0+
c2NoZWR1bGVUYXNrKENyZWF0ZU9iamVjdFN0b3JlT3BlcmF0aW9uOjpjcmVhdGUodGhpcywgb2Jq
ZWN0U3RvcmUsIHRyYW5zYWN0aW9uKSwgQ3JlYXRlT2JqZWN0U3RvcmVBYm9ydE9wZXJhdGlvbjo6
Y3JlYXRlKHRoaXMsIG9iamVjdFN0b3JlKSk7CiAKICAgICBtX29iamVjdFN0b3Jlcy5zZXQoaWQs
IG9iamVjdFN0b3JlKTsKICAgICByZXR1cm4gb2JqZWN0U3RvcmUucmVsZWFzZSgpOwpAQCAtMjU1
LDEwICsyNTYsMTEgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpkZWxldGVPYmplY3RT
dG9yZShpbnQ2NF90IGlkLCBJREJUcmFuc2FjdGlvbkJhY2tlbmQKICAgICBSZWZQdHI8SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsOjpmcm9tKHRyYW5zYWN0aW9uUHRyKTsKICAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUo
KSA9PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpOwogCi0gICAgaWYgKCF0cmFuc2Fj
dGlvbi0+c2NoZWR1bGVUYXNrKERlbGV0ZU9iamVjdFN0b3JlT3BlcmF0aW9uOjpjcmVhdGUodGhp
cywgb2JqZWN0U3RvcmUsIHRyYW5zYWN0aW9uKSwgRGVsZXRlT2JqZWN0U3RvcmVBYm9ydE9wZXJh
dGlvbjo6Y3JlYXRlKHRoaXMsIG9iamVjdFN0b3JlKSkpIHsKKyAgICBpZiAodHJhbnNhY3Rpb24t
PmlzRmluaXNoZWQoKSkgewogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUcmFu
c2FjdGlvbkluYWN0aXZlRXJyb3I7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgdHJhbnNh
Y3Rpb24tPnNjaGVkdWxlVGFzayhEZWxldGVPYmplY3RTdG9yZU9wZXJhdGlvbjo6Y3JlYXRlKHRo
aXMsIG9iamVjdFN0b3JlLCB0cmFuc2FjdGlvbiksIERlbGV0ZU9iamVjdFN0b3JlQWJvcnRPcGVy
YXRpb246OmNyZWF0ZSh0aGlzLCBvYmplY3RTdG9yZSkpOwogICAgIG1fb2JqZWN0U3RvcmVzLnJl
bW92ZShpZCk7CiB9CiAKQEAgLTQzOCwxMCArNDQwLDkgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjpydW5JbnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oaW50NjRfdCByZXF1ZXN0ZWRW
ZXIKICAgICAvLyBGSVhNRTogVGhlIHRyYW5zYWN0aW9uSWQgbmVlZHMgdG8gYmUgcGlwZWQgaW4g
dGhyb3VnaCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6Om9wZW4oKS4KICAgICBSZWZQdHI8
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbkludGVyZmFjZSA9IGNy
ZWF0ZVRyYW5zYWN0aW9uKDAsIG9iamVjdFN0b3JlSWRzLCBJREJUcmFuc2FjdGlvbjo6VkVSU0lP
Tl9DSEFOR0UpOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2Fj
dGlvbiA9IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmZyb20odHJhbnNhY3Rpb25JbnRlcmZh
Y2UuZ2V0KCkpOworICAgIEFTU0VSVCghdHJhbnNhY3Rpb24tPmlzRmluaXNoZWQoKSk7CiAKLSAg
ICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soVmVyc2lvbkNoYW5nZU9wZXJhdGlvbjo6
Y3JlYXRlKHRoaXMsIHJlcXVlc3RlZFZlcnNpb24sIGNhbGxiYWNrcywgZGF0YWJhc2VDYWxsYmFj
a3MsIHRyYW5zYWN0aW9uKSwgVmVyc2lvbkNoYW5nZUFib3J0T3BlcmF0aW9uOjpjcmVhdGUodGhp
cywgbV9tZXRhZGF0YS52ZXJzaW9uLCBtX21ldGFkYXRhLmludFZlcnNpb24pKSkgewotICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9CisgICAgdHJhbnNhY3Rpb24tPnNjaGVkdWxl
VGFzayhWZXJzaW9uQ2hhbmdlT3BlcmF0aW9uOjpjcmVhdGUodGhpcywgcmVxdWVzdGVkVmVyc2lv
biwgY2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcywgdHJhbnNhY3Rpb24pLCBWZXJzaW9uQ2hh
bmdlQWJvcnRPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBtX21ldGFkYXRhLnZlcnNpb24sIG1fbWV0
YWRhdGEuaW50VmVyc2lvbikpOwogICAgIEFTU0VSVCghbV9wZW5kaW5nU2Vjb25kSGFsZk9wZW5X
aXRoVmVyc2lvbik7CiAgICAgbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5hZGQoZGF0YWJhc2VDYWxs
YmFja3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCSW5kZXhCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJJbmRleEJhY2tlbmRJbXBsLmNwcAppbmRleCA5YWQ0YjhkNmUzNmJhZjM0ZTZlM2Q5NjUx
YTkxMWI3NTE3MmE4MjllLi5jNzkxMzcxOTVkNjYzMzMyNjllOGU1MDk0ZjE3NjlkYmM0ODZlM2Qy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJh
Y2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJ
bmRleEJhY2tlbmRJbXBsLmNwcApAQCAtMTI5LDggKzEyOSw5IEBAIHZvaWQgSURCSW5kZXhCYWNr
ZW5kSW1wbDo6b3BlbkN1cnNvcihQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgdW5z
aWduZWQKICAgICBJREJfVFJBQ0UoIklEQkluZGV4QmFja2VuZEltcGw6Om9wZW5DdXJzb3IiKTsK
ICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7CiAgICAg
UmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uID0gSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbDo6ZnJvbSh0cmFuc2FjdGlvblB0cik7Ci0gICAgaWYgKCF0cmFuc2Fj
dGlvbi0+c2NoZWR1bGVUYXNrKE9wZW5JbmRleEN1cnNvck9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMs
IGtleVJhbmdlLCBkaXJlY3Rpb24sIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OkluZGV4Q3Vy
c29yLCBjYWxsYmFja3MsIHRyYW5zYWN0aW9uKSkpCi0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJv
cihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkFib3J0RXJy
b3IpKTsKKyAgICBpZiAodHJhbnNhY3Rpb24tPmlzRmluaXNoZWQoKSkKKyAgICAgICAgcmV0dXJu
OworICAgIHRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soT3BlbkluZGV4Q3Vyc29yT3BlcmF0aW9u
OjpjcmVhdGUodGhpcywga2V5UmFuZ2UsIGRpcmVjdGlvbiwgSURCQ3Vyc29yQmFja2VuZEludGVy
ZmFjZTo6SW5kZXhDdXJzb3IsIGNhbGxiYWNrcywgdHJhbnNhY3Rpb24pKTsKIH0KIAogdm9pZCBJ
REJJbmRleEJhY2tlbmRJbXBsOjpvcGVuS2V5Q3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+
IGtleVJhbmdlLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiBwcnBDYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNh
Y3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmKQpAQCAtMTM4LDggKzEzOSw5IEBAIHZvaWQgSURCSW5k
ZXhCYWNrZW5kSW1wbDo6b3BlbktleUN1cnNvcihQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlS
YW5nZSwgdW5zaWduCiAgICAgSURCX1RSQUNFKCJJREJJbmRleEJhY2tlbmRJbXBsOjpvcGVuS2V5
Q3Vyc29yIik7CiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJh
Y2tzOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9
IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmZyb20odHJhbnNhY3Rpb25QdHIpOwotICAgIGlm
ICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhPcGVuSW5kZXhDdXJzb3JPcGVyYXRpb246OmNy
ZWF0ZSh0aGlzLCBrZXlSYW5nZSwgZGlyZWN0aW9uLCBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNl
OjpJbmRleEtleUN1cnNvciwgY2FsbGJhY2tzLCB0cmFuc2FjdGlvbikpKQotICAgICAgICBjYWxs
YmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpBYm9ydEVycm9yKSk7CisgICAgaWYgKHRyYW5zYWN0aW9uLT5pc0ZpbmlzaGVkKCkpCisg
ICAgICAgIHJldHVybjsKKyAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKE9wZW5JbmRleEN1
cnNvck9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIGtleVJhbmdlLCBkaXJlY3Rpb24sIElEQkN1cnNv
ckJhY2tlbmRJbnRlcmZhY2U6OkluZGV4S2V5Q3Vyc29yLCBjYWxsYmFja3MsIHRyYW5zYWN0aW9u
KSk7CiB9CiAKIHZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6SW5kZXhDb3VudE9wZXJhdGlvbjo6
cGVyZm9ybShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tl
bmRJbXBsPiBpbmRleCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbD4gdHJhbnNhY3Rpb24pCkBAIC0xNjUsOCArMTY3LDkgQEAgdm9pZCBJREJJbmRleEJhY2tl
bmRJbXBsOjpjb3VudChQYXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwgUGFzc1JlZlB0cjxJ
REJDYWwKICAgICBJREJfVFJBQ0UoIklEQkluZGV4QmFja2VuZEltcGw6OmNvdW50Iik7CiAgICAg
UmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOwogICAgIFJlZlB0
cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGw6OmZyb20odHJhbnNhY3Rpb25QdHIpOwotICAgIGlmICghdHJhbnNhY3Rpb24t
PnNjaGVkdWxlVGFzayhJbmRleENvdW50T3BlcmF0aW9uOjpjcmVhdGUodGhpcywgcmFuZ2UsIGNh
bGxiYWNrcywgdHJhbnNhY3Rpb24pKSkKLSAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRh
dGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6QWJvcnRFcnJvcikpOwor
ICAgIGlmICh0cmFuc2FjdGlvbi0+aXNGaW5pc2hlZCgpKQorICAgICAgICByZXR1cm47CisgICAg
dHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhJbmRleENvdW50T3BlcmF0aW9uOjpjcmVhdGUodGhp
cywgcmFuZ2UsIGNhbGxiYWNrcywgdHJhbnNhY3Rpb24pKTsKIH0KIAogdm9pZCBJREJJbmRleEJh
Y2tlbmRJbXBsOjpJbmRleFJlZmVyZW5jZWRWYWx1ZVJldHJpZXZhbE9wZXJhdGlvbjo6cGVyZm9y
bShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBs
PiBpbmRleCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1w
bD4gdHJhbnNhY3Rpb24pCkBAIC0yMjksOCArMjMyLDkgQEAgdm9pZCBJREJJbmRleEJhY2tlbmRJ
bXBsOjpnZXQoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIFBhc3NSZWZQdHI8SURC
Q2EKICAgICBJREJfVFJBQ0UoIklEQkluZGV4QmFja2VuZEltcGw6OmdldCIpOwogICAgIFJlZlB0
cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKICAgICBSZWZQdHI8SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsOjpmcm9tKHRyYW5zYWN0aW9uUHRyKTsKLSAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hl
ZHVsZVRhc2soSW5kZXhSZWZlcmVuY2VkVmFsdWVSZXRyaWV2YWxPcGVyYXRpb246OmNyZWF0ZSh0
aGlzLCBrZXlSYW5nZSwgY2FsbGJhY2tzLCB0cmFuc2FjdGlvbikpKQotICAgICAgICBjYWxsYmFj
a3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpBYm9ydEVycm9yKSk7CisgICAgaWYgKHRyYW5zYWN0aW9uLT5pc0ZpbmlzaGVkKCkpCisgICAg
ICAgIHJldHVybjsKKyAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKEluZGV4UmVmZXJlbmNl
ZFZhbHVlUmV0cmlldmFsT3BlcmF0aW9uOjpjcmVhdGUodGhpcywga2V5UmFuZ2UsIGNhbGxiYWNr
cywgdHJhbnNhY3Rpb24pKTsKIH0KIAogdm9pZCBJREJJbmRleEJhY2tlbmRJbXBsOjpnZXRLZXko
UGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiBwcnBDYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rp
b25QdHIsIEV4Y2VwdGlvbkNvZGUmKQpAQCAtMjM4LDggKzI0Miw5IEBAIHZvaWQgSURCSW5kZXhC
YWNrZW5kSW1wbDo6Z2V0S2V5KFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBQYXNz
UmVmUHRyPElECiAgICAgSURCX1RSQUNFKCJJREJJbmRleEJhY2tlbmRJbXBsOjpnZXRLZXkiKTsK
ICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7CiAgICAg
UmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uID0gSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbDo6ZnJvbSh0cmFuc2FjdGlvblB0cik7Ci0gICAgaWYgKCF0cmFuc2Fj
dGlvbi0+c2NoZWR1bGVUYXNrKEluZGV4VmFsdWVSZXRyaWV2YWxPcGVyYXRpb246OmNyZWF0ZSh0
aGlzLCBrZXlSYW5nZSwgY2FsbGJhY2tzLCB0cmFuc2FjdGlvbikpKQotICAgICAgICBjYWxsYmFj
a3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpBYm9ydEVycm9yKSk7CisgICAgaWYgKHRyYW5zYWN0aW9uLT5pc0ZpbmlzaGVkKCkpCisgICAg
ICAgIHJldHVybjsKKyAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKEluZGV4VmFsdWVSZXRy
aWV2YWxPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBrZXlSYW5nZSwgY2FsbGJhY2tzLCB0cmFuc2Fj
dGlvbikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZElt
cGwuY3BwCmluZGV4IGNhOGFkNjE3MmRlOTgxNWI1NmVkZDMzMWE5YTczNTZlY2YxOThkYTYuLjk4
YjQ1ZjQ1NjNmODJjOGMwMWJlYWVmZmNhODc1NTg4MDE4YzIwN2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGwuY3BwCkBAIC0xODAsOCArMTgwLDkgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsOjpnZXQoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIFBhc3NSZWZQdHIK
ICAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmdldCIpOwogICAgIFJl
ZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKICAgICBSZWZQdHI8
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsOjpmcm9tKHRyYW5zYWN0aW9uUHRyKTsKLSAgICBpZiAoIXRyYW5zYWN0aW9uLT5z
Y2hlZHVsZVRhc2soT2JqZWN0U3RvcmVSZXRyaWV2YWxPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBr
ZXlSYW5nZSwgY2FsbGJhY2tzLCB0cmFuc2FjdGlvbikpKQotICAgICAgICBjYWxsYmFja3MtPm9u
RXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpBYm9y
dEVycm9yKSk7CisgICAgaWYgKHRyYW5zYWN0aW9uLT5pc0ZpbmlzaGVkKCkpCisgICAgICAgIHJl
dHVybjsKKyAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKE9iamVjdFN0b3JlUmV0cmlldmFs
T3BlcmF0aW9uOjpjcmVhdGUodGhpcywga2V5UmFuZ2UsIGNhbGxiYWNrcywgdHJhbnNhY3Rpb24p
KTsKIH0KIAogdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpPYmplY3RTdG9yZVJldHJp
ZXZhbE9wZXJhdGlvbjo6cGVyZm9ybShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0
cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSwgUGFzc1JlZlB0cjxJREJL
ZXlSYW5nZT4ga2V5UmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBh
c3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24pCkBAIC0yMjAs
MTQgKzIyMSwxNSBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dChQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIFBhcwogICAgIFJlZlB0cjxJREJDYWxs
YmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpm
cm9tKHRyYW5zYWN0aW9uUHRyKTsKICAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSAhPSBJ
REJUcmFuc2FjdGlvbjo6UkVBRF9PTkxZKTsKKyAgICBpZiAodHJhbnNhY3Rpb24tPmlzRmluaXNo
ZWQoKSkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgT3duUHRyPFZlY3RvcjxpbnQ2NF90PiA+IG5l
d0luZGV4SWRzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxpbnQ2NF90PihpbmRleElkcykpOwogICAg
IE93blB0cjxWZWN0b3I8SW5kZXhLZXlzPiA+IG5ld0luZGV4S2V5cyA9IGFkb3B0UHRyKG5ldyBW
ZWN0b3I8SW5kZXhLZXlzPihpbmRleEtleXMpKTsKIAogICAgIEFTU0VSVChhdXRvSW5jcmVtZW50
KCkgfHwga2V5LmdldCgpKTsKIAotICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhP
YmplY3RTdG9yZVN0b3JhZ2VPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCB2YWx1ZSwga2V5LCBwdXRN
b2RlLCBjYWxsYmFja3MsIHRyYW5zYWN0aW9uLCBuZXdJbmRleElkcy5yZWxlYXNlKCksIG5ld0lu
ZGV4S2V5cy5yZWxlYXNlKCkpKSkKLSAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFi
YXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6QWJvcnRFcnJvcikpOworICAg
IHRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soT2JqZWN0U3RvcmVTdG9yYWdlT3BlcmF0aW9uOjpj
cmVhdGUodGhpcywgdmFsdWUsIGtleSwgcHV0TW9kZSwgY2FsbGJhY2tzLCB0cmFuc2FjdGlvbiwg
bmV3SW5kZXhJZHMucmVsZWFzZSgpLCBuZXdJbmRleEtleXMucmVsZWFzZSgpKSk7CiB9CiAKIG5h
bWVzcGFjZSB7CkBAIC0zNzAsOCArMzcyLDcgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsOjpzZXRJbmRleGVzUmVhZHkoY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElkcywKICAg
ICBpZiAodHJhbnNhY3Rpb24tPmlzRmluaXNoZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
aWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZTo6UHJlZW1wdGl2ZVRhc2ssIE9iamVjdFN0b3JlSW5kZXhlc1JlYWR5T3BlcmF0aW9uOjpj
cmVhdGUodGhpcywgbmV3SW5kZXhJZHMucmVsZWFzZSgpLCB0cmFuc2FjdGlvbikpKQotICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZTo6UHJlZW1wdGl2ZVRhc2ssIE9iamVjdFN0b3Jl
SW5kZXhlc1JlYWR5T3BlcmF0aW9uOjpjcmVhdGUodGhpcywgbmV3SW5kZXhJZHMucmVsZWFzZSgp
LCB0cmFuc2FjdGlvbikpOwogfQogCiB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Ok9i
amVjdFN0b3JlSW5kZXhlc1JlYWR5T3BlcmF0aW9uOjpwZXJmb3JtKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3Jl
LCBQYXNzT3duUHRyPFZlY3RvcjxpbnQ2NF90PiA+IHBvcEluZGV4SWRzLCBQYXNzUmVmUHRyPElE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uKQpAQCAtNDU0LDEwICs0NTUsMTEg
QEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVGdW5jdGlvbihQYXNzUmVm
UHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwKIAogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmZyb20o
dHJhbnNhY3Rpb25QdHIpOwogICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpICE9IElEQlRy
YW5zYWN0aW9uOjpSRUFEX09OTFkpOworICAgIGlmICh0cmFuc2FjdGlvbi0+aXNGaW5pc2hlZCgp
KQorICAgICAgICByZXR1cm47CiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzID0g
cHJwQ2FsbGJhY2tzOwogCi0gICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKE9iamVj
dFN0b3JlRGVsZXRpb25PcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBrZXlSYW5nZSwgY2FsbGJhY2tz
LCB0cmFuc2FjdGlvbikpKQotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VF
cnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpBYm9ydEVycm9yKSk7CisgICAgdHJh
bnNhY3Rpb24tPnNjaGVkdWxlVGFzayhPYmplY3RTdG9yZURlbGV0aW9uT3BlcmF0aW9uOjpjcmVh
dGUodGhpcywga2V5UmFuZ2UsIGNhbGxiYWNrcywgdHJhbnNhY3Rpb24pKTsKIH0KIAogdm9pZCBJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpPYmplY3RTdG9yZURlbGV0aW9uT3BlcmF0aW9uOjpw
ZXJmb3JtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGw+IG9iamVjdFN0b3JlLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5n
ZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbikKQEAgLTQ4MiwxMCArNDg0LDExIEBAIHZv
aWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y2xlYXIoUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+IHBycENhbGxiYWNrcywgSURCCiAKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpmcm9tKHRyYW5z
YWN0aW9uUHRyKTsKICAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSAhPSBJREJUcmFuc2Fj
dGlvbjo6UkVBRF9PTkxZKTsKKyAgICBpZiAodHJhbnNhY3Rpb24tPmlzRmluaXNoZWQoKSkKKyAg
ICAgICAgcmV0dXJuOwogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENh
bGxiYWNrczsKIAotICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhPYmplY3RTdG9y
ZUNsZWFyT3BlcmF0aW9uOjpjcmVhdGUodGhpcywgY2FsbGJhY2tzLCB0cmFuc2FjdGlvbikpKQot
ICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRh
dGFiYXNlRXhjZXB0aW9uOjpBYm9ydEVycm9yKSk7CisgICAgdHJhbnNhY3Rpb24tPnNjaGVkdWxl
VGFzayhPYmplY3RTdG9yZUNsZWFyT3BlcmF0aW9uOjpjcmVhdGUodGhpcywgY2FsbGJhY2tzLCB0
cmFuc2FjdGlvbikpOwogfQogCiB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Ok9iamVj
dFN0b3JlQ2xlYXJPcGVyYXRpb246OnBlcmZvcm0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBh
c3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUsIFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW1wbD4gdHJhbnNhY3Rpb24pCkBAIC01MDcsMTAgKzUxMCwxMSBAQCBQYXNzUmVmUHRyPElE
QkluZGV4QmFja2VuZEludGVyZmFjZT4gSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y3JlYXRl
SW5kZXgoaW50NgogICAgIEFTU0VSVChpZCA+IG1fbWV0YWRhdGEubWF4SW5kZXhJZCk7CiAgICAg
bV9tZXRhZGF0YS5tYXhJbmRleElkID0gaWQ7CiAKLSAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hl
ZHVsZVRhc2soQ3JlYXRlSW5kZXhPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBpbmRleCwgdHJhbnNh
Y3Rpb24pLCBDcmVhdGVJbmRleEFib3J0T3BlcmF0aW9uOjpjcmVhdGUodGhpcywgaW5kZXgpKSkg
eworICAgIGlmICh0cmFuc2FjdGlvbi0+aXNGaW5pc2hlZCgpKSB7CiAgICAgICAgIGVjID0gSURC
RGF0YWJhc2VFeGNlcHRpb246OlRyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcjsKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgfQorICAgIHRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soQ3JlYXRlSW5kZXhP
cGVyYXRpb246OmNyZWF0ZSh0aGlzLCBpbmRleCwgdHJhbnNhY3Rpb24pLCBDcmVhdGVJbmRleEFi
b3J0T3BlcmF0aW9uOjpjcmVhdGUodGhpcywgaW5kZXgpKTsKIAogICAgIG1faW5kZXhlcy5zZXQo
aWQsIGluZGV4KTsKICAgICByZXR1cm4gaW5kZXgucmVsZWFzZSgpOwpAQCAtNTM5LDExICs1NDMs
MTEgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVJbmRleChpbnQ2NF90
IGluZGV4SWQsIElEQlRyYW5zYWN0aW9uQmFja2UKICAgICBSZWZQdHI8SURCSW5kZXhCYWNrZW5k
SW1wbD4gaW5kZXggPSBtX2luZGV4ZXMuZ2V0KGluZGV4SWQpOwogICAgIFJlZlB0cjxJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uQmFja2VuZElt
cGw6OmZyb20odHJhbnNhY3Rpb25QdHIpOwogICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgp
ID09IElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRSk7Ci0KLSAgICBpZiAoIXRyYW5zYWN0
aW9uLT5zY2hlZHVsZVRhc2soRGVsZXRlSW5kZXhPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBpbmRl
eCwgdHJhbnNhY3Rpb24pLCBEZWxldGVJbmRleEFib3J0T3BlcmF0aW9uOjpjcmVhdGUodGhpcywg
aW5kZXgpKSkgeworICAgIGlmICh0cmFuc2FjdGlvbi0+aXNGaW5pc2hlZCgpKSB7CiAgICAgICAg
IGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcjsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KKyAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKERlbGV0
ZUluZGV4T3BlcmF0aW9uOjpjcmVhdGUodGhpcywgaW5kZXgsIHRyYW5zYWN0aW9uKSwgRGVsZXRl
SW5kZXhBYm9ydE9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIGluZGV4KSk7CiAgICAgbV9pbmRleGVz
LnJlbW92ZShpbmRleElkKTsKIH0KIApAQCAtNTU4LDkgKzU2Miw5IEBAIHZvaWQgSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbDo6b3BlbkN1cnNvcihQYXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5n
ZSwgSURCQ3VyCiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpvcGVu
Q3Vyc29yIik7CiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJh
Y2tzOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9
IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmZyb20odHJhbnNhY3Rpb25QdHIpOwotICAgIGlm
ICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhPcGVuT2JqZWN0U3RvcmVDdXJzb3JPcGVyYXRp
b246OmNyZWF0ZSh0aGlzLCByYW5nZSwgZGlyZWN0aW9uLCBjYWxsYmFja3MsIHRhc2tUeXBlLCB0
cmFuc2FjdGlvbikpKSB7Ci0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVy
cm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkFib3J0RXJyb3IpKTsKLSAgICB9Cisg
ICAgaWYgKHRyYW5zYWN0aW9uLT5pc0ZpbmlzaGVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICB0
cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKE9wZW5PYmplY3RTdG9yZUN1cnNvck9wZXJhdGlvbjo6
Y3JlYXRlKHRoaXMsIHJhbmdlLCBkaXJlY3Rpb24sIGNhbGxiYWNrcywgdGFza1R5cGUsIHRyYW5z
YWN0aW9uKSk7CiB9CiAKIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6T3Blbk9iamVj
dFN0b3JlQ3Vyc29yT3BlcmF0aW9uOjpwZXJmb3JtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQ
YXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlLCBQYXNzUmVm
UHRyPElEQktleVJhbmdlPiByYW5nZSwgSURCQ3Vyc29yOjpEaXJlY3Rpb24gZGlyZWN0aW9uLCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2U6OlRhc2tUeXBlIHRhc2tUeXBlLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFj
a2VuZEltcGw+IHRyYW5zYWN0aW9uKQpAQCAtNTg4LDggKzU5Miw5IEBAIHZvaWQgSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbDo6Y291bnQoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIFBh
c3NSZWZQdHI8CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjb3Vu
dCIpOwogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsK
ICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpmcm9tKHRyYW5zYWN0aW9uUHRyKTsKLSAgICBpZiAoIXRy
YW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soT2JqZWN0U3RvcmVDb3VudE9wZXJhdGlvbjo6Y3JlYXRl
KHRoaXMsIHJhbmdlLCBjYWxsYmFja3MsIHRyYW5zYWN0aW9uKSkpCi0gICAgICAgIGNhbGxiYWNr
cy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246
OkFib3J0RXJyb3IpKTsKKyAgICBpZiAodHJhbnNhY3Rpb24tPmlzRmluaXNoZWQoKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIHRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soT2JqZWN0U3RvcmVDb3Vu
dE9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIHJhbmdlLCBjYWxsYmFja3MsIHRyYW5zYWN0aW9uKSk7
CiB9CiAKIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6T2JqZWN0U3RvcmVDb3VudE9w
ZXJhdGlvbjo6cGVyZm9ybShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSwgUGFzc1JlZlB0cjxJREJLZXlSYW5n
ZT4gcmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2Vu
ZEltcGwuY3BwCmluZGV4IGM1NDJmZGQ3OTA4OTllZWFiYTE0NDEyNGU4ZTMyZTkzNDNlNzA0ZTAu
LjNhODM1Y2Q1ODdjNTgzMGY5NmQ5OGY4NDlmODMwYTFlOGRhNjM3NTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGwuY3BwCkBAIC03NiwxMCArNzYsOSBAQCBQYXNzUmVmUHRyPElEQk9iamVjdFN0
b3JlQmFja2VuZEludGVyZmFjZT4gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6b2JqZWN0U3Rv
cgogICAgIHJldHVybiBvYmplY3RTdG9yZS5yZWxlYXNlKCk7CiB9CiAKLWJvb2wgSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbDo6c2NoZWR1bGVUYXNrKFRhc2tUeXBlIHR5cGUsIFBhc3NPd25QdHI8
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaywgUGFzc093blB0cjxTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrPiBhYm9ydFRhc2spCit2b2lkIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEltcGw6OnNjaGVkdWxlVGFzayhUYXNrVHlwZSB0eXBlLCBQYXNzT3duUHRyPFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2ssIFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzaz4gYWJvcnRUYXNrKQogewotICAgIGlmIChtX3N0YXRlID09IEZpbmlzaGVkKQotICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgQVNTRVJUKG1fc3RhdGUgIT0gRmluaXNoZWQpOwogCiAg
ICAgaWYgKHR5cGUgPT0gTm9ybWFsVGFzaykKICAgICAgICAgbV90YXNrUXVldWUuYXBwZW5kKHRh
c2spOwpAQCAtOTMsOCArOTIsNiBAQCBib29sIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnNj
aGVkdWxlVGFzayhUYXNrVHlwZSB0eXBlLCBQYXNzT3duUHRyPFNjcmlwdEV4ZQogICAgICAgICBz
dGFydCgpOwogICAgIGVsc2UgaWYgKG1fc3RhdGUgPT0gUnVubmluZyAmJiAhbV90YXNrVGltZXIu
aXNBY3RpdmUoKSkKICAgICAgICAgbV90YXNrVGltZXIuc3RhcnRPbmVTaG90KDApOwotCi0gICAg
cmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6YWJvcnQo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oCmluZGV4IGQyYTk1ODUwNjA4ZGE4OWY5ZDE3NDUzNWYz
YmIxYTI4YzhjYjMyYTkuLjEzNTQwNDIyMGEzYmE5NzdhOWE4ZDNjMGVmMDI1OTk3ZDdhNjU2M2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgKQEAgLTYwLDggKzYwLDggQEAgcHVibGljOgogICAg
IHZvaWQgcnVuKCk7CiAgICAgdW5zaWduZWQgc2hvcnQgbW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bW9kZTsgfQogICAgIGJvb2wgaXNGaW5pc2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0g
RmluaXNoZWQ7IH0KLSAgICBib29sIHNjaGVkdWxlVGFzayhQYXNzT3duUHRyPFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2ssIFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzaz4gYWJvcnRUYXNrID0gbnVsbHB0cikgeyByZXR1cm4gc2NoZWR1bGVUYXNrKE5vcm1h
bFRhc2ssIHRhc2ssIGFib3J0VGFzayk7IH0KLSAgICBib29sIHNjaGVkdWxlVGFzayhUYXNrVHlw
ZSwgUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiwgUGFzc093blB0cjxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiBhYm9ydFRhc2sgPSBudWxscHRyKTsKKyAgICB2
b2lkIHNjaGVkdWxlVGFzayhQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+
IHRhc2ssIFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gYWJvcnRUYXNr
ID0gbnVsbHB0cikgeyBzY2hlZHVsZVRhc2soTm9ybWFsVGFzaywgdGFzaywgYWJvcnRUYXNrKTsg
fQorICAgIHZvaWQgc2NoZWR1bGVUYXNrKFRhc2tUeXBlLCBQYXNzT3duUHRyPFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OlRhc2s+LCBQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRh
c2s+IGFib3J0VGFzayA9IG51bGxwdHIpOwogICAgIHZvaWQgcmVnaXN0ZXJPcGVuQ3Vyc29yKElE
QkN1cnNvckJhY2tlbmRJbXBsKik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyT3BlbkN1cnNvcihJREJD
dXJzb3JCYWNrZW5kSW1wbCopOwogICAgIHZvaWQgYWRkUHJlZW1wdGl2ZUV2ZW50KCkgeyBtX3Bl
bmRpbmdQcmVlbXB0aXZlRXZlbnRzKys7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlRXhjZXB0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZUV4Y2VwdGlvbi5oCmluZGV4IDhjMDBhMGYwMmU1
MGFiNThjNzExZTQwY2VjYmUyM2Q1NDViYWYxOGQuLmYwOWExYWFjYjBhZDkyZTk4YWEzZDEyNDhl
YWFlZWQ4N2I5MGYzNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYklEQkRhdGFiYXNlRXhjZXB0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViSURCRGF0YWJhc2VFeGNlcHRpb24uaApAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogZW51bSBXZWJJREJEYXRhYmFzZUV4Y2VwdGlvbiB7CiAgICAgV2ViSURC
RGF0YWJhc2VFeGNlcHRpb25EYXRhRXJyb3IgPSAxMjAzLAorICAgIFdlYklEQkRhdGFiYXNlRXhj
ZXB0aW9uQWJvcnRFcnJvciA9IDEyMTAsCiAgICAgV2ViSURCRGF0YWJhc2VFeGNlcHRpb25RdW90
YUVycm9yID0gMTIxMiwKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
QXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKaW5kZXggNGQ3YjhiY2MwYjI1NDM0ZTk1MDczNzFjNzE0
YWU0NzAxMjVkMTIxNi4uMmNmNWM3MThmMDYzYWYzZWNmZTc3NmI2Y2MyZGExZWRiZTdiNTI0NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVt
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVt
cy5jcHAKQEAgLTQ3OSwxMCArNDc5LDExIEBAIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0o
V2ViVmlldzo6VXNlckNvbnRlbnRJbmplY3RJblRvcEZyYW1lT25seSwgSW5qZWN0SW5UCiBDT01Q
SUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlZpZXc6OlVzZXJTdHlsZUluamVjdEluRXhpc3Rp
bmdEb2N1bWVudHMsIEluamVjdEluRXhpc3RpbmdEb2N1bWVudHMpOwogQ09NUElMRV9BU1NFUlRf
TUFUQ0hJTkdfRU5VTShXZWJWaWV3OjpVc2VyU3R5bGVJbmplY3RJblN1YnNlcXVlbnREb2N1bWVu
dHMsIEluamVjdEluU3Vic2VxdWVudERvY3VtZW50cyk7CiAKKyNpZiBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViSURCRGF0YWJhc2VFeGNl
cHRpb25EYXRhRXJyb3IsIElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEYXRhRXJyb3IpOworQ09NUElM
RV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJEYXRhYmFzZUV4Y2VwdGlvbkFib3J0RXJyb3Is
IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpBYm9ydEVycm9yKTsKIENPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0oV2ViSURCRGF0YWJhc2VFeGNlcHRpb25RdW90YUVycm9yLCBJREJEYXRhYmFzZUV4
Y2VwdGlvbjo6UXVvdGFFeGNlZWRlZEVycm9yKTsKIAotI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFC
QVNFKQogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJLZXk6OkludmFsaWRUeXBl
LCBJREJLZXk6OkludmFsaWRUeXBlKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2Vi
SURCS2V5OjpBcnJheVR5cGUsIElEQktleTo6QXJyYXlUeXBlKTsKIENPTVBJTEVfQVNTRVJUX01B
VENISU5HX0VOVU0oV2ViSURCS2V5OjpTdHJpbmdUeXBlLCBJREJLZXk6OlN0cmluZ1R5cGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwCmlu
ZGV4IDgzN2NjMzJhNmIwMDAwZGFmOTQ3YjFkZTc1MWU1Njc2MDgyODZkZTEuLmU4YTNjMWRiYjNj
MTA0MGE0YWU0MDZhOGY1NjhhMDYxZDgyNDJhZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNs
dWRlICJXZWJJREJDdXJzb3JJbXBsLmgiCiAjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VDYWxsYmFj
a3MuaCIKICNpbmNsdWRlICJXZWJJREJEYXRhYmFzZUVycm9yLmgiCisjaW5jbHVkZSAiV2ViSURC
RGF0YWJhc2VFeGNlcHRpb24uaCIKICNpbmNsdWRlICJXZWJJREJEYXRhYmFzZUltcGwuaCIKICNp
bmNsdWRlICJXZWJJREJLZXkuaCIKICNpbmNsdWRlICJXZWJJREJUcmFuc2FjdGlvbkltcGwuaCIK
QEAgLTU5LDY2ICs2MCw4MSBAQCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrc1Byb3h5PiBJREJDYWxs
YmFja3NQcm94eTo6Y3JlYXRlKFBhc3NPd25QdHI8V2ViSURCQ2FsbGJhYwogCiBJREJDYWxsYmFj
a3NQcm94eTo6SURCQ2FsbGJhY2tzUHJveHkoUGFzc093blB0cjxXZWJJREJDYWxsYmFja3M+IGNh
bGxiYWNrcykKICAgICA6IG1fY2FsbGJhY2tzKGNhbGxiYWNrcykKKyAgICAsIG1fZGlkQ29tcGxl
dGUoZmFsc2UpCiB7CiB9CiAKIElEQkNhbGxiYWNrc1Byb3h5Ojp+SURCQ2FsbGJhY2tzUHJveHko
KQogeworICAgIC8vIFRoaXMgY2xlYW5zIHVwIHRoZSByZXF1ZXN0J3MgSVBDIGlkLgorICAgIGlm
ICghbV9kaWRDb21wbGV0ZSkKKyAgICAgICAgbV9jYWxsYmFja3MtPm9uRXJyb3IoV2ViSURCRGF0
YWJhc2VFcnJvcihXZWJJREJEYXRhYmFzZUV4Y2VwdGlvbkFib3J0RXJyb3IsIFdlYlN0cmluZygp
KSk7CiB9CiAKIHZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uRXJyb3IoUGFzc1JlZlB0cjxJREJE
YXRhYmFzZUVycm9yPiBpZGJEYXRhYmFzZUVycm9yKQogeworICAgIG1fZGlkQ29tcGxldGUgPSB0
cnVlOwogICAgIG1fY2FsbGJhY2tzLT5vbkVycm9yKFdlYklEQkRhdGFiYXNlRXJyb3IoaWRiRGF0
YWJhc2VFcnJvcikpOwogfQogCiB2b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3MoUGFz
c1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBpZGJDdXJzb3JCYWNrZW5kLCBQYXNz
UmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSwgUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlKQogeworICAgIG1fZGlkQ29tcGxldGUg
PSB0cnVlOwogICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MobmV3IFdlYklEQkN1cnNvckltcGwo
aWRiQ3Vyc29yQmFja2VuZCksIGtleSwgcHJpbWFyeUtleSwgdmFsdWUpOwogfQogCiB2b2lkIElE
QkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJ
bnRlcmZhY2U+IGJhY2tlbmQpCiB7CiAgICAgQVNTRVJUKG1fZGF0YWJhc2VDYWxsYmFja3MuZ2V0
KCkpOworICAgIG1fZGlkQ29tcGxldGUgPSB0cnVlOwogICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nl
c3MobmV3IFdlYklEQkRhdGFiYXNlSW1wbChiYWNrZW5kLCBtX2RhdGFiYXNlQ2FsbGJhY2tzLnJl
bGVhc2UoKSkpOwogfQogCiB2b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3MoUGFzc1Jl
ZlB0cjxJREJLZXk+IGlkYktleSkKIHsKKyAgICBtX2RpZENvbXBsZXRlID0gdHJ1ZTsKICAgICBt
X2NhbGxiYWNrcy0+b25TdWNjZXNzKFdlYklEQktleShpZGJLZXkpKTsKIH0KIAogdm9pZCBJREJD
YWxsYmFja3NQcm94eTo6b25TdWNjZXNzKFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gZG9tU3Ry
aW5nTGlzdCkKIHsKKyAgICBtX2RpZENvbXBsZXRlID0gdHJ1ZTsKICAgICBtX2NhbGxiYWNrcy0+
b25TdWNjZXNzKFdlYkRPTVN0cmluZ0xpc3QoZG9tU3RyaW5nTGlzdCkpOwogfQogCiB2b2lkIElE
QkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkKIHsKKyAgICBtX2RpZENvbXBsZXRlID0gdHJ1ZTsK
ICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShzZXJp
YWxpemVkU2NyaXB0VmFsdWUpKTsKIH0KIAogdm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25TdWNj
ZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkU2NyaXB0VmFs
dWUsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgpCiB7
CiAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhzZXJpYWxpemVkU2NyaXB0VmFsdWUsIGtleSwg
a2V5UGF0aCk7CisgICAgbV9kaWRDb21wbGV0ZSA9IHRydWU7CiB9CiAKIHZvaWQgSURCQ2FsbGJh
Y2tzUHJveHk6Om9uU3VjY2VzcyhpbnQ2NF90IHZhbHVlKQogeworICAgIG1fZGlkQ29tcGxldGUg
PSB0cnVlOwogICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3ModmFsdWUpOwogfQogCiB2b2lkIElE
QkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3MoKQogeworICAgIG1fZGlkQ29tcGxldGUgPSB0cnVl
OwogICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MoKTsKIH0KIAogdm9pZCBJREJDYWxsYmFja3NQ
cm94eTo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8SURCS2V5
PiBwcmltYXJ5S2V5LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUpCiB7
CisgICAgbV9kaWRDb21wbGV0ZSA9IHRydWU7CiAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2Vzcyhr
ZXksIHByaW1hcnlLZXksIHZhbHVlKTsKIH0KIAogdm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25T
dWNjZXNzV2l0aFByZWZldGNoKGNvbnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+JiBrZXlzLCBj
b25zdCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiYgcHJpbWFyeUtleXMsIGNvbnN0IFZlY3RvcjxS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiA+JiB2YWx1ZXMpCiB7CisgICAgbV9kaWRDb21w
bGV0ZSA9IHRydWU7CiAgICAgY29uc3Qgc2l6ZV90IG4gPSBrZXlzLnNpemUoKTsKIAogICAgIFdl
YlZlY3RvcjxXZWJJREJLZXk+IHdlYktleXMobik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuaAppbmRleCA2NWYzYjc0MGE4MmVlOGFlMmQ4MmIwMjU5
MjNiZTBlNjRlMGE0MTVhLi44Yzk5NThlN2QyMTJlM2ZkMzIwYzI3YTY4ZDYzYzk0ZDY0MWI1ZjJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmgK
QEAgLTY4LDYgKzY4LDcgQEAgcHJpdmF0ZToKIAogICAgIE93blB0cjxXZWJJREJDYWxsYmFja3M+
IG1fY2FsbGJhY2tzOwogICAgIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5PiBtX2Rh
dGFiYXNlQ2FsbGJhY2tzOworICAgIGJvb2wgbV9kaWRDb21wbGV0ZTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178054</attachid>
            <date>2012-12-06 12:06:39 -0800</date>
            <delta_ts>2013-01-02 15:27:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103536-20121206120404.patch</filename>
            <type>text/plain</type>
            <size>28631</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2ODM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzVmYmRlNWM0ZWZkMjNi
OGFiMmJjMzRkZTE1ODk3NTU3OTExZGM1Mi4uN2JmNmY2MjY1ODk3YmZiYzBjZDg5ZGZjODUyYTY0
NDNlN2FjYzNjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTEyLTAzICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBNYWtl
IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnNjaGVkdWxlVGFzaydzIHJldHVybiB0eXBlIHZv
aWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzUz
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUg
cmVzcG9uc2liaWxpdHkgZm9yIGZpcmluZyBhYm9ydCBlcnJvcnMgZnJvbSByZXF1ZXN0cyB0aGF0
IGFycml2ZSBvbiB0aGUKKyAgICAgICAgYmFjay1lbmQgYWZ0ZXIgYW4gYXN5bmNocm9ub3VzIHRy
YW5zYWN0aW9uIGFib3J0IG91dCBvZiBXZWJDb3JlLCBzaW5jZSB0aGUKKyAgICAgICAgZnJvbnQt
ZW5kIHRha2VzIGNhcmUgb2YgdGhpcyBhcyBmYXIgYXMgc2NyaXB0IGlzIGNvbmNlcm5lZC4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMgLSBqdXN0IGEgcmVmYWN0b3IuCisKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y29udGludWVGdW5jdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpJREJDdXJzb3JCYWNrZW5kSW1wbDo6YWR2YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJDdXJzb3JCYWNrZW5kSW1wbDo6cHJlZmV0Y2hDb250aW51ZSk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpydW5JbnRWZXJzaW9uQ2hhbmdl
VHJhbnNhY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2Vu
ZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW1wbDo6b3BlbkN1
cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleEJhY2tlbmRJbXBsOjpvcGVuS2V5Q3Vy
c29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEltcGw6OmNvdW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEltcGw6OmdldCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJJbmRleEJhY2tlbmRJbXBsOjpnZXRLZXkpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9i
amVjdFN0b3JlQmFja2VuZEltcGw6OnB1dCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnNldEluZGV4ZXNSZWFkeSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVGdW5jdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjbGVhcik6
CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRl
eCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVJ
bmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpvcGVu
Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNv
dW50KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnNj
aGVkdWxlVGFzayk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1w
bDo6c2NoZWR1bGVUYXNrKToKKyAgICAgICAgKElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwpOgor
CiAyMDEyLTEyLTA2ICBTaGlueWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBJbnRlcm5hbHMuZ2V0RWxlbWVudEJ5SWRJblNoYWRvd1Jvb3QgaXMgbm9uc2Vuc2Ug
bm93LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAwM2Y5OGY2OTBhNzNmM2UxMzgyOWFl
MDU2MTA3OWYxOWVlNTc5MTc2Li4zOTJhZjkzNDAwZTQwMmRjODMwOTZjMTI3NTQwMmNhODg0NTlj
MWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTEy
LTAzICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhl
ZERCOiBNYWtlIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnNjaGVkdWxlVGFzaydzIHJldHVy
biB0eXBlIHZvaWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwMzUzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRyYWNrIHdoZXRoZXIgSURCQ2FsbGJhY2tzIGhhcyBmaXJlZCBiZWZvcmUgYmVpbmcgZGVz
dHJ1Y3RlZC4gSWYgbm90IGl0IHByb2JhYmx5CisgICAgICAgIGNhbWUgaW4gYWZ0ZXIgYSB0cmFu
c2FjdGlvbiBoYWQgYXN5bmNocm9ub3VzbHkgYWJvcnRlZDsgZmlyZSBhbiBhYm9ydCBlcnJvciB3
aGljaAorICAgICAgICB3aWxsIGJlIGlnbm9yZWQgb24gdGhlIGZyb250LWVuZCBidXQgd2lsbCBj
bGVhbiB1cCBsaW5nZXJpbmcgSVBDIHRyYWNraW5nLgorCisgICAgICAgICogcHVibGljL1dlYklE
QkRhdGFiYXNlRXhjZXB0aW9uLmg6CisgICAgICAgICogc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMu
Y3BwOgorICAgICAgICAqIHNyYy9JREJDYWxsYmFja3NQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OklEQkNhbGxiYWNrc1Byb3h5OjpJREJDYWxsYmFja3NQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OklEQkNhbGxiYWNrc1Byb3h5Ojp+SURCQ2FsbGJhY2tzUHJveHkpOgorICAgICAgICAoV2Vi
S2l0OjpJREJDYWxsYmFja3NQcm94eTo6b25FcnJvcik6CisgICAgICAgIChXZWJLaXQ6OklEQkNh
bGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3MpOgorICAgICAgICAqIHNyYy9JREJDYWxsYmFja3NQcm94
eS5oOgorICAgICAgICAoSURCQ2FsbGJhY2tzUHJveHkpOgorCiAyMDEyLTEyLTA2ICBTaGVyaWZm
IEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMTM2Nzg0IGFuZCByMTM2ODAyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwCmluZGV4
IGQyNzU4ODMxOTcxODdkZjFiN2I3NGFkZDFlNWY4N2MzZTQ0NzI3YTAuLmYwMmYyNmU1NjkzYmVj
MmI3ZDQyY2I2ZTE3NGJjYWRmNDBhMzBhOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAKQEAgLTEyNywx
NyArMTI3LDE4IEBAIHZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OmNvbnRpbnVlRnVuY3Rpb24o
UGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJCiB7CiAgICAgSURCX1RSQUNFKCJJ
REJDdXJzb3JCYWNrZW5kSW1wbDo6Y29udGludWUiKTsKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tz
PiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7Ci0gICAgaWYgKCFtX3RyYW5zYWN0aW9uLT5zY2hl
ZHVsZVRhc2sobV90YXNrVHlwZSwgQ3Vyc29ySXRlcmF0aW9uT3BlcmF0aW9uOjpjcmVhdGUodGhp
cywga2V5LCBjYWxsYmFja3MpKSkKLSAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFi
YXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6QWJvcnRFcnJvcikpOworICAg
IGlmIChtX3RyYW5zYWN0aW9uLT5pc0ZpbmlzaGVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICBt
X3RyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2sobV90YXNrVHlwZSwgQ3Vyc29ySXRlcmF0aW9uT3Bl
cmF0aW9uOjpjcmVhdGUodGhpcywga2V5LCBjYWxsYmFja3MpKTsKIH0KIAogdm9pZCBJREJDdXJz
b3JCYWNrZW5kSW1wbDo6YWR2YW5jZSh1bnNpZ25lZCBsb25nIGNvdW50LCBQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBFeGNlcHRpb25Db2RlJikKIHsKICAgICBJREJfVFJB
Q0UoIklEQkN1cnNvckJhY2tlbmRJbXBsOjphZHZhbmNlIik7CiAgICAgUmVmUHRyPElEQkNhbGxi
YWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOwotCi0gICAgaWYgKCFtX3RyYW5zYWN0aW9u
LT5zY2hlZHVsZVRhc2soQ3Vyc29yQWR2YW5jZU9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIGNvdW50
LCBjYWxsYmFja3MpKSkKLSAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJy
b3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6QWJvcnRFcnJvcikpOworICAgIGlmICht
X3RyYW5zYWN0aW9uLT5pc0ZpbmlzaGVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX3RyYW5z
YWN0aW9uLT5zY2hlZHVsZVRhc2soQ3Vyc29yQWR2YW5jZU9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMs
IGNvdW50LCBjYWxsYmFja3MpKTsKIH0KIAogdm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6Q3Vy
c29yQWR2YW5jZU9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKikK
QEAgLTE4MSw4ICsxODIsOSBAQCB2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpwcmVmZXRjaENv
bnRpbnVlKGludCBudW1iZXJUb0ZldGNoLCBQYXNzUmVmUHRyPElEQkNhbAogewogICAgIElEQl9U
UkFDRSgiSURCQ3Vyc29yQmFja2VuZEltcGw6OnByZWZldGNoQ29udGludWUiKTsKICAgICBSZWZQ
dHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7Ci0gICAgaWYgKCFtX3Ry
YW5zYWN0aW9uLT5zY2hlZHVsZVRhc2sobV90YXNrVHlwZSwgQ3Vyc29yUHJlZmV0Y2hJdGVyYXRp
b25PcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBudW1iZXJUb0ZldGNoLCBjYWxsYmFja3MpKSkKLSAg
ICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6QWJvcnRFcnJvcikpOworICAgIGlmIChtX3RyYW5zYWN0aW9uLT5pc0Zp
bmlzaGVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX3RyYW5zYWN0aW9uLT5zY2hlZHVsZVRh
c2sobV90YXNrVHlwZSwgQ3Vyc29yUHJlZmV0Y2hJdGVyYXRpb25PcGVyYXRpb246OmNyZWF0ZSh0
aGlzLCBudW1iZXJUb0ZldGNoLCBjYWxsYmFja3MpKTsKIH0KIAogdm9pZCBJREJDdXJzb3JCYWNr
ZW5kSW1wbDo6Q3Vyc29yUHJlZmV0Y2hJdGVyYXRpb25PcGVyYXRpb246OnBlcmZvcm0oSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbCopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCmluZGV4IGFlN2FmMGVi
NDhlNzMwOTYxZDhhNWZhZTFkMDVhMjc2YmU0NjZiMGIuLjBlOWViMzgxZmI2YjBlOGJkNTE5MGZk
ZGQ5OWRiZjdhZjg3MWRiODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCkBAIC0yNzcsMTAgKzI3
NywxMSBAQCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gSURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlT2JqZWN0UwogICAgIEFTU0VSVChpZCA+IG1fbWV0YWRh
dGEubWF4T2JqZWN0U3RvcmVJZCk7CiAgICAgbV9tZXRhZGF0YS5tYXhPYmplY3RTdG9yZUlkID0g
aWQ7CiAKLSAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soQ3JlYXRlT2JqZWN0U3Rv
cmVPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBvYmplY3RTdG9yZSksIENyZWF0ZU9iamVjdFN0b3Jl
QWJvcnRPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBvYmplY3RTdG9yZSkpKSB7CisgICAgaWYgKHRy
YW5zYWN0aW9uLT5pc0ZpbmlzaGVkKCkpIHsKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6VHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yOwogICAgICAgICByZXR1cm4gMDsKICAgICB9
CisgICAgdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhDcmVhdGVPYmplY3RTdG9yZU9wZXJhdGlv
bjo6Y3JlYXRlKHRoaXMsIG9iamVjdFN0b3JlKSwgQ3JlYXRlT2JqZWN0U3RvcmVBYm9ydE9wZXJh
dGlvbjo6Y3JlYXRlKHRoaXMsIG9iamVjdFN0b3JlKSk7CiAKICAgICBtX29iamVjdFN0b3Jlcy5z
ZXQoaWQsIG9iamVjdFN0b3JlKTsKICAgICByZXR1cm4gb2JqZWN0U3RvcmUucmVsZWFzZSgpOwpA
QCAtMzA4LDEwICszMDksMTEgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpkZWxldGVP
YmplY3RTdG9yZShpbnQ2NF90IGlkLCBJREJUcmFuc2FjdGlvbkJhY2tlbmQKICAgICBSZWZQdHI8
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsOjpmcm9tKHRyYW5zYWN0aW9uUHRyKTsKICAgICBBU1NFUlQodHJhbnNhY3Rpb24t
Pm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpOwogCi0gICAgaWYgKCF0
cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKERlbGV0ZU9iamVjdFN0b3JlT3BlcmF0aW9uOjpjcmVh
dGUodGhpcywgb2JqZWN0U3RvcmUpLCBEZWxldGVPYmplY3RTdG9yZUFib3J0T3BlcmF0aW9uOjpj
cmVhdGUodGhpcywgb2JqZWN0U3RvcmUpKSkgeworICAgIGlmICh0cmFuc2FjdGlvbi0+aXNGaW5p
c2hlZCgpKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRyYW5zYWN0aW9u
SW5hY3RpdmVFcnJvcjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICB0cmFuc2FjdGlvbi0+
c2NoZWR1bGVUYXNrKERlbGV0ZU9iamVjdFN0b3JlT3BlcmF0aW9uOjpjcmVhdGUodGhpcywgb2Jq
ZWN0U3RvcmUpLCBEZWxldGVPYmplY3RTdG9yZUFib3J0T3BlcmF0aW9uOjpjcmVhdGUodGhpcywg
b2JqZWN0U3RvcmUpKTsKICAgICBtX29iamVjdFN0b3Jlcy5yZW1vdmUoaWQpOwogfQogCkBAIC00
OTYsMTAgKzQ5OCw5IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cnVuSW50VmVyc2lv
bkNoYW5nZVRyYW5zYWN0aW9uKGludDY0X3QgcmVxdWVzdGVkVmVyCiAgICAgLy8gRklYTUU6IFRo
ZSB0cmFuc2FjdGlvbklkIG5lZWRzIHRvIGJlIHBpcGVkIGluIHRocm91Z2ggSURCRGF0YWJhc2VC
YWNrZW5kSW50ZXJmYWNlOjpvcGVuKCkuCiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZT4gdHJhbnNhY3Rpb25JbnRlcmZhY2UgPSBjcmVhdGVUcmFuc2FjdGlvbigwLCBv
YmplY3RTdG9yZUlkcywgSURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFKTsKICAgICBSZWZQ
dHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbXBsOjpmcm9tKHRyYW5zYWN0aW9uSW50ZXJmYWNlLmdldCgpKTsKKyAgICBBU1NF
UlQoIXRyYW5zYWN0aW9uLT5pc0ZpbmlzaGVkKCkpOwogCi0gICAgaWYgKCF0cmFuc2FjdGlvbi0+
c2NoZWR1bGVUYXNrKFZlcnNpb25DaGFuZ2VPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCByZXF1ZXN0
ZWRWZXJzaW9uLCBjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzKSwgVmVyc2lvbkNoYW5nZUFi
b3J0T3BlcmF0aW9uOjpjcmVhdGUodGhpcywgbV9tZXRhZGF0YS52ZXJzaW9uLCBtX21ldGFkYXRh
LmludFZlcnNpb24pKSkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Cisg
ICAgdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhWZXJzaW9uQ2hhbmdlT3BlcmF0aW9uOjpjcmVh
dGUodGhpcywgcmVxdWVzdGVkVmVyc2lvbiwgY2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcyks
IFZlcnNpb25DaGFuZ2VBYm9ydE9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIG1fbWV0YWRhdGEudmVy
c2lvbiwgbV9tZXRhZGF0YS5pbnRWZXJzaW9uKSk7CiAgICAgQVNTRVJUKCFtX3BlbmRpbmdTZWNv
bmRIYWxmT3BlbldpdGhWZXJzaW9uKTsKICAgICBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmFkZChk
YXRhYmFzZUNhbGxiYWNrcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwuY3BwCmluZGV4IDkxZWU4ZjA3ZmVmZTFi
ZjJlNjY1MGVhODMyM2Q1YzIwYjEzNDUyNzMuLmQ0MGYwYjM5NzcyMWM5MmRhZjU5N2E4YTc1OThk
YjExZjcxYzg0YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkluZGV4QmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwuY3BwCkBAIC0xNzIsOCArMTcyLDkgQEAgdm9pZCBJ
REJJbmRleEJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtl
eVJhbmdlLCB1bnNpZ25lZAogICAgIElEQl9UUkFDRSgiSURCSW5kZXhCYWNrZW5kSW1wbDo6b3Bl
bkN1cnNvciIpOwogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxi
YWNrczsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24g
PSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpmcm9tKHRyYW5zYWN0aW9uUHRyKTsKLSAgICBp
ZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soT3BlbkluZGV4Q3Vyc29yT3BlcmF0aW9uOjpj
cmVhdGUodGhpcywga2V5UmFuZ2UsIGRpcmVjdGlvbiwgSURCQ3Vyc29yQmFja2VuZEludGVyZmFj
ZTo6SW5kZXhDdXJzb3IsIGNhbGxiYWNrcykpKQotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3Io
SURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpBYm9ydEVycm9y
KSk7CisgICAgaWYgKHRyYW5zYWN0aW9uLT5pc0ZpbmlzaGVkKCkpCisgICAgICAgIHJldHVybjsK
KyAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKE9wZW5JbmRleEN1cnNvck9wZXJhdGlvbjo6
Y3JlYXRlKHRoaXMsIGtleVJhbmdlLCBkaXJlY3Rpb24sIElEQkN1cnNvckJhY2tlbmRJbnRlcmZh
Y2U6OkluZGV4Q3Vyc29yLCBjYWxsYmFja3MpKTsKIH0KIAogdm9pZCBJREJJbmRleEJhY2tlbmRJ
bXBsOjpvcGVuS2V5Q3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCB1bnNp
Z25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFj
a3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb25QdHIsIEV4Y2Vw
dGlvbkNvZGUmKQpAQCAtMTgxLDggKzE4Miw5IEBAIHZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6
b3BlbktleUN1cnNvcihQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgdW5zaWduCiAg
ICAgSURCX1RSQUNFKCJJREJJbmRleEJhY2tlbmRJbXBsOjpvcGVuS2V5Q3Vyc29yIik7CiAgICAg
UmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOwogICAgIFJlZlB0
cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGw6OmZyb20odHJhbnNhY3Rpb25QdHIpOwotICAgIGlmICghdHJhbnNhY3Rpb24t
PnNjaGVkdWxlVGFzayhPcGVuSW5kZXhDdXJzb3JPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBrZXlS
YW5nZSwgZGlyZWN0aW9uLCBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpJbmRleEtleUN1cnNv
ciwgY2FsbGJhY2tzKSkpCi0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVy
cm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkFib3J0RXJyb3IpKTsKKyAgICBpZiAo
dHJhbnNhY3Rpb24tPmlzRmluaXNoZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIHRyYW5zYWN0
aW9uLT5zY2hlZHVsZVRhc2soT3BlbkluZGV4Q3Vyc29yT3BlcmF0aW9uOjpjcmVhdGUodGhpcywg
a2V5UmFuZ2UsIGRpcmVjdGlvbiwgSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6SW5kZXhLZXlD
dXJzb3IsIGNhbGxiYWNrcykpOwogfQogCiB2b2lkIElEQkluZGV4QmFja2VuZEltcGw6OkluZGV4
Q291bnRPcGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNh
Y3Rpb24pCkBAIC0yMDgsOCArMjEwLDkgQEAgdm9pZCBJREJJbmRleEJhY2tlbmRJbXBsOjpjb3Vu
dChQYXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwgUGFzc1JlZlB0cjxJREJDYWwKICAgICBJ
REJfVFJBQ0UoIklEQkluZGV4QmFja2VuZEltcGw6OmNvdW50Iik7CiAgICAgUmVmUHRyPElEQkNh
bGxiYWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOwogICAgIFJlZlB0cjxJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6
OmZyb20odHJhbnNhY3Rpb25QdHIpOwotICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFz
ayhJbmRleENvdW50T3BlcmF0aW9uOjpjcmVhdGUodGhpcywgcmFuZ2UsIGNhbGxiYWNrcykpKQot
ICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRh
dGFiYXNlRXhjZXB0aW9uOjpBYm9ydEVycm9yKSk7CisgICAgaWYgKHRyYW5zYWN0aW9uLT5pc0Zp
bmlzaGVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNr
KEluZGV4Q291bnRPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCByYW5nZSwgY2FsbGJhY2tzKSk7CiB9
CiAKIHZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6SW5kZXhSZWZlcmVuY2VkVmFsdWVSZXRyaWV2
YWxPcGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rp
b24pCkBAIC0yODUsOCArMjg4LDkgQEAgdm9pZCBJREJJbmRleEJhY2tlbmRJbXBsOjpnZXQoUGFz
c1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2EKICAgICBJREJf
VFJBQ0UoIklEQkluZGV4QmFja2VuZEltcGw6OmdldCIpOwogICAgIFJlZlB0cjxJREJDYWxsYmFj
a3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpmcm9t
KHRyYW5zYWN0aW9uUHRyKTsKLSAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soSW5k
ZXhSZWZlcmVuY2VkVmFsdWVSZXRyaWV2YWxPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBrZXlSYW5n
ZSwgY2FsbGJhY2tzKSkpCi0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVy
cm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkFib3J0RXJyb3IpKTsKKyAgICBpZiAo
dHJhbnNhY3Rpb24tPmlzRmluaXNoZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIHRyYW5zYWN0
aW9uLT5zY2hlZHVsZVRhc2soSW5kZXhSZWZlcmVuY2VkVmFsdWVSZXRyaWV2YWxPcGVyYXRpb246
OmNyZWF0ZSh0aGlzLCBrZXlSYW5nZSwgY2FsbGJhY2tzKSk7CiB9CiAKIHZvaWQgSURCSW5kZXhC
YWNrZW5kSW1wbDo6Z2V0S2V5KFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBFeGNlcHRpb25Db2RlJikKQEAgLTI5NCw4ICsyOTgs
OSBAQCB2b2lkIElEQkluZGV4QmFja2VuZEltcGw6OmdldEtleShQYXNzUmVmUHRyPElEQktleVJh
bmdlPiBrZXlSYW5nZSwgUGFzc1JlZlB0cjxJRAogICAgIElEQl9UUkFDRSgiSURCSW5kZXhCYWNr
ZW5kSW1wbDo6Z2V0S2V5Iik7CiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzID0g
cHJwQ2FsbGJhY2tzOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFu
c2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmZyb20odHJhbnNhY3Rpb25QdHIp
OwotICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhJbmRleFZhbHVlUmV0cmlldmFs
T3BlcmF0aW9uOjpjcmVhdGUodGhpcywga2V5UmFuZ2UsIGNhbGxiYWNrcykpKQotICAgICAgICBj
YWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpBYm9ydEVycm9yKSk7CisgICAgaWYgKHRyYW5zYWN0aW9uLT5pc0ZpbmlzaGVkKCkp
CisgICAgICAgIHJldHVybjsKKyAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKEluZGV4VmFs
dWVSZXRyaWV2YWxPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBrZXlSYW5nZSwgY2FsbGJhY2tzKSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAK
aW5kZXggMmFkYTUyNTM5ZDYwNmNhNmJlZTUxOGE2MzEzNzcwOTllNjdhZWI3ZS4uMTllZDFiYWQw
MGYwYWY1NWMwNjNlN2I1MTg3YmRjYmI4ODcyYmZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bC5jcHAKQEAgLTI4OSw4ICsyODksOSBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6
OmdldChQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgUGFzc1JlZlB0cgogICAgIElE
Ql9UUkFDRSgiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Z2V0Iik7CiAgICAgUmVmUHRyPElE
QkNhbGxiYWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOwogICAgIFJlZlB0cjxJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uQmFja2VuZElt
cGw6OmZyb20odHJhbnNhY3Rpb25QdHIpOwotICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxl
VGFzayhPYmplY3RTdG9yZVJldHJpZXZhbE9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIGtleVJhbmdl
LCBjYWxsYmFja3MpKSkKLSAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJy
b3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6QWJvcnRFcnJvcikpOworICAgIGlmICh0
cmFuc2FjdGlvbi0+aXNGaW5pc2hlZCgpKQorICAgICAgICByZXR1cm47CisgICAgdHJhbnNhY3Rp
b24tPnNjaGVkdWxlVGFzayhPYmplY3RTdG9yZVJldHJpZXZhbE9wZXJhdGlvbjo6Y3JlYXRlKHRo
aXMsIGtleVJhbmdlLCBjYWxsYmFja3MpKTsKIH0KIAogdm9pZCBJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsOjpPYmplY3RTdG9yZVJldHJpZXZhbE9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbikKQEAgLTMzMywxNCArMzM0LDE1IEBAIHZvaWQg
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiB2YWx1ZSwgUGFzCiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzID0g
cHJwQ2FsbGJhY2tzOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFu
c2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmZyb20odHJhbnNhY3Rpb25QdHIp
OwogICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpICE9IElEQlRyYW5zYWN0aW9uOjpSRUFE
X09OTFkpOworICAgIGlmICh0cmFuc2FjdGlvbi0+aXNGaW5pc2hlZCgpKQorICAgICAgICByZXR1
cm47CiAKICAgICBPd25QdHI8VmVjdG9yPGludDY0X3Q+ID4gbmV3SW5kZXhJZHMgPSBhZG9wdFB0
cihuZXcgVmVjdG9yPGludDY0X3Q+KGluZGV4SWRzKSk7CiAgICAgT3duUHRyPFZlY3RvcjxJbmRl
eEtleXM+ID4gbmV3SW5kZXhLZXlzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxJbmRleEtleXM+KGlu
ZGV4S2V5cykpOwogCiAgICAgQVNTRVJUKGF1dG9JbmNyZW1lbnQoKSB8fCBrZXkuZ2V0KCkpOwog
Ci0gICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKE9iamVjdFN0b3JlU3RvcmFnZU9w
ZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIHZhbHVlLCBrZXksIHB1dE1vZGUsIGNhbGxiYWNrcywgbmV3
SW5kZXhJZHMucmVsZWFzZSgpLCBuZXdJbmRleEtleXMucmVsZWFzZSgpKSkpCi0gICAgICAgIGNh
bGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNl
cHRpb246OkFib3J0RXJyb3IpKTsKKyAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKE9iamVj
dFN0b3JlU3RvcmFnZU9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIHZhbHVlLCBrZXksIHB1dE1vZGUs
IGNhbGxiYWNrcywgbmV3SW5kZXhJZHMucmVsZWFzZSgpLCBuZXdJbmRleEtleXMucmVsZWFzZSgp
KSk7CiB9CiAKIG5hbWVzcGFjZSB7CkBAIC01MDAsOCArNTAyLDcgQEAgdm9pZCBJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsOjpzZXRJbmRleGVzUmVhZHkoY29uc3QgVmVjdG9yPGludDY0X3Q+JiBp
bmRleElkcywKICAgICBpZiAodHJhbnNhY3Rpb24tPmlzRmluaXNoZWQoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZTo6UHJlZW1wdGl2ZVRhc2ssIE9iamVjdFN0b3JlSW5kZXhlc1JlYWR5
T3BlcmF0aW9uOjpjcmVhdGUodGhpcywgbmV3SW5kZXhJZHMucmVsZWFzZSgpKSkpCi0gICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlOjpQcmVlbXB0aXZlVGFzaywgT2JqZWN0U3RvcmVJ
bmRleGVzUmVhZHlPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBuZXdJbmRleElkcy5yZWxlYXNlKCkp
KTsKIH0KIAogdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpPYmplY3RTdG9yZUluZGV4
ZXNSZWFkeU9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFu
c2FjdGlvbikKQEAgLTU4NCwxMCArNTg1LDExIEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbDo6ZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsCiAK
ICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpmcm9tKHRyYW5zYWN0aW9uUHRyKTsKICAgICBBU1NFUlQo
dHJhbnNhY3Rpb24tPm1vZGUoKSAhPSBJREJUcmFuc2FjdGlvbjo6UkVBRF9PTkxZKTsKKyAgICBp
ZiAodHJhbnNhY3Rpb24tPmlzRmluaXNoZWQoKSkKKyAgICAgICAgcmV0dXJuOwogICAgIFJlZlB0
cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKIAotICAgIGlmICghdHJh
bnNhY3Rpb24tPnNjaGVkdWxlVGFzayhPYmplY3RTdG9yZURlbGV0aW9uT3BlcmF0aW9uOjpjcmVh
dGUodGhpcywga2V5UmFuZ2UsIGNhbGxiYWNrcykpKQotICAgICAgICBjYWxsYmFja3MtPm9uRXJy
b3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpBYm9ydEVy
cm9yKSk7CisgICAgdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhPYmplY3RTdG9yZURlbGV0aW9u
T3BlcmF0aW9uOjpjcmVhdGUodGhpcywga2V5UmFuZ2UsIGNhbGxiYWNrcykpOwogfQogCiB2b2lk
IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Ok9iamVjdFN0b3JlRGVsZXRpb25PcGVyYXRpb246
OnBlcmZvcm0oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24pCkBAIC02MTIs
MTAgKzYxNCwxMSBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNsZWFyKFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIElEQgogCiAgICAgUmVmUHRyPElEQlRy
YW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uID0gSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbDo6ZnJvbSh0cmFuc2FjdGlvblB0cik7CiAgICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5tb2Rl
KCkgIT0gSURCVHJhbnNhY3Rpb246OlJFQURfT05MWSk7CisgICAgaWYgKHRyYW5zYWN0aW9uLT5p
c0ZpbmlzaGVkKCkpCisgICAgICAgIHJldHVybjsKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBj
YWxsYmFja3MgPSBwcnBDYWxsYmFja3M7CiAKLSAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVs
ZVRhc2soT2JqZWN0U3RvcmVDbGVhck9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIGNhbGxiYWNrcykp
KQotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpBYm9ydEVycm9yKSk7CisgICAgdHJhbnNhY3Rpb24tPnNjaGVk
dWxlVGFzayhPYmplY3RTdG9yZUNsZWFyT3BlcmF0aW9uOjpjcmVhdGUodGhpcywgY2FsbGJhY2tz
KSk7CiB9CiAKIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6T2JqZWN0U3RvcmVDbGVh
ck9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlv
bikKQEAgLTYzNywxMCArNjQwLDExIEBAIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJm
YWNlPiBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleChpbnQ2CiAgICAgQVNT
RVJUKGlkID4gbV9tZXRhZGF0YS5tYXhJbmRleElkKTsKICAgICBtX21ldGFkYXRhLm1heEluZGV4
SWQgPSBpZDsKIAotICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhDcmVhdGVJbmRl
eE9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIGluZGV4KSwgQ3JlYXRlSW5kZXhBYm9ydE9wZXJhdGlv
bjo6Y3JlYXRlKHRoaXMsIGluZGV4KSkpIHsKKyAgICBpZiAodHJhbnNhY3Rpb24tPmlzRmluaXNo
ZWQoKSkgewogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUcmFuc2FjdGlvbklu
YWN0aXZlRXJyb3I7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KKyAgICB0cmFuc2FjdGlvbi0+
c2NoZWR1bGVUYXNrKENyZWF0ZUluZGV4T3BlcmF0aW9uOjpjcmVhdGUodGhpcywgaW5kZXgpLCBD
cmVhdGVJbmRleEFib3J0T3BlcmF0aW9uOjpjcmVhdGUodGhpcywgaW5kZXgpKTsKIAogICAgIG1f
aW5kZXhlcy5zZXQoaWQsIGluZGV4KTsKICAgICByZXR1cm4gaW5kZXgucmVsZWFzZSgpOwpAQCAt
NjY5LDExICs2NzMsMTEgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVJ
bmRleChpbnQ2NF90IGluZGV4SWQsIElEQlRyYW5zYWN0aW9uQmFja2UKICAgICBSZWZQdHI8SURC
SW5kZXhCYWNrZW5kSW1wbD4gaW5kZXggPSBtX2luZGV4ZXMuZ2V0KGluZGV4SWQpOwogICAgIFJl
ZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGw6OmZyb20odHJhbnNhY3Rpb25QdHIpOwogICAgIEFTU0VSVCh0cmFuc2Fj
dGlvbi0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRSk7Ci0KLSAgICBp
ZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soRGVsZXRlSW5kZXhPcGVyYXRpb246OmNyZWF0
ZSh0aGlzLCBpbmRleCksIERlbGV0ZUluZGV4QWJvcnRPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBp
bmRleCkpKSB7CisgICAgaWYgKHRyYW5zYWN0aW9uLT5pc0ZpbmlzaGVkKCkpIHsKICAgICAgICAg
ZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yOwogICAg
ICAgICByZXR1cm47CiAgICAgfQorICAgIHRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soRGVsZXRl
SW5kZXhPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBpbmRleCksIERlbGV0ZUluZGV4QWJvcnRPcGVy
YXRpb246OmNyZWF0ZSh0aGlzLCBpbmRleCkpOwogICAgIG1faW5kZXhlcy5yZW1vdmUoaW5kZXhJ
ZCk7CiB9CiAKQEAgLTY4OCw5ICs2OTIsOSBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZElt
cGw6Om9wZW5DdXJzb3IoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIElEQkN1cgogICAg
IElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6b3BlbkN1cnNvciIpOwogICAg
IFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKICAgICBSZWZQ
dHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbXBsOjpmcm9tKHRyYW5zYWN0aW9uUHRyKTsKLSAgICBpZiAoIXRyYW5zYWN0aW9u
LT5zY2hlZHVsZVRhc2soT3Blbk9iamVjdFN0b3JlQ3Vyc29yT3BlcmF0aW9uOjpjcmVhdGUodGhp
cywgcmFuZ2UsIGRpcmVjdGlvbiwgY2FsbGJhY2tzLCB0YXNrVHlwZSkpKSB7Ci0gICAgICAgIGNh
bGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNl
cHRpb246OkFib3J0RXJyb3IpKTsKLSAgICB9CisgICAgaWYgKHRyYW5zYWN0aW9uLT5pc0Zpbmlz
aGVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKE9w
ZW5PYmplY3RTdG9yZUN1cnNvck9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIHJhbmdlLCBkaXJlY3Rp
b24sIGNhbGxiYWNrcywgdGFza1R5cGUpKTsKIH0KIAogdm9pZCBJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsOjpPcGVuT2JqZWN0U3RvcmVDdXJzb3JPcGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24pCkBAIC03MTgsOCArNzIyLDkgQEAgdm9pZCBJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjb3VudChQYXNzUmVmUHRyPElEQktleVJhbmdlPiBy
YW5nZSwgUGFzc1JlZlB0cjwKICAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlQmFja2VuZElt
cGw6OmNvdW50Iik7CiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzID0gcHJwQ2Fs
bGJhY2tzOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlv
biA9IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmZyb20odHJhbnNhY3Rpb25QdHIpOwotICAg
IGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhPYmplY3RTdG9yZUNvdW50T3BlcmF0aW9u
OjpjcmVhdGUodGhpcywgcmFuZ2UsIGNhbGxiYWNrcykpKQotICAgICAgICBjYWxsYmFja3MtPm9u
RXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpBYm9y
dEVycm9yKSk7CisgICAgaWYgKHRyYW5zYWN0aW9uLT5pc0ZpbmlzaGVkKCkpCisgICAgICAgIHJl
dHVybjsKKyAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKE9iamVjdFN0b3JlQ291bnRPcGVy
YXRpb246OmNyZWF0ZSh0aGlzLCByYW5nZSwgY2FsbGJhY2tzKSk7CiB9CiAKIHZvaWQgSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbDo6T2JqZWN0U3RvcmVDb3VudE9wZXJhdGlvbjo6cGVyZm9ybShJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbC5jcHAKaW5kZXggMmJhZDU5MDZkNGFkZmQwNTk5YTk0MTk0YjZiNzRkZmI0NDAzZDM2My4u
NDA5ODM2MDJiZmQ2MTY0NDA0OTdjM2E0Njg3ZTg5MzAwOGYyZDdkOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbC5jcHAKQEAgLTgyLDEwICs4Miw5IEBAIFBhc3NSZWZQdHI8SURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW50ZXJmYWNlPiBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpvYmplY3RTdG9y
CiAgICAgcmV0dXJuIG9iamVjdFN0b3JlLnJlbGVhc2UoKTsKIH0KIAotYm9vbCBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsOjpzY2hlZHVsZVRhc2soVGFza1R5cGUgdHlwZSwgUGFzc093blB0cjxP
cGVyYXRpb24+IHRhc2ssIFBhc3NPd25QdHI8T3BlcmF0aW9uPiBhYm9ydFRhc2spCit2b2lkIElE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnNjaGVkdWxlVGFzayhUYXNrVHlwZSB0eXBlLCBQYXNz
T3duUHRyPE9wZXJhdGlvbj4gdGFzaywgUGFzc093blB0cjxPcGVyYXRpb24+IGFib3J0VGFzaykK
IHsKLSAgICBpZiAobV9zdGF0ZSA9PSBGaW5pc2hlZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIEFTU0VSVChtX3N0YXRlICE9IEZpbmlzaGVkKTsKIAogICAgIGlmICh0eXBlID09IE5vcm1h
bFRhc2spCiAgICAgICAgIG1fdGFza1F1ZXVlLmFwcGVuZCh0YXNrKTsKQEAgLTk5LDggKzk4LDYg
QEAgYm9vbCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpzY2hlZHVsZVRhc2soVGFza1R5cGUg
dHlwZSwgUGFzc093blB0cjxPcGVyYXRpb24KICAgICAgICAgc3RhcnQoKTsKICAgICBlbHNlIGlm
IChtX3N0YXRlID09IFJ1bm5pbmcgJiYgIW1fdGFza1RpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAg
IG1fdGFza1RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKLQotICAgIHJldHVybiB0cnVlOwogfQogCiB2
b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmFib3J0KCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZElt
cGwuaAppbmRleCA0MzljNzViZWM2MDc1Y2NiZmM2YTc5YjEzZjRjMTUwZmE4OTI0N2QzLi4zMDEx
YmNjMzJiMmI1ODAwZGI3YjE4ODE4NjZhMjRkMTQzOWNjMzI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbC5oCkBAIC02Nyw4ICs2Nyw4IEBAIHB1YmxpYzoKICAgICBJREJUcmFuc2FjdGlvbjo6TW9k
ZSBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlOyB9CiAgICAgY29uc3QgSGFzaFNldDxpbnQ2
NF90PiYgc2NvcGUoKSBjb25zdCB7IHJldHVybiBtX29iamVjdFN0b3JlSWRzOyB9CiAgICAgYm9v
bCBpc0ZpbmlzaGVkKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBGaW5pc2hlZDsgfQotICAg
IGJvb2wgc2NoZWR1bGVUYXNrKFBhc3NPd25QdHI8T3BlcmF0aW9uPiB0YXNrLCBQYXNzT3duUHRy
PE9wZXJhdGlvbj4gYWJvcnRUYXNrID0gbnVsbHB0cikgeyByZXR1cm4gc2NoZWR1bGVUYXNrKE5v
cm1hbFRhc2ssIHRhc2ssIGFib3J0VGFzayk7IH0KLSAgICBib29sIHNjaGVkdWxlVGFzayhUYXNr
VHlwZSwgUGFzc093blB0cjxPcGVyYXRpb24+LCBQYXNzT3duUHRyPE9wZXJhdGlvbj4gYWJvcnRU
YXNrID0gbnVsbHB0cik7CisgICAgdm9pZCBzY2hlZHVsZVRhc2soUGFzc093blB0cjxPcGVyYXRp
b24+IHRhc2ssIFBhc3NPd25QdHI8T3BlcmF0aW9uPiBhYm9ydFRhc2sgPSBudWxscHRyKSB7IHNj
aGVkdWxlVGFzayhOb3JtYWxUYXNrLCB0YXNrLCBhYm9ydFRhc2spOyB9CisgICAgdm9pZCBzY2hl
ZHVsZVRhc2soVGFza1R5cGUsIFBhc3NPd25QdHI8T3BlcmF0aW9uPiwgUGFzc093blB0cjxPcGVy
YXRpb24+IGFib3J0VGFzayA9IG51bGxwdHIpOwogICAgIHZvaWQgcmVnaXN0ZXJPcGVuQ3Vyc29y
KElEQkN1cnNvckJhY2tlbmRJbXBsKik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyT3BlbkN1cnNvcihJ
REJDdXJzb3JCYWNrZW5kSW1wbCopOwogICAgIHZvaWQgYWRkUHJlZW1wdGl2ZUV2ZW50KCkgeyBt
X3BlbmRpbmdQcmVlbXB0aXZlRXZlbnRzKys7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlRXhjZXB0aW9uLmggYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZUV4Y2VwdGlvbi5oCmluZGV4IDhjMDBhMGYw
MmU1MGFiNThjNzExZTQwY2VjYmUyM2Q1NDViYWYxOGQuLmYwOWExYWFjYjBhZDkyZTk4YWEzZDEy
NDhlYWFlZWQ4N2I5MGYzNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYklEQkRhdGFiYXNlRXhjZXB0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViSURCRGF0YWJhc2VFeGNlcHRpb24uaApAQCAtMzUsNiArMzUsNyBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogZW51bSBXZWJJREJEYXRhYmFzZUV4Y2VwdGlvbiB7CiAgICAgV2Vi
SURCRGF0YWJhc2VFeGNlcHRpb25EYXRhRXJyb3IgPSAxMjAzLAorICAgIFdlYklEQkRhdGFiYXNl
RXhjZXB0aW9uQWJvcnRFcnJvciA9IDEyMTAsCiAgICAgV2ViSURCRGF0YWJhc2VFeGNlcHRpb25R
dW90YUVycm9yID0gMTIxMiwKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKaW5kZXggNGQ3YjhiY2MwYjI1NDM0ZTk1MDczNzFj
NzE0YWU0NzAxMjVkMTIxNi4uMmNmNWM3MThmMDYzYWYzZWNmZTc3NmI2Y2MyZGExZWRiZTdiNTI0
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdF
bnVtcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdF
bnVtcy5jcHAKQEAgLTQ3OSwxMCArNDc5LDExIEBAIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VO
VU0oV2ViVmlldzo6VXNlckNvbnRlbnRJbmplY3RJblRvcEZyYW1lT25seSwgSW5qZWN0SW5UCiBD
T01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlZpZXc6OlVzZXJTdHlsZUluamVjdEluRXhp
c3RpbmdEb2N1bWVudHMsIEluamVjdEluRXhpc3RpbmdEb2N1bWVudHMpOwogQ09NUElMRV9BU1NF
UlRfTUFUQ0hJTkdfRU5VTShXZWJWaWV3OjpVc2VyU3R5bGVJbmplY3RJblN1YnNlcXVlbnREb2N1
bWVudHMsIEluamVjdEluU3Vic2VxdWVudERvY3VtZW50cyk7CiAKKyNpZiBFTkFCTEUoSU5ERVhF
RF9EQVRBQkFTRSkKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViSURCRGF0YWJhc2VF
eGNlcHRpb25EYXRhRXJyb3IsIElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEYXRhRXJyb3IpOworQ09N
UElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJEYXRhYmFzZUV4Y2VwdGlvbkFib3J0RXJy
b3IsIElEQkRhdGFiYXNlRXhjZXB0aW9uOjpBYm9ydEVycm9yKTsKIENPTVBJTEVfQVNTRVJUX01B
VENISU5HX0VOVU0oV2ViSURCRGF0YWJhc2VFeGNlcHRpb25RdW90YUVycm9yLCBJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6UXVvdGFFeGNlZWRlZEVycm9yKTsKIAotI2lmIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJLZXk6OkludmFsaWRU
eXBlLCBJREJLZXk6OkludmFsaWRUeXBlKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0o
V2ViSURCS2V5OjpBcnJheVR5cGUsIElEQktleTo6QXJyYXlUeXBlKTsKIENPTVBJTEVfQVNTRVJU
X01BVENISU5HX0VOVU0oV2ViSURCS2V5OjpTdHJpbmdUeXBlLCBJREJLZXk6OlN0cmluZ1R5cGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuY3Bw
CmluZGV4IDgzN2NjMzJhNmIwMDAwZGFmOTQ3YjFkZTc1MWU1Njc2MDgyODZkZTEuLmU4YTNjMWRi
YjNjMTA0MGE0YWU0MDZhOGY1NjhhMDYxZDgyNDJhZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNp
bmNsdWRlICJXZWJJREJDdXJzb3JJbXBsLmgiCiAjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VDYWxs
YmFja3MuaCIKICNpbmNsdWRlICJXZWJJREJEYXRhYmFzZUVycm9yLmgiCisjaW5jbHVkZSAiV2Vi
SURCRGF0YWJhc2VFeGNlcHRpb24uaCIKICNpbmNsdWRlICJXZWJJREJEYXRhYmFzZUltcGwuaCIK
ICNpbmNsdWRlICJXZWJJREJLZXkuaCIKICNpbmNsdWRlICJXZWJJREJUcmFuc2FjdGlvbkltcGwu
aCIKQEAgLTU5LDY2ICs2MCw4MSBAQCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrc1Byb3h5PiBJREJD
YWxsYmFja3NQcm94eTo6Y3JlYXRlKFBhc3NPd25QdHI8V2ViSURCQ2FsbGJhYwogCiBJREJDYWxs
YmFja3NQcm94eTo6SURCQ2FsbGJhY2tzUHJveHkoUGFzc093blB0cjxXZWJJREJDYWxsYmFja3M+
IGNhbGxiYWNrcykKICAgICA6IG1fY2FsbGJhY2tzKGNhbGxiYWNrcykKKyAgICAsIG1fZGlkQ29t
cGxldGUoZmFsc2UpCiB7CiB9CiAKIElEQkNhbGxiYWNrc1Byb3h5Ojp+SURCQ2FsbGJhY2tzUHJv
eHkoKQogeworICAgIC8vIFRoaXMgY2xlYW5zIHVwIHRoZSByZXF1ZXN0J3MgSVBDIGlkLgorICAg
IGlmICghbV9kaWRDb21wbGV0ZSkKKyAgICAgICAgbV9jYWxsYmFja3MtPm9uRXJyb3IoV2ViSURC
RGF0YWJhc2VFcnJvcihXZWJJREJEYXRhYmFzZUV4Y2VwdGlvbkFib3J0RXJyb3IsIFdlYlN0cmlu
ZygpKSk7CiB9CiAKIHZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uRXJyb3IoUGFzc1JlZlB0cjxJ
REJEYXRhYmFzZUVycm9yPiBpZGJEYXRhYmFzZUVycm9yKQogeworICAgIG1fZGlkQ29tcGxldGUg
PSB0cnVlOwogICAgIG1fY2FsbGJhY2tzLT5vbkVycm9yKFdlYklEQkRhdGFiYXNlRXJyb3IoaWRi
RGF0YWJhc2VFcnJvcikpOwogfQogCiB2b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3Mo
UGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBpZGJDdXJzb3JCYWNrZW5kLCBQ
YXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSwgUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlKQogeworICAgIG1fZGlkQ29tcGxl
dGUgPSB0cnVlOwogICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MobmV3IFdlYklEQkN1cnNvcklt
cGwoaWRiQ3Vyc29yQmFja2VuZCksIGtleSwgcHJpbWFyeUtleSwgdmFsdWUpOwogfQogCiB2b2lk
IElEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tl
bmRJbnRlcmZhY2U+IGJhY2tlbmQpCiB7CiAgICAgQVNTRVJUKG1fZGF0YWJhc2VDYWxsYmFja3Mu
Z2V0KCkpOworICAgIG1fZGlkQ29tcGxldGUgPSB0cnVlOwogICAgIG1fY2FsbGJhY2tzLT5vblN1
Y2Nlc3MobmV3IFdlYklEQkRhdGFiYXNlSW1wbChiYWNrZW5kLCBtX2RhdGFiYXNlQ2FsbGJhY2tz
LnJlbGVhc2UoKSkpOwogfQogCiB2b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3MoUGFz
c1JlZlB0cjxJREJLZXk+IGlkYktleSkKIHsKKyAgICBtX2RpZENvbXBsZXRlID0gdHJ1ZTsKICAg
ICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKFdlYklEQktleShpZGJLZXkpKTsKIH0KIAogdm9pZCBJ
REJDYWxsYmFja3NQcm94eTo6b25TdWNjZXNzKFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gZG9t
U3RyaW5nTGlzdCkKIHsKKyAgICBtX2RpZENvbXBsZXRlID0gdHJ1ZTsKICAgICBtX2NhbGxiYWNr
cy0+b25TdWNjZXNzKFdlYkRPTVN0cmluZ0xpc3QoZG9tU3RyaW5nTGlzdCkpOwogfQogCiB2b2lk
IElEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkKIHsKKyAgICBtX2RpZENvbXBsZXRlID0gdHJ1
ZTsKICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShz
ZXJpYWxpemVkU2NyaXB0VmFsdWUpKTsKIH0KIAogdm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25T
dWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkU2NyaXB0
VmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgp
CiB7CiAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhzZXJpYWxpemVkU2NyaXB0VmFsdWUsIGtl
eSwga2V5UGF0aCk7CisgICAgbV9kaWRDb21wbGV0ZSA9IHRydWU7CiB9CiAKIHZvaWQgSURCQ2Fs
bGJhY2tzUHJveHk6Om9uU3VjY2VzcyhpbnQ2NF90IHZhbHVlKQogeworICAgIG1fZGlkQ29tcGxl
dGUgPSB0cnVlOwogICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3ModmFsdWUpOwogfQogCiB2b2lk
IElEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3MoKQogeworICAgIG1fZGlkQ29tcGxldGUgPSB0
cnVlOwogICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MoKTsKIH0KIAogdm9pZCBJREJDYWxsYmFj
a3NQcm94eTo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8SURC
S2V5PiBwcmltYXJ5S2V5LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUp
CiB7CisgICAgbV9kaWRDb21wbGV0ZSA9IHRydWU7CiAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2Vz
cyhrZXksIHByaW1hcnlLZXksIHZhbHVlKTsKIH0KIAogdm9pZCBJREJDYWxsYmFja3NQcm94eTo6
b25TdWNjZXNzV2l0aFByZWZldGNoKGNvbnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+JiBrZXlz
LCBjb25zdCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiYgcHJpbWFyeUtleXMsIGNvbnN0IFZlY3Rv
cjxSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiA+JiB2YWx1ZXMpCiB7CisgICAgbV9kaWRD
b21wbGV0ZSA9IHRydWU7CiAgICAgY29uc3Qgc2l6ZV90IG4gPSBrZXlzLnNpemUoKTsKIAogICAg
IFdlYlZlY3RvcjxXZWJJREJLZXk+IHdlYktleXMobik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuaAppbmRleCA2NWYzYjc0MGE4MmVlOGFlMmQ4MmIw
MjU5MjNiZTBlNjRlMGE0MTVhLi44Yzk5NThlN2QyMTJlM2ZkMzIwYzI3YTY4ZDYzYzk0ZDY0MWI1
ZjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5
LmgKQEAgLTY4LDYgKzY4LDcgQEAgcHJpdmF0ZToKIAogICAgIE93blB0cjxXZWJJREJDYWxsYmFj
a3M+IG1fY2FsbGJhY2tzOwogICAgIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5PiBt
X2RhdGFiYXNlQ2FsbGJhY2tzOworICAgIGJvb2wgbV9kaWRDb21wbGV0ZTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181082</attachid>
            <date>2013-01-02 15:27:25 -0800</date>
            <delta_ts>2013-01-02 17:13:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103536-20130102152433.patch</filename>
            <type>text/plain</type>
            <size>20630</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4NTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzBkOTk5YzYxN2YxYWIx
MDIyNTViNzI2MTdlYWVkMmVjMDQ0NWEwOS4uNzBjNjI2YzcxZTc2YjM1NWI4NTZmZDU5Yjg1ZDIw
YmFhMGYzOTk4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTEyLTAzICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBNYWtl
IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnNjaGVkdWxlVGFzaydzIHJldHVybiB0eXBlIHZv
aWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzUz
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUg
cmVzcG9uc2liaWxpdHkgZm9yIGZpcmluZyBhYm9ydCBlcnJvcnMgZnJvbSByZXF1ZXN0cyB0aGF0
IGFycml2ZSBvbiB0aGUKKyAgICAgICAgYmFjay1lbmQgYWZ0ZXIgYW4gYXN5bmNocm9ub3VzIHRy
YW5zYWN0aW9uIGFib3J0IG91dCBvZiBXZWJDb3JlLCBzaW5jZSB0aGUKKyAgICAgICAgZnJvbnQt
ZW5kIHRha2VzIGNhcmUgb2YgdGhpcyBhcyBmYXIgYXMgc2NyaXB0IGlzIGNvbmNlcm5lZC4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMgLSAgbm8gYmVoYXZpb3IgY2hhbmdlcy4KKworICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklEQkN1cnNvckJhY2tlbmRJbXBsOjpjb250aW51ZUZ1bmN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkN1cnNvckJhY2tlbmRJbXBsOjphZHZhbmNlKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkN1cnNvckJhY2tlbmRJbXBsOjpwcmVmZXRjaENvbnRpbnVlKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQkluZGV4QmFja2VuZEltcGw6Om9wZW5DdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6
SURCSW5kZXhCYWNrZW5kSW1wbDo6b3BlbktleUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJ
REJJbmRleEJhY2tlbmRJbXBsOjpjb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleEJh
Y2tlbmRJbXBsOjpnZXQpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW1wbDo6
Z2V0S2V5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6
OmdldCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpwdXQp
OgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlRnVu
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y2xl
YXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6b3BlbkN1
cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjb3Vu
dCk6CisKIDIwMTItMTItMjggIFJhZmFlbCBXZWluc3RlaW4gIDxyYWZhZWx3QGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBbVGVtcGxhdGVzXTogRml4IGFzc2VydCBpbiBjb2xncm91cCBwYXJzZSBo
YW5kbGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA5NTQzNTVhYzVmN2ZjOTFiZTcw
ZTMzYWJjMmFhOTQ3YzIxMDE2MzdjLi4zNmQ4ZDY5ZTRmOTY1ZTJiNzgzZWI5ZjY0YTlhMzQxMTVj
ZjgzODJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEy
LTEyLTAzICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5k
ZXhlZERCOiBNYWtlIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnNjaGVkdWxlVGFzaydzIHJl
dHVybiB0eXBlIHZvaWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwMzUzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRyYWNrIHdoZXRoZXIgSURCQ2FsbGJhY2tzIGhhcyBmaXJlZCBiZWZvcmUgYmVpbmcg
ZGVzdHJ1Y3RlZC4gSWYgbm90IGl0IHByb2JhYmx5CisgICAgICAgIGNhbWUgaW4gYWZ0ZXIgYSB0
cmFuc2FjdGlvbiBoYWQgYXN5bmNocm9ub3VzbHkgYWJvcnRlZDsgZmlyZSBhbiBhYm9ydCBlcnJv
ciB3aGljaAorICAgICAgICB3aWxsIGJlIGlnbm9yZWQgb24gdGhlIGZyb250LWVuZCBidXQgd2ls
bCBjbGVhbiB1cCBsaW5nZXJpbmcgSVBDIHRyYWNraW5nLgorCisgICAgICAgICogcHVibGljL1dl
YklEQkRhdGFiYXNlRXhjZXB0aW9uLmg6CisgICAgICAgICogc3JjL0Fzc2VydE1hdGNoaW5nRW51
bXMuY3BwOgorICAgICAgICAqIHNyYy9JREJDYWxsYmFja3NQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OklEQkNhbGxiYWNrc1Byb3h5OjpJREJDYWxsYmFja3NQcm94eSk6CisgICAgICAgIChX
ZWJLaXQ6OklEQkNhbGxiYWNrc1Byb3h5Ojp+SURCQ2FsbGJhY2tzUHJveHkpOgorICAgICAgICAo
V2ViS2l0OjpJREJDYWxsYmFja3NQcm94eTo6b25FcnJvcik6CisgICAgICAgIChXZWJLaXQ6OklE
QkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3MpOgorICAgICAgICAqIHNyYy9JREJDYWxsYmFja3NQ
cm94eS5oOgorICAgICAgICAoSURCQ2FsbGJhY2tzUHJveHkpOgorCiAyMDEyLTEyLTI4ICBGYWR5
IFNhbXVlbCAgPGZzYW11ZWxAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJvbGwgQ2hyb21pdW0g
REVQUyB0byByMTc0NzM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAKaW5kZXggNWViNmRjMjc2Nzk3NmJlNDc4
NzE2YzcwYjc1NWE5N2Q1MzllNjkwYi4uZGE3YWRjZjg5NTVkMDMzMmJhMjc0ZWYwNjJkNjcyODY1
MTI3YjJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
Q3Vyc29yQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcApAQCAtMTI3LDE3ICsxMjcsMTQgQEAgdm9pZCBJ
REJDdXJzb3JCYWNrZW5kSW1wbDo6Y29udGludWVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktleT4g
a2V5LCBQYXNzUmVmUHRyPEkKIHsKICAgICBJREJfVFJBQ0UoIklEQkN1cnNvckJhY2tlbmRJbXBs
Ojpjb250aW51ZSIpOwogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENh
bGxiYWNrczsKLSAgICBpZiAoIW1fdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhtX3Rhc2tUeXBl
LCBDdXJzb3JJdGVyYXRpb25PcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBrZXksIGNhbGxiYWNrcykp
KQotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpBYm9ydEVycm9yKSk7CisgICAgbV90cmFuc2FjdGlvbi0+c2No
ZWR1bGVUYXNrKG1fdGFza1R5cGUsIEN1cnNvckl0ZXJhdGlvbk9wZXJhdGlvbjo6Y3JlYXRlKHRo
aXMsIGtleSwgY2FsbGJhY2tzKSk7CiB9CiAKIHZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OmFk
dmFuY2UodW5zaWduZWQgbG9uZyBjb3VudCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENh
bGxiYWNrcywgRXhjZXB0aW9uQ29kZSYpCiB7CiAgICAgSURCX1RSQUNFKCJJREJDdXJzb3JCYWNr
ZW5kSW1wbDo6YWR2YW5jZSIpOwogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9
IHBycENhbGxiYWNrczsKLQotICAgIGlmICghbV90cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKEN1
cnNvckFkdmFuY2VPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBjb3VudCwgY2FsbGJhY2tzKSkpCi0g
ICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0
YWJhc2VFeGNlcHRpb246OkFib3J0RXJyb3IpKTsKKyAgICBtX3RyYW5zYWN0aW9uLT5zY2hlZHVs
ZVRhc2soQ3Vyc29yQWR2YW5jZU9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIGNvdW50LCBjYWxsYmFj
a3MpKTsKIH0KIAogdm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6Q3Vyc29yQWR2YW5jZU9wZXJh
dGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKikKQEAgLTE4MSw4ICsxNzgs
NyBAQCB2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpwcmVmZXRjaENvbnRpbnVlKGludCBudW1i
ZXJUb0ZldGNoLCBQYXNzUmVmUHRyPElEQkNhbAogewogICAgIElEQl9UUkFDRSgiSURCQ3Vyc29y
QmFja2VuZEltcGw6OnByZWZldGNoQ29udGludWUiKTsKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tz
PiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7Ci0gICAgaWYgKCFtX3RyYW5zYWN0aW9uLT5zY2hl
ZHVsZVRhc2sobV90YXNrVHlwZSwgQ3Vyc29yUHJlZmV0Y2hJdGVyYXRpb25PcGVyYXRpb246OmNy
ZWF0ZSh0aGlzLCBudW1iZXJUb0ZldGNoLCBjYWxsYmFja3MpKSkKLSAgICAgICAgY2FsbGJhY2tz
LT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
QWJvcnRFcnJvcikpOworICAgIG1fdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhtX3Rhc2tUeXBl
LCBDdXJzb3JQcmVmZXRjaEl0ZXJhdGlvbk9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIG51bWJlclRv
RmV0Y2gsIGNhbGxiYWNrcykpOwogfQogCiB2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpDdXJz
b3JQcmVmZXRjaEl0ZXJhdGlvbk9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsKikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkluZGV4QmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCSW5kZXhCYWNrZW5kSW1wbC5jcHAKaW5kZXggMjQ2Njg0OTA2MWVmODYxMTU2ZDhiNDAwMTM3
YTRjODg4ZWE5ZTc1Yy4uZTkyMzQ0NzQ5MzFiYzY3MGJlN2Y5MGIzZjFjMzVjMjkxYzEzODAyYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNr
ZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5k
ZXhCYWNrZW5kSW1wbC5jcHAKQEAgLTE3MCw4ICsxNzAsNyBAQCB2b2lkIElEQkluZGV4QmFja2Vu
ZEltcGw6Om9wZW5DdXJzb3IoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIHVuc2ln
bmVkCiAgICAgSURCX1RSQUNFKCJJREJJbmRleEJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29yIik7CiAg
ICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOwogICAgIFJl
ZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGw6OmZyb20odHJhbnNhY3Rpb25QdHIpOwotICAgIGlmICghdHJhbnNhY3Rp
b24tPnNjaGVkdWxlVGFzayhPcGVuSW5kZXhDdXJzb3JPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBr
ZXlSYW5nZSwgZGlyZWN0aW9uLCBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpLZXlBbmRWYWx1
ZSwgY2FsbGJhY2tzKSkpCi0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVy
cm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkFib3J0RXJyb3IpKTsKKyAgICB0cmFu
c2FjdGlvbi0+c2NoZWR1bGVUYXNrKE9wZW5JbmRleEN1cnNvck9wZXJhdGlvbjo6Y3JlYXRlKHRo
aXMsIGtleVJhbmdlLCBkaXJlY3Rpb24sIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OktleUFu
ZFZhbHVlLCBjYWxsYmFja3MpKTsKIH0KIAogdm9pZCBJREJJbmRleEJhY2tlbmRJbXBsOjpvcGVu
S2V5Q3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCB1bnNpZ25lZCBzaG9y
dCBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIElEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUm
KQpAQCAtMTc5LDggKzE3OCw3IEBAIHZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6b3BlbktleUN1
cnNvcihQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgdW5zaWduCiAgICAgSURCX1RS
QUNFKCJJREJJbmRleEJhY2tlbmRJbXBsOjpvcGVuS2V5Q3Vyc29yIik7CiAgICAgUmVmUHRyPElE
QkNhbGxiYWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOwogICAgIFJlZlB0cjxJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uQmFja2VuZElt
cGw6OmZyb20odHJhbnNhY3Rpb25QdHIpOwotICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxl
VGFzayhPcGVuSW5kZXhDdXJzb3JPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBrZXlSYW5nZSwgZGly
ZWN0aW9uLCBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpLZXlPbmx5LCBjYWxsYmFja3MpKSkK
LSAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6QWJvcnRFcnJvcikpOworICAgIHRyYW5zYWN0aW9uLT5zY2hlZHVs
ZVRhc2soT3BlbkluZGV4Q3Vyc29yT3BlcmF0aW9uOjpjcmVhdGUodGhpcywga2V5UmFuZ2UsIGRp
cmVjdGlvbiwgSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6S2V5T25seSwgY2FsbGJhY2tzKSk7
CiB9CiAKIHZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6SW5kZXhDb3VudE9wZXJhdGlvbjo6cGVy
Zm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbikKQEAgLTIwNiw4ICsy
MDQsNyBAQCB2b2lkIElEQkluZGV4QmFja2VuZEltcGw6OmNvdW50KFBhc3NSZWZQdHI8SURCS2V5
UmFuZ2U+IHJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbAogICAgIElEQl9UUkFDRSgiSURCSW5kZXhC
YWNrZW5kSW1wbDo6Y291bnQiKTsKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3Mg
PSBwcnBDYWxsYmFja3M7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRy
YW5zYWN0aW9uID0gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6ZnJvbSh0cmFuc2FjdGlvblB0
cik7Ci0gICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKEluZGV4Q291bnRPcGVyYXRp
b246OmNyZWF0ZSh0aGlzLCByYW5nZSwgY2FsbGJhY2tzKSkpCi0gICAgICAgIGNhbGxiYWNrcy0+
b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkFi
b3J0RXJyb3IpKTsKKyAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKEluZGV4Q291bnRPcGVy
YXRpb246OmNyZWF0ZSh0aGlzLCByYW5nZSwgY2FsbGJhY2tzKSk7CiB9CiAKIHZvaWQgSURCSW5k
ZXhCYWNrZW5kSW1wbDo6SW5kZXhSZWZlcmVuY2VkVmFsdWVSZXRyaWV2YWxPcGVyYXRpb246OnBl
cmZvcm0oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24pCkBAIC0yODMsOCAr
MjgwLDcgQEAgdm9pZCBJREJJbmRleEJhY2tlbmRJbXBsOjpnZXQoUGFzc1JlZlB0cjxJREJLZXlS
YW5nZT4ga2V5UmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2EKICAgICBJREJfVFJBQ0UoIklEQkluZGV4
QmFja2VuZEltcGw6OmdldCIpOwogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9
IHBycENhbGxiYWNrczsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJh
bnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpmcm9tKHRyYW5zYWN0aW9uUHRy
KTsKLSAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soSW5kZXhSZWZlcmVuY2VkVmFs
dWVSZXRyaWV2YWxPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBrZXlSYW5nZSwgY2FsbGJhY2tzKSkp
Ci0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURC
RGF0YWJhc2VFeGNlcHRpb246OkFib3J0RXJyb3IpKTsKKyAgICB0cmFuc2FjdGlvbi0+c2NoZWR1
bGVUYXNrKEluZGV4UmVmZXJlbmNlZFZhbHVlUmV0cmlldmFsT3BlcmF0aW9uOjpjcmVhdGUodGhp
cywga2V5UmFuZ2UsIGNhbGxiYWNrcykpOwogfQogCiB2b2lkIElEQkluZGV4QmFja2VuZEltcGw6
OmdldEtleShQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+IHBycENhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0
cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9uQ29kZSYpCkBAIC0yOTIsOCArMjg4LDcgQEAgdm9pZCBJ
REJJbmRleEJhY2tlbmRJbXBsOjpnZXRLZXkoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFu
Z2UsIFBhc3NSZWZQdHI8SUQKICAgICBJREJfVFJBQ0UoIklEQkluZGV4QmFja2VuZEltcGw6Omdl
dEtleSIpOwogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNr
czsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpmcm9tKHRyYW5zYWN0aW9uUHRyKTsKLSAgICBpZiAo
IXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soSW5kZXhWYWx1ZVJldHJpZXZhbE9wZXJhdGlvbjo6
Y3JlYXRlKHRoaXMsIGtleVJhbmdlLCBjYWxsYmFja3MpKSkKLSAgICAgICAgY2FsbGJhY2tzLT5v
bkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6QWJv
cnRFcnJvcikpOworICAgIHRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soSW5kZXhWYWx1ZVJldHJp
ZXZhbE9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIGtleVJhbmdlLCBjYWxsYmFja3MpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAppbmRleCBh
MmVkZjRhZWJiNjJiNDgyNjMxNTFlNjJjNzAyNjk3MzY0MTJlMTMwLi4zYzJkOWI3MDczMDhkOThi
YzM5OTRhMGMwZWQ2YjgxYTQ5ZWUzOTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcApA
QCAtMjg5LDggKzI4OSw3IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Z2V0KFBh
c3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBQYXNzUmVmUHRyCiAgICAgSURCX1RSQUNF
KCJJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpnZXQiKTsKICAgICBSZWZQdHI8SURCQ2FsbGJh
Y2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGw+IHRyYW5zYWN0aW9uID0gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6ZnJv
bSh0cmFuc2FjdGlvblB0cik7Ci0gICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKE9i
amVjdFN0b3JlUmV0cmlldmFsT3BlcmF0aW9uOjpjcmVhdGUodGhpcywga2V5UmFuZ2UsIGNhbGxi
YWNrcykpKQotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3Jl
YXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpBYm9ydEVycm9yKSk7CisgICAgdHJhbnNhY3Rpb24t
PnNjaGVkdWxlVGFzayhPYmplY3RTdG9yZVJldHJpZXZhbE9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMs
IGtleVJhbmdlLCBjYWxsYmFja3MpKTsKIH0KIAogdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsOjpPYmplY3RTdG9yZVJldHJpZXZhbE9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbikKQEAgLTMzOSw4ICszMzgsNyBAQCB2b2lkIElEQk9i
amVjdFN0b3JlQmFja2VuZEltcGw6OnB1dChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gdmFsdWUsIFBhcwogCiAgICAgQVNTRVJUKGF1dG9JbmNyZW1lbnQoKSB8fCBrZXkuZ2V0KCkp
OwogCi0gICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKE9iamVjdFN0b3JlU3RvcmFn
ZU9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIHZhbHVlLCBrZXksIHB1dE1vZGUsIGNhbGxiYWNrcywg
bmV3SW5kZXhJZHMucmVsZWFzZSgpLCBuZXdJbmRleEtleXMucmVsZWFzZSgpKSkpCi0gICAgICAg
IGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VF
eGNlcHRpb246OkFib3J0RXJyb3IpKTsKKyAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKE9i
amVjdFN0b3JlU3RvcmFnZU9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIHZhbHVlLCBrZXksIHB1dE1v
ZGUsIGNhbGxiYWNrcywgbmV3SW5kZXhJZHMucmVsZWFzZSgpLCBuZXdJbmRleEtleXMucmVsZWFz
ZSgpKSk7CiB9CiAKIGJvb2wgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6SW5kZXhXcml0ZXI6
OnZlcmlmeUluZGV4S2V5cyhJREJCYWNraW5nU3RvcmUmIGJhY2tpbmdTdG9yZSwgSURCQmFja2lu
Z1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGJvb2wmIGNhbkFkZEtleXMsIGNv
bnN0IElEQktleSogcHJpbWFyeUtleSwgU3RyaW5nKiBlcnJvck1lc3NhZ2UpIGNvbnN0CkBAIC01
NTUsMTYgKzU1MywxMyBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Ok9iamVjdFN0
b3JlU3RvcmFnZU9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdAogICAgIG1fY2FsbGJhY2tz
LT5vblN1Y2Nlc3MobV9rZXkucmVsZWFzZSgpKTsKIH0KIAotdm9pZCBJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsOjpkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5n
ZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9uQ29kZSYpCit2b2lkIElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5
UmFuZ2U+IGtleVJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBFeGNlcHRpb25Db2Rl
JikKIHsKICAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZSIp
OwogCiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uID0g
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6ZnJvbSh0cmFuc2FjdGlvblB0cik7CiAgICAgQVNT
RVJUKHRyYW5zYWN0aW9uLT5tb2RlKCkgIT0gSURCVHJhbnNhY3Rpb246OlJFQURfT05MWSk7Ci0g
ICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOwotCi0gICAg
aWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKE9iamVjdFN0b3JlRGVsZXRpb25PcGVyYXRp
b246OmNyZWF0ZSh0aGlzLCBrZXlSYW5nZSwgY2FsbGJhY2tzKSkpCi0gICAgICAgIGNhbGxiYWNr
cy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246
OkFib3J0RXJyb3IpKTsKKyAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKE9iamVjdFN0b3Jl
RGVsZXRpb25PcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBrZXlSYW5nZSwgY2FsbGJhY2tzKSk7CiB9
CiAKIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6T2JqZWN0U3RvcmVEZWxldGlvbk9w
ZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbikK
QEAgLTU4MywxNiArNTc4LDEzIEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6T2Jq
ZWN0U3RvcmVEZWxldGlvbk9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjCiAgICAgbV9jYWxs
YmFja3MtPm9uU3VjY2VzcygpOwogfQogCi12b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6
OmNsZWFyKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmKQordm9p
ZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjbGVhcihQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4gY2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9u
UHRyLCBFeGNlcHRpb25Db2RlJikKIHsKICAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGw6OmNsZWFyIik7CiAKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1w
bD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpmcm9tKHRyYW5zYWN0
aW9uUHRyKTsKICAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSAhPSBJREJUcmFuc2FjdGlv
bjo6UkVBRF9PTkxZKTsKLSAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBD
YWxsYmFja3M7Ci0KLSAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soT2JqZWN0U3Rv
cmVDbGVhck9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIGNhbGxiYWNrcykpKQotICAgICAgICBjYWxs
YmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpBYm9ydEVycm9yKSk7CisgICAgdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhPYmplY3RT
dG9yZUNsZWFyT3BlcmF0aW9uOjpjcmVhdGUodGhpcywgY2FsbGJhY2tzKSk7CiB9CiAKIHZvaWQg
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6T2JqZWN0U3RvcmVDbGVhck9wZXJhdGlvbjo6cGVy
Zm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbikKQEAgLTY2NSw5ICs2
NTcsNyBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Om9wZW5DdXJzb3IoUGFzc1Jl
ZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIElEQkN1cgogICAgIElEQl9UUkFDRSgiSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbDo6b3BlbkN1cnNvciIpOwogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+
IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpmcm9tKHRy
YW5zYWN0aW9uUHRyKTsKLSAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soT3Blbk9i
amVjdFN0b3JlQ3Vyc29yT3BlcmF0aW9uOjpjcmVhdGUodGhpcywgcmFuZ2UsIGRpcmVjdGlvbiwg
Y2FsbGJhY2tzLCB0YXNrVHlwZSkpKSB7Ci0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJE
YXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkFib3J0RXJyb3IpKTsK
LSAgICB9CisgICAgdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhPcGVuT2JqZWN0U3RvcmVDdXJz
b3JPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCByYW5nZSwgZGlyZWN0aW9uLCBjYWxsYmFja3MsIHRh
c2tUeXBlKSk7CiB9CiAKIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6T3Blbk9iamVj
dFN0b3JlQ3Vyc29yT3BlcmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwq
IHRyYW5zYWN0aW9uKQpAQCAtNjk1LDggKzY4NSw3IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbDo6Y291bnQoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIFBhc3NSZWZQdHI8
CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjb3VudCIpOwogICAg
IFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKICAgICBSZWZQ
dHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbXBsOjpmcm9tKHRyYW5zYWN0aW9uUHRyKTsKLSAgICBpZiAoIXRyYW5zYWN0aW9u
LT5zY2hlZHVsZVRhc2soT2JqZWN0U3RvcmVDb3VudE9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIHJh
bmdlLCBjYWxsYmFja3MpKSkKLSAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNl
RXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6QWJvcnRFcnJvcikpOworICAgIHRy
YW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soT2JqZWN0U3RvcmVDb3VudE9wZXJhdGlvbjo6Y3JlYXRl
KHRoaXMsIHJhbmdlLCBjYWxsYmFja3MpKTsKIH0KIAogdm9pZCBJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsOjpPYmplY3RTdG9yZUNvdW50T3BlcmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGwqIHRyYW5zYWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2VFeGNlcHRpb24uaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlRXhjZXB0aW9uLmgKaW5kZXggOGMwMGEwZjAyZTUw
YWI1OGM3MTFlNDBjZWNiZTIzZDU0NWJhZjE4ZC4uZjA5YTFhYWNiMGFkOTJlOThhYTNkMTI0OGVh
YWVlZDg3YjkwZjM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViSURCRGF0YWJhc2VFeGNlcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJJREJEYXRhYmFzZUV4Y2VwdGlvbi5oCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBlbnVtIFdlYklEQkRhdGFiYXNlRXhjZXB0aW9uIHsKICAgICBXZWJJREJE
YXRhYmFzZUV4Y2VwdGlvbkRhdGFFcnJvciA9IDEyMDMsCisgICAgV2ViSURCRGF0YWJhc2VFeGNl
cHRpb25BYm9ydEVycm9yID0gMTIxMCwKICAgICBXZWJJREJEYXRhYmFzZUV4Y2VwdGlvblF1b3Rh
RXJyb3IgPSAxMjEyLAogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9B
c3NlcnRNYXRjaGluZ0VudW1zLmNwcAppbmRleCA5MGM2MzI5NjJkYzA3MWMzMDI3ZDM1MWFiNDhk
OWM1YjVjM2EyMDdhLi5hZDI4ZTJlYmI1Njc5NDVlY2M5OTNkZjE0NmU0YmY2YzljZWU1MmUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1z
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1z
LmNwcApAQCAtNDc5LDEwICs0NzksMTEgQEAgQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShX
ZWJWaWV3OjpVc2VyQ29udGVudEluamVjdEluVG9wRnJhbWVPbmx5LCBJbmplY3RJblQKIENPTVBJ
TEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViVmlldzo6VXNlclN0eWxlSW5qZWN0SW5FeGlzdGlu
Z0RvY3VtZW50cywgSW5qZWN0SW5FeGlzdGluZ0RvY3VtZW50cyk7CiBDT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKFdlYlZpZXc6OlVzZXJTdHlsZUluamVjdEluU3Vic2VxdWVudERvY3VtZW50
cywgSW5qZWN0SW5TdWJzZXF1ZW50RG9jdW1lbnRzKTsKIAorI2lmIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJEYXRhYmFzZUV4Y2Vw
dGlvbkRhdGFFcnJvciwgSURCRGF0YWJhc2VFeGNlcHRpb246OkRhdGFFcnJvcik7CitDT01QSUxF
X0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYklEQkRhdGFiYXNlRXhjZXB0aW9uQWJvcnRFcnJvciwg
SURCRGF0YWJhc2VFeGNlcHRpb246OkFib3J0RXJyb3IpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTShXZWJJREJEYXRhYmFzZUV4Y2VwdGlvblF1b3RhRXJyb3IsIElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpRdW90YUV4Y2VlZGVkRXJyb3IpOwogCi0jaWYgRU5BQkxFKElOREVYRURfREFUQUJB
U0UpCiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYklEQktleTo6SW52YWxpZFR5cGUs
IElEQktleTo6SW52YWxpZFR5cGUpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJ
REJLZXk6OkFycmF5VHlwZSwgSURCS2V5OjpBcnJheVR5cGUpOwogQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShXZWJJREJLZXk6OlN0cmluZ1R5cGUsIElEQktleTo6U3RyaW5nVHlwZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAKaW5k
ZXggMTYwMTg0YmQ5ODU0MGQ4MjQ5MmUxYzA1OGE0MWJjZDVhZTIxMTc5MC4uZjY5ZThiMDc4MjA1
ZmUzMTljN2JiNTkxOTliMzgwYmIxN2JhODkzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1
ZGUgIldlYklEQkN1cnNvckltcGwuaCIKICNpbmNsdWRlICJXZWJJREJEYXRhYmFzZUNhbGxiYWNr
cy5oIgogI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlRXJyb3IuaCIKKyNpbmNsdWRlICJXZWJJREJE
YXRhYmFzZUV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlSW1wbC5oIgogI2lu
Y2x1ZGUgIldlYklEQktleS5oIgogI2luY2x1ZGUgIldlYklEQlRyYW5zYWN0aW9uSW1wbC5oIgpA
QCAtNTksNjggKzYwLDgzIEBAIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzUHJveHk+IElEQkNhbGxi
YWNrc1Byb3h5OjpjcmVhdGUoUGFzc093blB0cjxXZWJJREJDYWxsYmFjCiAKIElEQkNhbGxiYWNr
c1Byb3h5OjpJREJDYWxsYmFja3NQcm94eShQYXNzT3duUHRyPFdlYklEQkNhbGxiYWNrcz4gY2Fs
bGJhY2tzKQogICAgIDogbV9jYWxsYmFja3MoY2FsbGJhY2tzKQorICAgICwgbV9kaWRDb21wbGV0
ZShmYWxzZSkKICAgICAsIG1fZGlkQ3JlYXRlUHJveHkoZmFsc2UpCiB7CiB9CiAKIElEQkNhbGxi
YWNrc1Byb3h5Ojp+SURCQ2FsbGJhY2tzUHJveHkoKQogeworICAgIC8vIFRoaXMgY2xlYW5zIHVw
IHRoZSByZXF1ZXN0J3MgSVBDIGlkLgorICAgIGlmICghbV9kaWRDb21wbGV0ZSkKKyAgICAgICAg
bV9jYWxsYmFja3MtPm9uRXJyb3IoV2ViSURCRGF0YWJhc2VFcnJvcihXZWJJREJEYXRhYmFzZUV4
Y2VwdGlvbkFib3J0RXJyb3IsIFdlYlN0cmluZygpKSk7CiB9CiAKIHZvaWQgSURCQ2FsbGJhY2tz
UHJveHk6Om9uRXJyb3IoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPiBpZGJEYXRhYmFzZUVy
cm9yKQogeworICAgIG1fZGlkQ29tcGxldGUgPSB0cnVlOwogICAgIG1fY2FsbGJhY2tzLT5vbkVy
cm9yKFdlYklEQkRhdGFiYXNlRXJyb3IoaWRiRGF0YWJhc2VFcnJvcikpOwogfQogCiB2b2lkIElE
QkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50
ZXJmYWNlPiBpZGJDdXJzb3JCYWNrZW5kLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVm
UHRyPElEQktleT4gcHJpbWFyeUtleSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IHZhbHVlKQogeworICAgIG1fZGlkQ29tcGxldGUgPSB0cnVlOwogICAgIG1fY2FsbGJhY2tzLT5v
blN1Y2Nlc3MobmV3IFdlYklEQkN1cnNvckltcGwoaWRiQ3Vyc29yQmFja2VuZCksIGtleSwgcHJp
bWFyeUtleSwgdmFsdWUpOwogfQogCiB2b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3Mo
UGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQpCiB7CiAgICAg
QVNTRVJUKG1fZGF0YWJhc2VDYWxsYmFja3MuZ2V0KCkpOworICAgIG1fZGlkQ29tcGxldGUgPSB0
cnVlOwogICAgIFdlYklEQkRhdGFiYXNlSW1wbCogaW1wbCA9IG1fZGlkQ3JlYXRlUHJveHkgPyAw
IDogbmV3IFdlYklEQkRhdGFiYXNlSW1wbChiYWNrZW5kLCBtX2RhdGFiYXNlQ2FsbGJhY2tzLnJl
bGVhc2UoKSk7CiAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhpbXBsKTsKIH0KIAogdm9pZCBJ
REJDYWxsYmFja3NQcm94eTo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5PiBpZGJLZXkpCiB7
CisgICAgbV9kaWRDb21wbGV0ZSA9IHRydWU7CiAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhX
ZWJJREJLZXkoaWRiS2V5KSk7CiB9CiAKIHZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uU3VjY2Vz
cyhQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGRvbVN0cmluZ0xpc3QpCiB7CisgICAgbV9kaWRD
b21wbGV0ZSA9IHRydWU7CiAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhXZWJET01TdHJpbmdM
aXN0KGRvbVN0cmluZ0xpc3QpKTsKIH0KIAogdm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25TdWNj
ZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkU2NyaXB0VmFs
dWUpCiB7CisgICAgbV9kaWRDb21wbGV0ZSA9IHRydWU7CiAgICAgbV9jYWxsYmFja3MtPm9uU3Vj
Y2VzcyhXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUoc2VyaWFsaXplZFNjcmlwdFZhbHVlKSk7CiB9
CiAKIHZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBQYXNzUmVmUHRyPElEQktleT4g
a2V5LCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKQogewogICAgIG1fY2FsbGJhY2tzLT5vblN1
Y2Nlc3Moc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBrZXksIGtleVBhdGgpOworICAgIG1fZGlkQ29t
cGxldGUgPSB0cnVlOwogfQogCiB2b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3MoaW50
NjRfdCB2YWx1ZSkKIHsKKyAgICBtX2RpZENvbXBsZXRlID0gdHJ1ZTsKICAgICBtX2NhbGxiYWNr
cy0+b25TdWNjZXNzKHZhbHVlKTsKIH0KIAogdm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25TdWNj
ZXNzKCkKIHsKKyAgICBtX2RpZENvbXBsZXRlID0gdHJ1ZTsKICAgICBtX2NhbGxiYWNrcy0+b25T
dWNjZXNzKCk7CiB9CiAKIHZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uU3VjY2VzcyhQYXNzUmVm
UHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSwgUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlKQogeworICAgIG1fZGlkQ29tcGxldGUgPSB0
cnVlOwogICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3Moa2V5LCBwcmltYXJ5S2V5LCB2YWx1ZSk7
CiB9CiAKIHZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uU3VjY2Vzc1dpdGhQcmVmZXRjaChjb25z
dCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiYga2V5cywgY29uc3QgVmVjdG9yPFJlZlB0cjxJREJL
ZXk+ID4mIHByaW1hcnlLZXlzLCBjb25zdCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gPiYgdmFsdWVzKQogeworICAgIG1fZGlkQ29tcGxldGUgPSB0cnVlOwogICAgIGNvbnN0
IHNpemVfdCBuID0ga2V5cy5zaXplKCk7CiAKICAgICBXZWJWZWN0b3I8V2ViSURCS2V5PiB3ZWJL
ZXlzKG4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJh
Y2tzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5
LmgKaW5kZXggZTRlODg0M2Q2MTQ1YjMzMzYyMzhiYzJkYjU3Y2I0MzE4YTA0NWRlNi4uZTY5ZDU5
NzEwYTc0ODYxZmRhMTVjNGU4YTkyNDhiZTQzMGViNmNjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oCkBAIC02OCw2ICs2OCw3IEBAIHByaXZh
dGU6CiAKICAgICBPd25QdHI8V2ViSURCQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKICAgICBSZWZQ
dHI8SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eT4gbV9kYXRhYmFzZUNhbGxiYWNrczsKKyAgICBi
b29sIG1fZGlkQ29tcGxldGU7CiAgICAgYm9vbCBtX2RpZENyZWF0ZVByb3h5OwogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181116</attachid>
            <date>2013-01-02 17:13:10 -0800</date>
            <delta_ts>2013-01-03 10:25:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103536-20130102171018.patch</filename>
            <type>text/plain</type>
            <size>20612</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4NTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzBkOTk5YzYxN2YxYWIx
MDIyNTViNzI2MTdlYWVkMmVjMDQ0NWEwOS4uZTkxMDIzMDA3MzdiN2NkNTVlNWFjYTMxOTA3N2Ux
ODU1MTQ2NWY1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTEyLTAzICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBTaW1w
bGlmeSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpzY2hlZHVsZVRhc2sgdXNhZ2UKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzUzNgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgcmVzcG9uc2li
aWxpdHkgZm9yIGZpcmluZyBhYm9ydCBlcnJvcnMgZnJvbSByZXF1ZXN0cyB0aGF0IGFycml2ZSBv
biB0aGUKKyAgICAgICAgYmFjay1lbmQgYWZ0ZXIgYW4gYXN5bmNocm9ub3VzIHRyYW5zYWN0aW9u
IGFib3J0IG91dCBvZiBXZWJDb3JlLCBzaW5jZSB0aGUKKyAgICAgICAgZnJvbnQtZW5kIHRha2Vz
IGNhcmUgb2YgdGhpcyBhcyBmYXIgYXMgc2NyaXB0IGlzIGNvbmNlcm5lZC4KKworICAgICAgICBO
byBuZXcgdGVzdHMgLSAgbm8gYmVoYXZpb3IgY2hhbmdlcy4KKworICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QkN1cnNvckJhY2tlbmRJbXBsOjpjb250aW51ZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkN1cnNvckJhY2tlbmRJbXBsOjphZHZhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1
cnNvckJhY2tlbmRJbXBsOjpwcmVmZXRjaENvbnRpbnVlKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQklu
ZGV4QmFja2VuZEltcGw6Om9wZW5DdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhC
YWNrZW5kSW1wbDo6b3BlbktleUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleEJh
Y2tlbmRJbXBsOjpjb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleEJhY2tlbmRJbXBs
OjpnZXQpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW1wbDo6Z2V0S2V5KToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmdldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpwdXQpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlRnVuY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y2xlYXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6b3BlbkN1cnNvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjb3VudCk6CisKIDIw
MTItMTItMjggIFJhZmFlbCBXZWluc3RlaW4gIDxyYWZhZWx3QGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBbVGVtcGxhdGVzXTogRml4IGFzc2VydCBpbiBjb2xncm91cCBwYXJzZSBoYW5kbGluZwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA5NTQzNTVhYzVmN2ZjOTFiZTcwZTMzYWJjMmFh
OTQ3YzIxMDE2MzdjLi40YmJjZTExMjFkMDJlYjk5NjI5ZWQwNzMwZmI3NGM4YzRmMzViOTk3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTEyLTAzICBK
b3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBT
aW1wbGlmeSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpzY2hlZHVsZVRhc2sgdXNhZ2UKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzUzNgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRyYWNrIHdoZXRo
ZXIgSURCQ2FsbGJhY2tzIGhhcyBmaXJlZCBiZWZvcmUgYmVpbmcgZGVzdHJ1Y3RlZC4gSWYgbm90
IGl0IHByb2JhYmx5CisgICAgICAgIGNhbWUgaW4gYWZ0ZXIgYSB0cmFuc2FjdGlvbiBoYWQgYXN5
bmNocm9ub3VzbHkgYWJvcnRlZDsgZmlyZSBhbiBhYm9ydCBlcnJvciB3aGljaAorICAgICAgICB3
aWxsIGJlIGlnbm9yZWQgb24gdGhlIGZyb250LWVuZCBidXQgd2lsbCBjbGVhbiB1cCBsaW5nZXJp
bmcgSVBDIHRyYWNraW5nLgorCisgICAgICAgICogcHVibGljL1dlYklEQkRhdGFiYXNlRXhjZXB0
aW9uLmg6CisgICAgICAgICogc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwOgorICAgICAgICAq
IHNyYy9JREJDYWxsYmFja3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OklEQkNhbGxiYWNr
c1Byb3h5OjpJREJDYWxsYmFja3NQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OklEQkNhbGxiYWNr
c1Byb3h5Ojp+SURCQ2FsbGJhY2tzUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpJREJDYWxsYmFj
a3NQcm94eTo6b25FcnJvcik6CisgICAgICAgIChXZWJLaXQ6OklEQkNhbGxiYWNrc1Byb3h5Ojpv
blN1Y2Nlc3MpOgorICAgICAgICAqIHNyYy9JREJDYWxsYmFja3NQcm94eS5oOgorICAgICAgICAo
SURCQ2FsbGJhY2tzUHJveHkpOgorCiAyMDEyLTEyLTI4ICBGYWR5IFNhbXVlbCAgPGZzYW11ZWxA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJvbGwgQ2hyb21pdW0gREVQUyB0byByMTc0NzM5CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNr
ZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JC
YWNrZW5kSW1wbC5jcHAKaW5kZXggNWViNmRjMjc2Nzk3NmJlNDc4NzE2YzcwYjc1NWE5N2Q1Mzll
NjkwYi4uZGE3YWRjZjg5NTVkMDMzMmJhMjc0ZWYwNjJkNjcyODY1MTI3YjJiMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tl
bmRJbXBsLmNwcApAQCAtMTI3LDE3ICsxMjcsMTQgQEAgdm9pZCBJREJDdXJzb3JCYWNrZW5kSW1w
bDo6Y29udGludWVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPEkK
IHsKICAgICBJREJfVFJBQ0UoIklEQkN1cnNvckJhY2tlbmRJbXBsOjpjb250aW51ZSIpOwogICAg
IFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKLSAgICBpZiAo
IW1fdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhtX3Rhc2tUeXBlLCBDdXJzb3JJdGVyYXRpb25P
cGVyYXRpb246OmNyZWF0ZSh0aGlzLCBrZXksIGNhbGxiYWNrcykpKQotICAgICAgICBjYWxsYmFj
a3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpBYm9ydEVycm9yKSk7CisgICAgbV90cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKG1fdGFza1R5
cGUsIEN1cnNvckl0ZXJhdGlvbk9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIGtleSwgY2FsbGJhY2tz
KSk7CiB9CiAKIHZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OmFkdmFuY2UodW5zaWduZWQgbG9u
ZyBjb3VudCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgRXhjZXB0aW9u
Q29kZSYpCiB7CiAgICAgSURCX1RSQUNFKCJJREJDdXJzb3JCYWNrZW5kSW1wbDo6YWR2YW5jZSIp
OwogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKLQot
ICAgIGlmICghbV90cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKEN1cnNvckFkdmFuY2VPcGVyYXRp
b246OmNyZWF0ZSh0aGlzLCBjb3VudCwgY2FsbGJhY2tzKSkpCi0gICAgICAgIGNhbGxiYWNrcy0+
b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkFi
b3J0RXJyb3IpKTsKKyAgICBtX3RyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soQ3Vyc29yQWR2YW5j
ZU9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIGNvdW50LCBjYWxsYmFja3MpKTsKIH0KIAogdm9pZCBJ
REJDdXJzb3JCYWNrZW5kSW1wbDo6Q3Vyc29yQWR2YW5jZU9wZXJhdGlvbjo6cGVyZm9ybShJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsKikKQEAgLTE4MSw4ICsxNzgsNyBAQCB2b2lkIElEQkN1cnNv
ckJhY2tlbmRJbXBsOjpwcmVmZXRjaENvbnRpbnVlKGludCBudW1iZXJUb0ZldGNoLCBQYXNzUmVm
UHRyPElEQkNhbAogewogICAgIElEQl9UUkFDRSgiSURCQ3Vyc29yQmFja2VuZEltcGw6OnByZWZl
dGNoQ29udGludWUiKTsKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBD
YWxsYmFja3M7Ci0gICAgaWYgKCFtX3RyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2sobV90YXNrVHlw
ZSwgQ3Vyc29yUHJlZmV0Y2hJdGVyYXRpb25PcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBudW1iZXJU
b0ZldGNoLCBjYWxsYmFja3MpKSkKLSAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFi
YXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6QWJvcnRFcnJvcikpOworICAg
IG1fdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhtX3Rhc2tUeXBlLCBDdXJzb3JQcmVmZXRjaEl0
ZXJhdGlvbk9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIG51bWJlclRvRmV0Y2gsIGNhbGxiYWNrcykp
OwogfQogCiB2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpDdXJzb3JQcmVmZXRjaEl0ZXJhdGlv
bk9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1w
bC5jcHAKaW5kZXggMjQ2Njg0OTA2MWVmODYxMTU2ZDhiNDAwMTM3YTRjODg4ZWE5ZTc1Yy4uZTky
MzQ0NzQ5MzFiYzY3MGJlN2Y5MGIzZjFjMzVjMjkxYzEzODAyYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAK
QEAgLTE3MCw4ICsxNzAsNyBAQCB2b2lkIElEQkluZGV4QmFja2VuZEltcGw6Om9wZW5DdXJzb3Io
UGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIHVuc2lnbmVkCiAgICAgSURCX1RSQUNF
KCJJREJJbmRleEJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29yIik7CiAgICAgUmVmUHRyPElEQkNhbGxi
YWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmZy
b20odHJhbnNhY3Rpb25QdHIpOwotICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhP
cGVuSW5kZXhDdXJzb3JPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBrZXlSYW5nZSwgZGlyZWN0aW9u
LCBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpLZXlBbmRWYWx1ZSwgY2FsbGJhY2tzKSkpCi0g
ICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0
YWJhc2VFeGNlcHRpb246OkFib3J0RXJyb3IpKTsKKyAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVU
YXNrKE9wZW5JbmRleEN1cnNvck9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIGtleVJhbmdlLCBkaXJl
Y3Rpb24sIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OktleUFuZFZhbHVlLCBjYWxsYmFja3Mp
KTsKIH0KIAogdm9pZCBJREJJbmRleEJhY2tlbmRJbXBsOjpvcGVuS2V5Q3Vyc29yKFBhc3NSZWZQ
dHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZSogdHJhbnNhY3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmKQpAQCAtMTc5LDggKzE3OCw3
IEBAIHZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6b3BlbktleUN1cnNvcihQYXNzUmVmUHRyPElE
QktleVJhbmdlPiBrZXlSYW5nZSwgdW5zaWduCiAgICAgSURCX1RSQUNFKCJJREJJbmRleEJhY2tl
bmRJbXBsOjpvcGVuS2V5Q3Vyc29yIik7CiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJh
Y2tzID0gcHJwQ2FsbGJhY2tzOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
PiB0cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmZyb20odHJhbnNhY3Rp
b25QdHIpOwotICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhPcGVuSW5kZXhDdXJz
b3JPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBrZXlSYW5nZSwgZGlyZWN0aW9uLCBJREJDdXJzb3JC
YWNrZW5kSW50ZXJmYWNlOjpLZXlPbmx5LCBjYWxsYmFja3MpKSkKLSAgICAgICAgY2FsbGJhY2tz
LT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
QWJvcnRFcnJvcikpOworICAgIHRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soT3BlbkluZGV4Q3Vy
c29yT3BlcmF0aW9uOjpjcmVhdGUodGhpcywga2V5UmFuZ2UsIGRpcmVjdGlvbiwgSURCQ3Vyc29y
QmFja2VuZEludGVyZmFjZTo6S2V5T25seSwgY2FsbGJhY2tzKSk7CiB9CiAKIHZvaWQgSURCSW5k
ZXhCYWNrZW5kSW1wbDo6SW5kZXhDb3VudE9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbikKQEAgLTIwNiw4ICsyMDQsNyBAQCB2b2lkIElEQklu
ZGV4QmFja2VuZEltcGw6OmNvdW50KFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdlLCBQYXNz
UmVmUHRyPElEQkNhbAogICAgIElEQl9UUkFDRSgiSURCSW5kZXhCYWNrZW5kSW1wbDo6Y291bnQi
KTsKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7CiAg
ICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uID0gSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbDo6ZnJvbSh0cmFuc2FjdGlvblB0cik7Ci0gICAgaWYgKCF0cmFu
c2FjdGlvbi0+c2NoZWR1bGVUYXNrKEluZGV4Q291bnRPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBy
YW5nZSwgY2FsbGJhY2tzKSkpCi0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFz
ZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkFib3J0RXJyb3IpKTsKKyAgICB0
cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKEluZGV4Q291bnRPcGVyYXRpb246OmNyZWF0ZSh0aGlz
LCByYW5nZSwgY2FsbGJhY2tzKSk7CiB9CiAKIHZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6SW5k
ZXhSZWZlcmVuY2VkVmFsdWVSZXRyaWV2YWxPcGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24pCkBAIC0yODMsOCArMjgwLDcgQEAgdm9pZCBJREJJ
bmRleEJhY2tlbmRJbXBsOjpnZXQoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIFBh
c3NSZWZQdHI8SURCQ2EKICAgICBJREJfVFJBQ0UoIklEQkluZGV4QmFja2VuZEltcGw6OmdldCIp
OwogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKICAg
ICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbXBsOjpmcm9tKHRyYW5zYWN0aW9uUHRyKTsKLSAgICBpZiAoIXRyYW5z
YWN0aW9uLT5zY2hlZHVsZVRhc2soSW5kZXhSZWZlcmVuY2VkVmFsdWVSZXRyaWV2YWxPcGVyYXRp
b246OmNyZWF0ZSh0aGlzLCBrZXlSYW5nZSwgY2FsbGJhY2tzKSkpCi0gICAgICAgIGNhbGxiYWNr
cy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246
OkFib3J0RXJyb3IpKTsKKyAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKEluZGV4UmVmZXJl
bmNlZFZhbHVlUmV0cmlldmFsT3BlcmF0aW9uOjpjcmVhdGUodGhpcywga2V5UmFuZ2UsIGNhbGxi
YWNrcykpOwogfQogCiB2b2lkIElEQkluZGV4QmFja2VuZEltcGw6OmdldEtleShQYXNzUmVmUHRy
PElEQktleVJhbmdlPiBrZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxi
YWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgRXhj
ZXB0aW9uQ29kZSYpCkBAIC0yOTIsOCArMjg4LDcgQEAgdm9pZCBJREJJbmRleEJhY2tlbmRJbXBs
OjpnZXRLZXkoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIFBhc3NSZWZQdHI8SUQK
ICAgICBJREJfVFJBQ0UoIklEQkluZGV4QmFja2VuZEltcGw6OmdldEtleSIpOwogICAgIFJlZlB0
cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKICAgICBSZWZQdHI8SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsOjpmcm9tKHRyYW5zYWN0aW9uUHRyKTsKLSAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hl
ZHVsZVRhc2soSW5kZXhWYWx1ZVJldHJpZXZhbE9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIGtleVJh
bmdlLCBjYWxsYmFja3MpKSkKLSAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNl
RXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6QWJvcnRFcnJvcikpOworICAgIHRy
YW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soSW5kZXhWYWx1ZVJldHJpZXZhbE9wZXJhdGlvbjo6Y3Jl
YXRlKHRoaXMsIGtleVJhbmdlLCBjYWxsYmFja3MpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAppbmRleCBhMmVkZjRhZWJiNjJiNDgyNjMx
NTFlNjJjNzAyNjk3MzY0MTJlMTMwLi4zYzJkOWI3MDczMDhkOThiYzM5OTRhMGMwZWQ2YjgxYTQ5
ZWUzOTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcApAQCAtMjg5LDggKzI4OSw3IEBA
IHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Z2V0KFBhc3NSZWZQdHI8SURCS2V5UmFu
Z2U+IGtleVJhbmdlLCBQYXNzUmVmUHRyCiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsOjpnZXQiKTsKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBw
cnBDYWxsYmFja3M7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5z
YWN0aW9uID0gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6ZnJvbSh0cmFuc2FjdGlvblB0cik7
Ci0gICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKE9iamVjdFN0b3JlUmV0cmlldmFs
T3BlcmF0aW9uOjpjcmVhdGUodGhpcywga2V5UmFuZ2UsIGNhbGxiYWNrcykpKQotICAgICAgICBj
YWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpBYm9ydEVycm9yKSk7CisgICAgdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhPYmpl
Y3RTdG9yZVJldHJpZXZhbE9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIGtleVJhbmdlLCBjYWxsYmFj
a3MpKTsKIH0KIAogdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpPYmplY3RTdG9yZVJl
dHJpZXZhbE9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFu
c2FjdGlvbikKQEAgLTMzOSw4ICszMzgsNyBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZElt
cGw6OnB1dChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIFBhcwogCiAg
ICAgQVNTRVJUKGF1dG9JbmNyZW1lbnQoKSB8fCBrZXkuZ2V0KCkpOwogCi0gICAgaWYgKCF0cmFu
c2FjdGlvbi0+c2NoZWR1bGVUYXNrKE9iamVjdFN0b3JlU3RvcmFnZU9wZXJhdGlvbjo6Y3JlYXRl
KHRoaXMsIHZhbHVlLCBrZXksIHB1dE1vZGUsIGNhbGxiYWNrcywgbmV3SW5kZXhJZHMucmVsZWFz
ZSgpLCBuZXdJbmRleEtleXMucmVsZWFzZSgpKSkpCi0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJv
cihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkFib3J0RXJy
b3IpKTsKKyAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKE9iamVjdFN0b3JlU3RvcmFnZU9w
ZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIHZhbHVlLCBrZXksIHB1dE1vZGUsIGNhbGxiYWNrcywgbmV3
SW5kZXhJZHMucmVsZWFzZSgpLCBuZXdJbmRleEtleXMucmVsZWFzZSgpKSk7CiB9CiAKIGJvb2wg
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6SW5kZXhXcml0ZXI6OnZlcmlmeUluZGV4S2V5cyhJ
REJCYWNraW5nU3RvcmUmIGJhY2tpbmdTdG9yZSwgSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlv
biogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
LCBpbnQ2NF90IGluZGV4SWQsIGJvb2wmIGNhbkFkZEtleXMsIGNvbnN0IElEQktleSogcHJpbWFy
eUtleSwgU3RyaW5nKiBlcnJvck1lc3NhZ2UpIGNvbnN0CkBAIC01NTUsMTYgKzU1MywxMyBAQCB2
b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Ok9iamVjdFN0b3JlU3RvcmFnZU9wZXJhdGlv
bjo6cGVyZm9ybShJREJUcmFuc2FjdAogICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MobV9rZXku
cmVsZWFzZSgpKTsKIH0KIAotdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVG
dW5jdGlvbihQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+IHBycENhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0
cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9uQ29kZSYpCit2b2lkIElEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGw6OmRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBFeGNlcHRpb25Db2RlJikKIHsKICAgICBJREJfVFJB
Q0UoIklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZSIpOwogCiAgICAgUmVmUHRyPElE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uID0gSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW1wbDo6ZnJvbSh0cmFuc2FjdGlvblB0cik7CiAgICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5t
b2RlKCkgIT0gSURCVHJhbnNhY3Rpb246OlJFQURfT05MWSk7Ci0gICAgUmVmUHRyPElEQkNhbGxi
YWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOwotCi0gICAgaWYgKCF0cmFuc2FjdGlvbi0+
c2NoZWR1bGVUYXNrKE9iamVjdFN0b3JlRGVsZXRpb25PcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBr
ZXlSYW5nZSwgY2FsbGJhY2tzKSkpCi0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRh
YmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkFib3J0RXJyb3IpKTsKKyAg
ICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKE9iamVjdFN0b3JlRGVsZXRpb25PcGVyYXRpb246
OmNyZWF0ZSh0aGlzLCBrZXlSYW5nZSwgY2FsbGJhY2tzKSk7CiB9CiAKIHZvaWQgSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbDo6T2JqZWN0U3RvcmVEZWxldGlvbk9wZXJhdGlvbjo6cGVyZm9ybShJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbikKQEAgLTU4MywxNiArNTc4LDEz
IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6T2JqZWN0U3RvcmVEZWxldGlvbk9w
ZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjCiAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2Vzcygp
OwogfQogCi12b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNsZWFyKFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZSogdHJhbnNhY3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsOjpjbGVhcihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBFeGNlcHRpb25Db2Rl
JikKIHsKICAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNsZWFyIik7
CiAKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpmcm9tKHRyYW5zYWN0aW9uUHRyKTsKICAgICBBU1NF
UlQodHJhbnNhY3Rpb24tPm1vZGUoKSAhPSBJREJUcmFuc2FjdGlvbjo6UkVBRF9PTkxZKTsKLSAg
ICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7Ci0KLSAgICBp
ZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soT2JqZWN0U3RvcmVDbGVhck9wZXJhdGlvbjo6
Y3JlYXRlKHRoaXMsIGNhbGxiYWNrcykpKQotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURC
RGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpBYm9ydEVycm9yKSk7
CisgICAgdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhPYmplY3RTdG9yZUNsZWFyT3BlcmF0aW9u
OjpjcmVhdGUodGhpcywgY2FsbGJhY2tzKSk7CiB9CiAKIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbDo6T2JqZWN0U3RvcmVDbGVhck9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbikKQEAgLTY2NSw5ICs2NTcsNyBAQCB2b2lkIElEQk9i
amVjdFN0b3JlQmFja2VuZEltcGw6Om9wZW5DdXJzb3IoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4g
cmFuZ2UsIElEQkN1cgogICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6
b3BlbkN1cnNvciIpOwogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENh
bGxiYWNrczsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rp
b24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpmcm9tKHRyYW5zYWN0aW9uUHRyKTsKLSAg
ICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soT3Blbk9iamVjdFN0b3JlQ3Vyc29yT3Bl
cmF0aW9uOjpjcmVhdGUodGhpcywgcmFuZ2UsIGRpcmVjdGlvbiwgY2FsbGJhY2tzLCB0YXNrVHlw
ZSkpKSB7Ci0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVh
dGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkFib3J0RXJyb3IpKTsKLSAgICB9CisgICAgdHJhbnNh
Y3Rpb24tPnNjaGVkdWxlVGFzayhPcGVuT2JqZWN0U3RvcmVDdXJzb3JPcGVyYXRpb246OmNyZWF0
ZSh0aGlzLCByYW5nZSwgZGlyZWN0aW9uLCBjYWxsYmFja3MsIHRhc2tUeXBlKSk7CiB9CiAKIHZv
aWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6T3Blbk9iamVjdFN0b3JlQ3Vyc29yT3BlcmF0
aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uKQpAQCAt
Njk1LDggKzY4NSw3IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y291bnQoUGFz
c1JlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIFBhc3NSZWZQdHI8CiAgICAgSURCX1RSQUNFKCJJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjb3VudCIpOwogICAgIFJlZlB0cjxJREJDYWxsYmFj
a3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpmcm9t
KHRyYW5zYWN0aW9uUHRyKTsKLSAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soT2Jq
ZWN0U3RvcmVDb3VudE9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIHJhbmdlLCBjYWxsYmFja3MpKSkK
LSAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6QWJvcnRFcnJvcikpOworICAgIHRyYW5zYWN0aW9uLT5zY2hlZHVs
ZVRhc2soT2JqZWN0U3RvcmVDb3VudE9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIHJhbmdlLCBjYWxs
YmFja3MpKTsKIH0KIAogdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpPYmplY3RTdG9y
ZUNvdW50T3BlcmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5z
YWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURC
RGF0YWJhc2VFeGNlcHRpb24uaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklE
QkRhdGFiYXNlRXhjZXB0aW9uLmgKaW5kZXggOGMwMGEwZjAyZTUwYWI1OGM3MTFlNDBjZWNiZTIz
ZDU0NWJhZjE4ZC4uZjA5YTFhYWNiMGFkOTJlOThhYTNkMTI0OGVhYWVlZDg3YjkwZjM2NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2VFeGNl
cHRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFz
ZUV4Y2VwdGlvbi5oCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBlbnVt
IFdlYklEQkRhdGFiYXNlRXhjZXB0aW9uIHsKICAgICBXZWJJREJEYXRhYmFzZUV4Y2VwdGlvbkRh
dGFFcnJvciA9IDEyMDMsCisgICAgV2ViSURCRGF0YWJhc2VFeGNlcHRpb25BYm9ydEVycm9yID0g
MTIxMCwKICAgICBXZWJJREJEYXRhYmFzZUV4Y2VwdGlvblF1b3RhRXJyb3IgPSAxMjEyLAogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdF
bnVtcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1z
LmNwcAppbmRleCA5MGM2MzI5NjJkYzA3MWMzMDI3ZDM1MWFiNDhkOWM1YjVjM2EyMDdhLi5hZDI4
ZTJlYmI1Njc5NDVlY2M5OTNkZjE0NmU0YmY2YzljZWU1MmUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcApAQCAtNDc5LDEwICs0
NzksMTEgQEAgQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJWaWV3OjpVc2VyQ29udGVu
dEluamVjdEluVG9wRnJhbWVPbmx5LCBJbmplY3RJblQKIENPTVBJTEVfQVNTRVJUX01BVENISU5H
X0VOVU0oV2ViVmlldzo6VXNlclN0eWxlSW5qZWN0SW5FeGlzdGluZ0RvY3VtZW50cywgSW5qZWN0
SW5FeGlzdGluZ0RvY3VtZW50cyk7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlZp
ZXc6OlVzZXJTdHlsZUluamVjdEluU3Vic2VxdWVudERvY3VtZW50cywgSW5qZWN0SW5TdWJzZXF1
ZW50RG9jdW1lbnRzKTsKIAorI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogQ09NUElMRV9B
U1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJEYXRhYmFzZUV4Y2VwdGlvbkRhdGFFcnJvciwgSURC
RGF0YWJhc2VFeGNlcHRpb246OkRhdGFFcnJvcik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKFdlYklEQkRhdGFiYXNlRXhjZXB0aW9uQWJvcnRFcnJvciwgSURCRGF0YWJhc2VFeGNlcHRp
b246OkFib3J0RXJyb3IpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJEYXRh
YmFzZUV4Y2VwdGlvblF1b3RhRXJyb3IsIElEQkRhdGFiYXNlRXhjZXB0aW9uOjpRdW90YUV4Y2Vl
ZGVkRXJyb3IpOwogCi0jaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiBDT01QSUxFX0FTU0VS
VF9NQVRDSElOR19FTlVNKFdlYklEQktleTo6SW52YWxpZFR5cGUsIElEQktleTo6SW52YWxpZFR5
cGUpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJLZXk6OkFycmF5VHlwZSwg
SURCS2V5OjpBcnJheVR5cGUpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJL
ZXk6OlN0cmluZ1R5cGUsIElEQktleTo6U3RyaW5nVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAKaW5kZXggMTYwMTg0YmQ5ODU0MGQ4
MjQ5MmUxYzA1OGE0MWJjZDVhZTIxMTc5MC4uZjY5ZThiMDc4MjA1ZmUzMTljN2JiNTkxOTliMzgw
YmIxN2JhODkzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2Fs
bGJhY2tzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxi
YWNrc1Byb3h5LmNwcApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIldlYklEQkN1cnNvcklt
cGwuaCIKICNpbmNsdWRlICJXZWJJREJEYXRhYmFzZUNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIldl
YklEQkRhdGFiYXNlRXJyb3IuaCIKKyNpbmNsdWRlICJXZWJJREJEYXRhYmFzZUV4Y2VwdGlvbi5o
IgogI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlSW1wbC5oIgogI2luY2x1ZGUgIldlYklEQktleS5o
IgogI2luY2x1ZGUgIldlYklEQlRyYW5zYWN0aW9uSW1wbC5oIgpAQCAtNTksNjggKzYwLDgzIEBA
IFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzUHJveHk+IElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUo
UGFzc093blB0cjxXZWJJREJDYWxsYmFjCiAKIElEQkNhbGxiYWNrc1Byb3h5OjpJREJDYWxsYmFj
a3NQcm94eShQYXNzT3duUHRyPFdlYklEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQogICAgIDogbV9j
YWxsYmFja3MoY2FsbGJhY2tzKQorICAgICwgbV9kaWRDb21wbGV0ZShmYWxzZSkKICAgICAsIG1f
ZGlkQ3JlYXRlUHJveHkoZmFsc2UpCiB7CiB9CiAKIElEQkNhbGxiYWNrc1Byb3h5Ojp+SURCQ2Fs
bGJhY2tzUHJveHkoKQogeworICAgIC8vIFRoaXMgY2xlYW5zIHVwIHRoZSByZXF1ZXN0J3MgSVBD
IGlkLgorICAgIGlmICghbV9kaWRDb21wbGV0ZSkKKyAgICAgICAgbV9jYWxsYmFja3MtPm9uRXJy
b3IoV2ViSURCRGF0YWJhc2VFcnJvcihXZWJJREJEYXRhYmFzZUV4Y2VwdGlvbkFib3J0RXJyb3Is
IFdlYlN0cmluZygpKSk7CiB9CiAKIHZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uRXJyb3IoUGFz
c1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPiBpZGJEYXRhYmFzZUVycm9yKQogeworICAgIG1fZGlk
Q29tcGxldGUgPSB0cnVlOwogICAgIG1fY2FsbGJhY2tzLT5vbkVycm9yKFdlYklEQkRhdGFiYXNl
RXJyb3IoaWRiRGF0YWJhc2VFcnJvcikpOwogfQogCiB2b2lkIElEQkNhbGxiYWNrc1Byb3h5Ojpv
blN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBpZGJDdXJzb3JC
YWNrZW5kLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFy
eUtleSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlKQogeworICAgIG1f
ZGlkQ29tcGxldGUgPSB0cnVlOwogICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MobmV3IFdlYklE
QkN1cnNvckltcGwoaWRiQ3Vyc29yQmFja2VuZCksIGtleSwgcHJpbWFyeUtleSwgdmFsdWUpOwog
fQogCiB2b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJEYXRh
YmFzZUJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQpCiB7CiAgICAgQVNTRVJUKG1fZGF0YWJhc2VD
YWxsYmFja3MuZ2V0KCkpOworICAgIG1fZGlkQ29tcGxldGUgPSB0cnVlOwogICAgIFdlYklEQkRh
dGFiYXNlSW1wbCogaW1wbCA9IG1fZGlkQ3JlYXRlUHJveHkgPyAwIDogbmV3IFdlYklEQkRhdGFi
YXNlSW1wbChiYWNrZW5kLCBtX2RhdGFiYXNlQ2FsbGJhY2tzLnJlbGVhc2UoKSk7CiAgICAgbV9j
YWxsYmFja3MtPm9uU3VjY2VzcyhpbXBsKTsKIH0KIAogdm9pZCBJREJDYWxsYmFja3NQcm94eTo6
b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5PiBpZGJLZXkpCiB7CisgICAgbV9kaWRDb21wbGV0
ZSA9IHRydWU7CiAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhXZWJJREJLZXkoaWRiS2V5KSk7
CiB9CiAKIHZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPERPTVN0
cmluZ0xpc3Q+IGRvbVN0cmluZ0xpc3QpCiB7CisgICAgbV9kaWRDb21wbGV0ZSA9IHRydWU7CiAg
ICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhXZWJET01TdHJpbmdMaXN0KGRvbVN0cmluZ0xpc3Qp
KTsKIH0KIAogdm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25TdWNjZXNzKFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkU2NyaXB0VmFsdWUpCiB7CisgICAgbV9kaWRD
b21wbGV0ZSA9IHRydWU7CiAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhXZWJTZXJpYWxpemVk
U2NyaXB0VmFsdWUoc2VyaWFsaXplZFNjcmlwdFZhbHVlKSk7CiB9CiAKIHZvaWQgSURCQ2FsbGJh
Y2tzUHJveHk6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2Vy
aWFsaXplZFNjcmlwdFZhbHVlLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBjb25zdCBJREJLZXlQ
YXRoJiBrZXlQYXRoKQogewogICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3Moc2VyaWFsaXplZFNj
cmlwdFZhbHVlLCBrZXksIGtleVBhdGgpOworICAgIG1fZGlkQ29tcGxldGUgPSB0cnVlOwogfQog
CiB2b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3MoaW50NjRfdCB2YWx1ZSkKIHsKKyAg
ICBtX2RpZENvbXBsZXRlID0gdHJ1ZTsKICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKHZhbHVl
KTsKIH0KIAogdm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25TdWNjZXNzKCkKIHsKKyAgICBtX2Rp
ZENvbXBsZXRlID0gdHJ1ZTsKICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKCk7CiB9CiAKIHZv
aWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQ
YXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IHZhbHVlKQogeworICAgIG1fZGlkQ29tcGxldGUgPSB0cnVlOwogICAgIG1fY2FsbGJh
Y2tzLT5vblN1Y2Nlc3Moa2V5LCBwcmltYXJ5S2V5LCB2YWx1ZSk7CiB9CiAKIHZvaWQgSURCQ2Fs
bGJhY2tzUHJveHk6Om9uU3VjY2Vzc1dpdGhQcmVmZXRjaChjb25zdCBWZWN0b3I8UmVmUHRyPElE
QktleT4gPiYga2V5cywgY29uc3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mIHByaW1hcnlLZXlz
LCBjb25zdCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gPiYgdmFsdWVzKQog
eworICAgIG1fZGlkQ29tcGxldGUgPSB0cnVlOwogICAgIGNvbnN0IHNpemVfdCBuID0ga2V5cy5z
aXplKCk7CiAKICAgICBXZWJWZWN0b3I8V2ViSURCS2V5PiB3ZWJLZXlzKG4pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmgKaW5kZXggZTRlODg0M2Q2
MTQ1YjMzMzYyMzhiYzJkYjU3Y2I0MzE4YTA0NWRlNi4uZTY5ZDU5NzEwYTc0ODYxZmRhMTVjNGU4
YTkyNDhiZTQzMGViNmNjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
SURCQ2FsbGJhY2tzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJD
YWxsYmFja3NQcm94eS5oCkBAIC02OCw2ICs2OCw3IEBAIHByaXZhdGU6CiAKICAgICBPd25QdHI8
V2ViSURCQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKICAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxs
YmFja3NQcm94eT4gbV9kYXRhYmFzZUNhbGxiYWNrczsKKyAgICBib29sIG1fZGlkQ29tcGxldGU7
CiAgICAgYm9vbCBtX2RpZENyZWF0ZVByb3h5OwogfTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>