<?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>85298</bug_id>
          
          <creation_ts>2012-05-01 11:35:39 -0700</creation_ts>
          <short_desc>IndexedDB: Store key paths in IDBKeyPath type instead of String</short_desc>
          <delta_ts>2012-05-21 14:34:08 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>84207</blocked>
    
    <blocked>84303</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Joshua Bell">jsbell</reporter>
          <assigned_to name="Joshua Bell">jsbell</assigned_to>
          <cc>abarth</cc>
    
    <cc>alecflett</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dgrogan</cc>
    
    <cc>fishd</cc>
    
    <cc>haraken</cc>
    
    <cc>jamesr</cc>
    
    <cc>japhet</cc>
    
    <cc>ojan</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>613559</commentid>
    <comment_count>0</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-05-01 11:35:39 -0700</bug_when>
    <thetext>IndexedDB: Store key paths in IDBKeyPath type instead of String</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613649</commentid>
    <comment_count>1</comment_count>
      <attachid>139674</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-05-01 14:09:47 -0700</bug_when>
    <thetext>Created attachment 139674
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613654</commentid>
    <comment_count>2</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-05-01 14:11:54 -0700</bug_when>
    <thetext>dgrogan@, alecflett@ - preliminary review?

This is a subset of https://bugs.webkit.org/show_bug.cgi?id=84207 that basically does s/String keyPath/IDBKeyPath keyPath/ without adding new logic for arrays coming in or being used, although they can be stored and transported.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613657</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-01 14:12:45 -0700</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>613688</commentid>
    <comment_count>4</comment_count>
      <attachid>139674</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-01 14:49:27 -0700</bug_when>
    <thetext>Comment on attachment 139674
Patch

Attachment 139674 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/12598482</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613707</commentid>
    <comment_count>5</comment_count>
      <attachid>139691</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-05-01 15:04:44 -0700</bug_when>
    <thetext>Created attachment 139691
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613708</commentid>
    <comment_count>6</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-05-01 15:06:22 -0700</bug_when>
    <thetext>chromium ews failing since chromium DEPS was old. New patch bump it to 134581 to pick up the cr side patch, but will want to land that separately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614644</commentid>
    <comment_count>7</comment_count>
      <attachid>139691</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-05-02 14:02:41 -0700</bug_when>
    <thetext>Comment on attachment 139691
Patch

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

LGTM, but someone else should probably review the bindings code and an API reviewer will have to OK the WebKit API changes.

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBCoding.cpp:641
&gt; +    case IDBKeyPath::ArrayType:
&gt; +        {

Nit: It looks like for case statements, we put the { on the case: line and the closing } indented to line up with |case|.

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBCoding.cpp:669
&gt; +    case IDBKeyPath::StringType:
&gt; +        {

ditto

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBCoding.cpp:673
&gt; +    case IDBKeyPath::ArrayType:
&gt; +        {

ditto

&gt; Source/WebKit/chromium/DEPS:35
&gt; -  &apos;chromium_rev&apos;: &apos;134537&apos;
&gt; +  &apos;chromium_rev&apos;: &apos;134581&apos;

Please do this in a separate change.  It doesn&apos;t need to be reviewed if it compiles.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614720</commentid>
    <comment_count>8</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-05-02 15:17:14 -0700</bug_when>
    <thetext>&gt; LGTM, but someone else should probably review the bindings code and an API reviewer will have to OK the WebKit API changes.

jamesr@ could you take a look at the WebKit API changes, since you reviewed my earlier patch that uglified the code?

haraken@ can you review the binding changes?

&gt; &gt; Source/WebCore/Modules/indexeddb/IDBLevelDBCoding.cpp:641
&gt; &gt; +    case IDBKeyPath::ArrayType:
&gt; &gt; +        {
&gt; 
&gt; Nit: It looks like for case statements, we put the { on the case: line and the closing } indented to line up with |case|.

Thanks, will fix. (Just got dinged for this on the Chromium side too, d&apos;oh!)

&gt; &gt; Source/WebKit/chromium/DEPS:35
&gt; &gt; -  &apos;chromium_rev&apos;: &apos;134537&apos;
&gt; &gt; +  &apos;chromium_rev&apos;: &apos;134581&apos;
&gt; 
&gt; Please do this in a separate change.  It doesn&apos;t need to be reviewed if it compiles.

Yep, just wanted to make sure that was the only thing failing on chrome ews. 

New patch coming shortly to address (just) the above issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615197</commentid>
    <comment_count>9</comment_count>
      <attachid>139691</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-05-03 05:39:39 -0700</bug_when>
    <thetext>Comment on attachment 139691
Patch

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

&gt; Source/WebCore/bindings/v8/Dictionary.cpp:427
&gt; +#if ENABLE(INDEXED_DATABASE)

Let&apos;s remove #if. This is a general method and we can use the method in other code.

&gt; Source/WebCore/bindings/v8/Dictionary.cpp:439
&gt; +        v8::Local&lt;v8::Value&gt; indexedValue = v8Array-&gt;Get(v8::Integer::New(i));

v8::Integer::New(i) =&gt; v8::Uint32::New(i)

&gt; Source/WebCore/bindings/v8/Dictionary.h:86
&gt; +#if ENABLE(INDEXED_DATABASE)

Let&apos;s remove #if.

&gt; Source/WebCore/bindings/v8/custom/V8IDBAnyCustom.cpp:79
&gt; +    case IDBAny::StringType:
&gt; +        return v8String(impl-&gt;string());

Shouldn&apos;t this be v8StringOrNull()? Previously [TreatReturnedNullStringAs=Null] was specified in keyPath. If you want to keep the behavior, I guess that you need to use v8StringOrNull() instead of v8String(). In any case, please add a test case where keyPath returns a null string.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615413</commentid>
    <comment_count>10</comment_count>
      <attachid>140048</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-05-03 11:04:59 -0700</bug_when>
    <thetext>Created attachment 140048
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615422</commentid>
    <comment_count>11</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-05-03 11:11:03 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; 
&gt; Let&apos;s remove #if. This is a general method and we can use the method in other code.

Done.
 
&gt; v8::Integer::New(i) =&gt; v8::Uint32::New(i)

Done.

&gt; Let&apos;s remove #if.

Done

&gt; &gt; Source/WebCore/bindings/v8/custom/V8IDBAnyCustom.cpp:79
&gt; &gt; +    case IDBAny::StringType:
&gt; &gt; +        return v8String(impl-&gt;string());
&gt; 
&gt; Shouldn&apos;t this be v8StringOrNull()? Previously [TreatReturnedNullStringAs=Null] was specified in keyPath. If you want to keep the behavior, I guess that you need to use v8StringOrNull() instead of v8String(). In any case, please add a test case where keyPath returns a null string.

Previously, the absence of a keyPath was stored as a null string. Now it is stored as a NullType IDBKeyPath. IDBKeyPath&apos;s operator PassRefPtr&lt;IDBAny&gt;() produces a NullType IDBAny rather than a null String. 

I added an assert in the IDBKeyPath constructors to preclude null strings, and added tests that verify null/undefined as arguments. This detected a behavior change in this patch which brings it in line with my reading of the WebIDL spec: passing |null| or |undefined| to a string argument yields &quot;null&quot; or &quot;undefined&quot; strings.

r?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615449</commentid>
    <comment_count>12</comment_count>
      <attachid>140048</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-03 11:43:37 -0700</bug_when>
    <thetext>Comment on attachment 140048
Patch

Attachment 140048 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/12614275</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615458</commentid>
    <comment_count>13</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-05-03 11:47:34 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 140048 [details])
&gt; Attachment 140048 [details] did not pass chromium-ews (chromium-xvfb):
&gt; Output: http://queues.webkit.org/results/12614275

Weird... chromium DEPS roll should at r115921 have taken care of this. o_O</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615486</commentid>
    <comment_count>14</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-05-03 12:16:57 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Previously, the absence of a keyPath was stored as a null string. Now it is stored as a NullType IDBKeyPath. IDBKeyPath&apos;s operator PassRefPtr&lt;IDBAny&gt;() produces a NullType IDBAny rather than a null String. 

Previously a null String was treated as a JavaScript null (since [TreatReturnedNullAs=Null] was specified). In your patch, what is the NullType IDBKeyPath treated as in JavaScript?

&gt; I added an assert in the IDBKeyPath constructors to preclude null strings, and added tests that verify null/undefined as arguments. This detected a behavior change in this patch which brings it in line with my reading of the WebIDL spec: passing |null| or |undefined| to a string argument yields &quot;null&quot; or &quot;undefined&quot; strings.

The test case looks good, but I am afraid that the added test cases are not the test case for our current concern. [TreatReturnedNullAs=Null] affects the behavior of when WebCore tries to return a null String (i.e. NullType in your patch), not the behavior of when JavaScript passes null or undefined.

c.f. https://trac.webkit.org/wiki/WebKitIDL#TreatNullAs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615552</commentid>
    <comment_count>15</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-05-03 13:28:19 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #11)
&gt; &gt; Previously, the absence of a keyPath was stored as a null string. Now it is stored as a NullType IDBKeyPath. IDBKeyPath&apos;s operator PassRefPtr&lt;IDBAny&gt;() produces a NullType IDBAny rather than a null String. 
&gt; 
&gt; Previously a null String was treated as a JavaScript null (since [TreatReturnedNullAs=Null] was specified). In your patch, what is the NullType IDBKeyPath treated as in JavaScript?

The keyPath() accessor returns IDBAny; IDBKeyPath of NullType produces IDBAny of NullType which produces a JavaScript null value.

&gt; 
&gt; &gt; I added an assert in the IDBKeyPath constructors to preclude null strings, and added tests that verify null/undefined as arguments. This detected a behavior change in this patch which brings it in line with my reading of the WebIDL spec: passing |null| or |undefined| to a string argument yields &quot;null&quot; or &quot;undefined&quot; strings.
&gt; 
&gt; The test case looks good, but I am afraid that the added test cases are not the test case for our current concern. [TreatReturnedNullAs=Null] affects the behavior of when WebCore tries to return a null String (i.e. NullType in your patch), not the behavior of when JavaScript passes null or undefined.

Ah, I understand. That&apos;s covered in objectstore-basics.html: shouldBeNull(&quot;store.keyPath&quot;);

But I&apos;ll add it to keypath-basics.html as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615576</commentid>
    <comment_count>16</comment_count>
      <attachid>140082</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-05-03 13:48:28 -0700</bug_when>
    <thetext>Created attachment 140082
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615581</commentid>
    <comment_count>17</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-05-03 13:52:58 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; This detected a behavior change in this patch which brings it in line 
&gt; with my reading of the WebIDL spec: passing |null| or |undefined| to a 
&gt; string argument yields &quot;null&quot; or &quot;undefined&quot; strings.

Double-checking the IDB spec, this was in error, and has been reverted. The spec is explicit:

createObjectStore: &quot;If the optionalParameters argument is specified and has a keyPath property which is not undefined or null, then set keyPath to the value of this property. If keyPath is an Array, then each item in the array is converted to a string. If keyPath is not an Array, it is converted to a string.&quot; =&gt; changed the Dictionary accessor to getWithUndefinedOrNullCheck(), reverted the tests (so |null| and |undefined| yield IDBKeyPath::NullType)

createIndex: &quot;If the keyPath argument is an Array, then each item in the array is converted to a DOMString. If keyPath is not an Array, it is converted to a DOMString.&quot; =&gt; |null| or |undefined| are converted to strings (&quot;null&quot;, &quot;undefined&quot;), which aligns with DOMString (not DOMString?) in WebIDL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615603</commentid>
    <comment_count>18</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-05-03 14:06:28 -0700</bug_when>
    <thetext>r+ for *.idl, v8/Dictionary.*, v8/custom/V8IDBAnyCustom.cpp, and their test cases.

&gt; Double-checking the IDB spec, this was in error, and has been reverted. The spec is explicit:

The spec around null or undefined is really confusing...:)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615608</commentid>
    <comment_count>19</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-05-03 14:07:50 -0700</bug_when>
    <thetext>&gt; The spec around null or undefined is really confusing...:)

+1000!

jamesr@ or others - r? for Source/WebKit/chromium ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616599</commentid>
    <comment_count>20</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-05-04 13:45:57 -0700</bug_when>
    <thetext>Note: this will require a rebase+merge after http://webkit.org/b/85557 lands</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617882</commentid>
    <comment_count>21</comment_count>
      <attachid>140578</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-05-07 13:32:04 -0700</bug_when>
    <thetext>Created attachment 140578
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617885</commentid>
    <comment_count>22</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-05-07 13:34:29 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; Note: this will require a rebase+merge after http://webkit.org/b/85557 lands

New patch is rebased, and adds unit tests for encode/decodeIDBKeyPath. Also switches the new-style encoding of string-type key paths to encoded-with-length which is more robust.

Still waiting on a review of the WebKit API changes, jamesr@ / fishd@ ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629427</commentid>
    <comment_count>23</comment_count>
      <attachid>143086</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-05-21 13:21:58 -0700</bug_when>
    <thetext>Created attachment 143086
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629429</commentid>
    <comment_count>24</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-05-21 13:23:47 -0700</bug_when>
    <thetext>New patch is just a rebase.

Any chromium webkit API reviewers want to r?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629431</commentid>
    <comment_count>25</comment_count>
      <attachid>143086</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-05-21 13:26:36 -0700</bug_when>
    <thetext>Comment on attachment 143086
Patch

Chromium public WebKit API changes LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629456</commentid>
    <comment_count>26</comment_count>
      <attachid>143090</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-05-21 13:48:31 -0700</bug_when>
    <thetext>Created attachment 143090
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629506</commentid>
    <comment_count>27</comment_count>
      <attachid>143090</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-21 14:33:57 -0700</bug_when>
    <thetext>Comment on attachment 143090
Patch for landing

Clearing flags on attachment: 143090

Committed r117817: &lt;http://trac.webkit.org/changeset/117817&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629507</commentid>
    <comment_count>28</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-21 14:34:08 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139674</attachid>
            <date>2012-05-01 14:09:47 -0700</date>
            <delta_ts>2012-05-01 15:04:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85298-20120501140946.patch</filename>
            <type>text/plain</type>
            <size>106653</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1NzMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzgyZWI5NTIzYzZlMjNh
YmMwMmE3ODJmMDMyNzAyNTgyMmU2ZGM3ZS4uMDc5OGYwMTY5ZWM4ZDlmOTdmOTcxOTgxYWRlNGIx
Njc5OTRmNmQ1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNCBAQAorMjAxMi0wNS0wMSAgSm9z
aHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogU3Rv
cmUga2V5IHBhdGhzIGluIElEQktleVBhdGggdHlwZSBpbnN0ZWFkIG9mIFN0cmluZworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODUyOTgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNaWdyYXRlIGZyb20gc3Rv
cmluZyBrZXkgcGF0aHMgYXMgKG51bGxhYmxlKSBTdHJpbmdzIHRvIGEgZGVkaWNhdGVkIElEQktl
eVBhdGgKKyAgICAgICAgdHlwZS4gUHJlcCB3b3JrIGZvciBzdXBwb3J0aW5nIGFycmF5LXR5cGUg
a2V5IHBhdGhzOiBodHRwOi8vd2Via2l0Lm9yZy9iLzg0MjA3CisKKyAgICAgICAgTm8gbmV3IHRl
c3RzIC0gbm8gZnVuY3Rpb25hbCBjaGFuZ2VzLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCQW55LmNwcDogQWxsb3cgSURCQW55IHRvIHlpZWxkIERPTVN0cmluZ3MuCisgICAgICAg
IChXZWJDb3JlOjpJREJBbnk6OmNyZWF0ZVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkFueTo6c3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkFu
eTo6c2V0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJBbnkuaDoKKyAgICAgICAg
KElEQkFueSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmg6
IFN3aXRjaCBmcm9tIFN0cmluZyB0byBJREJLZXlQYXRoLgorICAgICAgICAoSURCQmFja2luZ1N0
b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHA6IFN3aXRj
aCBmcm9tIFN0cmluZyB0byBJREJLZXlQYXRoLgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2U6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUJhY2tlbmRJbXBsLmNwcDogU3dpdGNoIGZyb20gU3RyaW5nIHRvIElEQktleVBhdGgu
CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGVPYmplY3RT
dG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpsb2FkT2Jq
ZWN0U3RvcmVzKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tl
bmRJbXBsLmg6IFN3aXRjaCBmcm9tIFN0cmluZyB0byBJREJLZXlQYXRoLgorICAgICAgICAoSURC
RGF0YWJhc2VCYWNrZW5kSW1wbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmg6IFN3aXRjaCBmcm9tIFN0cmluZyB0byBJREJLZXlQYXRo
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZh
Y2UpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4Lmg6IFN3aXRjaCBmcm9t
IFN0cmluZyB0byBJREJBbnkgKHZpYSBJREJLZXlQYXRoKS4KKyAgICAgICAgKFdlYkNvcmU6OklE
QkluZGV4OjprZXlQYXRoKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5p
ZGw6IFN3aXRjaCBmcm9tIERPTVN0cmluZz8gdG8gSURCQW55LgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwuY3BwOiBTd2l0Y2ggZnJvbSBTdHJpbmcgdG8g
SURCS2V5UGF0aC4KKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEltcGw6OklEQklu
ZGV4QmFja2VuZEltcGwpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFj
a2VuZEltcGwuaDogU3dpdGNoIGZyb20gU3RyaW5nIHRvIElEQktleVBhdGguCisgICAgICAgIChX
ZWJDb3JlOjpJREJJbmRleEJhY2tlbmRJbXBsOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
SURCSW5kZXhCYWNrZW5kSW1wbDo6a2V5UGF0aCk6CisgICAgICAgIChJREJJbmRleEJhY2tlbmRJ
bXBsKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbnRlcmZh
Y2UuaDogU3dpdGNoIGZyb20gU3RyaW5nIHRvIElEQktleVBhdGguCisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKElEQkluZGV4QmFja2VuZEludGVyZmFjZSk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCS2V5UGF0aC5jcHA6IE5vbi10cml2aWFsIG1ldGhvZCBpbXBsZW1lbnRh
dGlvbnMuCisgICAgICAgIChXZWJDb3JlOjpJREJLZXlQYXRoOjppc1ZhbGlkKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5UGF0aDo6b3BlcmF0b3IgUGFzc1Jl
ZlB0cjxJREJBbnk+KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRoLmg6
IEludHJvZHVjZSBJREJLZXlQYXRoIHR5cGUuCisgICAgICAgIChJREJLZXlQYXRoKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQktleVBhdGg6OklEQktleVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6
SURCS2V5UGF0aDo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlQYXRoOjphcnJheSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlQYXRoOjpzdHJpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCS2V5UGF0aDo6aXNOdWxsKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGhCYWNrZW5kSW1wbC5jcHA6IFN3aXRjaCBmcm9tIFN0
cmluZyB0byBJREJLZXlQYXRoLgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5UGF0aEJhY2tlbmRJ
bXBsOjpjcmVhdGVJREJLZXlzRnJvbVNlcmlhbGl6ZWRWYWx1ZXNBbmRLZXlQYXRoKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQktleVBhdGhCYWNrZW5kSW1wbDo6aW5qZWN0SURCS2V5SW50b1Nlcmlh
bGl6ZWRWYWx1ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UGF0aEJhY2tl
bmRJbXBsLmg6IFN3aXRjaCBmcm9tIFN0cmluZyB0byBJREJLZXlQYXRoLgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChJREJLZXlQYXRoQmFja2VuZEltcGwpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwOiBTd2l0Y2ggZnJvbSBTdHJp
bmcgdG8gSURCS2V5UGF0aCwgd2l0aCBiYWNrLWNvbXBhdC4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6cHV0SURCS2V5UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpJREJM
ZXZlbERCQmFja2luZ1N0b3JlOjpnZXRPYmplY3RTdG9yZXMpOgorICAgICAgICAoV2ViQ29yZTo6
SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0SW5kZXhlcyk6CisgICAgICAgIChXZWJD
b3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoSURCTGV2
ZWxEQkJhY2tpbmdTdG9yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxE
QkNvZGluZy5jcHA6IE5ldyBjb2Rpbmcgc2NoZW1lIGZvciBrZXkgcGF0aHMgKHdpdGggYmFjay1j
b21wYXQpLgorICAgICAgICAoSURCTGV2ZWxEQkNvZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJMZXZlbERCQ29kaW5nOjplbmNvZGVJREJLZXlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkxldmVsREJDb2Rpbmc6OmRlY29kZUlEQktleVBhdGgpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuaDogQWRkIGtleS1wYXRoLXNwZWNpZmljIG1ldGhvZHMu
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKElEQkxldmVsREJDb2RpbmcpOgorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcDogU3dpdGNoIGZyb20gU3Ry
aW5nIHRvIElEQktleVBhdGguCisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6a2V5
UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmUuaDogU3dpdGNoIGZyb20gU3RyaW5nIHRvIElEQkFueSAodmlhIElEQktleVBhdGgpLgor
ICAgICAgICAoSURCT2JqZWN0U3RvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
Qk9iamVjdFN0b3JlLmlkbDogU3dpdGNoIGZyb20gRE9NU3RyaW5nPyB0byBJREJBbnkuCisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHA6IFN3
aXRjaCBmcm9tIFN0cmluZyB0byBJREJLZXlQYXRoLgorICAgICAgICAoV2ViQ29yZTo6SURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbDo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCk6CisgICAgICAg
IChXZWJDb3JlOjpmZXRjaEtleUZyb21LZXlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OmluamVj
dEtleUludG9LZXlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGw6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGw6OmxvYWRJbmRleGVzKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsLmg6IFN3aXRjaCBmcm9tIFN0cmluZyB0byBJREJLZXlQYXRo
LgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmtleVBhdGgpOgor
ICAgICAgICAoSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmg6IFN3aXRjaCBmcm9tIFN0
cmluZyB0byBJREJLZXlQYXRoLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RpY3Rpb25h
cnkuY3BwOiBBZGQgZ2V0dGVyIGZvciBET01TdHJpbmdbXSAoaS5lLiBWZWN0b3I8U3RyaW5nPikK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeTo6Z2V0KToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9EaWN0aW9uYXJ5Lmg6CisgICAgICAgIChEaWN0aW9uYXJ5
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcDogU3dpdGNo
IGZyb20gU3RyaW5nIHRvIElEQktleVBhdGguCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJREJL
ZXlGcm9tU2VyaWFsaXplZFZhbHVlQW5kS2V5UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjppbmpl
Y3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9JREJC
aW5kaW5nVXRpbGl0aWVzLmg6IFN3aXRjaCBmcm9tIFN0cmluZyB0byBJREJLZXlQYXRoLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SURCQW55Q3Vz
dG9tLmNwcDogU3VwcG9ydCBTdHJpbmcvRE9NU3RyaW5nLgorICAgICAgICAoV2ViQ29yZTo6dG9W
OCk6CisgICAgICAgICogZG9tL0RPTVN0cmluZ0xpc3QuaDogQWxsb3cgZWFzeSAoY29uc3QpIGFj
Y2VzcyB0byBzdHJpbmdzLgorICAgICAgICAoV2ViQ29yZTo6RE9NU3RyaW5nTGlzdDo6b3BlcmF0
b3IgY29uc3QgVmVjdG9yPFN0cmluZz4mKToKKyAgICAgICAgKERPTVN0cmluZ0xpc3QpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHA6IFRlbXBvcmFyeSBz
aGltIGZvciBub24tc3RyaW5nczogc2VlIGh0dHA6Ly93ZWJraXQub3JnL2IvODQzMDMKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9y
dC5oOiBTd2l0Y2ggZnJvbSBTdHJpbmcgdG8gSURCS2V5UGF0aC4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoUGxhdGZvcm1TdXBwb3J0KToKKyAgICAgICAgKiBzdG9yYWdlL2Nocm9taXVt
L0lEQktleVBhdGhCYWNrZW5kSW1wbC5jcHA6IFN3aXRjaCBmcm9tIFN0cmluZyB0byBJREJLZXlQ
YXRoLgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5UGF0aEJhY2tlbmRJbXBsOjpjcmVhdGVJREJL
ZXlzRnJvbVNlcmlhbGl6ZWRWYWx1ZXNBbmRLZXlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QktleVBhdGhCYWNrZW5kSW1wbDo6aW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZSk6CisK
IDIwMTItMDUtMDEgIFBoaWxpcCBSb2dlcnMgIDxwZHJAZ29vZ2xlLmNvbT4KIAogICAgICAgICBT
a2lwIGJ1aWxkaW5nIGluc3RhbmNlIHRyZWUgZm9yIGRpc2FsbG93ZWQgdGFyZ2V0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCmluZGV4IDYyNTNhMmNkZWIyMzliYTY5ZDkxYTM2NzE1YmNiMmQ1ZmFl
NDg3ODAuLjliZGRkMDkwMmJiNDBiNjQ1YWVkNzQ0NzQzOWFiYTVmOWNiNGMwODAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzIgQEAKKzIwMTItMDUtMDEgIEpvc2h1YSBC
ZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFN0b3JlIGtl
eSBwYXRocyBpbiBJREJLZXlQYXRoIHR5cGUgaW5zdGVhZCBvZiBTdHJpbmcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1Mjk4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gZnVuY3Rpb25hbCBjaGFuZ2Vz
LCBqdXN0IGZpbmlzaCBtaWdyYXRpb24gZnJvbSBTdHJpbmcgdG8gSURCS2V5UGF0aAorICAgICAg
ICBmb3Igc3RvcmluZyBrZXkgcGF0aHMsIGZvciBldmVudHVhbCBhcnJheSBzdXBwb3J0IGh0dHA6
Ly93ZWJraXQub3JnL2IvODQyMDcKKworICAgICAgICAqIHB1YmxpYy9XZWJJREJEYXRhYmFzZS5o
OiBSZW1vdmUgdGVtcG9yYXJ5IG92ZXJsb2FkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViSURCRGF0YWJhc2U6Om9iamVjdFN0b3JlTmFtZXMpOgorICAgICAgICAqIHB1
YmxpYy9XZWJJREJJbmRleC5oOiBSZW1vdmUgdGVtcG9yYXJ5IG1ldGhvZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViSURCSW5kZXg6OmtleVBhdGgpOgorICAgICAgICAqIHB1YmxpYy9XZWJJREJLZXlQ
YXRoLmg6IFJlbW92ZSBvYnNvbGV0ZSBtZXRob2RzLCB3cmFwIFdlYkNvcmU6OklEQktleVBhdGgK
KyAgICAgICAgKFdlYklEQktleVBhdGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJLZXlQYXRo
OjpXZWJJREJLZXlQYXRoKToKKyAgICAgICAgKiBwdWJsaWMvV2ViSURCT2JqZWN0U3RvcmUuaDog
UmVtb3ZlIHRlbXBvcmFyeSBtZXRob2QgYW5kIG92ZXJsb2FkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJPYmplY3RTdG9yZTo6a2V5UGF0aCk6CisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dl
YktpdFBsYXRmb3JtU3VwcG9ydC5oOiBSZW1vdmUgdGVtcG9yYXJ5IG92ZXJsb2Fkcy4KKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgICogc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwOiBXZWJJ
REJLZXlQYXRoIHZzLiBJREJLZXlQYXRoIGVudW1zLgorICAgICAgICAqIHNyYy9JREJEYXRhYmFz
ZUJhY2tlbmRQcm94eS5jcHA6IFN3aXRjaCBmcm9tIFN0cmluZyB0byBJREJLZXlQYXRoLgorICAg
ICAgICAoV2ViS2l0OjpJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6Y3JlYXRlT2JqZWN0U3RvcmUp
OgorICAgICAgICAqIHNyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oOiBTd2l0Y2ggZnJvbSBT
dHJpbmcgdG8gSURCS2V5UGF0aC4KKyAgICAgICAgKElEQkRhdGFiYXNlQmFja2VuZFByb3h5KToK
KyAgICAgICAgKiBzcmMvSURCSW5kZXhCYWNrZW5kUHJveHkuY3BwOiBTd2l0Y2ggZnJvbSBTdHJp
bmcgdG8gSURCS2V5UGF0aC4KKyAgICAgICAgKFdlYktpdDo6SURCSW5kZXhCYWNrZW5kUHJveHk6
OmtleVBhdGgpOgorICAgICAgICAqIHNyYy9JREJJbmRleEJhY2tlbmRQcm94eS5oOiBTd2l0Y2gg
ZnJvbSBTdHJpbmcgdG8gSURCS2V5UGF0aC4KKyAgICAgICAgKElEQkluZGV4QmFja2VuZFByb3h5
KToKKyAgICAgICAgKiBzcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuY3BwOiBTd2l0Y2gg
ZnJvbSBTdHJpbmcgdG8gSURCS2V5UGF0aC4KKyAgICAgICAgKFdlYktpdDo6SURCT2JqZWN0U3Rv
cmVCYWNrZW5kUHJveHk6OmtleVBhdGgpOgorICAgICAgICAoV2ViS2l0OjpJREJPYmplY3RTdG9y
ZUJhY2tlbmRQcm94eTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAqIHNyYy9JREJPYmplY3RTdG9y
ZUJhY2tlbmRQcm94eS5oOiBTd2l0Y2ggZnJvbSBTdHJpbmcgdG8gSURCS2V5UGF0aC4KKyAgICAg
ICAgKElEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5KToKKyAgICAgICAgKiBzcmMvUGxhdGZvcm1T
dXBwb3J0LmNwcDogU3dpdGNoIGZyb20gU3RyaW5nIHRvIElEQktleVBhdGguCisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybVN1cHBvcnQ6OmNyZWF0ZUlEQktleXNGcm9tU2VyaWFsaXplZFZhbHVl
c0FuZEtleVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TdXBwb3J0OjppbmplY3RJ
REJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKToKKyAgICAgICAgKiBzcmMvV2ViSURCRGF0YWJhc2VJ
bXBsLmNwcDogU3dpdGNoIGZyb20gU3RyaW5nIHRvIElEQktleVBhdGguCisgICAgICAgIChXZWJL
aXQ6OldlYklEQkRhdGFiYXNlSW1wbDo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAqIHNy
Yy9XZWJJREJEYXRhYmFzZUltcGwuaDogUmVtb3ZlIHRlbXBvcmFyeSBvdmVybG9hZC4KKyAgICAg
ICAgKFdlYklEQkRhdGFiYXNlSW1wbCk6CisgICAgICAgICogc3JjL1dlYklEQkluZGV4SW1wbC5j
cHA6IFJlbW92ZSB0ZW1wb3JhcnkgbWV0aG9kLgorICAgICAgICAqIHNyYy9XZWJJREJJbmRleElt
cGwuaDogUmVtb3ZlIHRlbXBvcmFyeSBtZXRob2QuCisgICAgICAgIChXZWJJREJJbmRleEltcGwp
OgorICAgICAgICAqIHNyYy9XZWJJREJLZXlQYXRoLmNwcDogUmVtb3ZlIG1vc3QgbG9naWM7IGp1
c3QgYSB3cmFwcGVyIGZvciBXZWJDb3JlOjpJREJLZXlQYXRoLgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJLZXlQYXRoOjp+V2ViSURCS2V5UGF0aCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQktl
eVBhdGg6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQktleVBhdGg6OmNyZWF0ZU51
bGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJLZXlQYXRoOjppc1ZhbGlkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViSURCS2V5UGF0aDo6dHlwZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJREJLZXlQYXRoOjphcnJheSk6CisgICAgICAgIChXZWJLaXQ6OldlYklE
QktleVBhdGg6OnN0cmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQktleVBhdGg6OldlYklE
QktleVBhdGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJLZXlQYXRoOjpvcGVyYXRvcj0pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJREJLZXlQYXRoOjpvcGVyYXRvciBjb25zdCBXZWJDb3JlOjpJ
REJLZXlQYXRoJik6CisgICAgICAgICogc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5jcHA6IFJl
bW92ZSB0ZW1wb3JhcnkgbWV0aG9kIGFuZCBvdmVybG9hZC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
SURCT2JqZWN0U3RvcmVJbXBsOjprZXlQYXRoKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCT2Jq
ZWN0U3RvcmVJbXBsOjpjcmVhdGVJbmRleCk6CisgICAgICAgICogc3JjL1dlYklEQk9iamVjdFN0
b3JlSW1wbC5oOiBSZW1vdmUgdGVtcG9yYXJ5IG1ldGhvZCBhbmQgb3ZlcmxvYWQuCisgICAgICAg
IChXZWJJREJPYmplY3RTdG9yZUltcGwpOgorICAgICAgICAqIHRlc3RzL0lEQkJpbmRpbmdVdGls
aXRpZXNUZXN0LmNwcDogVXNlIElEQktleVBhdGguCisgICAgICAgIChXZWJDb3JlOjpjaGVja0tl
eUZyb21WYWx1ZUFuZEtleVBhdGhJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjppbmplY3RL
ZXkpOgorICAgICAgICAqIHRlc3RzL0lEQktleVBhdGhUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNoZWNrS2V5UGF0aCk6IFRlc3QgSURCS2V5UGF0aCB2YWxpZGl0eS4KKwogMjAxMi0wNS0w
MSAgSnVsaWVuIENoYWZmcmFpeCAgPGpjaGFmZnJhaXhAd2Via2l0Lm9yZz4KIAogICAgICAgICBX
ZWJLaXQgdGVzdCBSZW5kZXJUYWJsZUNlbGxEZWF0aFRlc3QuQ2FuU2V0Um93IGlzIGZhaWxpbmcg
YXMgb2YgcjExNTcwNQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQW55LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5j
cHAKaW5kZXggNTdhNDA2ZTJiYjA3YjBiZDZkMjVkZGJiODFiYzY0ZmU5ZWFhMDZhZC4uMzAwMjhj
Y2ZkZmNlOTU5NjA0MGFjMDNlZmE0OWZhYjI0MDcwMmUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJBbnkuY3BwCkBAIC00OSw2ICs0OSwxMyBAQCBQYXNzUmVmUHRy
PElEQkFueT4gSURCQW55OjpjcmVhdGVOdWxsKCkKICAgICByZXR1cm4gaWRiQW55LnJlbGVhc2Uo
KTsKIH0KIAorUGFzc1JlZlB0cjxJREJBbnk+IElEQkFueTo6Y3JlYXRlU3RyaW5nKGNvbnN0IFN0
cmluZyYgdmFsdWUpCit7CisgICAgUmVmUHRyPElEQkFueT4gaWRiQW55ID0gYWRvcHRSZWYobmV3
IElEQkFueSgpKTsKKyAgICBpZGJBbnktPnNldCh2YWx1ZSk7CisgICAgcmV0dXJuIGlkYkFueS5y
ZWxlYXNlKCk7Cit9CisKIElEQkFueTo6SURCQW55KCkKICAgICA6IG1fdHlwZShVbmRlZmluZWRU
eXBlKQogewpAQCAtMTE4LDYgKzEyNSwxMiBAQCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gSURCQW55OjpzZXJpYWxpemVkU2NyaXB0VmFsdWUoKQogICAgIHJldHVybiBtX3Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTsKIH0KIAorY29uc3QgU3RyaW5nJiBJREJBbnk6OnN0cmluZygpCit7
CisgICAgQVNTRVJUKG1fdHlwZSA9PSBTdHJpbmdUeXBlKTsKKyAgICByZXR1cm4gbV9zdHJpbmc7
Cit9CisKIHZvaWQgSURCQW55OjpzZXROdWxsKCkKIHsKICAgICBBU1NFUlQobV90eXBlID09IFVu
ZGVmaW5lZFR5cGUpOwpAQCAtMTk0LDYgKzIwNywxMyBAQCB2b2lkIElEQkFueTo6c2V0KFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSkKICAgICBtX3NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSA9IHZhbHVlOwogfQogCit2b2lkIElEQkFueTo6c2V0KGNvbnN0IFN0cmluZyYgdmFs
dWUpCit7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBVbmRlZmluZWRUeXBlKTsKKyAgICBtX3R5cGUg
PSBTdHJpbmdUeXBlOworICAgIG1fc3RyaW5nID0gdmFsdWU7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJBbnkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFu
eS5oCmluZGV4IDZiZWRhNTg4ODA4NGJjMjIxYTNkMThjNjAzNjQ2NDY0MmRjYTdlNDYuLjkzZWIy
NDAxZGFhYjhjODY2NmU2ODQ2NTAxZDUxYjkxMDY5YWFiZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKIAorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTQ5LDYgKzUwLDcgQEAgY2xhc3MgSURCQW55IDogcHVibGlj
IFJlZkNvdW50ZWQ8SURCQW55PiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SURC
QW55PiBjcmVhdGVJbnZhbGlkKCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQW55PiBjcmVh
dGVOdWxsKCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQW55PiBjcmVhdGVTdHJpbmcoY29u
c3QgU3RyaW5nJik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxJREJBbnk+IGNyZWF0ZShUKiBpZGJPYmplY3QpCiAgICAgewpAQCAtNzcsNyArNzksOCBA
QCBwdWJsaWM6CiAgICAgICAgIElEQktleVR5cGUsCiAgICAgICAgIElEQk9iamVjdFN0b3JlVHlw
ZSwKICAgICAgICAgSURCVHJhbnNhY3Rpb25UeXBlLAotICAgICAgICBTZXJpYWxpemVkU2NyaXB0
VmFsdWVUeXBlCisgICAgICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZVR5cGUsCisgICAgICAgIFN0
cmluZ1R5cGUsCiAgICAgfTsKIAogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlw
ZTsgfQpAQCAtOTIsNiArOTUsNyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxJREJPYmplY3RT
dG9yZT4gaWRiT2JqZWN0U3RvcmUoKTsKICAgICBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBp
ZGJUcmFuc2FjdGlvbigpOwogICAgIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBz
ZXJpYWxpemVkU2NyaXB0VmFsdWUoKTsKKyAgICBjb25zdCBTdHJpbmcmIHN0cmluZygpOwogCiAg
ICAgLy8gU2V0IGNhbiBvbmx5IGJlIGNhbGxlZCBvbmNlLgogICAgIHZvaWQgc2V0TnVsbCgpOwpA
QCAtMTA1LDYgKzEwOSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldChQYXNzUmVmUHRyPElEQk9i
amVjdFN0b3JlPik7CiAgICAgdm9pZCBzZXQoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4pOwog
ICAgIHZvaWQgc2V0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPik7CisgICAgdm9p
ZCBzZXQoY29uc3QgU3RyaW5nJik7CiAKIHByaXZhdGU6CiAgICAgSURCQW55KCk7CkBAIC0xMjIs
NiArMTI3LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmU+IG1faWRiT2Jq
ZWN0U3RvcmU7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBtX2lkYlRyYW5zYWN0aW9uOwog
ICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1fc2VyaWFsaXplZFNjcmlwdFZhbHVl
OworICAgIFN0cmluZyBtX3N0cmluZzsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9y
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmgK
aW5kZXggZjZiYjEwYWFhYzVjODU5Mzg2OWI4NWRhYzE2N2E5Yjg0ZTA2NzU3ZC4uNTc3NzVlYjFj
ZWQ1ZmQ4NDhjZmRkYjJhNDc1ZTJhZWU1MjBmYTlkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmgKQEAgLTUyLDggKzUyLDggQEAg
cHVibGljOgogICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVJREJEYXRhYmFzZU1ldGFEYXRhKGludDY0
X3Qgcm93SWQsIGNvbnN0IFN0cmluZyYgdmVyc2lvbikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBk
ZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKIAotICAgIHZpcnR1YWwgdm9p
ZCBnZXRPYmplY3RTdG9yZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZv
dW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcywgVmVjdG9yPFN0cmluZz4mIGZvdW5k
S2V5UGF0aHMsIFZlY3Rvcjxib29sPiYgZm91bmRBdXRvSW5jcmVtZW50RmxhZ3MpID0gMDsKLSAg
ICB2aXJ0dWFsIGJvb2wgY3JlYXRlT2JqZWN0U3RvcmUoaW50NjRfdCBkYXRhYmFzZUlkLCBjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50
LCBpbnQ2NF90JiBhc3NpZ25lZE9iamVjdFN0b3JlSWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
Z2V0T2JqZWN0U3RvcmVzKGludDY0X3QgZGF0YWJhc2VJZCwgVmVjdG9yPGludDY0X3Q+JiBmb3Vu
ZElkcywgVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMsIFZlY3RvcjxJREJLZXlQYXRoPiYgZm91
bmRLZXlQYXRocywgVmVjdG9yPGJvb2w+JiBmb3VuZEF1dG9JbmNyZW1lbnRGbGFncykgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVPYmplY3RTdG9yZShpbnQ2NF90IGRhdGFiYXNlSWQsIGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCwg
aW50NjRfdCYgYXNzaWduZWRPYmplY3RTdG9yZUlkKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRl
bGV0ZU9iamVjdFN0b3JlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
KSA9IDA7CiAKICAgICBjbGFzcyBPYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXIgOiBwdWJsaWMg
UmVmQ291bnRlZDxPYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXI+IHsKQEAgLTc3LDggKzc3LDgg
QEAgcHVibGljOgogICAgIH07CiAgICAgdmlydHVhbCBib29sIGZvckVhY2hPYmplY3RTdG9yZVJl
Y29yZChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgT2JqZWN0U3Rv
cmVSZWNvcmRDYWxsYmFjayYpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBnZXRJbmRleGVzKGlu
dDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBWZWN0b3I8aW50NjRfdD4m
IGZvdW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcywgVmVjdG9yPFN0cmluZz4mIGZv
dW5kS2V5UGF0aHMsIFZlY3Rvcjxib29sPiYgZm91bmRVbmlxdWVGbGFncywgVmVjdG9yPGJvb2w+
JiBmb3VuZE11bHRpRW50cnlGbGFncykgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJbmRl
eChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgaXNVbmlxdWUsIGJvb2wgaXNNdWx0
aUVudHJ5LCBpbnQ2NF90JiBpbmRleElkKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldEluZGV4
ZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFZlY3RvcjxpbnQ2
NF90PiYgZm91bmRJZHMsIFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzLCBWZWN0b3I8SURCS2V5
UGF0aD4mIGZvdW5kS2V5UGF0aHMsIFZlY3Rvcjxib29sPiYgZm91bmRVbmlxdWVGbGFncywgVmVj
dG9yPGJvb2w+JiBmb3VuZE11bHRpRW50cnlGbGFncykgPSAwOworICAgIHZpcnR1YWwgYm9vbCBj
cmVhdGVJbmRleChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCBpc1VuaXF1ZSwgYm9vbCBp
c011bHRpRW50cnksIGludDY0X3QmIGluZGV4SWQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVs
ZXRlSW5kZXgoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0
X3QgaW5kZXhJZCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBwdXRJbmRleERhdGFGb3JSZWNvcmQo
aW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJ
ZCwgY29uc3QgSURCS2V5JiwgY29uc3QgT2JqZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyKikgPSAw
OwogICAgIHZpcnR1YWwgYm9vbCBkZWxldGVJbmRleERhdGFGb3JSZWNvcmQoaW50NjRfdCBkYXRh
YmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgT2Jq
ZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyKikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCmluZGV4IGNhNjU5MDdmYjM5MTI0N2VhNjEx
NDVhMzIyZjA4OWFjNGQ4YmY5NTMuLmZjODAzYjVhZWUxMDE3NTllYjRmMDc5YTAwYzcxN2U2ZTc3
NjlmMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZS5jcHAKQEAgLTkyLDkgKzkyLDE0IEBAIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IElE
QkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvCiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIFN0cmluZyBrZXlQYXRoOwotICAgIGJvb2wga2V5
UGF0aEV4aXN0cyA9IG9wdGlvbnMuZ2V0V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKCJrZXlQYXRo
Iiwga2V5UGF0aCk7Ci0gICAgaWYgKGtleVBhdGhFeGlzdHMgJiYgIUlEQklzVmFsaWRLZXlQYXRo
KGtleVBhdGgpKSB7CisgICAgSURCS2V5UGF0aCBrZXlQYXRoOworICAgIGlmICghb3B0aW9ucy5p
c1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIFN0cmluZyBrZXlQYXRoU3RyaW5nOworICAg
ICAgICBpZiAob3B0aW9ucy5nZXQoImtleVBhdGgiLCBrZXlQYXRoU3RyaW5nKSkKKyAgICAgICAg
ICAgIGtleVBhdGggPSBJREJLZXlQYXRoKGtleVBhdGhTdHJpbmcpOworICAgIH0KKworICAgIGlm
ICgha2V5UGF0aC5pc051bGwoKSAmJiAha2V5UGF0aC5pc1ZhbGlkKCkpIHsKICAgICAgICAgZWMg
PSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Tk9OX1RSQU5TSUVOVF9FUlI7CiAgICAgICAgIHJldHVy
biAwOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKaW5kZXggYjA1YjMyODYzZDA3MmZiNjU3
ZGNhOWM4ZDY0ZTBiODUxYWQwOTI0NS4uNTkxOTlmYzYzMmFiZjE1YWY2ZjgyNzcxNWRjYTExNzk0
NDM1YjcxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKQEAgLTEzNyw3ICsxMzcsNyBAQCBQYXNz
UmVmUHRyPERPTVN0cmluZ0xpc3Q+IElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9iamVjdFN0b3Jl
TmFtZXMoKSBjb25zdAogICAgIHJldHVybiBvYmplY3RTdG9yZU5hbWVzLnJlbGVhc2UoKTsKIH0K
IAotUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IElEQkRhdGFiYXNl
QmFja2VuZEltcGw6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZSogdHJhbnNhY3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0
cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IElEQkRhdGFiYXNlQmFja2VuZEltcGw6
OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYg
a2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2UqIHRyYW5zYWN0aW9uUHRyLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBBU1NFUlQodHJh
bnNhY3Rpb25QdHItPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpOwog
CkBAIC0zNzYsNyArMzc2LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpsb2FkT2Jq
ZWN0U3RvcmVzKCkKIHsKICAgICBWZWN0b3I8aW50NjRfdD4gaWRzOwogICAgIFZlY3RvcjxTdHJp
bmc+IG5hbWVzOwotICAgIFZlY3RvcjxTdHJpbmc+IGtleVBhdGhzOworICAgIFZlY3RvcjxJREJL
ZXlQYXRoPiBrZXlQYXRoczsKICAgICBWZWN0b3I8Ym9vbD4gYXV0b0luY3JlbWVudEZsYWdzOwog
ICAgIG1fYmFja2luZ1N0b3JlLT5nZXRPYmplY3RTdG9yZXMobV9pZCwgaWRzLCBuYW1lcywga2V5
UGF0aHMsIGF1dG9JbmNyZW1lbnRGbGFncyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaAppbmRleCAxMDg2
ZWIxNmViODdkMTlmMDI4ZTNmNGM4YzQ3YjkwNWQ4Njc4ZjA1Li4zMzE4ZTJiZjE4NDJmZWY2YzFi
MzdkODBmMjYwYmIyMGU1NTFiMzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCkBAIC02NSw3ICs2NSw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyB2ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4g
bV92ZXJzaW9uOyB9CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVj
dFN0b3JlTmFtZXMoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJPYmplY3RT
dG9yZUJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVPYmplY3RTdG9yZShj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQs
IElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2
b2lkIHNldFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJik7
CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4g
dHJhbnNhY3Rpb24oRE9NU3RyaW5nTGlzdCogb2JqZWN0U3RvcmVOYW1lcywgdW5zaWduZWQgc2hv
cnQgbW9kZSwgRXhjZXB0aW9uQ29kZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaAppbmRl
eCA1NmU4ZjJkYmI2NDJhYWViMTE2Njg5YzU5OTc0ODExNDM0NTRiNjI5Li5lMDcyYTBmMzk1OWQ3
MGQ1MWE1MGMyNmIxZWIyMTUyMGM1OTZlYjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2Uu
aApAQCAtMzgsNiArMzgsNyBAQCBjbGFzcyBET01TdHJpbmdMaXN0OwogY2xhc3MgRnJhbWU7CiBj
bGFzcyBJREJDYWxsYmFja3M7CiBjbGFzcyBJREJEYXRhYmFzZUNhbGxiYWNrczsKK2NsYXNzIElE
QktleVBhdGg7CiBjbGFzcyBJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U7CiBjbGFzcyBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U7CiAKQEAgLTU1LDcgKzU2LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgU3RyaW5nIHZlcnNpb24oKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMoKSBjb25zdCA9IDA7CiAK
LSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBj
cmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0
aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBF
eGNlcHRpb25Db2RlJikgPSAwOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgSURCS2V5UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCwgSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVs
ZXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWZXJz
aW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNz
UmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2Fj
dGlvbihET01TdHJpbmdMaXN0KiBzdG9yZU5hbWVzLCB1bnNpZ25lZCBzaG9ydCBtb2RlLCBFeGNl
cHRpb25Db2RlJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCSW5kZXguaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQklu
ZGV4LmgKaW5kZXggZWJiYmY5NmFhYTUwNTY3YmM0NjBkZDZkZGU4MzljNjJiN2E4Y2NiZS4uYzk5
NDA0YWRiOWJiODYyNGExNjZhMDJkMmQ1NzA2MWIzNzk2MjdkZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNs
dWRlICJJREJDdXJzb3IuaCIKICNpbmNsdWRlICJJREJJbmRleEJhY2tlbmRJbnRlcmZhY2UuaCIK
KyNpbmNsdWRlICJJREJLZXlQYXRoLmgiCiAjaW5jbHVkZSAiSURCS2V5UmFuZ2UuaCIKICNpbmNs
dWRlICJJREJSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKQEAgLTUwLDcg
KzUxLDcgQEAgcHVibGljOgogICAgIC8vIEltcGxlbWVudCB0aGUgSURMCiAgICAgU3RyaW5nIG5h
bWUoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmQtPm5hbWUoKTsgfQogICAgIElEQk9iamVjdFN0
b3JlKiBvYmplY3RTdG9yZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0U3RvcmUuZ2V0KCk7IH0K
LSAgICBTdHJpbmcga2V5UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZC0+a2V5UGF0aCgp
OyB9CisgICAgUGFzc1JlZlB0cjxJREJBbnk+IGtleVBhdGgoKSBjb25zdCB7IHJldHVybiBtX2Jh
Y2tlbmQtPmtleVBhdGgoKTsgfQogICAgIGJvb2wgdW5pcXVlKCkgY29uc3QgeyByZXR1cm4gbV9i
YWNrZW5kLT51bmlxdWUoKTsgfQogICAgIGJvb2wgbXVsdGlFbnRyeSgpIGNvbnN0IHsgcmV0dXJu
IG1fYmFja2VuZC0+bXVsdGlFbnRyeSgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkluZGV4LmlkbAppbmRleCBiMjNlNTVhY2Q2MzJjZjI2ZTNhN2E2NTg1MjRk
ZjNiYjMxZTJkN2IxLi41MjY5ZmRjZDNlODE5NmJiNjg1NmE3ZTQ5YWVlZTQ2NjBlNjQ2YzhlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaWRsCkBAIC0z
MCw3ICszMCw3IEBAIG1vZHVsZSBzdG9yYWdlIHsKICAgICBdIElEQkluZGV4IHsKICAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBuYW1lOwogICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgSURCT2JqZWN0U3RvcmUgb2JqZWN0U3RvcmU7Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBET01TdHJpbmcga2V5UGF0aDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIElEQkFu
eSBrZXlQYXRoOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiB1bmlxdWU7CiAg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIG11bHRpRW50cnk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1w
bC5jcHAKaW5kZXggNjNkNDg0MTQ3ODQwZjY4OTUzYmEzNDUwN2QwZWZjYTc5MWU4ZmQ2Ny4uOGM1
MTFlZjM1NGM1NmZkNGE5MjRmYmU5MmIxN2NlYTNiYjIxZTIwOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAK
QEAgLTQxLDcgKzQxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1JREJJbmRleEJhY2tl
bmRJbXBsOjpJREJJbmRleEJhY2tlbmRJbXBsKElEQkJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3Jl
LCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwqIG9i
amVjdFN0b3JlQmFja2VuZCwgaW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIHN0b3JlTmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9v
bCBtdWx0aUVudHJ5KQorSURCSW5kZXhCYWNrZW5kSW1wbDo6SURCSW5kZXhCYWNrZW5kSW1wbChJ
REJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKiBvYmplY3RTdG9yZUJhY2tlbmQsIGludDY0X3QgaWQs
IGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBzdG9yZU5hbWUsIGNvbnN0IElEQktl
eVBhdGgmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnkpCiAgICAgOiBtX2Jh
Y2tpbmdTdG9yZShiYWNraW5nU3RvcmUpCiAgICAgLCBtX2RhdGFiYXNlSWQoZGF0YWJhc2VJZCkK
ICAgICAsIG1fb2JqZWN0U3RvcmVCYWNrZW5kKG9iamVjdFN0b3JlQmFja2VuZCkKQEAgLTU0LDcg
KzU0LDcgQEAgSURCSW5kZXhCYWNrZW5kSW1wbDo6SURCSW5kZXhCYWNrZW5kSW1wbChJREJCYWNr
aW5nU3RvcmUqIGJhY2tpbmdTdG9yZSwgaW50NjRfdAogewogfQogCi1JREJJbmRleEJhY2tlbmRJ
bXBsOjpJREJJbmRleEJhY2tlbmRJbXBsKElEQkJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlLCBp
bnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwqIG9iamVj
dFN0b3JlQmFja2VuZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHN0b3JlTmFt
ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5KQor
SURCSW5kZXhCYWNrZW5kSW1wbDo6SURCSW5kZXhCYWNrZW5kSW1wbChJREJCYWNraW5nU3RvcmUq
IGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsKiBvYmplY3RTdG9yZUJhY2tlbmQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiBzdG9yZU5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgdW5pcXVl
LCBib29sIG11bHRpRW50cnkpCiAgICAgOiBtX2JhY2tpbmdTdG9yZShiYWNraW5nU3RvcmUpCiAg
ICAgLCBtX2RhdGFiYXNlSWQoZGF0YWJhc2VJZCkKICAgICAsIG1fb2JqZWN0U3RvcmVCYWNrZW5k
KG9iamVjdFN0b3JlQmFja2VuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwuaAppbmRleCBlNjQ4NWI2NjRjM2E0ZTMwMzc0
NGEzMWJhNjQ1OWMyNWE1M2VjZTlhLi43NWRhNmVkNzQyZjg0MzY1YTM1YjBiOGMwOTY0MGRjODg4
MmRiNzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJ
bmRleEJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCSW5kZXhCYWNrZW5kSW1wbC5oCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJJREJD
dXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCSW5kZXhCYWNrZW5kSW50ZXJm
YWNlLmgiCisjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTQwLDExICs0MSwxMSBAQCBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCiBjbGFz
cyBJREJJbmRleEJhY2tlbmRJbXBsIDogcHVibGljIElEQkluZGV4QmFja2VuZEludGVyZmFjZSB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gY3Jl
YXRlKElEQkJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNv
bnN0IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwqIG9iamVjdFN0b3JlQmFja2VuZCwgaW50NjRf
dCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHN0b3JlTmFtZSwgY29uc3Qg
U3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5KQorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+IGNyZWF0ZShJREJCYWNraW5nU3RvcmUq
IGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsKiBvYmplY3RTdG9yZUJhY2tlbmQsIGludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiBzdG9yZU5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgs
IGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnkpCiAgICAgewogICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IElEQkluZGV4QmFja2VuZEltcGwoYmFja2luZ1N0b3JlLCBkYXRhYmFzZUlkLCBv
YmplY3RTdG9yZUJhY2tlbmQsIGlkLCBuYW1lLCBzdG9yZU5hbWUsIGtleVBhdGgsIHVuaXF1ZSwg
bXVsdGlFbnRyeSkpOwogICAgIH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tl
bmRJbXBsPiBjcmVhdGUoSURCQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0
YWJhc2VJZCwgY29uc3QgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCogb2JqZWN0U3RvcmVCYWNr
ZW5kLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgc3RvcmVOYW1lLCBjb25zdCBT
dHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnkpCisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gY3JlYXRlKElEQkJhY2tpbmdTdG9yZSog
YmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IElEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGwqIG9iamVjdFN0b3JlQmFja2VuZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIHN0b3JlTmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCB1bmlxdWUs
IGJvb2wgbXVsdGlFbnRyeSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURC
SW5kZXhCYWNrZW5kSW1wbChiYWNraW5nU3RvcmUsIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlQmFj
a2VuZCwgbmFtZSwgc3RvcmVOYW1lLCBrZXlQYXRoLCB1bmlxdWUsIG11bHRpRW50cnkpKTsKICAg
ICB9CkBAIC02Myw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICAvLyBJbXBsZW1lbnRzIElEQkluZGV4
QmFja2VuZEludGVyZmFjZS4KICAgICB2aXJ0dWFsIFN0cmluZyBuYW1lKCkgeyByZXR1cm4gbV9u
YW1lOyB9CiAgICAgdmlydHVhbCBTdHJpbmcgc3RvcmVOYW1lKCkgeyByZXR1cm4gbV9zdG9yZU5h
bWU7IH0KLSAgICB2aXJ0dWFsIFN0cmluZyBrZXlQYXRoKCkgeyByZXR1cm4gbV9rZXlQYXRoOyB9
CisgICAgdmlydHVhbCBJREJLZXlQYXRoIGtleVBhdGgoKSB7IHJldHVybiBtX2tleVBhdGg7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgdW5pcXVlKCkgeyByZXR1cm4gbV91bmlxdWU7IH0KICAgICB2aXJ0
dWFsIGJvb2wgbXVsdGlFbnRyeSgpIHsgcmV0dXJuIG1fbXVsdGlFbnRyeTsgfQogCkBAIC03Niw4
ICs3Nyw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZ2V0S2V5KFBhc3NSZWZQdHI8SURC
S2V5PiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UqLCBFeGNlcHRpb25Db2RlJik7CiAKIHByaXZhdGU6Ci0gICAgSURCSW5kZXhCYWNrZW5k
SW1wbChJREJCYWNraW5nU3RvcmUqLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IElEQk9iamVj
dFN0b3JlQmFja2VuZEltcGwqLCBpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYgc3RvcmVOYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBi
b29sIG11bHRpRW50cnkpOwotICAgIElEQkluZGV4QmFja2VuZEltcGwoSURCQmFja2luZ1N0b3Jl
KiwgaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKiwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHN0b3JlTmFtZSwgY29uc3QgU3RyaW5n
JiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5KTsKKyAgICBJREJJbmRleEJh
Y2tlbmRJbXBsKElEQkJhY2tpbmdTdG9yZSosIGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbCosIGludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiBzdG9yZU5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIHVuaXF1ZSwg
Ym9vbCBtdWx0aUVudHJ5KTsKKyAgICBJREJJbmRleEJhY2tlbmRJbXBsKElEQkJhY2tpbmdTdG9y
ZSosIGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCos
IGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBzdG9yZU5hbWUsIGNvbnN0IElEQktl
eVBhdGgmLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5KTsKIAogICAgIHN0YXRpYyB2b2lk
IG9wZW5DdXJzb3JJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJ
REJJbmRleEJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIHVuc2lnbmVkIHNo
b3J0IGRpcmVjdGlvbiwgSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6Q3Vyc29yVHlwZSwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZT4pOwogICAgIHN0YXRpYyB2b2lkIGNvdW50SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4sIFBhc3NSZWZQdHI8SURC
S2V5UmFuZ2U+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlPik7CkBAIC05NSw3ICs5Niw3IEBAIHByaXZhdGU6CiAgICAg
aW50NjRfdCBtX2lkOwogICAgIFN0cmluZyBtX25hbWU7CiAgICAgU3RyaW5nIG1fc3RvcmVOYW1l
OwotICAgIFN0cmluZyBtX2tleVBhdGg7CisgICAgSURCS2V5UGF0aCBtX2tleVBhdGg7CiAgICAg
Ym9vbCBtX3VuaXF1ZTsKICAgICBib29sIG1fbXVsdGlFbnRyeTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbnRlcmZhY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEludGVy
ZmFjZS5oCmluZGV4IDgxMjcwYWU0YTk4YTlkNmIwYjU2OGFjMGQ5MDY2ZDhhNDY0NmFiNzMuLjBh
NWJiYjU2ODg5OTY5ODNhNmE3OGI4ZjViYjllODdlYTZlMDI5NTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEludGVyZmFjZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEludGVy
ZmFjZS5oCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURC
Q2FsbGJhY2tzOwogY2xhc3MgSURCS2V5OworY2xhc3MgSURCS2V5UGF0aDsKIGNsYXNzIElEQktl
eVJhbmdlOwogY2xhc3MgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlOwogCkBAIC00Nyw3
ICs0OCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgU3RyaW5nIG5hbWUoKSA9IDA7CiAgICAg
dmlydHVhbCBTdHJpbmcgc3RvcmVOYW1lKCkgPSAwOwotICAgIHZpcnR1YWwgU3RyaW5nIGtleVBh
dGgoKSA9IDA7CisgICAgdmlydHVhbCBJREJLZXlQYXRoIGtleVBhdGgoKSA9IDA7CiAgICAgdmly
dHVhbCBib29sIHVuaXF1ZSgpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgbXVsdGlFbnRyeSgpID0g
MDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5
UGF0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRoLmNw
cAppbmRleCBjZDVlOTY2MzQwMDJhY2Q0MzliNGFkNWNiYmJmNDgyNjU5ZDRhMWJhLi40NzEwNmVh
ZjBhNDUyNzZkNzY1ZTVlMTkzMmZhMzE1ZTY2MDY3NjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRoLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAj
aWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKKyNpbmNsdWRlICJET01TdHJpbmdMaXN0Lmgi
CiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KICNpbmNsdWRlIDx3dGYvZHRvYS5oPgogCkBA
IC0xNzksNiArMTgwLDQ0IEBAIHZvaWQgSURCUGFyc2VLZXlQYXRoKGNvbnN0IFN0cmluZyYga2V5
UGF0aCwgVmVjdG9yPFN0cmluZz4mIGVsZW1lbnRzLCBJREJLZXlQYXRoCiAgICAgfQogfQogCiti
b29sIElEQktleVBhdGg6OmlzVmFsaWQoKSBjb25zdAoreworICAgIHN3aXRjaCAobV90eXBlKSB7
CisgICAgY2FzZSBOdWxsVHlwZToKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY2FzZSBT
dHJpbmdUeXBlOgorICAgICAgICByZXR1cm4gSURCSXNWYWxpZEtleVBhdGgobV9zdHJpbmcpOwor
CisgICAgY2FzZSBBcnJheVR5cGU6CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9h
cnJheS5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKCFJREJJc1ZhbGlkS2V5UGF0aCht
X2FycmF5W2ldKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBmYWxzZTsKK30KKworSURCS2V5UGF0aDo6b3BlcmF0b3IgUGFzc1JlZlB0cjxJREJB
bnk+KCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAgIGNhc2UgTnVsbFR5cGU6
CisgICAgICAgIHJldHVybiBJREJBbnk6OmNyZWF0ZU51bGwoKTsKKyAgICBjYXNlIFN0cmluZ1R5
cGU6CisgICAgICAgIHJldHVybiBJREJBbnk6OmNyZWF0ZVN0cmluZyhtX3N0cmluZyk7CisgICAg
Y2FzZSBBcnJheVR5cGU6CisgICAgICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBrZXlQYXRocyA9
IERPTVN0cmluZ0xpc3Q6OmNyZWF0ZSgpOworICAgICAgICBmb3IgKFZlY3RvcjxTdHJpbmc+Ojpj
b25zdF9pdGVyYXRvciBpdCA9IG1fYXJyYXkuYmVnaW4oKTsgaXQgIT0gbV9hcnJheS5lbmQoKTsg
KytpdCkKKyAgICAgICAga2V5UGF0aHMtPmFwcGVuZCgqaXQpOworICAgICAgICByZXR1cm4gSURC
QW55OjpjcmVhdGUoc3RhdGljX2Nhc3Q8UGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiA+KGtleVBh
dGhzKSk7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOwor
fQorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVE
X0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCS2V5UGF0aC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UGF0
aC5oCmluZGV4IGM1MmE2M2JhOGNkOWUxZGFiYWUzODRjOTA1MTcwMjJhOGI0NGQzMWMuLmNkNWRk
YTZiNTM4NTdkNWNkNjMzZDU4MzY1ZGE4NTIyZTNiMTYxYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRoLmgKQEAgLTI4LDEwICsyOCw5IEBACiAKICNp
ZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlICJJREJBbnkuaCIKKyNpbmNs
dWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Miw5
ICs0MSw0NCBAQCBlbnVtIElEQktleVBhdGhQYXJzZUVycm9yIHsKICAgICBJREJLZXlQYXRoUGFy
c2VFcnJvckRvdCwKIH07CiAKLWJvb2wgSURCSXNWYWxpZEtleVBhdGgoY29uc3QgU3RyaW5nJik7
CiB2b2lkIElEQlBhcnNlS2V5UGF0aChjb25zdCBTdHJpbmcmLCBWZWN0b3I8U3RyaW5nPiYsIElE
QktleVBhdGhQYXJzZUVycm9yJik7CiAKK2NsYXNzIElEQktleVBhdGggeworcHVibGljOgorICAg
IElEQktleVBhdGgoKSA6IG1fdHlwZShOdWxsVHlwZSkgeyB9CisgICAgSURCS2V5UGF0aChjb25z
dCBTdHJpbmcmIHN0cmluZykgOiBtX3R5cGUoU3RyaW5nVHlwZSksIG1fc3RyaW5nKHN0cmluZykg
eyB9CisgICAgSURCS2V5UGF0aChjb25zdCBWZWN0b3I8U3RyaW5nPiYgYXJyYXkpIDogbV90eXBl
KEFycmF5VHlwZSksIG1fYXJyYXkoYXJyYXkpIHsgfQorCisgICAgZW51bSBUeXBlIHsKKyAgICAg
ICAgTnVsbFR5cGUgPSAwLAorICAgICAgICBTdHJpbmdUeXBlLAorICAgICAgICBBcnJheVR5cGUK
KyAgICB9OworCisgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisKKyAg
ICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYXJyYXkoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNT
RVJUKG1fdHlwZSA9PSBBcnJheVR5cGUpOworICAgICAgICByZXR1cm4gbV9hcnJheTsKKyAgICB9
CisKKyAgICBjb25zdCBTdHJpbmcmIHN0cmluZygpIGNvbnN0CisgICAgeworICAgICAgICBBU1NF
UlQobV90eXBlID09IFN0cmluZ1R5cGUpOworICAgICAgICByZXR1cm4gbV9zdHJpbmc7CisgICAg
fQorCisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gTnVsbFR5cGU7
IH0KKyAgICBib29sIGlzVmFsaWQoKSBjb25zdDsKKyAgICBvcGVyYXRvciBQYXNzUmVmUHRyPElE
QkFueT4oKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBUeXBlIG1fdHlwZTsKKyAgICBTdHJpbmcg
bV9zdHJpbmc7CisgICAgVmVjdG9yPFN0cmluZz4gbV9hcnJheTsKK307CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJLZXlQYXRoQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCS2V5UGF0aEJhY2tlbmRJbXBsLmNwcAppbmRleCA5NGM3ZjI3OTM1
Y2ZhMzlhZDM4ODAwMTJiZTYwOWI2YjEyOTViZmJhLi42NGExZmJjNWJlZDcwYWM5MDg1ZjUzNjNi
OGE2ZWQ5M2MyYTI4MDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJLZXlQYXRoQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQktleVBhdGhCYWNrZW5kSW1wbC5jcHAKQEAgLTM4LDEyICszOCwxMiBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgSURCS2V5UGF0aEJhY2tlbmRJbXBsOjpj
cmVhdGVJREJLZXlzRnJvbVNlcmlhbGl6ZWRWYWx1ZXNBbmRLZXlQYXRoKGNvbnN0IFZlY3RvcjxS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgMD4mLCBjb25zdCBTdHJpbmcmLCBWZWN0b3I8
UmVmUHRyPElEQktleT4sIDA+JikKK3ZvaWQgSURCS2V5UGF0aEJhY2tlbmRJbXBsOjpjcmVhdGVJ
REJLZXlzRnJvbVNlcmlhbGl6ZWRWYWx1ZXNBbmRLZXlQYXRoKGNvbnN0IFZlY3RvcjxSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgMD4mLCBjb25zdCBJREJLZXlQYXRoJiwgVmVjdG9yPFJl
ZlB0cjxJREJLZXk+LCAwPiYpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIG1ldGhv
ZCBvbmNlIEpTQyBzdXBwb3J0cyBXaXJlRm9ybWF0IGZvciBTZXJpYWxpemVkU2NyaXB0VmFsdWUu
CiB9CiAKLVBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBJREJLZXlQYXRoQmFja2Vu
ZEltcGw6OmluamVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUoUGFzc1JlZlB0cjxJREJLZXk+
LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIGNvbnN0IFN0cmluZyYpCitQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gSURCS2V5UGF0aEJhY2tlbmRJbXBsOjppbmpl
Y3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBjb25zdCBJREJLZXlQYXRoJikKIHsKICAgICAvLyBG
SVhNRTogSW1wbGVtZW50IHRoaXMgbWV0aG9kIG9uY2UgSlNDIHN1cHBvcnRzIFdpcmVGb3JtYXQg
Zm9yIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS4KICAgICByZXR1cm4gUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJLZXlQYXRoQmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQktleVBhdGhCYWNrZW5kSW1wbC5oCmluZGV4IDFjNzYyMzIyMTdmZjUwZTRm
MGQ5Nzk4ZjU3Y2Y0MjRjZGQzYzExZmQuLjBmMDU3ZWIyYmM3MzI1MWY3YWQ1ZjFmMDUwOTkwMWVk
Y2U1MTg5MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QktleVBhdGhCYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQktleVBhdGhCYWNrZW5kSW1wbC5oCkBAIC0zMywxMiArMzMsMTMgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgSURCS2V5OworY2xhc3MgSURCS2V5UGF0aDsKIGNsYXNzIFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIAogY2xhc3MgSURCS2V5UGF0aEJhY2tlbmRJbXBsIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBjcmVhdGVJREJLZXlzRnJvbVNlcmlhbGl6ZWRWYWx1ZXNB
bmRLZXlQYXRoKGNvbnN0IFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgMD4m
IHZhbHVlcywgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBWZWN0b3I8UmVmUHRyPElEQktleT4sIDA+
JiBrZXlzKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGlu
amVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUoUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIGNvbnN0IFN0cmluZyYga2V5UGF0aCk7CisgICAg
c3RhdGljIHZvaWQgY3JlYXRlSURCS2V5c0Zyb21TZXJpYWxpemVkVmFsdWVzQW5kS2V5UGF0aChj
b25zdCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIDA+JiB2YWx1ZXMsIGNv
bnN0IElEQktleVBhdGgmLCBWZWN0b3I8UmVmUHRyPElEQktleT4sIDA+JiBrZXlzKTsKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGluamVjdElEQktleUludG9T
ZXJpYWxpemVkVmFsdWUoUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4sIGNvbnN0IElEQktleVBhdGgmKTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9y
ZS5jcHAKaW5kZXggZGNmM2E4YWE3MDAzMTQzNzE3ODFjOTM0N2I3MjhlMGIwNjNjYjVjNi4uMmY3
MDg0MGYxYWU5NzljZTZkMmQ0ODg3OWJlMTY5MTdkMWM1MjYwOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9y
ZS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2lu
Y2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJJREJGYWN0b3J5QmFja2VuZEltcGwuaCIK
KyNpbmNsdWRlICJJREJLZXlQYXRoLmgiCiAjaW5jbHVkZSAiSURCS2V5UmFuZ2UuaCIKICNpbmNs
dWRlICJJREJMZXZlbERCQ29kaW5nLmgiCiAjaW5jbHVkZSAiTGV2ZWxEQkNvbXBhcmF0b3IuaCIK
QEAgLTgxLDYgKzgyLDE0IEBAIHN0YXRpYyBib29sIHB1dFN0cmluZyhEQk9yVHJhbnNhY3Rpb24q
IGRiLCBjb25zdCBWZWN0b3I8Y2hhcj4ga2V5LCBjb25zdCBTdHJpbmcmCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBEQk9yVHJhbnNhY3Rpb24+CitzdGF0aWMgYm9v
bCBwdXRJREJLZXlQYXRoKERCT3JUcmFuc2FjdGlvbiogZGIsIGNvbnN0IFZlY3RvcjxjaGFyPiBr
ZXksIGNvbnN0IElEQktleVBhdGgmIHZhbHVlKQoreworICAgIGlmICghZGItPnB1dChrZXksIGVu
Y29kZUlEQktleVBhdGgodmFsdWUpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVy
biB0cnVlOworfQorCiBzdGF0aWMgaW50IGNvbXBhcmVLZXlzKGNvbnN0IExldmVsREJTbGljZSYg
YSwgY29uc3QgTGV2ZWxEQlNsaWNlJiBiKQogewogICAgIHJldHVybiBjb21wYXJlKGEsIGIpOwpA
QCAtMzExLDcgKzMyMCw3IEBAIHN0YXRpYyBib29sIGNoZWNrT2JqZWN0U3RvcmVBbmRNZXRhRGF0
YVR5cGUoY29uc3QgTGV2ZWxEQkl0ZXJhdG9yKiBpdCwgY29uc3QgVmVjCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLXZvaWQgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0T2JqZWN0U3RvcmVzKGlu
dDY0X3QgZGF0YWJhc2VJZCwgVmVjdG9yPGludDY0X3Q+JiBmb3VuZElkcywgVmVjdG9yPFN0cmlu
Zz4mIGZvdW5kTmFtZXMsIFZlY3RvcjxTdHJpbmc+JiBmb3VuZEtleVBhdGhzLCBWZWN0b3I8Ym9v
bD4mIGZvdW5kQXV0b0luY3JlbWVudEZsYWdzKQordm9pZCBJREJMZXZlbERCQmFja2luZ1N0b3Jl
OjpnZXRPYmplY3RTdG9yZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZv
dW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcywgVmVjdG9yPElEQktleVBhdGg+JiBm
b3VuZEtleVBhdGhzLCBWZWN0b3I8Ym9vbD4mIGZvdW5kQXV0b0luY3JlbWVudEZsYWdzKQogewog
ICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBzdGFydEtleSA9IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6
OmVuY29kZShkYXRhYmFzZUlkLCAxLCAwKTsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gc3RvcEtl
eSA9IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZU1heEtleShkYXRhYmFzZUlkKTsKQEAg
LTM0Myw3ICszNTIsNyBAQCB2b2lkIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmdldE9iamVjdFN0
b3JlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIFZlY3RvcjxpbnQ2NF90PgogICAgICAgICAgICAgTE9H
X0VSUk9SKCJJbnRlcm5hbCBJbmRleGVkIERCIGVycm9yLiIpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9Ci0gICAgICAgIFN0cmluZyBrZXlQYXRoID0gZGVjb2RlU3RyaW5nKGl0LT52
YWx1ZSgpLmJlZ2luKCksIGl0LT52YWx1ZSgpLmVuZCgpKTsKKyAgICAgICAgSURCS2V5UGF0aCBr
ZXlQYXRoID0gZGVjb2RlSURCS2V5UGF0aChpdC0+dmFsdWUoKS5iZWdpbigpLCBpdC0+dmFsdWUo
KS5lbmQoKSk7CiAgICAgICAgIGJvb2wgaGFzS2V5UGF0aCA9IHRydWU7CiAKICAgICAgICAgaXQt
Pm5leHQoKTsKQEAgLTM3NiwxNiArMzg1LDIyIEBAIHZvaWQgSURCTGV2ZWxEQkJhY2tpbmdTdG9y
ZTo6Z2V0T2JqZWN0U3RvcmVzKGludDY0X3QgZGF0YWJhc2VJZCwgVmVjdG9yPGludDY0X3Q+CiAg
ICAgICAgIGlmIChjaGVja09iamVjdFN0b3JlQW5kTWV0YURhdGFUeXBlKGl0LmdldCgpLCBzdG9w
S2V5LCBvYmplY3RTdG9yZUlkLCA2KSkgewogICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBlbmNv
ZGUvZGVjb2RlIGZ1bmN0aW9ucyBmb3IgYm9vbHMuCiAgICAgICAgICAgICBoYXNLZXlQYXRoID0g
Kml0LT52YWx1ZSgpLmJlZ2luKCk7Ci0gICAgICAgICAgICBpZiAoIWhhc0tleVBhdGggJiYgIWtl
eVBhdGguaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAvLyBUaGlzIGNoZWNrIGFjY291bnRzIGZv
ciB0d28gbGF5ZXJzIG9mIGxlZ2FjeSBjb2Rpbmc6CisgICAgICAgICAgICAvLyAoMSkgSW5pdGlh
bGx5LCBoYXNLZXlQYXRoIHdhcyBhZGRlZCB0byBkaXN0aW5ndWlzaCBudWxsIHZzLiBzdHJpbmcu
CisgICAgICAgICAgICAvLyAoMikgTGF0ZXIsIG51bGwgdnMuIHN0cmluZyB2cy4gYXJyYXkgd2Fz
IHN0b3JlZCBpbiB0aGUga2V5UGF0aCBpdHNlbGYuCisgICAgICAgICAgICAvLyBTbyB0aGlzIGNo
ZWNrIGlzIG9ubHkgcmVsZXZhbnQgZm9yIHN0cmluZy10eXBlIGtleVBhdGhzLgorICAgICAgICAg
ICAgaWYgKCFoYXNLZXlQYXRoICYmIChrZXlQYXRoLnR5cGUoKSA9PSBJREJLZXlQYXRoOjpTdHJp
bmdUeXBlICYmICFrZXlQYXRoLnN0cmluZygpLmlzRW1wdHkoKSkpIHsKICAgICAgICAgICAgICAg
ICBMT0dfRVJST1IoIkludGVybmFsIEluZGV4ZWQgREIgZXJyb3IuIik7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFoYXNLZXlQYXRoKQor
ICAgICAgICAgICAgICAgIGtleVBhdGggPSBJREJLZXlQYXRoKCk7CiAgICAgICAgICAgICBpdC0+
bmV4dCgpOwogICAgICAgICB9CiAKICAgICAgICAgZm91bmRJZHMuYXBwZW5kKG9iamVjdFN0b3Jl
SWQpOwogICAgICAgICBmb3VuZE5hbWVzLmFwcGVuZChvYmplY3RTdG9yZU5hbWUpOwotICAgICAg
ICBmb3VuZEtleVBhdGhzLmFwcGVuZChoYXNLZXlQYXRoID8ga2V5UGF0aCA6IFN0cmluZygpKTsK
KyAgICAgICAgZm91bmRLZXlQYXRocy5hcHBlbmQoa2V5UGF0aCk7CiAgICAgICAgIGZvdW5kQXV0
b0luY3JlbWVudEZsYWdzLmFwcGVuZChhdXRvSW5jcmVtZW50KTsKICAgICB9CiB9CkBAIC00MDYs
NyArNDIxLDcgQEAgc3RhdGljIGludDY0X3QgZ2V0TmV3T2JqZWN0U3RvcmVJZChMZXZlbERCVHJh
bnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGEKICAgICByZXR1cm4gb2JqZWN0U3Rv
cmVJZDsKIH0KIAotYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RTdG9y
ZShpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBr
ZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIGludDY0X3QmIGFzc2lnbmVkT2JqZWN0U3RvcmVJ
ZCkKK2Jvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUoaW50NjRf
dCBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBh
dGgsIGJvb2wgYXV0b0luY3JlbWVudCwgaW50NjRfdCYgYXNzaWduZWRPYmplY3RTdG9yZUlkKQog
ewogICAgIEFTU0VSVChtX2N1cnJlbnRUcmFuc2FjdGlvbik7CiAgICAgaW50NjRfdCBvYmplY3RT
dG9yZUlkID0gZ2V0TmV3T2JqZWN0U3RvcmVJZChtX2N1cnJlbnRUcmFuc2FjdGlvbi5nZXQoKSwg
ZGF0YWJhc2VJZCk7CkBAIC00MjgsNyArNDQzLDcgQEAgYm9vbCBJREJMZXZlbERCQmFja2luZ1N0
b3JlOjpjcmVhdGVPYmplY3RTdG9yZShpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIG9rID0gcHV0U3RyaW5nKG1fY3Vy
cmVudFRyYW5zYWN0aW9uLmdldCgpLCBrZXlQYXRoS2V5LCBrZXlQYXRoKTsKKyAgICBvayA9IHB1
dElEQktleVBhdGgobV9jdXJyZW50VHJhbnNhY3Rpb24uZ2V0KCksIGtleVBhdGhLZXksIGtleVBh
dGgpOwogICAgIGlmICghb2spIHsKICAgICAgICAgTE9HX0VSUk9SKCJJbnRlcm5hbCBJbmRleGVk
IERCIGVycm9yLiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02OTgsNyArNzEzLDcgQEAg
c3RhdGljIGJvb2wgY2hlY2tJbmRleEFuZE1ldGFEYXRhS2V5KGNvbnN0IExldmVsREJJdGVyYXRv
ciogaXQsIGNvbnN0IFZlY3RvcjxjaGEKIH0KIAogCi12b2lkIElEQkxldmVsREJCYWNraW5nU3Rv
cmU6OmdldEluZGV4ZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQs
IFZlY3RvcjxpbnQ2NF90PiYgZm91bmRJZHMsIFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzLCBW
ZWN0b3I8U3RyaW5nPiYgZm91bmRLZXlQYXRocywgVmVjdG9yPGJvb2w+JiBmb3VuZFVuaXF1ZUZs
YWdzLCBWZWN0b3I8Ym9vbD4mIGZvdW5kTXVsdGlFbnRyeUZsYWdzKQordm9pZCBJREJMZXZlbERC
QmFja2luZ1N0b3JlOjpnZXRJbmRleGVzKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91
bmROYW1lcywgVmVjdG9yPElEQktleVBhdGg+JiBmb3VuZEtleVBhdGhzLCBWZWN0b3I8Ym9vbD4m
IGZvdW5kVW5pcXVlRmxhZ3MsIFZlY3Rvcjxib29sPiYgZm91bmRNdWx0aUVudHJ5RmxhZ3MpCiB7
CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+IHN0YXJ0S2V5ID0gSW5kZXhNZXRhRGF0YUtleTo6ZW5j
b2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIDAsIDApOwogICAgIGNvbnN0IFZlY3Rvcjxj
aGFyPiBzdG9wS2V5ID0gSW5kZXhNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVj
dFN0b3JlSWQgKyAxLCAwLCAwKTsKQEAgLTczNyw3ICs3NTIsNyBAQCB2b2lkIElEQkxldmVsREJC
YWNraW5nU3RvcmU6OmdldEluZGV4ZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVj
dFN0b3JlSQogICAgICAgICAgICAgTE9HX0VSUk9SKCJJbnRlcm5hbCBJbmRleGVkIERCIGVycm9y
LiIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIFN0cmluZyBrZXlQ
YXRoID0gZGVjb2RlU3RyaW5nKGl0LT52YWx1ZSgpLmJlZ2luKCksIGl0LT52YWx1ZSgpLmVuZCgp
KTsKKyAgICAgICAgSURCS2V5UGF0aCBrZXlQYXRoID0gZGVjb2RlSURCS2V5UGF0aChpdC0+dmFs
dWUoKS5iZWdpbigpLCBpdC0+dmFsdWUoKS5lbmQoKSk7CiAKICAgICAgICAgaXQtPm5leHQoKTsg
Ly8gW29wdGlvbmFsXSBtdWx0aUVudHJ5IGZsYWcKICAgICAgICAgYm9vbCBpbmRleE11bHRpRW50
cnkgPSBmYWxzZTsKQEAgLTc3MSw3ICs3ODYsNyBAQCBzdGF0aWMgaW50NjRfdCBnZXROZXdJbmRl
eElkKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZAog
ICAgIHJldHVybiBpbmRleElkOwogfQogCi1ib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmNy
ZWF0ZUluZGV4KGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBpc1VuaXF1ZSwgYm9v
bCBpc011bHRpRW50cnksIGludDY0X3QmIGluZGV4SWQpCitib29sIElEQkxldmVsREJCYWNraW5n
U3RvcmU6OmNyZWF0ZUluZGV4KGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wg
aXNVbmlxdWUsIGJvb2wgaXNNdWx0aUVudHJ5LCBpbnQ2NF90JiBpbmRleElkKQogewogICAgIEFT
U0VSVChtX2N1cnJlbnRUcmFuc2FjdGlvbik7CiAgICAgaW5kZXhJZCA9IGdldE5ld0luZGV4SWQo
bV9jdXJyZW50VHJhbnNhY3Rpb24uZ2V0KCksIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQpOwpA
QCAtNzk1LDcgKzgxMCw3IEBAIGJvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5k
ZXgoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKLSAgICBvayA9IHB1dFN0cmluZyhtX2N1cnJlbnRUcmFuc2FjdGlv
bi5nZXQoKSwga2V5UGF0aEtleSwga2V5UGF0aCk7CisgICAgb2sgPSBwdXRJREJLZXlQYXRoKG1f
Y3VycmVudFRyYW5zYWN0aW9uLmdldCgpLCBrZXlQYXRoS2V5LCBrZXlQYXRoKTsKICAgICBpZiAo
IW9rKSB7CiAgICAgICAgIExPR19FUlJPUigiSW50ZXJuYWwgSW5kZXhlZCBEQiBlcnJvci4iKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oCmluZGV4IDI0ZDQzOWQ3NjYx
MzExM2VlMTg0ZjRlNTUwMTY3MTdlN2QyOTY2MjYuLmIzYmI2N2Y3M2QxOGM3N2I3ODYxNjkxMzUz
NTc2M2Q1M2JiNTc3YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmgKQEAgLTUwLDggKzUwLDggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVJREJEYXRhYmFzZU1ldGFEYXRhKGludDY0X3Qg
cm93SWQsIGNvbnN0IFN0cmluZyYgdmVyc2lvbik7CiAgICAgdmlydHVhbCBib29sIGRlbGV0ZURh
dGFiYXNlKGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0T2JqZWN0
U3RvcmVzKGludDY0X3QgZGF0YWJhc2VJZCwgVmVjdG9yPGludDY0X3Q+JiBmb3VuZElkcywgVmVj
dG9yPFN0cmluZz4mIGZvdW5kTmFtZXMsIFZlY3RvcjxTdHJpbmc+JiBmb3VuZEtleVBhdGhzLCBW
ZWN0b3I8Ym9vbD4mIGZvdW5kQXV0b0luY3JlbWVudEZsYWdzKTsKLSAgICB2aXJ0dWFsIGJvb2wg
Y3JlYXRlT2JqZWN0U3RvcmUoaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBpbnQ2NF90JiBhc3Np
Z25lZE9iamVjdFN0b3JlSWQpOworICAgIHZpcnR1YWwgdm9pZCBnZXRPYmplY3RTdG9yZXMoaW50
NjRfdCBkYXRhYmFzZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8U3RyaW5n
PiYgZm91bmROYW1lcywgVmVjdG9yPElEQktleVBhdGg+JiBmb3VuZEtleVBhdGhzLCBWZWN0b3I8
Ym9vbD4mIGZvdW5kQXV0b0luY3JlbWVudEZsYWdzKTsKKyAgICB2aXJ0dWFsIGJvb2wgY3JlYXRl
T2JqZWN0U3RvcmUoaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQsIGludDY0X3QmIGFzc2lnbmVkT2JqZWN0
U3RvcmVJZCk7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGludDY0X3QgZGF0
YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
T2JqZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyPiBjcmVhdGVJbnZhbGlkUmVjb3JkSWRlbnRpZmll
cigpOwogICAgIHZpcnR1YWwgU3RyaW5nIGdldE9iamVjdFN0b3JlUmVjb3JkKGludDY0X3QgZGF0
YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkmKTsKQEAgLTYzLDgg
KzYzLDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGZvckVhY2hPYmplY3RTdG9yZVJl
Y29yZChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgT2JqZWN0U3Rv
cmVSZWNvcmRDYWxsYmFjayYpOwogCi0gICAgdmlydHVhbCB2b2lkIGdldEluZGV4ZXMoaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFZlY3RvcjxpbnQ2NF90PiYgZm91
bmRJZHMsIFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmRL
ZXlQYXRocywgVmVjdG9yPGJvb2w+JiBmb3VuZFVuaXF1ZUZsYWdzLCBWZWN0b3I8Ym9vbD4mIGZv
dW5kTXVsdGlFbnRyeUZsYWdzKTsKLSAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlSW5kZXgoaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGlzVW5pcXVlLCBib29sIGlzTXVsdGlFbnRyeSwg
aW50NjRfdCYgaW5kZXhJZCk7CisgICAgdmlydHVhbCB2b2lkIGdldEluZGV4ZXMoaW50NjRfdCBk
YXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFZlY3RvcjxpbnQ2NF90PiYgZm91bmRJ
ZHMsIFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzLCBWZWN0b3I8SURCS2V5UGF0aD4mIGZvdW5k
S2V5UGF0aHMsIFZlY3Rvcjxib29sPiYgZm91bmRVbmlxdWVGbGFncywgVmVjdG9yPGJvb2w+JiBm
b3VuZE11bHRpRW50cnlGbGFncyk7CisgICAgdmlydHVhbCBib29sIGNyZWF0ZUluZGV4KGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IElEQktleVBhdGgmLCBib29sIGlzVW5pcXVlLCBib29sIGlzTXVsdGlFbnRyeSwgaW50
NjRfdCYgaW5kZXhJZCk7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUluZGV4KGludDY0X3QgZGF0
YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQpOwogICAgIHZp
cnR1YWwgYm9vbCBwdXRJbmRleERhdGFGb3JSZWNvcmQoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2
NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiwgY29uc3Qg
T2JqZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyKik7CiAgICAgdmlydHVhbCBib29sIGRlbGV0ZUlu
ZGV4RGF0YUZvclJlY29yZChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBPYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXIqKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJD
b2RpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNv
ZGluZy5jcHAKaW5kZXggZjAyNjNmODlmM2U4ZGY2NmJlYzE4M2RhMGZhYWUyY2NiNWQ1YzczOC4u
OWJmODYxNDk1YjBjNjdmYmI4ZGI4Y2IxYWRkZDIxOWYwMDQ3MzlhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAKQEAg
LTMwLDYgKzMwLDcgQEAKICNpZiBVU0UoTEVWRUxEQikKIAogI2luY2x1ZGUgIklEQktleS5oIgor
I2luY2x1ZGUgIklEQktleVBhdGguaCIKICNpbmNsdWRlICJMZXZlbERCU2xpY2UuaCIKICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKQEAgLTEzNSw2ICsxMzYsOCBAQCBzdGF0
aWMgY29uc3QgdW5zaWduZWQgY2hhciBrSURCS2V5TnVtYmVyVHlwZUJ5dGUgPSAzOwogc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIGNoYXIga0lEQktleUFycmF5VHlwZUJ5dGUgPSA0Owogc3RhdGljIGNv
bnN0IHVuc2lnbmVkIGNoYXIga0lEQktleU1pbktleVR5cGVCeXRlID0gNTsKIAorc3RhdGljIGNv
bnN0IHVuc2lnbmVkIGNoYXIga0lEQktleVBhdGhUeXBlQ29kZWRCeXRlID0gMDsKKwogc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIGNoYXIga09iamVjdFN0b3JlRGF0YUluZGV4SWQgPSAxOwogc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIGNoYXIga0V4aXN0c0VudHJ5SW5kZXhJZCA9IDI7CiAKQEAgLTYyMCw2
ICs2MjMsNzMgQEAgaW50IGNvbXBhcmVFbmNvZGVkSURCS2V5cyhjb25zdCBWZWN0b3I8Y2hhcj4m
IGtleUEsIGNvbnN0IFZlY3RvcjxjaGFyPiYga2V5QikKICAgICByZXR1cm4gY29tcGFyZUVuY29k
ZWRJREJLZXlzKHAsIGxpbWl0QSwgcSwgbGltaXRCKTsKIH0KIAorVmVjdG9yPGNoYXI+IGVuY29k
ZUlEQktleVBhdGgoY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCkKK3sKKyAgICAvLyBNYXkgYmUg
dHlwZWQsIG9yIG1heSBiZSBhIHJhdyBzdHJpbmcuIEFuIGludmFsaWQgbGVhZGluZworICAgIC8v
IGJ5dGUgaXMgdXNlZCB0byBpZGVudGlmeSB0eXBlZCBjb2RpbmcuIE5ldyByZWNvcmRzIGFyZQor
ICAgIC8vIGFsd2F5cyB3cml0dGVuIGFzIHR5cGVkLgorICAgIFZlY3RvcjxjaGFyPiByZXQ7Cisg
ICAgcmV0LmFwcGVuZChrSURCS2V5UGF0aFR5cGVDb2RlZEJ5dGUpOworICAgIHJldC5hcHBlbmQo
c3RhdGljX2Nhc3Q8Y2hhcj4oa2V5UGF0aC50eXBlKCkpKTsKKyAgICBzd2l0Y2ggKGtleVBhdGgu
dHlwZSgpKSB7CisgICAgY2FzZSBJREJLZXlQYXRoOjpOdWxsVHlwZToKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBJREJLZXlQYXRoOjpTdHJpbmdUeXBlOgorICAgICAgICByZXQuYXBwZW5kKGVu
Y29kZVN0cmluZyhrZXlQYXRoLnN0cmluZygpKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
SURCS2V5UGF0aDo6QXJyYXlUeXBlOgorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgYXJyYXkgPSBrZXlQYXRoLmFycmF5KCk7CisgICAgICAgICAgICBzaXplX3Qg
Y291bnQgPSBhcnJheS5zaXplKCk7CisgICAgICAgICAgICByZXQuYXBwZW5kKGVuY29kZVZhcklu
dChjb3VudCkpOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytp
KQorICAgICAgICAgICAgICAgIHJldC5hcHBlbmQoZW5jb2RlU3RyaW5nV2l0aExlbmd0aChhcnJh
eVtpXSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJu
IHJldDsKK30KKworSURCS2V5UGF0aCBkZWNvZGVJREJLZXlQYXRoKGNvbnN0IGNoYXIqIHAsIGNv
bnN0IGNoYXIqIGxpbWl0KQoreworICAgIC8vIE1heSBiZSB0eXBlZCwgb3IgbWF5IGJlIGEgcmF3
IHN0cmluZy4gQW4gaW52YWxpZCBsZWFkaW5nCisgICAgLy8gYnl0ZSBpcyB1c2VkIHRvIGlkZW50
aWZ5IHR5cGVkIGNvZGluZy4gTmV3IHJlY29yZHMgYXJlCisgICAgLy8gYWx3YXlzIHdyaXR0ZW4g
YXMgdHlwZWQuCisgICAgaWYgKHAgPT0gbGltaXQgfHwgKnAgIT0ga0lEQktleVBhdGhUeXBlQ29k
ZWRCeXRlKQorICAgICAgICByZXR1cm4gSURCS2V5UGF0aChkZWNvZGVTdHJpbmcocCwgbGltaXQp
KTsKKworICAgICsrcDsKKyAgICBBU1NFUlQocCAhPSBsaW1pdCk7CisgICAgSURCS2V5UGF0aDo6
VHlwZSB0eXBlID0gc3RhdGljX2Nhc3Q8SURCS2V5UGF0aDo6VHlwZT4oKnArKyk7CisgICAgc3dp
dGNoICh0eXBlKSB7CisgICAgY2FzZSBJREJLZXlQYXRoOjpOdWxsVHlwZToKKyAgICAgICAgQVNT
RVJUKHAgPT0gbGltaXQpOworICAgICAgICByZXR1cm4gSURCS2V5UGF0aCgpOworICAgIGNhc2Ug
SURCS2V5UGF0aDo6U3RyaW5nVHlwZToKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIElE
QktleVBhdGgoZGVjb2RlU3RyaW5nKHAsIGxpbWl0KSk7CisgICAgICAgIH0KKyAgICBjYXNlIElE
QktleVBhdGg6OkFycmF5VHlwZToKKyAgICAgICAgeworICAgICAgICAgICAgVmVjdG9yPFN0cmlu
Zz4gYXJyYXk7CisgICAgICAgICAgICBpbnQ2NF90IGNvdW50OworICAgICAgICAgICAgcCA9IGRl
Y29kZVZhckludChwLCBsaW1pdCwgY291bnQpOworICAgICAgICAgICAgQVNTRVJUKHApOworICAg
ICAgICAgICAgQVNTRVJUKGNvdW50ID49IDApOworICAgICAgICAgICAgd2hpbGUgKGNvdW50LS0p
IHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgc3RyaW5nOworICAgICAgICAgICAgICAgIHAgPSBk
ZWNvZGVTdHJpbmdXaXRoTGVuZ3RoKHAsIGxpbWl0LCBzdHJpbmcpOworICAgICAgICAgICAgICAg
IEFTU0VSVChwKTsKKyAgICAgICAgICAgICAgICBhcnJheS5hcHBlbmQoc3RyaW5nKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIEFTU0VSVChwID09IGxpbWl0KTsKKyAgICAgICAgICAgIHJl
dHVybiBJREJLZXlQYXRoKGFycmF5KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4gSURCS2V5UGF0aCgpOworfQorCiBuYW1lc3BhY2Ugewog
dGVtcGxhdGU8dHlwZW5hbWUgS2V5VHlwZT4KIGludCBkZWNvZGVBbmRDb21wYXJlKGNvbnN0IExl
dmVsREJTbGljZSYgYSwgY29uc3QgTGV2ZWxEQlNsaWNlJiBiKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5oCmluZGV4IDE0YzQyZWE3
MzM2MWI0MDIwNmRhYzRkMGRmZDE3NjQwNzkwZWNjZmEuLmJkZmY2YjVlZmNkZjgzZGI1OWQ4YTJl
NWUzN2U5NDY0ZmE5NWU3MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmgKQEAgLTM2LDYgKzM2LDcgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgSURCS2V5OworY2xhc3MgSURCS2V5UGF0aDsKIGNsYXNzIExldmVs
REJTbGljZTsKIAogbmFtZXNwYWNlIElEQkxldmVsREJDb2RpbmcgewpAQCAtNjEsNiArNjIsOCBA
QCBWZWN0b3I8Y2hhcj4gZW5jb2RlSURCS2V5KGNvbnN0IElEQktleSYpOwogY29uc3QgY2hhciog
ZGVjb2RlSURCS2V5KGNvbnN0IGNoYXIqIHAsIGNvbnN0IGNoYXIqIGxpbWl0LCBSZWZQdHI8SURC
S2V5PiYgZm91bmRLZXkpOwogY29uc3QgY2hhciogZXh0cmFjdEVuY29kZWRJREJLZXkoY29uc3Qg
Y2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGxpbWl0LCBWZWN0b3I8Y2hhcj4qIHJlc3VsdCk7CiBp
bnQgY29tcGFyZUVuY29kZWRJREJLZXlzKGNvbnN0IFZlY3RvcjxjaGFyPiYsIGNvbnN0IFZlY3Rv
cjxjaGFyPiYpOworVmVjdG9yPGNoYXI+IGVuY29kZUlEQktleVBhdGgoY29uc3QgSURCS2V5UGF0
aCYpOworSURCS2V5UGF0aCBkZWNvZGVJREJLZXlQYXRoKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFy
Kik7CiAKIGludCBjb21wYXJlKGNvbnN0IExldmVsREJTbGljZSYsIGNvbnN0IExldmVsREJTbGlj
ZSYsIGJvb2wgaW5kZXhLZXlzID0gZmFsc2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKaW5kZXggNDMxOWQ3ZjBhOTM4ZGE1
ZjdkNzcwNmYwY2JiZDg2YjU2MjkwN2ZiOS4uOThmZjgyYmE4M2IxNWE1Yzk5NmYzNTViNGJhMDc5
NWE0MzM2ZDZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQk9iamVjdFN0b3JlLmNwcApAQCAtNjAsNyArNjAsNyBAQCBTdHJpbmcgSURCT2JqZWN0U3Rv
cmU6Om5hbWUoKSBjb25zdAogICAgIHJldHVybiBtX2JhY2tlbmQtPm5hbWUoKTsKIH0KIAotU3Ry
aW5nIElEQk9iamVjdFN0b3JlOjprZXlQYXRoKCkgY29uc3QKK1Bhc3NSZWZQdHI8SURCQW55PiBJ
REJPYmplY3RTdG9yZTo6a2V5UGF0aCgpIGNvbnN0CiB7CiAgICAgSURCX1RSQUNFKCJJREJPYmpl
Y3RTdG9yZTo6a2V5UGF0aCIpOwogICAgIHJldHVybiBtX2JhY2tlbmQtPmtleVBhdGgoKTsKQEAg
LTIwNSw4ICsyMDUsMTMgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6
Y2xlYXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXgKIAogUGFzc1JlZlB0cjxJ
REJJbmRleD4gSURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiBrZXlQYXRoLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKKyAgICByZXR1cm4gY3JlYXRlSW5kZXgobmFtZSwgSURCS2V5UGF0aChr
ZXlQYXRoKSwgb3B0aW9ucywgZWMpOworfQorCitQYXNzUmVmUHRyPElEQkluZGV4PiBJREJPYmpl
Y3RTdG9yZTo6Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRo
JiBrZXlQYXRoLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBFeGNlcHRpb25Db2RlJiBlYykK
K3sKICAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleCIpOwotICAgIGlm
ICghSURCSXNWYWxpZEtleVBhdGgoa2V5UGF0aCkpIHsKKyAgICBpZiAoIWtleVBhdGguaXNWYWxp
ZCgpKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246Ok5PTl9UUkFOU0lFTlRf
RVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaAppbmRleCA1ZDRkMThkYzA2NTljNGIzOTIw
OGRkNjgyOTFiNTExMjk0M2NjZjkwLi5iMGMyZThlODI0ZGQxZGNiMTA0YjUxNmJmYTQ1MWViYmQ2
Y2ViZjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJP
YmplY3RTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9i
amVjdFN0b3JlLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIH5JREJPYmplY3RTdG9y
ZSgpIHsgfQogCiAgICAgU3RyaW5nIG5hbWUoKSBjb25zdDsKLSAgICBTdHJpbmcga2V5UGF0aCgp
IGNvbnN0OworICAgIFBhc3NSZWZQdHI8SURCQW55PiBrZXlQYXRoKCkgY29uc3Q7CiAgICAgUGFz
c1JlZlB0cjxET01TdHJpbmdMaXN0PiBpbmRleE5hbWVzKCkgY29uc3Q7CiAgICAgSURCVHJhbnNh
Y3Rpb24qIHRyYW5zYWN0aW9uKCkgY29uc3Q7CiAKQEAgLTc3LDYgKzc3LDggQEAgcHVibGljOgog
ICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gY2xlYXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIFBhc3NSZWZQdHI8SURCSW5kZXg+IGNyZWF0ZUluZGV4
KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBjb25zdCBEaWN0aW9u
YXJ5JiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8SURCSW5kZXg+IGNyZWF0ZUlu
ZGV4KGNvbnN0IFN0cmluZyYsIGNvbnN0IElEQktleVBhdGgmLCBjb25zdCBEaWN0aW9uYXJ5Jiwg
RXhjZXB0aW9uQ29kZSYpOworCiAgICAgUGFzc1JlZlB0cjxJREJJbmRleD4gaW5kZXgoY29uc3Qg
U3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBkZWxldGVJbmRleChjb25z
dCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaWRsIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaWRsCmluZGV4IDhjZWQzOGNkMWVm
YTMyY2NiMzRmMDYyOGQzYzZhOTI4ZWI4ODdmZDIuLjAzN2ViZDNiMzJhMTQzM2ZiNjkwOWVhMzUz
MzIxNjQyYWRmOTdmYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQk9iamVjdFN0b3JlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJPYmplY3RTdG9yZS5pZGwKQEAgLTI5LDcgKzI5LDcgQEAgbW9kdWxlIHN0b3JhZ2Ug
ewogICAgICAgICBDb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFCiAgICAgXSBJREJPYmplY3RT
dG9yZSB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbVHJlYXRSZXR1cm5lZE51bGxTdHJp
bmdBcz1OdWxsXSBET01TdHJpbmcgbmFtZTsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtU
cmVhdFJldHVybmVkTnVsbFN0cmluZ0FzPU51bGxdIERPTVN0cmluZyBrZXlQYXRoOworICAgICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgSURCQW55IGtleVBhdGg7CiAgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01TdHJpbmdMaXN0IGluZGV4TmFtZXM7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBJREJUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
LmNwcAppbmRleCA1ZDJkNTBjMmFlYmU3ZjQwMGQ2MGQ4ZTEwODZiMDA1ZmY5YjNkNTUzLi5mNjM4
YTNjZWZjNTZmNTM1N2ZmYTJjMTFlZDc2ZTIzMGFhMDYzNTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsLmNwcApAQCAtNTEsNyArNTEsNyBAQCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjp+
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCgpCiB7CiB9CiAKLUlEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGw6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGwoSURCQmFja2luZ1N0b3JlKiBiYWNraW5n
U3RvcmUsIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkKK0lEQk9iamVjdFN0
b3JlQmFja2VuZEltcGw6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGwoSURCQmFja2luZ1N0b3Jl
KiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBpZCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQp
CiAgICAgOiBtX2JhY2tpbmdTdG9yZShiYWNraW5nU3RvcmUpCiAgICAgLCBtX2RhdGFiYXNlSWQo
ZGF0YWJhc2VJZCkKICAgICAsIG1faWQoaWQpCkBAIC02Myw3ICs2Myw3IEBAIElEQk9iamVjdFN0
b3JlQmFja2VuZEltcGw6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGwoSURCQmFja2luZ1N0b3Jl
KiBiYWNraW5nU3RvCiAgICAgbG9hZEluZGV4ZXMoKTsKIH0KIAotSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbDo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbChJREJCYWNraW5nU3RvcmUqIGJhY2tp
bmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50KQorSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbDo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbChJREJCYWNraW5nU3RvcmUqIGJhY2tpbmdT
dG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktl
eVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkKICAgICA6IG1fYmFja2luZ1N0b3Jl
KGJhY2tpbmdTdG9yZSkKICAgICAsIG1fZGF0YWJhc2VJZChkYXRhYmFzZUlkKQogICAgICwgbV9p
ZChJbnZhbGlkSWQpCkBAIC0xMzcsOSArMTM3LDExIEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbDo6Z2V0SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8
CiAgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVG
cm9tV2lyZSh3aXJlRGF0YSkpOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxJREJLZXk+IGZldGNo
S2V5RnJvbUtleVBhdGgoU2VyaWFsaXplZFNjcmlwdFZhbHVlKiB2YWx1ZSwgY29uc3QgU3RyaW5n
JiBrZXlQYXRoKQorc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5PiBmZXRjaEtleUZyb21LZXlQYXRo
KFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogdmFsdWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgp
CiB7CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpmZXRjaEtleUZy
b21LZXlQYXRoIik7CisgICAgQVNTRVJUKCFrZXlQYXRoLmlzTnVsbCgpKTsKKwogICAgIFZlY3Rv
cjxSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiA+IHZhbHVlczsKICAgICB2YWx1ZXMuYXBw
ZW5kKHZhbHVlKTsKICAgICBWZWN0b3I8UmVmUHRyPElEQktleT4gPiBrZXlzOwpAQCAtMTUwLDcg
KzE1Miw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPElEQktleT4gZmV0Y2hLZXlGcm9tS2V5UGF0aChT
ZXJpYWxpemVkU2NyaXB0VmFsdWUqIHZhbHVlLCBjb25zCiAgICAgcmV0dXJuIGtleXNbMF0ucmVs
ZWFzZSgpOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGlu
amVjdEtleUludG9LZXlQYXRoKFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQorc3RhdGlj
IFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBpbmplY3RLZXlJbnRvS2V5UGF0aChQ
YXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
dmFsdWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgpCiB7CiAgICAgSURCX1RSQUNFKCJJREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsOjppbmplY3RLZXlJbnRvS2V5UGF0aCIpOwogICAgIHJldHVy
biBJREJLZXlQYXRoQmFja2VuZEltcGw6OmluamVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUo
a2V5LCB2YWx1ZSwga2V5UGF0aCk7CkBAIC00OTksNyArNTAxLDcgQEAgYm9vbCBJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsOjpwb3B1bGF0ZUluZGV4KElEQkJhY2tpbmdTdG9yZSYgYmFja2luZ1N0
b3JlLCBpbnQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc1JlZlB0cjxJREJJbmRleEJhY2tl
bmRJbnRlcmZhY2U+IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZUluZGV4KGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBt
dWx0aUVudHJ5LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBF
eGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnks
IElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogewogICAgIGlmIChuYW1lLmlzTnVsbCgpKSB7CiAgICAgICAgIGVjID0gSURCRGF0
YWJhc2VFeGNlcHRpb246Ok5PTl9UUkFOU0lFTlRfRVJSOwpAQCAtNjUwLDcgKzY1Miw3IEBAIHZv
aWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6bG9hZEluZGV4ZXMoKQogewogICAgIFZlY3Rv
cjxpbnQ2NF90PiBpZHM7CiAgICAgVmVjdG9yPFN0cmluZz4gbmFtZXM7Ci0gICAgVmVjdG9yPFN0
cmluZz4ga2V5UGF0aHM7CisgICAgVmVjdG9yPElEQktleVBhdGg+IGtleVBhdGhzOwogICAgIFZl
Y3Rvcjxib29sPiB1bmlxdWVGbGFnczsKICAgICBWZWN0b3I8Ym9vbD4gbXVsdGlFbnRyeUZsYWdz
OwogICAgIG1fYmFja2luZ1N0b3JlLT5nZXRJbmRleGVzKG1fZGF0YWJhc2VJZCwgbV9pZCwgaWRz
LCBuYW1lcywga2V5UGF0aHMsIHVuaXF1ZUZsYWdzLCBtdWx0aUVudHJ5RmxhZ3MpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbC5oCmluZGV4IDhkMmUxZGE5OWU4NGFjODlkYjQ3YWY2MWU1ZjFlYWMzMzdk
ZWMyZGQuLjFkMTU1NTA0NzcxMDM5ZDUzZjQzNTE4NWMwODM4OTUyYjY3ZDA0ODEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbF9oCiAjZGVmaW5lIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGxfaAogCisj
aW5jbHVkZSAiSURCS2V5UGF0aC5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlQmFja2VuZElu
dGVyZmFjZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nSGFzaC5oPgpAQCAtNDIsMTEgKzQzLDExIEBAIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7CiAKIGNsYXNzIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwgOiBwdWJsaWMgSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBjcmVhdGUoSURCQmFja2luZ1N0b3JlKiBiYWNr
aW5nU3RvcmUsIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBjcmVhdGUoSURCQmFja2lu
Z1N0b3JlKiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBpZCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIGF1dG9JbmNy
ZW1lbnQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGwoYmFja2luZ1N0b3JlLCBkYXRhYmFzZUlkLCBpZCwgbmFtZSwga2V5UGF0aCwg
YXV0b0luY3JlbWVudCkpOwogICAgIH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsPiBjcmVhdGUoSURCQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUsIGlu
dDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBh
dGgsIGJvb2wgYXV0b0luY3JlbWVudCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsPiBjcmVhdGUoSURCQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUsIGlu
dDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBr
ZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwoYmFja2luZ1N0b3JlLCBkYXRhYmFzZUlk
LCBuYW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50KSk7CiAgICAgfQpAQCAtNjIsNyArNjMsNyBA
QCBwdWJsaWM6CiAgICAgaW50NjRfdCBkYXRhYmFzZUlkKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
YmFzZUlkOyB9CiAKICAgICB2aXJ0dWFsIFN0cmluZyBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9u
YW1lOyB9Ci0gICAgdmlydHVhbCBTdHJpbmcga2V5UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5
UGF0aDsgfQorICAgIHZpcnR1YWwgSURCS2V5UGF0aCBrZXlQYXRoKCkgY29uc3QgeyByZXR1cm4g
bV9rZXlQYXRoOyB9CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGluZGV4
TmFtZXMoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgYXV0b0luY3JlbWVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fYXV0b0luY3JlbWVudDsgfQogCkBAIC03Myw3ICs3NCw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwg
RXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhcihQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUm
KTsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGNy
ZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29s
IHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2Uq
LCBFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2Vu
ZEludGVyZmFjZT4gY3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQ
YXRoJiwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSwgSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJJ
bmRleEJhY2tlbmRJbnRlcmZhY2U+IGluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9u
Q29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUs
IElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKIApAQCAt
ODMsOCArODQsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgcG9wdWxhdGVJbmRleChJREJC
YWNraW5nU3RvcmUmLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwg
UGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPik7CiAKIHByaXZhdGU6Ci0gICAgSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbChJREJCYWNraW5nU3RvcmUqLCBpbnQ2NF90IGRhdGFiYXNlSWQs
IGludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBi
b29sIGF1dG9JbmNyZW1lbnQpOwotICAgIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwoSURCQmFj
a2luZ1N0b3JlKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50KTsKKyAgICBJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsKElEQkJhY2tpbmdTdG9yZSosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRf
dCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5j
cmVtZW50KTsKKyAgICBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKElEQkJhY2tpbmdTdG9yZSos
IGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRo
JiwgYm9vbCBhdXRvSW5jcmVtZW50KTsKIAogICAgIHZvaWQgbG9hZEluZGV4ZXMoKTsKICAgICBQ
YXNzUmVmUHRyPElEQktleT4gZ2VuQXV0b0luY3JlbWVudEtleSgpOwpAQCAtMTEwLDcgKzExMSw3
IEBAIHByaXZhdGU6CiAgICAgaW50NjRfdCBtX2RhdGFiYXNlSWQ7CiAgICAgaW50NjRfdCBtX2lk
OwogICAgIFN0cmluZyBtX25hbWU7Ci0gICAgU3RyaW5nIG1fa2V5UGF0aDsKKyAgICBJREJLZXlQ
YXRoIG1fa2V5UGF0aDsKICAgICBib29sIG1fYXV0b0luY3JlbWVudDsKIAogICAgIHR5cGVkZWYg
SGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiA+IEluZGV4TWFwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaAppbmRleCBhZTY0YTVlZjZlZTBhNTE0NmE0
ZTE0YmVlZjYzMjJkNTU4NTYwMGUwLi4zMmFlMzkyOGZkOGU4ZjQwNTM2YjhiZmI5YTM4OWQ3Nzlh
NDA2MjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJP
YmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaApAQCAtMzcsNiArMzcs
NyBAQCBjbGFzcyBET01TdHJpbmdMaXN0OwogY2xhc3MgSURCQ2FsbGJhY2tzOwogY2xhc3MgSURC
SW5kZXhCYWNrZW5kSW50ZXJmYWNlOwogY2xhc3MgSURCS2V5OworY2xhc3MgSURCS2V5UGF0aDsK
IGNsYXNzIElEQktleVJhbmdlOwogY2xhc3MgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
OwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwpAQCAtNDgsNyArNDksNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB+SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlKCkgeyB9CiAKICAg
ICB2aXJ0dWFsIFN0cmluZyBuYW1lKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgU3RyaW5nIGtl
eVBhdGgoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBJREJLZXlQYXRoIGtleVBhdGgoKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGluZGV4TmFtZXMo
KSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0KFBhc3NSZWZQdHI8SURCS2V5UmFu
Z2U+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CkBAIC02NCw3ICs2NSw3IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgdm9pZCBjbGVhcihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAKLSAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVJbmRleChjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wg
bXVsdGlFbnRyeSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29k
ZSYpID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNl
PiBjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29s
IHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2Uq
LCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJJbmRleEJh
Y2tlbmRJbnRlcmZhY2U+IGluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikgPSAwOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EaWN0aW9uYXJ5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuY3BwCmluZGV4IDEwYWFmZThkYzZj
MjgxZWZlNzFkNDlmYjkyZjRiYjk1Njc1ODc1MTQuLjg0NjQ1NTQ3ZmEzNWFlYmFmNWM0MGU0OWJk
OTUwNWNiYWYxYzVhODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0Rp
Y3Rpb25hcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnku
Y3BwCkBAIC00MjQsNiArNDI0LDI1IEBAIGJvb2wgRGljdGlvbmFyeTo6Z2V0KGNvbnN0IFN0cmlu
ZyYga2V5LCBEaWN0aW9uYXJ5JiB2YWx1ZSkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAor
I2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorYm9vbCBEaWN0aW9uYXJ5OjpnZXQoY29uc3Qg
U3RyaW5nJiBrZXksIFZlY3RvcjxTdHJpbmc+JiB2YWx1ZSkgY29uc3QKK3sKKyAgICB2ODo6TG9j
YWw8djg6OlZhbHVlPiB2OFZhbHVlOworICAgIGlmICghZ2V0S2V5KGtleSwgdjhWYWx1ZSkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghdjhWYWx1ZS0+SXNBcnJheSgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB2ODo6TG9jYWw8djg6OkFycmF5PiB2OEFycmF5ID0g
djg6OkxvY2FsPHY4OjpBcnJheT46OkNhc3QodjhWYWx1ZSk7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCB2OEFycmF5LT5MZW5ndGgoKTsgKytpKSB7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6
VmFsdWU+IGluZGV4ZWRWYWx1ZSA9IHY4QXJyYXktPkdldCh2ODo6SW50ZWdlcjo6TmV3KGkpKTsK
KyAgICAgICAgdmFsdWUuYXBwZW5kKHY4VmFsdWVUb1dlYkNvcmVTdHJpbmcoaW5kZXhlZFZhbHVl
KSk7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisjZW5kaWYKIAogYm9vbCBEaWN0aW9u
YXJ5OjpnZXRPd25Qcm9wZXJ0aWVzQXNTdHJpbmdIYXNoTWFwKFdURjo6SGFzaE1hcDxTdHJpbmcs
IFN0cmluZz4mIGhhc2hNYXApIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9EaWN0aW9uYXJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EaWN0
aW9uYXJ5LmgKaW5kZXggYzRjMzNiMWJiMjA4ZTk2NDBkZmZiODQwNmQ4OTNiNDEyODMyNzllZS4u
NWEyNjYzNDExNTQ2MjZmNmMxYmZhODE5YmE1YzAzMzY0MmY5MDIxYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuaApAQCAtMzMsMTEgKzMzLDExIEBACiAjaW5jbHVkZSA8
djguaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmlu
Zy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIERPTVN0cmluZ0xpc3Q7CiBjbGFz
cyBET01XaW5kb3c7CiBjbGFzcyBJREJLZXlSYW5nZTsKIGNsYXNzIE1lZGlhS2V5RXJyb3I7CkBA
IC04Myw2ICs4Myw5IEBAIHB1YmxpYzoKICAgICBib29sIGdldChjb25zdCBTdHJpbmcmLCBSZWZQ
dHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+JikgY29uc3Q7CiAgICAgYm9vbCBnZXQoY29uc3Qg
U3RyaW5nJiwgUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0TGlzdD4mKSBjb25zdDsKICNl
bmRpZgorI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorICAgIGJvb2wgZ2V0KGNvbnN0IFN0
cmluZyYsIFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7CisjZW5kaWYKICAgICBib29sIGdldChjb25z
dCBTdHJpbmcmLCBIYXNoU2V0PEF0b21pY1N0cmluZz4mKSBjb25zdDsKICAgICBib29sIGdldChj
b25zdCBTdHJpbmcmLCBEaWN0aW9uYXJ5JikgY29uc3Q7CiAgICAgYm9vbCBnZXRPd25Qcm9wZXJ0
aWVzQXNTdHJpbmdIYXNoTWFwKFdURjo6SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRp
ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5j
cHAKaW5kZXggZGY2Nzc4MDMwNTdlMzgwZjNlODlkZDQ1MTcxMWU0NzkxZTQxZWU5NC4uMTViNDNl
OTM2MGVkZjk1YjM1ZGQ2ZWJjYmRkMTZiNDlmOGIwZDdjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKQEAgLTE1MywzMCArMTUz
LDQzIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBlbnN1cmVOdGhWYWx1ZU9uS2V5UGF0aCh2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4mIHJvb3RWYWx1ZSwKIAogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNl
CiAKLVBhc3NSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJLZXlGcm9tU2VyaWFsaXplZFZhbHVlQW5k
S2V5UGF0aChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBrZXlQYXRoKQorUGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktleUZy
b21TZXJpYWxpemVkVmFsdWVBbmRLZXlQYXRoKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiB2YWx1ZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCkKIHsKICAgICBJREJfVFJBQ0Uo
ImNyZWF0ZUlEQktleUZyb21TZXJpYWxpemVkVmFsdWVBbmRLZXlQYXRoIik7CisgICAgQVNTRVJU
KGtleVBhdGgudHlwZSgpID09IElEQktleVBhdGg6OlN0cmluZ1R5cGUpOworICAgIFZlY3RvcjxT
dHJpbmc+IGtleVBhdGhFbGVtZW50czsKKyAgICBJREJLZXlQYXRoUGFyc2VFcnJvciBlcnJvcjsK
KyAgICBJREJQYXJzZUtleVBhdGgoa2V5UGF0aC5zdHJpbmcoKSwga2V5UGF0aEVsZW1lbnRzLCBl
cnJvcik7CisgICAgQVNTRVJUKGVycm9yID09IElEQktleVBhdGhQYXJzZUVycm9yTm9uZSk7CisK
ICAgICBWOEF1eGlsaWFyeUNvbnRleHQgY29udGV4dDsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdjhWYWx1ZSh2YWx1ZS0+ZGVzZXJpYWxpemUoKSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHY4S2V5KGdldE50aFZhbHVlT25LZXlQYXRoKHY4VmFsdWUsIGtleVBhdGgsIGtleVBhdGgu
c2l6ZSgpKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4S2V5KGdldE50aFZhbHVlT25L
ZXlQYXRoKHY4VmFsdWUsIGtleVBhdGhFbGVtZW50cywga2V5UGF0aEVsZW1lbnRzLnNpemUoKSkp
OwogICAgIGlmICh2OEtleS5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVy
biBjcmVhdGVJREJLZXlGcm9tVmFsdWUodjhLZXkpOwogfQogCi1QYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gaW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShQYXNzUmVmUHRy
PElEQktleT4ga2V5LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBrZXlQYXRoKQorUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IGluamVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUoUGFzc1JlZlB0cjxJREJLZXk+
IGtleSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBjb25zdCBJREJL
ZXlQYXRoJiBrZXlQYXRoKQogewogICAgIElEQl9UUkFDRSgiaW5qZWN0SURCS2V5SW50b1Nlcmlh
bGl6ZWRWYWx1ZSIpOwotICAgIFY4QXV4aWxpYXJ5Q29udGV4dCBjb250ZXh0OwotICAgIGlmICgh
a2V5UGF0aC5zaXplKCkpCisKKyAgICBBU1NFUlQoa2V5UGF0aC50eXBlKCkgPT0gSURCS2V5UGF0
aDo6U3RyaW5nVHlwZSk7CisgICAgVmVjdG9yPFN0cmluZz4ga2V5UGF0aEVsZW1lbnRzOworICAg
IElEQktleVBhdGhQYXJzZUVycm9yIGVycm9yOworICAgIElEQlBhcnNlS2V5UGF0aChrZXlQYXRo
LnN0cmluZygpLCBrZXlQYXRoRWxlbWVudHMsIGVycm9yKTsKKyAgICBBU1NFUlQoZXJyb3IgPT0g
SURCS2V5UGF0aFBhcnNlRXJyb3JOb25lKTsKKworICAgIGlmICgha2V5UGF0aEVsZW1lbnRzLnNp
emUoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKKyAgICBWOEF1eGlsaWFyeUNvbnRleHQgY29udGV4
dDsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdjhWYWx1ZSh2YWx1ZS0+ZGVzZXJpYWxpemUo
KSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHBhcmVudChlbnN1cmVOdGhWYWx1ZU9uS2V5
UGF0aCh2OFZhbHVlLCBrZXlQYXRoLCBrZXlQYXRoLnNpemUoKSAtIDEpKTsKKyAgICB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gcGFyZW50KGVuc3VyZU50aFZhbHVlT25LZXlQYXRoKHY4VmFsdWUsIGtl
eVBhdGhFbGVtZW50cywga2V5UGF0aEVsZW1lbnRzLnNpemUoKSAtIDEpKTsKICAgICBpZiAocGFy
ZW50LklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBpZiAoIXNldChwYXJlbnQs
IGtleVBhdGgubGFzdCgpLCB0b1Y4KGtleS5nZXQoKSkpKQorICAgIGlmICghc2V0KHBhcmVudCwg
a2V5UGF0aEVsZW1lbnRzLmxhc3QoKSwgdG9WOChrZXkuZ2V0KCkpKSkKICAgICAgICAgcmV0dXJu
IDA7CiAKICAgICByZXR1cm4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUodjhWYWx1ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0
aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmgK
aW5kZXggNDcyODZhNTgyMzhmMGEwMjRlMjEzODA1MDVmYmI5NmVhNzY3ZjVhYi4uMzBlZWQ0MjFi
NDViMDkwMzAxMWJkMjQ5YmJhMGQ3NGMyM2JhMjc0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMuaApAQCAtMzQsMTEgKzM0LDEyIEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElEQktleTsKK2NsYXNzIElEQktleVBhdGg7CiBj
bGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CiAKIFBhc3NSZWZQdHI8SURCS2V5PiBjcmVhdGVJ
REJLZXlGcm9tVmFsdWUodjg6OkhhbmRsZTx2ODo6VmFsdWU+KTsKLVBhc3NSZWZQdHI8SURCS2V5
PiBjcmVhdGVJREJLZXlGcm9tU2VyaWFsaXplZFZhbHVlQW5kS2V5UGF0aChQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4sICBjb25zdCBWZWN0b3I8U3RyaW5nLCAwPiYpOwotUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGluamVjdElEQktleUludG9TZXJpYWxpemVkVmFs
dWUoUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4s
IGNvbnN0IFZlY3RvcjxTdHJpbmcsIDA+Jik7CitQYXNzUmVmUHRyPElEQktleT4gY3JlYXRlSURC
S2V5RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtleVBhdGgoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+LCBjb25zdCBJREJLZXlQYXRoJik7CitQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gaW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShQYXNzUmVmUHRyPElEQktl
eT4sIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgY29uc3QgSURCS2V5UGF0aCYp
OwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OElEQkFueUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJ
REJBbnlDdXN0b20uY3BwCmluZGV4IDE3MzNlYzhiY2RhM2E0N2UzZmIwZmE0ZmFjZjU5MGM2NmNh
YmNhZGIuLjBiNzUwMmViOWY3YzczMDhhNGY4OWZjZDAwM2M3MTJjNjc2MWRiMDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOElEQkFueUN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SURCQW55Q3VzdG9tLmNw
cApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIlY4SURCQW55LmgiCiAKICNpbmNsdWRlICJT
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRl
ICJWOERPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJWOElEQkN1cnNvci5oIgogI2luY2x1ZGUg
IlY4SURCQ3Vyc29yV2l0aFZhbHVlLmgiCkBAIC03NCw2ICs3NSw4IEBAIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB0b1Y4KElEQkFueSogaW1wbCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiAgICAgICAg
IHJldHVybiB0b1Y4KGltcGwtPmlkYlRyYW5zYWN0aW9uKCkpOwogICAgIGNhc2UgSURCQW55OjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWVUeXBlOgogICAgICAgICByZXR1cm4gaW1wbC0+c2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKCktPmRlc2VyaWFsaXplKDAsIGlzb2xhdGUpOworICAgIGNhc2UgSURCQW55
OjpTdHJpbmdUeXBlOgorICAgICAgICByZXR1cm4gdjhTdHJpbmcoaW1wbC0+c3RyaW5nKCkpOwog
ICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0RPTVN0cmluZ0xpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01TdHJpbmdM
aXN0LmgKaW5kZXggMDU3ZGFjNDllY2ZmMmU1NjQ0ZDFmNThhZDRmNGFkYjU5ZjBkYmMzYi4uNDY0
ZmEyMmRiMjU2NjE2YTA1MzcxOGI3OWIyZDkzM2Y0ZjIxMDUxYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RPTVN0cmluZ0xpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9N
U3RyaW5nTGlzdC5oCkBAIC01Miw2ICs1Miw4IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgaXRlbSh1
bnNpZ25lZCBpbmRleCkgY29uc3Q7CiAgICAgYm9vbCBjb250YWlucyhjb25zdCBTdHJpbmcmIHN0
cikgY29uc3Q7CiAKKyAgICBvcGVyYXRvciBjb25zdCBWZWN0b3I8U3RyaW5nPiYoKSBjb25zdCB7
IHJldHVybiBtX3N0cmluZ3M7IH0KKwogcHJpdmF0ZToKICAgICBET01TdHJpbmdMaXN0KCkgeyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVk
REJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERC
QWdlbnQuY3BwCmluZGV4IDY0MWNjYzE0OGY5YTA3OWY1YTMyNmQwZWViZjE3OWJhODljODNjYTMu
LjcyMmE5NGIyMTVmN2UzMjdhYTkyNzA0ZGJmNWZlYTcyZjIwMDBhN2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcApAQCAt
NDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgiCiAj
aW5jbHVkZSAiSURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCS2V5Lmgi
CisjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgogI2luY2x1ZGUgIklEQktleVJhbmdlLmgiCiAjaW5j
bHVkZSAiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCUGVu
ZGluZ1RyYW5zYWN0aW9uTW9uaXRvci5oIgpAQCAtMjI1LDYgKzIyNiwyNSBAQCBzdGF0aWMgUGFz
c1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGluZGV4Rm9yT2JqZWN0U3RvcmUoSURC
T2JqZWN0U3RvcmVCYQogICAgIHJldHVybiBpZGJJbmRleDsKIH0KIAorc3RhdGljIFN0cmluZyBr
ZXlQYXRoVG9TdHJpbmcoY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCkKK3sKKyAgICAvLyBGSVhN
RTogUmVwbGFjZSB3aXRoIGhhbmRsZXJzIGZvciBudWxsL3N0cmluZy9hcnJheSB0eXBlcy4KKyAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQzMDMKKyAgICBz
d2l0Y2ggKGtleVBhdGgudHlwZSgpKSB7CisgICAgY2FzZSBJREJLZXlQYXRoOjpOdWxsVHlwZToK
KyAgICAgICAgcmV0dXJuICIobm9uZSkiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIElEQktl
eVBhdGg6OlN0cmluZ1R5cGU6CisgICAgICAgIHJldHVybiBrZXlQYXRoLnN0cmluZygpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIElEQktleVBhdGg6OkFycmF5VHlwZToKKyAgICAgICAgcmV0
dXJuICJbLi4uXSI7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKIGNsYXNzIERhdGFiYXNlTG9hZGVyQ2Fs
bGJhY2sgOiBwdWJsaWMgRXhlY3V0YWJsZVdpdGhEYXRhYmFzZSB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8RGF0YWJhc2VMb2FkZXJDYWxsYmFjaz4gY3JlYXRlKEluc3BlY3Rvcklu
ZGV4ZWREQkFnZW50OjpGcm9udGVuZFByb3ZpZGVyKiBmcm9udGVuZFByb3ZpZGVyLCBpbnQgcmVx
dWVzdElkKQpAQCAtMjYwLDcgKzI4MCw3IEBAIHB1YmxpYzoKIAogICAgICAgICAgICAgICAgIFJl
ZlB0cjxPYmplY3RTdG9yZUluZGV4PiBvYmplY3RTdG9yZUluZGV4ID0gT2JqZWN0U3RvcmVJbmRl
eDo6Y3JlYXRlKCkKICAgICAgICAgICAgICAgICAgICAgLnNldE5hbWUoaWRiSW5kZXgtPm5hbWUo
KSkKLSAgICAgICAgICAgICAgICAgICAgLnNldEtleVBhdGgoaWRiSW5kZXgtPmtleVBhdGgoKSkK
KyAgICAgICAgICAgICAgICAgICAgLnNldEtleVBhdGgoa2V5UGF0aFRvU3RyaW5nKGlkYkluZGV4
LT5rZXlQYXRoKCkpKQogICAgICAgICAgICAgICAgICAgICAuc2V0VW5pcXVlKGlkYkluZGV4LT51
bmlxdWUoKSkKICAgICAgICAgICAgICAgICAgICAgLnNldE11bHRpRW50cnkoaWRiSW5kZXgtPm11
bHRpRW50cnkoKSk7CiAgICAgICAgICAgICAgICAgaW5kZXhlcy0+YWRkSXRlbShvYmplY3RTdG9y
ZUluZGV4KTsKQEAgLTI2OCw3ICsyODgsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgICAgIFJlZlB0
cjxPYmplY3RTdG9yZT4gb2JqZWN0U3RvcmUgPSBPYmplY3RTdG9yZTo6Y3JlYXRlKCkKICAgICAg
ICAgICAgICAgICAuc2V0TmFtZShpZGJPYmplY3RTdG9yZS0+bmFtZSgpKQotICAgICAgICAgICAg
ICAgIC5zZXRLZXlQYXRoKGlkYk9iamVjdFN0b3JlLT5rZXlQYXRoKCkpCisgICAgICAgICAgICAg
ICAgLnNldEtleVBhdGgoa2V5UGF0aFRvU3RyaW5nKGlkYk9iamVjdFN0b3JlLT5rZXlQYXRoKCkp
KQogICAgICAgICAgICAgICAgIC5zZXRJbmRleGVzKGluZGV4ZXMpOwogICAgICAgICAgICAgb2Jq
ZWN0U3RvcmVzLT5hZGRJdGVtKG9iamVjdFN0b3JlKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaAppbmRleCBiYWVh
YjA1ZWMxOWNiNWYzZTI5MGQ5ZDg4MGU1ZDc5MGUwOTAwNWFkLi5hZjNlNWUzZmVhZGJmZGIzYmE4
NTk2MDY3NWMzOGJmZWNmOWQ0NWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaApAQCAtNzgsNiArNzgsNyBAQCBjbGFzcyBHcmFw
aGljc0NvbnRleHQ7CiBjbGFzcyBJbWFnZTsKIGNsYXNzIElEQkZhY3RvcnlCYWNrZW5kSW50ZXJm
YWNlOwogY2xhc3MgSURCS2V5OworY2xhc3MgSURCS2V5UGF0aDsKIGNsYXNzIEludFJlY3Q7CiBj
bGFzcyBLVVJMOwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwpAQCAtMTgwLDkgKzE4MSw5
IEBAIHB1YmxpYzoKICAgICAvLyBJbmRleGVkREIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPElE
QkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlPiBpZGJGYWN0b3J5KCk7CiAgICAgLy8gRXh0cmFjdHMg
a2V5UGF0aCBmcm9tIHZhbHVlcyBhbmQgcmV0dXJucyB0aGUgY29ycmVzcG9uZGluZyBrZXlzLgot
ICAgIHN0YXRpYyB2b2lkIGNyZWF0ZUlEQktleXNGcm9tU2VyaWFsaXplZFZhbHVlc0FuZEtleVBh
dGgoY29uc3QgVmVjdG9yPFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+ID4mIHZhbHVlcywg
Y29uc3QgU3RyaW5nJiBrZXlQYXRoLCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiYga2V5cyk7Cisg
ICAgc3RhdGljIHZvaWQgY3JlYXRlSURCS2V5c0Zyb21TZXJpYWxpemVkVmFsdWVzQW5kS2V5UGF0
aChjb25zdCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gPiYgdmFsdWVzLCBj
b25zdCBJREJLZXlQYXRoJiwgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mIGtleXMpOwogICAgIC8v
IEluamVjdHMga2V5IHZpYSBrZXlQYXRoIGludG8gdmFsdWUuIFJldHVybnMgdHJ1ZSBvbiBzdWNj
ZXNzLgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gaW5qZWN0
SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKTsKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGluamVjdElEQktleUludG9TZXJp
YWxpemVkVmFsdWUoUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4sIGNvbnN0IElEQktleVBhdGgmKTsKIAogICAgIC8vIEphdmFTY3JpcHQgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAg
c3RhdGljIHZvaWQgbm90aWZ5SlNPdXRPZk1lbW9yeShGcmFtZSopOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9jaHJvbWl1bS9JREJLZXlQYXRoQmFja2VuZEltcGwuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9jaHJvbWl1bS9JREJLZXlQYXRoQmFja2VuZEltcGwuY3Bw
CmluZGV4IGI4MDRhMGZmOGExNGZhNzcyMjU4MmQyZGMyNGU0ZWY4MWVhYTMwOTQuLmM4NmM3N2Q5
NzczOWI1NTQ0MjBkNTg5YzcwOWEzZTdmMDZkZDFiZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvY2hyb21pdW0vSURCS2V5UGF0aEJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL2Nocm9taXVtL0lEQktleVBhdGhCYWNrZW5kSW1wbC5jcHAKQEAg
LTM0LDEyICszNCwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgSURCS2V5UGF0
aEJhY2tlbmRJbXBsOjpjcmVhdGVJREJLZXlzRnJvbVNlcmlhbGl6ZWRWYWx1ZXNBbmRLZXlQYXRo
KGNvbnN0IFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgMD4mIHZhbHVlcywg
IGNvbnN0IFN0cmluZyYga2V5UGF0aCwgVmVjdG9yPFJlZlB0cjxJREJLZXk+LCAwPiYga2V5cykK
K3ZvaWQgSURCS2V5UGF0aEJhY2tlbmRJbXBsOjpjcmVhdGVJREJLZXlzRnJvbVNlcmlhbGl6ZWRW
YWx1ZXNBbmRLZXlQYXRoKGNvbnN0IFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiwgMD4mIHZhbHVlcywgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgVmVjdG9yPFJlZlB0cjxJ
REJLZXk+LCAwPiYga2V5cykKIHsKICAgICBQbGF0Zm9ybVN1cHBvcnQ6OmNyZWF0ZUlEQktleXNG
cm9tU2VyaWFsaXplZFZhbHVlc0FuZEtleVBhdGgodmFsdWVzLCBrZXlQYXRoLCBrZXlzKTsKIH0K
IAotUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IElEQktleVBhdGhCYWNrZW5kSW1w
bDo6aW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShQYXNzUmVmUHRyPElEQktleT4ga2V5
LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIGNvbnN0IFN0cmluZyYg
a2V5UGF0aCkKK1Bhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBJREJLZXlQYXRoQmFj
a2VuZEltcGw6OmluamVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUoUGFzc1JlZlB0cjxJREJL
ZXk+IGtleSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBjb25zdCBJ
REJLZXlQYXRoJiBrZXlQYXRoKQogewogICAgIHJldHVybiBQbGF0Zm9ybVN1cHBvcnQ6OmluamVj
dElEQktleUludG9TZXJpYWxpemVkVmFsdWUoa2V5LCB2YWx1ZSwga2V5UGF0aCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2UuaAppbmRleCBmNTNi
MDJlMzlhN2I3MmZhZWRmYjVmYmMwZjA0ZThmYTMwZGEzMTEzLi5iMzk4NTM0MTY1NTQzYTE5N2E2
MTc5N2Q1NDc0OWRhODVlM2EzNTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYklEQkRhdGFiYXNlLmgKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgIldlYkRP
TVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJXZWJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSAi
V2ViSURCS2V5UGF0aC5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKQEAgLTM2LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFz
cyBXZWJGcmFtZTsKIGNsYXNzIFdlYklEQkNhbGxiYWNrczsKIGNsYXNzIFdlYklEQkRhdGFiYXNl
Q2FsbGJhY2tzOworY2xhc3MgV2ViSURCS2V5UGF0aDsKIGNsYXNzIFdlYklEQk9iamVjdFN0b3Jl
OwogY2xhc3MgV2ViSURCVHJhbnNhY3Rpb247CiAKQEAgLTU5LDEyICs1OSw2IEBAIHB1YmxpYzoK
ICAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gV2Vi
RE9NU3RyaW5nTGlzdCgpOwogICAgIH0KLSAgICAvLyBGSVhNRTogUmVtb3ZlIFdlYlN0cmluZyBr
ZXlQYXRoIG92ZXJsb2FkIG9uY2UgY2FsbGVycyBhcmUgdXBkYXRlZC4KLSAgICAvLyBodHRwOi8v
d2Via2l0Lm9yZy9iLzg0MjA3Ci0gICAgdmlydHVhbCBXZWJJREJPYmplY3RTdG9yZSogY3JlYXRl
T2JqZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGtleVBh
dGgsIGJvb2wgYXV0b0luY3JlbWVudCwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0
aW9uLCBXZWJFeGNlcHRpb25Db2RlJiBlYykKLSAgICB7Ci0gICAgICAgIHJldHVybiBjcmVhdGVP
YmplY3RTdG9yZShuYW1lLCBXZWJJREJLZXlQYXRoKGtleVBhdGgpLCBhdXRvSW5jcmVtZW50LCB0
cmFuc2FjdGlvbiwgZWMpOwotICAgIH0KICAgICB2aXJ0dWFsIFdlYklEQk9iamVjdFN0b3JlKiBj
cmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcmLCBjb25zdCBXZWJJREJLZXlQYXRoJiwg
Ym9vbCwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJikKICAgICB7
CiAgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkluZGV4LmggYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJJREJJbmRleC5oCmluZGV4IDM3YWYwMmMwYzhiMzEzOWRkMzZhZWJj
MDdiNWQzODE3NTYzYTBiNzYuLmMyZmYwMDFkMmU0Mzc5M2U2NzdiNTc3YTNmNjNlY2ZjMjMzNDRj
MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkluZGV4
LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCSW5kZXguaApAQCAt
NTQsMTQgKzU0LDggQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIFdlYklEQktleVBhdGgg
a2V5UGF0aCgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gV2ViSURCS2V5UGF0aChrZXlQ
YXRoU3RyaW5nKCkpOwotICAgIH0KLSAgICAvLyBGSVhNRTogUmVtb3ZlIG1ldGhvZCBvbmNlIGNh
bGxlcnMgYXJlIHVwZGF0ZWQuCi0gICAgLy8gaHR0cDovL3dlYmtpdC5vcmcvYi84NDIwNwotICAg
IHZpcnR1YWwgV2ViU3RyaW5nIGtleVBhdGhTdHJpbmcoKSBjb25zdAotICAgIHsKICAgICAgICAg
V0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gV2ViU3RyaW5nKCk7
CisgICAgICAgIHJldHVybiBXZWJJREJLZXlQYXRoOjpjcmVhdGVOdWxsKCk7CiAgICAgfQogICAg
IHZpcnR1YWwgYm9vbCB1bmlxdWUoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQktleVBhdGguaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYklEQktleVBhdGguaAppbmRleCA5N2JhYzA2ZmZlODRhM2ZkMGQyM2Ez
ZjE0YWQxMjk3MzkzNGYyYWU1Li5iZWIxZmEyMmQ4ZDA5MWMyMGVkMWU1NWNjMmIzMDc3MTBiOWRk
ZjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJLZXlQ
YXRoLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCS2V5UGF0aC5o
CkBAIC0zNiw2ICszNiw4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBh
Y2l0eT4gY2xhc3MgVmVjdG9yOwogY2xhc3MgU3RyaW5nOwogfQogCituYW1lc3BhY2UgV2ViQ29y
ZSB7IGNsYXNzIElEQktleVBhdGg7IH0KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdl
YklEQktleVBhdGggewpAQCAtNDQsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0VYUE9S
VCBzdGF0aWMgV2ViSURCS2V5UGF0aCBjcmVhdGUoY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4m
KTsKICAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJJREJLZXlQYXRoIGNyZWF0ZU51bGwoKTsK
ICAgICBXRUJLSVRfRVhQT1JUIFdlYklEQktleVBhdGgoY29uc3QgV2ViSURCS2V5UGF0aCYpOwot
ICAgIH5XZWJJREJLZXlQYXRoKCkgeyByZXNldCgpOyB9CisgICAgV0VCS0lUX0VYUE9SVCB+V2Vi
SURCS2V5UGF0aCgpOwogCiAgICAgZW51bSBUeXBlIHsKICAgICAgICAgTnVsbFR5cGUgPSAwLApA
QCAtNTQsMzAgKzU2LDE3IEBAIHB1YmxpYzoKIAogICAgIFdFQktJVF9FWFBPUlQgYm9vbCBpc1Zh
bGlkKCkgY29uc3Q7CiAgICAgV0VCS0lUX0VYUE9SVCBUeXBlIHR5cGUoKSBjb25zdDsKLSAgICAv
LyBGSVhNRTogQXJyYXktdHlwZSBrZXkgcGF0aHMgbm90IHlldCBzdXBwb3J0ZWQuIGh0dHA6Ly93
ZWJraXQub3JnL2IvODQyMDcKLSAgICBXZWJWZWN0b3I8V2ViU3RyaW5nPiBhcnJheSgpIGNvbnN0
IHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gV2ViVmVjdG9yPFdlYlN0cmlu
Zz4oKTsgfQotICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIHN0cmluZygpIGNvbnN0OwotCi0g
ICAgLy8gRklYTUU6IFJlbW92ZSB0aGVzZSBvbmNlIGNhbGxlcnMgYXJlIHVwZGF0ZWQuIGh0dHA6
Ly93ZWJraXQub3JnL2IvODQyMDcKLSAgICBXRUJLSVRfRVhQT1JUIFdlYklEQktleVBhdGgoY29u
c3QgV2ViU3RyaW5nJik7Ci0gICAgb3BlcmF0b3IgY29uc3QgV2ViU3RyaW5nICgpIGNvbnN0IHsg
cmV0dXJuIHN0cmluZygpOyB9Ci0gICAgV0VCS0lUX0VYUE9SVCBpbnQgcGFyc2VFcnJvcigpIGNv
bnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhc3NpZ24oY29uc3QgV2ViSURCS2V5UGF0aCYp
OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXNldCgpOworICAgIFdFQktJVF9FWFBPUlQgV2Vi
VmVjdG9yPFdlYlN0cmluZz4gYXJyYXkoKSBjb25zdDsgLy8gT25seSB2YWxpZCBmb3IgQXJyYXlU
eXBlLgorICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIHN0cmluZygpIGNvbnN0OyAvLyBPbmx5
IHZhbGlkIGZvciBTdHJpbmdUeXBlLgogCiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAg
b3BlcmF0b3IgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmcsIDA+JiAoKSBjb25zdDsKKyAg
ICBXZWJJREJLZXlQYXRoKGNvbnN0IFdlYkNvcmU6OklEQktleVBhdGgmKTsKKyAgICBXZWJJREJL
ZXlQYXRoJiBvcGVyYXRvcj0oY29uc3QgV2ViQ29yZTo6SURCS2V5UGF0aCYpOworICAgIG9wZXJh
dG9yIGNvbnN0IFdlYkNvcmU6OklEQktleVBhdGgmKCkgY29uc3Q7CiAjZW5kaWYKIAogcHJpdmF0
ZToKLSAgICBXZWJJREJLZXlQYXRoKCk7Ci0KLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAg
ICBXZWJJREJLZXlQYXRoKGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nLCAwPiYsIGludCBw
YXJzZUVycm9yKTsKLSNlbmRpZgotCi0gICAgV2ViUHJpdmF0ZU93blB0cjxXVEY6OlZlY3RvcjxX
VEY6OlN0cmluZywgMD4gPiBtX3ByaXZhdGU7Ci0gICAgaW50IG1fcGFyc2VFcnJvcjsKKyAgICBX
ZWJQcml2YXRlT3duUHRyPFdlYkNvcmU6OklEQktleVBhdGg+IG1fcHJpdmF0ZTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViSURCT2JqZWN0U3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYklEQk9iamVjdFN0b3JlLmgKaW5kZXggZGNmNDg1NjkyNTEwY2ZmOWI4MWY2NGUwZDE3YjAy
YmRiODFhOWRjNC4uOThlMDQ4YzNhMTFhMGZiMTM1Y2I1NzZjYTQ4OWUxOWRkZjI5NTBiZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCT2JqZWN0U3RvcmUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJPYmplY3RTdG9yZS5o
CkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiV2ViRE9NU3RyaW5nTGlzdC5oIgogI2luY2x1
ZGUgIldlYklEQkNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIldlYklEQktleVBhdGguaCIKLSNpbmNs
dWRlICJXZWJJREJUcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5o
IgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5oIgogCkBAIC01MSwxMiArNTAsOCBAQCBw
dWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgV2ViSURCS2V5UGF0aCBrZXlQYXRoKCkgY29uc3QK
ICAgICB7Ci0gICAgICAgIHJldHVybiBXZWJJREJLZXlQYXRoKGtleVBhdGhTdHJpbmcoKSk7Ci0g
ICAgfQotICAgIHZpcnR1YWwgV2ViU3RyaW5nIGtleVBhdGhTdHJpbmcoKSBjb25zdAotICAgIHsK
ICAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gV2Vi
U3RyaW5nKCk7CisgICAgICAgIHJldHVybiBXZWJJREJLZXlQYXRoOjpjcmVhdGVOdWxsKCk7CiAg
ICAgfQogICAgIHZpcnR1YWwgV2ViRE9NU3RyaW5nTGlzdCBpbmRleE5hbWVzKCkgY29uc3QKICAg
ICB7CkBAIC03NiwxMyArNzEsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1
bmN0aW9uKGNvbnN0IFdlYklEQktleSYsIFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYklEQlRy
YW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1bmN0aW9uKGNvbnN0IFdlYklEQktleVJh
bmdlJiwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNl
cHRpb25Db2RlJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFs
IHZvaWQgY2xlYXIoV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBX
ZWJFeGNlcHRpb25Db2RlJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLQotICAg
IC8vIEZJWE1FOiBSZW1vdmUgV2ViU3RyaW5nIGtleVBhdGggb3ZlcmxvYWQgb25jZSBjYWxsZXJz
IGFyZSB1cGRhdGVkLgotICAgIC8vIGh0dHA6Ly93ZWJraXQub3JnL2IvODQyMDcKLSAgICB2aXJ0
dWFsIFdlYklEQkluZGV4KiBjcmVhdGVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0
IFdlYlN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSwgY29uc3Qg
V2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBXZWJFeGNlcHRpb25Db2RlJiBlYykKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBjcmVhdGVJbmRleChuYW1lLCBXZWJJREJLZXlQYXRoKGtleVBh
dGgpLCB1bmlxdWUsIG11bHRpRW50cnksIHRyYW5zYWN0aW9uLCBlYyk7Ci0gICAgfQogICAgIHZp
cnR1YWwgV2ViSURCSW5kZXgqIGNyZWF0ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYsIGNvbnN0IFdl
YklEQktleVBhdGgmLCBib29sLCBib29sLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4
Y2VwdGlvbkNvZGUmKQogICAgIHsKICAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2Vi
S2l0UGxhdGZvcm1TdXBwb3J0LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0
Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaAppbmRleCBjYTM3NjJkY2JlYmU0YmYyYmJhYTZk
MDAwMTRmOGFhNDNmODUxNGYyLi41NjM4MDQxNTRmOTNhMDMzYWU1N2YyZTk2MjQzNDNkYjljNjM4
NzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9X
ZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaApAQCAtMzEsNyArMzEsNiBAQAogI2lm
bmRlZiBXZWJLaXRQbGF0Zm9ybVN1cHBvcnRfaAogI2RlZmluZSBXZWJLaXRQbGF0Zm9ybVN1cHBv
cnRfaAogCi0jaW5jbHVkZSAiLi4vV2ViSURCS2V5UGF0aC5oIiAvLyBGSVhNRTogUmVtb3ZlIHdp
dGg6IGh0dHA6Ly93ZWJraXQub3JnL2IvODQyMDcKICNpbmNsdWRlICJXZWJDb21tb24uaCIKICNp
bmNsdWRlICJXZWJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIldlYkxvY2FsaXplZFN0
cmluZy5oIgpAQCAtNTcsNiArNTYsNyBAQCBjbGFzcyBXZWJGaWxlU3lzdGVtOwogY2xhc3MgV2Vi
RmlsZVV0aWxpdGllczsKIGNsYXNzIFdlYklEQkZhY3Rvcnk7IC8vIEZJWE1FOiBEb2VzIHRoaXMg
YmVsb25nIGluIHBsYXRmb3JtPwogY2xhc3MgV2ViSURCS2V5OyAvLyBGSVhNRTogRG9lcyB0aGlz
IGJlbG9uZyBpbiBwbGF0Zm9ybT8KK2NsYXNzIFdlYklEQktleVBhdGg7IC8vIEZJWE1FOiBEb2Vz
IHRoaXMgYmVsb25nIGluIHBsYXRmb3JtPwogY2xhc3MgV2ViTWVzc2FnZVBvcnRDaGFubmVsOyAv
LyBGSVhNRTogRG9lcyB0aGlzIGJlbG9uZyBpbiBwbGF0Zm9ybT8KIGNsYXNzIFdlYlBsdWdpbkxp
c3RCdWlsZGVyOyAvLyBGSVhNRTogRG9lcyB0aGlzIGJlbG9uZyBpbiBwbGF0Zm9ybT8KIGNsYXNz
IFdlYlNhbmRib3hTdXBwb3J0OwpAQCAtMTI3LDEzICsxMjcsNyBAQCBwdWJsaWM6CiAgICAgLy8g
SW5kZXhlZCBEYXRhYmFzZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAKICAgICB2aXJ0dWFsIFdlYklEQkZhY3RvcnkqIGlkYkZhY3RvcnkoKSB7
IHJldHVybiAwOyB9Ci0gICAgLy8gRklYTUU6IFJlbW92ZSBXZWJTdHJpbmcga2V5UGF0aCBvdmVy
bG9hZCBvbmNlIGNhbGxlcnMgYXJlIHVwZGF0ZWQuCi0gICAgLy8gaHR0cDovL3dlYmtpdC5vcmcv
Yi84NDIwNwotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVJREJLZXlzRnJvbVNlcmlhbGl6ZWRWYWx1
ZXNBbmRLZXlQYXRoKGNvbnN0IFdlYlZlY3RvcjxXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiB2
YWx1ZXMsICBjb25zdCBXZWJTdHJpbmcmIGtleVBhdGgsIFdlYlZlY3RvcjxXZWJJREJLZXk+JiBr
ZXlzKSB7IGNyZWF0ZUlEQktleXNGcm9tU2VyaWFsaXplZFZhbHVlc0FuZEtleVBhdGgodmFsdWVz
LCBXZWJJREJLZXlQYXRoKGtleVBhdGgpLCBrZXlzKTsgfQogICAgIHZpcnR1YWwgdm9pZCBjcmVh
dGVJREJLZXlzRnJvbVNlcmlhbGl6ZWRWYWx1ZXNBbmRLZXlQYXRoKGNvbnN0IFdlYlZlY3RvcjxX
ZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiB2YWx1ZXMsICBjb25zdCBXZWJJREJLZXlQYXRoJiBr
ZXlQYXRoLCBXZWJWZWN0b3I8V2ViSURCS2V5PiYga2V5cykgeyB9Ci0gICAgLy8gRklYTUU6IFJl
bW92ZSBXZWJTdHJpbmcga2V5UGF0aCBvdmVybG9hZCBvbmNlIGNhbGxlcnMgYXJlIHVwZGF0ZWQu
Ci0gICAgLy8gaHR0cDovL3dlYmtpdC5vcmcvYi84NDIwNwotICAgIHZpcnR1YWwgV2ViU2VyaWFs
aXplZFNjcmlwdFZhbHVlIGluamVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUoY29uc3QgV2Vi
SURCS2V5JiBrZXksIGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0
IFdlYlN0cmluZyYga2V5UGF0aCkgeyByZXR1cm4gaW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRW
YWx1ZShrZXksIHZhbHVlLCBXZWJJREJLZXlQYXRoKGtleVBhdGgpKTsgfQogICAgIHZpcnR1YWwg
V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlIGluamVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUo
Y29uc3QgV2ViSURCS2V5JiBrZXksIGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgdmFs
dWUsIGNvbnN0IFdlYklEQktleVBhdGgmIGtleVBhdGgpIHsgcmV0dXJuIFdlYlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSgpOyB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9B
c3NlcnRNYXRjaGluZ0VudW1zLmNwcAppbmRleCA2OWU1OTYyMjlmNDNkMmZkZTQ1Y2RiNGEwNzBj
NWQ3ZDNkNjA4YmU5Li44NGIyNTJlZDI2NWFlMjFjYjE4YzkxYmFhMWI3MmY4MjFmODVmNmQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1z
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1z
LmNwcApAQCAtNTIsNiArNTIsNyBAQAogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9uLmgi
CiAjaW5jbHVkZSAiSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJL
ZXkuaCIKKyNpbmNsdWRlICJJREJLZXlQYXRoLmgiCiAjaW5jbHVkZSAiSWNlT3B0aW9ucy5oIgog
I2luY2x1ZGUgIkljb25VUkwuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgpAQCAtODQsNiAr
ODUsNyBAQAogI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAi
V2ViSURCRmFjdG9yeS5oIgogI2luY2x1ZGUgIldlYklEQktleS5oIgorI2luY2x1ZGUgIldlYklE
QktleVBhdGguaCIKICNpbmNsdWRlICJXZWJJY29uVVJMLmgiCiAjaW5jbHVkZSAiV2ViSW5wdXRF
bGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViTWVkaWFQbGF5ZXIuaCIKQEAgLTQ2MywxMiArNDY1LDE4
IEBAIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViVmlldzo6VXNlclN0eWxlSW5qZWN0
SW5TdWJzZXF1ZW50RG9jdW1lbnRzLCBJbmplCiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVN
KFdlYklEQkRhdGFiYXNlRXhjZXB0aW9uRGF0YUVycm9yLCBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
REFUQV9FUlIpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJEYXRhYmFzZUV4
Y2VwdGlvblF1b3RhRXJyb3IsIElEQkRhdGFiYXNlRXhjZXB0aW9uOjpRVU9UQV9FUlIpOwogCisj
aWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVN
KFdlYklEQktleTo6SW52YWxpZFR5cGUsIElEQktleTo6SW52YWxpZFR5cGUpOwogQ09NUElMRV9B
U1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJLZXk6OkFycmF5VHlwZSwgSURCS2V5OjpBcnJheVR5
cGUpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJLZXk6OlN0cmluZ1R5cGUs
IElEQktleTo6U3RyaW5nVHlwZSk7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYklE
QktleTo6RGF0ZVR5cGUsIElEQktleTo6RGF0ZVR5cGUpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTShXZWJJREJLZXk6Ok51bWJlclR5cGUsIElEQktleTo6TnVtYmVyVHlwZSk7CiAKK0NP
TVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViSURCS2V5UGF0aDo6TnVsbFR5cGUsIElEQktl
eVBhdGg6Ok51bGxUeXBlKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViSURCS2V5
UGF0aDo6U3RyaW5nVHlwZSwgSURCS2V5UGF0aDo6U3RyaW5nVHlwZSk7CitDT01QSUxFX0FTU0VS
VF9NQVRDSElOR19FTlVNKFdlYklEQktleVBhdGg6OkFycmF5VHlwZSwgSURCS2V5UGF0aDo6QXJy
YXlUeXBlKTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogQ09NUElMRV9BU1NF
UlRfTUFUQ0hJTkdfRU5VTShXZWJGaWxlU3lzdGVtOjpUeXBlVGVtcG9yYXJ5LCBBc3luY0ZpbGVT
eXN0ZW06OlRlbXBvcmFyeSk7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkZpbGVT
eXN0ZW06OlR5cGVQZXJzaXN0ZW50LCBBc3luY0ZpbGVTeXN0ZW06OlBlcnNpc3RlbnQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJv
eHkuY3BwCmluZGV4IDE3OTc5OTI3NWQ2Zjk5NzYzMDE3N2U1YTI4YmQ5M2JhMzE3MjYwNGYuLjZl
NTM1NDk5YTM4YzRhOTM1MDlhNmU0ZjU1NmNmOThhYzhmMjAwNzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHAKQEAg
LTc1LDcgKzc1LDcgQEAgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBJREJEYXRhYmFzZUJhY2tl
bmRQcm94eTo6b2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0CiAgICAgcmV0dXJuIG1fd2ViSURCRGF0
YWJhc2UtPm9iamVjdFN0b3JlTmFtZXMoKTsKIH0KIAotUGFzc1JlZlB0cjxJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbnRlcmZhY2U+IElEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpjcmVhdGVPYmplY3RT
dG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRv
SW5jcmVtZW50LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBF
eGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJm
YWNlPiBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQs
IElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogewogICAgIC8vIFRoZSB0cmFuc2FjdGlvbiBwb2ludGVyIGlzIGd1YXJhbnRlZWQg
dG8gYmUgYSBwb2ludGVyIHRvIGEgcHJveHkgb2JqZWN0IGFzLCBpbiB0aGUgcmVuZGVyZXIsCiAg
ICAgLy8gYWxsIGltcGxlbWVudGF0aW9ucyBvZiBJREIgaW50ZXJmYWNlcyBhcmUgcHJveHkgb2Jq
ZWN0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNl
QmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJh
Y2tlbmRQcm94eS5oCmluZGV4IDVhNWJhZjI4ZjA5NmE5OTQ3ZmFiMDUyZmVkYjFlOWFlMzc3ZWE2
NWEuLmI3OGFjNjk5MmNkY2ZmMTM4N2E5ZWMwOGIzODY4ZWI2Y2ZjNDMzOTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaApA
QCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgdmVyc2lvbigpIGNv
bnN0OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpET01TdHJpbmdMaXN0PiBvYmpl
Y3RTdG9yZU5hbWVzKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBX
ZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRp
b25Db2RlJik7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQk9iamVjdFN0b3Jl
QmFja2VuZEludGVyZmFjZT4gY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBXZWJDb3JlOjpJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50LCBXZWJDb3JlOjpJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7
CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwg
V2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0
aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVy
c2lvbiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFdlYkNv
cmU6OklEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwogICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2U+IHRyYW5zYWN0aW9uKFdlYkNvcmU6OkRPTVN0cmluZ0xpc3QqIHN0b3JlTmFtZXMsIHVuc2ln
bmVkIHNob3J0IG1vZGUsIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkluZGV4QmFja2VuZFByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkluZGV4QmFja2VuZFByb3h5LmNwcAppbmRleCAwMDE0
ZjI5NTk2YWViM2ExYWMzM2FiN2NiZTZjYzUzODA5MjIyYmE2Li41YmM0MmU2ZGIxZjI0YjM2NmE3
YWUxYzY3OGNkYzlkYTIzMjE0NTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9JREJJbmRleEJhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvSURCSW5kZXhCYWNrZW5kUHJveHkuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5B
QkxFKElOREVYRURfREFUQUJBU0UpCiAKICNpbmNsdWRlICJJREJDYWxsYmFja3MuaCIKKyNpbmNs
dWRlICJJREJLZXlQYXRoLmgiCiAjaW5jbHVkZSAiSURCS2V5UmFuZ2UuaCIKICNpbmNsdWRlICJJ
REJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eS5oIgogI2luY2x1ZGUgIldlYklEQkNhbGxiYWNrc0lt
cGwuaCIKQEAgLTY1LDkgKzY2LDkgQEAgU3RyaW5nIElEQkluZGV4QmFja2VuZFByb3h5OjpzdG9y
ZU5hbWUoKQogICAgIHJldHVybiBtX3dlYklEQkluZGV4LT5zdG9yZU5hbWUoKTsKIH0KIAotU3Ry
aW5nIElEQkluZGV4QmFja2VuZFByb3h5OjprZXlQYXRoKCkKK0lEQktleVBhdGggSURCSW5kZXhC
YWNrZW5kUHJveHk6OmtleVBhdGgoKQogewotICAgIHJldHVybiBtX3dlYklEQkluZGV4LT5rZXlQ
YXRoKCkuc3RyaW5nKCk7CisgICAgcmV0dXJuIG1fd2ViSURCSW5kZXgtPmtleVBhdGgoKTsKIH0K
IAogYm9vbCBJREJJbmRleEJhY2tlbmRQcm94eTo6dW5pcXVlKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkluZGV4QmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9JREJJbmRleEJhY2tlbmRQcm94eS5oCmluZGV4IDQyZTBlYWJiZWUx
N2ExNjcwODc4ZjcwMDViMzA5ZTViZDEyMDhjZDAuLjA2NzAwNTIxMGRlMjYzOGY3NTJkNDljNTU2
OTY5Y2VkNmVlODU1ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lE
QkluZGV4QmFja2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURC
SW5kZXhCYWNrZW5kUHJveHkuaApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShJTkRFWEVE
X0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiSURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlLmgiCisjaW5j
bHVkZSAiSURCS2V5UGF0aC5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3
dGYvUGFzc093blB0ci5oPgogCkBAIC00Myw3ICs0NCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgU3RyaW5nIG5hbWUoKTsKICAgICB2aXJ0dWFsIFN0cmluZyBzdG9yZU5hbWUoKTsKLSAgICB2
aXJ0dWFsIFN0cmluZyBrZXlQYXRoKCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpJREJLZXlQYXRo
IGtleVBhdGgoKTsKICAgICB2aXJ0dWFsIGJvb2wgdW5pcXVlKCk7CiAgICAgdmlydHVhbCBib29s
IG11bHRpRW50cnkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
SURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuY3BwCmluZGV4IDIxYTVkZDg1NmRjM2I4MDU5
ODk3N2MwNDg2MmViODZkZmU4NzljMGQuLmRiMWE0NGE2YTJhOTgyNGQxYjFhMWVlNDkxZjE2Yjky
NTZiMDU5ZjYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVj
dFN0b3JlQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9J
REJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5jcHAKQEAgLTY0LDkgKzY0LDkgQEAgU3RyaW5nIElE
Qk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjpuYW1lKCkgY29uc3QKICAgICByZXR1cm4gbV93ZWJJ
REJPYmplY3RTdG9yZS0+bmFtZSgpOwogfQogCi1TdHJpbmcgSURCT2JqZWN0U3RvcmVCYWNrZW5k
UHJveHk6OmtleVBhdGgoKSBjb25zdAorSURCS2V5UGF0aCBJREJPYmplY3RTdG9yZUJhY2tlbmRQ
cm94eTo6a2V5UGF0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fd2ViSURCT2JqZWN0U3RvcmUt
PmtleVBhdGgoKS5zdHJpbmcoKTsKKyAgICByZXR1cm4gbV93ZWJJREJPYmplY3RTdG9yZS0+a2V5
UGF0aCgpOwogfQogCiBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IElEQk9iamVjdFN0b3JlQmFj
a2VuZFByb3h5OjppbmRleE5hbWVzKCkgY29uc3QKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIElE
Qk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjpjbGVhcihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4g
Y2FsbGJhY2tzLCBJREJUcgogICAgIG1fd2ViSURCT2JqZWN0U3RvcmUtPmNsZWFyKG5ldyBXZWJJ
REJDYWxsYmFja3NJbXBsKGNhbGxiYWNrcyksICp0cmFuc2FjdGlvblByb3h5LT5nZXRXZWJJREJU
cmFuc2FjdGlvbigpLCBlYyk7CiB9CiAKLVBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJm
YWNlPiBJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eTo6Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50
cnksIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2VwdGlv
bkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IElEQk9iamVj
dFN0b3JlQmFja2VuZFByb3h5OjpjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnksIElEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVj
KQogewogICAgIC8vIFRoZSB0cmFuc2FjdGlvbiBwb2ludGVyIGlzIGd1YXJhbnRlZWQgdG8gYmUg
YSBwb2ludGVyIHRvIGEgcHJveHkgb2JqZWN0IGFzLCBpbiB0aGUgcmVuZGVyZXIsCiAgICAgLy8g
YWxsIGltcGxlbWVudGF0aW9ucyBvZiBJREIgaW50ZXJmYWNlcyBhcmUgcHJveHkgb2JqZWN0cy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlQmFj
a2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9yZUJh
Y2tlbmRQcm94eS5oCmluZGV4IDVlMTE4OTE4NmFhMWRhMmMxNGM1OThkODY0MjQ2MmVlN2RkNGVj
ZGYuLjBjMmQ4MzhmZWRkMTBiZWI5ZjI4ZWE5OWZmNzc0OGQyMjc1MmU3ODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJv
eHkuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAK
KyNpbmNsdWRlICJJREJLZXlQYXRoLmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW50ZXJmYWNlLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CkBAIC00Myw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JREJPYmpl
Y3RTdG9yZUJhY2tlbmRQcm94eSgpOwogCiAgICAgdmlydHVhbCBTdHJpbmcgbmFtZSgpIGNvbnN0
OwotICAgIHZpcnR1YWwgU3RyaW5nIGtleVBhdGgoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFdlYkNv
cmU6OklEQktleVBhdGgga2V5UGF0aCgpIGNvbnN0OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpET01TdHJpbmdMaXN0PiBpbmRleE5hbWVzKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFs
IHZvaWQgZ2V0KFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRyPFdl
YkNvcmU6OklEQkNhbGxiYWNrcz4sIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKQEAgLTUyLDcgKzUzLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPFdlYkNvcmU6OklE
QktleVJhbmdlPiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBXZWJDb3JlOjpJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7
CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tz
PiwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhj
ZXB0aW9uQ29kZSYpOwogCi0gICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJJbmRleEJhY2tlbmRJ
bnRlcmZhY2U+IGNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBr
ZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5LCBXZWJDb3JlOjpJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CisgICAgUGFz
c1JlZlB0cjxXZWJDb3JlOjpJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZUluZGV4KGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgV2ViQ29yZTo6SURCS2V5UGF0aCYsIGJvb2wgdW5pcXVl
LCBib29sIG11bHRpRW50cnksIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OklE
QkluZGV4QmFja2VuZEludGVyZmFjZT4gaW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3Jl
OjpFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBkZWxldGVJbmRleChjb25zdCBTdHJpbmcmIG5h
bWUsIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4
Y2VwdGlvbkNvZGUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
UGxhdGZvcm1TdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3Jt
U3VwcG9ydC5jcHAKaW5kZXggZGU5ODEwZGJkMjk5YzdlZTU0ZTAxZjNmNmRkM2Y5MTZlY2FhOWU3
MS4uZDMwNGU2MTA2NjcwODQ2MGUyNjg5NmExMjM3NzYzYjFlNGJkZjc5NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwCkBAIC00MCw2ICs0MCw3
IEBACiAjaW5jbHVkZSAiV2ViRnJhbWVDbGllbnQuaCIKICNpbmNsdWRlICJXZWJGcmFtZUltcGwu
aCIKICNpbmNsdWRlICJXZWJJREJLZXkuaCIKKyNpbmNsdWRlICJXZWJJREJLZXlQYXRoLmgiCiAj
aW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSAiV2ViUGx1Z2luQ29udGFpbmVySW1wbC5oIgog
I2luY2x1ZGUgIldlYlBsdWdpbkxpc3RCdWlsZGVySW1wbC5oIgpAQCAtNTE1LDcgKzUxNiw3IEBA
IFBhc3NSZWZQdHI8SURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2U+IFBsYXRmb3JtU3VwcG9ydDo6
aWRiRmFjdG9yeSgpCiAgICAgcmV0dXJuIElEQkZhY3RvcnlCYWNrZW5kUHJveHk6OmNyZWF0ZSgp
OwogfQogCi12b2lkIFBsYXRmb3JtU3VwcG9ydDo6Y3JlYXRlSURCS2V5c0Zyb21TZXJpYWxpemVk
VmFsdWVzQW5kS2V5UGF0aChjb25zdCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gPiYgdmFsdWVzLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIFZlY3RvcjxSZWZQdHI8SURCS2V5
PiA+JiBrZXlzKQordm9pZCBQbGF0Zm9ybVN1cHBvcnQ6OmNyZWF0ZUlEQktleXNGcm9tU2VyaWFs
aXplZFZhbHVlc0FuZEtleVBhdGgoY29uc3QgVmVjdG9yPFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+ID4mIHZhbHVlcywgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgVmVjdG9yPFJlZlB0
cjxJREJLZXk+ID4mIGtleXMpCiB7CiAgICAgV2ViVmVjdG9yPFdlYlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gd2ViVmFsdWVzID0gdmFsdWVzOwogICAgIFdlYlZlY3RvcjxXZWJJREJLZXk+IHdlYktl
eXM7CkBAIC01MjcsNyArNTI4LDcgQEAgdm9pZCBQbGF0Zm9ybVN1cHBvcnQ6OmNyZWF0ZUlEQktl
eXNGcm9tU2VyaWFsaXplZFZhbHVlc0FuZEtleVBhdGgoY29uc3QgVmVjdG9yPFIKICAgICAgICAg
a2V5cy5hcHBlbmQoUGFzc1JlZlB0cjxJREJLZXk+KHdlYktleXNbaV0pKTsKIH0KIAotUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFBsYXRmb3JtU3VwcG9ydDo6aW5qZWN0SURCS2V5
SW50b1NlcmlhbGl6ZWRWYWx1ZShQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKK1Bhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBQbGF0Zm9ybVN1cHBvcnQ6OmluamVjdElEQktl
eUludG9TZXJpYWxpemVkVmFsdWUoUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKQog
ewogICAgIHJldHVybiB3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+aW5qZWN0SURCS2V5SW50b1Nl
cmlhbGl6ZWRWYWx1ZShrZXksIHZhbHVlLCBrZXlQYXRoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwCmluZGV4IDQ0N2I5OTNjNmE0
ZjkwN2RjMDQzYTdhMmY1NGFjNTY4NmQ2Mzk4MTkuLjRiZTQzZGMxNGQ4MTdkOTU5YWVmNThhMTZh
ZWNmNDg1YmNiNWI2YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YklEQkRhdGFiYXNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SURCRGF0YWJhc2VJbXBsLmNwcApAQCAtNjYsNyArNjYsNyBAQCBXZWJET01TdHJpbmdMaXN0IFdl
YklEQkRhdGFiYXNlSW1wbDo6b2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0CiAgICAgcmV0dXJuIG1f
ZGF0YWJhc2VCYWNrZW5kLT5vYmplY3RTdG9yZU5hbWVzKCk7CiB9CiAKLVdlYklEQk9iamVjdFN0
b3JlKiBXZWJJREJEYXRhYmFzZUltcGw6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmlu
ZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIGNv
bnN0IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgV2ViRXhjZXB0aW9uQ29kZSYgZWMp
CitXZWJJREJPYmplY3RTdG9yZSogV2ViSURCRGF0YWJhc2VJbXBsOjpjcmVhdGVPYmplY3RTdG9y
ZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYklEQktleVBhdGgmIGtleVBhdGgsIGJv
b2wgYXV0b0luY3JlbWVudCwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBX
ZWJFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5k
SW50ZXJmYWNlPiBvYmplY3RTdG9yZSA9IG1fZGF0YWJhc2VCYWNrZW5kLT5jcmVhdGVPYmplY3RT
dG9yZShuYW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50LCB0cmFuc2FjdGlvbi5nZXRJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UoKSwgZWMpOwogICAgIGlmICghb2JqZWN0U3RvcmUpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1w
bC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgKaW5k
ZXggZjczYmU1NzA1NGY2MmFiNGMyNTQxNDAyZDdmMTQ3ZDg2N2FlZjNkNy4uOTY1NzFiYmU5YzFk
OTZjYmQzZjljN2QzYWQ4MzE3OWI5NjE5M2RkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgKQEAgLTUzLDEwICs1Myw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIFdlYlN0cmluZyB2ZXJzaW9uKCkgY29uc3Q7CiAgICAgdmlydHVhbCBXZWJE
T01TdHJpbmdMaXN0IG9iamVjdFN0b3JlTmFtZXMoKSBjb25zdDsKIAotICAgIC8vIEZJWE1FOiBS
ZW1vdmUgV2ViU3RyaW5nIGtleVBhdGggb3ZlcmxvYWQgb25jZSBjYWxsZXJzIGFyZSB1cGRhdGVk
LgotICAgIC8vIGh0dHA6Ly93ZWJraXQub3JnL2IvODQyMDcKLSAgICB2aXJ0dWFsIFdlYklEQk9i
amVjdFN0b3JlKiBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcmLCBjb25zdCBXZWJT
dHJpbmcmLCBib29sLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUm
KTsKLSAgICB2aXJ0dWFsIFdlYklEQk9iamVjdFN0b3JlKiBjcmVhdGVPYmplY3RTdG9yZShjb25z
dCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYklEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0
b0luY3JlbWVudCwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBXZWJFeGNl
cHRpb25Db2RlJiBlYykgeyByZXR1cm4gY3JlYXRlT2JqZWN0U3RvcmUobmFtZSwga2V5UGF0aC5z
dHJpbmcoKSwgYXV0b0luY3JlbWVudCwgdHJhbnNhY3Rpb24sIGVjKTsgfQorICAgIHZpcnR1YWwg
V2ViSURCT2JqZWN0U3RvcmUqIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFt
ZSwgY29uc3QgV2ViSURCS2V5UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCwgY29uc3QgV2ViSURC
VHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0
ZU9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCVHJhbnNhY3Rp
b24mLCBXZWJFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIHNldFZlcnNpb24oY29u
c3QgV2ViU3RyaW5nJiB2ZXJzaW9uLCBXZWJJREJDYWxsYmFja3MqLCBXZWJFeGNlcHRpb25Db2Rl
Jik7CiAgICAgdmlydHVhbCBXZWJJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24oY29uc3QgV2Vi
RE9NU3RyaW5nTGlzdCYgbmFtZXMsIHVuc2lnbmVkIHNob3J0IG1vZGUsIFdlYkV4Y2VwdGlvbkNv
ZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkluZGV4
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJJbmRleEltcGwuY3Bw
CmluZGV4IDE3MDkzOTU2NzQwOTYwMmQ4OGY0N2E2NWY1MDNhOWNlYjgyN2RhYjUuLmQ3OGIyYjNh
NjA4YzhhMzc5Yzk4M2IwODAzOThkYWRiY2JhZjE5OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklEQkluZGV4SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSURCSW5kZXhJbXBsLmNwcApAQCAtNjMsMTMgKzYzLDYgQEAgV2ViSURC
S2V5UGF0aCBXZWJJREJJbmRleEltcGw6OmtleVBhdGgoKSBjb25zdAogICAgIHJldHVybiBXZWJJ
REJLZXlQYXRoKG1fYmFja2VuZC0+a2V5UGF0aCgpKTsKIH0KIAotLy8gRklYTUU6IFJlbW92ZSB0
aGlzIG1ldGhvZCBvbmNlIGNhbGxlcnMgYXJlIHVwZGF0ZWQuCi0vLyBodHRwOi8vd2Via2l0Lm9y
Zy9iLzg0MjA3Ci1XZWJTdHJpbmcgV2ViSURCSW5kZXhJbXBsOjprZXlQYXRoU3RyaW5nKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gbV9iYWNrZW5kLT5rZXlQYXRoKCk7Ci19Ci0KIGJvb2wgV2ViSURC
SW5kZXhJbXBsOjp1bmlxdWUoKSBjb25zdAogewogICAgIHJldHVybiBtX2JhY2tlbmQtPnVuaXF1
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCSW5kZXhJ
bXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJJbmRleEltcGwuaAppbmRl
eCBkOGIxMTI5ZDBmM2Y1NWQzMzNmZmQ2MTljMDk5YzQ4YWJlOTVmM2ZjLi42ZDBhYjY4ZjZkOTlm
ZGNhY2RmZGMwMzJjMDI5ODA4NTg2ZWRjYmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJREJJbmRleEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJREJJbmRleEltcGwuaApAQCAtNDYsOSArNDYsNiBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBXZWJTdHJpbmcgbmFtZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgV2ViU3RyaW5nIHN0b3Jl
TmFtZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgV2ViSURCS2V5UGF0aCBrZXlQYXRoKCkgY29uc3Q7
Ci0gICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIG1ldGhvZCBvbmNlIGNhbGxlcnMgYXJlIHVwZGF0
ZWQuCi0gICAgLy8gaHR0cDovL3dlYmtpdC5vcmcvYi84NDIwNwotICAgIHZpcnR1YWwgV2ViU3Ry
aW5nIGtleVBhdGhTdHJpbmcoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgdW5pcXVlKCkgY29u
c3Q7CiAgICAgdmlydHVhbCBib29sIG11bHRpRW50cnkoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCS2V5UGF0aC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJREJLZXlQYXRoLmNwcAppbmRleCBiY2Y1ZGJkMGQ5ZWM4NmQx
YTM5YzgwMWU0YWUwZjc3ZmJkMjQxYjI2Li4xN2MxNThmMzRlNDg4ZDkwZTMxNzNjZGMzODQ2MWQx
YWYyYTNiNzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJL
ZXlQYXRoLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJLZXlQYXRo
LmNwcApAQCAtMzcsMTAxICszNyw3OSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLVdlYklEQktleVBhdGggV2ViSURCS2V5UGF0aDo6Y3JlYXRlKGNv
bnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+JikKK1dlYklEQktleVBhdGg6On5XZWJJREJLZXlQYXRo
KCkKIHsKLSAgICAvLyBGSVhNRTogQXJyYXktdHlwZSBrZXkgcGF0aHMgbm90IHlldCBzdXBwb3J0
ZWQuIGh0dHA6Ly93ZWJraXQub3JnL2IvODQyMDcKLSAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuIGNyZWF0ZU51bGwoKTsKKyAgICBtX3ByaXZhdGUucmVzZXQoMCk7
CiB9CiAKIFdlYklEQktleVBhdGggV2ViSURCS2V5UGF0aDo6Y3JlYXRlKGNvbnN0IFdlYlN0cmlu
ZyYga2V5UGF0aCkKIHsKLSAgICBpZiAoa2V5UGF0aC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJu
IGNyZWF0ZU51bGwoKTsKLQotICAgIFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiBpZGJFbGVtZW50
czsKLSAgICBJREJLZXlQYXRoUGFyc2VFcnJvciBpZGJFcnJvcjsKLSAgICBJREJQYXJzZUtleVBh
dGgoa2V5UGF0aCwgaWRiRWxlbWVudHMsIGlkYkVycm9yKTsKLSAgICByZXR1cm4gV2ViSURCS2V5
UGF0aChpZGJFbGVtZW50cywgc3RhdGljX2Nhc3Q8aW50PihpZGJFcnJvcikpOwotfQotCi1XZWJJ
REJLZXlQYXRoIFdlYklEQktleVBhdGg6OmNyZWF0ZU51bGwoKQotewotICAgIHJldHVybiBXZWJJ
REJLZXlQYXRoKFdlYlN0cmluZygpKTsKKyAgICByZXR1cm4gV2ViSURCS2V5UGF0aChJREJLZXlQ
YXRoKGtleVBhdGgpKTsKIH0KIAotV2ViSURCS2V5UGF0aDo6V2ViSURCS2V5UGF0aChjb25zdCBX
ZWJJREJLZXlQYXRoJiBrZXlQYXRoKQorV2ViSURCS2V5UGF0aCBXZWJJREJLZXlQYXRoOjpjcmVh
dGUoY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIGtleVBhdGgpCiB7Ci0gICAgYXNzaWduKGtl
eVBhdGgpOworICAgIFZlY3RvcjxTdHJpbmc+IHN0cmluZ3M7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBrZXlQYXRoLnNpemUoKTsgKytpKQorICAgICAgICBzdHJpbmdzLmFwcGVuZChrZXlQ
YXRoW2ldKTsKKyAgICByZXR1cm4gV2ViSURCS2V5UGF0aChJREJLZXlQYXRoKHN0cmluZ3MpKTsK
IH0KIAotV2ViSURCS2V5UGF0aDo6V2ViSURCS2V5UGF0aChjb25zdCBXVEY6OlZlY3RvcjxXVEY6
OlN0cmluZz4mIGVsZW1lbnRzLCBpbnQgcGFyc2VFcnJvcikKLSAgICA6IG1fcHJpdmF0ZShuZXcg
V1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+KGVsZW1lbnRzKSkKLSAgICAsIG1fcGFyc2VFcnJvcihw
YXJzZUVycm9yKQorV2ViSURCS2V5UGF0aCBXZWJJREJLZXlQYXRoOjpjcmVhdGVOdWxsKCkKIHsK
KyAgICByZXR1cm4gV2ViSURCS2V5UGF0aChJREJLZXlQYXRoKCkpOwogfQogCiBib29sIFdlYklE
QktleVBhdGg6OmlzVmFsaWQoKSBjb25zdAogewotICAgIHJldHVybiBtX3BhcnNlRXJyb3IgPT0g
SURCS2V5UGF0aFBhcnNlRXJyb3JOb25lOworICAgIEFTU0VSVChtX3ByaXZhdGUuZ2V0KCkpOwor
ICAgIHJldHVybiBtX3ByaXZhdGUtPmlzVmFsaWQoKTsKIH0KIAogV2ViSURCS2V5UGF0aDo6VHlw
ZSBXZWJJREJLZXlQYXRoOjp0eXBlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcml2YXRlLmdl
dCgpID8gU3RyaW5nVHlwZSA6IE51bGxUeXBlOworICAgIEFTU0VSVChtX3ByaXZhdGUuZ2V0KCkp
OworICAgIHJldHVybiBUeXBlKG1fcHJpdmF0ZS0+dHlwZSgpKTsKIH0KIAotV2ViU3RyaW5nIFdl
YklEQktleVBhdGg6OnN0cmluZygpIGNvbnN0CisKK1dlYlZlY3RvcjxXZWJTdHJpbmc+IFdlYklE
QktleVBhdGg6OmFycmF5KCkgY29uc3QKIHsKLSAgICBpZiAoIW1fcHJpdmF0ZS5nZXQoKSkKLSAg
ICAgICAgcmV0dXJuIFdlYlN0cmluZygpOwotCi0gICAgLy8gRklYTUU6IFN0b3JlIHRoZSBjb21w
bGV0ZSBzdHJpbmcgaW5zdGVhZCBvZiByZWJ1aWxkaW5nIGl0LgotICAgIC8vIGh0dHA6Ly93ZWJr
aXQub3JnL2IvODQyMDcKLSAgICBXVEY6OlN0cmluZyBzdHJpbmcoIiIpOwotICAgIFdURjo6VmVj
dG9yPFdURjo6U3RyaW5nPiYgYXJyYXkgPSAqbV9wcml2YXRlLmdldCgpOwotICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgYXJyYXkuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKGkpCi0gICAg
ICAgICAgICBzdHJpbmcuYXBwZW5kKCIuIik7Ci0gICAgICAgIHN0cmluZy5hcHBlbmQoYXJyYXlb
aV0pOwotICAgIH0KLSAgICByZXR1cm4gV2ViU3RyaW5nKHN0cmluZyk7CisgICAgQVNTRVJUKG1f
cHJpdmF0ZS5nZXQoKSk7CisgICAgQVNTRVJUKG1fcHJpdmF0ZS0+dHlwZSgpID09IElEQktleVBh
dGg6OkFycmF5VHlwZSk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+YXJyYXkoKTsKIH0KIAotV2Vi
SURCS2V5UGF0aDo6V2ViSURCS2V5UGF0aChjb25zdCBXZWJTdHJpbmcmIGtleVBhdGgpCi0gICAg
OiBtX3BhcnNlRXJyb3IoSURCS2V5UGF0aFBhcnNlRXJyb3JOb25lKQorV2ViU3RyaW5nIFdlYklE
QktleVBhdGg6OnN0cmluZygpIGNvbnN0CiB7Ci0gICAgaWYgKCFrZXlQYXRoLmlzTnVsbCgpKSB7
Ci0gICAgICAgIG1fcHJpdmF0ZS5yZXNldChuZXcgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+KCkp
OwotICAgICAgICBJREJLZXlQYXRoUGFyc2VFcnJvciBpZGJQYXJzZUVycm9yOwotICAgICAgICBJ
REJQYXJzZUtleVBhdGgoa2V5UGF0aCwgKm1fcHJpdmF0ZS5nZXQoKSwgaWRiUGFyc2VFcnJvcik7
Ci0gICAgICAgIG1fcGFyc2VFcnJvciA9IGlkYlBhcnNlRXJyb3I7Ci0gICAgfQorICAgIEFTU0VS
VChtX3ByaXZhdGUuZ2V0KCkpOworICAgIEFTU0VSVChtX3ByaXZhdGUtPnR5cGUoKSA9PSBJREJL
ZXlQYXRoOjpTdHJpbmdUeXBlKTsKKyAgICByZXR1cm4gbV9wcml2YXRlLT5zdHJpbmcoKTsKIH0K
IAotaW50IFdlYklEQktleVBhdGg6OnBhcnNlRXJyb3IoKSBjb25zdAorV2ViSURCS2V5UGF0aDo6
V2ViSURCS2V5UGF0aChjb25zdCBXZWJJREJLZXlQYXRoJiBrZXlQYXRoKQorICAgIDogbV9wcml2
YXRlKG5ldyBJREJLZXlQYXRoKGtleVBhdGgpKQogewotICAgIHJldHVybiBtX3BhcnNlRXJyb3I7
CisgICAgQVNTRVJUKG1fcHJpdmF0ZS5nZXQoKSk7CiB9CiAKLXZvaWQgV2ViSURCS2V5UGF0aDo6
YXNzaWduKGNvbnN0IFdlYklEQktleVBhdGgmIGtleVBhdGgpCitXZWJJREJLZXlQYXRoOjpXZWJJ
REJLZXlQYXRoKGNvbnN0IFdlYkNvcmU6OklEQktleVBhdGgmIHZhbHVlKQorICAgIDogbV9wcml2
YXRlKG5ldyBJREJLZXlQYXRoKHZhbHVlKSkKIHsKLSAgICBtX3BhcnNlRXJyb3IgPSBrZXlQYXRo
Lm1fcGFyc2VFcnJvcjsKLSAgICBpZiAoa2V5UGF0aC5tX3ByaXZhdGUuZ2V0KCkpCi0gICAgICAg
IG1fcHJpdmF0ZS5yZXNldChuZXcgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+KGtleVBhdGgpKTsK
LSAgICBlbHNlCi0gICAgICAgIG1fcHJpdmF0ZS5yZXNldCgwKTsKKyAgICBBU1NFUlQobV9wcml2
YXRlLmdldCgpKTsKIH0KIAotdm9pZCBXZWJJREJLZXlQYXRoOjpyZXNldCgpCitXZWJJREJLZXlQ
YXRoJiBXZWJJREJLZXlQYXRoOjpvcGVyYXRvcj0oY29uc3QgV2ViQ29yZTo6SURCS2V5UGF0aCYg
dmFsdWUpCiB7Ci0gICAgbV9wcml2YXRlLnJlc2V0KDApOworICAgIEFTU0VSVChtX3ByaXZhdGUu
Z2V0KCkpOworICAgIG1fcHJpdmF0ZS5yZXNldChuZXcgSURCS2V5UGF0aCh2YWx1ZSkpOworICAg
IHJldHVybiAqdGhpczsKIH0KIAotV2ViSURCS2V5UGF0aDo6b3BlcmF0b3IgY29uc3QgV1RGOjpW
ZWN0b3I8V1RGOjpTdHJpbmcsIDA+JigpIGNvbnN0CitXZWJJREJLZXlQYXRoOjpvcGVyYXRvciBj
b25zdCBXZWJDb3JlOjpJREJLZXlQYXRoJigpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1fcHJpdmF0
ZS5nZXQoKSk7Ci0gICAgcmV0dXJuICptX3ByaXZhdGUuZ2V0KCk7CisgICAgcmV0dXJuICoobV9w
cml2YXRlLmdldCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmNwcAppbmRleCA2
MjRhNGU1YjM2NjBkOWI5NzRhN2QwNDgyYjI0NjkxZDFmMTExNDAxLi5hNWI1YTE0NDUwOGNhZWEx
ODkyMDcxMjBlNDliZDZjMWYzMGE2MzE0IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNp
bmNsdWRlICJET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiSURCQ2FsbGJhY2tzUHJveHkuaCIK
ICNpbmNsdWRlICJJREJJbmRleEJhY2tlbmRJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJJREJLZXlQ
YXRoLmgiCiAjaW5jbHVkZSAiSURCS2V5UmFuZ2UuaCIKICNpbmNsdWRlICJJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJXZWJJREJJbmRleEltcGwuaCIKQEAgLTU5
LDEzICs2MCw2IEBAIFdlYlN0cmluZyBXZWJJREJPYmplY3RTdG9yZUltcGw6Om5hbWUoKSBjb25z
dAogCiBXZWJJREJLZXlQYXRoIFdlYklEQk9iamVjdFN0b3JlSW1wbDo6a2V5UGF0aCgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIFdlYklEQktleVBhdGgobV9vYmplY3RTdG9yZS0+a2V5UGF0aCgpKTsK
LX0KLQotLy8gRklYTUU6IFJlbW92ZSB0aGlzIG1ldGhvZCBvbmNlIGNhbGxlcnMgYXJlIHVwZGF0
ZWQuCi0vLyBodHRwOi8vd2Via2l0Lm9yZy9iLzg0MjA3Ci1XZWJTdHJpbmcgV2ViSURCT2JqZWN0
U3RvcmVJbXBsOjprZXlQYXRoU3RyaW5nKCkgY29uc3QKLXsKICAgICByZXR1cm4gbV9vYmplY3RT
dG9yZS0+a2V5UGF0aCgpOwogfQogCkBAIC05OSw3ICs5Myw3IEBAIHZvaWQgV2ViSURCT2JqZWN0
U3RvcmVJbXBsOjpjbGVhcihXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgY29uc3QgV2ViSURC
VHJhbnNhCiAgICAgbV9vYmplY3RTdG9yZS0+Y2xlYXIoSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0
ZShhZG9wdFB0cihjYWxsYmFja3MpKSwgdHJhbnNhY3Rpb24uZ2V0SURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlKCksIGVjKTsKIH0KIAotV2ViSURCSW5kZXgqIFdlYklEQk9iamVjdFN0b3Jl
SW1wbDo6Y3JlYXRlSW5kZXgoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcm
IGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnksIGNvbnN0IFdlYklEQlRyYW5z
YWN0aW9uJiB0cmFuc2FjdGlvbiwgV2ViRXhjZXB0aW9uQ29kZSYgZWMpCitXZWJJREJJbmRleCog
V2ViSURCT2JqZWN0U3RvcmVJbXBsOjpjcmVhdGVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUs
IGNvbnN0IFdlYklEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50
cnksIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgV2ViRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7CiAgICAgUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gaW5kZXggPSBt
X29iamVjdFN0b3JlLT5jcmVhdGVJbmRleChuYW1lLCBrZXlQYXRoLCB1bmlxdWUsIG11bHRpRW50
cnksIHRyYW5zYWN0aW9uLmdldElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSgpLCBlYyk7
CiAgICAgaWYgKCFpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklEQk9iamVjdFN0b3JlSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SURCT2JqZWN0U3RvcmVJbXBsLmgKaW5kZXggZWUzYjIyMmFjYzJjNjYzN2FlNzRiZGE0ZTRjOGFi
ODYyZmY3ZTg3Zi4uMzM2ZGJjMWU3YzljODZhZGMwYTFkNzc0NzFhNjgxYzZmMWY1MTEyMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBs
LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBs
LmgKQEAgLTQ3LDkgKzQ3LDYgQEAgcHVibGljOgogCiAgICAgV2ViU3RyaW5nIG5hbWUoKSBjb25z
dDsKICAgICBXZWJJREJLZXlQYXRoIGtleVBhdGgoKSBjb25zdDsKLSAgICAvLyBGSVhNRTogUmVt
b3ZlIHRoaXMgbWV0aG9kIG9uY2UgY2FsbGVycyBhcmUgdXBkYXRlZC4KLSAgICAvLyBodHRwOi8v
d2Via2l0Lm9yZy9iLzg0MjA3Ci0gICAgV2ViU3RyaW5nIGtleVBhdGhTdHJpbmcoKSBjb25zdDsK
ICAgICBXZWJET01TdHJpbmdMaXN0IGluZGV4TmFtZXMoKSBjb25zdDsKIAogICAgIHZvaWQgZ2V0
KGNvbnN0IFdlYklEQktleVJhbmdlJiwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJh
bnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7CkBAIC01OCwxMCArNTUsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBkZWxldGVGdW5jdGlvbihjb25zdCBXZWJJREJLZXlSYW5nZSYsIFdlYklEQkNh
bGxiYWNrcyosIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOwog
ICAgIHZvaWQgY2xlYXIoV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24m
LCBXZWJFeGNlcHRpb25Db2RlJik7CiAKLSAgICAvLyBGSVhNRTogUmVtb3ZlIFdlYlN0cmluZyBr
ZXlQYXRoIG92ZXJsb2FkIG9uY2UgY2FsbGVycyBhcmUgdXBkYXRlZC4KLSAgICAvLyBodHRwOi8v
d2Via2l0Lm9yZy9iLzg0MjA3Ci0gICAgV2ViSURCSW5kZXgqIGNyZWF0ZUluZGV4KGNvbnN0IFdl
YlN0cmluZyYsIGNvbnN0IFdlYlN0cmluZyYsIGJvb2wsIGJvb2wsIGNvbnN0IFdlYklEQlRyYW5z
YWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOwotICAgIFdlYklEQkluZGV4KiBjcmVhdGVJbmRl
eChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYklEQktleVBhdGgmIGtleVBhdGgsIGJv
b2wgdW5pcXVlLCBib29sIG11bHRpRW50cnksIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFu
c2FjdGlvbiwgV2ViRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGNyZWF0ZUluZGV4KG5hbWUs
IGtleVBhdGguc3RyaW5nKCksIHVuaXF1ZSwgbXVsdGlFbnRyeSwgdHJhbnNhY3Rpb24sIGVjKTsg
fQorICAgIFdlYklEQkluZGV4KiBjcmVhdGVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNv
bnN0IFdlYklEQktleVBhdGgmLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5LCBjb25zdCBX
ZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKICAgICBXZWJJREJJbmRleCog
aW5kZXgoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBXZWJFeGNlcHRpb25Db2RlJik7CiAgICAgdm9p
ZCBkZWxldGVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYklEQlRyYW5zYWN0
aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0lEQkJpbmRpbmdVdGlsaXRpZXNUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvSURCQmluZGluZ1V0aWxpdGllc1Rlc3QuY3BwCmluZGV4IGQ2MDI5NWE1
ZmI0M2U1MzM2MWMwNzI2MTJhNWU0Mzg1OGU2NmMyOTkuLmMxMzUxODUwZDg3OGM2MDViNTY2NGM2
NzI0MDUzYjRjN2IwYjEzOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvSURCQmluZGluZ1V0aWxpdGllc1Rlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvSURCQmluZGluZ1V0aWxpdGllc1Rlc3QuY3BwCkBAIC00MSwxMCArNDEsOCBAQCBu
YW1lc3BhY2UgewogCiBQYXNzUmVmUHRyPElEQktleT4gY2hlY2tLZXlGcm9tVmFsdWVBbmRLZXlQ
YXRoSW50ZXJuYWwoU2VyaWFsaXplZFNjcmlwdFZhbHVlKiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBr
ZXlQYXRoKQogewotICAgIFZlY3RvcjxTdHJpbmc+IGlkYktleVBhdGg7Ci0gICAgSURCS2V5UGF0
aFBhcnNlRXJyb3IgcGFyc2VFcnJvcjsKLSAgICBJREJQYXJzZUtleVBhdGgoa2V5UGF0aCwgaWRi
S2V5UGF0aCwgcGFyc2VFcnJvcik7Ci0gICAgRVhQRUNUX0VRKElEQktleVBhdGhQYXJzZUVycm9y
Tm9uZSwgcGFyc2VFcnJvcik7CisgICAgSURCS2V5UGF0aCBpZGJLZXlQYXRoKGtleVBhdGgpOwor
ICAgIEVYUEVDVF9UUlVFKGlkYktleVBhdGguaXNWYWxpZCgpKTsKICAgICByZXR1cm4gY3JlYXRl
SURCS2V5RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtleVBhdGgodmFsdWUsIGlkYktleVBhdGgpOwog
fQogCkBAIC01NiwxMCArNTQsOCBAQCB2b2lkIGNoZWNrS2V5UGF0aE51bGxWYWx1ZShTZXJpYWxp
emVkU2NyaXB0VmFsdWUqIHZhbHVlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpCiAKIFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBpbmplY3RLZXkoUGFzc1JlZlB0cjxJREJLZXk+IGtl
eSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBjb25zdCBTdHJpbmcm
IGtleVBhdGgpCiB7Ci0gICAgVmVjdG9yPFN0cmluZz4gaWRiS2V5UGF0aDsKLSAgICBJREJLZXlQ
YXRoUGFyc2VFcnJvciBwYXJzZUVycm9yOwotICAgIElEQlBhcnNlS2V5UGF0aChrZXlQYXRoLCBp
ZGJLZXlQYXRoLCBwYXJzZUVycm9yKTsKLSAgICBFWFBFQ1RfRVEoSURCS2V5UGF0aFBhcnNlRXJy
b3JOb25lLCBwYXJzZUVycm9yKTsKKyAgICBJREJLZXlQYXRoIGlkYktleVBhdGgoa2V5UGF0aCk7
CisgICAgRVhQRUNUX1RSVUUoaWRiS2V5UGF0aC5pc1ZhbGlkKCkpOwogICAgIHJldHVybiBpbmpl
Y3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKGtleSwgdmFsdWUsIGlkYktleVBhdGgpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQktleVBhdGhUZXN0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCS2V5UGF0aFRlc3QuY3BwCmlu
ZGV4IGUyZmRhZWJjMmYxNzg3ZThiNmQ4ZTc5ZTZhZjYyYTFmNzUwNWVkODQuLjdkNjYyYzAwOWNj
ODYyZTUwMDYxOGRmZmRlZmU4YTI0NjU0MzQxYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvSURCS2V5UGF0aFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvSURCS2V5UGF0aFRlc3QuY3BwCkBAIC0zNyw2ICszNywxMCBAQCBuYW1lc3Bh
Y2UgewogCiB2b2lkIGNoZWNrS2V5UGF0aChjb25zdCBTdHJpbmcmIGtleVBhdGgsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBleHBlY3RlZCwgaW50IHBhcnNlckVycm9yKQogeworICAgIElEQktleVBh
dGggaWRiS2V5UGF0aChrZXlQYXRoKTsKKyAgICBBU1NFUlRfRVEoaWRiS2V5UGF0aC50eXBlKCks
IElEQktleVBhdGg6OlN0cmluZ1R5cGUpOworICAgIEFTU0VSVF9FUShpZGJLZXlQYXRoLmlzVmFs
aWQoKSwgKHBhcnNlckVycm9yID09IElEQktleVBhdGhQYXJzZUVycm9yTm9uZSkpOworCiAgICAg
SURCS2V5UGF0aFBhcnNlRXJyb3IgZXJyb3I7CiAgICAgVmVjdG9yPFN0cmluZz4ga2V5UGF0aEVs
ZW1lbnRzOwogICAgIElEQlBhcnNlS2V5UGF0aChrZXlQYXRoLCBrZXlQYXRoRWxlbWVudHMsIGVy
cm9yKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139691</attachid>
            <date>2012-05-01 15:04:44 -0700</date>
            <delta_ts>2012-05-03 11:04:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85298-20120501150443.patch</filename>
            <type>text/plain</type>
            <size>107049</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1NzMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzgyZWI5NTIzYzZlMjNh
YmMwMmE3ODJmMDMyNzAyNTgyMmU2ZGM3ZS4uMDc5OGYwMTY5ZWM4ZDlmOTdmOTcxOTgxYWRlNGIx
Njc5OTRmNmQ1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNCBAQAorMjAxMi0wNS0wMSAgSm9z
aHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogU3Rv
cmUga2V5IHBhdGhzIGluIElEQktleVBhdGggdHlwZSBpbnN0ZWFkIG9mIFN0cmluZworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODUyOTgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNaWdyYXRlIGZyb20gc3Rv
cmluZyBrZXkgcGF0aHMgYXMgKG51bGxhYmxlKSBTdHJpbmdzIHRvIGEgZGVkaWNhdGVkIElEQktl
eVBhdGgKKyAgICAgICAgdHlwZS4gUHJlcCB3b3JrIGZvciBzdXBwb3J0aW5nIGFycmF5LXR5cGUg
a2V5IHBhdGhzOiBodHRwOi8vd2Via2l0Lm9yZy9iLzg0MjA3CisKKyAgICAgICAgTm8gbmV3IHRl
c3RzIC0gbm8gZnVuY3Rpb25hbCBjaGFuZ2VzLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCQW55LmNwcDogQWxsb3cgSURCQW55IHRvIHlpZWxkIERPTVN0cmluZ3MuCisgICAgICAg
IChXZWJDb3JlOjpJREJBbnk6OmNyZWF0ZVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkFueTo6c3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkFu
eTo6c2V0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJBbnkuaDoKKyAgICAgICAg
KElEQkFueSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmg6
IFN3aXRjaCBmcm9tIFN0cmluZyB0byBJREJLZXlQYXRoLgorICAgICAgICAoSURCQmFja2luZ1N0
b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHA6IFN3aXRj
aCBmcm9tIFN0cmluZyB0byBJREJLZXlQYXRoLgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2U6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUJhY2tlbmRJbXBsLmNwcDogU3dpdGNoIGZyb20gU3RyaW5nIHRvIElEQktleVBhdGgu
CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGVPYmplY3RT
dG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpsb2FkT2Jq
ZWN0U3RvcmVzKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tl
bmRJbXBsLmg6IFN3aXRjaCBmcm9tIFN0cmluZyB0byBJREJLZXlQYXRoLgorICAgICAgICAoSURC
RGF0YWJhc2VCYWNrZW5kSW1wbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmg6IFN3aXRjaCBmcm9tIFN0cmluZyB0byBJREJLZXlQYXRo
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZh
Y2UpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4Lmg6IFN3aXRjaCBmcm9t
IFN0cmluZyB0byBJREJBbnkgKHZpYSBJREJLZXlQYXRoKS4KKyAgICAgICAgKFdlYkNvcmU6OklE
QkluZGV4OjprZXlQYXRoKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5p
ZGw6IFN3aXRjaCBmcm9tIERPTVN0cmluZz8gdG8gSURCQW55LgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwuY3BwOiBTd2l0Y2ggZnJvbSBTdHJpbmcgdG8g
SURCS2V5UGF0aC4KKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEltcGw6OklEQklu
ZGV4QmFja2VuZEltcGwpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFj
a2VuZEltcGwuaDogU3dpdGNoIGZyb20gU3RyaW5nIHRvIElEQktleVBhdGguCisgICAgICAgIChX
ZWJDb3JlOjpJREJJbmRleEJhY2tlbmRJbXBsOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
SURCSW5kZXhCYWNrZW5kSW1wbDo6a2V5UGF0aCk6CisgICAgICAgIChJREJJbmRleEJhY2tlbmRJ
bXBsKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbnRlcmZh
Y2UuaDogU3dpdGNoIGZyb20gU3RyaW5nIHRvIElEQktleVBhdGguCisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKElEQkluZGV4QmFja2VuZEludGVyZmFjZSk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCS2V5UGF0aC5jcHA6IE5vbi10cml2aWFsIG1ldGhvZCBpbXBsZW1lbnRh
dGlvbnMuCisgICAgICAgIChXZWJDb3JlOjpJREJLZXlQYXRoOjppc1ZhbGlkKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5UGF0aDo6b3BlcmF0b3IgUGFzc1Jl
ZlB0cjxJREJBbnk+KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRoLmg6
IEludHJvZHVjZSBJREJLZXlQYXRoIHR5cGUuCisgICAgICAgIChJREJLZXlQYXRoKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQktleVBhdGg6OklEQktleVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6
SURCS2V5UGF0aDo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlQYXRoOjphcnJheSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlQYXRoOjpzdHJpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCS2V5UGF0aDo6aXNOdWxsKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGhCYWNrZW5kSW1wbC5jcHA6IFN3aXRjaCBmcm9tIFN0
cmluZyB0byBJREJLZXlQYXRoLgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5UGF0aEJhY2tlbmRJ
bXBsOjpjcmVhdGVJREJLZXlzRnJvbVNlcmlhbGl6ZWRWYWx1ZXNBbmRLZXlQYXRoKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQktleVBhdGhCYWNrZW5kSW1wbDo6aW5qZWN0SURCS2V5SW50b1Nlcmlh
bGl6ZWRWYWx1ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UGF0aEJhY2tl
bmRJbXBsLmg6IFN3aXRjaCBmcm9tIFN0cmluZyB0byBJREJLZXlQYXRoLgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChJREJLZXlQYXRoQmFja2VuZEltcGwpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwOiBTd2l0Y2ggZnJvbSBTdHJp
bmcgdG8gSURCS2V5UGF0aCwgd2l0aCBiYWNrLWNvbXBhdC4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6cHV0SURCS2V5UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpJREJM
ZXZlbERCQmFja2luZ1N0b3JlOjpnZXRPYmplY3RTdG9yZXMpOgorICAgICAgICAoV2ViQ29yZTo6
SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0SW5kZXhlcyk6CisgICAgICAgIChXZWJD
b3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoSURCTGV2
ZWxEQkJhY2tpbmdTdG9yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxE
QkNvZGluZy5jcHA6IE5ldyBjb2Rpbmcgc2NoZW1lIGZvciBrZXkgcGF0aHMgKHdpdGggYmFjay1j
b21wYXQpLgorICAgICAgICAoSURCTGV2ZWxEQkNvZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJMZXZlbERCQ29kaW5nOjplbmNvZGVJREJLZXlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkxldmVsREJDb2Rpbmc6OmRlY29kZUlEQktleVBhdGgpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuaDogQWRkIGtleS1wYXRoLXNwZWNpZmljIG1ldGhvZHMu
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKElEQkxldmVsREJDb2RpbmcpOgorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcDogU3dpdGNoIGZyb20gU3Ry
aW5nIHRvIElEQktleVBhdGguCisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6a2V5
UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmUuaDogU3dpdGNoIGZyb20gU3RyaW5nIHRvIElEQkFueSAodmlhIElEQktleVBhdGgpLgor
ICAgICAgICAoSURCT2JqZWN0U3RvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
Qk9iamVjdFN0b3JlLmlkbDogU3dpdGNoIGZyb20gRE9NU3RyaW5nPyB0byBJREJBbnkuCisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHA6IFN3
aXRjaCBmcm9tIFN0cmluZyB0byBJREJLZXlQYXRoLgorICAgICAgICAoV2ViQ29yZTo6SURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbDo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCk6CisgICAgICAg
IChXZWJDb3JlOjpmZXRjaEtleUZyb21LZXlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OmluamVj
dEtleUludG9LZXlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGw6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGw6OmxvYWRJbmRleGVzKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsLmg6IFN3aXRjaCBmcm9tIFN0cmluZyB0byBJREJLZXlQYXRo
LgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmtleVBhdGgpOgor
ICAgICAgICAoSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmg6IFN3aXRjaCBmcm9tIFN0
cmluZyB0byBJREJLZXlQYXRoLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RpY3Rpb25h
cnkuY3BwOiBBZGQgZ2V0dGVyIGZvciBET01TdHJpbmdbXSAoaS5lLiBWZWN0b3I8U3RyaW5nPikK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeTo6Z2V0KToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9EaWN0aW9uYXJ5Lmg6CisgICAgICAgIChEaWN0aW9uYXJ5
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcDogU3dpdGNo
IGZyb20gU3RyaW5nIHRvIElEQktleVBhdGguCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJREJL
ZXlGcm9tU2VyaWFsaXplZFZhbHVlQW5kS2V5UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjppbmpl
Y3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9JREJC
aW5kaW5nVXRpbGl0aWVzLmg6IFN3aXRjaCBmcm9tIFN0cmluZyB0byBJREJLZXlQYXRoLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SURCQW55Q3Vz
dG9tLmNwcDogU3VwcG9ydCBTdHJpbmcvRE9NU3RyaW5nLgorICAgICAgICAoV2ViQ29yZTo6dG9W
OCk6CisgICAgICAgICogZG9tL0RPTVN0cmluZ0xpc3QuaDogQWxsb3cgZWFzeSAoY29uc3QpIGFj
Y2VzcyB0byBzdHJpbmdzLgorICAgICAgICAoV2ViQ29yZTo6RE9NU3RyaW5nTGlzdDo6b3BlcmF0
b3IgY29uc3QgVmVjdG9yPFN0cmluZz4mKToKKyAgICAgICAgKERPTVN0cmluZ0xpc3QpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHA6IFRlbXBvcmFyeSBz
aGltIGZvciBub24tc3RyaW5nczogc2VlIGh0dHA6Ly93ZWJraXQub3JnL2IvODQzMDMKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9y
dC5oOiBTd2l0Y2ggZnJvbSBTdHJpbmcgdG8gSURCS2V5UGF0aC4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoUGxhdGZvcm1TdXBwb3J0KToKKyAgICAgICAgKiBzdG9yYWdlL2Nocm9taXVt
L0lEQktleVBhdGhCYWNrZW5kSW1wbC5jcHA6IFN3aXRjaCBmcm9tIFN0cmluZyB0byBJREJLZXlQ
YXRoLgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5UGF0aEJhY2tlbmRJbXBsOjpjcmVhdGVJREJL
ZXlzRnJvbVNlcmlhbGl6ZWRWYWx1ZXNBbmRLZXlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QktleVBhdGhCYWNrZW5kSW1wbDo6aW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZSk6CisK
IDIwMTItMDUtMDEgIFBoaWxpcCBSb2dlcnMgIDxwZHJAZ29vZ2xlLmNvbT4KIAogICAgICAgICBT
a2lwIGJ1aWxkaW5nIGluc3RhbmNlIHRyZWUgZm9yIGRpc2FsbG93ZWQgdGFyZ2V0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCmluZGV4IDYyNTNhMmNkZWIyMzliYTY5ZDkxYTM2NzE1YmNiMmQ1ZmFl
NDg3ODAuLjliZGRkMDkwMmJiNDBiNjQ1YWVkNzQ0NzQzOWFiYTVmOWNiNGMwODAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzIgQEAKKzIwMTItMDUtMDEgIEpvc2h1YSBC
ZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFN0b3JlIGtl
eSBwYXRocyBpbiBJREJLZXlQYXRoIHR5cGUgaW5zdGVhZCBvZiBTdHJpbmcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1Mjk4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gZnVuY3Rpb25hbCBjaGFuZ2Vz
LCBqdXN0IGZpbmlzaCBtaWdyYXRpb24gZnJvbSBTdHJpbmcgdG8gSURCS2V5UGF0aAorICAgICAg
ICBmb3Igc3RvcmluZyBrZXkgcGF0aHMsIGZvciBldmVudHVhbCBhcnJheSBzdXBwb3J0IGh0dHA6
Ly93ZWJraXQub3JnL2IvODQyMDcKKworICAgICAgICAqIHB1YmxpYy9XZWJJREJEYXRhYmFzZS5o
OiBSZW1vdmUgdGVtcG9yYXJ5IG92ZXJsb2FkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViSURCRGF0YWJhc2U6Om9iamVjdFN0b3JlTmFtZXMpOgorICAgICAgICAqIHB1
YmxpYy9XZWJJREJJbmRleC5oOiBSZW1vdmUgdGVtcG9yYXJ5IG1ldGhvZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViSURCSW5kZXg6OmtleVBhdGgpOgorICAgICAgICAqIHB1YmxpYy9XZWJJREJLZXlQ
YXRoLmg6IFJlbW92ZSBvYnNvbGV0ZSBtZXRob2RzLCB3cmFwIFdlYkNvcmU6OklEQktleVBhdGgK
KyAgICAgICAgKFdlYklEQktleVBhdGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJLZXlQYXRo
OjpXZWJJREJLZXlQYXRoKToKKyAgICAgICAgKiBwdWJsaWMvV2ViSURCT2JqZWN0U3RvcmUuaDog
UmVtb3ZlIHRlbXBvcmFyeSBtZXRob2QgYW5kIG92ZXJsb2FkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJPYmplY3RTdG9yZTo6a2V5UGF0aCk6CisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dl
YktpdFBsYXRmb3JtU3VwcG9ydC5oOiBSZW1vdmUgdGVtcG9yYXJ5IG92ZXJsb2Fkcy4KKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgICogc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwOiBXZWJJ
REJLZXlQYXRoIHZzLiBJREJLZXlQYXRoIGVudW1zLgorICAgICAgICAqIHNyYy9JREJEYXRhYmFz
ZUJhY2tlbmRQcm94eS5jcHA6IFN3aXRjaCBmcm9tIFN0cmluZyB0byBJREJLZXlQYXRoLgorICAg
ICAgICAoV2ViS2l0OjpJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6Y3JlYXRlT2JqZWN0U3RvcmUp
OgorICAgICAgICAqIHNyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oOiBTd2l0Y2ggZnJvbSBT
dHJpbmcgdG8gSURCS2V5UGF0aC4KKyAgICAgICAgKElEQkRhdGFiYXNlQmFja2VuZFByb3h5KToK
KyAgICAgICAgKiBzcmMvSURCSW5kZXhCYWNrZW5kUHJveHkuY3BwOiBTd2l0Y2ggZnJvbSBTdHJp
bmcgdG8gSURCS2V5UGF0aC4KKyAgICAgICAgKFdlYktpdDo6SURCSW5kZXhCYWNrZW5kUHJveHk6
OmtleVBhdGgpOgorICAgICAgICAqIHNyYy9JREJJbmRleEJhY2tlbmRQcm94eS5oOiBTd2l0Y2gg
ZnJvbSBTdHJpbmcgdG8gSURCS2V5UGF0aC4KKyAgICAgICAgKElEQkluZGV4QmFja2VuZFByb3h5
KToKKyAgICAgICAgKiBzcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuY3BwOiBTd2l0Y2gg
ZnJvbSBTdHJpbmcgdG8gSURCS2V5UGF0aC4KKyAgICAgICAgKFdlYktpdDo6SURCT2JqZWN0U3Rv
cmVCYWNrZW5kUHJveHk6OmtleVBhdGgpOgorICAgICAgICAoV2ViS2l0OjpJREJPYmplY3RTdG9y
ZUJhY2tlbmRQcm94eTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAqIHNyYy9JREJPYmplY3RTdG9y
ZUJhY2tlbmRQcm94eS5oOiBTd2l0Y2ggZnJvbSBTdHJpbmcgdG8gSURCS2V5UGF0aC4KKyAgICAg
ICAgKElEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5KToKKyAgICAgICAgKiBzcmMvUGxhdGZvcm1T
dXBwb3J0LmNwcDogU3dpdGNoIGZyb20gU3RyaW5nIHRvIElEQktleVBhdGguCisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybVN1cHBvcnQ6OmNyZWF0ZUlEQktleXNGcm9tU2VyaWFsaXplZFZhbHVl
c0FuZEtleVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TdXBwb3J0OjppbmplY3RJ
REJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKToKKyAgICAgICAgKiBzcmMvV2ViSURCRGF0YWJhc2VJ
bXBsLmNwcDogU3dpdGNoIGZyb20gU3RyaW5nIHRvIElEQktleVBhdGguCisgICAgICAgIChXZWJL
aXQ6OldlYklEQkRhdGFiYXNlSW1wbDo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAqIHNy
Yy9XZWJJREJEYXRhYmFzZUltcGwuaDogUmVtb3ZlIHRlbXBvcmFyeSBvdmVybG9hZC4KKyAgICAg
ICAgKFdlYklEQkRhdGFiYXNlSW1wbCk6CisgICAgICAgICogc3JjL1dlYklEQkluZGV4SW1wbC5j
cHA6IFJlbW92ZSB0ZW1wb3JhcnkgbWV0aG9kLgorICAgICAgICAqIHNyYy9XZWJJREJJbmRleElt
cGwuaDogUmVtb3ZlIHRlbXBvcmFyeSBtZXRob2QuCisgICAgICAgIChXZWJJREJJbmRleEltcGwp
OgorICAgICAgICAqIHNyYy9XZWJJREJLZXlQYXRoLmNwcDogUmVtb3ZlIG1vc3QgbG9naWM7IGp1
c3QgYSB3cmFwcGVyIGZvciBXZWJDb3JlOjpJREJLZXlQYXRoLgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJLZXlQYXRoOjp+V2ViSURCS2V5UGF0aCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQktl
eVBhdGg6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQktleVBhdGg6OmNyZWF0ZU51
bGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJLZXlQYXRoOjppc1ZhbGlkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViSURCS2V5UGF0aDo6dHlwZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJREJLZXlQYXRoOjphcnJheSk6CisgICAgICAgIChXZWJLaXQ6OldlYklE
QktleVBhdGg6OnN0cmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQktleVBhdGg6OldlYklE
QktleVBhdGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJLZXlQYXRoOjpvcGVyYXRvcj0pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJREJLZXlQYXRoOjpvcGVyYXRvciBjb25zdCBXZWJDb3JlOjpJ
REJLZXlQYXRoJik6CisgICAgICAgICogc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5jcHA6IFJl
bW92ZSB0ZW1wb3JhcnkgbWV0aG9kIGFuZCBvdmVybG9hZC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
SURCT2JqZWN0U3RvcmVJbXBsOjprZXlQYXRoKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCT2Jq
ZWN0U3RvcmVJbXBsOjpjcmVhdGVJbmRleCk6CisgICAgICAgICogc3JjL1dlYklEQk9iamVjdFN0
b3JlSW1wbC5oOiBSZW1vdmUgdGVtcG9yYXJ5IG1ldGhvZCBhbmQgb3ZlcmxvYWQuCisgICAgICAg
IChXZWJJREJPYmplY3RTdG9yZUltcGwpOgorICAgICAgICAqIHRlc3RzL0lEQkJpbmRpbmdVdGls
aXRpZXNUZXN0LmNwcDogVXNlIElEQktleVBhdGguCisgICAgICAgIChXZWJDb3JlOjpjaGVja0tl
eUZyb21WYWx1ZUFuZEtleVBhdGhJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjppbmplY3RL
ZXkpOgorICAgICAgICAqIHRlc3RzL0lEQktleVBhdGhUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNoZWNrS2V5UGF0aCk6IFRlc3QgSURCS2V5UGF0aCB2YWxpZGl0eS4KKwogMjAxMi0wNS0w
MSAgSnVsaWVuIENoYWZmcmFpeCAgPGpjaGFmZnJhaXhAd2Via2l0Lm9yZz4KIAogICAgICAgICBX
ZWJLaXQgdGVzdCBSZW5kZXJUYWJsZUNlbGxEZWF0aFRlc3QuQ2FuU2V0Um93IGlzIGZhaWxpbmcg
YXMgb2YgcjExNTcwNQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQW55LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5j
cHAKaW5kZXggNTdhNDA2ZTJiYjA3YjBiZDZkMjVkZGJiODFiYzY0ZmU5ZWFhMDZhZC4uMzAwMjhj
Y2ZkZmNlOTU5NjA0MGFjMDNlZmE0OWZhYjI0MDcwMmUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJBbnkuY3BwCkBAIC00OSw2ICs0OSwxMyBAQCBQYXNzUmVmUHRy
PElEQkFueT4gSURCQW55OjpjcmVhdGVOdWxsKCkKICAgICByZXR1cm4gaWRiQW55LnJlbGVhc2Uo
KTsKIH0KIAorUGFzc1JlZlB0cjxJREJBbnk+IElEQkFueTo6Y3JlYXRlU3RyaW5nKGNvbnN0IFN0
cmluZyYgdmFsdWUpCit7CisgICAgUmVmUHRyPElEQkFueT4gaWRiQW55ID0gYWRvcHRSZWYobmV3
IElEQkFueSgpKTsKKyAgICBpZGJBbnktPnNldCh2YWx1ZSk7CisgICAgcmV0dXJuIGlkYkFueS5y
ZWxlYXNlKCk7Cit9CisKIElEQkFueTo6SURCQW55KCkKICAgICA6IG1fdHlwZShVbmRlZmluZWRU
eXBlKQogewpAQCAtMTE4LDYgKzEyNSwxMiBAQCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gSURCQW55OjpzZXJpYWxpemVkU2NyaXB0VmFsdWUoKQogICAgIHJldHVybiBtX3Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTsKIH0KIAorY29uc3QgU3RyaW5nJiBJREJBbnk6OnN0cmluZygpCit7
CisgICAgQVNTRVJUKG1fdHlwZSA9PSBTdHJpbmdUeXBlKTsKKyAgICByZXR1cm4gbV9zdHJpbmc7
Cit9CisKIHZvaWQgSURCQW55OjpzZXROdWxsKCkKIHsKICAgICBBU1NFUlQobV90eXBlID09IFVu
ZGVmaW5lZFR5cGUpOwpAQCAtMTk0LDYgKzIwNywxMyBAQCB2b2lkIElEQkFueTo6c2V0KFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSkKICAgICBtX3NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSA9IHZhbHVlOwogfQogCit2b2lkIElEQkFueTo6c2V0KGNvbnN0IFN0cmluZyYgdmFs
dWUpCit7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBVbmRlZmluZWRUeXBlKTsKKyAgICBtX3R5cGUg
PSBTdHJpbmdUeXBlOworICAgIG1fc3RyaW5nID0gdmFsdWU7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJBbnkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFu
eS5oCmluZGV4IDZiZWRhNTg4ODA4NGJjMjIxYTNkMThjNjAzNjQ2NDY0MmRjYTdlNDYuLjkzZWIy
NDAxZGFhYjhjODY2NmU2ODQ2NTAxZDUxYjkxMDY5YWFiZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKIAorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTQ5LDYgKzUwLDcgQEAgY2xhc3MgSURCQW55IDogcHVibGlj
IFJlZkNvdW50ZWQ8SURCQW55PiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SURC
QW55PiBjcmVhdGVJbnZhbGlkKCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQW55PiBjcmVh
dGVOdWxsKCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQW55PiBjcmVhdGVTdHJpbmcoY29u
c3QgU3RyaW5nJik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxJREJBbnk+IGNyZWF0ZShUKiBpZGJPYmplY3QpCiAgICAgewpAQCAtNzcsNyArNzksOCBA
QCBwdWJsaWM6CiAgICAgICAgIElEQktleVR5cGUsCiAgICAgICAgIElEQk9iamVjdFN0b3JlVHlw
ZSwKICAgICAgICAgSURCVHJhbnNhY3Rpb25UeXBlLAotICAgICAgICBTZXJpYWxpemVkU2NyaXB0
VmFsdWVUeXBlCisgICAgICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZVR5cGUsCisgICAgICAgIFN0
cmluZ1R5cGUsCiAgICAgfTsKIAogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlw
ZTsgfQpAQCAtOTIsNiArOTUsNyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxJREJPYmplY3RT
dG9yZT4gaWRiT2JqZWN0U3RvcmUoKTsKICAgICBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBp
ZGJUcmFuc2FjdGlvbigpOwogICAgIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBz
ZXJpYWxpemVkU2NyaXB0VmFsdWUoKTsKKyAgICBjb25zdCBTdHJpbmcmIHN0cmluZygpOwogCiAg
ICAgLy8gU2V0IGNhbiBvbmx5IGJlIGNhbGxlZCBvbmNlLgogICAgIHZvaWQgc2V0TnVsbCgpOwpA
QCAtMTA1LDYgKzEwOSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldChQYXNzUmVmUHRyPElEQk9i
amVjdFN0b3JlPik7CiAgICAgdm9pZCBzZXQoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4pOwog
ICAgIHZvaWQgc2V0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPik7CisgICAgdm9p
ZCBzZXQoY29uc3QgU3RyaW5nJik7CiAKIHByaXZhdGU6CiAgICAgSURCQW55KCk7CkBAIC0xMjIs
NiArMTI3LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmU+IG1faWRiT2Jq
ZWN0U3RvcmU7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBtX2lkYlRyYW5zYWN0aW9uOwog
ICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1fc2VyaWFsaXplZFNjcmlwdFZhbHVl
OworICAgIFN0cmluZyBtX3N0cmluZzsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9y
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmgK
aW5kZXggZjZiYjEwYWFhYzVjODU5Mzg2OWI4NWRhYzE2N2E5Yjg0ZTA2NzU3ZC4uNTc3NzVlYjFj
ZWQ1ZmQ4NDhjZmRkYjJhNDc1ZTJhZWU1MjBmYTlkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmgKQEAgLTUyLDggKzUyLDggQEAg
cHVibGljOgogICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVJREJEYXRhYmFzZU1ldGFEYXRhKGludDY0
X3Qgcm93SWQsIGNvbnN0IFN0cmluZyYgdmVyc2lvbikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBk
ZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKIAotICAgIHZpcnR1YWwgdm9p
ZCBnZXRPYmplY3RTdG9yZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZv
dW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcywgVmVjdG9yPFN0cmluZz4mIGZvdW5k
S2V5UGF0aHMsIFZlY3Rvcjxib29sPiYgZm91bmRBdXRvSW5jcmVtZW50RmxhZ3MpID0gMDsKLSAg
ICB2aXJ0dWFsIGJvb2wgY3JlYXRlT2JqZWN0U3RvcmUoaW50NjRfdCBkYXRhYmFzZUlkLCBjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50
LCBpbnQ2NF90JiBhc3NpZ25lZE9iamVjdFN0b3JlSWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
Z2V0T2JqZWN0U3RvcmVzKGludDY0X3QgZGF0YWJhc2VJZCwgVmVjdG9yPGludDY0X3Q+JiBmb3Vu
ZElkcywgVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMsIFZlY3RvcjxJREJLZXlQYXRoPiYgZm91
bmRLZXlQYXRocywgVmVjdG9yPGJvb2w+JiBmb3VuZEF1dG9JbmNyZW1lbnRGbGFncykgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVPYmplY3RTdG9yZShpbnQ2NF90IGRhdGFiYXNlSWQsIGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCwg
aW50NjRfdCYgYXNzaWduZWRPYmplY3RTdG9yZUlkKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRl
bGV0ZU9iamVjdFN0b3JlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
KSA9IDA7CiAKICAgICBjbGFzcyBPYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXIgOiBwdWJsaWMg
UmVmQ291bnRlZDxPYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXI+IHsKQEAgLTc3LDggKzc3LDgg
QEAgcHVibGljOgogICAgIH07CiAgICAgdmlydHVhbCBib29sIGZvckVhY2hPYmplY3RTdG9yZVJl
Y29yZChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgT2JqZWN0U3Rv
cmVSZWNvcmRDYWxsYmFjayYpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBnZXRJbmRleGVzKGlu
dDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBWZWN0b3I8aW50NjRfdD4m
IGZvdW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcywgVmVjdG9yPFN0cmluZz4mIGZv
dW5kS2V5UGF0aHMsIFZlY3Rvcjxib29sPiYgZm91bmRVbmlxdWVGbGFncywgVmVjdG9yPGJvb2w+
JiBmb3VuZE11bHRpRW50cnlGbGFncykgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJbmRl
eChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgaXNVbmlxdWUsIGJvb2wgaXNNdWx0
aUVudHJ5LCBpbnQ2NF90JiBpbmRleElkKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldEluZGV4
ZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFZlY3RvcjxpbnQ2
NF90PiYgZm91bmRJZHMsIFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzLCBWZWN0b3I8SURCS2V5
UGF0aD4mIGZvdW5kS2V5UGF0aHMsIFZlY3Rvcjxib29sPiYgZm91bmRVbmlxdWVGbGFncywgVmVj
dG9yPGJvb2w+JiBmb3VuZE11bHRpRW50cnlGbGFncykgPSAwOworICAgIHZpcnR1YWwgYm9vbCBj
cmVhdGVJbmRleChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCBpc1VuaXF1ZSwgYm9vbCBp
c011bHRpRW50cnksIGludDY0X3QmIGluZGV4SWQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVs
ZXRlSW5kZXgoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0
X3QgaW5kZXhJZCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBwdXRJbmRleERhdGFGb3JSZWNvcmQo
aW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJ
ZCwgY29uc3QgSURCS2V5JiwgY29uc3QgT2JqZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyKikgPSAw
OwogICAgIHZpcnR1YWwgYm9vbCBkZWxldGVJbmRleERhdGFGb3JSZWNvcmQoaW50NjRfdCBkYXRh
YmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgT2Jq
ZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyKikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCmluZGV4IGNhNjU5MDdmYjM5MTI0N2VhNjEx
NDVhMzIyZjA4OWFjNGQ4YmY5NTMuLmZjODAzYjVhZWUxMDE3NTllYjRmMDc5YTAwYzcxN2U2ZTc3
NjlmMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZS5jcHAKQEAgLTkyLDkgKzkyLDE0IEBAIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IElE
QkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvCiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIFN0cmluZyBrZXlQYXRoOwotICAgIGJvb2wga2V5
UGF0aEV4aXN0cyA9IG9wdGlvbnMuZ2V0V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKCJrZXlQYXRo
Iiwga2V5UGF0aCk7Ci0gICAgaWYgKGtleVBhdGhFeGlzdHMgJiYgIUlEQklzVmFsaWRLZXlQYXRo
KGtleVBhdGgpKSB7CisgICAgSURCS2V5UGF0aCBrZXlQYXRoOworICAgIGlmICghb3B0aW9ucy5p
c1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIFN0cmluZyBrZXlQYXRoU3RyaW5nOworICAg
ICAgICBpZiAob3B0aW9ucy5nZXQoImtleVBhdGgiLCBrZXlQYXRoU3RyaW5nKSkKKyAgICAgICAg
ICAgIGtleVBhdGggPSBJREJLZXlQYXRoKGtleVBhdGhTdHJpbmcpOworICAgIH0KKworICAgIGlm
ICgha2V5UGF0aC5pc051bGwoKSAmJiAha2V5UGF0aC5pc1ZhbGlkKCkpIHsKICAgICAgICAgZWMg
PSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Tk9OX1RSQU5TSUVOVF9FUlI7CiAgICAgICAgIHJldHVy
biAwOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKaW5kZXggYjA1YjMyODYzZDA3MmZiNjU3
ZGNhOWM4ZDY0ZTBiODUxYWQwOTI0NS4uNTkxOTlmYzYzMmFiZjE1YWY2ZjgyNzcxNWRjYTExNzk0
NDM1YjcxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKQEAgLTEzNyw3ICsxMzcsNyBAQCBQYXNz
UmVmUHRyPERPTVN0cmluZ0xpc3Q+IElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9iamVjdFN0b3Jl
TmFtZXMoKSBjb25zdAogICAgIHJldHVybiBvYmplY3RTdG9yZU5hbWVzLnJlbGVhc2UoKTsKIH0K
IAotUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IElEQkRhdGFiYXNl
QmFja2VuZEltcGw6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZSogdHJhbnNhY3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0
cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IElEQkRhdGFiYXNlQmFja2VuZEltcGw6
OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYg
a2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2UqIHRyYW5zYWN0aW9uUHRyLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBBU1NFUlQodHJh
bnNhY3Rpb25QdHItPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpOwog
CkBAIC0zNzYsNyArMzc2LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpsb2FkT2Jq
ZWN0U3RvcmVzKCkKIHsKICAgICBWZWN0b3I8aW50NjRfdD4gaWRzOwogICAgIFZlY3RvcjxTdHJp
bmc+IG5hbWVzOwotICAgIFZlY3RvcjxTdHJpbmc+IGtleVBhdGhzOworICAgIFZlY3RvcjxJREJL
ZXlQYXRoPiBrZXlQYXRoczsKICAgICBWZWN0b3I8Ym9vbD4gYXV0b0luY3JlbWVudEZsYWdzOwog
ICAgIG1fYmFja2luZ1N0b3JlLT5nZXRPYmplY3RTdG9yZXMobV9pZCwgaWRzLCBuYW1lcywga2V5
UGF0aHMsIGF1dG9JbmNyZW1lbnRGbGFncyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaAppbmRleCAxMDg2
ZWIxNmViODdkMTlmMDI4ZTNmNGM4YzQ3YjkwNWQ4Njc4ZjA1Li4zMzE4ZTJiZjE4NDJmZWY2YzFi
MzdkODBmMjYwYmIyMGU1NTFiMzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCkBAIC02NSw3ICs2NSw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyB2ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4g
bV92ZXJzaW9uOyB9CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVj
dFN0b3JlTmFtZXMoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJPYmplY3RT
dG9yZUJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVPYmplY3RTdG9yZShj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQs
IElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2
b2lkIHNldFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJik7
CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4g
dHJhbnNhY3Rpb24oRE9NU3RyaW5nTGlzdCogb2JqZWN0U3RvcmVOYW1lcywgdW5zaWduZWQgc2hv
cnQgbW9kZSwgRXhjZXB0aW9uQ29kZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaAppbmRl
eCA1NmU4ZjJkYmI2NDJhYWViMTE2Njg5YzU5OTc0ODExNDM0NTRiNjI5Li5lMDcyYTBmMzk1OWQ3
MGQ1MWE1MGMyNmIxZWIyMTUyMGM1OTZlYjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2Uu
aApAQCAtMzgsNiArMzgsNyBAQCBjbGFzcyBET01TdHJpbmdMaXN0OwogY2xhc3MgRnJhbWU7CiBj
bGFzcyBJREJDYWxsYmFja3M7CiBjbGFzcyBJREJEYXRhYmFzZUNhbGxiYWNrczsKK2NsYXNzIElE
QktleVBhdGg7CiBjbGFzcyBJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U7CiBjbGFzcyBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U7CiAKQEAgLTU1LDcgKzU2LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgU3RyaW5nIHZlcnNpb24oKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMoKSBjb25zdCA9IDA7CiAK
LSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBj
cmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0
aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBF
eGNlcHRpb25Db2RlJikgPSAwOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgSURCS2V5UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCwgSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVs
ZXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWZXJz
aW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNz
UmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2Fj
dGlvbihET01TdHJpbmdMaXN0KiBzdG9yZU5hbWVzLCB1bnNpZ25lZCBzaG9ydCBtb2RlLCBFeGNl
cHRpb25Db2RlJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCSW5kZXguaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQklu
ZGV4LmgKaW5kZXggZWJiYmY5NmFhYTUwNTY3YmM0NjBkZDZkZGU4MzljNjJiN2E4Y2NiZS4uYzk5
NDA0YWRiOWJiODYyNGExNjZhMDJkMmQ1NzA2MWIzNzk2MjdkZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNs
dWRlICJJREJDdXJzb3IuaCIKICNpbmNsdWRlICJJREJJbmRleEJhY2tlbmRJbnRlcmZhY2UuaCIK
KyNpbmNsdWRlICJJREJLZXlQYXRoLmgiCiAjaW5jbHVkZSAiSURCS2V5UmFuZ2UuaCIKICNpbmNs
dWRlICJJREJSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKQEAgLTUwLDcg
KzUxLDcgQEAgcHVibGljOgogICAgIC8vIEltcGxlbWVudCB0aGUgSURMCiAgICAgU3RyaW5nIG5h
bWUoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmQtPm5hbWUoKTsgfQogICAgIElEQk9iamVjdFN0
b3JlKiBvYmplY3RTdG9yZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0U3RvcmUuZ2V0KCk7IH0K
LSAgICBTdHJpbmcga2V5UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZC0+a2V5UGF0aCgp
OyB9CisgICAgUGFzc1JlZlB0cjxJREJBbnk+IGtleVBhdGgoKSBjb25zdCB7IHJldHVybiBtX2Jh
Y2tlbmQtPmtleVBhdGgoKTsgfQogICAgIGJvb2wgdW5pcXVlKCkgY29uc3QgeyByZXR1cm4gbV9i
YWNrZW5kLT51bmlxdWUoKTsgfQogICAgIGJvb2wgbXVsdGlFbnRyeSgpIGNvbnN0IHsgcmV0dXJu
IG1fYmFja2VuZC0+bXVsdGlFbnRyeSgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkluZGV4LmlkbAppbmRleCBiMjNlNTVhY2Q2MzJjZjI2ZTNhN2E2NTg1MjRk
ZjNiYjMxZTJkN2IxLi41MjY5ZmRjZDNlODE5NmJiNjg1NmE3ZTQ5YWVlZTQ2NjBlNjQ2YzhlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaWRsCkBAIC0z
MCw3ICszMCw3IEBAIG1vZHVsZSBzdG9yYWdlIHsKICAgICBdIElEQkluZGV4IHsKICAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBuYW1lOwogICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgSURCT2JqZWN0U3RvcmUgb2JqZWN0U3RvcmU7Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBET01TdHJpbmcga2V5UGF0aDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIElEQkFu
eSBrZXlQYXRoOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiB1bmlxdWU7CiAg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIG11bHRpRW50cnk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1w
bC5jcHAKaW5kZXggNjNkNDg0MTQ3ODQwZjY4OTUzYmEzNDUwN2QwZWZjYTc5MWU4ZmQ2Ny4uOGM1
MTFlZjM1NGM1NmZkNGE5MjRmYmU5MmIxN2NlYTNiYjIxZTIwOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAK
QEAgLTQxLDcgKzQxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1JREJJbmRleEJhY2tl
bmRJbXBsOjpJREJJbmRleEJhY2tlbmRJbXBsKElEQkJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3Jl
LCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwqIG9i
amVjdFN0b3JlQmFja2VuZCwgaW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIHN0b3JlTmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9v
bCBtdWx0aUVudHJ5KQorSURCSW5kZXhCYWNrZW5kSW1wbDo6SURCSW5kZXhCYWNrZW5kSW1wbChJ
REJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKiBvYmplY3RTdG9yZUJhY2tlbmQsIGludDY0X3QgaWQs
IGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBzdG9yZU5hbWUsIGNvbnN0IElEQktl
eVBhdGgmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnkpCiAgICAgOiBtX2Jh
Y2tpbmdTdG9yZShiYWNraW5nU3RvcmUpCiAgICAgLCBtX2RhdGFiYXNlSWQoZGF0YWJhc2VJZCkK
ICAgICAsIG1fb2JqZWN0U3RvcmVCYWNrZW5kKG9iamVjdFN0b3JlQmFja2VuZCkKQEAgLTU0LDcg
KzU0LDcgQEAgSURCSW5kZXhCYWNrZW5kSW1wbDo6SURCSW5kZXhCYWNrZW5kSW1wbChJREJCYWNr
aW5nU3RvcmUqIGJhY2tpbmdTdG9yZSwgaW50NjRfdAogewogfQogCi1JREJJbmRleEJhY2tlbmRJ
bXBsOjpJREJJbmRleEJhY2tlbmRJbXBsKElEQkJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlLCBp
bnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwqIG9iamVj
dFN0b3JlQmFja2VuZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHN0b3JlTmFt
ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5KQor
SURCSW5kZXhCYWNrZW5kSW1wbDo6SURCSW5kZXhCYWNrZW5kSW1wbChJREJCYWNraW5nU3RvcmUq
IGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsKiBvYmplY3RTdG9yZUJhY2tlbmQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiBzdG9yZU5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgdW5pcXVl
LCBib29sIG11bHRpRW50cnkpCiAgICAgOiBtX2JhY2tpbmdTdG9yZShiYWNraW5nU3RvcmUpCiAg
ICAgLCBtX2RhdGFiYXNlSWQoZGF0YWJhc2VJZCkKICAgICAsIG1fb2JqZWN0U3RvcmVCYWNrZW5k
KG9iamVjdFN0b3JlQmFja2VuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwuaAppbmRleCBlNjQ4NWI2NjRjM2E0ZTMwMzc0
NGEzMWJhNjQ1OWMyNWE1M2VjZTlhLi43NWRhNmVkNzQyZjg0MzY1YTM1YjBiOGMwOTY0MGRjODg4
MmRiNzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJ
bmRleEJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCSW5kZXhCYWNrZW5kSW1wbC5oCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJJREJD
dXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCSW5kZXhCYWNrZW5kSW50ZXJm
YWNlLmgiCisjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTQwLDExICs0MSwxMSBAQCBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCiBjbGFz
cyBJREJJbmRleEJhY2tlbmRJbXBsIDogcHVibGljIElEQkluZGV4QmFja2VuZEludGVyZmFjZSB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gY3Jl
YXRlKElEQkJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNv
bnN0IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwqIG9iamVjdFN0b3JlQmFja2VuZCwgaW50NjRf
dCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHN0b3JlTmFtZSwgY29uc3Qg
U3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5KQorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+IGNyZWF0ZShJREJCYWNraW5nU3RvcmUq
IGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsKiBvYmplY3RTdG9yZUJhY2tlbmQsIGludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiBzdG9yZU5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgs
IGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnkpCiAgICAgewogICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IElEQkluZGV4QmFja2VuZEltcGwoYmFja2luZ1N0b3JlLCBkYXRhYmFzZUlkLCBv
YmplY3RTdG9yZUJhY2tlbmQsIGlkLCBuYW1lLCBzdG9yZU5hbWUsIGtleVBhdGgsIHVuaXF1ZSwg
bXVsdGlFbnRyeSkpOwogICAgIH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tl
bmRJbXBsPiBjcmVhdGUoSURCQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0
YWJhc2VJZCwgY29uc3QgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCogb2JqZWN0U3RvcmVCYWNr
ZW5kLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgc3RvcmVOYW1lLCBjb25zdCBT
dHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnkpCisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gY3JlYXRlKElEQkJhY2tpbmdTdG9yZSog
YmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IElEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGwqIG9iamVjdFN0b3JlQmFja2VuZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIHN0b3JlTmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCB1bmlxdWUs
IGJvb2wgbXVsdGlFbnRyeSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURC
SW5kZXhCYWNrZW5kSW1wbChiYWNraW5nU3RvcmUsIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlQmFj
a2VuZCwgbmFtZSwgc3RvcmVOYW1lLCBrZXlQYXRoLCB1bmlxdWUsIG11bHRpRW50cnkpKTsKICAg
ICB9CkBAIC02Myw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICAvLyBJbXBsZW1lbnRzIElEQkluZGV4
QmFja2VuZEludGVyZmFjZS4KICAgICB2aXJ0dWFsIFN0cmluZyBuYW1lKCkgeyByZXR1cm4gbV9u
YW1lOyB9CiAgICAgdmlydHVhbCBTdHJpbmcgc3RvcmVOYW1lKCkgeyByZXR1cm4gbV9zdG9yZU5h
bWU7IH0KLSAgICB2aXJ0dWFsIFN0cmluZyBrZXlQYXRoKCkgeyByZXR1cm4gbV9rZXlQYXRoOyB9
CisgICAgdmlydHVhbCBJREJLZXlQYXRoIGtleVBhdGgoKSB7IHJldHVybiBtX2tleVBhdGg7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgdW5pcXVlKCkgeyByZXR1cm4gbV91bmlxdWU7IH0KICAgICB2aXJ0
dWFsIGJvb2wgbXVsdGlFbnRyeSgpIHsgcmV0dXJuIG1fbXVsdGlFbnRyeTsgfQogCkBAIC03Niw4
ICs3Nyw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZ2V0S2V5KFBhc3NSZWZQdHI8SURC
S2V5PiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UqLCBFeGNlcHRpb25Db2RlJik7CiAKIHByaXZhdGU6Ci0gICAgSURCSW5kZXhCYWNrZW5k
SW1wbChJREJCYWNraW5nU3RvcmUqLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IElEQk9iamVj
dFN0b3JlQmFja2VuZEltcGwqLCBpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYgc3RvcmVOYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBi
b29sIG11bHRpRW50cnkpOwotICAgIElEQkluZGV4QmFja2VuZEltcGwoSURCQmFja2luZ1N0b3Jl
KiwgaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKiwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHN0b3JlTmFtZSwgY29uc3QgU3RyaW5n
JiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5KTsKKyAgICBJREJJbmRleEJh
Y2tlbmRJbXBsKElEQkJhY2tpbmdTdG9yZSosIGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbCosIGludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiBzdG9yZU5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIHVuaXF1ZSwg
Ym9vbCBtdWx0aUVudHJ5KTsKKyAgICBJREJJbmRleEJhY2tlbmRJbXBsKElEQkJhY2tpbmdTdG9y
ZSosIGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCos
IGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBzdG9yZU5hbWUsIGNvbnN0IElEQktl
eVBhdGgmLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5KTsKIAogICAgIHN0YXRpYyB2b2lk
IG9wZW5DdXJzb3JJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJ
REJJbmRleEJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIHVuc2lnbmVkIHNo
b3J0IGRpcmVjdGlvbiwgSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6Q3Vyc29yVHlwZSwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZT4pOwogICAgIHN0YXRpYyB2b2lkIGNvdW50SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4sIFBhc3NSZWZQdHI8SURC
S2V5UmFuZ2U+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlPik7CkBAIC05NSw3ICs5Niw3IEBAIHByaXZhdGU6CiAgICAg
aW50NjRfdCBtX2lkOwogICAgIFN0cmluZyBtX25hbWU7CiAgICAgU3RyaW5nIG1fc3RvcmVOYW1l
OwotICAgIFN0cmluZyBtX2tleVBhdGg7CisgICAgSURCS2V5UGF0aCBtX2tleVBhdGg7CiAgICAg
Ym9vbCBtX3VuaXF1ZTsKICAgICBib29sIG1fbXVsdGlFbnRyeTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbnRlcmZhY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEludGVy
ZmFjZS5oCmluZGV4IDgxMjcwYWU0YTk4YTlkNmIwYjU2OGFjMGQ5MDY2ZDhhNDY0NmFiNzMuLjBh
NWJiYjU2ODg5OTY5ODNhNmE3OGI4ZjViYjllODdlYTZlMDI5NTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEludGVyZmFjZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEludGVy
ZmFjZS5oCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURC
Q2FsbGJhY2tzOwogY2xhc3MgSURCS2V5OworY2xhc3MgSURCS2V5UGF0aDsKIGNsYXNzIElEQktl
eVJhbmdlOwogY2xhc3MgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlOwogCkBAIC00Nyw3
ICs0OCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgU3RyaW5nIG5hbWUoKSA9IDA7CiAgICAg
dmlydHVhbCBTdHJpbmcgc3RvcmVOYW1lKCkgPSAwOwotICAgIHZpcnR1YWwgU3RyaW5nIGtleVBh
dGgoKSA9IDA7CisgICAgdmlydHVhbCBJREJLZXlQYXRoIGtleVBhdGgoKSA9IDA7CiAgICAgdmly
dHVhbCBib29sIHVuaXF1ZSgpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgbXVsdGlFbnRyeSgpID0g
MDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5
UGF0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRoLmNw
cAppbmRleCBjZDVlOTY2MzQwMDJhY2Q0MzliNGFkNWNiYmJmNDgyNjU5ZDRhMWJhLi40NzEwNmVh
ZjBhNDUyNzZkNzY1ZTVlMTkzMmZhMzE1ZTY2MDY3NjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRoLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAj
aWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKKyNpbmNsdWRlICJET01TdHJpbmdMaXN0Lmgi
CiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KICNpbmNsdWRlIDx3dGYvZHRvYS5oPgogCkBA
IC0xNzksNiArMTgwLDQ0IEBAIHZvaWQgSURCUGFyc2VLZXlQYXRoKGNvbnN0IFN0cmluZyYga2V5
UGF0aCwgVmVjdG9yPFN0cmluZz4mIGVsZW1lbnRzLCBJREJLZXlQYXRoCiAgICAgfQogfQogCiti
b29sIElEQktleVBhdGg6OmlzVmFsaWQoKSBjb25zdAoreworICAgIHN3aXRjaCAobV90eXBlKSB7
CisgICAgY2FzZSBOdWxsVHlwZToKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY2FzZSBT
dHJpbmdUeXBlOgorICAgICAgICByZXR1cm4gSURCSXNWYWxpZEtleVBhdGgobV9zdHJpbmcpOwor
CisgICAgY2FzZSBBcnJheVR5cGU6CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9h
cnJheS5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKCFJREJJc1ZhbGlkS2V5UGF0aCht
X2FycmF5W2ldKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBmYWxzZTsKK30KKworSURCS2V5UGF0aDo6b3BlcmF0b3IgUGFzc1JlZlB0cjxJREJB
bnk+KCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAgIGNhc2UgTnVsbFR5cGU6
CisgICAgICAgIHJldHVybiBJREJBbnk6OmNyZWF0ZU51bGwoKTsKKyAgICBjYXNlIFN0cmluZ1R5
cGU6CisgICAgICAgIHJldHVybiBJREJBbnk6OmNyZWF0ZVN0cmluZyhtX3N0cmluZyk7CisgICAg
Y2FzZSBBcnJheVR5cGU6CisgICAgICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBrZXlQYXRocyA9
IERPTVN0cmluZ0xpc3Q6OmNyZWF0ZSgpOworICAgICAgICBmb3IgKFZlY3RvcjxTdHJpbmc+Ojpj
b25zdF9pdGVyYXRvciBpdCA9IG1fYXJyYXkuYmVnaW4oKTsgaXQgIT0gbV9hcnJheS5lbmQoKTsg
KytpdCkKKyAgICAgICAga2V5UGF0aHMtPmFwcGVuZCgqaXQpOworICAgICAgICByZXR1cm4gSURC
QW55OjpjcmVhdGUoc3RhdGljX2Nhc3Q8UGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiA+KGtleVBh
dGhzKSk7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOwor
fQorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVE
X0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCS2V5UGF0aC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UGF0
aC5oCmluZGV4IGM1MmE2M2JhOGNkOWUxZGFiYWUzODRjOTA1MTcwMjJhOGI0NGQzMWMuLmNkNWRk
YTZiNTM4NTdkNWNkNjMzZDU4MzY1ZGE4NTIyZTNiMTYxYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRoLmgKQEAgLTI4LDEwICsyOCw5IEBACiAKICNp
ZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlICJJREJBbnkuaCIKKyNpbmNs
dWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Miw5
ICs0MSw0NCBAQCBlbnVtIElEQktleVBhdGhQYXJzZUVycm9yIHsKICAgICBJREJLZXlQYXRoUGFy
c2VFcnJvckRvdCwKIH07CiAKLWJvb2wgSURCSXNWYWxpZEtleVBhdGgoY29uc3QgU3RyaW5nJik7
CiB2b2lkIElEQlBhcnNlS2V5UGF0aChjb25zdCBTdHJpbmcmLCBWZWN0b3I8U3RyaW5nPiYsIElE
QktleVBhdGhQYXJzZUVycm9yJik7CiAKK2NsYXNzIElEQktleVBhdGggeworcHVibGljOgorICAg
IElEQktleVBhdGgoKSA6IG1fdHlwZShOdWxsVHlwZSkgeyB9CisgICAgSURCS2V5UGF0aChjb25z
dCBTdHJpbmcmIHN0cmluZykgOiBtX3R5cGUoU3RyaW5nVHlwZSksIG1fc3RyaW5nKHN0cmluZykg
eyB9CisgICAgSURCS2V5UGF0aChjb25zdCBWZWN0b3I8U3RyaW5nPiYgYXJyYXkpIDogbV90eXBl
KEFycmF5VHlwZSksIG1fYXJyYXkoYXJyYXkpIHsgfQorCisgICAgZW51bSBUeXBlIHsKKyAgICAg
ICAgTnVsbFR5cGUgPSAwLAorICAgICAgICBTdHJpbmdUeXBlLAorICAgICAgICBBcnJheVR5cGUK
KyAgICB9OworCisgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisKKyAg
ICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYXJyYXkoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNT
RVJUKG1fdHlwZSA9PSBBcnJheVR5cGUpOworICAgICAgICByZXR1cm4gbV9hcnJheTsKKyAgICB9
CisKKyAgICBjb25zdCBTdHJpbmcmIHN0cmluZygpIGNvbnN0CisgICAgeworICAgICAgICBBU1NF
UlQobV90eXBlID09IFN0cmluZ1R5cGUpOworICAgICAgICByZXR1cm4gbV9zdHJpbmc7CisgICAg
fQorCisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gTnVsbFR5cGU7
IH0KKyAgICBib29sIGlzVmFsaWQoKSBjb25zdDsKKyAgICBvcGVyYXRvciBQYXNzUmVmUHRyPElE
QkFueT4oKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBUeXBlIG1fdHlwZTsKKyAgICBTdHJpbmcg
bV9zdHJpbmc7CisgICAgVmVjdG9yPFN0cmluZz4gbV9hcnJheTsKK307CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJLZXlQYXRoQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCS2V5UGF0aEJhY2tlbmRJbXBsLmNwcAppbmRleCA5NGM3ZjI3OTM1
Y2ZhMzlhZDM4ODAwMTJiZTYwOWI2YjEyOTViZmJhLi42NGExZmJjNWJlZDcwYWM5MDg1ZjUzNjNi
OGE2ZWQ5M2MyYTI4MDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJLZXlQYXRoQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQktleVBhdGhCYWNrZW5kSW1wbC5jcHAKQEAgLTM4LDEyICszOCwxMiBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgSURCS2V5UGF0aEJhY2tlbmRJbXBsOjpj
cmVhdGVJREJLZXlzRnJvbVNlcmlhbGl6ZWRWYWx1ZXNBbmRLZXlQYXRoKGNvbnN0IFZlY3RvcjxS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgMD4mLCBjb25zdCBTdHJpbmcmLCBWZWN0b3I8
UmVmUHRyPElEQktleT4sIDA+JikKK3ZvaWQgSURCS2V5UGF0aEJhY2tlbmRJbXBsOjpjcmVhdGVJ
REJLZXlzRnJvbVNlcmlhbGl6ZWRWYWx1ZXNBbmRLZXlQYXRoKGNvbnN0IFZlY3RvcjxSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgMD4mLCBjb25zdCBJREJLZXlQYXRoJiwgVmVjdG9yPFJl
ZlB0cjxJREJLZXk+LCAwPiYpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIG1ldGhv
ZCBvbmNlIEpTQyBzdXBwb3J0cyBXaXJlRm9ybWF0IGZvciBTZXJpYWxpemVkU2NyaXB0VmFsdWUu
CiB9CiAKLVBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBJREJLZXlQYXRoQmFja2Vu
ZEltcGw6OmluamVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUoUGFzc1JlZlB0cjxJREJLZXk+
LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIGNvbnN0IFN0cmluZyYpCitQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gSURCS2V5UGF0aEJhY2tlbmRJbXBsOjppbmpl
Y3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBjb25zdCBJREJLZXlQYXRoJikKIHsKICAgICAvLyBG
SVhNRTogSW1wbGVtZW50IHRoaXMgbWV0aG9kIG9uY2UgSlNDIHN1cHBvcnRzIFdpcmVGb3JtYXQg
Zm9yIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS4KICAgICByZXR1cm4gUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJLZXlQYXRoQmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQktleVBhdGhCYWNrZW5kSW1wbC5oCmluZGV4IDFjNzYyMzIyMTdmZjUwZTRm
MGQ5Nzk4ZjU3Y2Y0MjRjZGQzYzExZmQuLjBmMDU3ZWIyYmM3MzI1MWY3YWQ1ZjFmMDUwOTkwMWVk
Y2U1MTg5MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QktleVBhdGhCYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQktleVBhdGhCYWNrZW5kSW1wbC5oCkBAIC0zMywxMiArMzMsMTMgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgSURCS2V5OworY2xhc3MgSURCS2V5UGF0aDsKIGNsYXNzIFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIAogY2xhc3MgSURCS2V5UGF0aEJhY2tlbmRJbXBsIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBjcmVhdGVJREJLZXlzRnJvbVNlcmlhbGl6ZWRWYWx1ZXNB
bmRLZXlQYXRoKGNvbnN0IFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgMD4m
IHZhbHVlcywgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBWZWN0b3I8UmVmUHRyPElEQktleT4sIDA+
JiBrZXlzKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGlu
amVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUoUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIGNvbnN0IFN0cmluZyYga2V5UGF0aCk7CisgICAg
c3RhdGljIHZvaWQgY3JlYXRlSURCS2V5c0Zyb21TZXJpYWxpemVkVmFsdWVzQW5kS2V5UGF0aChj
b25zdCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIDA+JiB2YWx1ZXMsIGNv
bnN0IElEQktleVBhdGgmLCBWZWN0b3I8UmVmUHRyPElEQktleT4sIDA+JiBrZXlzKTsKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGluamVjdElEQktleUludG9T
ZXJpYWxpemVkVmFsdWUoUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4sIGNvbnN0IElEQktleVBhdGgmKTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9y
ZS5jcHAKaW5kZXggZGNmM2E4YWE3MDAzMTQzNzE3ODFjOTM0N2I3MjhlMGIwNjNjYjVjNi4uMmY3
MDg0MGYxYWU5NzljZTZkMmQ0ODg3OWJlMTY5MTdkMWM1MjYwOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9y
ZS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2lu
Y2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJJREJGYWN0b3J5QmFja2VuZEltcGwuaCIK
KyNpbmNsdWRlICJJREJLZXlQYXRoLmgiCiAjaW5jbHVkZSAiSURCS2V5UmFuZ2UuaCIKICNpbmNs
dWRlICJJREJMZXZlbERCQ29kaW5nLmgiCiAjaW5jbHVkZSAiTGV2ZWxEQkNvbXBhcmF0b3IuaCIK
QEAgLTgxLDYgKzgyLDE0IEBAIHN0YXRpYyBib29sIHB1dFN0cmluZyhEQk9yVHJhbnNhY3Rpb24q
IGRiLCBjb25zdCBWZWN0b3I8Y2hhcj4ga2V5LCBjb25zdCBTdHJpbmcmCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBEQk9yVHJhbnNhY3Rpb24+CitzdGF0aWMgYm9v
bCBwdXRJREJLZXlQYXRoKERCT3JUcmFuc2FjdGlvbiogZGIsIGNvbnN0IFZlY3RvcjxjaGFyPiBr
ZXksIGNvbnN0IElEQktleVBhdGgmIHZhbHVlKQoreworICAgIGlmICghZGItPnB1dChrZXksIGVu
Y29kZUlEQktleVBhdGgodmFsdWUpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVy
biB0cnVlOworfQorCiBzdGF0aWMgaW50IGNvbXBhcmVLZXlzKGNvbnN0IExldmVsREJTbGljZSYg
YSwgY29uc3QgTGV2ZWxEQlNsaWNlJiBiKQogewogICAgIHJldHVybiBjb21wYXJlKGEsIGIpOwpA
QCAtMzExLDcgKzMyMCw3IEBAIHN0YXRpYyBib29sIGNoZWNrT2JqZWN0U3RvcmVBbmRNZXRhRGF0
YVR5cGUoY29uc3QgTGV2ZWxEQkl0ZXJhdG9yKiBpdCwgY29uc3QgVmVjCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLXZvaWQgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0T2JqZWN0U3RvcmVzKGlu
dDY0X3QgZGF0YWJhc2VJZCwgVmVjdG9yPGludDY0X3Q+JiBmb3VuZElkcywgVmVjdG9yPFN0cmlu
Zz4mIGZvdW5kTmFtZXMsIFZlY3RvcjxTdHJpbmc+JiBmb3VuZEtleVBhdGhzLCBWZWN0b3I8Ym9v
bD4mIGZvdW5kQXV0b0luY3JlbWVudEZsYWdzKQordm9pZCBJREJMZXZlbERCQmFja2luZ1N0b3Jl
OjpnZXRPYmplY3RTdG9yZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZv
dW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcywgVmVjdG9yPElEQktleVBhdGg+JiBm
b3VuZEtleVBhdGhzLCBWZWN0b3I8Ym9vbD4mIGZvdW5kQXV0b0luY3JlbWVudEZsYWdzKQogewog
ICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBzdGFydEtleSA9IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6
OmVuY29kZShkYXRhYmFzZUlkLCAxLCAwKTsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gc3RvcEtl
eSA9IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZU1heEtleShkYXRhYmFzZUlkKTsKQEAg
LTM0Myw3ICszNTIsNyBAQCB2b2lkIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmdldE9iamVjdFN0
b3JlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIFZlY3RvcjxpbnQ2NF90PgogICAgICAgICAgICAgTE9H
X0VSUk9SKCJJbnRlcm5hbCBJbmRleGVkIERCIGVycm9yLiIpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9Ci0gICAgICAgIFN0cmluZyBrZXlQYXRoID0gZGVjb2RlU3RyaW5nKGl0LT52
YWx1ZSgpLmJlZ2luKCksIGl0LT52YWx1ZSgpLmVuZCgpKTsKKyAgICAgICAgSURCS2V5UGF0aCBr
ZXlQYXRoID0gZGVjb2RlSURCS2V5UGF0aChpdC0+dmFsdWUoKS5iZWdpbigpLCBpdC0+dmFsdWUo
KS5lbmQoKSk7CiAgICAgICAgIGJvb2wgaGFzS2V5UGF0aCA9IHRydWU7CiAKICAgICAgICAgaXQt
Pm5leHQoKTsKQEAgLTM3NiwxNiArMzg1LDIyIEBAIHZvaWQgSURCTGV2ZWxEQkJhY2tpbmdTdG9y
ZTo6Z2V0T2JqZWN0U3RvcmVzKGludDY0X3QgZGF0YWJhc2VJZCwgVmVjdG9yPGludDY0X3Q+CiAg
ICAgICAgIGlmIChjaGVja09iamVjdFN0b3JlQW5kTWV0YURhdGFUeXBlKGl0LmdldCgpLCBzdG9w
S2V5LCBvYmplY3RTdG9yZUlkLCA2KSkgewogICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBlbmNv
ZGUvZGVjb2RlIGZ1bmN0aW9ucyBmb3IgYm9vbHMuCiAgICAgICAgICAgICBoYXNLZXlQYXRoID0g
Kml0LT52YWx1ZSgpLmJlZ2luKCk7Ci0gICAgICAgICAgICBpZiAoIWhhc0tleVBhdGggJiYgIWtl
eVBhdGguaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAvLyBUaGlzIGNoZWNrIGFjY291bnRzIGZv
ciB0d28gbGF5ZXJzIG9mIGxlZ2FjeSBjb2Rpbmc6CisgICAgICAgICAgICAvLyAoMSkgSW5pdGlh
bGx5LCBoYXNLZXlQYXRoIHdhcyBhZGRlZCB0byBkaXN0aW5ndWlzaCBudWxsIHZzLiBzdHJpbmcu
CisgICAgICAgICAgICAvLyAoMikgTGF0ZXIsIG51bGwgdnMuIHN0cmluZyB2cy4gYXJyYXkgd2Fz
IHN0b3JlZCBpbiB0aGUga2V5UGF0aCBpdHNlbGYuCisgICAgICAgICAgICAvLyBTbyB0aGlzIGNo
ZWNrIGlzIG9ubHkgcmVsZXZhbnQgZm9yIHN0cmluZy10eXBlIGtleVBhdGhzLgorICAgICAgICAg
ICAgaWYgKCFoYXNLZXlQYXRoICYmIChrZXlQYXRoLnR5cGUoKSA9PSBJREJLZXlQYXRoOjpTdHJp
bmdUeXBlICYmICFrZXlQYXRoLnN0cmluZygpLmlzRW1wdHkoKSkpIHsKICAgICAgICAgICAgICAg
ICBMT0dfRVJST1IoIkludGVybmFsIEluZGV4ZWQgREIgZXJyb3IuIik7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFoYXNLZXlQYXRoKQor
ICAgICAgICAgICAgICAgIGtleVBhdGggPSBJREJLZXlQYXRoKCk7CiAgICAgICAgICAgICBpdC0+
bmV4dCgpOwogICAgICAgICB9CiAKICAgICAgICAgZm91bmRJZHMuYXBwZW5kKG9iamVjdFN0b3Jl
SWQpOwogICAgICAgICBmb3VuZE5hbWVzLmFwcGVuZChvYmplY3RTdG9yZU5hbWUpOwotICAgICAg
ICBmb3VuZEtleVBhdGhzLmFwcGVuZChoYXNLZXlQYXRoID8ga2V5UGF0aCA6IFN0cmluZygpKTsK
KyAgICAgICAgZm91bmRLZXlQYXRocy5hcHBlbmQoa2V5UGF0aCk7CiAgICAgICAgIGZvdW5kQXV0
b0luY3JlbWVudEZsYWdzLmFwcGVuZChhdXRvSW5jcmVtZW50KTsKICAgICB9CiB9CkBAIC00MDYs
NyArNDIxLDcgQEAgc3RhdGljIGludDY0X3QgZ2V0TmV3T2JqZWN0U3RvcmVJZChMZXZlbERCVHJh
bnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGEKICAgICByZXR1cm4gb2JqZWN0U3Rv
cmVJZDsKIH0KIAotYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RTdG9y
ZShpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBr
ZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIGludDY0X3QmIGFzc2lnbmVkT2JqZWN0U3RvcmVJ
ZCkKK2Jvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUoaW50NjRf
dCBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBh
dGgsIGJvb2wgYXV0b0luY3JlbWVudCwgaW50NjRfdCYgYXNzaWduZWRPYmplY3RTdG9yZUlkKQog
ewogICAgIEFTU0VSVChtX2N1cnJlbnRUcmFuc2FjdGlvbik7CiAgICAgaW50NjRfdCBvYmplY3RT
dG9yZUlkID0gZ2V0TmV3T2JqZWN0U3RvcmVJZChtX2N1cnJlbnRUcmFuc2FjdGlvbi5nZXQoKSwg
ZGF0YWJhc2VJZCk7CkBAIC00MjgsNyArNDQzLDcgQEAgYm9vbCBJREJMZXZlbERCQmFja2luZ1N0
b3JlOjpjcmVhdGVPYmplY3RTdG9yZShpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIG9rID0gcHV0U3RyaW5nKG1fY3Vy
cmVudFRyYW5zYWN0aW9uLmdldCgpLCBrZXlQYXRoS2V5LCBrZXlQYXRoKTsKKyAgICBvayA9IHB1
dElEQktleVBhdGgobV9jdXJyZW50VHJhbnNhY3Rpb24uZ2V0KCksIGtleVBhdGhLZXksIGtleVBh
dGgpOwogICAgIGlmICghb2spIHsKICAgICAgICAgTE9HX0VSUk9SKCJJbnRlcm5hbCBJbmRleGVk
IERCIGVycm9yLiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02OTgsNyArNzEzLDcgQEAg
c3RhdGljIGJvb2wgY2hlY2tJbmRleEFuZE1ldGFEYXRhS2V5KGNvbnN0IExldmVsREJJdGVyYXRv
ciogaXQsIGNvbnN0IFZlY3RvcjxjaGEKIH0KIAogCi12b2lkIElEQkxldmVsREJCYWNraW5nU3Rv
cmU6OmdldEluZGV4ZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQs
IFZlY3RvcjxpbnQ2NF90PiYgZm91bmRJZHMsIFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzLCBW
ZWN0b3I8U3RyaW5nPiYgZm91bmRLZXlQYXRocywgVmVjdG9yPGJvb2w+JiBmb3VuZFVuaXF1ZUZs
YWdzLCBWZWN0b3I8Ym9vbD4mIGZvdW5kTXVsdGlFbnRyeUZsYWdzKQordm9pZCBJREJMZXZlbERC
QmFja2luZ1N0b3JlOjpnZXRJbmRleGVzKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91
bmROYW1lcywgVmVjdG9yPElEQktleVBhdGg+JiBmb3VuZEtleVBhdGhzLCBWZWN0b3I8Ym9vbD4m
IGZvdW5kVW5pcXVlRmxhZ3MsIFZlY3Rvcjxib29sPiYgZm91bmRNdWx0aUVudHJ5RmxhZ3MpCiB7
CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+IHN0YXJ0S2V5ID0gSW5kZXhNZXRhRGF0YUtleTo6ZW5j
b2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIDAsIDApOwogICAgIGNvbnN0IFZlY3Rvcjxj
aGFyPiBzdG9wS2V5ID0gSW5kZXhNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVj
dFN0b3JlSWQgKyAxLCAwLCAwKTsKQEAgLTczNyw3ICs3NTIsNyBAQCB2b2lkIElEQkxldmVsREJC
YWNraW5nU3RvcmU6OmdldEluZGV4ZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVj
dFN0b3JlSQogICAgICAgICAgICAgTE9HX0VSUk9SKCJJbnRlcm5hbCBJbmRleGVkIERCIGVycm9y
LiIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIFN0cmluZyBrZXlQ
YXRoID0gZGVjb2RlU3RyaW5nKGl0LT52YWx1ZSgpLmJlZ2luKCksIGl0LT52YWx1ZSgpLmVuZCgp
KTsKKyAgICAgICAgSURCS2V5UGF0aCBrZXlQYXRoID0gZGVjb2RlSURCS2V5UGF0aChpdC0+dmFs
dWUoKS5iZWdpbigpLCBpdC0+dmFsdWUoKS5lbmQoKSk7CiAKICAgICAgICAgaXQtPm5leHQoKTsg
Ly8gW29wdGlvbmFsXSBtdWx0aUVudHJ5IGZsYWcKICAgICAgICAgYm9vbCBpbmRleE11bHRpRW50
cnkgPSBmYWxzZTsKQEAgLTc3MSw3ICs3ODYsNyBAQCBzdGF0aWMgaW50NjRfdCBnZXROZXdJbmRl
eElkKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZAog
ICAgIHJldHVybiBpbmRleElkOwogfQogCi1ib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmNy
ZWF0ZUluZGV4KGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBpc1VuaXF1ZSwgYm9v
bCBpc011bHRpRW50cnksIGludDY0X3QmIGluZGV4SWQpCitib29sIElEQkxldmVsREJCYWNraW5n
U3RvcmU6OmNyZWF0ZUluZGV4KGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wg
aXNVbmlxdWUsIGJvb2wgaXNNdWx0aUVudHJ5LCBpbnQ2NF90JiBpbmRleElkKQogewogICAgIEFT
U0VSVChtX2N1cnJlbnRUcmFuc2FjdGlvbik7CiAgICAgaW5kZXhJZCA9IGdldE5ld0luZGV4SWQo
bV9jdXJyZW50VHJhbnNhY3Rpb24uZ2V0KCksIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQpOwpA
QCAtNzk1LDcgKzgxMCw3IEBAIGJvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5k
ZXgoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKLSAgICBvayA9IHB1dFN0cmluZyhtX2N1cnJlbnRUcmFuc2FjdGlv
bi5nZXQoKSwga2V5UGF0aEtleSwga2V5UGF0aCk7CisgICAgb2sgPSBwdXRJREJLZXlQYXRoKG1f
Y3VycmVudFRyYW5zYWN0aW9uLmdldCgpLCBrZXlQYXRoS2V5LCBrZXlQYXRoKTsKICAgICBpZiAo
IW9rKSB7CiAgICAgICAgIExPR19FUlJPUigiSW50ZXJuYWwgSW5kZXhlZCBEQiBlcnJvci4iKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oCmluZGV4IDI0ZDQzOWQ3NjYx
MzExM2VlMTg0ZjRlNTUwMTY3MTdlN2QyOTY2MjYuLmIzYmI2N2Y3M2QxOGM3N2I3ODYxNjkxMzUz
NTc2M2Q1M2JiNTc3YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmgKQEAgLTUwLDggKzUwLDggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVJREJEYXRhYmFzZU1ldGFEYXRhKGludDY0X3Qg
cm93SWQsIGNvbnN0IFN0cmluZyYgdmVyc2lvbik7CiAgICAgdmlydHVhbCBib29sIGRlbGV0ZURh
dGFiYXNlKGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0T2JqZWN0
U3RvcmVzKGludDY0X3QgZGF0YWJhc2VJZCwgVmVjdG9yPGludDY0X3Q+JiBmb3VuZElkcywgVmVj
dG9yPFN0cmluZz4mIGZvdW5kTmFtZXMsIFZlY3RvcjxTdHJpbmc+JiBmb3VuZEtleVBhdGhzLCBW
ZWN0b3I8Ym9vbD4mIGZvdW5kQXV0b0luY3JlbWVudEZsYWdzKTsKLSAgICB2aXJ0dWFsIGJvb2wg
Y3JlYXRlT2JqZWN0U3RvcmUoaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBpbnQ2NF90JiBhc3Np
Z25lZE9iamVjdFN0b3JlSWQpOworICAgIHZpcnR1YWwgdm9pZCBnZXRPYmplY3RTdG9yZXMoaW50
NjRfdCBkYXRhYmFzZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8U3RyaW5n
PiYgZm91bmROYW1lcywgVmVjdG9yPElEQktleVBhdGg+JiBmb3VuZEtleVBhdGhzLCBWZWN0b3I8
Ym9vbD4mIGZvdW5kQXV0b0luY3JlbWVudEZsYWdzKTsKKyAgICB2aXJ0dWFsIGJvb2wgY3JlYXRl
T2JqZWN0U3RvcmUoaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQsIGludDY0X3QmIGFzc2lnbmVkT2JqZWN0
U3RvcmVJZCk7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGludDY0X3QgZGF0
YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
T2JqZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyPiBjcmVhdGVJbnZhbGlkUmVjb3JkSWRlbnRpZmll
cigpOwogICAgIHZpcnR1YWwgU3RyaW5nIGdldE9iamVjdFN0b3JlUmVjb3JkKGludDY0X3QgZGF0
YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkmKTsKQEAgLTYzLDgg
KzYzLDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGZvckVhY2hPYmplY3RTdG9yZVJl
Y29yZChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgT2JqZWN0U3Rv
cmVSZWNvcmRDYWxsYmFjayYpOwogCi0gICAgdmlydHVhbCB2b2lkIGdldEluZGV4ZXMoaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFZlY3RvcjxpbnQ2NF90PiYgZm91
bmRJZHMsIFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmRL
ZXlQYXRocywgVmVjdG9yPGJvb2w+JiBmb3VuZFVuaXF1ZUZsYWdzLCBWZWN0b3I8Ym9vbD4mIGZv
dW5kTXVsdGlFbnRyeUZsYWdzKTsKLSAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlSW5kZXgoaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGlzVW5pcXVlLCBib29sIGlzTXVsdGlFbnRyeSwg
aW50NjRfdCYgaW5kZXhJZCk7CisgICAgdmlydHVhbCB2b2lkIGdldEluZGV4ZXMoaW50NjRfdCBk
YXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFZlY3RvcjxpbnQ2NF90PiYgZm91bmRJ
ZHMsIFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzLCBWZWN0b3I8SURCS2V5UGF0aD4mIGZvdW5k
S2V5UGF0aHMsIFZlY3Rvcjxib29sPiYgZm91bmRVbmlxdWVGbGFncywgVmVjdG9yPGJvb2w+JiBm
b3VuZE11bHRpRW50cnlGbGFncyk7CisgICAgdmlydHVhbCBib29sIGNyZWF0ZUluZGV4KGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IElEQktleVBhdGgmLCBib29sIGlzVW5pcXVlLCBib29sIGlzTXVsdGlFbnRyeSwgaW50
NjRfdCYgaW5kZXhJZCk7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUluZGV4KGludDY0X3QgZGF0
YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQpOwogICAgIHZp
cnR1YWwgYm9vbCBwdXRJbmRleERhdGFGb3JSZWNvcmQoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2
NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiwgY29uc3Qg
T2JqZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyKik7CiAgICAgdmlydHVhbCBib29sIGRlbGV0ZUlu
ZGV4RGF0YUZvclJlY29yZChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBPYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXIqKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJD
b2RpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNv
ZGluZy5jcHAKaW5kZXggZjAyNjNmODlmM2U4ZGY2NmJlYzE4M2RhMGZhYWUyY2NiNWQ1YzczOC4u
OWJmODYxNDk1YjBjNjdmYmI4ZGI4Y2IxYWRkZDIxOWYwMDQ3MzlhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAKQEAg
LTMwLDYgKzMwLDcgQEAKICNpZiBVU0UoTEVWRUxEQikKIAogI2luY2x1ZGUgIklEQktleS5oIgor
I2luY2x1ZGUgIklEQktleVBhdGguaCIKICNpbmNsdWRlICJMZXZlbERCU2xpY2UuaCIKICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKQEAgLTEzNSw2ICsxMzYsOCBAQCBzdGF0
aWMgY29uc3QgdW5zaWduZWQgY2hhciBrSURCS2V5TnVtYmVyVHlwZUJ5dGUgPSAzOwogc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIGNoYXIga0lEQktleUFycmF5VHlwZUJ5dGUgPSA0Owogc3RhdGljIGNv
bnN0IHVuc2lnbmVkIGNoYXIga0lEQktleU1pbktleVR5cGVCeXRlID0gNTsKIAorc3RhdGljIGNv
bnN0IHVuc2lnbmVkIGNoYXIga0lEQktleVBhdGhUeXBlQ29kZWRCeXRlID0gMDsKKwogc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIGNoYXIga09iamVjdFN0b3JlRGF0YUluZGV4SWQgPSAxOwogc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIGNoYXIga0V4aXN0c0VudHJ5SW5kZXhJZCA9IDI7CiAKQEAgLTYyMCw2
ICs2MjMsNzMgQEAgaW50IGNvbXBhcmVFbmNvZGVkSURCS2V5cyhjb25zdCBWZWN0b3I8Y2hhcj4m
IGtleUEsIGNvbnN0IFZlY3RvcjxjaGFyPiYga2V5QikKICAgICByZXR1cm4gY29tcGFyZUVuY29k
ZWRJREJLZXlzKHAsIGxpbWl0QSwgcSwgbGltaXRCKTsKIH0KIAorVmVjdG9yPGNoYXI+IGVuY29k
ZUlEQktleVBhdGgoY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCkKK3sKKyAgICAvLyBNYXkgYmUg
dHlwZWQsIG9yIG1heSBiZSBhIHJhdyBzdHJpbmcuIEFuIGludmFsaWQgbGVhZGluZworICAgIC8v
IGJ5dGUgaXMgdXNlZCB0byBpZGVudGlmeSB0eXBlZCBjb2RpbmcuIE5ldyByZWNvcmRzIGFyZQor
ICAgIC8vIGFsd2F5cyB3cml0dGVuIGFzIHR5cGVkLgorICAgIFZlY3RvcjxjaGFyPiByZXQ7Cisg
ICAgcmV0LmFwcGVuZChrSURCS2V5UGF0aFR5cGVDb2RlZEJ5dGUpOworICAgIHJldC5hcHBlbmQo
c3RhdGljX2Nhc3Q8Y2hhcj4oa2V5UGF0aC50eXBlKCkpKTsKKyAgICBzd2l0Y2ggKGtleVBhdGgu
dHlwZSgpKSB7CisgICAgY2FzZSBJREJLZXlQYXRoOjpOdWxsVHlwZToKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBJREJLZXlQYXRoOjpTdHJpbmdUeXBlOgorICAgICAgICByZXQuYXBwZW5kKGVu
Y29kZVN0cmluZyhrZXlQYXRoLnN0cmluZygpKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
SURCS2V5UGF0aDo6QXJyYXlUeXBlOgorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgYXJyYXkgPSBrZXlQYXRoLmFycmF5KCk7CisgICAgICAgICAgICBzaXplX3Qg
Y291bnQgPSBhcnJheS5zaXplKCk7CisgICAgICAgICAgICByZXQuYXBwZW5kKGVuY29kZVZhcklu
dChjb3VudCkpOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytp
KQorICAgICAgICAgICAgICAgIHJldC5hcHBlbmQoZW5jb2RlU3RyaW5nV2l0aExlbmd0aChhcnJh
eVtpXSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJu
IHJldDsKK30KKworSURCS2V5UGF0aCBkZWNvZGVJREJLZXlQYXRoKGNvbnN0IGNoYXIqIHAsIGNv
bnN0IGNoYXIqIGxpbWl0KQoreworICAgIC8vIE1heSBiZSB0eXBlZCwgb3IgbWF5IGJlIGEgcmF3
IHN0cmluZy4gQW4gaW52YWxpZCBsZWFkaW5nCisgICAgLy8gYnl0ZSBpcyB1c2VkIHRvIGlkZW50
aWZ5IHR5cGVkIGNvZGluZy4gTmV3IHJlY29yZHMgYXJlCisgICAgLy8gYWx3YXlzIHdyaXR0ZW4g
YXMgdHlwZWQuCisgICAgaWYgKHAgPT0gbGltaXQgfHwgKnAgIT0ga0lEQktleVBhdGhUeXBlQ29k
ZWRCeXRlKQorICAgICAgICByZXR1cm4gSURCS2V5UGF0aChkZWNvZGVTdHJpbmcocCwgbGltaXQp
KTsKKworICAgICsrcDsKKyAgICBBU1NFUlQocCAhPSBsaW1pdCk7CisgICAgSURCS2V5UGF0aDo6
VHlwZSB0eXBlID0gc3RhdGljX2Nhc3Q8SURCS2V5UGF0aDo6VHlwZT4oKnArKyk7CisgICAgc3dp
dGNoICh0eXBlKSB7CisgICAgY2FzZSBJREJLZXlQYXRoOjpOdWxsVHlwZToKKyAgICAgICAgQVNT
RVJUKHAgPT0gbGltaXQpOworICAgICAgICByZXR1cm4gSURCS2V5UGF0aCgpOworICAgIGNhc2Ug
SURCS2V5UGF0aDo6U3RyaW5nVHlwZToKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIElE
QktleVBhdGgoZGVjb2RlU3RyaW5nKHAsIGxpbWl0KSk7CisgICAgICAgIH0KKyAgICBjYXNlIElE
QktleVBhdGg6OkFycmF5VHlwZToKKyAgICAgICAgeworICAgICAgICAgICAgVmVjdG9yPFN0cmlu
Zz4gYXJyYXk7CisgICAgICAgICAgICBpbnQ2NF90IGNvdW50OworICAgICAgICAgICAgcCA9IGRl
Y29kZVZhckludChwLCBsaW1pdCwgY291bnQpOworICAgICAgICAgICAgQVNTRVJUKHApOworICAg
ICAgICAgICAgQVNTRVJUKGNvdW50ID49IDApOworICAgICAgICAgICAgd2hpbGUgKGNvdW50LS0p
IHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgc3RyaW5nOworICAgICAgICAgICAgICAgIHAgPSBk
ZWNvZGVTdHJpbmdXaXRoTGVuZ3RoKHAsIGxpbWl0LCBzdHJpbmcpOworICAgICAgICAgICAgICAg
IEFTU0VSVChwKTsKKyAgICAgICAgICAgICAgICBhcnJheS5hcHBlbmQoc3RyaW5nKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIEFTU0VSVChwID09IGxpbWl0KTsKKyAgICAgICAgICAgIHJl
dHVybiBJREJLZXlQYXRoKGFycmF5KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4gSURCS2V5UGF0aCgpOworfQorCiBuYW1lc3BhY2Ugewog
dGVtcGxhdGU8dHlwZW5hbWUgS2V5VHlwZT4KIGludCBkZWNvZGVBbmRDb21wYXJlKGNvbnN0IExl
dmVsREJTbGljZSYgYSwgY29uc3QgTGV2ZWxEQlNsaWNlJiBiKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5oCmluZGV4IDE0YzQyZWE3
MzM2MWI0MDIwNmRhYzRkMGRmZDE3NjQwNzkwZWNjZmEuLmJkZmY2YjVlZmNkZjgzZGI1OWQ4YTJl
NWUzN2U5NDY0ZmE5NWU3MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmgKQEAgLTM2LDYgKzM2LDcgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgSURCS2V5OworY2xhc3MgSURCS2V5UGF0aDsKIGNsYXNzIExldmVs
REJTbGljZTsKIAogbmFtZXNwYWNlIElEQkxldmVsREJDb2RpbmcgewpAQCAtNjEsNiArNjIsOCBA
QCBWZWN0b3I8Y2hhcj4gZW5jb2RlSURCS2V5KGNvbnN0IElEQktleSYpOwogY29uc3QgY2hhciog
ZGVjb2RlSURCS2V5KGNvbnN0IGNoYXIqIHAsIGNvbnN0IGNoYXIqIGxpbWl0LCBSZWZQdHI8SURC
S2V5PiYgZm91bmRLZXkpOwogY29uc3QgY2hhciogZXh0cmFjdEVuY29kZWRJREJLZXkoY29uc3Qg
Y2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGxpbWl0LCBWZWN0b3I8Y2hhcj4qIHJlc3VsdCk7CiBp
bnQgY29tcGFyZUVuY29kZWRJREJLZXlzKGNvbnN0IFZlY3RvcjxjaGFyPiYsIGNvbnN0IFZlY3Rv
cjxjaGFyPiYpOworVmVjdG9yPGNoYXI+IGVuY29kZUlEQktleVBhdGgoY29uc3QgSURCS2V5UGF0
aCYpOworSURCS2V5UGF0aCBkZWNvZGVJREJLZXlQYXRoKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFy
Kik7CiAKIGludCBjb21wYXJlKGNvbnN0IExldmVsREJTbGljZSYsIGNvbnN0IExldmVsREJTbGlj
ZSYsIGJvb2wgaW5kZXhLZXlzID0gZmFsc2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKaW5kZXggNDMxOWQ3ZjBhOTM4ZGE1
ZjdkNzcwNmYwY2JiZDg2YjU2MjkwN2ZiOS4uOThmZjgyYmE4M2IxNWE1Yzk5NmYzNTViNGJhMDc5
NWE0MzM2ZDZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQk9iamVjdFN0b3JlLmNwcApAQCAtNjAsNyArNjAsNyBAQCBTdHJpbmcgSURCT2JqZWN0U3Rv
cmU6Om5hbWUoKSBjb25zdAogICAgIHJldHVybiBtX2JhY2tlbmQtPm5hbWUoKTsKIH0KIAotU3Ry
aW5nIElEQk9iamVjdFN0b3JlOjprZXlQYXRoKCkgY29uc3QKK1Bhc3NSZWZQdHI8SURCQW55PiBJ
REJPYmplY3RTdG9yZTo6a2V5UGF0aCgpIGNvbnN0CiB7CiAgICAgSURCX1RSQUNFKCJJREJPYmpl
Y3RTdG9yZTo6a2V5UGF0aCIpOwogICAgIHJldHVybiBtX2JhY2tlbmQtPmtleVBhdGgoKTsKQEAg
LTIwNSw4ICsyMDUsMTMgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6
Y2xlYXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXgKIAogUGFzc1JlZlB0cjxJ
REJJbmRleD4gSURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiBrZXlQYXRoLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKKyAgICByZXR1cm4gY3JlYXRlSW5kZXgobmFtZSwgSURCS2V5UGF0aChr
ZXlQYXRoKSwgb3B0aW9ucywgZWMpOworfQorCitQYXNzUmVmUHRyPElEQkluZGV4PiBJREJPYmpl
Y3RTdG9yZTo6Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRo
JiBrZXlQYXRoLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBFeGNlcHRpb25Db2RlJiBlYykK
K3sKICAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleCIpOwotICAgIGlm
ICghSURCSXNWYWxpZEtleVBhdGgoa2V5UGF0aCkpIHsKKyAgICBpZiAoIWtleVBhdGguaXNWYWxp
ZCgpKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246Ok5PTl9UUkFOU0lFTlRf
RVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaAppbmRleCA1ZDRkMThkYzA2NTljNGIzOTIw
OGRkNjgyOTFiNTExMjk0M2NjZjkwLi5iMGMyZThlODI0ZGQxZGNiMTA0YjUxNmJmYTQ1MWViYmQ2
Y2ViZjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJP
YmplY3RTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9i
amVjdFN0b3JlLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIH5JREJPYmplY3RTdG9y
ZSgpIHsgfQogCiAgICAgU3RyaW5nIG5hbWUoKSBjb25zdDsKLSAgICBTdHJpbmcga2V5UGF0aCgp
IGNvbnN0OworICAgIFBhc3NSZWZQdHI8SURCQW55PiBrZXlQYXRoKCkgY29uc3Q7CiAgICAgUGFz
c1JlZlB0cjxET01TdHJpbmdMaXN0PiBpbmRleE5hbWVzKCkgY29uc3Q7CiAgICAgSURCVHJhbnNh
Y3Rpb24qIHRyYW5zYWN0aW9uKCkgY29uc3Q7CiAKQEAgLTc3LDYgKzc3LDggQEAgcHVibGljOgog
ICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gY2xlYXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIFBhc3NSZWZQdHI8SURCSW5kZXg+IGNyZWF0ZUluZGV4
KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBjb25zdCBEaWN0aW9u
YXJ5JiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8SURCSW5kZXg+IGNyZWF0ZUlu
ZGV4KGNvbnN0IFN0cmluZyYsIGNvbnN0IElEQktleVBhdGgmLCBjb25zdCBEaWN0aW9uYXJ5Jiwg
RXhjZXB0aW9uQ29kZSYpOworCiAgICAgUGFzc1JlZlB0cjxJREJJbmRleD4gaW5kZXgoY29uc3Qg
U3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBkZWxldGVJbmRleChjb25z
dCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaWRsIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaWRsCmluZGV4IDhjZWQzOGNkMWVm
YTMyY2NiMzRmMDYyOGQzYzZhOTI4ZWI4ODdmZDIuLjAzN2ViZDNiMzJhMTQzM2ZiNjkwOWVhMzUz
MzIxNjQyYWRmOTdmYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQk9iamVjdFN0b3JlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJPYmplY3RTdG9yZS5pZGwKQEAgLTI5LDcgKzI5LDcgQEAgbW9kdWxlIHN0b3JhZ2Ug
ewogICAgICAgICBDb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFCiAgICAgXSBJREJPYmplY3RT
dG9yZSB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbVHJlYXRSZXR1cm5lZE51bGxTdHJp
bmdBcz1OdWxsXSBET01TdHJpbmcgbmFtZTsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtU
cmVhdFJldHVybmVkTnVsbFN0cmluZ0FzPU51bGxdIERPTVN0cmluZyBrZXlQYXRoOworICAgICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgSURCQW55IGtleVBhdGg7CiAgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01TdHJpbmdMaXN0IGluZGV4TmFtZXM7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBJREJUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
LmNwcAppbmRleCA1ZDJkNTBjMmFlYmU3ZjQwMGQ2MGQ4ZTEwODZiMDA1ZmY5YjNkNTUzLi5mNjM4
YTNjZWZjNTZmNTM1N2ZmYTJjMTFlZDc2ZTIzMGFhMDYzNTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsLmNwcApAQCAtNTEsNyArNTEsNyBAQCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjp+
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCgpCiB7CiB9CiAKLUlEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGw6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGwoSURCQmFja2luZ1N0b3JlKiBiYWNraW5n
U3RvcmUsIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkKK0lEQk9iamVjdFN0
b3JlQmFja2VuZEltcGw6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGwoSURCQmFja2luZ1N0b3Jl
KiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBpZCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQp
CiAgICAgOiBtX2JhY2tpbmdTdG9yZShiYWNraW5nU3RvcmUpCiAgICAgLCBtX2RhdGFiYXNlSWQo
ZGF0YWJhc2VJZCkKICAgICAsIG1faWQoaWQpCkBAIC02Myw3ICs2Myw3IEBAIElEQk9iamVjdFN0
b3JlQmFja2VuZEltcGw6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGwoSURCQmFja2luZ1N0b3Jl
KiBiYWNraW5nU3RvCiAgICAgbG9hZEluZGV4ZXMoKTsKIH0KIAotSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbDo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbChJREJCYWNraW5nU3RvcmUqIGJhY2tp
bmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50KQorSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbDo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbChJREJCYWNraW5nU3RvcmUqIGJhY2tpbmdT
dG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktl
eVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkKICAgICA6IG1fYmFja2luZ1N0b3Jl
KGJhY2tpbmdTdG9yZSkKICAgICAsIG1fZGF0YWJhc2VJZChkYXRhYmFzZUlkKQogICAgICwgbV9p
ZChJbnZhbGlkSWQpCkBAIC0xMzcsOSArMTM3LDExIEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbDo6Z2V0SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8
CiAgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVG
cm9tV2lyZSh3aXJlRGF0YSkpOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxJREJLZXk+IGZldGNo
S2V5RnJvbUtleVBhdGgoU2VyaWFsaXplZFNjcmlwdFZhbHVlKiB2YWx1ZSwgY29uc3QgU3RyaW5n
JiBrZXlQYXRoKQorc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5PiBmZXRjaEtleUZyb21LZXlQYXRo
KFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogdmFsdWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgp
CiB7CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpmZXRjaEtleUZy
b21LZXlQYXRoIik7CisgICAgQVNTRVJUKCFrZXlQYXRoLmlzTnVsbCgpKTsKKwogICAgIFZlY3Rv
cjxSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiA+IHZhbHVlczsKICAgICB2YWx1ZXMuYXBw
ZW5kKHZhbHVlKTsKICAgICBWZWN0b3I8UmVmUHRyPElEQktleT4gPiBrZXlzOwpAQCAtMTUwLDcg
KzE1Miw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPElEQktleT4gZmV0Y2hLZXlGcm9tS2V5UGF0aChT
ZXJpYWxpemVkU2NyaXB0VmFsdWUqIHZhbHVlLCBjb25zCiAgICAgcmV0dXJuIGtleXNbMF0ucmVs
ZWFzZSgpOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGlu
amVjdEtleUludG9LZXlQYXRoKFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQorc3RhdGlj
IFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBpbmplY3RLZXlJbnRvS2V5UGF0aChQ
YXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
dmFsdWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgpCiB7CiAgICAgSURCX1RSQUNFKCJJREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsOjppbmplY3RLZXlJbnRvS2V5UGF0aCIpOwogICAgIHJldHVy
biBJREJLZXlQYXRoQmFja2VuZEltcGw6OmluamVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUo
a2V5LCB2YWx1ZSwga2V5UGF0aCk7CkBAIC00OTksNyArNTAxLDcgQEAgYm9vbCBJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsOjpwb3B1bGF0ZUluZGV4KElEQkJhY2tpbmdTdG9yZSYgYmFja2luZ1N0
b3JlLCBpbnQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc1JlZlB0cjxJREJJbmRleEJhY2tl
bmRJbnRlcmZhY2U+IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZUluZGV4KGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBt
dWx0aUVudHJ5LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBF
eGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnks
IElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogewogICAgIGlmIChuYW1lLmlzTnVsbCgpKSB7CiAgICAgICAgIGVjID0gSURCRGF0
YWJhc2VFeGNlcHRpb246Ok5PTl9UUkFOU0lFTlRfRVJSOwpAQCAtNjUwLDcgKzY1Miw3IEBAIHZv
aWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6bG9hZEluZGV4ZXMoKQogewogICAgIFZlY3Rv
cjxpbnQ2NF90PiBpZHM7CiAgICAgVmVjdG9yPFN0cmluZz4gbmFtZXM7Ci0gICAgVmVjdG9yPFN0
cmluZz4ga2V5UGF0aHM7CisgICAgVmVjdG9yPElEQktleVBhdGg+IGtleVBhdGhzOwogICAgIFZl
Y3Rvcjxib29sPiB1bmlxdWVGbGFnczsKICAgICBWZWN0b3I8Ym9vbD4gbXVsdGlFbnRyeUZsYWdz
OwogICAgIG1fYmFja2luZ1N0b3JlLT5nZXRJbmRleGVzKG1fZGF0YWJhc2VJZCwgbV9pZCwgaWRz
LCBuYW1lcywga2V5UGF0aHMsIHVuaXF1ZUZsYWdzLCBtdWx0aUVudHJ5RmxhZ3MpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbC5oCmluZGV4IDhkMmUxZGE5OWU4NGFjODlkYjQ3YWY2MWU1ZjFlYWMzMzdk
ZWMyZGQuLjFkMTU1NTA0NzcxMDM5ZDUzZjQzNTE4NWMwODM4OTUyYjY3ZDA0ODEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbF9oCiAjZGVmaW5lIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGxfaAogCisj
aW5jbHVkZSAiSURCS2V5UGF0aC5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlQmFja2VuZElu
dGVyZmFjZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nSGFzaC5oPgpAQCAtNDIsMTEgKzQzLDExIEBAIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7CiAKIGNsYXNzIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwgOiBwdWJsaWMgSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBjcmVhdGUoSURCQmFja2luZ1N0b3JlKiBiYWNr
aW5nU3RvcmUsIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBjcmVhdGUoSURCQmFja2lu
Z1N0b3JlKiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBpZCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIGF1dG9JbmNy
ZW1lbnQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGwoYmFja2luZ1N0b3JlLCBkYXRhYmFzZUlkLCBpZCwgbmFtZSwga2V5UGF0aCwg
YXV0b0luY3JlbWVudCkpOwogICAgIH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsPiBjcmVhdGUoSURCQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUsIGlu
dDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBh
dGgsIGJvb2wgYXV0b0luY3JlbWVudCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsPiBjcmVhdGUoSURCQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUsIGlu
dDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBr
ZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwoYmFja2luZ1N0b3JlLCBkYXRhYmFzZUlk
LCBuYW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50KSk7CiAgICAgfQpAQCAtNjIsNyArNjMsNyBA
QCBwdWJsaWM6CiAgICAgaW50NjRfdCBkYXRhYmFzZUlkKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
YmFzZUlkOyB9CiAKICAgICB2aXJ0dWFsIFN0cmluZyBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9u
YW1lOyB9Ci0gICAgdmlydHVhbCBTdHJpbmcga2V5UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5
UGF0aDsgfQorICAgIHZpcnR1YWwgSURCS2V5UGF0aCBrZXlQYXRoKCkgY29uc3QgeyByZXR1cm4g
bV9rZXlQYXRoOyB9CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGluZGV4
TmFtZXMoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgYXV0b0luY3JlbWVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fYXV0b0luY3JlbWVudDsgfQogCkBAIC03Myw3ICs3NCw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwg
RXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhcihQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUm
KTsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGNy
ZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29s
IHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2Uq
LCBFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2Vu
ZEludGVyZmFjZT4gY3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQ
YXRoJiwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSwgSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJJ
bmRleEJhY2tlbmRJbnRlcmZhY2U+IGluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9u
Q29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUs
IElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKIApAQCAt
ODMsOCArODQsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgcG9wdWxhdGVJbmRleChJREJC
YWNraW5nU3RvcmUmLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwg
UGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPik7CiAKIHByaXZhdGU6Ci0gICAgSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbChJREJCYWNraW5nU3RvcmUqLCBpbnQ2NF90IGRhdGFiYXNlSWQs
IGludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBi
b29sIGF1dG9JbmNyZW1lbnQpOwotICAgIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwoSURCQmFj
a2luZ1N0b3JlKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50KTsKKyAgICBJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsKElEQkJhY2tpbmdTdG9yZSosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRf
dCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5j
cmVtZW50KTsKKyAgICBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKElEQkJhY2tpbmdTdG9yZSos
IGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRo
JiwgYm9vbCBhdXRvSW5jcmVtZW50KTsKIAogICAgIHZvaWQgbG9hZEluZGV4ZXMoKTsKICAgICBQ
YXNzUmVmUHRyPElEQktleT4gZ2VuQXV0b0luY3JlbWVudEtleSgpOwpAQCAtMTEwLDcgKzExMSw3
IEBAIHByaXZhdGU6CiAgICAgaW50NjRfdCBtX2RhdGFiYXNlSWQ7CiAgICAgaW50NjRfdCBtX2lk
OwogICAgIFN0cmluZyBtX25hbWU7Ci0gICAgU3RyaW5nIG1fa2V5UGF0aDsKKyAgICBJREJLZXlQ
YXRoIG1fa2V5UGF0aDsKICAgICBib29sIG1fYXV0b0luY3JlbWVudDsKIAogICAgIHR5cGVkZWYg
SGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiA+IEluZGV4TWFwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaAppbmRleCBhZTY0YTVlZjZlZTBhNTE0NmE0
ZTE0YmVlZjYzMjJkNTU4NTYwMGUwLi4zMmFlMzkyOGZkOGU4ZjQwNTM2YjhiZmI5YTM4OWQ3Nzlh
NDA2MjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJP
YmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaApAQCAtMzcsNiArMzcs
NyBAQCBjbGFzcyBET01TdHJpbmdMaXN0OwogY2xhc3MgSURCQ2FsbGJhY2tzOwogY2xhc3MgSURC
SW5kZXhCYWNrZW5kSW50ZXJmYWNlOwogY2xhc3MgSURCS2V5OworY2xhc3MgSURCS2V5UGF0aDsK
IGNsYXNzIElEQktleVJhbmdlOwogY2xhc3MgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
OwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwpAQCAtNDgsNyArNDksNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB+SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlKCkgeyB9CiAKICAg
ICB2aXJ0dWFsIFN0cmluZyBuYW1lKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgU3RyaW5nIGtl
eVBhdGgoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBJREJLZXlQYXRoIGtleVBhdGgoKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGluZGV4TmFtZXMo
KSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0KFBhc3NSZWZQdHI8SURCS2V5UmFu
Z2U+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CkBAIC02NCw3ICs2NSw3IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgdm9pZCBjbGVhcihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAKLSAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVJbmRleChjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wg
bXVsdGlFbnRyeSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29k
ZSYpID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNl
PiBjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29s
IHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2Uq
LCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJJbmRleEJh
Y2tlbmRJbnRlcmZhY2U+IGluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikgPSAwOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EaWN0aW9uYXJ5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuY3BwCmluZGV4IDEwYWFmZThkYzZj
MjgxZWZlNzFkNDlmYjkyZjRiYjk1Njc1ODc1MTQuLjg0NjQ1NTQ3ZmEzNWFlYmFmNWM0MGU0OWJk
OTUwNWNiYWYxYzVhODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0Rp
Y3Rpb25hcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnku
Y3BwCkBAIC00MjQsNiArNDI0LDI1IEBAIGJvb2wgRGljdGlvbmFyeTo6Z2V0KGNvbnN0IFN0cmlu
ZyYga2V5LCBEaWN0aW9uYXJ5JiB2YWx1ZSkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAor
I2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorYm9vbCBEaWN0aW9uYXJ5OjpnZXQoY29uc3Qg
U3RyaW5nJiBrZXksIFZlY3RvcjxTdHJpbmc+JiB2YWx1ZSkgY29uc3QKK3sKKyAgICB2ODo6TG9j
YWw8djg6OlZhbHVlPiB2OFZhbHVlOworICAgIGlmICghZ2V0S2V5KGtleSwgdjhWYWx1ZSkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghdjhWYWx1ZS0+SXNBcnJheSgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB2ODo6TG9jYWw8djg6OkFycmF5PiB2OEFycmF5ID0g
djg6OkxvY2FsPHY4OjpBcnJheT46OkNhc3QodjhWYWx1ZSk7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCB2OEFycmF5LT5MZW5ndGgoKTsgKytpKSB7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6
VmFsdWU+IGluZGV4ZWRWYWx1ZSA9IHY4QXJyYXktPkdldCh2ODo6SW50ZWdlcjo6TmV3KGkpKTsK
KyAgICAgICAgdmFsdWUuYXBwZW5kKHY4VmFsdWVUb1dlYkNvcmVTdHJpbmcoaW5kZXhlZFZhbHVl
KSk7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisjZW5kaWYKIAogYm9vbCBEaWN0aW9u
YXJ5OjpnZXRPd25Qcm9wZXJ0aWVzQXNTdHJpbmdIYXNoTWFwKFdURjo6SGFzaE1hcDxTdHJpbmcs
IFN0cmluZz4mIGhhc2hNYXApIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9EaWN0aW9uYXJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EaWN0
aW9uYXJ5LmgKaW5kZXggYzRjMzNiMWJiMjA4ZTk2NDBkZmZiODQwNmQ4OTNiNDEyODMyNzllZS4u
NWEyNjYzNDExNTQ2MjZmNmMxYmZhODE5YmE1YzAzMzY0MmY5MDIxYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuaApAQCAtMzMsMTEgKzMzLDExIEBACiAjaW5jbHVkZSA8
djguaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmlu
Zy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIERPTVN0cmluZ0xpc3Q7CiBjbGFz
cyBET01XaW5kb3c7CiBjbGFzcyBJREJLZXlSYW5nZTsKIGNsYXNzIE1lZGlhS2V5RXJyb3I7CkBA
IC04Myw2ICs4Myw5IEBAIHB1YmxpYzoKICAgICBib29sIGdldChjb25zdCBTdHJpbmcmLCBSZWZQ
dHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+JikgY29uc3Q7CiAgICAgYm9vbCBnZXQoY29uc3Qg
U3RyaW5nJiwgUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0TGlzdD4mKSBjb25zdDsKICNl
bmRpZgorI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorICAgIGJvb2wgZ2V0KGNvbnN0IFN0
cmluZyYsIFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7CisjZW5kaWYKICAgICBib29sIGdldChjb25z
dCBTdHJpbmcmLCBIYXNoU2V0PEF0b21pY1N0cmluZz4mKSBjb25zdDsKICAgICBib29sIGdldChj
b25zdCBTdHJpbmcmLCBEaWN0aW9uYXJ5JikgY29uc3Q7CiAgICAgYm9vbCBnZXRPd25Qcm9wZXJ0
aWVzQXNTdHJpbmdIYXNoTWFwKFdURjo6SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRp
ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5j
cHAKaW5kZXggZGY2Nzc4MDMwNTdlMzgwZjNlODlkZDQ1MTcxMWU0NzkxZTQxZWU5NC4uMTViNDNl
OTM2MGVkZjk1YjM1ZGQ2ZWJjYmRkMTZiNDlmOGIwZDdjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKQEAgLTE1MywzMCArMTUz
LDQzIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBlbnN1cmVOdGhWYWx1ZU9uS2V5UGF0aCh2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4mIHJvb3RWYWx1ZSwKIAogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNl
CiAKLVBhc3NSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJLZXlGcm9tU2VyaWFsaXplZFZhbHVlQW5k
S2V5UGF0aChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBrZXlQYXRoKQorUGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktleUZy
b21TZXJpYWxpemVkVmFsdWVBbmRLZXlQYXRoKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiB2YWx1ZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCkKIHsKICAgICBJREJfVFJBQ0Uo
ImNyZWF0ZUlEQktleUZyb21TZXJpYWxpemVkVmFsdWVBbmRLZXlQYXRoIik7CisgICAgQVNTRVJU
KGtleVBhdGgudHlwZSgpID09IElEQktleVBhdGg6OlN0cmluZ1R5cGUpOworICAgIFZlY3RvcjxT
dHJpbmc+IGtleVBhdGhFbGVtZW50czsKKyAgICBJREJLZXlQYXRoUGFyc2VFcnJvciBlcnJvcjsK
KyAgICBJREJQYXJzZUtleVBhdGgoa2V5UGF0aC5zdHJpbmcoKSwga2V5UGF0aEVsZW1lbnRzLCBl
cnJvcik7CisgICAgQVNTRVJUKGVycm9yID09IElEQktleVBhdGhQYXJzZUVycm9yTm9uZSk7CisK
ICAgICBWOEF1eGlsaWFyeUNvbnRleHQgY29udGV4dDsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdjhWYWx1ZSh2YWx1ZS0+ZGVzZXJpYWxpemUoKSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHY4S2V5KGdldE50aFZhbHVlT25LZXlQYXRoKHY4VmFsdWUsIGtleVBhdGgsIGtleVBhdGgu
c2l6ZSgpKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4S2V5KGdldE50aFZhbHVlT25L
ZXlQYXRoKHY4VmFsdWUsIGtleVBhdGhFbGVtZW50cywga2V5UGF0aEVsZW1lbnRzLnNpemUoKSkp
OwogICAgIGlmICh2OEtleS5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVy
biBjcmVhdGVJREJLZXlGcm9tVmFsdWUodjhLZXkpOwogfQogCi1QYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gaW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShQYXNzUmVmUHRy
PElEQktleT4ga2V5LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBrZXlQYXRoKQorUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IGluamVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUoUGFzc1JlZlB0cjxJREJLZXk+
IGtleSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBjb25zdCBJREJL
ZXlQYXRoJiBrZXlQYXRoKQogewogICAgIElEQl9UUkFDRSgiaW5qZWN0SURCS2V5SW50b1Nlcmlh
bGl6ZWRWYWx1ZSIpOwotICAgIFY4QXV4aWxpYXJ5Q29udGV4dCBjb250ZXh0OwotICAgIGlmICgh
a2V5UGF0aC5zaXplKCkpCisKKyAgICBBU1NFUlQoa2V5UGF0aC50eXBlKCkgPT0gSURCS2V5UGF0
aDo6U3RyaW5nVHlwZSk7CisgICAgVmVjdG9yPFN0cmluZz4ga2V5UGF0aEVsZW1lbnRzOworICAg
IElEQktleVBhdGhQYXJzZUVycm9yIGVycm9yOworICAgIElEQlBhcnNlS2V5UGF0aChrZXlQYXRo
LnN0cmluZygpLCBrZXlQYXRoRWxlbWVudHMsIGVycm9yKTsKKyAgICBBU1NFUlQoZXJyb3IgPT0g
SURCS2V5UGF0aFBhcnNlRXJyb3JOb25lKTsKKworICAgIGlmICgha2V5UGF0aEVsZW1lbnRzLnNp
emUoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKKyAgICBWOEF1eGlsaWFyeUNvbnRleHQgY29udGV4
dDsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdjhWYWx1ZSh2YWx1ZS0+ZGVzZXJpYWxpemUo
KSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHBhcmVudChlbnN1cmVOdGhWYWx1ZU9uS2V5
UGF0aCh2OFZhbHVlLCBrZXlQYXRoLCBrZXlQYXRoLnNpemUoKSAtIDEpKTsKKyAgICB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gcGFyZW50KGVuc3VyZU50aFZhbHVlT25LZXlQYXRoKHY4VmFsdWUsIGtl
eVBhdGhFbGVtZW50cywga2V5UGF0aEVsZW1lbnRzLnNpemUoKSAtIDEpKTsKICAgICBpZiAocGFy
ZW50LklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBpZiAoIXNldChwYXJlbnQs
IGtleVBhdGgubGFzdCgpLCB0b1Y4KGtleS5nZXQoKSkpKQorICAgIGlmICghc2V0KHBhcmVudCwg
a2V5UGF0aEVsZW1lbnRzLmxhc3QoKSwgdG9WOChrZXkuZ2V0KCkpKSkKICAgICAgICAgcmV0dXJu
IDA7CiAKICAgICByZXR1cm4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUodjhWYWx1ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0
aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmgK
aW5kZXggNDcyODZhNTgyMzhmMGEwMjRlMjEzODA1MDVmYmI5NmVhNzY3ZjVhYi4uMzBlZWQ0MjFi
NDViMDkwMzAxMWJkMjQ5YmJhMGQ3NGMyM2JhMjc0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMuaApAQCAtMzQsMTEgKzM0LDEyIEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElEQktleTsKK2NsYXNzIElEQktleVBhdGg7CiBj
bGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CiAKIFBhc3NSZWZQdHI8SURCS2V5PiBjcmVhdGVJ
REJLZXlGcm9tVmFsdWUodjg6OkhhbmRsZTx2ODo6VmFsdWU+KTsKLVBhc3NSZWZQdHI8SURCS2V5
PiBjcmVhdGVJREJLZXlGcm9tU2VyaWFsaXplZFZhbHVlQW5kS2V5UGF0aChQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4sICBjb25zdCBWZWN0b3I8U3RyaW5nLCAwPiYpOwotUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGluamVjdElEQktleUludG9TZXJpYWxpemVkVmFs
dWUoUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4s
IGNvbnN0IFZlY3RvcjxTdHJpbmcsIDA+Jik7CitQYXNzUmVmUHRyPElEQktleT4gY3JlYXRlSURC
S2V5RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtleVBhdGgoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+LCBjb25zdCBJREJLZXlQYXRoJik7CitQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gaW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShQYXNzUmVmUHRyPElEQktl
eT4sIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgY29uc3QgSURCS2V5UGF0aCYp
OwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OElEQkFueUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJ
REJBbnlDdXN0b20uY3BwCmluZGV4IDE3MzNlYzhiY2RhM2E0N2UzZmIwZmE0ZmFjZjU5MGM2NmNh
YmNhZGIuLjBiNzUwMmViOWY3YzczMDhhNGY4OWZjZDAwM2M3MTJjNjc2MWRiMDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOElEQkFueUN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SURCQW55Q3VzdG9tLmNw
cApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIlY4SURCQW55LmgiCiAKICNpbmNsdWRlICJT
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRl
ICJWOERPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJWOElEQkN1cnNvci5oIgogI2luY2x1ZGUg
IlY4SURCQ3Vyc29yV2l0aFZhbHVlLmgiCkBAIC03NCw2ICs3NSw4IEBAIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB0b1Y4KElEQkFueSogaW1wbCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiAgICAgICAg
IHJldHVybiB0b1Y4KGltcGwtPmlkYlRyYW5zYWN0aW9uKCkpOwogICAgIGNhc2UgSURCQW55OjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWVUeXBlOgogICAgICAgICByZXR1cm4gaW1wbC0+c2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKCktPmRlc2VyaWFsaXplKDAsIGlzb2xhdGUpOworICAgIGNhc2UgSURCQW55
OjpTdHJpbmdUeXBlOgorICAgICAgICByZXR1cm4gdjhTdHJpbmcoaW1wbC0+c3RyaW5nKCkpOwog
ICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0RPTVN0cmluZ0xpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01TdHJpbmdM
aXN0LmgKaW5kZXggMDU3ZGFjNDllY2ZmMmU1NjQ0ZDFmNThhZDRmNGFkYjU5ZjBkYmMzYi4uNDY0
ZmEyMmRiMjU2NjE2YTA1MzcxOGI3OWIyZDkzM2Y0ZjIxMDUxYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RPTVN0cmluZ0xpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9N
U3RyaW5nTGlzdC5oCkBAIC01Miw2ICs1Miw4IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgaXRlbSh1
bnNpZ25lZCBpbmRleCkgY29uc3Q7CiAgICAgYm9vbCBjb250YWlucyhjb25zdCBTdHJpbmcmIHN0
cikgY29uc3Q7CiAKKyAgICBvcGVyYXRvciBjb25zdCBWZWN0b3I8U3RyaW5nPiYoKSBjb25zdCB7
IHJldHVybiBtX3N0cmluZ3M7IH0KKwogcHJpdmF0ZToKICAgICBET01TdHJpbmdMaXN0KCkgeyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVk
REJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERC
QWdlbnQuY3BwCmluZGV4IDY0MWNjYzE0OGY5YTA3OWY1YTMyNmQwZWViZjE3OWJhODljODNjYTMu
LjcyMmE5NGIyMTVmN2UzMjdhYTkyNzA0ZGJmNWZlYTcyZjIwMDBhN2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcApAQCAt
NDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgiCiAj
aW5jbHVkZSAiSURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCS2V5Lmgi
CisjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgogI2luY2x1ZGUgIklEQktleVJhbmdlLmgiCiAjaW5j
bHVkZSAiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCUGVu
ZGluZ1RyYW5zYWN0aW9uTW9uaXRvci5oIgpAQCAtMjI1LDYgKzIyNiwyNSBAQCBzdGF0aWMgUGFz
c1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGluZGV4Rm9yT2JqZWN0U3RvcmUoSURC
T2JqZWN0U3RvcmVCYQogICAgIHJldHVybiBpZGJJbmRleDsKIH0KIAorc3RhdGljIFN0cmluZyBr
ZXlQYXRoVG9TdHJpbmcoY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCkKK3sKKyAgICAvLyBGSVhN
RTogUmVwbGFjZSB3aXRoIGhhbmRsZXJzIGZvciBudWxsL3N0cmluZy9hcnJheSB0eXBlcy4KKyAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQzMDMKKyAgICBz
d2l0Y2ggKGtleVBhdGgudHlwZSgpKSB7CisgICAgY2FzZSBJREJLZXlQYXRoOjpOdWxsVHlwZToK
KyAgICAgICAgcmV0dXJuICIobm9uZSkiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIElEQktl
eVBhdGg6OlN0cmluZ1R5cGU6CisgICAgICAgIHJldHVybiBrZXlQYXRoLnN0cmluZygpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIElEQktleVBhdGg6OkFycmF5VHlwZToKKyAgICAgICAgcmV0
dXJuICJbLi4uXSI7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKIGNsYXNzIERhdGFiYXNlTG9hZGVyQ2Fs
bGJhY2sgOiBwdWJsaWMgRXhlY3V0YWJsZVdpdGhEYXRhYmFzZSB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8RGF0YWJhc2VMb2FkZXJDYWxsYmFjaz4gY3JlYXRlKEluc3BlY3Rvcklu
ZGV4ZWREQkFnZW50OjpGcm9udGVuZFByb3ZpZGVyKiBmcm9udGVuZFByb3ZpZGVyLCBpbnQgcmVx
dWVzdElkKQpAQCAtMjYwLDcgKzI4MCw3IEBAIHB1YmxpYzoKIAogICAgICAgICAgICAgICAgIFJl
ZlB0cjxPYmplY3RTdG9yZUluZGV4PiBvYmplY3RTdG9yZUluZGV4ID0gT2JqZWN0U3RvcmVJbmRl
eDo6Y3JlYXRlKCkKICAgICAgICAgICAgICAgICAgICAgLnNldE5hbWUoaWRiSW5kZXgtPm5hbWUo
KSkKLSAgICAgICAgICAgICAgICAgICAgLnNldEtleVBhdGgoaWRiSW5kZXgtPmtleVBhdGgoKSkK
KyAgICAgICAgICAgICAgICAgICAgLnNldEtleVBhdGgoa2V5UGF0aFRvU3RyaW5nKGlkYkluZGV4
LT5rZXlQYXRoKCkpKQogICAgICAgICAgICAgICAgICAgICAuc2V0VW5pcXVlKGlkYkluZGV4LT51
bmlxdWUoKSkKICAgICAgICAgICAgICAgICAgICAgLnNldE11bHRpRW50cnkoaWRiSW5kZXgtPm11
bHRpRW50cnkoKSk7CiAgICAgICAgICAgICAgICAgaW5kZXhlcy0+YWRkSXRlbShvYmplY3RTdG9y
ZUluZGV4KTsKQEAgLTI2OCw3ICsyODgsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgICAgIFJlZlB0
cjxPYmplY3RTdG9yZT4gb2JqZWN0U3RvcmUgPSBPYmplY3RTdG9yZTo6Y3JlYXRlKCkKICAgICAg
ICAgICAgICAgICAuc2V0TmFtZShpZGJPYmplY3RTdG9yZS0+bmFtZSgpKQotICAgICAgICAgICAg
ICAgIC5zZXRLZXlQYXRoKGlkYk9iamVjdFN0b3JlLT5rZXlQYXRoKCkpCisgICAgICAgICAgICAg
ICAgLnNldEtleVBhdGgoa2V5UGF0aFRvU3RyaW5nKGlkYk9iamVjdFN0b3JlLT5rZXlQYXRoKCkp
KQogICAgICAgICAgICAgICAgIC5zZXRJbmRleGVzKGluZGV4ZXMpOwogICAgICAgICAgICAgb2Jq
ZWN0U3RvcmVzLT5hZGRJdGVtKG9iamVjdFN0b3JlKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaAppbmRleCBiYWVh
YjA1ZWMxOWNiNWYzZTI5MGQ5ZDg4MGU1ZDc5MGUwOTAwNWFkLi5hZjNlNWUzZmVhZGJmZGIzYmE4
NTk2MDY3NWMzOGJmZWNmOWQ0NWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaApAQCAtNzgsNiArNzgsNyBAQCBjbGFzcyBHcmFw
aGljc0NvbnRleHQ7CiBjbGFzcyBJbWFnZTsKIGNsYXNzIElEQkZhY3RvcnlCYWNrZW5kSW50ZXJm
YWNlOwogY2xhc3MgSURCS2V5OworY2xhc3MgSURCS2V5UGF0aDsKIGNsYXNzIEludFJlY3Q7CiBj
bGFzcyBLVVJMOwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwpAQCAtMTgwLDkgKzE4MSw5
IEBAIHB1YmxpYzoKICAgICAvLyBJbmRleGVkREIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPElE
QkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlPiBpZGJGYWN0b3J5KCk7CiAgICAgLy8gRXh0cmFjdHMg
a2V5UGF0aCBmcm9tIHZhbHVlcyBhbmQgcmV0dXJucyB0aGUgY29ycmVzcG9uZGluZyBrZXlzLgot
ICAgIHN0YXRpYyB2b2lkIGNyZWF0ZUlEQktleXNGcm9tU2VyaWFsaXplZFZhbHVlc0FuZEtleVBh
dGgoY29uc3QgVmVjdG9yPFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+ID4mIHZhbHVlcywg
Y29uc3QgU3RyaW5nJiBrZXlQYXRoLCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiYga2V5cyk7Cisg
ICAgc3RhdGljIHZvaWQgY3JlYXRlSURCS2V5c0Zyb21TZXJpYWxpemVkVmFsdWVzQW5kS2V5UGF0
aChjb25zdCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gPiYgdmFsdWVzLCBj
b25zdCBJREJLZXlQYXRoJiwgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mIGtleXMpOwogICAgIC8v
IEluamVjdHMga2V5IHZpYSBrZXlQYXRoIGludG8gdmFsdWUuIFJldHVybnMgdHJ1ZSBvbiBzdWNj
ZXNzLgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gaW5qZWN0
SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKTsKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGluamVjdElEQktleUludG9TZXJp
YWxpemVkVmFsdWUoUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4sIGNvbnN0IElEQktleVBhdGgmKTsKIAogICAgIC8vIEphdmFTY3JpcHQgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAg
c3RhdGljIHZvaWQgbm90aWZ5SlNPdXRPZk1lbW9yeShGcmFtZSopOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9jaHJvbWl1bS9JREJLZXlQYXRoQmFja2VuZEltcGwuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9jaHJvbWl1bS9JREJLZXlQYXRoQmFja2VuZEltcGwuY3Bw
CmluZGV4IGI4MDRhMGZmOGExNGZhNzcyMjU4MmQyZGMyNGU0ZWY4MWVhYTMwOTQuLmM4NmM3N2Q5
NzczOWI1NTQ0MjBkNTg5YzcwOWEzZTdmMDZkZDFiZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvY2hyb21pdW0vSURCS2V5UGF0aEJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL2Nocm9taXVtL0lEQktleVBhdGhCYWNrZW5kSW1wbC5jcHAKQEAg
LTM0LDEyICszNCwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgSURCS2V5UGF0
aEJhY2tlbmRJbXBsOjpjcmVhdGVJREJLZXlzRnJvbVNlcmlhbGl6ZWRWYWx1ZXNBbmRLZXlQYXRo
KGNvbnN0IFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgMD4mIHZhbHVlcywg
IGNvbnN0IFN0cmluZyYga2V5UGF0aCwgVmVjdG9yPFJlZlB0cjxJREJLZXk+LCAwPiYga2V5cykK
K3ZvaWQgSURCS2V5UGF0aEJhY2tlbmRJbXBsOjpjcmVhdGVJREJLZXlzRnJvbVNlcmlhbGl6ZWRW
YWx1ZXNBbmRLZXlQYXRoKGNvbnN0IFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiwgMD4mIHZhbHVlcywgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgVmVjdG9yPFJlZlB0cjxJ
REJLZXk+LCAwPiYga2V5cykKIHsKICAgICBQbGF0Zm9ybVN1cHBvcnQ6OmNyZWF0ZUlEQktleXNG
cm9tU2VyaWFsaXplZFZhbHVlc0FuZEtleVBhdGgodmFsdWVzLCBrZXlQYXRoLCBrZXlzKTsKIH0K
IAotUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IElEQktleVBhdGhCYWNrZW5kSW1w
bDo6aW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShQYXNzUmVmUHRyPElEQktleT4ga2V5
LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIGNvbnN0IFN0cmluZyYg
a2V5UGF0aCkKK1Bhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBJREJLZXlQYXRoQmFj
a2VuZEltcGw6OmluamVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUoUGFzc1JlZlB0cjxJREJL
ZXk+IGtleSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBjb25zdCBJ
REJLZXlQYXRoJiBrZXlQYXRoKQogewogICAgIHJldHVybiBQbGF0Zm9ybVN1cHBvcnQ6OmluamVj
dElEQktleUludG9TZXJpYWxpemVkVmFsdWUoa2V5LCB2YWx1ZSwga2V5UGF0aCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0RFUFMgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0RFUFMKaW5kZXggY2EwMDY5NWU4ZTdhZWI1MjEwZmNiZWMyNjkzMGZlZDc5ODljYmRlMS4u
M2FjNTg2NDE5NmFhMmQ0ZmNkMDQ5NzU5ODQxNDBjN2FkNDQ2ZDdmNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9ERVBTCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vREVQ
UwpAQCAtMzIsNyArMzIsNyBAQAogCiB2YXJzID0gewogICAnY2hyb21pdW1fc3ZuJzogJ2h0dHA6
Ly9zcmMuY2hyb21pdW0ub3JnL3N2bi90cnVuay9zcmMnLAotICAnY2hyb21pdW1fcmV2JzogJzEz
NDUzNycKKyAgJ2Nocm9taXVtX3Jldic6ICcxMzQ1ODEnCiB9CiAKIGRlcHMgPSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2UuaAppbmRleCBmNTNiMDJl
MzlhN2I3MmZhZWRmYjVmYmMwZjA0ZThmYTMwZGEzMTEzLi5iMzk4NTM0MTY1NTQzYTE5N2E2MTc5
N2Q1NDc0OWRhODVlM2EzNTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJJREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYklEQkRhdGFiYXNlLmgKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgIldlYkRPTVN0
cmluZ0xpc3QuaCIKICNpbmNsdWRlICJXZWJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSAiV2Vi
SURCS2V5UGF0aC5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKQEAgLTM2LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBX
ZWJGcmFtZTsKIGNsYXNzIFdlYklEQkNhbGxiYWNrczsKIGNsYXNzIFdlYklEQkRhdGFiYXNlQ2Fs
bGJhY2tzOworY2xhc3MgV2ViSURCS2V5UGF0aDsKIGNsYXNzIFdlYklEQk9iamVjdFN0b3JlOwog
Y2xhc3MgV2ViSURCVHJhbnNhY3Rpb247CiAKQEAgLTU5LDEyICs1OSw2IEBAIHB1YmxpYzoKICAg
ICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gV2ViRE9N
U3RyaW5nTGlzdCgpOwogICAgIH0KLSAgICAvLyBGSVhNRTogUmVtb3ZlIFdlYlN0cmluZyBrZXlQ
YXRoIG92ZXJsb2FkIG9uY2UgY2FsbGVycyBhcmUgdXBkYXRlZC4KLSAgICAvLyBodHRwOi8vd2Vi
a2l0Lm9yZy9iLzg0MjA3Ci0gICAgdmlydHVhbCBXZWJJREJPYmplY3RTdG9yZSogY3JlYXRlT2Jq
ZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGtleVBhdGgs
IGJvb2wgYXV0b0luY3JlbWVudCwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9u
LCBXZWJFeGNlcHRpb25Db2RlJiBlYykKLSAgICB7Ci0gICAgICAgIHJldHVybiBjcmVhdGVPYmpl
Y3RTdG9yZShuYW1lLCBXZWJJREJLZXlQYXRoKGtleVBhdGgpLCBhdXRvSW5jcmVtZW50LCB0cmFu
c2FjdGlvbiwgZWMpOwotICAgIH0KICAgICB2aXJ0dWFsIFdlYklEQk9iamVjdFN0b3JlKiBjcmVh
dGVPYmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcmLCBjb25zdCBXZWJJREJLZXlQYXRoJiwgYm9v
bCwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJikKICAgICB7CiAg
ICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkluZGV4LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJJREJJbmRleC5oCmluZGV4IDM3YWYwMmMwYzhiMzEzOWRkMzZhZWJjMDdi
NWQzODE3NTYzYTBiNzYuLmMyZmYwMDFkMmU0Mzc5M2U2NzdiNTc3YTNmNjNlY2ZjMjMzNDRjMzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkluZGV4LmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCSW5kZXguaApAQCAtNTQs
MTQgKzU0LDggQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIFdlYklEQktleVBhdGgga2V5
UGF0aCgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gV2ViSURCS2V5UGF0aChrZXlQYXRo
U3RyaW5nKCkpOwotICAgIH0KLSAgICAvLyBGSVhNRTogUmVtb3ZlIG1ldGhvZCBvbmNlIGNhbGxl
cnMgYXJlIHVwZGF0ZWQuCi0gICAgLy8gaHR0cDovL3dlYmtpdC5vcmcvYi84NDIwNwotICAgIHZp
cnR1YWwgV2ViU3RyaW5nIGtleVBhdGhTdHJpbmcoKSBjb25zdAotICAgIHsKICAgICAgICAgV0VC
S0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gV2ViU3RyaW5nKCk7Cisg
ICAgICAgIHJldHVybiBXZWJJREJLZXlQYXRoOjpjcmVhdGVOdWxsKCk7CiAgICAgfQogICAgIHZp
cnR1YWwgYm9vbCB1bmlxdWUoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYklEQktleVBhdGguaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYklEQktleVBhdGguaAppbmRleCA5N2JhYzA2ZmZlODRhM2ZkMGQyM2EzZjE0
YWQxMjk3MzkzNGYyYWU1Li5iZWIxZmEyMmQ4ZDA5MWMyMGVkMWU1NWNjMmIzMDc3MTBiOWRkZjY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJLZXlQYXRo
LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCS2V5UGF0aC5oCkBA
IC0zNiw2ICszNiw4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0
eT4gY2xhc3MgVmVjdG9yOwogY2xhc3MgU3RyaW5nOwogfQogCituYW1lc3BhY2UgV2ViQ29yZSB7
IGNsYXNzIElEQktleVBhdGg7IH0KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYklE
QktleVBhdGggewpAQCAtNDQsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0VYUE9SVCBz
dGF0aWMgV2ViSURCS2V5UGF0aCBjcmVhdGUoY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mKTsK
ICAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJJREJLZXlQYXRoIGNyZWF0ZU51bGwoKTsKICAg
ICBXRUJLSVRfRVhQT1JUIFdlYklEQktleVBhdGgoY29uc3QgV2ViSURCS2V5UGF0aCYpOwotICAg
IH5XZWJJREJLZXlQYXRoKCkgeyByZXNldCgpOyB9CisgICAgV0VCS0lUX0VYUE9SVCB+V2ViSURC
S2V5UGF0aCgpOwogCiAgICAgZW51bSBUeXBlIHsKICAgICAgICAgTnVsbFR5cGUgPSAwLApAQCAt
NTQsMzAgKzU2LDE3IEBAIHB1YmxpYzoKIAogICAgIFdFQktJVF9FWFBPUlQgYm9vbCBpc1ZhbGlk
KCkgY29uc3Q7CiAgICAgV0VCS0lUX0VYUE9SVCBUeXBlIHR5cGUoKSBjb25zdDsKLSAgICAvLyBG
SVhNRTogQXJyYXktdHlwZSBrZXkgcGF0aHMgbm90IHlldCBzdXBwb3J0ZWQuIGh0dHA6Ly93ZWJr
aXQub3JnL2IvODQyMDcKLSAgICBXZWJWZWN0b3I8V2ViU3RyaW5nPiBhcnJheSgpIGNvbnN0IHsg
V0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gV2ViVmVjdG9yPFdlYlN0cmluZz4o
KTsgfQotICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIHN0cmluZygpIGNvbnN0OwotCi0gICAg
Ly8gRklYTUU6IFJlbW92ZSB0aGVzZSBvbmNlIGNhbGxlcnMgYXJlIHVwZGF0ZWQuIGh0dHA6Ly93
ZWJraXQub3JnL2IvODQyMDcKLSAgICBXRUJLSVRfRVhQT1JUIFdlYklEQktleVBhdGgoY29uc3Qg
V2ViU3RyaW5nJik7Ci0gICAgb3BlcmF0b3IgY29uc3QgV2ViU3RyaW5nICgpIGNvbnN0IHsgcmV0
dXJuIHN0cmluZygpOyB9Ci0gICAgV0VCS0lUX0VYUE9SVCBpbnQgcGFyc2VFcnJvcigpIGNvbnN0
OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhc3NpZ24oY29uc3QgV2ViSURCS2V5UGF0aCYpOwot
ICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXNldCgpOworICAgIFdFQktJVF9FWFBPUlQgV2ViVmVj
dG9yPFdlYlN0cmluZz4gYXJyYXkoKSBjb25zdDsgLy8gT25seSB2YWxpZCBmb3IgQXJyYXlUeXBl
LgorICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIHN0cmluZygpIGNvbnN0OyAvLyBPbmx5IHZh
bGlkIGZvciBTdHJpbmdUeXBlLgogCiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgb3Bl
cmF0b3IgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmcsIDA+JiAoKSBjb25zdDsKKyAgICBX
ZWJJREJLZXlQYXRoKGNvbnN0IFdlYkNvcmU6OklEQktleVBhdGgmKTsKKyAgICBXZWJJREJLZXlQ
YXRoJiBvcGVyYXRvcj0oY29uc3QgV2ViQ29yZTo6SURCS2V5UGF0aCYpOworICAgIG9wZXJhdG9y
IGNvbnN0IFdlYkNvcmU6OklEQktleVBhdGgmKCkgY29uc3Q7CiAjZW5kaWYKIAogcHJpdmF0ZToK
LSAgICBXZWJJREJLZXlQYXRoKCk7Ci0KLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBX
ZWJJREJLZXlQYXRoKGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nLCAwPiYsIGludCBwYXJz
ZUVycm9yKTsKLSNlbmRpZgotCi0gICAgV2ViUHJpdmF0ZU93blB0cjxXVEY6OlZlY3RvcjxXVEY6
OlN0cmluZywgMD4gPiBtX3ByaXZhdGU7Ci0gICAgaW50IG1fcGFyc2VFcnJvcjsKKyAgICBXZWJQ
cml2YXRlT3duUHRyPFdlYkNvcmU6OklEQktleVBhdGg+IG1fcHJpdmF0ZTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViSURCT2JqZWN0U3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YklEQk9iamVjdFN0b3JlLmgKaW5kZXggZGNmNDg1NjkyNTEwY2ZmOWI4MWY2NGUwZDE3YjAyYmRi
ODFhOWRjNC4uOThlMDQ4YzNhMTFhMGZiMTM1Y2I1NzZjYTQ4OWUxOWRkZjI5NTBiZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCT2JqZWN0U3RvcmUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJPYmplY3RTdG9yZS5oCkBA
IC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiV2ViRE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUg
IldlYklEQkNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIldlYklEQktleVBhdGguaCIKLSNpbmNsdWRl
ICJXZWJJREJUcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgog
I2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5oIgogCkBAIC01MSwxMiArNTAsOCBAQCBwdWJs
aWM6CiAgICAgfQogICAgIHZpcnR1YWwgV2ViSURCS2V5UGF0aCBrZXlQYXRoKCkgY29uc3QKICAg
ICB7Ci0gICAgICAgIHJldHVybiBXZWJJREJLZXlQYXRoKGtleVBhdGhTdHJpbmcoKSk7Ci0gICAg
fQotICAgIHZpcnR1YWwgV2ViU3RyaW5nIGtleVBhdGhTdHJpbmcoKSBjb25zdAotICAgIHsKICAg
ICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gV2ViU3Ry
aW5nKCk7CisgICAgICAgIHJldHVybiBXZWJJREJLZXlQYXRoOjpjcmVhdGVOdWxsKCk7CiAgICAg
fQogICAgIHZpcnR1YWwgV2ViRE9NU3RyaW5nTGlzdCBpbmRleE5hbWVzKCkgY29uc3QKICAgICB7
CkBAIC03NiwxMyArNzEsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1bmN0
aW9uKGNvbnN0IFdlYklEQktleSYsIFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYklEQlRyYW5z
YWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OyB9CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1bmN0aW9uKGNvbnN0IFdlYklEQktleVJhbmdl
JiwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRp
b25Db2RlJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIHZv
aWQgY2xlYXIoV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJF
eGNlcHRpb25Db2RlJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLQotICAgIC8v
IEZJWE1FOiBSZW1vdmUgV2ViU3RyaW5nIGtleVBhdGggb3ZlcmxvYWQgb25jZSBjYWxsZXJzIGFy
ZSB1cGRhdGVkLgotICAgIC8vIGh0dHA6Ly93ZWJraXQub3JnL2IvODQyMDcKLSAgICB2aXJ0dWFs
IFdlYklEQkluZGV4KiBjcmVhdGVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdl
YlN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSwgY29uc3QgV2Vi
SURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBXZWJFeGNlcHRpb25Db2RlJiBlYykKLSAgICB7
Ci0gICAgICAgIHJldHVybiBjcmVhdGVJbmRleChuYW1lLCBXZWJJREJLZXlQYXRoKGtleVBhdGgp
LCB1bmlxdWUsIG11bHRpRW50cnksIHRyYW5zYWN0aW9uLCBlYyk7Ci0gICAgfQogICAgIHZpcnR1
YWwgV2ViSURCSW5kZXgqIGNyZWF0ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYsIGNvbnN0IFdlYklE
QktleVBhdGgmLCBib29sLCBib29sLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2Vw
dGlvbkNvZGUmKQogICAgIHsKICAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViS2l0
UGxhdGZvcm1TdXBwb3J0LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9y
bS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaAppbmRleCBjYTM3NjJkY2JlYmU0YmYyYmJhYTZkMDAw
MTRmOGFhNDNmODUxNGYyLi41NjM4MDQxNTRmOTNhMDMzYWU1N2YyZTk2MjQzNDNkYjljNjM4NzFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJL
aXRQbGF0Zm9ybVN1cHBvcnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9w
bGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaApAQCAtMzEsNyArMzEsNiBAQAogI2lmbmRl
ZiBXZWJLaXRQbGF0Zm9ybVN1cHBvcnRfaAogI2RlZmluZSBXZWJLaXRQbGF0Zm9ybVN1cHBvcnRf
aAogCi0jaW5jbHVkZSAiLi4vV2ViSURCS2V5UGF0aC5oIiAvLyBGSVhNRTogUmVtb3ZlIHdpdGg6
IGh0dHA6Ly93ZWJraXQub3JnL2IvODQyMDcKICNpbmNsdWRlICJXZWJDb21tb24uaCIKICNpbmNs
dWRlICJXZWJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIldlYkxvY2FsaXplZFN0cmlu
Zy5oIgpAQCAtNTcsNiArNTYsNyBAQCBjbGFzcyBXZWJGaWxlU3lzdGVtOwogY2xhc3MgV2ViRmls
ZVV0aWxpdGllczsKIGNsYXNzIFdlYklEQkZhY3Rvcnk7IC8vIEZJWE1FOiBEb2VzIHRoaXMgYmVs
b25nIGluIHBsYXRmb3JtPwogY2xhc3MgV2ViSURCS2V5OyAvLyBGSVhNRTogRG9lcyB0aGlzIGJl
bG9uZyBpbiBwbGF0Zm9ybT8KK2NsYXNzIFdlYklEQktleVBhdGg7IC8vIEZJWE1FOiBEb2VzIHRo
aXMgYmVsb25nIGluIHBsYXRmb3JtPwogY2xhc3MgV2ViTWVzc2FnZVBvcnRDaGFubmVsOyAvLyBG
SVhNRTogRG9lcyB0aGlzIGJlbG9uZyBpbiBwbGF0Zm9ybT8KIGNsYXNzIFdlYlBsdWdpbkxpc3RC
dWlsZGVyOyAvLyBGSVhNRTogRG9lcyB0aGlzIGJlbG9uZyBpbiBwbGF0Zm9ybT8KIGNsYXNzIFdl
YlNhbmRib3hTdXBwb3J0OwpAQCAtMTI3LDEzICsxMjcsNyBAQCBwdWJsaWM6CiAgICAgLy8gSW5k
ZXhlZCBEYXRhYmFzZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAKICAgICB2aXJ0dWFsIFdlYklEQkZhY3RvcnkqIGlkYkZhY3RvcnkoKSB7IHJl
dHVybiAwOyB9Ci0gICAgLy8gRklYTUU6IFJlbW92ZSBXZWJTdHJpbmcga2V5UGF0aCBvdmVybG9h
ZCBvbmNlIGNhbGxlcnMgYXJlIHVwZGF0ZWQuCi0gICAgLy8gaHR0cDovL3dlYmtpdC5vcmcvYi84
NDIwNwotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVJREJLZXlzRnJvbVNlcmlhbGl6ZWRWYWx1ZXNB
bmRLZXlQYXRoKGNvbnN0IFdlYlZlY3RvcjxXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiB2YWx1
ZXMsICBjb25zdCBXZWJTdHJpbmcmIGtleVBhdGgsIFdlYlZlY3RvcjxXZWJJREJLZXk+JiBrZXlz
KSB7IGNyZWF0ZUlEQktleXNGcm9tU2VyaWFsaXplZFZhbHVlc0FuZEtleVBhdGgodmFsdWVzLCBX
ZWJJREJLZXlQYXRoKGtleVBhdGgpLCBrZXlzKTsgfQogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVJ
REJLZXlzRnJvbVNlcmlhbGl6ZWRWYWx1ZXNBbmRLZXlQYXRoKGNvbnN0IFdlYlZlY3RvcjxXZWJT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+JiB2YWx1ZXMsICBjb25zdCBXZWJJREJLZXlQYXRoJiBrZXlQ
YXRoLCBXZWJWZWN0b3I8V2ViSURCS2V5PiYga2V5cykgeyB9Ci0gICAgLy8gRklYTUU6IFJlbW92
ZSBXZWJTdHJpbmcga2V5UGF0aCBvdmVybG9hZCBvbmNlIGNhbGxlcnMgYXJlIHVwZGF0ZWQuCi0g
ICAgLy8gaHR0cDovL3dlYmtpdC5vcmcvYi84NDIwNwotICAgIHZpcnR1YWwgV2ViU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlIGluamVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUoY29uc3QgV2ViSURC
S2V5JiBrZXksIGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IFdl
YlN0cmluZyYga2V5UGF0aCkgeyByZXR1cm4gaW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1
ZShrZXksIHZhbHVlLCBXZWJJREJLZXlQYXRoKGtleVBhdGgpKTsgfQogICAgIHZpcnR1YWwgV2Vi
U2VyaWFsaXplZFNjcmlwdFZhbHVlIGluamVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUoY29u
c3QgV2ViSURCS2V5JiBrZXksIGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgdmFsdWUs
IGNvbnN0IFdlYklEQktleVBhdGgmIGtleVBhdGgpIHsgcmV0dXJuIFdlYlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSgpOyB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
QXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3Nl
cnRNYXRjaGluZ0VudW1zLmNwcAppbmRleCA2OWU1OTYyMjlmNDNkMmZkZTQ1Y2RiNGEwNzBjNWQ3
ZDNkNjA4YmU5Li44NGIyNTJlZDI2NWFlMjFjYjE4YzkxYmFhMWI3MmY4MjFmODVmNmQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNw
cApAQCAtNTIsNiArNTIsNyBAQAogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCiAj
aW5jbHVkZSAiSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJLZXku
aCIKKyNpbmNsdWRlICJJREJLZXlQYXRoLmgiCiAjaW5jbHVkZSAiSWNlT3B0aW9ucy5oIgogI2lu
Y2x1ZGUgIkljb25VUkwuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgpAQCAtODQsNiArODUs
NyBAQAogI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiV2Vi
SURCRmFjdG9yeS5oIgogI2luY2x1ZGUgIldlYklEQktleS5oIgorI2luY2x1ZGUgIldlYklEQktl
eVBhdGguaCIKICNpbmNsdWRlICJXZWJJY29uVVJMLmgiCiAjaW5jbHVkZSAiV2ViSW5wdXRFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiV2ViTWVkaWFQbGF5ZXIuaCIKQEAgLTQ2MywxMiArNDY1LDE4IEBA
IENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViVmlldzo6VXNlclN0eWxlSW5qZWN0SW5T
dWJzZXF1ZW50RG9jdW1lbnRzLCBJbmplCiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdl
YklEQkRhdGFiYXNlRXhjZXB0aW9uRGF0YUVycm9yLCBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFU
QV9FUlIpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJEYXRhYmFzZUV4Y2Vw
dGlvblF1b3RhRXJyb3IsIElEQkRhdGFiYXNlRXhjZXB0aW9uOjpRVU9UQV9FUlIpOwogCisjaWYg
RU5BQkxFKElOREVYRURfREFUQUJBU0UpCiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdl
YklEQktleTo6SW52YWxpZFR5cGUsIElEQktleTo6SW52YWxpZFR5cGUpOwogQ09NUElMRV9BU1NF
UlRfTUFUQ0hJTkdfRU5VTShXZWJJREJLZXk6OkFycmF5VHlwZSwgSURCS2V5OjpBcnJheVR5cGUp
OwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJLZXk6OlN0cmluZ1R5cGUsIElE
QktleTo6U3RyaW5nVHlwZSk7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYklEQktl
eTo6RGF0ZVR5cGUsIElEQktleTo6RGF0ZVR5cGUpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdf
RU5VTShXZWJJREJLZXk6Ok51bWJlclR5cGUsIElEQktleTo6TnVtYmVyVHlwZSk7CiAKK0NPTVBJ
TEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViSURCS2V5UGF0aDo6TnVsbFR5cGUsIElEQktleVBh
dGg6Ok51bGxUeXBlKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViSURCS2V5UGF0
aDo6U3RyaW5nVHlwZSwgSURCS2V5UGF0aDo6U3RyaW5nVHlwZSk7CitDT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKFdlYklEQktleVBhdGg6OkFycmF5VHlwZSwgSURCS2V5UGF0aDo6QXJyYXlU
eXBlKTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogQ09NUElMRV9BU1NFUlRf
TUFUQ0hJTkdfRU5VTShXZWJGaWxlU3lzdGVtOjpUeXBlVGVtcG9yYXJ5LCBBc3luY0ZpbGVTeXN0
ZW06OlRlbXBvcmFyeSk7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkZpbGVTeXN0
ZW06OlR5cGVQZXJzaXN0ZW50LCBBc3luY0ZpbGVTeXN0ZW06OlBlcnNpc3RlbnQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHku
Y3BwCmluZGV4IDE3OTc5OTI3NWQ2Zjk5NzYzMDE3N2U1YTI4YmQ5M2JhMzE3MjYwNGYuLjZlNTM1
NDk5YTM4YzRhOTM1MDlhNmU0ZjU1NmNmOThhYzhmMjAwNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHAKQEAgLTc1
LDcgKzc1LDcgQEAgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBJREJEYXRhYmFzZUJhY2tlbmRQ
cm94eTo6b2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0CiAgICAgcmV0dXJuIG1fd2ViSURCRGF0YWJh
c2UtPm9iamVjdFN0b3JlTmFtZXMoKTsKIH0KIAotUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbnRlcmZhY2U+IElEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpjcmVhdGVPYmplY3RTdG9y
ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5j
cmVtZW50LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBFeGNl
cHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNl
PiBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2VwdGlvbkNvZGUm
IGVjKQogewogICAgIC8vIFRoZSB0cmFuc2FjdGlvbiBwb2ludGVyIGlzIGd1YXJhbnRlZWQgdG8g
YmUgYSBwb2ludGVyIHRvIGEgcHJveHkgb2JqZWN0IGFzLCBpbiB0aGUgcmVuZGVyZXIsCiAgICAg
Ly8gYWxsIGltcGxlbWVudGF0aW9ucyBvZiBJREIgaW50ZXJmYWNlcyBhcmUgcHJveHkgb2JqZWN0
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFj
a2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tl
bmRQcm94eS5oCmluZGV4IDVhNWJhZjI4ZjA5NmE5OTQ3ZmFiMDUyZmVkYjFlOWFlMzc3ZWE2NWEu
LmI3OGFjNjk5MmNkY2ZmMTM4N2E5ZWMwOGIzODY4ZWI2Y2ZjNDMzOTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaApAQCAt
NDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgdmVyc2lvbigpIGNvbnN0
OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpET01TdHJpbmdMaXN0PiBvYmplY3RT
dG9yZU5hbWVzKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURC
T2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRpb25D
b2RlJik7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFj
a2VuZEludGVyZmFjZT4gY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBXZWJDb3JlOjpJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50LCBXZWJDb3JlOjpJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CiAg
ICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgV2Vi
Q29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0aW9u
Q29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lv
biwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFdlYkNvcmU6
OklEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwogICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+
IHRyYW5zYWN0aW9uKFdlYkNvcmU6OkRPTVN0cmluZ0xpc3QqIHN0b3JlTmFtZXMsIHVuc2lnbmVk
IHNob3J0IG1vZGUsIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkluZGV4QmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0lEQkluZGV4QmFja2VuZFByb3h5LmNwcAppbmRleCAwMDE0ZjI5
NTk2YWViM2ExYWMzM2FiN2NiZTZjYzUzODA5MjIyYmE2Li41YmM0MmU2ZGIxZjI0YjM2NmE3YWUx
YzY3OGNkYzlkYTIzMjE0NTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJJbmRleEJhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvSURCSW5kZXhCYWNrZW5kUHJveHkuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxF
KElOREVYRURfREFUQUJBU0UpCiAKICNpbmNsdWRlICJJREJDYWxsYmFja3MuaCIKKyNpbmNsdWRl
ICJJREJLZXlQYXRoLmgiCiAjaW5jbHVkZSAiSURCS2V5UmFuZ2UuaCIKICNpbmNsdWRlICJJREJU
cmFuc2FjdGlvbkJhY2tlbmRQcm94eS5oIgogI2luY2x1ZGUgIldlYklEQkNhbGxiYWNrc0ltcGwu
aCIKQEAgLTY1LDkgKzY2LDkgQEAgU3RyaW5nIElEQkluZGV4QmFja2VuZFByb3h5OjpzdG9yZU5h
bWUoKQogICAgIHJldHVybiBtX3dlYklEQkluZGV4LT5zdG9yZU5hbWUoKTsKIH0KIAotU3RyaW5n
IElEQkluZGV4QmFja2VuZFByb3h5OjprZXlQYXRoKCkKK0lEQktleVBhdGggSURCSW5kZXhCYWNr
ZW5kUHJveHk6OmtleVBhdGgoKQogewotICAgIHJldHVybiBtX3dlYklEQkluZGV4LT5rZXlQYXRo
KCkuc3RyaW5nKCk7CisgICAgcmV0dXJuIG1fd2ViSURCSW5kZXgtPmtleVBhdGgoKTsKIH0KIAog
Ym9vbCBJREJJbmRleEJhY2tlbmRQcm94eTo6dW5pcXVlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0lEQkluZGV4QmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9JREJJbmRleEJhY2tlbmRQcm94eS5oCmluZGV4IDQyZTBlYWJiZWUxN2Ex
NjcwODc4ZjcwMDViMzA5ZTViZDEyMDhjZDAuLjA2NzAwNTIxMGRlMjYzOGY3NTJkNDljNTU2OTY5
Y2VkNmVlODU1ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQklu
ZGV4QmFja2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCSW5k
ZXhCYWNrZW5kUHJveHkuaApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQogCiAjaW5jbHVkZSAiSURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlLmgiCisjaW5jbHVk
ZSAiSURCS2V5UGF0aC5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgogCkBAIC00Myw3ICs0NCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
U3RyaW5nIG5hbWUoKTsKICAgICB2aXJ0dWFsIFN0cmluZyBzdG9yZU5hbWUoKTsKLSAgICB2aXJ0
dWFsIFN0cmluZyBrZXlQYXRoKCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpJREJLZXlQYXRoIGtl
eVBhdGgoKTsKICAgICB2aXJ0dWFsIGJvb2wgdW5pcXVlKCk7CiAgICAgdmlydHVhbCBib29sIG11
bHRpRW50cnkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURC
T2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
SURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuY3BwCmluZGV4IDIxYTVkZDg1NmRjM2I4MDU5ODk3
N2MwNDg2MmViODZkZmU4NzljMGQuLmRiMWE0NGE2YTJhOTgyNGQxYjFhMWVlNDkxZjE2YjkyNTZi
MDU5ZjYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0
b3JlQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJP
YmplY3RTdG9yZUJhY2tlbmRQcm94eS5jcHAKQEAgLTY0LDkgKzY0LDkgQEAgU3RyaW5nIElEQk9i
amVjdFN0b3JlQmFja2VuZFByb3h5OjpuYW1lKCkgY29uc3QKICAgICByZXR1cm4gbV93ZWJJREJP
YmplY3RTdG9yZS0+bmFtZSgpOwogfQogCi1TdHJpbmcgSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJv
eHk6OmtleVBhdGgoKSBjb25zdAorSURCS2V5UGF0aCBJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94
eTo6a2V5UGF0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fd2ViSURCT2JqZWN0U3RvcmUtPmtl
eVBhdGgoKS5zdHJpbmcoKTsKKyAgICByZXR1cm4gbV93ZWJJREJPYmplY3RTdG9yZS0+a2V5UGF0
aCgpOwogfQogCiBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IElEQk9iamVjdFN0b3JlQmFja2Vu
ZFByb3h5OjppbmRleE5hbWVzKCkgY29uc3QKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIElEQk9i
amVjdFN0b3JlQmFja2VuZFByb3h5OjpjbGVhcihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2Fs
bGJhY2tzLCBJREJUcgogICAgIG1fd2ViSURCT2JqZWN0U3RvcmUtPmNsZWFyKG5ldyBXZWJJREJD
YWxsYmFja3NJbXBsKGNhbGxiYWNrcyksICp0cmFuc2FjdGlvblByb3h5LT5nZXRXZWJJREJUcmFu
c2FjdGlvbigpLCBlYyk7CiB9CiAKLVBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNl
PiBJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eTo6Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnks
IElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2VwdGlvbkNv
ZGUmIGVjKQorUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IElEQk9iamVjdFN0
b3JlQmFja2VuZFByb3h5OjpjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElE
QktleVBhdGgmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnksIElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ewogICAgIC8vIFRoZSB0cmFuc2FjdGlvbiBwb2ludGVyIGlzIGd1YXJhbnRlZWQgdG8gYmUgYSBw
b2ludGVyIHRvIGEgcHJveHkgb2JqZWN0IGFzLCBpbiB0aGUgcmVuZGVyZXIsCiAgICAgLy8gYWxs
IGltcGxlbWVudGF0aW9ucyBvZiBJREIgaW50ZXJmYWNlcyBhcmUgcHJveHkgb2JqZWN0cy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlQmFja2Vu
ZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9yZUJhY2tl
bmRQcm94eS5oCmluZGV4IDVlMTE4OTE4NmFhMWRhMmMxNGM1OThkODY0MjQ2MmVlN2RkNGVjZGYu
LjBjMmQ4MzhmZWRkMTBiZWI5ZjI4ZWE5OWZmNzc0OGQyMjc1MmU3ODMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHku
aApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKKyNp
bmNsdWRlICJJREJLZXlQYXRoLmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50
ZXJmYWNlLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3du
UHRyLmg+CkBAIC00Myw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JREJPYmplY3RT
dG9yZUJhY2tlbmRQcm94eSgpOwogCiAgICAgdmlydHVhbCBTdHJpbmcgbmFtZSgpIGNvbnN0Owot
ICAgIHZpcnR1YWwgU3RyaW5nIGtleVBhdGgoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6
OklEQktleVBhdGgga2V5UGF0aCgpIGNvbnN0OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJD
b3JlOjpET01TdHJpbmdMaXN0PiBpbmRleE5hbWVzKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZv
aWQgZ2V0KFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRyPFdlYkNv
cmU6OklEQkNhbGxiYWNrcz4sIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKQEAgLTUyLDcgKzUzLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktl
eVJhbmdlPiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBXZWJDb3JlOjpJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CiAg
ICAgdmlydHVhbCB2b2lkIGNsZWFyKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwg
V2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0
aW9uQ29kZSYpOwogCi0gICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJJbmRleEJhY2tlbmRJbnRl
cmZhY2U+IGNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQ
YXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZUluZGV4KGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgV2ViQ29yZTo6SURCS2V5UGF0aCYsIGJvb2wgdW5pcXVlLCBi
b29sIG11bHRpRW50cnksIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSos
IFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQklu
ZGV4QmFja2VuZEludGVyZmFjZT4gaW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpF
eGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBkZWxldGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUs
IFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2Vw
dGlvbkNvZGUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxh
dGZvcm1TdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3Vw
cG9ydC5jcHAKaW5kZXggZGU5ODEwZGJkMjk5YzdlZTU0ZTAxZjNmNmRkM2Y5MTZlY2FhOWU3MS4u
ZDMwNGU2MTA2NjcwODQ2MGUyNjg5NmExMjM3NzYzYjFlNGJkZjc5NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwCkBAIC00MCw2ICs0MCw3IEBA
CiAjaW5jbHVkZSAiV2ViRnJhbWVDbGllbnQuaCIKICNpbmNsdWRlICJXZWJGcmFtZUltcGwuaCIK
ICNpbmNsdWRlICJXZWJJREJLZXkuaCIKKyNpbmNsdWRlICJXZWJJREJLZXlQYXRoLmgiCiAjaW5j
bHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSAiV2ViUGx1Z2luQ29udGFpbmVySW1wbC5oIgogI2lu
Y2x1ZGUgIldlYlBsdWdpbkxpc3RCdWlsZGVySW1wbC5oIgpAQCAtNTE1LDcgKzUxNiw3IEBAIFBh
c3NSZWZQdHI8SURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2U+IFBsYXRmb3JtU3VwcG9ydDo6aWRi
RmFjdG9yeSgpCiAgICAgcmV0dXJuIElEQkZhY3RvcnlCYWNrZW5kUHJveHk6OmNyZWF0ZSgpOwog
fQogCi12b2lkIFBsYXRmb3JtU3VwcG9ydDo6Y3JlYXRlSURCS2V5c0Zyb21TZXJpYWxpemVkVmFs
dWVzQW5kS2V5UGF0aChjb25zdCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
PiYgdmFsdWVzLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+
JiBrZXlzKQordm9pZCBQbGF0Zm9ybVN1cHBvcnQ6OmNyZWF0ZUlEQktleXNGcm9tU2VyaWFsaXpl
ZFZhbHVlc0FuZEtleVBhdGgoY29uc3QgVmVjdG9yPFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+ID4mIHZhbHVlcywgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgVmVjdG9yPFJlZlB0cjxJ
REJLZXk+ID4mIGtleXMpCiB7CiAgICAgV2ViVmVjdG9yPFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gd2ViVmFsdWVzID0gdmFsdWVzOwogICAgIFdlYlZlY3RvcjxXZWJJREJLZXk+IHdlYktleXM7
CkBAIC01MjcsNyArNTI4LDcgQEAgdm9pZCBQbGF0Zm9ybVN1cHBvcnQ6OmNyZWF0ZUlEQktleXNG
cm9tU2VyaWFsaXplZFZhbHVlc0FuZEtleVBhdGgoY29uc3QgVmVjdG9yPFIKICAgICAgICAga2V5
cy5hcHBlbmQoUGFzc1JlZlB0cjxJREJLZXk+KHdlYktleXNbaV0pKTsKIH0KIAotUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFBsYXRmb3JtU3VwcG9ydDo6aW5qZWN0SURCS2V5SW50
b1NlcmlhbGl6ZWRWYWx1ZShQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKK1Bhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBQbGF0Zm9ybVN1cHBvcnQ6OmluamVjdElEQktleUlu
dG9TZXJpYWxpemVkVmFsdWUoUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKQogewog
ICAgIHJldHVybiB3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+aW5qZWN0SURCS2V5SW50b1Nlcmlh
bGl6ZWRWYWx1ZShrZXksIHZhbHVlLCBrZXlQYXRoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwCmluZGV4IDQ0N2I5OTNjNmE0Zjkw
N2RjMDQzYTdhMmY1NGFjNTY4NmQ2Mzk4MTkuLjRiZTQzZGMxNGQ4MTdkOTU5YWVmNThhMTZhZWNm
NDg1YmNiNWI2YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklE
QkRhdGFiYXNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURC
RGF0YWJhc2VJbXBsLmNwcApAQCAtNjYsNyArNjYsNyBAQCBXZWJET01TdHJpbmdMaXN0IFdlYklE
QkRhdGFiYXNlSW1wbDo6b2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGF0
YWJhc2VCYWNrZW5kLT5vYmplY3RTdG9yZU5hbWVzKCk7CiB9CiAKLVdlYklEQk9iamVjdFN0b3Jl
KiBXZWJJREJEYXRhYmFzZUltcGw6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYg
bmFtZSwgY29uc3QgV2ViU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIGNvbnN0
IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgV2ViRXhjZXB0aW9uQ29kZSYgZWMpCitX
ZWJJREJPYmplY3RTdG9yZSogV2ViSURCRGF0YWJhc2VJbXBsOjpjcmVhdGVPYmplY3RTdG9yZShj
b25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYklEQktleVBhdGgmIGtleVBhdGgsIGJvb2wg
YXV0b0luY3JlbWVudCwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBXZWJF
eGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50
ZXJmYWNlPiBvYmplY3RTdG9yZSA9IG1fZGF0YWJhc2VCYWNrZW5kLT5jcmVhdGVPYmplY3RTdG9y
ZShuYW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50LCB0cmFuc2FjdGlvbi5nZXRJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2UoKSwgZWMpOwogICAgIGlmICghb2JqZWN0U3RvcmUpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5o
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgKaW5kZXgg
ZjczYmU1NzA1NGY2MmFiNGMyNTQxNDAyZDdmMTQ3ZDg2N2FlZjNkNy4uOTY1NzFiYmU5YzFkOTZj
YmQzZjljN2QzYWQ4MzE3OWI5NjE5M2RkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgKQEAgLTUzLDEwICs1Myw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIFdlYlN0cmluZyB2ZXJzaW9uKCkgY29uc3Q7CiAgICAgdmlydHVhbCBXZWJET01T
dHJpbmdMaXN0IG9iamVjdFN0b3JlTmFtZXMoKSBjb25zdDsKIAotICAgIC8vIEZJWE1FOiBSZW1v
dmUgV2ViU3RyaW5nIGtleVBhdGggb3ZlcmxvYWQgb25jZSBjYWxsZXJzIGFyZSB1cGRhdGVkLgot
ICAgIC8vIGh0dHA6Ly93ZWJraXQub3JnL2IvODQyMDcKLSAgICB2aXJ0dWFsIFdlYklEQk9iamVj
dFN0b3JlKiBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcmLCBjb25zdCBXZWJTdHJp
bmcmLCBib29sLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKTsK
LSAgICB2aXJ0dWFsIFdlYklEQk9iamVjdFN0b3JlKiBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBX
ZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYklEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0b0lu
Y3JlbWVudCwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBXZWJFeGNlcHRp
b25Db2RlJiBlYykgeyByZXR1cm4gY3JlYXRlT2JqZWN0U3RvcmUobmFtZSwga2V5UGF0aC5zdHJp
bmcoKSwgYXV0b0luY3JlbWVudCwgdHJhbnNhY3Rpb24sIGVjKTsgfQorICAgIHZpcnR1YWwgV2Vi
SURCT2JqZWN0U3RvcmUqIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwg
Y29uc3QgV2ViSURCS2V5UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCwgY29uc3QgV2ViSURCVHJh
bnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9i
amVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24m
LCBXZWJFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIHNldFZlcnNpb24oY29uc3Qg
V2ViU3RyaW5nJiB2ZXJzaW9uLCBXZWJJREJDYWxsYmFja3MqLCBXZWJFeGNlcHRpb25Db2RlJik7
CiAgICAgdmlydHVhbCBXZWJJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24oY29uc3QgV2ViRE9N
U3RyaW5nTGlzdCYgbmFtZXMsIHVuc2lnbmVkIHNob3J0IG1vZGUsIFdlYkV4Y2VwdGlvbkNvZGUm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkluZGV4SW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJJbmRleEltcGwuY3BwCmlu
ZGV4IDE3MDkzOTU2NzQwOTYwMmQ4OGY0N2E2NWY1MDNhOWNlYjgyN2RhYjUuLmQ3OGIyYjNhNjA4
YzhhMzc5Yzk4M2IwODAzOThkYWRiY2JhZjE5OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYklEQkluZGV4SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSURCSW5kZXhJbXBsLmNwcApAQCAtNjMsMTMgKzYzLDYgQEAgV2ViSURCS2V5
UGF0aCBXZWJJREJJbmRleEltcGw6OmtleVBhdGgoKSBjb25zdAogICAgIHJldHVybiBXZWJJREJL
ZXlQYXRoKG1fYmFja2VuZC0+a2V5UGF0aCgpKTsKIH0KIAotLy8gRklYTUU6IFJlbW92ZSB0aGlz
IG1ldGhvZCBvbmNlIGNhbGxlcnMgYXJlIHVwZGF0ZWQuCi0vLyBodHRwOi8vd2Via2l0Lm9yZy9i
Lzg0MjA3Ci1XZWJTdHJpbmcgV2ViSURCSW5kZXhJbXBsOjprZXlQYXRoU3RyaW5nKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gbV9iYWNrZW5kLT5rZXlQYXRoKCk7Ci19Ci0KIGJvb2wgV2ViSURCSW5k
ZXhJbXBsOjp1bmlxdWUoKSBjb25zdAogewogICAgIHJldHVybiBtX2JhY2tlbmQtPnVuaXF1ZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCSW5kZXhJbXBs
LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJJbmRleEltcGwuaAppbmRleCBk
OGIxMTI5ZDBmM2Y1NWQzMzNmZmQ2MTljMDk5YzQ4YWJlOTVmM2ZjLi42ZDBhYjY4ZjZkOTlmZGNh
Y2RmZGMwMzJjMDI5ODA4NTg2ZWRjYmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJREJJbmRleEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJREJJbmRleEltcGwuaApAQCAtNDYsOSArNDYsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBXZWJTdHJpbmcgbmFtZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgV2ViU3RyaW5nIHN0b3JlTmFt
ZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgV2ViSURCS2V5UGF0aCBrZXlQYXRoKCkgY29uc3Q7Ci0g
ICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIG1ldGhvZCBvbmNlIGNhbGxlcnMgYXJlIHVwZGF0ZWQu
Ci0gICAgLy8gaHR0cDovL3dlYmtpdC5vcmcvYi84NDIwNwotICAgIHZpcnR1YWwgV2ViU3RyaW5n
IGtleVBhdGhTdHJpbmcoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgdW5pcXVlKCkgY29uc3Q7
CiAgICAgdmlydHVhbCBib29sIG11bHRpRW50cnkoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCS2V5UGF0aC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJREJLZXlQYXRoLmNwcAppbmRleCBiY2Y1ZGJkMGQ5ZWM4NmQxYTM5
YzgwMWU0YWUwZjc3ZmJkMjQxYjI2Li4xN2MxNThmMzRlNDg4ZDkwZTMxNzNjZGMzODQ2MWQxYWYy
YTNiNzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJLZXlQ
YXRoLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJLZXlQYXRoLmNw
cApAQCAtMzcsMTAxICszNyw3OSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKLVdlYklEQktleVBhdGggV2ViSURCS2V5UGF0aDo6Y3JlYXRlKGNvbnN0
IFdlYlZlY3RvcjxXZWJTdHJpbmc+JikKK1dlYklEQktleVBhdGg6On5XZWJJREJLZXlQYXRoKCkK
IHsKLSAgICAvLyBGSVhNRTogQXJyYXktdHlwZSBrZXkgcGF0aHMgbm90IHlldCBzdXBwb3J0ZWQu
IGh0dHA6Ly93ZWJraXQub3JnL2IvODQyMDcKLSAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgcmV0dXJuIGNyZWF0ZU51bGwoKTsKKyAgICBtX3ByaXZhdGUucmVzZXQoMCk7CiB9
CiAKIFdlYklEQktleVBhdGggV2ViSURCS2V5UGF0aDo6Y3JlYXRlKGNvbnN0IFdlYlN0cmluZyYg
a2V5UGF0aCkKIHsKLSAgICBpZiAoa2V5UGF0aC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIGNy
ZWF0ZU51bGwoKTsKLQotICAgIFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiBpZGJFbGVtZW50czsK
LSAgICBJREJLZXlQYXRoUGFyc2VFcnJvciBpZGJFcnJvcjsKLSAgICBJREJQYXJzZUtleVBhdGgo
a2V5UGF0aCwgaWRiRWxlbWVudHMsIGlkYkVycm9yKTsKLSAgICByZXR1cm4gV2ViSURCS2V5UGF0
aChpZGJFbGVtZW50cywgc3RhdGljX2Nhc3Q8aW50PihpZGJFcnJvcikpOwotfQotCi1XZWJJREJL
ZXlQYXRoIFdlYklEQktleVBhdGg6OmNyZWF0ZU51bGwoKQotewotICAgIHJldHVybiBXZWJJREJL
ZXlQYXRoKFdlYlN0cmluZygpKTsKKyAgICByZXR1cm4gV2ViSURCS2V5UGF0aChJREJLZXlQYXRo
KGtleVBhdGgpKTsKIH0KIAotV2ViSURCS2V5UGF0aDo6V2ViSURCS2V5UGF0aChjb25zdCBXZWJJ
REJLZXlQYXRoJiBrZXlQYXRoKQorV2ViSURCS2V5UGF0aCBXZWJJREJLZXlQYXRoOjpjcmVhdGUo
Y29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIGtleVBhdGgpCiB7Ci0gICAgYXNzaWduKGtleVBh
dGgpOworICAgIFZlY3RvcjxTdHJpbmc+IHN0cmluZ3M7CisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBrZXlQYXRoLnNpemUoKTsgKytpKQorICAgICAgICBzdHJpbmdzLmFwcGVuZChrZXlQYXRo
W2ldKTsKKyAgICByZXR1cm4gV2ViSURCS2V5UGF0aChJREJLZXlQYXRoKHN0cmluZ3MpKTsKIH0K
IAotV2ViSURCS2V5UGF0aDo6V2ViSURCS2V5UGF0aChjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0
cmluZz4mIGVsZW1lbnRzLCBpbnQgcGFyc2VFcnJvcikKLSAgICA6IG1fcHJpdmF0ZShuZXcgV1RG
OjpWZWN0b3I8V1RGOjpTdHJpbmc+KGVsZW1lbnRzKSkKLSAgICAsIG1fcGFyc2VFcnJvcihwYXJz
ZUVycm9yKQorV2ViSURCS2V5UGF0aCBXZWJJREJLZXlQYXRoOjpjcmVhdGVOdWxsKCkKIHsKKyAg
ICByZXR1cm4gV2ViSURCS2V5UGF0aChJREJLZXlQYXRoKCkpOwogfQogCiBib29sIFdlYklEQktl
eVBhdGg6OmlzVmFsaWQoKSBjb25zdAogewotICAgIHJldHVybiBtX3BhcnNlRXJyb3IgPT0gSURC
S2V5UGF0aFBhcnNlRXJyb3JOb25lOworICAgIEFTU0VSVChtX3ByaXZhdGUuZ2V0KCkpOworICAg
IHJldHVybiBtX3ByaXZhdGUtPmlzVmFsaWQoKTsKIH0KIAogV2ViSURCS2V5UGF0aDo6VHlwZSBX
ZWJJREJLZXlQYXRoOjp0eXBlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcml2YXRlLmdldCgp
ID8gU3RyaW5nVHlwZSA6IE51bGxUeXBlOworICAgIEFTU0VSVChtX3ByaXZhdGUuZ2V0KCkpOwor
ICAgIHJldHVybiBUeXBlKG1fcHJpdmF0ZS0+dHlwZSgpKTsKIH0KIAotV2ViU3RyaW5nIFdlYklE
QktleVBhdGg6OnN0cmluZygpIGNvbnN0CisKK1dlYlZlY3RvcjxXZWJTdHJpbmc+IFdlYklEQktl
eVBhdGg6OmFycmF5KCkgY29uc3QKIHsKLSAgICBpZiAoIW1fcHJpdmF0ZS5nZXQoKSkKLSAgICAg
ICAgcmV0dXJuIFdlYlN0cmluZygpOwotCi0gICAgLy8gRklYTUU6IFN0b3JlIHRoZSBjb21wbGV0
ZSBzdHJpbmcgaW5zdGVhZCBvZiByZWJ1aWxkaW5nIGl0LgotICAgIC8vIGh0dHA6Ly93ZWJraXQu
b3JnL2IvODQyMDcKLSAgICBXVEY6OlN0cmluZyBzdHJpbmcoIiIpOwotICAgIFdURjo6VmVjdG9y
PFdURjo6U3RyaW5nPiYgYXJyYXkgPSAqbV9wcml2YXRlLmdldCgpOwotICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgYXJyYXkuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKGkpCi0gICAgICAg
ICAgICBzdHJpbmcuYXBwZW5kKCIuIik7Ci0gICAgICAgIHN0cmluZy5hcHBlbmQoYXJyYXlbaV0p
OwotICAgIH0KLSAgICByZXR1cm4gV2ViU3RyaW5nKHN0cmluZyk7CisgICAgQVNTRVJUKG1fcHJp
dmF0ZS5nZXQoKSk7CisgICAgQVNTRVJUKG1fcHJpdmF0ZS0+dHlwZSgpID09IElEQktleVBhdGg6
OkFycmF5VHlwZSk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+YXJyYXkoKTsKIH0KIAotV2ViSURC
S2V5UGF0aDo6V2ViSURCS2V5UGF0aChjb25zdCBXZWJTdHJpbmcmIGtleVBhdGgpCi0gICAgOiBt
X3BhcnNlRXJyb3IoSURCS2V5UGF0aFBhcnNlRXJyb3JOb25lKQorV2ViU3RyaW5nIFdlYklEQktl
eVBhdGg6OnN0cmluZygpIGNvbnN0CiB7Ci0gICAgaWYgKCFrZXlQYXRoLmlzTnVsbCgpKSB7Ci0g
ICAgICAgIG1fcHJpdmF0ZS5yZXNldChuZXcgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+KCkpOwot
ICAgICAgICBJREJLZXlQYXRoUGFyc2VFcnJvciBpZGJQYXJzZUVycm9yOwotICAgICAgICBJREJQ
YXJzZUtleVBhdGgoa2V5UGF0aCwgKm1fcHJpdmF0ZS5nZXQoKSwgaWRiUGFyc2VFcnJvcik7Ci0g
ICAgICAgIG1fcGFyc2VFcnJvciA9IGlkYlBhcnNlRXJyb3I7Ci0gICAgfQorICAgIEFTU0VSVCht
X3ByaXZhdGUuZ2V0KCkpOworICAgIEFTU0VSVChtX3ByaXZhdGUtPnR5cGUoKSA9PSBJREJLZXlQ
YXRoOjpTdHJpbmdUeXBlKTsKKyAgICByZXR1cm4gbV9wcml2YXRlLT5zdHJpbmcoKTsKIH0KIAot
aW50IFdlYklEQktleVBhdGg6OnBhcnNlRXJyb3IoKSBjb25zdAorV2ViSURCS2V5UGF0aDo6V2Vi
SURCS2V5UGF0aChjb25zdCBXZWJJREJLZXlQYXRoJiBrZXlQYXRoKQorICAgIDogbV9wcml2YXRl
KG5ldyBJREJLZXlQYXRoKGtleVBhdGgpKQogewotICAgIHJldHVybiBtX3BhcnNlRXJyb3I7Cisg
ICAgQVNTRVJUKG1fcHJpdmF0ZS5nZXQoKSk7CiB9CiAKLXZvaWQgV2ViSURCS2V5UGF0aDo6YXNz
aWduKGNvbnN0IFdlYklEQktleVBhdGgmIGtleVBhdGgpCitXZWJJREJLZXlQYXRoOjpXZWJJREJL
ZXlQYXRoKGNvbnN0IFdlYkNvcmU6OklEQktleVBhdGgmIHZhbHVlKQorICAgIDogbV9wcml2YXRl
KG5ldyBJREJLZXlQYXRoKHZhbHVlKSkKIHsKLSAgICBtX3BhcnNlRXJyb3IgPSBrZXlQYXRoLm1f
cGFyc2VFcnJvcjsKLSAgICBpZiAoa2V5UGF0aC5tX3ByaXZhdGUuZ2V0KCkpCi0gICAgICAgIG1f
cHJpdmF0ZS5yZXNldChuZXcgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+KGtleVBhdGgpKTsKLSAg
ICBlbHNlCi0gICAgICAgIG1fcHJpdmF0ZS5yZXNldCgwKTsKKyAgICBBU1NFUlQobV9wcml2YXRl
LmdldCgpKTsKIH0KIAotdm9pZCBXZWJJREJLZXlQYXRoOjpyZXNldCgpCitXZWJJREJLZXlQYXRo
JiBXZWJJREJLZXlQYXRoOjpvcGVyYXRvcj0oY29uc3QgV2ViQ29yZTo6SURCS2V5UGF0aCYgdmFs
dWUpCiB7Ci0gICAgbV9wcml2YXRlLnJlc2V0KDApOworICAgIEFTU0VSVChtX3ByaXZhdGUuZ2V0
KCkpOworICAgIG1fcHJpdmF0ZS5yZXNldChuZXcgSURCS2V5UGF0aCh2YWx1ZSkpOworICAgIHJl
dHVybiAqdGhpczsKIH0KIAotV2ViSURCS2V5UGF0aDo6b3BlcmF0b3IgY29uc3QgV1RGOjpWZWN0
b3I8V1RGOjpTdHJpbmcsIDA+JigpIGNvbnN0CitXZWJJREJLZXlQYXRoOjpvcGVyYXRvciBjb25z
dCBXZWJDb3JlOjpJREJLZXlQYXRoJigpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1fcHJpdmF0ZS5n
ZXQoKSk7Ci0gICAgcmV0dXJuICptX3ByaXZhdGUuZ2V0KCk7CisgICAgcmV0dXJuICoobV9wcml2
YXRlLmdldCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmNwcAppbmRleCA2MjRh
NGU1YjM2NjBkOWI5NzRhN2QwNDgyYjI0NjkxZDFmMTExNDAxLi5hNWI1YTE0NDUwOGNhZWExODky
MDcxMjBlNDliZDZjMWYzMGE2MzE0IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNs
dWRlICJET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiSURCQ2FsbGJhY2tzUHJveHkuaCIKICNp
bmNsdWRlICJJREJJbmRleEJhY2tlbmRJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJJREJLZXlQYXRo
LmgiCiAjaW5jbHVkZSAiSURCS2V5UmFuZ2UuaCIKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJXZWJJREJJbmRleEltcGwuaCIKQEAgLTU5LDEz
ICs2MCw2IEBAIFdlYlN0cmluZyBXZWJJREJPYmplY3RTdG9yZUltcGw6Om5hbWUoKSBjb25zdAog
CiBXZWJJREJLZXlQYXRoIFdlYklEQk9iamVjdFN0b3JlSW1wbDo6a2V5UGF0aCgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIFdlYklEQktleVBhdGgobV9vYmplY3RTdG9yZS0+a2V5UGF0aCgpKTsKLX0K
LQotLy8gRklYTUU6IFJlbW92ZSB0aGlzIG1ldGhvZCBvbmNlIGNhbGxlcnMgYXJlIHVwZGF0ZWQu
Ci0vLyBodHRwOi8vd2Via2l0Lm9yZy9iLzg0MjA3Ci1XZWJTdHJpbmcgV2ViSURCT2JqZWN0U3Rv
cmVJbXBsOjprZXlQYXRoU3RyaW5nKCkgY29uc3QKLXsKICAgICByZXR1cm4gbV9vYmplY3RTdG9y
ZS0+a2V5UGF0aCgpOwogfQogCkBAIC05OSw3ICs5Myw3IEBAIHZvaWQgV2ViSURCT2JqZWN0U3Rv
cmVJbXBsOjpjbGVhcihXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgY29uc3QgV2ViSURCVHJh
bnNhCiAgICAgbV9vYmplY3RTdG9yZS0+Y2xlYXIoSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShh
ZG9wdFB0cihjYWxsYmFja3MpKSwgdHJhbnNhY3Rpb24uZ2V0SURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlKCksIGVjKTsKIH0KIAotV2ViSURCSW5kZXgqIFdlYklEQk9iamVjdFN0b3JlSW1w
bDo6Y3JlYXRlSW5kZXgoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGtl
eVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnksIGNvbnN0IFdlYklEQlRyYW5zYWN0
aW9uJiB0cmFuc2FjdGlvbiwgV2ViRXhjZXB0aW9uQ29kZSYgZWMpCitXZWJJREJJbmRleCogV2Vi
SURCT2JqZWN0U3RvcmVJbXBsOjpjcmVhdGVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNv
bnN0IFdlYklEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnks
IGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgV2ViRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7CiAgICAgUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gaW5kZXggPSBtX29i
amVjdFN0b3JlLT5jcmVhdGVJbmRleChuYW1lLCBrZXlQYXRoLCB1bmlxdWUsIG11bHRpRW50cnks
IHRyYW5zYWN0aW9uLmdldElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSgpLCBlYyk7CiAg
ICAgaWYgKCFpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YklEQk9iamVjdFN0b3JlSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURC
T2JqZWN0U3RvcmVJbXBsLmgKaW5kZXggZWUzYjIyMmFjYzJjNjYzN2FlNzRiZGE0ZTRjOGFiODYy
ZmY3ZTg3Zi4uMzM2ZGJjMWU3YzljODZhZGMwYTFkNzc0NzFhNjgxYzZmMWY1MTEyMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmgK
QEAgLTQ3LDkgKzQ3LDYgQEAgcHVibGljOgogCiAgICAgV2ViU3RyaW5nIG5hbWUoKSBjb25zdDsK
ICAgICBXZWJJREJLZXlQYXRoIGtleVBhdGgoKSBjb25zdDsKLSAgICAvLyBGSVhNRTogUmVtb3Zl
IHRoaXMgbWV0aG9kIG9uY2UgY2FsbGVycyBhcmUgdXBkYXRlZC4KLSAgICAvLyBodHRwOi8vd2Vi
a2l0Lm9yZy9iLzg0MjA3Ci0gICAgV2ViU3RyaW5nIGtleVBhdGhTdHJpbmcoKSBjb25zdDsKICAg
ICBXZWJET01TdHJpbmdMaXN0IGluZGV4TmFtZXMoKSBjb25zdDsKIAogICAgIHZvaWQgZ2V0KGNv
bnN0IFdlYklEQktleVJhbmdlJiwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNh
Y3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7CkBAIC01OCwxMCArNTUsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkZWxldGVGdW5jdGlvbihjb25zdCBXZWJJREJLZXlSYW5nZSYsIFdlYklEQkNhbGxi
YWNrcyosIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOwogICAg
IHZvaWQgY2xlYXIoV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBX
ZWJFeGNlcHRpb25Db2RlJik7CiAKLSAgICAvLyBGSVhNRTogUmVtb3ZlIFdlYlN0cmluZyBrZXlQ
YXRoIG92ZXJsb2FkIG9uY2UgY2FsbGVycyBhcmUgdXBkYXRlZC4KLSAgICAvLyBodHRwOi8vd2Vi
a2l0Lm9yZy9iLzg0MjA3Ci0gICAgV2ViSURCSW5kZXgqIGNyZWF0ZUluZGV4KGNvbnN0IFdlYlN0
cmluZyYsIGNvbnN0IFdlYlN0cmluZyYsIGJvb2wsIGJvb2wsIGNvbnN0IFdlYklEQlRyYW5zYWN0
aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOwotICAgIFdlYklEQkluZGV4KiBjcmVhdGVJbmRleChj
b25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYklEQktleVBhdGgmIGtleVBhdGgsIGJvb2wg
dW5pcXVlLCBib29sIG11bHRpRW50cnksIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFuc2Fj
dGlvbiwgV2ViRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGNyZWF0ZUluZGV4KG5hbWUsIGtl
eVBhdGguc3RyaW5nKCksIHVuaXF1ZSwgbXVsdGlFbnRyeSwgdHJhbnNhY3Rpb24sIGVjKTsgfQor
ICAgIFdlYklEQkluZGV4KiBjcmVhdGVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0
IFdlYklEQktleVBhdGgmLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5LCBjb25zdCBXZWJJ
REJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKICAgICBXZWJJREJJbmRleCogaW5k
ZXgoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBXZWJFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBk
ZWxldGVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9u
JiwgV2ViRXhjZXB0aW9uQ29kZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0lEQkJpbmRpbmdVdGlsaXRpZXNUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvSURCQmluZGluZ1V0aWxpdGllc1Rlc3QuY3BwCmluZGV4IGQ2MDI5NWE1ZmI0
M2U1MzM2MWMwNzI2MTJhNWU0Mzg1OGU2NmMyOTkuLmMxMzUxODUwZDg3OGM2MDViNTY2NGM2NzI0
MDUzYjRjN2IwYjEzOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
SURCQmluZGluZ1V0aWxpdGllc1Rlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvSURCQmluZGluZ1V0aWxpdGllc1Rlc3QuY3BwCkBAIC00MSwxMCArNDEsOCBAQCBuYW1l
c3BhY2UgewogCiBQYXNzUmVmUHRyPElEQktleT4gY2hlY2tLZXlGcm9tVmFsdWVBbmRLZXlQYXRo
SW50ZXJuYWwoU2VyaWFsaXplZFNjcmlwdFZhbHVlKiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQ
YXRoKQogewotICAgIFZlY3RvcjxTdHJpbmc+IGlkYktleVBhdGg7Ci0gICAgSURCS2V5UGF0aFBh
cnNlRXJyb3IgcGFyc2VFcnJvcjsKLSAgICBJREJQYXJzZUtleVBhdGgoa2V5UGF0aCwgaWRiS2V5
UGF0aCwgcGFyc2VFcnJvcik7Ci0gICAgRVhQRUNUX0VRKElEQktleVBhdGhQYXJzZUVycm9yTm9u
ZSwgcGFyc2VFcnJvcik7CisgICAgSURCS2V5UGF0aCBpZGJLZXlQYXRoKGtleVBhdGgpOworICAg
IEVYUEVDVF9UUlVFKGlkYktleVBhdGguaXNWYWxpZCgpKTsKICAgICByZXR1cm4gY3JlYXRlSURC
S2V5RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtleVBhdGgodmFsdWUsIGlkYktleVBhdGgpOwogfQog
CkBAIC01NiwxMCArNTQsOCBAQCB2b2lkIGNoZWNrS2V5UGF0aE51bGxWYWx1ZShTZXJpYWxpemVk
U2NyaXB0VmFsdWUqIHZhbHVlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpCiAKIFBhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBpbmplY3RLZXkoUGFzc1JlZlB0cjxJREJLZXk+IGtleSwg
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBjb25zdCBTdHJpbmcmIGtl
eVBhdGgpCiB7Ci0gICAgVmVjdG9yPFN0cmluZz4gaWRiS2V5UGF0aDsKLSAgICBJREJLZXlQYXRo
UGFyc2VFcnJvciBwYXJzZUVycm9yOwotICAgIElEQlBhcnNlS2V5UGF0aChrZXlQYXRoLCBpZGJL
ZXlQYXRoLCBwYXJzZUVycm9yKTsKLSAgICBFWFBFQ1RfRVEoSURCS2V5UGF0aFBhcnNlRXJyb3JO
b25lLCBwYXJzZUVycm9yKTsKKyAgICBJREJLZXlQYXRoIGlkYktleVBhdGgoa2V5UGF0aCk7Cisg
ICAgRVhQRUNUX1RSVUUoaWRiS2V5UGF0aC5pc1ZhbGlkKCkpOwogICAgIHJldHVybiBpbmplY3RJ
REJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKGtleSwgdmFsdWUsIGlkYktleVBhdGgpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQktleVBhdGhUZXN0LmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCS2V5UGF0aFRlc3QuY3BwCmluZGV4
IGUyZmRhZWJjMmYxNzg3ZThiNmQ4ZTc5ZTZhZjYyYTFmNzUwNWVkODQuLjdkNjYyYzAwOWNjODYy
ZTUwMDYxOGRmZmRlZmU4YTI0NjU0MzQxYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvSURCS2V5UGF0aFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvSURCS2V5UGF0aFRlc3QuY3BwCkBAIC0zNyw2ICszNywxMCBAQCBuYW1lc3BhY2Ug
ewogCiB2b2lkIGNoZWNrS2V5UGF0aChjb25zdCBTdHJpbmcmIGtleVBhdGgsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBleHBlY3RlZCwgaW50IHBhcnNlckVycm9yKQogeworICAgIElEQktleVBhdGgg
aWRiS2V5UGF0aChrZXlQYXRoKTsKKyAgICBBU1NFUlRfRVEoaWRiS2V5UGF0aC50eXBlKCksIElE
QktleVBhdGg6OlN0cmluZ1R5cGUpOworICAgIEFTU0VSVF9FUShpZGJLZXlQYXRoLmlzVmFsaWQo
KSwgKHBhcnNlckVycm9yID09IElEQktleVBhdGhQYXJzZUVycm9yTm9uZSkpOworCiAgICAgSURC
S2V5UGF0aFBhcnNlRXJyb3IgZXJyb3I7CiAgICAgVmVjdG9yPFN0cmluZz4ga2V5UGF0aEVsZW1l
bnRzOwogICAgIElEQlBhcnNlS2V5UGF0aChrZXlQYXRoLCBrZXlQYXRoRWxlbWVudHMsIGVycm9y
KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140048</attachid>
            <date>2012-05-03 11:04:59 -0700</date>
            <delta_ts>2012-05-03 13:48:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85298-20120503110458.patch</filename>
            <type>text/plain</type>
            <size>112879</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1OTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODhlN2Q2YzBjNDkwZDJh
NjU5YzU2ZDMyNTc2MDMyNzhkMTE1Mjg5OS4uMzI1NGM4Y2I5MTNlNjRkODdlODhiOTk3OWIzOTcy
ZjQ0ZTBjODhiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNiBAQAorMjAxMi0wNS0wMyAgSm9z
aHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogU3Rv
cmUga2V5IHBhdGhzIGluIElEQktleVBhdGggdHlwZSBpbnN0ZWFkIG9mIFN0cmluZworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODUyOTgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNaWdyYXRlIGZyb20gc3Rv
cmluZyBrZXkgcGF0aHMgYXMgKG51bGxhYmxlKSBTdHJpbmdzIHRvIGEgZGVkaWNhdGVkIElEQktl
eVBhdGgKKyAgICAgICAgdHlwZS4gUHJlcCB3b3JrIGZvciBzdXBwb3J0aW5nIGFycmF5LXR5cGUg
a2V5IHBhdGhzOiBodHRwOi8vd2Via2l0Lm9yZy9iLzg0MjA3CisgICAgICAgIEJlaGF2aW9yIGNo
YW5nZToga2V5UGF0aCB2YWx1ZXMgb2YgfG51bGx8IG9yIHx1bmRlZmluZWR8IGFyZSBub3cgY29u
c2lzdGVudGx5CisgICAgICAgIGNvZXJjZWQgdG8gc3RyaW5ncyBmb3IgYm90aCBjcmVhdGVPYmpl
Y3RTdG9yZSBhbmQgY3JlYXRlSW5kZXggbWV0aG9kcy4KKworICAgICAgICBUZXN0czogc3RvcmFn
ZS9pbmRleGVkZGIva2V5cGF0aC1iYXNpY3MuaHRtbAorCisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCQW55LmNwcDogQWxsb3cgSURCQW55IHRvIHlpZWxkIERPTVN0cmluZ3MuCisgICAg
ICAgIChXZWJDb3JlOjpJREJBbnk6OmNyZWF0ZVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkFueTo6c3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkFueTo6c2V0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJBbnkuaDoKKyAgICAg
ICAgKElEQkFueSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3Jl
Lmg6IFN3aXRjaCBmcm9tIFN0cmluZyB0byBJREJLZXlQYXRoLgorICAgICAgICAoSURCQmFja2lu
Z1N0b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHA6IFN3
aXRjaCBmcm9tIFN0cmluZyB0byBJREJLZXlQYXRoLgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0
YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcDogU3dpdGNoIGZyb20gU3RyaW5nIHRvIElEQktleVBh
dGguCisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGVPYmpl
Y3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpsb2Fk
T2JqZWN0U3RvcmVzKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJh
Y2tlbmRJbXBsLmg6IFN3aXRjaCBmcm9tIFN0cmluZyB0byBJREJLZXlQYXRoLgorICAgICAgICAo
SURCRGF0YWJhc2VCYWNrZW5kSW1wbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmg6IFN3aXRjaCBmcm9tIFN0cmluZyB0byBJREJLZXlQ
YXRoLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJREJEYXRhYmFzZUJhY2tlbmRJbnRl
cmZhY2UpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4Lmg6IFN3aXRjaCBm
cm9tIFN0cmluZyB0byBJREJBbnkgKHZpYSBJREJLZXlQYXRoKS4KKyAgICAgICAgKFdlYkNvcmU6
OklEQkluZGV4OjprZXlQYXRoKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRl
eC5pZGw6IFN3aXRjaCBmcm9tIERPTVN0cmluZz8gdG8gSURCQW55LgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwuY3BwOiBTd2l0Y2ggZnJvbSBTdHJpbmcg
dG8gSURCS2V5UGF0aC4KKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEltcGw6OklE
QkluZGV4QmFja2VuZEltcGwpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4
QmFja2VuZEltcGwuaDogU3dpdGNoIGZyb20gU3RyaW5nIHRvIElEQktleVBhdGguCisgICAgICAg
IChXZWJDb3JlOjpJREJJbmRleEJhY2tlbmRJbXBsOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCSW5kZXhCYWNrZW5kSW1wbDo6a2V5UGF0aCk6CisgICAgICAgIChJREJJbmRleEJhY2tl
bmRJbXBsKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbnRl
cmZhY2UuaDogU3dpdGNoIGZyb20gU3RyaW5nIHRvIElEQktleVBhdGguCisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKElEQkluZGV4QmFja2VuZEludGVyZmFjZSk6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvSURCS2V5UGF0aC5jcHA6IE5vbi10cml2aWFsIG1ldGhvZCBpbXBsZW1l
bnRhdGlvbnMuCisgICAgICAgIChXZWJDb3JlOjpJREJLZXlQYXRoOjppc1ZhbGlkKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5UGF0aDo6b3BlcmF0b3IgUGFz
c1JlZlB0cjxJREJBbnk+KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRo
Lmg6IEludHJvZHVjZSBJREJLZXlQYXRoIHR5cGUuCisgICAgICAgIChJREJLZXlQYXRoKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQktleVBhdGg6OklEQktleVBhdGgpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCS2V5UGF0aDo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlQYXRoOjphcnJh
eSk6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlQYXRoOjpzdHJpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCS2V5UGF0aDo6aXNOdWxsKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGhCYWNrZW5kSW1wbC5jcHA6IFN3aXRjaCBmcm9t
IFN0cmluZyB0byBJREJLZXlQYXRoLgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5UGF0aEJhY2tl
bmRJbXBsOjpjcmVhdGVJREJLZXlzRnJvbVNlcmlhbGl6ZWRWYWx1ZXNBbmRLZXlQYXRoKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQktleVBhdGhCYWNrZW5kSW1wbDo6aW5qZWN0SURCS2V5SW50b1Nl
cmlhbGl6ZWRWYWx1ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UGF0aEJh
Y2tlbmRJbXBsLmg6IFN3aXRjaCBmcm9tIFN0cmluZyB0byBJREJLZXlQYXRoLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChJREJLZXlQYXRoQmFja2VuZEltcGwpOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwOiBTd2l0Y2ggZnJvbSBT
dHJpbmcgdG8gSURCS2V5UGF0aCwgd2l0aCBiYWNrLWNvbXBhdC4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6cHV0SURCS2V5UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRPYmplY3RTdG9yZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0SW5kZXhlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoSURC
TGV2ZWxEQkJhY2tpbmdTdG9yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2
ZWxEQkNvZGluZy5jcHA6IE5ldyBjb2Rpbmcgc2NoZW1lIGZvciBrZXkgcGF0aHMgKHdpdGggYmFj
ay1jb21wYXQpLgorICAgICAgICAoSURCTGV2ZWxEQkNvZGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJMZXZlbERCQ29kaW5nOjplbmNvZGVJREJLZXlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkxldmVsREJDb2Rpbmc6OmRlY29kZUlEQktleVBhdGgpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuaDogQWRkIGtleS1wYXRoLXNwZWNpZmljIG1ldGhv
ZHMuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKElEQkxldmVsREJDb2RpbmcpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcDogU3dpdGNoIGZyb20g
U3RyaW5nIHRvIElEQktleVBhdGguCisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6
a2V5UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2Jq
ZWN0U3RvcmUuaDogU3dpdGNoIGZyb20gU3RyaW5nIHRvIElEQkFueSAodmlhIElEQktleVBhdGgp
LgorICAgICAgICAoSURCT2JqZWN0U3RvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L0lEQk9iamVjdFN0b3JlLmlkbDogU3dpdGNoIGZyb20gRE9NU3RyaW5nPyB0byBJREJBbnkuCisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHA6
IFN3aXRjaCBmcm9tIFN0cmluZyB0byBJREJLZXlQYXRoLgorICAgICAgICAoV2ViQ29yZTo6SURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCk6CisgICAg
ICAgIChXZWJDb3JlOjpmZXRjaEtleUZyb21LZXlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6Omlu
amVjdEtleUludG9LZXlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGw6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGw6OmxvYWRJbmRleGVzKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9J
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmg6IFN3aXRjaCBmcm9tIFN0cmluZyB0byBJREJLZXlQ
YXRoLgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmtleVBhdGgp
OgorICAgICAgICAoSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmg6IFN3aXRjaCBmcm9t
IFN0cmluZyB0byBJREJLZXlQYXRoLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJREJP
YmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RpY3Rp
b25hcnkuY3BwOiBBZGQgZ2V0dGVyIGZvciBET01TdHJpbmdbXSAoaS5lLiBWZWN0b3I8U3RyaW5n
PikKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeTo6Z2V0
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9EaWN0aW9uYXJ5Lmg6CisgICAgICAgIChEaWN0aW9u
YXJ5KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcDogU3dp
dGNoIGZyb20gU3RyaW5nIHRvIElEQktleVBhdGguCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJ
REJLZXlGcm9tU2VyaWFsaXplZFZhbHVlQW5kS2V5UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpp
bmplY3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9J
REJCaW5kaW5nVXRpbGl0aWVzLmg6IFN3aXRjaCBmcm9tIFN0cmluZyB0byBJREJLZXlQYXRoLgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SURCQW55
Q3VzdG9tLmNwcDogU3VwcG9ydCBTdHJpbmcvRE9NU3RyaW5nLgorICAgICAgICAoV2ViQ29yZTo6
dG9WOCk6CisgICAgICAgICogZG9tL0RPTVN0cmluZ0xpc3QuaDogQWxsb3cgZWFzeSAoY29uc3Qp
IGFjY2VzcyB0byBzdHJpbmdzLgorICAgICAgICAoV2ViQ29yZTo6RE9NU3RyaW5nTGlzdDo6b3Bl
cmF0b3IgY29uc3QgVmVjdG9yPFN0cmluZz4mKToKKyAgICAgICAgKERPTVN0cmluZ0xpc3QpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHA6IFRlbXBvcmFy
eSBzaGltIGZvciBub24tc3RyaW5nczogc2VlIGh0dHA6Ly93ZWJraXQub3JnL2IvODQzMDMKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3Vw
cG9ydC5oOiBTd2l0Y2ggZnJvbSBTdHJpbmcgdG8gSURCS2V5UGF0aC4KKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoUGxhdGZvcm1TdXBwb3J0KToKKyAgICAgICAgKiBzdG9yYWdlL2Nocm9t
aXVtL0lEQktleVBhdGhCYWNrZW5kSW1wbC5jcHA6IFN3aXRjaCBmcm9tIFN0cmluZyB0byBJREJL
ZXlQYXRoLgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5UGF0aEJhY2tlbmRJbXBsOjpjcmVhdGVJ
REJLZXlzRnJvbVNlcmlhbGl6ZWRWYWx1ZXNBbmRLZXlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQktleVBhdGhCYWNrZW5kSW1wbDo6aW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZSk6
CisKIDIwMTItMDUtMDMgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGNvbXBpbGUgdGltZSBhbWJpZ3VpdHkgaGFwcGVucyB3
aGVuIEkgdHJ5IHRvIGFzc2lnbiBhIFR5cGVCdWlsZGVyIG9iamVjdCB0byBhbiBvdXQgYXJndW1l
bnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDZkZDcyMzUyZTM4Mzg1ZDViMDFmMmM2
MDQyOGFmOWM4MTA4MzhhZmYuLmQ1MTc1NDlkMTUwYjc0YTg4ZWRhNDA4MmM0N2MyNmMzZjgwYThl
MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzIgQEAKKzIwMTItMDUt
MDMgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVk
REI6IFN0b3JlIGtleSBwYXRocyBpbiBJREJLZXlQYXRoIHR5cGUgaW5zdGVhZCBvZiBTdHJpbmcK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1Mjk4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gZnVuY3Rp
b25hbCBjaGFuZ2VzLCBqdXN0IGZpbmlzaCBtaWdyYXRpb24gZnJvbSBTdHJpbmcgdG8gSURCS2V5
UGF0aAorICAgICAgICBmb3Igc3RvcmluZyBrZXkgcGF0aHMsIGZvciBldmVudHVhbCBhcnJheSBz
dXBwb3J0IGh0dHA6Ly93ZWJraXQub3JnL2IvODQyMDcKKworICAgICAgICAqIHB1YmxpYy9XZWJJ
REJEYXRhYmFzZS5oOiBSZW1vdmUgdGVtcG9yYXJ5IG92ZXJsb2FkLgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRGF0YWJhc2U6Om9iamVjdFN0b3JlTmFtZXMpOgor
ICAgICAgICAqIHB1YmxpYy9XZWJJREJJbmRleC5oOiBSZW1vdmUgdGVtcG9yYXJ5IG1ldGhvZC4K
KyAgICAgICAgKFdlYktpdDo6V2ViSURCSW5kZXg6OmtleVBhdGgpOgorICAgICAgICAqIHB1Ymxp
Yy9XZWJJREJLZXlQYXRoLmg6IFJlbW92ZSBvYnNvbGV0ZSBtZXRob2RzLCB3cmFwIFdlYkNvcmU6
OklEQktleVBhdGgKKyAgICAgICAgKFdlYklEQktleVBhdGgpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJLZXlQYXRoOjpXZWJJREJLZXlQYXRoKToKKyAgICAgICAgKiBwdWJsaWMvV2ViSURCT2Jq
ZWN0U3RvcmUuaDogUmVtb3ZlIHRlbXBvcmFyeSBtZXRob2QgYW5kIG92ZXJsb2FkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJJREJPYmplY3RTdG9yZTo6a2V5UGF0aCk6CisgICAgICAgICogcHVibGlj
L3BsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oOiBSZW1vdmUgdGVtcG9yYXJ5IG92ZXJs
b2Fkcy4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogc3JjL0Fzc2VydE1hdGNoaW5nRW51
bXMuY3BwOiBXZWJJREJLZXlQYXRoIHZzLiBJREJLZXlQYXRoIGVudW1zLgorICAgICAgICAqIHNy
Yy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHA6IFN3aXRjaCBmcm9tIFN0cmluZyB0byBJREJL
ZXlQYXRoLgorICAgICAgICAoV2ViS2l0OjpJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6Y3JlYXRl
T2JqZWN0U3RvcmUpOgorICAgICAgICAqIHNyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oOiBT
d2l0Y2ggZnJvbSBTdHJpbmcgdG8gSURCS2V5UGF0aC4KKyAgICAgICAgKElEQkRhdGFiYXNlQmFj
a2VuZFByb3h5KToKKyAgICAgICAgKiBzcmMvSURCSW5kZXhCYWNrZW5kUHJveHkuY3BwOiBTd2l0
Y2ggZnJvbSBTdHJpbmcgdG8gSURCS2V5UGF0aC4KKyAgICAgICAgKFdlYktpdDo6SURCSW5kZXhC
YWNrZW5kUHJveHk6OmtleVBhdGgpOgorICAgICAgICAqIHNyYy9JREJJbmRleEJhY2tlbmRQcm94
eS5oOiBTd2l0Y2ggZnJvbSBTdHJpbmcgdG8gSURCS2V5UGF0aC4KKyAgICAgICAgKElEQkluZGV4
QmFja2VuZFByb3h5KToKKyAgICAgICAgKiBzcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHku
Y3BwOiBTd2l0Y2ggZnJvbSBTdHJpbmcgdG8gSURCS2V5UGF0aC4KKyAgICAgICAgKFdlYktpdDo6
SURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OmtleVBhdGgpOgorICAgICAgICAoV2ViS2l0OjpJ
REJPYmplY3RTdG9yZUJhY2tlbmRQcm94eTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAqIHNyYy9J
REJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5oOiBTd2l0Y2ggZnJvbSBTdHJpbmcgdG8gSURCS2V5
UGF0aC4KKyAgICAgICAgKElEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5KToKKyAgICAgICAgKiBz
cmMvUGxhdGZvcm1TdXBwb3J0LmNwcDogU3dpdGNoIGZyb20gU3RyaW5nIHRvIElEQktleVBhdGgu
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVN1cHBvcnQ6OmNyZWF0ZUlEQktleXNGcm9tU2Vy
aWFsaXplZFZhbHVlc0FuZEtleVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TdXBw
b3J0OjppbmplY3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKToKKyAgICAgICAgKiBzcmMvV2Vi
SURCRGF0YWJhc2VJbXBsLmNwcDogU3dpdGNoIGZyb20gU3RyaW5nIHRvIElEQktleVBhdGguCisg
ICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlSW1wbDo6Y3JlYXRlT2JqZWN0U3RvcmUpOgor
ICAgICAgICAqIHNyYy9XZWJJREJEYXRhYmFzZUltcGwuaDogUmVtb3ZlIHRlbXBvcmFyeSBvdmVy
bG9hZC4KKyAgICAgICAgKFdlYklEQkRhdGFiYXNlSW1wbCk6CisgICAgICAgICogc3JjL1dlYklE
QkluZGV4SW1wbC5jcHA6IFJlbW92ZSB0ZW1wb3JhcnkgbWV0aG9kLgorICAgICAgICAqIHNyYy9X
ZWJJREJJbmRleEltcGwuaDogUmVtb3ZlIHRlbXBvcmFyeSBtZXRob2QuCisgICAgICAgIChXZWJJ
REJJbmRleEltcGwpOgorICAgICAgICAqIHNyYy9XZWJJREJLZXlQYXRoLmNwcDogUmVtb3ZlIG1v
c3QgbG9naWM7IGp1c3QgYSB3cmFwcGVyIGZvciBXZWJDb3JlOjpJREJLZXlQYXRoLgorICAgICAg
ICAoV2ViS2l0OjpXZWJJREJLZXlQYXRoOjp+V2ViSURCS2V5UGF0aCk6CisgICAgICAgIChXZWJL
aXQ6OldlYklEQktleVBhdGg6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQktleVBh
dGg6OmNyZWF0ZU51bGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJLZXlQYXRoOjppc1ZhbGlk
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCS2V5UGF0aDo6dHlwZSk6CisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJLZXlQYXRoOjphcnJheSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYklEQktleVBhdGg6OnN0cmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQktl
eVBhdGg6OldlYklEQktleVBhdGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJLZXlQYXRoOjpv
cGVyYXRvcj0pOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJLZXlQYXRoOjpvcGVyYXRvciBjb25z
dCBXZWJDb3JlOjpJREJLZXlQYXRoJik6CisgICAgICAgICogc3JjL1dlYklEQk9iamVjdFN0b3Jl
SW1wbC5jcHA6IFJlbW92ZSB0ZW1wb3JhcnkgbWV0aG9kIGFuZCBvdmVybG9hZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViSURCT2JqZWN0U3RvcmVJbXBsOjprZXlQYXRoKToKKyAgICAgICAgKFdlYktp
dDo6V2ViSURCT2JqZWN0U3RvcmVJbXBsOjpjcmVhdGVJbmRleCk6CisgICAgICAgICogc3JjL1dl
YklEQk9iamVjdFN0b3JlSW1wbC5oOiBSZW1vdmUgdGVtcG9yYXJ5IG1ldGhvZCBhbmQgb3Zlcmxv
YWQuCisgICAgICAgIChXZWJJREJPYmplY3RTdG9yZUltcGwpOgorICAgICAgICAqIHRlc3RzL0lE
QkJpbmRpbmdVdGlsaXRpZXNUZXN0LmNwcDogVXNlIElEQktleVBhdGguCisgICAgICAgIChXZWJD
b3JlOjpjaGVja0tleUZyb21WYWx1ZUFuZEtleVBhdGhJbnRlcm5hbCk6CisgICAgICAgIChXZWJD
b3JlOjppbmplY3RLZXkpOgorICAgICAgICAqIHRlc3RzL0lEQktleVBhdGhUZXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNoZWNrS2V5UGF0aCk6IFRlc3QgSURCS2V5UGF0aCB2YWxpZGl0eS4K
KwogMjAxMi0wNS0wMyAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBbY2hyb21pdW1dIERvbid0IGFkZCBzbWFsbCBvcGFxdWUgYXJlYXMgdG8gdGhlIG9jY2x1
c2lvbiB0cmFja2VyJ3MgUmVnaW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJBbnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCQW55LmNwcAppbmRleCA1N2E0MDZlMmJiMDdiMGJkNmQyNWRkYmI4MWJjNjRmZTllYWEwNmFk
Li4zMDAyOGNjZmRmY2U5NTk2MDQwYWMwM2VmYTQ5ZmFiMjQwNzAyZTMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJBbnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5jcHAKQEAgLTQ5LDYgKzQ5LDEzIEBAIFBh
c3NSZWZQdHI8SURCQW55PiBJREJBbnk6OmNyZWF0ZU51bGwoKQogICAgIHJldHVybiBpZGJBbnku
cmVsZWFzZSgpOwogfQogCitQYXNzUmVmUHRyPElEQkFueT4gSURCQW55OjpjcmVhdGVTdHJpbmco
Y29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBSZWZQdHI8SURCQW55PiBpZGJBbnkgPSBhZG9w
dFJlZihuZXcgSURCQW55KCkpOworICAgIGlkYkFueS0+c2V0KHZhbHVlKTsKKyAgICByZXR1cm4g
aWRiQW55LnJlbGVhc2UoKTsKK30KKwogSURCQW55OjpJREJBbnkoKQogICAgIDogbV90eXBlKFVu
ZGVmaW5lZFR5cGUpCiB7CkBAIC0xMTgsNiArMTI1LDEyIEBAIFBhc3NSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBJREJBbnk6OnNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgpCiAgICAgcmV0dXJu
IG1fc2VyaWFsaXplZFNjcmlwdFZhbHVlOwogfQogCitjb25zdCBTdHJpbmcmIElEQkFueTo6c3Ry
aW5nKCkKK3sKKyAgICBBU1NFUlQobV90eXBlID09IFN0cmluZ1R5cGUpOworICAgIHJldHVybiBt
X3N0cmluZzsKK30KKwogdm9pZCBJREJBbnk6OnNldE51bGwoKQogewogICAgIEFTU0VSVChtX3R5
cGUgPT0gVW5kZWZpbmVkVHlwZSk7CkBAIC0xOTQsNiArMjA3LDEzIEBAIHZvaWQgSURCQW55Ojpz
ZXQoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlKQogICAgIG1fc2VyaWFs
aXplZFNjcmlwdFZhbHVlID0gdmFsdWU7CiB9CiAKK3ZvaWQgSURCQW55OjpzZXQoY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKK3sKKyAgICBBU1NFUlQobV90eXBlID09IFVuZGVmaW5lZFR5cGUpOworICAg
IG1fdHlwZSA9IFN0cmluZ1R5cGU7CisgICAgbV9zdHJpbmcgPSB2YWx1ZTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQW55LmgKaW5kZXggNmJlZGE1ODg4MDg0YmMyMjFhM2QxOGM2MDM2NDY0NjQyZGNhN2U0
Ni4uOTNlYjI0MDFkYWFiOGM4NjY2ZTY4NDY1MDFkNTFiOTEwNjlhYWJkZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lm
IEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIK
ICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNDksNiArNTAsNyBAQCBjbGFzcyBJREJBbnkg
OiBwdWJsaWMgUmVmQ291bnRlZDxJREJBbnk+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxJREJBbnk+IGNyZWF0ZUludmFsaWQoKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJB
bnk+IGNyZWF0ZU51bGwoKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJBbnk+IGNyZWF0ZVN0
cmluZyhjb25zdCBTdHJpbmcmKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPElEQkFueT4gY3JlYXRlKFQqIGlkYk9iamVjdCkKICAgICB7CkBAIC03Nyw3
ICs3OSw4IEBAIHB1YmxpYzoKICAgICAgICAgSURCS2V5VHlwZSwKICAgICAgICAgSURCT2JqZWN0
U3RvcmVUeXBlLAogICAgICAgICBJREJUcmFuc2FjdGlvblR5cGUsCi0gICAgICAgIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZVR5cGUKKyAgICAgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlVHlwZSwKKyAg
ICAgICAgU3RyaW5nVHlwZSwKICAgICB9OwogCiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1
cm4gbV90eXBlOyB9CkBAIC05Miw2ICs5NSw3IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPElE
Qk9iamVjdFN0b3JlPiBpZGJPYmplY3RTdG9yZSgpOwogICAgIFBhc3NSZWZQdHI8SURCVHJhbnNh
Y3Rpb24+IGlkYlRyYW5zYWN0aW9uKCk7CiAgICAgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgpOworICAgIGNvbnN0IFN0cmluZyYgc3RyaW5n
KCk7CiAKICAgICAvLyBTZXQgY2FuIG9ubHkgYmUgY2FsbGVkIG9uY2UuCiAgICAgdm9pZCBzZXRO
dWxsKCk7CkBAIC0xMDUsNiArMTA5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0KFBhc3NSZWZQ
dHI8SURCT2JqZWN0U3RvcmU+KTsKICAgICB2b2lkIHNldChQYXNzUmVmUHRyPElEQlRyYW5zYWN0
aW9uPik7CiAgICAgdm9pZCBzZXQoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsK
KyAgICB2b2lkIHNldChjb25zdCBTdHJpbmcmKTsKIAogcHJpdmF0ZToKICAgICBJREJBbnkoKTsK
QEAgLTEyMiw2ICsxMjcsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZT4g
bV9pZGJPYmplY3RTdG9yZTsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IG1faWRiVHJhbnNh
Y3Rpb247CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbV9zZXJpYWxpemVkU2Ny
aXB0VmFsdWU7CisgICAgU3RyaW5nIG1fc3RyaW5nOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFj
a2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5n
U3RvcmUuaAppbmRleCBmNmJiMTBhYWFjNWM4NTkzODY5Yjg1ZGFjMTY3YTliODRlMDY3NTdkLi41
Nzc3NWViMWNlZDVmZDg0OGNmZGRiMmE0NzVlMmFlZTUyMGZhOWQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaApAQCAtNTIsOCAr
NTIsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHVwZGF0ZUlEQkRhdGFiYXNlTWV0YURh
dGEoaW50NjRfdCByb3dJZCwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKSA9IDA7CiAgICAgdmlydHVh
bCBib29sIGRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgbmFtZSkgPSAwOwogCi0gICAgdmly
dHVhbCB2b2lkIGdldE9iamVjdFN0b3JlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIFZlY3RvcjxpbnQ2
NF90PiYgZm91bmRJZHMsIFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzLCBWZWN0b3I8U3RyaW5n
PiYgZm91bmRLZXlQYXRocywgVmVjdG9yPGJvb2w+JiBmb3VuZEF1dG9JbmNyZW1lbnRGbGFncykg
PSAwOwotICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVPYmplY3RTdG9yZShpbnQ2NF90IGRhdGFiYXNl
SWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9J
bmNyZW1lbnQsIGludDY0X3QmIGFzc2lnbmVkT2JqZWN0U3RvcmVJZCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBnZXRPYmplY3RTdG9yZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBWZWN0b3I8aW50NjRf
dD4mIGZvdW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcywgVmVjdG9yPElEQktleVBh
dGg+JiBmb3VuZEtleVBhdGhzLCBWZWN0b3I8Ym9vbD4mIGZvdW5kQXV0b0luY3JlbWVudEZsYWdz
KSA9IDA7CisgICAgdmlydHVhbCBib29sIGNyZWF0ZU9iamVjdFN0b3JlKGludDY0X3QgZGF0YWJh
c2VJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5j
cmVtZW50LCBpbnQ2NF90JiBhc3NpZ25lZE9iamVjdFN0b3JlSWQpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVj
dFN0b3JlSWQpID0gMDsKIAogICAgIGNsYXNzIE9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllciA6
IHB1YmxpYyBSZWZDb3VudGVkPE9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllcj4gewpAQCAtNzcs
OCArNzcsOCBAQCBwdWJsaWM6CiAgICAgfTsKICAgICB2aXJ0dWFsIGJvb2wgZm9yRWFjaE9iamVj
dFN0b3JlUmVjb3JkKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBP
YmplY3RTdG9yZVJlY29yZENhbGxiYWNrJikgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIGdldElu
ZGV4ZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFZlY3Rvcjxp
bnQ2NF90PiYgZm91bmRJZHMsIFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzLCBWZWN0b3I8U3Ry
aW5nPiYgZm91bmRLZXlQYXRocywgVmVjdG9yPGJvb2w+JiBmb3VuZFVuaXF1ZUZsYWdzLCBWZWN0
b3I8Ym9vbD4mIGZvdW5kTXVsdGlFbnRyeUZsYWdzKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGNy
ZWF0ZUluZGV4KGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBpc1VuaXF1ZSwgYm9v
bCBpc011bHRpRW50cnksIGludDY0X3QmIGluZGV4SWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
Z2V0SW5kZXhlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgVmVj
dG9yPGludDY0X3Q+JiBmb3VuZElkcywgVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMsIFZlY3Rv
cjxJREJLZXlQYXRoPiYgZm91bmRLZXlQYXRocywgVmVjdG9yPGJvb2w+JiBmb3VuZFVuaXF1ZUZs
YWdzLCBWZWN0b3I8Ym9vbD4mIGZvdW5kTXVsdGlFbnRyeUZsYWdzKSA9IDA7CisgICAgdmlydHVh
bCBib29sIGNyZWF0ZUluZGV4KGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGlzVW5pcXVl
LCBib29sIGlzTXVsdGlFbnRyeSwgaW50NjRfdCYgaW5kZXhJZCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkZWxldGVJbmRleChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgaW50NjRfdCBpbmRleElkKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHB1dEluZGV4RGF0YUZv
clJlY29yZChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRf
dCBpbmRleElkLCBjb25zdCBJREJLZXkmLCBjb25zdCBPYmplY3RTdG9yZVJlY29yZElkZW50aWZp
ZXIqKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGRlbGV0ZUluZGV4RGF0YUZvclJlY29yZChpbnQ2
NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBj
b25zdCBPYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXIqKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKaW5kZXggY2E2NTkwN2ZiMzkx
MjQ3ZWE2MTE0NWEzMjJmMDg5YWM0ZDhiZjk1My4uZmM4MDNiNWFlZTEwMTc1OWViNGYwNzlhMDBj
NzE3ZTZlNzc2OWYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlLmNwcApAQCAtOTIsOSArOTIsMTQgQEAgUGFzc1JlZlB0cjxJREJPYmplY3RT
dG9yZT4gSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwg
Y28KICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgU3RyaW5nIGtleVBhdGg7Ci0gICAg
Ym9vbCBrZXlQYXRoRXhpc3RzID0gb3B0aW9ucy5nZXRXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2so
ImtleVBhdGgiLCBrZXlQYXRoKTsKLSAgICBpZiAoa2V5UGF0aEV4aXN0cyAmJiAhSURCSXNWYWxp
ZEtleVBhdGgoa2V5UGF0aCkpIHsKKyAgICBJREJLZXlQYXRoIGtleVBhdGg7CisgICAgaWYgKCFv
cHRpb25zLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgU3RyaW5nIGtleVBhdGhTdHJp
bmc7CisgICAgICAgIGlmIChvcHRpb25zLmdldCgia2V5UGF0aCIsIGtleVBhdGhTdHJpbmcpKQor
ICAgICAgICAgICAga2V5UGF0aCA9IElEQktleVBhdGgoa2V5UGF0aFN0cmluZyk7CisgICAgfQor
CisgICAgaWYgKCFrZXlQYXRoLmlzTnVsbCgpICYmICFrZXlQYXRoLmlzVmFsaWQoKSkgewogICAg
ICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpOT05fVFJBTlNJRU5UX0VSUjsKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAppbmRleCBiMDViMzI4NjNk
MDcyZmI2NTdkY2E5YzhkNjRlMGI4NTFhZDA5MjQ1Li41OTE5OWZjNjMyYWJmMTVhZjZmODI3NzE1
ZGNhMTE3OTQ0MzViNzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcApAQCAtMTM3LDcgKzEzNyw3
IEBAIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b2Jq
ZWN0U3RvcmVOYW1lcygpIGNvbnN0CiAgICAgcmV0dXJuIG9iamVjdFN0b3JlTmFtZXMucmVsZWFz
ZSgpOwogfQogCi1QYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gSURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9uQ29kZSYgZWMpCitQ
YXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJL
ZXlQYXRoJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZSogdHJhbnNhY3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIEFT
U0VSVCh0cmFuc2FjdGlvblB0ci0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NI
QU5HRSk7CiAKQEAgLTM3Niw3ICszNzYsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6
OmxvYWRPYmplY3RTdG9yZXMoKQogewogICAgIFZlY3RvcjxpbnQ2NF90PiBpZHM7CiAgICAgVmVj
dG9yPFN0cmluZz4gbmFtZXM7Ci0gICAgVmVjdG9yPFN0cmluZz4ga2V5UGF0aHM7CisgICAgVmVj
dG9yPElEQktleVBhdGg+IGtleVBhdGhzOwogICAgIFZlY3Rvcjxib29sPiBhdXRvSW5jcmVtZW50
RmxhZ3M7CiAgICAgbV9iYWNraW5nU3RvcmUtPmdldE9iamVjdFN0b3JlcyhtX2lkLCBpZHMsIG5h
bWVzLCBrZXlQYXRocywgYXV0b0luY3JlbWVudEZsYWdzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCmlu
ZGV4IDEwODZlYjE2ZWI4N2QxOWYwMjhlM2Y0YzhjNDdiOTA1ZDg2NzhmMDUuLjMzMThlMmJmMTg0
MmZlZjZjMWIzN2Q4MGYyNjBiYjIwZTU1MWIzNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKQEAgLTY1
LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHZlcnNpb24oKSBjb25zdCB7
IHJldHVybiBtX3ZlcnNpb247IH0KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlz
dD4gb2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0OwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPElE
Qk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZU9iamVj
dFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgYXV0b0lu
Y3JlbWVudCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYp
OwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUs
IElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0VmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4sIEV4Y2VwdGlv
bkNvZGUmKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlPiB0cmFuc2FjdGlvbihET01TdHJpbmdMaXN0KiBvYmplY3RTdG9yZU5hbWVzLCB1bnNp
Z25lZCBzaG9ydCBtb2RlLCBFeGNlcHRpb25Db2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFj
ZS5oCmluZGV4IDU2ZThmMmRiYjY0MmFhZWIxMTY2ODljNTk5NzQ4MTE0MzQ1NGI2MjkuLmUwNzJh
MGYzOTU5ZDcwZDUxYTUwYzI2YjFlYjIxNTIwYzU5NmViMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZElu
dGVyZmFjZS5oCkBAIC0zOCw2ICszOCw3IEBAIGNsYXNzIERPTVN0cmluZ0xpc3Q7CiBjbGFzcyBG
cmFtZTsKIGNsYXNzIElEQkNhbGxiYWNrczsKIGNsYXNzIElEQkRhdGFiYXNlQ2FsbGJhY2tzOwor
Y2xhc3MgSURCS2V5UGF0aDsKIGNsYXNzIElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZTsK
IGNsYXNzIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZTsKIApAQCAtNTUsNyArNTYsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgdmVyc2lvbigpIGNvbnN0ID0gMDsKICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gb2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0
ID0gMDsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRl
cmZhY2U+IGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQk9i
amVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50LCBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHNldFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJikgPSAw
OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+
IHRyYW5zYWN0aW9uKERPTVN0cmluZ0xpc3QqIHN0b3JlTmFtZXMsIHVuc2lnbmVkIHNob3J0IG1v
ZGUsIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCSW5kZXguaAppbmRleCBlYmJiZjk2YWFhNTA1NjdiYzQ2MGRkNmRkZTgzOWM2MmI3YThj
Y2JlLi5jOTk0MDRhZGI5YmI4NjI0YTE2NmEwMmQyZDU3MDYxYjM3OTYyN2RkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmgKQEAgLTI4LDYgKzI4LDcgQEAK
IAogI2luY2x1ZGUgIklEQkN1cnNvci5oIgogI2luY2x1ZGUgIklEQkluZGV4QmFja2VuZEludGVy
ZmFjZS5oIgorI2luY2x1ZGUgIklEQktleVBhdGguaCIKICNpbmNsdWRlICJJREJLZXlSYW5nZS5o
IgogI2luY2x1ZGUgIklEQlJlcXVlc3QuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgpA
QCAtNTAsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgLy8gSW1wbGVtZW50IHRoZSBJREwKICAgICBT
dHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZC0+bmFtZSgpOyB9CiAgICAgSURC
T2JqZWN0U3RvcmUqIG9iamVjdFN0b3JlKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RTdG9yZS5n
ZXQoKTsgfQotICAgIFN0cmluZyBrZXlQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kLT5r
ZXlQYXRoKCk7IH0KKyAgICBQYXNzUmVmUHRyPElEQkFueT4ga2V5UGF0aCgpIGNvbnN0IHsgcmV0
dXJuIG1fYmFja2VuZC0+a2V5UGF0aCgpOyB9CiAgICAgYm9vbCB1bmlxdWUoKSBjb25zdCB7IHJl
dHVybiBtX2JhY2tlbmQtPnVuaXF1ZSgpOyB9CiAgICAgYm9vbCBtdWx0aUVudHJ5KCkgY29uc3Qg
eyByZXR1cm4gbV9iYWNrZW5kLT5tdWx0aUVudHJ5KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaWRsIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaWRsCmluZGV4IGIyM2U1NWFjZDYzMmNmMjZlM2E3
YTY1ODUyNGRmM2JiMzFlMmQ3YjEuLjUyNjlmZGNkM2U4MTk2YmI2ODU2YTdlNDlhZWVlNDY2MGU2
NDZjOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQklu
ZGV4LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5p
ZGwKQEAgLTMwLDcgKzMwLDcgQEAgbW9kdWxlIHN0b3JhZ2UgewogICAgIF0gSURCSW5kZXggewog
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5hbWU7CiAgICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBJREJPYmplY3RTdG9yZSBvYmplY3RTdG9yZTsKLSAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIERPTVN0cmluZyBrZXlQYXRoOworICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgSURCQW55IGtleVBhdGg7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHVu
aXF1ZTsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gbXVsdGlFbnRyeTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNr
ZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJh
Y2tlbmRJbXBsLmNwcAppbmRleCA2M2Q0ODQxNDc4NDBmNjg5NTNiYTM0NTA3ZDBlZmNhNzkxZThm
ZDY3Li44YzUxMWVmMzU0YzU2ZmQ0YTkyNGZiZTkyYjE3Y2VhM2JiMjFlMjA5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJ
bXBsLmNwcApAQCAtNDEsNyArNDEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUlEQklu
ZGV4QmFja2VuZEltcGw6OklEQkluZGV4QmFja2VuZEltcGwoSURCQmFja2luZ1N0b3JlKiBiYWNr
aW5nU3RvcmUsIGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbCogb2JqZWN0U3RvcmVCYWNrZW5kLCBpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYgc3RvcmVOYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5p
cXVlLCBib29sIG11bHRpRW50cnkpCitJREJJbmRleEJhY2tlbmRJbXBsOjpJREJJbmRleEJhY2tl
bmRJbXBsKElEQkJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQs
IGNvbnN0IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwqIG9iamVjdFN0b3JlQmFja2VuZCwgaW50
NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHN0b3JlTmFtZSwgY29u
c3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSkKICAg
ICA6IG1fYmFja2luZ1N0b3JlKGJhY2tpbmdTdG9yZSkKICAgICAsIG1fZGF0YWJhc2VJZChkYXRh
YmFzZUlkKQogICAgICwgbV9vYmplY3RTdG9yZUJhY2tlbmQob2JqZWN0U3RvcmVCYWNrZW5kKQpA
QCAtNTQsNyArNTQsNyBAQCBJREJJbmRleEJhY2tlbmRJbXBsOjpJREJJbmRleEJhY2tlbmRJbXBs
KElEQkJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90CiB7CiB9CiAKLUlEQkluZGV4
QmFja2VuZEltcGw6OklEQkluZGV4QmFja2VuZEltcGwoSURCQmFja2luZ1N0b3JlKiBiYWNraW5n
U3RvcmUsIGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bCogb2JqZWN0U3RvcmVCYWNrZW5kLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
c3RvcmVOYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRp
RW50cnkpCitJREJJbmRleEJhY2tlbmRJbXBsOjpJREJJbmRleEJhY2tlbmRJbXBsKElEQkJhY2tp
bmdTdG9yZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IElEQk9iamVj
dFN0b3JlQmFja2VuZEltcGwqIG9iamVjdFN0b3JlQmFja2VuZCwgY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIHN0b3JlTmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9v
bCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSkKICAgICA6IG1fYmFja2luZ1N0b3JlKGJhY2tpbmdT
dG9yZSkKICAgICAsIG1fZGF0YWJhc2VJZChkYXRhYmFzZUlkKQogICAgICwgbV9vYmplY3RTdG9y
ZUJhY2tlbmQob2JqZWN0U3RvcmVCYWNrZW5kKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5oCmluZGV4IGU2NDg1YjY2NGMz
YTRlMzAzNzQ0YTMxYmE2NDU5YzI1YTUzZWNlOWEuLjc1ZGE2ZWQ3NDJmODQzNjVhMzViMGI4YzA5
NjQwZGM4ODgyZGI3OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkluZGV4QmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmgKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1
ZGUgIklEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJJbmRleEJhY2tl
bmRJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJJREJLZXlQYXRoLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtNDAsMTEgKzQxLDExIEBAIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7
CiAKIGNsYXNzIElEQkluZGV4QmFja2VuZEltcGwgOiBwdWJsaWMgSURCSW5kZXhCYWNrZW5kSW50
ZXJmYWNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJ
bXBsPiBjcmVhdGUoSURCQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0YWJh
c2VJZCwgY29uc3QgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCogb2JqZWN0U3RvcmVCYWNrZW5k
LCBpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgc3RvcmVOYW1l
LCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnkpCisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gY3JlYXRlKElEQkJhY2tp
bmdTdG9yZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IElEQk9iamVj
dFN0b3JlQmFja2VuZEltcGwqIG9iamVjdFN0b3JlQmFja2VuZCwgaW50NjRfdCBpZCwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHN0b3JlTmFtZSwgY29uc3QgSURCS2V5UGF0aCYg
a2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSkKICAgICB7CiAgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgSURCSW5kZXhCYWNrZW5kSW1wbChiYWNraW5nU3RvcmUsIGRhdGFi
YXNlSWQsIG9iamVjdFN0b3JlQmFja2VuZCwgaWQsIG5hbWUsIHN0b3JlTmFtZSwga2V5UGF0aCwg
dW5pcXVlLCBtdWx0aUVudHJ5KSk7CiAgICAgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQklu
ZGV4QmFja2VuZEltcGw+IGNyZWF0ZShJREJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSwgaW50
NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKiBvYmplY3RT
dG9yZUJhY2tlbmQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBzdG9yZU5hbWUs
IGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSkKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiBjcmVhdGUoSURCQmFja2lu
Z1N0b3JlKiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbCogb2JqZWN0U3RvcmVCYWNrZW5kLCBjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYgc3RvcmVOYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29s
IHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBJREJJbmRleEJhY2tlbmRJbXBsKGJhY2tpbmdTdG9yZSwgZGF0YWJhc2VJZCwgb2JqZWN0
U3RvcmVCYWNrZW5kLCBuYW1lLCBzdG9yZU5hbWUsIGtleVBhdGgsIHVuaXF1ZSwgbXVsdGlFbnRy
eSkpOwogICAgIH0KQEAgLTYzLDcgKzY0LDcgQEAgcHVibGljOgogICAgIC8vIEltcGxlbWVudHMg
SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlLgogICAgIHZpcnR1YWwgU3RyaW5nIG5hbWUoKSB7IHJl
dHVybiBtX25hbWU7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBzdG9yZU5hbWUoKSB7IHJldHVybiBt
X3N0b3JlTmFtZTsgfQotICAgIHZpcnR1YWwgU3RyaW5nIGtleVBhdGgoKSB7IHJldHVybiBtX2tl
eVBhdGg7IH0KKyAgICB2aXJ0dWFsIElEQktleVBhdGgga2V5UGF0aCgpIHsgcmV0dXJuIG1fa2V5
UGF0aDsgfQogICAgIHZpcnR1YWwgYm9vbCB1bmlxdWUoKSB7IHJldHVybiBtX3VuaXF1ZTsgfQog
ICAgIHZpcnR1YWwgYm9vbCBtdWx0aUVudHJ5KCkgeyByZXR1cm4gbV9tdWx0aUVudHJ5OyB9CiAK
QEAgLTc2LDggKzc3LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRLZXkoUGFzc1Jl
ZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKIAogcHJpdmF0ZToKLSAgICBJREJJbmRl
eEJhY2tlbmRJbXBsKElEQkJhY2tpbmdTdG9yZSosIGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3Qg
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCosIGludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiBzdG9yZU5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1
bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSk7Ci0gICAgSURCSW5kZXhCYWNrZW5kSW1wbChJREJCYWNr
aW5nU3RvcmUqLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IElEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGwqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgc3RvcmVOYW1lLCBjb25z
dCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnkpOworICAgIElE
QkluZGV4QmFja2VuZEltcGwoSURCQmFja2luZ1N0b3JlKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBj
b25zdCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKiwgaW50NjRfdCBpZCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmIHN0b3JlTmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wg
dW5pcXVlLCBib29sIG11bHRpRW50cnkpOworICAgIElEQkluZGV4QmFja2VuZEltcGwoSURCQmFj
a2luZ1N0b3JlKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsKiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHN0b3JlTmFtZSwgY29u
c3QgSURCS2V5UGF0aCYsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnkpOwogCiAgICAgc3Rh
dGljIHZvaWQgb3BlbkN1cnNvckludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNz
UmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgdW5z
aWduZWQgc2hvcnQgZGlyZWN0aW9uLCBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpDdXJzb3JU
eXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlPik7CiAgICAgc3RhdGljIHZvaWQgY291bnRJbnRlcm5hbChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiwgUGFzc1Jl
ZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+KTsKQEAgLTk1LDcgKzk2LDcgQEAgcHJpdmF0
ZToKICAgICBpbnQ2NF90IG1faWQ7CiAgICAgU3RyaW5nIG1fbmFtZTsKICAgICBTdHJpbmcgbV9z
dG9yZU5hbWU7Ci0gICAgU3RyaW5nIG1fa2V5UGF0aDsKKyAgICBJREJLZXlQYXRoIG1fa2V5UGF0
aDsKICAgICBib29sIG1fdW5pcXVlOwogICAgIGJvb2wgbV9tdWx0aUVudHJ5OwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZElu
dGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNr
ZW5kSW50ZXJmYWNlLmgKaW5kZXggODEyNzBhZTRhOThhOWQ2YjBiNTY4YWMwZDkwNjZkOGE0NjQ2
YWI3My4uMGE1YmJiNTY4ODk5Njk4M2E2YTc4YjhmNWJiOWU4N2VhNmUwMjk1MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW50ZXJm
YWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNr
ZW5kSW50ZXJmYWNlLmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBJREJDYWxsYmFja3M7CiBjbGFzcyBJREJLZXk7CitjbGFzcyBJREJLZXlQYXRoOwogY2xh
c3MgSURCS2V5UmFuZ2U7CiBjbGFzcyBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U7CiAK
QEAgLTQ3LDcgKzQ4LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBTdHJpbmcgbmFtZSgpID0g
MDsKICAgICB2aXJ0dWFsIFN0cmluZyBzdG9yZU5hbWUoKSA9IDA7Ci0gICAgdmlydHVhbCBTdHJp
bmcga2V5UGF0aCgpID0gMDsKKyAgICB2aXJ0dWFsIElEQktleVBhdGgga2V5UGF0aCgpID0gMDsK
ICAgICB2aXJ0dWFsIGJvb2wgdW5pcXVlKCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBtdWx0aUVu
dHJ5KCkgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJLZXlQYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktl
eVBhdGguY3BwCmluZGV4IGNkNWU5NjYzNDAwMmFjZDQzOWI0YWQ1Y2JiYmY0ODI2NTlkNGExYmEu
LjQ3YTcwYWU4MTI5YjQ3OWMzZjAyODcwZTJhOWZlNTE1NDFlMGNlMGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGguY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGguY3BwCkBAIC0yOCw2ICsyOCw3
IEBACiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAorI2luY2x1ZGUgIkRPTVN0cmlu
Z0xpc3QuaCIKICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi9kdG9h
Lmg+CiAKQEAgLTE3OSw2ICsxODAsNjEgQEAgdm9pZCBJREJQYXJzZUtleVBhdGgoY29uc3QgU3Ry
aW5nJiBrZXlQYXRoLCBWZWN0b3I8U3RyaW5nPiYgZWxlbWVudHMsIElEQktleVBhdGgKICAgICB9
CiB9CiAKK0lEQktleVBhdGg6OklEQktleVBhdGgoY29uc3QgU3RyaW5nJiBzdHJpbmcpCisgICAg
OiBtX3R5cGUoU3RyaW5nVHlwZSkKKyAgICAsIG1fc3RyaW5nKHN0cmluZykKK3sKKyAgICBBU1NF
UlQoIW1fc3RyaW5nLmlzTnVsbCgpKTsKK30KKworSURCS2V5UGF0aDo6SURCS2V5UGF0aChjb25z
dCBWZWN0b3I8U3RyaW5nPiYgYXJyYXkpCisgICAgOiBtX3R5cGUoQXJyYXlUeXBlKQorICAgICwg
bV9hcnJheShhcnJheSkKK3sKKyNpZm5kZWYgTkRFQlVHCisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBtX2FycmF5LnNpemUoKTsgKytpKQorICAgICAgICBBU1NFUlQoIW1fYXJyYXlbaV0uaXNO
dWxsKCkpOworI2VuZGlmCit9CisKK2Jvb2wgSURCS2V5UGF0aDo6aXNWYWxpZCgpIGNvbnN0Cit7
CisgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICBjYXNlIE51bGxUeXBlOgorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBjYXNlIFN0cmluZ1R5cGU6CisgICAgICAgIHJldHVybiBJREJJc1Zh
bGlkS2V5UGF0aChtX3N0cmluZyk7CisKKyAgICBjYXNlIEFycmF5VHlwZToKKyAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX2FycmF5LnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBp
ZiAoIUlEQklzVmFsaWRLZXlQYXRoKG1fYXJyYXlbaV0pKQorICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitJREJLZXlQYXRoOjpv
cGVyYXRvciBQYXNzUmVmUHRyPElEQkFueT4oKSBjb25zdAoreworICAgIHN3aXRjaCAobV90eXBl
KSB7CisgICAgY2FzZSBOdWxsVHlwZToKKyAgICAgICAgcmV0dXJuIElEQkFueTo6Y3JlYXRlTnVs
bCgpOworICAgIGNhc2UgU3RyaW5nVHlwZToKKyAgICAgICAgcmV0dXJuIElEQkFueTo6Y3JlYXRl
U3RyaW5nKG1fc3RyaW5nKTsKKyAgICBjYXNlIEFycmF5VHlwZToKKyAgICAgICAgUmVmUHRyPERP
TVN0cmluZ0xpc3Q+IGtleVBhdGhzID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7CisgICAgICAg
IGZvciAoVmVjdG9yPFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9hcnJheS5iZWdpbigp
OyBpdCAhPSBtX2FycmF5LmVuZCgpOyArK2l0KQorICAgICAgICBrZXlQYXRocy0+YXBwZW5kKCpp
dCk7CisgICAgICAgIHJldHVybiBJREJBbnk6OmNyZWF0ZShzdGF0aWNfY2FzdDxQYXNzUmVmUHRy
PERPTVN0cmluZ0xpc3Q+ID4oa2V5UGF0aHMpKTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRoLmgKaW5kZXggYzUyYTYzYmE4Y2Q5ZTFkYWJhZTM4NGM5
MDUxNzAyMmE4YjQ0ZDMxYy4uZjUyMzZjMTUyZjAyY2JkYTI4ZGI4YzMxNTFmMmRkODU3ZWFhZWNl
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UGF0
aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGguaApA
QCAtMjgsMTAgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCi0jaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2lu
Y2x1ZGUgIklEQkFueS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTQyLDkgKzQxLDQ0IEBAIGVudW0gSURCS2V5UGF0aFBhcnNlRXJy
b3IgewogICAgIElEQktleVBhdGhQYXJzZUVycm9yRG90LAogfTsKIAotYm9vbCBJREJJc1ZhbGlk
S2V5UGF0aChjb25zdCBTdHJpbmcmKTsKIHZvaWQgSURCUGFyc2VLZXlQYXRoKGNvbnN0IFN0cmlu
ZyYsIFZlY3RvcjxTdHJpbmc+JiwgSURCS2V5UGF0aFBhcnNlRXJyb3ImKTsKIAorY2xhc3MgSURC
S2V5UGF0aCB7CitwdWJsaWM6CisgICAgSURCS2V5UGF0aCgpIDogbV90eXBlKE51bGxUeXBlKSB7
IH0KKyAgICBJREJLZXlQYXRoKGNvbnN0IFN0cmluZyYpOworICAgIElEQktleVBhdGgoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGFycmF5KTsKKworICAgIGVudW0gVHlwZSB7CisgICAgICAgIE51bGxU
eXBlID0gMCwKKyAgICAgICAgU3RyaW5nVHlwZSwKKyAgICAgICAgQXJyYXlUeXBlCisgICAgfTsK
KworICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorCisgICAgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGFycmF5KCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5
cGUgPT0gQXJyYXlUeXBlKTsKKyAgICAgICAgcmV0dXJuIG1fYXJyYXk7CisgICAgfQorCisgICAg
Y29uc3QgU3RyaW5nJiBzdHJpbmcoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlw
ZSA9PSBTdHJpbmdUeXBlKTsKKyAgICAgICAgcmV0dXJuIG1fc3RyaW5nOworICAgIH0KKworICAg
IGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IE51bGxUeXBlOyB9CisgICAg
Ym9vbCBpc1ZhbGlkKCkgY29uc3Q7CisgICAgb3BlcmF0b3IgUGFzc1JlZlB0cjxJREJBbnk+KCkg
Y29uc3Q7CisKK3ByaXZhdGU6CisgICAgVHlwZSBtX3R5cGU7CisgICAgU3RyaW5nIG1fc3RyaW5n
OworICAgIFZlY3RvcjxTdHJpbmc+IG1fYXJyYXk7Cit9OworCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCS2V5UGF0aEJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQktleVBhdGhCYWNrZW5kSW1wbC5jcHAKaW5kZXggOTRjN2YyNzkzNWNmYTM5YWQz
ODgwMDEyYmU2MDliNmIxMjk1YmZiYS4uNjRhMWZiYzViZWQ3MGFjOTA4NWY1MzYzYjhhNmVkOTNj
MmEyODAxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
S2V5UGF0aEJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJLZXlQYXRoQmFja2VuZEltcGwuY3BwCkBAIC0zOCwxMiArMzgsMTIgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIElEQktleVBhdGhCYWNrZW5kSW1wbDo6Y3JlYXRlSURC
S2V5c0Zyb21TZXJpYWxpemVkVmFsdWVzQW5kS2V5UGF0aChjb25zdCBWZWN0b3I8UmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIDA+JiwgY29uc3QgU3RyaW5nJiwgVmVjdG9yPFJlZlB0cjxJ
REJLZXk+LCAwPiYpCit2b2lkIElEQktleVBhdGhCYWNrZW5kSW1wbDo6Y3JlYXRlSURCS2V5c0Zy
b21TZXJpYWxpemVkVmFsdWVzQW5kS2V5UGF0aChjb25zdCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4sIDA+JiwgY29uc3QgSURCS2V5UGF0aCYsIFZlY3RvcjxSZWZQdHI8SURC
S2V5PiwgMD4mKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBtZXRob2Qgb25jZSBK
U0Mgc3VwcG9ydHMgV2lyZUZvcm1hdCBmb3IgU2VyaWFsaXplZFNjcmlwdFZhbHVlLgogfQogCi1Q
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gSURCS2V5UGF0aEJhY2tlbmRJbXBsOjpp
bmplY3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBjb25zdCBTdHJpbmcmKQorUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IElEQktleVBhdGhCYWNrZW5kSW1wbDo6aW5qZWN0SURCS2V5
SW50b1NlcmlhbGl6ZWRWYWx1ZShQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiwgY29uc3QgSURCS2V5UGF0aCYpCiB7CiAgICAgLy8gRklYTUU6IElt
cGxlbWVudCB0aGlzIG1ldGhvZCBvbmNlIEpTQyBzdXBwb3J0cyBXaXJlRm9ybWF0IGZvciBTZXJp
YWxpemVkU2NyaXB0VmFsdWUuCiAgICAgcmV0dXJuIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCS2V5UGF0aEJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJLZXlQYXRoQmFja2VuZEltcGwuaAppbmRleCAxYzc2MjMyMjE3ZmY1MGU0ZjBkOTc5OGY1
N2NmNDI0Y2RkM2MxMWZkLi4wZjA1N2ViMmJjNzMyNTFmN2FkNWYxZjA1MDk5MDFlZGNlNTE4OTE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRo
QmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJL
ZXlQYXRoQmFja2VuZEltcGwuaApAQCAtMzMsMTIgKzMzLDEzIEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIElEQktleTsKK2NsYXNzIElEQktleVBhdGg7CiBjbGFzcyBTZXJpYWxpemVk
U2NyaXB0VmFsdWU7CiAKIGNsYXNzIElEQktleVBhdGhCYWNrZW5kSW1wbCB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIHZvaWQgY3JlYXRlSURCS2V5c0Zyb21TZXJpYWxpemVkVmFsdWVzQW5kS2V5UGF0
aChjb25zdCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIDA+JiB2YWx1ZXMs
IGNvbnN0IFN0cmluZyYga2V5UGF0aCwgVmVjdG9yPFJlZlB0cjxJREJLZXk+LCAwPiYga2V5cyk7
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBpbmplY3RJREJL
ZXlJbnRvU2VyaWFsaXplZFZhbHVlKFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+LCBjb25zdCBTdHJpbmcmIGtleVBhdGgpOworICAgIHN0YXRpYyB2
b2lkIGNyZWF0ZUlEQktleXNGcm9tU2VyaWFsaXplZFZhbHVlc0FuZEtleVBhdGgoY29uc3QgVmVj
dG9yPFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCAwPiYgdmFsdWVzLCBjb25zdCBJREJL
ZXlQYXRoJiwgVmVjdG9yPFJlZlB0cjxJREJLZXk+LCAwPiYga2V5cyk7CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBpbmplY3RJREJLZXlJbnRvU2VyaWFsaXpl
ZFZhbHVlKFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+LCBjb25zdCBJREJLZXlQYXRoJik7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwCmlu
ZGV4IGQzNzY5ZWFjMTA3OTA4OTJhZGVlZjcxOTE4N2M2NGRjMzk0MGMxZjAuLmQ4ZTliZTVkMjZj
NGM5NTA3ODc0NTY1MTVlZDAzOTRlZTEwMWJkYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwCkBA
IC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlICJG
aWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgiCisjaW5jbHVk
ZSAiSURCS2V5UGF0aC5oIgogI2luY2x1ZGUgIklEQktleVJhbmdlLmgiCiAjaW5jbHVkZSAiSURC
TGV2ZWxEQkNvZGluZy5oIgogI2luY2x1ZGUgIkxldmVsREJDb21wYXJhdG9yLmgiCkBAIC04MSw2
ICs4MiwxNCBAQCBzdGF0aWMgYm9vbCBwdXRTdHJpbmcoREJPclRyYW5zYWN0aW9uKiBkYiwgY29u
c3QgVmVjdG9yPGNoYXI+IGtleSwgY29uc3QgU3RyaW5nJgogICAgIHJldHVybiB0cnVlOwogfQog
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgREJPclRyYW5zYWN0aW9uPgorc3RhdGljIGJvb2wgcHV0SURC
S2V5UGF0aChEQk9yVHJhbnNhY3Rpb24qIGRiLCBjb25zdCBWZWN0b3I8Y2hhcj4ga2V5LCBjb25z
dCBJREJLZXlQYXRoJiB2YWx1ZSkKK3sKKyAgICBpZiAoIWRiLT5wdXQoa2V5LCBlbmNvZGVJREJL
ZXlQYXRoKHZhbHVlKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwogc3RhdGljIGludCBjb21wYXJlS2V5cyhjb25zdCBMZXZlbERCU2xpY2UmIGEsIGNvbnN0
IExldmVsREJTbGljZSYgYikKIHsKICAgICByZXR1cm4gY29tcGFyZShhLCBiKTsKQEAgLTMxMSw3
ICszMjAsNyBAQCBzdGF0aWMgYm9vbCBjaGVja09iamVjdFN0b3JlQW5kTWV0YURhdGFUeXBlKGNv
bnN0IExldmVsREJJdGVyYXRvciogaXQsIGNvbnN0IFZlYwogICAgIHJldHVybiB0cnVlOwogfQog
Ci12b2lkIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmdldE9iamVjdFN0b3JlcyhpbnQ2NF90IGRh
dGFiYXNlSWQsIFZlY3RvcjxpbnQ2NF90PiYgZm91bmRJZHMsIFZlY3RvcjxTdHJpbmc+JiBmb3Vu
ZE5hbWVzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmRLZXlQYXRocywgVmVjdG9yPGJvb2w+JiBmb3Vu
ZEF1dG9JbmNyZW1lbnRGbGFncykKK3ZvaWQgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0T2Jq
ZWN0U3RvcmVzKGludDY0X3QgZGF0YWJhc2VJZCwgVmVjdG9yPGludDY0X3Q+JiBmb3VuZElkcywg
VmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMsIFZlY3RvcjxJREJLZXlQYXRoPiYgZm91bmRLZXlQ
YXRocywgVmVjdG9yPGJvb2w+JiBmb3VuZEF1dG9JbmNyZW1lbnRGbGFncykKIHsKICAgICBjb25z
dCBWZWN0b3I8Y2hhcj4gc3RhcnRLZXkgPSBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjplbmNvZGUo
ZGF0YWJhc2VJZCwgMSwgMCk7CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+IHN0b3BLZXkgPSBPYmpl
Y3RTdG9yZU1ldGFEYXRhS2V5OjplbmNvZGVNYXhLZXkoZGF0YWJhc2VJZCk7CkBAIC0zNDMsNyAr
MzUyLDcgQEAgdm9pZCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRPYmplY3RTdG9yZXMoaW50
NjRfdCBkYXRhYmFzZUlkLCBWZWN0b3I8aW50NjRfdD4KICAgICAgICAgICAgIExPR19FUlJPUigi
SW50ZXJuYWwgSW5kZXhlZCBEQiBlcnJvci4iKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQotICAgICAgICBTdHJpbmcga2V5UGF0aCA9IGRlY29kZVN0cmluZyhpdC0+dmFsdWUoKS5i
ZWdpbigpLCBpdC0+dmFsdWUoKS5lbmQoKSk7CisgICAgICAgIElEQktleVBhdGgga2V5UGF0aCA9
IGRlY29kZUlEQktleVBhdGgoaXQtPnZhbHVlKCkuYmVnaW4oKSwgaXQtPnZhbHVlKCkuZW5kKCkp
OwogICAgICAgICBib29sIGhhc0tleVBhdGggPSB0cnVlOwogCiAgICAgICAgIGl0LT5uZXh0KCk7
CkBAIC0zNzYsMTYgKzM4NSwyMiBAQCB2b2lkIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmdldE9i
amVjdFN0b3JlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIFZlY3RvcjxpbnQ2NF90PgogICAgICAgICBp
ZiAoY2hlY2tPYmplY3RTdG9yZUFuZE1ldGFEYXRhVHlwZShpdC5nZXQoKSwgc3RvcEtleSwgb2Jq
ZWN0U3RvcmVJZCwgNikpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgZW5jb2RlL2RlY29k
ZSBmdW5jdGlvbnMgZm9yIGJvb2xzLgogICAgICAgICAgICAgaGFzS2V5UGF0aCA9ICppdC0+dmFs
dWUoKS5iZWdpbigpOwotICAgICAgICAgICAgaWYgKCFoYXNLZXlQYXRoICYmICFrZXlQYXRoLmlz
RW1wdHkoKSkgeworICAgICAgICAgICAgLy8gVGhpcyBjaGVjayBhY2NvdW50cyBmb3IgdHdvIGxh
eWVycyBvZiBsZWdhY3kgY29kaW5nOgorICAgICAgICAgICAgLy8gKDEpIEluaXRpYWxseSwgaGFz
S2V5UGF0aCB3YXMgYWRkZWQgdG8gZGlzdGluZ3Vpc2ggbnVsbCB2cy4gc3RyaW5nLgorICAgICAg
ICAgICAgLy8gKDIpIExhdGVyLCBudWxsIHZzLiBzdHJpbmcgdnMuIGFycmF5IHdhcyBzdG9yZWQg
aW4gdGhlIGtleVBhdGggaXRzZWxmLgorICAgICAgICAgICAgLy8gU28gdGhpcyBjaGVjayBpcyBv
bmx5IHJlbGV2YW50IGZvciBzdHJpbmctdHlwZSBrZXlQYXRocy4KKyAgICAgICAgICAgIGlmICgh
aGFzS2V5UGF0aCAmJiAoa2V5UGF0aC50eXBlKCkgPT0gSURCS2V5UGF0aDo6U3RyaW5nVHlwZSAm
JiAha2V5UGF0aC5zdHJpbmcoKS5pc0VtcHR5KCkpKSB7CiAgICAgICAgICAgICAgICAgTE9HX0VS
Uk9SKCJJbnRlcm5hbCBJbmRleGVkIERCIGVycm9yLiIpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghaGFzS2V5UGF0aCkKKyAgICAgICAg
ICAgICAgICBrZXlQYXRoID0gSURCS2V5UGF0aCgpOwogICAgICAgICAgICAgaXQtPm5leHQoKTsK
ICAgICAgICAgfQogCiAgICAgICAgIGZvdW5kSWRzLmFwcGVuZChvYmplY3RTdG9yZUlkKTsKICAg
ICAgICAgZm91bmROYW1lcy5hcHBlbmQob2JqZWN0U3RvcmVOYW1lKTsKLSAgICAgICAgZm91bmRL
ZXlQYXRocy5hcHBlbmQoaGFzS2V5UGF0aCA/IGtleVBhdGggOiBTdHJpbmcoKSk7CisgICAgICAg
IGZvdW5kS2V5UGF0aHMuYXBwZW5kKGtleVBhdGgpOwogICAgICAgICBmb3VuZEF1dG9JbmNyZW1l
bnRGbGFncy5hcHBlbmQoYXV0b0luY3JlbWVudCk7CiAgICAgfQogfQpAQCAtNDA2LDcgKzQyMSw3
IEBAIHN0YXRpYyBpbnQ2NF90IGdldE5ld09iamVjdFN0b3JlSWQoTGV2ZWxEQlRyYW5zYWN0aW9u
KiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhCiAgICAgcmV0dXJuIG9iamVjdFN0b3JlSWQ7CiB9
CiAKLWJvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUoaW50NjRf
dCBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwg
Ym9vbCBhdXRvSW5jcmVtZW50LCBpbnQ2NF90JiBhc3NpZ25lZE9iamVjdFN0b3JlSWQpCitib29s
IElEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKGludDY0X3QgZGF0YWJh
c2VJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29s
IGF1dG9JbmNyZW1lbnQsIGludDY0X3QmIGFzc2lnbmVkT2JqZWN0U3RvcmVJZCkKIHsKICAgICBB
U1NFUlQobV9jdXJyZW50VHJhbnNhY3Rpb24pOwogICAgIGludDY0X3Qgb2JqZWN0U3RvcmVJZCA9
IGdldE5ld09iamVjdFN0b3JlSWQobV9jdXJyZW50VHJhbnNhY3Rpb24uZ2V0KCksIGRhdGFiYXNl
SWQpOwpAQCAtNDI4LDcgKzQ0Myw3IEBAIGJvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3Jl
YXRlT2JqZWN0U3RvcmUoaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBvayA9IHB1dFN0cmluZyhtX2N1cnJlbnRUcmFu
c2FjdGlvbi5nZXQoKSwga2V5UGF0aEtleSwga2V5UGF0aCk7CisgICAgb2sgPSBwdXRJREJLZXlQ
YXRoKG1fY3VycmVudFRyYW5zYWN0aW9uLmdldCgpLCBrZXlQYXRoS2V5LCBrZXlQYXRoKTsKICAg
ICBpZiAoIW9rKSB7CiAgICAgICAgIExPR19FUlJPUigiSW50ZXJuYWwgSW5kZXhlZCBEQiBlcnJv
ci4iKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjk4LDcgKzcxMyw3IEBAIHN0YXRpYyBi
b29sIGNoZWNrSW5kZXhBbmRNZXRhRGF0YUtleShjb25zdCBMZXZlbERCSXRlcmF0b3IqIGl0LCBj
b25zdCBWZWN0b3I8Y2hhCiB9CiAKIAotdm9pZCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRJ
bmRleGVzKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBWZWN0b3I8
aW50NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcywgVmVjdG9yPFN0
cmluZz4mIGZvdW5kS2V5UGF0aHMsIFZlY3Rvcjxib29sPiYgZm91bmRVbmlxdWVGbGFncywgVmVj
dG9yPGJvb2w+JiBmb3VuZE11bHRpRW50cnlGbGFncykKK3ZvaWQgSURCTGV2ZWxEQkJhY2tpbmdT
dG9yZTo6Z2V0SW5kZXhlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgVmVjdG9yPGludDY0X3Q+JiBmb3VuZElkcywgVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMs
IFZlY3RvcjxJREJLZXlQYXRoPiYgZm91bmRLZXlQYXRocywgVmVjdG9yPGJvb2w+JiBmb3VuZFVu
aXF1ZUZsYWdzLCBWZWN0b3I8Ym9vbD4mIGZvdW5kTXVsdGlFbnRyeUZsYWdzKQogewogICAgIGNv
bnN0IFZlY3RvcjxjaGFyPiBzdGFydEtleSA9IEluZGV4TWV0YURhdGFLZXk6OmVuY29kZShkYXRh
YmFzZUlkLCBvYmplY3RTdG9yZUlkLCAwLCAwKTsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gc3Rv
cEtleSA9IEluZGV4TWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlk
ICsgMSwgMCwgMCk7CkBAIC03MzcsNyArNzUyLDcgQEAgdm9pZCBJREJMZXZlbERCQmFja2luZ1N0
b3JlOjpnZXRJbmRleGVzKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUkK
ICAgICAgICAgICAgIExPR19FUlJPUigiSW50ZXJuYWwgSW5kZXhlZCBEQiBlcnJvci4iKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBTdHJpbmcga2V5UGF0aCA9IGRl
Y29kZVN0cmluZyhpdC0+dmFsdWUoKS5iZWdpbigpLCBpdC0+dmFsdWUoKS5lbmQoKSk7CisgICAg
ICAgIElEQktleVBhdGgga2V5UGF0aCA9IGRlY29kZUlEQktleVBhdGgoaXQtPnZhbHVlKCkuYmVn
aW4oKSwgaXQtPnZhbHVlKCkuZW5kKCkpOwogCiAgICAgICAgIGl0LT5uZXh0KCk7IC8vIFtvcHRp
b25hbF0gbXVsdGlFbnRyeSBmbGFnCiAgICAgICAgIGJvb2wgaW5kZXhNdWx0aUVudHJ5ID0gZmFs
c2U7CkBAIC03NzEsNyArNzg2LDcgQEAgc3RhdGljIGludDY0X3QgZ2V0TmV3SW5kZXhJZChMZXZl
bERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQKICAgICByZXR1
cm4gaW5kZXhJZDsKIH0KIAotYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRl
eChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgaXNVbmlxdWUsIGJvb2wgaXNNdWx0
aUVudHJ5LCBpbnQ2NF90JiBpbmRleElkKQorYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpj
cmVhdGVJbmRleChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIGlzVW5pcXVl
LCBib29sIGlzTXVsdGlFbnRyeSwgaW50NjRfdCYgaW5kZXhJZCkKIHsKICAgICBBU1NFUlQobV9j
dXJyZW50VHJhbnNhY3Rpb24pOwogICAgIGluZGV4SWQgPSBnZXROZXdJbmRleElkKG1fY3VycmVu
dFRyYW5zYWN0aW9uLmdldCgpLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkKTsKQEAgLTc5NSw3
ICs4MTAsNyBAQCBib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCi0gICAgb2sgPSBwdXRTdHJpbmcobV9jdXJyZW50VHJhbnNhY3Rpb24uZ2V0KCks
IGtleVBhdGhLZXksIGtleVBhdGgpOworICAgIG9rID0gcHV0SURCS2V5UGF0aChtX2N1cnJlbnRU
cmFuc2FjdGlvbi5nZXQoKSwga2V5UGF0aEtleSwga2V5UGF0aCk7CiAgICAgaWYgKCFvaykgewog
ICAgICAgICBMT0dfRVJST1IoIkludGVybmFsIEluZGV4ZWQgREIgZXJyb3IuIik7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaAppbmRleCAyNGQ0MzlkNzY2MTMxMTNlZTE4
NGY0ZTU1MDE2NzE3ZTdkMjk2NjI2Li5iM2JiNjdmNzNkMThjNzdiNzg2MTY5MTM1MzU3NjNkNTNi
YjU3N2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJM
ZXZlbERCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oCkBAIC01MCw4ICs1MCw4IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgdXBkYXRlSURCRGF0YWJhc2VNZXRhRGF0YShpbnQ2NF90IHJvd0lkLCBj
b25zdCBTdHJpbmcmIHZlcnNpb24pOwogICAgIHZpcnR1YWwgYm9vbCBkZWxldGVEYXRhYmFzZShj
b25zdCBTdHJpbmcmIG5hbWUpOwogCi0gICAgdmlydHVhbCB2b2lkIGdldE9iamVjdFN0b3Jlcyhp
bnQ2NF90IGRhdGFiYXNlSWQsIFZlY3RvcjxpbnQ2NF90PiYgZm91bmRJZHMsIFZlY3RvcjxTdHJp
bmc+JiBmb3VuZE5hbWVzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmRLZXlQYXRocywgVmVjdG9yPGJv
b2w+JiBmb3VuZEF1dG9JbmNyZW1lbnRGbGFncyk7Ci0gICAgdmlydHVhbCBib29sIGNyZWF0ZU9i
amVjdFN0b3JlKGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgaW50NjRfdCYgYXNzaWduZWRPYmpl
Y3RTdG9yZUlkKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0T2JqZWN0U3RvcmVzKGludDY0X3QgZGF0
YWJhc2VJZCwgVmVjdG9yPGludDY0X3Q+JiBmb3VuZElkcywgVmVjdG9yPFN0cmluZz4mIGZvdW5k
TmFtZXMsIFZlY3RvcjxJREJLZXlQYXRoPiYgZm91bmRLZXlQYXRocywgVmVjdG9yPGJvb2w+JiBm
b3VuZEF1dG9JbmNyZW1lbnRGbGFncyk7CisgICAgdmlydHVhbCBib29sIGNyZWF0ZU9iamVjdFN0
b3JlKGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQ
YXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50LCBpbnQ2NF90JiBhc3NpZ25lZE9iamVjdFN0b3JlSWQp
OwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShpbnQ2NF90IGRhdGFiYXNlSWQs
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPE9iamVjdFN0
b3JlUmVjb3JkSWRlbnRpZmllcj4gY3JlYXRlSW52YWxpZFJlY29yZElkZW50aWZpZXIoKTsKICAg
ICB2aXJ0dWFsIFN0cmluZyBnZXRPYmplY3RTdG9yZVJlY29yZChpbnQ2NF90IGRhdGFiYXNlSWQs
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5Jik7CkBAIC02Myw4ICs2Myw4IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBmb3JFYWNoT2JqZWN0U3RvcmVSZWNvcmQoaW50
NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIE9iamVjdFN0b3JlUmVjb3Jk
Q2FsbGJhY2smKTsKIAotICAgIHZpcnR1YWwgdm9pZCBnZXRJbmRleGVzKGludDY0X3QgZGF0YWJh
c2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBW
ZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcywgVmVjdG9yPFN0cmluZz4mIGZvdW5kS2V5UGF0aHMs
IFZlY3Rvcjxib29sPiYgZm91bmRVbmlxdWVGbGFncywgVmVjdG9yPGJvb2w+JiBmb3VuZE11bHRp
RW50cnlGbGFncyk7Ci0gICAgdmlydHVhbCBib29sIGNyZWF0ZUluZGV4KGludDY0X3QgZGF0YWJh
c2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYga2V5UGF0aCwgYm9vbCBpc1VuaXF1ZSwgYm9vbCBpc011bHRpRW50cnksIGludDY0X3Qm
IGluZGV4SWQpOworICAgIHZpcnR1YWwgdm9pZCBnZXRJbmRleGVzKGludDY0X3QgZGF0YWJhc2VJ
ZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBWZWN0
b3I8U3RyaW5nPiYgZm91bmROYW1lcywgVmVjdG9yPElEQktleVBhdGg+JiBmb3VuZEtleVBhdGhz
LCBWZWN0b3I8Ym9vbD4mIGZvdW5kVW5pcXVlRmxhZ3MsIFZlY3Rvcjxib29sPiYgZm91bmRNdWx0
aUVudHJ5RmxhZ3MpOworICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJbmRleChpbnQ2NF90IGRhdGFi
YXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJ
REJLZXlQYXRoJiwgYm9vbCBpc1VuaXF1ZSwgYm9vbCBpc011bHRpRW50cnksIGludDY0X3QmIGlu
ZGV4SWQpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVJbmRleChpbnQ2NF90IGRhdGFiYXNlSWQs
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkKTsKICAgICB2aXJ0dWFsIGJv
b2wgcHV0SW5kZXhEYXRhRm9yUmVjb3JkKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYsIGNvbnN0IE9iamVjdFN0
b3JlUmVjb3JkSWRlbnRpZmllciopOwogICAgIHZpcnR1YWwgYm9vbCBkZWxldGVJbmRleERhdGFG
b3JSZWNvcmQoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0
X3QgaW5kZXhJZCwgY29uc3QgT2JqZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyKik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuY3Bw
CmluZGV4IGYwMjYzZjg5ZjNlOGRmNjZiZWMxODNkYTBmYWFlMmNjYjVkNWM3MzguLjdlZTQzNTU0
Y2ZjMTk0ZjBmMTcyYmJlYzRjNTY5ZTIwZmRjOTMyYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuY3BwCkBAIC0zMCw2ICsz
MCw3IEBACiAjaWYgVVNFKExFVkVMREIpCiAKICNpbmNsdWRlICJJREJLZXkuaCIKKyNpbmNsdWRl
ICJJREJLZXlQYXRoLmgiCiAjaW5jbHVkZSAiTGV2ZWxEQlNsaWNlLmgiCiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgogCkBAIC0xMzUsNiArMTM2LDggQEAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIGNoYXIga0lEQktleU51bWJlclR5cGVCeXRlID0gMzsKIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBjaGFyIGtJREJLZXlBcnJheVR5cGVCeXRlID0gNDsKIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBjaGFyIGtJREJLZXlNaW5LZXlUeXBlQnl0ZSA9IDU7CiAKK3N0YXRpYyBjb25zdCB1bnNp
Z25lZCBjaGFyIGtJREJLZXlQYXRoVHlwZUNvZGVkQnl0ZSA9IDA7CisKIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBjaGFyIGtPYmplY3RTdG9yZURhdGFJbmRleElkID0gMTsKIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBjaGFyIGtFeGlzdHNFbnRyeUluZGV4SWQgPSAyOwogCkBAIC02MjAsNiArNjIzLDY5
IEBAIGludCBjb21wYXJlRW5jb2RlZElEQktleXMoY29uc3QgVmVjdG9yPGNoYXI+JiBrZXlBLCBj
b25zdCBWZWN0b3I8Y2hhcj4mIGtleUIpCiAgICAgcmV0dXJuIGNvbXBhcmVFbmNvZGVkSURCS2V5
cyhwLCBsaW1pdEEsIHEsIGxpbWl0Qik7CiB9CiAKK1ZlY3RvcjxjaGFyPiBlbmNvZGVJREJLZXlQ
YXRoKGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgpCit7CisgICAgLy8gTWF5IGJlIHR5cGVkLCBv
ciBtYXkgYmUgYSByYXcgc3RyaW5nLiBBbiBpbnZhbGlkIGxlYWRpbmcKKyAgICAvLyBieXRlIGlz
IHVzZWQgdG8gaWRlbnRpZnkgdHlwZWQgY29kaW5nLiBOZXcgcmVjb3JkcyBhcmUKKyAgICAvLyBh
bHdheXMgd3JpdHRlbiBhcyB0eXBlZC4KKyAgICBWZWN0b3I8Y2hhcj4gcmV0OworICAgIHJldC5h
cHBlbmQoa0lEQktleVBhdGhUeXBlQ29kZWRCeXRlKTsKKyAgICByZXQuYXBwZW5kKHN0YXRpY19j
YXN0PGNoYXI+KGtleVBhdGgudHlwZSgpKSk7CisgICAgc3dpdGNoIChrZXlQYXRoLnR5cGUoKSkg
eworICAgIGNhc2UgSURCS2V5UGF0aDo6TnVsbFR5cGU6CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgSURCS2V5UGF0aDo6U3RyaW5nVHlwZToKKyAgICAgICAgcmV0LmFwcGVuZChlbmNvZGVTdHJp
bmcoa2V5UGF0aC5zdHJpbmcoKSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIElEQktleVBh
dGg6OkFycmF5VHlwZTogeworICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYXJyYXkgPSBr
ZXlQYXRoLmFycmF5KCk7CisgICAgICAgIHNpemVfdCBjb3VudCA9IGFycmF5LnNpemUoKTsKKyAg
ICAgICAgcmV0LmFwcGVuZChlbmNvZGVWYXJJbnQoY291bnQpKTsKKyAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKQorICAgICAgICAgICAgcmV0LmFwcGVuZChlbmNvZGVT
dHJpbmdXaXRoTGVuZ3RoKGFycmF5W2ldKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICB9
CisgICAgcmV0dXJuIHJldDsKK30KKworSURCS2V5UGF0aCBkZWNvZGVJREJLZXlQYXRoKGNvbnN0
IGNoYXIqIHAsIGNvbnN0IGNoYXIqIGxpbWl0KQoreworICAgIC8vIE1heSBiZSB0eXBlZCwgb3Ig
bWF5IGJlIGEgcmF3IHN0cmluZy4gQW4gaW52YWxpZCBsZWFkaW5nCisgICAgLy8gYnl0ZSBpcyB1
c2VkIHRvIGlkZW50aWZ5IHR5cGVkIGNvZGluZy4gTmV3IHJlY29yZHMgYXJlCisgICAgLy8gYWx3
YXlzIHdyaXR0ZW4gYXMgdHlwZWQuCisgICAgaWYgKHAgPT0gbGltaXQgfHwgKnAgIT0ga0lEQktl
eVBhdGhUeXBlQ29kZWRCeXRlKQorICAgICAgICByZXR1cm4gSURCS2V5UGF0aChkZWNvZGVTdHJp
bmcocCwgbGltaXQpKTsKKworICAgICsrcDsKKyAgICBBU1NFUlQocCAhPSBsaW1pdCk7CisgICAg
SURCS2V5UGF0aDo6VHlwZSB0eXBlID0gc3RhdGljX2Nhc3Q8SURCS2V5UGF0aDo6VHlwZT4oKnAr
Kyk7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBJREJLZXlQYXRoOjpOdWxsVHlwZToK
KyAgICAgICAgQVNTRVJUKHAgPT0gbGltaXQpOworICAgICAgICByZXR1cm4gSURCS2V5UGF0aCgp
OworICAgIGNhc2UgSURCS2V5UGF0aDo6U3RyaW5nVHlwZToKKyAgICAgICAgcmV0dXJuIElEQktl
eVBhdGgoZGVjb2RlU3RyaW5nKHAsIGxpbWl0KSk7CisgICAgY2FzZSBJREJLZXlQYXRoOjpBcnJh
eVR5cGU6IHsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gYXJyYXk7CisgICAgICAgIGludDY0X3Qg
Y291bnQ7CisgICAgICAgIHAgPSBkZWNvZGVWYXJJbnQocCwgbGltaXQsIGNvdW50KTsKKyAgICAg
ICAgQVNTRVJUKHApOworICAgICAgICBBU1NFUlQoY291bnQgPj0gMCk7CisgICAgICAgIHdoaWxl
IChjb3VudC0tKSB7CisgICAgICAgICAgICBTdHJpbmcgc3RyaW5nOworICAgICAgICAgICAgcCA9
IGRlY29kZVN0cmluZ1dpdGhMZW5ndGgocCwgbGltaXQsIHN0cmluZyk7CisgICAgICAgICAgICBB
U1NFUlQocCk7CisgICAgICAgICAgICBhcnJheS5hcHBlbmQoc3RyaW5nKTsKKyAgICAgICAgfQor
ICAgICAgICBBU1NFUlQocCA9PSBsaW1pdCk7CisgICAgICAgIHJldHVybiBJREJLZXlQYXRoKGFy
cmF5KTsKKyAgICB9CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biBJREJLZXlQYXRoKCk7Cit9CisKIG5hbWVzcGFjZSB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlU
eXBlPgogaW50IGRlY29kZUFuZENvbXBhcmUoY29uc3QgTGV2ZWxEQlNsaWNlJiBhLCBjb25zdCBM
ZXZlbERCU2xpY2UmIGIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJMZXZlbERCQ29kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJMZXZlbERCQ29kaW5nLmgKaW5kZXggMTRjNDJlYTczMzYxYjQwMjA2ZGFjNGQwZGZkMTc2
NDA3OTBlY2NmYS4uYmRmZjZiNWVmY2RmODNkYjU5ZDhhMmU1ZTM3ZTk0NjRmYTk1ZTcxZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGlu
Zy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2Rp
bmcuaApAQCAtMzYsNiArMzYsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJREJL
ZXk7CitjbGFzcyBJREJLZXlQYXRoOwogY2xhc3MgTGV2ZWxEQlNsaWNlOwogCiBuYW1lc3BhY2Ug
SURCTGV2ZWxEQkNvZGluZyB7CkBAIC02MSw2ICs2Miw4IEBAIFZlY3RvcjxjaGFyPiBlbmNvZGVJ
REJLZXkoY29uc3QgSURCS2V5Jik7CiBjb25zdCBjaGFyKiBkZWNvZGVJREJLZXkoY29uc3QgY2hh
ciogcCwgY29uc3QgY2hhciogbGltaXQsIFJlZlB0cjxJREJLZXk+JiBmb3VuZEtleSk7CiBjb25z
dCBjaGFyKiBleHRyYWN0RW5jb2RlZElEQktleShjb25zdCBjaGFyKiBzdGFydCwgY29uc3QgY2hh
ciogbGltaXQsIFZlY3RvcjxjaGFyPiogcmVzdWx0KTsKIGludCBjb21wYXJlRW5jb2RlZElEQktl
eXMoY29uc3QgVmVjdG9yPGNoYXI+JiwgY29uc3QgVmVjdG9yPGNoYXI+Jik7CitWZWN0b3I8Y2hh
cj4gZW5jb2RlSURCS2V5UGF0aChjb25zdCBJREJLZXlQYXRoJik7CitJREJLZXlQYXRoIGRlY29k
ZUlEQktleVBhdGgoY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKTsKIAogaW50IGNvbXBhcmUoY29u
c3QgTGV2ZWxEQlNsaWNlJiwgY29uc3QgTGV2ZWxEQlNsaWNlJiwgYm9vbCBpbmRleEtleXMgPSBm
YWxzZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
Qk9iamVjdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9i
amVjdFN0b3JlLmNwcAppbmRleCA0MzE5ZDdmMGE5MzhkYTVmN2Q3NzA2ZjBjYmJkODZiNTYyOTA3
ZmI5Li45OGZmODJiYTgzYjE1YTVjOTk2ZjM1NWI0YmEwNzk1YTQzMzZkNmI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCkBA
IC02MCw3ICs2MCw3IEBAIFN0cmluZyBJREJPYmplY3RTdG9yZTo6bmFtZSgpIGNvbnN0CiAgICAg
cmV0dXJuIG1fYmFja2VuZC0+bmFtZSgpOwogfQogCi1TdHJpbmcgSURCT2JqZWN0U3RvcmU6Omtl
eVBhdGgoKSBjb25zdAorUGFzc1JlZlB0cjxJREJBbnk+IElEQk9iamVjdFN0b3JlOjprZXlQYXRo
KCkgY29uc3QKIHsKICAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjprZXlQYXRoIik7CiAg
ICAgcmV0dXJuIG1fYmFja2VuZC0+a2V5UGF0aCgpOwpAQCAtMjA1LDggKzIwNSwxMyBAQCBQYXNz
UmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpjbGVhcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBFeAogCiBQYXNzUmVmUHRyPElEQkluZGV4PiBJREJPYmplY3RTdG9y
ZTo6Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgs
IGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIHJl
dHVybiBjcmVhdGVJbmRleChuYW1lLCBJREJLZXlQYXRoKGtleVBhdGgpLCBvcHRpb25zLCBlYyk7
Cit9CisKK1Bhc3NSZWZQdHI8SURCSW5kZXg+IElEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleChj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGNvbnN0IERpY3Rp
b25hcnkmIG9wdGlvbnMsIEV4Y2VwdGlvbkNvZGUmIGVjKQorewogICAgIElEQl9UUkFDRSgiSURC
T2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4Iik7Ci0gICAgaWYgKCFJREJJc1ZhbGlkS2V5UGF0aChr
ZXlQYXRoKSkgeworICAgIGlmICgha2V5UGF0aC5pc1ZhbGlkKCkpIHsKICAgICAgICAgZWMgPSBJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6Tk9OX1RSQU5TSUVOVF9FUlI7CiAgICAgICAgIHJldHVybiAw
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
Qk9iamVjdFN0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmpl
Y3RTdG9yZS5oCmluZGV4IDVkNGQxOGRjMDY1OWM0YjM5MjA4ZGQ2ODI5MWI1MTEyOTQzY2NmOTAu
LmIwYzJlOGU4MjRkZDFkY2IxMDRiNTE2YmZhNDUxZWJiZDZjZWJmNmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaApAQCAtNTYsNyAr
NTYsNyBAQCBwdWJsaWM6CiAgICAgfklEQk9iamVjdFN0b3JlKCkgeyB9CiAKICAgICBTdHJpbmcg
bmFtZSgpIGNvbnN0OwotICAgIFN0cmluZyBrZXlQYXRoKCkgY29uc3Q7CisgICAgUGFzc1JlZlB0
cjxJREJBbnk+IGtleVBhdGgoKSBjb25zdDsKICAgICBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+
IGluZGV4TmFtZXMoKSBjb25zdDsKICAgICBJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24oKSBj
b25zdDsKIApAQCAtNzcsNiArNzcsOCBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1
ZXN0PiBjbGVhcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYpOwogCiAg
ICAgUGFzc1JlZlB0cjxJREJJbmRleD4gY3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBTdHJpbmcmIGtleVBhdGgsIGNvbnN0IERpY3Rpb25hcnkmLCBFeGNlcHRpb25Db2RlJik7
CisgICAgUGFzc1JlZlB0cjxJREJJbmRleD4gY3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiwgY29u
c3QgSURCS2V5UGF0aCYsIGNvbnN0IERpY3Rpb25hcnkmLCBFeGNlcHRpb25Db2RlJik7CisKICAg
ICBQYXNzUmVmUHRyPElEQkluZGV4PiBpbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlv
bkNvZGUmKTsKICAgICB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0
aW9uQ29kZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJPYmplY3RTdG9yZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJPYmplY3RTdG9yZS5pZGwKaW5kZXggOGNlZDM4Y2QxZWZhMzJjY2IzNGYwNjI4ZDNjNmE5Mjhl
Yjg4N2ZkMi4uMDM3ZWJkM2IzMmExNDMzZmI2OTA5ZWEzNTMzMjE2NDJhZGY5N2ZhMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmlk
bApAQCAtMjksNyArMjksNyBAQCBtb2R1bGUgc3RvcmFnZSB7CiAgICAgICAgIENvbmRpdGlvbmFs
PUlOREVYRURfREFUQUJBU0UKICAgICBdIElEQk9iamVjdFN0b3JlIHsKICAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIFtUcmVhdFJldHVybmVkTnVsbFN0cmluZ0FzPU51bGxdIERPTVN0cmluZyBu
YW1lOwotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW1RyZWF0UmV0dXJuZWROdWxsU3RyaW5n
QXM9TnVsbF0gRE9NU3RyaW5nIGtleVBhdGg7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBJ
REJBbnkga2V5UGF0aDsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZ0xpc3Qg
aW5kZXhOYW1lczsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIElEQlRyYW5zYWN0aW9uIHRy
YW5zYWN0aW9uOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCmluZGV4IDVkMmQ1MGMyYWVi
ZTdmNDAwZDYwZDhlMTA4NmIwMDVmZjliM2Q1NTMuLmY2MzhhM2NlZmM1NmY1MzU3ZmZhMmMxMWVk
NzZlMjMwYWEwNjM1NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCkBAIC01MSw3ICs1
MSw3IEBAIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6On5JREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsKCkKIHsKIH0KIAotSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6SURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbChJREJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFz
ZUlkLCBpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0
aCwgYm9vbCBhdXRvSW5jcmVtZW50KQorSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6SURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbChJREJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSwgaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktl
eVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkKICAgICA6IG1fYmFja2luZ1N0b3Jl
KGJhY2tpbmdTdG9yZSkKICAgICAsIG1fZGF0YWJhc2VJZChkYXRhYmFzZUlkKQogICAgICwgbV9p
ZChpZCkKQEAgLTYzLDcgKzYzLDcgQEAgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6SURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbChJREJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG8KICAgICBsb2Fk
SW5kZXhlcygpOwogfQogCi1JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsKElEQkJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFi
YXNlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1
dG9JbmNyZW1lbnQpCitJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsKElEQkJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNl
SWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCBh
dXRvSW5jcmVtZW50KQogICAgIDogbV9iYWNraW5nU3RvcmUoYmFja2luZ1N0b3JlKQogICAgICwg
bV9kYXRhYmFzZUlkKGRhdGFiYXNlSWQpCiAgICAgLCBtX2lkKEludmFsaWRJZCkKQEAgLTEzNyw5
ICsxMzcsMTEgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpnZXRJbnRlcm5hbChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjwKICAgICBjYWxsYmFja3MtPm9uU3Vj
Y2VzcyhTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlKHdpcmVEYXRhKSk7CiB9
CiAKLXN0YXRpYyBQYXNzUmVmUHRyPElEQktleT4gZmV0Y2hLZXlGcm9tS2V5UGF0aChTZXJpYWxp
emVkU2NyaXB0VmFsdWUqIHZhbHVlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpCitzdGF0aWMgUGFz
c1JlZlB0cjxJREJLZXk+IGZldGNoS2V5RnJvbUtleVBhdGgoU2VyaWFsaXplZFNjcmlwdFZhbHVl
KiB2YWx1ZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCkKIHsKICAgICBJREJfVFJBQ0UoIklE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmZldGNoS2V5RnJvbUtleVBhdGgiKTsKKyAgICBBU1NF
UlQoIWtleVBhdGguaXNOdWxsKCkpOworCiAgICAgVmVjdG9yPFJlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+ID4gdmFsdWVzOwogICAgIHZhbHVlcy5hcHBlbmQodmFsdWUpOwogICAgIFZlY3Rv
cjxSZWZQdHI8SURCS2V5PiA+IGtleXM7CkBAIC0xNTAsNyArMTUyLDcgQEAgc3RhdGljIFBhc3NS
ZWZQdHI8SURCS2V5PiBmZXRjaEtleUZyb21LZXlQYXRoKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSog
dmFsdWUsIGNvbnMKICAgICByZXR1cm4ga2V5c1swXS5yZWxlYXNlKCk7CiB9CiAKLXN0YXRpYyBQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gaW5qZWN0S2V5SW50b0tleVBhdGgoUGFz
c1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZh
bHVlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpCitzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IGluamVjdEtleUludG9LZXlQYXRoKFBhc3NSZWZQdHI8SURCS2V5PiBrZXks
IFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgY29uc3QgSURCS2V5UGF0
aCYga2V5UGF0aCkKIHsKICAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6
OmluamVjdEtleUludG9LZXlQYXRoIik7CiAgICAgcmV0dXJuIElEQktleVBhdGhCYWNrZW5kSW1w
bDo6aW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShrZXksIHZhbHVlLCBrZXlQYXRoKTsK
QEAgLTQ5OSw3ICs1MDEsNyBAQCBib29sIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnBvcHVs
YXRlSW5kZXgoSURCQmFja2luZ1N0b3JlJiBiYWNraW5nU3RvcmUsIGludAogICAgIHJldHVybiB0
cnVlOwogfQogCi1QYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbDo6Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnksIElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFz
c1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IElEQk9iamVjdFN0b3JlQmFja2VuZElt
cGw6OmNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5
UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSwgSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKG5h
bWUuaXNOdWxsKCkpIHsKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Tk9OX1RS
QU5TSUVOVF9FUlI7CkBAIC02NTAsNyArNjUyLDcgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsOjpsb2FkSW5kZXhlcygpCiB7CiAgICAgVmVjdG9yPGludDY0X3Q+IGlkczsKICAgICBW
ZWN0b3I8U3RyaW5nPiBuYW1lczsKLSAgICBWZWN0b3I8U3RyaW5nPiBrZXlQYXRoczsKKyAgICBW
ZWN0b3I8SURCS2V5UGF0aD4ga2V5UGF0aHM7CiAgICAgVmVjdG9yPGJvb2w+IHVuaXF1ZUZsYWdz
OwogICAgIFZlY3Rvcjxib29sPiBtdWx0aUVudHJ5RmxhZ3M7CiAgICAgbV9iYWNraW5nU3RvcmUt
PmdldEluZGV4ZXMobV9kYXRhYmFzZUlkLCBtX2lkLCBpZHMsIG5hbWVzLCBrZXlQYXRocywgdW5p
cXVlRmxhZ3MsIG11bHRpRW50cnlGbGFncyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmgKaW5kZXgg
OGQyZTFkYTk5ZTg0YWM4OWRiNDdhZjYxZTVmMWVhYzMzN2RlYzJkZC4uMWQxNTU1MDQ3NzEwMzlk
NTNmNDM1MTg1YzA4Mzg5NTJiNjdkMDQ4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuaApAQCAt
MjYsNiArMjYsNyBAQAogI2lmbmRlZiBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsX2gKICNkZWZp
bmUgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbF9oCiAKKyNpbmNsdWRlICJJREJLZXlQYXRoLmgi
CiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CkBAIC00Miwx
MSArNDMsMTEgQEAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAogY2xhc3MgSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbCA6IHB1YmxpYyBJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZh
Y2UgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGw+IGNyZWF0ZShJREJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRh
YmFzZUlkLCBpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5
UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50KQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9iamVj
dFN0b3JlQmFja2VuZEltcGw+IGNyZWF0ZShJREJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSwg
aW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkKICAgICB7CiAgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbChiYWNraW5nU3Rv
cmUsIGRhdGFiYXNlSWQsIGlkLCBuYW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50KSk7CiAgICAg
fQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IGNyZWF0
ZShJREJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50
KQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IGNyZWF0
ZShJREJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0b0luY3Jl
bWVudCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbChiYWNraW5nU3RvcmUsIGRhdGFiYXNlSWQsIG5hbWUsIGtleVBhdGgsIGF1dG9J
bmNyZW1lbnQpKTsKICAgICB9CkBAIC02Miw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICBpbnQ2NF90
IGRhdGFiYXNlSWQoKSBjb25zdCB7IHJldHVybiBtX2RhdGFiYXNlSWQ7IH0KIAogICAgIHZpcnR1
YWwgU3RyaW5nIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KLSAgICB2aXJ0dWFsIFN0
cmluZyBrZXlQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9rZXlQYXRoOyB9CisgICAgdmlydHVhbCBJ
REJLZXlQYXRoIGtleVBhdGgoKSBjb25zdCB7IHJldHVybiBtX2tleVBhdGg7IH0KICAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gaW5kZXhOYW1lcygpIGNvbnN0OwogICAgIHZp
cnR1YWwgYm9vbCBhdXRvSW5jcmVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9hdXRvSW5jcmVtZW50
OyB9CiAKQEAgLTczLDcgKzc0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVG
dW5jdGlvbihQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7CiAgICAg
dmlydHVhbCB2b2lkIGNsZWFyKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgdmlydHVhbCBQYXNz
UmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gY3JlYXRlSW5kZXgoY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50
cnksIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKKyAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVJbmRl
eChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIHVuaXF1ZSwgYm9v
bCBtdWx0aUVudHJ5LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25D
b2RlJik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4g
aW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2
b2lkIGRlbGV0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwogCkBAIC04Myw4ICs4NCw4IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgYm9vbCBwb3B1bGF0ZUluZGV4KElEQkJhY2tpbmdTdG9yZSYsIGludDY0X3Qg
ZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElEQkluZGV4QmFj
a2VuZEltcGw+KTsKIAogcHJpdmF0ZToKLSAgICBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKElE
QkJhY2tpbmdTdG9yZSosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBpZCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCk7Ci0g
ICAgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbChJREJCYWNraW5nU3RvcmUqLCBpbnQ2NF90IGRh
dGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29s
IGF1dG9JbmNyZW1lbnQpOworICAgIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwoSURCQmFja2lu
Z1N0b3JlKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQpOworICAgIElEQk9iamVj
dFN0b3JlQmFja2VuZEltcGwoSURCQmFja2luZ1N0b3JlKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQp
OwogCiAgICAgdm9pZCBsb2FkSW5kZXhlcygpOwogICAgIFBhc3NSZWZQdHI8SURCS2V5PiBnZW5B
dXRvSW5jcmVtZW50S2V5KCk7CkBAIC0xMTAsNyArMTExLDcgQEAgcHJpdmF0ZToKICAgICBpbnQ2
NF90IG1fZGF0YWJhc2VJZDsKICAgICBpbnQ2NF90IG1faWQ7CiAgICAgU3RyaW5nIG1fbmFtZTsK
LSAgICBTdHJpbmcgbV9rZXlQYXRoOworICAgIElEQktleVBhdGggbV9rZXlQYXRoOwogICAgIGJv
b2wgbV9hdXRvSW5jcmVtZW50OwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVmUHRy
PElEQkluZGV4QmFja2VuZEltcGw+ID4gSW5kZXhNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZElu
dGVyZmFjZS5oCmluZGV4IGFlNjRhNWVmNmVlMGE1MTQ2YTRlMTRiZWVmNjMyMmQ1NTg1NjAwZTAu
LjMyYWUzOTI4ZmQ4ZThmNDA1MzZiOGJmYjlhMzg5ZDc3OWE0MDYyNTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEludGVy
ZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlQmFja2VuZEludGVyZmFjZS5oCkBAIC0zNyw2ICszNyw3IEBAIGNsYXNzIERPTVN0cmluZ0xp
c3Q7CiBjbGFzcyBJREJDYWxsYmFja3M7CiBjbGFzcyBJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U7
CiBjbGFzcyBJREJLZXk7CitjbGFzcyBJREJLZXlQYXRoOwogY2xhc3MgSURCS2V5UmFuZ2U7CiBj
bGFzcyBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U7CiBjbGFzcyBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU7CkBAIC00OCw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UoKSB7IH0KIAogICAgIHZpcnR1YWwgU3RyaW5nIG5hbWUo
KSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBTdHJpbmcga2V5UGF0aCgpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIElEQktleVBhdGgga2V5UGF0aCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gaW5kZXhOYW1lcygpIGNvbnN0ID0gMDsKIAogICAgIHZp
cnR1YWwgdm9pZCBnZXQoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYp
ID0gMDsKQEAgLTY0LDcgKzY1LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGNsZWFy
KFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
KiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJJbmRl
eEJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5LCBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikgPSAwOworICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZUluZGV4KGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50
cnksIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7
CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gaW5kZXgo
Y29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkZWxldGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvRGljdGlvbmFyeS5jcHAKaW5kZXggMTBhYWZlOGRjNmMyODFlZmU3MWQ0OWZiOTJmNGJiOTU2
NzU4NzUxNC4uZGM3MjRmYTk1YmIzMWUwYzQ0YmI4Y2Y2MzNiNjcwYWZhNDk1OTBkOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFyeS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFyeS5jcHAKQEAgLTQyNCw2ICs0MjQsMjMg
QEAgYm9vbCBEaWN0aW9uYXJ5OjpnZXQoY29uc3QgU3RyaW5nJiBrZXksIERpY3Rpb25hcnkmIHZh
bHVlKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIERpY3Rpb25hcnk6OmdldChj
b25zdCBTdHJpbmcmIGtleSwgVmVjdG9yPFN0cmluZz4mIHZhbHVlKSBjb25zdAoreworICAgIHY4
OjpMb2NhbDx2ODo6VmFsdWU+IHY4VmFsdWU7CisgICAgaWYgKCFnZXRLZXkoa2V5LCB2OFZhbHVl
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCF2OFZhbHVlLT5Jc0FycmF5KCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHY4OjpMb2NhbDx2ODo6QXJyYXk+IHY4QXJy
YXkgPSB2ODo6TG9jYWw8djg6OkFycmF5Pjo6Q2FzdCh2OFZhbHVlKTsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHY4QXJyYXktPkxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgdjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gaW5kZXhlZFZhbHVlID0gdjhBcnJheS0+R2V0KHY4OjpVaW50MzI6Ok5ldyhp
KSk7CisgICAgICAgIHZhbHVlLmFwcGVuZCh2OFZhbHVlVG9XZWJDb3JlU3RyaW5nKGluZGV4ZWRW
YWx1ZSkpOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQogCiBib29sIERpY3Rpb25hcnk6
OmdldE93blByb3BlcnRpZXNBc1N0cmluZ0hhc2hNYXAoV1RGOjpIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPiYgaGFzaE1hcCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L0RpY3Rpb25hcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25h
cnkuaAppbmRleCBjNGMzM2IxYmIyMDhlOTY0MGRmZmI4NDA2ZDg5M2I0MTI4MzI3OWVlLi5mMTUz
ZWE5YzgyOTg0ODA4MGYyZjVlNjg1YmNjNmE3NzM0M2Y1NGFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9EaWN0aW9uYXJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvRGljdGlvbmFyeS5oCkBAIC0zMywxMSArMzMsMTEgQEAKICNpbmNsdWRlIDx2OC5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRE9NU3RyaW5nTGlzdDsKIGNsYXNzIERP
TVdpbmRvdzsKIGNsYXNzIElEQktleVJhbmdlOwogY2xhc3MgTWVkaWFLZXlFcnJvcjsKQEAgLTg1
LDYgKzg1LDcgQEAgcHVibGljOgogI2VuZGlmCiAgICAgYm9vbCBnZXQoY29uc3QgU3RyaW5nJiwg
SGFzaFNldDxBdG9taWNTdHJpbmc+JikgY29uc3Q7CiAgICAgYm9vbCBnZXQoY29uc3QgU3RyaW5n
JiwgRGljdGlvbmFyeSYpIGNvbnN0OworICAgIGJvb2wgZ2V0KGNvbnN0IFN0cmluZyYsIFZlY3Rv
cjxTdHJpbmc+JikgY29uc3Q7CiAgICAgYm9vbCBnZXRPd25Qcm9wZXJ0aWVzQXNTdHJpbmdIYXNo
TWFwKFdURjo6SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mKSBjb25zdDsKIAogICAgIGJvb2wgZ2V0
V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKGNvbnN0IFN0cmluZyYsIFN0cmluZyYpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGll
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNw
cAppbmRleCBkZjY3NzgwMzA1N2UzODBmM2U4OWRkNDUxNzExZTQ3OTFlNDFlZTk0Li4xNWI0M2U5
MzYwZWRmOTViMzVkZDZlYmNiZGQxNmI0OWY4YjBkN2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcApAQCAtMTUzLDMwICsxNTMs
NDMgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGVuc3VyZU50aFZhbHVlT25LZXlQYXRoKHY4OjpI
YW5kbGU8djg6OlZhbHVlPiYgcm9vdFZhbHVlLAogCiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UK
IAotUGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktleUZyb21TZXJpYWxpemVkVmFsdWVBbmRL
ZXlQYXRoKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIGtleVBhdGgpCitQYXNzUmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJv
bVNlcmlhbGl6ZWRWYWx1ZUFuZEtleVBhdGgoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IHZhbHVlLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKQogewogICAgIElEQl9UUkFDRSgi
Y3JlYXRlSURCS2V5RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtleVBhdGgiKTsKKyAgICBBU1NFUlQo
a2V5UGF0aC50eXBlKCkgPT0gSURCS2V5UGF0aDo6U3RyaW5nVHlwZSk7CisgICAgVmVjdG9yPFN0
cmluZz4ga2V5UGF0aEVsZW1lbnRzOworICAgIElEQktleVBhdGhQYXJzZUVycm9yIGVycm9yOwor
ICAgIElEQlBhcnNlS2V5UGF0aChrZXlQYXRoLnN0cmluZygpLCBrZXlQYXRoRWxlbWVudHMsIGVy
cm9yKTsKKyAgICBBU1NFUlQoZXJyb3IgPT0gSURCS2V5UGF0aFBhcnNlRXJyb3JOb25lKTsKKwog
ICAgIFY4QXV4aWxpYXJ5Q29udGV4dCBjb250ZXh0OwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB2OFZhbHVlKHZhbHVlLT5kZXNlcmlhbGl6ZSgpKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdjhLZXkoZ2V0TnRoVmFsdWVPbktleVBhdGgodjhWYWx1ZSwga2V5UGF0aCwga2V5UGF0aC5z
aXplKCkpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdjhLZXkoZ2V0TnRoVmFsdWVPbktl
eVBhdGgodjhWYWx1ZSwga2V5UGF0aEVsZW1lbnRzLCBrZXlQYXRoRWxlbWVudHMuc2l6ZSgpKSk7
CiAgICAgaWYgKHY4S2V5LklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJu
IGNyZWF0ZUlEQktleUZyb21WYWx1ZSh2OEtleSk7CiB9CiAKLVBhc3NSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBpbmplY3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKFBhc3NSZWZQdHI8
SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIGtleVBhdGgpCitQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gaW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShQYXNzUmVmUHRyPElEQktleT4g
a2V5LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIGNvbnN0IElEQktl
eVBhdGgmIGtleVBhdGgpCiB7CiAgICAgSURCX1RSQUNFKCJpbmplY3RJREJLZXlJbnRvU2VyaWFs
aXplZFZhbHVlIik7Ci0gICAgVjhBdXhpbGlhcnlDb250ZXh0IGNvbnRleHQ7Ci0gICAgaWYgKCFr
ZXlQYXRoLnNpemUoKSkKKworICAgIEFTU0VSVChrZXlQYXRoLnR5cGUoKSA9PSBJREJLZXlQYXRo
OjpTdHJpbmdUeXBlKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBrZXlQYXRoRWxlbWVudHM7CisgICAg
SURCS2V5UGF0aFBhcnNlRXJyb3IgZXJyb3I7CisgICAgSURCUGFyc2VLZXlQYXRoKGtleVBhdGgu
c3RyaW5nKCksIGtleVBhdGhFbGVtZW50cywgZXJyb3IpOworICAgIEFTU0VSVChlcnJvciA9PSBJ
REJLZXlQYXRoUGFyc2VFcnJvck5vbmUpOworCisgICAgaWYgKCFrZXlQYXRoRWxlbWVudHMuc2l6
ZSgpKQogICAgICAgICByZXR1cm4gMDsKIAorICAgIFY4QXV4aWxpYXJ5Q29udGV4dCBjb250ZXh0
OwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2OFZhbHVlKHZhbHVlLT5kZXNlcmlhbGl6ZSgp
KTsKLSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcGFyZW50KGVuc3VyZU50aFZhbHVlT25LZXlQ
YXRoKHY4VmFsdWUsIGtleVBhdGgsIGtleVBhdGguc2l6ZSgpIC0gMSkpOworICAgIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBwYXJlbnQoZW5zdXJlTnRoVmFsdWVPbktleVBhdGgodjhWYWx1ZSwga2V5
UGF0aEVsZW1lbnRzLCBrZXlQYXRoRWxlbWVudHMuc2l6ZSgpIC0gMSkpOwogICAgIGlmIChwYXJl
bnQuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmICghc2V0KHBhcmVudCwg
a2V5UGF0aC5sYXN0KCksIHRvVjgoa2V5LmdldCgpKSkpCisgICAgaWYgKCFzZXQocGFyZW50LCBr
ZXlQYXRoRWxlbWVudHMubGFzdCgpLCB0b1Y4KGtleS5nZXQoKSkpKQogICAgICAgICByZXR1cm4g
MDsKIAogICAgIHJldHVybiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSh2OFZhbHVlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRp
ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMuaApp
bmRleCA0NzI4NmE1ODIzOGYwYTAyNGUyMTM4MDUwNWZiYjk2ZWE3NjdmNWFiLi4zMGVlZDQyMWI0
NWIwOTAzMDExYmQyNDliYmEwZDc0YzIzYmEyNzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5oCkBAIC0zNCwxMSArMzQsMTIgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURCS2V5OworY2xhc3MgSURCS2V5UGF0aDsKIGNs
YXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIAogUGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlE
QktleUZyb21WYWx1ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4pOwotUGFzc1JlZlB0cjxJREJLZXk+
IGNyZWF0ZUlEQktleUZyb21TZXJpYWxpemVkVmFsdWVBbmRLZXlQYXRoKFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiwgIGNvbnN0IFZlY3RvcjxTdHJpbmcsIDA+Jik7Ci1QYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gaW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1
ZShQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwg
Y29uc3QgVmVjdG9yPFN0cmluZywgMD4mKTsKK1Bhc3NSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJL
ZXlGcm9tU2VyaWFsaXplZFZhbHVlQW5kS2V5UGF0aChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4sIGNvbnN0IElEQktleVBhdGgmKTsKK1Bhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBpbmplY3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKFBhc3NSZWZQdHI8SURCS2V5
PiwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBjb25zdCBJREJLZXlQYXRoJik7
CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SURCQW55Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOElE
QkFueUN1c3RvbS5jcHAKaW5kZXggMTczM2VjOGJjZGEzYTQ3ZTNmYjBmYTRmYWNmNTkwYzY2Y2Fi
Y2FkYi4uMGI3NTAyZWI5ZjdjNzMwOGE0Zjg5ZmNkMDAzYzcxMmM2NzYxZGIwNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SURCQW55Q3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJREJBbnlDdXN0b20uY3Bw
CkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiVjhJREJBbnkuaCIKIAogI2luY2x1ZGUgIlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUg
IlY4RE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIlY4SURCQ3Vyc29yLmgiCiAjaW5jbHVkZSAi
VjhJREJDdXJzb3JXaXRoVmFsdWUuaCIKQEAgLTc0LDYgKzc1LDggQEAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHRvVjgoSURCQW55KiBpbXBsLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKICAgICAgICAg
cmV0dXJuIHRvVjgoaW1wbC0+aWRiVHJhbnNhY3Rpb24oKSk7CiAgICAgY2FzZSBJREJBbnk6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZVR5cGU6CiAgICAgICAgIHJldHVybiBpbXBsLT5zZXJpYWxpemVk
U2NyaXB0VmFsdWUoKS0+ZGVzZXJpYWxpemUoMCwgaXNvbGF0ZSk7CisgICAgY2FzZSBJREJBbnk6
OlN0cmluZ1R5cGU6CisgICAgICAgIHJldHVybiB2OFN0cmluZyhpbXBsLT5zdHJpbmcoKSk7CiAg
ICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRE9NU3RyaW5nTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTVN0cmluZ0xp
c3QuaAppbmRleCAwNTdkYWM0OWVjZmYyZTU2NDRkMWY1OGFkNGY0YWRiNTlmMGRiYzNiLi40NjRm
YTIyZGIyNTY2MTZhMDUzNzE4Yjc5YjJkOTMzZjRmMjEwNTFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRE9NU3RyaW5nTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01T
dHJpbmdMaXN0LmgKQEAgLTUyLDYgKzUyLDggQEAgcHVibGljOgogICAgIFN0cmluZyBpdGVtKHVu
c2lnbmVkIGluZGV4KSBjb25zdDsKICAgICBib29sIGNvbnRhaW5zKGNvbnN0IFN0cmluZyYgc3Ry
KSBjb25zdDsKIAorICAgIG9wZXJhdG9yIGNvbnN0IFZlY3RvcjxTdHJpbmc+JigpIGNvbnN0IHsg
cmV0dXJuIG1fc3RyaW5nczsgfQorCiBwcml2YXRlOgogICAgIERPTVN0cmluZ0xpc3QoKSB7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWRE
QkFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJB
Z2VudC5jcHAKaW5kZXggNjQxY2NjMTQ4ZjlhMDc5ZjVhMzI2ZDBlZWJmMTc5YmE4OWM4M2NhMy4u
NzIyYTk0YjIxNWY3ZTMyN2FhOTI3MDRkYmY1ZmVhNzJmMjAwMGE3YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCkBAIC00
Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UuaCIKICNp
bmNsdWRlICJJREJJbmRleEJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJLZXkuaCIK
KyNpbmNsdWRlICJJREJLZXlQYXRoLmgiCiAjaW5jbHVkZSAiSURCS2V5UmFuZ2UuaCIKICNpbmNs
dWRlICJJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJQZW5k
aW5nVHJhbnNhY3Rpb25Nb25pdG9yLmgiCkBAIC0yMjUsNiArMjI2LDI1IEBAIHN0YXRpYyBQYXNz
UmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gaW5kZXhGb3JPYmplY3RTdG9yZShJREJP
YmplY3RTdG9yZUJhCiAgICAgcmV0dXJuIGlkYkluZGV4OwogfQogCitzdGF0aWMgU3RyaW5nIGtl
eVBhdGhUb1N0cmluZyhjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKQoreworICAgIC8vIEZJWE1F
OiBSZXBsYWNlIHdpdGggaGFuZGxlcnMgZm9yIG51bGwvc3RyaW5nL2FycmF5IHR5cGVzLgorICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDMwMworICAgIHN3
aXRjaCAoa2V5UGF0aC50eXBlKCkpIHsKKyAgICBjYXNlIElEQktleVBhdGg6Ok51bGxUeXBlOgor
ICAgICAgICByZXR1cm4gIihub25lKSI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSURCS2V5
UGF0aDo6U3RyaW5nVHlwZToKKyAgICAgICAgcmV0dXJuIGtleVBhdGguc3RyaW5nKCk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgSURCS2V5UGF0aDo6QXJyYXlUeXBlOgorICAgICAgICByZXR1
cm4gIlsuLi5dIjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKwogY2xhc3MgRGF0YWJhc2VMb2FkZXJDYWxs
YmFjayA6IHB1YmxpYyBFeGVjdXRhYmxlV2l0aERhdGFiYXNlIHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxEYXRhYmFzZUxvYWRlckNhbGxiYWNrPiBjcmVhdGUoSW5zcGVjdG9ySW5k
ZXhlZERCQWdlbnQ6OkZyb250ZW5kUHJvdmlkZXIqIGZyb250ZW5kUHJvdmlkZXIsIGludCByZXF1
ZXN0SWQpCkBAIC0yNjAsNyArMjgwLDcgQEAgcHVibGljOgogCiAgICAgICAgICAgICAgICAgUmVm
UHRyPE9iamVjdFN0b3JlSW5kZXg+IG9iamVjdFN0b3JlSW5kZXggPSBPYmplY3RTdG9yZUluZGV4
OjpjcmVhdGUoKQogICAgICAgICAgICAgICAgICAgICAuc2V0TmFtZShpZGJJbmRleC0+bmFtZSgp
KQotICAgICAgICAgICAgICAgICAgICAuc2V0S2V5UGF0aChpZGJJbmRleC0+a2V5UGF0aCgpKQor
ICAgICAgICAgICAgICAgICAgICAuc2V0S2V5UGF0aChrZXlQYXRoVG9TdHJpbmcoaWRiSW5kZXgt
PmtleVBhdGgoKSkpCiAgICAgICAgICAgICAgICAgICAgIC5zZXRVbmlxdWUoaWRiSW5kZXgtPnVu
aXF1ZSgpKQogICAgICAgICAgICAgICAgICAgICAuc2V0TXVsdGlFbnRyeShpZGJJbmRleC0+bXVs
dGlFbnRyeSgpKTsKICAgICAgICAgICAgICAgICBpbmRleGVzLT5hZGRJdGVtKG9iamVjdFN0b3Jl
SW5kZXgpOwpAQCAtMjY4LDcgKzI4OCw3IEBAIHB1YmxpYzoKIAogICAgICAgICAgICAgUmVmUHRy
PE9iamVjdFN0b3JlPiBvYmplY3RTdG9yZSA9IE9iamVjdFN0b3JlOjpjcmVhdGUoKQogICAgICAg
ICAgICAgICAgIC5zZXROYW1lKGlkYk9iamVjdFN0b3JlLT5uYW1lKCkpCi0gICAgICAgICAgICAg
ICAgLnNldEtleVBhdGgoaWRiT2JqZWN0U3RvcmUtPmtleVBhdGgoKSkKKyAgICAgICAgICAgICAg
ICAuc2V0S2V5UGF0aChrZXlQYXRoVG9TdHJpbmcoaWRiT2JqZWN0U3RvcmUtPmtleVBhdGgoKSkp
CiAgICAgICAgICAgICAgICAgLnNldEluZGV4ZXMoaW5kZXhlcyk7CiAgICAgICAgICAgICBvYmpl
Y3RTdG9yZXMtPmFkZEl0ZW0ob2JqZWN0U3RvcmUpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCmluZGV4IGJhZWFi
MDVlYzE5Y2I1ZjNlMjkwZDlkODgwZTVkNzkwZTA5MDA1YWQuLmFmM2U1ZTNmZWFkYmZkYjNiYTg1
OTYwNjc1YzM4YmZlY2Y5ZDQ1ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCkBAIC03OCw2ICs3OCw3IEBAIGNsYXNzIEdyYXBo
aWNzQ29udGV4dDsKIGNsYXNzIEltYWdlOwogY2xhc3MgSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZh
Y2U7CiBjbGFzcyBJREJLZXk7CitjbGFzcyBJREJLZXlQYXRoOwogY2xhc3MgSW50UmVjdDsKIGNs
YXNzIEtVUkw7CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CkBAIC0xODAsOSArMTgxLDkg
QEAgcHVibGljOgogICAgIC8vIEluZGV4ZWREQiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SURC
RmFjdG9yeUJhY2tlbmRJbnRlcmZhY2U+IGlkYkZhY3RvcnkoKTsKICAgICAvLyBFeHRyYWN0cyBr
ZXlQYXRoIGZyb20gdmFsdWVzIGFuZCByZXR1cm5zIHRoZSBjb3JyZXNwb25kaW5nIGtleXMuCi0g
ICAgc3RhdGljIHZvaWQgY3JlYXRlSURCS2V5c0Zyb21TZXJpYWxpemVkVmFsdWVzQW5kS2V5UGF0
aChjb25zdCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gPiYgdmFsdWVzLCBj
b25zdCBTdHJpbmcmIGtleVBhdGgsIFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+JiBrZXlzKTsKKyAg
ICBzdGF0aWMgdm9pZCBjcmVhdGVJREJLZXlzRnJvbVNlcmlhbGl6ZWRWYWx1ZXNBbmRLZXlQYXRo
KGNvbnN0IFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiA+JiB2YWx1ZXMsIGNv
bnN0IElEQktleVBhdGgmLCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiYga2V5cyk7CiAgICAgLy8g
SW5qZWN0cyBrZXkgdmlhIGtleVBhdGggaW50byB2YWx1ZS4gUmV0dXJucyB0cnVlIG9uIHN1Y2Nl
c3MuCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBpbmplY3RJ
REJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBjb25zdCBTdHJpbmcmIGtleVBhdGgpOworICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gaW5qZWN0SURCS2V5SW50b1Nlcmlh
bGl6ZWRWYWx1ZShQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiwgY29uc3QgSURCS2V5UGF0aCYpOwogCiAgICAgLy8gSmF2YVNjcmlwdCAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICBz
dGF0aWMgdm9pZCBub3RpZnlKU091dE9mTWVtb3J5KEZyYW1lKik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL2Nocm9taXVtL0lEQktleVBhdGhCYWNrZW5kSW1wbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL2Nocm9taXVtL0lEQktleVBhdGhCYWNrZW5kSW1wbC5jcHAK
aW5kZXggYjgwNGEwZmY4YTE0ZmE3NzIyNTgyZDJkYzI0ZTRlZjgxZWFhMzA5NC4uYzg2Yzc3ZDk3
NzM5YjU1NDQyMGQ1ODljNzA5YTNlN2YwNmRkMWJlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9jaHJvbWl1bS9JREJLZXlQYXRoQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvY2hyb21pdW0vSURCS2V5UGF0aEJhY2tlbmRJbXBsLmNwcApAQCAt
MzQsMTIgKzM0LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBJREJLZXlQYXRo
QmFja2VuZEltcGw6OmNyZWF0ZUlEQktleXNGcm9tU2VyaWFsaXplZFZhbHVlc0FuZEtleVBhdGgo
Y29uc3QgVmVjdG9yPFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCAwPiYgdmFsdWVzLCAg
Y29uc3QgU3RyaW5nJiBrZXlQYXRoLCBWZWN0b3I8UmVmUHRyPElEQktleT4sIDA+JiBrZXlzKQor
dm9pZCBJREJLZXlQYXRoQmFja2VuZEltcGw6OmNyZWF0ZUlEQktleXNGcm9tU2VyaWFsaXplZFZh
bHVlc0FuZEtleVBhdGgoY29uc3QgVmVjdG9yPFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
LCAwPiYgdmFsdWVzLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBWZWN0b3I8UmVmUHRyPElE
QktleT4sIDA+JiBrZXlzKQogewogICAgIFBsYXRmb3JtU3VwcG9ydDo6Y3JlYXRlSURCS2V5c0Zy
b21TZXJpYWxpemVkVmFsdWVzQW5kS2V5UGF0aCh2YWx1ZXMsIGtleVBhdGgsIGtleXMpOwogfQog
Ci1QYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gSURCS2V5UGF0aEJhY2tlbmRJbXBs
OjppbmplY3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKFBhc3NSZWZQdHI8SURCS2V5PiBrZXks
IFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBr
ZXlQYXRoKQorUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IElEQktleVBhdGhCYWNr
ZW5kSW1wbDo6aW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShQYXNzUmVmUHRyPElEQktl
eT4ga2V5LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIGNvbnN0IElE
QktleVBhdGgmIGtleVBhdGgpCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6aW5qZWN0
SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShrZXksIHZhbHVlLCBrZXlQYXRoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vREVQUyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vREVQUwppbmRleCAzYWM1ODY0MTk2YWEyZDRmY2QwNDk3NTk4NDE0MGM3YWQ0NDZkN2Y3Li5j
YTAwNjk1ZThlN2FlYjUyMTBmY2JlYzI2OTMwZmVkNzk4OWNiZGUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0RFUFMKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9ERVBT
CkBAIC0zMiw3ICszMiw3IEBACiAKIHZhcnMgPSB7CiAgICdjaHJvbWl1bV9zdm4nOiAnaHR0cDov
L3NyYy5jaHJvbWl1bS5vcmcvc3ZuL3RydW5rL3NyYycsCi0gICdjaHJvbWl1bV9yZXYnOiAnMTM0
NTgxJworICAnY2hyb21pdW1fcmV2JzogJzEzNDUzNycKIH0KIAogZGVwcyA9IHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oCmluZGV4IGY1M2IwMmUz
OWE3YjcyZmFlZGZiNWZiYzBmMDRlOGZhMzBkYTMxMTMuLmIzOTg1MzQxNjU1NDNhMTk3YTYxNzk3
ZDU0NzQ5ZGE4NWUzYTM1NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYklEQkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViSURCRGF0YWJhc2UuaApAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5jbHVkZSAiV2ViRE9NU3Ry
aW5nTGlzdC5oIgogI2luY2x1ZGUgIldlYkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJXZWJJ
REJLZXlQYXRoLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewpAQCAtMzYsNiArMzUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdl
YkZyYW1lOwogY2xhc3MgV2ViSURCQ2FsbGJhY2tzOwogY2xhc3MgV2ViSURCRGF0YWJhc2VDYWxs
YmFja3M7CitjbGFzcyBXZWJJREJLZXlQYXRoOwogY2xhc3MgV2ViSURCT2JqZWN0U3RvcmU7CiBj
bGFzcyBXZWJJREJUcmFuc2FjdGlvbjsKIApAQCAtNTksMTIgKzU5LDYgQEAgcHVibGljOgogICAg
ICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBXZWJET01T
dHJpbmdMaXN0KCk7CiAgICAgfQotICAgIC8vIEZJWE1FOiBSZW1vdmUgV2ViU3RyaW5nIGtleVBh
dGggb3ZlcmxvYWQgb25jZSBjYWxsZXJzIGFyZSB1cGRhdGVkLgotICAgIC8vIGh0dHA6Ly93ZWJr
aXQub3JnL2IvODQyMDcKLSAgICB2aXJ0dWFsIFdlYklEQk9iamVjdFN0b3JlKiBjcmVhdGVPYmpl
Y3RTdG9yZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYga2V5UGF0aCwg
Ym9vbCBhdXRvSW5jcmVtZW50LCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24s
IFdlYkV4Y2VwdGlvbkNvZGUmIGVjKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZU9iamVj
dFN0b3JlKG5hbWUsIFdlYklEQktleVBhdGgoa2V5UGF0aCksIGF1dG9JbmNyZW1lbnQsIHRyYW5z
YWN0aW9uLCBlYyk7Ci0gICAgfQogICAgIHZpcnR1YWwgV2ViSURCT2JqZWN0U3RvcmUqIGNyZWF0
ZU9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYsIGNvbnN0IFdlYklEQktleVBhdGgmLCBib29s
LCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKQogICAgIHsKICAg
ICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCSW5kZXguaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYklEQkluZGV4LmgKaW5kZXggMzdhZjAyYzBjOGIzMTM5ZGQzNmFlYmMwN2I1
ZDM4MTc1NjNhMGI3Ni4uYzJmZjAwMWQyZTQzNzkzZTY3N2I1NzdhM2Y2M2VjZmMyMzM0NGMzMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCSW5kZXguaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJJbmRleC5oCkBAIC01NCwx
NCArNTQsOCBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgV2ViSURCS2V5UGF0aCBrZXlQ
YXRoKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBXZWJJREJLZXlQYXRoKGtleVBhdGhT
dHJpbmcoKSk7Ci0gICAgfQotICAgIC8vIEZJWE1FOiBSZW1vdmUgbWV0aG9kIG9uY2UgY2FsbGVy
cyBhcmUgdXBkYXRlZC4KLSAgICAvLyBodHRwOi8vd2Via2l0Lm9yZy9iLzg0MjA3Ci0gICAgdmly
dHVhbCBXZWJTdHJpbmcga2V5UGF0aFN0cmluZygpIGNvbnN0Ci0gICAgewogICAgICAgICBXRUJL
SVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBXZWJTdHJpbmcoKTsKKyAg
ICAgICAgcmV0dXJuIFdlYklEQktleVBhdGg6OmNyZWF0ZU51bGwoKTsKICAgICB9CiAgICAgdmly
dHVhbCBib29sIHVuaXF1ZSgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCS2V5UGF0aC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViSURCS2V5UGF0aC5oCmluZGV4IDk3YmFjMDZmZmU4NGEzZmQwZDIzYTNmMTRh
ZDEyOTczOTM0ZjJhZTUuLmJlYjFmYTIyZDhkMDkxYzIwZWQxZTU1Y2MyYjMwNzcxMGI5ZGRmNjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQktleVBhdGgu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJLZXlQYXRoLmgKQEAg
LTM2LDYgKzM2LDggQEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5
PiBjbGFzcyBWZWN0b3I7CiBjbGFzcyBTdHJpbmc7CiB9CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsg
Y2xhc3MgSURCS2V5UGF0aDsgfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViSURC
S2V5UGF0aCB7CkBAIC00NCw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICBXRUJLSVRfRVhQT1JUIHN0
YXRpYyBXZWJJREJLZXlQYXRoIGNyZWF0ZShjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYpOwog
ICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYklEQktleVBhdGggY3JlYXRlTnVsbCgpOwogICAg
IFdFQktJVF9FWFBPUlQgV2ViSURCS2V5UGF0aChjb25zdCBXZWJJREJLZXlQYXRoJik7Ci0gICAg
fldlYklEQktleVBhdGgoKSB7IHJlc2V0KCk7IH0KKyAgICBXRUJLSVRfRVhQT1JUIH5XZWJJREJL
ZXlQYXRoKCk7CiAKICAgICBlbnVtIFR5cGUgewogICAgICAgICBOdWxsVHlwZSA9IDAsCkBAIC01
NCwzMCArNTYsMTcgQEAgcHVibGljOgogCiAgICAgV0VCS0lUX0VYUE9SVCBib29sIGlzVmFsaWQo
KSBjb25zdDsKICAgICBXRUJLSVRfRVhQT1JUIFR5cGUgdHlwZSgpIGNvbnN0OwotICAgIC8vIEZJ
WE1FOiBBcnJheS10eXBlIGtleSBwYXRocyBub3QgeWV0IHN1cHBvcnRlZC4gaHR0cDovL3dlYmtp
dC5vcmcvYi84NDIwNwotICAgIFdlYlZlY3RvcjxXZWJTdHJpbmc+IGFycmF5KCkgY29uc3QgeyBX
RUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBXZWJWZWN0b3I8V2ViU3RyaW5nPigp
OyB9Ci0gICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgc3RyaW5nKCkgY29uc3Q7Ci0KLSAgICAv
LyBGSVhNRTogUmVtb3ZlIHRoZXNlIG9uY2UgY2FsbGVycyBhcmUgdXBkYXRlZC4gaHR0cDovL3dl
YmtpdC5vcmcvYi84NDIwNwotICAgIFdFQktJVF9FWFBPUlQgV2ViSURCS2V5UGF0aChjb25zdCBX
ZWJTdHJpbmcmKTsKLSAgICBvcGVyYXRvciBjb25zdCBXZWJTdHJpbmcgKCkgY29uc3QgeyByZXR1
cm4gc3RyaW5nKCk7IH0KLSAgICBXRUJLSVRfRVhQT1JUIGludCBwYXJzZUVycm9yKCkgY29uc3Q7
Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbihjb25zdCBXZWJJREJLZXlQYXRoJik7Ci0g
ICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlc2V0KCk7CisgICAgV0VCS0lUX0VYUE9SVCBXZWJWZWN0
b3I8V2ViU3RyaW5nPiBhcnJheSgpIGNvbnN0OyAvLyBPbmx5IHZhbGlkIGZvciBBcnJheVR5cGUu
CisgICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgc3RyaW5nKCkgY29uc3Q7IC8vIE9ubHkgdmFs
aWQgZm9yIFN0cmluZ1R5cGUuCiAKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBvcGVy
YXRvciBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZywgMD4mICgpIGNvbnN0OworICAgIFdl
YklEQktleVBhdGgoY29uc3QgV2ViQ29yZTo6SURCS2V5UGF0aCYpOworICAgIFdlYklEQktleVBh
dGgmIG9wZXJhdG9yPShjb25zdCBXZWJDb3JlOjpJREJLZXlQYXRoJik7CisgICAgb3BlcmF0b3Ig
Y29uc3QgV2ViQ29yZTo6SURCS2V5UGF0aCYoKSBjb25zdDsKICNlbmRpZgogCiBwcml2YXRlOgot
ICAgIFdlYklEQktleVBhdGgoKTsKLQotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAgIFdl
YklEQktleVBhdGgoY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmcsIDA+JiwgaW50IHBhcnNl
RXJyb3IpOwotI2VuZGlmCi0KLSAgICBXZWJQcml2YXRlT3duUHRyPFdURjo6VmVjdG9yPFdURjo6
U3RyaW5nLCAwPiA+IG1fcHJpdmF0ZTsKLSAgICBpbnQgbV9wYXJzZUVycm9yOworICAgIFdlYlBy
aXZhdGVPd25QdHI8V2ViQ29yZTo6SURCS2V5UGF0aD4gbV9wcml2YXRlOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJJREJPYmplY3RTdG9yZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
SURCT2JqZWN0U3RvcmUuaAppbmRleCBkY2Y0ODU2OTI1MTBjZmY5YjgxZjY0ZTBkMTdiMDJiZGI4
MWE5ZGM0Li45OGUwNDhjM2ExMWEwZmIxMzVjYjU3NmNhNDg5ZTE5ZGRmMjk1MGJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJPYmplY3RTdG9yZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQk9iamVjdFN0b3JlLmgKQEAg
LTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJXZWJET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAi
V2ViSURCQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiV2ViSURCS2V5UGF0aC5oIgotI2luY2x1ZGUg
IldlYklEQlRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCiAj
aW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCiAKQEAgLTUxLDEyICs1MCw4IEBAIHB1Ymxp
YzoKICAgICB9CiAgICAgdmlydHVhbCBXZWJJREJLZXlQYXRoIGtleVBhdGgoKSBjb25zdAogICAg
IHsKLSAgICAgICAgcmV0dXJuIFdlYklEQktleVBhdGgoa2V5UGF0aFN0cmluZygpKTsKLSAgICB9
Ci0gICAgdmlydHVhbCBXZWJTdHJpbmcga2V5UGF0aFN0cmluZygpIGNvbnN0Ci0gICAgewogICAg
ICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBXZWJTdHJp
bmcoKTsKKyAgICAgICAgcmV0dXJuIFdlYklEQktleVBhdGg6OmNyZWF0ZU51bGwoKTsKICAgICB9
CiAgICAgdmlydHVhbCBXZWJET01TdHJpbmdMaXN0IGluZGV4TmFtZXMoKSBjb25zdAogICAgIHsK
QEAgLTc2LDEzICs3MSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRnVuY3Rp
b24oY29uc3QgV2ViSURCS2V5JiwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNh
Y3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7
IH0KICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRnVuY3Rpb24oY29uc3QgV2ViSURCS2V5UmFuZ2Um
LCBXZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlv
bkNvZGUmKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZpcnR1YWwgdm9p
ZCBjbGVhcihXZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4
Y2VwdGlvbkNvZGUmKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotCi0gICAgLy8g
RklYTUU6IFJlbW92ZSBXZWJTdHJpbmcga2V5UGF0aCBvdmVybG9hZCBvbmNlIGNhbGxlcnMgYXJl
IHVwZGF0ZWQuCi0gICAgLy8gaHR0cDovL3dlYmtpdC5vcmcvYi84NDIwNwotICAgIHZpcnR1YWwg
V2ViSURCSW5kZXgqIGNyZWF0ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2Vi
U3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5LCBjb25zdCBXZWJJ
REJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIFdlYkV4Y2VwdGlvbkNvZGUmIGVjKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGNyZWF0ZUluZGV4KG5hbWUsIFdlYklEQktleVBhdGgoa2V5UGF0aCks
IHVuaXF1ZSwgbXVsdGlFbnRyeSwgdHJhbnNhY3Rpb24sIGVjKTsKLSAgICB9CiAgICAgdmlydHVh
bCBXZWJJREJJbmRleCogY3JlYXRlSW5kZXgoY29uc3QgV2ViU3RyaW5nJiwgY29uc3QgV2ViSURC
S2V5UGF0aCYsIGJvb2wsIGJvb2wsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0
aW9uQ29kZSYpCiAgICAgewogICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQ
bGF0Zm9ybVN1cHBvcnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3Jt
L1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oCmluZGV4IGNhMzc2MmRjYmViZTRiZjJiYmFhNmQwMDAx
NGY4YWE0M2Y4NTE0ZjIuLjU2MzgwNDE1NGY5M2EwMzNhZTU3ZjJlOTYyNDM0M2RiOWM2Mzg3MWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYktp
dFBsYXRmb3JtU3VwcG9ydC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3Bs
YXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oCkBAIC0zMSw3ICszMSw2IEBACiAjaWZuZGVm
IFdlYktpdFBsYXRmb3JtU3VwcG9ydF9oCiAjZGVmaW5lIFdlYktpdFBsYXRmb3JtU3VwcG9ydF9o
CiAKLSNpbmNsdWRlICIuLi9XZWJJREJLZXlQYXRoLmgiIC8vIEZJWE1FOiBSZW1vdmUgd2l0aDog
aHR0cDovL3dlYmtpdC5vcmcvYi84NDIwNwogI2luY2x1ZGUgIldlYkNvbW1vbi5oIgogI2luY2x1
ZGUgIldlYkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiV2ViTG9jYWxpemVkU3RyaW5n
LmgiCkBAIC01Nyw2ICs1Niw3IEBAIGNsYXNzIFdlYkZpbGVTeXN0ZW07CiBjbGFzcyBXZWJGaWxl
VXRpbGl0aWVzOwogY2xhc3MgV2ViSURCRmFjdG9yeTsgLy8gRklYTUU6IERvZXMgdGhpcyBiZWxv
bmcgaW4gcGxhdGZvcm0/CiBjbGFzcyBXZWJJREJLZXk7IC8vIEZJWE1FOiBEb2VzIHRoaXMgYmVs
b25nIGluIHBsYXRmb3JtPworY2xhc3MgV2ViSURCS2V5UGF0aDsgLy8gRklYTUU6IERvZXMgdGhp
cyBiZWxvbmcgaW4gcGxhdGZvcm0/CiBjbGFzcyBXZWJNZXNzYWdlUG9ydENoYW5uZWw7IC8vIEZJ
WE1FOiBEb2VzIHRoaXMgYmVsb25nIGluIHBsYXRmb3JtPwogY2xhc3MgV2ViUGx1Z2luTGlzdEJ1
aWxkZXI7IC8vIEZJWE1FOiBEb2VzIHRoaXMgYmVsb25nIGluIHBsYXRmb3JtPwogY2xhc3MgV2Vi
U2FuZGJveFN1cHBvcnQ7CkBAIC0xMjcsMTMgKzEyNyw3IEBAIHB1YmxpYzoKICAgICAvLyBJbmRl
eGVkIERhdGFiYXNlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIAogICAgIHZpcnR1YWwgV2ViSURCRmFjdG9yeSogaWRiRmFjdG9yeSgpIHsgcmV0
dXJuIDA7IH0KLSAgICAvLyBGSVhNRTogUmVtb3ZlIFdlYlN0cmluZyBrZXlQYXRoIG92ZXJsb2Fk
IG9uY2UgY2FsbGVycyBhcmUgdXBkYXRlZC4KLSAgICAvLyBodHRwOi8vd2Via2l0Lm9yZy9iLzg0
MjA3Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZUlEQktleXNGcm9tU2VyaWFsaXplZFZhbHVlc0Fu
ZEtleVBhdGgoY29uc3QgV2ViVmVjdG9yPFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mIHZhbHVl
cywgIGNvbnN0IFdlYlN0cmluZyYga2V5UGF0aCwgV2ViVmVjdG9yPFdlYklEQktleT4mIGtleXMp
IHsgY3JlYXRlSURCS2V5c0Zyb21TZXJpYWxpemVkVmFsdWVzQW5kS2V5UGF0aCh2YWx1ZXMsIFdl
YklEQktleVBhdGgoa2V5UGF0aCksIGtleXMpOyB9CiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZUlE
QktleXNGcm9tU2VyaWFsaXplZFZhbHVlc0FuZEtleVBhdGgoY29uc3QgV2ViVmVjdG9yPFdlYlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4mIHZhbHVlcywgIGNvbnN0IFdlYklEQktleVBhdGgmIGtleVBh
dGgsIFdlYlZlY3RvcjxXZWJJREJLZXk+JiBrZXlzKSB7IH0KLSAgICAvLyBGSVhNRTogUmVtb3Zl
IFdlYlN0cmluZyBrZXlQYXRoIG92ZXJsb2FkIG9uY2UgY2FsbGVycyBhcmUgdXBkYXRlZC4KLSAg
ICAvLyBodHRwOi8vd2Via2l0Lm9yZy9iLzg0MjA3Ci0gICAgdmlydHVhbCBXZWJTZXJpYWxpemVk
U2NyaXB0VmFsdWUgaW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShjb25zdCBXZWJJREJL
ZXkmIGtleSwgY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgV2Vi
U3RyaW5nJiBrZXlQYXRoKSB7IHJldHVybiBpbmplY3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVl
KGtleSwgdmFsdWUsIFdlYklEQktleVBhdGgoa2V5UGF0aCkpOyB9CiAgICAgdmlydHVhbCBXZWJT
ZXJpYWxpemVkU2NyaXB0VmFsdWUgaW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShjb25z
dCBXZWJJREJLZXkmIGtleSwgY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiB2YWx1ZSwg
Y29uc3QgV2ViSURCS2V5UGF0aCYga2V5UGF0aCkgeyByZXR1cm4gV2ViU2VyaWFsaXplZFNjcmlw
dFZhbHVlKCk7IH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9B
c3NlcnRNYXRjaGluZ0VudW1zLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2Vy
dE1hdGNoaW5nRW51bXMuY3BwCmluZGV4IDY5ZTU5NjIyOWY0M2QyZmRlNDVjZGI0YTA3MGM1ZDdk
M2Q2MDhiZTkuLjg0YjI1MmVkMjY1YWUyMWNiMThjOTFiYWExYjcyZjgyMWY4NWY2ZDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3Bw
CkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFeGNlcHRpb24uaCIKICNp
bmNsdWRlICJJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQktleS5o
IgorI2luY2x1ZGUgIklEQktleVBhdGguaCIKICNpbmNsdWRlICJJY2VPcHRpb25zLmgiCiAjaW5j
bHVkZSAiSWNvblVSTC5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCkBAIC04NCw2ICs4NSw3
IEBACiAjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VFeGNlcHRpb24uaCIKICNpbmNsdWRlICJXZWJJ
REJGYWN0b3J5LmgiCiAjaW5jbHVkZSAiV2ViSURCS2V5LmgiCisjaW5jbHVkZSAiV2ViSURCS2V5
UGF0aC5oIgogI2luY2x1ZGUgIldlYkljb25VUkwuaCIKICNpbmNsdWRlICJXZWJJbnB1dEVsZW1l
bnQuaCIKICNpbmNsdWRlICJXZWJNZWRpYVBsYXllci5oIgpAQCAtNDYzLDEyICs0NjUsMTggQEAg
Q09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJWaWV3OjpVc2VyU3R5bGVJbmplY3RJblN1
YnNlcXVlbnREb2N1bWVudHMsIEluamUKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2Vi
SURCRGF0YWJhc2VFeGNlcHRpb25EYXRhRXJyb3IsIElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRB
X0VSUik7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYklEQkRhdGFiYXNlRXhjZXB0
aW9uUXVvdGFFcnJvciwgSURCRGF0YWJhc2VFeGNlcHRpb246OlFVT1RBX0VSUik7CiAKKyNpZiBF
TkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2Vi
SURCS2V5OjpJbnZhbGlkVHlwZSwgSURCS2V5OjpJbnZhbGlkVHlwZSk7CiBDT01QSUxFX0FTU0VS
VF9NQVRDSElOR19FTlVNKFdlYklEQktleTo6QXJyYXlUeXBlLCBJREJLZXk6OkFycmF5VHlwZSk7
CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYklEQktleTo6U3RyaW5nVHlwZSwgSURC
S2V5OjpTdHJpbmdUeXBlKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViSURCS2V5
OjpEYXRlVHlwZSwgSURCS2V5OjpEYXRlVHlwZSk7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKFdlYklEQktleTo6TnVtYmVyVHlwZSwgSURCS2V5OjpOdW1iZXJUeXBlKTsKIAorQ09NUElM
RV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJLZXlQYXRoOjpOdWxsVHlwZSwgSURCS2V5UGF0
aDo6TnVsbFR5cGUpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJLZXlQYXRo
OjpTdHJpbmdUeXBlLCBJREJLZXlQYXRoOjpTdHJpbmdUeXBlKTsKK0NPTVBJTEVfQVNTRVJUX01B
VENISU5HX0VOVU0oV2ViSURCS2V5UGF0aDo6QXJyYXlUeXBlLCBJREJLZXlQYXRoOjpBcnJheVR5
cGUpOworI2VuZGlmCisKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCiBDT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKFdlYkZpbGVTeXN0ZW06OlR5cGVUZW1wb3JhcnksIEFzeW5jRmlsZVN5c3Rl
bTo6VGVtcG9yYXJ5KTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViRmlsZVN5c3Rl
bTo6VHlwZVBlcnNpc3RlbnQsIEFzeW5jRmlsZVN5c3RlbTo6UGVyc2lzdGVudCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5j
cHAKaW5kZXggMTc5Nzk5Mjc1ZDZmOTk3NjMwMTc3ZTVhMjhiZDkzYmEzMTcyNjA0Zi4uNmU1MzU0
OTlhMzhjNGE5MzUwOWE2ZTRmNTU2Y2Y5OGFjOGYyMDA3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcApAQCAtNzUs
NyArNzUsNyBAQCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IElEQkRhdGFiYXNlQmFja2VuZFBy
b3h5OjpvYmplY3RTdG9yZU5hbWVzKCkgY29uc3QKICAgICByZXR1cm4gbV93ZWJJREJEYXRhYmFz
ZS0+b2JqZWN0U3RvcmVOYW1lcygpOwogfQogCi1QYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFj
a2VuZEludGVyZmFjZT4gSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OmNyZWF0ZU9iamVjdFN0b3Jl
KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNy
ZW1lbnQsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2Vw
dGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+
IElEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7CiAgICAgLy8gVGhlIHRyYW5zYWN0aW9uIHBvaW50ZXIgaXMgZ3VhcmFudGVlZCB0byBi
ZSBhIHBvaW50ZXIgdG8gYSBwcm94eSBvYmplY3QgYXMsIGluIHRoZSByZW5kZXJlciwKICAgICAv
LyBhbGwgaW1wbGVtZW50YXRpb25zIG9mIElEQiBpbnRlcmZhY2VzIGFyZSBwcm94eSBvYmplY3Rz
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNr
ZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2Vu
ZFByb3h5LmgKaW5kZXggNWE1YmFmMjhmMDk2YTk5NDdmYWIwNTJmZWRiMWU5YWUzNzdlYTY1YS4u
Yjc4YWM2OTkyY2RjZmYxMzg3YTllYzA4YjM4NjhlYjZjZmM0MzM5MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oCkBAIC00
Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyB2ZXJzaW9uKCkgY29uc3Q7
CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkRPTVN0cmluZ0xpc3Q+IG9iamVjdFN0
b3JlTmFtZXMoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJP
YmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIFdlYkNv
cmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNv
ZGUmKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW50ZXJmYWNlPiBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFdlYkNvcmU6OklEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQsIFdlYkNvcmU6OklEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRpb25D
b2RlJik7CiAgICAgdmlydHVhbCB2b2lkIHNldFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9u
LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6
SURCRGF0YWJhc2VDYWxsYmFja3M+LCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CiAgICAgdmly
dHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4g
dHJhbnNhY3Rpb24oV2ViQ29yZTo6RE9NU3RyaW5nTGlzdCogc3RvcmVOYW1lcywgdW5zaWduZWQg
c2hvcnQgbW9kZSwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCSW5kZXhCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvSURCSW5kZXhCYWNrZW5kUHJveHkuY3BwCmluZGV4IDAwMTRmMjk1
OTZhZWIzYTFhYzMzYWI3Y2JlNmNjNTM4MDkyMjJiYTYuLjViYzQyZTZkYjFmMjRiMzY2YTdhZTFj
Njc4Y2RjOWRhMjMyMTQ1ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQkluZGV4QmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJJbmRleEJhY2tlbmRQcm94eS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKIAogI2luY2x1ZGUgIklEQkNhbGxiYWNrcy5oIgorI2luY2x1ZGUg
IklEQktleVBhdGguaCIKICNpbmNsdWRlICJJREJLZXlSYW5nZS5oIgogI2luY2x1ZGUgIklEQlRy
YW5zYWN0aW9uQmFja2VuZFByb3h5LmgiCiAjaW5jbHVkZSAiV2ViSURCQ2FsbGJhY2tzSW1wbC5o
IgpAQCAtNjUsOSArNjYsOSBAQCBTdHJpbmcgSURCSW5kZXhCYWNrZW5kUHJveHk6OnN0b3JlTmFt
ZSgpCiAgICAgcmV0dXJuIG1fd2ViSURCSW5kZXgtPnN0b3JlTmFtZSgpOwogfQogCi1TdHJpbmcg
SURCSW5kZXhCYWNrZW5kUHJveHk6OmtleVBhdGgoKQorSURCS2V5UGF0aCBJREJJbmRleEJhY2tl
bmRQcm94eTo6a2V5UGF0aCgpCiB7Ci0gICAgcmV0dXJuIG1fd2ViSURCSW5kZXgtPmtleVBhdGgo
KS5zdHJpbmcoKTsKKyAgICByZXR1cm4gbV93ZWJJREJJbmRleC0+a2V5UGF0aCgpOwogfQogCiBi
b29sIElEQkluZGV4QmFja2VuZFByb3h5Ojp1bmlxdWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvSURCSW5kZXhCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0lEQkluZGV4QmFja2VuZFByb3h5LmgKaW5kZXggNDJlMGVhYmJlZTE3YTE2
NzA4NzhmNzAwNWIzMDllNWJkMTIwOGNkMC4uMDY3MDA1MjEwZGUyNjM4Zjc1MmQ0OWM1NTY5Njlj
ZWQ2ZWU4NTVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCSW5k
ZXhCYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJJbmRl
eEJhY2tlbmRQcm94eS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKElOREVYRURfREFU
QUJBU0UpCiAKICNpbmNsdWRlICJJREJJbmRleEJhY2tlbmRJbnRlcmZhY2UuaCIKKyNpbmNsdWRl
ICJJREJLZXlQYXRoLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CiAKQEAgLTQzLDcgKzQ0LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBT
dHJpbmcgbmFtZSgpOwogICAgIHZpcnR1YWwgU3RyaW5nIHN0b3JlTmFtZSgpOwotICAgIHZpcnR1
YWwgU3RyaW5nIGtleVBhdGgoKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OklEQktleVBhdGgga2V5
UGF0aCgpOwogICAgIHZpcnR1YWwgYm9vbCB1bmlxdWUoKTsKICAgICB2aXJ0dWFsIGJvb2wgbXVs
dGlFbnRyeSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJP
YmplY3RTdG9yZUJhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9J
REJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5jcHAKaW5kZXggMjFhNWRkODU2ZGMzYjgwNTk4OTc3
YzA0ODYyZWI4NmRmZTg3OWMwZC4uZGIxYTQ0YTZhMmE5ODI0ZDFiMWExZWU0OTFmMTZiOTI1NmIw
NTlmNiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3Rv
cmVCYWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9i
amVjdFN0b3JlQmFja2VuZFByb3h5LmNwcApAQCAtNjQsOSArNjQsOSBAQCBTdHJpbmcgSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kUHJveHk6Om5hbWUoKSBjb25zdAogICAgIHJldHVybiBtX3dlYklEQk9i
amVjdFN0b3JlLT5uYW1lKCk7CiB9CiAKLVN0cmluZyBJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94
eTo6a2V5UGF0aCgpIGNvbnN0CitJREJLZXlQYXRoIElEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5
OjprZXlQYXRoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV93ZWJJREJPYmplY3RTdG9yZS0+a2V5
UGF0aCgpLnN0cmluZygpOworICAgIHJldHVybiBtX3dlYklEQk9iamVjdFN0b3JlLT5rZXlQYXRo
KCk7CiB9CiAKIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gSURCT2JqZWN0U3RvcmVCYWNrZW5k
UHJveHk6OmluZGV4TmFtZXMoKSBjb25zdApAQCAtMTE0LDcgKzExNCw3IEBAIHZvaWQgSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kUHJveHk6OmNsZWFyKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxs
YmFja3MsIElEQlRyCiAgICAgbV93ZWJJREJPYmplY3RTdG9yZS0+Y2xlYXIobmV3IFdlYklEQkNh
bGxiYWNrc0ltcGwoY2FsbGJhY2tzKSwgKnRyYW5zYWN0aW9uUHJveHktPmdldFdlYklEQlRyYW5z
YWN0aW9uKCksIGVjKTsKIH0KIAotUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+
IElEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjpjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSwg
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgRXhjZXB0aW9uQ29k
ZSYgZWMpCitQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gSURCT2JqZWN0U3Rv
cmVCYWNrZW5kUHJveHk6OmNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURC
S2V5UGF0aCYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSwgSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
CiAgICAgLy8gVGhlIHRyYW5zYWN0aW9uIHBvaW50ZXIgaXMgZ3VhcmFudGVlZCB0byBiZSBhIHBv
aW50ZXIgdG8gYSBwcm94eSBvYmplY3QgYXMsIGluIHRoZSByZW5kZXJlciwKICAgICAvLyBhbGwg
aW1wbGVtZW50YXRpb25zIG9mIElEQiBpbnRlcmZhY2VzIGFyZSBwcm94eSBvYmplY3RzLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5k
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlQmFja2Vu
ZFByb3h5LmgKaW5kZXggNWUxMTg5MTg2YWExZGEyYzE0YzU5OGQ4NjQyNDYyZWU3ZGQ0ZWNkZi4u
MGMyZDgzOGZlZGQxMGJlYjlmMjhlYTk5ZmY3NzQ4ZDIyNzUyZTc4MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5o
CkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAorI2lu
Y2x1ZGUgIklEQktleVBhdGguaCIKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRl
cmZhY2UuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KQEAgLTQzLDcgKzQ0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfklEQk9iamVjdFN0
b3JlQmFja2VuZFByb3h5KCk7CiAKICAgICB2aXJ0dWFsIFN0cmluZyBuYW1lKCkgY29uc3Q7Ci0g
ICAgdmlydHVhbCBTdHJpbmcga2V5UGF0aCgpIGNvbnN0OworICAgIHZpcnR1YWwgV2ViQ29yZTo6
SURCS2V5UGF0aCBrZXlQYXRoKCkgY29uc3Q7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNv
cmU6OkRPTVN0cmluZ0xpc3Q+IGluZGV4TmFtZXMoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9p
ZCBnZXQoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8V2ViQ29y
ZTo6SURCQ2FsbGJhY2tzPiwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
KiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwpAQCAtNTIsNyArNTMsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5
UmFuZ2U+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFdlYkNvcmU6OklEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKICAg
ICB2aXJ0dWFsIHZvaWQgY2xlYXIoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBX
ZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRp
b25Db2RlJik7CiAKLSAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEludGVy
ZmFjZT4gY3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBh
dGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnksIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVm
UHRyPFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEludGVyZmFjZT4gY3JlYXRlSW5kZXgoY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBXZWJDb3JlOjpJREJLZXlQYXRoJiwgYm9vbCB1bmlxdWUsIGJv
b2wgbXVsdGlFbnRyeSwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwg
V2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCSW5k
ZXhCYWNrZW5kSW50ZXJmYWNlPiBpbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkV4
Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwg
V2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0
aW9uQ29kZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0
Zm9ybVN1cHBvcnQuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBw
b3J0LmNwcAppbmRleCBkZTk4MTBkYmQyOTljN2VlNTRlMDFmM2Y2ZGQzZjkxNmVjYWE5ZTcxLi5k
MzA0ZTYxMDY2NzA4NDYwZTI2ODk2YTEyMzc3NjNiMWU0YmRmNzk2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAKQEAgLTQwLDYgKzQwLDcgQEAK
ICNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgogI2luY2x1ZGUgIldlYkZyYW1lSW1wbC5oIgog
I2luY2x1ZGUgIldlYklEQktleS5oIgorI2luY2x1ZGUgIldlYklEQktleVBhdGguaCIKICNpbmNs
dWRlICJXZWJLaXQuaCIKICNpbmNsdWRlICJXZWJQbHVnaW5Db250YWluZXJJbXBsLmgiCiAjaW5j
bHVkZSAiV2ViUGx1Z2luTGlzdEJ1aWxkZXJJbXBsLmgiCkBAIC01MTUsNyArNTE2LDcgQEAgUGFz
c1JlZlB0cjxJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZT4gUGxhdGZvcm1TdXBwb3J0OjppZGJG
YWN0b3J5KCkKICAgICByZXR1cm4gSURCRmFjdG9yeUJhY2tlbmRQcm94eTo6Y3JlYXRlKCk7CiB9
CiAKLXZvaWQgUGxhdGZvcm1TdXBwb3J0OjpjcmVhdGVJREJLZXlzRnJvbVNlcmlhbGl6ZWRWYWx1
ZXNBbmRLZXlQYXRoKGNvbnN0IFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiA+
JiB2YWx1ZXMsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4m
IGtleXMpCit2b2lkIFBsYXRmb3JtU3VwcG9ydDo6Y3JlYXRlSURCS2V5c0Zyb21TZXJpYWxpemVk
VmFsdWVzQW5kS2V5UGF0aChjb25zdCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gPiYgdmFsdWVzLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBWZWN0b3I8UmVmUHRyPElE
QktleT4gPiYga2V5cykKIHsKICAgICBXZWJWZWN0b3I8V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVl
PiB3ZWJWYWx1ZXMgPSB2YWx1ZXM7CiAgICAgV2ViVmVjdG9yPFdlYklEQktleT4gd2ViS2V5czsK
QEAgLTUyNyw3ICs1MjgsNyBAQCB2b2lkIFBsYXRmb3JtU3VwcG9ydDo6Y3JlYXRlSURCS2V5c0Zy
b21TZXJpYWxpemVkVmFsdWVzQW5kS2V5UGF0aChjb25zdCBWZWN0b3I8UgogICAgICAgICBrZXlz
LmFwcGVuZChQYXNzUmVmUHRyPElEQktleT4od2ViS2V5c1tpXSkpOwogfQogCi1QYXNzUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gUGxhdGZvcm1TdXBwb3J0OjppbmplY3RJREJLZXlJbnRv
U2VyaWFsaXplZFZhbHVlKFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQorUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFBsYXRmb3JtU3VwcG9ydDo6aW5qZWN0SURCS2V5SW50
b1NlcmlhbGl6ZWRWYWx1ZShQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgpCiB7CiAg
ICAgcmV0dXJuIHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5pbmplY3RJREJLZXlJbnRvU2VyaWFs
aXplZFZhbHVlKGtleSwgdmFsdWUsIGtleVBhdGgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAKaW5kZXggNDQ3Yjk5M2M2YTRmOTA3
ZGMwNDNhN2EyZjU0YWM1Njg2ZDYzOTgxOS4uNGJlNDNkYzE0ZDgxN2Q5NTlhZWY1OGExNmFlY2Y0
ODViY2I1YjZiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURC
RGF0YWJhc2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJE
YXRhYmFzZUltcGwuY3BwCkBAIC02Niw3ICs2Niw3IEBAIFdlYkRPTVN0cmluZ0xpc3QgV2ViSURC
RGF0YWJhc2VJbXBsOjpvYmplY3RTdG9yZU5hbWVzKCkgY29uc3QKICAgICByZXR1cm4gbV9kYXRh
YmFzZUJhY2tlbmQtPm9iamVjdFN0b3JlTmFtZXMoKTsKIH0KIAotV2ViSURCT2JqZWN0U3RvcmUq
IFdlYklEQkRhdGFiYXNlSW1wbDo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5nJiBu
YW1lLCBjb25zdCBXZWJTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgY29uc3Qg
V2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBXZWJFeGNlcHRpb25Db2RlJiBlYykKK1dl
YklEQk9iamVjdFN0b3JlKiBXZWJJREJEYXRhYmFzZUltcGw6OmNyZWF0ZU9iamVjdFN0b3JlKGNv
bnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCBh
dXRvSW5jcmVtZW50LCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIFdlYkV4
Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRl
cmZhY2U+IG9iamVjdFN0b3JlID0gbV9kYXRhYmFzZUJhY2tlbmQtPmNyZWF0ZU9iamVjdFN0b3Jl
KG5hbWUsIGtleVBhdGgsIGF1dG9JbmNyZW1lbnQsIHRyYW5zYWN0aW9uLmdldElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZSgpLCBlYyk7CiAgICAgaWYgKCFvYmplY3RTdG9yZSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaAppbmRleCBm
NzNiZTU3MDU0ZjYyYWI0YzI1NDE0MDJkN2YxNDdkODY3YWVmM2Q3Li45NjU3MWJiZTljMWQ5NmNi
ZDNmOWM3ZDNhZDgzMTc5Yjk2MTkzZGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaApAQCAtNTMsMTAgKzUzLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgV2ViU3RyaW5nIHZlcnNpb24oKSBjb25zdDsKICAgICB2aXJ0dWFsIFdlYkRPTVN0
cmluZ0xpc3Qgb2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0OwogCi0gICAgLy8gRklYTUU6IFJlbW92
ZSBXZWJTdHJpbmcga2V5UGF0aCBvdmVybG9hZCBvbmNlIGNhbGxlcnMgYXJlIHVwZGF0ZWQuCi0g
ICAgLy8gaHR0cDovL3dlYmtpdC5vcmcvYi84NDIwNwotICAgIHZpcnR1YWwgV2ViSURCT2JqZWN0
U3RvcmUqIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYsIGNvbnN0IFdlYlN0cmlu
ZyYsIGJvb2wsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOwot
ICAgIHZpcnR1YWwgV2ViSURCT2JqZWN0U3RvcmUqIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdl
YlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCBhdXRvSW5j
cmVtZW50LCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIFdlYkV4Y2VwdGlv
bkNvZGUmIGVjKSB7IHJldHVybiBjcmVhdGVPYmplY3RTdG9yZShuYW1lLCBrZXlQYXRoLnN0cmlu
ZygpLCBhdXRvSW5jcmVtZW50LCB0cmFuc2FjdGlvbiwgZWMpOyB9CisgICAgdmlydHVhbCBXZWJJ
REJPYmplY3RTdG9yZSogY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBj
b25zdCBXZWJJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50LCBjb25zdCBXZWJJREJUcmFu
c2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2Jq
ZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYs
IFdlYkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmVyc2lvbihjb25zdCBX
ZWJTdHJpbmcmIHZlcnNpb24sIFdlYklEQkNhbGxiYWNrcyosIFdlYkV4Y2VwdGlvbkNvZGUmKTsK
ICAgICB2aXJ0dWFsIFdlYklEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbihjb25zdCBXZWJET01T
dHJpbmdMaXN0JiBuYW1lcywgdW5zaWduZWQgc2hvcnQgbW9kZSwgV2ViRXhjZXB0aW9uQ29kZSYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCSW5kZXhJbXBs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkluZGV4SW1wbC5jcHAKaW5k
ZXggMTcwOTM5NTY3NDA5NjAyZDg4ZjQ3YTY1ZjUwM2E5Y2ViODI3ZGFiNS4uZDc4YjJiM2E2MDhj
OGEzNzljOTgzYjA4MDM5OGRhZGJjYmFmMTk5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSURCSW5kZXhJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJREJJbmRleEltcGwuY3BwCkBAIC02MywxMyArNjMsNiBAQCBXZWJJREJLZXlQ
YXRoIFdlYklEQkluZGV4SW1wbDo6a2V5UGF0aCgpIGNvbnN0CiAgICAgcmV0dXJuIFdlYklEQktl
eVBhdGgobV9iYWNrZW5kLT5rZXlQYXRoKCkpOwogfQogCi0vLyBGSVhNRTogUmVtb3ZlIHRoaXMg
bWV0aG9kIG9uY2UgY2FsbGVycyBhcmUgdXBkYXRlZC4KLS8vIGh0dHA6Ly93ZWJraXQub3JnL2Iv
ODQyMDcKLVdlYlN0cmluZyBXZWJJREJJbmRleEltcGw6OmtleVBhdGhTdHJpbmcoKSBjb25zdAot
ewotICAgIHJldHVybiBtX2JhY2tlbmQtPmtleVBhdGgoKTsKLX0KLQogYm9vbCBXZWJJREJJbmRl
eEltcGw6OnVuaXF1ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fYmFja2VuZC0+dW5pcXVlKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJJbmRleEltcGwu
aCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkluZGV4SW1wbC5oCmluZGV4IGQ4
YjExMjlkMGYzZjU1ZDMzM2ZmZDYxOWMwOTljNDhhYmU5NWYzZmMuLjZkMGFiNjhmNmQ5OWZkY2Fj
ZGZkYzAzMmMwMjk4MDg1ODZlZGNiZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklEQkluZGV4SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklEQkluZGV4SW1wbC5oCkBAIC00Niw5ICs0Niw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IFdlYlN0cmluZyBuYW1lKCkgY29uc3Q7CiAgICAgdmlydHVhbCBXZWJTdHJpbmcgc3RvcmVOYW1l
KCkgY29uc3Q7CiAgICAgdmlydHVhbCBXZWJJREJLZXlQYXRoIGtleVBhdGgoKSBjb25zdDsKLSAg
ICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgbWV0aG9kIG9uY2UgY2FsbGVycyBhcmUgdXBkYXRlZC4K
LSAgICAvLyBodHRwOi8vd2Via2l0Lm9yZy9iLzg0MjA3Ci0gICAgdmlydHVhbCBXZWJTdHJpbmcg
a2V5UGF0aFN0cmluZygpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCB1bmlxdWUoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIGJvb2wgbXVsdGlFbnRyeSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJLZXlQYXRoLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYklEQktleVBhdGguY3BwCmluZGV4IGJjZjVkYmQwZDllYzg2ZDFhMzlj
ODAxZTRhZTBmNzdmYmQyNDFiMjYuLjE3YzE1OGYzNGU0ODhkOTBlMzE3M2NkYzM4NDYxZDFhZjJh
M2I3OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQktleVBh
dGguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQktleVBhdGguY3Bw
CkBAIC0zNywxMDEgKzM3LDc5IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAotV2ViSURCS2V5UGF0aCBXZWJJREJLZXlQYXRoOjpjcmVhdGUoY29uc3Qg
V2ViVmVjdG9yPFdlYlN0cmluZz4mKQorV2ViSURCS2V5UGF0aDo6fldlYklEQktleVBhdGgoKQog
ewotICAgIC8vIEZJWE1FOiBBcnJheS10eXBlIGtleSBwYXRocyBub3QgeWV0IHN1cHBvcnRlZC4g
aHR0cDovL3dlYmtpdC5vcmcvYi84NDIwNwotICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICByZXR1cm4gY3JlYXRlTnVsbCgpOworICAgIG1fcHJpdmF0ZS5yZXNldCgwKTsKIH0K
IAogV2ViSURCS2V5UGF0aCBXZWJJREJLZXlQYXRoOjpjcmVhdGUoY29uc3QgV2ViU3RyaW5nJiBr
ZXlQYXRoKQogewotICAgIGlmIChrZXlQYXRoLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gY3Jl
YXRlTnVsbCgpOwotCi0gICAgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+IGlkYkVsZW1lbnRzOwot
ICAgIElEQktleVBhdGhQYXJzZUVycm9yIGlkYkVycm9yOwotICAgIElEQlBhcnNlS2V5UGF0aChr
ZXlQYXRoLCBpZGJFbGVtZW50cywgaWRiRXJyb3IpOwotICAgIHJldHVybiBXZWJJREJLZXlQYXRo
KGlkYkVsZW1lbnRzLCBzdGF0aWNfY2FzdDxpbnQ+KGlkYkVycm9yKSk7Ci19Ci0KLVdlYklEQktl
eVBhdGggV2ViSURCS2V5UGF0aDo6Y3JlYXRlTnVsbCgpCi17Ci0gICAgcmV0dXJuIFdlYklEQktl
eVBhdGgoV2ViU3RyaW5nKCkpOworICAgIHJldHVybiBXZWJJREJLZXlQYXRoKElEQktleVBhdGgo
a2V5UGF0aCkpOwogfQogCi1XZWJJREJLZXlQYXRoOjpXZWJJREJLZXlQYXRoKGNvbnN0IFdlYklE
QktleVBhdGgmIGtleVBhdGgpCitXZWJJREJLZXlQYXRoIFdlYklEQktleVBhdGg6OmNyZWF0ZShj
b25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYga2V5UGF0aCkKIHsKLSAgICBhc3NpZ24oa2V5UGF0
aCk7CisgICAgVmVjdG9yPFN0cmluZz4gc3RyaW5nczsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGtleVBhdGguc2l6ZSgpOyArK2kpCisgICAgICAgIHN0cmluZ3MuYXBwZW5kKGtleVBhdGhb
aV0pOworICAgIHJldHVybiBXZWJJREJLZXlQYXRoKElEQktleVBhdGgoc3RyaW5ncykpOwogfQog
Ci1XZWJJREJLZXlQYXRoOjpXZWJJREJLZXlQYXRoKGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3Ry
aW5nPiYgZWxlbWVudHMsIGludCBwYXJzZUVycm9yKQotICAgIDogbV9wcml2YXRlKG5ldyBXVEY6
OlZlY3RvcjxXVEY6OlN0cmluZz4oZWxlbWVudHMpKQotICAgICwgbV9wYXJzZUVycm9yKHBhcnNl
RXJyb3IpCitXZWJJREJLZXlQYXRoIFdlYklEQktleVBhdGg6OmNyZWF0ZU51bGwoKQogeworICAg
IHJldHVybiBXZWJJREJLZXlQYXRoKElEQktleVBhdGgoKSk7CiB9CiAKIGJvb2wgV2ViSURCS2V5
UGF0aDo6aXNWYWxpZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcGFyc2VFcnJvciA9PSBJREJL
ZXlQYXRoUGFyc2VFcnJvck5vbmU7CisgICAgQVNTRVJUKG1fcHJpdmF0ZS5nZXQoKSk7CisgICAg
cmV0dXJuIG1fcHJpdmF0ZS0+aXNWYWxpZCgpOwogfQogCiBXZWJJREJLZXlQYXRoOjpUeXBlIFdl
YklEQktleVBhdGg6OnR5cGUoKSBjb25zdAogewotICAgIHJldHVybiBtX3ByaXZhdGUuZ2V0KCkg
PyBTdHJpbmdUeXBlIDogTnVsbFR5cGU7CisgICAgQVNTRVJUKG1fcHJpdmF0ZS5nZXQoKSk7Cisg
ICAgcmV0dXJuIFR5cGUobV9wcml2YXRlLT50eXBlKCkpOwogfQogCi1XZWJTdHJpbmcgV2ViSURC
S2V5UGF0aDo6c3RyaW5nKCkgY29uc3QKKworV2ViVmVjdG9yPFdlYlN0cmluZz4gV2ViSURCS2V5
UGF0aDo6YXJyYXkoKSBjb25zdAogewotICAgIGlmICghbV9wcml2YXRlLmdldCgpKQotICAgICAg
ICByZXR1cm4gV2ViU3RyaW5nKCk7Ci0KLSAgICAvLyBGSVhNRTogU3RvcmUgdGhlIGNvbXBsZXRl
IHN0cmluZyBpbnN0ZWFkIG9mIHJlYnVpbGRpbmcgaXQuCi0gICAgLy8gaHR0cDovL3dlYmtpdC5v
cmcvYi84NDIwNwotICAgIFdURjo6U3RyaW5nIHN0cmluZygiIik7Ci0gICAgV1RGOjpWZWN0b3I8
V1RGOjpTdHJpbmc+JiBhcnJheSA9ICptX3ByaXZhdGUuZ2V0KCk7Ci0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBhcnJheS5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAoaSkKLSAgICAgICAg
ICAgIHN0cmluZy5hcHBlbmQoIi4iKTsKLSAgICAgICAgc3RyaW5nLmFwcGVuZChhcnJheVtpXSk7
Ci0gICAgfQotICAgIHJldHVybiBXZWJTdHJpbmcoc3RyaW5nKTsKKyAgICBBU1NFUlQobV9wcml2
YXRlLmdldCgpKTsKKyAgICBBU1NFUlQobV9wcml2YXRlLT50eXBlKCkgPT0gSURCS2V5UGF0aDo6
QXJyYXlUeXBlKTsKKyAgICByZXR1cm4gbV9wcml2YXRlLT5hcnJheSgpOwogfQogCi1XZWJJREJL
ZXlQYXRoOjpXZWJJREJLZXlQYXRoKGNvbnN0IFdlYlN0cmluZyYga2V5UGF0aCkKLSAgICA6IG1f
cGFyc2VFcnJvcihJREJLZXlQYXRoUGFyc2VFcnJvck5vbmUpCitXZWJTdHJpbmcgV2ViSURCS2V5
UGF0aDo6c3RyaW5nKCkgY29uc3QKIHsKLSAgICBpZiAoIWtleVBhdGguaXNOdWxsKCkpIHsKLSAg
ICAgICAgbV9wcml2YXRlLnJlc2V0KG5ldyBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4oKSk7Ci0g
ICAgICAgIElEQktleVBhdGhQYXJzZUVycm9yIGlkYlBhcnNlRXJyb3I7Ci0gICAgICAgIElEQlBh
cnNlS2V5UGF0aChrZXlQYXRoLCAqbV9wcml2YXRlLmdldCgpLCBpZGJQYXJzZUVycm9yKTsKLSAg
ICAgICAgbV9wYXJzZUVycm9yID0gaWRiUGFyc2VFcnJvcjsKLSAgICB9CisgICAgQVNTRVJUKG1f
cHJpdmF0ZS5nZXQoKSk7CisgICAgQVNTRVJUKG1fcHJpdmF0ZS0+dHlwZSgpID09IElEQktleVBh
dGg6OlN0cmluZ1R5cGUpOworICAgIHJldHVybiBtX3ByaXZhdGUtPnN0cmluZygpOwogfQogCi1p
bnQgV2ViSURCS2V5UGF0aDo6cGFyc2VFcnJvcigpIGNvbnN0CitXZWJJREJLZXlQYXRoOjpXZWJJ
REJLZXlQYXRoKGNvbnN0IFdlYklEQktleVBhdGgmIGtleVBhdGgpCisgICAgOiBtX3ByaXZhdGUo
bmV3IElEQktleVBhdGgoa2V5UGF0aCkpCiB7Ci0gICAgcmV0dXJuIG1fcGFyc2VFcnJvcjsKKyAg
ICBBU1NFUlQobV9wcml2YXRlLmdldCgpKTsKIH0KIAotdm9pZCBXZWJJREJLZXlQYXRoOjphc3Np
Z24oY29uc3QgV2ViSURCS2V5UGF0aCYga2V5UGF0aCkKK1dlYklEQktleVBhdGg6OldlYklEQktl
eVBhdGgoY29uc3QgV2ViQ29yZTo6SURCS2V5UGF0aCYgdmFsdWUpCisgICAgOiBtX3ByaXZhdGUo
bmV3IElEQktleVBhdGgodmFsdWUpKQogewotICAgIG1fcGFyc2VFcnJvciA9IGtleVBhdGgubV9w
YXJzZUVycm9yOwotICAgIGlmIChrZXlQYXRoLm1fcHJpdmF0ZS5nZXQoKSkKLSAgICAgICAgbV9w
cml2YXRlLnJlc2V0KG5ldyBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4oa2V5UGF0aCkpOwotICAg
IGVsc2UKLSAgICAgICAgbV9wcml2YXRlLnJlc2V0KDApOworICAgIEFTU0VSVChtX3ByaXZhdGUu
Z2V0KCkpOwogfQogCi12b2lkIFdlYklEQktleVBhdGg6OnJlc2V0KCkKK1dlYklEQktleVBhdGgm
IFdlYklEQktleVBhdGg6Om9wZXJhdG9yPShjb25zdCBXZWJDb3JlOjpJREJLZXlQYXRoJiB2YWx1
ZSkKIHsKLSAgICBtX3ByaXZhdGUucmVzZXQoMCk7CisgICAgQVNTRVJUKG1fcHJpdmF0ZS5nZXQo
KSk7CisgICAgbV9wcml2YXRlLnJlc2V0KG5ldyBJREJLZXlQYXRoKHZhbHVlKSk7CisgICAgcmV0
dXJuICp0aGlzOwogfQogCi1XZWJJREJLZXlQYXRoOjpvcGVyYXRvciBjb25zdCBXVEY6OlZlY3Rv
cjxXVEY6OlN0cmluZywgMD4mKCkgY29uc3QKK1dlYklEQktleVBhdGg6Om9wZXJhdG9yIGNvbnN0
IFdlYkNvcmU6OklEQktleVBhdGgmKCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9wcml2YXRlLmdl
dCgpKTsKLSAgICByZXR1cm4gKm1fcHJpdmF0ZS5nZXQoKTsKKyAgICByZXR1cm4gKihtX3ByaXZh
dGUuZ2V0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3BwCmluZGV4IDYyNGE0
ZTViMzY2MGQ5Yjk3NGE3ZDA0ODJiMjQ2OTFkMWYxMTE0MDEuLmE1YjVhMTQ0NTA4Y2FlYTE4OTIw
NzEyMGU0OWJkNmMxZjMwYTYzMTQgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1
ZGUgIkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJJREJDYWxsYmFja3NQcm94eS5oIgogI2lu
Y2x1ZGUgIklEQkluZGV4QmFja2VuZEludGVyZmFjZS5oIgorI2luY2x1ZGUgIklEQktleVBhdGgu
aCIKICNpbmNsdWRlICJJREJLZXlSYW5nZS5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlQmFj
a2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIldlYklEQkluZGV4SW1wbC5oIgpAQCAtNTksMTMg
KzYwLDYgQEAgV2ViU3RyaW5nIFdlYklEQk9iamVjdFN0b3JlSW1wbDo6bmFtZSgpIGNvbnN0CiAK
IFdlYklEQktleVBhdGggV2ViSURCT2JqZWN0U3RvcmVJbXBsOjprZXlQYXRoKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gV2ViSURCS2V5UGF0aChtX29iamVjdFN0b3JlLT5rZXlQYXRoKCkpOwotfQot
Ci0vLyBGSVhNRTogUmVtb3ZlIHRoaXMgbWV0aG9kIG9uY2UgY2FsbGVycyBhcmUgdXBkYXRlZC4K
LS8vIGh0dHA6Ly93ZWJraXQub3JnL2IvODQyMDcKLVdlYlN0cmluZyBXZWJJREJPYmplY3RTdG9y
ZUltcGw6OmtleVBhdGhTdHJpbmcoKSBjb25zdAotewogICAgIHJldHVybiBtX29iamVjdFN0b3Jl
LT5rZXlQYXRoKCk7CiB9CiAKQEAgLTk5LDcgKzkzLDcgQEAgdm9pZCBXZWJJREJPYmplY3RTdG9y
ZUltcGw6OmNsZWFyKFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBjb25zdCBXZWJJREJUcmFu
c2EKICAgICBtX29iamVjdFN0b3JlLT5jbGVhcihJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGFk
b3B0UHRyKGNhbGxiYWNrcykpLCB0cmFuc2FjdGlvbi5nZXRJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UoKSwgZWMpOwogfQogCi1XZWJJREJJbmRleCogV2ViSURCT2JqZWN0U3RvcmVJbXBs
OjpjcmVhdGVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYga2V5
UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSwgY29uc3QgV2ViSURCVHJhbnNhY3Rp
b24mIHRyYW5zYWN0aW9uLCBXZWJFeGNlcHRpb25Db2RlJiBlYykKK1dlYklEQkluZGV4KiBXZWJJ
REJPYmplY3RTdG9yZUltcGw6OmNyZWF0ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29u
c3QgV2ViSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSwg
Y29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBXZWJFeGNlcHRpb25Db2RlJiBl
YykKIHsKICAgICBSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBpbmRleCA9IG1fb2Jq
ZWN0U3RvcmUtPmNyZWF0ZUluZGV4KG5hbWUsIGtleVBhdGgsIHVuaXF1ZSwgbXVsdGlFbnRyeSwg
dHJhbnNhY3Rpb24uZ2V0SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKCksIGVjKTsKICAg
ICBpZiAoIWluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SURCT2JqZWN0U3RvcmVJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJP
YmplY3RTdG9yZUltcGwuaAppbmRleCBlZTNiMjIyYWNjMmM2NjM3YWU3NGJkYTRlNGM4YWI4NjJm
ZjdlODdmLi4zMzZkYmMxZTdjOWM4NmFkYzBhMWQ3NzQ3MWE2ODFjNmYxZjUxMTIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuaApA
QCAtNDcsOSArNDcsNiBAQCBwdWJsaWM6CiAKICAgICBXZWJTdHJpbmcgbmFtZSgpIGNvbnN0Owog
ICAgIFdlYklEQktleVBhdGgga2V5UGF0aCgpIGNvbnN0OwotICAgIC8vIEZJWE1FOiBSZW1vdmUg
dGhpcyBtZXRob2Qgb25jZSBjYWxsZXJzIGFyZSB1cGRhdGVkLgotICAgIC8vIGh0dHA6Ly93ZWJr
aXQub3JnL2IvODQyMDcKLSAgICBXZWJTdHJpbmcga2V5UGF0aFN0cmluZygpIGNvbnN0OwogICAg
IFdlYkRPTVN0cmluZ0xpc3QgaW5kZXhOYW1lcygpIGNvbnN0OwogCiAgICAgdm9pZCBnZXQoY29u
c3QgV2ViSURCS2V5UmFuZ2UmLCBXZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJJREJUcmFuc2Fj
dGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKQEAgLTU4LDEwICs1NSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGRlbGV0ZUZ1bmN0aW9uKGNvbnN0IFdlYklEQktleVJhbmdlJiwgV2ViSURCQ2FsbGJh
Y2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7CiAgICAg
dm9pZCBjbGVhcihXZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdl
YkV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIC8vIEZJWE1FOiBSZW1vdmUgV2ViU3RyaW5nIGtleVBh
dGggb3ZlcmxvYWQgb25jZSBjYWxsZXJzIGFyZSB1cGRhdGVkLgotICAgIC8vIGh0dHA6Ly93ZWJr
aXQub3JnL2IvODQyMDcKLSAgICBXZWJJREJJbmRleCogY3JlYXRlSW5kZXgoY29uc3QgV2ViU3Ry
aW5nJiwgY29uc3QgV2ViU3RyaW5nJiwgYm9vbCwgYm9vbCwgY29uc3QgV2ViSURCVHJhbnNhY3Rp
b24mLCBXZWJFeGNlcHRpb25Db2RlJik7Ci0gICAgV2ViSURCSW5kZXgqIGNyZWF0ZUluZGV4KGNv
bnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCB1
bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0
aW9uLCBXZWJFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gY3JlYXRlSW5kZXgobmFtZSwga2V5
UGF0aC5zdHJpbmcoKSwgdW5pcXVlLCBtdWx0aUVudHJ5LCB0cmFuc2FjdGlvbiwgZWMpOyB9Cisg
ICAgV2ViSURCSW5kZXgqIGNyZWF0ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3Qg
V2ViSURCS2V5UGF0aCYsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnksIGNvbnN0IFdlYklE
QlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOwogICAgIFdlYklEQkluZGV4KiBpbmRl
eChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIGRl
bGV0ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24m
LCBXZWJFeGNlcHRpb25Db2RlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvSURCQmluZGluZ1V0aWxpdGllc1Rlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9JREJCaW5kaW5nVXRpbGl0aWVzVGVzdC5jcHAKaW5kZXggZDYwMjk1YTVmYjQz
ZTUzMzYxYzA3MjYxMmE1ZTQzODU4ZTY2YzI5OS4uYzEzNTE4NTBkODc4YzYwNWI1NjY0YzY3MjQw
NTNiNGM3YjBiMTM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9J
REJCaW5kaW5nVXRpbGl0aWVzVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9JREJCaW5kaW5nVXRpbGl0aWVzVGVzdC5jcHAKQEAgLTQxLDEwICs0MSw4IEBAIG5hbWVz
cGFjZSB7CiAKIFBhc3NSZWZQdHI8SURCS2V5PiBjaGVja0tleUZyb21WYWx1ZUFuZEtleVBhdGhJ
bnRlcm5hbChTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHZhbHVlLCBjb25zdCBTdHJpbmcmIGtleVBh
dGgpCiB7Ci0gICAgVmVjdG9yPFN0cmluZz4gaWRiS2V5UGF0aDsKLSAgICBJREJLZXlQYXRoUGFy
c2VFcnJvciBwYXJzZUVycm9yOwotICAgIElEQlBhcnNlS2V5UGF0aChrZXlQYXRoLCBpZGJLZXlQ
YXRoLCBwYXJzZUVycm9yKTsKLSAgICBFWFBFQ1RfRVEoSURCS2V5UGF0aFBhcnNlRXJyb3JOb25l
LCBwYXJzZUVycm9yKTsKKyAgICBJREJLZXlQYXRoIGlkYktleVBhdGgoa2V5UGF0aCk7CisgICAg
RVhQRUNUX1RSVUUoaWRiS2V5UGF0aC5pc1ZhbGlkKCkpOwogICAgIHJldHVybiBjcmVhdGVJREJL
ZXlGcm9tU2VyaWFsaXplZFZhbHVlQW5kS2V5UGF0aCh2YWx1ZSwgaWRiS2V5UGF0aCk7CiB9CiAK
QEAgLTU2LDEwICs1NCw4IEBAIHZvaWQgY2hlY2tLZXlQYXRoTnVsbFZhbHVlKFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSogdmFsdWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKIAogUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IGluamVjdEtleShQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIGNvbnN0IFN0cmluZyYga2V5
UGF0aCkKIHsKLSAgICBWZWN0b3I8U3RyaW5nPiBpZGJLZXlQYXRoOwotICAgIElEQktleVBhdGhQ
YXJzZUVycm9yIHBhcnNlRXJyb3I7Ci0gICAgSURCUGFyc2VLZXlQYXRoKGtleVBhdGgsIGlkYktl
eVBhdGgsIHBhcnNlRXJyb3IpOwotICAgIEVYUEVDVF9FUShJREJLZXlQYXRoUGFyc2VFcnJvck5v
bmUsIHBhcnNlRXJyb3IpOworICAgIElEQktleVBhdGggaWRiS2V5UGF0aChrZXlQYXRoKTsKKyAg
ICBFWFBFQ1RfVFJVRShpZGJLZXlQYXRoLmlzVmFsaWQoKSk7CiAgICAgcmV0dXJuIGluamVjdElE
QktleUludG9TZXJpYWxpemVkVmFsdWUoa2V5LCB2YWx1ZSwgaWRiS2V5UGF0aCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCS2V5UGF0aFRlc3QuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJLZXlQYXRoVGVzdC5jcHAKaW5kZXgg
ZTJmZGFlYmMyZjE3ODdlOGI2ZDhlNzllNmFmNjJhMWY3NTA1ZWQ4NC4uN2Q2NjJjMDA5Y2M4NjJl
NTAwNjE4ZGZmZGVmZThhMjQ2NTQzNDFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9JREJLZXlQYXRoVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9JREJLZXlQYXRoVGVzdC5jcHAKQEAgLTM3LDYgKzM3LDEwIEBAIG5hbWVzcGFjZSB7
CiAKIHZvaWQgY2hlY2tLZXlQYXRoKGNvbnN0IFN0cmluZyYga2V5UGF0aCwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGV4cGVjdGVkLCBpbnQgcGFyc2VyRXJyb3IpCiB7CisgICAgSURCS2V5UGF0aCBp
ZGJLZXlQYXRoKGtleVBhdGgpOworICAgIEFTU0VSVF9FUShpZGJLZXlQYXRoLnR5cGUoKSwgSURC
S2V5UGF0aDo6U3RyaW5nVHlwZSk7CisgICAgQVNTRVJUX0VRKGlkYktleVBhdGguaXNWYWxpZCgp
LCAocGFyc2VyRXJyb3IgPT0gSURCS2V5UGF0aFBhcnNlRXJyb3JOb25lKSk7CisKICAgICBJREJL
ZXlQYXRoUGFyc2VFcnJvciBlcnJvcjsKICAgICBWZWN0b3I8U3RyaW5nPiBrZXlQYXRoRWxlbWVu
dHM7CiAgICAgSURCUGFyc2VLZXlQYXRoKGtleVBhdGgsIGtleVBhdGhFbGVtZW50cywgZXJyb3Ip
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDczYmNjNmIyNGE2YjgxZDcwYjQxYjAwMThjY2Q1MDc4MDdlYmFmM2EuLmY5MWY4
ZDgzNThkOTVkMzYxYTYzYTUxODlmNDVhMjE1M2YxZDEzYjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBA
QAorMjAxMi0wNS0wMyAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIEluZGV4ZWREQjogU3RvcmUga2V5IHBhdGhzIGluIElEQktleVBhdGggdHlwZSBpbnN0ZWFk
IG9mIFN0cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODUyOTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgtYmFzaWNzLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5cGF0aC1iYXNpY3MuanM6CisKIDIw
MTItMDUtMDMgIFN1ZGFyc2FuYSBOYWdpbmVuaSAgPHN1ZGFyc2FuYS5uYWdpbmVuaUBsaW51eC5p
bnRlbC5jb20+CiAKICAgICAgICAgW0VGTF0gW0RSVF0gVXBkYXRlIEVGTCBiYXNlbGluZXMgYWZ0
ZXIgcjExNTg0NgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5
cGF0aC1iYXNpY3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
a2V5cGF0aC1iYXNpY3MtZXhwZWN0ZWQudHh0CmluZGV4IGIzMDgxZDI4NWQ0MjRiN2JmZmVkMDZi
ZTVkZGUzZTY2MmRhYjQ4MTEuLmQwMDU4ZDY0ZWY2NjgwNWMyMDU0NGVhYWVjMTMyN2NjNGIwMTRk
NWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgtYmFz
aWNzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXlw
YXRoLWJhc2ljcy1leHBlY3RlZC50eHQKQEAgLTksNDAgKzksMzAgQEAgaW5kZXhlZERCLm9wZW4o
bmFtZSkKIGRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAogcmVxdWVzdCA9IGRiLnNldFZlcnNpb24o
JzEnKQogRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KLWdsb2JhbEtleVBhdGggPSAnbnVsbCcK
LWRiLmNyZWF0ZU9iamVjdFN0b3JlKCduYW1lJywge2tleVBhdGg6IGdsb2JhbEtleVBhdGh9KQot
RGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KLWdsb2JhbEtleVBhdGggPSAndW5kZWZpbmVkJwot
ZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ25hbWUnLCB7a2V5UGF0aDogZ2xvYmFsS2V5UGF0aH0pCi1E
ZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgotZ2xvYmFsS2V5UGF0aCA9ICcnCi1kYi5jcmVhdGVP
YmplY3RTdG9yZSgnbmFtZScsIHtrZXlQYXRoOiBnbG9iYWxLZXlQYXRofSkKLURlbGV0ZWQgYWxs
IG9iamVjdCBzdG9yZXMuCi1nbG9iYWxLZXlQYXRoID0gJ2ZvbycKLWRiLmNyZWF0ZU9iamVjdFN0
b3JlKCduYW1lJywge2tleVBhdGg6IGdsb2JhbEtleVBhdGh9KQotRGVsZXRlZCBhbGwgb2JqZWN0
IHN0b3Jlcy4KLWdsb2JhbEtleVBhdGggPSAnZm9vLmJhci5iYXonCi1kYi5jcmVhdGVPYmplY3RT
dG9yZSgnbmFtZScsIHtrZXlQYXRoOiBnbG9iYWxLZXlQYXRofSkKLURlbGV0ZWQgYWxsIG9iamVj
dCBzdG9yZXMuCi1nbG9iYWxLZXlQYXRoID0gJ251bGwnCi1zdG9yZSA9IGRiLmNyZWF0ZU9iamVj
dFN0b3JlKCdzdG9yZU5hbWUnKQotc3RvcmUuY3JlYXRlSW5kZXgoJ25hbWUnLCBnbG9iYWxLZXlQ
YXRoKQotRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KLWdsb2JhbEtleVBhdGggPSAndW5kZWZp
bmVkJwotc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJykKLXN0b3JlLmNy
ZWF0ZUluZGV4KCduYW1lJywgZ2xvYmFsS2V5UGF0aCkKLURlbGV0ZWQgYWxsIG9iamVjdCBzdG9y
ZXMuCi1nbG9iYWxLZXlQYXRoID0gJycKLXN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0
b3JlTmFtZScpCi1zdG9yZS5jcmVhdGVJbmRleCgnbmFtZScsIGdsb2JhbEtleVBhdGgpCi1EZWxl
dGVkIGFsbCBvYmplY3Qgc3RvcmVzLgotZ2xvYmFsS2V5UGF0aCA9ICdmb28nCi1zdG9yZSA9IGRi
LmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKQotc3RvcmUuY3JlYXRlSW5kZXgoJ25hbWUn
LCBnbG9iYWxLZXlQYXRoKQotRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KLWdsb2JhbEtleVBh
dGggPSAnZm9vLmJhci5iYXonCi1zdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5h
bWUnKQotc3RvcmUuY3JlYXRlSW5kZXgoJ25hbWUnLCBnbG9iYWxLZXlQYXRoKQorc3RvcmUgPSBk
Yi5jcmVhdGVPYmplY3RTdG9yZSgnbmFtZScsIHtrZXlQYXRoOiBudWxsfSkKK1BBU1Mgc3RvcmUu
a2V5UGF0aCBpcyAnbnVsbCcKK2luZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ25hbWUnLCBudWxs
KQorUEFTUyBpbmRleC5rZXlQYXRoIGlzICdudWxsJworRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jl
cy4KK3N0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ25hbWUnLCB7a2V5UGF0aDogdW5kZWZp
bmVkfSkKK1BBU1Mgc3RvcmUua2V5UGF0aCBpcyAndW5kZWZpbmVkJworaW5kZXggPSBzdG9yZS5j
cmVhdGVJbmRleCgnbmFtZScsIHVuZGVmaW5lZCkKK1BBU1MgaW5kZXgua2V5UGF0aCBpcyAndW5k
ZWZpbmVkJworRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KK3N0b3JlID0gZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoJ25hbWUnLCB7a2V5UGF0aDogJyd9KQorUEFTUyBzdG9yZS5rZXlQYXRoIGlzICcn
CitpbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4KCduYW1lJywgJycpCitQQVNTIGluZGV4LmtleVBh
dGggaXMgJycKK0RlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCitzdG9yZSA9IGRiLmNyZWF0ZU9i
amVjdFN0b3JlKCduYW1lJywge2tleVBhdGg6ICdmb28nfSkKK1BBU1Mgc3RvcmUua2V5UGF0aCBp
cyAnZm9vJworaW5kZXggPSBzdG9yZS5jcmVhdGVJbmRleCgnbmFtZScsICdmb28nKQorUEFTUyBp
bmRleC5rZXlQYXRoIGlzICdmb28nCitEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgorc3RvcmUg
PSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnbmFtZScsIHtrZXlQYXRoOiAnZm9vLmJhci5iYXonfSkK
K1BBU1Mgc3RvcmUua2V5UGF0aCBpcyAnZm9vLmJhci5iYXonCitpbmRleCA9IHN0b3JlLmNyZWF0
ZUluZGV4KCduYW1lJywgJ2Zvby5iYXIuYmF6JykKK1BBU1MgaW5kZXgua2V5UGF0aCBpcyAnZm9v
LmJhci5iYXonCiBEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgogRGVsZXRlZCBhbGwgb2JqZWN0
IHN0b3Jlcy4KIGdsb2JhbEtleVBhdGggPSAnW10nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5cGF0aC1iYXNpY3MuanMgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5cGF0aC1iYXNpY3MuanMKaW5kZXggYjI1
YzczMWU4YTU4MmFhZjU3ZTY0MDA4YTBmNWU1OWMyZmMzNTlhMS4uZmM2Mzc0N2M5NDFhNTViMTVj
YjAxNjgwMzc5NTM5YzBjNTI3MDEyYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL2tleXBhdGgtYmFzaWNzLmpzCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9rZXlwYXRoLWJhc2ljcy5qcwpAQCAtMjcsMjggKzI3
LDE5IEBAIGZ1bmN0aW9uIHRlc3RWYWxpZEtleVBhdGhzKCkKIHsKICAgICBkZWxldGVBbGxPYmpl
Y3RTdG9yZXMoZGIpOwogCi0gICAgdGVzdEtleVBhdGhzID0gW251bGwsIHVuZGVmaW5lZCwgJydd
OwotICAgIHRlc3RLZXlQYXRocy5mb3JFYWNoKGZ1bmN0aW9uIChrZXlQYXRoKSB7Ci0gICAgICAg
IGdsb2JhbEtleVBhdGggPSBrZXlQYXRoOwotICAgICAgICBkZWJ1ZygiZ2xvYmFsS2V5UGF0aCA9
ICciICsgZ2xvYmFsS2V5UGF0aCArICInIik7Ci0gICAgICAgIGV2YWxBbmRMb2coImRiLmNyZWF0
ZU9iamVjdFN0b3JlKCduYW1lJywge2tleVBhdGg6IGdsb2JhbEtleVBhdGh9KSIpOwotICAgICAg
ICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotICAgIH0pOworICAgIHRlc3RLZXlQYXRocyA9
IFsKKyAgICAgICAgeyBrZXlQYXRoOiAibnVsbCIsIGV4cGVjdGVkOiAiJ251bGwnIiB9LAorICAg
ICAgICB7IGtleVBhdGg6ICJ1bmRlZmluZWQiLCBleHBlY3RlZDogIid1bmRlZmluZWQnIiB9LAor
ICAgICAgICB7IGtleVBhdGg6ICInJyIsIGV4cGVjdGVkOiAiJyciIH0sCisgICAgICAgIHsga2V5
UGF0aDogIidmb28nIiwgZXhwZWN0ZWQ6ICInZm9vJyIgfSwKKyAgICAgICAgeyBrZXlQYXRoOiAi
J2Zvby5iYXIuYmF6JyIsIGV4cGVjdGVkOiAiJ2Zvby5iYXIuYmF6JyIgfQorICAgIF07CiAKLSAg
ICB0ZXN0S2V5UGF0aHMgPSBbJ2ZvbycsICdmb28uYmFyLmJheiddOwotICAgIHRlc3RLZXlQYXRo
cy5mb3JFYWNoKGZ1bmN0aW9uIChrZXlQYXRoKSB7Ci0gICAgICAgIGdsb2JhbEtleVBhdGggPSBr
ZXlQYXRoOwotICAgICAgICBkZWJ1ZygiZ2xvYmFsS2V5UGF0aCA9ICciICsgZ2xvYmFsS2V5UGF0
aCArICInIik7Ci0gICAgICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCduYW1l
Jywge2tleVBhdGg6IGdsb2JhbEtleVBhdGh9KSIpOwotICAgICAgICBkZWxldGVBbGxPYmplY3RT
dG9yZXMoZGIpOwotICAgIH0pOwotCi0gICAgdGVzdEtleVBhdGhzID0gW251bGwsIHVuZGVmaW5l
ZCwgJycsICdmb28nLCAnZm9vLmJhci5iYXonXTsKLSAgICB0ZXN0S2V5UGF0aHMuZm9yRWFjaChm
dW5jdGlvbiAoa2V5UGF0aCkgewotICAgICAgICBnbG9iYWxLZXlQYXRoID0ga2V5UGF0aDsKLSAg
ICAgICAgZGVidWcoImdsb2JhbEtleVBhdGggPSAnIiArIGdsb2JhbEtleVBhdGggKyAiJyIpOwot
ICAgICAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUo
J3N0b3JlTmFtZScpIik7Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCdu
YW1lJywgZ2xvYmFsS2V5UGF0aCkiKTsKKyAgICB0ZXN0S2V5UGF0aHMuZm9yRWFjaChmdW5jdGlv
biAodGVzdENhc2UpIHsKKyAgICAgICAgZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgnbmFtZScsIHtrZXlQYXRoOiAiICsgdGVzdENhc2Uua2V5UGF0aCArICJ9KSIpOwor
ICAgICAgICBzaG91bGRCZSgic3RvcmUua2V5UGF0aCIsIHRlc3RDYXNlLmV4cGVjdGVkKTsKKyAg
ICAgICAgZXZhbEFuZExvZygiaW5kZXggPSBzdG9yZS5jcmVhdGVJbmRleCgnbmFtZScsICIgKyB0
ZXN0Q2FzZS5rZXlQYXRoICsgIikiKTsKKyAgICAgICAgc2hvdWxkQmUoImluZGV4LmtleVBhdGgi
LCB0ZXN0Q2FzZS5leHBlY3RlZCk7CiAgICAgICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7
CiAgICAgfSk7CiAKQEAgLTg3LDQgKzc4LDQgQEAgZnVuY3Rpb24gdGVzdEludmFsaWRLZXlQYXRo
cygpCiAgICAgZmluaXNoSlNUZXN0KCk7CiB9CiAKLXRlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCit0ZXN0KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140082</attachid>
            <date>2012-05-03 13:48:28 -0700</date>
            <delta_ts>2012-05-07 13:32:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85298-20120503134827.patch</filename>
            <type>text/plain</type>
            <size>113104</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1OTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODhlN2Q2YzBjNDkwZDJh
NjU5YzU2ZDMyNTc2MDMyNzhkMTE1Mjg5OS4uNWU1NzFhMTljODY5MzdkNDViYjk2NjU2MDIxYTVi
MDQ3NzJjMTM3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNCBAQAorMjAxMi0wNS0wMyAgSm9z
aHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogU3Rv
cmUga2V5IHBhdGhzIGluIElEQktleVBhdGggdHlwZSBpbnN0ZWFkIG9mIFN0cmluZworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODUyOTgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNaWdyYXRlIGZyb20gc3Rv
cmluZyBrZXkgcGF0aHMgYXMgKG51bGxhYmxlKSBTdHJpbmdzIHRvIGEgZGVkaWNhdGVkIElEQktl
eVBhdGgKKyAgICAgICAgdHlwZS4gUHJlcCB3b3JrIGZvciBzdXBwb3J0aW5nIGFycmF5LXR5cGUg
a2V5IHBhdGhzOiBodHRwOi8vd2Via2l0Lm9yZy9iLzg0MjA3CisKKyAgICAgICAgVGVzdHM6IHN0
b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgtYmFzaWNzLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQkFueS5jcHA6IEFsbG93IElEQkFueSB0byB5aWVsZCBET01TdHJpbmdzLgor
ICAgICAgICAoV2ViQ29yZTo6SURCQW55OjpjcmVhdGVTdHJpbmcpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJBbnk6OnN0cmluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJBbnk6OnNldCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQW55Lmg6Cisg
ICAgICAgIChJREJBbnkpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdT
dG9yZS5oOiBTd2l0Y2ggZnJvbSBTdHJpbmcgdG8gSURCS2V5UGF0aC4KKyAgICAgICAgKElEQkJh
Y2tpbmdTdG9yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3Bw
OiBTd2l0Y2ggZnJvbSBTdHJpbmcgdG8gSURCS2V5UGF0aC4KKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHA6IFN3aXRjaCBmcm9tIFN0cmluZyB0byBJREJL
ZXlQYXRoLgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRl
T2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
bG9hZE9iamVjdFN0b3Jlcyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VCYWNrZW5kSW1wbC5oOiBTd2l0Y2ggZnJvbSBTdHJpbmcgdG8gSURCS2V5UGF0aC4KKyAgICAg
ICAgKElEQkRhdGFiYXNlQmFja2VuZEltcGwpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oOiBTd2l0Y2ggZnJvbSBTdHJpbmcgdG8gSURC
S2V5UGF0aC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSURCRGF0YWJhc2VCYWNrZW5k
SW50ZXJmYWNlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oOiBTd2l0
Y2ggZnJvbSBTdHJpbmcgdG8gSURCQW55ICh2aWEgSURCS2V5UGF0aCkuCisgICAgICAgIChXZWJD
b3JlOjpJREJJbmRleDo6a2V5UGF0aCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
SW5kZXguaWRsOiBTd2l0Y2ggZnJvbSBET01TdHJpbmc/IHRvIElEQkFueS4KKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmNwcDogU3dpdGNoIGZyb20gU3Ry
aW5nIHRvIElEQktleVBhdGguCisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleEJhY2tlbmRJbXBs
OjpJREJJbmRleEJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJJ
bmRleEJhY2tlbmRJbXBsLmg6IFN3aXRjaCBmcm9tIFN0cmluZyB0byBJREJLZXlQYXRoLgorICAg
ICAgICAoV2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkluZGV4QmFja2VuZEltcGw6OmtleVBhdGgpOgorICAgICAgICAoSURCSW5kZXhC
YWNrZW5kSW1wbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5k
SW50ZXJmYWNlLmg6IFN3aXRjaCBmcm9tIFN0cmluZyB0byBJREJLZXlQYXRoLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChJREJJbmRleEJhY2tlbmRJbnRlcmZhY2UpOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGguY3BwOiBOb24tdHJpdmlhbCBtZXRob2QgaW1w
bGVtZW50YXRpb25zLgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5UGF0aDo6aXNWYWxpZCk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQktleVBhdGg6Om9wZXJhdG9y
IFBhc3NSZWZQdHI8SURCQW55Pik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5
UGF0aC5oOiBJbnRyb2R1Y2UgSURCS2V5UGF0aCB0eXBlLgorICAgICAgICAoSURCS2V5UGF0aCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlQYXRoOjpJREJLZXlQYXRoKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQktleVBhdGg6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5UGF0aDo6
YXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5UGF0aDo6c3RyaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQktleVBhdGg6OmlzTnVsbCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRoQmFja2VuZEltcGwuY3BwOiBTd2l0Y2gg
ZnJvbSBTdHJpbmcgdG8gSURCS2V5UGF0aC4KKyAgICAgICAgKFdlYkNvcmU6OklEQktleVBhdGhC
YWNrZW5kSW1wbDo6Y3JlYXRlSURCS2V5c0Zyb21TZXJpYWxpemVkVmFsdWVzQW5kS2V5UGF0aCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlQYXRoQmFja2VuZEltcGw6OmluamVjdElEQktleUlu
dG9TZXJpYWxpemVkVmFsdWUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBh
dGhCYWNrZW5kSW1wbC5oOiBTd2l0Y2ggZnJvbSBTdHJpbmcgdG8gSURCS2V5UGF0aC4KKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoSURCS2V5UGF0aEJhY2tlbmRJbXBsKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcDogU3dpdGNoIGZy
b20gU3RyaW5nIHRvIElEQktleVBhdGgsIHdpdGggYmFjay1jb21wYXQuCisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnB1dElEQktleVBhdGgpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0T2JqZWN0U3RvcmVzKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OmdldEluZGV4ZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaDoKKyAgICAgICAg
KElEQkxldmVsREJCYWNraW5nU3RvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
QkxldmVsREJDb2RpbmcuY3BwOiBOZXcgY29kaW5nIHNjaGVtZSBmb3Iga2V5IHBhdGhzICh3aXRo
IGJhY2stY29tcGF0KS4KKyAgICAgICAgKElEQkxldmVsREJDb2RpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCTGV2ZWxEQkNvZGluZzo6ZW5jb2RlSURCS2V5UGF0aCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJMZXZlbERCQ29kaW5nOjpkZWNvZGVJREJLZXlQYXRoKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmg6IEFkZCBrZXktcGF0aC1zcGVjaWZpYyBt
ZXRob2RzLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJREJMZXZlbERCQ29kaW5nKToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHA6IFN3aXRjaCBm
cm9tIFN0cmluZyB0byBJREJLZXlQYXRoLgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3Rv
cmU6OmtleVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmNyZWF0ZUlu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
Qk9iamVjdFN0b3JlLmg6IFN3aXRjaCBmcm9tIFN0cmluZyB0byBJREJBbnkgKHZpYSBJREJLZXlQ
YXRoKS4KKyAgICAgICAgKElEQk9iamVjdFN0b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJPYmplY3RTdG9yZS5pZGw6IFN3aXRjaCBmcm9tIERPTVN0cmluZz8gdG8gSURCQW55
LgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwu
Y3BwOiBTd2l0Y2ggZnJvbSBTdHJpbmcgdG8gSURCS2V5UGF0aC4KKyAgICAgICAgKFdlYkNvcmU6
OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGwpOgor
ICAgICAgICAoV2ViQ29yZTo6ZmV0Y2hLZXlGcm9tS2V5UGF0aCk6CisgICAgICAgIChXZWJDb3Jl
OjppbmplY3RLZXlJbnRvS2V5UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsOjpsb2FkSW5kZXhlcyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oOiBTd2l0Y2ggZnJvbSBTdHJpbmcgdG8gSURC
S2V5UGF0aC4KKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjprZXlQ
YXRoKToKKyAgICAgICAgKElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwpOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZS5oOiBTd2l0Y2gg
ZnJvbSBTdHJpbmcgdG8gSURCS2V5UGF0aC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9E
aWN0aW9uYXJ5LmNwcDogQWRkIGdldHRlciBmb3IgRE9NU3RyaW5nW10gKGkuZS4gVmVjdG9yPFN0
cmluZz4pCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpY3Rpb25hcnk6
OmdldCk6CisgICAgICAgICogYmluZGluZ3MvdjgvRGljdGlvbmFyeS5oOgorICAgICAgICAoRGlj
dGlvbmFyeSk6CisgICAgICAgICogYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5jcHA6
IFN3aXRjaCBmcm9tIFN0cmluZyB0byBJREJLZXlQYXRoLgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlSURCS2V5RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtleVBhdGgpOgorICAgICAgICAoV2ViQ29y
ZTo6aW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZSk6CisgICAgICAgICogYmluZGluZ3Mv
djgvSURCQmluZGluZ1V0aWxpdGllcy5oOiBTd2l0Y2ggZnJvbSBTdHJpbmcgdG8gSURCS2V5UGF0
aC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOElE
QkFueUN1c3RvbS5jcHA6IFN1cHBvcnQgU3RyaW5nL0RPTVN0cmluZy4KKyAgICAgICAgKFdlYkNv
cmU6OnRvVjgpOgorICAgICAgICAqIGRvbS9ET01TdHJpbmdMaXN0Lmg6IEFsbG93IGVhc3kgKGNv
bnN0KSBhY2Nlc3MgdG8gc3RyaW5ncy4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVN0cmluZ0xpc3Q6
Om9wZXJhdG9yIGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik6CisgICAgICAgIChET01TdHJpbmdMaXN0
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwOiBUZW1w
b3Jhcnkgc2hpbSBmb3Igbm9uLXN0cmluZ3M6IHNlZSBodHRwOi8vd2Via2l0Lm9yZy9iLzg0MzAz
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9y
bVN1cHBvcnQuaDogU3dpdGNoIGZyb20gU3RyaW5nIHRvIElEQktleVBhdGguCisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFBsYXRmb3JtU3VwcG9ydCk6CisgICAgICAgICogc3RvcmFnZS9j
aHJvbWl1bS9JREJLZXlQYXRoQmFja2VuZEltcGwuY3BwOiBTd2l0Y2ggZnJvbSBTdHJpbmcgdG8g
SURCS2V5UGF0aC4KKyAgICAgICAgKFdlYkNvcmU6OklEQktleVBhdGhCYWNrZW5kSW1wbDo6Y3Jl
YXRlSURCS2V5c0Zyb21TZXJpYWxpemVkVmFsdWVzQW5kS2V5UGF0aCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJLZXlQYXRoQmFja2VuZEltcGw6OmluamVjdElEQktleUludG9TZXJpYWxpemVkVmFs
dWUpOgorCiAyMDEyLTA1LTAzICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBjb21waWxlIHRpbWUgYW1iaWd1aXR5IGhhcHBl
bnMgd2hlbiBJIHRyeSB0byBhc3NpZ24gYSBUeXBlQnVpbGRlciBvYmplY3QgdG8gYW4gb3V0IGFy
Z3VtZW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA2ZGQ3MjM1MmUzODM4NWQ1YjAx
ZjJjNjA0MjhhZjljODEwODM4YWZmLi5kNTE3NTQ5ZDE1MGI3NGE4OGVkYTQwODJjNDdjMjZjM2Y4
MGE4ZTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDEy
LTA1LTAzICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5k
ZXhlZERCOiBTdG9yZSBrZXkgcGF0aHMgaW4gSURCS2V5UGF0aCB0eXBlIGluc3RlYWQgb2YgU3Ry
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTI5
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIGZ1
bmN0aW9uYWwgY2hhbmdlcywganVzdCBmaW5pc2ggbWlncmF0aW9uIGZyb20gU3RyaW5nIHRvIElE
QktleVBhdGgKKyAgICAgICAgZm9yIHN0b3Jpbmcga2V5IHBhdGhzLCBmb3IgZXZlbnR1YWwgYXJy
YXkgc3VwcG9ydCBodHRwOi8vd2Via2l0Lm9yZy9iLzg0MjA3CisKKyAgICAgICAgKiBwdWJsaWMv
V2ViSURCRGF0YWJhc2UuaDogUmVtb3ZlIHRlbXBvcmFyeSBvdmVybG9hZC4KKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlOjpvYmplY3RTdG9yZU5hbWVz
KToKKyAgICAgICAgKiBwdWJsaWMvV2ViSURCSW5kZXguaDogUmVtb3ZlIHRlbXBvcmFyeSBtZXRo
b2QuCisgICAgICAgIChXZWJLaXQ6OldlYklEQkluZGV4OjprZXlQYXRoKToKKyAgICAgICAgKiBw
dWJsaWMvV2ViSURCS2V5UGF0aC5oOiBSZW1vdmUgb2Jzb2xldGUgbWV0aG9kcywgd3JhcCBXZWJD
b3JlOjpJREJLZXlQYXRoCisgICAgICAgIChXZWJJREJLZXlQYXRoKToKKyAgICAgICAgKFdlYktp
dDo6V2ViSURCS2V5UGF0aDo6V2ViSURCS2V5UGF0aCk6CisgICAgICAgICogcHVibGljL1dlYklE
Qk9iamVjdFN0b3JlLmg6IFJlbW92ZSB0ZW1wb3JhcnkgbWV0aG9kIGFuZCBvdmVybG9hZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViSURCT2JqZWN0U3RvcmU6OmtleVBhdGgpOgorICAgICAgICAqIHB1
YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaDogUmVtb3ZlIHRlbXBvcmFyeSBv
dmVybG9hZHMuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIHNyYy9Bc3NlcnRNYXRjaGlu
Z0VudW1zLmNwcDogV2ViSURCS2V5UGF0aCB2cy4gSURCS2V5UGF0aCBlbnVtcy4KKyAgICAgICAg
KiBzcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwOiBTd2l0Y2ggZnJvbSBTdHJpbmcgdG8g
SURCS2V5UGF0aC4KKyAgICAgICAgKFdlYktpdDo6SURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OmNy
ZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBzcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHku
aDogU3dpdGNoIGZyb20gU3RyaW5nIHRvIElEQktleVBhdGguCisgICAgICAgIChJREJEYXRhYmFz
ZUJhY2tlbmRQcm94eSk6CisgICAgICAgICogc3JjL0lEQkluZGV4QmFja2VuZFByb3h5LmNwcDog
U3dpdGNoIGZyb20gU3RyaW5nIHRvIElEQktleVBhdGguCisgICAgICAgIChXZWJLaXQ6OklEQklu
ZGV4QmFja2VuZFByb3h5OjprZXlQYXRoKToKKyAgICAgICAgKiBzcmMvSURCSW5kZXhCYWNrZW5k
UHJveHkuaDogU3dpdGNoIGZyb20gU3RyaW5nIHRvIElEQktleVBhdGguCisgICAgICAgIChJREJJ
bmRleEJhY2tlbmRQcm94eSk6CisgICAgICAgICogc3JjL0lEQk9iamVjdFN0b3JlQmFja2VuZFBy
b3h5LmNwcDogU3dpdGNoIGZyb20gU3RyaW5nIHRvIElEQktleVBhdGguCisgICAgICAgIChXZWJL
aXQ6OklEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjprZXlQYXRoKToKKyAgICAgICAgKFdlYktp
dDo6SURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKiBz
cmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuaDogU3dpdGNoIGZyb20gU3RyaW5nIHRvIElE
QktleVBhdGguCisgICAgICAgIChJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eSk6CisgICAgICAg
ICogc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHA6IFN3aXRjaCBmcm9tIFN0cmluZyB0byBJREJLZXlQ
YXRoLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TdXBwb3J0OjpjcmVhdGVJREJLZXlzRnJv
bVNlcmlhbGl6ZWRWYWx1ZXNBbmRLZXlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
U3VwcG9ydDo6aW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZSk6CisgICAgICAgICogc3Jj
L1dlYklEQkRhdGFiYXNlSW1wbC5jcHA6IFN3aXRjaCBmcm9tIFN0cmluZyB0byBJREJLZXlQYXRo
LgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZUltcGw6OmNyZWF0ZU9iamVjdFN0b3Jl
KToKKyAgICAgICAgKiBzcmMvV2ViSURCRGF0YWJhc2VJbXBsLmg6IFJlbW92ZSB0ZW1wb3Jhcnkg
b3ZlcmxvYWQuCisgICAgICAgIChXZWJJREJEYXRhYmFzZUltcGwpOgorICAgICAgICAqIHNyYy9X
ZWJJREJJbmRleEltcGwuY3BwOiBSZW1vdmUgdGVtcG9yYXJ5IG1ldGhvZC4KKyAgICAgICAgKiBz
cmMvV2ViSURCSW5kZXhJbXBsLmg6IFJlbW92ZSB0ZW1wb3JhcnkgbWV0aG9kLgorICAgICAgICAo
V2ViSURCSW5kZXhJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViSURCS2V5UGF0aC5jcHA6IFJlbW92
ZSBtb3N0IGxvZ2ljOyBqdXN0IGEgd3JhcHBlciBmb3IgV2ViQ29yZTo6SURCS2V5UGF0aC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViSURCS2V5UGF0aDo6fldlYklEQktleVBhdGgpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJREJLZXlQYXRoOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJL
ZXlQYXRoOjpjcmVhdGVOdWxsKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCS2V5UGF0aDo6aXNW
YWxpZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQktleVBhdGg6OnR5cGUpOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCS2V5UGF0aDo6YXJyYXkpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJREJLZXlQYXRoOjpzdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
REJLZXlQYXRoOjpXZWJJREJLZXlQYXRoKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCS2V5UGF0
aDo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCS2V5UGF0aDo6b3BlcmF0b3Ig
Y29uc3QgV2ViQ29yZTo6SURCS2V5UGF0aCYpOgorICAgICAgICAqIHNyYy9XZWJJREJPYmplY3RT
dG9yZUltcGwuY3BwOiBSZW1vdmUgdGVtcG9yYXJ5IG1ldGhvZCBhbmQgb3ZlcmxvYWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlSW1wbDo6a2V5UGF0aCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlSW1wbDo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAqIHNy
Yy9XZWJJREJPYmplY3RTdG9yZUltcGwuaDogUmVtb3ZlIHRlbXBvcmFyeSBtZXRob2QgYW5kIG92
ZXJsb2FkLgorICAgICAgICAoV2ViSURCT2JqZWN0U3RvcmVJbXBsKToKKyAgICAgICAgKiB0ZXN0
cy9JREJCaW5kaW5nVXRpbGl0aWVzVGVzdC5jcHA6IFVzZSBJREJLZXlQYXRoLgorICAgICAgICAo
V2ViQ29yZTo6Y2hlY2tLZXlGcm9tVmFsdWVBbmRLZXlQYXRoSW50ZXJuYWwpOgorICAgICAgICAo
V2ViQ29yZTo6aW5qZWN0S2V5KToKKyAgICAgICAgKiB0ZXN0cy9JREJLZXlQYXRoVGVzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjaGVja0tleVBhdGgpOiBUZXN0IElEQktleVBhdGggdmFsaWRp
dHkuCisKIDIwMTItMDUtMDMgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgW2Nocm9taXVtXSBEb24ndCBhZGQgc21hbGwgb3BhcXVlIGFyZWFzIHRvIHRoZSBv
Y2NsdXNpb24gdHJhY2tlcidzIFJlZ2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCQW55LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkFueS5jcHAKaW5kZXggNTdhNDA2ZTJiYjA3YjBiZDZkMjVkZGJiODFiYzY0ZmU5ZWFh
MDZhZC4uMzAwMjhjY2ZkZmNlOTU5NjA0MGFjMDNlZmE0OWZhYjI0MDcwMmUzMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJBbnkuY3BwCkBAIC00OSw2ICs0OSwxMyBA
QCBQYXNzUmVmUHRyPElEQkFueT4gSURCQW55OjpjcmVhdGVOdWxsKCkKICAgICByZXR1cm4gaWRi
QW55LnJlbGVhc2UoKTsKIH0KIAorUGFzc1JlZlB0cjxJREJBbnk+IElEQkFueTo6Y3JlYXRlU3Ry
aW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgUmVmUHRyPElEQkFueT4gaWRiQW55ID0g
YWRvcHRSZWYobmV3IElEQkFueSgpKTsKKyAgICBpZGJBbnktPnNldCh2YWx1ZSk7CisgICAgcmV0
dXJuIGlkYkFueS5yZWxlYXNlKCk7Cit9CisKIElEQkFueTo6SURCQW55KCkKICAgICA6IG1fdHlw
ZShVbmRlZmluZWRUeXBlKQogewpAQCAtMTE4LDYgKzEyNSwxMiBAQCBQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gSURCQW55OjpzZXJpYWxpemVkU2NyaXB0VmFsdWUoKQogICAgIHJl
dHVybiBtX3NlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIH0KIAorY29uc3QgU3RyaW5nJiBJREJBbnk6
OnN0cmluZygpCit7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBTdHJpbmdUeXBlKTsKKyAgICByZXR1
cm4gbV9zdHJpbmc7Cit9CisKIHZvaWQgSURCQW55OjpzZXROdWxsKCkKIHsKICAgICBBU1NFUlQo
bV90eXBlID09IFVuZGVmaW5lZFR5cGUpOwpAQCAtMTk0LDYgKzIwNywxMyBAQCB2b2lkIElEQkFu
eTo6c2V0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSkKICAgICBtX3Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSA9IHZhbHVlOwogfQogCit2b2lkIElEQkFueTo6c2V0KGNvbnN0
IFN0cmluZyYgdmFsdWUpCit7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBVbmRlZmluZWRUeXBlKTsK
KyAgICBtX3R5cGUgPSBTdHJpbmdUeXBlOworICAgIG1fc3RyaW5nID0gdmFsdWU7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJBbnkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkFueS5oCmluZGV4IDZiZWRhNTg4ODA4NGJjMjIxYTNkMThjNjAzNjQ2NDY0MmRj
YTdlNDYuLjkzZWIyNDAxZGFhYjhjODY2NmU2ODQ2NTAxZDUxYjkxMDY5YWFiZGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5oCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5n
LmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTQ5LDYgKzUwLDcgQEAgY2xhc3MgSURC
QW55IDogcHVibGljIFJlZkNvdW50ZWQ8SURCQW55PiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8SURCQW55PiBjcmVhdGVJbnZhbGlkKCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
SURCQW55PiBjcmVhdGVOdWxsKCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQW55PiBjcmVh
dGVTdHJpbmcoY29uc3QgU3RyaW5nJik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxJREJBbnk+IGNyZWF0ZShUKiBpZGJPYmplY3QpCiAgICAgewpAQCAt
NzcsNyArNzksOCBAQCBwdWJsaWM6CiAgICAgICAgIElEQktleVR5cGUsCiAgICAgICAgIElEQk9i
amVjdFN0b3JlVHlwZSwKICAgICAgICAgSURCVHJhbnNhY3Rpb25UeXBlLAotICAgICAgICBTZXJp
YWxpemVkU2NyaXB0VmFsdWVUeXBlCisgICAgICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZVR5cGUs
CisgICAgICAgIFN0cmluZ1R5cGUsCiAgICAgfTsKIAogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdHlwZTsgfQpAQCAtOTIsNiArOTUsNyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0
cjxJREJPYmplY3RTdG9yZT4gaWRiT2JqZWN0U3RvcmUoKTsKICAgICBQYXNzUmVmUHRyPElEQlRy
YW5zYWN0aW9uPiBpZGJUcmFuc2FjdGlvbigpOwogICAgIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBzZXJpYWxpemVkU2NyaXB0VmFsdWUoKTsKKyAgICBjb25zdCBTdHJpbmcmIHN0
cmluZygpOwogCiAgICAgLy8gU2V0IGNhbiBvbmx5IGJlIGNhbGxlZCBvbmNlLgogICAgIHZvaWQg
c2V0TnVsbCgpOwpAQCAtMTA1LDYgKzEwOSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldChQYXNz
UmVmUHRyPElEQk9iamVjdFN0b3JlPik7CiAgICAgdm9pZCBzZXQoUGFzc1JlZlB0cjxJREJUcmFu
c2FjdGlvbj4pOwogICAgIHZvaWQgc2V0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
Pik7CisgICAgdm9pZCBzZXQoY29uc3QgU3RyaW5nJik7CiAKIHByaXZhdGU6CiAgICAgSURCQW55
KCk7CkBAIC0xMjIsNiArMTI3LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SURCT2JqZWN0U3Rv
cmU+IG1faWRiT2JqZWN0U3RvcmU7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBtX2lkYlRy
YW5zYWN0aW9uOwogICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1fc2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOworICAgIFN0cmluZyBtX3N0cmluZzsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFj
a2luZ1N0b3JlLmgKaW5kZXggZjZiYjEwYWFhYzVjODU5Mzg2OWI4NWRhYzE2N2E5Yjg0ZTA2NzU3
ZC4uNTc3NzVlYjFjZWQ1ZmQ4NDhjZmRkYjJhNDc1ZTJhZWU1MjBmYTlkNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmgKQEAgLTUy
LDggKzUyLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVJREJEYXRhYmFzZU1l
dGFEYXRhKGludDY0X3Qgcm93SWQsIGNvbnN0IFN0cmluZyYgdmVyc2lvbikgPSAwOwogICAgIHZp
cnR1YWwgYm9vbCBkZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKIAotICAg
IHZpcnR1YWwgdm9pZCBnZXRPYmplY3RTdG9yZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBWZWN0b3I8
aW50NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcywgVmVjdG9yPFN0
cmluZz4mIGZvdW5kS2V5UGF0aHMsIFZlY3Rvcjxib29sPiYgZm91bmRBdXRvSW5jcmVtZW50Rmxh
Z3MpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlT2JqZWN0U3RvcmUoaW50NjRfdCBkYXRh
YmFzZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBh
dXRvSW5jcmVtZW50LCBpbnQ2NF90JiBhc3NpZ25lZE9iamVjdFN0b3JlSWQpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZ2V0T2JqZWN0U3RvcmVzKGludDY0X3QgZGF0YWJhc2VJZCwgVmVjdG9yPGlu
dDY0X3Q+JiBmb3VuZElkcywgVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMsIFZlY3RvcjxJREJL
ZXlQYXRoPiYgZm91bmRLZXlQYXRocywgVmVjdG9yPGJvb2w+JiBmb3VuZEF1dG9JbmNyZW1lbnRG
bGFncykgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVPYmplY3RTdG9yZShpbnQ2NF90IGRh
dGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgYXV0
b0luY3JlbWVudCwgaW50NjRfdCYgYXNzaWduZWRPYmplY3RTdG9yZUlkKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkKSA9IDA7CiAKICAgICBjbGFzcyBPYmplY3RTdG9yZVJlY29yZElkZW50aWZp
ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxPYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXI+IHsKQEAg
LTc3LDggKzc3LDggQEAgcHVibGljOgogICAgIH07CiAgICAgdmlydHVhbCBib29sIGZvckVhY2hP
YmplY3RTdG9yZVJlY29yZChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgT2JqZWN0U3RvcmVSZWNvcmRDYWxsYmFjayYpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBn
ZXRJbmRleGVzKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBWZWN0
b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcywgVmVjdG9y
PFN0cmluZz4mIGZvdW5kS2V5UGF0aHMsIFZlY3Rvcjxib29sPiYgZm91bmRVbmlxdWVGbGFncywg
VmVjdG9yPGJvb2w+JiBmb3VuZE11bHRpRW50cnlGbGFncykgPSAwOwotICAgIHZpcnR1YWwgYm9v
bCBjcmVhdGVJbmRleChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgaXNVbmlxdWUs
IGJvb2wgaXNNdWx0aUVudHJ5LCBpbnQ2NF90JiBpbmRleElkKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGdldEluZGV4ZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQs
IFZlY3RvcjxpbnQ2NF90PiYgZm91bmRJZHMsIFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzLCBW
ZWN0b3I8SURCS2V5UGF0aD4mIGZvdW5kS2V5UGF0aHMsIFZlY3Rvcjxib29sPiYgZm91bmRVbmlx
dWVGbGFncywgVmVjdG9yPGJvb2w+JiBmb3VuZE11bHRpRW50cnlGbGFncykgPSAwOworICAgIHZp
cnR1YWwgYm9vbCBjcmVhdGVJbmRleChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCBpc1Vu
aXF1ZSwgYm9vbCBpc011bHRpRW50cnksIGludDY0X3QmIGluZGV4SWQpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZGVsZXRlSW5kZXgoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIGludDY0X3QgaW5kZXhJZCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBwdXRJbmRleERh
dGFGb3JSZWNvcmQoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGlu
dDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiwgY29uc3QgT2JqZWN0U3RvcmVSZWNvcmRJZGVu
dGlmaWVyKikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBkZWxldGVJbmRleERhdGFGb3JSZWNvcmQo
aW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJ
ZCwgY29uc3QgT2JqZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyKikgPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCmluZGV4IGNhNjU5MDdm
YjM5MTI0N2VhNjExNDVhMzIyZjA4OWFjNGQ4YmY5NTMuLjlkOWJjYTkwZjM0NWE5YTc5YWM2NWUy
OTA4YWMwYjg1MjdiMDdlODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZS5jcHAKQEAgLTkyLDkgKzkyLDE0IEBAIFBhc3NSZWZQdHI8SURCT2Jq
ZWN0U3RvcmU+IElEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5h
bWUsIGNvCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIFN0cmluZyBrZXlQYXRoOwot
ICAgIGJvb2wga2V5UGF0aEV4aXN0cyA9IG9wdGlvbnMuZ2V0V2l0aFVuZGVmaW5lZE9yTnVsbENo
ZWNrKCJrZXlQYXRoIiwga2V5UGF0aCk7Ci0gICAgaWYgKGtleVBhdGhFeGlzdHMgJiYgIUlEQklz
VmFsaWRLZXlQYXRoKGtleVBhdGgpKSB7CisgICAgSURCS2V5UGF0aCBrZXlQYXRoOworICAgIGlm
ICghb3B0aW9ucy5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIFN0cmluZyBrZXlQYXRo
U3RyaW5nOworICAgICAgICBpZiAob3B0aW9ucy5nZXRXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2so
ImtleVBhdGgiLCBrZXlQYXRoU3RyaW5nKSkKKyAgICAgICAgICAgIGtleVBhdGggPSBJREJLZXlQ
YXRoKGtleVBhdGhTdHJpbmcpOworICAgIH0KKworICAgIGlmICgha2V5UGF0aC5pc051bGwoKSAm
JiAha2V5UGF0aC5pc1ZhbGlkKCkpIHsKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6Tk9OX1RSQU5TSUVOVF9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZElt
cGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbC5jcHAKaW5kZXggYjA1YjMyODYzZDA3MmZiNjU3ZGNhOWM4ZDY0ZTBiODUxYWQwOTI0
NS4uNTkxOTlmYzYzMmFiZjE1YWY2ZjgyNzcxNWRjYTExNzk0NDM1YjcxYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbC5jcHAKQEAgLTEzNyw3ICsxMzcsNyBAQCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+
IElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9iamVjdFN0b3JlTmFtZXMoKSBjb25zdAogICAgIHJl
dHVybiBvYmplY3RTdG9yZU5hbWVzLnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZU9i
amVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29s
IGF1dG9JbmNyZW1lbnQsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rp
b25QdHIsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tl
bmRJbnRlcmZhY2U+IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZU9iamVjdFN0b3JlKGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCBhdXRvSW5j
cmVtZW50LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBF
eGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBBU1NFUlQodHJhbnNhY3Rpb25QdHItPm1vZGUoKSA9
PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpOwogCkBAIC0zNzYsNyArMzc2LDcgQEAg
dm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpsb2FkT2JqZWN0U3RvcmVzKCkKIHsKICAgICBW
ZWN0b3I8aW50NjRfdD4gaWRzOwogICAgIFZlY3RvcjxTdHJpbmc+IG5hbWVzOwotICAgIFZlY3Rv
cjxTdHJpbmc+IGtleVBhdGhzOworICAgIFZlY3RvcjxJREJLZXlQYXRoPiBrZXlQYXRoczsKICAg
ICBWZWN0b3I8Ym9vbD4gYXV0b0luY3JlbWVudEZsYWdzOwogICAgIG1fYmFja2luZ1N0b3JlLT5n
ZXRPYmplY3RTdG9yZXMobV9pZCwgaWRzLCBuYW1lcywga2V5UGF0aHMsIGF1dG9JbmNyZW1lbnRG
bGFncyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlQmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaAppbmRleCAxMDg2ZWIxNmViODdkMTlmMDI4ZTNmNGM4
YzQ3YjkwNWQ4Njc4ZjA1Li4zMzE4ZTJiZjE4NDJmZWY2YzFiMzdkODBmMjYwYmIyMGU1NTFiMzZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZUJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VCYWNrZW5kSW1wbC5oCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIFN0cmluZyB2ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV92ZXJzaW9uOyB9CiAgICAgdmly
dHVhbCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMoKSBjb25zdDsK
IAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+
IGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQ
YXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSos
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVC
YWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQsIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2Jq
ZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2UqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIHNldFZlcnNpb24oY29uc3Qg
U3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURC
RGF0YWJhc2VDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24oRE9NU3RyaW5n
TGlzdCogb2JqZWN0U3RvcmVOYW1lcywgdW5zaWduZWQgc2hvcnQgbW9kZSwgRXhjZXB0aW9uQ29k
ZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaAppbmRleCA1NmU4ZjJkYmI2NDJhYWViMTE2
Njg5YzU5OTc0ODExNDM0NTRiNjI5Li5lMDcyYTBmMzk1OWQ3MGQ1MWE1MGMyNmIxZWIyMTUyMGM1
OTZlYjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaApAQCAtMzgsNiArMzgsNyBAQCBj
bGFzcyBET01TdHJpbmdMaXN0OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBJREJDYWxsYmFja3M7CiBj
bGFzcyBJREJEYXRhYmFzZUNhbGxiYWNrczsKK2NsYXNzIElEQktleVBhdGg7CiBjbGFzcyBJREJP
YmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U7CiBjbGFzcyBJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2U7CiAKQEAgLTU1LDcgKzU2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5n
IHZlcnNpb24oKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERPTVN0cmluZ0xp
c3Q+IG9iamVjdFN0b3JlTmFtZXMoKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVPYmplY3RTdG9yZShjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50
LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikgPSAwOwor
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IGNy
ZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJv
b2wgYXV0b0luY3JlbWVudCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0
aW9uQ29kZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoY29uc3Qg
U3RyaW5nJiBuYW1lLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25D
b2RlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVy
c2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2Fs
bGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbihET01TdHJpbmdMaXN0KiBz
dG9yZU5hbWVzLCB1bnNpZ25lZCBzaG9ydCBtb2RlLCBFeGNlcHRpb25Db2RlJikgPSAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmgKaW5kZXggZWJiYmY5NmFh
YTUwNTY3YmM0NjBkZDZkZGU4MzljNjJiN2E4Y2NiZS4uYzk5NDA0YWRiOWJiODYyNGExNjZhMDJk
MmQ1NzA2MWIzNzk2MjdkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCSW5kZXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJJbmRleC5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJJREJDdXJzb3IuaCIKICNp
bmNsdWRlICJJREJJbmRleEJhY2tlbmRJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJJREJLZXlQYXRo
LmgiCiAjaW5jbHVkZSAiSURCS2V5UmFuZ2UuaCIKICNpbmNsdWRlICJJREJSZXF1ZXN0LmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKQEAgLTUwLDcgKzUxLDcgQEAgcHVibGljOgogICAg
IC8vIEltcGxlbWVudCB0aGUgSURMCiAgICAgU3RyaW5nIG5hbWUoKSBjb25zdCB7IHJldHVybiBt
X2JhY2tlbmQtPm5hbWUoKTsgfQogICAgIElEQk9iamVjdFN0b3JlKiBvYmplY3RTdG9yZSgpIGNv
bnN0IHsgcmV0dXJuIG1fb2JqZWN0U3RvcmUuZ2V0KCk7IH0KLSAgICBTdHJpbmcga2V5UGF0aCgp
IGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZC0+a2V5UGF0aCgpOyB9CisgICAgUGFzc1JlZlB0cjxJ
REJBbnk+IGtleVBhdGgoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmQtPmtleVBhdGgoKTsgfQog
ICAgIGJvb2wgdW5pcXVlKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kLT51bmlxdWUoKTsgfQog
ICAgIGJvb2wgbXVsdGlFbnRyeSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZC0+bXVsdGlFbnRy
eSgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkluZGV4LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4Lmlk
bAppbmRleCBiMjNlNTVhY2Q2MzJjZjI2ZTNhN2E2NTg1MjRkZjNiYjMxZTJkN2IxLi41MjY5ZmRj
ZDNlODE5NmJiNjg1NmE3ZTQ5YWVlZTQ2NjBlNjQ2YzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaWRsCkBAIC0zMCw3ICszMCw3IEBAIG1vZHVsZSBz
dG9yYWdlIHsKICAgICBdIElEQkluZGV4IHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERP
TVN0cmluZyBuYW1lOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgSURCT2JqZWN0U3RvcmUg
b2JqZWN0U3RvcmU7Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcga2V5UGF0
aDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIElEQkFueSBrZXlQYXRoOwogICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiB1bmlxdWU7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBib29sZWFuIG11bHRpRW50cnk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAKaW5kZXggNjNkNDg0MTQ3
ODQwZjY4OTUzYmEzNDUwN2QwZWZjYTc5MWU4ZmQ2Ny4uOGM1MTFlZjM1NGM1NmZkNGE5MjRmYmU5
MmIxN2NlYTNiYjIxZTIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAKQEAgLTQxLDcgKzQxLDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1JREJJbmRleEJhY2tlbmRJbXBsOjpJREJJbmRleEJhY2tl
bmRJbXBsKElEQkJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQs
IGNvbnN0IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwqIG9iamVjdFN0b3JlQmFja2VuZCwgaW50
NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHN0b3JlTmFtZSwgY29u
c3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5KQorSURCSW5k
ZXhCYWNrZW5kSW1wbDo6SURCSW5kZXhCYWNrZW5kSW1wbChJREJCYWNraW5nU3RvcmUqIGJhY2tp
bmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsKiBvYmplY3RTdG9yZUJhY2tlbmQsIGludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiBzdG9yZU5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wg
dW5pcXVlLCBib29sIG11bHRpRW50cnkpCiAgICAgOiBtX2JhY2tpbmdTdG9yZShiYWNraW5nU3Rv
cmUpCiAgICAgLCBtX2RhdGFiYXNlSWQoZGF0YWJhc2VJZCkKICAgICAsIG1fb2JqZWN0U3RvcmVC
YWNrZW5kKG9iamVjdFN0b3JlQmFja2VuZCkKQEAgLTU0LDcgKzU0LDcgQEAgSURCSW5kZXhCYWNr
ZW5kSW1wbDo6SURCSW5kZXhCYWNrZW5kSW1wbChJREJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9y
ZSwgaW50NjRfdAogewogfQogCi1JREJJbmRleEJhY2tlbmRJbXBsOjpJREJJbmRleEJhY2tlbmRJ
bXBsKElEQkJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNv
bnN0IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwqIG9iamVjdFN0b3JlQmFja2VuZCwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHN0b3JlTmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQ
YXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5KQorSURCSW5kZXhCYWNrZW5kSW1wbDo6
SURCSW5kZXhCYWNrZW5kSW1wbChJREJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSwgaW50NjRf
dCBkYXRhYmFzZUlkLCBjb25zdCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKiBvYmplY3RTdG9y
ZUJhY2tlbmQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBzdG9yZU5hbWUsIGNv
bnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnkpCiAg
ICAgOiBtX2JhY2tpbmdTdG9yZShiYWNraW5nU3RvcmUpCiAgICAgLCBtX2RhdGFiYXNlSWQoZGF0
YWJhc2VJZCkKICAgICAsIG1fb2JqZWN0U3RvcmVCYWNrZW5kKG9iamVjdFN0b3JlQmFja2VuZCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFj
a2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFj
a2VuZEltcGwuaAppbmRleCBlNjQ4NWI2NjRjM2E0ZTMwMzc0NGEzMWJhNjQ1OWMyNWE1M2VjZTlh
Li43NWRhNmVkNzQyZjg0MzY1YTM1YjBiOGMwOTY0MGRjODg4MmRiNzljIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5o
CkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNl
LmgiCiAjaW5jbHVkZSAiSURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiSURC
S2V5UGF0aC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQwLDExICs0MSwxMSBAQCBj
bGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCiBjbGFzcyBJREJJbmRleEJhY2tlbmRJbXBs
IDogcHVibGljIElEQkluZGV4QmFja2VuZEludGVyZmFjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gY3JlYXRlKElEQkJhY2tpbmdTdG9yZSog
YmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IElEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGwqIG9iamVjdFN0b3JlQmFja2VuZCwgaW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIHN0b3JlTmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29s
IHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5KQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkluZGV4
QmFja2VuZEltcGw+IGNyZWF0ZShJREJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSwgaW50NjRf
dCBkYXRhYmFzZUlkLCBjb25zdCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKiBvYmplY3RTdG9y
ZUJhY2tlbmQsIGludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBz
dG9yZU5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11
bHRpRW50cnkpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQkluZGV4QmFj
a2VuZEltcGwoYmFja2luZ1N0b3JlLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUJhY2tlbmQsIGlk
LCBuYW1lLCBzdG9yZU5hbWUsIGtleVBhdGgsIHVuaXF1ZSwgbXVsdGlFbnRyeSkpOwogICAgIH0K
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiBjcmVhdGUoSURCQmFj
a2luZ1N0b3JlKiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbCogb2JqZWN0U3RvcmVCYWNrZW5kLCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgc3RvcmVOYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wg
dW5pcXVlLCBib29sIG11bHRpRW50cnkpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCSW5kZXhC
YWNrZW5kSW1wbD4gY3JlYXRlKElEQkJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90
IGRhdGFiYXNlSWQsIGNvbnN0IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwqIG9iamVjdFN0b3Jl
QmFja2VuZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHN0b3JlTmFtZSwgY29u
c3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSkKICAg
ICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCSW5kZXhCYWNrZW5kSW1wbChiYWNr
aW5nU3RvcmUsIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlQmFja2VuZCwgbmFtZSwgc3RvcmVOYW1l
LCBrZXlQYXRoLCB1bmlxdWUsIG11bHRpRW50cnkpKTsKICAgICB9CkBAIC02Myw3ICs2NCw3IEBA
IHB1YmxpYzoKICAgICAvLyBJbXBsZW1lbnRzIElEQkluZGV4QmFja2VuZEludGVyZmFjZS4KICAg
ICB2aXJ0dWFsIFN0cmluZyBuYW1lKCkgeyByZXR1cm4gbV9uYW1lOyB9CiAgICAgdmlydHVhbCBT
dHJpbmcgc3RvcmVOYW1lKCkgeyByZXR1cm4gbV9zdG9yZU5hbWU7IH0KLSAgICB2aXJ0dWFsIFN0
cmluZyBrZXlQYXRoKCkgeyByZXR1cm4gbV9rZXlQYXRoOyB9CisgICAgdmlydHVhbCBJREJLZXlQ
YXRoIGtleVBhdGgoKSB7IHJldHVybiBtX2tleVBhdGg7IH0KICAgICB2aXJ0dWFsIGJvb2wgdW5p
cXVlKCkgeyByZXR1cm4gbV91bmlxdWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgbXVsdGlFbnRyeSgp
IHsgcmV0dXJuIG1fbXVsdGlFbnRyeTsgfQogCkBAIC03Niw4ICs3Nyw4IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgZ2V0S2V5KFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2Rl
Jik7CiAKIHByaXZhdGU6Ci0gICAgSURCSW5kZXhCYWNrZW5kSW1wbChJREJCYWNraW5nU3RvcmUq
LCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwqLCBp
bnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgc3RvcmVOYW1lLCBj
b25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnkpOwotICAg
IElEQkluZGV4QmFja2VuZEltcGwoSURCQmFja2luZ1N0b3JlKiwgaW50NjRfdCBkYXRhYmFzZUlk
LCBjb25zdCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKiwgY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBTdHJpbmcmIHN0b3JlTmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1
ZSwgYm9vbCBtdWx0aUVudHJ5KTsKKyAgICBJREJJbmRleEJhY2tlbmRJbXBsKElEQkJhY2tpbmdT
dG9yZSosIGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bCosIGludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBzdG9yZU5h
bWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5KTsKKyAg
ICBJREJJbmRleEJhY2tlbmRJbXBsKElEQkJhY2tpbmdTdG9yZSosIGludDY0X3QgZGF0YWJhc2VJ
ZCwgY29uc3QgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCosIGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiBzdG9yZU5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIHVuaXF1ZSwg
Ym9vbCBtdWx0aUVudHJ5KTsKIAogICAgIHN0YXRpYyB2b2lkIG9wZW5DdXJzb3JJbnRlcm5hbChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiwg
UGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgSURCQ3Vy
c29yQmFja2VuZEludGVyZmFjZTo6Q3Vyc29yVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4pOwogICAgIHN0YXRp
YyB2b2lkIGNvdW50SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8
SURCSW5kZXhCYWNrZW5kSW1wbD4sIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
Pik7CkBAIC05NSw3ICs5Niw3IEBAIHByaXZhdGU6CiAgICAgaW50NjRfdCBtX2lkOwogICAgIFN0
cmluZyBtX25hbWU7CiAgICAgU3RyaW5nIG1fc3RvcmVOYW1lOwotICAgIFN0cmluZyBtX2tleVBh
dGg7CisgICAgSURCS2V5UGF0aCBtX2tleVBhdGg7CiAgICAgYm9vbCBtX3VuaXF1ZTsKICAgICBi
b29sIG1fbXVsdGlFbnRyeTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEludGVyZmFjZS5oCmluZGV4IDgxMjcwYWU0
YTk4YTlkNmIwYjU2OGFjMGQ5MDY2ZDhhNDY0NmFiNzMuLjBhNWJiYjU2ODg5OTY5ODNhNmE3OGI4
ZjViYjllODdlYTZlMDI5NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkluZGV4QmFja2VuZEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEludGVyZmFjZS5oCkBAIC0zNiw2ICszNiw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURCQ2FsbGJhY2tzOwogY2xhc3MgSURC
S2V5OworY2xhc3MgSURCS2V5UGF0aDsKIGNsYXNzIElEQktleVJhbmdlOwogY2xhc3MgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlOwogCkBAIC00Nyw3ICs0OCw3IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgU3RyaW5nIG5hbWUoKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgc3RvcmVO
YW1lKCkgPSAwOwotICAgIHZpcnR1YWwgU3RyaW5nIGtleVBhdGgoKSA9IDA7CisgICAgdmlydHVh
bCBJREJLZXlQYXRoIGtleVBhdGgoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHVuaXF1ZSgpID0g
MDsKICAgICB2aXJ0dWFsIGJvb2wgbXVsdGlFbnRyeSgpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UGF0aC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRoLmNwcAppbmRleCBjZDVlOTY2MzQwMDJh
Y2Q0MzliNGFkNWNiYmJmNDgyNjU5ZDRhMWJhLi40N2E3MGFlODEyOWI0NzljM2YwMjg3MGUyYTlm
ZTUxNTQxZTBjZTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJLZXlQYXRoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJLZXlQYXRoLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKElOREVYRURfREFU
QUJBU0UpCiAKKyNpbmNsdWRlICJET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSA8d3RmL0FTQ0lJ
Q1R5cGUuaD4KICNpbmNsdWRlIDx3dGYvZHRvYS5oPgogCkBAIC0xNzksNiArMTgwLDYxIEBAIHZv
aWQgSURCUGFyc2VLZXlQYXRoKGNvbnN0IFN0cmluZyYga2V5UGF0aCwgVmVjdG9yPFN0cmluZz4m
IGVsZW1lbnRzLCBJREJLZXlQYXRoCiAgICAgfQogfQogCitJREJLZXlQYXRoOjpJREJLZXlQYXRo
KGNvbnN0IFN0cmluZyYgc3RyaW5nKQorICAgIDogbV90eXBlKFN0cmluZ1R5cGUpCisgICAgLCBt
X3N0cmluZyhzdHJpbmcpCit7CisgICAgQVNTRVJUKCFtX3N0cmluZy5pc051bGwoKSk7Cit9CisK
K0lEQktleVBhdGg6OklEQktleVBhdGgoY29uc3QgVmVjdG9yPFN0cmluZz4mIGFycmF5KQorICAg
IDogbV90eXBlKEFycmF5VHlwZSkKKyAgICAsIG1fYXJyYXkoYXJyYXkpCit7CisjaWZuZGVmIE5E
RUJVRworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9hcnJheS5zaXplKCk7ICsraSkKKyAg
ICAgICAgQVNTRVJUKCFtX2FycmF5W2ldLmlzTnVsbCgpKTsKKyNlbmRpZgorfQorCitib29sIElE
QktleVBhdGg6OmlzVmFsaWQoKSBjb25zdAoreworICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAg
Y2FzZSBOdWxsVHlwZToKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY2FzZSBTdHJpbmdU
eXBlOgorICAgICAgICByZXR1cm4gSURCSXNWYWxpZEtleVBhdGgobV9zdHJpbmcpOworCisgICAg
Y2FzZSBBcnJheVR5cGU6CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9hcnJheS5z
aXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKCFJREJJc1ZhbGlkS2V5UGF0aChtX2FycmF5
W2ldKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biBmYWxzZTsKK30KKworSURCS2V5UGF0aDo6b3BlcmF0b3IgUGFzc1JlZlB0cjxJREJBbnk+KCkg
Y29uc3QKK3sKKyAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAgIGNhc2UgTnVsbFR5cGU6CisgICAg
ICAgIHJldHVybiBJREJBbnk6OmNyZWF0ZU51bGwoKTsKKyAgICBjYXNlIFN0cmluZ1R5cGU6Cisg
ICAgICAgIHJldHVybiBJREJBbnk6OmNyZWF0ZVN0cmluZyhtX3N0cmluZyk7CisgICAgY2FzZSBB
cnJheVR5cGU6CisgICAgICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBrZXlQYXRocyA9IERPTVN0
cmluZ0xpc3Q6OmNyZWF0ZSgpOworICAgICAgICBmb3IgKFZlY3RvcjxTdHJpbmc+Ojpjb25zdF9p
dGVyYXRvciBpdCA9IG1fYXJyYXkuYmVnaW4oKTsgaXQgIT0gbV9hcnJheS5lbmQoKTsgKytpdCkK
KyAgICAgICAga2V5UGF0aHMtPmFwcGVuZCgqaXQpOworICAgICAgICByZXR1cm4gSURCQW55Ojpj
cmVhdGUoc3RhdGljX2Nhc3Q8UGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiA+KGtleVBhdGhzKSk7
CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOworfQorCisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFC
QVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5
UGF0aC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UGF0aC5oCmlu
ZGV4IGM1MmE2M2JhOGNkOWUxZGFiYWUzODRjOTA1MTcwMjJhOGI0NGQzMWMuLmY1MjM2YzE1MmYw
MmNiZGEyOGRiOGMzMTUxZjJkZDg1N2VhYWVjZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRoLmgKQEAgLTI4LDEwICsyOCw5IEBACiAKICNpZiBFTkFC
TEUoSU5ERVhFRF9EQVRBQkFTRSkKIAotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlICJJREJBbnkuaCIKKyNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Miw5ICs0MSw0
NCBAQCBlbnVtIElEQktleVBhdGhQYXJzZUVycm9yIHsKICAgICBJREJLZXlQYXRoUGFyc2VFcnJv
ckRvdCwKIH07CiAKLWJvb2wgSURCSXNWYWxpZEtleVBhdGgoY29uc3QgU3RyaW5nJik7CiB2b2lk
IElEQlBhcnNlS2V5UGF0aChjb25zdCBTdHJpbmcmLCBWZWN0b3I8U3RyaW5nPiYsIElEQktleVBh
dGhQYXJzZUVycm9yJik7CiAKK2NsYXNzIElEQktleVBhdGggeworcHVibGljOgorICAgIElEQktl
eVBhdGgoKSA6IG1fdHlwZShOdWxsVHlwZSkgeyB9CisgICAgSURCS2V5UGF0aChjb25zdCBTdHJp
bmcmKTsKKyAgICBJREJLZXlQYXRoKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhcnJheSk7CisKKyAg
ICBlbnVtIFR5cGUgeworICAgICAgICBOdWxsVHlwZSA9IDAsCisgICAgICAgIFN0cmluZ1R5cGUs
CisgICAgICAgIEFycmF5VHlwZQorICAgIH07CisKKyAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX3R5cGU7IH0KKworICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhcnJheSgpIGNvbnN0
CisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IEFycmF5VHlwZSk7CisgICAgICAgIHJl
dHVybiBtX2FycmF5OworICAgIH0KKworICAgIGNvbnN0IFN0cmluZyYgc3RyaW5nKCkgY29uc3QK
KyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gU3RyaW5nVHlwZSk7CisgICAgICAgIHJl
dHVybiBtX3N0cmluZzsKKyAgICB9CisKKyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJu
IG1fdHlwZSA9PSBOdWxsVHlwZTsgfQorICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0OworICAgIG9w
ZXJhdG9yIFBhc3NSZWZQdHI8SURCQW55PigpIGNvbnN0OworCitwcml2YXRlOgorICAgIFR5cGUg
bV90eXBlOworICAgIFN0cmluZyBtX3N0cmluZzsKKyAgICBWZWN0b3I8U3RyaW5nPiBtX2FycmF5
OworfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGhCYWNrZW5kSW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRoQmFja2VuZEltcGwu
Y3BwCmluZGV4IDk0YzdmMjc5MzVjZmEzOWFkMzg4MDAxMmJlNjA5YjZiMTI5NWJmYmEuLjY0YTFm
YmM1YmVkNzBhYzkwODVmNTM2M2I4YTZlZDkzYzJhMjgwMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGhCYWNrZW5kSW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UGF0aEJhY2tlbmRJbXBsLmNw
cApAQCAtMzgsMTIgKzM4LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBJREJL
ZXlQYXRoQmFja2VuZEltcGw6OmNyZWF0ZUlEQktleXNGcm9tU2VyaWFsaXplZFZhbHVlc0FuZEtl
eVBhdGgoY29uc3QgVmVjdG9yPFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCAwPiYsIGNv
bnN0IFN0cmluZyYsIFZlY3RvcjxSZWZQdHI8SURCS2V5PiwgMD4mKQordm9pZCBJREJLZXlQYXRo
QmFja2VuZEltcGw6OmNyZWF0ZUlEQktleXNGcm9tU2VyaWFsaXplZFZhbHVlc0FuZEtleVBhdGgo
Y29uc3QgVmVjdG9yPFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCAwPiYsIGNvbnN0IElE
QktleVBhdGgmLCBWZWN0b3I8UmVmUHRyPElEQktleT4sIDA+JikKIHsKICAgICAvLyBGSVhNRTog
SW1wbGVtZW50IHRoaXMgbWV0aG9kIG9uY2UgSlNDIHN1cHBvcnRzIFdpcmVGb3JtYXQgZm9yIFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS4KIH0KIAotUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IElEQktleVBhdGhCYWNrZW5kSW1wbDo6aW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1
ZShQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwg
Y29uc3QgU3RyaW5nJikKK1Bhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBJREJLZXlQ
YXRoQmFja2VuZEltcGw6OmluamVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUoUGFzc1JlZlB0
cjxJREJLZXk+LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIGNvbnN0IElEQktl
eVBhdGgmKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBtZXRob2Qgb25jZSBKU0Mg
c3VwcG9ydHMgV2lyZUZvcm1hdCBmb3IgU2VyaWFsaXplZFNjcmlwdFZhbHVlLgogICAgIHJldHVy
biBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4oKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGhCYWNrZW5kSW1wbC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UGF0aEJhY2tlbmRJbXBsLmgKaW5k
ZXggMWM3NjIzMjIxN2ZmNTBlNGYwZDk3OThmNTdjZjQyNGNkZDNjMTFmZC4uMGYwNTdlYjJiYzcz
MjUxZjdhZDVmMWYwNTA5OTAxZWRjZTUxODkxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UGF0aEJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UGF0aEJhY2tlbmRJbXBsLmgKQEAgLTMzLDEy
ICszMywxMyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJREJLZXk7CitjbGFzcyBJ
REJLZXlQYXRoOwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwogCiBjbGFzcyBJREJLZXlQ
YXRoQmFja2VuZEltcGwgewogcHVibGljOgotICAgIHN0YXRpYyB2b2lkIGNyZWF0ZUlEQktleXNG
cm9tU2VyaWFsaXplZFZhbHVlc0FuZEtleVBhdGgoY29uc3QgVmVjdG9yPFJlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+LCAwPiYgdmFsdWVzLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIFZlY3Rv
cjxSZWZQdHI8SURCS2V5PiwgMD4mIGtleXMpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gaW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShQYXNzUmVm
UHRyPElEQktleT4sIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgY29uc3QgU3Ry
aW5nJiBrZXlQYXRoKTsKKyAgICBzdGF0aWMgdm9pZCBjcmVhdGVJREJLZXlzRnJvbVNlcmlhbGl6
ZWRWYWx1ZXNBbmRLZXlQYXRoKGNvbnN0IFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiwgMD4mIHZhbHVlcywgY29uc3QgSURCS2V5UGF0aCYsIFZlY3RvcjxSZWZQdHI8SURCS2V5
PiwgMD4mIGtleXMpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gaW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShQYXNzUmVmUHRyPElEQktleT4sIFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgY29uc3QgSURCS2V5UGF0aCYpOwogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2
ZWxEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJMZXZlbERCQmFja2luZ1N0b3JlLmNwcAppbmRleCBkMzc2OWVhYzEwNzkwODkyYWRlZWY3MTkx
ODdjNjRkYzM5NDBjMWYwLi5kOGU5YmU1ZDI2YzRjOTUwNzg3NDU2NTE1ZWQwMzk0ZWUxMDFiZGFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERC
QmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJMZXZlbERCQmFja2luZ1N0b3JlLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgPHd0
Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIklEQkZh
Y3RvcnlCYWNrZW5kSW1wbC5oIgorI2luY2x1ZGUgIklEQktleVBhdGguaCIKICNpbmNsdWRlICJJ
REJLZXlSYW5nZS5oIgogI2luY2x1ZGUgIklEQkxldmVsREJDb2RpbmcuaCIKICNpbmNsdWRlICJM
ZXZlbERCQ29tcGFyYXRvci5oIgpAQCAtODEsNiArODIsMTQgQEAgc3RhdGljIGJvb2wgcHV0U3Ry
aW5nKERCT3JUcmFuc2FjdGlvbiogZGIsIGNvbnN0IFZlY3RvcjxjaGFyPiBrZXksIGNvbnN0IFN0
cmluZyYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordGVtcGxhdGUgPHR5cGVuYW1lIERCT3JUcmFu
c2FjdGlvbj4KK3N0YXRpYyBib29sIHB1dElEQktleVBhdGgoREJPclRyYW5zYWN0aW9uKiBkYiwg
Y29uc3QgVmVjdG9yPGNoYXI+IGtleSwgY29uc3QgSURCS2V5UGF0aCYgdmFsdWUpCit7CisgICAg
aWYgKCFkYi0+cHV0KGtleSwgZW5jb2RlSURCS2V5UGF0aCh2YWx1ZSkpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHN0YXRpYyBpbnQgY29tcGFyZUtleXMo
Y29uc3QgTGV2ZWxEQlNsaWNlJiBhLCBjb25zdCBMZXZlbERCU2xpY2UmIGIpCiB7CiAgICAgcmV0
dXJuIGNvbXBhcmUoYSwgYik7CkBAIC0zMTEsNyArMzIwLDcgQEAgc3RhdGljIGJvb2wgY2hlY2tP
YmplY3RTdG9yZUFuZE1ldGFEYXRhVHlwZShjb25zdCBMZXZlbERCSXRlcmF0b3IqIGl0LCBjb25z
dCBWZWMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBJREJMZXZlbERCQmFja2luZ1N0b3Jl
OjpnZXRPYmplY3RTdG9yZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZv
dW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcywgVmVjdG9yPFN0cmluZz4mIGZvdW5k
S2V5UGF0aHMsIFZlY3Rvcjxib29sPiYgZm91bmRBdXRvSW5jcmVtZW50RmxhZ3MpCit2b2lkIElE
QkxldmVsREJCYWNraW5nU3RvcmU6OmdldE9iamVjdFN0b3JlcyhpbnQ2NF90IGRhdGFiYXNlSWQs
IFZlY3RvcjxpbnQ2NF90PiYgZm91bmRJZHMsIFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzLCBW
ZWN0b3I8SURCS2V5UGF0aD4mIGZvdW5kS2V5UGF0aHMsIFZlY3Rvcjxib29sPiYgZm91bmRBdXRv
SW5jcmVtZW50RmxhZ3MpCiB7CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+IHN0YXJ0S2V5ID0gT2Jq
ZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIDEsIDApOwogICAgIGNvbnN0
IFZlY3RvcjxjaGFyPiBzdG9wS2V5ID0gT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlTWF4
S2V5KGRhdGFiYXNlSWQpOwpAQCAtMzQzLDcgKzM1Miw3IEBAIHZvaWQgSURCTGV2ZWxEQkJhY2tp
bmdTdG9yZTo6Z2V0T2JqZWN0U3RvcmVzKGludDY0X3QgZGF0YWJhc2VJZCwgVmVjdG9yPGludDY0
X3Q+CiAgICAgICAgICAgICBMT0dfRVJST1IoIkludGVybmFsIEluZGV4ZWQgREIgZXJyb3IuIik7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgU3RyaW5nIGtleVBhdGgg
PSBkZWNvZGVTdHJpbmcoaXQtPnZhbHVlKCkuYmVnaW4oKSwgaXQtPnZhbHVlKCkuZW5kKCkpOwor
ICAgICAgICBJREJLZXlQYXRoIGtleVBhdGggPSBkZWNvZGVJREJLZXlQYXRoKGl0LT52YWx1ZSgp
LmJlZ2luKCksIGl0LT52YWx1ZSgpLmVuZCgpKTsKICAgICAgICAgYm9vbCBoYXNLZXlQYXRoID0g
dHJ1ZTsKIAogICAgICAgICBpdC0+bmV4dCgpOwpAQCAtMzc2LDE2ICszODUsMjIgQEAgdm9pZCBJ
REJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRPYmplY3RTdG9yZXMoaW50NjRfdCBkYXRhYmFzZUlk
LCBWZWN0b3I8aW50NjRfdD4KICAgICAgICAgaWYgKGNoZWNrT2JqZWN0U3RvcmVBbmRNZXRhRGF0
YVR5cGUoaXQuZ2V0KCksIHN0b3BLZXksIG9iamVjdFN0b3JlSWQsIDYpKSB7CiAgICAgICAgICAg
ICAvLyBGSVhNRTogQWRkIGVuY29kZS9kZWNvZGUgZnVuY3Rpb25zIGZvciBib29scy4KICAgICAg
ICAgICAgIGhhc0tleVBhdGggPSAqaXQtPnZhbHVlKCkuYmVnaW4oKTsKLSAgICAgICAgICAgIGlm
ICghaGFzS2V5UGF0aCAmJiAha2V5UGF0aC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIC8vIFRo
aXMgY2hlY2sgYWNjb3VudHMgZm9yIHR3byBsYXllcnMgb2YgbGVnYWN5IGNvZGluZzoKKyAgICAg
ICAgICAgIC8vICgxKSBJbml0aWFsbHksIGhhc0tleVBhdGggd2FzIGFkZGVkIHRvIGRpc3Rpbmd1
aXNoIG51bGwgdnMuIHN0cmluZy4KKyAgICAgICAgICAgIC8vICgyKSBMYXRlciwgbnVsbCB2cy4g
c3RyaW5nIHZzLiBhcnJheSB3YXMgc3RvcmVkIGluIHRoZSBrZXlQYXRoIGl0c2VsZi4KKyAgICAg
ICAgICAgIC8vIFNvIHRoaXMgY2hlY2sgaXMgb25seSByZWxldmFudCBmb3Igc3RyaW5nLXR5cGUg
a2V5UGF0aHMuCisgICAgICAgICAgICBpZiAoIWhhc0tleVBhdGggJiYgKGtleVBhdGgudHlwZSgp
ID09IElEQktleVBhdGg6OlN0cmluZ1R5cGUgJiYgIWtleVBhdGguc3RyaW5nKCkuaXNFbXB0eSgp
KSkgewogICAgICAgICAgICAgICAgIExPR19FUlJPUigiSW50ZXJuYWwgSW5kZXhlZCBEQiBlcnJv
ci4iKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CisgICAgICAgICAg
ICBpZiAoIWhhc0tleVBhdGgpCisgICAgICAgICAgICAgICAga2V5UGF0aCA9IElEQktleVBhdGgo
KTsKICAgICAgICAgICAgIGl0LT5uZXh0KCk7CiAgICAgICAgIH0KIAogICAgICAgICBmb3VuZElk
cy5hcHBlbmQob2JqZWN0U3RvcmVJZCk7CiAgICAgICAgIGZvdW5kTmFtZXMuYXBwZW5kKG9iamVj
dFN0b3JlTmFtZSk7Ci0gICAgICAgIGZvdW5kS2V5UGF0aHMuYXBwZW5kKGhhc0tleVBhdGggPyBr
ZXlQYXRoIDogU3RyaW5nKCkpOworICAgICAgICBmb3VuZEtleVBhdGhzLmFwcGVuZChrZXlQYXRo
KTsKICAgICAgICAgZm91bmRBdXRvSW5jcmVtZW50RmxhZ3MuYXBwZW5kKGF1dG9JbmNyZW1lbnQp
OwogICAgIH0KIH0KQEAgLTQwNiw3ICs0MjEsNyBAQCBzdGF0aWMgaW50NjRfdCBnZXROZXdPYmpl
Y3RTdG9yZUlkKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YQog
ICAgIHJldHVybiBvYmplY3RTdG9yZUlkOwogfQogCi1ib29sIElEQkxldmVsREJCYWNraW5nU3Rv
cmU6OmNyZWF0ZU9iamVjdFN0b3JlKGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgaW50NjRfdCYg
YXNzaWduZWRPYmplY3RTdG9yZUlkKQorYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVh
dGVPYmplY3RTdG9yZShpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBpbnQ2NF90JiBhc3Np
Z25lZE9iamVjdFN0b3JlSWQpCiB7CiAgICAgQVNTRVJUKG1fY3VycmVudFRyYW5zYWN0aW9uKTsK
ICAgICBpbnQ2NF90IG9iamVjdFN0b3JlSWQgPSBnZXROZXdPYmplY3RTdG9yZUlkKG1fY3VycmVu
dFRyYW5zYWN0aW9uLmdldCgpLCBkYXRhYmFzZUlkKTsKQEAgLTQyOCw3ICs0NDMsNyBAQCBib29s
IElEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKGludDY0X3QgZGF0YWJh
c2VJZCwgY29uc3QgU3RyaW5nJgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAg
b2sgPSBwdXRTdHJpbmcobV9jdXJyZW50VHJhbnNhY3Rpb24uZ2V0KCksIGtleVBhdGhLZXksIGtl
eVBhdGgpOworICAgIG9rID0gcHV0SURCS2V5UGF0aChtX2N1cnJlbnRUcmFuc2FjdGlvbi5nZXQo
KSwga2V5UGF0aEtleSwga2V5UGF0aCk7CiAgICAgaWYgKCFvaykgewogICAgICAgICBMT0dfRVJS
T1IoIkludGVybmFsIEluZGV4ZWQgREIgZXJyb3IuIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTY5OCw3ICs3MTMsNyBAQCBzdGF0aWMgYm9vbCBjaGVja0luZGV4QW5kTWV0YURhdGFLZXko
Y29uc3QgTGV2ZWxEQkl0ZXJhdG9yKiBpdCwgY29uc3QgVmVjdG9yPGNoYQogfQogCiAKLXZvaWQg
SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0SW5kZXhlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgVmVjdG9yPGludDY0X3Q+JiBmb3VuZElkcywgVmVjdG9yPFN0
cmluZz4mIGZvdW5kTmFtZXMsIFZlY3RvcjxTdHJpbmc+JiBmb3VuZEtleVBhdGhzLCBWZWN0b3I8
Ym9vbD4mIGZvdW5kVW5pcXVlRmxhZ3MsIFZlY3Rvcjxib29sPiYgZm91bmRNdWx0aUVudHJ5Rmxh
Z3MpCit2b2lkIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmdldEluZGV4ZXMoaW50NjRfdCBkYXRh
YmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFZlY3RvcjxpbnQ2NF90PiYgZm91bmRJZHMs
IFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzLCBWZWN0b3I8SURCS2V5UGF0aD4mIGZvdW5kS2V5
UGF0aHMsIFZlY3Rvcjxib29sPiYgZm91bmRVbmlxdWVGbGFncywgVmVjdG9yPGJvb2w+JiBmb3Vu
ZE11bHRpRW50cnlGbGFncykKIHsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gc3RhcnRLZXkgPSBJ
bmRleE1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgMCwgMCk7
CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+IHN0b3BLZXkgPSBJbmRleE1ldGFEYXRhS2V5OjplbmNv
ZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCArIDEsIDAsIDApOwpAQCAtNzM3LDcgKzc1Miw3
IEBAIHZvaWQgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0SW5kZXhlcyhpbnQ2NF90IGRhdGFi
YXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJCiAgICAgICAgICAgICBMT0dfRVJST1IoIkludGVy
bmFsIEluZGV4ZWQgREIgZXJyb3IuIik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
LSAgICAgICAgU3RyaW5nIGtleVBhdGggPSBkZWNvZGVTdHJpbmcoaXQtPnZhbHVlKCkuYmVnaW4o
KSwgaXQtPnZhbHVlKCkuZW5kKCkpOworICAgICAgICBJREJLZXlQYXRoIGtleVBhdGggPSBkZWNv
ZGVJREJLZXlQYXRoKGl0LT52YWx1ZSgpLmJlZ2luKCksIGl0LT52YWx1ZSgpLmVuZCgpKTsKIAog
ICAgICAgICBpdC0+bmV4dCgpOyAvLyBbb3B0aW9uYWxdIG11bHRpRW50cnkgZmxhZwogICAgICAg
ICBib29sIGluZGV4TXVsdGlFbnRyeSA9IGZhbHNlOwpAQCAtNzcxLDcgKzc4Niw3IEBAIHN0YXRp
YyBpbnQ2NF90IGdldE5ld0luZGV4SWQoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwg
aW50NjRfdCBkYXRhYmFzZUlkCiAgICAgcmV0dXJuIGluZGV4SWQ7CiB9CiAKLWJvb2wgSURCTGV2
ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRo
LCBib29sIGlzVW5pcXVlLCBib29sIGlzTXVsdGlFbnRyeSwgaW50NjRfdCYgaW5kZXhJZCkKK2Jv
b2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgoaW50NjRfdCBkYXRhYmFzZUlk
LCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5
UGF0aCYga2V5UGF0aCwgYm9vbCBpc1VuaXF1ZSwgYm9vbCBpc011bHRpRW50cnksIGludDY0X3Qm
IGluZGV4SWQpCiB7CiAgICAgQVNTRVJUKG1fY3VycmVudFRyYW5zYWN0aW9uKTsKICAgICBpbmRl
eElkID0gZ2V0TmV3SW5kZXhJZChtX2N1cnJlbnRUcmFuc2FjdGlvbi5nZXQoKSwgZGF0YWJhc2VJ
ZCwgb2JqZWN0U3RvcmVJZCk7CkBAIC03OTUsNyArODEwLDcgQEAgYm9vbCBJREJMZXZlbERCQmFj
a2luZ1N0b3JlOjpjcmVhdGVJbmRleChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmUKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIG9rID0gcHV0U3RyaW5n
KG1fY3VycmVudFRyYW5zYWN0aW9uLmdldCgpLCBrZXlQYXRoS2V5LCBrZXlQYXRoKTsKKyAgICBv
ayA9IHB1dElEQktleVBhdGgobV9jdXJyZW50VHJhbnNhY3Rpb24uZ2V0KCksIGtleVBhdGhLZXks
IGtleVBhdGgpOwogICAgIGlmICghb2spIHsKICAgICAgICAgTE9HX0VSUk9SKCJJbnRlcm5hbCBJ
bmRleGVkIERCIGVycm9yLiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3Jl
LmgKaW5kZXggMjRkNDM5ZDc2NjEzMTEzZWUxODRmNGU1NTAxNjcxN2U3ZDI5NjYyNi4uYjNiYjY3
ZjczZDE4Yzc3Yjc4NjE2OTEzNTM1NzYzZDUzYmI1NzdhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaApA
QCAtNTAsOCArNTAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHVwZGF0ZUlEQkRhdGFi
YXNlTWV0YURhdGEoaW50NjRfdCByb3dJZCwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKTsKICAgICB2
aXJ0dWFsIGJvb2wgZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lKTsKIAotICAgIHZp
cnR1YWwgdm9pZCBnZXRPYmplY3RTdG9yZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBWZWN0b3I8aW50
NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcywgVmVjdG9yPFN0cmlu
Zz4mIGZvdW5kS2V5UGF0aHMsIFZlY3Rvcjxib29sPiYgZm91bmRBdXRvSW5jcmVtZW50RmxhZ3Mp
OwotICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVPYmplY3RTdG9yZShpbnQ2NF90IGRhdGFiYXNlSWQs
IGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNy
ZW1lbnQsIGludDY0X3QmIGFzc2lnbmVkT2JqZWN0U3RvcmVJZCk7CisgICAgdmlydHVhbCB2b2lk
IGdldE9iamVjdFN0b3JlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIFZlY3RvcjxpbnQ2NF90PiYgZm91
bmRJZHMsIFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzLCBWZWN0b3I8SURCS2V5UGF0aD4mIGZv
dW5kS2V5UGF0aHMsIFZlY3Rvcjxib29sPiYgZm91bmRBdXRvSW5jcmVtZW50RmxhZ3MpOworICAg
IHZpcnR1YWwgYm9vbCBjcmVhdGVPYmplY3RTdG9yZShpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCwgaW50
NjRfdCYgYXNzaWduZWRPYmplY3RTdG9yZUlkKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2Jq
ZWN0U3RvcmUoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpOwogICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxPYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXI+IGNyZWF0ZUlu
dmFsaWRSZWNvcmRJZGVudGlmaWVyKCk7CiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0T2JqZWN0U3Rv
cmVSZWNvcmQoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0
IElEQktleSYpOwpAQCAtNjMsOCArNjMsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wg
Zm9yRWFjaE9iamVjdFN0b3JlUmVjb3JkKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkLCBPYmplY3RTdG9yZVJlY29yZENhbGxiYWNrJik7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0SW5kZXhlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwg
VmVjdG9yPGludDY0X3Q+JiBmb3VuZElkcywgVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMsIFZl
Y3RvcjxTdHJpbmc+JiBmb3VuZEtleVBhdGhzLCBWZWN0b3I8Ym9vbD4mIGZvdW5kVW5pcXVlRmxh
Z3MsIFZlY3Rvcjxib29sPiYgZm91bmRNdWx0aUVudHJ5RmxhZ3MpOwotICAgIHZpcnR1YWwgYm9v
bCBjcmVhdGVJbmRleChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgaXNVbmlxdWUs
IGJvb2wgaXNNdWx0aUVudHJ5LCBpbnQ2NF90JiBpbmRleElkKTsKKyAgICB2aXJ0dWFsIHZvaWQg
Z2V0SW5kZXhlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgVmVj
dG9yPGludDY0X3Q+JiBmb3VuZElkcywgVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMsIFZlY3Rv
cjxJREJLZXlQYXRoPiYgZm91bmRLZXlQYXRocywgVmVjdG9yPGJvb2w+JiBmb3VuZFVuaXF1ZUZs
YWdzLCBWZWN0b3I8Ym9vbD4mIGZvdW5kTXVsdGlFbnRyeUZsYWdzKTsKKyAgICB2aXJ0dWFsIGJv
b2wgY3JlYXRlSW5kZXgoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQs
IGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgaXNVbmlxdWUsIGJv
b2wgaXNNdWx0aUVudHJ5LCBpbnQ2NF90JiBpbmRleElkKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVs
ZXRlSW5kZXgoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0
X3QgaW5kZXhJZCk7CiAgICAgdmlydHVhbCBib29sIHB1dEluZGV4RGF0YUZvclJlY29yZChpbnQ2
NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBj
b25zdCBJREJLZXkmLCBjb25zdCBPYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXIqKTsKICAgICB2
aXJ0dWFsIGJvb2wgZGVsZXRlSW5kZXhEYXRhRm9yUmVjb3JkKGludDY0X3QgZGF0YWJhc2VJZCwg
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IE9iamVjdFN0b3Jl
UmVjb3JkSWRlbnRpZmllciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmNwcAppbmRleCBmMDI2M2Y4OWYzZThkZjY2YmVjMTgz
ZGEwZmFhZTJjY2I1ZDVjNzM4Li43ZWU0MzU1NGNmYzE5NGYwZjE3MmJiZWM0YzU2OWUyMGZkYzkz
MmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZl
bERCQ29kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJM
ZXZlbERCQ29kaW5nLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2lmIFVTRShMRVZFTERCKQogCiAj
aW5jbHVkZSAiSURCS2V5LmgiCisjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgogI2luY2x1ZGUgIkxl
dmVsREJTbGljZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApAQCAt
MTM1LDYgKzEzNiw4IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGtJREJLZXlOdW1iZXJU
eXBlQnl0ZSA9IDM7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBrSURCS2V5QXJyYXlUeXBl
Qnl0ZSA9IDQ7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBrSURCS2V5TWluS2V5VHlwZUJ5
dGUgPSA1OwogCitzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBrSURCS2V5UGF0aFR5cGVDb2Rl
ZEJ5dGUgPSAwOworCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBrT2JqZWN0U3RvcmVEYXRh
SW5kZXhJZCA9IDE7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBrRXhpc3RzRW50cnlJbmRl
eElkID0gMjsKIApAQCAtNjIwLDYgKzYyMyw2OSBAQCBpbnQgY29tcGFyZUVuY29kZWRJREJLZXlz
KGNvbnN0IFZlY3RvcjxjaGFyPiYga2V5QSwgY29uc3QgVmVjdG9yPGNoYXI+JiBrZXlCKQogICAg
IHJldHVybiBjb21wYXJlRW5jb2RlZElEQktleXMocCwgbGltaXRBLCBxLCBsaW1pdEIpOwogfQog
CitWZWN0b3I8Y2hhcj4gZW5jb2RlSURCS2V5UGF0aChjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRo
KQoreworICAgIC8vIE1heSBiZSB0eXBlZCwgb3IgbWF5IGJlIGEgcmF3IHN0cmluZy4gQW4gaW52
YWxpZCBsZWFkaW5nCisgICAgLy8gYnl0ZSBpcyB1c2VkIHRvIGlkZW50aWZ5IHR5cGVkIGNvZGlu
Zy4gTmV3IHJlY29yZHMgYXJlCisgICAgLy8gYWx3YXlzIHdyaXR0ZW4gYXMgdHlwZWQuCisgICAg
VmVjdG9yPGNoYXI+IHJldDsKKyAgICByZXQuYXBwZW5kKGtJREJLZXlQYXRoVHlwZUNvZGVkQnl0
ZSk7CisgICAgcmV0LmFwcGVuZChzdGF0aWNfY2FzdDxjaGFyPihrZXlQYXRoLnR5cGUoKSkpOwor
ICAgIHN3aXRjaCAoa2V5UGF0aC50eXBlKCkpIHsKKyAgICBjYXNlIElEQktleVBhdGg6Ok51bGxU
eXBlOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIElEQktleVBhdGg6OlN0cmluZ1R5cGU6Cisg
ICAgICAgIHJldC5hcHBlbmQoZW5jb2RlU3RyaW5nKGtleVBhdGguc3RyaW5nKCkpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBJREJLZXlQYXRoOjpBcnJheVR5cGU6IHsKKyAgICAgICAgY29u
c3QgVmVjdG9yPFN0cmluZz4mIGFycmF5ID0ga2V5UGF0aC5hcnJheSgpOworICAgICAgICBzaXpl
X3QgY291bnQgPSBhcnJheS5zaXplKCk7CisgICAgICAgIHJldC5hcHBlbmQoZW5jb2RlVmFySW50
KGNvdW50KSk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkKKyAg
ICAgICAgICAgIHJldC5hcHBlbmQoZW5jb2RlU3RyaW5nV2l0aExlbmd0aChhcnJheVtpXSkpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgfQorICAgIHJldHVybiByZXQ7Cit9CisKK0lEQktl
eVBhdGggZGVjb2RlSURCS2V5UGF0aChjb25zdCBjaGFyKiBwLCBjb25zdCBjaGFyKiBsaW1pdCkK
K3sKKyAgICAvLyBNYXkgYmUgdHlwZWQsIG9yIG1heSBiZSBhIHJhdyBzdHJpbmcuIEFuIGludmFs
aWQgbGVhZGluZworICAgIC8vIGJ5dGUgaXMgdXNlZCB0byBpZGVudGlmeSB0eXBlZCBjb2Rpbmcu
IE5ldyByZWNvcmRzIGFyZQorICAgIC8vIGFsd2F5cyB3cml0dGVuIGFzIHR5cGVkLgorICAgIGlm
IChwID09IGxpbWl0IHx8ICpwICE9IGtJREJLZXlQYXRoVHlwZUNvZGVkQnl0ZSkKKyAgICAgICAg
cmV0dXJuIElEQktleVBhdGgoZGVjb2RlU3RyaW5nKHAsIGxpbWl0KSk7CisKKyAgICArK3A7Cisg
ICAgQVNTRVJUKHAgIT0gbGltaXQpOworICAgIElEQktleVBhdGg6OlR5cGUgdHlwZSA9IHN0YXRp
Y19jYXN0PElEQktleVBhdGg6OlR5cGU+KCpwKyspOworICAgIHN3aXRjaCAodHlwZSkgeworICAg
IGNhc2UgSURCS2V5UGF0aDo6TnVsbFR5cGU6CisgICAgICAgIEFTU0VSVChwID09IGxpbWl0KTsK
KyAgICAgICAgcmV0dXJuIElEQktleVBhdGgoKTsKKyAgICBjYXNlIElEQktleVBhdGg6OlN0cmlu
Z1R5cGU6CisgICAgICAgIHJldHVybiBJREJLZXlQYXRoKGRlY29kZVN0cmluZyhwLCBsaW1pdCkp
OworICAgIGNhc2UgSURCS2V5UGF0aDo6QXJyYXlUeXBlOiB7CisgICAgICAgIFZlY3RvcjxTdHJp
bmc+IGFycmF5OworICAgICAgICBpbnQ2NF90IGNvdW50OworICAgICAgICBwID0gZGVjb2RlVmFy
SW50KHAsIGxpbWl0LCBjb3VudCk7CisgICAgICAgIEFTU0VSVChwKTsKKyAgICAgICAgQVNTRVJU
KGNvdW50ID49IDApOworICAgICAgICB3aGlsZSAoY291bnQtLSkgeworICAgICAgICAgICAgU3Ry
aW5nIHN0cmluZzsKKyAgICAgICAgICAgIHAgPSBkZWNvZGVTdHJpbmdXaXRoTGVuZ3RoKHAsIGxp
bWl0LCBzdHJpbmcpOworICAgICAgICAgICAgQVNTRVJUKHApOworICAgICAgICAgICAgYXJyYXku
YXBwZW5kKHN0cmluZyk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKHAgPT0gbGltaXQpOwor
ICAgICAgICByZXR1cm4gSURCS2V5UGF0aChhcnJheSk7CisgICAgfQorICAgIH0KKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gSURCS2V5UGF0aCgpOworfQorCiBuYW1lc3Bh
Y2UgewogdGVtcGxhdGU8dHlwZW5hbWUgS2V5VHlwZT4KIGludCBkZWNvZGVBbmRDb21wYXJlKGNv
bnN0IExldmVsREJTbGljZSYgYSwgY29uc3QgTGV2ZWxEQlNsaWNlJiBiKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5oCmluZGV4IDE0
YzQyZWE3MzM2MWI0MDIwNmRhYzRkMGRmZDE3NjQwNzkwZWNjZmEuLmJkZmY2YjVlZmNkZjgzZGI1
OWQ4YTJlNWUzN2U5NDY0ZmE5NWU3MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmgKQEAgLTM2LDYgKzM2LDcgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURCS2V5OworY2xhc3MgSURCS2V5UGF0aDsKIGNsYXNz
IExldmVsREJTbGljZTsKIAogbmFtZXNwYWNlIElEQkxldmVsREJDb2RpbmcgewpAQCAtNjEsNiAr
NjIsOCBAQCBWZWN0b3I8Y2hhcj4gZW5jb2RlSURCS2V5KGNvbnN0IElEQktleSYpOwogY29uc3Qg
Y2hhciogZGVjb2RlSURCS2V5KGNvbnN0IGNoYXIqIHAsIGNvbnN0IGNoYXIqIGxpbWl0LCBSZWZQ
dHI8SURCS2V5PiYgZm91bmRLZXkpOwogY29uc3QgY2hhciogZXh0cmFjdEVuY29kZWRJREJLZXko
Y29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGxpbWl0LCBWZWN0b3I8Y2hhcj4qIHJlc3Vs
dCk7CiBpbnQgY29tcGFyZUVuY29kZWRJREJLZXlzKGNvbnN0IFZlY3RvcjxjaGFyPiYsIGNvbnN0
IFZlY3RvcjxjaGFyPiYpOworVmVjdG9yPGNoYXI+IGVuY29kZUlEQktleVBhdGgoY29uc3QgSURC
S2V5UGF0aCYpOworSURCS2V5UGF0aCBkZWNvZGVJREJLZXlQYXRoKGNvbnN0IGNoYXIqLCBjb25z
dCBjaGFyKik7CiAKIGludCBjb21wYXJlKGNvbnN0IExldmVsREJTbGljZSYsIGNvbnN0IExldmVs
REJTbGljZSYsIGJvb2wgaW5kZXhLZXlzID0gZmFsc2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKaW5kZXggNDMxOWQ3ZjBh
OTM4ZGE1ZjdkNzcwNmYwY2JiZDg2YjU2MjkwN2ZiOS4uOThmZjgyYmE4M2IxNWE1Yzk5NmYzNTVi
NGJhMDc5NWE0MzM2ZDZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcApAQCAtNjAsNyArNjAsNyBAQCBTdHJpbmcgSURCT2Jq
ZWN0U3RvcmU6Om5hbWUoKSBjb25zdAogICAgIHJldHVybiBtX2JhY2tlbmQtPm5hbWUoKTsKIH0K
IAotU3RyaW5nIElEQk9iamVjdFN0b3JlOjprZXlQYXRoKCkgY29uc3QKK1Bhc3NSZWZQdHI8SURC
QW55PiBJREJPYmplY3RTdG9yZTo6a2V5UGF0aCgpIGNvbnN0CiB7CiAgICAgSURCX1RSQUNFKCJJ
REJPYmplY3RTdG9yZTo6a2V5UGF0aCIpOwogICAgIHJldHVybiBtX2JhY2tlbmQtPmtleVBhdGgo
KTsKQEAgLTIwNSw4ICsyMDUsMTMgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RT
dG9yZTo6Y2xlYXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXgKIAogUGFzc1Jl
ZlB0cjxJREJJbmRleD4gSURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBF
eGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICByZXR1cm4gY3JlYXRlSW5kZXgobmFtZSwgSURCS2V5
UGF0aChrZXlQYXRoKSwgb3B0aW9ucywgZWMpOworfQorCitQYXNzUmVmUHRyPElEQkluZGV4PiBJ
REJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJL
ZXlQYXRoJiBrZXlQYXRoLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBFeGNlcHRpb25Db2Rl
JiBlYykKK3sKICAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleCIpOwot
ICAgIGlmICghSURCSXNWYWxpZEtleVBhdGgoa2V5UGF0aCkpIHsKKyAgICBpZiAoIWtleVBhdGgu
aXNWYWxpZCgpKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246Ok5PTl9UUkFO
U0lFTlRfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaAppbmRleCA1ZDRkMThkYzA2NTlj
NGIzOTIwOGRkNjgyOTFiNTExMjk0M2NjZjkwLi5iMGMyZThlODI0ZGQxZGNiMTA0YjUxNmJmYTQ1
MWViYmQ2Y2ViZjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJPYmplY3RTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQk9iamVjdFN0b3JlLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIH5JREJPYmpl
Y3RTdG9yZSgpIHsgfQogCiAgICAgU3RyaW5nIG5hbWUoKSBjb25zdDsKLSAgICBTdHJpbmcga2V5
UGF0aCgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SURCQW55PiBrZXlQYXRoKCkgY29uc3Q7CiAg
ICAgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBpbmRleE5hbWVzKCkgY29uc3Q7CiAgICAgSURC
VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKCkgY29uc3Q7CiAKQEAgLTc3LDYgKzc3LDggQEAgcHVi
bGljOgogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gY2xlYXIoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIFBhc3NSZWZQdHI8SURCSW5kZXg+IGNyZWF0
ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBjb25zdCBE
aWN0aW9uYXJ5JiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8SURCSW5kZXg+IGNy
ZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYsIGNvbnN0IElEQktleVBhdGgmLCBjb25zdCBEaWN0aW9u
YXJ5JiwgRXhjZXB0aW9uQ29kZSYpOworCiAgICAgUGFzc1JlZlB0cjxJREJJbmRleD4gaW5kZXgo
Y29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBkZWxldGVJbmRl
eChjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaWRsIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaWRsCmluZGV4IDhjZWQz
OGNkMWVmYTMyY2NiMzRmMDYyOGQzYzZhOTI4ZWI4ODdmZDIuLjAzN2ViZDNiMzJhMTQzM2ZiNjkw
OWVhMzUzMzIxNjQyYWRmOTdmYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5pZGwKQEAgLTI5LDcgKzI5LDcgQEAgbW9kdWxlIHN0
b3JhZ2UgewogICAgICAgICBDb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFCiAgICAgXSBJREJP
YmplY3RTdG9yZSB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbVHJlYXRSZXR1cm5lZE51
bGxTdHJpbmdBcz1OdWxsXSBET01TdHJpbmcgbmFtZTsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIFtUcmVhdFJldHVybmVkTnVsbFN0cmluZ0FzPU51bGxdIERPTVN0cmluZyBrZXlQYXRoOwor
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgSURCQW55IGtleVBhdGg7CiAgICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBET01TdHJpbmdMaXN0IGluZGV4TmFtZXM7CiAgICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBJREJUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbjsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsLmNwcAppbmRleCA1ZDJkNTBjMmFlYmU3ZjQwMGQ2MGQ4ZTEwODZiMDA1ZmY5YjNkNTUz
Li5mNjM4YTNjZWZjNTZmNTM1N2ZmYTJjMTFlZDc2ZTIzMGFhMDYzNTQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsLmNwcApAQCAtNTEsNyArNTEsNyBAQCBJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsOjp+SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCgpCiB7CiB9CiAKLUlEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGw6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGwoSURCQmFja2luZ1N0b3JlKiBi
YWNraW5nU3RvcmUsIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBpZCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkKK0lEQk9i
amVjdFN0b3JlQmFja2VuZEltcGw6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGwoSURCQmFja2lu
Z1N0b3JlKiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBpZCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIGF1dG9JbmNy
ZW1lbnQpCiAgICAgOiBtX2JhY2tpbmdTdG9yZShiYWNraW5nU3RvcmUpCiAgICAgLCBtX2RhdGFi
YXNlSWQoZGF0YWJhc2VJZCkKICAgICAsIG1faWQoaWQpCkBAIC02Myw3ICs2Myw3IEBAIElEQk9i
amVjdFN0b3JlQmFja2VuZEltcGw6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGwoSURCQmFja2lu
Z1N0b3JlKiBiYWNraW5nU3RvCiAgICAgbG9hZEluZGV4ZXMoKTsKIH0KIAotSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbDo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbChJREJCYWNraW5nU3RvcmUq
IGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50KQorSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbDo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbChJREJCYWNraW5nU3RvcmUqIGJh
Y2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkKICAgICA6IG1fYmFja2lu
Z1N0b3JlKGJhY2tpbmdTdG9yZSkKICAgICAsIG1fZGF0YWJhc2VJZChkYXRhYmFzZUlkKQogICAg
ICwgbV9pZChJbnZhbGlkSWQpCkBAIC0xMzcsOSArMTM3LDExIEBAIHZvaWQgSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbDo6Z2V0SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NS
ZWZQdHI8CiAgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpj
cmVhdGVGcm9tV2lyZSh3aXJlRGF0YSkpOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxJREJLZXk+
IGZldGNoS2V5RnJvbUtleVBhdGgoU2VyaWFsaXplZFNjcmlwdFZhbHVlKiB2YWx1ZSwgY29uc3Qg
U3RyaW5nJiBrZXlQYXRoKQorc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5PiBmZXRjaEtleUZyb21L
ZXlQYXRoKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogdmFsdWUsIGNvbnN0IElEQktleVBhdGgmIGtl
eVBhdGgpCiB7CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpmZXRj
aEtleUZyb21LZXlQYXRoIik7CisgICAgQVNTRVJUKCFrZXlQYXRoLmlzTnVsbCgpKTsKKwogICAg
IFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiA+IHZhbHVlczsKICAgICB2YWx1
ZXMuYXBwZW5kKHZhbHVlKTsKICAgICBWZWN0b3I8UmVmUHRyPElEQktleT4gPiBrZXlzOwpAQCAt
MTUwLDcgKzE1Miw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPElEQktleT4gZmV0Y2hLZXlGcm9tS2V5
UGF0aChTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHZhbHVlLCBjb25zCiAgICAgcmV0dXJuIGtleXNb
MF0ucmVsZWFzZSgpOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IGluamVjdEtleUludG9LZXlQYXRoKFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQor
c3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBpbmplY3RLZXlJbnRvS2V5
UGF0aChQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gdmFsdWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgpCiB7CiAgICAgSURCX1RSQUNF
KCJJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjppbmplY3RLZXlJbnRvS2V5UGF0aCIpOwogICAg
IHJldHVybiBJREJLZXlQYXRoQmFja2VuZEltcGw6OmluamVjdElEQktleUludG9TZXJpYWxpemVk
VmFsdWUoa2V5LCB2YWx1ZSwga2V5UGF0aCk7CkBAIC00OTksNyArNTAxLDcgQEAgYm9vbCBJREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsOjpwb3B1bGF0ZUluZGV4KElEQkJhY2tpbmdTdG9yZSYgYmFj
a2luZ1N0b3JlLCBpbnQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc1JlZlB0cjxJREJJbmRl
eEJhY2tlbmRJbnRlcmZhY2U+IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZUluZGV4
KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwg
Ym9vbCBtdWx0aUVudHJ5LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0
aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJm
YWNlPiBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleChjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRp
RW50cnksIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewogICAgIGlmIChuYW1lLmlzTnVsbCgpKSB7CiAgICAgICAgIGVjID0g
SURCRGF0YWJhc2VFeGNlcHRpb246Ok5PTl9UUkFOU0lFTlRfRVJSOwpAQCAtNjUwLDcgKzY1Miw3
IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6bG9hZEluZGV4ZXMoKQogewogICAg
IFZlY3RvcjxpbnQ2NF90PiBpZHM7CiAgICAgVmVjdG9yPFN0cmluZz4gbmFtZXM7Ci0gICAgVmVj
dG9yPFN0cmluZz4ga2V5UGF0aHM7CisgICAgVmVjdG9yPElEQktleVBhdGg+IGtleVBhdGhzOwog
ICAgIFZlY3Rvcjxib29sPiB1bmlxdWVGbGFnczsKICAgICBWZWN0b3I8Ym9vbD4gbXVsdGlFbnRy
eUZsYWdzOwogICAgIG1fYmFja2luZ1N0b3JlLT5nZXRJbmRleGVzKG1fZGF0YWJhc2VJZCwgbV9p
ZCwgaWRzLCBuYW1lcywga2V5UGF0aHMsIHVuaXF1ZUZsYWdzLCBtdWx0aUVudHJ5RmxhZ3MpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbC5oCmluZGV4IDhkMmUxZGE5OWU4NGFjODlkYjQ3YWY2MWU1ZjFl
YWMzMzdkZWMyZGQuLjFkMTU1NTA0NzcxMDM5ZDUzZjQzNTE4NWMwODM4OTUyYjY3ZDA0ODEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbF9oCiAjZGVmaW5lIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGxf
aAogCisjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlQmFj
a2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nSGFzaC5oPgpAQCAtNDIsMTEgKzQzLDExIEBAIGNsYXNzIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ7CiAKIGNsYXNzIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwgOiBwdWJsaWMg
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBjcmVhdGUoSURCQmFja2luZ1N0b3Jl
KiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBpZCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBjcmVhdGUoSURC
QmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBp
ZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIGF1
dG9JbmNyZW1lbnQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQk9iamVj
dFN0b3JlQmFja2VuZEltcGwoYmFja2luZ1N0b3JlLCBkYXRhYmFzZUlkLCBpZCwgbmFtZSwga2V5
UGF0aCwgYXV0b0luY3JlbWVudCkpOwogICAgIH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsPiBjcmVhdGUoSURCQmFja2luZ1N0b3JlKiBiYWNraW5nU3Rv
cmUsIGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsPiBjcmVhdGUoSURCQmFja2luZ1N0b3JlKiBiYWNraW5nU3Rv
cmUsIGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQ
YXRoJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQpCiAgICAgewogICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwoYmFja2luZ1N0b3JlLCBkYXRh
YmFzZUlkLCBuYW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50KSk7CiAgICAgfQpAQCAtNjIsNyAr
NjMsNyBAQCBwdWJsaWM6CiAgICAgaW50NjRfdCBkYXRhYmFzZUlkKCkgY29uc3QgeyByZXR1cm4g
bV9kYXRhYmFzZUlkOyB9CiAKICAgICB2aXJ0dWFsIFN0cmluZyBuYW1lKCkgY29uc3QgeyByZXR1
cm4gbV9uYW1lOyB9Ci0gICAgdmlydHVhbCBTdHJpbmcga2V5UGF0aCgpIGNvbnN0IHsgcmV0dXJu
IG1fa2V5UGF0aDsgfQorICAgIHZpcnR1YWwgSURCS2V5UGF0aCBrZXlQYXRoKCkgY29uc3QgeyBy
ZXR1cm4gbV9rZXlQYXRoOyB9CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+
IGluZGV4TmFtZXMoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgYXV0b0luY3JlbWVudCgpIGNv
bnN0IHsgcmV0dXJuIG1fYXV0b0luY3JlbWVudDsgfQogCkBAIC03Myw3ICs3NCw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXlSYW5n
ZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlKiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhcihQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlv
bkNvZGUmKTsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZh
Y2U+IGNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRo
LCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UqLCBFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkluZGV4
QmFja2VuZEludGVyZmFjZT4gY3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJ
REJLZXlQYXRoJiwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSwgSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgRXhj
ZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVJbmRleChjb25zdCBTdHJpbmcm
IG5hbWUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsK
IApAQCAtODMsOCArODQsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgcG9wdWxhdGVJbmRl
eChJREJCYWNraW5nU3RvcmUmLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPik7CiAKIHByaXZhdGU6Ci0gICAg
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbChJREJCYWNraW5nU3RvcmUqLCBpbnQ2NF90IGRhdGFi
YXNlSWQsIGludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQ
YXRoLCBib29sIGF1dG9JbmNyZW1lbnQpOwotICAgIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwo
SURCQmFja2luZ1N0b3JlKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50KTsKKyAgICBJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsKElEQkJhY2tpbmdTdG9yZSosIGludDY0X3QgZGF0YWJhc2VJZCwg
aW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCBh
dXRvSW5jcmVtZW50KTsKKyAgICBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKElEQkJhY2tpbmdT
dG9yZSosIGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJL
ZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50KTsKIAogICAgIHZvaWQgbG9hZEluZGV4ZXMoKTsK
ICAgICBQYXNzUmVmUHRyPElEQktleT4gZ2VuQXV0b0luY3JlbWVudEtleSgpOwpAQCAtMTEwLDcg
KzExMSw3IEBAIHByaXZhdGU6CiAgICAgaW50NjRfdCBtX2RhdGFiYXNlSWQ7CiAgICAgaW50NjRf
dCBtX2lkOwogICAgIFN0cmluZyBtX25hbWU7Ci0gICAgU3RyaW5nIG1fa2V5UGF0aDsKKyAgICBJ
REJLZXlQYXRoIG1fa2V5UGF0aDsKICAgICBib29sIG1fYXV0b0luY3JlbWVudDsKIAogICAgIHR5
cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiA+IEluZGV4
TWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaAppbmRleCBhZTY0YTVlZjZlZTBh
NTE0NmE0ZTE0YmVlZjYzMjJkNTU4NTYwMGUwLi4zMmFlMzkyOGZkOGU4ZjQwNTM2YjhiZmI5YTM4
OWQ3NzlhNDA2MjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaApAQCAtMzcs
NiArMzcsNyBAQCBjbGFzcyBET01TdHJpbmdMaXN0OwogY2xhc3MgSURCQ2FsbGJhY2tzOwogY2xh
c3MgSURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlOwogY2xhc3MgSURCS2V5OworY2xhc3MgSURCS2V5
UGF0aDsKIGNsYXNzIElEQktleVJhbmdlOwogY2xhc3MgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlOwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwpAQCAtNDgsNyArNDksNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB+SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlKCkgeyB9
CiAKICAgICB2aXJ0dWFsIFN0cmluZyBuYW1lKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgU3Ry
aW5nIGtleVBhdGgoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBJREJLZXlQYXRoIGtleVBhdGgo
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGluZGV4
TmFtZXMoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0KFBhc3NSZWZQdHI8SURC
S2V5UmFuZ2U+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CkBAIC02NCw3ICs2NSw3IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgdm9pZCBjbGVhcihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAKLSAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVJbmRl
eChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUs
IGJvb2wgbXVsdGlFbnRyeSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0
aW9uQ29kZSYpID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50
ZXJmYWNlPiBjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgm
LCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UqLCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJJ
bmRleEJhY2tlbmRJbnRlcmZhY2U+IGluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9u
Q29kZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlSW5kZXgoY29uc3QgU3RyaW5nJiBu
YW1lLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikgPSAw
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EaWN0aW9uYXJ5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuY3BwCmluZGV4IDEwYWFm
ZThkYzZjMjgxZWZlNzFkNDlmYjkyZjRiYjk1Njc1ODc1MTQuLmRjNzI0ZmE5NWJiMzFlMGM0NGJi
OGNmNjMzYjY3MGFmYTQ5NTkwZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L0RpY3Rpb25hcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rp
b25hcnkuY3BwCkBAIC00MjQsNiArNDI0LDIzIEBAIGJvb2wgRGljdGlvbmFyeTo6Z2V0KGNvbnN0
IFN0cmluZyYga2V5LCBEaWN0aW9uYXJ5JiB2YWx1ZSkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAorYm9vbCBEaWN0aW9uYXJ5OjpnZXQoY29uc3QgU3RyaW5nJiBrZXksIFZlY3RvcjxTdHJp
bmc+JiB2YWx1ZSkgY29uc3QKK3sKKyAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2OFZhbHVlOwor
ICAgIGlmICghZ2V0S2V5KGtleSwgdjhWYWx1ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGlmICghdjhWYWx1ZS0+SXNBcnJheSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICB2ODo6TG9jYWw8djg6OkFycmF5PiB2OEFycmF5ID0gdjg6OkxvY2FsPHY4OjpBcnJheT46OkNh
c3QodjhWYWx1ZSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2OEFycmF5LT5MZW5ndGgo
KTsgKytpKSB7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGluZGV4ZWRWYWx1ZSA9IHY4
QXJyYXktPkdldCh2ODo6VWludDMyOjpOZXcoaSkpOworICAgICAgICB2YWx1ZS5hcHBlbmQodjhW
YWx1ZVRvV2ViQ29yZVN0cmluZyhpbmRleGVkVmFsdWUpKTsKKyAgICB9CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KIAogYm9vbCBEaWN0aW9uYXJ5OjpnZXRPd25Qcm9wZXJ0aWVzQXNTdHJpbmdIYXNo
TWFwKFdURjo6SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIGhhc2hNYXApIGNvbnN0CiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EaWN0aW9uYXJ5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9EaWN0aW9uYXJ5LmgKaW5kZXggYzRjMzNiMWJiMjA4ZTk2NDBk
ZmZiODQwNmQ4OTNiNDEyODMyNzllZS4uZjE1M2VhOWM4Mjk4NDgwODBmMmY1ZTY4NWJjYzZhNzcz
NDNmNTRhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFy
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuaApAQCAtMzMs
MTEgKzMzLDExIEBACiAjaW5jbHVkZSA8djguaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIERPTVN0cmluZ0xpc3Q7CiBjbGFzcyBET01XaW5kb3c7CiBjbGFzcyBJREJLZXlSYW5nZTsK
IGNsYXNzIE1lZGlhS2V5RXJyb3I7CkBAIC04NSw2ICs4NSw3IEBAIHB1YmxpYzoKICNlbmRpZgog
ICAgIGJvb2wgZ2V0KGNvbnN0IFN0cmluZyYsIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYpIGNvbnN0
OwogICAgIGJvb2wgZ2V0KGNvbnN0IFN0cmluZyYsIERpY3Rpb25hcnkmKSBjb25zdDsKKyAgICBi
b29sIGdldChjb25zdCBTdHJpbmcmLCBWZWN0b3I8U3RyaW5nPiYpIGNvbnN0OwogICAgIGJvb2wg
Z2V0T3duUHJvcGVydGllc0FzU3RyaW5nSGFzaE1hcChXVEY6Okhhc2hNYXA8U3RyaW5nLCBTdHJp
bmc+JikgY29uc3Q7CiAKICAgICBib29sIGdldFdpdGhVbmRlZmluZWRPck51bGxDaGVjayhjb25z
dCBTdHJpbmcmLCBTdHJpbmcmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKaW5kZXggZGY2Nzc4MDMwNTdlMzgwZjNlODlk
ZDQ1MTcxMWU0NzkxZTQxZWU5NC4uMTViNDNlOTM2MGVkZjk1YjM1ZGQ2ZWJjYmRkMTZiNDlmOGIw
ZDdjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0
aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0
aWxpdGllcy5jcHAKQEAgLTE1MywzMCArMTUzLDQzIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBl
bnN1cmVOdGhWYWx1ZU9uS2V5UGF0aCh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4mIHJvb3RWYWx1ZSwK
IAogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKLVBhc3NSZWZQdHI8SURCS2V5PiBjcmVhdGVJ
REJLZXlGcm9tU2VyaWFsaXplZFZhbHVlQW5kS2V5UGF0aChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gdmFsdWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBrZXlQYXRoKQorUGFzc1Jl
ZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktleUZyb21TZXJpYWxpemVkVmFsdWVBbmRLZXlQYXRoKFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgY29uc3QgSURCS2V5UGF0aCYg
a2V5UGF0aCkKIHsKICAgICBJREJfVFJBQ0UoImNyZWF0ZUlEQktleUZyb21TZXJpYWxpemVkVmFs
dWVBbmRLZXlQYXRoIik7CisgICAgQVNTRVJUKGtleVBhdGgudHlwZSgpID09IElEQktleVBhdGg6
OlN0cmluZ1R5cGUpOworICAgIFZlY3RvcjxTdHJpbmc+IGtleVBhdGhFbGVtZW50czsKKyAgICBJ
REJLZXlQYXRoUGFyc2VFcnJvciBlcnJvcjsKKyAgICBJREJQYXJzZUtleVBhdGgoa2V5UGF0aC5z
dHJpbmcoKSwga2V5UGF0aEVsZW1lbnRzLCBlcnJvcik7CisgICAgQVNTRVJUKGVycm9yID09IElE
QktleVBhdGhQYXJzZUVycm9yTm9uZSk7CisKICAgICBWOEF1eGlsaWFyeUNvbnRleHQgY29udGV4
dDsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdjhWYWx1ZSh2YWx1ZS0+ZGVzZXJpYWxpemUo
KSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4S2V5KGdldE50aFZhbHVlT25LZXlQYXRo
KHY4VmFsdWUsIGtleVBhdGgsIGtleVBhdGguc2l6ZSgpKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHY4S2V5KGdldE50aFZhbHVlT25LZXlQYXRoKHY4VmFsdWUsIGtleVBhdGhFbGVtZW50
cywga2V5UGF0aEVsZW1lbnRzLnNpemUoKSkpOwogICAgIGlmICh2OEtleS5Jc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBjcmVhdGVJREJLZXlGcm9tVmFsdWUodjhLZXkp
OwogfQogCi1QYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gaW5qZWN0SURCS2V5SW50
b1NlcmlhbGl6ZWRWYWx1ZShQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBrZXlQYXRoKQor
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGluamVjdElEQktleUludG9TZXJpYWxp
emVkVmFsdWUoUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IHZhbHVlLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKQogewogICAgIElEQl9U
UkFDRSgiaW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZSIpOwotICAgIFY4QXV4aWxpYXJ5
Q29udGV4dCBjb250ZXh0OwotICAgIGlmICgha2V5UGF0aC5zaXplKCkpCisKKyAgICBBU1NFUlQo
a2V5UGF0aC50eXBlKCkgPT0gSURCS2V5UGF0aDo6U3RyaW5nVHlwZSk7CisgICAgVmVjdG9yPFN0
cmluZz4ga2V5UGF0aEVsZW1lbnRzOworICAgIElEQktleVBhdGhQYXJzZUVycm9yIGVycm9yOwor
ICAgIElEQlBhcnNlS2V5UGF0aChrZXlQYXRoLnN0cmluZygpLCBrZXlQYXRoRWxlbWVudHMsIGVy
cm9yKTsKKyAgICBBU1NFUlQoZXJyb3IgPT0gSURCS2V5UGF0aFBhcnNlRXJyb3JOb25lKTsKKwor
ICAgIGlmICgha2V5UGF0aEVsZW1lbnRzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKKyAg
ICBWOEF1eGlsaWFyeUNvbnRleHQgY29udGV4dDsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
djhWYWx1ZSh2YWx1ZS0+ZGVzZXJpYWxpemUoKSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHBhcmVudChlbnN1cmVOdGhWYWx1ZU9uS2V5UGF0aCh2OFZhbHVlLCBrZXlQYXRoLCBrZXlQYXRo
LnNpemUoKSAtIDEpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcGFyZW50KGVuc3VyZU50
aFZhbHVlT25LZXlQYXRoKHY4VmFsdWUsIGtleVBhdGhFbGVtZW50cywga2V5UGF0aEVsZW1lbnRz
LnNpemUoKSAtIDEpKTsKICAgICBpZiAocGFyZW50LklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IDA7CiAKLSAgICBpZiAoIXNldChwYXJlbnQsIGtleVBhdGgubGFzdCgpLCB0b1Y4KGtleS5nZXQo
KSkpKQorICAgIGlmICghc2V0KHBhcmVudCwga2V5UGF0aEVsZW1lbnRzLmxhc3QoKSwgdG9WOChr
ZXkuZ2V0KCkpKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICByZXR1cm4gU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpjcmVhdGUodjhWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmgKaW5kZXggNDcyODZhNTgyMzhmMGEwMjRlMjEzODA1
MDVmYmI5NmVhNzY3ZjVhYi4uMzBlZWQ0MjFiNDViMDkwMzAxMWJkMjQ5YmJhMGQ3NGMyM2JhMjc0
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxp
dGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRp
ZXMuaApAQCAtMzQsMTEgKzM0LDEyIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElE
QktleTsKK2NsYXNzIElEQktleVBhdGg7CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CiAK
IFBhc3NSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJLZXlGcm9tVmFsdWUodjg6OkhhbmRsZTx2ODo6
VmFsdWU+KTsKLVBhc3NSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJLZXlGcm9tU2VyaWFsaXplZFZh
bHVlQW5kS2V5UGF0aChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sICBjb25zdCBW
ZWN0b3I8U3RyaW5nLCAwPiYpOwotUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGlu
amVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUoUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIGNvbnN0IFZlY3RvcjxTdHJpbmcsIDA+Jik7CitQ
YXNzUmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtleVBh
dGgoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBjb25zdCBJREJLZXlQYXRoJik7
CitQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gaW5qZWN0SURCS2V5SW50b1Nlcmlh
bGl6ZWRWYWx1ZShQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiwgY29uc3QgSURCS2V5UGF0aCYpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOElEQkFueUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJREJBbnlDdXN0b20uY3BwCmluZGV4IDE3MzNlYzhi
Y2RhM2E0N2UzZmIwZmE0ZmFjZjU5MGM2NmNhYmNhZGIuLjBiNzUwMmViOWY3YzczMDhhNGY4OWZj
ZDAwM2M3MTJjNjc2MWRiMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOElEQkFueUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SURCQW55Q3VzdG9tLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUg
IlY4SURCQW55LmgiCiAKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNpbmNs
dWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOERPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRl
ICJWOElEQkN1cnNvci5oIgogI2luY2x1ZGUgIlY4SURCQ3Vyc29yV2l0aFZhbHVlLmgiCkBAIC03
NCw2ICs3NSw4IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KElEQkFueSogaW1wbCwgdjg6
Oklzb2xhdGUqIGlzb2xhdGUpCiAgICAgICAgIHJldHVybiB0b1Y4KGltcGwtPmlkYlRyYW5zYWN0
aW9uKCkpOwogICAgIGNhc2UgSURCQW55OjpTZXJpYWxpemVkU2NyaXB0VmFsdWVUeXBlOgogICAg
ICAgICByZXR1cm4gaW1wbC0+c2VyaWFsaXplZFNjcmlwdFZhbHVlKCktPmRlc2VyaWFsaXplKDAs
IGlzb2xhdGUpOworICAgIGNhc2UgSURCQW55OjpTdHJpbmdUeXBlOgorICAgICAgICByZXR1cm4g
djhTdHJpbmcoaW1wbC0+c3RyaW5nKCkpOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTVN0cmluZ0xpc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9ET01TdHJpbmdMaXN0LmgKaW5kZXggMDU3ZGFjNDllY2ZmMmU1NjQ0
ZDFmNThhZDRmNGFkYjU5ZjBkYmMzYi4uNDY0ZmEyMmRiMjU2NjE2YTA1MzcxOGI3OWIyZDkzM2Y0
ZjIxMDUxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTVN0cmluZ0xpc3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NU3RyaW5nTGlzdC5oCkBAIC01Miw2ICs1Miw4IEBA
IHB1YmxpYzoKICAgICBTdHJpbmcgaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CiAgICAgYm9v
bCBjb250YWlucyhjb25zdCBTdHJpbmcmIHN0cikgY29uc3Q7CiAKKyAgICBvcGVyYXRvciBjb25z
dCBWZWN0b3I8U3RyaW5nPiYoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZ3M7IH0KKwogcHJpdmF0
ZToKICAgICBET01TdHJpbmdMaXN0KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCmluZGV4IDY0MWNjYzE0OGY5YTA3
OWY1YTMyNmQwZWViZjE3OWJhODljODNjYTMuLjcyMmE5NGIyMTVmN2UzMjdhYTkyNzA0ZGJmNWZl
YTcyZjIwMDBhN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbmRleGVkREJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckluZGV4ZWREQkFnZW50LmNwcApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIklEQkZh
Y3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCSW5kZXhCYWNrZW5kSW50ZXJm
YWNlLmgiCiAjaW5jbHVkZSAiSURCS2V5LmgiCisjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgogI2lu
Y2x1ZGUgIklEQktleVJhbmdlLmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50
ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvci5oIgpAQCAt
MjI1LDYgKzIyNiwyNSBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZh
Y2U+IGluZGV4Rm9yT2JqZWN0U3RvcmUoSURCT2JqZWN0U3RvcmVCYQogICAgIHJldHVybiBpZGJJ
bmRleDsKIH0KIAorc3RhdGljIFN0cmluZyBrZXlQYXRoVG9TdHJpbmcoY29uc3QgSURCS2V5UGF0
aCYga2V5UGF0aCkKK3sKKyAgICAvLyBGSVhNRTogUmVwbGFjZSB3aXRoIGhhbmRsZXJzIGZvciBu
dWxsL3N0cmluZy9hcnJheSB0eXBlcy4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODQzMDMKKyAgICBzd2l0Y2ggKGtleVBhdGgudHlwZSgpKSB7CisgICAg
Y2FzZSBJREJLZXlQYXRoOjpOdWxsVHlwZToKKyAgICAgICAgcmV0dXJuICIobm9uZSkiOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIElEQktleVBhdGg6OlN0cmluZ1R5cGU6CisgICAgICAgIHJl
dHVybiBrZXlQYXRoLnN0cmluZygpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIElEQktleVBh
dGg6OkFycmF5VHlwZToKKyAgICAgICAgcmV0dXJuICJbLi4uXSI7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9
CisKIGNsYXNzIERhdGFiYXNlTG9hZGVyQ2FsbGJhY2sgOiBwdWJsaWMgRXhlY3V0YWJsZVdpdGhE
YXRhYmFzZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RGF0YWJhc2VMb2FkZXJD
YWxsYmFjaz4gY3JlYXRlKEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpGcm9udGVuZFByb3ZpZGVy
KiBmcm9udGVuZFByb3ZpZGVyLCBpbnQgcmVxdWVzdElkKQpAQCAtMjYwLDcgKzI4MCw3IEBAIHB1
YmxpYzoKIAogICAgICAgICAgICAgICAgIFJlZlB0cjxPYmplY3RTdG9yZUluZGV4PiBvYmplY3RT
dG9yZUluZGV4ID0gT2JqZWN0U3RvcmVJbmRleDo6Y3JlYXRlKCkKICAgICAgICAgICAgICAgICAg
ICAgLnNldE5hbWUoaWRiSW5kZXgtPm5hbWUoKSkKLSAgICAgICAgICAgICAgICAgICAgLnNldEtl
eVBhdGgoaWRiSW5kZXgtPmtleVBhdGgoKSkKKyAgICAgICAgICAgICAgICAgICAgLnNldEtleVBh
dGgoa2V5UGF0aFRvU3RyaW5nKGlkYkluZGV4LT5rZXlQYXRoKCkpKQogICAgICAgICAgICAgICAg
ICAgICAuc2V0VW5pcXVlKGlkYkluZGV4LT51bmlxdWUoKSkKICAgICAgICAgICAgICAgICAgICAg
LnNldE11bHRpRW50cnkoaWRiSW5kZXgtPm11bHRpRW50cnkoKSk7CiAgICAgICAgICAgICAgICAg
aW5kZXhlcy0+YWRkSXRlbShvYmplY3RTdG9yZUluZGV4KTsKQEAgLTI2OCw3ICsyODgsNyBAQCBw
dWJsaWM6CiAKICAgICAgICAgICAgIFJlZlB0cjxPYmplY3RTdG9yZT4gb2JqZWN0U3RvcmUgPSBP
YmplY3RTdG9yZTo6Y3JlYXRlKCkKICAgICAgICAgICAgICAgICAuc2V0TmFtZShpZGJPYmplY3RT
dG9yZS0+bmFtZSgpKQotICAgICAgICAgICAgICAgIC5zZXRLZXlQYXRoKGlkYk9iamVjdFN0b3Jl
LT5rZXlQYXRoKCkpCisgICAgICAgICAgICAgICAgLnNldEtleVBhdGgoa2V5UGF0aFRvU3RyaW5n
KGlkYk9iamVjdFN0b3JlLT5rZXlQYXRoKCkpKQogICAgICAgICAgICAgICAgIC5zZXRJbmRleGVz
KGluZGV4ZXMpOwogICAgICAgICAgICAgb2JqZWN0U3RvcmVzLT5hZGRJdGVtKG9iamVjdFN0b3Jl
KTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vUGxhdGZvcm1TdXBwb3J0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Q
bGF0Zm9ybVN1cHBvcnQuaAppbmRleCBiYWVhYjA1ZWMxOWNiNWYzZTI5MGQ5ZDg4MGU1ZDc5MGUw
OTAwNWFkLi5hZjNlNWUzZmVhZGJmZGIzYmE4NTk2MDY3NWMzOGJmZWNmOWQ0NWU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaApA
QCAtNzgsNiArNzgsNyBAQCBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJbWFnZTsKIGNs
YXNzIElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlOwogY2xhc3MgSURCS2V5OworY2xhc3MgSURC
S2V5UGF0aDsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBLVVJMOwogY2xhc3MgU2VyaWFsaXplZFNj
cmlwdFZhbHVlOwpAQCAtMTgwLDkgKzE4MSw5IEBAIHB1YmxpYzoKICAgICAvLyBJbmRleGVkREIg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlPiBpZGJG
YWN0b3J5KCk7CiAgICAgLy8gRXh0cmFjdHMga2V5UGF0aCBmcm9tIHZhbHVlcyBhbmQgcmV0dXJu
cyB0aGUgY29ycmVzcG9uZGluZyBrZXlzLgotICAgIHN0YXRpYyB2b2lkIGNyZWF0ZUlEQktleXNG
cm9tU2VyaWFsaXplZFZhbHVlc0FuZEtleVBhdGgoY29uc3QgVmVjdG9yPFJlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+ID4mIHZhbHVlcywgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBWZWN0b3I8
UmVmUHRyPElEQktleT4gPiYga2V5cyk7CisgICAgc3RhdGljIHZvaWQgY3JlYXRlSURCS2V5c0Zy
b21TZXJpYWxpemVkVmFsdWVzQW5kS2V5UGF0aChjb25zdCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gPiYgdmFsdWVzLCBjb25zdCBJREJLZXlQYXRoJiwgVmVjdG9yPFJlZlB0
cjxJREJLZXk+ID4mIGtleXMpOwogICAgIC8vIEluamVjdHMga2V5IHZpYSBrZXlQYXRoIGludG8g
dmFsdWUuIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gaW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShQYXNz
UmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgY29uc3Qg
U3RyaW5nJiBrZXlQYXRoKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IGluamVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUoUGFzc1JlZlB0cjxJREJLZXk+
LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIGNvbnN0IElEQktleVBhdGgmKTsK
IAogICAgIC8vIEphdmFTY3JpcHQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgc3RhdGljIHZvaWQgbm90aWZ5SlNPdXRPZk1lbW9y
eShGcmFtZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9jaHJvbWl1bS9J
REJLZXlQYXRoQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9jaHJvbWl1
bS9JREJLZXlQYXRoQmFja2VuZEltcGwuY3BwCmluZGV4IGI4MDRhMGZmOGExNGZhNzcyMjU4MmQy
ZGMyNGU0ZWY4MWVhYTMwOTQuLmM4NmM3N2Q5NzczOWI1NTQ0MjBkNTg5YzcwOWEzZTdmMDZkZDFi
ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvY2hyb21pdW0vSURCS2V5UGF0
aEJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL2Nocm9taXVtL0lE
QktleVBhdGhCYWNrZW5kSW1wbC5jcHAKQEAgLTM0LDEyICszNCwxMiBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLXZvaWQgSURCS2V5UGF0aEJhY2tlbmRJbXBsOjpjcmVhdGVJREJLZXlzRnJv
bVNlcmlhbGl6ZWRWYWx1ZXNBbmRLZXlQYXRoKGNvbnN0IFZlY3RvcjxSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiwgMD4mIHZhbHVlcywgIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgVmVjdG9y
PFJlZlB0cjxJREJLZXk+LCAwPiYga2V5cykKK3ZvaWQgSURCS2V5UGF0aEJhY2tlbmRJbXBsOjpj
cmVhdGVJREJLZXlzRnJvbVNlcmlhbGl6ZWRWYWx1ZXNBbmRLZXlQYXRoKGNvbnN0IFZlY3RvcjxS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgMD4mIHZhbHVlcywgY29uc3QgSURCS2V5UGF0
aCYga2V5UGF0aCwgVmVjdG9yPFJlZlB0cjxJREJLZXk+LCAwPiYga2V5cykKIHsKICAgICBQbGF0
Zm9ybVN1cHBvcnQ6OmNyZWF0ZUlEQktleXNGcm9tU2VyaWFsaXplZFZhbHVlc0FuZEtleVBhdGgo
dmFsdWVzLCBrZXlQYXRoLCBrZXlzKTsKIH0KIAotUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IElEQktleVBhdGhCYWNrZW5kSW1wbDo6aW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRW
YWx1ZShQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gdmFsdWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKK1Bhc3NSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBJREJLZXlQYXRoQmFja2VuZEltcGw6OmluamVjdElEQktleUludG9TZXJp
YWxpemVkVmFsdWUoUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IHZhbHVlLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKQogewogICAgIHJl
dHVybiBQbGF0Zm9ybVN1cHBvcnQ6OmluamVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUoa2V5
LCB2YWx1ZSwga2V5UGF0aCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0RFUFMgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0RFUFMKaW5kZXggM2FjNTg2NDE5NmFhMmQ0
ZmNkMDQ5NzU5ODQxNDBjN2FkNDQ2ZDdmNy4uY2EwMDY5NWU4ZTdhZWI1MjEwZmNiZWMyNjkzMGZl
ZDc5ODljYmRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9ERVBTCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vREVQUwpAQCAtMzIsNyArMzIsNyBAQAogCiB2YXJzID0g
ewogICAnY2hyb21pdW1fc3ZuJzogJ2h0dHA6Ly9zcmMuY2hyb21pdW0ub3JnL3N2bi90cnVuay9z
cmMnLAotICAnY2hyb21pdW1fcmV2JzogJzEzNDU4MScKKyAgJ2Nocm9taXVtX3Jldic6ICcxMzQ1
MzcnCiB9CiAKIGRlcHMgPSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJJREJEYXRhYmFzZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
SURCRGF0YWJhc2UuaAppbmRleCBmNTNiMDJlMzlhN2I3MmZhZWRmYjVmYmMwZjA0ZThmYTMwZGEz
MTEzLi5iMzk4NTM0MTY1NTQzYTE5N2E2MTc5N2Q1NDc0OWRhODVlM2EzNTZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmgKQEAgLTI4LDcgKzI4
LDYgQEAKIAogI2luY2x1ZGUgIldlYkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJXZWJFeGNl
cHRpb25Db2RlLmgiCi0jaW5jbHVkZSAiV2ViSURCS2V5UGF0aC5oIgogI2luY2x1ZGUgInBsYXRm
b3JtL1dlYkNvbW1vbi5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTM2LDYgKzM1LDcgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYklEQkNhbGxiYWNr
czsKIGNsYXNzIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzOworY2xhc3MgV2ViSURCS2V5UGF0aDsK
IGNsYXNzIFdlYklEQk9iamVjdFN0b3JlOwogY2xhc3MgV2ViSURCVHJhbnNhY3Rpb247CiAKQEAg
LTU5LDEyICs1OSw2IEBAIHB1YmxpYzoKICAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICByZXR1cm4gV2ViRE9NU3RyaW5nTGlzdCgpOwogICAgIH0KLSAgICAvLyBG
SVhNRTogUmVtb3ZlIFdlYlN0cmluZyBrZXlQYXRoIG92ZXJsb2FkIG9uY2UgY2FsbGVycyBhcmUg
dXBkYXRlZC4KLSAgICAvLyBodHRwOi8vd2Via2l0Lm9yZy9iLzg0MjA3Ci0gICAgdmlydHVhbCBX
ZWJJREJPYmplY3RTdG9yZSogY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5nJiBuYW1l
LCBjb25zdCBXZWJTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgY29uc3QgV2Vi
SURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBXZWJFeGNlcHRpb25Db2RlJiBlYykKLSAgICB7
Ci0gICAgICAgIHJldHVybiBjcmVhdGVPYmplY3RTdG9yZShuYW1lLCBXZWJJREJLZXlQYXRoKGtl
eVBhdGgpLCBhdXRvSW5jcmVtZW50LCB0cmFuc2FjdGlvbiwgZWMpOwotICAgIH0KICAgICB2aXJ0
dWFsIFdlYklEQk9iamVjdFN0b3JlKiBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcm
LCBjb25zdCBXZWJJREJLZXlQYXRoJiwgYm9vbCwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBX
ZWJFeGNlcHRpb25Db2RlJikKICAgICB7CiAgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQklu
ZGV4LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJJbmRleC5oCmluZGV4
IDM3YWYwMmMwYzhiMzEzOWRkMzZhZWJjMDdiNWQzODE3NTYzYTBiNzYuLmMyZmYwMDFkMmU0Mzc5
M2U2NzdiNTc3YTNmNjNlY2ZjMjMzNDRjMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYklEQkluZGV4LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViSURCSW5kZXguaApAQCAtNTQsMTQgKzU0LDggQEAgcHVibGljOgogICAgIH0KICAg
ICB2aXJ0dWFsIFdlYklEQktleVBhdGgga2V5UGF0aCgpIGNvbnN0CiAgICAgewotICAgICAgICBy
ZXR1cm4gV2ViSURCS2V5UGF0aChrZXlQYXRoU3RyaW5nKCkpOwotICAgIH0KLSAgICAvLyBGSVhN
RTogUmVtb3ZlIG1ldGhvZCBvbmNlIGNhbGxlcnMgYXJlIHVwZGF0ZWQuCi0gICAgLy8gaHR0cDov
L3dlYmtpdC5vcmcvYi84NDIwNwotICAgIHZpcnR1YWwgV2ViU3RyaW5nIGtleVBhdGhTdHJpbmco
KSBjb25zdAotICAgIHsKICAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICByZXR1cm4gV2ViU3RyaW5nKCk7CisgICAgICAgIHJldHVybiBXZWJJREJLZXlQYXRoOjpj
cmVhdGVOdWxsKCk7CiAgICAgfQogICAgIHZpcnR1YWwgYm9vbCB1bmlxdWUoKSBjb25zdAogICAg
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQktleVBh
dGguaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQktleVBhdGguaAppbmRl
eCA5N2JhYzA2ZmZlODRhM2ZkMGQyM2EzZjE0YWQxMjk3MzkzNGYyYWU1Li5iZWIxZmEyMmQ4ZDA5
MWMyMGVkMWU1NWNjMmIzMDc3MTBiOWRkZjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJJREJLZXlQYXRoLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViSURCS2V5UGF0aC5oCkBAIC0zNiw2ICszNiw4IEBAIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gY2xhc3MgVmVjdG9yOwogY2xhc3MgU3RyaW5n
OwogfQogCituYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIElEQktleVBhdGg7IH0KKwogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYklEQktleVBhdGggewpAQCAtNDQsNyArNDYsNyBAQCBw
dWJsaWM6CiAgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViSURCS2V5UGF0aCBjcmVhdGUoY29u
c3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mKTsKICAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJJ
REJLZXlQYXRoIGNyZWF0ZU51bGwoKTsKICAgICBXRUJLSVRfRVhQT1JUIFdlYklEQktleVBhdGgo
Y29uc3QgV2ViSURCS2V5UGF0aCYpOwotICAgIH5XZWJJREJLZXlQYXRoKCkgeyByZXNldCgpOyB9
CisgICAgV0VCS0lUX0VYUE9SVCB+V2ViSURCS2V5UGF0aCgpOwogCiAgICAgZW51bSBUeXBlIHsK
ICAgICAgICAgTnVsbFR5cGUgPSAwLApAQCAtNTQsMzAgKzU2LDE3IEBAIHB1YmxpYzoKIAogICAg
IFdFQktJVF9FWFBPUlQgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CiAgICAgV0VCS0lUX0VYUE9SVCBU
eXBlIHR5cGUoKSBjb25zdDsKLSAgICAvLyBGSVhNRTogQXJyYXktdHlwZSBrZXkgcGF0aHMgbm90
IHlldCBzdXBwb3J0ZWQuIGh0dHA6Ly93ZWJraXQub3JnL2IvODQyMDcKLSAgICBXZWJWZWN0b3I8
V2ViU3RyaW5nPiBhcnJheSgpIGNvbnN0IHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyBy
ZXR1cm4gV2ViVmVjdG9yPFdlYlN0cmluZz4oKTsgfQotICAgIFdFQktJVF9FWFBPUlQgV2ViU3Ry
aW5nIHN0cmluZygpIGNvbnN0OwotCi0gICAgLy8gRklYTUU6IFJlbW92ZSB0aGVzZSBvbmNlIGNh
bGxlcnMgYXJlIHVwZGF0ZWQuIGh0dHA6Ly93ZWJraXQub3JnL2IvODQyMDcKLSAgICBXRUJLSVRf
RVhQT1JUIFdlYklEQktleVBhdGgoY29uc3QgV2ViU3RyaW5nJik7Ci0gICAgb3BlcmF0b3IgY29u
c3QgV2ViU3RyaW5nICgpIGNvbnN0IHsgcmV0dXJuIHN0cmluZygpOyB9Ci0gICAgV0VCS0lUX0VY
UE9SVCBpbnQgcGFyc2VFcnJvcigpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhc3Np
Z24oY29uc3QgV2ViSURCS2V5UGF0aCYpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXNldCgp
OworICAgIFdFQktJVF9FWFBPUlQgV2ViVmVjdG9yPFdlYlN0cmluZz4gYXJyYXkoKSBjb25zdDsg
Ly8gT25seSB2YWxpZCBmb3IgQXJyYXlUeXBlLgorICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5n
IHN0cmluZygpIGNvbnN0OyAvLyBPbmx5IHZhbGlkIGZvciBTdHJpbmdUeXBlLgogCiAjaWYgV0VC
S0lUX0lNUExFTUVOVEFUSU9OCi0gICAgb3BlcmF0b3IgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpT
dHJpbmcsIDA+JiAoKSBjb25zdDsKKyAgICBXZWJJREJLZXlQYXRoKGNvbnN0IFdlYkNvcmU6OklE
QktleVBhdGgmKTsKKyAgICBXZWJJREJLZXlQYXRoJiBvcGVyYXRvcj0oY29uc3QgV2ViQ29yZTo6
SURCS2V5UGF0aCYpOworICAgIG9wZXJhdG9yIGNvbnN0IFdlYkNvcmU6OklEQktleVBhdGgmKCkg
Y29uc3Q7CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBXZWJJREJLZXlQYXRoKCk7Ci0KLSNpZiBX
RUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBXZWJJREJLZXlQYXRoKGNvbnN0IFdURjo6VmVjdG9y
PFdURjo6U3RyaW5nLCAwPiYsIGludCBwYXJzZUVycm9yKTsKLSNlbmRpZgotCi0gICAgV2ViUHJp
dmF0ZU93blB0cjxXVEY6OlZlY3RvcjxXVEY6OlN0cmluZywgMD4gPiBtX3ByaXZhdGU7Ci0gICAg
aW50IG1fcGFyc2VFcnJvcjsKKyAgICBXZWJQcml2YXRlT3duUHRyPFdlYkNvcmU6OklEQktleVBh
dGg+IG1fcHJpdmF0ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCT2JqZWN0U3RvcmUuaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQk9iamVjdFN0b3JlLmgKaW5kZXggZGNmNDg1
NjkyNTEwY2ZmOWI4MWY2NGUwZDE3YjAyYmRiODFhOWRjNC4uOThlMDQ4YzNhMTFhMGZiMTM1Y2I1
NzZjYTQ4OWUxOWRkZjI5NTBiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViSURCT2JqZWN0U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJJREJPYmplY3RTdG9yZS5oCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiV2Vi
RE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIldlYklEQkNhbGxiYWNrcy5oIgogI2luY2x1ZGUg
IldlYklEQktleVBhdGguaCIKLSNpbmNsdWRlICJXZWJJREJUcmFuc2FjdGlvbi5oIgogI2luY2x1
ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5o
IgogCkBAIC01MSwxMiArNTAsOCBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgV2ViSURC
S2V5UGF0aCBrZXlQYXRoKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBXZWJJREJLZXlQ
YXRoKGtleVBhdGhTdHJpbmcoKSk7Ci0gICAgfQotICAgIHZpcnR1YWwgV2ViU3RyaW5nIGtleVBh
dGhTdHJpbmcoKSBjb25zdAotICAgIHsKICAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICByZXR1cm4gV2ViU3RyaW5nKCk7CisgICAgICAgIHJldHVybiBXZWJJREJL
ZXlQYXRoOjpjcmVhdGVOdWxsKCk7CiAgICAgfQogICAgIHZpcnR1YWwgV2ViRE9NU3RyaW5nTGlz
dCBpbmRleE5hbWVzKCkgY29uc3QKICAgICB7CkBAIC03NiwxMyArNzEsNiBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1bmN0aW9uKGNvbnN0IFdlYklEQktleSYsIFdlYklEQkNh
bGxiYWNrcyosIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpIHsg
V0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1
bmN0aW9uKGNvbnN0IFdlYklEQktleVJhbmdlJiwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2Vi
SURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJikgeyBXRUJLSVRfQVNTRVJUX05PVF9S
RUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2xlYXIoV2ViSURCQ2FsbGJhY2tzKiwgY29u
c3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJikgeyBXRUJLSVRfQVNTRVJU
X05PVF9SRUFDSEVEKCk7IH0KLQotICAgIC8vIEZJWE1FOiBSZW1vdmUgV2ViU3RyaW5nIGtleVBh
dGggb3ZlcmxvYWQgb25jZSBjYWxsZXJzIGFyZSB1cGRhdGVkLgotICAgIC8vIGh0dHA6Ly93ZWJr
aXQub3JnL2IvODQyMDcKLSAgICB2aXJ0dWFsIFdlYklEQkluZGV4KiBjcmVhdGVJbmRleChjb25z
dCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUs
IGJvb2wgbXVsdGlFbnRyeSwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBX
ZWJFeGNlcHRpb25Db2RlJiBlYykKLSAgICB7Ci0gICAgICAgIHJldHVybiBjcmVhdGVJbmRleChu
YW1lLCBXZWJJREJLZXlQYXRoKGtleVBhdGgpLCB1bmlxdWUsIG11bHRpRW50cnksIHRyYW5zYWN0
aW9uLCBlYyk7Ci0gICAgfQogICAgIHZpcnR1YWwgV2ViSURCSW5kZXgqIGNyZWF0ZUluZGV4KGNv
bnN0IFdlYlN0cmluZyYsIGNvbnN0IFdlYklEQktleVBhdGgmLCBib29sLCBib29sLCBjb25zdCBX
ZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKQogICAgIHsKICAgICAgICAgV0VC
S0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmggYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaAppbmRl
eCBjYTM3NjJkY2JlYmU0YmYyYmJhYTZkMDAwMTRmOGFhNDNmODUxNGYyLi41NjM4MDQxNTRmOTNh
MDMzYWU1N2YyZTk2MjQzNDNkYjljNjM4NzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQu
aApAQCAtMzEsNyArMzEsNiBAQAogI2lmbmRlZiBXZWJLaXRQbGF0Zm9ybVN1cHBvcnRfaAogI2Rl
ZmluZSBXZWJLaXRQbGF0Zm9ybVN1cHBvcnRfaAogCi0jaW5jbHVkZSAiLi4vV2ViSURCS2V5UGF0
aC5oIiAvLyBGSVhNRTogUmVtb3ZlIHdpdGg6IGh0dHA6Ly93ZWJraXQub3JnL2IvODQyMDcKICNp
bmNsdWRlICJXZWJDb21tb24uaCIKICNpbmNsdWRlICJXZWJHcmFwaGljc0NvbnRleHQzRC5oIgog
I2luY2x1ZGUgIldlYkxvY2FsaXplZFN0cmluZy5oIgpAQCAtNTcsNiArNTYsNyBAQCBjbGFzcyBX
ZWJGaWxlU3lzdGVtOwogY2xhc3MgV2ViRmlsZVV0aWxpdGllczsKIGNsYXNzIFdlYklEQkZhY3Rv
cnk7IC8vIEZJWE1FOiBEb2VzIHRoaXMgYmVsb25nIGluIHBsYXRmb3JtPwogY2xhc3MgV2ViSURC
S2V5OyAvLyBGSVhNRTogRG9lcyB0aGlzIGJlbG9uZyBpbiBwbGF0Zm9ybT8KK2NsYXNzIFdlYklE
QktleVBhdGg7IC8vIEZJWE1FOiBEb2VzIHRoaXMgYmVsb25nIGluIHBsYXRmb3JtPwogY2xhc3Mg
V2ViTWVzc2FnZVBvcnRDaGFubmVsOyAvLyBGSVhNRTogRG9lcyB0aGlzIGJlbG9uZyBpbiBwbGF0
Zm9ybT8KIGNsYXNzIFdlYlBsdWdpbkxpc3RCdWlsZGVyOyAvLyBGSVhNRTogRG9lcyB0aGlzIGJl
bG9uZyBpbiBwbGF0Zm9ybT8KIGNsYXNzIFdlYlNhbmRib3hTdXBwb3J0OwpAQCAtMTI3LDEzICsx
MjcsNyBAQCBwdWJsaWM6CiAgICAgLy8gSW5kZXhlZCBEYXRhYmFzZSAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKICAgICB2aXJ0dWFsIFdlYklE
QkZhY3RvcnkqIGlkYkZhY3RvcnkoKSB7IHJldHVybiAwOyB9Ci0gICAgLy8gRklYTUU6IFJlbW92
ZSBXZWJTdHJpbmcga2V5UGF0aCBvdmVybG9hZCBvbmNlIGNhbGxlcnMgYXJlIHVwZGF0ZWQuCi0g
ICAgLy8gaHR0cDovL3dlYmtpdC5vcmcvYi84NDIwNwotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVJ
REJLZXlzRnJvbVNlcmlhbGl6ZWRWYWx1ZXNBbmRLZXlQYXRoKGNvbnN0IFdlYlZlY3RvcjxXZWJT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+JiB2YWx1ZXMsICBjb25zdCBXZWJTdHJpbmcmIGtleVBhdGgs
IFdlYlZlY3RvcjxXZWJJREJLZXk+JiBrZXlzKSB7IGNyZWF0ZUlEQktleXNGcm9tU2VyaWFsaXpl
ZFZhbHVlc0FuZEtleVBhdGgodmFsdWVzLCBXZWJJREJLZXlQYXRoKGtleVBhdGgpLCBrZXlzKTsg
fQogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVJREJLZXlzRnJvbVNlcmlhbGl6ZWRWYWx1ZXNBbmRL
ZXlQYXRoKGNvbnN0IFdlYlZlY3RvcjxXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiB2YWx1ZXMs
ICBjb25zdCBXZWJJREJLZXlQYXRoJiBrZXlQYXRoLCBXZWJWZWN0b3I8V2ViSURCS2V5PiYga2V5
cykgeyB9Ci0gICAgLy8gRklYTUU6IFJlbW92ZSBXZWJTdHJpbmcga2V5UGF0aCBvdmVybG9hZCBv
bmNlIGNhbGxlcnMgYXJlIHVwZGF0ZWQuCi0gICAgLy8gaHR0cDovL3dlYmtpdC5vcmcvYi84NDIw
NwotICAgIHZpcnR1YWwgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlIGluamVjdElEQktleUludG9T
ZXJpYWxpemVkVmFsdWUoY29uc3QgV2ViSURCS2V5JiBrZXksIGNvbnN0IFdlYlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IFdlYlN0cmluZyYga2V5UGF0aCkgeyByZXR1cm4gaW5q
ZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShrZXksIHZhbHVlLCBXZWJJREJLZXlQYXRoKGtl
eVBhdGgpKTsgfQogICAgIHZpcnR1YWwgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlIGluamVjdElE
QktleUludG9TZXJpYWxpemVkVmFsdWUoY29uc3QgV2ViSURCS2V5JiBrZXksIGNvbnN0IFdlYlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IFdlYklEQktleVBhdGgmIGtleVBhdGgp
IHsgcmV0dXJuIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgpOyB9CiAKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAppbmRleCA2OWU1
OTYyMjlmNDNkMmZkZTQ1Y2RiNGEwNzBjNWQ3ZDNkNjA4YmU5Li44NGIyNTJlZDI2NWFlMjFjYjE4
YzkxYmFhMWI3MmY4MjFmODVmNmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcApAQCAtNTIsNiArNTIsNyBAQAogI2luY2x1ZGUg
IklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSURCRmFjdG9yeUJhY2tlbmRJbnRl
cmZhY2UuaCIKICNpbmNsdWRlICJJREJLZXkuaCIKKyNpbmNsdWRlICJJREJLZXlQYXRoLmgiCiAj
aW5jbHVkZSAiSWNlT3B0aW9ucy5oIgogI2luY2x1ZGUgIkljb25VUkwuaCIKICNpbmNsdWRlICJN
ZWRpYVBsYXllci5oIgpAQCAtODQsNiArODUsNyBAQAogI2luY2x1ZGUgIldlYklEQkRhdGFiYXNl
RXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiV2ViSURCRmFjdG9yeS5oIgogI2luY2x1ZGUgIldlYklE
QktleS5oIgorI2luY2x1ZGUgIldlYklEQktleVBhdGguaCIKICNpbmNsdWRlICJXZWJJY29uVVJM
LmgiCiAjaW5jbHVkZSAiV2ViSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViTWVkaWFQbGF5
ZXIuaCIKQEAgLTQ2MywxMiArNDY1LDE4IEBAIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0o
V2ViVmlldzo6VXNlclN0eWxlSW5qZWN0SW5TdWJzZXF1ZW50RG9jdW1lbnRzLCBJbmplCiBDT01Q
SUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYklEQkRhdGFiYXNlRXhjZXB0aW9uRGF0YUVycm9y
LCBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlIpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTShXZWJJREJEYXRhYmFzZUV4Y2VwdGlvblF1b3RhRXJyb3IsIElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpRVU9UQV9FUlIpOwogCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiBDT01Q
SUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYklEQktleTo6SW52YWxpZFR5cGUsIElEQktleTo6
SW52YWxpZFR5cGUpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJLZXk6OkFy
cmF5VHlwZSwgSURCS2V5OjpBcnJheVR5cGUpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5V
TShXZWJJREJLZXk6OlN0cmluZ1R5cGUsIElEQktleTo6U3RyaW5nVHlwZSk7CiBDT01QSUxFX0FT
U0VSVF9NQVRDSElOR19FTlVNKFdlYklEQktleTo6RGF0ZVR5cGUsIElEQktleTo6RGF0ZVR5cGUp
OwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJLZXk6Ok51bWJlclR5cGUsIElE
QktleTo6TnVtYmVyVHlwZSk7CiAKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViSURC
S2V5UGF0aDo6TnVsbFR5cGUsIElEQktleVBhdGg6Ok51bGxUeXBlKTsKK0NPTVBJTEVfQVNTRVJU
X01BVENISU5HX0VOVU0oV2ViSURCS2V5UGF0aDo6U3RyaW5nVHlwZSwgSURCS2V5UGF0aDo6U3Ry
aW5nVHlwZSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYklEQktleVBhdGg6OkFy
cmF5VHlwZSwgSURCS2V5UGF0aDo6QXJyYXlUeXBlKTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKEZJ
TEVfU1lTVEVNKQogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJGaWxlU3lzdGVtOjpU
eXBlVGVtcG9yYXJ5LCBBc3luY0ZpbGVTeXN0ZW06OlRlbXBvcmFyeSk7CiBDT01QSUxFX0FTU0VS
VF9NQVRDSElOR19FTlVNKFdlYkZpbGVTeXN0ZW06OlR5cGVQZXJzaXN0ZW50LCBBc3luY0ZpbGVT
eXN0ZW06OlBlcnNpc3RlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwCmluZGV4IDE3OTc5OTI3NWQ2Zjk5NzYzMDE3
N2U1YTI4YmQ5M2JhMzE3MjYwNGYuLjZlNTM1NDk5YTM4YzRhOTM1MDlhNmU0ZjU1NmNmOThhYzhm
MjAwNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNl
QmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRh
YmFzZUJhY2tlbmRQcm94eS5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgUGFzc1JlZlB0cjxET01TdHJp
bmdMaXN0PiBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6b2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0
CiAgICAgcmV0dXJuIG1fd2ViSURCRGF0YWJhc2UtPm9iamVjdFN0b3JlTmFtZXMoKTsKIH0KIAot
UGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IElEQkRhdGFiYXNlQmFj
a2VuZFByb3h5OjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURC
T2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6Y3Jl
YXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQ
YXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSog
dHJhbnNhY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIC8vIFRoZSB0cmFuc2FjdGlv
biBwb2ludGVyIGlzIGd1YXJhbnRlZWQgdG8gYmUgYSBwb2ludGVyIHRvIGEgcHJveHkgb2JqZWN0
IGFzLCBpbiB0aGUgcmVuZGVyZXIsCiAgICAgLy8gYWxsIGltcGxlbWVudGF0aW9ucyBvZiBJREIg
aW50ZXJmYWNlcyBhcmUgcHJveHkgb2JqZWN0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oCmluZGV4IDVhNWJhZjI4ZjA5NmE5
OTQ3ZmFiMDUyZmVkYjFlOWFlMzc3ZWE2NWEuLmI3OGFjNjk5MmNkY2ZmMTM4N2E5ZWMwOGIzODY4
ZWI2Y2ZjNDMzOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRh
dGFiYXNlQmFja2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURC
RGF0YWJhc2VCYWNrZW5kUHJveHkuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBTdHJpbmcgdmVyc2lvbigpIGNvbnN0OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJD
b3JlOjpET01TdHJpbmdMaXN0PiBvYmplY3RTdG9yZU5hbWVzKCkgY29uc3Q7CiAKLSAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBj
cmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0
aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCBQYXNzUmVmUHRy
PFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gY3JlYXRlT2JqZWN0U3Rv
cmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJDb3JlOjpJREJLZXlQYXRoJiwgYm9vbCBh
dXRvSW5jcmVtZW50LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBX
ZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0
b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRW
ZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxs
YmFja3M+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgV2ViQ29y
ZTo6RXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uKFdlYkNvcmU6OkRPTVN0cmlu
Z0xpc3QqIHN0b3JlTmFtZXMsIHVuc2lnbmVkIHNob3J0IG1vZGUsIFdlYkNvcmU6OkV4Y2VwdGlv
bkNvZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkluZGV4
QmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkluZGV4QmFj
a2VuZFByb3h5LmNwcAppbmRleCAwMDE0ZjI5NTk2YWViM2ExYWMzM2FiN2NiZTZjYzUzODA5MjIy
YmE2Li41YmM0MmU2ZGIxZjI0YjM2NmE3YWUxYzY3OGNkYzlkYTIzMjE0NTgwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJJbmRleEJhY2tlbmRQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCSW5kZXhCYWNrZW5kUHJveHkuY3BwCkBA
IC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKICNpbmNsdWRl
ICJJREJDYWxsYmFja3MuaCIKKyNpbmNsdWRlICJJREJLZXlQYXRoLmgiCiAjaW5jbHVkZSAiSURC
S2V5UmFuZ2UuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eS5oIgogI2lu
Y2x1ZGUgIldlYklEQkNhbGxiYWNrc0ltcGwuaCIKQEAgLTY1LDkgKzY2LDkgQEAgU3RyaW5nIElE
QkluZGV4QmFja2VuZFByb3h5OjpzdG9yZU5hbWUoKQogICAgIHJldHVybiBtX3dlYklEQkluZGV4
LT5zdG9yZU5hbWUoKTsKIH0KIAotU3RyaW5nIElEQkluZGV4QmFja2VuZFByb3h5OjprZXlQYXRo
KCkKK0lEQktleVBhdGggSURCSW5kZXhCYWNrZW5kUHJveHk6OmtleVBhdGgoKQogewotICAgIHJl
dHVybiBtX3dlYklEQkluZGV4LT5rZXlQYXRoKCkuc3RyaW5nKCk7CisgICAgcmV0dXJuIG1fd2Vi
SURCSW5kZXgtPmtleVBhdGgoKTsKIH0KIAogYm9vbCBJREJJbmRleEJhY2tlbmRQcm94eTo6dW5p
cXVlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkluZGV4QmFj
a2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJJbmRleEJhY2tlbmRQ
cm94eS5oCmluZGV4IDQyZTBlYWJiZWUxN2ExNjcwODc4ZjcwMDViMzA5ZTViZDEyMDhjZDAuLjA2
NzAwNTIxMGRlMjYzOGY3NTJkNDljNTU2OTY5Y2VkNmVlODU1ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkluZGV4QmFja2VuZFByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCSW5kZXhCYWNrZW5kUHJveHkuaApAQCAtMjksNiArMjks
NyBAQAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiSURCSW5kZXhC
YWNrZW5kSW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgogI2luY2x1ZGUgPHd0
Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCkBAIC00Myw3ICs0NCw3
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgU3RyaW5nIG5hbWUoKTsKICAgICB2aXJ0dWFsIFN0
cmluZyBzdG9yZU5hbWUoKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBrZXlQYXRoKCk7CisgICAgdmly
dHVhbCBXZWJDb3JlOjpJREJLZXlQYXRoIGtleVBhdGgoKTsKICAgICB2aXJ0dWFsIGJvb2wgdW5p
cXVlKCk7CiAgICAgdmlydHVhbCBib29sIG11bHRpRW50cnkoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuY3Bw
CmluZGV4IDIxYTVkZDg1NmRjM2I4MDU5ODk3N2MwNDg2MmViODZkZmU4NzljMGQuLmRiMWE0NGE2
YTJhOTgyNGQxYjFhMWVlNDkxZjE2YjkyNTZiMDU5ZjYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5jcHAKQEAg
LTY0LDkgKzY0LDkgQEAgU3RyaW5nIElEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjpuYW1lKCkg
Y29uc3QKICAgICByZXR1cm4gbV93ZWJJREJPYmplY3RTdG9yZS0+bmFtZSgpOwogfQogCi1TdHJp
bmcgSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OmtleVBhdGgoKSBjb25zdAorSURCS2V5UGF0
aCBJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eTo6a2V5UGF0aCgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1fd2ViSURCT2JqZWN0U3RvcmUtPmtleVBhdGgoKS5zdHJpbmcoKTsKKyAgICByZXR1cm4g
bV93ZWJJREJPYmplY3RTdG9yZS0+a2V5UGF0aCgpOwogfQogCiBQYXNzUmVmUHRyPERPTVN0cmlu
Z0xpc3Q+IElEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjppbmRleE5hbWVzKCkgY29uc3QKQEAg
LTExNCw3ICsxMTQsNyBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjpjbGVhcihQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBJREJUcgogICAgIG1fd2ViSURCT2Jq
ZWN0U3RvcmUtPmNsZWFyKG5ldyBXZWJJREJDYWxsYmFja3NJbXBsKGNhbGxiYWNrcyksICp0cmFu
c2FjdGlvblByb3h5LT5nZXRXZWJJREJUcmFuc2FjdGlvbigpLCBlYyk7CiB9CiAKLVBhc3NSZWZQ
dHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eTo6
Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJv
b2wgdW5pcXVlLCBib29sIG11bHRpRW50cnksIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZSogdHJhbnNhY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJJbmRleEJh
Y2tlbmRJbnRlcmZhY2U+IElEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjpjcmVhdGVJbmRleChj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgdW5pcXVl
LCBib29sIG11bHRpRW50cnksIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNh
Y3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIC8vIFRoZSB0cmFuc2FjdGlvbiBwb2lu
dGVyIGlzIGd1YXJhbnRlZWQgdG8gYmUgYSBwb2ludGVyIHRvIGEgcHJveHkgb2JqZWN0IGFzLCBp
biB0aGUgcmVuZGVyZXIsCiAgICAgLy8gYWxsIGltcGxlbWVudGF0aW9ucyBvZiBJREIgaW50ZXJm
YWNlcyBhcmUgcHJveHkgb2JqZWN0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0lEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5oCmluZGV4IDVlMTE4OTE4NmFhMWRh
MmMxNGM1OThkODY0MjQ2MmVlN2RkNGVjZGYuLjBjMmQ4MzhmZWRkMTBiZWI5ZjI4ZWE5OWZmNzc0
OGQyMjc1MmU3ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9i
amVjdFN0b3JlQmFja2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
SURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5B
QkxFKElOREVYRURfREFUQUJBU0UpCiAKKyNpbmNsdWRlICJJREJLZXlQYXRoLmgiCiAjaW5jbHVk
ZSAiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSA8d3RmL093blB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CkBAIC00Myw3ICs0NCw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eSgpOwogCiAgICAgdmly
dHVhbCBTdHJpbmcgbmFtZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgU3RyaW5nIGtleVBhdGgoKSBj
b25zdDsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OklEQktleVBhdGgga2V5UGF0aCgpIGNvbnN0Owog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpET01TdHJpbmdMaXN0PiBpbmRleE5hbWVz
KCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0KFBhc3NSZWZQdHI8V2ViQ29yZTo6SURC
S2V5UmFuZ2U+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFdlYkNvcmU6OklE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsK
QEAgLTUyLDcgKzUzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVGdW5jdGlv
bihQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleVJhbmdlPiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJ
REJDYWxsYmFja3M+LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBX
ZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyKFBhc3NSZWZQ
dHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwogCi0gICAgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZUluZGV4KGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVu
dHJ5LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3JlOjpF
eGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJJbmRleEJhY2tlbmRJ
bnRlcmZhY2U+IGNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgV2ViQ29yZTo6
SURCS2V5UGF0aCYsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnksIFdlYkNvcmU6OklEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKICAg
ICBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEludGVyZmFjZT4gaW5kZXgoY29u
c3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBkZWxl
dGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAKaW5kZXggZGU5ODEwZGJkMjk5Yzdl
ZTU0ZTAxZjNmNmRkM2Y5MTZlY2FhOWU3MS4uZDMwNGU2MTA2NjcwODQ2MGUyNjg5NmExMjM3NzYz
YjFlNGJkZjc5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZv
cm1TdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1
cHBvcnQuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiV2ViRnJhbWVDbGllbnQuaCIK
ICNpbmNsdWRlICJXZWJGcmFtZUltcGwuaCIKICNpbmNsdWRlICJXZWJJREJLZXkuaCIKKyNpbmNs
dWRlICJXZWJJREJLZXlQYXRoLmgiCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSAiV2Vi
UGx1Z2luQ29udGFpbmVySW1wbC5oIgogI2luY2x1ZGUgIldlYlBsdWdpbkxpc3RCdWlsZGVySW1w
bC5oIgpAQCAtNTE1LDcgKzUxNiw3IEBAIFBhc3NSZWZQdHI8SURCRmFjdG9yeUJhY2tlbmRJbnRl
cmZhY2U+IFBsYXRmb3JtU3VwcG9ydDo6aWRiRmFjdG9yeSgpCiAgICAgcmV0dXJuIElEQkZhY3Rv
cnlCYWNrZW5kUHJveHk6OmNyZWF0ZSgpOwogfQogCi12b2lkIFBsYXRmb3JtU3VwcG9ydDo6Y3Jl
YXRlSURCS2V5c0Zyb21TZXJpYWxpemVkVmFsdWVzQW5kS2V5UGF0aChjb25zdCBWZWN0b3I8UmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gPiYgdmFsdWVzLCBjb25zdCBTdHJpbmcmIGtleVBh
dGgsIFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+JiBrZXlzKQordm9pZCBQbGF0Zm9ybVN1cHBvcnQ6
OmNyZWF0ZUlEQktleXNGcm9tU2VyaWFsaXplZFZhbHVlc0FuZEtleVBhdGgoY29uc3QgVmVjdG9y
PFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+ID4mIHZhbHVlcywgY29uc3QgSURCS2V5UGF0
aCYga2V5UGF0aCwgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mIGtleXMpCiB7CiAgICAgV2ViVmVj
dG9yPFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gd2ViVmFsdWVzID0gdmFsdWVzOwogICAgIFdl
YlZlY3RvcjxXZWJJREJLZXk+IHdlYktleXM7CkBAIC01MjcsNyArNTI4LDcgQEAgdm9pZCBQbGF0
Zm9ybVN1cHBvcnQ6OmNyZWF0ZUlEQktleXNGcm9tU2VyaWFsaXplZFZhbHVlc0FuZEtleVBhdGgo
Y29uc3QgVmVjdG9yPFIKICAgICAgICAga2V5cy5hcHBlbmQoUGFzc1JlZlB0cjxJREJLZXk+KHdl
YktleXNbaV0pKTsKIH0KIAotUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFBsYXRm
b3JtU3VwcG9ydDo6aW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShQYXNzUmVmUHRyPElE
QktleT4ga2V5LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIGNvbnN0
IFN0cmluZyYga2V5UGF0aCkKK1Bhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBQbGF0
Zm9ybVN1cHBvcnQ6OmluamVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUoUGFzc1JlZlB0cjxJ
REJLZXk+IGtleSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBjb25z
dCBJREJLZXlQYXRoJiBrZXlQYXRoKQogewogICAgIHJldHVybiB3ZWJLaXRQbGF0Zm9ybVN1cHBv
cnQoKS0+aW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShrZXksIHZhbHVlLCBrZXlQYXRo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFi
YXNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUlt
cGwuY3BwCmluZGV4IDQ0N2I5OTNjNmE0ZjkwN2RjMDQzYTdhMmY1NGFjNTY4NmQ2Mzk4MTkuLjRi
ZTQzZGMxNGQ4MTdkOTU5YWVmNThhMTZhZWNmNDg1YmNiNWI2YmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcApAQCAtNjYsNyArNjYs
NyBAQCBXZWJET01TdHJpbmdMaXN0IFdlYklEQkRhdGFiYXNlSW1wbDo6b2JqZWN0U3RvcmVOYW1l
cygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGF0YWJhc2VCYWNrZW5kLT5vYmplY3RTdG9yZU5hbWVz
KCk7CiB9CiAKLVdlYklEQk9iamVjdFN0b3JlKiBXZWJJREJEYXRhYmFzZUltcGw6OmNyZWF0ZU9i
amVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBrZXlQYXRo
LCBib29sIGF1dG9JbmNyZW1lbnQsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlv
biwgV2ViRXhjZXB0aW9uQ29kZSYgZWMpCitXZWJJREJPYmplY3RTdG9yZSogV2ViSURCRGF0YWJh
c2VJbXBsOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdl
YklEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgY29uc3QgV2ViSURCVHJh
bnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBXZWJFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBSZWZQ
dHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBvYmplY3RTdG9yZSA9IG1fZGF0YWJh
c2VCYWNrZW5kLT5jcmVhdGVPYmplY3RTdG9yZShuYW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50
LCB0cmFuc2FjdGlvbi5nZXRJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UoKSwgZWMpOwog
ICAgIGlmICghb2JqZWN0U3RvcmUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSURCRGF0YWJhc2VJbXBsLmgKaW5kZXggZjczYmU1NzA1NGY2MmFiNGMyNTQxNDAyZDdmMTQ3
ZDg2N2FlZjNkNy4uOTY1NzFiYmU5YzFkOTZjYmQzZjljN2QzYWQ4MzE3OWI5NjE5M2RkOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgKQEAg
LTUzLDEwICs1Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFdlYlN0cmluZyB2ZXJzaW9uKCkg
Y29uc3Q7CiAgICAgdmlydHVhbCBXZWJET01TdHJpbmdMaXN0IG9iamVjdFN0b3JlTmFtZXMoKSBj
b25zdDsKIAotICAgIC8vIEZJWE1FOiBSZW1vdmUgV2ViU3RyaW5nIGtleVBhdGggb3ZlcmxvYWQg
b25jZSBjYWxsZXJzIGFyZSB1cGRhdGVkLgotICAgIC8vIGh0dHA6Ly93ZWJraXQub3JnL2IvODQy
MDcKLSAgICB2aXJ0dWFsIFdlYklEQk9iamVjdFN0b3JlKiBjcmVhdGVPYmplY3RTdG9yZShjb25z
dCBXZWJTdHJpbmcmLCBjb25zdCBXZWJTdHJpbmcmLCBib29sLCBjb25zdCBXZWJJREJUcmFuc2Fj
dGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2aXJ0dWFsIFdlYklEQk9iamVjdFN0b3Jl
KiBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYklEQktl
eVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgY29uc3QgV2ViSURCVHJhbnNhY3Rp
b24mIHRyYW5zYWN0aW9uLCBXZWJFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gY3JlYXRlT2Jq
ZWN0U3RvcmUobmFtZSwga2V5UGF0aC5zdHJpbmcoKSwgYXV0b0luY3JlbWVudCwgdHJhbnNhY3Rp
b24sIGVjKTsgfQorICAgIHZpcnR1YWwgV2ViSURCT2JqZWN0U3RvcmUqIGNyZWF0ZU9iamVjdFN0
b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCS2V5UGF0aCYsIGJvb2wgYXV0
b0luY3JlbWVudCwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7
CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFt
ZSwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7CiAgICAgdmly
dHVhbCB2b2lkIHNldFZlcnNpb24oY29uc3QgV2ViU3RyaW5nJiB2ZXJzaW9uLCBXZWJJREJDYWxs
YmFja3MqLCBXZWJFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCBXZWJJREJUcmFuc2FjdGlv
biogdHJhbnNhY3Rpb24oY29uc3QgV2ViRE9NU3RyaW5nTGlzdCYgbmFtZXMsIHVuc2lnbmVkIHNo
b3J0IG1vZGUsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYklEQkluZGV4SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJREJJbmRleEltcGwuY3BwCmluZGV4IDE3MDkzOTU2NzQwOTYwMmQ4OGY0N2E2NWY1
MDNhOWNlYjgyN2RhYjUuLmQ3OGIyYjNhNjA4YzhhMzc5Yzk4M2IwODAzOThkYWRiY2JhZjE5OTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkluZGV4SW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCSW5kZXhJbXBsLmNwcApA
QCAtNjMsMTMgKzYzLDYgQEAgV2ViSURCS2V5UGF0aCBXZWJJREJJbmRleEltcGw6OmtleVBhdGgo
KSBjb25zdAogICAgIHJldHVybiBXZWJJREJLZXlQYXRoKG1fYmFja2VuZC0+a2V5UGF0aCgpKTsK
IH0KIAotLy8gRklYTUU6IFJlbW92ZSB0aGlzIG1ldGhvZCBvbmNlIGNhbGxlcnMgYXJlIHVwZGF0
ZWQuCi0vLyBodHRwOi8vd2Via2l0Lm9yZy9iLzg0MjA3Ci1XZWJTdHJpbmcgV2ViSURCSW5kZXhJ
bXBsOjprZXlQYXRoU3RyaW5nKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9iYWNrZW5kLT5rZXlQ
YXRoKCk7Ci19Ci0KIGJvb2wgV2ViSURCSW5kZXhJbXBsOjp1bmlxdWUoKSBjb25zdAogewogICAg
IHJldHVybiBtX2JhY2tlbmQtPnVuaXF1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSURCSW5kZXhJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJREJJbmRleEltcGwuaAppbmRleCBkOGIxMTI5ZDBmM2Y1NWQzMzNmZmQ2MTljMDk5YzQ4
YWJlOTVmM2ZjLi42ZDBhYjY4ZjZkOTlmZGNhY2RmZGMwMzJjMDI5ODA4NTg2ZWRjYmY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJJbmRleEltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJJbmRleEltcGwuaApAQCAtNDYsOSAr
NDYsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBXZWJTdHJpbmcgbmFtZSgpIGNvbnN0OwogICAg
IHZpcnR1YWwgV2ViU3RyaW5nIHN0b3JlTmFtZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgV2ViSURC
S2V5UGF0aCBrZXlQYXRoKCkgY29uc3Q7Ci0gICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIG1ldGhv
ZCBvbmNlIGNhbGxlcnMgYXJlIHVwZGF0ZWQuCi0gICAgLy8gaHR0cDovL3dlYmtpdC5vcmcvYi84
NDIwNwotICAgIHZpcnR1YWwgV2ViU3RyaW5nIGtleVBhdGhTdHJpbmcoKSBjb25zdDsKICAgICB2
aXJ0dWFsIGJvb2wgdW5pcXVlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIG11bHRpRW50cnko
KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURC
S2V5UGF0aC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJLZXlQYXRoLmNw
cAppbmRleCBiY2Y1ZGJkMGQ5ZWM4NmQxYTM5YzgwMWU0YWUwZjc3ZmJkMjQxYjI2Li4xN2MxNThm
MzRlNDg4ZDkwZTMxNzNjZGMzODQ2MWQxYWYyYTNiNzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJREJLZXlQYXRoLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJREJLZXlQYXRoLmNwcApAQCAtMzcsMTAxICszNyw3OSBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVdlYklEQktleVBhdGgg
V2ViSURCS2V5UGF0aDo6Y3JlYXRlKGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+JikKK1dlYklE
QktleVBhdGg6On5XZWJJREJLZXlQYXRoKCkKIHsKLSAgICAvLyBGSVhNRTogQXJyYXktdHlwZSBr
ZXkgcGF0aHMgbm90IHlldCBzdXBwb3J0ZWQuIGh0dHA6Ly93ZWJraXQub3JnL2IvODQyMDcKLSAg
ICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGNyZWF0ZU51bGwoKTsK
KyAgICBtX3ByaXZhdGUucmVzZXQoMCk7CiB9CiAKIFdlYklEQktleVBhdGggV2ViSURCS2V5UGF0
aDo6Y3JlYXRlKGNvbnN0IFdlYlN0cmluZyYga2V5UGF0aCkKIHsKLSAgICBpZiAoa2V5UGF0aC5p
c051bGwoKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZU51bGwoKTsKLQotICAgIFdURjo6VmVjdG9y
PFdURjo6U3RyaW5nPiBpZGJFbGVtZW50czsKLSAgICBJREJLZXlQYXRoUGFyc2VFcnJvciBpZGJF
cnJvcjsKLSAgICBJREJQYXJzZUtleVBhdGgoa2V5UGF0aCwgaWRiRWxlbWVudHMsIGlkYkVycm9y
KTsKLSAgICByZXR1cm4gV2ViSURCS2V5UGF0aChpZGJFbGVtZW50cywgc3RhdGljX2Nhc3Q8aW50
PihpZGJFcnJvcikpOwotfQotCi1XZWJJREJLZXlQYXRoIFdlYklEQktleVBhdGg6OmNyZWF0ZU51
bGwoKQotewotICAgIHJldHVybiBXZWJJREJLZXlQYXRoKFdlYlN0cmluZygpKTsKKyAgICByZXR1
cm4gV2ViSURCS2V5UGF0aChJREJLZXlQYXRoKGtleVBhdGgpKTsKIH0KIAotV2ViSURCS2V5UGF0
aDo6V2ViSURCS2V5UGF0aChjb25zdCBXZWJJREJLZXlQYXRoJiBrZXlQYXRoKQorV2ViSURCS2V5
UGF0aCBXZWJJREJLZXlQYXRoOjpjcmVhdGUoY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIGtl
eVBhdGgpCiB7Ci0gICAgYXNzaWduKGtleVBhdGgpOworICAgIFZlY3RvcjxTdHJpbmc+IHN0cmlu
Z3M7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBrZXlQYXRoLnNpemUoKTsgKytpKQorICAg
ICAgICBzdHJpbmdzLmFwcGVuZChrZXlQYXRoW2ldKTsKKyAgICByZXR1cm4gV2ViSURCS2V5UGF0
aChJREJLZXlQYXRoKHN0cmluZ3MpKTsKIH0KIAotV2ViSURCS2V5UGF0aDo6V2ViSURCS2V5UGF0
aChjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIGVsZW1lbnRzLCBpbnQgcGFyc2VFcnJv
cikKLSAgICA6IG1fcHJpdmF0ZShuZXcgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+KGVsZW1lbnRz
KSkKLSAgICAsIG1fcGFyc2VFcnJvcihwYXJzZUVycm9yKQorV2ViSURCS2V5UGF0aCBXZWJJREJL
ZXlQYXRoOjpjcmVhdGVOdWxsKCkKIHsKKyAgICByZXR1cm4gV2ViSURCS2V5UGF0aChJREJLZXlQ
YXRoKCkpOwogfQogCiBib29sIFdlYklEQktleVBhdGg6OmlzVmFsaWQoKSBjb25zdAogewotICAg
IHJldHVybiBtX3BhcnNlRXJyb3IgPT0gSURCS2V5UGF0aFBhcnNlRXJyb3JOb25lOworICAgIEFT
U0VSVChtX3ByaXZhdGUuZ2V0KCkpOworICAgIHJldHVybiBtX3ByaXZhdGUtPmlzVmFsaWQoKTsK
IH0KIAogV2ViSURCS2V5UGF0aDo6VHlwZSBXZWJJREJLZXlQYXRoOjp0eXBlKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9wcml2YXRlLmdldCgpID8gU3RyaW5nVHlwZSA6IE51bGxUeXBlOworICAg
IEFTU0VSVChtX3ByaXZhdGUuZ2V0KCkpOworICAgIHJldHVybiBUeXBlKG1fcHJpdmF0ZS0+dHlw
ZSgpKTsKIH0KIAotV2ViU3RyaW5nIFdlYklEQktleVBhdGg6OnN0cmluZygpIGNvbnN0CisKK1dl
YlZlY3RvcjxXZWJTdHJpbmc+IFdlYklEQktleVBhdGg6OmFycmF5KCkgY29uc3QKIHsKLSAgICBp
ZiAoIW1fcHJpdmF0ZS5nZXQoKSkKLSAgICAgICAgcmV0dXJuIFdlYlN0cmluZygpOwotCi0gICAg
Ly8gRklYTUU6IFN0b3JlIHRoZSBjb21wbGV0ZSBzdHJpbmcgaW5zdGVhZCBvZiByZWJ1aWxkaW5n
IGl0LgotICAgIC8vIGh0dHA6Ly93ZWJraXQub3JnL2IvODQyMDcKLSAgICBXVEY6OlN0cmluZyBz
dHJpbmcoIiIpOwotICAgIFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgYXJyYXkgPSAqbV9wcml2
YXRlLmdldCgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXkuc2l6ZSgpOyArK2kp
IHsKLSAgICAgICAgaWYgKGkpCi0gICAgICAgICAgICBzdHJpbmcuYXBwZW5kKCIuIik7Ci0gICAg
ICAgIHN0cmluZy5hcHBlbmQoYXJyYXlbaV0pOwotICAgIH0KLSAgICByZXR1cm4gV2ViU3RyaW5n
KHN0cmluZyk7CisgICAgQVNTRVJUKG1fcHJpdmF0ZS5nZXQoKSk7CisgICAgQVNTRVJUKG1fcHJp
dmF0ZS0+dHlwZSgpID09IElEQktleVBhdGg6OkFycmF5VHlwZSk7CisgICAgcmV0dXJuIG1fcHJp
dmF0ZS0+YXJyYXkoKTsKIH0KIAotV2ViSURCS2V5UGF0aDo6V2ViSURCS2V5UGF0aChjb25zdCBX
ZWJTdHJpbmcmIGtleVBhdGgpCi0gICAgOiBtX3BhcnNlRXJyb3IoSURCS2V5UGF0aFBhcnNlRXJy
b3JOb25lKQorV2ViU3RyaW5nIFdlYklEQktleVBhdGg6OnN0cmluZygpIGNvbnN0CiB7Ci0gICAg
aWYgKCFrZXlQYXRoLmlzTnVsbCgpKSB7Ci0gICAgICAgIG1fcHJpdmF0ZS5yZXNldChuZXcgV1RG
OjpWZWN0b3I8V1RGOjpTdHJpbmc+KCkpOwotICAgICAgICBJREJLZXlQYXRoUGFyc2VFcnJvciBp
ZGJQYXJzZUVycm9yOwotICAgICAgICBJREJQYXJzZUtleVBhdGgoa2V5UGF0aCwgKm1fcHJpdmF0
ZS5nZXQoKSwgaWRiUGFyc2VFcnJvcik7Ci0gICAgICAgIG1fcGFyc2VFcnJvciA9IGlkYlBhcnNl
RXJyb3I7Ci0gICAgfQorICAgIEFTU0VSVChtX3ByaXZhdGUuZ2V0KCkpOworICAgIEFTU0VSVCht
X3ByaXZhdGUtPnR5cGUoKSA9PSBJREJLZXlQYXRoOjpTdHJpbmdUeXBlKTsKKyAgICByZXR1cm4g
bV9wcml2YXRlLT5zdHJpbmcoKTsKIH0KIAotaW50IFdlYklEQktleVBhdGg6OnBhcnNlRXJyb3Io
KSBjb25zdAorV2ViSURCS2V5UGF0aDo6V2ViSURCS2V5UGF0aChjb25zdCBXZWJJREJLZXlQYXRo
JiBrZXlQYXRoKQorICAgIDogbV9wcml2YXRlKG5ldyBJREJLZXlQYXRoKGtleVBhdGgpKQogewot
ICAgIHJldHVybiBtX3BhcnNlRXJyb3I7CisgICAgQVNTRVJUKG1fcHJpdmF0ZS5nZXQoKSk7CiB9
CiAKLXZvaWQgV2ViSURCS2V5UGF0aDo6YXNzaWduKGNvbnN0IFdlYklEQktleVBhdGgmIGtleVBh
dGgpCitXZWJJREJLZXlQYXRoOjpXZWJJREJLZXlQYXRoKGNvbnN0IFdlYkNvcmU6OklEQktleVBh
dGgmIHZhbHVlKQorICAgIDogbV9wcml2YXRlKG5ldyBJREJLZXlQYXRoKHZhbHVlKSkKIHsKLSAg
ICBtX3BhcnNlRXJyb3IgPSBrZXlQYXRoLm1fcGFyc2VFcnJvcjsKLSAgICBpZiAoa2V5UGF0aC5t
X3ByaXZhdGUuZ2V0KCkpCi0gICAgICAgIG1fcHJpdmF0ZS5yZXNldChuZXcgV1RGOjpWZWN0b3I8
V1RGOjpTdHJpbmc+KGtleVBhdGgpKTsKLSAgICBlbHNlCi0gICAgICAgIG1fcHJpdmF0ZS5yZXNl
dCgwKTsKKyAgICBBU1NFUlQobV9wcml2YXRlLmdldCgpKTsKIH0KIAotdm9pZCBXZWJJREJLZXlQ
YXRoOjpyZXNldCgpCitXZWJJREJLZXlQYXRoJiBXZWJJREJLZXlQYXRoOjpvcGVyYXRvcj0oY29u
c3QgV2ViQ29yZTo6SURCS2V5UGF0aCYgdmFsdWUpCiB7Ci0gICAgbV9wcml2YXRlLnJlc2V0KDAp
OworICAgIEFTU0VSVChtX3ByaXZhdGUuZ2V0KCkpOworICAgIG1fcHJpdmF0ZS5yZXNldChuZXcg
SURCS2V5UGF0aCh2YWx1ZSkpOworICAgIHJldHVybiAqdGhpczsKIH0KIAotV2ViSURCS2V5UGF0
aDo6b3BlcmF0b3IgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmcsIDA+JigpIGNvbnN0CitX
ZWJJREJLZXlQYXRoOjpvcGVyYXRvciBjb25zdCBXZWJDb3JlOjpJREJLZXlQYXRoJigpIGNvbnN0
CiB7CiAgICAgQVNTRVJUKG1fcHJpdmF0ZS5nZXQoKSk7Ci0gICAgcmV0dXJuICptX3ByaXZhdGUu
Z2V0KCk7CisgICAgcmV0dXJuICoobV9wcml2YXRlLmdldCgpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJP
YmplY3RTdG9yZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2Jq
ZWN0U3RvcmVJbXBsLmNwcAppbmRleCA2MjRhNGU1YjM2NjBkOWI5NzRhN2QwNDgyYjI0NjkxZDFm
MTExNDAxLi5hNWI1YTE0NDUwOGNhZWExODkyMDcxMjBlNDliZDZjMWYzMGE2MzE0IDEwMDc1NQot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5j
cHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVk
ZSAiSURCQ2FsbGJhY2tzUHJveHkuaCIKICNpbmNsdWRlICJJREJJbmRleEJhY2tlbmRJbnRlcmZh
Y2UuaCIKKyNpbmNsdWRlICJJREJLZXlQYXRoLmgiCiAjaW5jbHVkZSAiSURCS2V5UmFuZ2UuaCIK
ICNpbmNsdWRlICJJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJX
ZWJJREJJbmRleEltcGwuaCIKQEAgLTU5LDEzICs2MCw2IEBAIFdlYlN0cmluZyBXZWJJREJPYmpl
Y3RTdG9yZUltcGw6Om5hbWUoKSBjb25zdAogCiBXZWJJREJLZXlQYXRoIFdlYklEQk9iamVjdFN0
b3JlSW1wbDo6a2V5UGF0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdlYklEQktleVBhdGgobV9v
YmplY3RTdG9yZS0+a2V5UGF0aCgpKTsKLX0KLQotLy8gRklYTUU6IFJlbW92ZSB0aGlzIG1ldGhv
ZCBvbmNlIGNhbGxlcnMgYXJlIHVwZGF0ZWQuCi0vLyBodHRwOi8vd2Via2l0Lm9yZy9iLzg0MjA3
Ci1XZWJTdHJpbmcgV2ViSURCT2JqZWN0U3RvcmVJbXBsOjprZXlQYXRoU3RyaW5nKCkgY29uc3QK
LXsKICAgICByZXR1cm4gbV9vYmplY3RTdG9yZS0+a2V5UGF0aCgpOwogfQogCkBAIC05OSw3ICs5
Myw3IEBAIHZvaWQgV2ViSURCT2JqZWN0U3RvcmVJbXBsOjpjbGVhcihXZWJJREJDYWxsYmFja3Mq
IGNhbGxiYWNrcywgY29uc3QgV2ViSURCVHJhbnNhCiAgICAgbV9vYmplY3RTdG9yZS0+Y2xlYXIo
SURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShhZG9wdFB0cihjYWxsYmFja3MpKSwgdHJhbnNhY3Rp
b24uZ2V0SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKCksIGVjKTsKIH0KIAotV2ViSURC
SW5kZXgqIFdlYklEQk9iamVjdFN0b3JlSW1wbDo6Y3JlYXRlSW5kZXgoY29uc3QgV2ViU3RyaW5n
JiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRp
RW50cnksIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgV2ViRXhjZXB0aW9u
Q29kZSYgZWMpCitXZWJJREJJbmRleCogV2ViSURCT2JqZWN0U3RvcmVJbXBsOjpjcmVhdGVJbmRl
eChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYklEQktleVBhdGgmIGtleVBhdGgsIGJv
b2wgdW5pcXVlLCBib29sIG11bHRpRW50cnksIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFu
c2FjdGlvbiwgV2ViRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgUmVmUHRyPElEQkluZGV4QmFj
a2VuZEludGVyZmFjZT4gaW5kZXggPSBtX29iamVjdFN0b3JlLT5jcmVhdGVJbmRleChuYW1lLCBr
ZXlQYXRoLCB1bmlxdWUsIG11bHRpRW50cnksIHRyYW5zYWN0aW9uLmdldElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZSgpLCBlYyk7CiAgICAgaWYgKCFpbmRleCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmgKaW5kZXggZWUzYjIy
MmFjYzJjNjYzN2FlNzRiZGE0ZTRjOGFiODYyZmY3ZTg3Zi4uMzM2ZGJjMWU3YzljODZhZGMwYTFk
Nzc0NzFhNjgxYzZmMWY1MTEyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmgKQEAgLTQ3LDkgKzQ3LDYgQEAgcHVibGljOgogCiAg
ICAgV2ViU3RyaW5nIG5hbWUoKSBjb25zdDsKICAgICBXZWJJREJLZXlQYXRoIGtleVBhdGgoKSBj
b25zdDsKLSAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgbWV0aG9kIG9uY2UgY2FsbGVycyBhcmUg
dXBkYXRlZC4KLSAgICAvLyBodHRwOi8vd2Via2l0Lm9yZy9iLzg0MjA3Ci0gICAgV2ViU3RyaW5n
IGtleVBhdGhTdHJpbmcoKSBjb25zdDsKICAgICBXZWJET01TdHJpbmdMaXN0IGluZGV4TmFtZXMo
KSBjb25zdDsKIAogICAgIHZvaWQgZ2V0KGNvbnN0IFdlYklEQktleVJhbmdlJiwgV2ViSURCQ2Fs
bGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7CkBA
IC01OCwxMCArNTUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWxldGVGdW5jdGlvbihjb25zdCBX
ZWJJREJLZXlSYW5nZSYsIFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9u
JiwgV2ViRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgY2xlYXIoV2ViSURCQ2FsbGJhY2tzKiwg
Y29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7CiAKLSAgICAvLyBG
SVhNRTogUmVtb3ZlIFdlYlN0cmluZyBrZXlQYXRoIG92ZXJsb2FkIG9uY2UgY2FsbGVycyBhcmUg
dXBkYXRlZC4KLSAgICAvLyBodHRwOi8vd2Via2l0Lm9yZy9iLzg0MjA3Ci0gICAgV2ViSURCSW5k
ZXgqIGNyZWF0ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYsIGNvbnN0IFdlYlN0cmluZyYsIGJvb2ws
IGJvb2wsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOwotICAg
IFdlYklEQkluZGV4KiBjcmVhdGVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdl
YklEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnksIGNvbnN0
IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgV2ViRXhjZXB0aW9uQ29kZSYgZWMpIHsg
cmV0dXJuIGNyZWF0ZUluZGV4KG5hbWUsIGtleVBhdGguc3RyaW5nKCksIHVuaXF1ZSwgbXVsdGlF
bnRyeSwgdHJhbnNhY3Rpb24sIGVjKTsgfQorICAgIFdlYklEQkluZGV4KiBjcmVhdGVJbmRleChj
b25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYklEQktleVBhdGgmLCBib29sIHVuaXF1ZSwg
Ym9vbCBtdWx0aUVudHJ5LCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNv
ZGUmKTsKICAgICBXZWJJREJJbmRleCogaW5kZXgoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBXZWJF
eGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBkZWxldGVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5h
bWUsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkJpbmRpbmdVdGlsaXRpZXNU
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQmluZGluZ1V0aWxpdGll
c1Rlc3QuY3BwCmluZGV4IGQ2MDI5NWE1ZmI0M2U1MzM2MWMwNzI2MTJhNWU0Mzg1OGU2NmMyOTku
LmMxMzUxODUwZDg3OGM2MDViNTY2NGM2NzI0MDUzYjRjN2IwYjEzOGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQmluZGluZ1V0aWxpdGllc1Rlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQmluZGluZ1V0aWxpdGllc1Rlc3Qu
Y3BwCkBAIC00MSwxMCArNDEsOCBAQCBuYW1lc3BhY2UgewogCiBQYXNzUmVmUHRyPElEQktleT4g
Y2hlY2tLZXlGcm9tVmFsdWVBbmRLZXlQYXRoSW50ZXJuYWwoU2VyaWFsaXplZFNjcmlwdFZhbHVl
KiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQogewotICAgIFZlY3RvcjxTdHJpbmc+IGlk
YktleVBhdGg7Ci0gICAgSURCS2V5UGF0aFBhcnNlRXJyb3IgcGFyc2VFcnJvcjsKLSAgICBJREJQ
YXJzZUtleVBhdGgoa2V5UGF0aCwgaWRiS2V5UGF0aCwgcGFyc2VFcnJvcik7Ci0gICAgRVhQRUNU
X0VRKElEQktleVBhdGhQYXJzZUVycm9yTm9uZSwgcGFyc2VFcnJvcik7CisgICAgSURCS2V5UGF0
aCBpZGJLZXlQYXRoKGtleVBhdGgpOworICAgIEVYUEVDVF9UUlVFKGlkYktleVBhdGguaXNWYWxp
ZCgpKTsKICAgICByZXR1cm4gY3JlYXRlSURCS2V5RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtleVBh
dGgodmFsdWUsIGlkYktleVBhdGgpOwogfQogCkBAIC01NiwxMCArNTQsOCBAQCB2b2lkIGNoZWNr
S2V5UGF0aE51bGxWYWx1ZShTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHZhbHVlLCBjb25zdCBTdHJp
bmcmIGtleVBhdGgpCiAKIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBpbmplY3RL
ZXkoUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IHZhbHVlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpCiB7Ci0gICAgVmVjdG9yPFN0cmluZz4g
aWRiS2V5UGF0aDsKLSAgICBJREJLZXlQYXRoUGFyc2VFcnJvciBwYXJzZUVycm9yOwotICAgIElE
QlBhcnNlS2V5UGF0aChrZXlQYXRoLCBpZGJLZXlQYXRoLCBwYXJzZUVycm9yKTsKLSAgICBFWFBF
Q1RfRVEoSURCS2V5UGF0aFBhcnNlRXJyb3JOb25lLCBwYXJzZUVycm9yKTsKKyAgICBJREJLZXlQ
YXRoIGlkYktleVBhdGgoa2V5UGF0aCk7CisgICAgRVhQRUNUX1RSVUUoaWRiS2V5UGF0aC5pc1Zh
bGlkKCkpOwogICAgIHJldHVybiBpbmplY3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKGtleSwg
dmFsdWUsIGlkYktleVBhdGgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0lEQktleVBhdGhUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvSURCS2V5UGF0aFRlc3QuY3BwCmluZGV4IGUyZmRhZWJjMmYxNzg3ZThiNmQ4ZTc5ZTZhZjYy
YTFmNzUwNWVkODQuLjdkNjYyYzAwOWNjODYyZTUwMDYxOGRmZmRlZmU4YTI0NjU0MzQxYTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCS2V5UGF0aFRlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCS2V5UGF0aFRlc3QuY3BwCkBA
IC0zNyw2ICszNywxMCBAQCBuYW1lc3BhY2UgewogCiB2b2lkIGNoZWNrS2V5UGF0aChjb25zdCBT
dHJpbmcmIGtleVBhdGgsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBleHBlY3RlZCwgaW50IHBhcnNl
ckVycm9yKQogeworICAgIElEQktleVBhdGggaWRiS2V5UGF0aChrZXlQYXRoKTsKKyAgICBBU1NF
UlRfRVEoaWRiS2V5UGF0aC50eXBlKCksIElEQktleVBhdGg6OlN0cmluZ1R5cGUpOworICAgIEFT
U0VSVF9FUShpZGJLZXlQYXRoLmlzVmFsaWQoKSwgKHBhcnNlckVycm9yID09IElEQktleVBhdGhQ
YXJzZUVycm9yTm9uZSkpOworCiAgICAgSURCS2V5UGF0aFBhcnNlRXJyb3IgZXJyb3I7CiAgICAg
VmVjdG9yPFN0cmluZz4ga2V5UGF0aEVsZW1lbnRzOwogICAgIElEQlBhcnNlS2V5UGF0aChrZXlQ
YXRoLCBrZXlQYXRoRWxlbWVudHMsIGVycm9yKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3M2JjYzZiMjRhNmI4MWQ3MGI0
MWIwMDE4Y2NkNTA3ODA3ZWJhZjNhLi5mOTFmOGQ4MzU4ZDk1ZDM2MWE2M2E1MTg5ZjQ1YTIxNTNm
MWQxM2IxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDUtMDMgIEpvc2h1YSBCZWxsICA8
anNiZWxsQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFN0b3JlIGtleSBwYXRo
cyBpbiBJREJLZXlQYXRoIHR5cGUgaW5zdGVhZCBvZiBTdHJpbmcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1Mjk4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRo
LWJhc2ljcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3Vy
Y2VzL2tleXBhdGgtYmFzaWNzLmpzOgorCiAyMDEyLTA1LTAzICBTdWRhcnNhbmEgTmFnaW5lbmkg
IDxzdWRhcnNhbmEubmFnaW5lbmlAbGludXguaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdIFtE
UlRdIFVwZGF0ZSBFRkwgYmFzZWxpbmVzIGFmdGVyIHIxMTU4NDYKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgtYmFzaWNzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgtYmFzaWNzLWV4cGVjdGVkLnR4dApp
bmRleCBiMzA4MWQyODVkNDI0YjdiZmZlZDA2YmU1ZGRlM2U2NjJkYWI0ODExLi44NjI5NDYzODk0
YTgxOGNlNzlmMDdiMTlkMDUwMTc4NDMyZmYxYWNhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWJhc2ljcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5cGF0aC1iYXNpY3MtZXhwZWN0ZWQudHh0CkBAIC05
LDQwICs5LDMzIEBAIGluZGV4ZWREQi5vcGVuKG5hbWUpCiBkYiA9IGV2ZW50LnRhcmdldC5yZXN1
bHQKIHJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykKIERlbGV0ZWQgYWxsIG9iamVjdCBzdG9y
ZXMuCi1nbG9iYWxLZXlQYXRoID0gJ251bGwnCi1kYi5jcmVhdGVPYmplY3RTdG9yZSgnbmFtZScs
IHtrZXlQYXRoOiBnbG9iYWxLZXlQYXRofSkKLURlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCi1n
bG9iYWxLZXlQYXRoID0gJ3VuZGVmaW5lZCcKLWRiLmNyZWF0ZU9iamVjdFN0b3JlKCduYW1lJywg
e2tleVBhdGg6IGdsb2JhbEtleVBhdGh9KQotRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KLWds
b2JhbEtleVBhdGggPSAnJwotZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ25hbWUnLCB7a2V5UGF0aDog
Z2xvYmFsS2V5UGF0aH0pCi1EZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgotZ2xvYmFsS2V5UGF0
aCA9ICdmb28nCi1kYi5jcmVhdGVPYmplY3RTdG9yZSgnbmFtZScsIHtrZXlQYXRoOiBnbG9iYWxL
ZXlQYXRofSkKLURlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCi1nbG9iYWxLZXlQYXRoID0gJ2Zv
by5iYXIuYmF6JwotZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ25hbWUnLCB7a2V5UGF0aDogZ2xvYmFs
S2V5UGF0aH0pCi1EZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgotZ2xvYmFsS2V5UGF0aCA9ICdu
dWxsJwotc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJykKLXN0b3JlLmNy
ZWF0ZUluZGV4KCduYW1lJywgZ2xvYmFsS2V5UGF0aCkKLURlbGV0ZWQgYWxsIG9iamVjdCBzdG9y
ZXMuCi1nbG9iYWxLZXlQYXRoID0gJ3VuZGVmaW5lZCcKLXN0b3JlID0gZGIuY3JlYXRlT2JqZWN0
U3RvcmUoJ3N0b3JlTmFtZScpCi1zdG9yZS5jcmVhdGVJbmRleCgnbmFtZScsIGdsb2JhbEtleVBh
dGgpCi1EZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgotZ2xvYmFsS2V5UGF0aCA9ICcnCi1zdG9y
ZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKQotc3RvcmUuY3JlYXRlSW5kZXgo
J25hbWUnLCBnbG9iYWxLZXlQYXRoKQotRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KLWdsb2Jh
bEtleVBhdGggPSAnZm9vJwotc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1l
JykKLXN0b3JlLmNyZWF0ZUluZGV4KCduYW1lJywgZ2xvYmFsS2V5UGF0aCkKLURlbGV0ZWQgYWxs
IG9iamVjdCBzdG9yZXMuCi1nbG9iYWxLZXlQYXRoID0gJ2Zvby5iYXIuYmF6Jwotc3RvcmUgPSBk
Yi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJykKLXN0b3JlLmNyZWF0ZUluZGV4KCduYW1l
JywgZ2xvYmFsS2V5UGF0aCkKK3N0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ25hbWUnKQor
UEFTUyBzdG9yZS5rZXlQYXRoIGlzIG51bGwKK0RlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCitz
dG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCduYW1lJywge2tleVBhdGg6IG51bGx9KQorUEFT
UyBzdG9yZS5rZXlQYXRoIGlzIG51bGwKK2luZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ25hbWUn
LCBudWxsKQorUEFTUyBpbmRleC5rZXlQYXRoIGlzICdudWxsJworRGVsZXRlZCBhbGwgb2JqZWN0
IHN0b3Jlcy4KK3N0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ25hbWUnLCB7a2V5UGF0aDog
dW5kZWZpbmVkfSkKK1BBU1Mgc3RvcmUua2V5UGF0aCBpcyBudWxsCitpbmRleCA9IHN0b3JlLmNy
ZWF0ZUluZGV4KCduYW1lJywgdW5kZWZpbmVkKQorUEFTUyBpbmRleC5rZXlQYXRoIGlzICd1bmRl
ZmluZWQnCitEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgorc3RvcmUgPSBkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgnbmFtZScsIHtrZXlQYXRoOiAnJ30pCitQQVNTIHN0b3JlLmtleVBhdGggaXMgJycK
K2luZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ25hbWUnLCAnJykKK1BBU1MgaW5kZXgua2V5UGF0
aCBpcyAnJworRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KK3N0b3JlID0gZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoJ25hbWUnLCB7a2V5UGF0aDogJ2Zvbyd9KQorUEFTUyBzdG9yZS5rZXlQYXRoIGlz
ICdmb28nCitpbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4KCduYW1lJywgJ2ZvbycpCitQQVNTIGlu
ZGV4LmtleVBhdGggaXMgJ2ZvbycKK0RlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCitzdG9yZSA9
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCduYW1lJywge2tleVBhdGg6ICdmb28uYmFyLmJheid9KQor
UEFTUyBzdG9yZS5rZXlQYXRoIGlzICdmb28uYmFyLmJheicKK2luZGV4ID0gc3RvcmUuY3JlYXRl
SW5kZXgoJ25hbWUnLCAnZm9vLmJhci5iYXonKQorUEFTUyBpbmRleC5rZXlQYXRoIGlzICdmb28u
YmFyLmJheicKIERlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCiBEZWxldGVkIGFsbCBvYmplY3Qg
c3RvcmVzLgogZ2xvYmFsS2V5UGF0aCA9ICdbXScKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9rZXlwYXRoLWJhc2ljcy5qcyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9rZXlwYXRoLWJhc2ljcy5qcwppbmRleCBiMjVj
NzMxZThhNTgyYWFmNTdlNjQwMDhhMGY1ZTU5YzJmYzM1OWExLi5lNmIyNjA2NGMxMDMwMjQ2MTUy
YWFmN2MxNzVlNTE2ZjQ0NDEzODUxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMva2V5cGF0aC1iYXNpY3MuanMKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleXBhdGgtYmFzaWNzLmpzCkBAIC0yNywyOCArMjcs
MjMgQEAgZnVuY3Rpb24gdGVzdFZhbGlkS2V5UGF0aHMoKQogewogICAgIGRlbGV0ZUFsbE9iamVj
dFN0b3JlcyhkYik7CiAKLSAgICB0ZXN0S2V5UGF0aHMgPSBbbnVsbCwgdW5kZWZpbmVkLCAnJ107
Ci0gICAgdGVzdEtleVBhdGhzLmZvckVhY2goZnVuY3Rpb24gKGtleVBhdGgpIHsKLSAgICAgICAg
Z2xvYmFsS2V5UGF0aCA9IGtleVBhdGg7Ci0gICAgICAgIGRlYnVnKCJnbG9iYWxLZXlQYXRoID0g
JyIgKyBnbG9iYWxLZXlQYXRoICsgIiciKTsKLSAgICAgICAgZXZhbEFuZExvZygiZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ25hbWUnLCB7a2V5UGF0aDogZ2xvYmFsS2V5UGF0aH0pIik7Ci0gICAgICAg
IGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0gICAgfSk7CisgICAgZXZhbEFuZExvZygic3Rv
cmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnbmFtZScpIik7CisgICAgc2hvdWxkQmVOdWxsKCJz
dG9yZS5rZXlQYXRoIik7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKIAotICAgIHRl
c3RLZXlQYXRocyA9IFsnZm9vJywgJ2Zvby5iYXIuYmF6J107Ci0gICAgdGVzdEtleVBhdGhzLmZv
ckVhY2goZnVuY3Rpb24gKGtleVBhdGgpIHsKLSAgICAgICAgZ2xvYmFsS2V5UGF0aCA9IGtleVBh
dGg7Ci0gICAgICAgIGRlYnVnKCJnbG9iYWxLZXlQYXRoID0gJyIgKyBnbG9iYWxLZXlQYXRoICsg
IiciKTsKLSAgICAgICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ25hbWUnLCB7
a2V5UGF0aDogZ2xvYmFsS2V5UGF0aH0pIik7Ci0gICAgICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jl
cyhkYik7Ci0gICAgfSk7CisgICAgdGVzdEtleVBhdGhzID0gWworICAgICAgICB7IGtleVBhdGg6
ICJudWxsIiwgc3RvcmVFeHBlY3RlZDogIm51bGwiLCBpbmRleEV4cGVjdGVkOiAiJ251bGwnIiB9
LAorICAgICAgICB7IGtleVBhdGg6ICJ1bmRlZmluZWQiLCBzdG9yZUV4cGVjdGVkOiAibnVsbCIs
IGluZGV4RXhwZWN0ZWQ6ICIndW5kZWZpbmVkJyIgfSwKKyAgICAgICAgeyBrZXlQYXRoOiAiJyci
LCBzdG9yZUV4cGVjdGVkOiAiJyciLCBpbmRleEV4cGVjdGVkOiAiJyciIH0sCisgICAgICAgIHsg
a2V5UGF0aDogIidmb28nIiwgc3RvcmVFeHBlY3RlZDogIidmb28nIiwgaW5kZXhFeHBlY3RlZDog
Iidmb28nIiB9LAorICAgICAgICB7IGtleVBhdGg6ICInZm9vLmJhci5iYXonIiwgc3RvcmVFeHBl
Y3RlZDogIidmb28uYmFyLmJheiciLCBpbmRleEV4cGVjdGVkOiAiJ2Zvby5iYXIuYmF6JyIgfQor
ICAgIF07CiAKLSAgICB0ZXN0S2V5UGF0aHMgPSBbbnVsbCwgdW5kZWZpbmVkLCAnJywgJ2Zvbycs
ICdmb28uYmFyLmJheiddOwotICAgIHRlc3RLZXlQYXRocy5mb3JFYWNoKGZ1bmN0aW9uIChrZXlQ
YXRoKSB7Ci0gICAgICAgIGdsb2JhbEtleVBhdGggPSBrZXlQYXRoOwotICAgICAgICBkZWJ1Zygi
Z2xvYmFsS2V5UGF0aCA9ICciICsgZ2xvYmFsS2V5UGF0aCArICInIik7Ci0gICAgICAgIHN0b3Jl
ID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJyki
KTsKLSAgICAgICAgZXZhbEFuZExvZygic3RvcmUuY3JlYXRlSW5kZXgoJ25hbWUnLCBnbG9iYWxL
ZXlQYXRoKSIpOworICAgIHRlc3RLZXlQYXRocy5mb3JFYWNoKGZ1bmN0aW9uICh0ZXN0Q2FzZSkg
eworICAgICAgICBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCduYW1l
Jywge2tleVBhdGg6ICIgKyB0ZXN0Q2FzZS5rZXlQYXRoICsgIn0pIik7CisgICAgICAgIHNob3Vs
ZEJlKCJzdG9yZS5rZXlQYXRoIiwgdGVzdENhc2Uuc3RvcmVFeHBlY3RlZCk7CisgICAgICAgIGV2
YWxBbmRMb2coImluZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ25hbWUnLCAiICsgdGVzdENhc2Uu
a2V5UGF0aCArICIpIik7CisgICAgICAgIHNob3VsZEJlKCJpbmRleC5rZXlQYXRoIiwgdGVzdENh
c2UuaW5kZXhFeHBlY3RlZCk7CiAgICAgICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CiAg
ICAgfSk7CiAKQEAgLTg3LDQgKzgyLDQgQEAgZnVuY3Rpb24gdGVzdEludmFsaWRLZXlQYXRocygp
CiAgICAgZmluaXNoSlNUZXN0KCk7CiB9CiAKLXRlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCit0ZXN0KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140578</attachid>
            <date>2012-05-07 13:32:04 -0700</date>
            <delta_ts>2012-05-21 13:21:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85298-20120507133203.patch</filename>
            <type>text/plain</type>
            <size>118893</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2Mjk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDI3MzZkMTEwOWRjNjNh
NjlmNzVhYWEwZWVjNjI5YzdkMTFhMDUyMS4uMTM2MjkzYWU5YzRjODRiYzdjYmZhZjc1ZWE4YWEx
OWM5OTVjNTY1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNCBAQAorMjAxMi0wNS0wNyAgSm9z
aHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogU3Rv
cmUga2V5IHBhdGhzIGluIElEQktleVBhdGggdHlwZSBpbnN0ZWFkIG9mIFN0cmluZworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODUyOTgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNaWdyYXRlIGZyb20gc3Rv
cmluZyBrZXkgcGF0aHMgYXMgKG51bGxhYmxlKSBTdHJpbmdzIHRvIGEgZGVkaWNhdGVkIElEQktl
eVBhdGgKKyAgICAgICAgdHlwZS4gUHJlcCB3b3JrIGZvciBzdXBwb3J0aW5nIGFycmF5LXR5cGUg
a2V5IHBhdGhzOiBodHRwOi8vd2Via2l0Lm9yZy9iLzg0MjA3CisKKyAgICAgICAgVGVzdHM6IHN0
b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgtYmFzaWNzLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQkFueS5jcHA6IEFsbG93IElEQkFueSB0byB5aWVsZCBET01TdHJpbmdzLgor
ICAgICAgICAoV2ViQ29yZTo6SURCQW55OjpjcmVhdGVTdHJpbmcpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJBbnk6OnN0cmluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJBbnk6OnNldCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQW55Lmg6Cisg
ICAgICAgIChJREJBbnkpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdT
dG9yZS5oOiBTd2l0Y2ggZnJvbSBTdHJpbmcgdG8gSURCS2V5UGF0aC4KKyAgICAgICAgKElEQkJh
Y2tpbmdTdG9yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3Bw
OiBTd2l0Y2ggZnJvbSBTdHJpbmcgdG8gSURCS2V5UGF0aC4KKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHA6IFN3aXRjaCBmcm9tIFN0cmluZyB0byBJREJL
ZXlQYXRoLgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRl
T2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
bG9hZE9iamVjdFN0b3Jlcyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VCYWNrZW5kSW1wbC5oOiBTd2l0Y2ggZnJvbSBTdHJpbmcgdG8gSURCS2V5UGF0aC4KKyAgICAg
ICAgKElEQkRhdGFiYXNlQmFja2VuZEltcGwpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oOiBTd2l0Y2ggZnJvbSBTdHJpbmcgdG8gSURC
S2V5UGF0aC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSURCRGF0YWJhc2VCYWNrZW5k
SW50ZXJmYWNlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oOiBTd2l0
Y2ggZnJvbSBTdHJpbmcgdG8gSURCQW55ICh2aWEgSURCS2V5UGF0aCkuCisgICAgICAgIChXZWJD
b3JlOjpJREJJbmRleDo6a2V5UGF0aCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
SW5kZXguaWRsOiBTd2l0Y2ggZnJvbSBET01TdHJpbmc/IHRvIElEQkFueS4KKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmNwcDogU3dpdGNoIGZyb20gU3Ry
aW5nIHRvIElEQktleVBhdGguCisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleEJhY2tlbmRJbXBs
OjpJREJJbmRleEJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJJ
bmRleEJhY2tlbmRJbXBsLmg6IFN3aXRjaCBmcm9tIFN0cmluZyB0byBJREJLZXlQYXRoLgorICAg
ICAgICAoV2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkluZGV4QmFja2VuZEltcGw6OmtleVBhdGgpOgorICAgICAgICAoSURCSW5kZXhC
YWNrZW5kSW1wbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5k
SW50ZXJmYWNlLmg6IFN3aXRjaCBmcm9tIFN0cmluZyB0byBJREJLZXlQYXRoLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChJREJJbmRleEJhY2tlbmRJbnRlcmZhY2UpOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGguY3BwOiBOb24tdHJpdmlhbCBtZXRob2QgaW1w
bGVtZW50YXRpb25zLgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5UGF0aDo6aXNWYWxpZCk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQktleVBhdGg6Om9wZXJhdG9y
IFBhc3NSZWZQdHI8SURCQW55Pik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5
UGF0aC5oOiBJbnRyb2R1Y2UgSURCS2V5UGF0aCB0eXBlLgorICAgICAgICAoSURCS2V5UGF0aCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlQYXRoOjpJREJLZXlQYXRoKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQktleVBhdGg6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5UGF0aDo6
YXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5UGF0aDo6c3RyaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQktleVBhdGg6OmlzTnVsbCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRoQmFja2VuZEltcGwuY3BwOiBTd2l0Y2gg
ZnJvbSBTdHJpbmcgdG8gSURCS2V5UGF0aC4KKyAgICAgICAgKFdlYkNvcmU6OklEQktleVBhdGhC
YWNrZW5kSW1wbDo6Y3JlYXRlSURCS2V5c0Zyb21TZXJpYWxpemVkVmFsdWVzQW5kS2V5UGF0aCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlQYXRoQmFja2VuZEltcGw6OmluamVjdElEQktleUlu
dG9TZXJpYWxpemVkVmFsdWUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBh
dGhCYWNrZW5kSW1wbC5oOiBTd2l0Y2ggZnJvbSBTdHJpbmcgdG8gSURCS2V5UGF0aC4KKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoSURCS2V5UGF0aEJhY2tlbmRJbXBsKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcDogU3dpdGNoIGZy
b20gU3RyaW5nIHRvIElEQktleVBhdGgsIHdpdGggYmFjay1jb21wYXQuCisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnB1dElEQktleVBhdGgpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0T2JqZWN0U3RvcmVzKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OmdldEluZGV4ZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaDoKKyAgICAgICAg
KElEQkxldmVsREJCYWNraW5nU3RvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
QkxldmVsREJDb2RpbmcuY3BwOiBOZXcgY29kaW5nIHNjaGVtZSBmb3Iga2V5IHBhdGhzICh3aXRo
IGJhY2stY29tcGF0KS4KKyAgICAgICAgKElEQkxldmVsREJDb2RpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCTGV2ZWxEQkNvZGluZzo6ZW5jb2RlSURCS2V5UGF0aCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJMZXZlbERCQ29kaW5nOjpkZWNvZGVJREJLZXlQYXRoKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmg6IEFkZCBrZXktcGF0aC1zcGVjaWZpYyBt
ZXRob2RzLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJREJMZXZlbERCQ29kaW5nKToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHA6IFN3aXRjaCBm
cm9tIFN0cmluZyB0byBJREJLZXlQYXRoLgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3Rv
cmU6OmtleVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmNyZWF0ZUlu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
Qk9iamVjdFN0b3JlLmg6IFN3aXRjaCBmcm9tIFN0cmluZyB0byBJREJBbnkgKHZpYSBJREJLZXlQ
YXRoKS4KKyAgICAgICAgKElEQk9iamVjdFN0b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJPYmplY3RTdG9yZS5pZGw6IFN3aXRjaCBmcm9tIERPTVN0cmluZz8gdG8gSURCQW55
LgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwu
Y3BwOiBTd2l0Y2ggZnJvbSBTdHJpbmcgdG8gSURCS2V5UGF0aC4KKyAgICAgICAgKFdlYkNvcmU6
OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGwpOgor
ICAgICAgICAoV2ViQ29yZTo6ZmV0Y2hLZXlGcm9tS2V5UGF0aCk6CisgICAgICAgIChXZWJDb3Jl
OjppbmplY3RLZXlJbnRvS2V5UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsOjpsb2FkSW5kZXhlcyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oOiBTd2l0Y2ggZnJvbSBTdHJpbmcgdG8gSURC
S2V5UGF0aC4KKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjprZXlQ
YXRoKToKKyAgICAgICAgKElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwpOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZS5oOiBTd2l0Y2gg
ZnJvbSBTdHJpbmcgdG8gSURCS2V5UGF0aC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9E
aWN0aW9uYXJ5LmNwcDogQWRkIGdldHRlciBmb3IgRE9NU3RyaW5nW10gKGkuZS4gVmVjdG9yPFN0
cmluZz4pCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpY3Rpb25hcnk6
OmdldCk6CisgICAgICAgICogYmluZGluZ3MvdjgvRGljdGlvbmFyeS5oOgorICAgICAgICAoRGlj
dGlvbmFyeSk6CisgICAgICAgICogYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5jcHA6
IFN3aXRjaCBmcm9tIFN0cmluZyB0byBJREJLZXlQYXRoLgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlSURCS2V5RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtleVBhdGgpOgorICAgICAgICAoV2ViQ29y
ZTo6aW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZSk6CisgICAgICAgICogYmluZGluZ3Mv
djgvSURCQmluZGluZ1V0aWxpdGllcy5oOiBTd2l0Y2ggZnJvbSBTdHJpbmcgdG8gSURCS2V5UGF0
aC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOElE
QkFueUN1c3RvbS5jcHA6IFN1cHBvcnQgU3RyaW5nL0RPTVN0cmluZy4KKyAgICAgICAgKFdlYkNv
cmU6OnRvVjgpOgorICAgICAgICAqIGRvbS9ET01TdHJpbmdMaXN0Lmg6IEFsbG93IGVhc3kgKGNv
bnN0KSBhY2Nlc3MgdG8gc3RyaW5ncy4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVN0cmluZ0xpc3Q6
Om9wZXJhdG9yIGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik6CisgICAgICAgIChET01TdHJpbmdMaXN0
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwOiBUZW1w
b3Jhcnkgc2hpbSBmb3Igbm9uLXN0cmluZ3M6IHNlZSBodHRwOi8vd2Via2l0Lm9yZy9iLzg0MzAz
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9y
bVN1cHBvcnQuaDogU3dpdGNoIGZyb20gU3RyaW5nIHRvIElEQktleVBhdGguCisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFBsYXRmb3JtU3VwcG9ydCk6CisgICAgICAgICogc3RvcmFnZS9j
aHJvbWl1bS9JREJLZXlQYXRoQmFja2VuZEltcGwuY3BwOiBTd2l0Y2ggZnJvbSBTdHJpbmcgdG8g
SURCS2V5UGF0aC4KKyAgICAgICAgKFdlYkNvcmU6OklEQktleVBhdGhCYWNrZW5kSW1wbDo6Y3Jl
YXRlSURCS2V5c0Zyb21TZXJpYWxpemVkVmFsdWVzQW5kS2V5UGF0aCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJLZXlQYXRoQmFja2VuZEltcGw6OmluamVjdElEQktleUludG9TZXJpYWxpemVkVmFs
dWUpOgorCiAyMDEyLTA1LTA3ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+
CiAKICAgICAgICAgQnVpbGRmaXggZm9yIGJ1Z2d5IEdDQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwppbmRleCA3NzMxNjVmMzQyOGE5ODM4MTBhYzllNzlmYjAyNGYzMTI1YmNmZWNhLi43M2NhMjM3
ZGQ5ZDA0MmU4ZDk4MTZiMDk3YzAxNWQ1ZmY5MGNmMjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDEyLTA1LTA3ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBTdG9yZSBrZXkgcGF0aHMgaW4gSURC
S2V5UGF0aCB0eXBlIGluc3RlYWQgb2YgU3RyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTI5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE5vIGZ1bmN0aW9uYWwgY2hhbmdlcywganVzdCBmaW5pc2gg
bWlncmF0aW9uIGZyb20gU3RyaW5nIHRvIElEQktleVBhdGgKKyAgICAgICAgZm9yIHN0b3Jpbmcg
a2V5IHBhdGhzLCBmb3IgZXZlbnR1YWwgYXJyYXkgc3VwcG9ydCBodHRwOi8vd2Via2l0Lm9yZy9i
Lzg0MjA3CisKKyAgICAgICAgKiBwdWJsaWMvV2ViSURCRGF0YWJhc2UuaDogUmVtb3ZlIHRlbXBv
cmFyeSBvdmVybG9hZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYklE
QkRhdGFiYXNlOjpvYmplY3RTdG9yZU5hbWVzKToKKyAgICAgICAgKiBwdWJsaWMvV2ViSURCSW5k
ZXguaDogUmVtb3ZlIHRlbXBvcmFyeSBtZXRob2QuCisgICAgICAgIChXZWJLaXQ6OldlYklEQklu
ZGV4OjprZXlQYXRoKToKKyAgICAgICAgKiBwdWJsaWMvV2ViSURCS2V5UGF0aC5oOiBSZW1vdmUg
b2Jzb2xldGUgbWV0aG9kcywgd3JhcCBXZWJDb3JlOjpJREJLZXlQYXRoCisgICAgICAgIChXZWJJ
REJLZXlQYXRoKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCS2V5UGF0aDo6V2ViSURCS2V5UGF0
aCk6CisgICAgICAgICogcHVibGljL1dlYklEQk9iamVjdFN0b3JlLmg6IFJlbW92ZSB0ZW1wb3Jh
cnkgbWV0aG9kIGFuZCBvdmVybG9hZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSURCT2JqZWN0U3Rv
cmU6OmtleVBhdGgpOgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1
cHBvcnQuaDogUmVtb3ZlIHRlbXBvcmFyeSBvdmVybG9hZHMuCisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAqIHNyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcDogV2ViSURCS2V5UGF0aCB2cy4g
SURCS2V5UGF0aCBlbnVtcy4KKyAgICAgICAgKiBzcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHku
Y3BwOiBTd2l0Y2ggZnJvbSBTdHJpbmcgdG8gSURCS2V5UGF0aC4KKyAgICAgICAgKFdlYktpdDo6
SURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBz
cmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaDogU3dpdGNoIGZyb20gU3RyaW5nIHRvIElEQktl
eVBhdGguCisgICAgICAgIChJREJEYXRhYmFzZUJhY2tlbmRQcm94eSk6CisgICAgICAgICogc3Jj
L0lEQkluZGV4QmFja2VuZFByb3h5LmNwcDogU3dpdGNoIGZyb20gU3RyaW5nIHRvIElEQktleVBh
dGguCisgICAgICAgIChXZWJLaXQ6OklEQkluZGV4QmFja2VuZFByb3h5OjprZXlQYXRoKToKKyAg
ICAgICAgKiBzcmMvSURCSW5kZXhCYWNrZW5kUHJveHkuaDogU3dpdGNoIGZyb20gU3RyaW5nIHRv
IElEQktleVBhdGguCisgICAgICAgIChJREJJbmRleEJhY2tlbmRQcm94eSk6CisgICAgICAgICog
c3JjL0lEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5LmNwcDogU3dpdGNoIGZyb20gU3RyaW5nIHRv
IElEQktleVBhdGguCisgICAgICAgIChXZWJLaXQ6OklEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5
OjprZXlQYXRoKToKKyAgICAgICAgKFdlYktpdDo6SURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6
OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKiBzcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHku
aDogU3dpdGNoIGZyb20gU3RyaW5nIHRvIElEQktleVBhdGguCisgICAgICAgIChJREJPYmplY3RT
dG9yZUJhY2tlbmRQcm94eSk6CisgICAgICAgICogc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHA6IFN3
aXRjaCBmcm9tIFN0cmluZyB0byBJREJLZXlQYXRoLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1TdXBwb3J0OjpjcmVhdGVJREJLZXlzRnJvbVNlcmlhbGl6ZWRWYWx1ZXNBbmRLZXlQYXRoKToK
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3VwcG9ydDo6aW5qZWN0SURCS2V5SW50b1Nlcmlh
bGl6ZWRWYWx1ZSk6CisgICAgICAgICogc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHA6IFN3aXRj
aCBmcm9tIFN0cmluZyB0byBJREJLZXlQYXRoLgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRh
YmFzZUltcGw6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBzcmMvV2ViSURCRGF0YWJh
c2VJbXBsLmg6IFJlbW92ZSB0ZW1wb3Jhcnkgb3ZlcmxvYWQuCisgICAgICAgIChXZWJJREJEYXRh
YmFzZUltcGwpOgorICAgICAgICAqIHNyYy9XZWJJREJJbmRleEltcGwuY3BwOiBSZW1vdmUgdGVt
cG9yYXJ5IG1ldGhvZC4KKyAgICAgICAgKiBzcmMvV2ViSURCSW5kZXhJbXBsLmg6IFJlbW92ZSB0
ZW1wb3JhcnkgbWV0aG9kLgorICAgICAgICAoV2ViSURCSW5kZXhJbXBsKToKKyAgICAgICAgKiBz
cmMvV2ViSURCS2V5UGF0aC5jcHA6IFJlbW92ZSBtb3N0IGxvZ2ljOyBqdXN0IGEgd3JhcHBlciBm
b3IgV2ViQ29yZTo6SURCS2V5UGF0aC4KKyAgICAgICAgKFdlYktpdDo6V2ViSURCS2V5UGF0aDo6
fldlYklEQktleVBhdGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJLZXlQYXRoOjpjcmVhdGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJJREJLZXlQYXRoOjpjcmVhdGVOdWxsKToKKyAgICAgICAg
KFdlYktpdDo6V2ViSURCS2V5UGF0aDo6aXNWYWxpZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklE
QktleVBhdGg6OnR5cGUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SURCS2V5UGF0aDo6YXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJLZXlQYXRoOjpzdHJp
bmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJLZXlQYXRoOjpXZWJJREJLZXlQYXRoKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSURCS2V5UGF0aDo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYktp
dDo6V2ViSURCS2V5UGF0aDo6b3BlcmF0b3IgY29uc3QgV2ViQ29yZTo6SURCS2V5UGF0aCYpOgor
ICAgICAgICAqIHNyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3BwOiBSZW1vdmUgdGVtcG9yYXJ5
IG1ldGhvZCBhbmQgb3ZlcmxvYWQuCisgICAgICAgIChXZWJLaXQ6OldlYklEQk9iamVjdFN0b3Jl
SW1wbDo6a2V5UGF0aCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlSW1wbDo6
Y3JlYXRlSW5kZXgpOgorICAgICAgICAqIHNyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuaDogUmVt
b3ZlIHRlbXBvcmFyeSBtZXRob2QgYW5kIG92ZXJsb2FkLgorICAgICAgICAoV2ViSURCT2JqZWN0
U3RvcmVJbXBsKToKKyAgICAgICAgKiB0ZXN0cy9JREJCaW5kaW5nVXRpbGl0aWVzVGVzdC5jcHA6
IFVzZSBJREJLZXlQYXRoLgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tLZXlGcm9tVmFsdWVBbmRL
ZXlQYXRoSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6aW5qZWN0S2V5KToKKyAgICAgICAg
KiB0ZXN0cy9JREJMZXZlbERCQ29kaW5nVGVzdC5jcHA6IEFkZGVkIEVuY29kZUlEQktleVBhdGgg
YW5kIERlY29kZUlEQktleVBhdGggdGVzdHMuCisgICAgICAgIChJREJMZXZlbERCQ29kaW5nOjpU
RVNUKToKKyAgICAgICAgKElEQkxldmVsREJDb2RpbmcpOgorICAgICAgICAqIHRlc3RzL0lEQktl
eVBhdGhUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrS2V5UGF0aCk6IFRlc3QgSURC
S2V5UGF0aCB2YWxpZGl0eS4KKwogMjAxMi0wNS0wNyAgS2ludWtvIFlhc3VkYSAgPGtpbnVrb0Bj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZDogdGhlIHNhbWUgZml4IGluIGFub3Ro
ZXIgZmlsZSBmb3IgY2hyb21pdW0gd2luIGJ1aWxkLiAgQWRkaW5nIFdlYkNvcmUgbmFtZXNwYWNl
IHRvIEZpbGVTeXN0ZW1UeXBlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkFueS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJBbnkuY3BwCmluZGV4IDU3YTQwNmUyYmIwN2IwYmQ2ZDI1ZGRiYjgxYmM2NGZlOWVhYTA2YWQu
LjMwMDI4Y2NmZGZjZTk1OTYwNDBhYzAzZWZhNDlmYWIyNDA3MDJlMzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmNwcApAQCAtNDksNiArNDksMTMgQEAgUGFz
c1JlZlB0cjxJREJBbnk+IElEQkFueTo6Y3JlYXRlTnVsbCgpCiAgICAgcmV0dXJuIGlkYkFueS5y
ZWxlYXNlKCk7CiB9CiAKK1Bhc3NSZWZQdHI8SURCQW55PiBJREJBbnk6OmNyZWF0ZVN0cmluZyhj
b25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIFJlZlB0cjxJREJBbnk+IGlkYkFueSA9IGFkb3B0
UmVmKG5ldyBJREJBbnkoKSk7CisgICAgaWRiQW55LT5zZXQodmFsdWUpOworICAgIHJldHVybiBp
ZGJBbnkucmVsZWFzZSgpOworfQorCiBJREJBbnk6OklEQkFueSgpCiAgICAgOiBtX3R5cGUoVW5k
ZWZpbmVkVHlwZSkKIHsKQEAgLTExOCw2ICsxMjUsMTIgQEAgUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IElEQkFueTo6c2VyaWFsaXplZFNjcmlwdFZhbHVlKCkKICAgICByZXR1cm4g
bV9zZXJpYWxpemVkU2NyaXB0VmFsdWU7CiB9CiAKK2NvbnN0IFN0cmluZyYgSURCQW55OjpzdHJp
bmcoKQoreworICAgIEFTU0VSVChtX3R5cGUgPT0gU3RyaW5nVHlwZSk7CisgICAgcmV0dXJuIG1f
c3RyaW5nOworfQorCiB2b2lkIElEQkFueTo6c2V0TnVsbCgpCiB7CiAgICAgQVNTRVJUKG1fdHlw
ZSA9PSBVbmRlZmluZWRUeXBlKTsKQEAgLTE5NCw2ICsyMDcsMTMgQEAgdm9pZCBJREJBbnk6OnNl
dChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUpCiAgICAgbV9zZXJpYWxp
emVkU2NyaXB0VmFsdWUgPSB2YWx1ZTsKIH0KIAordm9pZCBJREJBbnk6OnNldChjb25zdCBTdHJp
bmcmIHZhbHVlKQoreworICAgIEFTU0VSVChtX3R5cGUgPT0gVW5kZWZpbmVkVHlwZSk7CisgICAg
bV90eXBlID0gU3RyaW5nVHlwZTsKKyAgICBtX3N0cmluZyA9IHZhbHVlOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCQW55LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJBbnkuaAppbmRleCA2YmVkYTU4ODgwODRiYzIyMWEzZDE4YzYwMzY0NjQ2NDJkY2E3ZTQ2
Li45M2ViMjQwMWRhYWI4Yzg2NjZlNjg0NjUwMWQ1MWI5MTA2OWFhYmRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJBbnkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJBbnkuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYg
RU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgog
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC00OSw2ICs1MCw3IEBAIGNsYXNzIElEQkFueSA6
IHB1YmxpYyBSZWZDb3VudGVkPElEQkFueT4gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPElEQkFueT4gY3JlYXRlSW52YWxpZCgpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkFu
eT4gY3JlYXRlTnVsbCgpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkFueT4gY3JlYXRlU3Ry
aW5nKGNvbnN0IFN0cmluZyYpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8SURCQW55PiBjcmVhdGUoVCogaWRiT2JqZWN0KQogICAgIHsKQEAgLTc3LDcg
Kzc5LDggQEAgcHVibGljOgogICAgICAgICBJREJLZXlUeXBlLAogICAgICAgICBJREJPYmplY3RT
dG9yZVR5cGUsCiAgICAgICAgIElEQlRyYW5zYWN0aW9uVHlwZSwKLSAgICAgICAgU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlVHlwZQorICAgICAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWVUeXBlLAorICAg
ICAgICBTdHJpbmdUeXBlLAogICAgIH07CiAKICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVy
biBtX3R5cGU7IH0KQEAgLTkyLDYgKzk1LDcgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8SURC
T2JqZWN0U3RvcmU+IGlkYk9iamVjdFN0b3JlKCk7CiAgICAgUGFzc1JlZlB0cjxJREJUcmFuc2Fj
dGlvbj4gaWRiVHJhbnNhY3Rpb24oKTsKICAgICBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gc2VyaWFsaXplZFNjcmlwdFZhbHVlKCk7CisgICAgY29uc3QgU3RyaW5nJiBzdHJpbmco
KTsKIAogICAgIC8vIFNldCBjYW4gb25seSBiZSBjYWxsZWQgb25jZS4KICAgICB2b2lkIHNldE51
bGwoKTsKQEAgLTEwNSw2ICsxMDksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXQoUGFzc1JlZlB0
cjxJREJPYmplY3RTdG9yZT4pOwogICAgIHZvaWQgc2V0KFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rp
b24+KTsKICAgICB2b2lkIHNldChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pOwor
ICAgIHZvaWQgc2V0KGNvbnN0IFN0cmluZyYpOwogCiBwcml2YXRlOgogICAgIElEQkFueSgpOwpA
QCAtMTIyLDYgKzEyNyw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlPiBt
X2lkYk9iamVjdFN0b3JlOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gbV9pZGJUcmFuc2Fj
dGlvbjsKICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtX3NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTsKKyAgICBTdHJpbmcgbV9zdHJpbmc7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNr
aW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdT
dG9yZS5oCmluZGV4IDliZTI2ZGI3MzhlMGZkZDNiYjI0MWVlOGM0NGM0MzljYjE5Njc2M2EuLmNj
OWY2M2VmMTFlODIzZjYwZjkyYTIzNGIyNmJhNTU1YzIzYmZlZWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oCkBAIC01Miw4ICs1
Miw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlSURCRGF0YWJhc2VNZXRhRGF0
YShpbnQ2NF90IHJvd0lkLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pID0gMDsKICAgICB2aXJ0dWFs
IGJvb2wgZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lKSA9IDA7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0T2JqZWN0U3RvcmVzKGludDY0X3QgZGF0YWJhc2VJZCwgVmVjdG9yPGludDY0
X3Q+JiBmb3VuZElkcywgVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMsIFZlY3RvcjxTdHJpbmc+
JiBmb3VuZEtleVBhdGhzLCBWZWN0b3I8Ym9vbD4mIGZvdW5kQXV0b0luY3JlbWVudEZsYWdzKSA9
IDA7Ci0gICAgdmlydHVhbCBib29sIGNyZWF0ZU9iamVjdFN0b3JlKGludDY0X3QgZGF0YWJhc2VJ
ZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0lu
Y3JlbWVudCwgaW50NjRfdCYgYXNzaWduZWRPYmplY3RTdG9yZUlkKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGdldE9iamVjdFN0b3JlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIFZlY3RvcjxpbnQ2NF90
PiYgZm91bmRJZHMsIFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzLCBWZWN0b3I8SURCS2V5UGF0
aD4mIGZvdW5kS2V5UGF0aHMsIFZlY3Rvcjxib29sPiYgZm91bmRBdXRvSW5jcmVtZW50RmxhZ3Mp
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlT2JqZWN0U3RvcmUoaW50NjRfdCBkYXRhYmFz
ZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNy
ZW1lbnQsIGludDY0X3QmIGFzc2lnbmVkT2JqZWN0U3RvcmVJZCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkZWxldGVPYmplY3RTdG9yZShpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCkgPSAwOwogCiAgICAgY2xhc3MgT2JqZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyIDog
cHVibGljIFJlZkNvdW50ZWQ8T2JqZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyPiB7CkBAIC03Nyw4
ICs3Nyw4IEBAIHB1YmxpYzoKICAgICB9OwogICAgIHZpcnR1YWwgYm9vbCBmb3JFYWNoT2JqZWN0
U3RvcmVSZWNvcmQoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIE9i
amVjdFN0b3JlUmVjb3JkQ2FsbGJhY2smKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0SW5k
ZXhlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgVmVjdG9yPGlu
dDY0X3Q+JiBmb3VuZElkcywgVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMsIFZlY3RvcjxTdHJp
bmc+JiBmb3VuZEtleVBhdGhzLCBWZWN0b3I8Ym9vbD4mIGZvdW5kVW5pcXVlRmxhZ3MsIFZlY3Rv
cjxib29sPiYgZm91bmRNdWx0aUVudHJ5RmxhZ3MpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgY3Jl
YXRlSW5kZXgoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGlzVW5pcXVlLCBib29s
IGlzTXVsdGlFbnRyeSwgaW50NjRfdCYgaW5kZXhJZCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBn
ZXRJbmRleGVzKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBWZWN0
b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcywgVmVjdG9y
PElEQktleVBhdGg+JiBmb3VuZEtleVBhdGhzLCBWZWN0b3I8Ym9vbD4mIGZvdW5kVW5pcXVlRmxh
Z3MsIFZlY3Rvcjxib29sPiYgZm91bmRNdWx0aUVudHJ5RmxhZ3MpID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgY3JlYXRlSW5kZXgoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgaXNVbmlxdWUs
IGJvb2wgaXNNdWx0aUVudHJ5LCBpbnQ2NF90JiBpbmRleElkKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRlbGV0ZUluZGV4KGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
LCBpbnQ2NF90IGluZGV4SWQpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcHV0SW5kZXhEYXRhRm9y
UmVjb3JkKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90
IGluZGV4SWQsIGNvbnN0IElEQktleSYsIGNvbnN0IE9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmll
ciopID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlSW5kZXhEYXRhRm9yUmVjb3JkKGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNv
bnN0IE9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllciopID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAppbmRleCBjYTY1OTA3ZmIzOTEy
NDdlYTYxMTQ1YTMyMmYwODlhYzRkOGJmOTUzLi45ZDliY2E5MGYzNDVhOWE3OWFjNjVlMjkwOGFj
MGI4NTI3YjA3ZTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2UuY3BwCkBAIC05Miw5ICs5MiwxNCBAQCBQYXNzUmVmUHRyPElEQk9iamVjdFN0
b3JlPiBJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBj
bwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBTdHJpbmcga2V5UGF0aDsKLSAgICBi
b29sIGtleVBhdGhFeGlzdHMgPSBvcHRpb25zLmdldFdpdGhVbmRlZmluZWRPck51bGxDaGVjaygi
a2V5UGF0aCIsIGtleVBhdGgpOwotICAgIGlmIChrZXlQYXRoRXhpc3RzICYmICFJREJJc1ZhbGlk
S2V5UGF0aChrZXlQYXRoKSkgeworICAgIElEQktleVBhdGgga2V5UGF0aDsKKyAgICBpZiAoIW9w
dGlvbnMuaXNVbmRlZmluZWRPck51bGwoKSkgeworICAgICAgICBTdHJpbmcga2V5UGF0aFN0cmlu
ZzsKKyAgICAgICAgaWYgKG9wdGlvbnMuZ2V0V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKCJrZXlQ
YXRoIiwga2V5UGF0aFN0cmluZykpCisgICAgICAgICAgICBrZXlQYXRoID0gSURCS2V5UGF0aChr
ZXlQYXRoU3RyaW5nKTsKKyAgICB9CisKKyAgICBpZiAoIWtleVBhdGguaXNOdWxsKCkgJiYgIWtl
eVBhdGguaXNWYWxpZCgpKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246Ok5P
Tl9UUkFOU0lFTlRfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZElt
cGwuY3BwCmluZGV4IGIwNWIzMjg2M2QwNzJmYjY1N2RjYTljOGQ2NGUwYjg1MWFkMDkyNDUuLjU5
MTk5ZmM2MzJhYmYxNWFmNmY4Mjc3MTVkY2ExMTc5NDQzNWI3MWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZElt
cGwuY3BwCkBAIC0xMzcsNyArMTM3LDcgQEAgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBJREJE
YXRhYmFzZUJhY2tlbmRJbXBsOjpvYmplY3RTdG9yZU5hbWVzKCkgY29uc3QKICAgICByZXR1cm4g
b2JqZWN0U3RvcmVOYW1lcy5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8SURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW50ZXJmYWNlPiBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGVPYmplY3RT
dG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRv
SW5jcmVtZW50LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRy
LCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50
ZXJmYWNlPiBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVu
dCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7CiAgICAgQVNTRVJUKHRyYW5zYWN0aW9uUHRyLT5tb2RlKCkgPT0gSURC
VHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFKTsKIApAQCAtMzc2LDcgKzM3Niw3IEBAIHZvaWQg
SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6bG9hZE9iamVjdFN0b3JlcygpCiB7CiAgICAgVmVjdG9y
PGludDY0X3Q+IGlkczsKICAgICBWZWN0b3I8U3RyaW5nPiBuYW1lczsKLSAgICBWZWN0b3I8U3Ry
aW5nPiBrZXlQYXRoczsKKyAgICBWZWN0b3I8SURCS2V5UGF0aD4ga2V5UGF0aHM7CiAgICAgVmVj
dG9yPGJvb2w+IGF1dG9JbmNyZW1lbnRGbGFnczsKICAgICBtX2JhY2tpbmdTdG9yZS0+Z2V0T2Jq
ZWN0U3RvcmVzKG1faWQsIGlkcywgbmFtZXMsIGtleVBhdGhzLCBhdXRvSW5jcmVtZW50RmxhZ3Mp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUJhY2tlbmRJbXBsLmgKaW5kZXggMTA4NmViMTZlYjg3ZDE5ZjAyOGUzZjRjOGM0N2I5
MDVkODY3OGYwNS4uMzMxOGUyYmYxODQyZmVmNmMxYjM3ZDgwZjI2MGJiMjBlNTUxYjM2ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlQmFja2VuZEltcGwuaApAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBT
dHJpbmcgdmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fdmVyc2lvbjsgfQogICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBvYmplY3RTdG9yZU5hbWVzKCkgY29uc3Q7CiAKLSAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBjcmVh
dGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwg
Ym9vbCBhdXRvSW5jcmVtZW50LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNl
cHRpb25Db2RlJik7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2Vu
ZEludGVyZmFjZT4gY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJ
REJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0
b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwg
RXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWZXJzaW9uKGNvbnN0IFN0cmlu
ZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQkRhdGFi
YXNlQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uKERPTVN0cmluZ0xpc3Qq
IG9iamVjdFN0b3JlTmFtZXMsIHVuc2lnbmVkIHNob3J0IG1vZGUsIEV4Y2VwdGlvbkNvZGUmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
QmFja2VuZEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgKaW5kZXggNTZlOGYyZGJiNjQyYWFlYjExNjY4OWM1
OTk3NDgxMTQzNDU0YjYyOS4uZTA3MmEwZjM5NTlkNzBkNTFhNTBjMjZiMWViMjE1MjBjNTk2ZWIx
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VCYWNrZW5kSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgKQEAgLTM4LDYgKzM4LDcgQEAgY2xhc3Mg
RE9NU3RyaW5nTGlzdDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgSURCQ2FsbGJhY2tzOwogY2xhc3Mg
SURCRGF0YWJhc2VDYWxsYmFja3M7CitjbGFzcyBJREJLZXlQYXRoOwogY2xhc3MgSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW50ZXJmYWNlOwogY2xhc3MgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlOwogCkBAIC01NSw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyB2ZXJz
aW9uKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBv
YmplY3RTdG9yZU5hbWVzKCkgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPElE
Qk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKKyAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVP
YmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1
dG9JbmNyZW1lbnQsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNv
ZGUmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24s
IFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNr
cz4sIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24oRE9NU3RyaW5nTGlzdCogc3RvcmVO
YW1lcywgdW5zaWduZWQgc2hvcnQgbW9kZSwgRXhjZXB0aW9uQ29kZSYpID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oCmluZGV4IGViYmJmOTZhYWE1MDU2
N2JjNDYwZGQ2ZGRlODM5YzYyYjdhOGNjYmUuLmM5OTQwNGFkYjliYjg2MjRhMTY2YTAyZDJkNTcw
NjFiMzc5NjI3ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkluZGV4LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5k
ZXguaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiSURCQ3Vyc29yLmgiCiAjaW5jbHVk
ZSAiSURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgog
I2luY2x1ZGUgIklEQktleVJhbmdlLmgiCiAjaW5jbHVkZSAiSURCUmVxdWVzdC5oIgogI2luY2x1
ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCkBAIC01MCw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICAvLyBJ
bXBsZW1lbnQgdGhlIElETAogICAgIFN0cmluZyBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9iYWNr
ZW5kLT5uYW1lKCk7IH0KICAgICBJREJPYmplY3RTdG9yZSogb2JqZWN0U3RvcmUoKSBjb25zdCB7
IHJldHVybiBtX29iamVjdFN0b3JlLmdldCgpOyB9Ci0gICAgU3RyaW5nIGtleVBhdGgoKSBjb25z
dCB7IHJldHVybiBtX2JhY2tlbmQtPmtleVBhdGgoKTsgfQorICAgIFBhc3NSZWZQdHI8SURCQW55
PiBrZXlQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kLT5rZXlQYXRoKCk7IH0KICAgICBi
b29sIHVuaXF1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZC0+dW5pcXVlKCk7IH0KICAgICBi
b29sIG11bHRpRW50cnkoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmQtPm11bHRpRW50cnkoKTsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRl
eC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5pZGwKaW5k
ZXggYjIzZTU1YWNkNjMyY2YyNmUzYTdhNjU4NTI0ZGYzYmIzMWUyZDdiMS4uNTI2OWZkY2QzZTgx
OTZiYjY4NTZhN2U0OWFlZWU0NjYwZTY0NmM4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkluZGV4LmlkbApAQCAtMzAsNyArMzAsNyBAQCBtb2R1bGUgc3RvcmFn
ZSB7CiAgICAgXSBJREJJbmRleCB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJp
bmcgbmFtZTsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIElEQk9iamVjdFN0b3JlIG9iamVj
dFN0b3JlOwotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGtleVBhdGg7Cisg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBJREJBbnkga2V5UGF0aDsKICAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIGJvb2xlYW4gdW5pcXVlOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
Ym9vbGVhbiBtdWx0aUVudHJ5OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwuY3BwCmluZGV4IDYzZDQ4NDE0Nzg0MGY2
ODk1M2JhMzQ1MDdkMGVmY2E3OTFlOGZkNjcuLjhjNTExZWYzNTRjNTZmZDRhOTI0ZmJlOTJiMTdj
ZWEzYmIyMWUyMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkluZGV4QmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwuY3BwCkBAIC00MSw3ICs0MSw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotSURCSW5kZXhCYWNrZW5kSW1wbDo6SURCSW5kZXhCYWNrZW5kSW1w
bChJREJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBjb25z
dCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKiBvYmplY3RTdG9yZUJhY2tlbmQsIGludDY0X3Qg
aWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBzdG9yZU5hbWUsIGNvbnN0IFN0
cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSkKK0lEQkluZGV4QmFj
a2VuZEltcGw6OklEQkluZGV4QmFja2VuZEltcGwoSURCQmFja2luZ1N0b3JlKiBiYWNraW5nU3Rv
cmUsIGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCog
b2JqZWN0U3RvcmVCYWNrZW5kLCBpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYgc3RvcmVOYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIHVuaXF1
ZSwgYm9vbCBtdWx0aUVudHJ5KQogICAgIDogbV9iYWNraW5nU3RvcmUoYmFja2luZ1N0b3JlKQog
ICAgICwgbV9kYXRhYmFzZUlkKGRhdGFiYXNlSWQpCiAgICAgLCBtX29iamVjdFN0b3JlQmFja2Vu
ZChvYmplY3RTdG9yZUJhY2tlbmQpCkBAIC01NCw3ICs1NCw3IEBAIElEQkluZGV4QmFja2VuZElt
cGw6OklEQkluZGV4QmFja2VuZEltcGwoSURCQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUsIGlu
dDY0X3QKIHsKIH0KIAotSURCSW5kZXhCYWNrZW5kSW1wbDo6SURCSW5kZXhCYWNrZW5kSW1wbChJ
REJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKiBvYmplY3RTdG9yZUJhY2tlbmQsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBzdG9yZU5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwg
Ym9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSkKK0lEQkluZGV4QmFja2VuZEltcGw6OklEQklu
ZGV4QmFja2VuZEltcGwoSURCQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0
YWJhc2VJZCwgY29uc3QgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCogb2JqZWN0U3RvcmVCYWNr
ZW5kLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgc3RvcmVOYW1lLCBjb25zdCBJ
REJLZXlQYXRoJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5KQogICAgIDog
bV9iYWNraW5nU3RvcmUoYmFja2luZ1N0b3JlKQogICAgICwgbV9kYXRhYmFzZUlkKGRhdGFiYXNl
SWQpCiAgICAgLCBtX29iamVjdFN0b3JlQmFja2VuZChvYmplY3RTdG9yZUJhY2tlbmQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJ
bXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJ
bXBsLmgKaW5kZXggZTY0ODViNjY0YzNhNGUzMDM3NDRhMzFiYTY0NTljMjVhNTNlY2U5YS4uNzVk
YTZlZDc0MmY4NDM2NWEzNWIwYjhjMDk2NDBkYzg4ODJkYjc5YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwuaApAQCAt
MzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oIgog
I2luY2x1ZGUgIklEQkluZGV4QmFja2VuZEludGVyZmFjZS5oIgorI2luY2x1ZGUgIklEQktleVBh
dGguaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00MCwxMSArNDEsMTEgQEAgY2xhc3Mg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAogY2xhc3MgSURCSW5kZXhCYWNrZW5kSW1wbCA6IHB1
YmxpYyBJREJJbmRleEJhY2tlbmRJbnRlcmZhY2UgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+IGNyZWF0ZShJREJCYWNraW5nU3RvcmUqIGJhY2tp
bmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsKiBvYmplY3RTdG9yZUJhY2tlbmQsIGludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiBzdG9yZU5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlx
dWUsIGJvb2wgbXVsdGlFbnRyeSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tl
bmRJbXBsPiBjcmVhdGUoSURCQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0
YWJhc2VJZCwgY29uc3QgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCogb2JqZWN0U3RvcmVCYWNr
ZW5kLCBpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgc3RvcmVO
YW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVu
dHJ5KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJJbmRleEJhY2tlbmRJ
bXBsKGJhY2tpbmdTdG9yZSwgZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVCYWNrZW5kLCBpZCwgbmFt
ZSwgc3RvcmVOYW1lLCBrZXlQYXRoLCB1bmlxdWUsIG11bHRpRW50cnkpKTsKICAgICB9Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gY3JlYXRlKElEQkJhY2tpbmdT
dG9yZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IElEQk9iamVjdFN0
b3JlQmFja2VuZEltcGwqIG9iamVjdFN0b3JlQmFja2VuZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBTdHJpbmcmIHN0b3JlTmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1
ZSwgYm9vbCBtdWx0aUVudHJ5KQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkluZGV4QmFja2Vu
ZEltcGw+IGNyZWF0ZShJREJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRh
YmFzZUlkLCBjb25zdCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKiBvYmplY3RTdG9yZUJhY2tl
bmQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBzdG9yZU5hbWUsIGNvbnN0IElE
QktleVBhdGgmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnkpCiAgICAgewog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQkluZGV4QmFja2VuZEltcGwoYmFja2luZ1N0
b3JlLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUJhY2tlbmQsIG5hbWUsIHN0b3JlTmFtZSwga2V5
UGF0aCwgdW5pcXVlLCBtdWx0aUVudHJ5KSk7CiAgICAgfQpAQCAtNjMsNyArNjQsNyBAQCBwdWJs
aWM6CiAgICAgLy8gSW1wbGVtZW50cyBJREJJbmRleEJhY2tlbmRJbnRlcmZhY2UuCiAgICAgdmly
dHVhbCBTdHJpbmcgbmFtZSgpIHsgcmV0dXJuIG1fbmFtZTsgfQogICAgIHZpcnR1YWwgU3RyaW5n
IHN0b3JlTmFtZSgpIHsgcmV0dXJuIG1fc3RvcmVOYW1lOyB9Ci0gICAgdmlydHVhbCBTdHJpbmcg
a2V5UGF0aCgpIHsgcmV0dXJuIG1fa2V5UGF0aDsgfQorICAgIHZpcnR1YWwgSURCS2V5UGF0aCBr
ZXlQYXRoKCkgeyByZXR1cm4gbV9rZXlQYXRoOyB9CiAgICAgdmlydHVhbCBib29sIHVuaXF1ZSgp
IHsgcmV0dXJuIG1fdW5pcXVlOyB9CiAgICAgdmlydHVhbCBib29sIG11bHRpRW50cnkoKSB7IHJl
dHVybiBtX211bHRpRW50cnk7IH0KIApAQCAtNzYsOCArNzcsOCBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGdldEtleShQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwog
CiBwcml2YXRlOgotICAgIElEQkluZGV4QmFja2VuZEltcGwoSURCQmFja2luZ1N0b3JlKiwgaW50
NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKiwgaW50NjRf
dCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHN0b3JlTmFtZSwgY29uc3Qg
U3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5KTsKLSAgICBJREJJ
bmRleEJhY2tlbmRJbXBsKElEQkJhY2tpbmdTdG9yZSosIGludDY0X3QgZGF0YWJhc2VJZCwgY29u
c3QgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiBzdG9yZU5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJv
b2wgbXVsdGlFbnRyeSk7CisgICAgSURCSW5kZXhCYWNrZW5kSW1wbChJREJCYWNraW5nU3RvcmUq
LCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwqLCBp
bnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgc3RvcmVOYW1lLCBj
b25zdCBJREJLZXlQYXRoJiwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSk7CisgICAgSURC
SW5kZXhCYWNrZW5kSW1wbChJREJCYWNraW5nU3RvcmUqLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNv
bnN0IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYgc3RvcmVOYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCB1bmlxdWUsIGJvb2wg
bXVsdGlFbnRyeSk7CiAKICAgICBzdGF0aWMgdm9pZCBvcGVuQ3Vyc29ySW50ZXJuYWwoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4sIFBhc3NS
ZWZQdHI8SURCS2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIElEQkN1cnNvckJh
Y2tlbmRJbnRlcmZhY2U6OkN1cnNvclR5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFz
c1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+KTsKICAgICBzdGF0aWMgdm9p
ZCBjb3VudEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQklu
ZGV4QmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4pOwpA
QCAtOTUsNyArOTYsNyBAQCBwcml2YXRlOgogICAgIGludDY0X3QgbV9pZDsKICAgICBTdHJpbmcg
bV9uYW1lOwogICAgIFN0cmluZyBtX3N0b3JlTmFtZTsKLSAgICBTdHJpbmcgbV9rZXlQYXRoOwor
ICAgIElEQktleVBhdGggbV9rZXlQYXRoOwogICAgIGJvb2wgbV91bmlxdWU7CiAgICAgYm9vbCBt
X211bHRpRW50cnk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbnRlcmZhY2UuaAppbmRleCA4MTI3MGFlNGE5OGE5
ZDZiMGI1NjhhYzBkOTA2NmQ4YTQ2NDZhYjczLi4wYTViYmI1Njg4OTk2OTgzYTZhNzhiOGY1YmI5
ZTg3ZWE2ZTAyOTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJJbmRleEJhY2tlbmRJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbnRlcmZhY2UuaApAQCAtMzYsNiArMzYsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElEQkNhbGxiYWNrczsKIGNsYXNzIElEQktleTsK
K2NsYXNzIElEQktleVBhdGg7CiBjbGFzcyBJREJLZXlSYW5nZTsKIGNsYXNzIElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZTsKIApAQCAtNDcsNyArNDgsNyBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIFN0cmluZyBuYW1lKCkgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHN0b3JlTmFtZSgp
ID0gMDsKLSAgICB2aXJ0dWFsIFN0cmluZyBrZXlQYXRoKCkgPSAwOworICAgIHZpcnR1YWwgSURC
S2V5UGF0aCBrZXlQYXRoKCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCB1bmlxdWUoKSA9IDA7CiAg
ICAgdmlydHVhbCBib29sIG11bHRpRW50cnkoKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGguY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UGF0aC5jcHAKaW5kZXggY2Q1ZTk2NjM0MDAyYWNkNDM5
YjRhZDVjYmJiZjQ4MjY1OWQ0YTFiYS4uNDdhNzBhZTgxMjliNDc5YzNmMDI4NzBlMmE5ZmU1MTU0
MWUwY2UwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
S2V5UGF0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5
UGF0aC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNF
KQogCisjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBl
Lmg+CiAjaW5jbHVkZSA8d3RmL2R0b2EuaD4KIApAQCAtMTc5LDYgKzE4MCw2MSBAQCB2b2lkIElE
QlBhcnNlS2V5UGF0aChjb25zdCBTdHJpbmcmIGtleVBhdGgsIFZlY3RvcjxTdHJpbmc+JiBlbGVt
ZW50cywgSURCS2V5UGF0aAogICAgIH0KIH0KIAorSURCS2V5UGF0aDo6SURCS2V5UGF0aChjb25z
dCBTdHJpbmcmIHN0cmluZykKKyAgICA6IG1fdHlwZShTdHJpbmdUeXBlKQorICAgICwgbV9zdHJp
bmcoc3RyaW5nKQoreworICAgIEFTU0VSVCghbV9zdHJpbmcuaXNOdWxsKCkpOworfQorCitJREJL
ZXlQYXRoOjpJREJLZXlQYXRoKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhcnJheSkKKyAgICA6IG1f
dHlwZShBcnJheVR5cGUpCisgICAgLCBtX2FycmF5KGFycmF5KQoreworI2lmbmRlZiBOREVCVUcK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYXJyYXkuc2l6ZSgpOyArK2kpCisgICAgICAg
IEFTU0VSVCghbV9hcnJheVtpXS5pc051bGwoKSk7CisjZW5kaWYKK30KKworYm9vbCBJREJLZXlQ
YXRoOjppc1ZhbGlkKCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAgIGNhc2Ug
TnVsbFR5cGU6CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNhc2UgU3RyaW5nVHlwZToK
KyAgICAgICAgcmV0dXJuIElEQklzVmFsaWRLZXlQYXRoKG1fc3RyaW5nKTsKKworICAgIGNhc2Ug
QXJyYXlUeXBlOgorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYXJyYXkuc2l6ZSgp
OyArK2kpIHsKKyAgICAgICAgICAgIGlmICghSURCSXNWYWxpZEtleVBhdGgobV9hcnJheVtpXSkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK0lEQktleVBhdGg6Om9wZXJhdG9yIFBhc3NSZWZQdHI8SURCQW55PigpIGNvbnN0
Cit7CisgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICBjYXNlIE51bGxUeXBlOgorICAgICAgICBy
ZXR1cm4gSURCQW55OjpjcmVhdGVOdWxsKCk7CisgICAgY2FzZSBTdHJpbmdUeXBlOgorICAgICAg
ICByZXR1cm4gSURCQW55OjpjcmVhdGVTdHJpbmcobV9zdHJpbmcpOworICAgIGNhc2UgQXJyYXlU
eXBlOgorICAgICAgICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4ga2V5UGF0aHMgPSBET01TdHJpbmdM
aXN0OjpjcmVhdGUoKTsKKyAgICAgICAgZm9yIChWZWN0b3I8U3RyaW5nPjo6Y29uc3RfaXRlcmF0
b3IgaXQgPSBtX2FycmF5LmJlZ2luKCk7IGl0ICE9IG1fYXJyYXkuZW5kKCk7ICsraXQpCisgICAg
ICAgIGtleVBhdGhzLT5hcHBlbmQoKml0KTsKKyAgICAgICAgcmV0dXJuIElEQkFueTo6Y3JlYXRl
KHN0YXRpY19jYXN0PFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gPihrZXlQYXRocykpOworICAg
IH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKK30KKworCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGgu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGguaAppbmRleCBj
NTJhNjNiYThjZDllMWRhYmFlMzg0YzkwNTE3MDIyYThiNDRkMzFjLi5mNTIzNmMxNTJmMDJjYmRh
MjhkYjhjMzE1MWYyZGQ4NTdlYWFlY2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCS2V5UGF0aC5oCkBAIC0yOCwxMCArMjgsOSBAQAogCiAjaWYgRU5BQkxFKElO
REVYRURfREFUQUJBU0UpCiAKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSAiSURCQW55LmgiCisjaW5jbHVkZSAiUGxhdGZv
cm1TdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDIsOSArNDEsNDQgQEAg
ZW51bSBJREJLZXlQYXRoUGFyc2VFcnJvciB7CiAgICAgSURCS2V5UGF0aFBhcnNlRXJyb3JEb3Qs
CiB9OwogCi1ib29sIElEQklzVmFsaWRLZXlQYXRoKGNvbnN0IFN0cmluZyYpOwogdm9pZCBJREJQ
YXJzZUtleVBhdGgoY29uc3QgU3RyaW5nJiwgVmVjdG9yPFN0cmluZz4mLCBJREJLZXlQYXRoUGFy
c2VFcnJvciYpOwogCitjbGFzcyBJREJLZXlQYXRoIHsKK3B1YmxpYzoKKyAgICBJREJLZXlQYXRo
KCkgOiBtX3R5cGUoTnVsbFR5cGUpIHsgfQorICAgIElEQktleVBhdGgoY29uc3QgU3RyaW5nJik7
CisgICAgSURCS2V5UGF0aChjb25zdCBWZWN0b3I8U3RyaW5nPiYgYXJyYXkpOworCisgICAgZW51
bSBUeXBlIHsKKyAgICAgICAgTnVsbFR5cGUgPSAwLAorICAgICAgICBTdHJpbmdUeXBlLAorICAg
ICAgICBBcnJheVR5cGUKKyAgICB9OworCisgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4g
bV90eXBlOyB9CisKKyAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYXJyYXkoKSBjb25zdAorICAg
IHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBBcnJheVR5cGUpOworICAgICAgICByZXR1cm4g
bV9hcnJheTsKKyAgICB9CisKKyAgICBjb25zdCBTdHJpbmcmIHN0cmluZygpIGNvbnN0CisgICAg
eworICAgICAgICBBU1NFUlQobV90eXBlID09IFN0cmluZ1R5cGUpOworICAgICAgICByZXR1cm4g
bV9zdHJpbmc7CisgICAgfQorCisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBtX3R5
cGUgPT0gTnVsbFR5cGU7IH0KKyAgICBib29sIGlzVmFsaWQoKSBjb25zdDsKKyAgICBvcGVyYXRv
ciBQYXNzUmVmUHRyPElEQkFueT4oKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBUeXBlIG1fdHlw
ZTsKKyAgICBTdHJpbmcgbV9zdHJpbmc7CisgICAgVmVjdG9yPFN0cmluZz4gbV9hcnJheTsKK307
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRoQmFja2VuZEltcGwuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UGF0aEJhY2tlbmRJbXBsLmNwcApp
bmRleCA5NGM3ZjI3OTM1Y2ZhMzlhZDM4ODAwMTJiZTYwOWI2YjEyOTViZmJhLi42NGExZmJjNWJl
ZDcwYWM5MDg1ZjUzNjNiOGE2ZWQ5M2MyYTI4MDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRoQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGhCYWNrZW5kSW1wbC5jcHAKQEAg
LTM4LDEyICszOCwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgSURCS2V5UGF0
aEJhY2tlbmRJbXBsOjpjcmVhdGVJREJLZXlzRnJvbVNlcmlhbGl6ZWRWYWx1ZXNBbmRLZXlQYXRo
KGNvbnN0IFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgMD4mLCBjb25zdCBT
dHJpbmcmLCBWZWN0b3I8UmVmUHRyPElEQktleT4sIDA+JikKK3ZvaWQgSURCS2V5UGF0aEJhY2tl
bmRJbXBsOjpjcmVhdGVJREJLZXlzRnJvbVNlcmlhbGl6ZWRWYWx1ZXNBbmRLZXlQYXRoKGNvbnN0
IFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgMD4mLCBjb25zdCBJREJLZXlQ
YXRoJiwgVmVjdG9yPFJlZlB0cjxJREJLZXk+LCAwPiYpCiB7CiAgICAgLy8gRklYTUU6IEltcGxl
bWVudCB0aGlzIG1ldGhvZCBvbmNlIEpTQyBzdXBwb3J0cyBXaXJlRm9ybWF0IGZvciBTZXJpYWxp
emVkU2NyaXB0VmFsdWUuCiB9CiAKLVBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBJ
REJLZXlQYXRoQmFja2VuZEltcGw6OmluamVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUoUGFz
c1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIGNvbnN0
IFN0cmluZyYpCitQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gSURCS2V5UGF0aEJh
Y2tlbmRJbXBsOjppbmplY3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKFBhc3NSZWZQdHI8SURC
S2V5PiwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBjb25zdCBJREJLZXlQYXRo
JikKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgbWV0aG9kIG9uY2UgSlNDIHN1cHBv
cnRzIFdpcmVGb3JtYXQgZm9yIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS4KICAgICByZXR1cm4gUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRoQmFja2VuZEltcGwuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGhCYWNrZW5kSW1wbC5oCmluZGV4IDFj
NzYyMzIyMTdmZjUwZTRmMGQ5Nzk4ZjU3Y2Y0MjRjZGQzYzExZmQuLjBmMDU3ZWIyYmM3MzI1MWY3
YWQ1ZjFmMDUwOTkwMWVkY2U1MTg5MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQktleVBhdGhCYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGhCYWNrZW5kSW1wbC5oCkBAIC0zMywxMiArMzMs
MTMgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURCS2V5OworY2xhc3MgSURCS2V5
UGF0aDsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIAogY2xhc3MgSURCS2V5UGF0aEJh
Y2tlbmRJbXBsIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBjcmVhdGVJREJLZXlzRnJvbVNl
cmlhbGl6ZWRWYWx1ZXNBbmRLZXlQYXRoKGNvbnN0IFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiwgMD4mIHZhbHVlcywgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBWZWN0b3I8UmVm
UHRyPElEQktleT4sIDA+JiBrZXlzKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IGluamVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUoUGFzc1JlZlB0cjxJ
REJLZXk+LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIGNvbnN0IFN0cmluZyYg
a2V5UGF0aCk7CisgICAgc3RhdGljIHZvaWQgY3JlYXRlSURCS2V5c0Zyb21TZXJpYWxpemVkVmFs
dWVzQW5kS2V5UGF0aChjb25zdCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4s
IDA+JiB2YWx1ZXMsIGNvbnN0IElEQktleVBhdGgmLCBWZWN0b3I8UmVmUHRyPElEQktleT4sIDA+
JiBrZXlzKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGlu
amVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUoUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIGNvbnN0IElEQktleVBhdGgmKTsKIH07CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJC
YWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2
ZWxEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMmE3ZmRmZWNkZDkwYmQ2Y2Y5ZDYwM2Q4Yjk4OTAy
MGEyYzMyYmQ4NS4uOTE5Njg4ZTAxMjg2ZmFlYTc5OWQxOGVkZWZmNzJjMjdkZjE3NDljZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tp
bmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2
ZWxEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDx3dGYvQXNz
ZXJ0aW9ucy5oPgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJJREJGYWN0b3J5
QmFja2VuZEltcGwuaCIKKyNpbmNsdWRlICJJREJLZXlQYXRoLmgiCiAjaW5jbHVkZSAiSURCS2V5
UmFuZ2UuaCIKICNpbmNsdWRlICJJREJMZXZlbERCQ29kaW5nLmgiCiAjaW5jbHVkZSAiTGV2ZWxE
QkNvbXBhcmF0b3IuaCIKQEAgLTk4LDYgKzk5LDE0IEBAIHN0YXRpYyBib29sIHB1dFN0cmluZyhE
Qk9yVHJhbnNhY3Rpb24qIGRiLCBjb25zdCBWZWN0b3I8Y2hhcj4ga2V5LCBjb25zdCBTdHJpbmcm
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBEQk9yVHJhbnNhY3Rp
b24+CitzdGF0aWMgYm9vbCBwdXRJREJLZXlQYXRoKERCT3JUcmFuc2FjdGlvbiogZGIsIGNvbnN0
IFZlY3RvcjxjaGFyPiBrZXksIGNvbnN0IElEQktleVBhdGgmIHZhbHVlKQoreworICAgIGlmICgh
ZGItPnB1dChrZXksIGVuY29kZUlEQktleVBhdGgodmFsdWUpKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIHJldHVybiB0cnVlOworfQorCiBzdGF0aWMgaW50IGNvbXBhcmVLZXlzKGNvbnN0
IExldmVsREJTbGljZSYgYSwgY29uc3QgTGV2ZWxEQlNsaWNlJiBiKQogewogICAgIHJldHVybiBj
b21wYXJlKGEsIGIpOwpAQCAtMzI4LDcgKzMzNyw3IEBAIHN0YXRpYyBib29sIGNoZWNrT2JqZWN0
U3RvcmVBbmRNZXRhRGF0YVR5cGUoY29uc3QgTGV2ZWxEQkl0ZXJhdG9yKiBpdCwgY29uc3QgVmVj
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0
T2JqZWN0U3RvcmVzKGludDY0X3QgZGF0YWJhc2VJZCwgVmVjdG9yPGludDY0X3Q+JiBmb3VuZElk
cywgVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMsIFZlY3RvcjxTdHJpbmc+JiBmb3VuZEtleVBh
dGhzLCBWZWN0b3I8Ym9vbD4mIGZvdW5kQXV0b0luY3JlbWVudEZsYWdzKQordm9pZCBJREJMZXZl
bERCQmFja2luZ1N0b3JlOjpnZXRPYmplY3RTdG9yZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBWZWN0
b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcywgVmVjdG9y
PElEQktleVBhdGg+JiBmb3VuZEtleVBhdGhzLCBWZWN0b3I8Ym9vbD4mIGZvdW5kQXV0b0luY3Jl
bWVudEZsYWdzKQogewogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBzdGFydEtleSA9IE9iamVjdFN0
b3JlTWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCAxLCAwKTsKICAgICBjb25zdCBWZWN0
b3I8Y2hhcj4gc3RvcEtleSA9IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZU1heEtleShk
YXRhYmFzZUlkKTsKQEAgLTM2NCw4ICszNzMsNyBAQCB2b2lkIElEQkxldmVsREJCYWNraW5nU3Rv
cmU6OmdldE9iamVjdFN0b3JlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIFZlY3RvcjxpbnQ2NF90Pgog
ICAgICAgICAgICAgTE9HX0VSUk9SKCJJbnRlcm5hbCBJbmRleGVkIERCIGVycm9yLiIpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIFN0cmluZyBrZXlQYXRoID0gZGVj
b2RlU3RyaW5nKGl0LT52YWx1ZSgpLmJlZ2luKCksIGl0LT52YWx1ZSgpLmVuZCgpKTsKLSAgICAg
ICAgYm9vbCBoYXNLZXlQYXRoID0gdHJ1ZTsKKyAgICAgICAgSURCS2V5UGF0aCBrZXlQYXRoID0g
ZGVjb2RlSURCS2V5UGF0aChpdC0+dmFsdWUoKS5iZWdpbigpLCBpdC0+dmFsdWUoKS5lbmQoKSk7
CiAKICAgICAgICAgaXQtPm5leHQoKTsKICAgICAgICAgaWYgKCFjaGVja09iamVjdFN0b3JlQW5k
TWV0YURhdGFUeXBlKGl0LmdldCgpLCBzdG9wS2V5LCBvYmplY3RTdG9yZUlkLCBPYmplY3RTdG9y
ZU1ldGFEYXRhS2V5OjprQXV0b0luY3JlbWVudCkpIHsKQEAgLTM5NCwxNyArNDAyLDIzIEBAIHZv
aWQgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0T2JqZWN0U3RvcmVzKGludDY0X3QgZGF0YWJh
c2VJZCwgVmVjdG9yPGludDY0X3Q+CiAKICAgICAgICAgaXQtPm5leHQoKTsgLy8gW29wdGlvbmFs
XSBoYXMga2V5IHBhdGggKGlzIG5vdCBudWxsKQogICAgICAgICBpZiAoY2hlY2tPYmplY3RTdG9y
ZUFuZE1ldGFEYXRhVHlwZShpdC5nZXQoKSwgc3RvcEtleSwgb2JqZWN0U3RvcmVJZCwgT2JqZWN0
U3RvcmVNZXRhRGF0YUtleTo6a0hhc0tleVBhdGgpKSB7Ci0gICAgICAgICAgICBoYXNLZXlQYXRo
ID0gZGVjb2RlQm9vbChpdC0+dmFsdWUoKS5iZWdpbigpLCBpdC0+dmFsdWUoKS5lbmQoKSk7Ci0g
ICAgICAgICAgICBpZiAoIWhhc0tleVBhdGggJiYgIWtleVBhdGguaXNFbXB0eSgpKSB7CisgICAg
ICAgICAgICBib29sIGhhc0tleVBhdGggPSBkZWNvZGVCb29sKGl0LT52YWx1ZSgpLmJlZ2luKCks
IGl0LT52YWx1ZSgpLmVuZCgpKTsKKyAgICAgICAgICAgIC8vIFRoaXMgY2hlY2sgYWNjb3VudHMg
Zm9yIHR3byBsYXllcnMgb2YgbGVnYWN5IGNvZGluZzoKKyAgICAgICAgICAgIC8vICgxKSBJbml0
aWFsbHksIGhhc0tleVBhdGggd2FzIGFkZGVkIHRvIGRpc3Rpbmd1aXNoIG51bGwgdnMuIHN0cmlu
Zy4KKyAgICAgICAgICAgIC8vICgyKSBMYXRlciwgbnVsbCB2cy4gc3RyaW5nIHZzLiBhcnJheSB3
YXMgc3RvcmVkIGluIHRoZSBrZXlQYXRoIGl0c2VsZi4KKyAgICAgICAgICAgIC8vIFNvIHRoaXMg
Y2hlY2sgaXMgb25seSByZWxldmFudCBmb3Igc3RyaW5nLXR5cGUga2V5UGF0aHMuCisgICAgICAg
ICAgICBpZiAoIWhhc0tleVBhdGggJiYgKGtleVBhdGgudHlwZSgpID09IElEQktleVBhdGg6OlN0
cmluZ1R5cGUgJiYgIWtleVBhdGguc3RyaW5nKCkuaXNFbXB0eSgpKSkgewogICAgICAgICAgICAg
ICAgIExPR19FUlJPUigiSW50ZXJuYWwgSW5kZXhlZCBEQiBlcnJvci4iKTsKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIWhhc0tleVBhdGgp
CisgICAgICAgICAgICAgICAga2V5UGF0aCA9IElEQktleVBhdGgoKTsKICAgICAgICAgICAgIGl0
LT5uZXh0KCk7CiAgICAgICAgIH0KIAogICAgICAgICBmb3VuZElkcy5hcHBlbmQob2JqZWN0U3Rv
cmVJZCk7CiAgICAgICAgIGZvdW5kTmFtZXMuYXBwZW5kKG9iamVjdFN0b3JlTmFtZSk7Ci0gICAg
ICAgIGZvdW5kS2V5UGF0aHMuYXBwZW5kKGhhc0tleVBhdGggPyBrZXlQYXRoIDogU3RyaW5nKCkp
OworICAgICAgICBmb3VuZEtleVBhdGhzLmFwcGVuZChrZXlQYXRoKTsKICAgICAgICAgZm91bmRB
dXRvSW5jcmVtZW50RmxhZ3MuYXBwZW5kKGF1dG9JbmNyZW1lbnQpOwogICAgIH0KIH0KQEAgLTQy
NSw3ICs0MzksNyBAQCBzdGF0aWMgaW50NjRfdCBnZXROZXdPYmplY3RTdG9yZUlkKExldmVsREJU
cmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YQogICAgIHJldHVybiBvYmplY3RT
dG9yZUlkOwogfQogCi1ib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0
b3JlKGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgaW50NjRfdCYgYXNzaWduZWRPYmplY3RTdG9y
ZUlkKQorYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RTdG9yZShpbnQ2
NF90IGRhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5
UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBpbnQ2NF90JiBhc3NpZ25lZE9iamVjdFN0b3JlSWQp
CiB7CiAgICAgQVNTRVJUKG1fY3VycmVudFRyYW5zYWN0aW9uKTsKICAgICBpbnQ2NF90IG9iamVj
dFN0b3JlSWQgPSBnZXROZXdPYmplY3RTdG9yZUlkKG1fY3VycmVudFRyYW5zYWN0aW9uLmdldCgp
LCBkYXRhYmFzZUlkKTsKQEAgLTQ0Nyw3ICs0NjEsNyBAQCBib29sIElEQkxldmVsREJCYWNraW5n
U3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5n
JgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgb2sgPSBwdXRTdHJpbmcobV9j
dXJyZW50VHJhbnNhY3Rpb24uZ2V0KCksIGtleVBhdGhLZXksIGtleVBhdGgpOworICAgIG9rID0g
cHV0SURCS2V5UGF0aChtX2N1cnJlbnRUcmFuc2FjdGlvbi5nZXQoKSwga2V5UGF0aEtleSwga2V5
UGF0aCk7CiAgICAgaWYgKCFvaykgewogICAgICAgICBMT0dfRVJST1IoIkludGVybmFsIEluZGV4
ZWQgREIgZXJyb3IuIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTcxOCw3ICs3MzIsNyBA
QCBzdGF0aWMgYm9vbCBjaGVja0luZGV4QW5kTWV0YURhdGFLZXkoY29uc3QgTGV2ZWxEQkl0ZXJh
dG9yKiBpdCwgY29uc3QgVmVjdG9yPGNoYQogfQogCiAKLXZvaWQgSURCTGV2ZWxEQkJhY2tpbmdT
dG9yZTo6Z2V0SW5kZXhlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgVmVjdG9yPGludDY0X3Q+JiBmb3VuZElkcywgVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMs
IFZlY3RvcjxTdHJpbmc+JiBmb3VuZEtleVBhdGhzLCBWZWN0b3I8Ym9vbD4mIGZvdW5kVW5pcXVl
RmxhZ3MsIFZlY3Rvcjxib29sPiYgZm91bmRNdWx0aUVudHJ5RmxhZ3MpCit2b2lkIElEQkxldmVs
REJCYWNraW5nU3RvcmU6OmdldEluZGV4ZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIFZlY3RvcjxpbnQ2NF90PiYgZm91bmRJZHMsIFZlY3RvcjxTdHJpbmc+JiBm
b3VuZE5hbWVzLCBWZWN0b3I8SURCS2V5UGF0aD4mIGZvdW5kS2V5UGF0aHMsIFZlY3Rvcjxib29s
PiYgZm91bmRVbmlxdWVGbGFncywgVmVjdG9yPGJvb2w+JiBmb3VuZE11bHRpRW50cnlGbGFncykK
IHsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gc3RhcnRLZXkgPSBJbmRleE1ldGFEYXRhS2V5Ojpl
bmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgMCwgMCk7CiAgICAgY29uc3QgVmVjdG9y
PGNoYXI+IHN0b3BLZXkgPSBJbmRleE1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2Jq
ZWN0U3RvcmVJZCArIDEsIDAsIDApOwpAQCAtNzYxLDcgKzc3NSw3IEBAIHZvaWQgSURCTGV2ZWxE
QkJhY2tpbmdTdG9yZTo6Z2V0SW5kZXhlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJCiAgICAgICAgICAgICBMT0dfRVJST1IoIkludGVybmFsIEluZGV4ZWQgREIgZXJy
b3IuIik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgU3RyaW5nIGtl
eVBhdGggPSBkZWNvZGVTdHJpbmcoaXQtPnZhbHVlKCkuYmVnaW4oKSwgaXQtPnZhbHVlKCkuZW5k
KCkpOworICAgICAgICBJREJLZXlQYXRoIGtleVBhdGggPSBkZWNvZGVJREJLZXlQYXRoKGl0LT52
YWx1ZSgpLmJlZ2luKCksIGl0LT52YWx1ZSgpLmVuZCgpKTsKIAogICAgICAgICBpdC0+bmV4dCgp
OyAvLyBbb3B0aW9uYWxdIG11bHRpRW50cnkgZmxhZwogICAgICAgICBib29sIGluZGV4TXVsdGlF
bnRyeSA9IGZhbHNlOwpAQCAtNzk0LDcgKzgwOCw3IEBAIHN0YXRpYyBpbnQ2NF90IGdldE5ld0lu
ZGV4SWQoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlk
CiAgICAgcmV0dXJuIGluZGV4SWQ7CiB9CiAKLWJvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6
Y3JlYXRlSW5kZXgoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGlzVW5pcXVlLCBi
b29sIGlzTXVsdGlFbnRyeSwgaW50NjRfdCYgaW5kZXhJZCkKK2Jvb2wgSURCTGV2ZWxEQkJhY2tp
bmdTdG9yZTo6Y3JlYXRlSW5kZXgoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9v
bCBpc1VuaXF1ZSwgYm9vbCBpc011bHRpRW50cnksIGludDY0X3QmIGluZGV4SWQpCiB7CiAgICAg
QVNTRVJUKG1fY3VycmVudFRyYW5zYWN0aW9uKTsKICAgICBpbmRleElkID0gZ2V0TmV3SW5kZXhJ
ZChtX2N1cnJlbnRUcmFuc2FjdGlvbi5nZXQoKSwgZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCk7
CkBAIC04MTgsNyArODMyLDcgQEAgYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVhdGVJ
bmRleChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmUKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAotICAgIG9rID0gcHV0U3RyaW5nKG1fY3VycmVudFRyYW5zYWN0
aW9uLmdldCgpLCBrZXlQYXRoS2V5LCBrZXlQYXRoKTsKKyAgICBvayA9IHB1dElEQktleVBhdGgo
bV9jdXJyZW50VHJhbnNhY3Rpb24uZ2V0KCksIGtleVBhdGhLZXksIGtleVBhdGgpOwogICAgIGlm
ICghb2spIHsKICAgICAgICAgTE9HX0VSUk9SKCJJbnRlcm5hbCBJbmRleGVkIERCIGVycm9yLiIp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmgKaW5kZXggZWMzMDYzYjZl
ODc3MWNkY2NmMDIzYWJkOWQ1NzgyMTcxZTAwMjJjMi4uYzk0MGYzMjAzMTIzNjlhZDcwNTFhNjk3
YmYzODUwYTExZTVlNDRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaApAQCAtNTAsOCArNTAsOCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBib29sIHVwZGF0ZUlEQkRhdGFiYXNlTWV0YURhdGEoaW50NjRf
dCByb3dJZCwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKTsKICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRl
RGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lKTsKIAotICAgIHZpcnR1YWwgdm9pZCBnZXRPYmpl
Y3RTdG9yZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBW
ZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcywgVmVjdG9yPFN0cmluZz4mIGZvdW5kS2V5UGF0aHMs
IFZlY3Rvcjxib29sPiYgZm91bmRBdXRvSW5jcmVtZW50RmxhZ3MpOwotICAgIHZpcnR1YWwgYm9v
bCBjcmVhdGVPYmplY3RTdG9yZShpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIGludDY0X3QmIGFz
c2lnbmVkT2JqZWN0U3RvcmVJZCk7CisgICAgdmlydHVhbCB2b2lkIGdldE9iamVjdFN0b3Jlcyhp
bnQ2NF90IGRhdGFiYXNlSWQsIFZlY3RvcjxpbnQ2NF90PiYgZm91bmRJZHMsIFZlY3RvcjxTdHJp
bmc+JiBmb3VuZE5hbWVzLCBWZWN0b3I8SURCS2V5UGF0aD4mIGZvdW5kS2V5UGF0aHMsIFZlY3Rv
cjxib29sPiYgZm91bmRBdXRvSW5jcmVtZW50RmxhZ3MpOworICAgIHZpcnR1YWwgYm9vbCBjcmVh
dGVPYmplY3RTdG9yZShpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgSURCS2V5UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCwgaW50NjRfdCYgYXNzaWduZWRPYmpl
Y3RTdG9yZUlkKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoaW50NjRfdCBk
YXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxPYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXI+IGNyZWF0ZUludmFsaWRSZWNvcmRJZGVudGlm
aWVyKCk7CiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0T2JqZWN0U3RvcmVSZWNvcmQoaW50NjRfdCBk
YXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYpOwpAQCAtNjMs
OCArNjMsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgZm9yRWFjaE9iamVjdFN0b3Jl
UmVjb3JkKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBPYmplY3RT
dG9yZVJlY29yZENhbGxiYWNrJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0SW5kZXhlcyhpbnQ2
NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgVmVjdG9yPGludDY0X3Q+JiBm
b3VuZElkcywgVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMsIFZlY3RvcjxTdHJpbmc+JiBmb3Vu
ZEtleVBhdGhzLCBWZWN0b3I8Ym9vbD4mIGZvdW5kVW5pcXVlRmxhZ3MsIFZlY3Rvcjxib29sPiYg
Zm91bmRNdWx0aUVudHJ5RmxhZ3MpOwotICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJbmRleChpbnQ2
NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgaXNVbmlxdWUsIGJvb2wgaXNNdWx0aUVudHJ5
LCBpbnQ2NF90JiBpbmRleElkKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0SW5kZXhlcyhpbnQ2NF90
IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgVmVjdG9yPGludDY0X3Q+JiBmb3Vu
ZElkcywgVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMsIFZlY3RvcjxJREJLZXlQYXRoPiYgZm91
bmRLZXlQYXRocywgVmVjdG9yPGJvb2w+JiBmb3VuZFVuaXF1ZUZsYWdzLCBWZWN0b3I8Ym9vbD4m
IGZvdW5kTXVsdGlFbnRyeUZsYWdzKTsKKyAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlSW5kZXgoaW50
NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgaXNVbmlxdWUsIGJvb2wgaXNNdWx0aUVudHJ5LCBp
bnQ2NF90JiBpbmRleElkKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlSW5kZXgoaW50NjRfdCBk
YXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCk7CiAgICAg
dmlydHVhbCBib29sIHB1dEluZGV4RGF0YUZvclJlY29yZChpbnQ2NF90IGRhdGFiYXNlSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkmLCBjb25z
dCBPYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXIqKTsKICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRl
SW5kZXhEYXRhRm9yUmVjb3JkKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IE9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllciop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxE
QkNvZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERC
Q29kaW5nLmNwcAppbmRleCAxZWE1NjFlNDc1MGY5NDQ3NGNiN2Y2YjRmNDkzYTQzZGFhMWJkYjRk
Li4xOGI4MzQ5NTVhNDk5Njg2NGU2ZGQxMTBmZmUwNTkzYWYzM2ZjMDQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmNwcApA
QCAtMzAsNiArMzAsNyBAQAogI2lmIFVTRShMRVZFTERCKQogCiAjaW5jbHVkZSAiSURCS2V5Lmgi
CisjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgogI2luY2x1ZGUgIkxldmVsREJTbGljZS5oIgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApAQCAtMTQyLDYgKzE0Myw5IEBAIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGtJREJLZXlOdW1iZXJUeXBlQnl0ZSA9IDM7CiBzdGF0
aWMgY29uc3QgdW5zaWduZWQgY2hhciBrSURCS2V5QXJyYXlUeXBlQnl0ZSA9IDQ7CiBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgY2hhciBrSURCS2V5TWluS2V5VHlwZUJ5dGUgPSA1OwogCitzdGF0aWMg
Y29uc3QgdW5zaWduZWQgY2hhciBrSURCS2V5UGF0aFR5cGVDb2RlZEJ5dGUxID0gMDsKK3N0YXRp
YyBjb25zdCB1bnNpZ25lZCBjaGFyIGtJREJLZXlQYXRoVHlwZUNvZGVkQnl0ZTIgPSAwOworCiBz
dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBrT2JqZWN0U3RvcmVEYXRhSW5kZXhJZCA9IDE7CiBz
dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBrRXhpc3RzRW50cnlJbmRleElkID0gMjsKIApAQCAt
NjI2LDYgKzYzMCw3NCBAQCBpbnQgY29tcGFyZUVuY29kZWRJREJLZXlzKGNvbnN0IFZlY3Rvcjxj
aGFyPiYga2V5QSwgY29uc3QgVmVjdG9yPGNoYXI+JiBrZXlCKQogICAgIHJldHVybiBjb21wYXJl
RW5jb2RlZElEQktleXMocCwgbGltaXRBLCBxLCBsaW1pdEIpOwogfQogCitWZWN0b3I8Y2hhcj4g
ZW5jb2RlSURCS2V5UGF0aChjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKQoreworICAgIC8vIE1h
eSBiZSB0eXBlZCwgb3IgbWF5IGJlIGEgcmF3IHN0cmluZy4gQW4gaW52YWxpZCBsZWFkaW5nCisg
ICAgLy8gYnl0ZSBpcyB1c2VkIHRvIGlkZW50aWZ5IHR5cGVkIGNvZGluZy4gTmV3IHJlY29yZHMg
YXJlCisgICAgLy8gYWx3YXlzIHdyaXR0ZW4gYXMgdHlwZWQuCisgICAgVmVjdG9yPGNoYXI+IHJl
dDsKKyAgICByZXQuYXBwZW5kKGtJREJLZXlQYXRoVHlwZUNvZGVkQnl0ZTEpOworICAgIHJldC5h
cHBlbmQoa0lEQktleVBhdGhUeXBlQ29kZWRCeXRlMik7CisgICAgcmV0LmFwcGVuZChzdGF0aWNf
Y2FzdDxjaGFyPihrZXlQYXRoLnR5cGUoKSkpOworICAgIHN3aXRjaCAoa2V5UGF0aC50eXBlKCkp
IHsKKyAgICBjYXNlIElEQktleVBhdGg6Ok51bGxUeXBlOgorICAgICAgICBicmVhazsKKyAgICBj
YXNlIElEQktleVBhdGg6OlN0cmluZ1R5cGU6CisgICAgICAgIHJldC5hcHBlbmQoZW5jb2RlU3Ry
aW5nV2l0aExlbmd0aChrZXlQYXRoLnN0cmluZygpKSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgSURCS2V5UGF0aDo6QXJyYXlUeXBlOiB7CisgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBhcnJheSA9IGtleVBhdGguYXJyYXkoKTsKKyAgICAgICAgc2l6ZV90IGNvdW50ID0gYXJyYXku
c2l6ZSgpOworICAgICAgICByZXQuYXBwZW5kKGVuY29kZVZhckludChjb3VudCkpOworICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpCisgICAgICAgICAgICByZXQuYXBw
ZW5kKGVuY29kZVN0cmluZ1dpdGhMZW5ndGgoYXJyYXlbaV0pKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIH0KKyAgICByZXR1cm4gcmV0OworfQorCitJREJLZXlQYXRoIGRlY29kZUlEQktl
eVBhdGgoY29uc3QgY2hhciogcCwgY29uc3QgY2hhciogbGltaXQpCit7CisgICAgLy8gTWF5IGJl
IHR5cGVkLCBvciBtYXkgYmUgYSByYXcgc3RyaW5nLiBBbiBpbnZhbGlkIGxlYWRpbmcKKyAgICAv
LyBieXRlIHNlcXVlbmNlIGlzIHVzZWQgdG8gaWRlbnRpZnkgdHlwZWQgY29kaW5nLiBOZXcgcmVj
b3JkcyBhcmUKKyAgICAvLyBhbHdheXMgd3JpdHRlbiBhcyB0eXBlZC4KKyAgICBpZiAocCA9PSBs
aW1pdCB8fCAobGltaXQgLSBwID49IDIgJiYgKCpwICE9IGtJREJLZXlQYXRoVHlwZUNvZGVkQnl0
ZTEgfHwgKihwICsgMSkgIT0ga0lEQktleVBhdGhUeXBlQ29kZWRCeXRlMikpKQorICAgICAgICBy
ZXR1cm4gSURCS2V5UGF0aChkZWNvZGVTdHJpbmcocCwgbGltaXQpKTsKKyAgICBwICs9IDI7Cisg
ICAgCisgICAgQVNTRVJUKHAgIT0gbGltaXQpOworICAgIElEQktleVBhdGg6OlR5cGUgdHlwZSA9
IHN0YXRpY19jYXN0PElEQktleVBhdGg6OlR5cGU+KCpwKyspOworICAgIHN3aXRjaCAodHlwZSkg
eworICAgIGNhc2UgSURCS2V5UGF0aDo6TnVsbFR5cGU6CisgICAgICAgIEFTU0VSVChwID09IGxp
bWl0KTsKKyAgICAgICAgcmV0dXJuIElEQktleVBhdGgoKTsKKyAgICBjYXNlIElEQktleVBhdGg6
OlN0cmluZ1R5cGU6IHsKKyAgICAgICAgU3RyaW5nIHN0cmluZzsKKyAgICAgICAgcCA9IGRlY29k
ZVN0cmluZ1dpdGhMZW5ndGgocCwgbGltaXQsIHN0cmluZyk7CisgICAgICAgIEFTU0VSVChwID09
IGxpbWl0KTsKKyAgICAgICAgcmV0dXJuIElEQktleVBhdGgoc3RyaW5nKTsKKyAgICB9CisgICAg
Y2FzZSBJREJLZXlQYXRoOjpBcnJheVR5cGU6IHsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gYXJy
YXk7CisgICAgICAgIGludDY0X3QgY291bnQ7CisgICAgICAgIHAgPSBkZWNvZGVWYXJJbnQocCwg
bGltaXQsIGNvdW50KTsKKyAgICAgICAgQVNTRVJUKHApOworICAgICAgICBBU1NFUlQoY291bnQg
Pj0gMCk7CisgICAgICAgIHdoaWxlIChjb3VudC0tKSB7CisgICAgICAgICAgICBTdHJpbmcgc3Ry
aW5nOworICAgICAgICAgICAgcCA9IGRlY29kZVN0cmluZ1dpdGhMZW5ndGgocCwgbGltaXQsIHN0
cmluZyk7CisgICAgICAgICAgICBBU1NFUlQocCk7CisgICAgICAgICAgICBhcnJheS5hcHBlbmQo
c3RyaW5nKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQocCA9PSBsaW1pdCk7CisgICAgICAg
IHJldHVybiBJREJLZXlQYXRoKGFycmF5KTsKKyAgICB9CisgICAgfQorICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBJREJLZXlQYXRoKCk7Cit9CisKIG5hbWVzcGFjZSB7CiB0
ZW1wbGF0ZTx0eXBlbmFtZSBLZXlUeXBlPgogaW50IGRlY29kZUFuZENvbXBhcmUoY29uc3QgTGV2
ZWxEQlNsaWNlJiBhLCBjb25zdCBMZXZlbERCU2xpY2UmIGIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmgKaW5kZXggYzgwMWRmN2Vi
NWViZThmZTUzNThiZTk3MDg5OWEwN2MyN2ZkZDViNy4uY2MxZjcyNzhkZWZlYzZlNDYwZDk0YzE0
MjE5MjZkMTQ5MTg2MzlkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCTGV2ZWxEQkNvZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuaApAQCAtMzYsNiArMzYsNyBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBJREJLZXk7CitjbGFzcyBJREJLZXlQYXRoOwogY2xhc3MgTGV2ZWxE
QlNsaWNlOwogCiBuYW1lc3BhY2UgSURCTGV2ZWxEQkNvZGluZyB7CkBAIC02Myw2ICs2NCw4IEBA
IFZlY3RvcjxjaGFyPiBlbmNvZGVJREJLZXkoY29uc3QgSURCS2V5Jik7CiBjb25zdCBjaGFyKiBk
ZWNvZGVJREJLZXkoY29uc3QgY2hhciogcCwgY29uc3QgY2hhciogbGltaXQsIFJlZlB0cjxJREJL
ZXk+JiBmb3VuZEtleSk7CiBjb25zdCBjaGFyKiBleHRyYWN0RW5jb2RlZElEQktleShjb25zdCBj
aGFyKiBzdGFydCwgY29uc3QgY2hhciogbGltaXQsIFZlY3RvcjxjaGFyPiogcmVzdWx0KTsKIGlu
dCBjb21wYXJlRW5jb2RlZElEQktleXMoY29uc3QgVmVjdG9yPGNoYXI+JiwgY29uc3QgVmVjdG9y
PGNoYXI+Jik7CitWZWN0b3I8Y2hhcj4gZW5jb2RlSURCS2V5UGF0aChjb25zdCBJREJLZXlQYXRo
Jik7CitJREJLZXlQYXRoIGRlY29kZUlEQktleVBhdGgoY29uc3QgY2hhciosIGNvbnN0IGNoYXIq
KTsKIAogaW50IGNvbXBhcmUoY29uc3QgTGV2ZWxEQlNsaWNlJiwgY29uc3QgTGV2ZWxEQlNsaWNl
JiwgYm9vbCBpbmRleEtleXMgPSBmYWxzZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAppbmRleCA0MzE5ZDdmMGE5MzhkYTVm
N2Q3NzA2ZjBjYmJkODZiNTYyOTA3ZmI5Li45OGZmODJiYTgzYjE1YTVjOTk2ZjM1NWI0YmEwNzk1
YTQzMzZkNmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJPYmplY3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCT2JqZWN0U3RvcmUuY3BwCkBAIC02MCw3ICs2MCw3IEBAIFN0cmluZyBJREJPYmplY3RTdG9y
ZTo6bmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fYmFja2VuZC0+bmFtZSgpOwogfQogCi1TdHJp
bmcgSURCT2JqZWN0U3RvcmU6OmtleVBhdGgoKSBjb25zdAorUGFzc1JlZlB0cjxJREJBbnk+IElE
Qk9iamVjdFN0b3JlOjprZXlQYXRoKCkgY29uc3QKIHsKICAgICBJREJfVFJBQ0UoIklEQk9iamVj
dFN0b3JlOjprZXlQYXRoIik7CiAgICAgcmV0dXJuIG1fYmFja2VuZC0+a2V5UGF0aCgpOwpAQCAt
MjA1LDggKzIwNSwxMyBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpj
bGVhcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeAogCiBQYXNzUmVmUHRyPElE
QkluZGV4PiBJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBTdHJpbmcmIGtleVBhdGgsIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogeworICAgIHJldHVybiBjcmVhdGVJbmRleChuYW1lLCBJREJLZXlQYXRoKGtl
eVBhdGgpLCBvcHRpb25zLCBlYyk7Cit9CisKK1Bhc3NSZWZQdHI8SURCSW5kZXg+IElEQk9iamVj
dFN0b3JlOjpjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgm
IGtleVBhdGgsIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIEV4Y2VwdGlvbkNvZGUmIGVjKQor
ewogICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4Iik7Ci0gICAgaWYg
KCFJREJJc1ZhbGlkS2V5UGF0aChrZXlQYXRoKSkgeworICAgIGlmICgha2V5UGF0aC5pc1ZhbGlk
KCkpIHsKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Tk9OX1RSQU5TSUVOVF9F
UlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oCmluZGV4IDVkNGQxOGRjMDY1OWM0YjM5MjA4
ZGQ2ODI5MWI1MTEyOTQzY2NmOTAuLmIwYzJlOGU4MjRkZDFkY2IxMDRiNTE2YmZhNDUxZWJiZDZj
ZWJmNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9i
amVjdFN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2Jq
ZWN0U3RvcmUuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgfklEQk9iamVjdFN0b3Jl
KCkgeyB9CiAKICAgICBTdHJpbmcgbmFtZSgpIGNvbnN0OwotICAgIFN0cmluZyBrZXlQYXRoKCkg
Y29uc3Q7CisgICAgUGFzc1JlZlB0cjxJREJBbnk+IGtleVBhdGgoKSBjb25zdDsKICAgICBQYXNz
UmVmUHRyPERPTVN0cmluZ0xpc3Q+IGluZGV4TmFtZXMoKSBjb25zdDsKICAgICBJREJUcmFuc2Fj
dGlvbiogdHJhbnNhY3Rpb24oKSBjb25zdDsKIApAQCAtNzcsNiArNzcsOCBAQCBwdWJsaWM6CiAg
ICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBjbGVhcihTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
RXhjZXB0aW9uQ29kZSYpOwogCiAgICAgUGFzc1JlZlB0cjxJREJJbmRleD4gY3JlYXRlSW5kZXgo
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGNvbnN0IERpY3Rpb25h
cnkmLCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxJREJJbmRleD4gY3JlYXRlSW5k
ZXgoY29uc3QgU3RyaW5nJiwgY29uc3QgSURCS2V5UGF0aCYsIGNvbnN0IERpY3Rpb25hcnkmLCBF
eGNlcHRpb25Db2RlJik7CisKICAgICBQYXNzUmVmUHRyPElEQkluZGV4PiBpbmRleChjb25zdCBT
dHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0
IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5pZGwKaW5kZXggOGNlZDM4Y2QxZWZh
MzJjY2IzNGYwNjI4ZDNjNmE5MjhlYjg4N2ZkMi4uMDM3ZWJkM2IzMmExNDMzZmI2OTA5ZWEzNTMz
MjE2NDJhZGY5N2ZhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCT2JqZWN0U3RvcmUuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQk9iamVjdFN0b3JlLmlkbApAQCAtMjksNyArMjksNyBAQCBtb2R1bGUgc3RvcmFnZSB7
CiAgICAgICAgIENvbmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0UKICAgICBdIElEQk9iamVjdFN0
b3JlIHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtUcmVhdFJldHVybmVkTnVsbFN0cmlu
Z0FzPU51bGxdIERPTVN0cmluZyBuYW1lOwotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW1Ry
ZWF0UmV0dXJuZWROdWxsU3RyaW5nQXM9TnVsbF0gRE9NU3RyaW5nIGtleVBhdGg7CisgICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBJREJBbnkga2V5UGF0aDsKICAgICAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIERPTVN0cmluZ0xpc3QgaW5kZXhOYW1lczsKICAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIElEQlRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwu
Y3BwCmluZGV4IDdlMmI1NTI3MWY3ODY3OTcyM2ViYWZhZTgxNTFiNGNiMmJiNTVhZDIuLmI3MDZl
MTdkMjA0NzA1ZDBjYzQ5MDIxOWY1MjE5NGRjZmU5OTJjNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGwuY3BwCkBAIC01MSw3ICs1MSw3IEBAIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6On5J
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKCkKIHsKIH0KIAotSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbDo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbChJREJCYWNraW5nU3RvcmUqIGJhY2tpbmdT
dG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50KQorSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbDo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbChJREJCYWNraW5nU3RvcmUq
IGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IGlkLCBjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkK
ICAgICA6IG1fYmFja2luZ1N0b3JlKGJhY2tpbmdTdG9yZSkKICAgICAsIG1fZGF0YWJhc2VJZChk
YXRhYmFzZUlkKQogICAgICwgbV9pZChpZCkKQEAgLTYzLDcgKzYzLDcgQEAgSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbDo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbChJREJCYWNraW5nU3RvcmUq
IGJhY2tpbmdTdG8KICAgICBsb2FkSW5kZXhlcygpOwogfQogCi1JREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKElEQkJhY2tpbmdTdG9yZSogYmFja2lu
Z1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQpCitJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKElEQkJhY2tpbmdTdG9yZSogYmFja2luZ1N0
b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5
UGF0aCYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50KQogICAgIDogbV9iYWNraW5nU3RvcmUo
YmFja2luZ1N0b3JlKQogICAgICwgbV9kYXRhYmFzZUlkKGRhdGFiYXNlSWQpCiAgICAgLCBtX2lk
KEludmFsaWRJZCkKQEAgLTEzNyw5ICsxMzcsMTEgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsOjpnZXRJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjwK
ICAgICBjYWxsYmFja3MtPm9uU3VjY2VzcyhTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZy
b21XaXJlKHdpcmVEYXRhKSk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPElEQktleT4gZmV0Y2hL
ZXlGcm9tS2V5UGF0aChTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHZhbHVlLCBjb25zdCBTdHJpbmcm
IGtleVBhdGgpCitzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXk+IGZldGNoS2V5RnJvbUtleVBhdGgo
U2VyaWFsaXplZFNjcmlwdFZhbHVlKiB2YWx1ZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCkK
IHsKICAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmZldGNoS2V5RnJv
bUtleVBhdGgiKTsKKyAgICBBU1NFUlQoIWtleVBhdGguaXNOdWxsKCkpOworCiAgICAgVmVjdG9y
PFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+ID4gdmFsdWVzOwogICAgIHZhbHVlcy5hcHBl
bmQodmFsdWUpOwogICAgIFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+IGtleXM7CkBAIC0xNTAsNyAr
MTUyLDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5PiBmZXRjaEtleUZyb21LZXlQYXRoKFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSogdmFsdWUsIGNvbnMKICAgICByZXR1cm4ga2V5c1swXS5yZWxl
YXNlKCk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gaW5q
ZWN0S2V5SW50b0tleVBhdGgoUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpCitzdGF0aWMg
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGluamVjdEtleUludG9LZXlQYXRoKFBh
c3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2
YWx1ZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCkKIHsKICAgICBJREJfVFJBQ0UoIklEQk9i
amVjdFN0b3JlQmFja2VuZEltcGw6OmluamVjdEtleUludG9LZXlQYXRoIik7CiAgICAgcmV0dXJu
IElEQktleVBhdGhCYWNrZW5kSW1wbDo6aW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShr
ZXksIHZhbHVlLCBrZXlQYXRoKTsKQEAgLTUwMyw3ICs1MDUsNyBAQCBib29sIElEQk9iamVjdFN0
b3JlQmFja2VuZEltcGw6OnBvcHVsYXRlSW5kZXgoSURCQmFja2luZ1N0b3JlJiBiYWNraW5nU3Rv
cmUsIGludAogICAgIHJldHVybiB0cnVlOwogfQogCi1QYXNzUmVmUHRyPElEQkluZGV4QmFja2Vu
ZEludGVyZmFjZT4gSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y3JlYXRlSW5kZXgoY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11
bHRpRW50cnksIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIEV4
Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSwg
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7CiAgICAgaWYgKG5hbWUuaXNOdWxsKCkpIHsKICAgICAgICAgZWMgPSBJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6Tk9OX1RSQU5TSUVOVF9FUlI7CkBAIC02NTQsNyArNjU2LDcgQEAgdm9p
ZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpsb2FkSW5kZXhlcygpCiB7CiAgICAgVmVjdG9y
PGludDY0X3Q+IGlkczsKICAgICBWZWN0b3I8U3RyaW5nPiBuYW1lczsKLSAgICBWZWN0b3I8U3Ry
aW5nPiBrZXlQYXRoczsKKyAgICBWZWN0b3I8SURCS2V5UGF0aD4ga2V5UGF0aHM7CiAgICAgVmVj
dG9yPGJvb2w+IHVuaXF1ZUZsYWdzOwogICAgIFZlY3Rvcjxib29sPiBtdWx0aUVudHJ5RmxhZ3M7
CiAgICAgbV9iYWNraW5nU3RvcmUtPmdldEluZGV4ZXMobV9kYXRhYmFzZUlkLCBtX2lkLCBpZHMs
IG5hbWVzLCBrZXlQYXRocywgdW5pcXVlRmxhZ3MsIG11bHRpRW50cnlGbGFncyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsLmgKaW5kZXggNmUwYzVlOGZkNmFhMWEzNWJhM2ExNzgyM2M1MzE4OTE3Y2Yx
MjdmOS4uYTlkN2RiNDllM2FmYWU1OWFiNWRhNzJhMTZhYTY1YzU3MGEyOWU0YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlQmFja2VuZEltcGwuaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsX2gKICNkZWZpbmUgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbF9oCiAKKyNp
bmNsdWRlICJJREJLZXlQYXRoLmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50
ZXJmYWNlLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdIYXNoLmg+CkBAIC00MiwxMSArNDMsMTEgQEAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDsKIAogY2xhc3MgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCA6IHB1YmxpYyBJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IGNyZWF0ZShJREJCYWNraW5nU3RvcmUqIGJhY2tp
bmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50KQorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IGNyZWF0ZShJREJCYWNraW5n
U3RvcmUqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IGlkLCBjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0b0luY3Jl
bWVudCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbChiYWNraW5nU3RvcmUsIGRhdGFiYXNlSWQsIGlkLCBuYW1lLCBrZXlQYXRoLCBh
dXRvSW5jcmVtZW50KSk7CiAgICAgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9iamVjdFN0
b3JlQmFja2VuZEltcGw+IGNyZWF0ZShJREJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSwgaW50
NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0
aCwgYm9vbCBhdXRvSW5jcmVtZW50KQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9iamVjdFN0
b3JlQmFja2VuZEltcGw+IGNyZWF0ZShJREJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSwgaW50
NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtl
eVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbChiYWNraW5nU3RvcmUsIGRhdGFiYXNlSWQs
IG5hbWUsIGtleVBhdGgsIGF1dG9JbmNyZW1lbnQpKTsKICAgICB9CkBAIC02Miw3ICs2Myw3IEBA
IHB1YmxpYzoKICAgICBpbnQ2NF90IGRhdGFiYXNlSWQoKSBjb25zdCB7IHJldHVybiBtX2RhdGFi
YXNlSWQ7IH0KIAogICAgIHZpcnR1YWwgU3RyaW5nIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25h
bWU7IH0KLSAgICB2aXJ0dWFsIFN0cmluZyBrZXlQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9rZXlQ
YXRoOyB9CisgICAgdmlydHVhbCBJREJLZXlQYXRoIGtleVBhdGgoKSBjb25zdCB7IHJldHVybiBt
X2tleVBhdGg7IH0KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gaW5kZXhO
YW1lcygpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBhdXRvSW5jcmVtZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9hdXRvSW5jcmVtZW50OyB9CiAKQEAgLTczLDcgKzc0LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBF
eGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyKFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYp
OwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gY3Jl
YXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wg
dW5pcXVlLCBib29sIG11bHRpRW50cnksIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSos
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5k
SW50ZXJmYWNlPiBjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBh
dGgmLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQklu
ZGV4QmFja2VuZEludGVyZmFjZT4gaW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25D
b2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwg
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwogCkBAIC04
Myw4ICs4NCw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBwb3B1bGF0ZUluZGV4KElEQkJh
Y2tpbmdTdG9yZSYsIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQ
YXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+KTsKIAogcHJpdmF0ZToKLSAgICBJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsKElEQkJhY2tpbmdTdG9yZSosIGludDY0X3QgZGF0YWJhc2VJZCwg
aW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJv
b2wgYXV0b0luY3JlbWVudCk7Ci0gICAgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbChJREJCYWNr
aW5nU3RvcmUqLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQpOworICAgIElEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGwoSURCQmFja2luZ1N0b3JlKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNy
ZW1lbnQpOworICAgIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwoSURCQmFja2luZ1N0b3JlKiwg
aW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgm
LCBib29sIGF1dG9JbmNyZW1lbnQpOwogCiAgICAgdm9pZCBsb2FkSW5kZXhlcygpOwogICAgIFBh
c3NSZWZQdHI8SURCS2V5PiBnZW5BdXRvSW5jcmVtZW50S2V5KCk7CkBAIC0xMTAsNyArMTExLDcg
QEAgcHJpdmF0ZToKICAgICBpbnQ2NF90IG1fZGF0YWJhc2VJZDsKICAgICBpbnQ2NF90IG1faWQ7
CiAgICAgU3RyaW5nIG1fbmFtZTsKLSAgICBTdHJpbmcgbV9rZXlQYXRoOworICAgIElEQktleVBh
dGggbV9rZXlQYXRoOwogICAgIGJvb2wgbV9hdXRvSW5jcmVtZW50OwogCiAgICAgdHlwZWRlZiBI
YXNoTWFwPFN0cmluZywgUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+ID4gSW5kZXhNYXA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9y
ZUJhY2tlbmRJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
Qk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZS5oCmluZGV4IGFlNjRhNWVmNmVlMGE1MTQ2YTRl
MTRiZWVmNjMyMmQ1NTg1NjAwZTAuLjMyYWUzOTI4ZmQ4ZThmNDA1MzZiOGJmYjlhMzg5ZDc3OWE0
MDYyNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9i
amVjdFN0b3JlQmFja2VuZEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZS5oCkBAIC0zNyw2ICszNyw3
IEBAIGNsYXNzIERPTVN0cmluZ0xpc3Q7CiBjbGFzcyBJREJDYWxsYmFja3M7CiBjbGFzcyBJREJJ
bmRleEJhY2tlbmRJbnRlcmZhY2U7CiBjbGFzcyBJREJLZXk7CitjbGFzcyBJREJLZXlQYXRoOwog
Y2xhc3MgSURCS2V5UmFuZ2U7CiBjbGFzcyBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U7
CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CkBAIC00OCw3ICs0OSw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5JREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UoKSB7IH0KIAogICAg
IHZpcnR1YWwgU3RyaW5nIG5hbWUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBTdHJpbmcga2V5
UGF0aCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIElEQktleVBhdGgga2V5UGF0aCgpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gaW5kZXhOYW1lcygp
IGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBnZXQoUGFzc1JlZlB0cjxJREJLZXlSYW5n
ZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlKiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKQEAgLTY0LDcgKzY1LDcgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCB2b2lkIGNsZWFyKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKIAotICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZUluZGV4KGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBt
dWx0aUVudHJ5LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2Rl
JikgPSAwOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+
IGNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wg
dW5pcXVlLCBib29sIG11bHRpRW50cnksIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSos
IEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkluZGV4QmFj
a2VuZEludGVyZmFjZT4gaW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFyeS5jcHAKaW5kZXggMTBhYWZlOGRjNmMy
ODFlZmU3MWQ0OWZiOTJmNGJiOTU2NzU4NzUxNC4uZGM3MjRmYTk1YmIzMWUwYzQ0YmI4Y2Y2MzNi
NjcwYWZhNDk1OTBkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGlj
dGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFyeS5j
cHAKQEAgLTQyNCw2ICs0MjQsMjMgQEAgYm9vbCBEaWN0aW9uYXJ5OjpnZXQoY29uc3QgU3RyaW5n
JiBrZXksIERpY3Rpb25hcnkmIHZhbHVlKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCiti
b29sIERpY3Rpb25hcnk6OmdldChjb25zdCBTdHJpbmcmIGtleSwgVmVjdG9yPFN0cmluZz4mIHZh
bHVlKSBjb25zdAoreworICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHY4VmFsdWU7CisgICAgaWYg
KCFnZXRLZXkoa2V5LCB2OFZhbHVlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYg
KCF2OFZhbHVlLT5Jc0FycmF5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHY4OjpM
b2NhbDx2ODo6QXJyYXk+IHY4QXJyYXkgPSB2ODo6TG9jYWw8djg6OkFycmF5Pjo6Q2FzdCh2OFZh
bHVlKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHY4QXJyYXktPkxlbmd0aCgpOyArK2kp
IHsKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gaW5kZXhlZFZhbHVlID0gdjhBcnJheS0+
R2V0KHY4OjpVaW50MzI6Ok5ldyhpKSk7CisgICAgICAgIHZhbHVlLmFwcGVuZCh2OFZhbHVlVG9X
ZWJDb3JlU3RyaW5nKGluZGV4ZWRWYWx1ZSkpOworICAgIH0KKworICAgIHJldHVybiB0cnVlOwor
fQogCiBib29sIERpY3Rpb25hcnk6OmdldE93blByb3BlcnRpZXNBc1N0cmluZ0hhc2hNYXAoV1RG
OjpIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgaGFzaE1hcCkgY29uc3QKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuaAppbmRleCBjNGMzM2IxYmIyMDhlOTY0MGRmZmI4NDA2
ZDg5M2I0MTI4MzI3OWVlLi5mMTUzZWE5YzgyOTg0ODA4MGYyZjVlNjg1YmNjNmE3NzM0M2Y1NGFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EaWN0aW9uYXJ5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFyeS5oCkBAIC0zMywxMSArMzMs
MTEgQEAKICNpbmNsdWRlIDx2OC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvQXRvbWljU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRE9N
U3RyaW5nTGlzdDsKIGNsYXNzIERPTVdpbmRvdzsKIGNsYXNzIElEQktleVJhbmdlOwogY2xhc3Mg
TWVkaWFLZXlFcnJvcjsKQEAgLTg1LDYgKzg1LDcgQEAgcHVibGljOgogI2VuZGlmCiAgICAgYm9v
bCBnZXQoY29uc3QgU3RyaW5nJiwgSGFzaFNldDxBdG9taWNTdHJpbmc+JikgY29uc3Q7CiAgICAg
Ym9vbCBnZXQoY29uc3QgU3RyaW5nJiwgRGljdGlvbmFyeSYpIGNvbnN0OworICAgIGJvb2wgZ2V0
KGNvbnN0IFN0cmluZyYsIFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7CiAgICAgYm9vbCBnZXRPd25Q
cm9wZXJ0aWVzQXNTdHJpbmdIYXNoTWFwKFdURjo6SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mKSBj
b25zdDsKIAogICAgIGJvb2wgZ2V0V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKGNvbnN0IFN0cmlu
ZyYsIFN0cmluZyYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvSURCQmluZGluZ1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9J
REJCaW5kaW5nVXRpbGl0aWVzLmNwcAppbmRleCBkZjY3NzgwMzA1N2UzODBmM2U4OWRkNDUxNzEx
ZTQ3OTFlNDFlZTk0Li4xNWI0M2U5MzYwZWRmOTViMzVkZDZlYmNiZGQxNmI0OWY4YjBkN2MxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVz
LmNwcApAQCAtMTUzLDMwICsxNTMsNDMgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGVuc3VyZU50
aFZhbHVlT25LZXlQYXRoKHY4OjpIYW5kbGU8djg6OlZhbHVlPiYgcm9vdFZhbHVlLAogCiB9IC8v
IGFub255bW91cyBuYW1lc3BhY2UKIAotUGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktleUZy
b21TZXJpYWxpemVkVmFsdWVBbmRLZXlQYXRoKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiB2YWx1ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGtleVBhdGgpCitQYXNzUmVmUHRyPElE
QktleT4gY3JlYXRlSURCS2V5RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtleVBhdGgoUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRo
KQogewogICAgIElEQl9UUkFDRSgiY3JlYXRlSURCS2V5RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtl
eVBhdGgiKTsKKyAgICBBU1NFUlQoa2V5UGF0aC50eXBlKCkgPT0gSURCS2V5UGF0aDo6U3RyaW5n
VHlwZSk7CisgICAgVmVjdG9yPFN0cmluZz4ga2V5UGF0aEVsZW1lbnRzOworICAgIElEQktleVBh
dGhQYXJzZUVycm9yIGVycm9yOworICAgIElEQlBhcnNlS2V5UGF0aChrZXlQYXRoLnN0cmluZygp
LCBrZXlQYXRoRWxlbWVudHMsIGVycm9yKTsKKyAgICBBU1NFUlQoZXJyb3IgPT0gSURCS2V5UGF0
aFBhcnNlRXJyb3JOb25lKTsKKwogICAgIFY4QXV4aWxpYXJ5Q29udGV4dCBjb250ZXh0OwogICAg
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2OFZhbHVlKHZhbHVlLT5kZXNlcmlhbGl6ZSgpKTsKLSAg
ICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdjhLZXkoZ2V0TnRoVmFsdWVPbktleVBhdGgodjhWYWx1
ZSwga2V5UGF0aCwga2V5UGF0aC5zaXplKCkpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
djhLZXkoZ2V0TnRoVmFsdWVPbktleVBhdGgodjhWYWx1ZSwga2V5UGF0aEVsZW1lbnRzLCBrZXlQ
YXRoRWxlbWVudHMuc2l6ZSgpKSk7CiAgICAgaWYgKHY4S2V5LklzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgcmV0dXJuIGNyZWF0ZUlEQktleUZyb21WYWx1ZSh2OEtleSk7CiB9CiAK
LVBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBpbmplY3RJREJLZXlJbnRvU2VyaWFs
aXplZFZhbHVlKFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiB2YWx1ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGtleVBhdGgpCitQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gaW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1
ZShQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gdmFsdWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgpCiB7CiAgICAgSURCX1RSQUNFKCJp
bmplY3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVlIik7Ci0gICAgVjhBdXhpbGlhcnlDb250ZXh0
IGNvbnRleHQ7Ci0gICAgaWYgKCFrZXlQYXRoLnNpemUoKSkKKworICAgIEFTU0VSVChrZXlQYXRo
LnR5cGUoKSA9PSBJREJLZXlQYXRoOjpTdHJpbmdUeXBlKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBr
ZXlQYXRoRWxlbWVudHM7CisgICAgSURCS2V5UGF0aFBhcnNlRXJyb3IgZXJyb3I7CisgICAgSURC
UGFyc2VLZXlQYXRoKGtleVBhdGguc3RyaW5nKCksIGtleVBhdGhFbGVtZW50cywgZXJyb3IpOwor
ICAgIEFTU0VSVChlcnJvciA9PSBJREJLZXlQYXRoUGFyc2VFcnJvck5vbmUpOworCisgICAgaWYg
KCFrZXlQYXRoRWxlbWVudHMuc2l6ZSgpKQogICAgICAgICByZXR1cm4gMDsKIAorICAgIFY4QXV4
aWxpYXJ5Q29udGV4dCBjb250ZXh0OwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2OFZhbHVl
KHZhbHVlLT5kZXNlcmlhbGl6ZSgpKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcGFyZW50
KGVuc3VyZU50aFZhbHVlT25LZXlQYXRoKHY4VmFsdWUsIGtleVBhdGgsIGtleVBhdGguc2l6ZSgp
IC0gMSkpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBwYXJlbnQoZW5zdXJlTnRoVmFsdWVP
bktleVBhdGgodjhWYWx1ZSwga2V5UGF0aEVsZW1lbnRzLCBrZXlQYXRoRWxlbWVudHMuc2l6ZSgp
IC0gMSkpOwogICAgIGlmIChwYXJlbnQuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gMDsKIAot
ICAgIGlmICghc2V0KHBhcmVudCwga2V5UGF0aC5sYXN0KCksIHRvVjgoa2V5LmdldCgpKSkpCisg
ICAgaWYgKCFzZXQocGFyZW50LCBrZXlQYXRoRWxlbWVudHMubGFzdCgpLCB0b1Y4KGtleS5nZXQo
KSkpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIHJldHVybiBTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OmNyZWF0ZSh2OFZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0lE
QkJpbmRpbmdVdGlsaXRpZXMuaAppbmRleCA0NzI4NmE1ODIzOGYwYTAyNGUyMTM4MDUwNWZiYjk2
ZWE3NjdmNWFiLi4zMGVlZDQyMWI0NWIwOTAzMDExYmQyNDliYmEwZDc0YzIzYmEyNzRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5oCkBA
IC0zNCwxMSArMzQsMTIgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURCS2V5Owor
Y2xhc3MgSURCS2V5UGF0aDsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIAogUGFzc1Jl
ZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktleUZyb21WYWx1ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4p
OwotUGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktleUZyb21TZXJpYWxpemVkVmFsdWVBbmRL
ZXlQYXRoKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgIGNvbnN0IFZlY3RvcjxT
dHJpbmcsIDA+Jik7Ci1QYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gaW5qZWN0SURC
S2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiwgY29uc3QgVmVjdG9yPFN0cmluZywgMD4mKTsKK1Bhc3NSZWZQ
dHI8SURCS2V5PiBjcmVhdGVJREJLZXlGcm9tU2VyaWFsaXplZFZhbHVlQW5kS2V5UGF0aChQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIGNvbnN0IElEQktleVBhdGgmKTsKK1Bhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBpbmplY3RJREJLZXlJbnRvU2VyaWFsaXplZFZh
bHVlKFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
LCBjb25zdCBJREJLZXlQYXRoJik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SURCQW55Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOElEQkFueUN1c3RvbS5jcHAKaW5kZXggMTczM2VjOGJjZGEzYTQ3
ZTNmYjBmYTRmYWNmNTkwYzY2Y2FiY2FkYi4uMGI3NTAyZWI5ZjdjNzMwOGE0Zjg5ZmNkMDAzYzcx
MmM2NzYxZGIwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SURCQW55Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhJREJBbnlDdXN0b20uY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiVjhJREJB
bnkuaCIKIAogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIlY4
QmluZGluZy5oIgogI2luY2x1ZGUgIlY4RE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIlY4SURC
Q3Vyc29yLmgiCiAjaW5jbHVkZSAiVjhJREJDdXJzb3JXaXRoVmFsdWUuaCIKQEAgLTc0LDYgKzc1
LDggQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoSURCQW55KiBpbXBsLCB2ODo6SXNvbGF0
ZSogaXNvbGF0ZSkKICAgICAgICAgcmV0dXJuIHRvVjgoaW1wbC0+aWRiVHJhbnNhY3Rpb24oKSk7
CiAgICAgY2FzZSBJREJBbnk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZVR5cGU6CiAgICAgICAgIHJl
dHVybiBpbXBsLT5zZXJpYWxpemVkU2NyaXB0VmFsdWUoKS0+ZGVzZXJpYWxpemUoMCwgaXNvbGF0
ZSk7CisgICAgY2FzZSBJREJBbnk6OlN0cmluZ1R5cGU6CisgICAgICAgIHJldHVybiB2OFN0cmlu
ZyhpbXBsLT5zdHJpbmcoKSk7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NU3RyaW5nTGlzdC5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RPTVN0cmluZ0xpc3QuaAppbmRleCAwNTdkYWM0OWVjZmYyZTU2NDRkMWY1OGFk
NGY0YWRiNTlmMGRiYzNiLi40NjRmYTIyZGIyNTY2MTZhMDUzNzE4Yjc5YjJkOTMzZjRmMjEwNTFj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NU3RyaW5nTGlzdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9ET01TdHJpbmdMaXN0LmgKQEAgLTUyLDYgKzUyLDggQEAgcHVibGlj
OgogICAgIFN0cmluZyBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKICAgICBib29sIGNvbnRh
aW5zKGNvbnN0IFN0cmluZyYgc3RyKSBjb25zdDsKIAorICAgIG9wZXJhdG9yIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JigpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nczsgfQorCiBwcml2YXRlOgogICAg
IERPTVN0cmluZ0xpc3QoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKaW5kZXggNjQxY2NjMTQ4ZjlhMDc5ZjVhMzI2
ZDBlZWJmMTc5YmE4OWM4M2NhMy4uNzIyYTk0YjIxNWY3ZTMyN2FhOTI3MDRkYmY1ZmVhNzJmMjAw
MGE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4
ZWREQkFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5k
ZXhlZERCQWdlbnQuY3BwCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiSURCRmFjdG9yeUJh
Y2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJJbmRleEJhY2tlbmRJbnRlcmZhY2UuaCIK
ICNpbmNsdWRlICJJREJLZXkuaCIKKyNpbmNsdWRlICJJREJLZXlQYXRoLmgiCiAjaW5jbHVkZSAi
SURCS2V5UmFuZ2UuaCIKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2Uu
aCIKICNpbmNsdWRlICJJREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yLmgiCkBAIC0yMjUsNiAr
MjI2LDI1IEBAIHN0YXRpYyBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gaW5k
ZXhGb3JPYmplY3RTdG9yZShJREJPYmplY3RTdG9yZUJhCiAgICAgcmV0dXJuIGlkYkluZGV4Owog
fQogCitzdGF0aWMgU3RyaW5nIGtleVBhdGhUb1N0cmluZyhjb25zdCBJREJLZXlQYXRoJiBrZXlQ
YXRoKQoreworICAgIC8vIEZJWE1FOiBSZXBsYWNlIHdpdGggaGFuZGxlcnMgZm9yIG51bGwvc3Ry
aW5nL2FycmF5IHR5cGVzLgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04NDMwMworICAgIHN3aXRjaCAoa2V5UGF0aC50eXBlKCkpIHsKKyAgICBjYXNlIElE
QktleVBhdGg6Ok51bGxUeXBlOgorICAgICAgICByZXR1cm4gIihub25lKSI7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgSURCS2V5UGF0aDo6U3RyaW5nVHlwZToKKyAgICAgICAgcmV0dXJuIGtl
eVBhdGguc3RyaW5nKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSURCS2V5UGF0aDo6QXJy
YXlUeXBlOgorICAgICAgICByZXR1cm4gIlsuLi5dIjsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKwogY2xh
c3MgRGF0YWJhc2VMb2FkZXJDYWxsYmFjayA6IHB1YmxpYyBFeGVjdXRhYmxlV2l0aERhdGFiYXNl
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxEYXRhYmFzZUxvYWRlckNhbGxiYWNr
PiBjcmVhdGUoSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OkZyb250ZW5kUHJvdmlkZXIqIGZyb250
ZW5kUHJvdmlkZXIsIGludCByZXF1ZXN0SWQpCkBAIC0yNjAsNyArMjgwLDcgQEAgcHVibGljOgog
CiAgICAgICAgICAgICAgICAgUmVmUHRyPE9iamVjdFN0b3JlSW5kZXg+IG9iamVjdFN0b3JlSW5k
ZXggPSBPYmplY3RTdG9yZUluZGV4OjpjcmVhdGUoKQogICAgICAgICAgICAgICAgICAgICAuc2V0
TmFtZShpZGJJbmRleC0+bmFtZSgpKQotICAgICAgICAgICAgICAgICAgICAuc2V0S2V5UGF0aChp
ZGJJbmRleC0+a2V5UGF0aCgpKQorICAgICAgICAgICAgICAgICAgICAuc2V0S2V5UGF0aChrZXlQ
YXRoVG9TdHJpbmcoaWRiSW5kZXgtPmtleVBhdGgoKSkpCiAgICAgICAgICAgICAgICAgICAgIC5z
ZXRVbmlxdWUoaWRiSW5kZXgtPnVuaXF1ZSgpKQogICAgICAgICAgICAgICAgICAgICAuc2V0TXVs
dGlFbnRyeShpZGJJbmRleC0+bXVsdGlFbnRyeSgpKTsKICAgICAgICAgICAgICAgICBpbmRleGVz
LT5hZGRJdGVtKG9iamVjdFN0b3JlSW5kZXgpOwpAQCAtMjY4LDcgKzI4OCw3IEBAIHB1YmxpYzoK
IAogICAgICAgICAgICAgUmVmUHRyPE9iamVjdFN0b3JlPiBvYmplY3RTdG9yZSA9IE9iamVjdFN0
b3JlOjpjcmVhdGUoKQogICAgICAgICAgICAgICAgIC5zZXROYW1lKGlkYk9iamVjdFN0b3JlLT5u
YW1lKCkpCi0gICAgICAgICAgICAgICAgLnNldEtleVBhdGgoaWRiT2JqZWN0U3RvcmUtPmtleVBh
dGgoKSkKKyAgICAgICAgICAgICAgICAuc2V0S2V5UGF0aChrZXlQYXRoVG9TdHJpbmcoaWRiT2Jq
ZWN0U3RvcmUtPmtleVBhdGgoKSkpCiAgICAgICAgICAgICAgICAgLnNldEluZGV4ZXMoaW5kZXhl
cyk7CiAgICAgICAgICAgICBvYmplY3RTdG9yZXMtPmFkZEl0ZW0ob2JqZWN0U3RvcmUpOwogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0
Zm9ybVN1cHBvcnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3Jt
U3VwcG9ydC5oCmluZGV4IGJhZWFiMDVlYzE5Y2I1ZjNlMjkwZDlkODgwZTVkNzkwZTA5MDA1YWQu
LmFmM2U1ZTNmZWFkYmZkYjNiYTg1OTYwNjc1YzM4YmZlY2Y5ZDQ1ZTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCkBAIC03OCw2
ICs3OCw3IEBAIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEltYWdlOwogY2xhc3MgSURC
RmFjdG9yeUJhY2tlbmRJbnRlcmZhY2U7CiBjbGFzcyBJREJLZXk7CitjbGFzcyBJREJLZXlQYXRo
OwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIEtVUkw7CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFs
dWU7CkBAIC0xODAsOSArMTgxLDkgQEAgcHVibGljOgogICAgIC8vIEluZGV4ZWREQiAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8SURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2U+IGlkYkZhY3Rvcnko
KTsKICAgICAvLyBFeHRyYWN0cyBrZXlQYXRoIGZyb20gdmFsdWVzIGFuZCByZXR1cm5zIHRoZSBj
b3JyZXNwb25kaW5nIGtleXMuCi0gICAgc3RhdGljIHZvaWQgY3JlYXRlSURCS2V5c0Zyb21TZXJp
YWxpemVkVmFsdWVzQW5kS2V5UGF0aChjb25zdCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gPiYgdmFsdWVzLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIFZlY3RvcjxSZWZQdHI8
SURCS2V5PiA+JiBrZXlzKTsKKyAgICBzdGF0aWMgdm9pZCBjcmVhdGVJREJLZXlzRnJvbVNlcmlh
bGl6ZWRWYWx1ZXNBbmRLZXlQYXRoKGNvbnN0IFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiA+JiB2YWx1ZXMsIGNvbnN0IElEQktleVBhdGgmLCBWZWN0b3I8UmVmUHRyPElEQktl
eT4gPiYga2V5cyk7CiAgICAgLy8gSW5qZWN0cyBrZXkgdmlhIGtleVBhdGggaW50byB2YWx1ZS4g
UmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3MuCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBpbmplY3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKFBhc3NSZWZQdHI8
SURCS2V5PiwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBjb25zdCBTdHJpbmcm
IGtleVBhdGgpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
aW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShQYXNzUmVmUHRyPElEQktleT4sIFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgY29uc3QgSURCS2V5UGF0aCYpOwogCiAgICAg
Ly8gSmF2YVNjcmlwdCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KICAgICBzdGF0aWMgdm9pZCBub3RpZnlKU091dE9mTWVtb3J5KEZyYW1l
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL2Nocm9taXVtL0lEQktleVBh
dGhCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL2Nocm9taXVtL0lEQktl
eVBhdGhCYWNrZW5kSW1wbC5jcHAKaW5kZXggYjgwNGEwZmY4YTE0ZmE3NzIyNTgyZDJkYzI0ZTRl
ZjgxZWFhMzA5NC4uYzg2Yzc3ZDk3NzM5YjU1NDQyMGQ1ODljNzA5YTNlN2YwNmRkMWJlMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9jaHJvbWl1bS9JREJLZXlQYXRoQmFja2Vu
ZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvY2hyb21pdW0vSURCS2V5UGF0
aEJhY2tlbmRJbXBsLmNwcApAQCAtMzQsMTIgKzM0LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotdm9pZCBJREJLZXlQYXRoQmFja2VuZEltcGw6OmNyZWF0ZUlEQktleXNGcm9tU2VyaWFs
aXplZFZhbHVlc0FuZEtleVBhdGgoY29uc3QgVmVjdG9yPFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+LCAwPiYgdmFsdWVzLCAgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBWZWN0b3I8UmVmUHRy
PElEQktleT4sIDA+JiBrZXlzKQordm9pZCBJREJLZXlQYXRoQmFja2VuZEltcGw6OmNyZWF0ZUlE
QktleXNGcm9tU2VyaWFsaXplZFZhbHVlc0FuZEtleVBhdGgoY29uc3QgVmVjdG9yPFJlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+LCAwPiYgdmFsdWVzLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQ
YXRoLCBWZWN0b3I8UmVmUHRyPElEQktleT4sIDA+JiBrZXlzKQogewogICAgIFBsYXRmb3JtU3Vw
cG9ydDo6Y3JlYXRlSURCS2V5c0Zyb21TZXJpYWxpemVkVmFsdWVzQW5kS2V5UGF0aCh2YWx1ZXMs
IGtleVBhdGgsIGtleXMpOwogfQogCi1QYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
SURCS2V5UGF0aEJhY2tlbmRJbXBsOjppbmplY3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKFBh
c3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2
YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQorUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IElEQktleVBhdGhCYWNrZW5kSW1wbDo6aW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRW
YWx1ZShQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gdmFsdWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgpCiB7CiAgICAgcmV0dXJuIFBs
YXRmb3JtU3VwcG9ydDo6aW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShrZXksIHZhbHVl
LCBrZXlQYXRoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYklEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJE
YXRhYmFzZS5oCmluZGV4IGY1M2IwMmUzOWE3YjcyZmFlZGZiNWZiYzBmMDRlOGZhMzBkYTMxMTMu
LmIzOTg1MzQxNjU1NDNhMTk3YTYxNzk3ZDU0NzQ5ZGE4NWUzYTM1NmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmgKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2UuaApAQCAtMjgsNyArMjgsNiBA
QAogCiAjaW5jbHVkZSAiV2ViRE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIldlYkV4Y2VwdGlv
bkNvZGUuaCIKLSNpbmNsdWRlICJXZWJJREJLZXlQYXRoLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0v
V2ViQ29tbW9uLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMzYsNiArMzUsNyBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYkZyYW1lOwogY2xhc3MgV2ViSURCQ2FsbGJhY2tzOwog
Y2xhc3MgV2ViSURCRGF0YWJhc2VDYWxsYmFja3M7CitjbGFzcyBXZWJJREJLZXlQYXRoOwogY2xh
c3MgV2ViSURCT2JqZWN0U3RvcmU7CiBjbGFzcyBXZWJJREJUcmFuc2FjdGlvbjsKIApAQCAtNTks
MTIgKzU5LDYgQEAgcHVibGljOgogICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgIHJldHVybiBXZWJET01TdHJpbmdMaXN0KCk7CiAgICAgfQotICAgIC8vIEZJWE1F
OiBSZW1vdmUgV2ViU3RyaW5nIGtleVBhdGggb3ZlcmxvYWQgb25jZSBjYWxsZXJzIGFyZSB1cGRh
dGVkLgotICAgIC8vIGh0dHA6Ly93ZWJraXQub3JnL2IvODQyMDcKLSAgICB2aXJ0dWFsIFdlYklE
Qk9iamVjdFN0b3JlKiBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNv
bnN0IFdlYlN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBjb25zdCBXZWJJREJU
cmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIFdlYkV4Y2VwdGlvbkNvZGUmIGVjKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGNyZWF0ZU9iamVjdFN0b3JlKG5hbWUsIFdlYklEQktleVBhdGgoa2V5UGF0
aCksIGF1dG9JbmNyZW1lbnQsIHRyYW5zYWN0aW9uLCBlYyk7Ci0gICAgfQogICAgIHZpcnR1YWwg
V2ViSURCT2JqZWN0U3RvcmUqIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYsIGNv
bnN0IFdlYklEQktleVBhdGgmLCBib29sLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4
Y2VwdGlvbkNvZGUmKQogICAgIHsKICAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCSW5kZXgu
aCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkluZGV4LmgKaW5kZXggMzdh
ZjAyYzBjOGIzMTM5ZGQzNmFlYmMwN2I1ZDM4MTc1NjNhMGI3Ni4uYzJmZjAwMWQyZTQzNzkzZTY3
N2I1NzdhM2Y2M2VjZmMyMzM0NGMzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViSURCSW5kZXguaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJJREJJbmRleC5oCkBAIC01NCwxNCArNTQsOCBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZp
cnR1YWwgV2ViSURCS2V5UGF0aCBrZXlQYXRoKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVy
biBXZWJJREJLZXlQYXRoKGtleVBhdGhTdHJpbmcoKSk7Ci0gICAgfQotICAgIC8vIEZJWE1FOiBS
ZW1vdmUgbWV0aG9kIG9uY2UgY2FsbGVycyBhcmUgdXBkYXRlZC4KLSAgICAvLyBodHRwOi8vd2Vi
a2l0Lm9yZy9iLzg0MjA3Ci0gICAgdmlydHVhbCBXZWJTdHJpbmcga2V5UGF0aFN0cmluZygpIGNv
bnN0Ci0gICAgewogICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAg
IHJldHVybiBXZWJTdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIFdlYklEQktleVBhdGg6OmNyZWF0
ZU51bGwoKTsKICAgICB9CiAgICAgdmlydHVhbCBib29sIHVuaXF1ZSgpIGNvbnN0CiAgICAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCS2V5UGF0aC5o
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCS2V5UGF0aC5oCmluZGV4IDk3
YmFjMDZmZmU4NGEzZmQwZDIzYTNmMTRhZDEyOTczOTM0ZjJhZTUuLmJlYjFmYTIyZDhkMDkxYzIw
ZWQxZTU1Y2MyYjMwNzcxMGI5ZGRmNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYklEQktleVBhdGguaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJJREJLZXlQYXRoLmgKQEAgLTM2LDYgKzM2LDggQEAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgc2l6ZV90IGlubGluZUNhcGFjaXR5PiBjbGFzcyBWZWN0b3I7CiBjbGFzcyBTdHJpbmc7CiB9
CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgSURCS2V5UGF0aDsgfQorCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogY2xhc3MgV2ViSURCS2V5UGF0aCB7CkBAIC00NCw3ICs0Niw3IEBAIHB1Ymxp
YzoKICAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJJREJLZXlQYXRoIGNyZWF0ZShjb25zdCBX
ZWJWZWN0b3I8V2ViU3RyaW5nPiYpOwogICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYklEQktl
eVBhdGggY3JlYXRlTnVsbCgpOwogICAgIFdFQktJVF9FWFBPUlQgV2ViSURCS2V5UGF0aChjb25z
dCBXZWJJREJLZXlQYXRoJik7Ci0gICAgfldlYklEQktleVBhdGgoKSB7IHJlc2V0KCk7IH0KKyAg
ICBXRUJLSVRfRVhQT1JUIH5XZWJJREJLZXlQYXRoKCk7CiAKICAgICBlbnVtIFR5cGUgewogICAg
ICAgICBOdWxsVHlwZSA9IDAsCkBAIC01NCwzMCArNTYsMTcgQEAgcHVibGljOgogCiAgICAgV0VC
S0lUX0VYUE9SVCBib29sIGlzVmFsaWQoKSBjb25zdDsKICAgICBXRUJLSVRfRVhQT1JUIFR5cGUg
dHlwZSgpIGNvbnN0OwotICAgIC8vIEZJWE1FOiBBcnJheS10eXBlIGtleSBwYXRocyBub3QgeWV0
IHN1cHBvcnRlZC4gaHR0cDovL3dlYmtpdC5vcmcvYi84NDIwNwotICAgIFdlYlZlY3RvcjxXZWJT
dHJpbmc+IGFycmF5KCkgY29uc3QgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVy
biBXZWJWZWN0b3I8V2ViU3RyaW5nPigpOyB9Ci0gICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcg
c3RyaW5nKCkgY29uc3Q7Ci0KLSAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZXNlIG9uY2UgY2FsbGVy
cyBhcmUgdXBkYXRlZC4gaHR0cDovL3dlYmtpdC5vcmcvYi84NDIwNwotICAgIFdFQktJVF9FWFBP
UlQgV2ViSURCS2V5UGF0aChjb25zdCBXZWJTdHJpbmcmKTsKLSAgICBvcGVyYXRvciBjb25zdCBX
ZWJTdHJpbmcgKCkgY29uc3QgeyByZXR1cm4gc3RyaW5nKCk7IH0KLSAgICBXRUJLSVRfRVhQT1JU
IGludCBwYXJzZUVycm9yKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbihj
b25zdCBXZWJJREJLZXlQYXRoJik7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlc2V0KCk7Cisg
ICAgV0VCS0lUX0VYUE9SVCBXZWJWZWN0b3I8V2ViU3RyaW5nPiBhcnJheSgpIGNvbnN0OyAvLyBP
bmx5IHZhbGlkIGZvciBBcnJheVR5cGUuCisgICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgc3Ry
aW5nKCkgY29uc3Q7IC8vIE9ubHkgdmFsaWQgZm9yIFN0cmluZ1R5cGUuCiAKICNpZiBXRUJLSVRf
SU1QTEVNRU5UQVRJT04KLSAgICBvcGVyYXRvciBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmlu
ZywgMD4mICgpIGNvbnN0OworICAgIFdlYklEQktleVBhdGgoY29uc3QgV2ViQ29yZTo6SURCS2V5
UGF0aCYpOworICAgIFdlYklEQktleVBhdGgmIG9wZXJhdG9yPShjb25zdCBXZWJDb3JlOjpJREJL
ZXlQYXRoJik7CisgICAgb3BlcmF0b3IgY29uc3QgV2ViQ29yZTo6SURCS2V5UGF0aCYoKSBjb25z
dDsKICNlbmRpZgogCiBwcml2YXRlOgotICAgIFdlYklEQktleVBhdGgoKTsKLQotI2lmIFdFQktJ
VF9JTVBMRU1FTlRBVElPTgotICAgIFdlYklEQktleVBhdGgoY29uc3QgV1RGOjpWZWN0b3I8V1RG
OjpTdHJpbmcsIDA+JiwgaW50IHBhcnNlRXJyb3IpOwotI2VuZGlmCi0KLSAgICBXZWJQcml2YXRl
T3duUHRyPFdURjo6VmVjdG9yPFdURjo6U3RyaW5nLCAwPiA+IG1fcHJpdmF0ZTsKLSAgICBpbnQg
bV9wYXJzZUVycm9yOworICAgIFdlYlByaXZhdGVPd25QdHI8V2ViQ29yZTo6SURCS2V5UGF0aD4g
bV9wcml2YXRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJPYmplY3RTdG9yZS5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCT2JqZWN0U3RvcmUuaAppbmRleCBkY2Y0ODU2OTI1
MTBjZmY5YjgxZjY0ZTBkMTdiMDJiZGI4MWE5ZGM0Li45OGUwNDhjM2ExMWEwZmIxMzVjYjU3NmNh
NDg5ZTE5ZGRmMjk1MGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJJREJPYmplY3RTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYklEQk9iamVjdFN0b3JlLmgKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJXZWJET01T
dHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiV2ViSURCQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiV2Vi
SURCS2V5UGF0aC5oIgotI2luY2x1ZGUgIldlYklEQlRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAi
cGxhdGZvcm0vV2ViQ29tbW9uLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCiAK
QEAgLTUxLDEyICs1MCw4IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVhbCBXZWJJREJLZXlQ
YXRoIGtleVBhdGgoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIFdlYklEQktleVBhdGgo
a2V5UGF0aFN0cmluZygpKTsKLSAgICB9Ci0gICAgdmlydHVhbCBXZWJTdHJpbmcga2V5UGF0aFN0
cmluZygpIGNvbnN0Ci0gICAgewogICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgIHJldHVybiBXZWJTdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIFdlYklEQktleVBh
dGg6OmNyZWF0ZU51bGwoKTsKICAgICB9CiAgICAgdmlydHVhbCBXZWJET01TdHJpbmdMaXN0IGlu
ZGV4TmFtZXMoKSBjb25zdAogICAgIHsKQEAgLTc2LDEzICs3MSw2IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlRnVuY3Rpb24oY29uc3QgV2ViSURCS2V5JiwgV2ViSURCQ2FsbGJh
Y2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJikgeyBXRUJL
SVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRnVuY3Rp
b24oY29uc3QgV2ViSURCS2V5UmFuZ2UmLCBXZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJJREJU
cmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBjbGVhcihXZWJJREJDYWxsYmFja3MqLCBjb25zdCBX
ZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKSB7IFdFQktJVF9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQotCi0gICAgLy8gRklYTUU6IFJlbW92ZSBXZWJTdHJpbmcga2V5UGF0aCBv
dmVybG9hZCBvbmNlIGNhbGxlcnMgYXJlIHVwZGF0ZWQuCi0gICAgLy8gaHR0cDovL3dlYmtpdC5v
cmcvYi84NDIwNwotICAgIHZpcnR1YWwgV2ViSURCSW5kZXgqIGNyZWF0ZUluZGV4KGNvbnN0IFdl
YlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9v
bCBtdWx0aUVudHJ5LCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIFdlYkV4
Y2VwdGlvbkNvZGUmIGVjKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUluZGV4KG5hbWUs
IFdlYklEQktleVBhdGgoa2V5UGF0aCksIHVuaXF1ZSwgbXVsdGlFbnRyeSwgdHJhbnNhY3Rpb24s
IGVjKTsKLSAgICB9CiAgICAgdmlydHVhbCBXZWJJREJJbmRleCogY3JlYXRlSW5kZXgoY29uc3Qg
V2ViU3RyaW5nJiwgY29uc3QgV2ViSURCS2V5UGF0aCYsIGJvb2wsIGJvb2wsIGNvbnN0IFdlYklE
QlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpCiAgICAgewogICAgICAgICBXRUJLSVRf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oCmluZGV4IGNh
Mzc2MmRjYmViZTRiZjJiYmFhNmQwMDAxNGY4YWE0M2Y4NTE0ZjIuLjU2MzgwNDE1NGY5M2EwMzNh
ZTU3ZjJlOTYyNDM0M2RiOWM2Mzg3MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL3BsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oCkBA
IC0zMSw3ICszMSw2IEBACiAjaWZuZGVmIFdlYktpdFBsYXRmb3JtU3VwcG9ydF9oCiAjZGVmaW5l
IFdlYktpdFBsYXRmb3JtU3VwcG9ydF9oCiAKLSNpbmNsdWRlICIuLi9XZWJJREJLZXlQYXRoLmgi
IC8vIEZJWE1FOiBSZW1vdmUgd2l0aDogaHR0cDovL3dlYmtpdC5vcmcvYi84NDIwNwogI2luY2x1
ZGUgIldlYkNvbW1vbi5oIgogI2luY2x1ZGUgIldlYkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5j
bHVkZSAiV2ViTG9jYWxpemVkU3RyaW5nLmgiCkBAIC01Nyw2ICs1Niw3IEBAIGNsYXNzIFdlYkZp
bGVTeXN0ZW07CiBjbGFzcyBXZWJGaWxlVXRpbGl0aWVzOwogY2xhc3MgV2ViSURCRmFjdG9yeTsg
Ly8gRklYTUU6IERvZXMgdGhpcyBiZWxvbmcgaW4gcGxhdGZvcm0/CiBjbGFzcyBXZWJJREJLZXk7
IC8vIEZJWE1FOiBEb2VzIHRoaXMgYmVsb25nIGluIHBsYXRmb3JtPworY2xhc3MgV2ViSURCS2V5
UGF0aDsgLy8gRklYTUU6IERvZXMgdGhpcyBiZWxvbmcgaW4gcGxhdGZvcm0/CiBjbGFzcyBXZWJN
ZXNzYWdlUG9ydENoYW5uZWw7IC8vIEZJWE1FOiBEb2VzIHRoaXMgYmVsb25nIGluIHBsYXRmb3Jt
PwogY2xhc3MgV2ViUGx1Z2luTGlzdEJ1aWxkZXI7IC8vIEZJWE1FOiBEb2VzIHRoaXMgYmVsb25n
IGluIHBsYXRmb3JtPwogY2xhc3MgV2ViU2FuZGJveFN1cHBvcnQ7CkBAIC0xMjcsMTMgKzEyNyw3
IEBAIHB1YmxpYzoKICAgICAvLyBJbmRleGVkIERhdGFiYXNlIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogICAgIHZpcnR1YWwgV2ViSURCRmFj
dG9yeSogaWRiRmFjdG9yeSgpIHsgcmV0dXJuIDA7IH0KLSAgICAvLyBGSVhNRTogUmVtb3ZlIFdl
YlN0cmluZyBrZXlQYXRoIG92ZXJsb2FkIG9uY2UgY2FsbGVycyBhcmUgdXBkYXRlZC4KLSAgICAv
LyBodHRwOi8vd2Via2l0Lm9yZy9iLzg0MjA3Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZUlEQktl
eXNGcm9tU2VyaWFsaXplZFZhbHVlc0FuZEtleVBhdGgoY29uc3QgV2ViVmVjdG9yPFdlYlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4mIHZhbHVlcywgIGNvbnN0IFdlYlN0cmluZyYga2V5UGF0aCwgV2Vi
VmVjdG9yPFdlYklEQktleT4mIGtleXMpIHsgY3JlYXRlSURCS2V5c0Zyb21TZXJpYWxpemVkVmFs
dWVzQW5kS2V5UGF0aCh2YWx1ZXMsIFdlYklEQktleVBhdGgoa2V5UGF0aCksIGtleXMpOyB9CiAg
ICAgdmlydHVhbCB2b2lkIGNyZWF0ZUlEQktleXNGcm9tU2VyaWFsaXplZFZhbHVlc0FuZEtleVBh
dGgoY29uc3QgV2ViVmVjdG9yPFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mIHZhbHVlcywgIGNv
bnN0IFdlYklEQktleVBhdGgmIGtleVBhdGgsIFdlYlZlY3RvcjxXZWJJREJLZXk+JiBrZXlzKSB7
IH0KLSAgICAvLyBGSVhNRTogUmVtb3ZlIFdlYlN0cmluZyBrZXlQYXRoIG92ZXJsb2FkIG9uY2Ug
Y2FsbGVycyBhcmUgdXBkYXRlZC4KLSAgICAvLyBodHRwOi8vd2Via2l0Lm9yZy9iLzg0MjA3Ci0g
ICAgdmlydHVhbCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUgaW5qZWN0SURCS2V5SW50b1Nlcmlh
bGl6ZWRWYWx1ZShjb25zdCBXZWJJREJLZXkmIGtleSwgY29uc3QgV2ViU2VyaWFsaXplZFNjcmlw
dFZhbHVlJiB2YWx1ZSwgY29uc3QgV2ViU3RyaW5nJiBrZXlQYXRoKSB7IHJldHVybiBpbmplY3RJ
REJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKGtleSwgdmFsdWUsIFdlYklEQktleVBhdGgoa2V5UGF0
aCkpOyB9CiAgICAgdmlydHVhbCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUgaW5qZWN0SURCS2V5
SW50b1NlcmlhbGl6ZWRWYWx1ZShjb25zdCBXZWJJREJLZXkmIGtleSwgY29uc3QgV2ViU2VyaWFs
aXplZFNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgV2ViSURCS2V5UGF0aCYga2V5UGF0aCkgeyBy
ZXR1cm4gV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlKCk7IH0KIAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCmluZGV4IDlmMzlmYzM3
MmI1NTIyMWE2NWM2ZTcyODk5MzMxNTVkZTk2N2NmYTcuLmRlOGM4MGRjOGU4MmIyYWRlZmE2Yjk4
MWVhYjhiYzlmNjU0ZDcxYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAiSURC
RGF0YWJhc2VFeGNlcHRpb24uaCIKICNpbmNsdWRlICJJREJGYWN0b3J5QmFja2VuZEludGVyZmFj
ZS5oIgogI2luY2x1ZGUgIklEQktleS5oIgorI2luY2x1ZGUgIklEQktleVBhdGguaCIKICNpbmNs
dWRlICJJY2VPcHRpb25zLmgiCiAjaW5jbHVkZSAiSWNvblVSTC5oIgogI2luY2x1ZGUgIk1lZGlh
UGxheWVyLmgiCkBAIC04NCw2ICs4NSw3IEBACiAjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VFeGNl
cHRpb24uaCIKICNpbmNsdWRlICJXZWJJREJGYWN0b3J5LmgiCiAjaW5jbHVkZSAiV2ViSURCS2V5
LmgiCisjaW5jbHVkZSAiV2ViSURCS2V5UGF0aC5oIgogI2luY2x1ZGUgIldlYkljb25VUkwuaCIK
ICNpbmNsdWRlICJXZWJJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJNZWRpYVBsYXllci5o
IgpAQCAtNDYzLDEyICs0NjUsMTggQEAgQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJW
aWV3OjpVc2VyU3R5bGVJbmplY3RJblN1YnNlcXVlbnREb2N1bWVudHMsIEluamUKIENPTVBJTEVf
QVNTRVJUX01BVENISU5HX0VOVU0oV2ViSURCRGF0YWJhc2VFeGNlcHRpb25EYXRhRXJyb3IsIElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUik7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKFdlYklEQkRhdGFiYXNlRXhjZXB0aW9uUXVvdGFFcnJvciwgSURCRGF0YWJhc2VFeGNlcHRp
b246OlFVT1RBX0VSUik7CiAKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIENPTVBJTEVf
QVNTRVJUX01BVENISU5HX0VOVU0oV2ViSURCS2V5OjpJbnZhbGlkVHlwZSwgSURCS2V5OjpJbnZh
bGlkVHlwZSk7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYklEQktleTo6QXJyYXlU
eXBlLCBJREJLZXk6OkFycmF5VHlwZSk7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdl
YklEQktleTo6U3RyaW5nVHlwZSwgSURCS2V5OjpTdHJpbmdUeXBlKTsKIENPTVBJTEVfQVNTRVJU
X01BVENISU5HX0VOVU0oV2ViSURCS2V5OjpEYXRlVHlwZSwgSURCS2V5OjpEYXRlVHlwZSk7CiBD
T01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYklEQktleTo6TnVtYmVyVHlwZSwgSURCS2V5
OjpOdW1iZXJUeXBlKTsKIAorQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJLZXlQ
YXRoOjpOdWxsVHlwZSwgSURCS2V5UGF0aDo6TnVsbFR5cGUpOworQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShXZWJJREJLZXlQYXRoOjpTdHJpbmdUeXBlLCBJREJLZXlQYXRoOjpTdHJpbmdU
eXBlKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViSURCS2V5UGF0aDo6QXJyYXlU
eXBlLCBJREJLZXlQYXRoOjpBcnJheVR5cGUpOworI2VuZGlmCisKICNpZiBFTkFCTEUoRklMRV9T
WVNURU0pCiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkZpbGVTeXN0ZW06OlR5cGVU
ZW1wb3JhcnksIEZpbGVTeXN0ZW1UeXBlVGVtcG9yYXJ5KTsKIENPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0oV2ViRmlsZVN5c3RlbTo6VHlwZVBlcnNpc3RlbnQsIEZpbGVTeXN0ZW1UeXBlUGVy
c2lzdGVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRh
YmFzZUJhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRh
YmFzZUJhY2tlbmRQcm94eS5jcHAKaW5kZXggMTc5Nzk5Mjc1ZDZmOTk3NjMwMTc3ZTVhMjhiZDkz
YmEzMTcyNjA0Zi4uNmU1MzU0OTlhMzhjNGE5MzUwOWE2ZTRmNTU2Y2Y5OGFjOGYyMDA3MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2Vu
ZFByb3h5LmNwcApAQCAtNzUsNyArNzUsNyBAQCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IElE
QkRhdGFiYXNlQmFja2VuZFByb3h5OjpvYmplY3RTdG9yZU5hbWVzKCkgY29uc3QKICAgICByZXR1
cm4gbV93ZWJJREJEYXRhYmFzZS0+b2JqZWN0U3RvcmVOYW1lcygpOwogfQogCi1QYXNzUmVmUHRy
PElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6
OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQ
YXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSog
dHJhbnNhY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbnRlcmZhY2U+IElEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpjcmVhdGVPYmplY3RT
dG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wg
YXV0b0luY3JlbWVudCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlv
biwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgLy8gVGhlIHRyYW5zYWN0aW9uIHBvaW50ZXIg
aXMgZ3VhcmFudGVlZCB0byBiZSBhIHBvaW50ZXIgdG8gYSBwcm94eSBvYmplY3QgYXMsIGluIHRo
ZSByZW5kZXJlciwKICAgICAvLyBhbGwgaW1wbGVtZW50YXRpb25zIG9mIElEQiBpbnRlcmZhY2Vz
IGFyZSBwcm94eSBvYmplY3RzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgKaW5kZXggNWE1YmFmMjhmMDk2YTk5NDdmYWIwNTJm
ZWRiMWU5YWUzNzdlYTY1YS4uYjc4YWM2OTkyY2RjZmYxMzg3YTllYzA4YjM4NjhlYjZjZmM0MzM5
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNr
ZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJh
Y2tlbmRQcm94eS5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmlu
ZyB2ZXJzaW9uKCkgY29uc3Q7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkRPTVN0
cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZU9iamVj
dFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1
dG9JbmNyZW1lbnQsIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdl
YkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFdlYkNvcmU6OklEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1l
bnQsIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4
Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoY29uc3Qg
U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBX
ZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIHNldFZlcnNpb24oY29u
c3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFBh
c3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VDYWxsYmFja3M+LCBXZWJDb3JlOjpFeGNlcHRp
b25Db2RlJik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24oV2ViQ29yZTo6RE9NU3RyaW5nTGlzdCogc3Rv
cmVOYW1lcywgdW5zaWduZWQgc2hvcnQgbW9kZSwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCSW5kZXhCYWNrZW5kUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCSW5kZXhCYWNrZW5kUHJveHku
Y3BwCmluZGV4IDAwMTRmMjk1OTZhZWIzYTFhYzMzYWI3Y2JlNmNjNTM4MDkyMjJiYTYuLjViYzQy
ZTZkYjFmMjRiMzY2YTdhZTFjNjc4Y2RjOWRhMjMyMTQ1ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0lEQkluZGV4QmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJJbmRleEJhY2tlbmRQcm94eS5jcHAKQEAgLTI5LDYgKzI5
LDcgQEAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogI2luY2x1ZGUgIklEQkNhbGxi
YWNrcy5oIgorI2luY2x1ZGUgIklEQktleVBhdGguaCIKICNpbmNsdWRlICJJREJLZXlSYW5nZS5o
IgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5LmgiCiAjaW5jbHVkZSAiV2Vi
SURCQ2FsbGJhY2tzSW1wbC5oIgpAQCAtNjUsOSArNjYsOSBAQCBTdHJpbmcgSURCSW5kZXhCYWNr
ZW5kUHJveHk6OnN0b3JlTmFtZSgpCiAgICAgcmV0dXJuIG1fd2ViSURCSW5kZXgtPnN0b3JlTmFt
ZSgpOwogfQogCi1TdHJpbmcgSURCSW5kZXhCYWNrZW5kUHJveHk6OmtleVBhdGgoKQorSURCS2V5
UGF0aCBJREJJbmRleEJhY2tlbmRQcm94eTo6a2V5UGF0aCgpCiB7Ci0gICAgcmV0dXJuIG1fd2Vi
SURCSW5kZXgtPmtleVBhdGgoKS5zdHJpbmcoKTsKKyAgICByZXR1cm4gbV93ZWJJREJJbmRleC0+
a2V5UGF0aCgpOwogfQogCiBib29sIElEQkluZGV4QmFja2VuZFByb3h5Ojp1bmlxdWUoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCSW5kZXhCYWNrZW5kUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkluZGV4QmFja2VuZFByb3h5LmgKaW5k
ZXggNDJlMGVhYmJlZTE3YTE2NzA4NzhmNzAwNWIzMDllNWJkMTIwOGNkMC4uMDY3MDA1MjEwZGUy
NjM4Zjc1MmQ0OWM1NTY5NjljZWQ2ZWU4NTVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvSURCSW5kZXhCYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9JREJJbmRleEJhY2tlbmRQcm94eS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYg
RU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKICNpbmNsdWRlICJJREJJbmRleEJhY2tlbmRJbnRl
cmZhY2UuaCIKKyNpbmNsdWRlICJJREJLZXlQYXRoLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKQEAgLTQzLDcgKzQ0LDcgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCBTdHJpbmcgbmFtZSgpOwogICAgIHZpcnR1YWwgU3RyaW5nIHN0b3Jl
TmFtZSgpOwotICAgIHZpcnR1YWwgU3RyaW5nIGtleVBhdGgoKTsKKyAgICB2aXJ0dWFsIFdlYkNv
cmU6OklEQktleVBhdGgga2V5UGF0aCgpOwogICAgIHZpcnR1YWwgYm9vbCB1bmlxdWUoKTsKICAg
ICB2aXJ0dWFsIGJvb2wgbXVsdGlFbnRyeSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5jcHAKaW5kZXggMjFh
NWRkODU2ZGMzYjgwNTk4OTc3YzA0ODYyZWI4NmRmZTg3OWMwZC4uZGIxYTQ0YTZhMmE5ODI0ZDFi
MWExZWU0OTFmMTZiOTI1NmIwNTlmNiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5LmNwcApAQCAtNjQsOSArNjQs
OSBAQCBTdHJpbmcgSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6Om5hbWUoKSBjb25zdAogICAg
IHJldHVybiBtX3dlYklEQk9iamVjdFN0b3JlLT5uYW1lKCk7CiB9CiAKLVN0cmluZyBJREJPYmpl
Y3RTdG9yZUJhY2tlbmRQcm94eTo6a2V5UGF0aCgpIGNvbnN0CitJREJLZXlQYXRoIElEQk9iamVj
dFN0b3JlQmFja2VuZFByb3h5OjprZXlQYXRoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV93ZWJJ
REJPYmplY3RTdG9yZS0+a2V5UGF0aCgpLnN0cmluZygpOworICAgIHJldHVybiBtX3dlYklEQk9i
amVjdFN0b3JlLT5rZXlQYXRoKCk7CiB9CiAKIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gSURC
T2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OmluZGV4TmFtZXMoKSBjb25zdApAQCAtMTE0LDcgKzEx
NCw3IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OmNsZWFyKFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIElEQlRyCiAgICAgbV93ZWJJREJPYmplY3RTdG9yZS0+
Y2xlYXIobmV3IFdlYklEQkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSwgKnRyYW5zYWN0aW9uUHJv
eHktPmdldFdlYklEQlRyYW5zYWN0aW9uKCksIGVjKTsKIH0KIAotUGFzc1JlZlB0cjxJREJJbmRl
eEJhY2tlbmRJbnRlcmZhY2U+IElEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjpjcmVhdGVJbmRl
eChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUs
IGJvb2wgbXVsdGlFbnRyeSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2Fj
dGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVy
ZmFjZT4gSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OmNyZWF0ZUluZGV4KGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVs
dGlFbnRyeSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgLy8gVGhlIHRyYW5zYWN0aW9uIHBvaW50ZXIgaXMgZ3Vh
cmFudGVlZCB0byBiZSBhIHBvaW50ZXIgdG8gYSBwcm94eSBvYmplY3QgYXMsIGluIHRoZSByZW5k
ZXJlciwKICAgICAvLyBhbGwgaW1wbGVtZW50YXRpb25zIG9mIElEQiBpbnRlcmZhY2VzIGFyZSBw
cm94eSBvYmplY3RzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURC
T2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lE
Qk9iamVjdFN0b3JlQmFja2VuZFByb3h5LmgKaW5kZXggNWUxMTg5MTg2YWExZGEyYzE0YzU5OGQ4
NjQyNDYyZWU3ZGQ0ZWNkZi4uMGMyZDgzOGZlZGQxMGJlYjlmMjhlYTk5ZmY3NzQ4ZDIyNzUyZTc4
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVC
YWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJPYmplY3RT
dG9yZUJhY2tlbmRQcm94eS5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoSU5ERVhF
RF9EQVRBQkFTRSkKIAorI2luY2x1ZGUgIklEQktleVBhdGguaCIKICNpbmNsdWRlICJJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KQEAgLTQzLDcgKzQ0LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgfklEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5KCk7CiAKICAgICB2aXJ0dWFsIFN0cmlu
ZyBuYW1lKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBTdHJpbmcga2V5UGF0aCgpIGNvbnN0OworICAg
IHZpcnR1YWwgV2ViQ29yZTo6SURCS2V5UGF0aCBrZXlQYXRoKCkgY29uc3Q7CiAgICAgdmlydHVh
bCBQYXNzUmVmUHRyPFdlYkNvcmU6OkRPTVN0cmluZ0xpc3Q+IGluZGV4TmFtZXMoKSBjb25zdDsK
IAogICAgIHZpcnR1YWwgdm9pZCBnZXQoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXlSYW5nZT4s
IFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgV2ViQ29yZTo6SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwpAQCAtNTIsNyAr
NTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQ
dHI8V2ViQ29yZTo6SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNr
cz4sIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4
Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXIoUGFzc1JlZlB0cjxXZWJDb3Jl
OjpJREJDYWxsYmFja3M+LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2Uq
LCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CiAKLSAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OklE
QkluZGV4QmFja2VuZEludGVyZmFjZT4gY3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnksIFdlYkNv
cmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNv
ZGUmKTsKKyAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEludGVyZmFjZT4g
Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJDb3JlOjpJREJLZXlQYXRo
JiwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBpbmRleChjb25zdCBTdHJpbmcm
IG5hbWUsIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIGRlbGV0ZUluZGV4KGNv
bnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
KiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcAppbmRleCBkZTk4MTBkYmQyOTljN2VlNTRlMDFmM2Y2
ZGQzZjkxNmVjYWE5ZTcxLi5kMzA0ZTYxMDY2NzA4NDYwZTI2ODk2YTEyMzc3NjNiMWU0YmRmNzk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAK
QEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgogI2luY2x1ZGUg
IldlYkZyYW1lSW1wbC5oIgogI2luY2x1ZGUgIldlYklEQktleS5oIgorI2luY2x1ZGUgIldlYklE
QktleVBhdGguaCIKICNpbmNsdWRlICJXZWJLaXQuaCIKICNpbmNsdWRlICJXZWJQbHVnaW5Db250
YWluZXJJbXBsLmgiCiAjaW5jbHVkZSAiV2ViUGx1Z2luTGlzdEJ1aWxkZXJJbXBsLmgiCkBAIC01
MTUsNyArNTE2LDcgQEAgUGFzc1JlZlB0cjxJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZT4gUGxh
dGZvcm1TdXBwb3J0OjppZGJGYWN0b3J5KCkKICAgICByZXR1cm4gSURCRmFjdG9yeUJhY2tlbmRQ
cm94eTo6Y3JlYXRlKCk7CiB9CiAKLXZvaWQgUGxhdGZvcm1TdXBwb3J0OjpjcmVhdGVJREJLZXlz
RnJvbVNlcmlhbGl6ZWRWYWx1ZXNBbmRLZXlQYXRoKGNvbnN0IFZlY3RvcjxSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiA+JiB2YWx1ZXMsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgVmVjdG9y
PFJlZlB0cjxJREJLZXk+ID4mIGtleXMpCit2b2lkIFBsYXRmb3JtU3VwcG9ydDo6Y3JlYXRlSURC
S2V5c0Zyb21TZXJpYWxpemVkVmFsdWVzQW5kS2V5UGF0aChjb25zdCBWZWN0b3I8UmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gPiYgdmFsdWVzLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRo
LCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiYga2V5cykKIHsKICAgICBXZWJWZWN0b3I8V2ViU2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiB3ZWJWYWx1ZXMgPSB2YWx1ZXM7CiAgICAgV2ViVmVjdG9yPFdl
YklEQktleT4gd2ViS2V5czsKQEAgLTUyNyw3ICs1MjgsNyBAQCB2b2lkIFBsYXRmb3JtU3VwcG9y
dDo6Y3JlYXRlSURCS2V5c0Zyb21TZXJpYWxpemVkVmFsdWVzQW5kS2V5UGF0aChjb25zdCBWZWN0
b3I8UgogICAgICAgICBrZXlzLmFwcGVuZChQYXNzUmVmUHRyPElEQktleT4od2ViS2V5c1tpXSkp
OwogfQogCi1QYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gUGxhdGZvcm1TdXBwb3J0
OjppbmplY3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKFBhc3NSZWZQdHI8SURCS2V5PiBrZXks
IFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBr
ZXlQYXRoKQorUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFBsYXRmb3JtU3VwcG9y
dDo6aW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShQYXNzUmVmUHRyPElEQktleT4ga2V5
LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIGNvbnN0IElEQktleVBh
dGgmIGtleVBhdGgpCiB7CiAgICAgcmV0dXJuIHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5pbmpl
Y3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKGtleSwgdmFsdWUsIGtleVBhdGgpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAKaW5k
ZXggNDQ3Yjk5M2M2YTRmOTA3ZGMwNDNhN2EyZjU0YWM1Njg2ZDYzOTgxOS4uNGJlNDNkYzE0ZDgx
N2Q5NTlhZWY1OGExNmFlY2Y0ODViY2I1YjZiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwCkBAIC02Niw3ICs2Niw3IEBAIFdlYkRP
TVN0cmluZ0xpc3QgV2ViSURCRGF0YWJhc2VJbXBsOjpvYmplY3RTdG9yZU5hbWVzKCkgY29uc3QK
ICAgICByZXR1cm4gbV9kYXRhYmFzZUJhY2tlbmQtPm9iamVjdFN0b3JlTmFtZXMoKTsKIH0KIAot
V2ViSURCT2JqZWN0U3RvcmUqIFdlYklEQkRhdGFiYXNlSW1wbDo6Y3JlYXRlT2JqZWN0U3RvcmUo
Y29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0
b0luY3JlbWVudCwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBXZWJFeGNl
cHRpb25Db2RlJiBlYykKK1dlYklEQk9iamVjdFN0b3JlKiBXZWJJREJEYXRhYmFzZUltcGw6OmNy
ZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCS2V5UGF0
aCYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYg
dHJhbnNhY3Rpb24sIFdlYkV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFJlZlB0cjxJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IG9iamVjdFN0b3JlID0gbV9kYXRhYmFzZUJhY2tlbmQt
PmNyZWF0ZU9iamVjdFN0b3JlKG5hbWUsIGtleVBhdGgsIGF1dG9JbmNyZW1lbnQsIHRyYW5zYWN0
aW9uLmdldElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSgpLCBlYyk7CiAgICAgaWYgKCFv
YmplY3RTdG9yZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SURCRGF0YWJhc2VJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRh
YmFzZUltcGwuaAppbmRleCBmNzNiZTU3MDU0ZjYyYWI0YzI1NDE0MDJkN2YxNDdkODY3YWVmM2Q3
Li45NjU3MWJiZTljMWQ5NmNiZDNmOWM3ZDNhZDgzMTc5Yjk2MTkzZGQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaApAQCAtNTMsMTAgKzUz
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgV2ViU3RyaW5nIHZlcnNpb24oKSBjb25zdDsKICAg
ICB2aXJ0dWFsIFdlYkRPTVN0cmluZ0xpc3Qgb2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0OwogCi0g
ICAgLy8gRklYTUU6IFJlbW92ZSBXZWJTdHJpbmcga2V5UGF0aCBvdmVybG9hZCBvbmNlIGNhbGxl
cnMgYXJlIHVwZGF0ZWQuCi0gICAgLy8gaHR0cDovL3dlYmtpdC5vcmcvYi84NDIwNwotICAgIHZp
cnR1YWwgV2ViSURCT2JqZWN0U3RvcmUqIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmlu
ZyYsIGNvbnN0IFdlYlN0cmluZyYsIGJvb2wsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2Vi
RXhjZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwgV2ViSURCT2JqZWN0U3RvcmUqIGNyZWF0ZU9i
amVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCS2V5UGF0aCYga2V5
UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYgdHJhbnNh
Y3Rpb24sIFdlYkV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBjcmVhdGVPYmplY3RTdG9yZShu
YW1lLCBrZXlQYXRoLnN0cmluZygpLCBhdXRvSW5jcmVtZW50LCB0cmFuc2FjdGlvbiwgZWMpOyB9
CisgICAgdmlydHVhbCBXZWJJREJPYmplY3RTdG9yZSogY3JlYXRlT2JqZWN0U3RvcmUoY29uc3Qg
V2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50
LCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBX
ZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0VmVyc2lvbihjb25zdCBXZWJTdHJpbmcmIHZlcnNpb24sIFdlYklEQkNhbGxiYWNrcyosIFdl
YkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIFdlYklEQlRyYW5zYWN0aW9uKiB0cmFuc2Fj
dGlvbihjb25zdCBXZWJET01TdHJpbmdMaXN0JiBuYW1lcywgdW5zaWduZWQgc2hvcnQgbW9kZSwg
V2ViRXhjZXB0aW9uQ29kZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViSURCSW5kZXhJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklE
QkluZGV4SW1wbC5jcHAKaW5kZXggMTcwOTM5NTY3NDA5NjAyZDg4ZjQ3YTY1ZjUwM2E5Y2ViODI3
ZGFiNS4uZDc4YjJiM2E2MDhjOGEzNzljOTgzYjA4MDM5OGRhZGJjYmFmMTk5MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCSW5kZXhJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJJbmRleEltcGwuY3BwCkBAIC02MywxMyAr
NjMsNiBAQCBXZWJJREJLZXlQYXRoIFdlYklEQkluZGV4SW1wbDo6a2V5UGF0aCgpIGNvbnN0CiAg
ICAgcmV0dXJuIFdlYklEQktleVBhdGgobV9iYWNrZW5kLT5rZXlQYXRoKCkpOwogfQogCi0vLyBG
SVhNRTogUmVtb3ZlIHRoaXMgbWV0aG9kIG9uY2UgY2FsbGVycyBhcmUgdXBkYXRlZC4KLS8vIGh0
dHA6Ly93ZWJraXQub3JnL2IvODQyMDcKLVdlYlN0cmluZyBXZWJJREJJbmRleEltcGw6OmtleVBh
dGhTdHJpbmcoKSBjb25zdAotewotICAgIHJldHVybiBtX2JhY2tlbmQtPmtleVBhdGgoKTsKLX0K
LQogYm9vbCBXZWJJREJJbmRleEltcGw6OnVuaXF1ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
YmFja2VuZC0+dW5pcXVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJREJJbmRleEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQklu
ZGV4SW1wbC5oCmluZGV4IGQ4YjExMjlkMGYzZjU1ZDMzM2ZmZDYxOWMwOTljNDhhYmU5NWYzZmMu
LjZkMGFiNjhmNmQ5OWZkY2FjZGZkYzAzMmMwMjk4MDg1ODZlZGNiZjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkluZGV4SW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkluZGV4SW1wbC5oCkBAIC00Niw5ICs0Niw2IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIFdlYlN0cmluZyBuYW1lKCkgY29uc3Q7CiAgICAgdmlydHVhbCBX
ZWJTdHJpbmcgc3RvcmVOYW1lKCkgY29uc3Q7CiAgICAgdmlydHVhbCBXZWJJREJLZXlQYXRoIGtl
eVBhdGgoKSBjb25zdDsKLSAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgbWV0aG9kIG9uY2UgY2Fs
bGVycyBhcmUgdXBkYXRlZC4KLSAgICAvLyBodHRwOi8vd2Via2l0Lm9yZy9iLzg0MjA3Ci0gICAg
dmlydHVhbCBXZWJTdHJpbmcga2V5UGF0aFN0cmluZygpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9v
bCB1bmlxdWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgbXVsdGlFbnRyeSgpIGNvbnN0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJLZXlQYXRoLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQktleVBhdGguY3BwCmluZGV4IGJj
ZjVkYmQwZDllYzg2ZDFhMzljODAxZTRhZTBmNzdmYmQyNDFiMjYuLjE3YzE1OGYzNGU0ODhkOTBl
MzE3M2NkYzM4NDYxZDFhZjJhM2I3OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklEQktleVBhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklEQktleVBhdGguY3BwCkBAIC0zNywxMDEgKzM3LDc5IEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotV2ViSURCS2V5UGF0aCBXZWJJREJLZXlQ
YXRoOjpjcmVhdGUoY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mKQorV2ViSURCS2V5UGF0aDo6
fldlYklEQktleVBhdGgoKQogewotICAgIC8vIEZJWE1FOiBBcnJheS10eXBlIGtleSBwYXRocyBu
b3QgeWV0IHN1cHBvcnRlZC4gaHR0cDovL3dlYmtpdC5vcmcvYi84NDIwNwotICAgIFdFQktJVF9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gY3JlYXRlTnVsbCgpOworICAgIG1fcHJp
dmF0ZS5yZXNldCgwKTsKIH0KIAogV2ViSURCS2V5UGF0aCBXZWJJREJLZXlQYXRoOjpjcmVhdGUo
Y29uc3QgV2ViU3RyaW5nJiBrZXlQYXRoKQogewotICAgIGlmIChrZXlQYXRoLmlzTnVsbCgpKQot
ICAgICAgICByZXR1cm4gY3JlYXRlTnVsbCgpOwotCi0gICAgV1RGOjpWZWN0b3I8V1RGOjpTdHJp
bmc+IGlkYkVsZW1lbnRzOwotICAgIElEQktleVBhdGhQYXJzZUVycm9yIGlkYkVycm9yOwotICAg
IElEQlBhcnNlS2V5UGF0aChrZXlQYXRoLCBpZGJFbGVtZW50cywgaWRiRXJyb3IpOwotICAgIHJl
dHVybiBXZWJJREJLZXlQYXRoKGlkYkVsZW1lbnRzLCBzdGF0aWNfY2FzdDxpbnQ+KGlkYkVycm9y
KSk7Ci19Ci0KLVdlYklEQktleVBhdGggV2ViSURCS2V5UGF0aDo6Y3JlYXRlTnVsbCgpCi17Ci0g
ICAgcmV0dXJuIFdlYklEQktleVBhdGgoV2ViU3RyaW5nKCkpOworICAgIHJldHVybiBXZWJJREJL
ZXlQYXRoKElEQktleVBhdGgoa2V5UGF0aCkpOwogfQogCi1XZWJJREJLZXlQYXRoOjpXZWJJREJL
ZXlQYXRoKGNvbnN0IFdlYklEQktleVBhdGgmIGtleVBhdGgpCitXZWJJREJLZXlQYXRoIFdlYklE
QktleVBhdGg6OmNyZWF0ZShjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYga2V5UGF0aCkKIHsK
LSAgICBhc3NpZ24oa2V5UGF0aCk7CisgICAgVmVjdG9yPFN0cmluZz4gc3RyaW5nczsKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGtleVBhdGguc2l6ZSgpOyArK2kpCisgICAgICAgIHN0cmlu
Z3MuYXBwZW5kKGtleVBhdGhbaV0pOworICAgIHJldHVybiBXZWJJREJLZXlQYXRoKElEQktleVBh
dGgoc3RyaW5ncykpOwogfQogCi1XZWJJREJLZXlQYXRoOjpXZWJJREJLZXlQYXRoKGNvbnN0IFdU
Rjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgZWxlbWVudHMsIGludCBwYXJzZUVycm9yKQotICAgIDog
bV9wcml2YXRlKG5ldyBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4oZWxlbWVudHMpKQotICAgICwg
bV9wYXJzZUVycm9yKHBhcnNlRXJyb3IpCitXZWJJREJLZXlQYXRoIFdlYklEQktleVBhdGg6OmNy
ZWF0ZU51bGwoKQogeworICAgIHJldHVybiBXZWJJREJLZXlQYXRoKElEQktleVBhdGgoKSk7CiB9
CiAKIGJvb2wgV2ViSURCS2V5UGF0aDo6aXNWYWxpZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
cGFyc2VFcnJvciA9PSBJREJLZXlQYXRoUGFyc2VFcnJvck5vbmU7CisgICAgQVNTRVJUKG1fcHJp
dmF0ZS5nZXQoKSk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+aXNWYWxpZCgpOwogfQogCiBXZWJJ
REJLZXlQYXRoOjpUeXBlIFdlYklEQktleVBhdGg6OnR5cGUoKSBjb25zdAogewotICAgIHJldHVy
biBtX3ByaXZhdGUuZ2V0KCkgPyBTdHJpbmdUeXBlIDogTnVsbFR5cGU7CisgICAgQVNTRVJUKG1f
cHJpdmF0ZS5nZXQoKSk7CisgICAgcmV0dXJuIFR5cGUobV9wcml2YXRlLT50eXBlKCkpOwogfQog
Ci1XZWJTdHJpbmcgV2ViSURCS2V5UGF0aDo6c3RyaW5nKCkgY29uc3QKKworV2ViVmVjdG9yPFdl
YlN0cmluZz4gV2ViSURCS2V5UGF0aDo6YXJyYXkoKSBjb25zdAogewotICAgIGlmICghbV9wcml2
YXRlLmdldCgpKQotICAgICAgICByZXR1cm4gV2ViU3RyaW5nKCk7Ci0KLSAgICAvLyBGSVhNRTog
U3RvcmUgdGhlIGNvbXBsZXRlIHN0cmluZyBpbnN0ZWFkIG9mIHJlYnVpbGRpbmcgaXQuCi0gICAg
Ly8gaHR0cDovL3dlYmtpdC5vcmcvYi84NDIwNwotICAgIFdURjo6U3RyaW5nIHN0cmluZygiIik7
Ci0gICAgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBhcnJheSA9ICptX3ByaXZhdGUuZ2V0KCk7
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheS5zaXplKCk7ICsraSkgewotICAgICAg
ICBpZiAoaSkKLSAgICAgICAgICAgIHN0cmluZy5hcHBlbmQoIi4iKTsKLSAgICAgICAgc3RyaW5n
LmFwcGVuZChhcnJheVtpXSk7Ci0gICAgfQotICAgIHJldHVybiBXZWJTdHJpbmcoc3RyaW5nKTsK
KyAgICBBU1NFUlQobV9wcml2YXRlLmdldCgpKTsKKyAgICBBU1NFUlQobV9wcml2YXRlLT50eXBl
KCkgPT0gSURCS2V5UGF0aDo6QXJyYXlUeXBlKTsKKyAgICByZXR1cm4gbV9wcml2YXRlLT5hcnJh
eSgpOwogfQogCi1XZWJJREJLZXlQYXRoOjpXZWJJREJLZXlQYXRoKGNvbnN0IFdlYlN0cmluZyYg
a2V5UGF0aCkKLSAgICA6IG1fcGFyc2VFcnJvcihJREJLZXlQYXRoUGFyc2VFcnJvck5vbmUpCitX
ZWJTdHJpbmcgV2ViSURCS2V5UGF0aDo6c3RyaW5nKCkgY29uc3QKIHsKLSAgICBpZiAoIWtleVBh
dGguaXNOdWxsKCkpIHsKLSAgICAgICAgbV9wcml2YXRlLnJlc2V0KG5ldyBXVEY6OlZlY3RvcjxX
VEY6OlN0cmluZz4oKSk7Ci0gICAgICAgIElEQktleVBhdGhQYXJzZUVycm9yIGlkYlBhcnNlRXJy
b3I7Ci0gICAgICAgIElEQlBhcnNlS2V5UGF0aChrZXlQYXRoLCAqbV9wcml2YXRlLmdldCgpLCBp
ZGJQYXJzZUVycm9yKTsKLSAgICAgICAgbV9wYXJzZUVycm9yID0gaWRiUGFyc2VFcnJvcjsKLSAg
ICB9CisgICAgQVNTRVJUKG1fcHJpdmF0ZS5nZXQoKSk7CisgICAgQVNTRVJUKG1fcHJpdmF0ZS0+
dHlwZSgpID09IElEQktleVBhdGg6OlN0cmluZ1R5cGUpOworICAgIHJldHVybiBtX3ByaXZhdGUt
PnN0cmluZygpOwogfQogCi1pbnQgV2ViSURCS2V5UGF0aDo6cGFyc2VFcnJvcigpIGNvbnN0CitX
ZWJJREJLZXlQYXRoOjpXZWJJREJLZXlQYXRoKGNvbnN0IFdlYklEQktleVBhdGgmIGtleVBhdGgp
CisgICAgOiBtX3ByaXZhdGUobmV3IElEQktleVBhdGgoa2V5UGF0aCkpCiB7Ci0gICAgcmV0dXJu
IG1fcGFyc2VFcnJvcjsKKyAgICBBU1NFUlQobV9wcml2YXRlLmdldCgpKTsKIH0KIAotdm9pZCBX
ZWJJREJLZXlQYXRoOjphc3NpZ24oY29uc3QgV2ViSURCS2V5UGF0aCYga2V5UGF0aCkKK1dlYklE
QktleVBhdGg6OldlYklEQktleVBhdGgoY29uc3QgV2ViQ29yZTo6SURCS2V5UGF0aCYgdmFsdWUp
CisgICAgOiBtX3ByaXZhdGUobmV3IElEQktleVBhdGgodmFsdWUpKQogewotICAgIG1fcGFyc2VF
cnJvciA9IGtleVBhdGgubV9wYXJzZUVycm9yOwotICAgIGlmIChrZXlQYXRoLm1fcHJpdmF0ZS5n
ZXQoKSkKLSAgICAgICAgbV9wcml2YXRlLnJlc2V0KG5ldyBXVEY6OlZlY3RvcjxXVEY6OlN0cmlu
Zz4oa2V5UGF0aCkpOwotICAgIGVsc2UKLSAgICAgICAgbV9wcml2YXRlLnJlc2V0KDApOworICAg
IEFTU0VSVChtX3ByaXZhdGUuZ2V0KCkpOwogfQogCi12b2lkIFdlYklEQktleVBhdGg6OnJlc2V0
KCkKK1dlYklEQktleVBhdGgmIFdlYklEQktleVBhdGg6Om9wZXJhdG9yPShjb25zdCBXZWJDb3Jl
OjpJREJLZXlQYXRoJiB2YWx1ZSkKIHsKLSAgICBtX3ByaXZhdGUucmVzZXQoMCk7CisgICAgQVNT
RVJUKG1fcHJpdmF0ZS5nZXQoKSk7CisgICAgbV9wcml2YXRlLnJlc2V0KG5ldyBJREJLZXlQYXRo
KHZhbHVlKSk7CisgICAgcmV0dXJuICp0aGlzOwogfQogCi1XZWJJREJLZXlQYXRoOjpvcGVyYXRv
ciBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZywgMD4mKCkgY29uc3QKK1dlYklEQktleVBh
dGg6Om9wZXJhdG9yIGNvbnN0IFdlYkNvcmU6OklEQktleVBhdGgmKCkgY29uc3QKIHsKICAgICBB
U1NFUlQobV9wcml2YXRlLmdldCgpKTsKLSAgICByZXR1cm4gKm1fcHJpdmF0ZS5nZXQoKTsKKyAg
ICByZXR1cm4gKihtX3ByaXZhdGUuZ2V0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3Jl
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUlt
cGwuY3BwCmluZGV4IDYyNGE0ZTViMzY2MGQ5Yjk3NGE3ZDA0ODJiMjQ2OTFkMWYxMTE0MDEuLmE1
YjVhMTQ0NTA4Y2FlYTE4OTIwNzEyMGU0OWJkNmMxZjMwYTYzMTQgMTAwNzU1Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmNwcApAQCAtMzEs
NiArMzEsNyBAQAogI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJJREJDYWxs
YmFja3NQcm94eS5oIgogI2luY2x1ZGUgIklEQkluZGV4QmFja2VuZEludGVyZmFjZS5oIgorI2lu
Y2x1ZGUgIklEQktleVBhdGguaCIKICNpbmNsdWRlICJJREJLZXlSYW5nZS5oIgogI2luY2x1ZGUg
IklEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIldlYklEQkluZGV4
SW1wbC5oIgpAQCAtNTksMTMgKzYwLDYgQEAgV2ViU3RyaW5nIFdlYklEQk9iamVjdFN0b3JlSW1w
bDo6bmFtZSgpIGNvbnN0CiAKIFdlYklEQktleVBhdGggV2ViSURCT2JqZWN0U3RvcmVJbXBsOjpr
ZXlQYXRoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gV2ViSURCS2V5UGF0aChtX29iamVjdFN0b3Jl
LT5rZXlQYXRoKCkpOwotfQotCi0vLyBGSVhNRTogUmVtb3ZlIHRoaXMgbWV0aG9kIG9uY2UgY2Fs
bGVycyBhcmUgdXBkYXRlZC4KLS8vIGh0dHA6Ly93ZWJraXQub3JnL2IvODQyMDcKLVdlYlN0cmlu
ZyBXZWJJREJPYmplY3RTdG9yZUltcGw6OmtleVBhdGhTdHJpbmcoKSBjb25zdAotewogICAgIHJl
dHVybiBtX29iamVjdFN0b3JlLT5rZXlQYXRoKCk7CiB9CiAKQEAgLTk5LDcgKzkzLDcgQEAgdm9p
ZCBXZWJJREJPYmplY3RTdG9yZUltcGw6OmNsZWFyKFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tz
LCBjb25zdCBXZWJJREJUcmFuc2EKICAgICBtX29iamVjdFN0b3JlLT5jbGVhcihJREJDYWxsYmFj
a3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKGNhbGxiYWNrcykpLCB0cmFuc2FjdGlvbi5nZXRJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UoKSwgZWMpOwogfQogCi1XZWJJREJJbmRleCogV2Vi
SURCT2JqZWN0U3RvcmVJbXBsOjpjcmVhdGVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNv
bnN0IFdlYlN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSwgY29u
c3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBXZWJFeGNlcHRpb25Db2RlJiBlYykK
K1dlYklEQkluZGV4KiBXZWJJREJPYmplY3RTdG9yZUltcGw6OmNyZWF0ZUluZGV4KGNvbnN0IFdl
YlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCB1bmlxdWUs
IGJvb2wgbXVsdGlFbnRyeSwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBX
ZWJFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJm
YWNlPiBpbmRleCA9IG1fb2JqZWN0U3RvcmUtPmNyZWF0ZUluZGV4KG5hbWUsIGtleVBhdGgsIHVu
aXF1ZSwgbXVsdGlFbnRyeSwgdHJhbnNhY3Rpb24uZ2V0SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlKCksIGVjKTsKICAgICBpZiAoIWluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuaAppbmRleCBlZTNiMjIyYWNjMmM2NjM3
YWU3NGJkYTRlNGM4YWI4NjJmZjdlODdmLi4zMzZkYmMxZTdjOWM4NmFkYzBhMWQ3NzQ3MWE2ODFj
NmYxZjUxMTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJP
YmplY3RTdG9yZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJP
YmplY3RTdG9yZUltcGwuaApAQCAtNDcsOSArNDcsNiBAQCBwdWJsaWM6CiAKICAgICBXZWJTdHJp
bmcgbmFtZSgpIGNvbnN0OwogICAgIFdlYklEQktleVBhdGgga2V5UGF0aCgpIGNvbnN0OwotICAg
IC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBtZXRob2Qgb25jZSBjYWxsZXJzIGFyZSB1cGRhdGVkLgot
ICAgIC8vIGh0dHA6Ly93ZWJraXQub3JnL2IvODQyMDcKLSAgICBXZWJTdHJpbmcga2V5UGF0aFN0
cmluZygpIGNvbnN0OwogICAgIFdlYkRPTVN0cmluZ0xpc3QgaW5kZXhOYW1lcygpIGNvbnN0Owog
CiAgICAgdm9pZCBnZXQoY29uc3QgV2ViSURCS2V5UmFuZ2UmLCBXZWJJREJDYWxsYmFja3MqLCBj
b25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKQEAgLTU4LDEwICs1
NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZUZ1bmN0aW9uKGNvbnN0IFdlYklEQktleVJh
bmdlJiwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNl
cHRpb25Db2RlJik7CiAgICAgdm9pZCBjbGVhcihXZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJJ
REJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIC8vIEZJWE1FOiBSZW1v
dmUgV2ViU3RyaW5nIGtleVBhdGggb3ZlcmxvYWQgb25jZSBjYWxsZXJzIGFyZSB1cGRhdGVkLgot
ICAgIC8vIGh0dHA6Ly93ZWJraXQub3JnL2IvODQyMDcKLSAgICBXZWJJREJJbmRleCogY3JlYXRl
SW5kZXgoY29uc3QgV2ViU3RyaW5nJiwgY29uc3QgV2ViU3RyaW5nJiwgYm9vbCwgYm9vbCwgY29u
c3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7Ci0gICAgV2ViSURCSW5k
ZXgqIGNyZWF0ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCS2V5UGF0
aCYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSwgY29uc3QgV2ViSURCVHJh
bnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBXZWJFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gY3Jl
YXRlSW5kZXgobmFtZSwga2V5UGF0aC5zdHJpbmcoKSwgdW5pcXVlLCBtdWx0aUVudHJ5LCB0cmFu
c2FjdGlvbiwgZWMpOyB9CisgICAgV2ViSURCSW5kZXgqIGNyZWF0ZUluZGV4KGNvbnN0IFdlYlN0
cmluZyYgbmFtZSwgY29uc3QgV2ViSURCS2V5UGF0aCYsIGJvb2wgdW5pcXVlLCBib29sIG11bHRp
RW50cnksIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOwogICAg
IFdlYklEQkluZGV4KiBpbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIFdlYkV4Y2VwdGlvbkNv
ZGUmKTsKICAgICB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3Qg
V2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQmluZGluZ1V0aWxpdGllc1Rlc3QuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJCaW5kaW5nVXRpbGl0aWVzVGVzdC5jcHAK
aW5kZXggZDYwMjk1YTVmYjQzZTUzMzYxYzA3MjYxMmE1ZTQzODU4ZTY2YzI5OS4uYzEzNTE4NTBk
ODc4YzYwNWI1NjY0YzY3MjQwNTNiNGM3YjBiMTM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9JREJCaW5kaW5nVXRpbGl0aWVzVGVzdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJCaW5kaW5nVXRpbGl0aWVzVGVzdC5jcHAKQEAgLTQx
LDEwICs0MSw4IEBAIG5hbWVzcGFjZSB7CiAKIFBhc3NSZWZQdHI8SURCS2V5PiBjaGVja0tleUZy
b21WYWx1ZUFuZEtleVBhdGhJbnRlcm5hbChTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHZhbHVlLCBj
b25zdCBTdHJpbmcmIGtleVBhdGgpCiB7Ci0gICAgVmVjdG9yPFN0cmluZz4gaWRiS2V5UGF0aDsK
LSAgICBJREJLZXlQYXRoUGFyc2VFcnJvciBwYXJzZUVycm9yOwotICAgIElEQlBhcnNlS2V5UGF0
aChrZXlQYXRoLCBpZGJLZXlQYXRoLCBwYXJzZUVycm9yKTsKLSAgICBFWFBFQ1RfRVEoSURCS2V5
UGF0aFBhcnNlRXJyb3JOb25lLCBwYXJzZUVycm9yKTsKKyAgICBJREJLZXlQYXRoIGlkYktleVBh
dGgoa2V5UGF0aCk7CisgICAgRVhQRUNUX1RSVUUoaWRiS2V5UGF0aC5pc1ZhbGlkKCkpOwogICAg
IHJldHVybiBjcmVhdGVJREJLZXlGcm9tU2VyaWFsaXplZFZhbHVlQW5kS2V5UGF0aCh2YWx1ZSwg
aWRiS2V5UGF0aCk7CiB9CiAKQEAgLTU2LDEwICs1NCw4IEBAIHZvaWQgY2hlY2tLZXlQYXRoTnVs
bFZhbHVlKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogdmFsdWUsIGNvbnN0IFN0cmluZyYga2V5UGF0
aCkKIAogUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGluamVjdEtleShQYXNzUmVm
UHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUs
IGNvbnN0IFN0cmluZyYga2V5UGF0aCkKIHsKLSAgICBWZWN0b3I8U3RyaW5nPiBpZGJLZXlQYXRo
OwotICAgIElEQktleVBhdGhQYXJzZUVycm9yIHBhcnNlRXJyb3I7Ci0gICAgSURCUGFyc2VLZXlQ
YXRoKGtleVBhdGgsIGlkYktleVBhdGgsIHBhcnNlRXJyb3IpOwotICAgIEVYUEVDVF9FUShJREJL
ZXlQYXRoUGFyc2VFcnJvck5vbmUsIHBhcnNlRXJyb3IpOworICAgIElEQktleVBhdGggaWRiS2V5
UGF0aChrZXlQYXRoKTsKKyAgICBFWFBFQ1RfVFJVRShpZGJLZXlQYXRoLmlzVmFsaWQoKSk7CiAg
ICAgcmV0dXJuIGluamVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUoa2V5LCB2YWx1ZSwgaWRi
S2V5UGF0aCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
SURCS2V5UGF0aFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJLZXlQ
YXRoVGVzdC5jcHAKaW5kZXggZTJmZGFlYmMyZjE3ODdlOGI2ZDhlNzllNmFmNjJhMWY3NTA1ZWQ4
NC4uN2Q2NjJjMDA5Y2M4NjJlNTAwNjE4ZGZmZGVmZThhMjQ2NTQzNDFhOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJLZXlQYXRoVGVzdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJLZXlQYXRoVGVzdC5jcHAKQEAgLTM3LDYgKzM3
LDEwIEBAIG5hbWVzcGFjZSB7CiAKIHZvaWQgY2hlY2tLZXlQYXRoKGNvbnN0IFN0cmluZyYga2V5
UGF0aCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGV4cGVjdGVkLCBpbnQgcGFyc2VyRXJyb3IpCiB7
CisgICAgSURCS2V5UGF0aCBpZGJLZXlQYXRoKGtleVBhdGgpOworICAgIEFTU0VSVF9FUShpZGJL
ZXlQYXRoLnR5cGUoKSwgSURCS2V5UGF0aDo6U3RyaW5nVHlwZSk7CisgICAgQVNTRVJUX0VRKGlk
YktleVBhdGguaXNWYWxpZCgpLCAocGFyc2VyRXJyb3IgPT0gSURCS2V5UGF0aFBhcnNlRXJyb3JO
b25lKSk7CisKICAgICBJREJLZXlQYXRoUGFyc2VFcnJvciBlcnJvcjsKICAgICBWZWN0b3I8U3Ry
aW5nPiBrZXlQYXRoRWxlbWVudHM7CiAgICAgSURCUGFyc2VLZXlQYXRoKGtleVBhdGgsIGtleVBh
dGhFbGVtZW50cywgZXJyb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9JREJMZXZlbERCQ29kaW5nVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0lEQkxldmVsREJDb2RpbmdUZXN0LmNwcAppbmRleCA2MDMzMTA1MWYzMmRhZWMyMjQ5ZTRi
Yzk0ZTMwNjk3MDE1MzVkMTRkLi4wNTc5NDY5YzQzNzE3MTQ3MmIyOGQ1OGRkNjg0NTNiNjc2YmZj
MWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkxldmVsREJD
b2RpbmdUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkxldmVs
REJDb2RpbmdUZXN0LmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2lmIFVTRShMRVZFTERCKQogCiAj
aW5jbHVkZSAiSURCS2V5LmgiCisjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgogI2luY2x1ZGUgIkxl
dmVsREJTbGljZS5oIgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgpAQCAtMzkwLDYgKzM5MSwxMzQgQEAgVEVTVChJREJMZXZlbERCQ29kaW5nVGVzdCwg
RW5jb2RlRGVjb2RlSURCS2V5KQogICAgIEVYUEVDVF9FUSgwLCBkZWNvZGVJREJLZXkodi5kYXRh
KCksIHYuZGF0YSgpICsgdi5zaXplKCkgLSAxLCBkZWNvZGVkS2V5KSk7CiB9CiAKK1RFU1QoSURC
TGV2ZWxEQkNvZGluZ1Rlc3QsIEVuY29kZUlEQktleVBhdGgpCit7CisgICAgY29uc3QgdW5zaWdu
ZWQgY2hhciBrSURCS2V5UGF0aFR5cGVDb2RlZEJ5dGUxID0gMDsKKyAgICBjb25zdCB1bnNpZ25l
ZCBjaGFyIGtJREJLZXlQYXRoVHlwZUNvZGVkQnl0ZTIgPSAwOworICAgIHsKKyAgICAgICAgSURC
S2V5UGF0aCBrZXlQYXRoOworICAgICAgICBFWFBFQ1RfRVEoa2V5UGF0aC50eXBlKCksIElEQktl
eVBhdGg6Ok51bGxUeXBlKTsKKyAgICAgICAgVmVjdG9yPGNoYXI+IHYgPSBlbmNvZGVJREJLZXlQ
YXRoKGtleVBhdGgpOworICAgICAgICBFWFBFQ1RfRVEodi5zaXplKCksIDNVKTsKKyAgICAgICAg
RVhQRUNUX0VRKHZbMF0sIGtJREJLZXlQYXRoVHlwZUNvZGVkQnl0ZTEpOworICAgICAgICBFWFBF
Q1RfRVEodlsxXSwga0lEQktleVBhdGhUeXBlQ29kZWRCeXRlMik7CisgICAgICAgIEVYUEVDVF9F
USh2WzJdLCBJREJLZXlQYXRoOjpOdWxsVHlwZSk7CisgICAgfQorCisgICAgeworICAgICAgICBW
ZWN0b3I8U3RyaW5nPiB0ZXN0Q2FzZXM7CisgICAgICAgIHRlc3RDYXNlcy5hcHBlbmQoIiIpOwor
ICAgICAgICB0ZXN0Q2FzZXMuYXBwZW5kKCJmb28iKTsKKyAgICAgICAgdGVzdENhc2VzLmFwcGVu
ZCgiZm9vLmJhciIpOworCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdGVzdENhc2Vz
LnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBJREJLZXlQYXRoIGtleVBhdGggPSBJREJLZXlQ
YXRoKHRlc3RDYXNlc1tpXSk7CisgICAgICAgICAgICBWZWN0b3I8Y2hhcj4gdiA9IGVuY29kZUlE
QktleVBhdGgoa2V5UGF0aCk7CisgICAgICAgICAgICBFWFBFQ1RfRVEodi5zaXplKCksIGVuY29k
ZVN0cmluZ1dpdGhMZW5ndGgodGVzdENhc2VzW2ldKS5zaXplKCkgKyAzKTsKKyAgICAgICAgICAg
IGNvbnN0IGNoYXIqIHAgPSB2LmRhdGEoKTsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIqIGxpbWl0
ID0gdi5kYXRhKCkgKyB2LnNpemUoKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUSgqcCsrLCBrSURC
S2V5UGF0aFR5cGVDb2RlZEJ5dGUxKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUSgqcCsrLCBrSURC
S2V5UGF0aFR5cGVDb2RlZEJ5dGUyKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUSgqcCsrLCBJREJL
ZXlQYXRoOjpTdHJpbmdUeXBlKTsKKyAgICAgICAgICAgIFN0cmluZyBzdHJpbmc7CisgICAgICAg
ICAgICBwID0gZGVjb2RlU3RyaW5nV2l0aExlbmd0aChwLCBsaW1pdCwgc3RyaW5nKTsKKyAgICAg
ICAgICAgIEVYUEVDVF9FUShzdHJpbmcsIHRlc3RDYXNlc1tpXSk7CisgICAgICAgICAgICBFWFBF
Q1RfRVEocCwgbGltaXQpOworICAgICAgICB9CisgICAgfQorCisgICAgeworICAgICAgICBWZWN0
b3I8U3RyaW5nPiB0ZXN0Q2FzZTsKKyAgICAgICAgdGVzdENhc2UuYXBwZW5kKCIiKTsKKyAgICAg
ICAgdGVzdENhc2UuYXBwZW5kKCJmb28iKTsKKyAgICAgICAgdGVzdENhc2UuYXBwZW5kKCJmb28u
YmFyIik7CisKKyAgICAgICAgSURCS2V5UGF0aCBrZXlQYXRoKHRlc3RDYXNlKTsKKyAgICAgICAg
RVhQRUNUX0VRKGtleVBhdGgudHlwZSgpLCBJREJLZXlQYXRoOjpBcnJheVR5cGUpOworICAgICAg
ICBWZWN0b3I8Y2hhcj4gdiA9IGVuY29kZUlEQktleVBhdGgoa2V5UGF0aCk7CisgICAgICAgIGNv
bnN0IGNoYXIqIHAgPSB2LmRhdGEoKTsKKyAgICAgICAgY29uc3QgY2hhciogbGltaXQgPSB2LmRh
dGEoKSArIHYuc2l6ZSgpOworICAgICAgICBFWFBFQ1RfRVEoKnArKywga0lEQktleVBhdGhUeXBl
Q29kZWRCeXRlMSk7CisgICAgICAgIEVYUEVDVF9FUSgqcCsrLCBrSURCS2V5UGF0aFR5cGVDb2Rl
ZEJ5dGUyKTsKKyAgICAgICAgRVhQRUNUX0VRKCpwKyssIElEQktleVBhdGg6OkFycmF5VHlwZSk7
CisgICAgICAgIGludDY0X3QgY291bnQ7CisgICAgICAgIHAgPSBkZWNvZGVWYXJJbnQocCwgbGlt
aXQsIGNvdW50KTsKKyAgICAgICAgRVhQRUNUX0VRKGNvdW50LCBzdGF0aWNfY2FzdDxpbnQ2NF90
Pih0ZXN0Q2FzZS5zaXplKCkpKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdGF0
aWNfY2FzdDxzaXplX3Q+KGNvdW50KTsgKytpKSB7CisgICAgICAgICAgICBTdHJpbmcgc3RyaW5n
OworICAgICAgICAgICAgcCA9IGRlY29kZVN0cmluZ1dpdGhMZW5ndGgocCwgbGltaXQsIHN0cmlu
Zyk7CisgICAgICAgICAgICBFWFBFQ1RfRVEoc3RyaW5nLCB0ZXN0Q2FzZVtpXSk7CisgICAgICAg
IH0KKyAgICAgICAgRVhQRUNUX0VRKHAsIGxpbWl0KTsKKyAgICB9Cit9CisKK1RFU1QoSURCTGV2
ZWxEQkNvZGluZ1Rlc3QsIERlY29kZUlEQktleVBhdGgpCit7CisgICAgY29uc3QgdW5zaWduZWQg
Y2hhciBrSURCS2V5UGF0aFR5cGVDb2RlZEJ5dGUxID0gMDsKKyAgICBjb25zdCB1bnNpZ25lZCBj
aGFyIGtJREJLZXlQYXRoVHlwZUNvZGVkQnl0ZTIgPSAwOworICAgIHsKKyAgICAgICAgLy8gTGVn
YWN5IGVuY29kaW5nIG9mIHN0cmluZyBrZXkgcGF0aHMuCisgICAgICAgIFZlY3RvcjxTdHJpbmc+
IHRlc3RDYXNlczsKKyAgICAgICAgdGVzdENhc2VzLmFwcGVuZCgiIik7CisgICAgICAgIHRlc3RD
YXNlcy5hcHBlbmQoImZvbyIpOworICAgICAgICB0ZXN0Q2FzZXMuYXBwZW5kKCJmb28uYmFyIik7
CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0ZXN0Q2FzZXMuc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgICAgIFZlY3RvcjxjaGFyPiB2ID0gZW5jb2RlU3RyaW5nKHRlc3RDYXNlc1tp
XSk7CisgICAgICAgICAgICBJREJLZXlQYXRoIGtleVBhdGggPSBkZWNvZGVJREJLZXlQYXRoKHYu
ZGF0YSgpLCB2LmRhdGEoKSArIHYuc2l6ZSgpKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShrZXlQ
YXRoLnR5cGUoKSwgSURCS2V5UGF0aDo6U3RyaW5nVHlwZSk7CisgICAgICAgICAgICBFWFBFQ1Rf
RVEodGVzdENhc2VzW2ldLCBrZXlQYXRoLnN0cmluZygpKTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICB7CisgICAgICAgIFZlY3RvcjxjaGFyPiB2OworICAgICAgICB2LmFwcGVuZChrSURCS2V5UGF0
aFR5cGVDb2RlZEJ5dGUxKTsKKyAgICAgICAgdi5hcHBlbmQoa0lEQktleVBhdGhUeXBlQ29kZWRC
eXRlMik7CisgICAgICAgIHYuYXBwZW5kKElEQktleVBhdGg6Ok51bGxUeXBlKTsKKyAgICAgICAg
SURCS2V5UGF0aCBrZXlQYXRoID0gZGVjb2RlSURCS2V5UGF0aCh2LmRhdGEoKSwgdi5kYXRhKCkg
KyB2LnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUShrZXlQYXRoLnR5cGUoKSwgSURCS2V5UGF0
aDo6TnVsbFR5cGUpOworICAgICAgICBFWFBFQ1RfVFJVRShrZXlQYXRoLmlzTnVsbCgpKTsKKyAg
ICB9CisgICAgeworICAgICAgICBWZWN0b3I8U3RyaW5nPiB0ZXN0Q2FzZXM7CisgICAgICAgIHRl
c3RDYXNlcy5hcHBlbmQoIiIpOworICAgICAgICB0ZXN0Q2FzZXMuYXBwZW5kKCJmb28iKTsKKyAg
ICAgICAgdGVzdENhc2VzLmFwcGVuZCgiZm9vLmJhciIpOworCisgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgdGVzdENhc2VzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBWZWN0b3I8
Y2hhcj4gdjsKKyAgICAgICAgICAgIHYuYXBwZW5kKGtJREJLZXlQYXRoVHlwZUNvZGVkQnl0ZTEp
OworICAgICAgICAgICAgdi5hcHBlbmQoa0lEQktleVBhdGhUeXBlQ29kZWRCeXRlMik7CisgICAg
ICAgICAgICB2LmFwcGVuZChJREJLZXlQYXRoOjpTdHJpbmdUeXBlKTsKKyAgICAgICAgICAgIHYu
YXBwZW5kKGVuY29kZVN0cmluZ1dpdGhMZW5ndGgodGVzdENhc2VzW2ldKSk7CisgICAgICAgICAg
ICBJREJLZXlQYXRoIGtleVBhdGggPSBkZWNvZGVJREJLZXlQYXRoKHYuZGF0YSgpLCB2LmRhdGEo
KSArIHYuc2l6ZSgpKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShrZXlQYXRoLnR5cGUoKSwgSURC
S2V5UGF0aDo6U3RyaW5nVHlwZSk7CisgICAgICAgICAgICBFWFBFQ1RfRVEodGVzdENhc2VzW2ld
LCBrZXlQYXRoLnN0cmluZygpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICB7CisgICAgICAgIFZl
Y3RvcjxTdHJpbmc+IHRlc3RDYXNlOworICAgICAgICB0ZXN0Q2FzZS5hcHBlbmQoIiIpOworICAg
ICAgICB0ZXN0Q2FzZS5hcHBlbmQoImZvbyIpOworICAgICAgICB0ZXN0Q2FzZS5hcHBlbmQoImZv
by5iYXIiKTsKKworICAgICAgICBWZWN0b3I8Y2hhcj4gdjsKKyAgICAgICAgdi5hcHBlbmQoa0lE
QktleVBhdGhUeXBlQ29kZWRCeXRlMSk7CisgICAgICAgIHYuYXBwZW5kKGtJREJLZXlQYXRoVHlw
ZUNvZGVkQnl0ZTIpOworICAgICAgICB2LmFwcGVuZChJREJLZXlQYXRoOjpBcnJheVR5cGUpOwor
ICAgICAgICB2LmFwcGVuZChlbmNvZGVWYXJJbnQodGVzdENhc2Uuc2l6ZSgpKSk7CisgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdGVzdENhc2Uuc2l6ZSgpOyArK2kpCisgICAgICAgICAg
ICB2LmFwcGVuZChlbmNvZGVTdHJpbmdXaXRoTGVuZ3RoKHRlc3RDYXNlW2ldKSk7CisgICAgICAg
IElEQktleVBhdGgga2V5UGF0aCA9IGRlY29kZUlEQktleVBhdGgodi5kYXRhKCksIHYuZGF0YSgp
ICsgdi5zaXplKCkpOworICAgICAgICBFWFBFQ1RfRVEoa2V5UGF0aC50eXBlKCksIElEQktleVBh
dGg6OkFycmF5VHlwZSk7CisgICAgICAgIEVYUEVDVF9FUShrZXlQYXRoLmFycmF5KCkuc2l6ZSgp
LCB0ZXN0Q2FzZS5zaXplKCkpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRlc3RD
YXNlLnNpemUoKTsgKytpKQorICAgICAgICAgICAgRVhQRUNUX0VRKGtleVBhdGguYXJyYXkoKVtp
XSwgdGVzdENhc2VbaV0pOworICAgIH0KK30KKworCiBURVNUKElEQkxldmVsREJDb2RpbmdUZXN0
LCBFeHRyYWN0QW5kQ29tcGFyZUlEQktleXMpCiB7CiAgICAgVmVjdG9yPFJlZlB0cjxJREJLZXk+
ID4ga2V5czsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCBjOTA5YTI4M2NmMWM1OTg2N2YwZGJlMWRjODYxYTA3N2E2YTgzZjVk
Li41ZjU2MjY4ZTg2MzgyMTIwYTlkOTA3NjMzNzVjODE4NDM4ZThlYjY0IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTItMDUtMDcgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4K
KworICAgICAgICBJbmRleGVkREI6IFN0b3JlIGtleSBwYXRocyBpbiBJREJLZXlQYXRoIHR5cGUg
aW5zdGVhZCBvZiBTdHJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg1Mjk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWJhc2ljcy1leHBlY3RlZC50eHQ6
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleXBhdGgtYmFzaWNzLmpz
OgorCiAyMDEyLTA1LTA3ICBEb21pbmlrIFLDtnR0c2NoZXMgIDxkb21pbmlrLnJvdHRzY2hlc0Bs
aW51eC5pbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF1bRFJUXSBHYXJkZW5pbmcgY3VycmVudCBJ
TUFHRSBmYWlsdXJlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
a2V5cGF0aC1iYXNpY3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIva2V5cGF0aC1iYXNpY3MtZXhwZWN0ZWQudHh0CmluZGV4IGIzMDgxZDI4NWQ0MjRiN2JmZmVk
MDZiZTVkZGUzZTY2MmRhYjQ4MTEuLjg2Mjk0NjM4OTRhODE4Y2U3OWYwN2IxOWQwNTAxNzg0MzJm
ZjFhY2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgt
YmFzaWNzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9r
ZXlwYXRoLWJhc2ljcy1leHBlY3RlZC50eHQKQEAgLTksNDAgKzksMzMgQEAgaW5kZXhlZERCLm9w
ZW4obmFtZSkKIGRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAogcmVxdWVzdCA9IGRiLnNldFZlcnNp
b24oJzEnKQogRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KLWdsb2JhbEtleVBhdGggPSAnbnVs
bCcKLWRiLmNyZWF0ZU9iamVjdFN0b3JlKCduYW1lJywge2tleVBhdGg6IGdsb2JhbEtleVBhdGh9
KQotRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KLWdsb2JhbEtleVBhdGggPSAndW5kZWZpbmVk
JwotZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ25hbWUnLCB7a2V5UGF0aDogZ2xvYmFsS2V5UGF0aH0p
Ci1EZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgotZ2xvYmFsS2V5UGF0aCA9ICcnCi1kYi5jcmVh
dGVPYmplY3RTdG9yZSgnbmFtZScsIHtrZXlQYXRoOiBnbG9iYWxLZXlQYXRofSkKLURlbGV0ZWQg
YWxsIG9iamVjdCBzdG9yZXMuCi1nbG9iYWxLZXlQYXRoID0gJ2ZvbycKLWRiLmNyZWF0ZU9iamVj
dFN0b3JlKCduYW1lJywge2tleVBhdGg6IGdsb2JhbEtleVBhdGh9KQotRGVsZXRlZCBhbGwgb2Jq
ZWN0IHN0b3Jlcy4KLWdsb2JhbEtleVBhdGggPSAnZm9vLmJhci5iYXonCi1kYi5jcmVhdGVPYmpl
Y3RTdG9yZSgnbmFtZScsIHtrZXlQYXRoOiBnbG9iYWxLZXlQYXRofSkKLURlbGV0ZWQgYWxsIG9i
amVjdCBzdG9yZXMuCi1nbG9iYWxLZXlQYXRoID0gJ251bGwnCi1zdG9yZSA9IGRiLmNyZWF0ZU9i
amVjdFN0b3JlKCdzdG9yZU5hbWUnKQotc3RvcmUuY3JlYXRlSW5kZXgoJ25hbWUnLCBnbG9iYWxL
ZXlQYXRoKQotRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KLWdsb2JhbEtleVBhdGggPSAndW5k
ZWZpbmVkJwotc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJykKLXN0b3Jl
LmNyZWF0ZUluZGV4KCduYW1lJywgZ2xvYmFsS2V5UGF0aCkKLURlbGV0ZWQgYWxsIG9iamVjdCBz
dG9yZXMuCi1nbG9iYWxLZXlQYXRoID0gJycKLXN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUo
J3N0b3JlTmFtZScpCi1zdG9yZS5jcmVhdGVJbmRleCgnbmFtZScsIGdsb2JhbEtleVBhdGgpCi1E
ZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgotZ2xvYmFsS2V5UGF0aCA9ICdmb28nCi1zdG9yZSA9
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKQotc3RvcmUuY3JlYXRlSW5kZXgoJ25h
bWUnLCBnbG9iYWxLZXlQYXRoKQotRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KLWdsb2JhbEtl
eVBhdGggPSAnZm9vLmJhci5iYXonCi1zdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9y
ZU5hbWUnKQotc3RvcmUuY3JlYXRlSW5kZXgoJ25hbWUnLCBnbG9iYWxLZXlQYXRoKQorc3RvcmUg
PSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnbmFtZScpCitQQVNTIHN0b3JlLmtleVBhdGggaXMgbnVs
bAorRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KK3N0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ25hbWUnLCB7a2V5UGF0aDogbnVsbH0pCitQQVNTIHN0b3JlLmtleVBhdGggaXMgbnVsbAor
aW5kZXggPSBzdG9yZS5jcmVhdGVJbmRleCgnbmFtZScsIG51bGwpCitQQVNTIGluZGV4LmtleVBh
dGggaXMgJ251bGwnCitEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgorc3RvcmUgPSBkYi5jcmVh
dGVPYmplY3RTdG9yZSgnbmFtZScsIHtrZXlQYXRoOiB1bmRlZmluZWR9KQorUEFTUyBzdG9yZS5r
ZXlQYXRoIGlzIG51bGwKK2luZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ25hbWUnLCB1bmRlZmlu
ZWQpCitQQVNTIGluZGV4LmtleVBhdGggaXMgJ3VuZGVmaW5lZCcKK0RlbGV0ZWQgYWxsIG9iamVj
dCBzdG9yZXMuCitzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCduYW1lJywge2tleVBhdGg6
ICcnfSkKK1BBU1Mgc3RvcmUua2V5UGF0aCBpcyAnJworaW5kZXggPSBzdG9yZS5jcmVhdGVJbmRl
eCgnbmFtZScsICcnKQorUEFTUyBpbmRleC5rZXlQYXRoIGlzICcnCitEZWxldGVkIGFsbCBvYmpl
Y3Qgc3RvcmVzLgorc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnbmFtZScsIHtrZXlQYXRo
OiAnZm9vJ30pCitQQVNTIHN0b3JlLmtleVBhdGggaXMgJ2ZvbycKK2luZGV4ID0gc3RvcmUuY3Jl
YXRlSW5kZXgoJ25hbWUnLCAnZm9vJykKK1BBU1MgaW5kZXgua2V5UGF0aCBpcyAnZm9vJworRGVs
ZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KK3N0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ25h
bWUnLCB7a2V5UGF0aDogJ2Zvby5iYXIuYmF6J30pCitQQVNTIHN0b3JlLmtleVBhdGggaXMgJ2Zv
by5iYXIuYmF6JworaW5kZXggPSBzdG9yZS5jcmVhdGVJbmRleCgnbmFtZScsICdmb28uYmFyLmJh
eicpCitQQVNTIGluZGV4LmtleVBhdGggaXMgJ2Zvby5iYXIuYmF6JwogRGVsZXRlZCBhbGwgb2Jq
ZWN0IHN0b3Jlcy4KIERlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCiBnbG9iYWxLZXlQYXRoID0g
J1tdJwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L2tleXBhdGgtYmFzaWNzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3Vy
Y2VzL2tleXBhdGgtYmFzaWNzLmpzCmluZGV4IGIyNWM3MzFlOGE1ODJhYWY1N2U2NDAwOGEwZjVl
NTljMmZjMzU5YTEuLmU2YjI2MDY0YzEwMzAyNDYxNTJhYWY3YzE3NWU1MTZmNDQ0MTM4NTEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9rZXlwYXRo
LWJhc2ljcy5qcworKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
a2V5cGF0aC1iYXNpY3MuanMKQEAgLTI3LDI4ICsyNywyMyBAQCBmdW5jdGlvbiB0ZXN0VmFsaWRL
ZXlQYXRocygpCiB7CiAgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKIAotICAgIHRlc3RL
ZXlQYXRocyA9IFtudWxsLCB1bmRlZmluZWQsICcnXTsKLSAgICB0ZXN0S2V5UGF0aHMuZm9yRWFj
aChmdW5jdGlvbiAoa2V5UGF0aCkgewotICAgICAgICBnbG9iYWxLZXlQYXRoID0ga2V5UGF0aDsK
LSAgICAgICAgZGVidWcoImdsb2JhbEtleVBhdGggPSAnIiArIGdsb2JhbEtleVBhdGggKyAiJyIp
OwotICAgICAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnbmFtZScsIHtrZXlQ
YXRoOiBnbG9iYWxLZXlQYXRofSkiKTsKLSAgICAgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRi
KTsKLSAgICB9KTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCduYW1lJykiKTsKKyAgICBzaG91bGRCZU51bGwoInN0b3JlLmtleVBhdGgiKTsKKyAgICBkZWxl
dGVBbGxPYmplY3RTdG9yZXMoZGIpOwogCi0gICAgdGVzdEtleVBhdGhzID0gWydmb28nLCAnZm9v
LmJhci5iYXonXTsKLSAgICB0ZXN0S2V5UGF0aHMuZm9yRWFjaChmdW5jdGlvbiAoa2V5UGF0aCkg
ewotICAgICAgICBnbG9iYWxLZXlQYXRoID0ga2V5UGF0aDsKLSAgICAgICAgZGVidWcoImdsb2Jh
bEtleVBhdGggPSAnIiArIGdsb2JhbEtleVBhdGggKyAiJyIpOwotICAgICAgICBldmFsQW5kTG9n
KCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnbmFtZScsIHtrZXlQYXRoOiBnbG9iYWxLZXlQYXRofSki
KTsKLSAgICAgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLSAgICB9KTsKKyAgICB0ZXN0
S2V5UGF0aHMgPSBbCisgICAgICAgIHsga2V5UGF0aDogIm51bGwiLCBzdG9yZUV4cGVjdGVkOiAi
bnVsbCIsIGluZGV4RXhwZWN0ZWQ6ICInbnVsbCciIH0sCisgICAgICAgIHsga2V5UGF0aDogInVu
ZGVmaW5lZCIsIHN0b3JlRXhwZWN0ZWQ6ICJudWxsIiwgaW5kZXhFeHBlY3RlZDogIid1bmRlZmlu
ZWQnIiB9LAorICAgICAgICB7IGtleVBhdGg6ICInJyIsIHN0b3JlRXhwZWN0ZWQ6ICInJyIsIGlu
ZGV4RXhwZWN0ZWQ6ICInJyIgfSwKKyAgICAgICAgeyBrZXlQYXRoOiAiJ2ZvbyciLCBzdG9yZUV4
cGVjdGVkOiAiJ2ZvbyciLCBpbmRleEV4cGVjdGVkOiAiJ2ZvbyciIH0sCisgICAgICAgIHsga2V5
UGF0aDogIidmb28uYmFyLmJheiciLCBzdG9yZUV4cGVjdGVkOiAiJ2Zvby5iYXIuYmF6JyIsIGlu
ZGV4RXhwZWN0ZWQ6ICInZm9vLmJhci5iYXonIiB9CisgICAgXTsKIAotICAgIHRlc3RLZXlQYXRo
cyA9IFtudWxsLCB1bmRlZmluZWQsICcnLCAnZm9vJywgJ2Zvby5iYXIuYmF6J107Ci0gICAgdGVz
dEtleVBhdGhzLmZvckVhY2goZnVuY3Rpb24gKGtleVBhdGgpIHsKLSAgICAgICAgZ2xvYmFsS2V5
UGF0aCA9IGtleVBhdGg7Ci0gICAgICAgIGRlYnVnKCJnbG9iYWxLZXlQYXRoID0gJyIgKyBnbG9i
YWxLZXlQYXRoICsgIiciKTsKLSAgICAgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRi
LmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwotICAgICAgICBldmFsQW5kTG9nKCJz
dG9yZS5jcmVhdGVJbmRleCgnbmFtZScsIGdsb2JhbEtleVBhdGgpIik7CisgICAgdGVzdEtleVBh
dGhzLmZvckVhY2goZnVuY3Rpb24gKHRlc3RDYXNlKSB7CisgICAgICAgIGV2YWxBbmRMb2coInN0
b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ25hbWUnLCB7a2V5UGF0aDogIiArIHRlc3RDYXNl
LmtleVBhdGggKyAifSkiKTsKKyAgICAgICAgc2hvdWxkQmUoInN0b3JlLmtleVBhdGgiLCB0ZXN0
Q2FzZS5zdG9yZUV4cGVjdGVkKTsKKyAgICAgICAgZXZhbEFuZExvZygiaW5kZXggPSBzdG9yZS5j
cmVhdGVJbmRleCgnbmFtZScsICIgKyB0ZXN0Q2FzZS5rZXlQYXRoICsgIikiKTsKKyAgICAgICAg
c2hvdWxkQmUoImluZGV4LmtleVBhdGgiLCB0ZXN0Q2FzZS5pbmRleEV4cGVjdGVkKTsKICAgICAg
ICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKICAgICB9KTsKIApAQCAtODcsNCArODIsNCBA
QCBmdW5jdGlvbiB0ZXN0SW52YWxpZEtleVBhdGhzKCkKICAgICBmaW5pc2hKU1Rlc3QoKTsKIH0K
IAotdGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK3Rlc3QoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143086</attachid>
            <date>2012-05-21 13:21:58 -0700</date>
            <delta_ts>2012-05-21 13:48:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85298-20120521132157.patch</filename>
            <type>text/plain</type>
            <size>118553</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3NzcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzFiZjI4NjFjNGEzZWM0
Y2EyZDRmNWEzMDkzYzQ0NTRkYjkyZmYyZC4uZmZhMTdmYjdlYjZhNGQ2MDFhMmZkNzY1YjU1MjAz
MmVjMTU4YTEzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOCBAQAorMjAxMi0wNS0wNyAgSm9z
aHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogU3Rv
cmUga2V5IHBhdGhzIGluIElEQktleVBhdGggdHlwZSBpbnN0ZWFkIG9mIFN0cmluZworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODUyOTgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNaWdyYXRlIGZyb20gc3Rv
cmluZyBrZXkgcGF0aHMgYXMgKG51bGxhYmxlKSBTdHJpbmdzIHRvIGEgZGVkaWNhdGVkIElEQktl
eVBhdGgKKyAgICAgICAgdHlwZS4gUHJlcCB3b3JrIGZvciBzdXBwb3J0aW5nIGFycmF5LXR5cGUg
a2V5IHBhdGhzOiBodHRwOi8vd2Via2l0Lm9yZy9iLzg0MjA3CisKKyAgICAgICAgT25seSBmdW5j
dGlvbmFsIGNoYW5nZSBpcyBoYW5kbGluZyBvZiBudWxsL3VuZGVmaW5lZCBwYXJhbWV0ZXJzIGZv
ciBrZXkgcGF0aHMsCisgICAgICAgIHRvIGFsaWduIHdpdGggSURCIHNwZWMsIGNvdmVyZWQgYnkg
bGF5b3V0IHRlc3QuCisKKyAgICAgICAgVGVzdDogc3RvcmFnZS9pbmRleGVkZGIva2V5cGF0aC1i
YXNpY3MuaHRtbAorICAgICAgICBUZXN0OiBXZWJLaXQvY2hyb21pdW0vSURCTGV2ZWxEQkNvZGlu
Z1Rlc3QuY3BwCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJBbnkuY3BwOiBBbGxv
dyBJREJBbnkgdG8geWllbGQgRE9NU3RyaW5ncy4KKyAgICAgICAgKFdlYkNvcmU6OklEQkFueTo6
Y3JlYXRlU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURC
QW55OjpzdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SURCQW55OjpzZXQpOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5oOgorICAgICAgICAoSURCQW55KToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaDogU3dpdGNoIGZyb20gU3RyaW5n
IHRvIElEQktleVBhdGguCisgICAgICAgIChJREJCYWNraW5nU3RvcmUpOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcDogU3dpdGNoIGZyb20gU3RyaW5nIHRvIElE
QktleVBhdGguCisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3Rv
cmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwu
Y3BwOiBTd2l0Y2ggZnJvbSBTdHJpbmcgdG8gSURCS2V5UGF0aC4KKyAgICAgICAgKFdlYkNvcmU6
OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmxvYWRPYmplY3RTdG9yZXMpOgorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaDogU3dpdGNoIGZy
b20gU3RyaW5nIHRvIElEQktleVBhdGguCisgICAgICAgIChJREJEYXRhYmFzZUJhY2tlbmRJbXBs
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZh
Y2UuaDogU3dpdGNoIGZyb20gU3RyaW5nIHRvIElEQktleVBhdGguCisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZSk6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvSURCSW5kZXguaDogU3dpdGNoIGZyb20gU3RyaW5nIHRvIElEQkFueSAo
dmlhIElEQktleVBhdGgpLgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6OmtleVBhdGgpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmlkbDogU3dpdGNoIGZyb20gRE9N
U3RyaW5nPyB0byBJREJBbnkuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhC
YWNrZW5kSW1wbC5jcHA6IFN3aXRjaCBmcm9tIFN0cmluZyB0byBJREJLZXlQYXRoLgorICAgICAg
ICAoV2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW1wbDo6SURCSW5kZXhCYWNrZW5kSW1wbCk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5oOiBTd2l0Y2gg
ZnJvbSBTdHJpbmcgdG8gSURCS2V5UGF0aC4KKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFj
a2VuZEltcGw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleEJhY2tlbmRJbXBs
OjprZXlQYXRoKToKKyAgICAgICAgKElEQkluZGV4QmFja2VuZEltcGwpOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEludGVyZmFjZS5oOiBTd2l0Y2ggZnJvbSBT
dHJpbmcgdG8gSURCS2V5UGF0aC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSURCSW5k
ZXhCYWNrZW5kSW50ZXJmYWNlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQ
YXRoLmNwcDogTm9uLXRyaXZpYWwgbWV0aG9kIGltcGxlbWVudGF0aW9ucy4KKyAgICAgICAgKFdl
YkNvcmU6OklEQktleVBhdGg6OmlzVmFsaWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJLZXlQYXRoOjpvcGVyYXRvciBQYXNzUmVmUHRyPElEQkFueT4pOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGguaDogSW50cm9kdWNlIElEQktleVBh
dGggdHlwZS4KKyAgICAgICAgKElEQktleVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5
UGF0aDo6SURCS2V5UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlQYXRoOjp0eXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQktleVBhdGg6OmFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6
OklEQktleVBhdGg6OnN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlQYXRoOjppc051
bGwpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
S2V5UGF0aEJhY2tlbmRJbXBsLmNwcDogU3dpdGNoIGZyb20gU3RyaW5nIHRvIElEQktleVBhdGgu
CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlQYXRoQmFja2VuZEltcGw6OmNyZWF0ZUlEQktleXNG
cm9tU2VyaWFsaXplZFZhbHVlc0FuZEtleVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5
UGF0aEJhY2tlbmRJbXBsOjppbmplY3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRoQmFja2VuZEltcGwuaDogU3dpdGNoIGZy
b20gU3RyaW5nIHRvIElEQktleVBhdGguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKElE
QktleVBhdGhCYWNrZW5kSW1wbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2
ZWxEQkJhY2tpbmdTdG9yZS5jcHA6IFN3aXRjaCBmcm9tIFN0cmluZyB0byBJREJLZXlQYXRoLCB3
aXRoIGJhY2stY29tcGF0LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpw
dXRJREJLZXlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6
OmdldE9iamVjdFN0b3Jlcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0
b3JlOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFj
a2luZ1N0b3JlOjpnZXRJbmRleGVzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNr
aW5nU3RvcmU6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJM
ZXZlbERCQmFja2luZ1N0b3JlLmg6CisgICAgICAgIChJREJMZXZlbERCQmFja2luZ1N0b3JlKToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmNwcDogTmV3IGNv
ZGluZyBzY2hlbWUgZm9yIGtleSBwYXRocyAod2l0aCBiYWNrLWNvbXBhdCkuCisgICAgICAgIChJ
REJMZXZlbERCQ29kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJDb2Rpbmc6OmVu
Y29kZUlEQktleVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkNvZGluZzo6ZGVj
b2RlSURCS2V5UGF0aCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNv
ZGluZy5oOiBBZGQga2V5LXBhdGgtc3BlY2lmaWMgbWV0aG9kcy4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoSURCTGV2ZWxEQkNvZGluZyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCT2JqZWN0U3RvcmUuY3BwOiBTd2l0Y2ggZnJvbSBTdHJpbmcgdG8gSURCS2V5UGF0aC4K
KyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjprZXlQYXRoKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oOiBTd2l0Y2ggZnJv
bSBTdHJpbmcgdG8gSURCQW55ICh2aWEgSURCS2V5UGF0aCkuCisgICAgICAgIChJREJPYmplY3RT
dG9yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaWRsOiBT
d2l0Y2ggZnJvbSBET01TdHJpbmc/IHRvIElEQkFueS4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcDogU3dpdGNoIGZyb20gU3RyaW5nIHRv
IElEQktleVBhdGguCisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
OjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OmZldGNoS2V5
RnJvbUtleVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6aW5qZWN0S2V5SW50b0tleVBhdGgpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y3JlYXRlSW5kZXgp
OgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6bG9hZEluZGV4
ZXMpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZElt
cGwuaDogU3dpdGNoIGZyb20gU3RyaW5nIHRvIElEQktleVBhdGguCisgICAgICAgIChXZWJDb3Jl
OjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6a2V5UGF0aCk6CisgICAgICAgIChJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RT
dG9yZUJhY2tlbmRJbnRlcmZhY2UuaDogU3dpdGNoIGZyb20gU3RyaW5nIHRvIElEQktleVBhdGgu
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKElEQk9iamVjdFN0b3JlQmFja2VuZEludGVy
ZmFjZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvRGljdGlvbmFyeS5jcHA6IEFkZCBnZXR0ZXIg
Zm9yIERPTVN0cmluZ1tdIChpLmUuIFZlY3RvcjxTdHJpbmc+KQorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpEaWN0aW9uYXJ5OjpnZXQpOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L0RpY3Rpb25hcnkuaDoKKyAgICAgICAgKERpY3Rpb25hcnkpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwOiBTd2l0Y2ggZnJvbSBTdHJpbmcgdG8gSURC
S2V5UGF0aC4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUlEQktleUZyb21TZXJpYWxpemVkVmFs
dWVBbmRLZXlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OmluamVjdElEQktleUludG9TZXJpYWxp
emVkVmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMuaDog
U3dpdGNoIGZyb20gU3RyaW5nIHRvIElEQktleVBhdGguCisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhJREJBbnlDdXN0b20uY3BwOiBTdXBwb3J0IFN0
cmluZy9ET01TdHJpbmcuCisgICAgICAgIChXZWJDb3JlOjp0b1Y4KToKKyAgICAgICAgKiBkb20v
RE9NU3RyaW5nTGlzdC5oOiBBbGxvdyBlYXN5IChjb25zdCkgYWNjZXNzIHRvIHN0cmluZ3MuCisg
ICAgICAgIChXZWJDb3JlOjpET01TdHJpbmdMaXN0OjpvcGVyYXRvciBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYpOgorICAgICAgICAoRE9NU3RyaW5nTGlzdCk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckluZGV4ZWREQkFnZW50LmNwcDogVGVtcG9yYXJ5IHNoaW0gZm9yIG5vbi1zdHJpbmdz
OiBzZWUgaHR0cDovL3dlYmtpdC5vcmcvYi84NDMwMworICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0Lmg6IFN3aXRjaCBmcm9tIFN0
cmluZyB0byBJREJLZXlQYXRoLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChQbGF0Zm9y
bVN1cHBvcnQpOgorICAgICAgICAqIHN0b3JhZ2UvY2hyb21pdW0vSURCS2V5UGF0aEJhY2tlbmRJ
bXBsLmNwcDogU3dpdGNoIGZyb20gU3RyaW5nIHRvIElEQktleVBhdGguCisgICAgICAgIChXZWJD
b3JlOjpJREJLZXlQYXRoQmFja2VuZEltcGw6OmNyZWF0ZUlEQktleXNGcm9tU2VyaWFsaXplZFZh
bHVlc0FuZEtleVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5UGF0aEJhY2tlbmRJbXBs
OjppbmplY3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKToKKwogMjAxMi0wNS0yMSAgQ2FpbyBN
YXJjZWxvIGRlIE9saXZlaXJhIEZpbGhvICA8Y2Fpby5vbGl2ZWlyYUBvcGVuYm9zc2Eub3JnPgog
CiAgICAgICAgIE1vdmUgc2V0RWRpdGluZ0JlaGF2aW9yKCkgZnJvbSBsYXlvdXRUZXN0Q29udHJv
bGxlciB0byB3aW5kb3cuaW50ZXJuYWxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDg0
MWU2Y2I2NjNkYWM2MTIwOTBjYTY0OWE3NzZhOTc0OGIxYjNjMzQuLmRhNzgxNWQ0YzkzN2E5ZmNm
N2ZmOTk2NzRiYTczMGM3OTU1MTUyY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNzUgQEAKKzIwMTItMDUtMDcgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBJbmRleGVkREI6IFN0b3JlIGtleSBwYXRocyBpbiBJREJLZXlQYXRoIHR5
cGUgaW5zdGVhZCBvZiBTdHJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTg1Mjk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTm8gZnVuY3Rpb25hbCBjaGFuZ2VzLCBqdXN0IGZpbmlzaCBtaWdyYXRpb24g
ZnJvbSBTdHJpbmcgdG8gSURCS2V5UGF0aAorICAgICAgICBmb3Igc3RvcmluZyBrZXkgcGF0aHMs
IGZvciBldmVudHVhbCBhcnJheSBzdXBwb3J0IGh0dHA6Ly93ZWJraXQub3JnL2IvODQyMDcKKwor
ICAgICAgICAqIHB1YmxpYy9XZWJJREJEYXRhYmFzZS5oOiBSZW1vdmUgdGVtcG9yYXJ5IG92ZXJs
b2FkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRGF0YWJhc2U6
Om9iamVjdFN0b3JlTmFtZXMpOgorICAgICAgICAqIHB1YmxpYy9XZWJJREJJbmRleC5oOiBSZW1v
dmUgdGVtcG9yYXJ5IG1ldGhvZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSURCSW5kZXg6OmtleVBh
dGgpOgorICAgICAgICAqIHB1YmxpYy9XZWJJREJLZXlQYXRoLmg6IFJlbW92ZSBvYnNvbGV0ZSBt
ZXRob2RzLCB3cmFwIFdlYkNvcmU6OklEQktleVBhdGgKKyAgICAgICAgKFdlYklEQktleVBhdGgp
OgorICAgICAgICAoV2ViS2l0OjpXZWJJREJLZXlQYXRoOjpXZWJJREJLZXlQYXRoKToKKyAgICAg
ICAgKiBwdWJsaWMvV2ViSURCT2JqZWN0U3RvcmUuaDogUmVtb3ZlIHRlbXBvcmFyeSBtZXRob2Qg
YW5kIG92ZXJsb2FkLgorICAgICAgICAoV2ViS2l0OjpXZWJJREJPYmplY3RTdG9yZTo6a2V5UGF0
aCk6CisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oOiBS
ZW1vdmUgdGVtcG9yYXJ5IG92ZXJsb2Fkcy4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICog
c3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwOiBXZWJJREJLZXlQYXRoIHZzLiBJREJLZXlQYXRo
IGVudW1zLgorICAgICAgICAqIHNyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHA6IFN3aXRj
aCBmcm9tIFN0cmluZyB0byBJREJLZXlQYXRoLgorICAgICAgICAoV2ViS2l0OjpJREJEYXRhYmFz
ZUJhY2tlbmRQcm94eTo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAqIHNyYy9JREJEYXRh
YmFzZUJhY2tlbmRQcm94eS5oOiBTd2l0Y2ggZnJvbSBTdHJpbmcgdG8gSURCS2V5UGF0aC4KKyAg
ICAgICAgKElEQkRhdGFiYXNlQmFja2VuZFByb3h5KToKKyAgICAgICAgKiBzcmMvSURCSW5kZXhC
YWNrZW5kUHJveHkuY3BwOiBTd2l0Y2ggZnJvbSBTdHJpbmcgdG8gSURCS2V5UGF0aC4KKyAgICAg
ICAgKFdlYktpdDo6SURCSW5kZXhCYWNrZW5kUHJveHk6OmtleVBhdGgpOgorICAgICAgICAqIHNy
Yy9JREJJbmRleEJhY2tlbmRQcm94eS5oOiBTd2l0Y2ggZnJvbSBTdHJpbmcgdG8gSURCS2V5UGF0
aC4KKyAgICAgICAgKElEQkluZGV4QmFja2VuZFByb3h5KToKKyAgICAgICAgKiBzcmMvSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kUHJveHkuY3BwOiBTd2l0Y2ggZnJvbSBTdHJpbmcgdG8gSURCS2V5UGF0
aC4KKyAgICAgICAgKFdlYktpdDo6SURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OmtleVBhdGgp
OgorICAgICAgICAoV2ViS2l0OjpJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eTo6Y3JlYXRlSW5k
ZXgpOgorICAgICAgICAqIHNyYy9JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5oOiBTd2l0Y2gg
ZnJvbSBTdHJpbmcgdG8gSURCS2V5UGF0aC4KKyAgICAgICAgKElEQk9iamVjdFN0b3JlQmFja2Vu
ZFByb3h5KToKKyAgICAgICAgKiBzcmMvUGxhdGZvcm1TdXBwb3J0LmNwcDogU3dpdGNoIGZyb20g
U3RyaW5nIHRvIElEQktleVBhdGguCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVN1cHBvcnQ6
OmNyZWF0ZUlEQktleXNGcm9tU2VyaWFsaXplZFZhbHVlc0FuZEtleVBhdGgpOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1TdXBwb3J0OjppbmplY3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVl
KToKKyAgICAgICAgKiBzcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcDogU3dpdGNoIGZyb20gU3Ry
aW5nIHRvIElEQktleVBhdGguCisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlSW1wbDo6
Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAqIHNyYy9XZWJJREJEYXRhYmFzZUltcGwuaDog
UmVtb3ZlIHRlbXBvcmFyeSBvdmVybG9hZC4KKyAgICAgICAgKFdlYklEQkRhdGFiYXNlSW1wbCk6
CisgICAgICAgICogc3JjL1dlYklEQkluZGV4SW1wbC5jcHA6IFJlbW92ZSB0ZW1wb3JhcnkgbWV0
aG9kLgorICAgICAgICAqIHNyYy9XZWJJREJJbmRleEltcGwuaDogUmVtb3ZlIHRlbXBvcmFyeSBt
ZXRob2QuCisgICAgICAgIChXZWJJREJJbmRleEltcGwpOgorICAgICAgICAqIHNyYy9XZWJJREJL
ZXlQYXRoLmNwcDogUmVtb3ZlIG1vc3QgbG9naWM7IGp1c3QgYSB3cmFwcGVyIGZvciBXZWJDb3Jl
OjpJREJLZXlQYXRoLgorICAgICAgICAoV2ViS2l0OjpXZWJJREJLZXlQYXRoOjp+V2ViSURCS2V5
UGF0aCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQktleVBhdGg6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYklEQktleVBhdGg6OmNyZWF0ZU51bGwpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJLZXlQYXRoOjppc1ZhbGlkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCS2V5UGF0aDo6
dHlwZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJLZXlQYXRo
OjphcnJheSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQktleVBhdGg6OnN0cmluZyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYklEQktleVBhdGg6OldlYklEQktleVBhdGgpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJREJLZXlQYXRoOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJL
ZXlQYXRoOjpvcGVyYXRvciBjb25zdCBXZWJDb3JlOjpJREJLZXlQYXRoJik6CisgICAgICAgICog
c3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5jcHA6IFJlbW92ZSB0ZW1wb3JhcnkgbWV0aG9kIGFu
ZCBvdmVybG9hZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSURCT2JqZWN0U3RvcmVJbXBsOjprZXlQ
YXRoKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCT2JqZWN0U3RvcmVJbXBsOjpjcmVhdGVJbmRl
eCk6CisgICAgICAgICogc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5oOiBSZW1vdmUgdGVtcG9y
YXJ5IG1ldGhvZCBhbmQgb3ZlcmxvYWQuCisgICAgICAgIChXZWJJREJPYmplY3RTdG9yZUltcGwp
OgorICAgICAgICAqIHRlc3RzL0lEQkJpbmRpbmdVdGlsaXRpZXNUZXN0LmNwcDogVXNlIElEQktl
eVBhdGguCisgICAgICAgIChXZWJDb3JlOjpjaGVja0tleUZyb21WYWx1ZUFuZEtleVBhdGhJbnRl
cm5hbCk6CisgICAgICAgIChXZWJDb3JlOjppbmplY3RLZXkpOgorICAgICAgICAqIHRlc3RzL0lE
QkxldmVsREJDb2RpbmdUZXN0LmNwcDogQWRkZWQgRW5jb2RlSURCS2V5UGF0aCBhbmQgRGVjb2Rl
SURCS2V5UGF0aCB0ZXN0cy4KKyAgICAgICAgKElEQkxldmVsREJDb2Rpbmc6OlRFU1QpOgorICAg
ICAgICAoSURCTGV2ZWxEQkNvZGluZyk6CisgICAgICAgICogdGVzdHMvSURCS2V5UGF0aFRlc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tLZXlQYXRoKTogVGVzdCBJREJLZXlQYXRoIHZh
bGlkaXR5LgorCiAyMDEyLTA1LTIwICBLaW51a28gWWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBDbGVhbnVwOiBSZW1vdmUgV2ViQ29yZTo6cmV2ZWFsRm9sZGVySW5PUygp
IHdoaWNoIGlzIG5vIGxvbmdlciB1c2VkIGFueXdoZXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJBbnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCQW55LmNwcAppbmRleCA1N2E0MDZlMmJiMDdiMGJkNmQyNWRkYmI4MWJj
NjRmZTllYWEwNmFkLi4zMDAyOGNjZmRmY2U5NTk2MDQwYWMwM2VmYTQ5ZmFiMjQwNzAyZTMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJBbnkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5jcHAKQEAgLTQ5LDYg
KzQ5LDEzIEBAIFBhc3NSZWZQdHI8SURCQW55PiBJREJBbnk6OmNyZWF0ZU51bGwoKQogICAgIHJl
dHVybiBpZGJBbnkucmVsZWFzZSgpOwogfQogCitQYXNzUmVmUHRyPElEQkFueT4gSURCQW55Ojpj
cmVhdGVTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBSZWZQdHI8SURCQW55PiBp
ZGJBbnkgPSBhZG9wdFJlZihuZXcgSURCQW55KCkpOworICAgIGlkYkFueS0+c2V0KHZhbHVlKTsK
KyAgICByZXR1cm4gaWRiQW55LnJlbGVhc2UoKTsKK30KKwogSURCQW55OjpJREJBbnkoKQogICAg
IDogbV90eXBlKFVuZGVmaW5lZFR5cGUpCiB7CkBAIC0xMTgsNiArMTI1LDEyIEBAIFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBJREJBbnk6OnNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgp
CiAgICAgcmV0dXJuIG1fc2VyaWFsaXplZFNjcmlwdFZhbHVlOwogfQogCitjb25zdCBTdHJpbmcm
IElEQkFueTo6c3RyaW5nKCkKK3sKKyAgICBBU1NFUlQobV90eXBlID09IFN0cmluZ1R5cGUpOwor
ICAgIHJldHVybiBtX3N0cmluZzsKK30KKwogdm9pZCBJREJBbnk6OnNldE51bGwoKQogewogICAg
IEFTU0VSVChtX3R5cGUgPT0gVW5kZWZpbmVkVHlwZSk7CkBAIC0xOTQsNiArMjA3LDEzIEBAIHZv
aWQgSURCQW55OjpzZXQoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlKQog
ICAgIG1fc2VyaWFsaXplZFNjcmlwdFZhbHVlID0gdmFsdWU7CiB9CiAKK3ZvaWQgSURCQW55Ojpz
ZXQoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBBU1NFUlQobV90eXBlID09IFVuZGVmaW5l
ZFR5cGUpOworICAgIG1fdHlwZSA9IFN0cmluZ1R5cGU7CisgICAgbV9zdHJpbmcgPSB2YWx1ZTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCQW55LmgKaW5kZXggNmJlZGE1ODg4MDg0YmMyMjFhM2QxOGM2MDM2
NDY0NjQyZGNhN2U0Ni4uOTNlYjI0MDFkYWFiOGM4NjY2ZTY4NDY1MDFkNTFiOTEwNjlhYWJkZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmgKQEAgLTI4LDYgKzI4
LDcgQEAKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCisjaW5jbHVkZSAiUGxhdGZv
cm1TdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNDksNiArNTAsNyBAQCBj
bGFzcyBJREJBbnkgOiBwdWJsaWMgUmVmQ291bnRlZDxJREJBbnk+IHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxJREJBbnk+IGNyZWF0ZUludmFsaWQoKTsKICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxJREJBbnk+IGNyZWF0ZU51bGwoKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJB
bnk+IGNyZWF0ZVN0cmluZyhjb25zdCBTdHJpbmcmKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkFueT4gY3JlYXRlKFQqIGlkYk9iamVjdCkKICAg
ICB7CkBAIC03Nyw3ICs3OSw4IEBAIHB1YmxpYzoKICAgICAgICAgSURCS2V5VHlwZSwKICAgICAg
ICAgSURCT2JqZWN0U3RvcmVUeXBlLAogICAgICAgICBJREJUcmFuc2FjdGlvblR5cGUsCi0gICAg
ICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZVR5cGUKKyAgICAgICAgU2VyaWFsaXplZFNjcmlwdFZh
bHVlVHlwZSwKKyAgICAgICAgU3RyaW5nVHlwZSwKICAgICB9OwogCiAgICAgVHlwZSB0eXBlKCkg
Y29uc3QgeyByZXR1cm4gbV90eXBlOyB9CkBAIC05Miw2ICs5NSw3IEBAIHB1YmxpYzoKICAgICBQ
YXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBpZGJPYmplY3RTdG9yZSgpOwogICAgIFBhc3NSZWZQ
dHI8SURCVHJhbnNhY3Rpb24+IGlkYlRyYW5zYWN0aW9uKCk7CiAgICAgUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgpOworICAgIGNvbnN0IFN0
cmluZyYgc3RyaW5nKCk7CiAKICAgICAvLyBTZXQgY2FuIG9ubHkgYmUgY2FsbGVkIG9uY2UuCiAg
ICAgdm9pZCBzZXROdWxsKCk7CkBAIC0xMDUsNiArMTA5LDcgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0KFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+KTsKICAgICB2b2lkIHNldChQYXNzUmVmUHRy
PElEQlRyYW5zYWN0aW9uPik7CiAgICAgdm9pZCBzZXQoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+KTsKKyAgICB2b2lkIHNldChjb25zdCBTdHJpbmcmKTsKIAogcHJpdmF0ZToKICAg
ICBJREJBbnkoKTsKQEAgLTEyMiw2ICsxMjcsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxJREJP
YmplY3RTdG9yZT4gbV9pZGJPYmplY3RTdG9yZTsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+
IG1faWRiVHJhbnNhY3Rpb247CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbV9z
ZXJpYWxpemVkU2NyaXB0VmFsdWU7CisgICAgU3RyaW5nIG1fc3RyaW5nOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJCYWNraW5nU3RvcmUuaAppbmRleCBlN2IyMjIyODE3YmNmN2ZmY2RiN2NkZjQ3NTRkNzRk
ZDQyNDhhY2RiLi5mNzg0MDYyMWI2MWYyYzE0MTg3ODk2NjM2ZDc2NWNjODgyMjlmZDA1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUu
aApAQCAtNTIsOCArNTIsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHVwZGF0ZUlEQkRh
dGFiYXNlTWV0YURhdGEoaW50NjRfdCByb3dJZCwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKSA9IDA7
CiAgICAgdmlydHVhbCBib29sIGRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgbmFtZSkgPSAw
OwogCi0gICAgdmlydHVhbCB2b2lkIGdldE9iamVjdFN0b3JlcyhpbnQ2NF90IGRhdGFiYXNlSWQs
IFZlY3RvcjxpbnQ2NF90PiYgZm91bmRJZHMsIFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzLCBW
ZWN0b3I8U3RyaW5nPiYgZm91bmRLZXlQYXRocywgVmVjdG9yPGJvb2w+JiBmb3VuZEF1dG9JbmNy
ZW1lbnRGbGFncykgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVPYmplY3RTdG9yZShpbnQ2
NF90IGRhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRo
LCBib29sIGF1dG9JbmNyZW1lbnQsIGludDY0X3QmIGFzc2lnbmVkT2JqZWN0U3RvcmVJZCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBnZXRPYmplY3RTdG9yZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBW
ZWN0b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcywgVmVj
dG9yPElEQktleVBhdGg+JiBmb3VuZEtleVBhdGhzLCBWZWN0b3I8Ym9vbD4mIGZvdW5kQXV0b0lu
Y3JlbWVudEZsYWdzKSA9IDA7CisgICAgdmlydHVhbCBib29sIGNyZWF0ZU9iamVjdFN0b3JlKGlu
dDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwg
Ym9vbCBhdXRvSW5jcmVtZW50LCBpbnQ2NF90JiBhc3NpZ25lZE9iamVjdFN0b3JlSWQpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoaW50NjRfdCBkYXRhYmFzZUlkLCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQpID0gMDsKIAogICAgIGNsYXNzIE9iamVjdFN0b3JlUmVjb3Jk
SWRlbnRpZmllciA6IHB1YmxpYyBSZWZDb3VudGVkPE9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmll
cj4gewpAQCAtNzcsOCArNzcsOCBAQCBwdWJsaWM6CiAgICAgfTsKICAgICB2aXJ0dWFsIGJvb2wg
Zm9yRWFjaE9iamVjdFN0b3JlUmVjb3JkKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkLCBPYmplY3RTdG9yZVJlY29yZENhbGxiYWNrJikgPSAwOwogCi0gICAgdmlydHVh
bCB2b2lkIGdldEluZGV4ZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIFZlY3RvcjxpbnQ2NF90PiYgZm91bmRJZHMsIFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVz
LCBWZWN0b3I8U3RyaW5nPiYgZm91bmRLZXlQYXRocywgVmVjdG9yPGJvb2w+JiBmb3VuZFVuaXF1
ZUZsYWdzLCBWZWN0b3I8Ym9vbD4mIGZvdW5kTXVsdGlFbnRyeUZsYWdzKSA9IDA7Ci0gICAgdmly
dHVhbCBib29sIGNyZWF0ZUluZGV4KGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBp
c1VuaXF1ZSwgYm9vbCBpc011bHRpRW50cnksIGludDY0X3QmIGluZGV4SWQpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZ2V0SW5kZXhlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgVmVjdG9yPGludDY0X3Q+JiBmb3VuZElkcywgVmVjdG9yPFN0cmluZz4mIGZvdW5k
TmFtZXMsIFZlY3RvcjxJREJLZXlQYXRoPiYgZm91bmRLZXlQYXRocywgVmVjdG9yPGJvb2w+JiBm
b3VuZFVuaXF1ZUZsYWdzLCBWZWN0b3I8Ym9vbD4mIGZvdW5kTXVsdGlFbnRyeUZsYWdzKSA9IDA7
CisgICAgdmlydHVhbCBib29sIGNyZWF0ZUluZGV4KGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBi
b29sIGlzVW5pcXVlLCBib29sIGlzTXVsdGlFbnRyeSwgaW50NjRfdCYgaW5kZXhJZCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkZWxldGVJbmRleChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHB1
dEluZGV4RGF0YUZvclJlY29yZChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkmLCBjb25zdCBPYmplY3RTdG9yZVJl
Y29yZElkZW50aWZpZXIqKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGRlbGV0ZUluZGV4RGF0YUZv
clJlY29yZChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRf
dCBpbmRleElkLCBjb25zdCBPYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXIqKSA9IDA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKaW5kZXgg
MzA2MGNkYjY5M2I4YmQ2Nzk3OGM3Nzc1YTQ3Y2E4OWFkMzZjZTY5MC4uZWI4ZDg2M2ZiNjk1YWVm
YzU5N2VjYzdjOTRkMTAwMTRkOWRlODZhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcApAQCAtOTIsOSArOTIsMTQgQEAgUGFzc1JlZlB0
cjxJREJPYmplY3RTdG9yZT4gSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0
cmluZyYgbmFtZSwgY28KICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgU3RyaW5nIGtl
eVBhdGg7Ci0gICAgYm9vbCBrZXlQYXRoRXhpc3RzID0gb3B0aW9ucy5nZXRXaXRoVW5kZWZpbmVk
T3JOdWxsQ2hlY2soImtleVBhdGgiLCBrZXlQYXRoKTsKLSAgICBpZiAoa2V5UGF0aEV4aXN0cyAm
JiAhSURCSXNWYWxpZEtleVBhdGgoa2V5UGF0aCkpIHsKKyAgICBJREJLZXlQYXRoIGtleVBhdGg7
CisgICAgaWYgKCFvcHRpb25zLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgU3RyaW5n
IGtleVBhdGhTdHJpbmc7CisgICAgICAgIGlmIChvcHRpb25zLmdldFdpdGhVbmRlZmluZWRPck51
bGxDaGVjaygia2V5UGF0aCIsIGtleVBhdGhTdHJpbmcpKQorICAgICAgICAgICAga2V5UGF0aCA9
IElEQktleVBhdGgoa2V5UGF0aFN0cmluZyk7CisgICAgfQorCisgICAgaWYgKCFrZXlQYXRoLmlz
TnVsbCgpICYmICFrZXlQYXRoLmlzVmFsaWQoKSkgewogICAgICAgICBlYyA9IElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpOT05fVFJBTlNJRU5UX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VC
YWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUJhY2tlbmRJbXBsLmNwcAppbmRleCBiMDViMzI4NjNkMDcyZmI2NTdkY2E5YzhkNjRlMGI4
NTFhZDA5MjQ1Li41OTE5OWZjNjMyYWJmMTVhZjZmODI3NzE1ZGNhMTE3OTQ0MzViNzFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tl
bmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUJhY2tlbmRJbXBsLmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIFBhc3NSZWZQdHI8RE9NU3Ry
aW5nTGlzdD4gSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0
CiAgICAgcmV0dXJuIG9iamVjdFN0b3JlTmFtZXMucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRy
PElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBh
dGgsIGJvb2wgYXV0b0luY3JlbWVudCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0
cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPElEQk9iamVjdFN0
b3JlQmFja2VuZEludGVyZmFjZT4gSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlT2JqZWN0
U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29s
IGF1dG9JbmNyZW1lbnQsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rp
b25QdHIsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIEFTU0VSVCh0cmFuc2FjdGlvblB0ci0+
bW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRSk7CiAKQEAgLTM3Niw3ICsz
NzYsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmxvYWRPYmplY3RTdG9yZXMoKQog
ewogICAgIFZlY3RvcjxpbnQ2NF90PiBpZHM7CiAgICAgVmVjdG9yPFN0cmluZz4gbmFtZXM7Ci0g
ICAgVmVjdG9yPFN0cmluZz4ga2V5UGF0aHM7CisgICAgVmVjdG9yPElEQktleVBhdGg+IGtleVBh
dGhzOwogICAgIFZlY3Rvcjxib29sPiBhdXRvSW5jcmVtZW50RmxhZ3M7CiAgICAgbV9iYWNraW5n
U3RvcmUtPmdldE9iamVjdFN0b3JlcyhtX2lkLCBpZHMsIG5hbWVzLCBrZXlQYXRocywgYXV0b0lu
Y3JlbWVudEZsYWdzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCmluZGV4IDEwODZlYjE2ZWI4N2QxOWYw
MjhlM2Y0YzhjNDdiOTA1ZDg2NzhmMDUuLjMzMThlMmJmMTg0MmZlZjZjMWIzN2Q4MGYyNjBiYjIw
ZTU1MWIzNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgU3RyaW5nIHZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtX3ZlcnNpb247IH0K
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gb2JqZWN0U3RvcmVOYW1lcygp
IGNvbnN0OwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZElu
dGVyZmFjZT4gY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCwgSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBk
ZWxldGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmVyc2lv
bihjb25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbihE
T01TdHJpbmdMaXN0KiBvYmplY3RTdG9yZU5hbWVzLCB1bnNpZ25lZCBzaG9ydCBtb2RlLCBFeGNl
cHRpb25Db2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oCmluZGV4IDU2ZThmMmRiYjY0
MmFhZWIxMTY2ODljNTk5NzQ4MTE0MzQ1NGI2MjkuLmUwNzJhMGYzOTU5ZDcwZDUxYTUwYzI2YjFl
YjIxNTIwYzU5NmViMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oCkBAIC0zOCw2ICsz
OCw3IEBAIGNsYXNzIERPTVN0cmluZ0xpc3Q7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIElEQkNhbGxi
YWNrczsKIGNsYXNzIElEQkRhdGFiYXNlQ2FsbGJhY2tzOworY2xhc3MgSURCS2V5UGF0aDsKIGNs
YXNzIElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZTsKIGNsYXNzIElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZTsKIApAQCAtNTUsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBTdHJpbmcgdmVyc2lvbigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RE9N
U3RyaW5nTGlzdD4gb2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZU9iamVjdFN0
b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9J
bmNyZW1lbnQsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUm
KSA9IDA7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVy
ZmFjZT4gY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQ
YXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2Uq
LCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9y
ZShjb25zdCBTdHJpbmcmIG5hbWUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4
Y2VwdGlvbkNvZGUmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFZlcnNpb24oY29uc3QgU3Ry
aW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCRGF0
YWJhc2VDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uKERPTVN0cmlu
Z0xpc3QqIHN0b3JlTmFtZXMsIHVuc2lnbmVkIHNob3J0IG1vZGUsIEV4Y2VwdGlvbkNvZGUmKSA9
IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRl
eC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaAppbmRleCBj
YWExMGU5ZmY5ODliZGRmODNiZTAwYWVjMDVjODNhMGFjZWExMjNmLi5hOTBhY2UwM2RhMDk2Mzlh
NTcwODhjNDE2M2RkMDdmZmUyN2UwMThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkluZGV4LmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIklEQkN1cnNv
ci5oIgogI2luY2x1ZGUgIklEQkluZGV4QmFja2VuZEludGVyZmFjZS5oIgorI2luY2x1ZGUgIklE
QktleVBhdGguaCIKICNpbmNsdWRlICJJREJLZXlSYW5nZS5oIgogI2luY2x1ZGUgIklEQlJlcXVl
c3QuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgpAQCAtNTAsNyArNTEsNyBAQCBwdWJs
aWM6CiAgICAgLy8gSW1wbGVtZW50IHRoZSBJREwKICAgICBTdHJpbmcgbmFtZSgpIGNvbnN0IHsg
cmV0dXJuIG1fYmFja2VuZC0+bmFtZSgpOyB9CiAgICAgSURCT2JqZWN0U3RvcmUqIG9iamVjdFN0
b3JlKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RTdG9yZS5nZXQoKTsgfQotICAgIFN0cmluZyBr
ZXlQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kLT5rZXlQYXRoKCk7IH0KKyAgICBQYXNz
UmVmUHRyPElEQkFueT4ga2V5UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZC0+a2V5UGF0
aCgpOyB9CiAgICAgYm9vbCB1bmlxdWUoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmQtPnVuaXF1
ZSgpOyB9CiAgICAgYm9vbCBtdWx0aUVudHJ5KCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kLT5t
dWx0aUVudHJ5KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCSW5kZXguaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
SW5kZXguaWRsCmluZGV4IGYxOGY2Yjc5Mzc1YjI0YWVkZGMxNWIwYjYxYjgxOGM4ZTI5MWExYTku
LmFiNmNlYjdkODg1Yzg0N2Q1NmI4NGY2MmZhMTViOGQ2ODViYWM2MDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5pZGwKQEAgLTMwLDcgKzMwLDcgQEAg
bW9kdWxlIHN0b3JhZ2UgewogICAgIF0gSURCSW5kZXggewogICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIG5hbWU7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBJREJPYmpl
Y3RTdG9yZSBvYmplY3RTdG9yZTsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmlu
ZyBrZXlQYXRoOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgSURCQW55IGtleVBhdGg7CiAg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHVuaXF1ZTsKICAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIGJvb2xlYW4gbXVsdGlFbnRyeTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmNwcAppbmRleCA1
ZjU0ZTZhZDIwZjc2OGM3MmI1ZTc3ZTZlY2QzYzkxYjE5MzQ1YWYzLi4wZTBlNTJmNDI0NzQ4YjY1
OWQ1MjU1M2NmM2U0MmRmMTIxODc0ZDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmNwcApAQCAtNDEsNyArNDEs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUlEQkluZGV4QmFja2VuZEltcGw6OklEQklu
ZGV4QmFja2VuZEltcGwoSURCQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0
YWJhc2VJZCwgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCogb2JqZWN0U3RvcmVCYWNrZW5kLCBp
bnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9v
bCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSkKK0lEQkluZGV4QmFja2VuZEltcGw6OklEQkluZGV4
QmFja2VuZEltcGwoSURCQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0YWJh
c2VJZCwgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCogb2JqZWN0U3RvcmVCYWNrZW5kLCBpbnQ2
NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJv
b2wgdW5pcXVlLCBib29sIG11bHRpRW50cnkpCiAgICAgOiBtX2JhY2tpbmdTdG9yZShiYWNraW5n
U3RvcmUpCiAgICAgLCBtX2RhdGFiYXNlSWQoZGF0YWJhc2VJZCkKICAgICAsIG1fb2JqZWN0U3Rv
cmVCYWNrZW5kKG9iamVjdFN0b3JlQmFja2VuZCkKQEAgLTUzLDcgKzUzLDcgQEAgSURCSW5kZXhC
YWNrZW5kSW1wbDo6SURCSW5kZXhCYWNrZW5kSW1wbChJREJCYWNraW5nU3RvcmUqIGJhY2tpbmdT
dG9yZSwgaW50NjRfdAogewogfQogCi1JREJJbmRleEJhY2tlbmRJbXBsOjpJREJJbmRleEJhY2tl
bmRJbXBsKElEQkJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQs
IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwqIG9iamVjdFN0b3JlQmFja2VuZCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRp
RW50cnkpCitJREJJbmRleEJhY2tlbmRJbXBsOjpJREJJbmRleEJhY2tlbmRJbXBsKElEQkJhY2tp
bmdTdG9yZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIElEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGwqIG9iamVjdFN0b3JlQmFja2VuZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5KQogICAg
IDogbV9iYWNraW5nU3RvcmUoYmFja2luZ1N0b3JlKQogICAgICwgbV9kYXRhYmFzZUlkKGRhdGFi
YXNlSWQpCiAgICAgLCBtX29iamVjdFN0b3JlQmFja2VuZChvYmplY3RTdG9yZUJhY2tlbmQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tl
bmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tl
bmRJbXBsLmgKaW5kZXggOTVlMGYxZTAxMGU3YjRkOWUzNGQ3Y2NiZGJiMTQ3ODBmNTdiMDAyOS4u
YzdiY2UwZTRhYzdjOWMzMDI0MDQ3YmI5NWQ5ZDRhNjc4NmE2YTY4OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwuaApA
QCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5o
IgogI2luY2x1ZGUgIklEQkluZGV4QmFja2VuZEludGVyZmFjZS5oIgorI2luY2x1ZGUgIklEQktl
eVBhdGguaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00MCwxMSArNDEsMTEgQEAgY2xh
c3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAogY2xhc3MgSURCSW5kZXhCYWNrZW5kSW1wbCA6
IHB1YmxpYyBJREJJbmRleEJhY2tlbmRJbnRlcmZhY2UgewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+IGNyZWF0ZShJREJCYWNraW5nU3RvcmUqIGJh
Y2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
KiBvYmplY3RTdG9yZUJhY2tlbmQsIGludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5KQorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+IGNyZWF0ZShJREJCYWNraW5nU3Rv
cmUqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsKiBvYmplY3RTdG9yZUJhY2tlbmQsIGludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRy
eSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCSW5kZXhCYWNrZW5kSW1w
bChiYWNraW5nU3RvcmUsIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlQmFja2VuZCwgaWQsIG5hbWUs
IGtleVBhdGgsIHVuaXF1ZSwgbXVsdGlFbnRyeSkpOwogICAgIH0KLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiBjcmVhdGUoSURCQmFja2luZ1N0b3JlKiBiYWNraW5n
U3RvcmUsIGludDY0X3QgZGF0YWJhc2VJZCwgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCogb2Jq
ZWN0U3RvcmVCYWNrZW5kLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0
aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJ
REJJbmRleEJhY2tlbmRJbXBsPiBjcmVhdGUoSURCQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUs
IGludDY0X3QgZGF0YWJhc2VJZCwgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCogb2JqZWN0U3Rv
cmVCYWNrZW5kLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgs
IGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnkpCiAgICAgewogICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IElEQkluZGV4QmFja2VuZEltcGwoYmFja2luZ1N0b3JlLCBkYXRhYmFzZUlkLCBv
YmplY3RTdG9yZUJhY2tlbmQsIG5hbWUsIGtleVBhdGgsIHVuaXF1ZSwgbXVsdGlFbnRyeSkpOwog
ICAgIH0KQEAgLTYyLDcgKzYzLDcgQEAgcHVibGljOgogCiAgICAgLy8gSW1wbGVtZW50cyBJREJJ
bmRleEJhY2tlbmRJbnRlcmZhY2UuCiAgICAgdmlydHVhbCBTdHJpbmcgbmFtZSgpIHsgcmV0dXJu
IG1fbmFtZTsgfQotICAgIHZpcnR1YWwgU3RyaW5nIGtleVBhdGgoKSB7IHJldHVybiBtX2tleVBh
dGg7IH0KKyAgICB2aXJ0dWFsIElEQktleVBhdGgga2V5UGF0aCgpIHsgcmV0dXJuIG1fa2V5UGF0
aDsgfQogICAgIHZpcnR1YWwgYm9vbCB1bmlxdWUoKSB7IHJldHVybiBtX3VuaXF1ZTsgfQogICAg
IHZpcnR1YWwgYm9vbCBtdWx0aUVudHJ5KCkgeyByZXR1cm4gbV9tdWx0aUVudHJ5OyB9CiAKQEAg
LTc1LDggKzc2LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRLZXkoUGFzc1JlZlB0
cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKIAogcHJpdmF0ZToKLSAgICBJREJJbmRleEJh
Y2tlbmRJbXBsKElEQkJhY2tpbmdTdG9yZSosIGludDY0X3QgZGF0YWJhc2VJZCwgSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbCosIGludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5KTsKLSAgICBJREJJ
bmRleEJhY2tlbmRJbXBsKElEQkJhY2tpbmdTdG9yZSosIGludDY0X3QgZGF0YWJhc2VJZCwgSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbCosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5KTsKKyAgICBJREJJbmRleEJh
Y2tlbmRJbXBsKElEQkJhY2tpbmdTdG9yZSosIGludDY0X3QgZGF0YWJhc2VJZCwgSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbCosIGludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
SURCS2V5UGF0aCYsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnkpOworICAgIElEQkluZGV4
QmFja2VuZEltcGwoSURCQmFja2luZ1N0b3JlKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsKiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRo
JiwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSk7CiAKICAgICBzdGF0aWMgdm9pZCBvcGVu
Q3Vyc29ySW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCSW5k
ZXhCYWNrZW5kSW1wbD4sIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9ydCBk
aXJlY3Rpb24sIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OkN1cnNvclR5cGUsIFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2U+KTsKICAgICBzdGF0aWMgdm9pZCBjb3VudEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQktleVJh
bmdlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZT4pOwpAQCAtOTYsNyArOTcsNyBAQCBwcml2YXRlOgogICAgIElEQk9i
amVjdFN0b3JlQmFja2VuZEltcGwqIG1fb2JqZWN0U3RvcmVCYWNrZW5kOwogICAgIGludDY0X3Qg
bV9pZDsKICAgICBTdHJpbmcgbV9uYW1lOwotICAgIFN0cmluZyBtX2tleVBhdGg7CisgICAgSURC
S2V5UGF0aCBtX2tleVBhdGg7CiAgICAgYm9vbCBtX3VuaXF1ZTsKICAgICBib29sIG1fbXVsdGlF
bnRyeTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJJbmRleEJhY2tlbmRJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkluZGV4QmFja2VuZEludGVyZmFjZS5oCmluZGV4IDE1YWMzODY0NmFlNTFiZjVhNGM4
MTgzMWJiODBlMmU1MDVkZWQ1NGUuLmQzNWQxMTc3ZGFjNmQ2Y2JmOTA2MzhmNzdkZTY2MWVhYzQ3
ODFlODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQklu
ZGV4QmFja2VuZEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkluZGV4QmFja2VuZEludGVyZmFjZS5oCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgSURCQ2FsbGJhY2tzOwogY2xhc3MgSURCS2V5OworY2xhc3Mg
SURCS2V5UGF0aDsKIGNsYXNzIElEQktleVJhbmdlOwogY2xhc3MgSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlOwogCkBAIC00Niw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5J
REJJbmRleEJhY2tlbmRJbnRlcmZhY2UoKSB7IH0KIAogICAgIHZpcnR1YWwgU3RyaW5nIG5hbWUo
KSA9IDA7Ci0gICAgdmlydHVhbCBTdHJpbmcga2V5UGF0aCgpID0gMDsKKyAgICB2aXJ0dWFsIElE
QktleVBhdGgga2V5UGF0aCgpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgdW5pcXVlKCkgPSAwOwog
ICAgIHZpcnR1YWwgYm9vbCBtdWx0aUVudHJ5KCkgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGguY3BwCmluZGV4IGNkNWU5NjYzNDAwMmFjZDQz
OWI0YWQ1Y2JiYmY0ODI2NTlkNGExYmEuLjQ3YTcwYWU4MTI5YjQ3OWMzZjAyODcwZTJhOWZlNTE1
NDFlMGNlMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QktleVBhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktl
eVBhdGguY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKIAorI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlw
ZS5oPgogI2luY2x1ZGUgPHd0Zi9kdG9hLmg+CiAKQEAgLTE3OSw2ICsxODAsNjEgQEAgdm9pZCBJ
REJQYXJzZUtleVBhdGgoY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBWZWN0b3I8U3RyaW5nPiYgZWxl
bWVudHMsIElEQktleVBhdGgKICAgICB9CiB9CiAKK0lEQktleVBhdGg6OklEQktleVBhdGgoY29u
c3QgU3RyaW5nJiBzdHJpbmcpCisgICAgOiBtX3R5cGUoU3RyaW5nVHlwZSkKKyAgICAsIG1fc3Ry
aW5nKHN0cmluZykKK3sKKyAgICBBU1NFUlQoIW1fc3RyaW5nLmlzTnVsbCgpKTsKK30KKworSURC
S2V5UGF0aDo6SURCS2V5UGF0aChjb25zdCBWZWN0b3I8U3RyaW5nPiYgYXJyYXkpCisgICAgOiBt
X3R5cGUoQXJyYXlUeXBlKQorICAgICwgbV9hcnJheShhcnJheSkKK3sKKyNpZm5kZWYgTkRFQlVH
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2FycmF5LnNpemUoKTsgKytpKQorICAgICAg
ICBBU1NFUlQoIW1fYXJyYXlbaV0uaXNOdWxsKCkpOworI2VuZGlmCit9CisKK2Jvb2wgSURCS2V5
UGF0aDo6aXNWYWxpZCgpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICBjYXNl
IE51bGxUeXBlOgorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBjYXNlIFN0cmluZ1R5cGU6
CisgICAgICAgIHJldHVybiBJREJJc1ZhbGlkS2V5UGF0aChtX3N0cmluZyk7CisKKyAgICBjYXNl
IEFycmF5VHlwZToKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2FycmF5LnNpemUo
KTsgKytpKSB7CisgICAgICAgICAgICBpZiAoIUlEQklzVmFsaWRLZXlQYXRoKG1fYXJyYXlbaV0p
KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZh
bHNlOworfQorCitJREJLZXlQYXRoOjpvcGVyYXRvciBQYXNzUmVmUHRyPElEQkFueT4oKSBjb25z
dAoreworICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAgY2FzZSBOdWxsVHlwZToKKyAgICAgICAg
cmV0dXJuIElEQkFueTo6Y3JlYXRlTnVsbCgpOworICAgIGNhc2UgU3RyaW5nVHlwZToKKyAgICAg
ICAgcmV0dXJuIElEQkFueTo6Y3JlYXRlU3RyaW5nKG1fc3RyaW5nKTsKKyAgICBjYXNlIEFycmF5
VHlwZToKKyAgICAgICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGtleVBhdGhzID0gRE9NU3RyaW5n
TGlzdDo6Y3JlYXRlKCk7CisgICAgICAgIGZvciAoVmVjdG9yPFN0cmluZz46OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gbV9hcnJheS5iZWdpbigpOyBpdCAhPSBtX2FycmF5LmVuZCgpOyArK2l0KQorICAg
ICAgICBrZXlQYXRocy0+YXBwZW5kKCppdCk7CisgICAgICAgIHJldHVybiBJREJBbnk6OmNyZWF0
ZShzdGF0aWNfY2FzdDxQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+ID4oa2V5UGF0aHMpKTsKKyAg
ICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CisKKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0Up
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRo
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRoLmgKaW5kZXgg
YzUyYTYzYmE4Y2Q5ZTFkYWJhZTM4NGM5MDUxNzAyMmE4YjQ0ZDMxYy4uZjUyMzZjMTUyZjAyY2Jk
YTI4ZGI4YzMxNTFmMmRkODU3ZWFhZWNlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCS2V5UGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQktleVBhdGguaApAQCAtMjgsMTAgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShJ
TkRFWEVEX0RBVEFCQVNFKQogCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgIklEQkFueS5oIgorI2luY2x1ZGUgIlBsYXRm
b3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQyLDkgKzQxLDQ0IEBA
IGVudW0gSURCS2V5UGF0aFBhcnNlRXJyb3IgewogICAgIElEQktleVBhdGhQYXJzZUVycm9yRG90
LAogfTsKIAotYm9vbCBJREJJc1ZhbGlkS2V5UGF0aChjb25zdCBTdHJpbmcmKTsKIHZvaWQgSURC
UGFyc2VLZXlQYXRoKGNvbnN0IFN0cmluZyYsIFZlY3RvcjxTdHJpbmc+JiwgSURCS2V5UGF0aFBh
cnNlRXJyb3ImKTsKIAorY2xhc3MgSURCS2V5UGF0aCB7CitwdWJsaWM6CisgICAgSURCS2V5UGF0
aCgpIDogbV90eXBlKE51bGxUeXBlKSB7IH0KKyAgICBJREJLZXlQYXRoKGNvbnN0IFN0cmluZyYp
OworICAgIElEQktleVBhdGgoY29uc3QgVmVjdG9yPFN0cmluZz4mIGFycmF5KTsKKworICAgIGVu
dW0gVHlwZSB7CisgICAgICAgIE51bGxUeXBlID0gMCwKKyAgICAgICAgU3RyaW5nVHlwZSwKKyAg
ICAgICAgQXJyYXlUeXBlCisgICAgfTsKKworICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdHlwZTsgfQorCisgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFycmF5KCkgY29uc3QKKyAg
ICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gQXJyYXlUeXBlKTsKKyAgICAgICAgcmV0dXJu
IG1fYXJyYXk7CisgICAgfQorCisgICAgY29uc3QgU3RyaW5nJiBzdHJpbmcoKSBjb25zdAorICAg
IHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBTdHJpbmdUeXBlKTsKKyAgICAgICAgcmV0dXJu
IG1fc3RyaW5nOworICAgIH0KKworICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV90
eXBlID09IE51bGxUeXBlOyB9CisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CisgICAgb3BlcmF0
b3IgUGFzc1JlZlB0cjxJREJBbnk+KCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgVHlwZSBtX3R5
cGU7CisgICAgU3RyaW5nIG1fc3RyaW5nOworICAgIFZlY3RvcjxTdHJpbmc+IG1fYXJyYXk7Cit9
OworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UGF0aEJhY2tlbmRJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGhCYWNrZW5kSW1wbC5jcHAK
aW5kZXggOTRjN2YyNzkzNWNmYTM5YWQzODgwMDEyYmU2MDliNmIxMjk1YmZiYS4uNjRhMWZiYzVi
ZWQ3MGFjOTA4NWY1MzYzYjhhNmVkOTNjMmEyODAxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UGF0aEJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRoQmFja2VuZEltcGwuY3BwCkBA
IC0zOCwxMiArMzgsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIElEQktleVBh
dGhCYWNrZW5kSW1wbDo6Y3JlYXRlSURCS2V5c0Zyb21TZXJpYWxpemVkVmFsdWVzQW5kS2V5UGF0
aChjb25zdCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIDA+JiwgY29uc3Qg
U3RyaW5nJiwgVmVjdG9yPFJlZlB0cjxJREJLZXk+LCAwPiYpCit2b2lkIElEQktleVBhdGhCYWNr
ZW5kSW1wbDo6Y3JlYXRlSURCS2V5c0Zyb21TZXJpYWxpemVkVmFsdWVzQW5kS2V5UGF0aChjb25z
dCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIDA+JiwgY29uc3QgSURCS2V5
UGF0aCYsIFZlY3RvcjxSZWZQdHI8SURCS2V5PiwgMD4mKQogewogICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQgdGhpcyBtZXRob2Qgb25jZSBKU0Mgc3VwcG9ydHMgV2lyZUZvcm1hdCBmb3IgU2VyaWFs
aXplZFNjcmlwdFZhbHVlLgogfQogCi1QYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
SURCS2V5UGF0aEJhY2tlbmRJbXBsOjppbmplY3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKFBh
c3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBjb25z
dCBTdHJpbmcmKQorUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IElEQktleVBhdGhC
YWNrZW5kSW1wbDo6aW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShQYXNzUmVmUHRyPElE
QktleT4sIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgY29uc3QgSURCS2V5UGF0
aCYpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIG1ldGhvZCBvbmNlIEpTQyBzdXBw
b3J0cyBXaXJlRm9ybWF0IGZvciBTZXJpYWxpemVkU2NyaXB0VmFsdWUuCiAgICAgcmV0dXJuIFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UGF0aEJhY2tlbmRJbXBsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRoQmFja2VuZEltcGwuaAppbmRleCAx
Yzc2MjMyMjE3ZmY1MGU0ZjBkOTc5OGY1N2NmNDI0Y2RkM2MxMWZkLi4wZjA1N2ViMmJjNzMyNTFm
N2FkNWYxZjA1MDk5MDFlZGNlNTE4OTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRoQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRoQmFja2VuZEltcGwuaApAQCAtMzMsMTIgKzMz
LDEzIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElEQktleTsKK2NsYXNzIElEQktl
eVBhdGg7CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CiAKIGNsYXNzIElEQktleVBhdGhC
YWNrZW5kSW1wbCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgY3JlYXRlSURCS2V5c0Zyb21T
ZXJpYWxpemVkVmFsdWVzQW5kS2V5UGF0aChjb25zdCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4sIDA+JiB2YWx1ZXMsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgVmVjdG9yPFJl
ZlB0cjxJREJLZXk+LCAwPiYga2V5cyk7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBpbmplY3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKFBhc3NSZWZQdHI8
SURCS2V5PiwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBjb25zdCBTdHJpbmcm
IGtleVBhdGgpOworICAgIHN0YXRpYyB2b2lkIGNyZWF0ZUlEQktleXNGcm9tU2VyaWFsaXplZFZh
bHVlc0FuZEtleVBhdGgoY29uc3QgVmVjdG9yPFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
LCAwPiYgdmFsdWVzLCBjb25zdCBJREJLZXlQYXRoJiwgVmVjdG9yPFJlZlB0cjxJREJLZXk+LCAw
PiYga2V5cyk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBp
bmplY3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBjb25zdCBJREJLZXlQYXRoJik7CiB9OwogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERC
QmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxl
dmVsREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IGM3ZWY3NTJjYzBjYzc3NDUzYzI4YzRhOWExMzdh
OGNlOGQ1ZTI5YzUuLjQ5Nzc3YzYxYmYzNWNjN2I2NGQxMWYzMTVmYTIzM2Q1ZDc3Njk1ZmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNr
aW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxl
dmVsREJCYWNraW5nU3RvcmUuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSA8d3RmL0Fz
c2VydGlvbnMuaD4KICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiSURCRmFjdG9y
eUJhY2tlbmRJbXBsLmgiCisjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgogI2luY2x1ZGUgIklEQktl
eVJhbmdlLmgiCiAjaW5jbHVkZSAiSURCTGV2ZWxEQkNvZGluZy5oIgogI2luY2x1ZGUgIkxldmVs
REJDb21wYXJhdG9yLmgiCkBAIC05OCw2ICs5OSwxNCBAQCBzdGF0aWMgYm9vbCBwdXRTdHJpbmco
REJPclRyYW5zYWN0aW9uKiBkYiwgY29uc3QgVmVjdG9yPGNoYXI+IGtleSwgY29uc3QgU3RyaW5n
JgogICAgIHJldHVybiB0cnVlOwogfQogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgREJPclRyYW5zYWN0
aW9uPgorc3RhdGljIGJvb2wgcHV0SURCS2V5UGF0aChEQk9yVHJhbnNhY3Rpb24qIGRiLCBjb25z
dCBWZWN0b3I8Y2hhcj4ga2V5LCBjb25zdCBJREJLZXlQYXRoJiB2YWx1ZSkKK3sKKyAgICBpZiAo
IWRiLT5wdXQoa2V5LCBlbmNvZGVJREJLZXlQYXRoKHZhbHVlKSkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogc3RhdGljIGludCBjb21wYXJlS2V5cyhjb25z
dCBMZXZlbERCU2xpY2UmIGEsIGNvbnN0IExldmVsREJTbGljZSYgYikKIHsKICAgICByZXR1cm4g
Y29tcGFyZShhLCBiKTsKQEAgLTMyNyw3ICszMzYsNyBAQCBzdGF0aWMgYm9vbCBjaGVja09iamVj
dFN0b3JlQW5kTWV0YURhdGFUeXBlKGNvbnN0IExldmVsREJJdGVyYXRvciogaXQsIGNvbnN0IFZl
YwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIElEQkxldmVsREJCYWNraW5nU3RvcmU6Omdl
dE9iamVjdFN0b3JlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIFZlY3RvcjxpbnQ2NF90PiYgZm91bmRJ
ZHMsIFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmRLZXlQ
YXRocywgVmVjdG9yPGJvb2w+JiBmb3VuZEF1dG9JbmNyZW1lbnRGbGFncykKK3ZvaWQgSURCTGV2
ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0T2JqZWN0U3RvcmVzKGludDY0X3QgZGF0YWJhc2VJZCwgVmVj
dG9yPGludDY0X3Q+JiBmb3VuZElkcywgVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMsIFZlY3Rv
cjxJREJLZXlQYXRoPiYgZm91bmRLZXlQYXRocywgVmVjdG9yPGJvb2w+JiBmb3VuZEF1dG9JbmNy
ZW1lbnRGbGFncykKIHsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gc3RhcnRLZXkgPSBPYmplY3RT
dG9yZU1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgMSwgMCk7CiAgICAgY29uc3QgVmVj
dG9yPGNoYXI+IHN0b3BLZXkgPSBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjplbmNvZGVNYXhLZXko
ZGF0YWJhc2VJZCk7CkBAIC0zNjMsOCArMzcyLDcgQEAgdm9pZCBJREJMZXZlbERCQmFja2luZ1N0
b3JlOjpnZXRPYmplY3RTdG9yZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBWZWN0b3I8aW50NjRfdD4K
ICAgICAgICAgICAgIExPR19FUlJPUigiSW50ZXJuYWwgSW5kZXhlZCBEQiBlcnJvci4iKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBTdHJpbmcga2V5UGF0aCA9IGRl
Y29kZVN0cmluZyhpdC0+dmFsdWUoKS5iZWdpbigpLCBpdC0+dmFsdWUoKS5lbmQoKSk7Ci0gICAg
ICAgIGJvb2wgaGFzS2V5UGF0aCA9IHRydWU7CisgICAgICAgIElEQktleVBhdGgga2V5UGF0aCA9
IGRlY29kZUlEQktleVBhdGgoaXQtPnZhbHVlKCkuYmVnaW4oKSwgaXQtPnZhbHVlKCkuZW5kKCkp
OwogCiAgICAgICAgIGl0LT5uZXh0KCk7CiAgICAgICAgIGlmICghY2hlY2tPYmplY3RTdG9yZUFu
ZE1ldGFEYXRhVHlwZShpdC5nZXQoKSwgc3RvcEtleSwgb2JqZWN0U3RvcmVJZCwgT2JqZWN0U3Rv
cmVNZXRhRGF0YUtleTo6a0F1dG9JbmNyZW1lbnQpKSB7CkBAIC0zOTMsMTcgKzQwMSwyMyBAQCB2
b2lkIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmdldE9iamVjdFN0b3JlcyhpbnQ2NF90IGRhdGFi
YXNlSWQsIFZlY3RvcjxpbnQ2NF90PgogCiAgICAgICAgIGl0LT5uZXh0KCk7IC8vIFtvcHRpb25h
bF0gaGFzIGtleSBwYXRoIChpcyBub3QgbnVsbCkKICAgICAgICAgaWYgKGNoZWNrT2JqZWN0U3Rv
cmVBbmRNZXRhRGF0YVR5cGUoaXQuZ2V0KCksIHN0b3BLZXksIG9iamVjdFN0b3JlSWQsIE9iamVj
dFN0b3JlTWV0YURhdGFLZXk6OmtIYXNLZXlQYXRoKSkgewotICAgICAgICAgICAgaGFzS2V5UGF0
aCA9IGRlY29kZUJvb2woaXQtPnZhbHVlKCkuYmVnaW4oKSwgaXQtPnZhbHVlKCkuZW5kKCkpOwot
ICAgICAgICAgICAgaWYgKCFoYXNLZXlQYXRoICYmICFrZXlQYXRoLmlzRW1wdHkoKSkgeworICAg
ICAgICAgICAgYm9vbCBoYXNLZXlQYXRoID0gZGVjb2RlQm9vbChpdC0+dmFsdWUoKS5iZWdpbigp
LCBpdC0+dmFsdWUoKS5lbmQoKSk7CisgICAgICAgICAgICAvLyBUaGlzIGNoZWNrIGFjY291bnRz
IGZvciB0d28gbGF5ZXJzIG9mIGxlZ2FjeSBjb2Rpbmc6CisgICAgICAgICAgICAvLyAoMSkgSW5p
dGlhbGx5LCBoYXNLZXlQYXRoIHdhcyBhZGRlZCB0byBkaXN0aW5ndWlzaCBudWxsIHZzLiBzdHJp
bmcuCisgICAgICAgICAgICAvLyAoMikgTGF0ZXIsIG51bGwgdnMuIHN0cmluZyB2cy4gYXJyYXkg
d2FzIHN0b3JlZCBpbiB0aGUga2V5UGF0aCBpdHNlbGYuCisgICAgICAgICAgICAvLyBTbyB0aGlz
IGNoZWNrIGlzIG9ubHkgcmVsZXZhbnQgZm9yIHN0cmluZy10eXBlIGtleVBhdGhzLgorICAgICAg
ICAgICAgaWYgKCFoYXNLZXlQYXRoICYmIChrZXlQYXRoLnR5cGUoKSA9PSBJREJLZXlQYXRoOjpT
dHJpbmdUeXBlICYmICFrZXlQYXRoLnN0cmluZygpLmlzRW1wdHkoKSkpIHsKICAgICAgICAgICAg
ICAgICBMT0dfRVJST1IoIkludGVybmFsIEluZGV4ZWQgREIgZXJyb3IuIik7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFoYXNLZXlQYXRo
KQorICAgICAgICAgICAgICAgIGtleVBhdGggPSBJREJLZXlQYXRoKCk7CiAgICAgICAgICAgICBp
dC0+bmV4dCgpOwogICAgICAgICB9CiAKICAgICAgICAgZm91bmRJZHMuYXBwZW5kKG9iamVjdFN0
b3JlSWQpOwogICAgICAgICBmb3VuZE5hbWVzLmFwcGVuZChvYmplY3RTdG9yZU5hbWUpOwotICAg
ICAgICBmb3VuZEtleVBhdGhzLmFwcGVuZChoYXNLZXlQYXRoID8ga2V5UGF0aCA6IFN0cmluZygp
KTsKKyAgICAgICAgZm91bmRLZXlQYXRocy5hcHBlbmQoa2V5UGF0aCk7CiAgICAgICAgIGZvdW5k
QXV0b0luY3JlbWVudEZsYWdzLmFwcGVuZChhdXRvSW5jcmVtZW50KTsKICAgICB9CiB9CkBAIC00
MjQsNyArNDM4LDcgQEAgc3RhdGljIGludDY0X3QgZ2V0TmV3T2JqZWN0U3RvcmVJZChMZXZlbERC
VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGEKICAgICByZXR1cm4gb2JqZWN0
U3RvcmVJZDsKIH0KIAotYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RT
dG9yZShpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIGludDY0X3QmIGFzc2lnbmVkT2JqZWN0U3Rv
cmVJZCkKK2Jvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUoaW50
NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtl
eVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgaW50NjRfdCYgYXNzaWduZWRPYmplY3RTdG9yZUlk
KQogewogICAgIEFTU0VSVChtX2N1cnJlbnRUcmFuc2FjdGlvbik7CiAgICAgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkID0gZ2V0TmV3T2JqZWN0U3RvcmVJZChtX2N1cnJlbnRUcmFuc2FjdGlvbi5nZXQo
KSwgZGF0YWJhc2VJZCk7CkBAIC00NDYsNyArNDYwLDcgQEAgYm9vbCBJREJMZXZlbERCQmFja2lu
Z1N0b3JlOjpjcmVhdGVPYmplY3RTdG9yZShpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IFN0cmlu
ZyYKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIG9rID0gcHV0U3RyaW5nKG1f
Y3VycmVudFRyYW5zYWN0aW9uLmdldCgpLCBrZXlQYXRoS2V5LCBrZXlQYXRoKTsKKyAgICBvayA9
IHB1dElEQktleVBhdGgobV9jdXJyZW50VHJhbnNhY3Rpb24uZ2V0KCksIGtleVBhdGhLZXksIGtl
eVBhdGgpOwogICAgIGlmICghb2spIHsKICAgICAgICAgTE9HX0VSUk9SKCJJbnRlcm5hbCBJbmRl
eGVkIERCIGVycm9yLiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC03MTcsNyArNzMxLDcg
QEAgc3RhdGljIGJvb2wgY2hlY2tJbmRleEFuZE1ldGFEYXRhS2V5KGNvbnN0IExldmVsREJJdGVy
YXRvciogaXQsIGNvbnN0IFZlY3RvcjxjaGEKIH0KIAogCi12b2lkIElEQkxldmVsREJCYWNraW5n
U3RvcmU6OmdldEluZGV4ZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIFZlY3RvcjxpbnQ2NF90PiYgZm91bmRJZHMsIFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVz
LCBWZWN0b3I8U3RyaW5nPiYgZm91bmRLZXlQYXRocywgVmVjdG9yPGJvb2w+JiBmb3VuZFVuaXF1
ZUZsYWdzLCBWZWN0b3I8Ym9vbD4mIGZvdW5kTXVsdGlFbnRyeUZsYWdzKQordm9pZCBJREJMZXZl
bERCQmFja2luZ1N0b3JlOjpnZXRJbmRleGVzKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYg
Zm91bmROYW1lcywgVmVjdG9yPElEQktleVBhdGg+JiBmb3VuZEtleVBhdGhzLCBWZWN0b3I8Ym9v
bD4mIGZvdW5kVW5pcXVlRmxhZ3MsIFZlY3Rvcjxib29sPiYgZm91bmRNdWx0aUVudHJ5RmxhZ3Mp
CiB7CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+IHN0YXJ0S2V5ID0gSW5kZXhNZXRhRGF0YUtleTo6
ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIDAsIDApOwogICAgIGNvbnN0IFZlY3Rv
cjxjaGFyPiBzdG9wS2V5ID0gSW5kZXhNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9i
amVjdFN0b3JlSWQgKyAxLCAwLCAwKTsKQEAgLTc2MCw3ICs3NzQsNyBAQCB2b2lkIElEQkxldmVs
REJCYWNraW5nU3RvcmU6OmdldEluZGV4ZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSQogICAgICAgICAgICAgTE9HX0VSUk9SKCJJbnRlcm5hbCBJbmRleGVkIERCIGVy
cm9yLiIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIFN0cmluZyBr
ZXlQYXRoID0gZGVjb2RlU3RyaW5nKGl0LT52YWx1ZSgpLmJlZ2luKCksIGl0LT52YWx1ZSgpLmVu
ZCgpKTsKKyAgICAgICAgSURCS2V5UGF0aCBrZXlQYXRoID0gZGVjb2RlSURCS2V5UGF0aChpdC0+
dmFsdWUoKS5iZWdpbigpLCBpdC0+dmFsdWUoKS5lbmQoKSk7CiAKICAgICAgICAgaXQtPm5leHQo
KTsgLy8gW29wdGlvbmFsXSBtdWx0aUVudHJ5IGZsYWcKICAgICAgICAgYm9vbCBpbmRleE11bHRp
RW50cnkgPSBmYWxzZTsKQEAgLTc5Myw3ICs4MDcsNyBAQCBzdGF0aWMgaW50NjRfdCBnZXROZXdJ
bmRleElkKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJ
ZAogICAgIHJldHVybiBpbmRleElkOwogfQogCi1ib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6
OmNyZWF0ZUluZGV4KGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBpc1VuaXF1ZSwg
Ym9vbCBpc011bHRpRW50cnksIGludDY0X3QmIGluZGV4SWQpCitib29sIElEQkxldmVsREJCYWNr
aW5nU3RvcmU6OmNyZWF0ZUluZGV4KGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJv
b2wgaXNVbmlxdWUsIGJvb2wgaXNNdWx0aUVudHJ5LCBpbnQ2NF90JiBpbmRleElkKQogewogICAg
IEFTU0VSVChtX2N1cnJlbnRUcmFuc2FjdGlvbik7CiAgICAgaW5kZXhJZCA9IGdldE5ld0luZGV4
SWQobV9jdXJyZW50VHJhbnNhY3Rpb24uZ2V0KCksIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQp
OwpAQCAtODE3LDcgKzgzMSw3IEBAIGJvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRl
SW5kZXgoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBvayA9IHB1dFN0cmluZyhtX2N1cnJlbnRUcmFuc2Fj
dGlvbi5nZXQoKSwga2V5UGF0aEtleSwga2V5UGF0aCk7CisgICAgb2sgPSBwdXRJREJLZXlQYXRo
KG1fY3VycmVudFRyYW5zYWN0aW9uLmdldCgpLCBrZXlQYXRoS2V5LCBrZXlQYXRoKTsKICAgICBp
ZiAoIW9rKSB7CiAgICAgICAgIExPR19FUlJPUigiSW50ZXJuYWwgSW5kZXhlZCBEQiBlcnJvci4i
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oCmluZGV4IGUxN2E2ZjFm
YjI3OWMyYTE5MWZlZDMzMWM5OTc2NmQxMDYyZDQ2ZjUuLmNjODcwZmVjNWNhMGVlMjhjOTdiNTQ3
ZmE2NDYxY2U2MmJmZDA2YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmgKQEAgLTUwLDggKzUwLDggQEAg
cHVibGljOgogICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVJREJEYXRhYmFzZU1ldGFEYXRhKGludDY0
X3Qgcm93SWQsIGNvbnN0IFN0cmluZyYgdmVyc2lvbik7CiAgICAgdmlydHVhbCBib29sIGRlbGV0
ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0T2Jq
ZWN0U3RvcmVzKGludDY0X3QgZGF0YWJhc2VJZCwgVmVjdG9yPGludDY0X3Q+JiBmb3VuZElkcywg
VmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMsIFZlY3RvcjxTdHJpbmc+JiBmb3VuZEtleVBhdGhz
LCBWZWN0b3I8Ym9vbD4mIGZvdW5kQXV0b0luY3JlbWVudEZsYWdzKTsKLSAgICB2aXJ0dWFsIGJv
b2wgY3JlYXRlT2JqZWN0U3RvcmUoaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBpbnQ2NF90JiBh
c3NpZ25lZE9iamVjdFN0b3JlSWQpOworICAgIHZpcnR1YWwgdm9pZCBnZXRPYmplY3RTdG9yZXMo
aW50NjRfdCBkYXRhYmFzZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8U3Ry
aW5nPiYgZm91bmROYW1lcywgVmVjdG9yPElEQktleVBhdGg+JiBmb3VuZEtleVBhdGhzLCBWZWN0
b3I8Ym9vbD4mIGZvdW5kQXV0b0luY3JlbWVudEZsYWdzKTsKKyAgICB2aXJ0dWFsIGJvb2wgY3Jl
YXRlT2JqZWN0U3RvcmUoaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQsIGludDY0X3QmIGFzc2lnbmVkT2Jq
ZWN0U3RvcmVJZCk7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGludDY0X3Qg
ZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8T2JqZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyPiBjcmVhdGVJbnZhbGlkUmVjb3JkSWRlbnRp
ZmllcigpOwogICAgIHZpcnR1YWwgU3RyaW5nIGdldE9iamVjdFN0b3JlUmVjb3JkKGludDY0X3Qg
ZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkmKTsKQEAgLTYz
LDggKzYzLDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGZvckVhY2hPYmplY3RTdG9y
ZVJlY29yZChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgT2JqZWN0
U3RvcmVSZWNvcmRDYWxsYmFjayYpOwogCi0gICAgdmlydHVhbCB2b2lkIGdldEluZGV4ZXMoaW50
NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFZlY3RvcjxpbnQ2NF90PiYg
Zm91bmRJZHMsIFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzLCBWZWN0b3I8U3RyaW5nPiYgZm91
bmRLZXlQYXRocywgVmVjdG9yPGJvb2w+JiBmb3VuZFVuaXF1ZUZsYWdzLCBWZWN0b3I8Ym9vbD4m
IGZvdW5kTXVsdGlFbnRyeUZsYWdzKTsKLSAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlSW5kZXgoaW50
NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGlzVW5pcXVlLCBib29sIGlzTXVsdGlFbnRy
eSwgaW50NjRfdCYgaW5kZXhJZCk7CisgICAgdmlydHVhbCB2b2lkIGdldEluZGV4ZXMoaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFZlY3RvcjxpbnQ2NF90PiYgZm91
bmRJZHMsIFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzLCBWZWN0b3I8SURCS2V5UGF0aD4mIGZv
dW5kS2V5UGF0aHMsIFZlY3Rvcjxib29sPiYgZm91bmRVbmlxdWVGbGFncywgVmVjdG9yPGJvb2w+
JiBmb3VuZE11bHRpRW50cnlGbGFncyk7CisgICAgdmlydHVhbCBib29sIGNyZWF0ZUluZGV4KGlu
dDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGlzVW5pcXVlLCBib29sIGlzTXVsdGlFbnRyeSwg
aW50NjRfdCYgaW5kZXhJZCk7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUluZGV4KGludDY0X3Qg
ZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQpOwogICAg
IHZpcnR1YWwgYm9vbCBwdXRJbmRleERhdGFGb3JSZWNvcmQoaW50NjRfdCBkYXRhYmFzZUlkLCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiwgY29u
c3QgT2JqZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyKik7CiAgICAgdmlydHVhbCBib29sIGRlbGV0
ZUluZGV4RGF0YUZvclJlY29yZChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBPYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXIq
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVs
REJDb2RpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxE
QkNvZGluZy5jcHAKaW5kZXggNTBkZTEyZjM3YmU0NDJjMDhkZDc2YTZmZTQzMGJhNWI0YzExMDk5
NC4uMWVhN2Y2ODg4Y2YyYTUwNzFjOGQ5MTdkMjllZmRjYWYyZGM0ZWNhYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAK
QEAgLTMwLDYgKzMwLDcgQEAKICNpZiBVU0UoTEVWRUxEQikKIAogI2luY2x1ZGUgIklEQktleS5o
IgorI2luY2x1ZGUgIklEQktleVBhdGguaCIKICNpbmNsdWRlICJMZXZlbERCU2xpY2UuaCIKICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKQEAgLTE0Miw2ICsxNDMsOSBAQCBz
dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBrSURCS2V5TnVtYmVyVHlwZUJ5dGUgPSAzOwogc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga0lEQktleUFycmF5VHlwZUJ5dGUgPSA0Owogc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIGNoYXIga0lEQktleU1pbktleVR5cGVCeXRlID0gNTsKIAorc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIGNoYXIga0lEQktleVBhdGhUeXBlQ29kZWRCeXRlMSA9IDA7CitzdGF0
aWMgY29uc3QgdW5zaWduZWQgY2hhciBrSURCS2V5UGF0aFR5cGVDb2RlZEJ5dGUyID0gMDsKKwog
c3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga09iamVjdFN0b3JlRGF0YUluZGV4SWQgPSAxOwog
c3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga0V4aXN0c0VudHJ5SW5kZXhJZCA9IDI7CiAKQEAg
LTYyNiw2ICs2MzAsNzQgQEAgaW50IGNvbXBhcmVFbmNvZGVkSURCS2V5cyhjb25zdCBWZWN0b3I8
Y2hhcj4mIGtleUEsIGNvbnN0IFZlY3RvcjxjaGFyPiYga2V5QikKICAgICByZXR1cm4gY29tcGFy
ZUVuY29kZWRJREJLZXlzKHAsIGxpbWl0QSwgcSwgbGltaXRCKTsKIH0KIAorVmVjdG9yPGNoYXI+
IGVuY29kZUlEQktleVBhdGgoY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCkKK3sKKyAgICAvLyBN
YXkgYmUgdHlwZWQsIG9yIG1heSBiZSBhIHJhdyBzdHJpbmcuIEFuIGludmFsaWQgbGVhZGluZwor
ICAgIC8vIGJ5dGUgaXMgdXNlZCB0byBpZGVudGlmeSB0eXBlZCBjb2RpbmcuIE5ldyByZWNvcmRz
IGFyZQorICAgIC8vIGFsd2F5cyB3cml0dGVuIGFzIHR5cGVkLgorICAgIFZlY3RvcjxjaGFyPiBy
ZXQ7CisgICAgcmV0LmFwcGVuZChrSURCS2V5UGF0aFR5cGVDb2RlZEJ5dGUxKTsKKyAgICByZXQu
YXBwZW5kKGtJREJLZXlQYXRoVHlwZUNvZGVkQnl0ZTIpOworICAgIHJldC5hcHBlbmQoc3RhdGlj
X2Nhc3Q8Y2hhcj4oa2V5UGF0aC50eXBlKCkpKTsKKyAgICBzd2l0Y2ggKGtleVBhdGgudHlwZSgp
KSB7CisgICAgY2FzZSBJREJLZXlQYXRoOjpOdWxsVHlwZToKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBJREJLZXlQYXRoOjpTdHJpbmdUeXBlOgorICAgICAgICByZXQuYXBwZW5kKGVuY29kZVN0
cmluZ1dpdGhMZW5ndGgoa2V5UGF0aC5zdHJpbmcoKSkpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIElEQktleVBhdGg6OkFycmF5VHlwZTogeworICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgYXJyYXkgPSBrZXlQYXRoLmFycmF5KCk7CisgICAgICAgIHNpemVfdCBjb3VudCA9IGFycmF5
LnNpemUoKTsKKyAgICAgICAgcmV0LmFwcGVuZChlbmNvZGVWYXJJbnQoY291bnQpKTsKKyAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKQorICAgICAgICAgICAgcmV0LmFw
cGVuZChlbmNvZGVTdHJpbmdXaXRoTGVuZ3RoKGFycmF5W2ldKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJldDsKK30KKworSURCS2V5UGF0aCBkZWNvZGVJREJL
ZXlQYXRoKGNvbnN0IGNoYXIqIHAsIGNvbnN0IGNoYXIqIGxpbWl0KQoreworICAgIC8vIE1heSBi
ZSB0eXBlZCwgb3IgbWF5IGJlIGEgcmF3IHN0cmluZy4gQW4gaW52YWxpZCBsZWFkaW5nCisgICAg
Ly8gYnl0ZSBzZXF1ZW5jZSBpcyB1c2VkIHRvIGlkZW50aWZ5IHR5cGVkIGNvZGluZy4gTmV3IHJl
Y29yZHMgYXJlCisgICAgLy8gYWx3YXlzIHdyaXR0ZW4gYXMgdHlwZWQuCisgICAgaWYgKHAgPT0g
bGltaXQgfHwgKGxpbWl0IC0gcCA+PSAyICYmICgqcCAhPSBrSURCS2V5UGF0aFR5cGVDb2RlZEJ5
dGUxIHx8ICoocCArIDEpICE9IGtJREJLZXlQYXRoVHlwZUNvZGVkQnl0ZTIpKSkKKyAgICAgICAg
cmV0dXJuIElEQktleVBhdGgoZGVjb2RlU3RyaW5nKHAsIGxpbWl0KSk7CisgICAgcCArPSAyOwor
CisgICAgQVNTRVJUKHAgIT0gbGltaXQpOworICAgIElEQktleVBhdGg6OlR5cGUgdHlwZSA9IHN0
YXRpY19jYXN0PElEQktleVBhdGg6OlR5cGU+KCpwKyspOworICAgIHN3aXRjaCAodHlwZSkgewor
ICAgIGNhc2UgSURCS2V5UGF0aDo6TnVsbFR5cGU6CisgICAgICAgIEFTU0VSVChwID09IGxpbWl0
KTsKKyAgICAgICAgcmV0dXJuIElEQktleVBhdGgoKTsKKyAgICBjYXNlIElEQktleVBhdGg6OlN0
cmluZ1R5cGU6IHsKKyAgICAgICAgU3RyaW5nIHN0cmluZzsKKyAgICAgICAgcCA9IGRlY29kZVN0
cmluZ1dpdGhMZW5ndGgocCwgbGltaXQsIHN0cmluZyk7CisgICAgICAgIEFTU0VSVChwID09IGxp
bWl0KTsKKyAgICAgICAgcmV0dXJuIElEQktleVBhdGgoc3RyaW5nKTsKKyAgICB9CisgICAgY2Fz
ZSBJREJLZXlQYXRoOjpBcnJheVR5cGU6IHsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gYXJyYXk7
CisgICAgICAgIGludDY0X3QgY291bnQ7CisgICAgICAgIHAgPSBkZWNvZGVWYXJJbnQocCwgbGlt
aXQsIGNvdW50KTsKKyAgICAgICAgQVNTRVJUKHApOworICAgICAgICBBU1NFUlQoY291bnQgPj0g
MCk7CisgICAgICAgIHdoaWxlIChjb3VudC0tKSB7CisgICAgICAgICAgICBTdHJpbmcgc3RyaW5n
OworICAgICAgICAgICAgcCA9IGRlY29kZVN0cmluZ1dpdGhMZW5ndGgocCwgbGltaXQsIHN0cmlu
Zyk7CisgICAgICAgICAgICBBU1NFUlQocCk7CisgICAgICAgICAgICBhcnJheS5hcHBlbmQoc3Ry
aW5nKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQocCA9PSBsaW1pdCk7CisgICAgICAgIHJl
dHVybiBJREJLZXlQYXRoKGFycmF5KTsKKyAgICB9CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiBJREJLZXlQYXRoKCk7Cit9CisKIG5hbWVzcGFjZSB7CiB0ZW1w
bGF0ZTx0eXBlbmFtZSBLZXlUeXBlPgogaW50IGRlY29kZUFuZENvbXBhcmUoY29uc3QgTGV2ZWxE
QlNsaWNlJiBhLCBjb25zdCBMZXZlbERCU2xpY2UmIGIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmgKaW5kZXggYzgwMWRmN2ViNWVi
ZThmZTUzNThiZTk3MDg5OWEwN2MyN2ZkZDViNy4uY2MxZjcyNzhkZWZlYzZlNDYwZDk0YzE0MjE5
MjZkMTQ5MTg2MzlkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCTGV2ZWxEQkNvZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkxldmVsREJDb2RpbmcuaApAQCAtMzYsNiArMzYsNyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBJREJLZXk7CitjbGFzcyBJREJLZXlQYXRoOwogY2xhc3MgTGV2ZWxEQlNs
aWNlOwogCiBuYW1lc3BhY2UgSURCTGV2ZWxEQkNvZGluZyB7CkBAIC02Myw2ICs2NCw4IEBAIFZl
Y3RvcjxjaGFyPiBlbmNvZGVJREJLZXkoY29uc3QgSURCS2V5Jik7CiBjb25zdCBjaGFyKiBkZWNv
ZGVJREJLZXkoY29uc3QgY2hhciogcCwgY29uc3QgY2hhciogbGltaXQsIFJlZlB0cjxJREJLZXk+
JiBmb3VuZEtleSk7CiBjb25zdCBjaGFyKiBleHRyYWN0RW5jb2RlZElEQktleShjb25zdCBjaGFy
KiBzdGFydCwgY29uc3QgY2hhciogbGltaXQsIFZlY3RvcjxjaGFyPiogcmVzdWx0KTsKIGludCBj
b21wYXJlRW5jb2RlZElEQktleXMoY29uc3QgVmVjdG9yPGNoYXI+JiwgY29uc3QgVmVjdG9yPGNo
YXI+Jik7CitWZWN0b3I8Y2hhcj4gZW5jb2RlSURCS2V5UGF0aChjb25zdCBJREJLZXlQYXRoJik7
CitJREJLZXlQYXRoIGRlY29kZUlEQktleVBhdGgoY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKTsK
IAogaW50IGNvbXBhcmUoY29uc3QgTGV2ZWxEQlNsaWNlJiwgY29uc3QgTGV2ZWxEQlNsaWNlJiwg
Ym9vbCBpbmRleEtleXMgPSBmYWxzZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAppbmRleCBjMzVmYjQ4OGNiNDY1Y2UxZjUz
YzYyYTk0ZjhiYTA0MjA5MDY2MThkLi41YWUyNjQ2ZjI4NWU1NjM0YjUzMzRlNTYyNGYzNDYxYWE3
ZDE0M2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJP
YmplY3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
T2JqZWN0U3RvcmUuY3BwCkBAIC02MCw3ICs2MCw3IEBAIFN0cmluZyBJREJPYmplY3RTdG9yZTo6
bmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fYmFja2VuZC0+bmFtZSgpOwogfQogCi1TdHJpbmcg
SURCT2JqZWN0U3RvcmU6OmtleVBhdGgoKSBjb25zdAorUGFzc1JlZlB0cjxJREJBbnk+IElEQk9i
amVjdFN0b3JlOjprZXlQYXRoKCkgY29uc3QKIHsKICAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0
b3JlOjprZXlQYXRoIik7CiAgICAgcmV0dXJuIG1fYmFja2VuZC0+a2V5UGF0aCgpOwpAQCAtMjEx
LDggKzIxMSwxMyBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpjbGVh
cihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeAogCiBQYXNzUmVmUHRyPElEQklu
ZGV4PiBJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBTdHJpbmcmIGtleVBhdGgsIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogeworICAgIHJldHVybiBjcmVhdGVJbmRleChuYW1lLCBJREJLZXlQYXRoKGtleVBh
dGgpLCBvcHRpb25zLCBlYyk7Cit9CisKK1Bhc3NSZWZQdHI8SURCSW5kZXg+IElEQk9iamVjdFN0
b3JlOjpjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtl
eVBhdGgsIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIEV4Y2VwdGlvbkNvZGUmIGVjKQorewog
ICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4Iik7Ci0gICAgaWYgKCFJ
REJJc1ZhbGlkS2V5UGF0aChrZXlQYXRoKSkgeworICAgIGlmICgha2V5UGF0aC5pc1ZhbGlkKCkp
IHsKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Tk9OX1RSQU5TSUVOVF9FUlI7
CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oCmluZGV4IGM1YWFmMzgzY2RlYzdjNTRmZTQ3ZGQ4
MjNlNmQ5OThjYmZiZmJmNDAuLjliMjhhNzQ0OTc2OThmZGYyM2U3YjRiZGJhY2VkNjAyMzhjMDI0
M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVj
dFN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmUuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBJbXBsZW1lbnQgdGhl
IElEQk9iamVjdFN0b3JlIElETAogICAgIFN0cmluZyBuYW1lKCkgY29uc3Q7Ci0gICAgU3RyaW5n
IGtleVBhdGgoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPElEQkFueT4ga2V5UGF0aCgpIGNvbnN0
OwogICAgIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gaW5kZXhOYW1lcygpIGNvbnN0OwogICAg
IElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbigpIGNvbnN0OwogICAgIGJvb2wgYXV0b0luY3Jl
bWVudCgpIGNvbnN0OwpAQCAtNzksNiArNzksOCBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxJ
REJSZXF1ZXN0PiBjbGVhcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYp
OwogCiAgICAgUGFzc1JlZlB0cjxJREJJbmRleD4gY3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGNvbnN0IERpY3Rpb25hcnkmLCBFeGNlcHRpb25D
b2RlJik7CisgICAgUGFzc1JlZlB0cjxJREJJbmRleD4gY3JlYXRlSW5kZXgoY29uc3QgU3RyaW5n
JiwgY29uc3QgSURCS2V5UGF0aCYsIGNvbnN0IERpY3Rpb25hcnkmLCBFeGNlcHRpb25Db2RlJik7
CisKICAgICBQYXNzUmVmUHRyPElEQkluZGV4PiBpbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIEV4
Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwg
RXhjZXB0aW9uQ29kZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJPYmplY3RTdG9yZS5pZGwKaW5kZXggNGNjMzM0NWE1NDA4NmU0MWQwOGM3NzU3N2Q5
MGI5YmUxZGRiMGQ2OC4uZTU5Y2JiY2U2M2I4MWZmYzFhNGI1NWQxMmE3YjA2YzZjZTMxNDEyMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3Rv
cmUuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlLmlkbApAQCAtMjksNyArMjksNyBAQCBtb2R1bGUgc3RvcmFnZSB7CiAgICAgICAgIENvbmRp
dGlvbmFsPUlOREVYRURfREFUQUJBU0UKICAgICBdIElEQk9iamVjdFN0b3JlIHsKICAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIFtUcmVhdFJldHVybmVkTnVsbFN0cmluZ0FzPU51bGxdIERPTVN0
cmluZyBuYW1lOwotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW1RyZWF0UmV0dXJuZWROdWxs
U3RyaW5nQXM9TnVsbF0gRE9NU3RyaW5nIGtleVBhdGg7CisgICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBJREJBbnkga2V5UGF0aDsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmlu
Z0xpc3QgaW5kZXhOYW1lczsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIElEQlRyYW5zYWN0
aW9uIHRyYW5zYWN0aW9uOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBhdXRv
SW5jcmVtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAppbmRleCA3OTRkNjUwMjFiMTU1
YzYzMGI4OTRiYWQyOTNmOWU0OTQyODM4OGM2Li5hOTg5ZmM1ZGRkYmFlYjRkNzc3YjEwZmI0N2Rm
MDJkNzlhZjI4ZWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcApAQCAtNTEsNyArNTEs
NyBAQCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjp+SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bCgpCiB7CiB9CiAKLUlEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OklEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGwoSURCQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0YWJhc2VJ
ZCwgaW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgs
IGJvb2wgYXV0b0luY3JlbWVudCkKK0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OklEQk9iamVj
dFN0b3JlQmFja2VuZEltcGwoSURCQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUsIGludDY0X3Qg
ZGF0YWJhc2VJZCwgaW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQ
YXRoJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQpCiAgICAgOiBtX2JhY2tpbmdTdG9yZShi
YWNraW5nU3RvcmUpCiAgICAgLCBtX2RhdGFiYXNlSWQoZGF0YWJhc2VJZCkKICAgICAsIG1faWQo
aWQpCkBAIC02Myw3ICs2Myw3IEBAIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OklEQk9iamVj
dFN0b3JlQmFja2VuZEltcGwoSURCQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvCiAgICAgbG9hZElu
ZGV4ZXMoKTsKIH0KIAotSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6SURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbChJREJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFz
ZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRv
SW5jcmVtZW50KQorSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6SURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbChJREJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlk
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0
b0luY3JlbWVudCkKICAgICA6IG1fYmFja2luZ1N0b3JlKGJhY2tpbmdTdG9yZSkKICAgICAsIG1f
ZGF0YWJhc2VJZChkYXRhYmFzZUlkKQogICAgICwgbV9pZChJbnZhbGlkSWQpCkBAIC0xMzcsOSAr
MTM3LDExIEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Z2V0SW50ZXJuYWwoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8CiAgICAgY2FsbGJhY2tzLT5vblN1Y2Nl
c3MoU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2lyZSh3aXJlRGF0YSkpOwogfQog
Ci1zdGF0aWMgUGFzc1JlZlB0cjxJREJLZXk+IGZldGNoS2V5RnJvbUtleVBhdGgoU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQorc3RhdGljIFBhc3NS
ZWZQdHI8SURCS2V5PiBmZXRjaEtleUZyb21LZXlQYXRoKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSog
dmFsdWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgpCiB7CiAgICAgSURCX1RSQUNFKCJJREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsOjpmZXRjaEtleUZyb21LZXlQYXRoIik7CisgICAgQVNTRVJU
KCFrZXlQYXRoLmlzTnVsbCgpKTsKKwogICAgIFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiA+IHZhbHVlczsKICAgICB2YWx1ZXMuYXBwZW5kKHZhbHVlKTsKICAgICBWZWN0b3I8
UmVmUHRyPElEQktleT4gPiBrZXlzOwpAQCAtMTUwLDcgKzE1Miw3IEBAIHN0YXRpYyBQYXNzUmVm
UHRyPElEQktleT4gZmV0Y2hLZXlGcm9tS2V5UGF0aChTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHZh
bHVlLCBjb25zCiAgICAgcmV0dXJuIGtleXNbMF0ucmVsZWFzZSgpOwogfQogCi1zdGF0aWMgUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGluamVjdEtleUludG9LZXlQYXRoKFBhc3NS
ZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1
ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQorc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBpbmplY3RLZXlJbnRvS2V5UGF0aChQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIGNvbnN0IElEQktleVBhdGgm
IGtleVBhdGgpCiB7CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpp
bmplY3RLZXlJbnRvS2V5UGF0aCIpOwogICAgIHJldHVybiBJREJLZXlQYXRoQmFja2VuZEltcGw6
OmluamVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUoa2V5LCB2YWx1ZSwga2V5UGF0aCk7CkBA
IC01MDMsNyArNTA1LDcgQEAgYm9vbCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpwb3B1bGF0
ZUluZGV4KElEQkJhY2tpbmdTdG9yZSYgYmFja2luZ1N0b3JlLCBpbnQKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IElEQk9iamVjdFN0
b3JlQmFja2VuZEltcGw6OmNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5LCBJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NS
ZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
OjpjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBh
dGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnksIElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmIChuYW1l
LmlzTnVsbCgpKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246Ok5PTl9UUkFO
U0lFTlRfRVJSOwpAQCAtNjU0LDcgKzY1Niw3IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbDo6bG9hZEluZGV4ZXMoKQogewogICAgIFZlY3RvcjxpbnQ2NF90PiBpZHM7CiAgICAgVmVj
dG9yPFN0cmluZz4gbmFtZXM7Ci0gICAgVmVjdG9yPFN0cmluZz4ga2V5UGF0aHM7CisgICAgVmVj
dG9yPElEQktleVBhdGg+IGtleVBhdGhzOwogICAgIFZlY3Rvcjxib29sPiB1bmlxdWVGbGFnczsK
ICAgICBWZWN0b3I8Ym9vbD4gbXVsdGlFbnRyeUZsYWdzOwogICAgIGJhY2tpbmdTdG9yZSgpLT5n
ZXRJbmRleGVzKGRhdGFiYXNlSWQoKSwgbV9pZCwgaWRzLCBuYW1lcywga2V5UGF0aHMsIHVuaXF1
ZUZsYWdzLCBtdWx0aUVudHJ5RmxhZ3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oCmluZGV4IDNl
YmM3N2NmODA4YmQ1ZDMxZDJjNjI4NDJhYjFiZWJjN2FkOWRlZWEuLjA2ZWNhYzgxNjgxYjQ5MzQ3
YmRiYzE5NGNjMTI5NTc4NDNlZGU0OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmgKQEAgLTI2
LDYgKzI2LDcgQEAKICNpZm5kZWYgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbF9oCiAjZGVmaW5l
IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGxfaAogCisjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgog
I2luY2x1ZGUgIklEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgpAQCAtNDIsMTEg
KzQzLDExIEBAIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKIGNsYXNzIElEQk9iamVj
dFN0b3JlQmFja2VuZEltcGwgOiBwdWJsaWMgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNl
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsPiBjcmVhdGUoSURCQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0YWJh
c2VJZCwgaW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBh
dGgsIGJvb2wgYXV0b0luY3JlbWVudCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsPiBjcmVhdGUoSURCQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUsIGlu
dDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJ
REJLZXlQYXRoJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQpCiAgICAgewogICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwoYmFja2luZ1N0b3Jl
LCBkYXRhYmFzZUlkLCBpZCwgbmFtZSwga2V5UGF0aCwgYXV0b0luY3JlbWVudCkpOwogICAgIH0K
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBjcmVhdGUo
SURCQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBjcmVhdGUo
SURCQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1l
bnQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGwoYmFja2luZ1N0b3JlLCBkYXRhYmFzZUlkLCBuYW1lLCBrZXlQYXRoLCBhdXRvSW5j
cmVtZW50KSk7CiAgICAgfQpAQCAtNjEsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJ
ZChpbnQ2NF90IGlkKSB7IG1faWQgPSBpZDsgfQogCiAgICAgdmlydHVhbCBTdHJpbmcgbmFtZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQotICAgIHZpcnR1YWwgU3RyaW5nIGtleVBhdGgoKSBj
b25zdCB7IHJldHVybiBtX2tleVBhdGg7IH0KKyAgICB2aXJ0dWFsIElEQktleVBhdGgga2V5UGF0
aCgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5UGF0aDsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxE
T01TdHJpbmdMaXN0PiBpbmRleE5hbWVzKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGF1dG9J
bmNyZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2F1dG9JbmNyZW1lbnQ7IH0KIApAQCAtNzIsNyAr
NzMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQ
dHI8SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgY2xl
YXIoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2UqLCBFeGNlcHRpb25Db2RlJik7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCSW5kZXhC
YWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSwgSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnksIElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBpbmRleChjb25zdCBTdHJp
bmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlSW5kZXgo
Y29uc3QgU3RyaW5nJiBuYW1lLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNl
cHRpb25Db2RlJik7CiAKQEAgLTgyLDggKzgzLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBib29s
IHBvcHVsYXRlSW5kZXgoSURCQmFja2luZ1N0b3JlJiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2
NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4pOwogCiBw
cml2YXRlOgotICAgIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwoSURCQmFja2luZ1N0b3JlKiwg
aW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50KTsKLSAgICBJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsKElEQkJhY2tpbmdTdG9yZSosIGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCk7
CisgICAgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbChJREJCYWNraW5nU3RvcmUqLCBpbnQ2NF90
IGRhdGFiYXNlSWQsIGludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5
UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCk7CisgICAgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bChJREJCYWNraW5nU3RvcmUqLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCk7CiAKICAgICB2b2lkIGxv
YWRJbmRleGVzKCk7CiAgICAgUGFzc1JlZlB0cjxJREJLZXk+IGdlbkF1dG9JbmNyZW1lbnRLZXko
KTsKQEAgLTExMiw3ICsxMTMsNyBAQCBwcml2YXRlOgogICAgIGludDY0X3QgbV9kYXRhYmFzZUlk
OwogICAgIGludDY0X3QgbV9pZDsKICAgICBTdHJpbmcgbV9uYW1lOwotICAgIFN0cmluZyBtX2tl
eVBhdGg7CisgICAgSURCS2V5UGF0aCBtX2tleVBhdGg7CiAgICAgYm9vbCBtX2F1dG9JbmNyZW1l
bnQ7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8SURCSW5kZXhCYWNrZW5k
SW1wbD4gPiBJbmRleE1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmgKaW5kZXgg
YmQwOWZjMmVmNGUxYTQyNGVhMmVhNjQzMDQ2NzIyNTUwNjExZDcwYy4uNWU1ZDk4ZTg4ZGNhNjI0
NzAwOGMxODYyOTJhMjQxOTE1MWY3MDVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJm
YWNlLmgKQEAgLTM3LDYgKzM3LDcgQEAgY2xhc3MgRE9NU3RyaW5nTGlzdDsKIGNsYXNzIElEQkNh
bGxiYWNrczsKIGNsYXNzIElEQkluZGV4QmFja2VuZEludGVyZmFjZTsKIGNsYXNzIElEQktleTsK
K2NsYXNzIElEQktleVBhdGg7CiBjbGFzcyBJREJLZXlSYW5nZTsKIGNsYXNzIElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZTsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKQEAgLTQ4
LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfklEQk9iamVjdFN0b3JlQmFja2VuZElu
dGVyZmFjZSgpIHsgfQogCiAgICAgdmlydHVhbCBTdHJpbmcgbmFtZSgpIGNvbnN0ID0gMDsKLSAg
ICB2aXJ0dWFsIFN0cmluZyBrZXlQYXRoKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgSURCS2V5
UGF0aCBrZXlQYXRoKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxET01TdHJp
bmdMaXN0PiBpbmRleE5hbWVzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBhdXRvSW5j
cmVtZW50KCkgY29uc3QgPSAwOwogCkBAIC02NSw3ICs2Niw3IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgdm9pZCBjbGVhcihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAKLSAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVJbmRleChjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlF
bnRyeSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpID0g
MDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBjcmVh
dGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIHVuaXF1
ZSwgYm9vbCBtdWx0aUVudHJ5LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNl
cHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJ
bnRlcmZhY2U+IGluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikgPSAwOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EaWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuY3BwCmluZGV4IDEwYWFmZThkYzZjMjgxZWZl
NzFkNDlmYjkyZjRiYjk1Njc1ODc1MTQuLmRjNzI0ZmE5NWJiMzFlMGM0NGJiOGNmNjMzYjY3MGFm
YTQ5NTkwZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25h
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuY3BwCkBA
IC00MjQsNiArNDI0LDIzIEBAIGJvb2wgRGljdGlvbmFyeTo6Z2V0KGNvbnN0IFN0cmluZyYga2V5
LCBEaWN0aW9uYXJ5JiB2YWx1ZSkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBE
aWN0aW9uYXJ5OjpnZXQoY29uc3QgU3RyaW5nJiBrZXksIFZlY3RvcjxTdHJpbmc+JiB2YWx1ZSkg
Y29uc3QKK3sKKyAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2OFZhbHVlOworICAgIGlmICghZ2V0
S2V5KGtleSwgdjhWYWx1ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghdjhW
YWx1ZS0+SXNBcnJheSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB2ODo6TG9jYWw8
djg6OkFycmF5PiB2OEFycmF5ID0gdjg6OkxvY2FsPHY4OjpBcnJheT46OkNhc3QodjhWYWx1ZSk7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2OEFycmF5LT5MZW5ndGgoKTsgKytpKSB7Cisg
ICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGluZGV4ZWRWYWx1ZSA9IHY4QXJyYXktPkdldCh2
ODo6VWludDMyOjpOZXcoaSkpOworICAgICAgICB2YWx1ZS5hcHBlbmQodjhWYWx1ZVRvV2ViQ29y
ZVN0cmluZyhpbmRleGVkVmFsdWUpKTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KIAog
Ym9vbCBEaWN0aW9uYXJ5OjpnZXRPd25Qcm9wZXJ0aWVzQXNTdHJpbmdIYXNoTWFwKFdURjo6SGFz
aE1hcDxTdHJpbmcsIFN0cmluZz4mIGhhc2hNYXApIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EaWN0aW9uYXJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9EaWN0aW9uYXJ5LmgKaW5kZXggYzRjMzNiMWJiMjA4ZTk2NDBkZmZiODQwNmQ4OTNi
NDEyODMyNzllZS4uZjE1M2VhOWM4Mjk4NDgwODBmMmY1ZTY4NWJjYzZhNzczNDNmNTRhZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFyeS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuaApAQCAtMzMsMTEgKzMzLDExIEBA
CiAjaW5jbHVkZSA8djguaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0F0b21pY1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIERPTVN0cmlu
Z0xpc3Q7CiBjbGFzcyBET01XaW5kb3c7CiBjbGFzcyBJREJLZXlSYW5nZTsKIGNsYXNzIE1lZGlh
S2V5RXJyb3I7CkBAIC04NSw2ICs4NSw3IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIGJvb2wgZ2V0
KGNvbnN0IFN0cmluZyYsIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYpIGNvbnN0OwogICAgIGJvb2wg
Z2V0KGNvbnN0IFN0cmluZyYsIERpY3Rpb25hcnkmKSBjb25zdDsKKyAgICBib29sIGdldChjb25z
dCBTdHJpbmcmLCBWZWN0b3I8U3RyaW5nPiYpIGNvbnN0OwogICAgIGJvb2wgZ2V0T3duUHJvcGVy
dGllc0FzU3RyaW5nSGFzaE1hcChXVEY6Okhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JikgY29uc3Q7
CiAKICAgICBib29sIGdldFdpdGhVbmRlZmluZWRPck51bGxDaGVjayhjb25zdCBTdHJpbmcmLCBT
dHJpbmcmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0lE
QkJpbmRpbmdVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQmlu
ZGluZ1V0aWxpdGllcy5jcHAKaW5kZXggZGY2Nzc4MDMwNTdlMzgwZjNlODlkZDQ1MTcxMWU0Nzkx
ZTQxZWU5NC4uMTViNDNlOTM2MGVkZjk1YjM1ZGQ2ZWJjYmRkMTZiNDlmOGIwZDdjMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5jcHAK
QEAgLTE1MywzMCArMTUzLDQzIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBlbnN1cmVOdGhWYWx1
ZU9uS2V5UGF0aCh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4mIHJvb3RWYWx1ZSwKIAogfSAvLyBhbm9u
eW1vdXMgbmFtZXNwYWNlCiAKLVBhc3NSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJLZXlGcm9tU2Vy
aWFsaXplZFZhbHVlQW5kS2V5UGF0aChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
dmFsdWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBrZXlQYXRoKQorUGFzc1JlZlB0cjxJREJLZXk+
IGNyZWF0ZUlEQktleUZyb21TZXJpYWxpemVkVmFsdWVBbmRLZXlQYXRoKFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCkKIHsK
ICAgICBJREJfVFJBQ0UoImNyZWF0ZUlEQktleUZyb21TZXJpYWxpemVkVmFsdWVBbmRLZXlQYXRo
Iik7CisgICAgQVNTRVJUKGtleVBhdGgudHlwZSgpID09IElEQktleVBhdGg6OlN0cmluZ1R5cGUp
OworICAgIFZlY3RvcjxTdHJpbmc+IGtleVBhdGhFbGVtZW50czsKKyAgICBJREJLZXlQYXRoUGFy
c2VFcnJvciBlcnJvcjsKKyAgICBJREJQYXJzZUtleVBhdGgoa2V5UGF0aC5zdHJpbmcoKSwga2V5
UGF0aEVsZW1lbnRzLCBlcnJvcik7CisgICAgQVNTRVJUKGVycm9yID09IElEQktleVBhdGhQYXJz
ZUVycm9yTm9uZSk7CisKICAgICBWOEF1eGlsaWFyeUNvbnRleHQgY29udGV4dDsKICAgICB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdjhWYWx1ZSh2YWx1ZS0+ZGVzZXJpYWxpemUoKSk7Ci0gICAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHY4S2V5KGdldE50aFZhbHVlT25LZXlQYXRoKHY4VmFsdWUsIGtl
eVBhdGgsIGtleVBhdGguc2l6ZSgpKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4S2V5
KGdldE50aFZhbHVlT25LZXlQYXRoKHY4VmFsdWUsIGtleVBhdGhFbGVtZW50cywga2V5UGF0aEVs
ZW1lbnRzLnNpemUoKSkpOwogICAgIGlmICh2OEtleS5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biAwOwogICAgIHJldHVybiBjcmVhdGVJREJLZXlGcm9tVmFsdWUodjhLZXkpOwogfQogCi1QYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gaW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRW
YWx1ZShQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gdmFsdWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBrZXlQYXRoKQorUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IGluamVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUoUGFz
c1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZh
bHVlLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKQogewogICAgIElEQl9UUkFDRSgiaW5qZWN0
SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZSIpOwotICAgIFY4QXV4aWxpYXJ5Q29udGV4dCBjb250
ZXh0OwotICAgIGlmICgha2V5UGF0aC5zaXplKCkpCisKKyAgICBBU1NFUlQoa2V5UGF0aC50eXBl
KCkgPT0gSURCS2V5UGF0aDo6U3RyaW5nVHlwZSk7CisgICAgVmVjdG9yPFN0cmluZz4ga2V5UGF0
aEVsZW1lbnRzOworICAgIElEQktleVBhdGhQYXJzZUVycm9yIGVycm9yOworICAgIElEQlBhcnNl
S2V5UGF0aChrZXlQYXRoLnN0cmluZygpLCBrZXlQYXRoRWxlbWVudHMsIGVycm9yKTsKKyAgICBB
U1NFUlQoZXJyb3IgPT0gSURCS2V5UGF0aFBhcnNlRXJyb3JOb25lKTsKKworICAgIGlmICgha2V5
UGF0aEVsZW1lbnRzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKKyAgICBWOEF1eGlsaWFy
eUNvbnRleHQgY29udGV4dDsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdjhWYWx1ZSh2YWx1
ZS0+ZGVzZXJpYWxpemUoKSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHBhcmVudChlbnN1
cmVOdGhWYWx1ZU9uS2V5UGF0aCh2OFZhbHVlLCBrZXlQYXRoLCBrZXlQYXRoLnNpemUoKSAtIDEp
KTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcGFyZW50KGVuc3VyZU50aFZhbHVlT25LZXlQ
YXRoKHY4VmFsdWUsIGtleVBhdGhFbGVtZW50cywga2V5UGF0aEVsZW1lbnRzLnNpemUoKSAtIDEp
KTsKICAgICBpZiAocGFyZW50LklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBp
ZiAoIXNldChwYXJlbnQsIGtleVBhdGgubGFzdCgpLCB0b1Y4KGtleS5nZXQoKSkpKQorICAgIGlm
ICghc2V0KHBhcmVudCwga2V5UGF0aEVsZW1lbnRzLmxhc3QoKSwgdG9WOChrZXkuZ2V0KCkpKSkK
ICAgICAgICAgcmV0dXJuIDA7CiAKICAgICByZXR1cm4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpj
cmVhdGUodjhWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9J
REJCaW5kaW5nVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JREJCaW5k
aW5nVXRpbGl0aWVzLmgKaW5kZXggNDcyODZhNTgyMzhmMGEwMjRlMjEzODA1MDVmYmI5NmVhNzY3
ZjVhYi4uMzBlZWQ0MjFiNDViMDkwMzAxMWJkMjQ5YmJhMGQ3NGMyM2JhMjc0ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMuaApAQCAtMzQs
MTEgKzM0LDEyIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElEQktleTsKK2NsYXNz
IElEQktleVBhdGg7CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CiAKIFBhc3NSZWZQdHI8
SURCS2V5PiBjcmVhdGVJREJLZXlGcm9tVmFsdWUodjg6OkhhbmRsZTx2ODo6VmFsdWU+KTsKLVBh
c3NSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJLZXlGcm9tU2VyaWFsaXplZFZhbHVlQW5kS2V5UGF0
aChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sICBjb25zdCBWZWN0b3I8U3RyaW5n
LCAwPiYpOwotUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGluamVjdElEQktleUlu
dG9TZXJpYWxpemVkVmFsdWUoUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4sIGNvbnN0IFZlY3RvcjxTdHJpbmcsIDA+Jik7CitQYXNzUmVmUHRyPElE
QktleT4gY3JlYXRlSURCS2V5RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtleVBhdGgoUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBjb25zdCBJREJLZXlQYXRoJik7CitQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gaW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShQ
YXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgY29u
c3QgSURCS2V5UGF0aCYpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOElEQkFueUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhJREJBbnlDdXN0b20uY3BwCmluZGV4IDE0MzQwNTQzMDU3NzMyNzk3Y2E4
MWU4MmJjOGM4YjE3OWY0NmE3MjMuLjFlMzdjZGZiZmVjMDFmZTlhYzRjZTk2ZWFhMmNjNmI5MTM4
NDFkZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOElE
QkFueUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SURCQW55Q3VzdG9tLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIlY4SURCQW55Lmgi
CiAKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlICJWOEJpbmRp
bmcuaCIKICNpbmNsdWRlICJWOERPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJWOElEQkN1cnNv
ci5oIgogI2luY2x1ZGUgIlY4SURCQ3Vyc29yV2l0aFZhbHVlLmgiCkBAIC03NCw2ICs3NSw4IEBA
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KElEQkFueSogaW1wbCwgdjg6Oklzb2xhdGUqIGlz
b2xhdGUpCiAgICAgICAgIHJldHVybiB0b1Y4KGltcGwtPmlkYlRyYW5zYWN0aW9uKCksIGlzb2xh
dGUpOwogICAgIGNhc2UgSURCQW55OjpTZXJpYWxpemVkU2NyaXB0VmFsdWVUeXBlOgogICAgICAg
ICByZXR1cm4gaW1wbC0+c2VyaWFsaXplZFNjcmlwdFZhbHVlKCktPmRlc2VyaWFsaXplKDAsIGlz
b2xhdGUpOworICAgIGNhc2UgSURCQW55OjpTdHJpbmdUeXBlOgorICAgICAgICByZXR1cm4gdjhT
dHJpbmcoaW1wbC0+c3RyaW5nKCkpOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTVN0cmluZ0xpc3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9ET01TdHJpbmdMaXN0LmgKaW5kZXggMDU3ZGFjNDllY2ZmMmU1NjQ0ZDFm
NThhZDRmNGFkYjU5ZjBkYmMzYi4uNDY0ZmEyMmRiMjU2NjE2YTA1MzcxOGI3OWIyZDkzM2Y0ZjIx
MDUxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTVN0cmluZ0xpc3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NU3RyaW5nTGlzdC5oCkBAIC01Miw2ICs1Miw4IEBAIHB1
YmxpYzoKICAgICBTdHJpbmcgaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CiAgICAgYm9vbCBj
b250YWlucyhjb25zdCBTdHJpbmcmIHN0cikgY29uc3Q7CiAKKyAgICBvcGVyYXRvciBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZ3M7IH0KKwogcHJpdmF0ZToK
ICAgICBET01TdHJpbmdMaXN0KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCmluZGV4IGQ5ZWE0YjMxYTI5MmMzZTM3
YzEzNzVkY2M2MWNmOTg0MjRmY2I1M2YuLmNiZDkyY2YyZDdiNjIzNjk5ZTcyYjY3NDg1MzVjZWEy
NTQ5MzAwNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bmRleGVkREJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluZGV4ZWREQkFnZW50LmNwcApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIklEQkZhY3Rv
cnlCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCSW5kZXhCYWNrZW5kSW50ZXJmYWNl
LmgiCiAjaW5jbHVkZSAiSURCS2V5LmgiCisjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgogI2luY2x1
ZGUgIklEQktleVJhbmdlLmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJm
YWNlLmgiCiAjaW5jbHVkZSAiSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvci5oIgpAQCAtMjI1
LDYgKzIyNiwyNSBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+
IGluZGV4Rm9yT2JqZWN0U3RvcmUoSURCT2JqZWN0U3RvcmVCYQogICAgIHJldHVybiBpZGJJbmRl
eDsKIH0KIAorc3RhdGljIFN0cmluZyBrZXlQYXRoVG9TdHJpbmcoY29uc3QgSURCS2V5UGF0aCYg
a2V5UGF0aCkKK3sKKyAgICAvLyBGSVhNRTogUmVwbGFjZSB3aXRoIGhhbmRsZXJzIGZvciBudWxs
L3N0cmluZy9hcnJheSB0eXBlcy4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODQzMDMKKyAgICBzd2l0Y2ggKGtleVBhdGgudHlwZSgpKSB7CisgICAgY2Fz
ZSBJREJLZXlQYXRoOjpOdWxsVHlwZToKKyAgICAgICAgcmV0dXJuICIobm9uZSkiOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIElEQktleVBhdGg6OlN0cmluZ1R5cGU6CisgICAgICAgIHJldHVy
biBrZXlQYXRoLnN0cmluZygpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIElEQktleVBhdGg6
OkFycmF5VHlwZToKKyAgICAgICAgcmV0dXJuICJbLi4uXSI7CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisK
IGNsYXNzIERhdGFiYXNlTG9hZGVyQ2FsbGJhY2sgOiBwdWJsaWMgRXhlY3V0YWJsZVdpdGhEYXRh
YmFzZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RGF0YWJhc2VMb2FkZXJDYWxs
YmFjaz4gY3JlYXRlKEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpGcm9udGVuZFByb3ZpZGVyKiBm
cm9udGVuZFByb3ZpZGVyLCBpbnQgcmVxdWVzdElkKQpAQCAtMjYwLDcgKzI4MCw3IEBAIHB1Ymxp
YzoKIAogICAgICAgICAgICAgICAgIFJlZlB0cjxPYmplY3RTdG9yZUluZGV4PiBvYmplY3RTdG9y
ZUluZGV4ID0gT2JqZWN0U3RvcmVJbmRleDo6Y3JlYXRlKCkKICAgICAgICAgICAgICAgICAgICAg
LnNldE5hbWUoaWRiSW5kZXgtPm5hbWUoKSkKLSAgICAgICAgICAgICAgICAgICAgLnNldEtleVBh
dGgoaWRiSW5kZXgtPmtleVBhdGgoKSkKKyAgICAgICAgICAgICAgICAgICAgLnNldEtleVBhdGgo
a2V5UGF0aFRvU3RyaW5nKGlkYkluZGV4LT5rZXlQYXRoKCkpKQogICAgICAgICAgICAgICAgICAg
ICAuc2V0VW5pcXVlKGlkYkluZGV4LT51bmlxdWUoKSkKICAgICAgICAgICAgICAgICAgICAgLnNl
dE11bHRpRW50cnkoaWRiSW5kZXgtPm11bHRpRW50cnkoKSk7CiAgICAgICAgICAgICAgICAgaW5k
ZXhlcy0+YWRkSXRlbShvYmplY3RTdG9yZUluZGV4KTsKQEAgLTI2OCw3ICsyODgsNyBAQCBwdWJs
aWM6CiAKICAgICAgICAgICAgIFJlZlB0cjxPYmplY3RTdG9yZT4gb2JqZWN0U3RvcmUgPSBPYmpl
Y3RTdG9yZTo6Y3JlYXRlKCkKICAgICAgICAgICAgICAgICAuc2V0TmFtZShpZGJPYmplY3RTdG9y
ZS0+bmFtZSgpKQotICAgICAgICAgICAgICAgIC5zZXRLZXlQYXRoKGlkYk9iamVjdFN0b3JlLT5r
ZXlQYXRoKCkpCisgICAgICAgICAgICAgICAgLnNldEtleVBhdGgoa2V5UGF0aFRvU3RyaW5nKGlk
Yk9iamVjdFN0b3JlLT5rZXlQYXRoKCkpKQogICAgICAgICAgICAgICAgIC5zZXRJbmRleGVzKGlu
ZGV4ZXMpOwogICAgICAgICAgICAgb2JqZWN0U3RvcmVzLT5hZGRJdGVtKG9iamVjdFN0b3JlKTsK
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
UGxhdGZvcm1TdXBwb3J0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0
Zm9ybVN1cHBvcnQuaAppbmRleCBmOGI1YjdlOTg3YzZmMzZjYTk0NTE3MTQ5ODAxMjZlM2UxYWJh
YTU3Li41MGMwYTBiNDE5YmFkYWVjYjg1NmNjOGE2ODYzMWVlYjk5MGZiZDYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaApAQCAt
NzgsNiArNzgsNyBAQCBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJbWFnZTsKIGNsYXNz
IElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlOwogY2xhc3MgSURCS2V5OworY2xhc3MgSURCS2V5
UGF0aDsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBLVVJMOwogY2xhc3MgU2VyaWFsaXplZFNjcmlw
dFZhbHVlOwpAQCAtMTc4LDkgKzE3OSw5IEBAIHB1YmxpYzoKICAgICAvLyBJbmRleGVkREIgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlPiBpZGJGYWN0
b3J5KCk7CiAgICAgLy8gRXh0cmFjdHMga2V5UGF0aCBmcm9tIHZhbHVlcyBhbmQgcmV0dXJucyB0
aGUgY29ycmVzcG9uZGluZyBrZXlzLgotICAgIHN0YXRpYyB2b2lkIGNyZWF0ZUlEQktleXNGcm9t
U2VyaWFsaXplZFZhbHVlc0FuZEtleVBhdGgoY29uc3QgVmVjdG9yPFJlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+ID4mIHZhbHVlcywgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBWZWN0b3I8UmVm
UHRyPElEQktleT4gPiYga2V5cyk7CisgICAgc3RhdGljIHZvaWQgY3JlYXRlSURCS2V5c0Zyb21T
ZXJpYWxpemVkVmFsdWVzQW5kS2V5UGF0aChjb25zdCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gPiYgdmFsdWVzLCBjb25zdCBJREJLZXlQYXRoJiwgVmVjdG9yPFJlZlB0cjxJ
REJLZXk+ID4mIGtleXMpOwogICAgIC8vIEluamVjdHMga2V5IHZpYSBrZXlQYXRoIGludG8gdmFs
dWUuIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gaW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShQYXNzUmVm
UHRyPElEQktleT4sIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgY29uc3QgU3Ry
aW5nJiBrZXlQYXRoKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IGluamVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUoUGFzc1JlZlB0cjxJREJLZXk+LCBQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIGNvbnN0IElEQktleVBhdGgmKTsKIAog
ICAgIC8vIEphdmFTY3JpcHQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgc3RhdGljIHZvaWQgbm90aWZ5SlNPdXRPZk1lbW9yeShG
cmFtZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9jaHJvbWl1bS9JREJL
ZXlQYXRoQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9jaHJvbWl1bS9J
REJLZXlQYXRoQmFja2VuZEltcGwuY3BwCmluZGV4IGI4MDRhMGZmOGExNGZhNzcyMjU4MmQyZGMy
NGU0ZWY4MWVhYTMwOTQuLmM4NmM3N2Q5NzczOWI1NTQ0MjBkNTg5YzcwOWEzZTdmMDZkZDFiZTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvY2hyb21pdW0vSURCS2V5UGF0aEJh
Y2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL2Nocm9taXVtL0lEQktl
eVBhdGhCYWNrZW5kSW1wbC5jcHAKQEAgLTM0LDEyICszNCwxMiBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLXZvaWQgSURCS2V5UGF0aEJhY2tlbmRJbXBsOjpjcmVhdGVJREJLZXlzRnJvbVNl
cmlhbGl6ZWRWYWx1ZXNBbmRLZXlQYXRoKGNvbnN0IFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiwgMD4mIHZhbHVlcywgIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgVmVjdG9yPFJl
ZlB0cjxJREJLZXk+LCAwPiYga2V5cykKK3ZvaWQgSURCS2V5UGF0aEJhY2tlbmRJbXBsOjpjcmVh
dGVJREJLZXlzRnJvbVNlcmlhbGl6ZWRWYWx1ZXNBbmRLZXlQYXRoKGNvbnN0IFZlY3RvcjxSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgMD4mIHZhbHVlcywgY29uc3QgSURCS2V5UGF0aCYg
a2V5UGF0aCwgVmVjdG9yPFJlZlB0cjxJREJLZXk+LCAwPiYga2V5cykKIHsKICAgICBQbGF0Zm9y
bVN1cHBvcnQ6OmNyZWF0ZUlEQktleXNGcm9tU2VyaWFsaXplZFZhbHVlc0FuZEtleVBhdGgodmFs
dWVzLCBrZXlQYXRoLCBrZXlzKTsKIH0KIAotUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IElEQktleVBhdGhCYWNrZW5kSW1wbDo6aW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1
ZShQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gdmFsdWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKK1Bhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBJREJLZXlQYXRoQmFja2VuZEltcGw6OmluamVjdElEQktleUludG9TZXJpYWxp
emVkVmFsdWUoUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IHZhbHVlLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKQogewogICAgIHJldHVy
biBQbGF0Zm9ybVN1cHBvcnQ6OmluamVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUoa2V5LCB2
YWx1ZSwga2V5UGF0aCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJJREJEYXRhYmFzZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
SURCRGF0YWJhc2UuaAppbmRleCBmNTNiMDJlMzlhN2I3MmZhZWRmYjVmYmMwZjA0ZThmYTMwZGEz
MTEzLi5iMzk4NTM0MTY1NTQzYTE5N2E2MTc5N2Q1NDc0OWRhODVlM2EzNTZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmgKQEAgLTI4LDcgKzI4
LDYgQEAKIAogI2luY2x1ZGUgIldlYkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJXZWJFeGNl
cHRpb25Db2RlLmgiCi0jaW5jbHVkZSAiV2ViSURCS2V5UGF0aC5oIgogI2luY2x1ZGUgInBsYXRm
b3JtL1dlYkNvbW1vbi5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTM2LDYgKzM1LDcgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYklEQkNhbGxiYWNr
czsKIGNsYXNzIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzOworY2xhc3MgV2ViSURCS2V5UGF0aDsK
IGNsYXNzIFdlYklEQk9iamVjdFN0b3JlOwogY2xhc3MgV2ViSURCVHJhbnNhY3Rpb247CiAKQEAg
LTU5LDEyICs1OSw2IEBAIHB1YmxpYzoKICAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICByZXR1cm4gV2ViRE9NU3RyaW5nTGlzdCgpOwogICAgIH0KLSAgICAvLyBG
SVhNRTogUmVtb3ZlIFdlYlN0cmluZyBrZXlQYXRoIG92ZXJsb2FkIG9uY2UgY2FsbGVycyBhcmUg
dXBkYXRlZC4KLSAgICAvLyBodHRwOi8vd2Via2l0Lm9yZy9iLzg0MjA3Ci0gICAgdmlydHVhbCBX
ZWJJREJPYmplY3RTdG9yZSogY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5nJiBuYW1l
LCBjb25zdCBXZWJTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgY29uc3QgV2Vi
SURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBXZWJFeGNlcHRpb25Db2RlJiBlYykKLSAgICB7
Ci0gICAgICAgIHJldHVybiBjcmVhdGVPYmplY3RTdG9yZShuYW1lLCBXZWJJREJLZXlQYXRoKGtl
eVBhdGgpLCBhdXRvSW5jcmVtZW50LCB0cmFuc2FjdGlvbiwgZWMpOwotICAgIH0KICAgICB2aXJ0
dWFsIFdlYklEQk9iamVjdFN0b3JlKiBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcm
LCBjb25zdCBXZWJJREJLZXlQYXRoJiwgYm9vbCwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBX
ZWJFeGNlcHRpb25Db2RlJikKICAgICB7CiAgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQklu
ZGV4LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJJbmRleC5oCmluZGV4
IDJiMWY5YjRjMGVkZDYxM2VhYWE0MDE4YjM4NTI3ZmJjZTFjNDgxNjUuLmIxMDA4MDg0MmFhZTQx
OTA5MGYxOTIwYWI1ZGM4MmMwNjQ3YTU0YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYklEQkluZGV4LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViSURCSW5kZXguaApAQCAtNDksMTQgKzQ5LDggQEAgcHVibGljOgogICAgIH0KICAg
ICB2aXJ0dWFsIFdlYklEQktleVBhdGgga2V5UGF0aCgpIGNvbnN0CiAgICAgewotICAgICAgICBy
ZXR1cm4gV2ViSURCS2V5UGF0aChrZXlQYXRoU3RyaW5nKCkpOwotICAgIH0KLSAgICAvLyBGSVhN
RTogUmVtb3ZlIG1ldGhvZCBvbmNlIGNhbGxlcnMgYXJlIHVwZGF0ZWQuCi0gICAgLy8gaHR0cDov
L3dlYmtpdC5vcmcvYi84NDIwNwotICAgIHZpcnR1YWwgV2ViU3RyaW5nIGtleVBhdGhTdHJpbmco
KSBjb25zdAotICAgIHsKICAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICByZXR1cm4gV2ViU3RyaW5nKCk7CisgICAgICAgIHJldHVybiBXZWJJREJLZXlQYXRoOjpj
cmVhdGVOdWxsKCk7CiAgICAgfQogICAgIHZpcnR1YWwgYm9vbCB1bmlxdWUoKSBjb25zdAogICAg
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQktleVBh
dGguaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQktleVBhdGguaAppbmRl
eCA5N2JhYzA2ZmZlODRhM2ZkMGQyM2EzZjE0YWQxMjk3MzkzNGYyYWU1Li5iZWIxZmEyMmQ4ZDA5
MWMyMGVkMWU1NWNjMmIzMDc3MTBiOWRkZjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJJREJLZXlQYXRoLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViSURCS2V5UGF0aC5oCkBAIC0zNiw2ICszNiw4IEBAIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gY2xhc3MgVmVjdG9yOwogY2xhc3MgU3RyaW5n
OwogfQogCituYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIElEQktleVBhdGg7IH0KKwogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYklEQktleVBhdGggewpAQCAtNDQsNyArNDYsNyBAQCBw
dWJsaWM6CiAgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViSURCS2V5UGF0aCBjcmVhdGUoY29u
c3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mKTsKICAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJJ
REJLZXlQYXRoIGNyZWF0ZU51bGwoKTsKICAgICBXRUJLSVRfRVhQT1JUIFdlYklEQktleVBhdGgo
Y29uc3QgV2ViSURCS2V5UGF0aCYpOwotICAgIH5XZWJJREJLZXlQYXRoKCkgeyByZXNldCgpOyB9
CisgICAgV0VCS0lUX0VYUE9SVCB+V2ViSURCS2V5UGF0aCgpOwogCiAgICAgZW51bSBUeXBlIHsK
ICAgICAgICAgTnVsbFR5cGUgPSAwLApAQCAtNTQsMzAgKzU2LDE3IEBAIHB1YmxpYzoKIAogICAg
IFdFQktJVF9FWFBPUlQgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CiAgICAgV0VCS0lUX0VYUE9SVCBU
eXBlIHR5cGUoKSBjb25zdDsKLSAgICAvLyBGSVhNRTogQXJyYXktdHlwZSBrZXkgcGF0aHMgbm90
IHlldCBzdXBwb3J0ZWQuIGh0dHA6Ly93ZWJraXQub3JnL2IvODQyMDcKLSAgICBXZWJWZWN0b3I8
V2ViU3RyaW5nPiBhcnJheSgpIGNvbnN0IHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyBy
ZXR1cm4gV2ViVmVjdG9yPFdlYlN0cmluZz4oKTsgfQotICAgIFdFQktJVF9FWFBPUlQgV2ViU3Ry
aW5nIHN0cmluZygpIGNvbnN0OwotCi0gICAgLy8gRklYTUU6IFJlbW92ZSB0aGVzZSBvbmNlIGNh
bGxlcnMgYXJlIHVwZGF0ZWQuIGh0dHA6Ly93ZWJraXQub3JnL2IvODQyMDcKLSAgICBXRUJLSVRf
RVhQT1JUIFdlYklEQktleVBhdGgoY29uc3QgV2ViU3RyaW5nJik7Ci0gICAgb3BlcmF0b3IgY29u
c3QgV2ViU3RyaW5nICgpIGNvbnN0IHsgcmV0dXJuIHN0cmluZygpOyB9Ci0gICAgV0VCS0lUX0VY
UE9SVCBpbnQgcGFyc2VFcnJvcigpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhc3Np
Z24oY29uc3QgV2ViSURCS2V5UGF0aCYpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXNldCgp
OworICAgIFdFQktJVF9FWFBPUlQgV2ViVmVjdG9yPFdlYlN0cmluZz4gYXJyYXkoKSBjb25zdDsg
Ly8gT25seSB2YWxpZCBmb3IgQXJyYXlUeXBlLgorICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5n
IHN0cmluZygpIGNvbnN0OyAvLyBPbmx5IHZhbGlkIGZvciBTdHJpbmdUeXBlLgogCiAjaWYgV0VC
S0lUX0lNUExFTUVOVEFUSU9OCi0gICAgb3BlcmF0b3IgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpT
dHJpbmcsIDA+JiAoKSBjb25zdDsKKyAgICBXZWJJREJLZXlQYXRoKGNvbnN0IFdlYkNvcmU6OklE
QktleVBhdGgmKTsKKyAgICBXZWJJREJLZXlQYXRoJiBvcGVyYXRvcj0oY29uc3QgV2ViQ29yZTo6
SURCS2V5UGF0aCYpOworICAgIG9wZXJhdG9yIGNvbnN0IFdlYkNvcmU6OklEQktleVBhdGgmKCkg
Y29uc3Q7CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBXZWJJREJLZXlQYXRoKCk7Ci0KLSNpZiBX
RUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBXZWJJREJLZXlQYXRoKGNvbnN0IFdURjo6VmVjdG9y
PFdURjo6U3RyaW5nLCAwPiYsIGludCBwYXJzZUVycm9yKTsKLSNlbmRpZgotCi0gICAgV2ViUHJp
dmF0ZU93blB0cjxXVEY6OlZlY3RvcjxXVEY6OlN0cmluZywgMD4gPiBtX3ByaXZhdGU7Ci0gICAg
aW50IG1fcGFyc2VFcnJvcjsKKyAgICBXZWJQcml2YXRlT3duUHRyPFdlYkNvcmU6OklEQktleVBh
dGg+IG1fcHJpdmF0ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCT2JqZWN0U3RvcmUuaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQk9iamVjdFN0b3JlLmgKaW5kZXggNDAwOGUx
ZDJlNzM2NDU1NWMxYmE2NjBkYWE5M2FkZDg3MzMyZDJiZS4uMGFmNDI2ZTUwNmM3YjdlMGYxODg4
ZWI2ZDQ3OTQyOTk4YzEzOGE2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViSURCT2JqZWN0U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJJREJPYmplY3RTdG9yZS5oCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiV2Vi
RE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIldlYklEQkNhbGxiYWNrcy5oIgogI2luY2x1ZGUg
IldlYklEQktleVBhdGguaCIKLSNpbmNsdWRlICJXZWJJREJUcmFuc2FjdGlvbi5oIgogI2luY2x1
ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5o
IgogCkBAIC01MSwxMiArNTAsOCBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgV2ViSURC
S2V5UGF0aCBrZXlQYXRoKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBXZWJJREJLZXlQ
YXRoKGtleVBhdGhTdHJpbmcoKSk7Ci0gICAgfQotICAgIHZpcnR1YWwgV2ViU3RyaW5nIGtleVBh
dGhTdHJpbmcoKSBjb25zdAotICAgIHsKICAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICByZXR1cm4gV2ViU3RyaW5nKCk7CisgICAgICAgIHJldHVybiBXZWJJREJL
ZXlQYXRoOjpjcmVhdGVOdWxsKCk7CiAgICAgfQogICAgIHZpcnR1YWwgV2ViRE9NU3RyaW5nTGlz
dCBpbmRleE5hbWVzKCkgY29uc3QKICAgICB7CkBAIC04MSwxMyArNzYsNiBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1bmN0aW9uKGNvbnN0IFdlYklEQktleSYsIFdlYklEQkNh
bGxiYWNrcyosIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpIHsg
V0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1
bmN0aW9uKGNvbnN0IFdlYklEQktleVJhbmdlJiwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2Vi
SURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJikgeyBXRUJLSVRfQVNTRVJUX05PVF9S
RUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2xlYXIoV2ViSURCQ2FsbGJhY2tzKiwgY29u
c3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJikgeyBXRUJLSVRfQVNTRVJU
X05PVF9SRUFDSEVEKCk7IH0KLQotICAgIC8vIEZJWE1FOiBSZW1vdmUgV2ViU3RyaW5nIGtleVBh
dGggb3ZlcmxvYWQgb25jZSBjYWxsZXJzIGFyZSB1cGRhdGVkLgotICAgIC8vIGh0dHA6Ly93ZWJr
aXQub3JnL2IvODQyMDcKLSAgICB2aXJ0dWFsIFdlYklEQkluZGV4KiBjcmVhdGVJbmRleChjb25z
dCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUs
IGJvb2wgbXVsdGlFbnRyeSwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBX
ZWJFeGNlcHRpb25Db2RlJiBlYykKLSAgICB7Ci0gICAgICAgIHJldHVybiBjcmVhdGVJbmRleChu
YW1lLCBXZWJJREJLZXlQYXRoKGtleVBhdGgpLCB1bmlxdWUsIG11bHRpRW50cnksIHRyYW5zYWN0
aW9uLCBlYyk7Ci0gICAgfQogICAgIHZpcnR1YWwgV2ViSURCSW5kZXgqIGNyZWF0ZUluZGV4KGNv
bnN0IFdlYlN0cmluZyYsIGNvbnN0IFdlYklEQktleVBhdGgmLCBib29sLCBib29sLCBjb25zdCBX
ZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKQogICAgIHsKICAgICAgICAgV0VC
S0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmggYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaAppbmRl
eCA0MzI4MjMxNWZjZjk4Nzk2NjA2ZWEyNDgyODgwMTQ2MmU0MjQwZDA5Li41NTZjYzg5OTlkZDk4
NGQ1NTZhOGM2YTM3NzRmZGMzYzQ0ZDU4MWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQu
aApAQCAtMzEsNyArMzEsNiBAQAogI2lmbmRlZiBXZWJLaXRQbGF0Zm9ybVN1cHBvcnRfaAogI2Rl
ZmluZSBXZWJLaXRQbGF0Zm9ybVN1cHBvcnRfaAogCi0jaW5jbHVkZSAiLi4vV2ViSURCS2V5UGF0
aC5oIiAvLyBGSVhNRTogUmVtb3ZlIHdpdGg6IGh0dHA6Ly93ZWJraXQub3JnL2IvODQyMDcKICNp
bmNsdWRlICJXZWJDb21tb24uaCIKICNpbmNsdWRlICJXZWJHcmFwaGljc0NvbnRleHQzRC5oIgog
I2luY2x1ZGUgIldlYkxvY2FsaXplZFN0cmluZy5oIgpAQCAtNTMsNiArNTIsNyBAQCBjbGFzcyBX
ZWJBcHBsaWNhdGlvbkNhY2hlSG9zdENsaWVudDsgLy8gRklYTUU6IERvZXMgdGhpcyBiZWxvbmcg
aW4gcGxhdGZvcm0/CiBjbGFzcyBXZWJDb29raWVKYXI7CiBjbGFzcyBXZWJJREJGYWN0b3J5OyAv
LyBGSVhNRTogRG9lcyB0aGlzIGJlbG9uZyBpbiBwbGF0Zm9ybT8KIGNsYXNzIFdlYklEQktleTsg
Ly8gRklYTUU6IERvZXMgdGhpcyBiZWxvbmcgaW4gcGxhdGZvcm0/CitjbGFzcyBXZWJJREJLZXlQ
YXRoOyAvLyBGSVhNRTogRG9lcyB0aGlzIGJlbG9uZyBpbiBwbGF0Zm9ybT8KIGNsYXNzIFdlYk1l
c3NhZ2VQb3J0Q2hhbm5lbDsgLy8gRklYTUU6IERvZXMgdGhpcyBiZWxvbmcgaW4gcGxhdGZvcm0/
CiBjbGFzcyBXZWJQbHVnaW5MaXN0QnVpbGRlcjsgLy8gRklYTUU6IERvZXMgdGhpcyBiZWxvbmcg
aW4gcGxhdGZvcm0/CiBjbGFzcyBXZWJTYW5kYm94U3VwcG9ydDsKQEAgLTExMSwxMyArMTExLDcg
QEAgcHVibGljOgogICAgIC8vIEluZGV4ZWQgRGF0YWJhc2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAgICAgdmlydHVhbCBXZWJJREJGYWN0
b3J5KiBpZGJGYWN0b3J5KCkgeyByZXR1cm4gMDsgfQotICAgIC8vIEZJWE1FOiBSZW1vdmUgV2Vi
U3RyaW5nIGtleVBhdGggb3ZlcmxvYWQgb25jZSBjYWxsZXJzIGFyZSB1cGRhdGVkLgotICAgIC8v
IGh0dHA6Ly93ZWJraXQub3JnL2IvODQyMDcKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlSURCS2V5
c0Zyb21TZXJpYWxpemVkVmFsdWVzQW5kS2V5UGF0aChjb25zdCBXZWJWZWN0b3I8V2ViU2VyaWFs
aXplZFNjcmlwdFZhbHVlPiYgdmFsdWVzLCAgY29uc3QgV2ViU3RyaW5nJiBrZXlQYXRoLCBXZWJW
ZWN0b3I8V2ViSURCS2V5PiYga2V5cykgeyBjcmVhdGVJREJLZXlzRnJvbVNlcmlhbGl6ZWRWYWx1
ZXNBbmRLZXlQYXRoKHZhbHVlcywgV2ViSURCS2V5UGF0aChrZXlQYXRoKSwga2V5cyk7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgY3JlYXRlSURCS2V5c0Zyb21TZXJpYWxpemVkVmFsdWVzQW5kS2V5UGF0
aChjb25zdCBXZWJWZWN0b3I8V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlPiYgdmFsdWVzLCAgY29u
c3QgV2ViSURCS2V5UGF0aCYga2V5UGF0aCwgV2ViVmVjdG9yPFdlYklEQktleT4mIGtleXMpIHsg
fQotICAgIC8vIEZJWE1FOiBSZW1vdmUgV2ViU3RyaW5nIGtleVBhdGggb3ZlcmxvYWQgb25jZSBj
YWxsZXJzIGFyZSB1cGRhdGVkLgotICAgIC8vIGh0dHA6Ly93ZWJraXQub3JnL2IvODQyMDcKLSAg
ICB2aXJ0dWFsIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBpbmplY3RJREJLZXlJbnRvU2VyaWFs
aXplZFZhbHVlKGNvbnN0IFdlYklEQktleSYga2V5LCBjb25zdCBXZWJTZXJpYWxpemVkU2NyaXB0
VmFsdWUmIHZhbHVlLCBjb25zdCBXZWJTdHJpbmcmIGtleVBhdGgpIHsgcmV0dXJuIGluamVjdElE
QktleUludG9TZXJpYWxpemVkVmFsdWUoa2V5LCB2YWx1ZSwgV2ViSURCS2V5UGF0aChrZXlQYXRo
KSk7IH0KICAgICB2aXJ0dWFsIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBpbmplY3RJREJLZXlJ
bnRvU2VyaWFsaXplZFZhbHVlKGNvbnN0IFdlYklEQktleSYga2V5LCBjb25zdCBXZWJTZXJpYWxp
emVkU2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBXZWJJREJLZXlQYXRoJiBrZXlQYXRoKSB7IHJl
dHVybiBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUoKTsgfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKaW5kZXggY2QwZjA3ZmY2
N2VlYTJiNjc2YjM1ODZmODg5NDA3Y2RiZThlMjA0ZS4uNWJjOTYwYTk2NDA4MWE0ZmVhYjc2ZTEz
MjFlMjk2NWM2ZjFlYTIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
QXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
QXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKQEAgLTUyLDYgKzUyLDcgQEAKICNpbmNsdWRlICJJREJE
YXRhYmFzZUV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNl
LmgiCiAjaW5jbHVkZSAiSURCS2V5LmgiCisjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgogI2luY2x1
ZGUgIkljZU9wdGlvbnMuaCIKICNpbmNsdWRlICJJY29uVVJMLmgiCiAjaW5jbHVkZSAiTWVkaWFQ
bGF5ZXIuaCIKQEAgLTg2LDYgKzg3LDcgQEAKICNpbmNsdWRlICJXZWJJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5oIgogI2luY2x1ZGUgIldlYklEQkZhY3RvcnkuaCIKICNpbmNsdWRlICJXZWJJREJLZXku
aCIKKyNpbmNsdWRlICJXZWJJREJLZXlQYXRoLmgiCiAjaW5jbHVkZSAiV2ViSWNvblVSTC5oIgog
I2luY2x1ZGUgIldlYklucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIldlYk1lZGlhUGxheWVyLmgi
CkBAIC00NjcsMTIgKzQ2OSwxOCBAQCBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlZp
ZXc6OlVzZXJTdHlsZUluamVjdEluU3Vic2VxdWVudERvY3VtZW50cywgSW5qZQogQ09NUElMRV9B
U1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJEYXRhYmFzZUV4Y2VwdGlvbkRhdGFFcnJvciwgSURC
RGF0YWJhc2VFeGNlcHRpb246OkRBVEFfRVJSKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VO
VU0oV2ViSURCRGF0YWJhc2VFeGNlcHRpb25RdW90YUVycm9yLCBJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6UVVPVEFfRVJSKTsKIAorI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogQ09NUElMRV9B
U1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJLZXk6OkludmFsaWRUeXBlLCBJREJLZXk6OkludmFs
aWRUeXBlKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViSURCS2V5OjpBcnJheVR5
cGUsIElEQktleTo6QXJyYXlUeXBlKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2Vi
SURCS2V5OjpTdHJpbmdUeXBlLCBJREJLZXk6OlN0cmluZ1R5cGUpOwogQ09NUElMRV9BU1NFUlRf
TUFUQ0hJTkdfRU5VTShXZWJJREJLZXk6OkRhdGVUeXBlLCBJREJLZXk6OkRhdGVUeXBlKTsKIENP
TVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViSURCS2V5OjpOdW1iZXJUeXBlLCBJREJLZXk6
Ok51bWJlclR5cGUpOwogCitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYklEQktleVBh
dGg6Ok51bGxUeXBlLCBJREJLZXlQYXRoOjpOdWxsVHlwZSk7CitDT01QSUxFX0FTU0VSVF9NQVRD
SElOR19FTlVNKFdlYklEQktleVBhdGg6OlN0cmluZ1R5cGUsIElEQktleVBhdGg6OlN0cmluZ1R5
cGUpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJLZXlQYXRoOjpBcnJheVR5
cGUsIElEQktleVBhdGg6OkFycmF5VHlwZSk7CisjZW5kaWYKKwogI2lmIEVOQUJMRShGSUxFX1NZ
U1RFTSkKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViRmlsZVN5c3RlbTo6VHlwZVRl
bXBvcmFyeSwgRmlsZVN5c3RlbVR5cGVUZW1wb3JhcnkpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTShXZWJGaWxlU3lzdGVtOjpUeXBlUGVyc2lzdGVudCwgRmlsZVN5c3RlbVR5cGVQZXJz
aXN0ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFi
YXNlQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFi
YXNlQmFja2VuZFByb3h5LmNwcAppbmRleCAxNzk3OTkyNzVkNmY5OTc2MzAxNzdlNWEyOGJkOTNi
YTMxNzI2MDRmLi42ZTUzNTQ5OWEzOGM0YTkzNTA5YTZlNGY1NTZjZjk4YWM4ZjIwMDczIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5k
UHJveHkuY3BwCkBAIC03NSw3ICs3NSw3IEBAIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gSURC
RGF0YWJhc2VCYWNrZW5kUHJveHk6Om9iamVjdFN0b3JlTmFtZXMoKSBjb25zdAogICAgIHJldHVy
biBtX3dlYklEQkRhdGFiYXNlLT5vYmplY3RTdG9yZU5hbWVzKCk7CiB9CiAKLVBhc3NSZWZQdHI8
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6
Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBh
dGgsIGJvb2wgYXV0b0luY3JlbWVudCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0
cmFuc2FjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPElEQk9iamVjdFN0b3Jl
QmFja2VuZEludGVyZmFjZT4gSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OmNyZWF0ZU9iamVjdFN0
b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCBh
dXRvSW5jcmVtZW50LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9u
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICAvLyBUaGUgdHJhbnNhY3Rpb24gcG9pbnRlciBp
cyBndWFyYW50ZWVkIHRvIGJlIGEgcG9pbnRlciB0byBhIHByb3h5IG9iamVjdCBhcywgaW4gdGhl
IHJlbmRlcmVyLAogICAgIC8vIGFsbCBpbXBsZW1lbnRhdGlvbnMgb2YgSURCIGludGVyZmFjZXMg
YXJlIHByb3h5IG9iamVjdHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
SURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaAppbmRleCA1YTViYWYyOGYwOTZhOTk0N2ZhYjA1MmZl
ZGIxZTlhZTM3N2VhNjVhLi5iNzhhYzY5OTJjZGNmZjEzODdhOWVjMDhiMzg2OGViNmNmYzQzMzky
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tl
bmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFj
a2VuZFByb3h5LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5n
IHZlcnNpb24oKSBjb25zdDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RE9NU3Ry
aW5nTGlzdD4gb2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0OwogCi0gICAgdmlydHVhbCBQYXNzUmVm
UHRyPFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gY3JlYXRlT2JqZWN0
U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0
b0luY3JlbWVudCwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2Vi
Q29yZTo6RXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgV2ViQ29yZTo6SURCS2V5UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVu
dCwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhj
ZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBT
dHJpbmcmIG5hbWUsIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdl
YkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmVyc2lvbihjb25z
dCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgUGFz
c1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUNhbGxiYWNrcz4sIFdlYkNvcmU6OkV4Y2VwdGlv
bkNvZGUmKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbihXZWJDb3JlOjpET01TdHJpbmdMaXN0KiBzdG9y
ZU5hbWVzLCB1bnNpZ25lZCBzaG9ydCBtb2RlLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJJbmRleEJhY2tlbmRQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJJbmRleEJhY2tlbmRQcm94eS5j
cHAKaW5kZXggZmM3NDZhYTZiMTIzYzRlZmFkYzgyNjdlNmEwNWNjMjBlNmExM2FjYi4uMjgwZGI4
ODFkMmY4NjdhNjBjODA3YWRhNWEwNWFjNGM5ZDM5Njk3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvSURCSW5kZXhCYWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0lEQkluZGV4QmFja2VuZFByb3h5LmNwcApAQCAtMjksNiArMjks
NyBAQAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiSURCQ2FsbGJh
Y2tzLmgiCisjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgogI2luY2x1ZGUgIklEQktleVJhbmdlLmgi
CiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkuaCIKICNpbmNsdWRlICJXZWJJ
REJDYWxsYmFja3NJbXBsLmgiCkBAIC02MCw5ICs2MSw5IEBAIFN0cmluZyBJREJJbmRleEJhY2tl
bmRQcm94eTo6bmFtZSgpCiAgICAgcmV0dXJuIG1fd2ViSURCSW5kZXgtPm5hbWUoKTsKIH0KIAot
U3RyaW5nIElEQkluZGV4QmFja2VuZFByb3h5OjprZXlQYXRoKCkKK0lEQktleVBhdGggSURCSW5k
ZXhCYWNrZW5kUHJveHk6OmtleVBhdGgoKQogewotICAgIHJldHVybiBtX3dlYklEQkluZGV4LT5r
ZXlQYXRoKCkuc3RyaW5nKCk7CisgICAgcmV0dXJuIG1fd2ViSURCSW5kZXgtPmtleVBhdGgoKTsK
IH0KIAogYm9vbCBJREJJbmRleEJhY2tlbmRQcm94eTo6dW5pcXVlKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkluZGV4QmFja2VuZFByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJJbmRleEJhY2tlbmRQcm94eS5oCmluZGV4IGQ1Y2M4YmJm
ZWQ5ZDI1MmYxYWU2MGUzZWMwOGY5YTc5NzEzMDdjNDAuLjI3MzQwNTYwMWNlZGU5ODIxZjEzNzEz
M2M5OTJhNzNhOGUwM2U3NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQkluZGV4QmFja2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
SURCSW5kZXhCYWNrZW5kUHJveHkuaApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShJTkRF
WEVEX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiSURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlLmgiCisj
aW5jbHVkZSAiSURCS2V5UGF0aC5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgogCkBAIC00Miw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5JREJJbmRleEJhY2tlbmRQcm94eSgpOwogCiAgICAgdmlydHVhbCBTdHJpbmcgbmFtZSgp
OwotICAgIHZpcnR1YWwgU3RyaW5nIGtleVBhdGgoKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OklE
QktleVBhdGgga2V5UGF0aCgpOwogICAgIHZpcnR1YWwgYm9vbCB1bmlxdWUoKTsKICAgICB2aXJ0
dWFsIGJvb2wgbXVsdGlFbnRyeSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5jcHAKaW5kZXggMjRmMjNhNTk1
MDc0ZjQ2ZDQ1YjAxM2UwNWUxMWMwYWFiYTU0ZmU2NC4uYzAzYjJmMTNiNTBjNDVkNGM0NDBkMDVk
YjYyYzBiN2EzZGRmYWU0ZiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
SURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0lEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5LmNwcApAQCAtNjQsOSArNjQsOSBAQCBT
dHJpbmcgSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6Om5hbWUoKSBjb25zdAogICAgIHJldHVy
biBtX3dlYklEQk9iamVjdFN0b3JlLT5uYW1lKCk7CiB9CiAKLVN0cmluZyBJREJPYmplY3RTdG9y
ZUJhY2tlbmRQcm94eTo6a2V5UGF0aCgpIGNvbnN0CitJREJLZXlQYXRoIElEQk9iamVjdFN0b3Jl
QmFja2VuZFByb3h5OjprZXlQYXRoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV93ZWJJREJPYmpl
Y3RTdG9yZS0+a2V5UGF0aCgpLnN0cmluZygpOworICAgIHJldHVybiBtX3dlYklEQk9iamVjdFN0
b3JlLT5rZXlQYXRoKCk7CiB9CiAKIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gSURCT2JqZWN0
U3RvcmVCYWNrZW5kUHJveHk6OmluZGV4TmFtZXMoKSBjb25zdApAQCAtMTE5LDcgKzExOSw3IEBA
IHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OmNsZWFyKFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPiBjYWxsYmFja3MsIElEQlRyCiAgICAgbV93ZWJJREJPYmplY3RTdG9yZS0+Y2xlYXIo
bmV3IFdlYklEQkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSwgKnRyYW5zYWN0aW9uUHJveHktPmdl
dFdlYklEQlRyYW5zYWN0aW9uKCksIGVjKTsKIH0KIAotUGFzc1JlZlB0cjxJREJJbmRleEJhY2tl
bmRJbnRlcmZhY2U+IElEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjpjcmVhdGVJbmRleChjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wg
bXVsdGlFbnRyeSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwg
RXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4g
SURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OmNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRy
eSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7CiAgICAgLy8gVGhlIHRyYW5zYWN0aW9uIHBvaW50ZXIgaXMgZ3VhcmFudGVl
ZCB0byBiZSBhIHBvaW50ZXIgdG8gYSBwcm94eSBvYmplY3QgYXMsIGluIHRoZSByZW5kZXJlciwK
ICAgICAvLyBhbGwgaW1wbGVtZW50YXRpb25zIG9mIElEQiBpbnRlcmZhY2VzIGFyZSBwcm94eSBv
YmplY3RzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0
U3RvcmVCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVj
dFN0b3JlQmFja2VuZFByb3h5LmgKaW5kZXggZmI3NzgxZDYwMWE2Yzk0MTM3NGQ2ZjZlZGE4MTNk
YTM0OGQzNDMyNi4uNWQ2Nzk2YzY0NWUwNDU5ZThjNzQyNjA0OTk4MGI5ZjA0MzJlYmY2MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5k
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9yZUJh
Y2tlbmRQcm94eS5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRB
QkFTRSkKIAorI2luY2x1ZGUgIklEQktleVBhdGguaCIKICNpbmNsdWRlICJJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KQEAgLTQzLDcgKzQ0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
fklEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5KCk7CiAKICAgICB2aXJ0dWFsIFN0cmluZyBuYW1l
KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBTdHJpbmcga2V5UGF0aCgpIGNvbnN0OworICAgIHZpcnR1
YWwgV2ViQ29yZTo6SURCS2V5UGF0aCBrZXlQYXRoKCkgY29uc3Q7CiAgICAgdmlydHVhbCBQYXNz
UmVmUHRyPFdlYkNvcmU6OkRPTVN0cmluZ0xpc3Q+IGluZGV4TmFtZXMoKSBjb25zdDsKICAgICB2
aXJ0dWFsIGJvb2wgYXV0b0luY3JlbWVudCgpIGNvbnN0OwogCkBAIC01Myw3ICs1NCw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxXZWJDb3Jl
OjpJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29k
ZSYpOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhcihQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxi
YWNrcz4sIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6
OkV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCSW5kZXhCYWNr
ZW5kSW50ZXJmYWNlPiBjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSwgV2ViQ29yZTo6SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOworICAg
IFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVJbmRl
eChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYkNvcmU6OklEQktleVBhdGgmLCBib29sIHVu
aXF1ZSwgYm9vbCBtdWx0aUVudHJ5LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgV2Vi
Q29yZTo6RXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgZGVsZXRlSW5kZXgoY29uc3QgU3RyaW5n
JiBuYW1lLCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3Jl
OjpFeGNlcHRpb25Db2RlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0
Zm9ybVN1cHBvcnQuY3BwCmluZGV4IGVlYWI3ODYxOTY2YmY0MTgzM2U5YTM4YTJhYjc0ZGUwNWUx
MTc4NjQuLjMzMDNkNDVjYzA0ZDI0MjlmMDBkMWJmZTg4MzQ1Y2UwZjEyNmUyZTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcApAQCAtNDAsNiAr
NDAsNyBAQAogI2luY2x1ZGUgIldlYkZyYW1lQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVJ
bXBsLmgiCiAjaW5jbHVkZSAiV2ViSURCS2V5LmgiCisjaW5jbHVkZSAiV2ViSURCS2V5UGF0aC5o
IgogI2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgIldlYlBsdWdpbkNvbnRhaW5lckltcGwu
aCIKICNpbmNsdWRlICJXZWJQbHVnaW5MaXN0QnVpbGRlckltcGwuaCIKQEAgLTQ5NSw3ICs0OTYs
NyBAQCBQYXNzUmVmUHRyPElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlPiBQbGF0Zm9ybVN1cHBv
cnQ6OmlkYkZhY3RvcnkoKQogICAgIHJldHVybiBJREJGYWN0b3J5QmFja2VuZFByb3h5OjpjcmVh
dGUoKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVN1cHBvcnQ6OmNyZWF0ZUlEQktleXNGcm9tU2VyaWFs
aXplZFZhbHVlc0FuZEtleVBhdGgoY29uc3QgVmVjdG9yPFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+ID4mIHZhbHVlcywgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBWZWN0b3I8UmVmUHRyPElE
QktleT4gPiYga2V5cykKK3ZvaWQgUGxhdGZvcm1TdXBwb3J0OjpjcmVhdGVJREJLZXlzRnJvbVNl
cmlhbGl6ZWRWYWx1ZXNBbmRLZXlQYXRoKGNvbnN0IFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiA+JiB2YWx1ZXMsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIFZlY3RvcjxS
ZWZQdHI8SURCS2V5PiA+JiBrZXlzKQogewogICAgIFdlYlZlY3RvcjxXZWJTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IHdlYlZhbHVlcyA9IHZhbHVlczsKICAgICBXZWJWZWN0b3I8V2ViSURCS2V5PiB3
ZWJLZXlzOwpAQCAtNTA3LDcgKzUwOCw3IEBAIHZvaWQgUGxhdGZvcm1TdXBwb3J0OjpjcmVhdGVJ
REJLZXlzRnJvbVNlcmlhbGl6ZWRWYWx1ZXNBbmRLZXlQYXRoKGNvbnN0IFZlY3RvcjxSCiAgICAg
ICAgIGtleXMuYXBwZW5kKFBhc3NSZWZQdHI8SURCS2V5Pih3ZWJLZXlzW2ldKSk7CiB9CiAKLVBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBQbGF0Zm9ybVN1cHBvcnQ6OmluamVjdElE
QktleUludG9TZXJpYWxpemVkVmFsdWUoUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpCitQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gUGxhdGZvcm1TdXBwb3J0OjppbmplY3RJ
REJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0
aCkKIHsKICAgICByZXR1cm4gd2ViS2l0UGxhdGZvcm1TdXBwb3J0KCktPmluamVjdElEQktleUlu
dG9TZXJpYWxpemVkVmFsdWUoa2V5LCB2YWx1ZSwga2V5UGF0aCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcAppbmRleCA0NDdiOTkz
YzZhNGY5MDdkYzA0M2E3YTJmNTRhYzU2ODZkNjM5ODE5Li40YmU0M2RjMTRkODE3ZDk1OWFlZjU4
YTE2YWVjZjQ4NWJjYjViNmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJREJEYXRhYmFzZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklEQkRhdGFiYXNlSW1wbC5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgV2ViRE9NU3RyaW5nTGlz
dCBXZWJJREJEYXRhYmFzZUltcGw6Om9iamVjdFN0b3JlTmFtZXMoKSBjb25zdAogICAgIHJldHVy
biBtX2RhdGFiYXNlQmFja2VuZC0+b2JqZWN0U3RvcmVOYW1lcygpOwogfQogCi1XZWJJREJPYmpl
Y3RTdG9yZSogV2ViSURCRGF0YWJhc2VJbXBsOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJT
dHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50
LCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIFdlYkV4Y2VwdGlvbkNvZGUm
IGVjKQorV2ViSURCT2JqZWN0U3RvcmUqIFdlYklEQkRhdGFiYXNlSW1wbDo6Y3JlYXRlT2JqZWN0
U3RvcmUoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJJREJLZXlQYXRoJiBrZXlQYXRo
LCBib29sIGF1dG9JbmNyZW1lbnQsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlv
biwgV2ViRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlQmFj
a2VuZEludGVyZmFjZT4gb2JqZWN0U3RvcmUgPSBtX2RhdGFiYXNlQmFja2VuZC0+Y3JlYXRlT2Jq
ZWN0U3RvcmUobmFtZSwga2V5UGF0aCwgYXV0b0luY3JlbWVudCwgdHJhbnNhY3Rpb24uZ2V0SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKCksIGVjKTsKICAgICBpZiAoIW9iamVjdFN0b3Jl
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFz
ZUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5o
CmluZGV4IGY3M2JlNTcwNTRmNjJhYjRjMjU0MTQwMmQ3ZjE0N2Q4NjdhZWYzZDcuLjk2NTcxYmJl
OWMxZDk2Y2JkM2Y5YzdkM2FkODMxNzliOTYxOTNkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oCkBAIC01MywxMCArNTMsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBXZWJTdHJpbmcgdmVyc2lvbigpIGNvbnN0OwogICAgIHZpcnR1YWwg
V2ViRE9NU3RyaW5nTGlzdCBvYmplY3RTdG9yZU5hbWVzKCkgY29uc3Q7CiAKLSAgICAvLyBGSVhN
RTogUmVtb3ZlIFdlYlN0cmluZyBrZXlQYXRoIG92ZXJsb2FkIG9uY2UgY2FsbGVycyBhcmUgdXBk
YXRlZC4KLSAgICAvLyBodHRwOi8vd2Via2l0Lm9yZy9iLzg0MjA3Ci0gICAgdmlydHVhbCBXZWJJ
REJPYmplY3RTdG9yZSogY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5nJiwgY29uc3Qg
V2ViU3RyaW5nJiwgYm9vbCwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25D
b2RlJik7Ci0gICAgdmlydHVhbCBXZWJJREJPYmplY3RTdG9yZSogY3JlYXRlT2JqZWN0U3RvcmUo
Y29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJJREJLZXlQYXRoJiBrZXlQYXRoLCBib29s
IGF1dG9JbmNyZW1lbnQsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgV2Vi
RXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGNyZWF0ZU9iamVjdFN0b3JlKG5hbWUsIGtleVBh
dGguc3RyaW5nKCksIGF1dG9JbmNyZW1lbnQsIHRyYW5zYWN0aW9uLCBlYyk7IH0KKyAgICB2aXJ0
dWFsIFdlYklEQk9iamVjdFN0b3JlKiBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcm
IG5hbWUsIGNvbnN0IFdlYklEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQsIGNvbnN0IFdl
YklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBk
ZWxldGVPYmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYklEQlRyYW5z
YWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWZXJzaW9u
KGNvbnN0IFdlYlN0cmluZyYgdmVyc2lvbiwgV2ViSURCQ2FsbGJhY2tzKiwgV2ViRXhjZXB0aW9u
Q29kZSYpOwogICAgIHZpcnR1YWwgV2ViSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKGNvbnN0
IFdlYkRPTVN0cmluZ0xpc3QmIG5hbWVzLCB1bnNpZ25lZCBzaG9ydCBtb2RlLCBXZWJFeGNlcHRp
b25Db2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJJ
bmRleEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCSW5kZXhJbXBs
LmNwcAppbmRleCA3NTJhODYyNjM3NTllYTUyZjg4OTkzYmU3Y2VhNDExZThhMDYyNjQ3Li43Zjc0
ZTVhNDc5MDI5NmMzOTZhMWQ0N2Q4ZTI4YTA1OTA3MTg4M2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJJbmRleEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklEQkluZGV4SW1wbC5jcHAKQEAgLTU4LDEzICs1OCw2IEBAIFdl
YklEQktleVBhdGggV2ViSURCSW5kZXhJbXBsOjprZXlQYXRoKCkgY29uc3QKICAgICByZXR1cm4g
V2ViSURCS2V5UGF0aChtX2JhY2tlbmQtPmtleVBhdGgoKSk7CiB9CiAKLS8vIEZJWE1FOiBSZW1v
dmUgdGhpcyBtZXRob2Qgb25jZSBjYWxsZXJzIGFyZSB1cGRhdGVkLgotLy8gaHR0cDovL3dlYmtp
dC5vcmcvYi84NDIwNwotV2ViU3RyaW5nIFdlYklEQkluZGV4SW1wbDo6a2V5UGF0aFN0cmluZygp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fYmFja2VuZC0+a2V5UGF0aCgpOwotfQotCiBib29sIFdl
YklEQkluZGV4SW1wbDo6dW5pcXVlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9iYWNrZW5kLT51
bmlxdWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQklu
ZGV4SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCSW5kZXhJbXBsLmgK
aW5kZXggOTBkODM2NjY5OTkwNDAwZTg2MjgwZjVhNGQzMTIxZjkwZWFhN2UyZS4uMDRmZWE1ODJm
MjBmYzczMDc2ZmZjMWVlZTJkMjg5ZDdhODg1MWNmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSURCSW5kZXhJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSURCSW5kZXhJbXBsLmgKQEAgLTQ1LDkgKzQ1LDYgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCBXZWJTdHJpbmcgbmFtZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgV2ViSURCS2V5
UGF0aCBrZXlQYXRoKCkgY29uc3Q7Ci0gICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIG1ldGhvZCBv
bmNlIGNhbGxlcnMgYXJlIHVwZGF0ZWQuCi0gICAgLy8gaHR0cDovL3dlYmtpdC5vcmcvYi84NDIw
NwotICAgIHZpcnR1YWwgV2ViU3RyaW5nIGtleVBhdGhTdHJpbmcoKSBjb25zdDsKICAgICB2aXJ0
dWFsIGJvb2wgdW5pcXVlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIG11bHRpRW50cnkoKSBj
b25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCS2V5
UGF0aC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJLZXlQYXRoLmNwcApp
bmRleCBiY2Y1ZGJkMGQ5ZWM4NmQxYTM5YzgwMWU0YWUwZjc3ZmJkMjQxYjI2Li4xN2MxNThmMzRl
NDg4ZDkwZTMxNzNjZGMzODQ2MWQxYWYyYTNiNzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJREJLZXlQYXRoLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJREJLZXlQYXRoLmNwcApAQCAtMzcsMTAxICszNyw3OSBAQCB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVdlYklEQktleVBhdGggV2Vi
SURCS2V5UGF0aDo6Y3JlYXRlKGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+JikKK1dlYklEQktl
eVBhdGg6On5XZWJJREJLZXlQYXRoKCkKIHsKLSAgICAvLyBGSVhNRTogQXJyYXktdHlwZSBrZXkg
cGF0aHMgbm90IHlldCBzdXBwb3J0ZWQuIGh0dHA6Ly93ZWJraXQub3JnL2IvODQyMDcKLSAgICBX
RUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGNyZWF0ZU51bGwoKTsKKyAg
ICBtX3ByaXZhdGUucmVzZXQoMCk7CiB9CiAKIFdlYklEQktleVBhdGggV2ViSURCS2V5UGF0aDo6
Y3JlYXRlKGNvbnN0IFdlYlN0cmluZyYga2V5UGF0aCkKIHsKLSAgICBpZiAoa2V5UGF0aC5pc051
bGwoKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZU51bGwoKTsKLQotICAgIFdURjo6VmVjdG9yPFdU
Rjo6U3RyaW5nPiBpZGJFbGVtZW50czsKLSAgICBJREJLZXlQYXRoUGFyc2VFcnJvciBpZGJFcnJv
cjsKLSAgICBJREJQYXJzZUtleVBhdGgoa2V5UGF0aCwgaWRiRWxlbWVudHMsIGlkYkVycm9yKTsK
LSAgICByZXR1cm4gV2ViSURCS2V5UGF0aChpZGJFbGVtZW50cywgc3RhdGljX2Nhc3Q8aW50Pihp
ZGJFcnJvcikpOwotfQotCi1XZWJJREJLZXlQYXRoIFdlYklEQktleVBhdGg6OmNyZWF0ZU51bGwo
KQotewotICAgIHJldHVybiBXZWJJREJLZXlQYXRoKFdlYlN0cmluZygpKTsKKyAgICByZXR1cm4g
V2ViSURCS2V5UGF0aChJREJLZXlQYXRoKGtleVBhdGgpKTsKIH0KIAotV2ViSURCS2V5UGF0aDo6
V2ViSURCS2V5UGF0aChjb25zdCBXZWJJREJLZXlQYXRoJiBrZXlQYXRoKQorV2ViSURCS2V5UGF0
aCBXZWJJREJLZXlQYXRoOjpjcmVhdGUoY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIGtleVBh
dGgpCiB7Ci0gICAgYXNzaWduKGtleVBhdGgpOworICAgIFZlY3RvcjxTdHJpbmc+IHN0cmluZ3M7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBrZXlQYXRoLnNpemUoKTsgKytpKQorICAgICAg
ICBzdHJpbmdzLmFwcGVuZChrZXlQYXRoW2ldKTsKKyAgICByZXR1cm4gV2ViSURCS2V5UGF0aChJ
REJLZXlQYXRoKHN0cmluZ3MpKTsKIH0KIAotV2ViSURCS2V5UGF0aDo6V2ViSURCS2V5UGF0aChj
b25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIGVsZW1lbnRzLCBpbnQgcGFyc2VFcnJvcikK
LSAgICA6IG1fcHJpdmF0ZShuZXcgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+KGVsZW1lbnRzKSkK
LSAgICAsIG1fcGFyc2VFcnJvcihwYXJzZUVycm9yKQorV2ViSURCS2V5UGF0aCBXZWJJREJLZXlQ
YXRoOjpjcmVhdGVOdWxsKCkKIHsKKyAgICByZXR1cm4gV2ViSURCS2V5UGF0aChJREJLZXlQYXRo
KCkpOwogfQogCiBib29sIFdlYklEQktleVBhdGg6OmlzVmFsaWQoKSBjb25zdAogewotICAgIHJl
dHVybiBtX3BhcnNlRXJyb3IgPT0gSURCS2V5UGF0aFBhcnNlRXJyb3JOb25lOworICAgIEFTU0VS
VChtX3ByaXZhdGUuZ2V0KCkpOworICAgIHJldHVybiBtX3ByaXZhdGUtPmlzVmFsaWQoKTsKIH0K
IAogV2ViSURCS2V5UGF0aDo6VHlwZSBXZWJJREJLZXlQYXRoOjp0eXBlKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9wcml2YXRlLmdldCgpID8gU3RyaW5nVHlwZSA6IE51bGxUeXBlOworICAgIEFT
U0VSVChtX3ByaXZhdGUuZ2V0KCkpOworICAgIHJldHVybiBUeXBlKG1fcHJpdmF0ZS0+dHlwZSgp
KTsKIH0KIAotV2ViU3RyaW5nIFdlYklEQktleVBhdGg6OnN0cmluZygpIGNvbnN0CisKK1dlYlZl
Y3RvcjxXZWJTdHJpbmc+IFdlYklEQktleVBhdGg6OmFycmF5KCkgY29uc3QKIHsKLSAgICBpZiAo
IW1fcHJpdmF0ZS5nZXQoKSkKLSAgICAgICAgcmV0dXJuIFdlYlN0cmluZygpOwotCi0gICAgLy8g
RklYTUU6IFN0b3JlIHRoZSBjb21wbGV0ZSBzdHJpbmcgaW5zdGVhZCBvZiByZWJ1aWxkaW5nIGl0
LgotICAgIC8vIGh0dHA6Ly93ZWJraXQub3JnL2IvODQyMDcKLSAgICBXVEY6OlN0cmluZyBzdHJp
bmcoIiIpOwotICAgIFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgYXJyYXkgPSAqbV9wcml2YXRl
LmdldCgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXkuc2l6ZSgpOyArK2kpIHsK
LSAgICAgICAgaWYgKGkpCi0gICAgICAgICAgICBzdHJpbmcuYXBwZW5kKCIuIik7Ci0gICAgICAg
IHN0cmluZy5hcHBlbmQoYXJyYXlbaV0pOwotICAgIH0KLSAgICByZXR1cm4gV2ViU3RyaW5nKHN0
cmluZyk7CisgICAgQVNTRVJUKG1fcHJpdmF0ZS5nZXQoKSk7CisgICAgQVNTRVJUKG1fcHJpdmF0
ZS0+dHlwZSgpID09IElEQktleVBhdGg6OkFycmF5VHlwZSk7CisgICAgcmV0dXJuIG1fcHJpdmF0
ZS0+YXJyYXkoKTsKIH0KIAotV2ViSURCS2V5UGF0aDo6V2ViSURCS2V5UGF0aChjb25zdCBXZWJT
dHJpbmcmIGtleVBhdGgpCi0gICAgOiBtX3BhcnNlRXJyb3IoSURCS2V5UGF0aFBhcnNlRXJyb3JO
b25lKQorV2ViU3RyaW5nIFdlYklEQktleVBhdGg6OnN0cmluZygpIGNvbnN0CiB7Ci0gICAgaWYg
KCFrZXlQYXRoLmlzTnVsbCgpKSB7Ci0gICAgICAgIG1fcHJpdmF0ZS5yZXNldChuZXcgV1RGOjpW
ZWN0b3I8V1RGOjpTdHJpbmc+KCkpOwotICAgICAgICBJREJLZXlQYXRoUGFyc2VFcnJvciBpZGJQ
YXJzZUVycm9yOwotICAgICAgICBJREJQYXJzZUtleVBhdGgoa2V5UGF0aCwgKm1fcHJpdmF0ZS5n
ZXQoKSwgaWRiUGFyc2VFcnJvcik7Ci0gICAgICAgIG1fcGFyc2VFcnJvciA9IGlkYlBhcnNlRXJy
b3I7Ci0gICAgfQorICAgIEFTU0VSVChtX3ByaXZhdGUuZ2V0KCkpOworICAgIEFTU0VSVChtX3By
aXZhdGUtPnR5cGUoKSA9PSBJREJLZXlQYXRoOjpTdHJpbmdUeXBlKTsKKyAgICByZXR1cm4gbV9w
cml2YXRlLT5zdHJpbmcoKTsKIH0KIAotaW50IFdlYklEQktleVBhdGg6OnBhcnNlRXJyb3IoKSBj
b25zdAorV2ViSURCS2V5UGF0aDo6V2ViSURCS2V5UGF0aChjb25zdCBXZWJJREJLZXlQYXRoJiBr
ZXlQYXRoKQorICAgIDogbV9wcml2YXRlKG5ldyBJREJLZXlQYXRoKGtleVBhdGgpKQogewotICAg
IHJldHVybiBtX3BhcnNlRXJyb3I7CisgICAgQVNTRVJUKG1fcHJpdmF0ZS5nZXQoKSk7CiB9CiAK
LXZvaWQgV2ViSURCS2V5UGF0aDo6YXNzaWduKGNvbnN0IFdlYklEQktleVBhdGgmIGtleVBhdGgp
CitXZWJJREJLZXlQYXRoOjpXZWJJREJLZXlQYXRoKGNvbnN0IFdlYkNvcmU6OklEQktleVBhdGgm
IHZhbHVlKQorICAgIDogbV9wcml2YXRlKG5ldyBJREJLZXlQYXRoKHZhbHVlKSkKIHsKLSAgICBt
X3BhcnNlRXJyb3IgPSBrZXlQYXRoLm1fcGFyc2VFcnJvcjsKLSAgICBpZiAoa2V5UGF0aC5tX3By
aXZhdGUuZ2V0KCkpCi0gICAgICAgIG1fcHJpdmF0ZS5yZXNldChuZXcgV1RGOjpWZWN0b3I8V1RG
OjpTdHJpbmc+KGtleVBhdGgpKTsKLSAgICBlbHNlCi0gICAgICAgIG1fcHJpdmF0ZS5yZXNldCgw
KTsKKyAgICBBU1NFUlQobV9wcml2YXRlLmdldCgpKTsKIH0KIAotdm9pZCBXZWJJREJLZXlQYXRo
OjpyZXNldCgpCitXZWJJREJLZXlQYXRoJiBXZWJJREJLZXlQYXRoOjpvcGVyYXRvcj0oY29uc3Qg
V2ViQ29yZTo6SURCS2V5UGF0aCYgdmFsdWUpCiB7Ci0gICAgbV9wcml2YXRlLnJlc2V0KDApOwor
ICAgIEFTU0VSVChtX3ByaXZhdGUuZ2V0KCkpOworICAgIG1fcHJpdmF0ZS5yZXNldChuZXcgSURC
S2V5UGF0aCh2YWx1ZSkpOworICAgIHJldHVybiAqdGhpczsKIH0KIAotV2ViSURCS2V5UGF0aDo6
b3BlcmF0b3IgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmcsIDA+JigpIGNvbnN0CitXZWJJ
REJLZXlQYXRoOjpvcGVyYXRvciBjb25zdCBXZWJDb3JlOjpJREJLZXlQYXRoJigpIGNvbnN0CiB7
CiAgICAgQVNTRVJUKG1fcHJpdmF0ZS5nZXQoKSk7Ci0gICAgcmV0dXJuICptX3ByaXZhdGUuZ2V0
KCk7CisgICAgcmV0dXJuICoobV9wcml2YXRlLmdldCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmpl
Y3RTdG9yZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0
U3RvcmVJbXBsLmNwcAppbmRleCA1ZWMzNWRmMGZkMWJjYTFiMzU2Y2UwMjg5MDVlY2RjM2Q5ZmVm
MDYyLi5lYmQ3YWU5NDVlMzQ5ZDI2ZTkyOTU1OWFhOGZmMmVjNzMzMjc2OThhIDEwMDc1NQotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5jcHAK
QEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAi
SURCQ2FsbGJhY2tzUHJveHkuaCIKICNpbmNsdWRlICJJREJJbmRleEJhY2tlbmRJbnRlcmZhY2Uu
aCIKKyNpbmNsdWRlICJJREJLZXlQYXRoLmgiCiAjaW5jbHVkZSAiSURCS2V5UmFuZ2UuaCIKICNp
bmNsdWRlICJJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJXZWJJ
REJJbmRleEltcGwuaCIKQEAgLTU5LDEzICs2MCw2IEBAIFdlYlN0cmluZyBXZWJJREJPYmplY3RT
dG9yZUltcGw6Om5hbWUoKSBjb25zdAogCiBXZWJJREJLZXlQYXRoIFdlYklEQk9iamVjdFN0b3Jl
SW1wbDo6a2V5UGF0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdlYklEQktleVBhdGgobV9vYmpl
Y3RTdG9yZS0+a2V5UGF0aCgpKTsKLX0KLQotLy8gRklYTUU6IFJlbW92ZSB0aGlzIG1ldGhvZCBv
bmNlIGNhbGxlcnMgYXJlIHVwZGF0ZWQuCi0vLyBodHRwOi8vd2Via2l0Lm9yZy9iLzg0MjA3Ci1X
ZWJTdHJpbmcgV2ViSURCT2JqZWN0U3RvcmVJbXBsOjprZXlQYXRoU3RyaW5nKCkgY29uc3QKLXsK
ICAgICByZXR1cm4gbV9vYmplY3RTdG9yZS0+a2V5UGF0aCgpOwogfQogCkBAIC0xMDQsNyArOTgs
NyBAQCB2b2lkIFdlYklEQk9iamVjdFN0b3JlSW1wbDo6Y2xlYXIoV2ViSURCQ2FsbGJhY2tzKiBj
YWxsYmFja3MsIGNvbnN0IFdlYklEQlRyYW5zYQogICAgIG1fb2JqZWN0U3RvcmUtPmNsZWFyKElE
QkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRvcHRQdHIoY2FsbGJhY2tzKSksIHRyYW5zYWN0aW9u
LmdldElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSgpLCBlYyk7CiB9CiAKLVdlYklEQklu
ZGV4KiBXZWJJREJPYmplY3RTdG9yZUltcGw6OmNyZWF0ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYg
bmFtZSwgY29uc3QgV2ViU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVu
dHJ5LCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIFdlYkV4Y2VwdGlvbkNv
ZGUmIGVjKQorV2ViSURCSW5kZXgqIFdlYklEQk9iamVjdFN0b3JlSW1wbDo6Y3JlYXRlSW5kZXgo
Y29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJJREJLZXlQYXRoJiBrZXlQYXRoLCBib29s
IHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5LCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYgdHJhbnNh
Y3Rpb24sIFdlYkV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFJlZlB0cjxJREJJbmRleEJhY2tl
bmRJbnRlcmZhY2U+IGluZGV4ID0gbV9vYmplY3RTdG9yZS0+Y3JlYXRlSW5kZXgobmFtZSwga2V5
UGF0aCwgdW5pcXVlLCBtdWx0aUVudHJ5LCB0cmFuc2FjdGlvbi5nZXRJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2UoKSwgZWMpOwogICAgIGlmICghaW5kZXgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5oCmluZGV4IDk2ZmY2ZWUy
ODI0MmZlNzFiOGMwMzVhMzNiZDdkZDE4Mzg4YTcyN2UuLjkxYWVlNzgzM2I2OTk1ZGM3YTdhYTRi
MDVjZGI4NjA0MTc1ZDU1NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklEQk9iamVjdFN0b3JlSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklEQk9iamVjdFN0b3JlSW1wbC5oCkBAIC00Nyw5ICs0Nyw2IEBAIHB1YmxpYzoKIAogICAg
IFdlYlN0cmluZyBuYW1lKCkgY29uc3Q7CiAgICAgV2ViSURCS2V5UGF0aCBrZXlQYXRoKCkgY29u
c3Q7Ci0gICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIG1ldGhvZCBvbmNlIGNhbGxlcnMgYXJlIHVw
ZGF0ZWQuCi0gICAgLy8gaHR0cDovL3dlYmtpdC5vcmcvYi84NDIwNwotICAgIFdlYlN0cmluZyBr
ZXlQYXRoU3RyaW5nKCkgY29uc3Q7CiAgICAgV2ViRE9NU3RyaW5nTGlzdCBpbmRleE5hbWVzKCkg
Y29uc3Q7CiAgICAgYm9vbCBhdXRvSW5jcmVtZW50KCkgY29uc3Q7CiAKQEAgLTU5LDEwICs1Niw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZUZ1bmN0aW9uKGNvbnN0IFdlYklEQktleVJhbmdl
JiwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRp
b25Db2RlJik7CiAgICAgdm9pZCBjbGVhcihXZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJJREJU
cmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIC8vIEZJWE1FOiBSZW1vdmUg
V2ViU3RyaW5nIGtleVBhdGggb3ZlcmxvYWQgb25jZSBjYWxsZXJzIGFyZSB1cGRhdGVkLgotICAg
IC8vIGh0dHA6Ly93ZWJraXQub3JnL2IvODQyMDcKLSAgICBXZWJJREJJbmRleCogY3JlYXRlSW5k
ZXgoY29uc3QgV2ViU3RyaW5nJiwgY29uc3QgV2ViU3RyaW5nJiwgYm9vbCwgYm9vbCwgY29uc3Qg
V2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7Ci0gICAgV2ViSURCSW5kZXgq
IGNyZWF0ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCS2V5UGF0aCYg
a2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSwgY29uc3QgV2ViSURCVHJhbnNh
Y3Rpb24mIHRyYW5zYWN0aW9uLCBXZWJFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gY3JlYXRl
SW5kZXgobmFtZSwga2V5UGF0aC5zdHJpbmcoKSwgdW5pcXVlLCBtdWx0aUVudHJ5LCB0cmFuc2Fj
dGlvbiwgZWMpOyB9CisgICAgV2ViSURCSW5kZXgqIGNyZWF0ZUluZGV4KGNvbnN0IFdlYlN0cmlu
ZyYgbmFtZSwgY29uc3QgV2ViSURCS2V5UGF0aCYsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50
cnksIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOwogICAgIFdl
YklEQkluZGV4KiBpbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIFdlYkV4Y2VwdGlvbkNvZGUm
KTsKICAgICB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2Vi
SURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQmluZGluZ1V0aWxpdGllc1Rlc3QuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJCaW5kaW5nVXRpbGl0aWVzVGVzdC5jcHAKaW5k
ZXggZDYwMjk1YTVmYjQzZTUzMzYxYzA3MjYxMmE1ZTQzODU4ZTY2YzI5OS4uYzEzNTE4NTBkODc4
YzYwNWI1NjY0YzY3MjQwNTNiNGM3YjBiMTM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9JREJCaW5kaW5nVXRpbGl0aWVzVGVzdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9JREJCaW5kaW5nVXRpbGl0aWVzVGVzdC5jcHAKQEAgLTQxLDEw
ICs0MSw4IEBAIG5hbWVzcGFjZSB7CiAKIFBhc3NSZWZQdHI8SURCS2V5PiBjaGVja0tleUZyb21W
YWx1ZUFuZEtleVBhdGhJbnRlcm5hbChTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHZhbHVlLCBjb25z
dCBTdHJpbmcmIGtleVBhdGgpCiB7Ci0gICAgVmVjdG9yPFN0cmluZz4gaWRiS2V5UGF0aDsKLSAg
ICBJREJLZXlQYXRoUGFyc2VFcnJvciBwYXJzZUVycm9yOwotICAgIElEQlBhcnNlS2V5UGF0aChr
ZXlQYXRoLCBpZGJLZXlQYXRoLCBwYXJzZUVycm9yKTsKLSAgICBFWFBFQ1RfRVEoSURCS2V5UGF0
aFBhcnNlRXJyb3JOb25lLCBwYXJzZUVycm9yKTsKKyAgICBJREJLZXlQYXRoIGlkYktleVBhdGgo
a2V5UGF0aCk7CisgICAgRVhQRUNUX1RSVUUoaWRiS2V5UGF0aC5pc1ZhbGlkKCkpOwogICAgIHJl
dHVybiBjcmVhdGVJREJLZXlGcm9tU2VyaWFsaXplZFZhbHVlQW5kS2V5UGF0aCh2YWx1ZSwgaWRi
S2V5UGF0aCk7CiB9CiAKQEAgLTU2LDEwICs1NCw4IEBAIHZvaWQgY2hlY2tLZXlQYXRoTnVsbFZh
bHVlKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogdmFsdWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkK
IAogUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGluamVjdEtleShQYXNzUmVmUHRy
PElEQktleT4ga2V5LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIGNv
bnN0IFN0cmluZyYga2V5UGF0aCkKIHsKLSAgICBWZWN0b3I8U3RyaW5nPiBpZGJLZXlQYXRoOwot
ICAgIElEQktleVBhdGhQYXJzZUVycm9yIHBhcnNlRXJyb3I7Ci0gICAgSURCUGFyc2VLZXlQYXRo
KGtleVBhdGgsIGlkYktleVBhdGgsIHBhcnNlRXJyb3IpOwotICAgIEVYUEVDVF9FUShJREJLZXlQ
YXRoUGFyc2VFcnJvck5vbmUsIHBhcnNlRXJyb3IpOworICAgIElEQktleVBhdGggaWRiS2V5UGF0
aChrZXlQYXRoKTsKKyAgICBFWFBFQ1RfVFJVRShpZGJLZXlQYXRoLmlzVmFsaWQoKSk7CiAgICAg
cmV0dXJuIGluamVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUoa2V5LCB2YWx1ZSwgaWRiS2V5
UGF0aCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURC
S2V5UGF0aFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJLZXlQYXRo
VGVzdC5jcHAKaW5kZXggZTJmZGFlYmMyZjE3ODdlOGI2ZDhlNzllNmFmNjJhMWY3NTA1ZWQ4NC4u
N2Q2NjJjMDA5Y2M4NjJlNTAwNjE4ZGZmZGVmZThhMjQ2NTQzNDFhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJLZXlQYXRoVGVzdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJLZXlQYXRoVGVzdC5jcHAKQEAgLTM3LDYgKzM3LDEw
IEBAIG5hbWVzcGFjZSB7CiAKIHZvaWQgY2hlY2tLZXlQYXRoKGNvbnN0IFN0cmluZyYga2V5UGF0
aCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGV4cGVjdGVkLCBpbnQgcGFyc2VyRXJyb3IpCiB7Cisg
ICAgSURCS2V5UGF0aCBpZGJLZXlQYXRoKGtleVBhdGgpOworICAgIEFTU0VSVF9FUShpZGJLZXlQ
YXRoLnR5cGUoKSwgSURCS2V5UGF0aDo6U3RyaW5nVHlwZSk7CisgICAgQVNTRVJUX0VRKGlkYktl
eVBhdGguaXNWYWxpZCgpLCAocGFyc2VyRXJyb3IgPT0gSURCS2V5UGF0aFBhcnNlRXJyb3JOb25l
KSk7CisKICAgICBJREJLZXlQYXRoUGFyc2VFcnJvciBlcnJvcjsKICAgICBWZWN0b3I8U3RyaW5n
PiBrZXlQYXRoRWxlbWVudHM7CiAgICAgSURCUGFyc2VLZXlQYXRoKGtleVBhdGgsIGtleVBhdGhF
bGVtZW50cywgZXJyb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9JREJMZXZlbERCQ29kaW5nVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0lEQkxldmVsREJDb2RpbmdUZXN0LmNwcAppbmRleCBlYjk5NjJkNTgyZjlkYWNkMWM5YWM1OThk
MGFmNDkyMTQyNDJhZTIyLi4xNTExNGFhNDRhYzk3MWFjYjNkYjM0YWNkNGI3MGZhN2FmMWIyYTkz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkxldmVsREJDb2Rp
bmdUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkxldmVsREJD
b2RpbmdUZXN0LmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2lmIFVTRShMRVZFTERCKQogCiAjaW5j
bHVkZSAiSURCS2V5LmgiCisjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgogI2luY2x1ZGUgIkxldmVs
REJTbGljZS5oIgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgpAQCAtNDE4LDYgKzQxOSwxMzQgQEAgVEVTVChJREJMZXZlbERCQ29kaW5nVGVzdCwgRW5j
b2RlRGVjb2RlSURCS2V5KQogICAgIEVYUEVDVF9FUSgwLCBkZWNvZGVJREJLZXkodi5kYXRhKCks
IHYuZGF0YSgpICsgdi5zaXplKCkgLSAxLCBkZWNvZGVkS2V5KSk7CiB9CiAKK1RFU1QoSURCTGV2
ZWxEQkNvZGluZ1Rlc3QsIEVuY29kZUlEQktleVBhdGgpCit7CisgICAgY29uc3QgdW5zaWduZWQg
Y2hhciBrSURCS2V5UGF0aFR5cGVDb2RlZEJ5dGUxID0gMDsKKyAgICBjb25zdCB1bnNpZ25lZCBj
aGFyIGtJREJLZXlQYXRoVHlwZUNvZGVkQnl0ZTIgPSAwOworICAgIHsKKyAgICAgICAgSURCS2V5
UGF0aCBrZXlQYXRoOworICAgICAgICBFWFBFQ1RfRVEoa2V5UGF0aC50eXBlKCksIElEQktleVBh
dGg6Ok51bGxUeXBlKTsKKyAgICAgICAgVmVjdG9yPGNoYXI+IHYgPSBlbmNvZGVJREJLZXlQYXRo
KGtleVBhdGgpOworICAgICAgICBFWFBFQ1RfRVEodi5zaXplKCksIDNVKTsKKyAgICAgICAgRVhQ
RUNUX0VRKHZbMF0sIGtJREJLZXlQYXRoVHlwZUNvZGVkQnl0ZTEpOworICAgICAgICBFWFBFQ1Rf
RVEodlsxXSwga0lEQktleVBhdGhUeXBlQ29kZWRCeXRlMik7CisgICAgICAgIEVYUEVDVF9FUSh2
WzJdLCBJREJLZXlQYXRoOjpOdWxsVHlwZSk7CisgICAgfQorCisgICAgeworICAgICAgICBWZWN0
b3I8U3RyaW5nPiB0ZXN0Q2FzZXM7CisgICAgICAgIHRlc3RDYXNlcy5hcHBlbmQoIiIpOworICAg
ICAgICB0ZXN0Q2FzZXMuYXBwZW5kKCJmb28iKTsKKyAgICAgICAgdGVzdENhc2VzLmFwcGVuZCgi
Zm9vLmJhciIpOworCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdGVzdENhc2VzLnNp
emUoKTsgKytpKSB7CisgICAgICAgICAgICBJREJLZXlQYXRoIGtleVBhdGggPSBJREJLZXlQYXRo
KHRlc3RDYXNlc1tpXSk7CisgICAgICAgICAgICBWZWN0b3I8Y2hhcj4gdiA9IGVuY29kZUlEQktl
eVBhdGgoa2V5UGF0aCk7CisgICAgICAgICAgICBFWFBFQ1RfRVEodi5zaXplKCksIGVuY29kZVN0
cmluZ1dpdGhMZW5ndGgodGVzdENhc2VzW2ldKS5zaXplKCkgKyAzKTsKKyAgICAgICAgICAgIGNv
bnN0IGNoYXIqIHAgPSB2LmRhdGEoKTsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIqIGxpbWl0ID0g
di5kYXRhKCkgKyB2LnNpemUoKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUSgqcCsrLCBrSURCS2V5
UGF0aFR5cGVDb2RlZEJ5dGUxKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUSgqcCsrLCBrSURCS2V5
UGF0aFR5cGVDb2RlZEJ5dGUyKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUSgqcCsrLCBJREJLZXlQ
YXRoOjpTdHJpbmdUeXBlKTsKKyAgICAgICAgICAgIFN0cmluZyBzdHJpbmc7CisgICAgICAgICAg
ICBwID0gZGVjb2RlU3RyaW5nV2l0aExlbmd0aChwLCBsaW1pdCwgc3RyaW5nKTsKKyAgICAgICAg
ICAgIEVYUEVDVF9FUShzdHJpbmcsIHRlc3RDYXNlc1tpXSk7CisgICAgICAgICAgICBFWFBFQ1Rf
RVEocCwgbGltaXQpOworICAgICAgICB9CisgICAgfQorCisgICAgeworICAgICAgICBWZWN0b3I8
U3RyaW5nPiB0ZXN0Q2FzZTsKKyAgICAgICAgdGVzdENhc2UuYXBwZW5kKCIiKTsKKyAgICAgICAg
dGVzdENhc2UuYXBwZW5kKCJmb28iKTsKKyAgICAgICAgdGVzdENhc2UuYXBwZW5kKCJmb28uYmFy
Iik7CisKKyAgICAgICAgSURCS2V5UGF0aCBrZXlQYXRoKHRlc3RDYXNlKTsKKyAgICAgICAgRVhQ
RUNUX0VRKGtleVBhdGgudHlwZSgpLCBJREJLZXlQYXRoOjpBcnJheVR5cGUpOworICAgICAgICBW
ZWN0b3I8Y2hhcj4gdiA9IGVuY29kZUlEQktleVBhdGgoa2V5UGF0aCk7CisgICAgICAgIGNvbnN0
IGNoYXIqIHAgPSB2LmRhdGEoKTsKKyAgICAgICAgY29uc3QgY2hhciogbGltaXQgPSB2LmRhdGEo
KSArIHYuc2l6ZSgpOworICAgICAgICBFWFBFQ1RfRVEoKnArKywga0lEQktleVBhdGhUeXBlQ29k
ZWRCeXRlMSk7CisgICAgICAgIEVYUEVDVF9FUSgqcCsrLCBrSURCS2V5UGF0aFR5cGVDb2RlZEJ5
dGUyKTsKKyAgICAgICAgRVhQRUNUX0VRKCpwKyssIElEQktleVBhdGg6OkFycmF5VHlwZSk7Cisg
ICAgICAgIGludDY0X3QgY291bnQ7CisgICAgICAgIHAgPSBkZWNvZGVWYXJJbnQocCwgbGltaXQs
IGNvdW50KTsKKyAgICAgICAgRVhQRUNUX0VRKGNvdW50LCBzdGF0aWNfY2FzdDxpbnQ2NF90Pih0
ZXN0Q2FzZS5zaXplKCkpKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdGF0aWNf
Y2FzdDxzaXplX3Q+KGNvdW50KTsgKytpKSB7CisgICAgICAgICAgICBTdHJpbmcgc3RyaW5nOwor
ICAgICAgICAgICAgcCA9IGRlY29kZVN0cmluZ1dpdGhMZW5ndGgocCwgbGltaXQsIHN0cmluZyk7
CisgICAgICAgICAgICBFWFBFQ1RfRVEoc3RyaW5nLCB0ZXN0Q2FzZVtpXSk7CisgICAgICAgIH0K
KyAgICAgICAgRVhQRUNUX0VRKHAsIGxpbWl0KTsKKyAgICB9Cit9CisKK1RFU1QoSURCTGV2ZWxE
QkNvZGluZ1Rlc3QsIERlY29kZUlEQktleVBhdGgpCit7CisgICAgY29uc3QgdW5zaWduZWQgY2hh
ciBrSURCS2V5UGF0aFR5cGVDb2RlZEJ5dGUxID0gMDsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFy
IGtJREJLZXlQYXRoVHlwZUNvZGVkQnl0ZTIgPSAwOworICAgIHsKKyAgICAgICAgLy8gTGVnYWN5
IGVuY29kaW5nIG9mIHN0cmluZyBrZXkgcGF0aHMuCisgICAgICAgIFZlY3RvcjxTdHJpbmc+IHRl
c3RDYXNlczsKKyAgICAgICAgdGVzdENhc2VzLmFwcGVuZCgiIik7CisgICAgICAgIHRlc3RDYXNl
cy5hcHBlbmQoImZvbyIpOworICAgICAgICB0ZXN0Q2FzZXMuYXBwZW5kKCJmb28uYmFyIik7CisK
KyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0ZXN0Q2FzZXMuc2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgICAgIFZlY3RvcjxjaGFyPiB2ID0gZW5jb2RlU3RyaW5nKHRlc3RDYXNlc1tpXSk7
CisgICAgICAgICAgICBJREJLZXlQYXRoIGtleVBhdGggPSBkZWNvZGVJREJLZXlQYXRoKHYuZGF0
YSgpLCB2LmRhdGEoKSArIHYuc2l6ZSgpKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShrZXlQYXRo
LnR5cGUoKSwgSURCS2V5UGF0aDo6U3RyaW5nVHlwZSk7CisgICAgICAgICAgICBFWFBFQ1RfRVEo
dGVzdENhc2VzW2ldLCBrZXlQYXRoLnN0cmluZygpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICB7
CisgICAgICAgIFZlY3RvcjxjaGFyPiB2OworICAgICAgICB2LmFwcGVuZChrSURCS2V5UGF0aFR5
cGVDb2RlZEJ5dGUxKTsKKyAgICAgICAgdi5hcHBlbmQoa0lEQktleVBhdGhUeXBlQ29kZWRCeXRl
Mik7CisgICAgICAgIHYuYXBwZW5kKElEQktleVBhdGg6Ok51bGxUeXBlKTsKKyAgICAgICAgSURC
S2V5UGF0aCBrZXlQYXRoID0gZGVjb2RlSURCS2V5UGF0aCh2LmRhdGEoKSwgdi5kYXRhKCkgKyB2
LnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUShrZXlQYXRoLnR5cGUoKSwgSURCS2V5UGF0aDo6
TnVsbFR5cGUpOworICAgICAgICBFWFBFQ1RfVFJVRShrZXlQYXRoLmlzTnVsbCgpKTsKKyAgICB9
CisgICAgeworICAgICAgICBWZWN0b3I8U3RyaW5nPiB0ZXN0Q2FzZXM7CisgICAgICAgIHRlc3RD
YXNlcy5hcHBlbmQoIiIpOworICAgICAgICB0ZXN0Q2FzZXMuYXBwZW5kKCJmb28iKTsKKyAgICAg
ICAgdGVzdENhc2VzLmFwcGVuZCgiZm9vLmJhciIpOworCisgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgdGVzdENhc2VzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBWZWN0b3I8Y2hh
cj4gdjsKKyAgICAgICAgICAgIHYuYXBwZW5kKGtJREJLZXlQYXRoVHlwZUNvZGVkQnl0ZTEpOwor
ICAgICAgICAgICAgdi5hcHBlbmQoa0lEQktleVBhdGhUeXBlQ29kZWRCeXRlMik7CisgICAgICAg
ICAgICB2LmFwcGVuZChJREJLZXlQYXRoOjpTdHJpbmdUeXBlKTsKKyAgICAgICAgICAgIHYuYXBw
ZW5kKGVuY29kZVN0cmluZ1dpdGhMZW5ndGgodGVzdENhc2VzW2ldKSk7CisgICAgICAgICAgICBJ
REJLZXlQYXRoIGtleVBhdGggPSBkZWNvZGVJREJLZXlQYXRoKHYuZGF0YSgpLCB2LmRhdGEoKSAr
IHYuc2l6ZSgpKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShrZXlQYXRoLnR5cGUoKSwgSURCS2V5
UGF0aDo6U3RyaW5nVHlwZSk7CisgICAgICAgICAgICBFWFBFQ1RfRVEodGVzdENhc2VzW2ldLCBr
ZXlQYXRoLnN0cmluZygpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICB7CisgICAgICAgIFZlY3Rv
cjxTdHJpbmc+IHRlc3RDYXNlOworICAgICAgICB0ZXN0Q2FzZS5hcHBlbmQoIiIpOworICAgICAg
ICB0ZXN0Q2FzZS5hcHBlbmQoImZvbyIpOworICAgICAgICB0ZXN0Q2FzZS5hcHBlbmQoImZvby5i
YXIiKTsKKworICAgICAgICBWZWN0b3I8Y2hhcj4gdjsKKyAgICAgICAgdi5hcHBlbmQoa0lEQktl
eVBhdGhUeXBlQ29kZWRCeXRlMSk7CisgICAgICAgIHYuYXBwZW5kKGtJREJLZXlQYXRoVHlwZUNv
ZGVkQnl0ZTIpOworICAgICAgICB2LmFwcGVuZChJREJLZXlQYXRoOjpBcnJheVR5cGUpOworICAg
ICAgICB2LmFwcGVuZChlbmNvZGVWYXJJbnQodGVzdENhc2Uuc2l6ZSgpKSk7CisgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgdGVzdENhc2Uuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICB2
LmFwcGVuZChlbmNvZGVTdHJpbmdXaXRoTGVuZ3RoKHRlc3RDYXNlW2ldKSk7CisgICAgICAgIElE
QktleVBhdGgga2V5UGF0aCA9IGRlY29kZUlEQktleVBhdGgodi5kYXRhKCksIHYuZGF0YSgpICsg
di5zaXplKCkpOworICAgICAgICBFWFBFQ1RfRVEoa2V5UGF0aC50eXBlKCksIElEQktleVBhdGg6
OkFycmF5VHlwZSk7CisgICAgICAgIEVYUEVDVF9FUShrZXlQYXRoLmFycmF5KCkuc2l6ZSgpLCB0
ZXN0Q2FzZS5zaXplKCkpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRlc3RDYXNl
LnNpemUoKTsgKytpKQorICAgICAgICAgICAgRVhQRUNUX0VRKGtleVBhdGguYXJyYXkoKVtpXSwg
dGVzdENhc2VbaV0pOworICAgIH0KK30KKworCiBURVNUKElEQkxldmVsREJDb2RpbmdUZXN0LCBF
eHRyYWN0QW5kQ29tcGFyZUlEQktleXMpCiB7CiAgICAgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4g
a2V5czsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCBiNWY5MzNhNmZhYzQxNTI1ZTAyMDY0NGE5MmYxZDcxNTg1ZTAzZjM5Li5i
ZTZiMWRkOTQ0Njg2MWFjYjExNmFkNGUzNDMxNWMxYjcxMzc3ZmRkIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMTItMDUtMDcgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBJbmRleGVkREI6IFN0b3JlIGtleSBwYXRocyBpbiBJREJLZXlQYXRoIHR5cGUgaW5z
dGVhZCBvZiBTdHJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTg1Mjk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWJhc2ljcy1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleXBhdGgtYmFzaWNzLmpzOgor
CiAyMDEyLTA1LTIxICBaYW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCBHVEsgZ2FyZGVuaW5nLCBhZGQgZXhwZWN0YXRpb25zIGZvciBhbiBT
VkcgdGVzdCBmb3IgaGl0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9rZXlwYXRoLWJhc2ljcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9rZXlwYXRoLWJhc2ljcy1leHBlY3RlZC50eHQKaW5kZXggYjMwODFkMjg1ZDQyNGI3YmZm
ZWQwNmJlNWRkZTNlNjYyZGFiNDgxMS4uODYyOTQ2Mzg5NGE4MThjZTc5ZjA3YjE5ZDA1MDE3ODQz
MmZmMWFjYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5cGF0
aC1iYXNpY3MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2tleXBhdGgtYmFzaWNzLWV4cGVjdGVkLnR4dApAQCAtOSw0MCArOSwzMyBAQCBpbmRleGVkREIu
b3BlbihuYW1lKQogZGIgPSBldmVudC50YXJnZXQucmVzdWx0CiByZXF1ZXN0ID0gZGIuc2V0VmVy
c2lvbignMScpCiBEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgotZ2xvYmFsS2V5UGF0aCA9ICdu
dWxsJwotZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ25hbWUnLCB7a2V5UGF0aDogZ2xvYmFsS2V5UGF0
aH0pCi1EZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgotZ2xvYmFsS2V5UGF0aCA9ICd1bmRlZmlu
ZWQnCi1kYi5jcmVhdGVPYmplY3RTdG9yZSgnbmFtZScsIHtrZXlQYXRoOiBnbG9iYWxLZXlQYXRo
fSkKLURlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCi1nbG9iYWxLZXlQYXRoID0gJycKLWRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCduYW1lJywge2tleVBhdGg6IGdsb2JhbEtleVBhdGh9KQotRGVsZXRl
ZCBhbGwgb2JqZWN0IHN0b3Jlcy4KLWdsb2JhbEtleVBhdGggPSAnZm9vJwotZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoJ25hbWUnLCB7a2V5UGF0aDogZ2xvYmFsS2V5UGF0aH0pCi1EZWxldGVkIGFsbCBv
YmplY3Qgc3RvcmVzLgotZ2xvYmFsS2V5UGF0aCA9ICdmb28uYmFyLmJheicKLWRiLmNyZWF0ZU9i
amVjdFN0b3JlKCduYW1lJywge2tleVBhdGg6IGdsb2JhbEtleVBhdGh9KQotRGVsZXRlZCBhbGwg
b2JqZWN0IHN0b3Jlcy4KLWdsb2JhbEtleVBhdGggPSAnbnVsbCcKLXN0b3JlID0gZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpCi1zdG9yZS5jcmVhdGVJbmRleCgnbmFtZScsIGdsb2Jh
bEtleVBhdGgpCi1EZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgotZ2xvYmFsS2V5UGF0aCA9ICd1
bmRlZmluZWQnCi1zdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKQotc3Rv
cmUuY3JlYXRlSW5kZXgoJ25hbWUnLCBnbG9iYWxLZXlQYXRoKQotRGVsZXRlZCBhbGwgb2JqZWN0
IHN0b3Jlcy4KLWdsb2JhbEtleVBhdGggPSAnJwotc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9y
ZSgnc3RvcmVOYW1lJykKLXN0b3JlLmNyZWF0ZUluZGV4KCduYW1lJywgZ2xvYmFsS2V5UGF0aCkK
LURlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCi1nbG9iYWxLZXlQYXRoID0gJ2ZvbycKLXN0b3Jl
ID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpCi1zdG9yZS5jcmVhdGVJbmRleCgn
bmFtZScsIGdsb2JhbEtleVBhdGgpCi1EZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgotZ2xvYmFs
S2V5UGF0aCA9ICdmb28uYmFyLmJheicKLXN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0
b3JlTmFtZScpCi1zdG9yZS5jcmVhdGVJbmRleCgnbmFtZScsIGdsb2JhbEtleVBhdGgpCitzdG9y
ZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCduYW1lJykKK1BBU1Mgc3RvcmUua2V5UGF0aCBpcyBu
dWxsCitEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgorc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RT
dG9yZSgnbmFtZScsIHtrZXlQYXRoOiBudWxsfSkKK1BBU1Mgc3RvcmUua2V5UGF0aCBpcyBudWxs
CitpbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4KCduYW1lJywgbnVsbCkKK1BBU1MgaW5kZXgua2V5
UGF0aCBpcyAnbnVsbCcKK0RlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCitzdG9yZSA9IGRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCduYW1lJywge2tleVBhdGg6IHVuZGVmaW5lZH0pCitQQVNTIHN0b3Jl
LmtleVBhdGggaXMgbnVsbAoraW5kZXggPSBzdG9yZS5jcmVhdGVJbmRleCgnbmFtZScsIHVuZGVm
aW5lZCkKK1BBU1MgaW5kZXgua2V5UGF0aCBpcyAndW5kZWZpbmVkJworRGVsZXRlZCBhbGwgb2Jq
ZWN0IHN0b3Jlcy4KK3N0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ25hbWUnLCB7a2V5UGF0
aDogJyd9KQorUEFTUyBzdG9yZS5rZXlQYXRoIGlzICcnCitpbmRleCA9IHN0b3JlLmNyZWF0ZUlu
ZGV4KCduYW1lJywgJycpCitQQVNTIGluZGV4LmtleVBhdGggaXMgJycKK0RlbGV0ZWQgYWxsIG9i
amVjdCBzdG9yZXMuCitzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCduYW1lJywge2tleVBh
dGg6ICdmb28nfSkKK1BBU1Mgc3RvcmUua2V5UGF0aCBpcyAnZm9vJworaW5kZXggPSBzdG9yZS5j
cmVhdGVJbmRleCgnbmFtZScsICdmb28nKQorUEFTUyBpbmRleC5rZXlQYXRoIGlzICdmb28nCitE
ZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgorc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgn
bmFtZScsIHtrZXlQYXRoOiAnZm9vLmJhci5iYXonfSkKK1BBU1Mgc3RvcmUua2V5UGF0aCBpcyAn
Zm9vLmJhci5iYXonCitpbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4KCduYW1lJywgJ2Zvby5iYXIu
YmF6JykKK1BBU1MgaW5kZXgua2V5UGF0aCBpcyAnZm9vLmJhci5iYXonCiBEZWxldGVkIGFsbCBv
YmplY3Qgc3RvcmVzLgogRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KIGdsb2JhbEtleVBhdGgg
PSAnW10nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMva2V5cGF0aC1iYXNpY3MuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMva2V5cGF0aC1iYXNpY3MuanMKaW5kZXggYjI1YzczMWU4YTU4MmFhZjU3ZTY0MDA4YTBm
NWU1OWMyZmMzNTlhMS4uZTZiMjYwNjRjMTAzMDI0NjE1MmFhZjdjMTc1ZTUxNmY0NDQxMzg1MSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleXBh
dGgtYmFzaWNzLmpzCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy9rZXlwYXRoLWJhc2ljcy5qcwpAQCAtMjcsMjggKzI3LDIzIEBAIGZ1bmN0aW9uIHRlc3RWYWxp
ZEtleVBhdGhzKCkKIHsKICAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwogCi0gICAgdGVz
dEtleVBhdGhzID0gW251bGwsIHVuZGVmaW5lZCwgJyddOwotICAgIHRlc3RLZXlQYXRocy5mb3JF
YWNoKGZ1bmN0aW9uIChrZXlQYXRoKSB7Ci0gICAgICAgIGdsb2JhbEtleVBhdGggPSBrZXlQYXRo
OwotICAgICAgICBkZWJ1ZygiZ2xvYmFsS2V5UGF0aCA9ICciICsgZ2xvYmFsS2V5UGF0aCArICIn
Iik7Ci0gICAgICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCduYW1lJywge2tl
eVBhdGg6IGdsb2JhbEtleVBhdGh9KSIpOwotICAgICAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMo
ZGIpOwotICAgIH0pOworICAgIGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ25hbWUnKSIpOworICAgIHNob3VsZEJlTnVsbCgic3RvcmUua2V5UGF0aCIpOworICAgIGRl
bGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CiAKLSAgICB0ZXN0S2V5UGF0aHMgPSBbJ2ZvbycsICdm
b28uYmFyLmJheiddOwotICAgIHRlc3RLZXlQYXRocy5mb3JFYWNoKGZ1bmN0aW9uIChrZXlQYXRo
KSB7Ci0gICAgICAgIGdsb2JhbEtleVBhdGggPSBrZXlQYXRoOwotICAgICAgICBkZWJ1ZygiZ2xv
YmFsS2V5UGF0aCA9ICciICsgZ2xvYmFsS2V5UGF0aCArICInIik7Ci0gICAgICAgIGV2YWxBbmRM
b2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCduYW1lJywge2tleVBhdGg6IGdsb2JhbEtleVBhdGh9
KSIpOwotICAgICAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotICAgIH0pOworICAgIHRl
c3RLZXlQYXRocyA9IFsKKyAgICAgICAgeyBrZXlQYXRoOiAibnVsbCIsIHN0b3JlRXhwZWN0ZWQ6
ICJudWxsIiwgaW5kZXhFeHBlY3RlZDogIidudWxsJyIgfSwKKyAgICAgICAgeyBrZXlQYXRoOiAi
dW5kZWZpbmVkIiwgc3RvcmVFeHBlY3RlZDogIm51bGwiLCBpbmRleEV4cGVjdGVkOiAiJ3VuZGVm
aW5lZCciIH0sCisgICAgICAgIHsga2V5UGF0aDogIicnIiwgc3RvcmVFeHBlY3RlZDogIicnIiwg
aW5kZXhFeHBlY3RlZDogIicnIiB9LAorICAgICAgICB7IGtleVBhdGg6ICInZm9vJyIsIHN0b3Jl
RXhwZWN0ZWQ6ICInZm9vJyIsIGluZGV4RXhwZWN0ZWQ6ICInZm9vJyIgfSwKKyAgICAgICAgeyBr
ZXlQYXRoOiAiJ2Zvby5iYXIuYmF6JyIsIHN0b3JlRXhwZWN0ZWQ6ICInZm9vLmJhci5iYXonIiwg
aW5kZXhFeHBlY3RlZDogIidmb28uYmFyLmJheiciIH0KKyAgICBdOwogCi0gICAgdGVzdEtleVBh
dGhzID0gW251bGwsIHVuZGVmaW5lZCwgJycsICdmb28nLCAnZm9vLmJhci5iYXonXTsKLSAgICB0
ZXN0S2V5UGF0aHMuZm9yRWFjaChmdW5jdGlvbiAoa2V5UGF0aCkgewotICAgICAgICBnbG9iYWxL
ZXlQYXRoID0ga2V5UGF0aDsKLSAgICAgICAgZGVidWcoImdsb2JhbEtleVBhdGggPSAnIiArIGds
b2JhbEtleVBhdGggKyAiJyIpOwotICAgICAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0g
ZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0gICAgICAgIGV2YWxBbmRMb2co
InN0b3JlLmNyZWF0ZUluZGV4KCduYW1lJywgZ2xvYmFsS2V5UGF0aCkiKTsKKyAgICB0ZXN0S2V5
UGF0aHMuZm9yRWFjaChmdW5jdGlvbiAodGVzdENhc2UpIHsKKyAgICAgICAgZXZhbEFuZExvZygi
c3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnbmFtZScsIHtrZXlQYXRoOiAiICsgdGVzdENh
c2Uua2V5UGF0aCArICJ9KSIpOworICAgICAgICBzaG91bGRCZSgic3RvcmUua2V5UGF0aCIsIHRl
c3RDYXNlLnN0b3JlRXhwZWN0ZWQpOworICAgICAgICBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3Jl
LmNyZWF0ZUluZGV4KCduYW1lJywgIiArIHRlc3RDYXNlLmtleVBhdGggKyAiKSIpOworICAgICAg
ICBzaG91bGRCZSgiaW5kZXgua2V5UGF0aCIsIHRlc3RDYXNlLmluZGV4RXhwZWN0ZWQpOwogICAg
ICAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwogICAgIH0pOwogCkBAIC04Nyw0ICs4Miw0
IEBAIGZ1bmN0aW9uIHRlc3RJbnZhbGlkS2V5UGF0aHMoKQogICAgIGZpbmlzaEpTVGVzdCgpOwog
fQogCi10ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQordGVzdCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143090</attachid>
            <date>2012-05-21 13:48:31 -0700</date>
            <delta_ts>2012-05-21 14:33:57 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-85298-20120521134830.patch</filename>
            <type>text/plain</type>
            <size>118638</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3NzcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzFiZjI4NjFjNGEzZWM0
Y2EyZDRmNWEzMDkzYzQ0NTRkYjkyZmYyZC4uNWQ0OTZiZjNhM2ZlZmMyOTYxNmRkNTBiODY3OWY4
MmM3MmEyM2JiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOCBAQAorMjAxMi0wNS0wNyAgSm9z
aHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogU3Rv
cmUga2V5IHBhdGhzIGluIElEQktleVBhdGggdHlwZSBpbnN0ZWFkIG9mIFN0cmluZworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODUyOTgKKworICAgICAg
ICBSZXZpZXdlZCBieSBUb255IENoYW5nLCBLZW50YXJvIEhhcmEgYW5kIEphbWVzIFJvYmluc29u
LgorCisgICAgICAgIE1pZ3JhdGUgZnJvbSBzdG9yaW5nIGtleSBwYXRocyBhcyAobnVsbGFibGUp
IFN0cmluZ3MgdG8gYSBkZWRpY2F0ZWQgSURCS2V5UGF0aAorICAgICAgICB0eXBlLiBQcmVwIHdv
cmsgZm9yIHN1cHBvcnRpbmcgYXJyYXktdHlwZSBrZXkgcGF0aHM6IGh0dHA6Ly93ZWJraXQub3Jn
L2IvODQyMDcKKworICAgICAgICBPbmx5IGZ1bmN0aW9uYWwgY2hhbmdlIGlzIGhhbmRsaW5nIG9m
IG51bGwvdW5kZWZpbmVkIHBhcmFtZXRlcnMgZm9yIGtleSBwYXRocywKKyAgICAgICAgdG8gYWxp
Z24gd2l0aCBJREIgc3BlYywgY292ZXJlZCBieSBsYXlvdXQgdGVzdC4KKworICAgICAgICBUZXN0
OiBzdG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWJhc2ljcy5odG1sCisgICAgICAgIFRlc3Q6IFdl
YktpdC9jaHJvbWl1bS9JREJMZXZlbERCQ29kaW5nVGVzdC5jcHAKKworICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQkFueS5jcHA6IEFsbG93IElEQkFueSB0byB5aWVsZCBET01TdHJpbmdz
LgorICAgICAgICAoV2ViQ29yZTo6SURCQW55OjpjcmVhdGVTdHJpbmcpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJBbnk6OnN0cmluZyk6CisgICAgICAgIChXZWJD
b3JlOjpJREJBbnk6OnNldCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQW55Lmg6
CisgICAgICAgIChJREJBbnkpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tp
bmdTdG9yZS5oOiBTd2l0Y2ggZnJvbSBTdHJpbmcgdG8gSURCS2V5UGF0aC4KKyAgICAgICAgKElE
QkJhY2tpbmdTdG9yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2Uu
Y3BwOiBTd2l0Y2ggZnJvbSBTdHJpbmcgdG8gSURCS2V5UGF0aC4KKyAgICAgICAgKFdlYkNvcmU6
OklEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHA6IFN3aXRjaCBmcm9tIFN0cmluZyB0byBJ
REJLZXlQYXRoLgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3Jl
YXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1w
bDo6bG9hZE9iamVjdFN0b3Jlcyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VCYWNrZW5kSW1wbC5oOiBTd2l0Y2ggZnJvbSBTdHJpbmcgdG8gSURCS2V5UGF0aC4KKyAg
ICAgICAgKElEQkRhdGFiYXNlQmFja2VuZEltcGwpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oOiBTd2l0Y2ggZnJvbSBTdHJpbmcgdG8g
SURCS2V5UGF0aC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSURCRGF0YWJhc2VCYWNr
ZW5kSW50ZXJmYWNlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oOiBT
d2l0Y2ggZnJvbSBTdHJpbmcgdG8gSURCQW55ICh2aWEgSURCS2V5UGF0aCkuCisgICAgICAgIChX
ZWJDb3JlOjpJREJJbmRleDo6a2V5UGF0aCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
SURCSW5kZXguaWRsOiBTd2l0Y2ggZnJvbSBET01TdHJpbmc/IHRvIElEQkFueS4KKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmNwcDogU3dpdGNoIGZyb20g
U3RyaW5nIHRvIElEQktleVBhdGguCisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleEJhY2tlbmRJ
bXBsOjpJREJJbmRleEJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9J
REJJbmRleEJhY2tlbmRJbXBsLmg6IFN3aXRjaCBmcm9tIFN0cmluZyB0byBJREJLZXlQYXRoLgor
ICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW1wbDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEltcGw6OmtleVBhdGgpOgorICAgICAgICAoSURCSW5k
ZXhCYWNrZW5kSW1wbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNr
ZW5kSW50ZXJmYWNlLmg6IFN3aXRjaCBmcm9tIFN0cmluZyB0byBJREJLZXlQYXRoLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChJREJJbmRleEJhY2tlbmRJbnRlcmZhY2UpOgorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGguY3BwOiBOb24tdHJpdmlhbCBtZXRob2Qg
aW1wbGVtZW50YXRpb25zLgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5UGF0aDo6aXNWYWxpZCk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQktleVBhdGg6Om9wZXJh
dG9yIFBhc3NSZWZQdHI8SURCQW55Pik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
S2V5UGF0aC5oOiBJbnRyb2R1Y2UgSURCS2V5UGF0aCB0eXBlLgorICAgICAgICAoSURCS2V5UGF0
aCk6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlQYXRoOjpJREJLZXlQYXRoKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQktleVBhdGg6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5UGF0
aDo6YXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5UGF0aDo6c3RyaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQktleVBhdGg6OmlzTnVsbCk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRoQmFja2VuZEltcGwuY3BwOiBTd2l0
Y2ggZnJvbSBTdHJpbmcgdG8gSURCS2V5UGF0aC4KKyAgICAgICAgKFdlYkNvcmU6OklEQktleVBh
dGhCYWNrZW5kSW1wbDo6Y3JlYXRlSURCS2V5c0Zyb21TZXJpYWxpemVkVmFsdWVzQW5kS2V5UGF0
aCk6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlQYXRoQmFja2VuZEltcGw6OmluamVjdElEQktl
eUludG9TZXJpYWxpemVkVmFsdWUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQktl
eVBhdGhCYWNrZW5kSW1wbC5oOiBTd2l0Y2ggZnJvbSBTdHJpbmcgdG8gSURCS2V5UGF0aC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSURCS2V5UGF0aEJhY2tlbmRJbXBsKToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcDogU3dpdGNo
IGZyb20gU3RyaW5nIHRvIElEQktleVBhdGgsIHdpdGggYmFjay1jb21wYXQuCisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnB1dElEQktleVBhdGgpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0T2JqZWN0U3RvcmVzKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OmdldEluZGV4ZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaDoKKyAgICAg
ICAgKElEQkxldmVsREJCYWNraW5nU3RvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L0lEQkxldmVsREJDb2RpbmcuY3BwOiBOZXcgY29kaW5nIHNjaGVtZSBmb3Iga2V5IHBhdGhzICh3
aXRoIGJhY2stY29tcGF0KS4KKyAgICAgICAgKElEQkxldmVsREJDb2RpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6SURCTGV2ZWxEQkNvZGluZzo6ZW5jb2RlSURCS2V5UGF0aCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJMZXZlbERCQ29kaW5nOjpkZWNvZGVJREJLZXlQYXRoKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmg6IEFkZCBrZXktcGF0aC1zcGVjaWZp
YyBtZXRob2RzLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJREJMZXZlbERCQ29kaW5n
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHA6IFN3aXRj
aCBmcm9tIFN0cmluZyB0byBJREJLZXlQYXRoLgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0
U3RvcmU6OmtleVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmNyZWF0
ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L0lEQk9iamVjdFN0b3JlLmg6IFN3aXRjaCBmcm9tIFN0cmluZyB0byBJREJBbnkgKHZpYSBJREJL
ZXlQYXRoKS4KKyAgICAgICAgKElEQk9iamVjdFN0b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5pZGw6IFN3aXRjaCBmcm9tIERPTVN0cmluZz8gdG8gSURC
QW55LgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZElt
cGwuY3BwOiBTd2l0Y2ggZnJvbSBTdHJpbmcgdG8gSURCS2V5UGF0aC4KKyAgICAgICAgKFdlYkNv
cmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGwp
OgorICAgICAgICAoV2ViQ29yZTo6ZmV0Y2hLZXlGcm9tS2V5UGF0aCk6CisgICAgICAgIChXZWJD
b3JlOjppbmplY3RLZXlJbnRvS2V5UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsOjpsb2FkSW5kZXhlcyk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oOiBTd2l0Y2ggZnJvbSBTdHJpbmcgdG8g
SURCS2V5UGF0aC4KKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpr
ZXlQYXRoKToKKyAgICAgICAgKElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwpOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZS5oOiBTd2l0
Y2ggZnJvbSBTdHJpbmcgdG8gSURCS2V5UGF0aC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9EaWN0aW9uYXJ5LmNwcDogQWRkIGdldHRlciBmb3IgRE9NU3RyaW5nW10gKGkuZS4gVmVjdG9y
PFN0cmluZz4pCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpY3Rpb25h
cnk6OmdldCk6CisgICAgICAgICogYmluZGluZ3MvdjgvRGljdGlvbmFyeS5oOgorICAgICAgICAo
RGljdGlvbmFyeSk6CisgICAgICAgICogYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5j
cHA6IFN3aXRjaCBmcm9tIFN0cmluZyB0byBJREJLZXlQYXRoLgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlSURCS2V5RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtleVBhdGgpOgorICAgICAgICAoV2Vi
Q29yZTo6aW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZSk6CisgICAgICAgICogYmluZGlu
Z3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5oOiBTd2l0Y2ggZnJvbSBTdHJpbmcgdG8gSURCS2V5
UGF0aC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OElEQkFueUN1c3RvbS5jcHA6IFN1cHBvcnQgU3RyaW5nL0RPTVN0cmluZy4KKyAgICAgICAgKFdl
YkNvcmU6OnRvVjgpOgorICAgICAgICAqIGRvbS9ET01TdHJpbmdMaXN0Lmg6IEFsbG93IGVhc3kg
KGNvbnN0KSBhY2Nlc3MgdG8gc3RyaW5ncy4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVN0cmluZ0xp
c3Q6Om9wZXJhdG9yIGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik6CisgICAgICAgIChET01TdHJpbmdM
aXN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwOiBU
ZW1wb3Jhcnkgc2hpbSBmb3Igbm9uLXN0cmluZ3M6IHNlZSBodHRwOi8vd2Via2l0Lm9yZy9iLzg0
MzAzCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0
Zm9ybVN1cHBvcnQuaDogU3dpdGNoIGZyb20gU3RyaW5nIHRvIElEQktleVBhdGguCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFBsYXRmb3JtU3VwcG9ydCk6CisgICAgICAgICogc3RvcmFn
ZS9jaHJvbWl1bS9JREJLZXlQYXRoQmFja2VuZEltcGwuY3BwOiBTd2l0Y2ggZnJvbSBTdHJpbmcg
dG8gSURCS2V5UGF0aC4KKyAgICAgICAgKFdlYkNvcmU6OklEQktleVBhdGhCYWNrZW5kSW1wbDo6
Y3JlYXRlSURCS2V5c0Zyb21TZXJpYWxpemVkVmFsdWVzQW5kS2V5UGF0aCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJLZXlQYXRoQmFja2VuZEltcGw6OmluamVjdElEQktleUludG9TZXJpYWxpemVk
VmFsdWUpOgorCiAyMDEyLTA1LTIxICBDYWlvIE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxj
YWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgTW92ZSBzZXRFZGl0aW5nQmVo
YXZpb3IoKSBmcm9tIGxheW91dFRlc3RDb250cm9sbGVyIHRvIHdpbmRvdy5pbnRlcm5hbHMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggODQxZTZjYjY2M2RhYzYxMjA5MGNhNjQ5YTc3NmE5
NzQ4YjFiM2MzNC4uOTA3ZDEwZWI2MDU0NDI0Zjc4NGQ2Nzg4NDJhZDMyYjkyMjVjZWQwZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NSBAQAorMjAxMi0wNS0wNyAgSm9z
aHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogU3Rv
cmUga2V5IHBhdGhzIGluIElEQktleVBhdGggdHlwZSBpbnN0ZWFkIG9mIFN0cmluZworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODUyOTgKKworICAgICAg
ICBSZXZpZXdlZCBieSBUb255IENoYW5nLCBLZW50YXJvIEhhcmEgYW5kIEphbWVzIFJvYmluc29u
LgorCisgICAgICAgIE5vIGZ1bmN0aW9uYWwgY2hhbmdlcywganVzdCBmaW5pc2ggbWlncmF0aW9u
IGZyb20gU3RyaW5nIHRvIElEQktleVBhdGgKKyAgICAgICAgZm9yIHN0b3Jpbmcga2V5IHBhdGhz
LCBmb3IgZXZlbnR1YWwgYXJyYXkgc3VwcG9ydCBodHRwOi8vd2Via2l0Lm9yZy9iLzg0MjA3CisK
KyAgICAgICAgKiBwdWJsaWMvV2ViSURCRGF0YWJhc2UuaDogUmVtb3ZlIHRlbXBvcmFyeSBvdmVy
bG9hZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNl
OjpvYmplY3RTdG9yZU5hbWVzKToKKyAgICAgICAgKiBwdWJsaWMvV2ViSURCSW5kZXguaDogUmVt
b3ZlIHRlbXBvcmFyeSBtZXRob2QuCisgICAgICAgIChXZWJLaXQ6OldlYklEQkluZGV4OjprZXlQ
YXRoKToKKyAgICAgICAgKiBwdWJsaWMvV2ViSURCS2V5UGF0aC5oOiBSZW1vdmUgb2Jzb2xldGUg
bWV0aG9kcywgd3JhcCBXZWJDb3JlOjpJREJLZXlQYXRoCisgICAgICAgIChXZWJJREJLZXlQYXRo
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCS2V5UGF0aDo6V2ViSURCS2V5UGF0aCk6CisgICAg
ICAgICogcHVibGljL1dlYklEQk9iamVjdFN0b3JlLmg6IFJlbW92ZSB0ZW1wb3JhcnkgbWV0aG9k
IGFuZCBvdmVybG9hZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSURCT2JqZWN0U3RvcmU6OmtleVBh
dGgpOgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaDog
UmVtb3ZlIHRlbXBvcmFyeSBvdmVybG9hZHMuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAq
IHNyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcDogV2ViSURCS2V5UGF0aCB2cy4gSURCS2V5UGF0
aCBlbnVtcy4KKyAgICAgICAgKiBzcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwOiBTd2l0
Y2ggZnJvbSBTdHJpbmcgdG8gSURCS2V5UGF0aC4KKyAgICAgICAgKFdlYktpdDo6SURCRGF0YWJh
c2VCYWNrZW5kUHJveHk6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBzcmMvSURCRGF0
YWJhc2VCYWNrZW5kUHJveHkuaDogU3dpdGNoIGZyb20gU3RyaW5nIHRvIElEQktleVBhdGguCisg
ICAgICAgIChJREJEYXRhYmFzZUJhY2tlbmRQcm94eSk6CisgICAgICAgICogc3JjL0lEQkluZGV4
QmFja2VuZFByb3h5LmNwcDogU3dpdGNoIGZyb20gU3RyaW5nIHRvIElEQktleVBhdGguCisgICAg
ICAgIChXZWJLaXQ6OklEQkluZGV4QmFja2VuZFByb3h5OjprZXlQYXRoKToKKyAgICAgICAgKiBz
cmMvSURCSW5kZXhCYWNrZW5kUHJveHkuaDogU3dpdGNoIGZyb20gU3RyaW5nIHRvIElEQktleVBh
dGguCisgICAgICAgIChJREJJbmRleEJhY2tlbmRQcm94eSk6CisgICAgICAgICogc3JjL0lEQk9i
amVjdFN0b3JlQmFja2VuZFByb3h5LmNwcDogU3dpdGNoIGZyb20gU3RyaW5nIHRvIElEQktleVBh
dGguCisgICAgICAgIChXZWJLaXQ6OklEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjprZXlQYXRo
KToKKyAgICAgICAgKFdlYktpdDo6SURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OmNyZWF0ZUlu
ZGV4KToKKyAgICAgICAgKiBzcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuaDogU3dpdGNo
IGZyb20gU3RyaW5nIHRvIElEQktleVBhdGguCisgICAgICAgIChJREJPYmplY3RTdG9yZUJhY2tl
bmRQcm94eSk6CisgICAgICAgICogc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHA6IFN3aXRjaCBmcm9t
IFN0cmluZyB0byBJREJLZXlQYXRoLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TdXBwb3J0
OjpjcmVhdGVJREJLZXlzRnJvbVNlcmlhbGl6ZWRWYWx1ZXNBbmRLZXlQYXRoKToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtU3VwcG9ydDo6aW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1
ZSk6CisgICAgICAgICogc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHA6IFN3aXRjaCBmcm9tIFN0
cmluZyB0byBJREJLZXlQYXRoLgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZUltcGw6
OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBzcmMvV2ViSURCRGF0YWJhc2VJbXBsLmg6
IFJlbW92ZSB0ZW1wb3Jhcnkgb3ZlcmxvYWQuCisgICAgICAgIChXZWJJREJEYXRhYmFzZUltcGwp
OgorICAgICAgICAqIHNyYy9XZWJJREJJbmRleEltcGwuY3BwOiBSZW1vdmUgdGVtcG9yYXJ5IG1l
dGhvZC4KKyAgICAgICAgKiBzcmMvV2ViSURCSW5kZXhJbXBsLmg6IFJlbW92ZSB0ZW1wb3Jhcnkg
bWV0aG9kLgorICAgICAgICAoV2ViSURCSW5kZXhJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViSURC
S2V5UGF0aC5jcHA6IFJlbW92ZSBtb3N0IGxvZ2ljOyBqdXN0IGEgd3JhcHBlciBmb3IgV2ViQ29y
ZTo6SURCS2V5UGF0aC4KKyAgICAgICAgKFdlYktpdDo6V2ViSURCS2V5UGF0aDo6fldlYklEQktl
eVBhdGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJLZXlQYXRoOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJREJLZXlQYXRoOjpjcmVhdGVOdWxsKToKKyAgICAgICAgKFdlYktpdDo6
V2ViSURCS2V5UGF0aDo6aXNWYWxpZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQktleVBhdGg6
OnR5cGUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCS2V5UGF0
aDo6YXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJLZXlQYXRoOjpzdHJpbmcpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJREJLZXlQYXRoOjpXZWJJREJLZXlQYXRoKToKKyAgICAgICAgKFdl
YktpdDo6V2ViSURCS2V5UGF0aDo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURC
S2V5UGF0aDo6b3BlcmF0b3IgY29uc3QgV2ViQ29yZTo6SURCS2V5UGF0aCYpOgorICAgICAgICAq
IHNyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3BwOiBSZW1vdmUgdGVtcG9yYXJ5IG1ldGhvZCBh
bmQgb3ZlcmxvYWQuCisgICAgICAgIChXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlSW1wbDo6a2V5
UGF0aCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlSW1wbDo6Y3JlYXRlSW5k
ZXgpOgorICAgICAgICAqIHNyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuaDogUmVtb3ZlIHRlbXBv
cmFyeSBtZXRob2QgYW5kIG92ZXJsb2FkLgorICAgICAgICAoV2ViSURCT2JqZWN0U3RvcmVJbXBs
KToKKyAgICAgICAgKiB0ZXN0cy9JREJCaW5kaW5nVXRpbGl0aWVzVGVzdC5jcHA6IFVzZSBJREJL
ZXlQYXRoLgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tLZXlGcm9tVmFsdWVBbmRLZXlQYXRoSW50
ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6aW5qZWN0S2V5KToKKyAgICAgICAgKiB0ZXN0cy9J
REJMZXZlbERCQ29kaW5nVGVzdC5jcHA6IEFkZGVkIEVuY29kZUlEQktleVBhdGggYW5kIERlY29k
ZUlEQktleVBhdGggdGVzdHMuCisgICAgICAgIChJREJMZXZlbERCQ29kaW5nOjpURVNUKToKKyAg
ICAgICAgKElEQkxldmVsREJDb2RpbmcpOgorICAgICAgICAqIHRlc3RzL0lEQktleVBhdGhUZXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrS2V5UGF0aCk6IFRlc3QgSURCS2V5UGF0aCB2
YWxpZGl0eS4KKwogMjAxMi0wNS0yMCAgS2ludWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgQ2xlYW51cDogUmVtb3ZlIFdlYkNvcmU6OnJldmVhbEZvbGRlckluT1Mo
KSB3aGljaCBpcyBubyBsb25nZXIgdXNlZCBhbnl3aGVyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkFueS5jcHAKaW5kZXggNTdhNDA2ZTJiYjA3YjBiZDZkMjVkZGJiODFi
YzY0ZmU5ZWFhMDZhZC4uMzAwMjhjY2ZkZmNlOTU5NjA0MGFjMDNlZmE0OWZhYjI0MDcwMmUzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJBbnkuY3BwCkBAIC00OSw2
ICs0OSwxMyBAQCBQYXNzUmVmUHRyPElEQkFueT4gSURCQW55OjpjcmVhdGVOdWxsKCkKICAgICBy
ZXR1cm4gaWRiQW55LnJlbGVhc2UoKTsKIH0KIAorUGFzc1JlZlB0cjxJREJBbnk+IElEQkFueTo6
Y3JlYXRlU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgUmVmUHRyPElEQkFueT4g
aWRiQW55ID0gYWRvcHRSZWYobmV3IElEQkFueSgpKTsKKyAgICBpZGJBbnktPnNldCh2YWx1ZSk7
CisgICAgcmV0dXJuIGlkYkFueS5yZWxlYXNlKCk7Cit9CisKIElEQkFueTo6SURCQW55KCkKICAg
ICA6IG1fdHlwZShVbmRlZmluZWRUeXBlKQogewpAQCAtMTE4LDYgKzEyNSwxMiBAQCBQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gSURCQW55OjpzZXJpYWxpemVkU2NyaXB0VmFsdWUo
KQogICAgIHJldHVybiBtX3NlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIH0KIAorY29uc3QgU3RyaW5n
JiBJREJBbnk6OnN0cmluZygpCit7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBTdHJpbmdUeXBlKTsK
KyAgICByZXR1cm4gbV9zdHJpbmc7Cit9CisKIHZvaWQgSURCQW55OjpzZXROdWxsKCkKIHsKICAg
ICBBU1NFUlQobV90eXBlID09IFVuZGVmaW5lZFR5cGUpOwpAQCAtMTk0LDYgKzIwNywxMyBAQCB2
b2lkIElEQkFueTo6c2V0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSkK
ICAgICBtX3NlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA9IHZhbHVlOwogfQogCit2b2lkIElEQkFueTo6
c2V0KGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBVbmRlZmlu
ZWRUeXBlKTsKKyAgICBtX3R5cGUgPSBTdHJpbmdUeXBlOworICAgIG1fc3RyaW5nID0gdmFsdWU7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJBbnkuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5oCmluZGV4IDZiZWRhNTg4ODA4NGJjMjIxYTNkMThjNjAz
NjQ2NDY0MmRjYTdlNDYuLjkzZWIyNDAxZGFhYjhjODY2NmU2ODQ2NTAxZDUxYjkxMDY5YWFiZGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5oCkBAIC0yOCw2ICsy
OCw3IEBACiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAorI2luY2x1ZGUgIlBsYXRm
b3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTQ5LDYgKzUwLDcgQEAg
Y2xhc3MgSURCQW55IDogcHVibGljIFJlZkNvdW50ZWQ8SURCQW55PiB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8SURCQW55PiBjcmVhdGVJbnZhbGlkKCk7CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8SURCQW55PiBjcmVhdGVOdWxsKCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURC
QW55PiBjcmVhdGVTdHJpbmcoY29uc3QgU3RyaW5nJik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJBbnk+IGNyZWF0ZShUKiBpZGJPYmplY3QpCiAg
ICAgewpAQCAtNzcsNyArNzksOCBAQCBwdWJsaWM6CiAgICAgICAgIElEQktleVR5cGUsCiAgICAg
ICAgIElEQk9iamVjdFN0b3JlVHlwZSwKICAgICAgICAgSURCVHJhbnNhY3Rpb25UeXBlLAotICAg
ICAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWVUeXBlCisgICAgICAgIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZVR5cGUsCisgICAgICAgIFN0cmluZ1R5cGUsCiAgICAgfTsKIAogICAgIFR5cGUgdHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQpAQCAtOTIsNiArOTUsNyBAQCBwdWJsaWM6CiAgICAg
UGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gaWRiT2JqZWN0U3RvcmUoKTsKICAgICBQYXNzUmVm
UHRyPElEQlRyYW5zYWN0aW9uPiBpZGJUcmFuc2FjdGlvbigpOwogICAgIFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkU2NyaXB0VmFsdWUoKTsKKyAgICBjb25zdCBT
dHJpbmcmIHN0cmluZygpOwogCiAgICAgLy8gU2V0IGNhbiBvbmx5IGJlIGNhbGxlZCBvbmNlLgog
ICAgIHZvaWQgc2V0TnVsbCgpOwpAQCAtMTA1LDYgKzEwOSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldChQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPik7CiAgICAgdm9pZCBzZXQoUGFzc1JlZlB0
cjxJREJUcmFuc2FjdGlvbj4pOwogICAgIHZvaWQgc2V0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPik7CisgICAgdm9pZCBzZXQoY29uc3QgU3RyaW5nJik7CiAKIHByaXZhdGU6CiAg
ICAgSURCQW55KCk7CkBAIC0xMjIsNiArMTI3LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SURC
T2JqZWN0U3RvcmU+IG1faWRiT2JqZWN0U3RvcmU7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9u
PiBtX2lkYlRyYW5zYWN0aW9uOwogICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1f
c2VyaWFsaXplZFNjcmlwdFZhbHVlOworICAgIFN0cmluZyBtX3N0cmluZzsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQmFja2luZ1N0b3JlLmgKaW5kZXggZTdiMjIyMjgxN2JjZjdmZmNkYjdjZGY0NzU0ZDc0
ZGQ0MjQ4YWNkYi4uZjc4NDA2MjFiNjFmMmMxNDE4Nzg5NjYzNmQ3NjVjYzg4MjI5ZmQwNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3Jl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3Jl
LmgKQEAgLTUyLDggKzUyLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVJREJE
YXRhYmFzZU1ldGFEYXRhKGludDY0X3Qgcm93SWQsIGNvbnN0IFN0cmluZyYgdmVyc2lvbikgPSAw
OwogICAgIHZpcnR1YWwgYm9vbCBkZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUpID0g
MDsKIAotICAgIHZpcnR1YWwgdm9pZCBnZXRPYmplY3RTdG9yZXMoaW50NjRfdCBkYXRhYmFzZUlk
LCBWZWN0b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcywg
VmVjdG9yPFN0cmluZz4mIGZvdW5kS2V5UGF0aHMsIFZlY3Rvcjxib29sPiYgZm91bmRBdXRvSW5j
cmVtZW50RmxhZ3MpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlT2JqZWN0U3RvcmUoaW50
NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0
aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBpbnQ2NF90JiBhc3NpZ25lZE9iamVjdFN0b3JlSWQpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0T2JqZWN0U3RvcmVzKGludDY0X3QgZGF0YWJhc2VJZCwg
VmVjdG9yPGludDY0X3Q+JiBmb3VuZElkcywgVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMsIFZl
Y3RvcjxJREJLZXlQYXRoPiYgZm91bmRLZXlQYXRocywgVmVjdG9yPGJvb2w+JiBmb3VuZEF1dG9J
bmNyZW1lbnRGbGFncykgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVPYmplY3RTdG9yZShp
bnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYs
IGJvb2wgYXV0b0luY3JlbWVudCwgaW50NjRfdCYgYXNzaWduZWRPYmplY3RTdG9yZUlkKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGludDY0X3QgZGF0YWJhc2VJZCwg
aW50NjRfdCBvYmplY3RTdG9yZUlkKSA9IDA7CiAKICAgICBjbGFzcyBPYmplY3RTdG9yZVJlY29y
ZElkZW50aWZpZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxPYmplY3RTdG9yZVJlY29yZElkZW50aWZp
ZXI+IHsKQEAgLTc3LDggKzc3LDggQEAgcHVibGljOgogICAgIH07CiAgICAgdmlydHVhbCBib29s
IGZvckVhY2hPYmplY3RTdG9yZVJlY29yZChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgT2JqZWN0U3RvcmVSZWNvcmRDYWxsYmFjayYpID0gMDsKIAotICAgIHZpcnR1
YWwgdm9pZCBnZXRJbmRleGVzKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1l
cywgVmVjdG9yPFN0cmluZz4mIGZvdW5kS2V5UGF0aHMsIFZlY3Rvcjxib29sPiYgZm91bmRVbmlx
dWVGbGFncywgVmVjdG9yPGJvb2w+JiBmb3VuZE11bHRpRW50cnlGbGFncykgPSAwOwotICAgIHZp
cnR1YWwgYm9vbCBjcmVhdGVJbmRleChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wg
aXNVbmlxdWUsIGJvb2wgaXNNdWx0aUVudHJ5LCBpbnQ2NF90JiBpbmRleElkKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGdldEluZGV4ZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVj
dFN0b3JlSWQsIFZlY3RvcjxpbnQ2NF90PiYgZm91bmRJZHMsIFZlY3RvcjxTdHJpbmc+JiBmb3Vu
ZE5hbWVzLCBWZWN0b3I8SURCS2V5UGF0aD4mIGZvdW5kS2V5UGF0aHMsIFZlY3Rvcjxib29sPiYg
Zm91bmRVbmlxdWVGbGFncywgVmVjdG9yPGJvb2w+JiBmb3VuZE11bHRpRW50cnlGbGFncykgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJbmRleChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwg
Ym9vbCBpc1VuaXF1ZSwgYm9vbCBpc011bHRpRW50cnksIGludDY0X3QmIGluZGV4SWQpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlSW5kZXgoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBw
dXRJbmRleERhdGFGb3JSZWNvcmQoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiwgY29uc3QgT2JqZWN0U3RvcmVS
ZWNvcmRJZGVudGlmaWVyKikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBkZWxldGVJbmRleERhdGFG
b3JSZWNvcmQoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0
X3QgaW5kZXhJZCwgY29uc3QgT2JqZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyKikgPSAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCmluZGV4
IDMwNjBjZGI2OTNiOGJkNjc5NzhjNzc3NWE0N2NhODlhZDM2Y2U2OTAuLmViOGQ4NjNmYjY5NWFl
ZmM1OTdlY2M3Yzk0ZDEwMDE0ZDlkZTg2YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKQEAgLTkyLDkgKzkyLDE0IEBAIFBhc3NSZWZQ
dHI8SURCT2JqZWN0U3RvcmU+IElEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBT
dHJpbmcmIG5hbWUsIGNvCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIFN0cmluZyBr
ZXlQYXRoOwotICAgIGJvb2wga2V5UGF0aEV4aXN0cyA9IG9wdGlvbnMuZ2V0V2l0aFVuZGVmaW5l
ZE9yTnVsbENoZWNrKCJrZXlQYXRoIiwga2V5UGF0aCk7Ci0gICAgaWYgKGtleVBhdGhFeGlzdHMg
JiYgIUlEQklzVmFsaWRLZXlQYXRoKGtleVBhdGgpKSB7CisgICAgSURCS2V5UGF0aCBrZXlQYXRo
OworICAgIGlmICghb3B0aW9ucy5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIFN0cmlu
ZyBrZXlQYXRoU3RyaW5nOworICAgICAgICBpZiAob3B0aW9ucy5nZXRXaXRoVW5kZWZpbmVkT3JO
dWxsQ2hlY2soImtleVBhdGgiLCBrZXlQYXRoU3RyaW5nKSkKKyAgICAgICAgICAgIGtleVBhdGgg
PSBJREJLZXlQYXRoKGtleVBhdGhTdHJpbmcpOworICAgIH0KKworICAgIGlmICgha2V5UGF0aC5p
c051bGwoKSAmJiAha2V5UGF0aC5pc1ZhbGlkKCkpIHsKICAgICAgICAgZWMgPSBJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6Tk9OX1RSQU5TSUVOVF9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
QmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VCYWNrZW5kSW1wbC5jcHAKaW5kZXggYjA1YjMyODYzZDA3MmZiNjU3ZGNhOWM4ZDY0ZTBi
ODUxYWQwOTI0NS4uNTkxOTlmYzYzMmFiZjE1YWY2ZjgyNzcxNWRjYTExNzk0NDM1YjcxYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VCYWNrZW5kSW1wbC5jcHAKQEAgLTEzNyw3ICsxMzcsNyBAQCBQYXNzUmVmUHRyPERPTVN0
cmluZ0xpc3Q+IElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9iamVjdFN0b3JlTmFtZXMoKSBjb25z
dAogICAgIHJldHVybiBvYmplY3RTdG9yZU5hbWVzLnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0
cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IElEQkRhdGFiYXNlQmFja2VuZEltcGw6
OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQ
YXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSog
dHJhbnNhY3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJPYmplY3RT
dG9yZUJhY2tlbmRJbnRlcmZhY2U+IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZU9iamVj
dFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9v
bCBhdXRvSW5jcmVtZW50LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0
aW9uUHRyLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBBU1NFUlQodHJhbnNhY3Rpb25QdHIt
Pm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpOwogCkBAIC0zNzYsNyAr
Mzc2LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpsb2FkT2JqZWN0U3RvcmVzKCkK
IHsKICAgICBWZWN0b3I8aW50NjRfdD4gaWRzOwogICAgIFZlY3RvcjxTdHJpbmc+IG5hbWVzOwot
ICAgIFZlY3RvcjxTdHJpbmc+IGtleVBhdGhzOworICAgIFZlY3RvcjxJREJLZXlQYXRoPiBrZXlQ
YXRoczsKICAgICBWZWN0b3I8Ym9vbD4gYXV0b0luY3JlbWVudEZsYWdzOwogICAgIG1fYmFja2lu
Z1N0b3JlLT5nZXRPYmplY3RTdG9yZXMobV9pZCwgaWRzLCBuYW1lcywga2V5UGF0aHMsIGF1dG9J
bmNyZW1lbnRGbGFncyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaAppbmRleCAxMDg2ZWIxNmViODdkMTlm
MDI4ZTNmNGM4YzQ3YjkwNWQ4Njc4ZjA1Li4zMzE4ZTJiZjE4NDJmZWY2YzFiMzdkODBmMjYwYmIy
MGU1NTFiMzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIFN0cmluZyB2ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV92ZXJzaW9uOyB9
CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMo
KSBjb25zdDsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bnRlcmZhY2U+IGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQsIElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIHNldFZlcnNp
b24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NS
ZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVh
bCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24o
RE9NU3RyaW5nTGlzdCogb2JqZWN0U3RvcmVOYW1lcywgdW5zaWduZWQgc2hvcnQgbW9kZSwgRXhj
ZXB0aW9uQ29kZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaAppbmRleCA1NmU4ZjJkYmI2
NDJhYWViMTE2Njg5YzU5OTc0ODExNDM0NTRiNjI5Li5lMDcyYTBmMzk1OWQ3MGQ1MWE1MGMyNmIx
ZWIyMTUyMGM1OTZlYjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaApAQCAtMzgsNiAr
MzgsNyBAQCBjbGFzcyBET01TdHJpbmdMaXN0OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBJREJDYWxs
YmFja3M7CiBjbGFzcyBJREJEYXRhYmFzZUNhbGxiYWNrczsKK2NsYXNzIElEQktleVBhdGg7CiBj
bGFzcyBJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U7CiBjbGFzcyBJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2U7CiAKQEAgLTU1LDcgKzU2LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgU3RyaW5nIHZlcnNpb24oKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERP
TVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMoKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVPYmplY3RT
dG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRv
SW5jcmVtZW50LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2Rl
JikgPSAwOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRl
cmZhY2U+IGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5
UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
KiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3Rv
cmUoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBF
eGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWZXJzaW9uKGNvbnN0IFN0
cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQkRh
dGFiYXNlQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbihET01TdHJp
bmdMaXN0KiBzdG9yZU5hbWVzLCB1bnNpZ25lZCBzaG9ydCBtb2RlLCBFeGNlcHRpb25Db2RlJikg
PSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5k
ZXguaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmgKaW5kZXgg
Y2FhMTBlOWZmOTg5YmRkZjgzYmUwMGFlYzA1YzgzYTBhY2VhMTIzZi4uYTkwYWNlMDNkYTA5NjM5
YTU3MDg4YzQxNjNkZDA3ZmZlMjdlMDE4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCSW5kZXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJJbmRleC5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJJREJDdXJz
b3IuaCIKICNpbmNsdWRlICJJREJJbmRleEJhY2tlbmRJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJJ
REJLZXlQYXRoLmgiCiAjaW5jbHVkZSAiSURCS2V5UmFuZ2UuaCIKICNpbmNsdWRlICJJREJSZXF1
ZXN0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKQEAgLTUwLDcgKzUxLDcgQEAgcHVi
bGljOgogICAgIC8vIEltcGxlbWVudCB0aGUgSURMCiAgICAgU3RyaW5nIG5hbWUoKSBjb25zdCB7
IHJldHVybiBtX2JhY2tlbmQtPm5hbWUoKTsgfQogICAgIElEQk9iamVjdFN0b3JlKiBvYmplY3RT
dG9yZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0U3RvcmUuZ2V0KCk7IH0KLSAgICBTdHJpbmcg
a2V5UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZC0+a2V5UGF0aCgpOyB9CisgICAgUGFz
c1JlZlB0cjxJREJBbnk+IGtleVBhdGgoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmQtPmtleVBh
dGgoKTsgfQogICAgIGJvb2wgdW5pcXVlKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kLT51bmlx
dWUoKTsgfQogICAgIGJvb2wgbXVsdGlFbnRyeSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZC0+
bXVsdGlFbnRyeSgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkluZGV4LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkluZGV4LmlkbAppbmRleCBmMThmNmI3OTM3NWIyNGFlZGRjMTViMGI2MWI4MThjOGUyOTFhMWE5
Li5hYjZjZWI3ZDg4NWM4NDdkNTZiODRmNjJmYTE1YjhkNjg1YmFjNjA2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaWRsCkBAIC0zMCw3ICszMCw3IEBA
IG1vZHVsZSBzdG9yYWdlIHsKICAgICBdIElEQkluZGV4IHsKICAgICAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIERPTVN0cmluZyBuYW1lOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgSURCT2Jq
ZWN0U3RvcmUgb2JqZWN0U3RvcmU7Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJp
bmcga2V5UGF0aDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIElEQkFueSBrZXlQYXRoOwog
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiB1bmlxdWU7CiAgICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBib29sZWFuIG11bHRpRW50cnk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAKaW5kZXgg
NWY1NGU2YWQyMGY3NjhjNzJiNWU3N2U2ZWNkM2M5MWIxOTM0NWFmMy4uMGUwZTUyZjQyNDc0OGI2
NTlkNTI1NTNjZjNlNDJkZjEyMTg3NGQ2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAKQEAgLTQxLDcgKzQx
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1JREJJbmRleEJhY2tlbmRJbXBsOjpJREJJ
bmRleEJhY2tlbmRJbXBsKElEQkJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRh
dGFiYXNlSWQsIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwqIG9iamVjdFN0b3JlQmFja2VuZCwg
aW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJv
b2wgdW5pcXVlLCBib29sIG11bHRpRW50cnkpCitJREJJbmRleEJhY2tlbmRJbXBsOjpJREJJbmRl
eEJhY2tlbmRJbXBsKElEQkJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFi
YXNlSWQsIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwqIG9iamVjdFN0b3JlQmFja2VuZCwgaW50
NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBi
b29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5KQogICAgIDogbV9iYWNraW5nU3RvcmUoYmFja2lu
Z1N0b3JlKQogICAgICwgbV9kYXRhYmFzZUlkKGRhdGFiYXNlSWQpCiAgICAgLCBtX29iamVjdFN0
b3JlQmFja2VuZChvYmplY3RTdG9yZUJhY2tlbmQpCkBAIC01Myw3ICs1Myw3IEBAIElEQkluZGV4
QmFja2VuZEltcGw6OklEQkluZGV4QmFja2VuZEltcGwoSURCQmFja2luZ1N0b3JlKiBiYWNraW5n
U3RvcmUsIGludDY0X3QKIHsKIH0KIAotSURCSW5kZXhCYWNrZW5kSW1wbDo6SURCSW5kZXhCYWNr
ZW5kSW1wbChJREJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlk
LCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKiBvYmplY3RTdG9yZUJhY2tlbmQsIGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0
aUVudHJ5KQorSURCSW5kZXhCYWNrZW5kSW1wbDo6SURCSW5kZXhCYWNrZW5kSW1wbChJREJCYWNr
aW5nU3RvcmUqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsKiBvYmplY3RTdG9yZUJhY2tlbmQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSkKICAg
ICA6IG1fYmFja2luZ1N0b3JlKGJhY2tpbmdTdG9yZSkKICAgICAsIG1fZGF0YWJhc2VJZChkYXRh
YmFzZUlkKQogICAgICwgbV9vYmplY3RTdG9yZUJhY2tlbmQob2JqZWN0U3RvcmVCYWNrZW5kKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNr
ZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNr
ZW5kSW1wbC5oCmluZGV4IDk1ZTBmMWUwMTBlN2I0ZDllMzRkN2NjYmRiYjE0NzgwZjU3YjAwMjku
LmM3YmNlMGU0YWM3YzljMzAyNDA0N2JiOTVkOWQ0YTY3ODZhNmE2ODkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmgK
QEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIklEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2Uu
aCIKICNpbmNsdWRlICJJREJJbmRleEJhY2tlbmRJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJJREJL
ZXlQYXRoLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDAsMTEgKzQxLDExIEBAIGNs
YXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKIGNsYXNzIElEQkluZGV4QmFja2VuZEltcGwg
OiBwdWJsaWMgSURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiBjcmVhdGUoSURCQmFja2luZ1N0b3JlKiBi
YWNraW5nU3RvcmUsIGludDY0X3QgZGF0YWJhc2VJZCwgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bCogb2JqZWN0U3RvcmVCYWNrZW5kLCBpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSkKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiBjcmVhdGUoSURCQmFja2luZ1N0
b3JlKiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0YWJhc2VJZCwgSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbCogb2JqZWN0U3RvcmVCYWNrZW5kLCBpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50
cnkpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQkluZGV4QmFja2VuZElt
cGwoYmFja2luZ1N0b3JlLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUJhY2tlbmQsIGlkLCBuYW1l
LCBrZXlQYXRoLCB1bmlxdWUsIG11bHRpRW50cnkpKTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gY3JlYXRlKElEQkJhY2tpbmdTdG9yZSogYmFja2lu
Z1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwqIG9i
amVjdFN0b3JlQmFja2VuZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBh
dGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnkpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8
SURCSW5kZXhCYWNrZW5kSW1wbD4gY3JlYXRlKElEQkJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3Jl
LCBpbnQ2NF90IGRhdGFiYXNlSWQsIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwqIG9iamVjdFN0
b3JlQmFja2VuZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRo
LCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBJREJJbmRleEJhY2tlbmRJbXBsKGJhY2tpbmdTdG9yZSwgZGF0YWJhc2VJZCwg
b2JqZWN0U3RvcmVCYWNrZW5kLCBuYW1lLCBrZXlQYXRoLCB1bmlxdWUsIG11bHRpRW50cnkpKTsK
ICAgICB9CkBAIC02Miw3ICs2Myw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEltcGxlbWVudHMgSURC
SW5kZXhCYWNrZW5kSW50ZXJmYWNlLgogICAgIHZpcnR1YWwgU3RyaW5nIG5hbWUoKSB7IHJldHVy
biBtX25hbWU7IH0KLSAgICB2aXJ0dWFsIFN0cmluZyBrZXlQYXRoKCkgeyByZXR1cm4gbV9rZXlQ
YXRoOyB9CisgICAgdmlydHVhbCBJREJLZXlQYXRoIGtleVBhdGgoKSB7IHJldHVybiBtX2tleVBh
dGg7IH0KICAgICB2aXJ0dWFsIGJvb2wgdW5pcXVlKCkgeyByZXR1cm4gbV91bmlxdWU7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgbXVsdGlFbnRyeSgpIHsgcmV0dXJuIG1fbXVsdGlFbnRyeTsgfQogCkBA
IC03NSw4ICs3Niw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZ2V0S2V5KFBhc3NSZWZQ
dHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7CiAKIHByaXZhdGU6Ci0gICAgSURCSW5kZXhC
YWNrZW5kSW1wbChJREJCYWNraW5nU3RvcmUqLCBpbnQ2NF90IGRhdGFiYXNlSWQsIElEQk9iamVj
dFN0b3JlQmFja2VuZEltcGwqLCBpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSk7Ci0gICAgSURC
SW5kZXhCYWNrZW5kSW1wbChJREJCYWNraW5nU3RvcmUqLCBpbnQ2NF90IGRhdGFiYXNlSWQsIElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGwqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSk7CisgICAgSURCSW5kZXhC
YWNrZW5kSW1wbChJREJCYWNraW5nU3RvcmUqLCBpbnQ2NF90IGRhdGFiYXNlSWQsIElEQk9iamVj
dFN0b3JlQmFja2VuZEltcGwqLCBpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IElEQktleVBhdGgmLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5KTsKKyAgICBJREJJbmRl
eEJhY2tlbmRJbXBsKElEQkJhY2tpbmdTdG9yZSosIGludDY0X3QgZGF0YWJhc2VJZCwgSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbCosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0
aCYsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnkpOwogCiAgICAgc3RhdGljIHZvaWQgb3Bl
bkN1cnNvckludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQklu
ZGV4QmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgdW5zaWduZWQgc2hvcnQg
ZGlyZWN0aW9uLCBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpDdXJzb3JUeXBlLCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlPik7CiAgICAgc3RhdGljIHZvaWQgY291bnRJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJLZXlS
YW5nZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2U+KTsKQEAgLTk2LDcgKzk3LDcgQEAgcHJpdmF0ZToKICAgICBJREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsKiBtX29iamVjdFN0b3JlQmFja2VuZDsKICAgICBpbnQ2NF90
IG1faWQ7CiAgICAgU3RyaW5nIG1fbmFtZTsKLSAgICBTdHJpbmcgbV9rZXlQYXRoOworICAgIElE
QktleVBhdGggbV9rZXlQYXRoOwogICAgIGJvb2wgbV91bmlxdWU7CiAgICAgYm9vbCBtX211bHRp
RW50cnk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJJbmRleEJhY2tlbmRJbnRlcmZhY2UuaAppbmRleCAxNWFjMzg2NDZhZTUxYmY1YTRj
ODE4MzFiYjgwZTJlNTA1ZGVkNTRlLi5kMzVkMTE3N2RhYzZkNmNiZjkwNjM4Zjc3ZGU2NjFlYWM0
NzgxZTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJ
bmRleEJhY2tlbmRJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJJbmRleEJhY2tlbmRJbnRlcmZhY2UuaApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIElEQkNhbGxiYWNrczsKIGNsYXNzIElEQktleTsKK2NsYXNz
IElEQktleVBhdGg7CiBjbGFzcyBJREJLZXlSYW5nZTsKIGNsYXNzIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZTsKIApAQCAtNDYsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+
SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlKCkgeyB9CiAKICAgICB2aXJ0dWFsIFN0cmluZyBuYW1l
KCkgPSAwOwotICAgIHZpcnR1YWwgU3RyaW5nIGtleVBhdGgoKSA9IDA7CisgICAgdmlydHVhbCBJ
REJLZXlQYXRoIGtleVBhdGgoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHVuaXF1ZSgpID0gMDsK
ICAgICB2aXJ0dWFsIGJvb2wgbXVsdGlFbnRyeSgpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UGF0aC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRoLmNwcAppbmRleCBjZDVlOTY2MzQwMDJhY2Q0
MzliNGFkNWNiYmJmNDgyNjU5ZDRhMWJhLi40N2E3MGFlODEyOWI0NzljM2YwMjg3MGUyYTlmZTUx
NTQxZTBjZTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJLZXlQYXRoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJL
ZXlQYXRoLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJB
U0UpCiAKKyNpbmNsdWRlICJET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5
cGUuaD4KICNpbmNsdWRlIDx3dGYvZHRvYS5oPgogCkBAIC0xNzksNiArMTgwLDYxIEBAIHZvaWQg
SURCUGFyc2VLZXlQYXRoKGNvbnN0IFN0cmluZyYga2V5UGF0aCwgVmVjdG9yPFN0cmluZz4mIGVs
ZW1lbnRzLCBJREJLZXlQYXRoCiAgICAgfQogfQogCitJREJLZXlQYXRoOjpJREJLZXlQYXRoKGNv
bnN0IFN0cmluZyYgc3RyaW5nKQorICAgIDogbV90eXBlKFN0cmluZ1R5cGUpCisgICAgLCBtX3N0
cmluZyhzdHJpbmcpCit7CisgICAgQVNTRVJUKCFtX3N0cmluZy5pc051bGwoKSk7Cit9CisKK0lE
QktleVBhdGg6OklEQktleVBhdGgoY29uc3QgVmVjdG9yPFN0cmluZz4mIGFycmF5KQorICAgIDog
bV90eXBlKEFycmF5VHlwZSkKKyAgICAsIG1fYXJyYXkoYXJyYXkpCit7CisjaWZuZGVmIE5ERUJV
RworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9hcnJheS5zaXplKCk7ICsraSkKKyAgICAg
ICAgQVNTRVJUKCFtX2FycmF5W2ldLmlzTnVsbCgpKTsKKyNlbmRpZgorfQorCitib29sIElEQktl
eVBhdGg6OmlzVmFsaWQoKSBjb25zdAoreworICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAgY2Fz
ZSBOdWxsVHlwZToKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY2FzZSBTdHJpbmdUeXBl
OgorICAgICAgICByZXR1cm4gSURCSXNWYWxpZEtleVBhdGgobV9zdHJpbmcpOworCisgICAgY2Fz
ZSBBcnJheVR5cGU6CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9hcnJheS5zaXpl
KCk7ICsraSkgeworICAgICAgICAgICAgaWYgKCFJREJJc1ZhbGlkS2V5UGF0aChtX2FycmF5W2ld
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBm
YWxzZTsKK30KKworSURCS2V5UGF0aDo6b3BlcmF0b3IgUGFzc1JlZlB0cjxJREJBbnk+KCkgY29u
c3QKK3sKKyAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAgIGNhc2UgTnVsbFR5cGU6CisgICAgICAg
IHJldHVybiBJREJBbnk6OmNyZWF0ZU51bGwoKTsKKyAgICBjYXNlIFN0cmluZ1R5cGU6CisgICAg
ICAgIHJldHVybiBJREJBbnk6OmNyZWF0ZVN0cmluZyhtX3N0cmluZyk7CisgICAgY2FzZSBBcnJh
eVR5cGU6CisgICAgICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBrZXlQYXRocyA9IERPTVN0cmlu
Z0xpc3Q6OmNyZWF0ZSgpOworICAgICAgICBmb3IgKFZlY3RvcjxTdHJpbmc+Ojpjb25zdF9pdGVy
YXRvciBpdCA9IG1fYXJyYXkuYmVnaW4oKTsgaXQgIT0gbV9hcnJheS5lbmQoKTsgKytpdCkKKyAg
ICAgICAga2V5UGF0aHMtPmFwcGVuZCgqaXQpOworICAgICAgICByZXR1cm4gSURCQW55OjpjcmVh
dGUoc3RhdGljX2Nhc3Q8UGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiA+KGtleVBhdGhzKSk7Cisg
ICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOworfQorCisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNF
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UGF0
aC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UGF0aC5oCmluZGV4
IGM1MmE2M2JhOGNkOWUxZGFiYWUzODRjOTA1MTcwMjJhOGI0NGQzMWMuLmY1MjM2YzE1MmYwMmNi
ZGEyOGRiOGMzMTUxZjJkZDg1N2VhYWVjZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJLZXlQYXRoLmgKQEAgLTI4LDEwICsyOCw5IEBACiAKICNpZiBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKIAotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlICJJREJBbnkuaCIKKyNpbmNsdWRlICJQbGF0
Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Miw5ICs0MSw0NCBA
QCBlbnVtIElEQktleVBhdGhQYXJzZUVycm9yIHsKICAgICBJREJLZXlQYXRoUGFyc2VFcnJvckRv
dCwKIH07CiAKLWJvb2wgSURCSXNWYWxpZEtleVBhdGgoY29uc3QgU3RyaW5nJik7CiB2b2lkIElE
QlBhcnNlS2V5UGF0aChjb25zdCBTdHJpbmcmLCBWZWN0b3I8U3RyaW5nPiYsIElEQktleVBhdGhQ
YXJzZUVycm9yJik7CiAKK2NsYXNzIElEQktleVBhdGggeworcHVibGljOgorICAgIElEQktleVBh
dGgoKSA6IG1fdHlwZShOdWxsVHlwZSkgeyB9CisgICAgSURCS2V5UGF0aChjb25zdCBTdHJpbmcm
KTsKKyAgICBJREJLZXlQYXRoKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhcnJheSk7CisKKyAgICBl
bnVtIFR5cGUgeworICAgICAgICBOdWxsVHlwZSA9IDAsCisgICAgICAgIFN0cmluZ1R5cGUsCisg
ICAgICAgIEFycmF5VHlwZQorICAgIH07CisKKyAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVy
biBtX3R5cGU7IH0KKworICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhcnJheSgpIGNvbnN0Cisg
ICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IEFycmF5VHlwZSk7CisgICAgICAgIHJldHVy
biBtX2FycmF5OworICAgIH0KKworICAgIGNvbnN0IFN0cmluZyYgc3RyaW5nKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gU3RyaW5nVHlwZSk7CisgICAgICAgIHJldHVy
biBtX3N0cmluZzsKKyAgICB9CisKKyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1f
dHlwZSA9PSBOdWxsVHlwZTsgfQorICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0OworICAgIG9wZXJh
dG9yIFBhc3NSZWZQdHI8SURCQW55PigpIGNvbnN0OworCitwcml2YXRlOgorICAgIFR5cGUgbV90
eXBlOworICAgIFN0cmluZyBtX3N0cmluZzsKKyAgICBWZWN0b3I8U3RyaW5nPiBtX2FycmF5Owor
fTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGhCYWNrZW5kSW1wbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRoQmFja2VuZEltcGwuY3Bw
CmluZGV4IDk0YzdmMjc5MzVjZmEzOWFkMzg4MDAxMmJlNjA5YjZiMTI5NWJmYmEuLjY0YTFmYmM1
YmVkNzBhYzkwODVmNTM2M2I4YTZlZDkzYzJhMjgwMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGhCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UGF0aEJhY2tlbmRJbXBsLmNwcApA
QCAtMzgsMTIgKzM4LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBJREJLZXlQ
YXRoQmFja2VuZEltcGw6OmNyZWF0ZUlEQktleXNGcm9tU2VyaWFsaXplZFZhbHVlc0FuZEtleVBh
dGgoY29uc3QgVmVjdG9yPFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCAwPiYsIGNvbnN0
IFN0cmluZyYsIFZlY3RvcjxSZWZQdHI8SURCS2V5PiwgMD4mKQordm9pZCBJREJLZXlQYXRoQmFj
a2VuZEltcGw6OmNyZWF0ZUlEQktleXNGcm9tU2VyaWFsaXplZFZhbHVlc0FuZEtleVBhdGgoY29u
c3QgVmVjdG9yPFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCAwPiYsIGNvbnN0IElEQktl
eVBhdGgmLCBWZWN0b3I8UmVmUHRyPElEQktleT4sIDA+JikKIHsKICAgICAvLyBGSVhNRTogSW1w
bGVtZW50IHRoaXMgbWV0aG9kIG9uY2UgSlNDIHN1cHBvcnRzIFdpcmVGb3JtYXQgZm9yIFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS4KIH0KIAotUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IElEQktleVBhdGhCYWNrZW5kSW1wbDo6aW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShQ
YXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgY29u
c3QgU3RyaW5nJikKK1Bhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBJREJLZXlQYXRo
QmFja2VuZEltcGw6OmluamVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUoUGFzc1JlZlB0cjxJ
REJLZXk+LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIGNvbnN0IElEQktleVBh
dGgmKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBtZXRob2Qgb25jZSBKU0Mgc3Vw
cG9ydHMgV2lyZUZvcm1hdCBmb3IgU2VyaWFsaXplZFNjcmlwdFZhbHVlLgogICAgIHJldHVybiBQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGhCYWNrZW5kSW1wbC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UGF0aEJhY2tlbmRJbXBsLmgKaW5kZXgg
MWM3NjIzMjIxN2ZmNTBlNGYwZDk3OThmNTdjZjQyNGNkZDNjMTFmZC4uMGYwNTdlYjJiYzczMjUx
ZjdhZDVmMWYwNTA5OTAxZWRjZTUxODkxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCS2V5UGF0aEJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UGF0aEJhY2tlbmRJbXBsLmgKQEAgLTMzLDEyICsz
MywxMyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJREJLZXk7CitjbGFzcyBJREJL
ZXlQYXRoOwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwogCiBjbGFzcyBJREJLZXlQYXRo
QmFja2VuZEltcGwgewogcHVibGljOgotICAgIHN0YXRpYyB2b2lkIGNyZWF0ZUlEQktleXNGcm9t
U2VyaWFsaXplZFZhbHVlc0FuZEtleVBhdGgoY29uc3QgVmVjdG9yPFJlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+LCAwPiYgdmFsdWVzLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIFZlY3RvcjxS
ZWZQdHI8SURCS2V5PiwgMD4mIGtleXMpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gaW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShQYXNzUmVmUHRy
PElEQktleT4sIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgY29uc3QgU3RyaW5n
JiBrZXlQYXRoKTsKKyAgICBzdGF0aWMgdm9pZCBjcmVhdGVJREJLZXlzRnJvbVNlcmlhbGl6ZWRW
YWx1ZXNBbmRLZXlQYXRoKGNvbnN0IFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiwgMD4mIHZhbHVlcywgY29uc3QgSURCS2V5UGF0aCYsIFZlY3RvcjxSZWZQdHI8SURCS2V5Piwg
MD4mIGtleXMpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
aW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShQYXNzUmVmUHRyPElEQktleT4sIFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgY29uc3QgSURCS2V5UGF0aCYpOwogfTsKIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxE
QkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJM
ZXZlbERCQmFja2luZ1N0b3JlLmNwcAppbmRleCBjN2VmNzUyY2MwY2M3NzQ1M2MyOGM0YTlhMTM3
YThjZThkNWUyOWM1Li40OTc3N2M2MWJmMzVjYzdiNjRkMTFmMzE1ZmEyMzNkNWQ3NzY5NWZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFj
a2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJM
ZXZlbERCQmFja2luZ1N0b3JlLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgPHd0Zi9B
c3NlcnRpb25zLmg+CiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIklEQkZhY3Rv
cnlCYWNrZW5kSW1wbC5oIgorI2luY2x1ZGUgIklEQktleVBhdGguaCIKICNpbmNsdWRlICJJREJL
ZXlSYW5nZS5oIgogI2luY2x1ZGUgIklEQkxldmVsREJDb2RpbmcuaCIKICNpbmNsdWRlICJMZXZl
bERCQ29tcGFyYXRvci5oIgpAQCAtOTgsNiArOTksMTQgQEAgc3RhdGljIGJvb2wgcHV0U3RyaW5n
KERCT3JUcmFuc2FjdGlvbiogZGIsIGNvbnN0IFZlY3RvcjxjaGFyPiBrZXksIGNvbnN0IFN0cmlu
ZyYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordGVtcGxhdGUgPHR5cGVuYW1lIERCT3JUcmFuc2Fj
dGlvbj4KK3N0YXRpYyBib29sIHB1dElEQktleVBhdGgoREJPclRyYW5zYWN0aW9uKiBkYiwgY29u
c3QgVmVjdG9yPGNoYXI+IGtleSwgY29uc3QgSURCS2V5UGF0aCYgdmFsdWUpCit7CisgICAgaWYg
KCFkYi0+cHV0KGtleSwgZW5jb2RlSURCS2V5UGF0aCh2YWx1ZSkpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHN0YXRpYyBpbnQgY29tcGFyZUtleXMoY29u
c3QgTGV2ZWxEQlNsaWNlJiBhLCBjb25zdCBMZXZlbERCU2xpY2UmIGIpCiB7CiAgICAgcmV0dXJu
IGNvbXBhcmUoYSwgYik7CkBAIC0zMjcsNyArMzM2LDcgQEAgc3RhdGljIGJvb2wgY2hlY2tPYmpl
Y3RTdG9yZUFuZE1ldGFEYXRhVHlwZShjb25zdCBMZXZlbERCSXRlcmF0b3IqIGl0LCBjb25zdCBW
ZWMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpn
ZXRPYmplY3RTdG9yZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZvdW5k
SWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcywgVmVjdG9yPFN0cmluZz4mIGZvdW5kS2V5
UGF0aHMsIFZlY3Rvcjxib29sPiYgZm91bmRBdXRvSW5jcmVtZW50RmxhZ3MpCit2b2lkIElEQkxl
dmVsREJCYWNraW5nU3RvcmU6OmdldE9iamVjdFN0b3JlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIFZl
Y3RvcjxpbnQ2NF90PiYgZm91bmRJZHMsIFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzLCBWZWN0
b3I8SURCS2V5UGF0aD4mIGZvdW5kS2V5UGF0aHMsIFZlY3Rvcjxib29sPiYgZm91bmRBdXRvSW5j
cmVtZW50RmxhZ3MpCiB7CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+IHN0YXJ0S2V5ID0gT2JqZWN0
U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIDEsIDApOwogICAgIGNvbnN0IFZl
Y3RvcjxjaGFyPiBzdG9wS2V5ID0gT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlTWF4S2V5
KGRhdGFiYXNlSWQpOwpAQCAtMzYzLDggKzM3Miw3IEBAIHZvaWQgSURCTGV2ZWxEQkJhY2tpbmdT
dG9yZTo6Z2V0T2JqZWN0U3RvcmVzKGludDY0X3QgZGF0YWJhc2VJZCwgVmVjdG9yPGludDY0X3Q+
CiAgICAgICAgICAgICBMT0dfRVJST1IoIkludGVybmFsIEluZGV4ZWQgREIgZXJyb3IuIik7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgU3RyaW5nIGtleVBhdGggPSBk
ZWNvZGVTdHJpbmcoaXQtPnZhbHVlKCkuYmVnaW4oKSwgaXQtPnZhbHVlKCkuZW5kKCkpOwotICAg
ICAgICBib29sIGhhc0tleVBhdGggPSB0cnVlOworICAgICAgICBJREJLZXlQYXRoIGtleVBhdGgg
PSBkZWNvZGVJREJLZXlQYXRoKGl0LT52YWx1ZSgpLmJlZ2luKCksIGl0LT52YWx1ZSgpLmVuZCgp
KTsKIAogICAgICAgICBpdC0+bmV4dCgpOwogICAgICAgICBpZiAoIWNoZWNrT2JqZWN0U3RvcmVB
bmRNZXRhRGF0YVR5cGUoaXQuZ2V0KCksIHN0b3BLZXksIG9iamVjdFN0b3JlSWQsIE9iamVjdFN0
b3JlTWV0YURhdGFLZXk6OmtBdXRvSW5jcmVtZW50KSkgewpAQCAtMzkzLDE3ICs0MDEsMjMgQEAg
dm9pZCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRPYmplY3RTdG9yZXMoaW50NjRfdCBkYXRh
YmFzZUlkLCBWZWN0b3I8aW50NjRfdD4KIAogICAgICAgICBpdC0+bmV4dCgpOyAvLyBbb3B0aW9u
YWxdIGhhcyBrZXkgcGF0aCAoaXMgbm90IG51bGwpCiAgICAgICAgIGlmIChjaGVja09iamVjdFN0
b3JlQW5kTWV0YURhdGFUeXBlKGl0LmdldCgpLCBzdG9wS2V5LCBvYmplY3RTdG9yZUlkLCBPYmpl
Y3RTdG9yZU1ldGFEYXRhS2V5OjprSGFzS2V5UGF0aCkpIHsKLSAgICAgICAgICAgIGhhc0tleVBh
dGggPSBkZWNvZGVCb29sKGl0LT52YWx1ZSgpLmJlZ2luKCksIGl0LT52YWx1ZSgpLmVuZCgpKTsK
LSAgICAgICAgICAgIGlmICghaGFzS2V5UGF0aCAmJiAha2V5UGF0aC5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgICAgIGJvb2wgaGFzS2V5UGF0aCA9IGRlY29kZUJvb2woaXQtPnZhbHVlKCkuYmVnaW4o
KSwgaXQtPnZhbHVlKCkuZW5kKCkpOworICAgICAgICAgICAgLy8gVGhpcyBjaGVjayBhY2NvdW50
cyBmb3IgdHdvIGxheWVycyBvZiBsZWdhY3kgY29kaW5nOgorICAgICAgICAgICAgLy8gKDEpIElu
aXRpYWxseSwgaGFzS2V5UGF0aCB3YXMgYWRkZWQgdG8gZGlzdGluZ3Vpc2ggbnVsbCB2cy4gc3Ry
aW5nLgorICAgICAgICAgICAgLy8gKDIpIExhdGVyLCBudWxsIHZzLiBzdHJpbmcgdnMuIGFycmF5
IHdhcyBzdG9yZWQgaW4gdGhlIGtleVBhdGggaXRzZWxmLgorICAgICAgICAgICAgLy8gU28gdGhp
cyBjaGVjayBpcyBvbmx5IHJlbGV2YW50IGZvciBzdHJpbmctdHlwZSBrZXlQYXRocy4KKyAgICAg
ICAgICAgIGlmICghaGFzS2V5UGF0aCAmJiAoa2V5UGF0aC50eXBlKCkgPT0gSURCS2V5UGF0aDo6
U3RyaW5nVHlwZSAmJiAha2V5UGF0aC5zdHJpbmcoKS5pc0VtcHR5KCkpKSB7CiAgICAgICAgICAg
ICAgICAgTE9HX0VSUk9SKCJJbnRlcm5hbCBJbmRleGVkIERCIGVycm9yLiIpOwogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghaGFzS2V5UGF0
aCkKKyAgICAgICAgICAgICAgICBrZXlQYXRoID0gSURCS2V5UGF0aCgpOwogICAgICAgICAgICAg
aXQtPm5leHQoKTsKICAgICAgICAgfQogCiAgICAgICAgIGZvdW5kSWRzLmFwcGVuZChvYmplY3RT
dG9yZUlkKTsKICAgICAgICAgZm91bmROYW1lcy5hcHBlbmQob2JqZWN0U3RvcmVOYW1lKTsKLSAg
ICAgICAgZm91bmRLZXlQYXRocy5hcHBlbmQoaGFzS2V5UGF0aCA/IGtleVBhdGggOiBTdHJpbmco
KSk7CisgICAgICAgIGZvdW5kS2V5UGF0aHMuYXBwZW5kKGtleVBhdGgpOwogICAgICAgICBmb3Vu
ZEF1dG9JbmNyZW1lbnRGbGFncy5hcHBlbmQoYXV0b0luY3JlbWVudCk7CiAgICAgfQogfQpAQCAt
NDI0LDcgKzQzOCw3IEBAIHN0YXRpYyBpbnQ2NF90IGdldE5ld09iamVjdFN0b3JlSWQoTGV2ZWxE
QlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhCiAgICAgcmV0dXJuIG9iamVj
dFN0b3JlSWQ7CiB9CiAKLWJvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0
U3RvcmUoaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBpbnQ2NF90JiBhc3NpZ25lZE9iamVjdFN0
b3JlSWQpCitib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKGlu
dDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBr
ZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIGludDY0X3QmIGFzc2lnbmVkT2JqZWN0U3RvcmVJ
ZCkKIHsKICAgICBBU1NFUlQobV9jdXJyZW50VHJhbnNhY3Rpb24pOwogICAgIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCA9IGdldE5ld09iamVjdFN0b3JlSWQobV9jdXJyZW50VHJhbnNhY3Rpb24uZ2V0
KCksIGRhdGFiYXNlSWQpOwpAQCAtNDQ2LDcgKzQ2MCw3IEBAIGJvb2wgSURCTGV2ZWxEQkJhY2tp
bmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUoaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBTdHJp
bmcmCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBvayA9IHB1dFN0cmluZyht
X2N1cnJlbnRUcmFuc2FjdGlvbi5nZXQoKSwga2V5UGF0aEtleSwga2V5UGF0aCk7CisgICAgb2sg
PSBwdXRJREJLZXlQYXRoKG1fY3VycmVudFRyYW5zYWN0aW9uLmdldCgpLCBrZXlQYXRoS2V5LCBr
ZXlQYXRoKTsKICAgICBpZiAoIW9rKSB7CiAgICAgICAgIExPR19FUlJPUigiSW50ZXJuYWwgSW5k
ZXhlZCBEQiBlcnJvci4iKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNzE3LDcgKzczMSw3
IEBAIHN0YXRpYyBib29sIGNoZWNrSW5kZXhBbmRNZXRhRGF0YUtleShjb25zdCBMZXZlbERCSXRl
cmF0b3IqIGl0LCBjb25zdCBWZWN0b3I8Y2hhCiB9CiAKIAotdm9pZCBJREJMZXZlbERCQmFja2lu
Z1N0b3JlOjpnZXRJbmRleGVzKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1l
cywgVmVjdG9yPFN0cmluZz4mIGZvdW5kS2V5UGF0aHMsIFZlY3Rvcjxib29sPiYgZm91bmRVbmlx
dWVGbGFncywgVmVjdG9yPGJvb2w+JiBmb3VuZE11bHRpRW50cnlGbGFncykKK3ZvaWQgSURCTGV2
ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0SW5kZXhlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgVmVjdG9yPGludDY0X3Q+JiBmb3VuZElkcywgVmVjdG9yPFN0cmluZz4m
IGZvdW5kTmFtZXMsIFZlY3RvcjxJREJLZXlQYXRoPiYgZm91bmRLZXlQYXRocywgVmVjdG9yPGJv
b2w+JiBmb3VuZFVuaXF1ZUZsYWdzLCBWZWN0b3I8Ym9vbD4mIGZvdW5kTXVsdGlFbnRyeUZsYWdz
KQogewogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBzdGFydEtleSA9IEluZGV4TWV0YURhdGFLZXk6
OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCAwLCAwKTsKICAgICBjb25zdCBWZWN0
b3I8Y2hhcj4gc3RvcEtleSA9IEluZGV4TWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBv
YmplY3RTdG9yZUlkICsgMSwgMCwgMCk7CkBAIC03NjAsNyArNzc0LDcgQEAgdm9pZCBJREJMZXZl
bERCQmFja2luZ1N0b3JlOjpnZXRJbmRleGVzKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBv
YmplY3RTdG9yZUkKICAgICAgICAgICAgIExPR19FUlJPUigiSW50ZXJuYWwgSW5kZXhlZCBEQiBl
cnJvci4iKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBTdHJpbmcg
a2V5UGF0aCA9IGRlY29kZVN0cmluZyhpdC0+dmFsdWUoKS5iZWdpbigpLCBpdC0+dmFsdWUoKS5l
bmQoKSk7CisgICAgICAgIElEQktleVBhdGgga2V5UGF0aCA9IGRlY29kZUlEQktleVBhdGgoaXQt
PnZhbHVlKCkuYmVnaW4oKSwgaXQtPnZhbHVlKCkuZW5kKCkpOwogCiAgICAgICAgIGl0LT5uZXh0
KCk7IC8vIFtvcHRpb25hbF0gbXVsdGlFbnRyeSBmbGFnCiAgICAgICAgIGJvb2wgaW5kZXhNdWx0
aUVudHJ5ID0gZmFsc2U7CkBAIC03OTMsNyArODA3LDcgQEAgc3RhdGljIGludDY0X3QgZ2V0TmV3
SW5kZXhJZChMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNl
SWQKICAgICByZXR1cm4gaW5kZXhJZDsKIH0KIAotYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3Jl
OjpjcmVhdGVJbmRleChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgaXNVbmlxdWUs
IGJvb2wgaXNNdWx0aUVudHJ5LCBpbnQ2NF90JiBpbmRleElkKQorYm9vbCBJREJMZXZlbERCQmFj
a2luZ1N0b3JlOjpjcmVhdGVJbmRleChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBi
b29sIGlzVW5pcXVlLCBib29sIGlzTXVsdGlFbnRyeSwgaW50NjRfdCYgaW5kZXhJZCkKIHsKICAg
ICBBU1NFUlQobV9jdXJyZW50VHJhbnNhY3Rpb24pOwogICAgIGluZGV4SWQgPSBnZXROZXdJbmRl
eElkKG1fY3VycmVudFRyYW5zYWN0aW9uLmdldCgpLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlk
KTsKQEAgLTgxNyw3ICs4MzEsNyBAQCBib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0
ZUluZGV4KGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgb2sgPSBwdXRTdHJpbmcobV9jdXJyZW50VHJhbnNh
Y3Rpb24uZ2V0KCksIGtleVBhdGhLZXksIGtleVBhdGgpOworICAgIG9rID0gcHV0SURCS2V5UGF0
aChtX2N1cnJlbnRUcmFuc2FjdGlvbi5nZXQoKSwga2V5UGF0aEtleSwga2V5UGF0aCk7CiAgICAg
aWYgKCFvaykgewogICAgICAgICBMT0dfRVJST1IoIkludGVybmFsIEluZGV4ZWQgREIgZXJyb3Iu
Iik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaAppbmRleCBlMTdhNmYx
ZmIyNzljMmExOTFmZWQzMzFjOTk3NjZkMTA2MmQ0NmY1Li5jYzg3MGZlYzVjYTBlZTI4Yzk3YjU0
N2ZhNjQ2MWNlNjJiZmQwNmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oCkBAIC01MCw4ICs1MCw4IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlSURCRGF0YWJhc2VNZXRhRGF0YShpbnQ2
NF90IHJvd0lkLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pOwogICAgIHZpcnR1YWwgYm9vbCBkZWxl
dGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUpOwogCi0gICAgdmlydHVhbCB2b2lkIGdldE9i
amVjdFN0b3JlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIFZlY3RvcjxpbnQ2NF90PiYgZm91bmRJZHMs
IFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmRLZXlQYXRo
cywgVmVjdG9yPGJvb2w+JiBmb3VuZEF1dG9JbmNyZW1lbnRGbGFncyk7Ci0gICAgdmlydHVhbCBi
b29sIGNyZWF0ZU9iamVjdFN0b3JlKGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgaW50NjRfdCYg
YXNzaWduZWRPYmplY3RTdG9yZUlkKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0T2JqZWN0U3RvcmVz
KGludDY0X3QgZGF0YWJhc2VJZCwgVmVjdG9yPGludDY0X3Q+JiBmb3VuZElkcywgVmVjdG9yPFN0
cmluZz4mIGZvdW5kTmFtZXMsIFZlY3RvcjxJREJLZXlQYXRoPiYgZm91bmRLZXlQYXRocywgVmVj
dG9yPGJvb2w+JiBmb3VuZEF1dG9JbmNyZW1lbnRGbGFncyk7CisgICAgdmlydHVhbCBib29sIGNy
ZWF0ZU9iamVjdFN0b3JlKGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50LCBpbnQ2NF90JiBhc3NpZ25lZE9i
amVjdFN0b3JlSWQpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShpbnQ2NF90
IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCk7CiAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPE9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllcj4gY3JlYXRlSW52YWxpZFJlY29yZElkZW50
aWZpZXIoKTsKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRPYmplY3RTdG9yZVJlY29yZChpbnQ2NF90
IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5Jik7CkBAIC02
Myw4ICs2Myw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBmb3JFYWNoT2JqZWN0U3Rv
cmVSZWNvcmQoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIE9iamVj
dFN0b3JlUmVjb3JkQ2FsbGJhY2smKTsKIAotICAgIHZpcnR1YWwgdm9pZCBnZXRJbmRleGVzKGlu
dDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBWZWN0b3I8aW50NjRfdD4m
IGZvdW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcywgVmVjdG9yPFN0cmluZz4mIGZv
dW5kS2V5UGF0aHMsIFZlY3Rvcjxib29sPiYgZm91bmRVbmlxdWVGbGFncywgVmVjdG9yPGJvb2w+
JiBmb3VuZE11bHRpRW50cnlGbGFncyk7Ci0gICAgdmlydHVhbCBib29sIGNyZWF0ZUluZGV4KGlu
dDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBpc1VuaXF1ZSwgYm9vbCBpc011bHRpRW50
cnksIGludDY0X3QmIGluZGV4SWQpOworICAgIHZpcnR1YWwgdm9pZCBnZXRJbmRleGVzKGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZv
dW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcywgVmVjdG9yPElEQktleVBhdGg+JiBm
b3VuZEtleVBhdGhzLCBWZWN0b3I8Ym9vbD4mIGZvdW5kVW5pcXVlRmxhZ3MsIFZlY3Rvcjxib29s
PiYgZm91bmRNdWx0aUVudHJ5RmxhZ3MpOworICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJbmRleChp
bnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCBpc1VuaXF1ZSwgYm9vbCBpc011bHRpRW50cnks
IGludDY0X3QmIGluZGV4SWQpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVJbmRleChpbnQ2NF90
IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkKTsKICAg
ICB2aXJ0dWFsIGJvb2wgcHV0SW5kZXhEYXRhRm9yUmVjb3JkKGludDY0X3QgZGF0YWJhc2VJZCwg
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYsIGNv
bnN0IE9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllciopOwogICAgIHZpcnR1YWwgYm9vbCBkZWxl
dGVJbmRleERhdGFGb3JSZWNvcmQoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgT2JqZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVy
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZl
bERCQ29kaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVs
REJDb2RpbmcuY3BwCmluZGV4IDUwZGUxMmYzN2JlNDQyYzA4ZGQ3NmE2ZmU0MzBiYTViNGMxMTA5
OTQuLjFlYTdmNjg4OGNmMmE1MDcxYzhkOTE3ZDI5ZWZkY2FmMmRjNGVjYWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuY3Bw
CkBAIC0zMCw2ICszMCw3IEBACiAjaWYgVVNFKExFVkVMREIpCiAKICNpbmNsdWRlICJJREJLZXku
aCIKKyNpbmNsdWRlICJJREJLZXlQYXRoLmgiCiAjaW5jbHVkZSAiTGV2ZWxEQlNsaWNlLmgiCiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCkBAIC0xNDIsNiArMTQzLDkgQEAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga0lEQktleU51bWJlclR5cGVCeXRlID0gMzsKIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGtJREJLZXlBcnJheVR5cGVCeXRlID0gNDsKIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBjaGFyIGtJREJLZXlNaW5LZXlUeXBlQnl0ZSA9IDU7CiAKK3N0YXRp
YyBjb25zdCB1bnNpZ25lZCBjaGFyIGtJREJLZXlQYXRoVHlwZUNvZGVkQnl0ZTEgPSAwOworc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga0lEQktleVBhdGhUeXBlQ29kZWRCeXRlMiA9IDA7CisK
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGtPYmplY3RTdG9yZURhdGFJbmRleElkID0gMTsK
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGtFeGlzdHNFbnRyeUluZGV4SWQgPSAyOwogCkBA
IC02MjYsNiArNjMwLDc0IEBAIGludCBjb21wYXJlRW5jb2RlZElEQktleXMoY29uc3QgVmVjdG9y
PGNoYXI+JiBrZXlBLCBjb25zdCBWZWN0b3I8Y2hhcj4mIGtleUIpCiAgICAgcmV0dXJuIGNvbXBh
cmVFbmNvZGVkSURCS2V5cyhwLCBsaW1pdEEsIHEsIGxpbWl0Qik7CiB9CiAKK1ZlY3RvcjxjaGFy
PiBlbmNvZGVJREJLZXlQYXRoKGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgpCit7CisgICAgLy8g
TWF5IGJlIHR5cGVkLCBvciBtYXkgYmUgYSByYXcgc3RyaW5nLiBBbiBpbnZhbGlkIGxlYWRpbmcK
KyAgICAvLyBieXRlIGlzIHVzZWQgdG8gaWRlbnRpZnkgdHlwZWQgY29kaW5nLiBOZXcgcmVjb3Jk
cyBhcmUKKyAgICAvLyBhbHdheXMgd3JpdHRlbiBhcyB0eXBlZC4KKyAgICBWZWN0b3I8Y2hhcj4g
cmV0OworICAgIHJldC5hcHBlbmQoa0lEQktleVBhdGhUeXBlQ29kZWRCeXRlMSk7CisgICAgcmV0
LmFwcGVuZChrSURCS2V5UGF0aFR5cGVDb2RlZEJ5dGUyKTsKKyAgICByZXQuYXBwZW5kKHN0YXRp
Y19jYXN0PGNoYXI+KGtleVBhdGgudHlwZSgpKSk7CisgICAgc3dpdGNoIChrZXlQYXRoLnR5cGUo
KSkgeworICAgIGNhc2UgSURCS2V5UGF0aDo6TnVsbFR5cGU6CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgSURCS2V5UGF0aDo6U3RyaW5nVHlwZToKKyAgICAgICAgcmV0LmFwcGVuZChlbmNvZGVT
dHJpbmdXaXRoTGVuZ3RoKGtleVBhdGguc3RyaW5nKCkpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBJREJLZXlQYXRoOjpBcnJheVR5cGU6IHsKKyAgICAgICAgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGFycmF5ID0ga2V5UGF0aC5hcnJheSgpOworICAgICAgICBzaXplX3QgY291bnQgPSBhcnJh
eS5zaXplKCk7CisgICAgICAgIHJldC5hcHBlbmQoZW5jb2RlVmFySW50KGNvdW50KSk7CisgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkKKyAgICAgICAgICAgIHJldC5h
cHBlbmQoZW5jb2RlU3RyaW5nV2l0aExlbmd0aChhcnJheVtpXSkpOworICAgICAgICBicmVhazsK
KyAgICB9CisgICAgfQorICAgIHJldHVybiByZXQ7Cit9CisKK0lEQktleVBhdGggZGVjb2RlSURC
S2V5UGF0aChjb25zdCBjaGFyKiBwLCBjb25zdCBjaGFyKiBsaW1pdCkKK3sKKyAgICAvLyBNYXkg
YmUgdHlwZWQsIG9yIG1heSBiZSBhIHJhdyBzdHJpbmcuIEFuIGludmFsaWQgbGVhZGluZworICAg
IC8vIGJ5dGUgc2VxdWVuY2UgaXMgdXNlZCB0byBpZGVudGlmeSB0eXBlZCBjb2RpbmcuIE5ldyBy
ZWNvcmRzIGFyZQorICAgIC8vIGFsd2F5cyB3cml0dGVuIGFzIHR5cGVkLgorICAgIGlmIChwID09
IGxpbWl0IHx8IChsaW1pdCAtIHAgPj0gMiAmJiAoKnAgIT0ga0lEQktleVBhdGhUeXBlQ29kZWRC
eXRlMSB8fCAqKHAgKyAxKSAhPSBrSURCS2V5UGF0aFR5cGVDb2RlZEJ5dGUyKSkpCisgICAgICAg
IHJldHVybiBJREJLZXlQYXRoKGRlY29kZVN0cmluZyhwLCBsaW1pdCkpOworICAgIHAgKz0gMjsK
KworICAgIEFTU0VSVChwICE9IGxpbWl0KTsKKyAgICBJREJLZXlQYXRoOjpUeXBlIHR5cGUgPSBz
dGF0aWNfY2FzdDxJREJLZXlQYXRoOjpUeXBlPigqcCsrKTsKKyAgICBzd2l0Y2ggKHR5cGUpIHsK
KyAgICBjYXNlIElEQktleVBhdGg6Ok51bGxUeXBlOgorICAgICAgICBBU1NFUlQocCA9PSBsaW1p
dCk7CisgICAgICAgIHJldHVybiBJREJLZXlQYXRoKCk7CisgICAgY2FzZSBJREJLZXlQYXRoOjpT
dHJpbmdUeXBlOiB7CisgICAgICAgIFN0cmluZyBzdHJpbmc7CisgICAgICAgIHAgPSBkZWNvZGVT
dHJpbmdXaXRoTGVuZ3RoKHAsIGxpbWl0LCBzdHJpbmcpOworICAgICAgICBBU1NFUlQocCA9PSBs
aW1pdCk7CisgICAgICAgIHJldHVybiBJREJLZXlQYXRoKHN0cmluZyk7CisgICAgfQorICAgIGNh
c2UgSURCS2V5UGF0aDo6QXJyYXlUeXBlOiB7CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IGFycmF5
OworICAgICAgICBpbnQ2NF90IGNvdW50OworICAgICAgICBwID0gZGVjb2RlVmFySW50KHAsIGxp
bWl0LCBjb3VudCk7CisgICAgICAgIEFTU0VSVChwKTsKKyAgICAgICAgQVNTRVJUKGNvdW50ID49
IDApOworICAgICAgICB3aGlsZSAoY291bnQtLSkgeworICAgICAgICAgICAgU3RyaW5nIHN0cmlu
ZzsKKyAgICAgICAgICAgIHAgPSBkZWNvZGVTdHJpbmdXaXRoTGVuZ3RoKHAsIGxpbWl0LCBzdHJp
bmcpOworICAgICAgICAgICAgQVNTRVJUKHApOworICAgICAgICAgICAgYXJyYXkuYXBwZW5kKHN0
cmluZyk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKHAgPT0gbGltaXQpOworICAgICAgICBy
ZXR1cm4gSURCS2V5UGF0aChhcnJheSk7CisgICAgfQorICAgIH0KKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gSURCS2V5UGF0aCgpOworfQorCiBuYW1lc3BhY2UgewogdGVt
cGxhdGU8dHlwZW5hbWUgS2V5VHlwZT4KIGludCBkZWNvZGVBbmRDb21wYXJlKGNvbnN0IExldmVs
REJTbGljZSYgYSwgY29uc3QgTGV2ZWxEQlNsaWNlJiBiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5oCmluZGV4IGM4MDFkZjdlYjVl
YmU4ZmU1MzU4YmU5NzA4OTlhMDdjMjdmZGQ1YjcuLmNjMWY3Mjc4ZGVmZWM2ZTQ2MGQ5NGMxNDIx
OTI2ZDE0OTE4NjM5ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkxldmVsREJDb2RpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJMZXZlbERCQ29kaW5nLmgKQEAgLTM2LDYgKzM2LDcgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgSURCS2V5OworY2xhc3MgSURCS2V5UGF0aDsKIGNsYXNzIExldmVsREJT
bGljZTsKIAogbmFtZXNwYWNlIElEQkxldmVsREJDb2RpbmcgewpAQCAtNjMsNiArNjQsOCBAQCBW
ZWN0b3I8Y2hhcj4gZW5jb2RlSURCS2V5KGNvbnN0IElEQktleSYpOwogY29uc3QgY2hhciogZGVj
b2RlSURCS2V5KGNvbnN0IGNoYXIqIHAsIGNvbnN0IGNoYXIqIGxpbWl0LCBSZWZQdHI8SURCS2V5
PiYgZm91bmRLZXkpOwogY29uc3QgY2hhciogZXh0cmFjdEVuY29kZWRJREJLZXkoY29uc3QgY2hh
ciogc3RhcnQsIGNvbnN0IGNoYXIqIGxpbWl0LCBWZWN0b3I8Y2hhcj4qIHJlc3VsdCk7CiBpbnQg
Y29tcGFyZUVuY29kZWRJREJLZXlzKGNvbnN0IFZlY3RvcjxjaGFyPiYsIGNvbnN0IFZlY3Rvcjxj
aGFyPiYpOworVmVjdG9yPGNoYXI+IGVuY29kZUlEQktleVBhdGgoY29uc3QgSURCS2V5UGF0aCYp
OworSURCS2V5UGF0aCBkZWNvZGVJREJLZXlQYXRoKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKik7
CiAKIGludCBjb21wYXJlKGNvbnN0IExldmVsREJTbGljZSYsIGNvbnN0IExldmVsREJTbGljZSYs
IGJvb2wgaW5kZXhLZXlzID0gZmFsc2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKaW5kZXggYzM1ZmI0ODhjYjQ2NWNlMWY1
M2M2MmE5NGY4YmEwNDIwOTA2NjE4ZC4uNWFlMjY0NmYyODVlNTYzNGI1MzM0ZTU2MjRmMzQ2MWFh
N2QxNDNkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
T2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
Qk9iamVjdFN0b3JlLmNwcApAQCAtNjAsNyArNjAsNyBAQCBTdHJpbmcgSURCT2JqZWN0U3RvcmU6
Om5hbWUoKSBjb25zdAogICAgIHJldHVybiBtX2JhY2tlbmQtPm5hbWUoKTsKIH0KIAotU3RyaW5n
IElEQk9iamVjdFN0b3JlOjprZXlQYXRoKCkgY29uc3QKK1Bhc3NSZWZQdHI8SURCQW55PiBJREJP
YmplY3RTdG9yZTo6a2V5UGF0aCgpIGNvbnN0CiB7CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RT
dG9yZTo6a2V5UGF0aCIpOwogICAgIHJldHVybiBtX2JhY2tlbmQtPmtleVBhdGgoKTsKQEAgLTIx
MSw4ICsyMTEsMTMgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Y2xl
YXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXgKIAogUGFzc1JlZlB0cjxJREJJ
bmRleD4gSURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgU3RyaW5nJiBrZXlQYXRoLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBFeGNlcHRpb25D
b2RlJiBlYykKIHsKKyAgICByZXR1cm4gY3JlYXRlSW5kZXgobmFtZSwgSURCS2V5UGF0aChrZXlQ
YXRoKSwgb3B0aW9ucywgZWMpOworfQorCitQYXNzUmVmUHRyPElEQkluZGV4PiBJREJPYmplY3RT
dG9yZTo6Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBr
ZXlQYXRoLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBFeGNlcHRpb25Db2RlJiBlYykKK3sK
ICAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleCIpOwotICAgIGlmICgh
SURCSXNWYWxpZEtleVBhdGgoa2V5UGF0aCkpIHsKKyAgICBpZiAoIWtleVBhdGguaXNWYWxpZCgp
KSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246Ok5PTl9UUkFOU0lFTlRfRVJS
OwogICAgICAgICByZXR1cm4gMDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaAppbmRleCBjNWFhZjM4M2NkZWM3YzU0ZmU0N2Rk
ODIzZTZkOTk4Y2JmYmZiZjQwLi45YjI4YTc0NDk3Njk4ZmRmMjNlN2I0YmRiYWNlZDYwMjM4YzAy
NDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmpl
Y3RTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVj
dFN0b3JlLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogCiAgICAgLy8gSW1wbGVtZW50IHRo
ZSBJREJPYmplY3RTdG9yZSBJREwKICAgICBTdHJpbmcgbmFtZSgpIGNvbnN0OwotICAgIFN0cmlu
ZyBrZXlQYXRoKCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxJREJBbnk+IGtleVBhdGgoKSBjb25z
dDsKICAgICBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGluZGV4TmFtZXMoKSBjb25zdDsKICAg
ICBJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24oKSBjb25zdDsKICAgICBib29sIGF1dG9JbmNy
ZW1lbnQoKSBjb25zdDsKQEAgLTc5LDYgKzc5LDggQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8
SURCUmVxdWVzdD4gY2xlYXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUm
KTsKIAogICAgIFBhc3NSZWZQdHI8SURCSW5kZXg+IGNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBjb25zdCBEaWN0aW9uYXJ5JiwgRXhjZXB0aW9u
Q29kZSYpOworICAgIFBhc3NSZWZQdHI8SURCSW5kZXg+IGNyZWF0ZUluZGV4KGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IElEQktleVBhdGgmLCBjb25zdCBEaWN0aW9uYXJ5JiwgRXhjZXB0aW9uQ29kZSYp
OworCiAgICAgUGFzc1JlZlB0cjxJREJJbmRleD4gaW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBF
eGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBkZWxldGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUs
IEV4Y2VwdGlvbkNvZGUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCT2JqZWN0U3RvcmUuaWRsCmluZGV4IDRjYzMzNDVhNTQwODZlNDFkMDhjNzc1Nzdk
OTBiOWJlMWRkYjBkNjguLmU1OWNiYmNlNjNiODFmZmMxYTRiNTVkMTJhN2IwNmM2Y2UzMTQxMjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RT
dG9yZS5pZGwKQEAgLTI5LDcgKzI5LDcgQEAgbW9kdWxlIHN0b3JhZ2UgewogICAgICAgICBDb25k
aXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFCiAgICAgXSBJREJPYmplY3RTdG9yZSB7CiAgICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBbVHJlYXRSZXR1cm5lZE51bGxTdHJpbmdBcz1OdWxsXSBET01T
dHJpbmcgbmFtZTsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtUcmVhdFJldHVybmVkTnVs
bFN0cmluZ0FzPU51bGxdIERPTVN0cmluZyBrZXlQYXRoOworICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgSURCQW55IGtleVBhdGg7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJp
bmdMaXN0IGluZGV4TmFtZXM7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBJREJUcmFuc2Fj
dGlvbiB0cmFuc2FjdGlvbjsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gYXV0
b0luY3JlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKaW5kZXggNzk0ZDY1MDIxYjE1
NWM2MzBiODk0YmFkMjkzZjllNDk0MjgzODhjNi4uYTk4OWZjNWRkZGJhZWI0ZDc3N2IxMGZiNDdk
ZjAyZDc5YWYyOGVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKQEAgLTUxLDcgKzUx
LDcgQEAgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6fklEQk9iamVjdFN0b3JlQmFja2VuZElt
cGwoKQogewogfQogCi1JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsKElEQkJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNl
SWQsIGludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRo
LCBib29sIGF1dG9JbmNyZW1lbnQpCitJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsKElEQkJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90
IGRhdGFiYXNlSWQsIGludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5
UGF0aCYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50KQogICAgIDogbV9iYWNraW5nU3RvcmUo
YmFja2luZ1N0b3JlKQogICAgICwgbV9kYXRhYmFzZUlkKGRhdGFiYXNlSWQpCiAgICAgLCBtX2lk
KGlkKQpAQCAtNjMsNyArNjMsNyBAQCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsKElEQkJhY2tpbmdTdG9yZSogYmFja2luZ1N0bwogICAgIGxvYWRJ
bmRleGVzKCk7CiB9CiAKLUlEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OklEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGwoSURCQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0YWJh
c2VJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0
b0luY3JlbWVudCkKK0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OklEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGwoSURCQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0YWJhc2VJ
ZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIGF1
dG9JbmNyZW1lbnQpCiAgICAgOiBtX2JhY2tpbmdTdG9yZShiYWNraW5nU3RvcmUpCiAgICAgLCBt
X2RhdGFiYXNlSWQoZGF0YWJhc2VJZCkKICAgICAsIG1faWQoSW52YWxpZElkKQpAQCAtMTM3LDkg
KzEzNywxMSBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmdldEludGVybmFsKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPAogICAgIGNhbGxiYWNrcy0+b25TdWNj
ZXNzKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbVdpcmUod2lyZURhdGEpKTsKIH0K
IAotc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5PiBmZXRjaEtleUZyb21LZXlQYXRoKFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSogdmFsdWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKK3N0YXRpYyBQYXNz
UmVmUHRyPElEQktleT4gZmV0Y2hLZXlGcm9tS2V5UGF0aChTZXJpYWxpemVkU2NyaXB0VmFsdWUq
IHZhbHVlLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKQogewogICAgIElEQl9UUkFDRSgiSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZmV0Y2hLZXlGcm9tS2V5UGF0aCIpOworICAgIEFTU0VS
VCgha2V5UGF0aC5pc051bGwoKSk7CisKICAgICBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gPiB2YWx1ZXM7CiAgICAgdmFsdWVzLmFwcGVuZCh2YWx1ZSk7CiAgICAgVmVjdG9y
PFJlZlB0cjxJREJLZXk+ID4ga2V5czsKQEAgLTE1MCw3ICsxNTIsNyBAQCBzdGF0aWMgUGFzc1Jl
ZlB0cjxJREJLZXk+IGZldGNoS2V5RnJvbUtleVBhdGgoU2VyaWFsaXplZFNjcmlwdFZhbHVlKiB2
YWx1ZSwgY29ucwogICAgIHJldHVybiBrZXlzWzBdLnJlbGVhc2UoKTsKIH0KIAotc3RhdGljIFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBpbmplY3RLZXlJbnRvS2V5UGF0aChQYXNz
UmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFs
dWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKK3N0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gaW5qZWN0S2V5SW50b0tleVBhdGgoUGFzc1JlZlB0cjxJREJLZXk+IGtleSwg
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBjb25zdCBJREJLZXlQYXRo
JiBrZXlQYXRoKQogewogICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6
aW5qZWN0S2V5SW50b0tleVBhdGgiKTsKICAgICByZXR1cm4gSURCS2V5UGF0aEJhY2tlbmRJbXBs
OjppbmplY3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKGtleSwgdmFsdWUsIGtleVBhdGgpOwpA
QCAtNTAzLDcgKzUwNSw3IEBAIGJvb2wgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cG9wdWxh
dGVJbmRleChJREJCYWNraW5nU3RvcmUmIGJhY2tpbmdTdG9yZSwgaW50CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLVBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSwgSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNz
UmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bDo6Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQ
YXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAobmFt
ZS5pc051bGwoKSkgewogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpOT05fVFJB
TlNJRU5UX0VSUjsKQEAgLTY1NCw3ICs2NTYsNyBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGw6OmxvYWRJbmRleGVzKCkKIHsKICAgICBWZWN0b3I8aW50NjRfdD4gaWRzOwogICAgIFZl
Y3RvcjxTdHJpbmc+IG5hbWVzOwotICAgIFZlY3RvcjxTdHJpbmc+IGtleVBhdGhzOworICAgIFZl
Y3RvcjxJREJLZXlQYXRoPiBrZXlQYXRoczsKICAgICBWZWN0b3I8Ym9vbD4gdW5pcXVlRmxhZ3M7
CiAgICAgVmVjdG9yPGJvb2w+IG11bHRpRW50cnlGbGFnczsKICAgICBiYWNraW5nU3RvcmUoKS0+
Z2V0SW5kZXhlcyhkYXRhYmFzZUlkKCksIG1faWQsIGlkcywgbmFtZXMsIGtleVBhdGhzLCB1bmlx
dWVGbGFncywgbXVsdGlFbnRyeUZsYWdzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuaAppbmRleCAz
ZWJjNzdjZjgwOGJkNWQzMWQyYzYyODQyYWIxYmViYzdhZDlkZWVhLi4wNmVjYWM4MTY4MWI0OTM0
N2JkYmMxOTRjYzEyOTU3ODQzZWRlNDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oCkBAIC0y
Niw2ICsyNiw3IEBACiAjaWZuZGVmIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGxfaAogI2RlZmlu
ZSBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsX2gKIAorI2luY2x1ZGUgIklEQktleVBhdGguaCIK
ICNpbmNsdWRlICJJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KQEAgLTQyLDEx
ICs0MywxMSBAQCBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCiBjbGFzcyBJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsIDogcHVibGljIElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFj
ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbD4gY3JlYXRlKElEQkJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFi
YXNlSWQsIGludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQ
YXRoLCBib29sIGF1dG9JbmNyZW1lbnQpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbD4gY3JlYXRlKElEQkJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlLCBp
bnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
SURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50KQogICAgIHsKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKGJhY2tpbmdTdG9y
ZSwgZGF0YWJhc2VJZCwgaWQsIG5hbWUsIGtleVBhdGgsIGF1dG9JbmNyZW1lbnQpKTsKICAgICB9
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gY3JlYXRl
KElEQkJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQp
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gY3JlYXRl
KElEQkJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVt
ZW50KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsKGJhY2tpbmdTdG9yZSwgZGF0YWJhc2VJZCwgbmFtZSwga2V5UGF0aCwgYXV0b0lu
Y3JlbWVudCkpOwogICAgIH0KQEAgLTYxLDcgKzYyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
SWQoaW50NjRfdCBpZCkgeyBtX2lkID0gaWQ7IH0KIAogICAgIHZpcnR1YWwgU3RyaW5nIG5hbWUo
KSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KLSAgICB2aXJ0dWFsIFN0cmluZyBrZXlQYXRoKCkg
Y29uc3QgeyByZXR1cm4gbV9rZXlQYXRoOyB9CisgICAgdmlydHVhbCBJREJLZXlQYXRoIGtleVBh
dGgoKSBjb25zdCB7IHJldHVybiBtX2tleVBhdGg7IH0KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
RE9NU3RyaW5nTGlzdD4gaW5kZXhOYW1lcygpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBhdXRv
SW5jcmVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9hdXRvSW5jcmVtZW50OyB9CiAKQEAgLTcyLDcg
KzczLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVGdW5jdGlvbihQYXNzUmVm
UHRyPElEQktleVJhbmdlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGNs
ZWFyKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlKiwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkluZGV4
QmFja2VuZEludGVyZmFjZT4gY3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnksIElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVJbmRleChjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5LCBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmly
dHVhbCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gaW5kZXgoY29uc3QgU3Ry
aW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUluZGV4
KGNvbnN0IFN0cmluZyYgbmFtZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhj
ZXB0aW9uQ29kZSYpOwogCkBAIC04Miw4ICs4Myw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9v
bCBwb3B1bGF0ZUluZGV4KElEQkJhY2tpbmdTdG9yZSYsIGludDY0X3QgZGF0YWJhc2VJZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+KTsKIAog
cHJpdmF0ZToKLSAgICBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKElEQkJhY2tpbmdTdG9yZSos
IGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCk7Ci0gICAgSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbChJREJCYWNraW5nU3RvcmUqLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQp
OworICAgIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwoSURCQmFja2luZ1N0b3JlKiwgaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktl
eVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQpOworICAgIElEQk9iamVjdFN0b3JlQmFja2VuZElt
cGwoSURCQmFja2luZ1N0b3JlKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQpOwogCiAgICAgdm9pZCBs
b2FkSW5kZXhlcygpOwogICAgIFBhc3NSZWZQdHI8SURCS2V5PiBnZW5BdXRvSW5jcmVtZW50S2V5
KCk7CkBAIC0xMTIsNyArMTEzLDcgQEAgcHJpdmF0ZToKICAgICBpbnQ2NF90IG1fZGF0YWJhc2VJ
ZDsKICAgICBpbnQ2NF90IG1faWQ7CiAgICAgU3RyaW5nIG1fbmFtZTsKLSAgICBTdHJpbmcgbV9r
ZXlQYXRoOworICAgIElEQktleVBhdGggbV9rZXlQYXRoOwogICAgIGJvb2wgbV9hdXRvSW5jcmVt
ZW50OwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVmUHRyPElEQkluZGV4QmFja2Vu
ZEltcGw+ID4gSW5kZXhNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZS5oCmluZGV4
IGJkMDlmYzJlZjRlMWE0MjRlYTJlYTY0MzA0NjcyMjU1MDYxMWQ3MGMuLjVlNWQ5OGU4OGRjYTYy
NDcwMDhjMTg2MjkyYTI0MTkxNTFmNzA1ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEludGVy
ZmFjZS5oCkBAIC0zNyw2ICszNyw3IEBAIGNsYXNzIERPTVN0cmluZ0xpc3Q7CiBjbGFzcyBJREJD
YWxsYmFja3M7CiBjbGFzcyBJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U7CiBjbGFzcyBJREJLZXk7
CitjbGFzcyBJREJLZXlQYXRoOwogY2xhc3MgSURCS2V5UmFuZ2U7CiBjbGFzcyBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2U7CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CkBAIC00
OCw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JREJPYmplY3RTdG9yZUJhY2tlbmRJ
bnRlcmZhY2UoKSB7IH0KIAogICAgIHZpcnR1YWwgU3RyaW5nIG5hbWUoKSBjb25zdCA9IDA7Ci0g
ICAgdmlydHVhbCBTdHJpbmcga2V5UGF0aCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIElEQktl
eVBhdGgga2V5UGF0aCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RE9NU3Ry
aW5nTGlzdD4gaW5kZXhOYW1lcygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgYXV0b0lu
Y3JlbWVudCgpIGNvbnN0ID0gMDsKIApAQCAtNjUsNyArNjYsNyBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIHZvaWQgY2xlYXIoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikgPSAwOwogCi0gICAgdmlydHVhbCBQ
YXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gY3JlYXRlSW5kZXgoY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRp
RW50cnksIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSA9
IDA7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gY3Jl
YXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCB1bmlx
dWUsIGJvb2wgbXVsdGlFbnRyeSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhj
ZXB0aW9uQ29kZSYpID0gMDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5k
SW50ZXJmYWNlPiBpbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9EaWN0aW9uYXJ5LmNwcAppbmRleCAxMGFhZmU4ZGM2YzI4MWVm
ZTcxZDQ5ZmI5MmY0YmI5NTY3NTg3NTE0Li5kYzcyNGZhOTViYjMxZTBjNDRiYjhjZjYzM2I2NzBh
ZmE0OTU5MGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EaWN0aW9u
YXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EaWN0aW9uYXJ5LmNwcApA
QCAtNDI0LDYgKzQyNCwyMyBAQCBib29sIERpY3Rpb25hcnk6OmdldChjb25zdCBTdHJpbmcmIGtl
eSwgRGljdGlvbmFyeSYgdmFsdWUpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wg
RGljdGlvbmFyeTo6Z2V0KGNvbnN0IFN0cmluZyYga2V5LCBWZWN0b3I8U3RyaW5nPiYgdmFsdWUp
IGNvbnN0Cit7CisgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdjhWYWx1ZTsKKyAgICBpZiAoIWdl
dEtleShrZXksIHY4VmFsdWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIXY4
VmFsdWUtPklzQXJyYXkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgdjg6OkxvY2Fs
PHY4OjpBcnJheT4gdjhBcnJheSA9IHY4OjpMb2NhbDx2ODo6QXJyYXk+OjpDYXN0KHY4VmFsdWUp
OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdjhBcnJheS0+TGVuZ3RoKCk7ICsraSkgewor
ICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBpbmRleGVkVmFsdWUgPSB2OEFycmF5LT5HZXQo
djg6OlVpbnQzMjo6TmV3KGkpKTsKKyAgICAgICAgdmFsdWUuYXBwZW5kKHY4VmFsdWVUb1dlYkNv
cmVTdHJpbmcoaW5kZXhlZFZhbHVlKSk7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CiAK
IGJvb2wgRGljdGlvbmFyeTo6Z2V0T3duUHJvcGVydGllc0FzU3RyaW5nSGFzaE1hcChXVEY6Okhh
c2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBoYXNoTWFwKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFyeS5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvRGljdGlvbmFyeS5oCmluZGV4IGM0YzMzYjFiYjIwOGU5NjQwZGZmYjg0MDZkODkz
YjQxMjgzMjc5ZWUuLmYxNTNlYTljODI5ODQ4MDgwZjJmNWU2ODViY2M2YTc3MzQzZjU0YWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EaWN0aW9uYXJ5LmgKQEAgLTMzLDExICszMywxMSBA
QAogI2luY2x1ZGUgPHY4Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9BdG9taWNTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBET01TdHJp
bmdMaXN0OwogY2xhc3MgRE9NV2luZG93OwogY2xhc3MgSURCS2V5UmFuZ2U7CiBjbGFzcyBNZWRp
YUtleUVycm9yOwpAQCAtODUsNiArODUsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICBib29sIGdl
dChjb25zdCBTdHJpbmcmLCBIYXNoU2V0PEF0b21pY1N0cmluZz4mKSBjb25zdDsKICAgICBib29s
IGdldChjb25zdCBTdHJpbmcmLCBEaWN0aW9uYXJ5JikgY29uc3Q7CisgICAgYm9vbCBnZXQoY29u
c3QgU3RyaW5nJiwgVmVjdG9yPFN0cmluZz4mKSBjb25zdDsKICAgICBib29sIGdldE93blByb3Bl
cnRpZXNBc1N0cmluZ0hhc2hNYXAoV1RGOjpIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYpIGNvbnN0
OwogCiAgICAgYm9vbCBnZXRXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2soY29uc3QgU3RyaW5nJiwg
U3RyaW5nJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9J
REJCaW5kaW5nVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkJp
bmRpbmdVdGlsaXRpZXMuY3BwCmluZGV4IGRmNjc3ODAzMDU3ZTM4MGYzZTg5ZGQ0NTE3MTFlNDc5
MWU0MWVlOTQuLjE1YjQzZTkzNjBlZGY5NWIzNWRkNmViY2JkZDE2YjQ5ZjhiMGQ3YzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMuY3Bw
CkBAIC0xNTMsMzAgKzE1Myw0MyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZW5zdXJlTnRoVmFs
dWVPbktleVBhdGgodjg6OkhhbmRsZTx2ODo6VmFsdWU+JiByb290VmFsdWUsCiAKIH0gLy8gYW5v
bnltb3VzIG5hbWVzcGFjZQogCi1QYXNzUmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJvbVNl
cmlhbGl6ZWRWYWx1ZUFuZEtleVBhdGgoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IHZhbHVlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYga2V5UGF0aCkKK1Bhc3NSZWZQdHI8SURCS2V5
PiBjcmVhdGVJREJLZXlGcm9tU2VyaWFsaXplZFZhbHVlQW5kS2V5UGF0aChQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgpCiB7
CiAgICAgSURCX1RSQUNFKCJjcmVhdGVJREJLZXlGcm9tU2VyaWFsaXplZFZhbHVlQW5kS2V5UGF0
aCIpOworICAgIEFTU0VSVChrZXlQYXRoLnR5cGUoKSA9PSBJREJLZXlQYXRoOjpTdHJpbmdUeXBl
KTsKKyAgICBWZWN0b3I8U3RyaW5nPiBrZXlQYXRoRWxlbWVudHM7CisgICAgSURCS2V5UGF0aFBh
cnNlRXJyb3IgZXJyb3I7CisgICAgSURCUGFyc2VLZXlQYXRoKGtleVBhdGguc3RyaW5nKCksIGtl
eVBhdGhFbGVtZW50cywgZXJyb3IpOworICAgIEFTU0VSVChlcnJvciA9PSBJREJLZXlQYXRoUGFy
c2VFcnJvck5vbmUpOworCiAgICAgVjhBdXhpbGlhcnlDb250ZXh0IGNvbnRleHQ7CiAgICAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHY4VmFsdWUodmFsdWUtPmRlc2VyaWFsaXplKCkpOwotICAgIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB2OEtleShnZXROdGhWYWx1ZU9uS2V5UGF0aCh2OFZhbHVlLCBr
ZXlQYXRoLCBrZXlQYXRoLnNpemUoKSkpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2OEtl
eShnZXROdGhWYWx1ZU9uS2V5UGF0aCh2OFZhbHVlLCBrZXlQYXRoRWxlbWVudHMsIGtleVBhdGhF
bGVtZW50cy5zaXplKCkpKTsKICAgICBpZiAodjhLZXkuSXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gMDsKICAgICByZXR1cm4gY3JlYXRlSURCS2V5RnJvbVZhbHVlKHY4S2V5KTsKIH0KIAotUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGluamVjdElEQktleUludG9TZXJpYWxpemVk
VmFsdWUoUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IHZhbHVlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYga2V5UGF0aCkKK1Bhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBpbmplY3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKFBh
c3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2
YWx1ZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCkKIHsKICAgICBJREJfVFJBQ0UoImluamVj
dElEQktleUludG9TZXJpYWxpemVkVmFsdWUiKTsKLSAgICBWOEF1eGlsaWFyeUNvbnRleHQgY29u
dGV4dDsKLSAgICBpZiAoIWtleVBhdGguc2l6ZSgpKQorCisgICAgQVNTRVJUKGtleVBhdGgudHlw
ZSgpID09IElEQktleVBhdGg6OlN0cmluZ1R5cGUpOworICAgIFZlY3RvcjxTdHJpbmc+IGtleVBh
dGhFbGVtZW50czsKKyAgICBJREJLZXlQYXRoUGFyc2VFcnJvciBlcnJvcjsKKyAgICBJREJQYXJz
ZUtleVBhdGgoa2V5UGF0aC5zdHJpbmcoKSwga2V5UGF0aEVsZW1lbnRzLCBlcnJvcik7CisgICAg
QVNTRVJUKGVycm9yID09IElEQktleVBhdGhQYXJzZUVycm9yTm9uZSk7CisKKyAgICBpZiAoIWtl
eVBhdGhFbGVtZW50cy5zaXplKCkpCiAgICAgICAgIHJldHVybiAwOwogCisgICAgVjhBdXhpbGlh
cnlDb250ZXh0IGNvbnRleHQ7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4VmFsdWUodmFs
dWUtPmRlc2VyaWFsaXplKCkpOwotICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBwYXJlbnQoZW5z
dXJlTnRoVmFsdWVPbktleVBhdGgodjhWYWx1ZSwga2V5UGF0aCwga2V5UGF0aC5zaXplKCkgLSAx
KSk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHBhcmVudChlbnN1cmVOdGhWYWx1ZU9uS2V5
UGF0aCh2OFZhbHVlLCBrZXlQYXRoRWxlbWVudHMsIGtleVBhdGhFbGVtZW50cy5zaXplKCkgLSAx
KSk7CiAgICAgaWYgKHBhcmVudC5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAg
aWYgKCFzZXQocGFyZW50LCBrZXlQYXRoLmxhc3QoKSwgdG9WOChrZXkuZ2V0KCkpKSkKKyAgICBp
ZiAoIXNldChwYXJlbnQsIGtleVBhdGhFbGVtZW50cy5sYXN0KCksIHRvVjgoa2V5LmdldCgpKSkp
CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgcmV0dXJuIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
Y3JlYXRlKHY4VmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
SURCQmluZGluZ1V0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQmlu
ZGluZ1V0aWxpdGllcy5oCmluZGV4IDQ3Mjg2YTU4MjM4ZjBhMDI0ZTIxMzgwNTA1ZmJiOTZlYTc2
N2Y1YWIuLjMwZWVkNDIxYjQ1YjA5MDMwMTFiZDI0OWJiYTBkNzRjMjNiYTI3NGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmgKQEAgLTM0
LDExICszNCwxMiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJREJLZXk7CitjbGFz
cyBJREJLZXlQYXRoOwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwogCiBQYXNzUmVmUHRy
PElEQktleT4gY3JlYXRlSURCS2V5RnJvbVZhbHVlKHY4OjpIYW5kbGU8djg6OlZhbHVlPik7Ci1Q
YXNzUmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtleVBh
dGgoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCAgY29uc3QgVmVjdG9yPFN0cmlu
ZywgMD4mKTsKLVBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBpbmplY3RJREJLZXlJ
bnRvU2VyaWFsaXplZFZhbHVlKFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+LCBjb25zdCBWZWN0b3I8U3RyaW5nLCAwPiYpOworUGFzc1JlZlB0cjxJ
REJLZXk+IGNyZWF0ZUlEQktleUZyb21TZXJpYWxpemVkVmFsdWVBbmRLZXlQYXRoKFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgY29uc3QgSURCS2V5UGF0aCYpOworUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGluamVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUo
UGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIGNv
bnN0IElEQktleVBhdGgmKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhJREJBbnlDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SURCQW55Q3VzdG9tLmNwcAppbmRleCAxNDM0MDU0MzA1NzczMjc5N2Nh
ODFlODJiYzhjOGIxNzlmNDZhNzIzLi4xZTM3Y2RmYmZlYzAxZmU5YWM0Y2U5NmVhYTJjYzZiOTEz
ODQxZGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJ
REJBbnlDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OElEQkFueUN1c3RvbS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJWOElEQkFueS5o
IgogCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSAiVjhCaW5k
aW5nLmgiCiAjaW5jbHVkZSAiVjhET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiVjhJREJDdXJz
b3IuaCIKICNpbmNsdWRlICJWOElEQkN1cnNvcldpdGhWYWx1ZS5oIgpAQCAtNzQsNiArNzUsOCBA
QCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChJREJBbnkqIGltcGwsIHY4OjpJc29sYXRlKiBp
c29sYXRlKQogICAgICAgICByZXR1cm4gdG9WOChpbXBsLT5pZGJUcmFuc2FjdGlvbigpLCBpc29s
YXRlKTsKICAgICBjYXNlIElEQkFueTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlVHlwZToKICAgICAg
ICAgcmV0dXJuIGltcGwtPnNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgpLT5kZXNlcmlhbGl6ZSgwLCBp
c29sYXRlKTsKKyAgICBjYXNlIElEQkFueTo6U3RyaW5nVHlwZToKKyAgICAgICAgcmV0dXJuIHY4
U3RyaW5nKGltcGwtPnN0cmluZygpKTsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01TdHJpbmdMaXN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRE9NU3RyaW5nTGlzdC5oCmluZGV4IDA1N2RhYzQ5ZWNmZjJlNTY0NGQx
ZjU4YWQ0ZjRhZGI1OWYwZGJjM2IuLjQ2NGZhMjJkYjI1NjYxNmEwNTM3MThiNzliMmQ5MzNmNGYy
MTA1MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01TdHJpbmdMaXN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTVN0cmluZ0xpc3QuaApAQCAtNTIsNiArNTIsOCBAQCBw
dWJsaWM6CiAgICAgU3RyaW5nIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0OwogICAgIGJvb2wg
Y29udGFpbnMoY29uc3QgU3RyaW5nJiBzdHIpIGNvbnN0OwogCisgICAgb3BlcmF0b3IgY29uc3Qg
VmVjdG9yPFN0cmluZz4mKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmdzOyB9CisKIHByaXZhdGU6
CiAgICAgRE9NU3RyaW5nTGlzdCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAppbmRleCBkOWVhNGIzMWEyOTJjM2Uz
N2MxMzc1ZGNjNjFjZjk4NDI0ZmNiNTNmLi5jYmQ5MmNmMmQ3YjYyMzY5OWU3MmI2NzQ4NTM1Y2Vh
MjU0OTMwMDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbmRleGVkREJBZ2VudC5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJJREJGYWN0
b3J5QmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQkluZGV4QmFja2VuZEludGVyZmFj
ZS5oIgogI2luY2x1ZGUgIklEQktleS5oIgorI2luY2x1ZGUgIklEQktleVBhdGguaCIKICNpbmNs
dWRlICJJREJLZXlSYW5nZS5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlQmFja2VuZEludGVy
ZmFjZS5oIgogI2luY2x1ZGUgIklEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3IuaCIKQEAgLTIy
NSw2ICsyMjYsMjUgQEAgc3RhdGljIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNl
PiBpbmRleEZvck9iamVjdFN0b3JlKElEQk9iamVjdFN0b3JlQmEKICAgICByZXR1cm4gaWRiSW5k
ZXg7CiB9CiAKK3N0YXRpYyBTdHJpbmcga2V5UGF0aFRvU3RyaW5nKGNvbnN0IElEQktleVBhdGgm
IGtleVBhdGgpCit7CisgICAgLy8gRklYTUU6IFJlcGxhY2Ugd2l0aCBoYW5kbGVycyBmb3IgbnVs
bC9zdHJpbmcvYXJyYXkgdHlwZXMuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTg0MzAzCisgICAgc3dpdGNoIChrZXlQYXRoLnR5cGUoKSkgeworICAgIGNh
c2UgSURCS2V5UGF0aDo6TnVsbFR5cGU6CisgICAgICAgIHJldHVybiAiKG5vbmUpIjsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBJREJLZXlQYXRoOjpTdHJpbmdUeXBlOgorICAgICAgICByZXR1
cm4ga2V5UGF0aC5zdHJpbmcoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJREJLZXlQYXRo
OjpBcnJheVR5cGU6CisgICAgICAgIHJldHVybiAiWy4uLl0iOworICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQor
CiBjbGFzcyBEYXRhYmFzZUxvYWRlckNhbGxiYWNrIDogcHVibGljIEV4ZWN1dGFibGVXaXRoRGF0
YWJhc2UgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPERhdGFiYXNlTG9hZGVyQ2Fs
bGJhY2s+IGNyZWF0ZShJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6RnJvbnRlbmRQcm92aWRlciog
ZnJvbnRlbmRQcm92aWRlciwgaW50IHJlcXVlc3RJZCkKQEAgLTI2MCw3ICsyODAsNyBAQCBwdWJs
aWM6CiAKICAgICAgICAgICAgICAgICBSZWZQdHI8T2JqZWN0U3RvcmVJbmRleD4gb2JqZWN0U3Rv
cmVJbmRleCA9IE9iamVjdFN0b3JlSW5kZXg6OmNyZWF0ZSgpCiAgICAgICAgICAgICAgICAgICAg
IC5zZXROYW1lKGlkYkluZGV4LT5uYW1lKCkpCi0gICAgICAgICAgICAgICAgICAgIC5zZXRLZXlQ
YXRoKGlkYkluZGV4LT5rZXlQYXRoKCkpCisgICAgICAgICAgICAgICAgICAgIC5zZXRLZXlQYXRo
KGtleVBhdGhUb1N0cmluZyhpZGJJbmRleC0+a2V5UGF0aCgpKSkKICAgICAgICAgICAgICAgICAg
ICAgLnNldFVuaXF1ZShpZGJJbmRleC0+dW5pcXVlKCkpCiAgICAgICAgICAgICAgICAgICAgIC5z
ZXRNdWx0aUVudHJ5KGlkYkluZGV4LT5tdWx0aUVudHJ5KCkpOwogICAgICAgICAgICAgICAgIGlu
ZGV4ZXMtPmFkZEl0ZW0ob2JqZWN0U3RvcmVJbmRleCk7CkBAIC0yNjgsNyArMjg4LDcgQEAgcHVi
bGljOgogCiAgICAgICAgICAgICBSZWZQdHI8T2JqZWN0U3RvcmU+IG9iamVjdFN0b3JlID0gT2Jq
ZWN0U3RvcmU6OmNyZWF0ZSgpCiAgICAgICAgICAgICAgICAgLnNldE5hbWUoaWRiT2JqZWN0U3Rv
cmUtPm5hbWUoKSkKLSAgICAgICAgICAgICAgICAuc2V0S2V5UGF0aChpZGJPYmplY3RTdG9yZS0+
a2V5UGF0aCgpKQorICAgICAgICAgICAgICAgIC5zZXRLZXlQYXRoKGtleVBhdGhUb1N0cmluZyhp
ZGJPYmplY3RTdG9yZS0+a2V5UGF0aCgpKSkKICAgICAgICAgICAgICAgICAuc2V0SW5kZXhlcyhp
bmRleGVzKTsKICAgICAgICAgICAgIG9iamVjdFN0b3Jlcy0+YWRkSXRlbShvYmplY3RTdG9yZSk7
CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L1BsYXRmb3JtU3VwcG9ydC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxh
dGZvcm1TdXBwb3J0LmgKaW5kZXggZjhiNWI3ZTk4N2M2ZjM2Y2E5NDUxNzE0OTgwMTI2ZTNlMWFi
YWE1Ny4uNTBjMGEwYjQxOWJhZGFlY2I4NTZjYzhhNjg2MzFlZWI5OTBmYmQ2MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmgKQEAg
LTc4LDYgKzc4LDcgQEAgY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgSW1hZ2U7CiBjbGFz
cyBJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZTsKIGNsYXNzIElEQktleTsKK2NsYXNzIElEQktl
eVBhdGg7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgS1VSTDsKIGNsYXNzIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTsKQEAgLTE3OCw5ICsxNzksOSBAQCBwdWJsaWM6CiAgICAgLy8gSW5kZXhlZERCIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZT4gaWRiRmFj
dG9yeSgpOwogICAgIC8vIEV4dHJhY3RzIGtleVBhdGggZnJvbSB2YWx1ZXMgYW5kIHJldHVybnMg
dGhlIGNvcnJlc3BvbmRpbmcga2V5cy4KLSAgICBzdGF0aWMgdm9pZCBjcmVhdGVJREJLZXlzRnJv
bVNlcmlhbGl6ZWRWYWx1ZXNBbmRLZXlQYXRoKGNvbnN0IFZlY3RvcjxSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiA+JiB2YWx1ZXMsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgVmVjdG9yPFJl
ZlB0cjxJREJLZXk+ID4mIGtleXMpOworICAgIHN0YXRpYyB2b2lkIGNyZWF0ZUlEQktleXNGcm9t
U2VyaWFsaXplZFZhbHVlc0FuZEtleVBhdGgoY29uc3QgVmVjdG9yPFJlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+ID4mIHZhbHVlcywgY29uc3QgSURCS2V5UGF0aCYsIFZlY3RvcjxSZWZQdHI8
SURCS2V5PiA+JiBrZXlzKTsKICAgICAvLyBJbmplY3RzIGtleSB2aWEga2V5UGF0aCBpbnRvIHZh
bHVlLiBSZXR1cm5zIHRydWUgb24gc3VjY2Vzcy4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IGluamVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUoUGFzc1Jl
ZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIGNvbnN0IFN0
cmluZyYga2V5UGF0aCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBpbmplY3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKFBhc3NSZWZQdHI8SURCS2V5Piwg
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBjb25zdCBJREJLZXlQYXRoJik7CiAK
ICAgICAvLyBKYXZhU2NyaXB0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIHN0YXRpYyB2b2lkIG5vdGlmeUpTT3V0T2ZNZW1vcnko
RnJhbWUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvY2hyb21pdW0vSURC
S2V5UGF0aEJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvY2hyb21pdW0v
SURCS2V5UGF0aEJhY2tlbmRJbXBsLmNwcAppbmRleCBiODA0YTBmZjhhMTRmYTc3MjI1ODJkMmRj
MjRlNGVmODFlYWEzMDk0Li5jODZjNzdkOTc3MzliNTU0NDIwZDU4OWM3MDlhM2U3ZjA2ZGQxYmUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL2Nocm9taXVtL0lEQktleVBhdGhC
YWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9jaHJvbWl1bS9JREJL
ZXlQYXRoQmFja2VuZEltcGwuY3BwCkBAIC0zNCwxMiArMzQsMTIgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi12b2lkIElEQktleVBhdGhCYWNrZW5kSW1wbDo6Y3JlYXRlSURCS2V5c0Zyb21T
ZXJpYWxpemVkVmFsdWVzQW5kS2V5UGF0aChjb25zdCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4sIDA+JiB2YWx1ZXMsICBjb25zdCBTdHJpbmcmIGtleVBhdGgsIFZlY3RvcjxS
ZWZQdHI8SURCS2V5PiwgMD4mIGtleXMpCit2b2lkIElEQktleVBhdGhCYWNrZW5kSW1wbDo6Y3Jl
YXRlSURCS2V5c0Zyb21TZXJpYWxpemVkVmFsdWVzQW5kS2V5UGF0aChjb25zdCBWZWN0b3I8UmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIDA+JiB2YWx1ZXMsIGNvbnN0IElEQktleVBhdGgm
IGtleVBhdGgsIFZlY3RvcjxSZWZQdHI8SURCS2V5PiwgMD4mIGtleXMpCiB7CiAgICAgUGxhdGZv
cm1TdXBwb3J0OjpjcmVhdGVJREJLZXlzRnJvbVNlcmlhbGl6ZWRWYWx1ZXNBbmRLZXlQYXRoKHZh
bHVlcywga2V5UGF0aCwga2V5cyk7CiB9CiAKLVBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBJREJLZXlQYXRoQmFja2VuZEltcGw6OmluamVjdElEQktleUludG9TZXJpYWxpemVkVmFs
dWUoUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IHZhbHVlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpCitQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gSURCS2V5UGF0aEJhY2tlbmRJbXBsOjppbmplY3RJREJLZXlJbnRvU2VyaWFs
aXplZFZhbHVlKFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiB2YWx1ZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCkKIHsKICAgICByZXR1
cm4gUGxhdGZvcm1TdXBwb3J0OjppbmplY3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKGtleSwg
dmFsdWUsIGtleVBhdGgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YklEQkRhdGFiYXNlLmgKaW5kZXggZjUzYjAyZTM5YTdiNzJmYWVkZmI1ZmJjMGYwNGU4ZmEzMGRh
MzExMy4uYjM5ODUzNDE2NTU0M2ExOTdhNjE3OTdkNTQ3NDlkYTg1ZTNhMzU2ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2UuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oCkBAIC0yOCw3ICsy
OCw2IEBACiAKICNpbmNsdWRlICJXZWJET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiV2ViRXhj
ZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIldlYklEQktleVBhdGguaCIKICNpbmNsdWRlICJwbGF0
Zm9ybS9XZWJDb21tb24uaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0zNiw2ICszNSw3IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJJREJDYWxsYmFj
a3M7CiBjbGFzcyBXZWJJREJEYXRhYmFzZUNhbGxiYWNrczsKK2NsYXNzIFdlYklEQktleVBhdGg7
CiBjbGFzcyBXZWJJREJPYmplY3RTdG9yZTsKIGNsYXNzIFdlYklEQlRyYW5zYWN0aW9uOwogCkBA
IC01OSwxMiArNTksNiBAQCBwdWJsaWM6CiAgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgcmV0dXJuIFdlYkRPTVN0cmluZ0xpc3QoKTsKICAgICB9Ci0gICAgLy8g
RklYTUU6IFJlbW92ZSBXZWJTdHJpbmcga2V5UGF0aCBvdmVybG9hZCBvbmNlIGNhbGxlcnMgYXJl
IHVwZGF0ZWQuCi0gICAgLy8gaHR0cDovL3dlYmtpdC5vcmcvYi84NDIwNwotICAgIHZpcnR1YWwg
V2ViSURCT2JqZWN0U3RvcmUqIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFt
ZSwgY29uc3QgV2ViU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIGNvbnN0IFdl
YklEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgV2ViRXhjZXB0aW9uQ29kZSYgZWMpCi0gICAg
ewotICAgICAgICByZXR1cm4gY3JlYXRlT2JqZWN0U3RvcmUobmFtZSwgV2ViSURCS2V5UGF0aChr
ZXlQYXRoKSwgYXV0b0luY3JlbWVudCwgdHJhbnNhY3Rpb24sIGVjKTsKLSAgICB9CiAgICAgdmly
dHVhbCBXZWJJREJPYmplY3RTdG9yZSogY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5n
JiwgY29uc3QgV2ViSURCS2V5UGF0aCYsIGJvb2wsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwg
V2ViRXhjZXB0aW9uQ29kZSYpCiAgICAgewogICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJJ
bmRleC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCSW5kZXguaAppbmRl
eCAyYjFmOWI0YzBlZGQ2MTNlYWFhNDAxOGIzODUyN2ZiY2UxYzQ4MTY1Li5iMTAwODA4NDJhYWU0
MTkwOTBmMTkyMGFiNWRjODJjMDY0N2E1NGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJJREJJbmRleC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYklEQkluZGV4LmgKQEAgLTQ5LDE0ICs0OSw4IEBAIHB1YmxpYzoKICAgICB9CiAg
ICAgdmlydHVhbCBXZWJJREJLZXlQYXRoIGtleVBhdGgoKSBjb25zdAogICAgIHsKLSAgICAgICAg
cmV0dXJuIFdlYklEQktleVBhdGgoa2V5UGF0aFN0cmluZygpKTsKLSAgICB9Ci0gICAgLy8gRklY
TUU6IFJlbW92ZSBtZXRob2Qgb25jZSBjYWxsZXJzIGFyZSB1cGRhdGVkLgotICAgIC8vIGh0dHA6
Ly93ZWJraXQub3JnL2IvODQyMDcKLSAgICB2aXJ0dWFsIFdlYlN0cmluZyBrZXlQYXRoU3RyaW5n
KCkgY29uc3QKLSAgICB7CiAgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgcmV0dXJuIFdlYlN0cmluZygpOworICAgICAgICByZXR1cm4gV2ViSURCS2V5UGF0aDo6
Y3JlYXRlTnVsbCgpOwogICAgIH0KICAgICB2aXJ0dWFsIGJvb2wgdW5pcXVlKCkgY29uc3QKICAg
ICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJLZXlQ
YXRoLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJLZXlQYXRoLmgKaW5k
ZXggOTdiYWMwNmZmZTg0YTNmZDBkMjNhM2YxNGFkMTI5NzM5MzRmMmFlNS4uYmViMWZhMjJkOGQw
OTFjMjBlZDFlNTVjYzJiMzA3NzEwYjlkZGY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViSURCS2V5UGF0aC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYklEQktleVBhdGguaApAQCAtMzYsNiArMzYsOCBAQCB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+IGNsYXNzIFZlY3RvcjsKIGNsYXNzIFN0cmlu
ZzsKIH0KIAorbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBJREJLZXlQYXRoOyB9CisKIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJJREJLZXlQYXRoIHsKQEAgLTQ0LDcgKzQ2LDcgQEAg
cHVibGljOgogICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYklEQktleVBhdGggY3JlYXRlKGNv
bnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+Jik7CiAgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2Vi
SURCS2V5UGF0aCBjcmVhdGVOdWxsKCk7CiAgICAgV0VCS0lUX0VYUE9SVCBXZWJJREJLZXlQYXRo
KGNvbnN0IFdlYklEQktleVBhdGgmKTsKLSAgICB+V2ViSURCS2V5UGF0aCgpIHsgcmVzZXQoKTsg
fQorICAgIFdFQktJVF9FWFBPUlQgfldlYklEQktleVBhdGgoKTsKIAogICAgIGVudW0gVHlwZSB7
CiAgICAgICAgIE51bGxUeXBlID0gMCwKQEAgLTU0LDMwICs1NiwxNyBAQCBwdWJsaWM6CiAKICAg
ICBXRUJLSVRfRVhQT1JUIGJvb2wgaXNWYWxpZCgpIGNvbnN0OwogICAgIFdFQktJVF9FWFBPUlQg
VHlwZSB0eXBlKCkgY29uc3Q7Ci0gICAgLy8gRklYTUU6IEFycmF5LXR5cGUga2V5IHBhdGhzIG5v
dCB5ZXQgc3VwcG9ydGVkLiBodHRwOi8vd2Via2l0Lm9yZy9iLzg0MjA3Ci0gICAgV2ViVmVjdG9y
PFdlYlN0cmluZz4gYXJyYXkoKSBjb25zdCB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsg
cmV0dXJuIFdlYlZlY3RvcjxXZWJTdHJpbmc+KCk7IH0KLSAgICBXRUJLSVRfRVhQT1JUIFdlYlN0
cmluZyBzdHJpbmcoKSBjb25zdDsKLQotICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhlc2Ugb25jZSBj
YWxsZXJzIGFyZSB1cGRhdGVkLiBodHRwOi8vd2Via2l0Lm9yZy9iLzg0MjA3Ci0gICAgV0VCS0lU
X0VYUE9SVCBXZWJJREJLZXlQYXRoKGNvbnN0IFdlYlN0cmluZyYpOwotICAgIG9wZXJhdG9yIGNv
bnN0IFdlYlN0cmluZyAoKSBjb25zdCB7IHJldHVybiBzdHJpbmcoKTsgfQotICAgIFdFQktJVF9F
WFBPUlQgaW50IHBhcnNlRXJyb3IoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXNz
aWduKGNvbnN0IFdlYklEQktleVBhdGgmKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQo
KTsKKyAgICBXRUJLSVRfRVhQT1JUIFdlYlZlY3RvcjxXZWJTdHJpbmc+IGFycmF5KCkgY29uc3Q7
IC8vIE9ubHkgdmFsaWQgZm9yIEFycmF5VHlwZS4KKyAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmlu
ZyBzdHJpbmcoKSBjb25zdDsgLy8gT25seSB2YWxpZCBmb3IgU3RyaW5nVHlwZS4KIAogI2lmIFdF
QktJVF9JTVBMRU1FTlRBVElPTgotICAgIG9wZXJhdG9yIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6
U3RyaW5nLCAwPiYgKCkgY29uc3Q7CisgICAgV2ViSURCS2V5UGF0aChjb25zdCBXZWJDb3JlOjpJ
REJLZXlQYXRoJik7CisgICAgV2ViSURCS2V5UGF0aCYgb3BlcmF0b3I9KGNvbnN0IFdlYkNvcmU6
OklEQktleVBhdGgmKTsKKyAgICBvcGVyYXRvciBjb25zdCBXZWJDb3JlOjpJREJLZXlQYXRoJigp
IGNvbnN0OwogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgV2ViSURCS2V5UGF0aCgpOwotCi0jaWYg
V0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgV2ViSURCS2V5UGF0aChjb25zdCBXVEY6OlZlY3Rv
cjxXVEY6OlN0cmluZywgMD4mLCBpbnQgcGFyc2VFcnJvcik7Ci0jZW5kaWYKLQotICAgIFdlYlBy
aXZhdGVPd25QdHI8V1RGOjpWZWN0b3I8V1RGOjpTdHJpbmcsIDA+ID4gbV9wcml2YXRlOwotICAg
IGludCBtX3BhcnNlRXJyb3I7CisgICAgV2ViUHJpdmF0ZU93blB0cjxXZWJDb3JlOjpJREJLZXlQ
YXRoPiBtX3ByaXZhdGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQk9iamVjdFN0b3JlLmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJPYmplY3RTdG9yZS5oCmluZGV4IDQwMDhl
MWQyZTczNjQ1NTVjMWJhNjYwZGFhOTNhZGQ4NzMzMmQyYmUuLjBhZjQyNmU1MDZjN2I3ZTBmMTg4
OGViNmQ0Nzk0Mjk5OGMxMzhhNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYklEQk9iamVjdFN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViSURCT2JqZWN0U3RvcmUuaApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIldl
YkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJXZWJJREJDYWxsYmFja3MuaCIKICNpbmNsdWRl
ICJXZWJJREJLZXlQYXRoLmgiCi0jaW5jbHVkZSAiV2ViSURCVHJhbnNhY3Rpb24uaCIKICNpbmNs
dWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcu
aCIKIApAQCAtNTEsMTIgKzUwLDggQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIFdlYklE
QktleVBhdGgga2V5UGF0aCgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gV2ViSURCS2V5
UGF0aChrZXlQYXRoU3RyaW5nKCkpOwotICAgIH0KLSAgICB2aXJ0dWFsIFdlYlN0cmluZyBrZXlQ
YXRoU3RyaW5nKCkgY29uc3QKLSAgICB7CiAgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgcmV0dXJuIFdlYlN0cmluZygpOworICAgICAgICByZXR1cm4gV2ViSURC
S2V5UGF0aDo6Y3JlYXRlTnVsbCgpOwogICAgIH0KICAgICB2aXJ0dWFsIFdlYkRPTVN0cmluZ0xp
c3QgaW5kZXhOYW1lcygpIGNvbnN0CiAgICAgewpAQCAtODEsMTMgKzc2LDYgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBkZWxldGVGdW5jdGlvbihjb25zdCBXZWJJREJLZXkmLCBXZWJJREJD
YWxsYmFja3MqLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKSB7
IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVG
dW5jdGlvbihjb25zdCBXZWJJREJLZXlSYW5nZSYsIFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdl
YklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpIHsgV0VCS0lUX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyKFdlYklEQkNhbGxiYWNrcyosIGNv
bnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpIHsgV0VCS0lUX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOyB9Ci0KLSAgICAvLyBGSVhNRTogUmVtb3ZlIFdlYlN0cmluZyBrZXlQ
YXRoIG92ZXJsb2FkIG9uY2UgY2FsbGVycyBhcmUgdXBkYXRlZC4KLSAgICAvLyBodHRwOi8vd2Vi
a2l0Lm9yZy9iLzg0MjA3Ci0gICAgdmlydHVhbCBXZWJJREJJbmRleCogY3JlYXRlSW5kZXgoY29u
c3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVl
LCBib29sIG11bHRpRW50cnksIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwg
V2ViRXhjZXB0aW9uQ29kZSYgZWMpCi0gICAgewotICAgICAgICByZXR1cm4gY3JlYXRlSW5kZXgo
bmFtZSwgV2ViSURCS2V5UGF0aChrZXlQYXRoKSwgdW5pcXVlLCBtdWx0aUVudHJ5LCB0cmFuc2Fj
dGlvbiwgZWMpOwotICAgIH0KICAgICB2aXJ0dWFsIFdlYklEQkluZGV4KiBjcmVhdGVJbmRleChj
b25zdCBXZWJTdHJpbmcmLCBjb25zdCBXZWJJREJLZXlQYXRoJiwgYm9vbCwgYm9vbCwgY29uc3Qg
V2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJikKICAgICB7CiAgICAgICAgIFdF
QktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL3BsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgKaW5k
ZXggNDMyODIzMTVmY2Y5ODc5NjYwNmVhMjQ4Mjg4MDE0NjJlNDI0MGQwOS4uNTU2Y2M4OTk5ZGQ5
ODRkNTU2YThjNmEzNzc0ZmRjM2M0NGQ1ODFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0
LmgKQEAgLTMxLDcgKzMxLDYgQEAKICNpZm5kZWYgV2ViS2l0UGxhdGZvcm1TdXBwb3J0X2gKICNk
ZWZpbmUgV2ViS2l0UGxhdGZvcm1TdXBwb3J0X2gKIAotI2luY2x1ZGUgIi4uL1dlYklEQktleVBh
dGguaCIgLy8gRklYTUU6IFJlbW92ZSB3aXRoOiBodHRwOi8vd2Via2l0Lm9yZy9iLzg0MjA3CiAj
aW5jbHVkZSAiV2ViQ29tbW9uLmgiCiAjaW5jbHVkZSAiV2ViR3JhcGhpY3NDb250ZXh0M0QuaCIK
ICNpbmNsdWRlICJXZWJMb2NhbGl6ZWRTdHJpbmcuaCIKQEAgLTUzLDYgKzUyLDcgQEAgY2xhc3Mg
V2ViQXBwbGljYXRpb25DYWNoZUhvc3RDbGllbnQ7IC8vIEZJWE1FOiBEb2VzIHRoaXMgYmVsb25n
IGluIHBsYXRmb3JtPwogY2xhc3MgV2ViQ29va2llSmFyOwogY2xhc3MgV2ViSURCRmFjdG9yeTsg
Ly8gRklYTUU6IERvZXMgdGhpcyBiZWxvbmcgaW4gcGxhdGZvcm0/CiBjbGFzcyBXZWJJREJLZXk7
IC8vIEZJWE1FOiBEb2VzIHRoaXMgYmVsb25nIGluIHBsYXRmb3JtPworY2xhc3MgV2ViSURCS2V5
UGF0aDsgLy8gRklYTUU6IERvZXMgdGhpcyBiZWxvbmcgaW4gcGxhdGZvcm0/CiBjbGFzcyBXZWJN
ZXNzYWdlUG9ydENoYW5uZWw7IC8vIEZJWE1FOiBEb2VzIHRoaXMgYmVsb25nIGluIHBsYXRmb3Jt
PwogY2xhc3MgV2ViUGx1Z2luTGlzdEJ1aWxkZXI7IC8vIEZJWE1FOiBEb2VzIHRoaXMgYmVsb25n
IGluIHBsYXRmb3JtPwogY2xhc3MgV2ViU2FuZGJveFN1cHBvcnQ7CkBAIC0xMTEsMTMgKzExMSw3
IEBAIHB1YmxpYzoKICAgICAvLyBJbmRleGVkIERhdGFiYXNlIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogICAgIHZpcnR1YWwgV2ViSURCRmFj
dG9yeSogaWRiRmFjdG9yeSgpIHsgcmV0dXJuIDA7IH0KLSAgICAvLyBGSVhNRTogUmVtb3ZlIFdl
YlN0cmluZyBrZXlQYXRoIG92ZXJsb2FkIG9uY2UgY2FsbGVycyBhcmUgdXBkYXRlZC4KLSAgICAv
LyBodHRwOi8vd2Via2l0Lm9yZy9iLzg0MjA3Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZUlEQktl
eXNGcm9tU2VyaWFsaXplZFZhbHVlc0FuZEtleVBhdGgoY29uc3QgV2ViVmVjdG9yPFdlYlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4mIHZhbHVlcywgIGNvbnN0IFdlYlN0cmluZyYga2V5UGF0aCwgV2Vi
VmVjdG9yPFdlYklEQktleT4mIGtleXMpIHsgY3JlYXRlSURCS2V5c0Zyb21TZXJpYWxpemVkVmFs
dWVzQW5kS2V5UGF0aCh2YWx1ZXMsIFdlYklEQktleVBhdGgoa2V5UGF0aCksIGtleXMpOyB9CiAg
ICAgdmlydHVhbCB2b2lkIGNyZWF0ZUlEQktleXNGcm9tU2VyaWFsaXplZFZhbHVlc0FuZEtleVBh
dGgoY29uc3QgV2ViVmVjdG9yPFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mIHZhbHVlcywgIGNv
bnN0IFdlYklEQktleVBhdGgmIGtleVBhdGgsIFdlYlZlY3RvcjxXZWJJREJLZXk+JiBrZXlzKSB7
IH0KLSAgICAvLyBGSVhNRTogUmVtb3ZlIFdlYlN0cmluZyBrZXlQYXRoIG92ZXJsb2FkIG9uY2Ug
Y2FsbGVycyBhcmUgdXBkYXRlZC4KLSAgICAvLyBodHRwOi8vd2Via2l0Lm9yZy9iLzg0MjA3Ci0g
ICAgdmlydHVhbCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUgaW5qZWN0SURCS2V5SW50b1Nlcmlh
bGl6ZWRWYWx1ZShjb25zdCBXZWJJREJLZXkmIGtleSwgY29uc3QgV2ViU2VyaWFsaXplZFNjcmlw
dFZhbHVlJiB2YWx1ZSwgY29uc3QgV2ViU3RyaW5nJiBrZXlQYXRoKSB7IHJldHVybiBpbmplY3RJ
REJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKGtleSwgdmFsdWUsIFdlYklEQktleVBhdGgoa2V5UGF0
aCkpOyB9CiAgICAgdmlydHVhbCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUgaW5qZWN0SURCS2V5
SW50b1NlcmlhbGl6ZWRWYWx1ZShjb25zdCBXZWJJREJLZXkmIGtleSwgY29uc3QgV2ViU2VyaWFs
aXplZFNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgV2ViSURCS2V5UGF0aCYga2V5UGF0aCkgeyBy
ZXR1cm4gV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlKCk7IH0KIAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCmluZGV4IGNkMGYwN2Zm
NjdlZWEyYjY3NmIzNTg2Zjg4OTQwN2NkYmU4ZTIwNGUuLjViYzk2MGE5NjQwODFhNGZlYWI3NmUx
MzIxZTI5NjVjNmYxZWEyMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAiSURC
RGF0YWJhc2VFeGNlcHRpb24uaCIKICNpbmNsdWRlICJJREJGYWN0b3J5QmFja2VuZEludGVyZmFj
ZS5oIgogI2luY2x1ZGUgIklEQktleS5oIgorI2luY2x1ZGUgIklEQktleVBhdGguaCIKICNpbmNs
dWRlICJJY2VPcHRpb25zLmgiCiAjaW5jbHVkZSAiSWNvblVSTC5oIgogI2luY2x1ZGUgIk1lZGlh
UGxheWVyLmgiCkBAIC04Niw2ICs4Nyw3IEBACiAjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VFeGNl
cHRpb24uaCIKICNpbmNsdWRlICJXZWJJREJGYWN0b3J5LmgiCiAjaW5jbHVkZSAiV2ViSURCS2V5
LmgiCisjaW5jbHVkZSAiV2ViSURCS2V5UGF0aC5oIgogI2luY2x1ZGUgIldlYkljb25VUkwuaCIK
ICNpbmNsdWRlICJXZWJJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJNZWRpYVBsYXllci5o
IgpAQCAtNDY3LDEyICs0NjksMTggQEAgQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJW
aWV3OjpVc2VyU3R5bGVJbmplY3RJblN1YnNlcXVlbnREb2N1bWVudHMsIEluamUKIENPTVBJTEVf
QVNTRVJUX01BVENISU5HX0VOVU0oV2ViSURCRGF0YWJhc2VFeGNlcHRpb25EYXRhRXJyb3IsIElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUik7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKFdlYklEQkRhdGFiYXNlRXhjZXB0aW9uUXVvdGFFcnJvciwgSURCRGF0YWJhc2VFeGNlcHRp
b246OlFVT1RBX0VSUik7CiAKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIENPTVBJTEVf
QVNTRVJUX01BVENISU5HX0VOVU0oV2ViSURCS2V5OjpJbnZhbGlkVHlwZSwgSURCS2V5OjpJbnZh
bGlkVHlwZSk7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYklEQktleTo6QXJyYXlU
eXBlLCBJREJLZXk6OkFycmF5VHlwZSk7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdl
YklEQktleTo6U3RyaW5nVHlwZSwgSURCS2V5OjpTdHJpbmdUeXBlKTsKIENPTVBJTEVfQVNTRVJU
X01BVENISU5HX0VOVU0oV2ViSURCS2V5OjpEYXRlVHlwZSwgSURCS2V5OjpEYXRlVHlwZSk7CiBD
T01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYklEQktleTo6TnVtYmVyVHlwZSwgSURCS2V5
OjpOdW1iZXJUeXBlKTsKIAorQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJLZXlQ
YXRoOjpOdWxsVHlwZSwgSURCS2V5UGF0aDo6TnVsbFR5cGUpOworQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShXZWJJREJLZXlQYXRoOjpTdHJpbmdUeXBlLCBJREJLZXlQYXRoOjpTdHJpbmdU
eXBlKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViSURCS2V5UGF0aDo6QXJyYXlU
eXBlLCBJREJLZXlQYXRoOjpBcnJheVR5cGUpOworI2VuZGlmCisKICNpZiBFTkFCTEUoRklMRV9T
WVNURU0pCiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkZpbGVTeXN0ZW06OlR5cGVU
ZW1wb3JhcnksIEZpbGVTeXN0ZW1UeXBlVGVtcG9yYXJ5KTsKIENPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0oV2ViRmlsZVN5c3RlbTo6VHlwZVBlcnNpc3RlbnQsIEZpbGVTeXN0ZW1UeXBlUGVy
c2lzdGVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRh
YmFzZUJhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRh
YmFzZUJhY2tlbmRQcm94eS5jcHAKaW5kZXggMTc5Nzk5Mjc1ZDZmOTk3NjMwMTc3ZTVhMjhiZDkz
YmEzMTcyNjA0Zi4uNmU1MzU0OTlhMzhjNGE5MzUwOWE2ZTRmNTU2Y2Y5OGFjOGYyMDA3MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2Vu
ZFByb3h5LmNwcApAQCAtNzUsNyArNzUsNyBAQCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IElE
QkRhdGFiYXNlQmFja2VuZFByb3h5OjpvYmplY3RTdG9yZU5hbWVzKCkgY29uc3QKICAgICByZXR1
cm4gbV93ZWJJREJEYXRhYmFzZS0+b2JqZWN0U3RvcmVOYW1lcygpOwogfQogCi1QYXNzUmVmUHRy
PElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6
OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQ
YXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSog
dHJhbnNhY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbnRlcmZhY2U+IElEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpjcmVhdGVPYmplY3RT
dG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wg
YXV0b0luY3JlbWVudCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlv
biwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgLy8gVGhlIHRyYW5zYWN0aW9uIHBvaW50ZXIg
aXMgZ3VhcmFudGVlZCB0byBiZSBhIHBvaW50ZXIgdG8gYSBwcm94eSBvYmplY3QgYXMsIGluIHRo
ZSByZW5kZXJlciwKICAgICAvLyBhbGwgaW1wbGVtZW50YXRpb25zIG9mIElEQiBpbnRlcmZhY2Vz
IGFyZSBwcm94eSBvYmplY3RzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgKaW5kZXggNWE1YmFmMjhmMDk2YTk5NDdmYWIwNTJm
ZWRiMWU5YWUzNzdlYTY1YS4uYjc4YWM2OTkyY2RjZmYxMzg3YTllYzA4YjM4NjhlYjZjZmM0MzM5
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNr
ZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJh
Y2tlbmRQcm94eS5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmlu
ZyB2ZXJzaW9uKCkgY29uc3Q7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkRPTVN0
cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZU9iamVj
dFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1
dG9JbmNyZW1lbnQsIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdl
YkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFdlYkNvcmU6OklEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1l
bnQsIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4
Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoY29uc3Qg
U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBX
ZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIHNldFZlcnNpb24oY29u
c3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFBh
c3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VDYWxsYmFja3M+LCBXZWJDb3JlOjpFeGNlcHRp
b25Db2RlJik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24oV2ViQ29yZTo6RE9NU3RyaW5nTGlzdCogc3Rv
cmVOYW1lcywgdW5zaWduZWQgc2hvcnQgbW9kZSwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCSW5kZXhCYWNrZW5kUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCSW5kZXhCYWNrZW5kUHJveHku
Y3BwCmluZGV4IGZjNzQ2YWE2YjEyM2M0ZWZhZGM4MjY3ZTZhMDVjYzIwZTZhMTNhY2IuLjI4MGRi
ODgxZDJmODY3YTYwYzgwN2FkYTVhMDVhYzRjOWQzOTY5N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0lEQkluZGV4QmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJJbmRleEJhY2tlbmRQcm94eS5jcHAKQEAgLTI5LDYgKzI5
LDcgQEAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogI2luY2x1ZGUgIklEQkNhbGxi
YWNrcy5oIgorI2luY2x1ZGUgIklEQktleVBhdGguaCIKICNpbmNsdWRlICJJREJLZXlSYW5nZS5o
IgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5LmgiCiAjaW5jbHVkZSAiV2Vi
SURCQ2FsbGJhY2tzSW1wbC5oIgpAQCAtNjAsOSArNjEsOSBAQCBTdHJpbmcgSURCSW5kZXhCYWNr
ZW5kUHJveHk6Om5hbWUoKQogICAgIHJldHVybiBtX3dlYklEQkluZGV4LT5uYW1lKCk7CiB9CiAK
LVN0cmluZyBJREJJbmRleEJhY2tlbmRQcm94eTo6a2V5UGF0aCgpCitJREJLZXlQYXRoIElEQklu
ZGV4QmFja2VuZFByb3h5OjprZXlQYXRoKCkKIHsKLSAgICByZXR1cm4gbV93ZWJJREJJbmRleC0+
a2V5UGF0aCgpLnN0cmluZygpOworICAgIHJldHVybiBtX3dlYklEQkluZGV4LT5rZXlQYXRoKCk7
CiB9CiAKIGJvb2wgSURCSW5kZXhCYWNrZW5kUHJveHk6OnVuaXF1ZSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJJbmRleEJhY2tlbmRQcm94eS5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCSW5kZXhCYWNrZW5kUHJveHkuaAppbmRleCBkNWNjOGJi
ZmVkOWQyNTJmMWFlNjBlM2VjMDhmOWE3OTcxMzA3YzQwLi4yNzM0MDU2MDFjZWRlOTgyMWYxMzcx
MzNjOTkyYTczYThlMDNlNzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJJbmRleEJhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQkluZGV4QmFja2VuZFByb3h5LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkKIAogI2luY2x1ZGUgIklEQkluZGV4QmFja2VuZEludGVyZmFjZS5oIgor
I2luY2x1ZGUgIklEQktleVBhdGguaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1Bhc3NPd25QdHIuaD4KIApAQCAtNDIsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB+SURCSW5kZXhCYWNrZW5kUHJveHkoKTsKIAogICAgIHZpcnR1YWwgU3RyaW5nIG5hbWUo
KTsKLSAgICB2aXJ0dWFsIFN0cmluZyBrZXlQYXRoKCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpJ
REJLZXlQYXRoIGtleVBhdGgoKTsKICAgICB2aXJ0dWFsIGJvb2wgdW5pcXVlKCk7CiAgICAgdmly
dHVhbCBib29sIG11bHRpRW50cnkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuY3BwCmluZGV4IDI0ZjIzYTU5
NTA3NGY0NmQ0NWIwMTNlMDVlMTFjMGFhYmE1NGZlNjQuLmMwM2IyZjEzYjUwYzQ1ZDRjNDQwZDA1
ZGI2MmMwYjdhM2RkZmFlNGYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5jcHAKQEAgLTY0LDkgKzY0LDkgQEAg
U3RyaW5nIElEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjpuYW1lKCkgY29uc3QKICAgICByZXR1
cm4gbV93ZWJJREJPYmplY3RTdG9yZS0+bmFtZSgpOwogfQogCi1TdHJpbmcgSURCT2JqZWN0U3Rv
cmVCYWNrZW5kUHJveHk6OmtleVBhdGgoKSBjb25zdAorSURCS2V5UGF0aCBJREJPYmplY3RTdG9y
ZUJhY2tlbmRQcm94eTo6a2V5UGF0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fd2ViSURCT2Jq
ZWN0U3RvcmUtPmtleVBhdGgoKS5zdHJpbmcoKTsKKyAgICByZXR1cm4gbV93ZWJJREJPYmplY3RT
dG9yZS0+a2V5UGF0aCgpOwogfQogCiBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IElEQk9iamVj
dFN0b3JlQmFja2VuZFByb3h5OjppbmRleE5hbWVzKCkgY29uc3QKQEAgLTExOSw3ICsxMTksNyBA
QCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjpjbGVhcihQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4gY2FsbGJhY2tzLCBJREJUcgogICAgIG1fd2ViSURCT2JqZWN0U3RvcmUtPmNsZWFy
KG5ldyBXZWJJREJDYWxsYmFja3NJbXBsKGNhbGxiYWNrcyksICp0cmFuc2FjdGlvblByb3h5LT5n
ZXRXZWJJREJUcmFuc2FjdGlvbigpLCBlYyk7CiB9CiAKLVBhc3NSZWZQdHI8SURCSW5kZXhCYWNr
ZW5kSW50ZXJmYWNlPiBJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eTo6Y3JlYXRlSW5kZXgoY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29s
IG11bHRpRW50cnksIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24s
IEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+
IElEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjpjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50
cnksIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2VwdGlv
bkNvZGUmIGVjKQogewogICAgIC8vIFRoZSB0cmFuc2FjdGlvbiBwb2ludGVyIGlzIGd1YXJhbnRl
ZWQgdG8gYmUgYSBwb2ludGVyIHRvIGEgcHJveHkgb2JqZWN0IGFzLCBpbiB0aGUgcmVuZGVyZXIs
CiAgICAgLy8gYWxsIGltcGxlbWVudGF0aW9ucyBvZiBJREIgaW50ZXJmYWNlcyBhcmUgcHJveHkg
b2JqZWN0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVj
dFN0b3JlQmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJPYmpl
Y3RTdG9yZUJhY2tlbmRQcm94eS5oCmluZGV4IGZiNzc4MWQ2MDFhNmM5NDEzNzRkNmY2ZWRhODEz
ZGEzNDhkMzQzMjYuLjVkNjc5NmM2NDVlMDQ1OWU4Yzc0MjYwNDk5ODBiOWYwNDMyZWJmNjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlQmFja2Vu
ZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVC
YWNrZW5kUHJveHkuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKElOREVYRURfREFU
QUJBU0UpCiAKKyNpbmNsdWRlICJJREJLZXlQYXRoLmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CkBAIC00Myw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eSgpOwogCiAgICAgdmlydHVhbCBTdHJpbmcgbmFt
ZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgU3RyaW5nIGtleVBhdGgoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIFdlYkNvcmU6OklEQktleVBhdGgga2V5UGF0aCgpIGNvbnN0OwogICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxXZWJDb3JlOjpET01TdHJpbmdMaXN0PiBpbmRleE5hbWVzKCkgY29uc3Q7CiAgICAg
dmlydHVhbCBib29sIGF1dG9JbmNyZW1lbnQoKSBjb25zdDsKIApAQCAtNTMsNyArNTQsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8V2ViQ29y
ZTo6SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFdlYkNv
cmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNv
ZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXIoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxs
YmFja3M+LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3Jl
OjpFeGNlcHRpb25Db2RlJik7CiAKLSAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkluZGV4QmFj
a2VuZEludGVyZmFjZT4gY3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnksIFdlYkNvcmU6OklEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKKyAg
ICBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEludGVyZmFjZT4gY3JlYXRlSW5k
ZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJDb3JlOjpJREJLZXlQYXRoJiwgYm9vbCB1
bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8V2ViQ29y
ZTo6SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBpbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIFdl
YkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0IFN0cmlu
ZyYgbmFtZSwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29y
ZTo6RXhjZXB0aW9uQ29kZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxh
dGZvcm1TdXBwb3J0LmNwcAppbmRleCBlZWFiNzg2MTk2NmJmNDE4MzNlOWEzOGEyYWI3NGRlMDVl
MTE3ODY0Li4zMzAzZDQ1Y2MwNGQyNDI5ZjAwZDFiZmU4ODM0NWNlMGYxMjZlMmU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAKQEAgLTQwLDYg
KzQwLDcgQEAKICNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgogI2luY2x1ZGUgIldlYkZyYW1l
SW1wbC5oIgogI2luY2x1ZGUgIldlYklEQktleS5oIgorI2luY2x1ZGUgIldlYklEQktleVBhdGgu
aCIKICNpbmNsdWRlICJXZWJLaXQuaCIKICNpbmNsdWRlICJXZWJQbHVnaW5Db250YWluZXJJbXBs
LmgiCiAjaW5jbHVkZSAiV2ViUGx1Z2luTGlzdEJ1aWxkZXJJbXBsLmgiCkBAIC00OTUsNyArNDk2
LDcgQEAgUGFzc1JlZlB0cjxJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZT4gUGxhdGZvcm1TdXBw
b3J0OjppZGJGYWN0b3J5KCkKICAgICByZXR1cm4gSURCRmFjdG9yeUJhY2tlbmRQcm94eTo6Y3Jl
YXRlKCk7CiB9CiAKLXZvaWQgUGxhdGZvcm1TdXBwb3J0OjpjcmVhdGVJREJLZXlzRnJvbVNlcmlh
bGl6ZWRWYWx1ZXNBbmRLZXlQYXRoKGNvbnN0IFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiA+JiB2YWx1ZXMsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgVmVjdG9yPFJlZlB0cjxJ
REJLZXk+ID4mIGtleXMpCit2b2lkIFBsYXRmb3JtU3VwcG9ydDo6Y3JlYXRlSURCS2V5c0Zyb21T
ZXJpYWxpemVkVmFsdWVzQW5kS2V5UGF0aChjb25zdCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gPiYgdmFsdWVzLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBWZWN0b3I8
UmVmUHRyPElEQktleT4gPiYga2V5cykKIHsKICAgICBXZWJWZWN0b3I8V2ViU2VyaWFsaXplZFNj
cmlwdFZhbHVlPiB3ZWJWYWx1ZXMgPSB2YWx1ZXM7CiAgICAgV2ViVmVjdG9yPFdlYklEQktleT4g
d2ViS2V5czsKQEAgLTUwNyw3ICs1MDgsNyBAQCB2b2lkIFBsYXRmb3JtU3VwcG9ydDo6Y3JlYXRl
SURCS2V5c0Zyb21TZXJpYWxpemVkVmFsdWVzQW5kS2V5UGF0aChjb25zdCBWZWN0b3I8UgogICAg
ICAgICBrZXlzLmFwcGVuZChQYXNzUmVmUHRyPElEQktleT4od2ViS2V5c1tpXSkpOwogfQogCi1Q
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gUGxhdGZvcm1TdXBwb3J0OjppbmplY3RJ
REJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQor
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFBsYXRmb3JtU3VwcG9ydDo6aW5qZWN0
SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBh
dGgpCiB7CiAgICAgcmV0dXJuIHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5pbmplY3RJREJLZXlJ
bnRvU2VyaWFsaXplZFZhbHVlKGtleSwgdmFsdWUsIGtleVBhdGgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAKaW5kZXggNDQ3Yjk5
M2M2YTRmOTA3ZGMwNDNhN2EyZjU0YWM1Njg2ZDYzOTgxOS4uNGJlNDNkYzE0ZDgxN2Q5NTlhZWY1
OGExNmFlY2Y0ODViY2I1YjZiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJREJEYXRhYmFzZUltcGwuY3BwCkBAIC02Niw3ICs2Niw3IEBAIFdlYkRPTVN0cmluZ0xp
c3QgV2ViSURCRGF0YWJhc2VJbXBsOjpvYmplY3RTdG9yZU5hbWVzKCkgY29uc3QKICAgICByZXR1
cm4gbV9kYXRhYmFzZUJhY2tlbmQtPm9iamVjdFN0b3JlTmFtZXMoKTsKIH0KIAotV2ViSURCT2Jq
ZWN0U3RvcmUqIFdlYklEQkRhdGFiYXNlSW1wbDo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgV2Vi
U3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVu
dCwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBXZWJFeGNlcHRpb25Db2Rl
JiBlYykKK1dlYklEQk9iamVjdFN0b3JlKiBXZWJJREJEYXRhYmFzZUltcGw6OmNyZWF0ZU9iamVj
dFN0b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCS2V5UGF0aCYga2V5UGF0
aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rp
b24sIFdlYkV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbnRlcmZhY2U+IG9iamVjdFN0b3JlID0gbV9kYXRhYmFzZUJhY2tlbmQtPmNyZWF0ZU9i
amVjdFN0b3JlKG5hbWUsIGtleVBhdGgsIGF1dG9JbmNyZW1lbnQsIHRyYW5zYWN0aW9uLmdldElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSgpLCBlYyk7CiAgICAgaWYgKCFvYmplY3RTdG9y
ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJh
c2VJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwu
aAppbmRleCBmNzNiZTU3MDU0ZjYyYWI0YzI1NDE0MDJkN2YxNDdkODY3YWVmM2Q3Li45NjU3MWJi
ZTljMWQ5NmNiZDNmOWM3ZDNhZDgzMTc5Yjk2MTkzZGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaApAQCAtNTMsMTAgKzUzLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgV2ViU3RyaW5nIHZlcnNpb24oKSBjb25zdDsKICAgICB2aXJ0dWFs
IFdlYkRPTVN0cmluZ0xpc3Qgb2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0OwogCi0gICAgLy8gRklY
TUU6IFJlbW92ZSBXZWJTdHJpbmcga2V5UGF0aCBvdmVybG9hZCBvbmNlIGNhbGxlcnMgYXJlIHVw
ZGF0ZWQuCi0gICAgLy8gaHR0cDovL3dlYmtpdC5vcmcvYi84NDIwNwotICAgIHZpcnR1YWwgV2Vi
SURCT2JqZWN0U3RvcmUqIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYsIGNvbnN0
IFdlYlN0cmluZyYsIGJvb2wsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9u
Q29kZSYpOwotICAgIHZpcnR1YWwgV2ViSURCT2JqZWN0U3RvcmUqIGNyZWF0ZU9iamVjdFN0b3Jl
KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCS2V5UGF0aCYga2V5UGF0aCwgYm9v
bCBhdXRvSW5jcmVtZW50LCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIFdl
YkV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBjcmVhdGVPYmplY3RTdG9yZShuYW1lLCBrZXlQ
YXRoLnN0cmluZygpLCBhdXRvSW5jcmVtZW50LCB0cmFuc2FjdGlvbiwgZWMpOyB9CisgICAgdmly
dHVhbCBXZWJJREJPYmplY3RTdG9yZSogY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5n
JiBuYW1lLCBjb25zdCBXZWJJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50LCBjb25zdCBX
ZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJJREJUcmFu
c2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmVyc2lv
bihjb25zdCBXZWJTdHJpbmcmIHZlcnNpb24sIFdlYklEQkNhbGxiYWNrcyosIFdlYkV4Y2VwdGlv
bkNvZGUmKTsKICAgICB2aXJ0dWFsIFdlYklEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbihjb25z
dCBXZWJET01TdHJpbmdMaXN0JiBuYW1lcywgdW5zaWduZWQgc2hvcnQgbW9kZSwgV2ViRXhjZXB0
aW9uQ29kZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURC
SW5kZXhJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkluZGV4SW1w
bC5jcHAKaW5kZXggNzUyYTg2MjYzNzU5ZWE1MmY4ODk5M2JlN2NlYTQxMWU4YTA2MjY0Ny4uN2Y3
NGU1YTQ3OTAyOTZjMzk2YTFkNDdkOGUyOGEwNTkwNzE4ODNkNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCSW5kZXhJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJREJJbmRleEltcGwuY3BwCkBAIC01OCwxMyArNTgsNiBAQCBX
ZWJJREJLZXlQYXRoIFdlYklEQkluZGV4SW1wbDo6a2V5UGF0aCgpIGNvbnN0CiAgICAgcmV0dXJu
IFdlYklEQktleVBhdGgobV9iYWNrZW5kLT5rZXlQYXRoKCkpOwogfQogCi0vLyBGSVhNRTogUmVt
b3ZlIHRoaXMgbWV0aG9kIG9uY2UgY2FsbGVycyBhcmUgdXBkYXRlZC4KLS8vIGh0dHA6Ly93ZWJr
aXQub3JnL2IvODQyMDcKLVdlYlN0cmluZyBXZWJJREJJbmRleEltcGw6OmtleVBhdGhTdHJpbmco
KSBjb25zdAotewotICAgIHJldHVybiBtX2JhY2tlbmQtPmtleVBhdGgoKTsKLX0KLQogYm9vbCBX
ZWJJREJJbmRleEltcGw6OnVuaXF1ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fYmFja2VuZC0+
dW5pcXVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJJ
bmRleEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkluZGV4SW1wbC5o
CmluZGV4IDkwZDgzNjY2OTk5MDQwMGU4NjI4MGY1YTRkMzEyMWY5MGVhYTdlMmUuLjA0ZmVhNTgy
ZjIwZmM3MzA3NmZmYzFlZWUyZDI4OWQ3YTg4NTFjZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklEQkluZGV4SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYklEQkluZGV4SW1wbC5oCkBAIC00NSw5ICs0NSw2IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgV2ViU3RyaW5nIG5hbWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIFdlYklEQktl
eVBhdGgga2V5UGF0aCgpIGNvbnN0OwotICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBtZXRob2Qg
b25jZSBjYWxsZXJzIGFyZSB1cGRhdGVkLgotICAgIC8vIGh0dHA6Ly93ZWJraXQub3JnL2IvODQy
MDcKLSAgICB2aXJ0dWFsIFdlYlN0cmluZyBrZXlQYXRoU3RyaW5nKCkgY29uc3Q7CiAgICAgdmly
dHVhbCBib29sIHVuaXF1ZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBtdWx0aUVudHJ5KCkg
Y29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQktl
eVBhdGguY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCS2V5UGF0aC5jcHAK
aW5kZXggYmNmNWRiZDBkOWVjODZkMWEzOWM4MDFlNGFlMGY3N2ZiZDI0MWIyNi4uMTdjMTU4ZjM0
ZTQ4OGQ5MGUzMTczY2RjMzg0NjFkMWFmMmEzYjc5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSURCS2V5UGF0aC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSURCS2V5UGF0aC5jcHAKQEAgLTM3LDEwMSArMzcsNzkgQEAgdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1XZWJJREJLZXlQYXRoIFdl
YklEQktleVBhdGg6OmNyZWF0ZShjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYpCitXZWJJREJL
ZXlQYXRoOjp+V2ViSURCS2V5UGF0aCgpCiB7Ci0gICAgLy8gRklYTUU6IEFycmF5LXR5cGUga2V5
IHBhdGhzIG5vdCB5ZXQgc3VwcG9ydGVkLiBodHRwOi8vd2Via2l0Lm9yZy9iLzg0MjA3Ci0gICAg
V0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBjcmVhdGVOdWxsKCk7Cisg
ICAgbV9wcml2YXRlLnJlc2V0KDApOwogfQogCiBXZWJJREJLZXlQYXRoIFdlYklEQktleVBhdGg6
OmNyZWF0ZShjb25zdCBXZWJTdHJpbmcmIGtleVBhdGgpCiB7Ci0gICAgaWYgKGtleVBhdGguaXNO
dWxsKCkpCi0gICAgICAgIHJldHVybiBjcmVhdGVOdWxsKCk7Ci0KLSAgICBXVEY6OlZlY3RvcjxX
VEY6OlN0cmluZz4gaWRiRWxlbWVudHM7Ci0gICAgSURCS2V5UGF0aFBhcnNlRXJyb3IgaWRiRXJy
b3I7Ci0gICAgSURCUGFyc2VLZXlQYXRoKGtleVBhdGgsIGlkYkVsZW1lbnRzLCBpZGJFcnJvcik7
Ci0gICAgcmV0dXJuIFdlYklEQktleVBhdGgoaWRiRWxlbWVudHMsIHN0YXRpY19jYXN0PGludD4o
aWRiRXJyb3IpKTsKLX0KLQotV2ViSURCS2V5UGF0aCBXZWJJREJLZXlQYXRoOjpjcmVhdGVOdWxs
KCkKLXsKLSAgICByZXR1cm4gV2ViSURCS2V5UGF0aChXZWJTdHJpbmcoKSk7CisgICAgcmV0dXJu
IFdlYklEQktleVBhdGgoSURCS2V5UGF0aChrZXlQYXRoKSk7CiB9CiAKLVdlYklEQktleVBhdGg6
OldlYklEQktleVBhdGgoY29uc3QgV2ViSURCS2V5UGF0aCYga2V5UGF0aCkKK1dlYklEQktleVBh
dGggV2ViSURCS2V5UGF0aDo6Y3JlYXRlKGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+JiBrZXlQ
YXRoKQogewotICAgIGFzc2lnbihrZXlQYXRoKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBzdHJpbmdz
OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga2V5UGF0aC5zaXplKCk7ICsraSkKKyAgICAg
ICAgc3RyaW5ncy5hcHBlbmQoa2V5UGF0aFtpXSk7CisgICAgcmV0dXJuIFdlYklEQktleVBhdGgo
SURCS2V5UGF0aChzdHJpbmdzKSk7CiB9CiAKLVdlYklEQktleVBhdGg6OldlYklEQktleVBhdGgo
Y29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBlbGVtZW50cywgaW50IHBhcnNlRXJyb3Ip
Ci0gICAgOiBtX3ByaXZhdGUobmV3IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPihlbGVtZW50cykp
Ci0gICAgLCBtX3BhcnNlRXJyb3IocGFyc2VFcnJvcikKK1dlYklEQktleVBhdGggV2ViSURCS2V5
UGF0aDo6Y3JlYXRlTnVsbCgpCiB7CisgICAgcmV0dXJuIFdlYklEQktleVBhdGgoSURCS2V5UGF0
aCgpKTsKIH0KIAogYm9vbCBXZWJJREJLZXlQYXRoOjppc1ZhbGlkKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9wYXJzZUVycm9yID09IElEQktleVBhdGhQYXJzZUVycm9yTm9uZTsKKyAgICBBU1NF
UlQobV9wcml2YXRlLmdldCgpKTsKKyAgICByZXR1cm4gbV9wcml2YXRlLT5pc1ZhbGlkKCk7CiB9
CiAKIFdlYklEQktleVBhdGg6OlR5cGUgV2ViSURCS2V5UGF0aDo6dHlwZSgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIG1fcHJpdmF0ZS5nZXQoKSA/IFN0cmluZ1R5cGUgOiBOdWxsVHlwZTsKKyAgICBB
U1NFUlQobV9wcml2YXRlLmdldCgpKTsKKyAgICByZXR1cm4gVHlwZShtX3ByaXZhdGUtPnR5cGUo
KSk7CiB9CiAKLVdlYlN0cmluZyBXZWJJREJLZXlQYXRoOjpzdHJpbmcoKSBjb25zdAorCitXZWJW
ZWN0b3I8V2ViU3RyaW5nPiBXZWJJREJLZXlQYXRoOjphcnJheSgpIGNvbnN0CiB7Ci0gICAgaWYg
KCFtX3ByaXZhdGUuZ2V0KCkpCi0gICAgICAgIHJldHVybiBXZWJTdHJpbmcoKTsKLQotICAgIC8v
IEZJWE1FOiBTdG9yZSB0aGUgY29tcGxldGUgc3RyaW5nIGluc3RlYWQgb2YgcmVidWlsZGluZyBp
dC4KLSAgICAvLyBodHRwOi8vd2Via2l0Lm9yZy9iLzg0MjA3Ci0gICAgV1RGOjpTdHJpbmcgc3Ry
aW5nKCIiKTsKLSAgICBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIGFycmF5ID0gKm1fcHJpdmF0
ZS5nZXQoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFycmF5LnNpemUoKTsgKytpKSB7
Ci0gICAgICAgIGlmIChpKQotICAgICAgICAgICAgc3RyaW5nLmFwcGVuZCgiLiIpOwotICAgICAg
ICBzdHJpbmcuYXBwZW5kKGFycmF5W2ldKTsKLSAgICB9Ci0gICAgcmV0dXJuIFdlYlN0cmluZyhz
dHJpbmcpOworICAgIEFTU0VSVChtX3ByaXZhdGUuZ2V0KCkpOworICAgIEFTU0VSVChtX3ByaXZh
dGUtPnR5cGUoKSA9PSBJREJLZXlQYXRoOjpBcnJheVR5cGUpOworICAgIHJldHVybiBtX3ByaXZh
dGUtPmFycmF5KCk7CiB9CiAKLVdlYklEQktleVBhdGg6OldlYklEQktleVBhdGgoY29uc3QgV2Vi
U3RyaW5nJiBrZXlQYXRoKQotICAgIDogbV9wYXJzZUVycm9yKElEQktleVBhdGhQYXJzZUVycm9y
Tm9uZSkKK1dlYlN0cmluZyBXZWJJREJLZXlQYXRoOjpzdHJpbmcoKSBjb25zdAogewotICAgIGlm
ICgha2V5UGF0aC5pc051bGwoKSkgewotICAgICAgICBtX3ByaXZhdGUucmVzZXQobmV3IFdURjo6
VmVjdG9yPFdURjo6U3RyaW5nPigpKTsKLSAgICAgICAgSURCS2V5UGF0aFBhcnNlRXJyb3IgaWRi
UGFyc2VFcnJvcjsKLSAgICAgICAgSURCUGFyc2VLZXlQYXRoKGtleVBhdGgsICptX3ByaXZhdGUu
Z2V0KCksIGlkYlBhcnNlRXJyb3IpOwotICAgICAgICBtX3BhcnNlRXJyb3IgPSBpZGJQYXJzZUVy
cm9yOwotICAgIH0KKyAgICBBU1NFUlQobV9wcml2YXRlLmdldCgpKTsKKyAgICBBU1NFUlQobV9w
cml2YXRlLT50eXBlKCkgPT0gSURCS2V5UGF0aDo6U3RyaW5nVHlwZSk7CisgICAgcmV0dXJuIG1f
cHJpdmF0ZS0+c3RyaW5nKCk7CiB9CiAKLWludCBXZWJJREJLZXlQYXRoOjpwYXJzZUVycm9yKCkg
Y29uc3QKK1dlYklEQktleVBhdGg6OldlYklEQktleVBhdGgoY29uc3QgV2ViSURCS2V5UGF0aCYg
a2V5UGF0aCkKKyAgICA6IG1fcHJpdmF0ZShuZXcgSURCS2V5UGF0aChrZXlQYXRoKSkKIHsKLSAg
ICByZXR1cm4gbV9wYXJzZUVycm9yOworICAgIEFTU0VSVChtX3ByaXZhdGUuZ2V0KCkpOwogfQog
Ci12b2lkIFdlYklEQktleVBhdGg6OmFzc2lnbihjb25zdCBXZWJJREJLZXlQYXRoJiBrZXlQYXRo
KQorV2ViSURCS2V5UGF0aDo6V2ViSURCS2V5UGF0aChjb25zdCBXZWJDb3JlOjpJREJLZXlQYXRo
JiB2YWx1ZSkKKyAgICA6IG1fcHJpdmF0ZShuZXcgSURCS2V5UGF0aCh2YWx1ZSkpCiB7Ci0gICAg
bV9wYXJzZUVycm9yID0ga2V5UGF0aC5tX3BhcnNlRXJyb3I7Ci0gICAgaWYgKGtleVBhdGgubV9w
cml2YXRlLmdldCgpKQotICAgICAgICBtX3ByaXZhdGUucmVzZXQobmV3IFdURjo6VmVjdG9yPFdU
Rjo6U3RyaW5nPihrZXlQYXRoKSk7Ci0gICAgZWxzZQotICAgICAgICBtX3ByaXZhdGUucmVzZXQo
MCk7CisgICAgQVNTRVJUKG1fcHJpdmF0ZS5nZXQoKSk7CiB9CiAKLXZvaWQgV2ViSURCS2V5UGF0
aDo6cmVzZXQoKQorV2ViSURCS2V5UGF0aCYgV2ViSURCS2V5UGF0aDo6b3BlcmF0b3I9KGNvbnN0
IFdlYkNvcmU6OklEQktleVBhdGgmIHZhbHVlKQogewotICAgIG1fcHJpdmF0ZS5yZXNldCgwKTsK
KyAgICBBU1NFUlQobV9wcml2YXRlLmdldCgpKTsKKyAgICBtX3ByaXZhdGUucmVzZXQobmV3IElE
QktleVBhdGgodmFsdWUpKTsKKyAgICByZXR1cm4gKnRoaXM7CiB9CiAKLVdlYklEQktleVBhdGg6
Om9wZXJhdG9yIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nLCAwPiYoKSBjb25zdAorV2Vi
SURCS2V5UGF0aDo6b3BlcmF0b3IgY29uc3QgV2ViQ29yZTo6SURCS2V5UGF0aCYoKSBjb25zdAog
ewogICAgIEFTU0VSVChtX3ByaXZhdGUuZ2V0KCkpOwotICAgIHJldHVybiAqbV9wcml2YXRlLmdl
dCgpOworICAgIHJldHVybiAqKG1fcHJpdmF0ZS5nZXQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2Jq
ZWN0U3RvcmVJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVj
dFN0b3JlSW1wbC5jcHAKaW5kZXggNWVjMzVkZjBmZDFiY2ExYjM1NmNlMDI4OTA1ZWNkYzNkOWZl
ZjA2Mi4uZWJkN2FlOTQ1ZTM0OWQyNmU5Mjk1NTlhYThmZjJlYzczMzI3Njk4YSAxMDA3NTUKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3Bw
CkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUg
IklEQkNhbGxiYWNrc1Byb3h5LmgiCiAjaW5jbHVkZSAiSURCSW5kZXhCYWNrZW5kSW50ZXJmYWNl
LmgiCisjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgogI2luY2x1ZGUgIklEQktleVJhbmdlLmgiCiAj
aW5jbHVkZSAiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiV2Vi
SURCSW5kZXhJbXBsLmgiCkBAIC01OSwxMyArNjAsNiBAQCBXZWJTdHJpbmcgV2ViSURCT2JqZWN0
U3RvcmVJbXBsOjpuYW1lKCkgY29uc3QKIAogV2ViSURCS2V5UGF0aCBXZWJJREJPYmplY3RTdG9y
ZUltcGw6OmtleVBhdGgoKSBjb25zdAogewotICAgIHJldHVybiBXZWJJREJLZXlQYXRoKG1fb2Jq
ZWN0U3RvcmUtPmtleVBhdGgoKSk7Ci19Ci0KLS8vIEZJWE1FOiBSZW1vdmUgdGhpcyBtZXRob2Qg
b25jZSBjYWxsZXJzIGFyZSB1cGRhdGVkLgotLy8gaHR0cDovL3dlYmtpdC5vcmcvYi84NDIwNwot
V2ViU3RyaW5nIFdlYklEQk9iamVjdFN0b3JlSW1wbDo6a2V5UGF0aFN0cmluZygpIGNvbnN0Ci17
CiAgICAgcmV0dXJuIG1fb2JqZWN0U3RvcmUtPmtleVBhdGgoKTsKIH0KIApAQCAtMTA0LDcgKzk4
LDcgQEAgdm9pZCBXZWJJREJPYmplY3RTdG9yZUltcGw6OmNsZWFyKFdlYklEQkNhbGxiYWNrcyog
Y2FsbGJhY2tzLCBjb25zdCBXZWJJREJUcmFuc2EKICAgICBtX29iamVjdFN0b3JlLT5jbGVhcihJ
REJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKGNhbGxiYWNrcykpLCB0cmFuc2FjdGlv
bi5nZXRJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UoKSwgZWMpOwogfQogCi1XZWJJREJJ
bmRleCogV2ViSURCT2JqZWN0U3RvcmVJbXBsOjpjcmVhdGVJbmRleChjb25zdCBXZWJTdHJpbmcm
IG5hbWUsIGNvbnN0IFdlYlN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlF
bnRyeSwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBXZWJFeGNlcHRpb25D
b2RlJiBlYykKK1dlYklEQkluZGV4KiBXZWJJREJPYmplY3RTdG9yZUltcGw6OmNyZWF0ZUluZGV4
KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCS2V5UGF0aCYga2V5UGF0aCwgYm9v
bCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5z
YWN0aW9uLCBXZWJFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBSZWZQdHI8SURCSW5kZXhCYWNr
ZW5kSW50ZXJmYWNlPiBpbmRleCA9IG1fb2JqZWN0U3RvcmUtPmNyZWF0ZUluZGV4KG5hbWUsIGtl
eVBhdGgsIHVuaXF1ZSwgbXVsdGlFbnRyeSwgdHJhbnNhY3Rpb24uZ2V0SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlKCksIGVjKTsKICAgICBpZiAoIWluZGV4KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuaAppbmRleCA5NmZmNmVl
MjgyNDJmZTcxYjhjMDM1YTMzYmQ3ZGQxODM4OGE3MjdlLi45MWFlZTc4MzNiNjk5NWRjN2E3YWE0
YjA1Y2RiODYwNDE3NWQ1NTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJREJPYmplY3RTdG9yZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJREJPYmplY3RTdG9yZUltcGwuaApAQCAtNDcsOSArNDcsNiBAQCBwdWJsaWM6CiAKICAg
ICBXZWJTdHJpbmcgbmFtZSgpIGNvbnN0OwogICAgIFdlYklEQktleVBhdGgga2V5UGF0aCgpIGNv
bnN0OwotICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBtZXRob2Qgb25jZSBjYWxsZXJzIGFyZSB1
cGRhdGVkLgotICAgIC8vIGh0dHA6Ly93ZWJraXQub3JnL2IvODQyMDcKLSAgICBXZWJTdHJpbmcg
a2V5UGF0aFN0cmluZygpIGNvbnN0OwogICAgIFdlYkRPTVN0cmluZ0xpc3QgaW5kZXhOYW1lcygp
IGNvbnN0OwogICAgIGJvb2wgYXV0b0luY3JlbWVudCgpIGNvbnN0OwogCkBAIC01OSwxMCArNTYs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWxldGVGdW5jdGlvbihjb25zdCBXZWJJREJLZXlSYW5n
ZSYsIFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0
aW9uQ29kZSYpOwogICAgIHZvaWQgY2xlYXIoV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURC
VHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7CiAKLSAgICAvLyBGSVhNRTogUmVtb3Zl
IFdlYlN0cmluZyBrZXlQYXRoIG92ZXJsb2FkIG9uY2UgY2FsbGVycyBhcmUgdXBkYXRlZC4KLSAg
ICAvLyBodHRwOi8vd2Via2l0Lm9yZy9iLzg0MjA3Ci0gICAgV2ViSURCSW5kZXgqIGNyZWF0ZUlu
ZGV4KGNvbnN0IFdlYlN0cmluZyYsIGNvbnN0IFdlYlN0cmluZyYsIGJvb2wsIGJvb2wsIGNvbnN0
IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOwotICAgIFdlYklEQkluZGV4
KiBjcmVhdGVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYklEQktleVBhdGgm
IGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnksIGNvbnN0IFdlYklEQlRyYW5z
YWN0aW9uJiB0cmFuc2FjdGlvbiwgV2ViRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGNyZWF0
ZUluZGV4KG5hbWUsIGtleVBhdGguc3RyaW5nKCksIHVuaXF1ZSwgbXVsdGlFbnRyeSwgdHJhbnNh
Y3Rpb24sIGVjKTsgfQorICAgIFdlYklEQkluZGV4KiBjcmVhdGVJbmRleChjb25zdCBXZWJTdHJp
bmcmIG5hbWUsIGNvbnN0IFdlYklEQktleVBhdGgmLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVu
dHJ5LCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKICAgICBX
ZWJJREJJbmRleCogaW5kZXgoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBXZWJFeGNlcHRpb25Db2Rl
Jik7CiAgICAgdm9pZCBkZWxldGVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdl
YklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkJpbmRpbmdVdGlsaXRpZXNUZXN0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQmluZGluZ1V0aWxpdGllc1Rlc3QuY3BwCmlu
ZGV4IGQ2MDI5NWE1ZmI0M2U1MzM2MWMwNzI2MTJhNWU0Mzg1OGU2NmMyOTkuLmMxMzUxODUwZDg3
OGM2MDViNTY2NGM2NzI0MDUzYjRjN2IwYjEzOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvSURCQmluZGluZ1V0aWxpdGllc1Rlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQmluZGluZ1V0aWxpdGllc1Rlc3QuY3BwCkBAIC00MSwx
MCArNDEsOCBAQCBuYW1lc3BhY2UgewogCiBQYXNzUmVmUHRyPElEQktleT4gY2hlY2tLZXlGcm9t
VmFsdWVBbmRLZXlQYXRoSW50ZXJuYWwoU2VyaWFsaXplZFNjcmlwdFZhbHVlKiB2YWx1ZSwgY29u
c3QgU3RyaW5nJiBrZXlQYXRoKQogewotICAgIFZlY3RvcjxTdHJpbmc+IGlkYktleVBhdGg7Ci0g
ICAgSURCS2V5UGF0aFBhcnNlRXJyb3IgcGFyc2VFcnJvcjsKLSAgICBJREJQYXJzZUtleVBhdGgo
a2V5UGF0aCwgaWRiS2V5UGF0aCwgcGFyc2VFcnJvcik7Ci0gICAgRVhQRUNUX0VRKElEQktleVBh
dGhQYXJzZUVycm9yTm9uZSwgcGFyc2VFcnJvcik7CisgICAgSURCS2V5UGF0aCBpZGJLZXlQYXRo
KGtleVBhdGgpOworICAgIEVYUEVDVF9UUlVFKGlkYktleVBhdGguaXNWYWxpZCgpKTsKICAgICBy
ZXR1cm4gY3JlYXRlSURCS2V5RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtleVBhdGgodmFsdWUsIGlk
YktleVBhdGgpOwogfQogCkBAIC01NiwxMCArNTQsOCBAQCB2b2lkIGNoZWNrS2V5UGF0aE51bGxW
YWx1ZShTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHZhbHVlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgp
CiAKIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBpbmplY3RLZXkoUGFzc1JlZlB0
cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBj
b25zdCBTdHJpbmcmIGtleVBhdGgpCiB7Ci0gICAgVmVjdG9yPFN0cmluZz4gaWRiS2V5UGF0aDsK
LSAgICBJREJLZXlQYXRoUGFyc2VFcnJvciBwYXJzZUVycm9yOwotICAgIElEQlBhcnNlS2V5UGF0
aChrZXlQYXRoLCBpZGJLZXlQYXRoLCBwYXJzZUVycm9yKTsKLSAgICBFWFBFQ1RfRVEoSURCS2V5
UGF0aFBhcnNlRXJyb3JOb25lLCBwYXJzZUVycm9yKTsKKyAgICBJREJLZXlQYXRoIGlkYktleVBh
dGgoa2V5UGF0aCk7CisgICAgRVhQRUNUX1RSVUUoaWRiS2V5UGF0aC5pc1ZhbGlkKCkpOwogICAg
IHJldHVybiBpbmplY3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKGtleSwgdmFsdWUsIGlkYktl
eVBhdGgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lE
QktleVBhdGhUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCS2V5UGF0
aFRlc3QuY3BwCmluZGV4IGUyZmRhZWJjMmYxNzg3ZThiNmQ4ZTc5ZTZhZjYyYTFmNzUwNWVkODQu
LjdkNjYyYzAwOWNjODYyZTUwMDYxOGRmZmRlZmU4YTI0NjU0MzQxYTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCS2V5UGF0aFRlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCS2V5UGF0aFRlc3QuY3BwCkBAIC0zNyw2ICszNywx
MCBAQCBuYW1lc3BhY2UgewogCiB2b2lkIGNoZWNrS2V5UGF0aChjb25zdCBTdHJpbmcmIGtleVBh
dGgsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBleHBlY3RlZCwgaW50IHBhcnNlckVycm9yKQogewor
ICAgIElEQktleVBhdGggaWRiS2V5UGF0aChrZXlQYXRoKTsKKyAgICBBU1NFUlRfRVEoaWRiS2V5
UGF0aC50eXBlKCksIElEQktleVBhdGg6OlN0cmluZ1R5cGUpOworICAgIEFTU0VSVF9FUShpZGJL
ZXlQYXRoLmlzVmFsaWQoKSwgKHBhcnNlckVycm9yID09IElEQktleVBhdGhQYXJzZUVycm9yTm9u
ZSkpOworCiAgICAgSURCS2V5UGF0aFBhcnNlRXJyb3IgZXJyb3I7CiAgICAgVmVjdG9yPFN0cmlu
Zz4ga2V5UGF0aEVsZW1lbnRzOwogICAgIElEQlBhcnNlS2V5UGF0aChrZXlQYXRoLCBrZXlQYXRo
RWxlbWVudHMsIGVycm9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvSURCTGV2ZWxEQkNvZGluZ1Rlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9JREJMZXZlbERCQ29kaW5nVGVzdC5jcHAKaW5kZXggZWI5OTYyZDU4MmY5ZGFjZDFjOWFjNTk4
ZDBhZjQ5MjE0MjQyYWUyMi4uOGY1YjhlZjAxY2JmZWRhYjBjMTcyNTkxMWZlNGJlNjY3ODJhODcz
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJMZXZlbERCQ29k
aW5nVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJMZXZlbERC
Q29kaW5nVGVzdC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpZiBVU0UoTEVWRUxEQikKIAogI2lu
Y2x1ZGUgIklEQktleS5oIgorI2luY2x1ZGUgIklEQktleVBhdGguaCIKICNpbmNsdWRlICJMZXZl
bERCU2xpY2UuaCIKICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KQEAgLTQxOCw2ICs0MTksMTMzIEBAIFRFU1QoSURCTGV2ZWxEQkNvZGluZ1Rlc3QsIEVu
Y29kZURlY29kZUlEQktleSkKICAgICBFWFBFQ1RfRVEoMCwgZGVjb2RlSURCS2V5KHYuZGF0YSgp
LCB2LmRhdGEoKSArIHYuc2l6ZSgpIC0gMSwgZGVjb2RlZEtleSkpOwogfQogCitURVNUKElEQkxl
dmVsREJDb2RpbmdUZXN0LCBFbmNvZGVJREJLZXlQYXRoKQoreworICAgIGNvbnN0IHVuc2lnbmVk
IGNoYXIga0lEQktleVBhdGhUeXBlQ29kZWRCeXRlMSA9IDA7CisgICAgY29uc3QgdW5zaWduZWQg
Y2hhciBrSURCS2V5UGF0aFR5cGVDb2RlZEJ5dGUyID0gMDsKKyAgICB7CisgICAgICAgIElEQktl
eVBhdGgga2V5UGF0aDsKKyAgICAgICAgRVhQRUNUX0VRKGtleVBhdGgudHlwZSgpLCBJREJLZXlQ
YXRoOjpOdWxsVHlwZSk7CisgICAgICAgIFZlY3RvcjxjaGFyPiB2ID0gZW5jb2RlSURCS2V5UGF0
aChrZXlQYXRoKTsKKyAgICAgICAgRVhQRUNUX0VRKHYuc2l6ZSgpLCAzVSk7CisgICAgICAgIEVY
UEVDVF9FUSh2WzBdLCBrSURCS2V5UGF0aFR5cGVDb2RlZEJ5dGUxKTsKKyAgICAgICAgRVhQRUNU
X0VRKHZbMV0sIGtJREJLZXlQYXRoVHlwZUNvZGVkQnl0ZTIpOworICAgICAgICBFWFBFQ1RfRVEo
dlsyXSwgSURCS2V5UGF0aDo6TnVsbFR5cGUpOworICAgIH0KKworICAgIHsKKyAgICAgICAgVmVj
dG9yPFN0cmluZz4gdGVzdENhc2VzOworICAgICAgICB0ZXN0Q2FzZXMuYXBwZW5kKCIiKTsKKyAg
ICAgICAgdGVzdENhc2VzLmFwcGVuZCgiZm9vIik7CisgICAgICAgIHRlc3RDYXNlcy5hcHBlbmQo
ImZvby5iYXIiKTsKKworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRlc3RDYXNlcy5z
aXplKCk7ICsraSkgeworICAgICAgICAgICAgSURCS2V5UGF0aCBrZXlQYXRoID0gSURCS2V5UGF0
aCh0ZXN0Q2FzZXNbaV0pOworICAgICAgICAgICAgVmVjdG9yPGNoYXI+IHYgPSBlbmNvZGVJREJL
ZXlQYXRoKGtleVBhdGgpOworICAgICAgICAgICAgRVhQRUNUX0VRKHYuc2l6ZSgpLCBlbmNvZGVT
dHJpbmdXaXRoTGVuZ3RoKHRlc3RDYXNlc1tpXSkuc2l6ZSgpICsgMyk7CisgICAgICAgICAgICBj
b25zdCBjaGFyKiBwID0gdi5kYXRhKCk7CisgICAgICAgICAgICBjb25zdCBjaGFyKiBsaW1pdCA9
IHYuZGF0YSgpICsgdi5zaXplKCk7CisgICAgICAgICAgICBFWFBFQ1RfRVEoKnArKywga0lEQktl
eVBhdGhUeXBlQ29kZWRCeXRlMSk7CisgICAgICAgICAgICBFWFBFQ1RfRVEoKnArKywga0lEQktl
eVBhdGhUeXBlQ29kZWRCeXRlMik7CisgICAgICAgICAgICBFWFBFQ1RfRVEoKnArKywgSURCS2V5
UGF0aDo6U3RyaW5nVHlwZSk7CisgICAgICAgICAgICBTdHJpbmcgc3RyaW5nOworICAgICAgICAg
ICAgcCA9IGRlY29kZVN0cmluZ1dpdGhMZW5ndGgocCwgbGltaXQsIHN0cmluZyk7CisgICAgICAg
ICAgICBFWFBFQ1RfRVEoc3RyaW5nLCB0ZXN0Q2FzZXNbaV0pOworICAgICAgICAgICAgRVhQRUNU
X0VRKHAsIGxpbWl0KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHsKKyAgICAgICAgVmVjdG9y
PFN0cmluZz4gdGVzdENhc2U7CisgICAgICAgIHRlc3RDYXNlLmFwcGVuZCgiIik7CisgICAgICAg
IHRlc3RDYXNlLmFwcGVuZCgiZm9vIik7CisgICAgICAgIHRlc3RDYXNlLmFwcGVuZCgiZm9vLmJh
ciIpOworCisgICAgICAgIElEQktleVBhdGgga2V5UGF0aCh0ZXN0Q2FzZSk7CisgICAgICAgIEVY
UEVDVF9FUShrZXlQYXRoLnR5cGUoKSwgSURCS2V5UGF0aDo6QXJyYXlUeXBlKTsKKyAgICAgICAg
VmVjdG9yPGNoYXI+IHYgPSBlbmNvZGVJREJLZXlQYXRoKGtleVBhdGgpOworICAgICAgICBjb25z
dCBjaGFyKiBwID0gdi5kYXRhKCk7CisgICAgICAgIGNvbnN0IGNoYXIqIGxpbWl0ID0gdi5kYXRh
KCkgKyB2LnNpemUoKTsKKyAgICAgICAgRVhQRUNUX0VRKCpwKyssIGtJREJLZXlQYXRoVHlwZUNv
ZGVkQnl0ZTEpOworICAgICAgICBFWFBFQ1RfRVEoKnArKywga0lEQktleVBhdGhUeXBlQ29kZWRC
eXRlMik7CisgICAgICAgIEVYUEVDVF9FUSgqcCsrLCBJREJLZXlQYXRoOjpBcnJheVR5cGUpOwor
ICAgICAgICBpbnQ2NF90IGNvdW50OworICAgICAgICBwID0gZGVjb2RlVmFySW50KHAsIGxpbWl0
LCBjb3VudCk7CisgICAgICAgIEVYUEVDVF9FUShjb3VudCwgc3RhdGljX2Nhc3Q8aW50NjRfdD4o
dGVzdENhc2Uuc2l6ZSgpKSk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RhdGlj
X2Nhc3Q8c2l6ZV90Pihjb3VudCk7ICsraSkgeworICAgICAgICAgICAgU3RyaW5nIHN0cmluZzsK
KyAgICAgICAgICAgIHAgPSBkZWNvZGVTdHJpbmdXaXRoTGVuZ3RoKHAsIGxpbWl0LCBzdHJpbmcp
OworICAgICAgICAgICAgRVhQRUNUX0VRKHN0cmluZywgdGVzdENhc2VbaV0pOworICAgICAgICB9
CisgICAgICAgIEVYUEVDVF9FUShwLCBsaW1pdCk7CisgICAgfQorfQorCitURVNUKElEQkxldmVs
REJDb2RpbmdUZXN0LCBEZWNvZGVJREJLZXlQYXRoKQoreworICAgIGNvbnN0IHVuc2lnbmVkIGNo
YXIga0lEQktleVBhdGhUeXBlQ29kZWRCeXRlMSA9IDA7CisgICAgY29uc3QgdW5zaWduZWQgY2hh
ciBrSURCS2V5UGF0aFR5cGVDb2RlZEJ5dGUyID0gMDsKKyAgICB7CisgICAgICAgIC8vIExlZ2Fj
eSBlbmNvZGluZyBvZiBzdHJpbmcga2V5IHBhdGhzLgorICAgICAgICBWZWN0b3I8U3RyaW5nPiB0
ZXN0Q2FzZXM7CisgICAgICAgIHRlc3RDYXNlcy5hcHBlbmQoIiIpOworICAgICAgICB0ZXN0Q2Fz
ZXMuYXBwZW5kKCJmb28iKTsKKyAgICAgICAgdGVzdENhc2VzLmFwcGVuZCgiZm9vLmJhciIpOwor
CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdGVzdENhc2VzLnNpemUoKTsgKytpKSB7
CisgICAgICAgICAgICBWZWN0b3I8Y2hhcj4gdiA9IGVuY29kZVN0cmluZyh0ZXN0Q2FzZXNbaV0p
OworICAgICAgICAgICAgSURCS2V5UGF0aCBrZXlQYXRoID0gZGVjb2RlSURCS2V5UGF0aCh2LmRh
dGEoKSwgdi5kYXRhKCkgKyB2LnNpemUoKSk7CisgICAgICAgICAgICBFWFBFQ1RfRVEoa2V5UGF0
aC50eXBlKCksIElEQktleVBhdGg6OlN0cmluZ1R5cGUpOworICAgICAgICAgICAgRVhQRUNUX0VR
KHRlc3RDYXNlc1tpXSwga2V5UGF0aC5zdHJpbmcoKSk7CisgICAgICAgIH0KKyAgICB9CisgICAg
eworICAgICAgICBWZWN0b3I8Y2hhcj4gdjsKKyAgICAgICAgdi5hcHBlbmQoa0lEQktleVBhdGhU
eXBlQ29kZWRCeXRlMSk7CisgICAgICAgIHYuYXBwZW5kKGtJREJLZXlQYXRoVHlwZUNvZGVkQnl0
ZTIpOworICAgICAgICB2LmFwcGVuZChJREJLZXlQYXRoOjpOdWxsVHlwZSk7CisgICAgICAgIElE
QktleVBhdGgga2V5UGF0aCA9IGRlY29kZUlEQktleVBhdGgodi5kYXRhKCksIHYuZGF0YSgpICsg
di5zaXplKCkpOworICAgICAgICBFWFBFQ1RfRVEoa2V5UGF0aC50eXBlKCksIElEQktleVBhdGg6
Ok51bGxUeXBlKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoa2V5UGF0aC5pc051bGwoKSk7CisgICAg
fQorICAgIHsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gdGVzdENhc2VzOworICAgICAgICB0ZXN0
Q2FzZXMuYXBwZW5kKCIiKTsKKyAgICAgICAgdGVzdENhc2VzLmFwcGVuZCgiZm9vIik7CisgICAg
ICAgIHRlc3RDYXNlcy5hcHBlbmQoImZvby5iYXIiKTsKKworICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHRlc3RDYXNlcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgVmVjdG9yPGNo
YXI+IHY7CisgICAgICAgICAgICB2LmFwcGVuZChrSURCS2V5UGF0aFR5cGVDb2RlZEJ5dGUxKTsK
KyAgICAgICAgICAgIHYuYXBwZW5kKGtJREJLZXlQYXRoVHlwZUNvZGVkQnl0ZTIpOworICAgICAg
ICAgICAgdi5hcHBlbmQoSURCS2V5UGF0aDo6U3RyaW5nVHlwZSk7CisgICAgICAgICAgICB2LmFw
cGVuZChlbmNvZGVTdHJpbmdXaXRoTGVuZ3RoKHRlc3RDYXNlc1tpXSkpOworICAgICAgICAgICAg
SURCS2V5UGF0aCBrZXlQYXRoID0gZGVjb2RlSURCS2V5UGF0aCh2LmRhdGEoKSwgdi5kYXRhKCkg
KyB2LnNpemUoKSk7CisgICAgICAgICAgICBFWFBFQ1RfRVEoa2V5UGF0aC50eXBlKCksIElEQktl
eVBhdGg6OlN0cmluZ1R5cGUpOworICAgICAgICAgICAgRVhQRUNUX0VRKHRlc3RDYXNlc1tpXSwg
a2V5UGF0aC5zdHJpbmcoKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgeworICAgICAgICBWZWN0
b3I8U3RyaW5nPiB0ZXN0Q2FzZTsKKyAgICAgICAgdGVzdENhc2UuYXBwZW5kKCIiKTsKKyAgICAg
ICAgdGVzdENhc2UuYXBwZW5kKCJmb28iKTsKKyAgICAgICAgdGVzdENhc2UuYXBwZW5kKCJmb28u
YmFyIik7CisKKyAgICAgICAgVmVjdG9yPGNoYXI+IHY7CisgICAgICAgIHYuYXBwZW5kKGtJREJL
ZXlQYXRoVHlwZUNvZGVkQnl0ZTEpOworICAgICAgICB2LmFwcGVuZChrSURCS2V5UGF0aFR5cGVD
b2RlZEJ5dGUyKTsKKyAgICAgICAgdi5hcHBlbmQoSURCS2V5UGF0aDo6QXJyYXlUeXBlKTsKKyAg
ICAgICAgdi5hcHBlbmQoZW5jb2RlVmFySW50KHRlc3RDYXNlLnNpemUoKSkpOworICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHRlc3RDYXNlLnNpemUoKTsgKytpKQorICAgICAgICAgICAg
di5hcHBlbmQoZW5jb2RlU3RyaW5nV2l0aExlbmd0aCh0ZXN0Q2FzZVtpXSkpOworICAgICAgICBJ
REJLZXlQYXRoIGtleVBhdGggPSBkZWNvZGVJREJLZXlQYXRoKHYuZGF0YSgpLCB2LmRhdGEoKSAr
IHYuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKGtleVBhdGgudHlwZSgpLCBJREJLZXlQYXRo
OjpBcnJheVR5cGUpOworICAgICAgICBFWFBFQ1RfRVEoa2V5UGF0aC5hcnJheSgpLnNpemUoKSwg
dGVzdENhc2Uuc2l6ZSgpKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0ZXN0Q2Fz
ZS5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIEVYUEVDVF9FUShrZXlQYXRoLmFycmF5KClbaV0s
IHRlc3RDYXNlW2ldKTsKKyAgICB9Cit9CisKIFRFU1QoSURCTGV2ZWxEQkNvZGluZ1Rlc3QsIEV4
dHJhY3RBbmRDb21wYXJlSURCS2V5cykKIHsKICAgICBWZWN0b3I8UmVmUHRyPElEQktleT4gPiBr
ZXlzOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IGI1ZjkzM2E2ZmFjNDE1MjVlMDIwNjQ0YTkyZjFkNzE1ODVlMDNmMzkuLmJm
NGQwYjk5ZWVhOTYwNDg1OWM1ZmQ3ODMxYmQwYzRkMmUwMTE5NWUgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MyBAQAorMjAxMi0wNS0wNyAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIEluZGV4ZWREQjogU3RvcmUga2V5IHBhdGhzIGluIElEQktleVBhdGggdHlwZSBpbnN0
ZWFkIG9mIFN0cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODUyOTgKKworICAgICAgICBSZXZpZXdlZCBieSBUb255IENoYW5nLCBLZW50YXJvIEhh
cmEgYW5kIEphbWVzIFJvYmluc29uLgorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIva2V5
cGF0aC1iYXNpY3MtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9rZXlwYXRoLWJhc2ljcy5qczoKKwogMjAxMi0wNS0yMSAgWmFuIERvYmVyc2VrICA8
emFuZG9iZXJzZWtAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgR1RLIGdhcmRlbmlu
ZywgYWRkIGV4cGVjdGF0aW9ucyBmb3IgYW4gU1ZHIHRlc3QgZm9yIGhpdApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5cGF0aC1iYXNpY3MtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5cGF0aC1iYXNpY3MtZXhwZWN0ZWQu
dHh0CmluZGV4IGIzMDgxZDI4NWQ0MjRiN2JmZmVkMDZiZTVkZGUzZTY2MmRhYjQ4MTEuLjg2Mjk0
NjM4OTRhODE4Y2U3OWYwN2IxOWQwNTAxNzg0MzJmZjFhY2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgtYmFzaWNzLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWJhc2ljcy1leHBlY3RlZC50eHQK
QEAgLTksNDAgKzksMzMgQEAgaW5kZXhlZERCLm9wZW4obmFtZSkKIGRiID0gZXZlbnQudGFyZ2V0
LnJlc3VsdAogcmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKQogRGVsZXRlZCBhbGwgb2JqZWN0
IHN0b3Jlcy4KLWdsb2JhbEtleVBhdGggPSAnbnVsbCcKLWRiLmNyZWF0ZU9iamVjdFN0b3JlKCdu
YW1lJywge2tleVBhdGg6IGdsb2JhbEtleVBhdGh9KQotRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jl
cy4KLWdsb2JhbEtleVBhdGggPSAndW5kZWZpbmVkJwotZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ25h
bWUnLCB7a2V5UGF0aDogZ2xvYmFsS2V5UGF0aH0pCi1EZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVz
LgotZ2xvYmFsS2V5UGF0aCA9ICcnCi1kYi5jcmVhdGVPYmplY3RTdG9yZSgnbmFtZScsIHtrZXlQ
YXRoOiBnbG9iYWxLZXlQYXRofSkKLURlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCi1nbG9iYWxL
ZXlQYXRoID0gJ2ZvbycKLWRiLmNyZWF0ZU9iamVjdFN0b3JlKCduYW1lJywge2tleVBhdGg6IGds
b2JhbEtleVBhdGh9KQotRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KLWdsb2JhbEtleVBhdGgg
PSAnZm9vLmJhci5iYXonCi1kYi5jcmVhdGVPYmplY3RTdG9yZSgnbmFtZScsIHtrZXlQYXRoOiBn
bG9iYWxLZXlQYXRofSkKLURlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCi1nbG9iYWxLZXlQYXRo
ID0gJ251bGwnCi1zdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKQotc3Rv
cmUuY3JlYXRlSW5kZXgoJ25hbWUnLCBnbG9iYWxLZXlQYXRoKQotRGVsZXRlZCBhbGwgb2JqZWN0
IHN0b3Jlcy4KLWdsb2JhbEtleVBhdGggPSAndW5kZWZpbmVkJwotc3RvcmUgPSBkYi5jcmVhdGVP
YmplY3RTdG9yZSgnc3RvcmVOYW1lJykKLXN0b3JlLmNyZWF0ZUluZGV4KCduYW1lJywgZ2xvYmFs
S2V5UGF0aCkKLURlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCi1nbG9iYWxLZXlQYXRoID0gJycK
LXN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpCi1zdG9yZS5jcmVhdGVJ
bmRleCgnbmFtZScsIGdsb2JhbEtleVBhdGgpCi1EZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgot
Z2xvYmFsS2V5UGF0aCA9ICdmb28nCi1zdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9y
ZU5hbWUnKQotc3RvcmUuY3JlYXRlSW5kZXgoJ25hbWUnLCBnbG9iYWxLZXlQYXRoKQotRGVsZXRl
ZCBhbGwgb2JqZWN0IHN0b3Jlcy4KLWdsb2JhbEtleVBhdGggPSAnZm9vLmJhci5iYXonCi1zdG9y
ZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKQotc3RvcmUuY3JlYXRlSW5kZXgo
J25hbWUnLCBnbG9iYWxLZXlQYXRoKQorc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnbmFt
ZScpCitQQVNTIHN0b3JlLmtleVBhdGggaXMgbnVsbAorRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jl
cy4KK3N0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ25hbWUnLCB7a2V5UGF0aDogbnVsbH0p
CitQQVNTIHN0b3JlLmtleVBhdGggaXMgbnVsbAoraW5kZXggPSBzdG9yZS5jcmVhdGVJbmRleCgn
bmFtZScsIG51bGwpCitQQVNTIGluZGV4LmtleVBhdGggaXMgJ251bGwnCitEZWxldGVkIGFsbCBv
YmplY3Qgc3RvcmVzLgorc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnbmFtZScsIHtrZXlQ
YXRoOiB1bmRlZmluZWR9KQorUEFTUyBzdG9yZS5rZXlQYXRoIGlzIG51bGwKK2luZGV4ID0gc3Rv
cmUuY3JlYXRlSW5kZXgoJ25hbWUnLCB1bmRlZmluZWQpCitQQVNTIGluZGV4LmtleVBhdGggaXMg
J3VuZGVmaW5lZCcKK0RlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCitzdG9yZSA9IGRiLmNyZWF0
ZU9iamVjdFN0b3JlKCduYW1lJywge2tleVBhdGg6ICcnfSkKK1BBU1Mgc3RvcmUua2V5UGF0aCBp
cyAnJworaW5kZXggPSBzdG9yZS5jcmVhdGVJbmRleCgnbmFtZScsICcnKQorUEFTUyBpbmRleC5r
ZXlQYXRoIGlzICcnCitEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgorc3RvcmUgPSBkYi5jcmVh
dGVPYmplY3RTdG9yZSgnbmFtZScsIHtrZXlQYXRoOiAnZm9vJ30pCitQQVNTIHN0b3JlLmtleVBh
dGggaXMgJ2ZvbycKK2luZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ25hbWUnLCAnZm9vJykKK1BB
U1MgaW5kZXgua2V5UGF0aCBpcyAnZm9vJworRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KK3N0
b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ25hbWUnLCB7a2V5UGF0aDogJ2Zvby5iYXIuYmF6
J30pCitQQVNTIHN0b3JlLmtleVBhdGggaXMgJ2Zvby5iYXIuYmF6JworaW5kZXggPSBzdG9yZS5j
cmVhdGVJbmRleCgnbmFtZScsICdmb28uYmFyLmJheicpCitQQVNTIGluZGV4LmtleVBhdGggaXMg
J2Zvby5iYXIuYmF6JwogRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KIERlbGV0ZWQgYWxsIG9i
amVjdCBzdG9yZXMuCiBnbG9iYWxLZXlQYXRoID0gJ1tdJwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleXBhdGgtYmFzaWNzLmpzIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleXBhdGgtYmFzaWNzLmpzCmluZGV4
IGIyNWM3MzFlOGE1ODJhYWY1N2U2NDAwOGEwZjVlNTljMmZjMzU5YTEuLmU2YjI2MDY0YzEwMzAy
NDYxNTJhYWY3YzE3NWU1MTZmNDQ0MTM4NTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9rZXlwYXRoLWJhc2ljcy5qcworKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5cGF0aC1iYXNpY3MuanMKQEAgLTI3LDI4
ICsyNywyMyBAQCBmdW5jdGlvbiB0ZXN0VmFsaWRLZXlQYXRocygpCiB7CiAgICAgZGVsZXRlQWxs
T2JqZWN0U3RvcmVzKGRiKTsKIAotICAgIHRlc3RLZXlQYXRocyA9IFtudWxsLCB1bmRlZmluZWQs
ICcnXTsKLSAgICB0ZXN0S2V5UGF0aHMuZm9yRWFjaChmdW5jdGlvbiAoa2V5UGF0aCkgewotICAg
ICAgICBnbG9iYWxLZXlQYXRoID0ga2V5UGF0aDsKLSAgICAgICAgZGVidWcoImdsb2JhbEtleVBh
dGggPSAnIiArIGdsb2JhbEtleVBhdGggKyAiJyIpOwotICAgICAgICBldmFsQW5kTG9nKCJkYi5j
cmVhdGVPYmplY3RTdG9yZSgnbmFtZScsIHtrZXlQYXRoOiBnbG9iYWxLZXlQYXRofSkiKTsKLSAg
ICAgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLSAgICB9KTsKKyAgICBldmFsQW5kTG9n
KCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCduYW1lJykiKTsKKyAgICBzaG91bGRCZU51
bGwoInN0b3JlLmtleVBhdGgiKTsKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwogCi0g
ICAgdGVzdEtleVBhdGhzID0gWydmb28nLCAnZm9vLmJhci5iYXonXTsKLSAgICB0ZXN0S2V5UGF0
aHMuZm9yRWFjaChmdW5jdGlvbiAoa2V5UGF0aCkgewotICAgICAgICBnbG9iYWxLZXlQYXRoID0g
a2V5UGF0aDsKLSAgICAgICAgZGVidWcoImdsb2JhbEtleVBhdGggPSAnIiArIGdsb2JhbEtleVBh
dGggKyAiJyIpOwotICAgICAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnbmFt
ZScsIHtrZXlQYXRoOiBnbG9iYWxLZXlQYXRofSkiKTsKLSAgICAgICAgZGVsZXRlQWxsT2JqZWN0
U3RvcmVzKGRiKTsKLSAgICB9KTsKKyAgICB0ZXN0S2V5UGF0aHMgPSBbCisgICAgICAgIHsga2V5
UGF0aDogIm51bGwiLCBzdG9yZUV4cGVjdGVkOiAibnVsbCIsIGluZGV4RXhwZWN0ZWQ6ICInbnVs
bCciIH0sCisgICAgICAgIHsga2V5UGF0aDogInVuZGVmaW5lZCIsIHN0b3JlRXhwZWN0ZWQ6ICJu
dWxsIiwgaW5kZXhFeHBlY3RlZDogIid1bmRlZmluZWQnIiB9LAorICAgICAgICB7IGtleVBhdGg6
ICInJyIsIHN0b3JlRXhwZWN0ZWQ6ICInJyIsIGluZGV4RXhwZWN0ZWQ6ICInJyIgfSwKKyAgICAg
ICAgeyBrZXlQYXRoOiAiJ2ZvbyciLCBzdG9yZUV4cGVjdGVkOiAiJ2ZvbyciLCBpbmRleEV4cGVj
dGVkOiAiJ2ZvbyciIH0sCisgICAgICAgIHsga2V5UGF0aDogIidmb28uYmFyLmJheiciLCBzdG9y
ZUV4cGVjdGVkOiAiJ2Zvby5iYXIuYmF6JyIsIGluZGV4RXhwZWN0ZWQ6ICInZm9vLmJhci5iYXon
IiB9CisgICAgXTsKIAotICAgIHRlc3RLZXlQYXRocyA9IFtudWxsLCB1bmRlZmluZWQsICcnLCAn
Zm9vJywgJ2Zvby5iYXIuYmF6J107Ci0gICAgdGVzdEtleVBhdGhzLmZvckVhY2goZnVuY3Rpb24g
KGtleVBhdGgpIHsKLSAgICAgICAgZ2xvYmFsS2V5UGF0aCA9IGtleVBhdGg7Ci0gICAgICAgIGRl
YnVnKCJnbG9iYWxLZXlQYXRoID0gJyIgKyBnbG9iYWxLZXlQYXRoICsgIiciKTsKLSAgICAgICAg
c3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5h
bWUnKSIpOwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgnbmFtZScsIGds
b2JhbEtleVBhdGgpIik7CisgICAgdGVzdEtleVBhdGhzLmZvckVhY2goZnVuY3Rpb24gKHRlc3RD
YXNlKSB7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUo
J25hbWUnLCB7a2V5UGF0aDogIiArIHRlc3RDYXNlLmtleVBhdGggKyAifSkiKTsKKyAgICAgICAg
c2hvdWxkQmUoInN0b3JlLmtleVBhdGgiLCB0ZXN0Q2FzZS5zdG9yZUV4cGVjdGVkKTsKKyAgICAg
ICAgZXZhbEFuZExvZygiaW5kZXggPSBzdG9yZS5jcmVhdGVJbmRleCgnbmFtZScsICIgKyB0ZXN0
Q2FzZS5rZXlQYXRoICsgIikiKTsKKyAgICAgICAgc2hvdWxkQmUoImluZGV4LmtleVBhdGgiLCB0
ZXN0Q2FzZS5pbmRleEV4cGVjdGVkKTsKICAgICAgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRi
KTsKICAgICB9KTsKIApAQCAtODcsNCArODIsNCBAQCBmdW5jdGlvbiB0ZXN0SW52YWxpZEtleVBh
dGhzKCkKICAgICBmaW5pc2hKU1Rlc3QoKTsKIH0KIAotdGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKK3Rlc3QoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>