<?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>84207</bug_id>
          
          <creation_ts>2012-04-17 16:21:53 -0700</creation_ts>
          <short_desc>IndexedDB: Support Array-type key paths</short_desc>
          <delta_ts>2012-05-22 13:07:43 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>85298</dependson>
          <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>tony</cc>
    
    <cc>vsevik</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>604454</commentid>
    <comment_count>0</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-04-17 16:21:53 -0700</bug_when>
    <thetext>The Indexed DB spec allows key paths for object stores and indexes to be either strings or Arrays of strings. When evaluating a key path which is an Array against object to produce a key, the result is a key which is an Array of the evaluation of the strings as key paths against the object. (This is most useful when creating indexes, as you can can create a compound key.) Some restrictions apply: Array-type key paths cannot be used for object stores with key generators (i.e. autoIncrement: true).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609258</commentid>
    <comment_count>1</comment_count>
      <attachid>138691</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-04-24 16:55:54 -0700</bug_when>
    <thetext>Created attachment 138691
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609264</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-24 16:58:29 -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>609310</commentid>
    <comment_count>3</comment_count>
      <attachid>138691</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-04-24 17:42:39 -0700</bug_when>
    <thetext>Comment on attachment 138691
Patch

Whoops, this should have applied to a different bug. The ChangeLog confused webkit-patch upload.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613017</commentid>
    <comment_count>4</comment_count>
      <attachid>139532</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-04-30 15:39:53 -0700</bug_when>
    <thetext>Created attachment 139532
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613018</commentid>
    <comment_count>5</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-04-30 15:40:47 -0700</bug_when>
    <thetext>dgrogan@, alecflett@ - can you do an initial pass on this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613055</commentid>
    <comment_count>6</comment_count>
      <attachid>139532</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-30 16:39:03 -0700</bug_when>
    <thetext>Comment on attachment 139532
Patch

Attachment 139532 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/12589380</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613060</commentid>
    <comment_count>7</comment_count>
      <attachid>139532</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-04-30 16:44:17 -0700</bug_when>
    <thetext>Comment on attachment 139532
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        String for holding/conveying key paths. Implements spec logic for evaluating

Is it possible to split the string-&gt;IDBKeyPath conversion from the array-keypath logic so that this patch isn&apos;t as big?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613083</commentid>
    <comment_count>8</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-04-30 17:19:16 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 139532 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=139532&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        String for holding/conveying key paths. Implements spec logic for evaluating
&gt; 
&gt; Is it possible to split the string-&gt;IDBKeyPath conversion from the array-keypath logic so that this patch isn&apos;t as big?

Yeah... it&apos;s not a huge win in reducing complexity - mostly just drops the tests. (The actual logic change in this whole less than 20 lines!). Looks like the string-&gt;IDBKeyPath conversion patch would be about 100k (vs. the current 137k). Stay tuned.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629755</commentid>
    <comment_count>9</comment_count>
      <attachid>143147</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-05-21 17:31:21 -0700</bug_when>
    <thetext>Created attachment 143147
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629765</commentid>
    <comment_count>10</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-05-21 17:37:56 -0700</bug_when>
    <thetext>Okie dokie, this is the actual functional change described in the spec.

dgrogan@ - can you take a look?

haraken@ - binding/v8 changes should be non-controversial. There&apos;s a FIXME in IDBObjectStore.cpp to work around http://webkit.org/b/84217 - it&apos;s definitely non-optimal, but I don&apos;t want to tackle the whole WebIDL overloading spec yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629787</commentid>
    <comment_count>11</comment_count>
      <attachid>143147</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-05-21 17:53:11 -0700</bug_when>
    <thetext>Comment on attachment 143147
Patch

r+ for the V8 change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>630533</commentid>
    <comment_count>12</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-05-22 10:44:45 -0700</bug_when>
    <thetext>tony@ - r? on the overall patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>630609</commentid>
    <comment_count>13</comment_count>
      <attachid>143147</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-22 11:47:10 -0700</bug_when>
    <thetext>Comment on attachment 143147
Patch

Clearing flags on attachment: 143147

Committed r118011: &lt;http://trac.webkit.org/changeset/118011&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>630610</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-22 11:47:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>630667</commentid>
    <comment_count>15</comment_count>
      <attachid>143147</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-05-22 12:39:48 -0700</bug_when>
    <thetext>Comment on attachment 143147
Patch

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

&gt; LayoutTests/storage/indexeddb/resources/keypath-arrays.js:34
&gt; +        evalAndExpectException(&quot;db.createObjectStore(&apos;store-with-generator&apos;, {keyPath: [&apos;a&apos;, &apos;b&apos;], autoIncrement: true})&quot;, &quot;DOMException.INVALID_ACCESS_ERR&quot;);

We can&apos;t support this because we can&apos;t use an array as a property, i.e. we can&apos;t assign obj.[1,2] = generatedKey ?

&gt; LayoutTests/storage/indexeddb/resources/keypath-arrays.js:35
&gt; +        evalAndExpectException(&quot;store.createIndex(&apos;index-multientry&apos;, [&apos;e&apos;, &apos;f&apos;], {multiEntry: true})&quot;, &quot;DOMException.NOT_SUPPORTED_ERR&quot;);

We can&apos;t do array keypaths and multiEntry==true because this would be meaningless?

index = store.createIndex(&apos;index-multientry&apos;, [&apos;e&apos;, &apos;f&apos;], {multiEntry: true});
store.put({a: 1, b: 2, c: 3, d: 4, e: 5, f: [6, 7]});</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>630669</commentid>
    <comment_count>16</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-05-22 12:43:59 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 143147 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=143147&amp;action=review
&gt; 
&gt; &gt; LayoutTests/storage/indexeddb/resources/keypath-arrays.js:34
&gt; &gt; +        evalAndExpectException(&quot;db.createObjectStore(&apos;store-with-generator&apos;, {keyPath: [&apos;a&apos;, &apos;b&apos;], autoIncrement: true})&quot;, &quot;DOMException.INVALID_ACCESS_ERR&quot;);
&gt; 
&gt; We can&apos;t support this because we can&apos;t use an array as a property, i.e. we can&apos;t assign obj.[1,2] = generatedKey ?

Correct. This was raised as a spec issue and the spec was updated to explicitly forbid this:

&quot;If the optionalParameters parameter is specified, and autoIncrement is set to true, and the keyPath parameter is specified to the empty string, or specified to an Array, this function must throw a InvalidAccessError exception.&quot;

&gt; &gt; LayoutTests/storage/indexeddb/resources/keypath-arrays.js:35
&gt; &gt; +        evalAndExpectException(&quot;store.createIndex(&apos;index-multientry&apos;, [&apos;e&apos;, &apos;f&apos;], {multiEntry: true})&quot;, &quot;DOMException.NOT_SUPPORTED_ERR&quot;);
&gt; 
&gt; We can&apos;t do array keypaths and multiEntry==true because this would be meaningless?
&gt; 
&gt; index = store.createIndex(&apos;index-multientry&apos;, [&apos;e&apos;, &apos;f&apos;], {multiEntry: true});
&gt; store.put({a: 1, b: 2, c: 3, d: 4, e: 5, f: [6, 7]});

The spec says: &quot;If keyPath is and [sic] Array and the multiEntry property in the optionalParameters is true, then a DOMException of type NotSupportedError must be thrown.&quot;

I actually find this restriction a bit odd, since it logically could work - the array-type keypath would generate an array-type key, which if multiEntry were true would generate multiple index entries.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>630672</commentid>
    <comment_count>17</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-05-22 12:53:06 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #15)
&gt; &gt; (From update of attachment 143147 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=143147&amp;action=review
&gt; &gt; &gt; LayoutTests/storage/indexeddb/resources/keypath-arrays.js:35
&gt; &gt; &gt; +        evalAndExpectException(&quot;store.createIndex(&apos;index-multientry&apos;, [&apos;e&apos;, &apos;f&apos;], {multiEntry: true})&quot;, &quot;DOMException.NOT_SUPPORTED_ERR&quot;);
&gt; &gt; 
&gt; &gt; We can&apos;t do array keypaths and multiEntry==true because this would be meaningless?
&gt; &gt; 
&gt; &gt; index = store.createIndex(&apos;index-multientry&apos;, [&apos;e&apos;, &apos;f&apos;], {multiEntry: true});
&gt; &gt; store.put({a: 1, b: 2, c: 3, d: 4, e: 5, f: [6, 7]});
&gt; 
&gt; The spec says: &quot;If keyPath is and [sic] Array and the multiEntry property in the optionalParameters is true, then a DOMException of type NotSupportedError must be thrown.&quot;
&gt; 
&gt; I actually find this restriction a bit odd, since it logically could work - the array-type keypath would generate an array-type key, which if multiEntry were true would generate multiple index entries.

What keys would be in the index in the example from my last comment?  [5,6] and [5,7]?  That could get out of control, but could also be useful, if the specified keypaths yielded long arrays.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>630684</commentid>
    <comment_count>18</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-05-22 13:07:43 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; &gt; &gt; index = store.createIndex(&apos;index-multientry&apos;, [&apos;e&apos;, &apos;f&apos;], {multiEntry: true});
&gt; &gt; &gt; store.put({a: 1, b: 2, c: 3, d: 4, e: 5, f: [6, 7]});
&gt; 
&gt; What keys would be in the index in the example from my last comment?  [5,6] and [5,7]?  That could get out of control, but could also be useful, if the specified keypaths yielded long arrays.

Following the spec for evaluating the key path:

input key path: [&apos;e&apos;, &apos;f&apos;]
input value: {a: 1, b: 2, c: 3, d: 4, e: 5, f: [6, 7]}
output key: [5, [6, 7]]

... which would yield index entries for:
index key: 5
index key: [6, 7]

So no explosion, but not necessarily all that useful.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>138691</attachid>
            <date>2012-04-24 16:55:54 -0700</date>
            <delta_ts>2012-04-24 17:42:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84207-20120424165553.patch</filename>
            <type>text/plain</type>
            <size>21990</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1MDYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDlhYWYxZWZhNmYzMGY5MGE0Y2M0YmU3ZTc1ZmFkYTQ3MTkyMGEzYzkuLmIxMTdiNjcyN2U0MDgy
MmQyNGUwMjM4ZWIzNWZmZGE5YzY2Y2Y5NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNjAgQEAKKzIwMTItMDQtMjMgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIEluZGV4ZWREQjogVXNlIFdlYklEQktleVBhdGgg
dHlwZSBmb3Iga2V5IHBhdGhzIGluIFdlYktpdCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0NjMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViSURCS2V5UGF0aCB3YXMgcHJldmlvdXNseSBhIHV0
aWxpdHkgY2xhc3MgZm9yIHBhcnNpbmcga2V5IHBhdGhzIGludG8gY29tcG9uZW50cywKKyAgICAg
ICAgYnV0IHRoZSBBUEkgZXhwb3NlZCBrZXkgcGF0aHMgb25seSBhcyBudWxsYWJsZSBzdHJpbmdz
LiBUbyBzdXBwb3J0IGFycmF5LXR5cGUga2V5cGF0aHMsCisgICAgICAgIFdlYklEQktleVBhdGgg
YmVjb21lcyBhIHZhbHVlIGNsYXNzIHdpdGggdHlwZSBmbGFncy4gRm9yIGxhbmRpbmcsIHNldmVy
YWwgbGVnYWN5IG1ldGhvZHMKKyAgICAgICAgYXJlIHJldGFpbmVkIGJ1dCB3aWxsIGJlIGNsZWFu
ZWQgdXAgYWZ0ZXIgYWxsIGNhbGxlcnMgaGF2ZSBiZWVuIHVwZGF0ZWQsIHRyYWNrZWQgYXM6Cisg
ICAgICAgIGh0dHA6Ly93ZWJraXQub3JnL2IvODQyMDcKKworICAgICAgICAqIHB1YmxpYy9XZWJJ
REJEYXRhYmFzZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZTo6Y3JlYXRlT2Jq
ZWN0U3RvcmUpOiBBZGQgV2ViSURCS2V5UGF0aCBvdmVybG9hZDsgV2ViU3RyaW5nIG92ZXJsb2Fk
IGRlbGVnYXRlcyBzbyBpbXBsZW1lbnRlcnMgY2FuIHN3aXRjaC4KKyAgICAgICAgKiBwdWJsaWMv
V2ViSURCSW5kZXguaDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCSW5kZXg6OmtleVBhdGgpOiBD
YWxscyBrZXlQYXRoU3RyaW5nIGlmIG5vdCBvdmVycmlkZGVuLgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJJbmRleDo6a2V5UGF0aFN0cmluZyk6IENvbW1lbnQgY2hhbmdlLgorICAgICAgICAqIHB1
YmxpYy9XZWJJREJLZXlQYXRoLmg6CisgICAgICAgIChXZWJLaXQ6OldlYklEQktleVBhdGg6OmNy
ZWF0ZSk6IE92ZXJsb2FkIGFkZGVkIGZvciBjcmVhdGluZyBhcnJheS10eXBlIGtleSBwYXRocy4K
KyAgICAgICAgKFdlYktpdDo6V2ViSURCS2V5UGF0aDo6YXJyYXkpOiBBY2Nlc3NvciBmb3IgYXJy
YXktdHlwZSBrZXkgcGF0aHMuCisgICAgICAgIChXZWJLaXQ6OldlYklEQktleVBhdGg6Om9wZXJh
dG9yIGNvbnN0IFdlYlN0cmluZyApOiBUZW1wb3JhcnksIGZvciBjb21wYXRpYmlsaXR5LgorICAg
ICAgICAqIHB1YmxpYy9XZWJJREJPYmplY3RTdG9yZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
REJPYmplY3RTdG9yZTo6a2V5UGF0aCk6IENhbGxzIGtleVBhdGhTdHJpbmcgaWYgbm90IG92ZXJy
aWRkZW4uCisgICAgICAgIChXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlOjprZXlQYXRoU3RyaW5n
KTogQ29tbWVudCBjaGFuZ2UuCisgICAgICAgIChXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlOjpj
cmVhdGVJbmRleCk6IEFkZCBXZWJJREJLZXlQYXRoIG92ZXJsb2FkOyBXZWJTdHJpbmcgb3Zlcmxv
YWQgZGVsZWdhdGVzIHNvIGltcGxlbWVudGVycyBjYW4gc3dpdGNoLgorICAgICAgICAqIHB1Ymxp
Yy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaDoKKyAgICAgICAgKFdlYktpdFBsYXRm
b3JtU3VwcG9ydCk6IFdlYklEQktleVBhdGggb3ZlcmxvYWRzIGZvciB0aGVzZSBtZXRob2RzIGFk
ZGVkLCBkZWxlZ2F0ZSB0byBXZWJTdHJpbmcgdmVyc2lvbiB1bnRpbCBpbXBsZW1lbnRlcnMgYXJl
IHVwZGF0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYktpdFBsYXRmb3JtU3VwcG9ydDo6Y3JlYXRl
SURCS2V5c0Zyb21TZXJpYWxpemVkVmFsdWVzQW5kS2V5UGF0aCk6CisgICAgICAgIChXZWJLaXQ6
OldlYktpdFBsYXRmb3JtU3VwcG9ydDo6aW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZSk6
CisgICAgICAgICogc3JjL0lEQkluZGV4QmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6SURCSW5kZXhCYWNrZW5kUHJveHk6OmtleVBhdGgpOiBSZXR1cm5zIHRoZSBzdHJpbmcgdmVy
c2lvbiB1bnRpbCBXZWJDb3JlIGlzIHVwZGF0ZWQuCisgICAgICAgICogc3JjL0lEQk9iamVjdFN0
b3JlQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SURCT2JqZWN0U3RvcmVCYWNr
ZW5kUHJveHk6OmtleVBhdGgpOiBSZXR1cm5zIHRoZSBzdHJpbmcgdmVyc2lvbiB1bnRpbCBXZWJD
b3JlIGlzIHVwZGF0ZWQuCisgICAgICAgICogc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oOgorICAg
ICAgICAoV2ViSURCRGF0YWJhc2VJbXBsKTogQWRkIGNyZWF0ZU9iamVjdFN0b3JlIG92ZXJsb2Fk
IGZvciBXZWJJREJLZXlQYXRoIHR5cGUsIGRlbGVnYXRlcyB0byBXZWJTdHJpbmcgdmVyc2lvbiB1
bnRpbCBjYWxsZXJzIGFyZSB1cGRhdGVkLgorICAgICAgICAqIHNyYy9XZWJJREJJbmRleEltcGwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJJbmRleEltcGw6OmtleVBhdGgpOiBJbXBsZW1l
bnRzIHRoZSBuZXcgV2ViSURCS2V5UGF0aCByZXR1cm4gdHlwZS4KKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgICogc3JjL1dlYklEQkluZGV4SW1wbC5oOgorICAgICAgICAoV2ViSURCSW5kZXhJ
bXBsKTogSW1wbGVtZW50cyB0aGUgbmV3IFdlYklEQktleVBhdGggcmV0dXJuIHR5cGUuCisgICAg
ICAgICogc3JjL1dlYklEQktleVBhdGguY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJLZXlQ
YXRoOjpjcmVhdGUpOiBTdXBwb3J0IG51bGwga2V5IHBhdGggdHlwZXMuCisgICAgICAgIChXZWJL
aXQ6OldlYklEQktleVBhdGg6OmNyZWF0ZU51bGwpOiBOZXcgQVBJLgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCS2V5UGF0aDo6aXNWYWxpZCk6IE5ldyBBUEkuCisg
ICAgICAgIChXZWJLaXQ6OldlYklEQktleVBhdGg6OnR5cGUpOiBOZXcgQVBJLgorICAgICAgICAo
V2ViS2l0OjpXZWJJREJLZXlQYXRoOjpzdHJpbmcpOiBOZXcgQVBJICh2YWx1ZSBhY2Nlc3Nvciku
CisgICAgICAgIChXZWJLaXQ6OldlYklEQktleVBhdGg6OldlYklEQktleVBhdGgpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJREJLZXlQYXRoOjphc3NpZ24pOiBUaGlzIEFQSSB3aWxsIGJlIHJlbW92
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYklEQktleVBhdGg6Om9wZXJhdG9yIGNvbnN0IFdURjo6
VmVjdG9yPFdURjo6U3RyaW5nLCAwPiYpOiBFbnN1cmUgaXQgaXMgbm9uLW51bGwgLSBvbmx5IHVz
ZWQgaW4gY29weSBjb25zdHJ1Y3RvciB3aGljaCBndWFyZHMgYWdhaW5zdCB0aGlzLgorICAgICAg
ICAqIHNyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
REJPYmplY3RTdG9yZUltcGw6OmtleVBhdGgpOiBJbXBsZW1lbnQgdGhlIG5ldyBXZWJJREJLZXlQ
YXRoIHJldHVybiB0eXBlLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMvV2ViSURC
T2JqZWN0U3RvcmVJbXBsLmg6CisgICAgICAgIChXZWJJREJPYmplY3RTdG9yZUltcGwpOiBBZGQg
Y3JlYXRlSW5kZXggb3ZlcmxvYWQgZm9yIFdlYklEQktleVBhdGggdHlwZSwgZGVsZWdhdGVzIHRv
IFdlYlN0cmluZyB2ZXJzaW9uIHVudGlsIGNhbGxlcnMgYXJlIHVwZGF0ZWQuCisKIDIwMTItMDQt
MjQgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQuICBSb2xsZWQgREVQUy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJJREJEYXRhYmFzZS5oCmluZGV4IGZmOGUxY2E0YTk1YzI4NmQyNDc3MzI1Y2VlNmRm
ZmZhODJhMTYxNDMuLmY1M2IwMmUzOWE3YjcyZmFlZGZiNWZiYzBmMDRlOGZhMzBkYTMxMTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2UuaApAQCAt
MjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiV2ViRE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUg
IldlYkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJXZWJJREJLZXlQYXRoLmgiCiAjaW5jbHVk
ZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTgsNyAr
NTksMTMgQEAgcHVibGljOgogICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgIHJldHVybiBXZWJET01TdHJpbmdMaXN0KCk7CiAgICAgfQotICAgIHZpcnR1YWwgV2Vi
SURCT2JqZWN0U3RvcmUqIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwg
Y29uc3QgV2ViU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIGNvbnN0IFdlYklE
QlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpCisgICAgLy8gRklYTUU6IFJlbW92ZSBX
ZWJTdHJpbmcga2V5UGF0aCBvdmVybG9hZCBvbmNlIGNhbGxlcnMgYXJlIHVwZGF0ZWQuCisgICAg
Ly8gaHR0cDovL3dlYmtpdC5vcmcvYi84NDIwNworICAgIHZpcnR1YWwgV2ViSURCT2JqZWN0U3Rv
cmUqIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3Ry
aW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9u
JiB0cmFuc2FjdGlvbiwgV2ViRXhjZXB0aW9uQ29kZSYgZWMpCisgICAgeworICAgICAgICByZXR1
cm4gY3JlYXRlT2JqZWN0U3RvcmUobmFtZSwgV2ViSURCS2V5UGF0aChrZXlQYXRoKSwgYXV0b0lu
Y3JlbWVudCwgdHJhbnNhY3Rpb24sIGVjKTsKKyAgICB9CisgICAgdmlydHVhbCBXZWJJREJPYmpl
Y3RTdG9yZSogY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5nJiwgY29uc3QgV2ViSURC
S2V5UGF0aCYsIGJvb2wsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29k
ZSYpCiAgICAgewogICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
IHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
SURCSW5kZXguaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkluZGV4LmgK
aW5kZXggZDU3MjQzZTlkZjkzYTVjMWFmZTZiMDA1ZGQ5ODRmYmY2ZDMwOWFmYi4uMzdhZjAyYzBj
OGIzMTM5ZGQzNmFlYmMwN2I1ZDM4MTc1NjNhMGI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCSW5kZXguaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJJREJJbmRleC5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIFdlYklE
QkluZGV4X2gKIAogI2luY2x1ZGUgIldlYkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJXZWJJ
REJLZXlQYXRoLmgiCiAjaW5jbHVkZSAiV2ViSURCVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJw
bGF0Zm9ybS9XZWJTdHJpbmcuaCIKIApAQCAtNTEsMTQgKzUyLDE0IEBAIHB1YmxpYzoKICAgICAg
ICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gV2ViU3RyaW5n
KCk7CiAgICAgfQotICAgIHZpcnR1YWwgV2ViU3RyaW5nIGtleVBhdGgoKSBjb25zdAorICAgIHZp
cnR1YWwgV2ViSURCS2V5UGF0aCBrZXlQYXRoKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVy
biBrZXlQYXRoU3RyaW5nKCk7CisgICAgICAgIHJldHVybiBXZWJJREJLZXlQYXRoKGtleVBhdGhT
dHJpbmcoKSk7CiAgICAgfQorICAgIC8vIEZJWE1FOiBSZW1vdmUgbWV0aG9kIG9uY2UgY2FsbGVy
cyBhcmUgdXBkYXRlZC4KKyAgICAvLyBodHRwOi8vd2Via2l0Lm9yZy9iLzg0MjA3CiAgICAgdmly
dHVhbCBXZWJTdHJpbmcga2V5UGF0aFN0cmluZygpIGNvbnN0CiAgICAgewotICAgICAgICAvLyBG
SVhNRTogVGVtcG9yYXJ5IHRvIGFsbG93IGtleVBhdGgoKSdzIHJldHVybiB0eXBlIHRvIGNoYW5n
ZS4KLSAgICAgICAgLy8gaHR0cDovL3dlYmtpdC5vcmcvYi84NDIwNwogICAgICAgICBXRUJLSVRf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBXZWJTdHJpbmcoKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJLZXlQYXRo
LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJLZXlQYXRoLmgKaW5kZXgg
NGM3MjU5ZjAzYjUxZDFhYzUyY2YzYTFhZTE4MzBmYTU0ZGU5ZWI4Yy4uODUxZDJlOWQ3MGVlYjg1
NjRhZjRkN2ZlYTNiYjFkZTNmN2M3ZTk4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViSURCS2V5UGF0aC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYklEQktleVBhdGguaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAicGxh
dGZvcm0vV2ViQ29tbW9uLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViUHJpdmF0ZU93blB0ci5o
IgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dl
YlZlY3Rvci5oIgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTM3LDE0ICszOCwzMSBAQCBjbGFzcyBT
dHJpbmc7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBXZWJTdHJpbmc7Ci0KIGNsYXNz
IFdlYklEQktleVBhdGggewogcHVibGljOgogICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYklE
QktleVBhdGggY3JlYXRlKGNvbnN0IFdlYlN0cmluZyYpOworCisgICAgLy8gRklYTUU6IEFycmF5
LXR5cGUga2V5IHBhdGhzIG5vdCB5ZXQgc3VwcG9ydGVkLiBodHRwOi8vd2Via2l0Lm9yZy9iLzg0
MjA3CisgICAgc3RhdGljIFdlYklEQktleVBhdGggY3JlYXRlKGNvbnN0IFdlYlZlY3RvcjxXZWJT
dHJpbmc+JikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBjcmVhdGVOdWxs
KCk7IH0KKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJJREJLZXlQYXRoIGNyZWF0ZU51bGwo
KTsKICAgICBXZWJJREJLZXlQYXRoKGNvbnN0IFdlYklEQktleVBhdGgmIGtleVBhdGgpIHsgYXNz
aWduKGtleVBhdGgpOyB9CiAgICAgfldlYklEQktleVBhdGgoKSB7IHJlc2V0KCk7IH0KIAorICAg
IGVudW0gVHlwZSB7CisgICAgICAgIE51bGxUeXBlID0gMCwKKyAgICAgICAgU3RyaW5nVHlwZSwK
KyAgICAgICAgQXJyYXlUeXBlLAorICAgIH07CisKKyAgICBXRUJLSVRfRVhQT1JUIGJvb2wgaXNW
YWxpZCgpIGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQgVHlwZSB0eXBlKCkgY29uc3Q7CisgICAg
Ly8gRklYTUU6IEFycmF5LXR5cGUga2V5IHBhdGhzIG5vdCB5ZXQgc3VwcG9ydGVkLiBodHRwOi8v
d2Via2l0Lm9yZy9iLzg0MjA3CisgICAgV2ViVmVjdG9yPFdlYlN0cmluZz4gYXJyYXkoKSBjb25z
dCB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIFdlYlZlY3RvcjxXZWJTdHJp
bmc+KCk7IH0KKyAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyBzdHJpbmcoKSBjb25zdDsKKwor
ICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhlc2Ugb25jZSBjYWxsZXJzIGFyZSB1cGRhdGVkLiBodHRw
Oi8vd2Via2l0Lm9yZy9iLzg0MjA3CisgICAgV2ViSURCS2V5UGF0aChjb25zdCBXZWJTdHJpbmcm
KTsKKyAgICBvcGVyYXRvciBjb25zdCBXZWJTdHJpbmcgKCkgY29uc3QgeyByZXR1cm4gc3RyaW5n
KCk7IH0KICAgICBXRUJLSVRfRVhQT1JUIGludCBwYXJzZUVycm9yKCkgY29uc3Q7CiAgICAgV0VC
S0lUX0VYUE9SVCB2b2lkIGFzc2lnbihjb25zdCBXZWJJREJLZXlQYXRoJik7CiAgICAgV0VCS0lU
X0VYUE9SVCB2b2lkIHJlc2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJJREJPYmplY3RTdG9yZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViSURCT2JqZWN0U3RvcmUuaAppbmRleCBkMDVhYjQ5NTgxOTg5ZTM2MjgzYTI2MjNhNTM2
MzQwMDU0YTNiNGU5Li5kY2Y0ODU2OTI1MTBjZmY5YjgxZjY0ZTBkMTdiMDJiZGI4MWE5ZGM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJPYmplY3RTdG9y
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQk9iamVjdFN0b3Jl
LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJXZWJFeGNlcHRpb25Db2RlLmgiCiAjaW5j
bHVkZSAiV2ViRE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIldlYklEQkNhbGxiYWNrcy5oIgor
I2luY2x1ZGUgIldlYklEQktleVBhdGguaCIKICNpbmNsdWRlICJXZWJJREJUcmFuc2FjdGlvbi5o
IgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dl
YlN0cmluZy5oIgpAQCAtNDgsMTQgKzQ5LDEyIEBAIHB1YmxpYzoKICAgICAgICAgV0VCS0lUX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gV2ViU3RyaW5nKCk7CiAgICAgfQot
ICAgIHZpcnR1YWwgV2ViU3RyaW5nIGtleVBhdGgoKSBjb25zdAorICAgIHZpcnR1YWwgV2ViSURC
S2V5UGF0aCBrZXlQYXRoKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBrZXlQYXRoU3Ry
aW5nKCk7CisgICAgICAgIHJldHVybiBXZWJJREJLZXlQYXRoKGtleVBhdGhTdHJpbmcoKSk7CiAg
ICAgfQogICAgIHZpcnR1YWwgV2ViU3RyaW5nIGtleVBhdGhTdHJpbmcoKSBjb25zdAogICAgIHsK
LSAgICAgICAgLy8gRklYTUU6IFRlbXBvcmFyeSB0byBhbGxvdyBrZXlQYXRoKCkncyByZXR1cm4g
dHlwZSB0byBjaGFuZ2UuCi0gICAgICAgIC8vIGh0dHA6Ly93ZWJraXQub3JnL2IvODQyMDcKICAg
ICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gV2ViU3Ry
aW5nKCk7CiAgICAgfQpAQCAtNzcsOCArNzYsMTUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBkZWxldGVGdW5jdGlvbihjb25zdCBXZWJJREJLZXkmLCBXZWJJREJDYWxsYmFja3MqLCBjb25z
dCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKSB7IFdFQktJVF9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVGdW5jdGlvbihjb25zdCBX
ZWJJREJLZXlSYW5nZSYsIFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9u
JiwgV2ViRXhjZXB0aW9uQ29kZSYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAg
ICAgdmlydHVhbCB2b2lkIGNsZWFyKFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYklEQlRyYW5z
YWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OyB9CisKKyAgICAvLyBGSVhNRTogUmVtb3ZlIFdlYlN0cmluZyBrZXlQYXRoIG92ZXJsb2FkIG9u
Y2UgY2FsbGVycyBhcmUgdXBkYXRlZC4KKyAgICAvLyBodHRwOi8vd2Via2l0Lm9yZy9iLzg0MjA3
CiAgICAgdmlydHVhbCBXZWJJREJJbmRleCogY3JlYXRlSW5kZXgoY29uc3QgV2ViU3RyaW5nJiBu
YW1lLCBjb25zdCBXZWJTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50
cnksIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgV2ViRXhjZXB0aW9uQ29k
ZSYgZWMpCiAgICAgeworICAgICAgICByZXR1cm4gY3JlYXRlSW5kZXgobmFtZSwgV2ViSURCS2V5
UGF0aChrZXlQYXRoKSwgdW5pcXVlLCBtdWx0aUVudHJ5LCB0cmFuc2FjdGlvbiwgZWMpOworICAg
IH0KKyAgICB2aXJ0dWFsIFdlYklEQkluZGV4KiBjcmVhdGVJbmRleChjb25zdCBXZWJTdHJpbmcm
LCBjb25zdCBXZWJJREJLZXlQYXRoJiwgYm9vbCwgYm9vbCwgY29uc3QgV2ViSURCVHJhbnNhY3Rp
b24mLCBXZWJFeGNlcHRpb25Db2RlJikKKyAgICB7CiAgICAgICAgIFdFQktJVF9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0Lmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1
cHBvcnQuaAppbmRleCBiYTliNTNhZjA0NWRkZTZmYmMwMDNmN2IzNjMzYTE0ZDNlNjNkMDQzLi5j
YTM3NjJkY2JlYmU0YmYyYmJhYTZkMDAwMTRmOGFhNDNmODUxNGYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0
Zm9ybVN1cHBvcnQuaApAQCAtMzEsNiArMzEsNyBAQAogI2lmbmRlZiBXZWJLaXRQbGF0Zm9ybVN1
cHBvcnRfaAogI2RlZmluZSBXZWJLaXRQbGF0Zm9ybVN1cHBvcnRfaAogCisjaW5jbHVkZSAiLi4v
V2ViSURCS2V5UGF0aC5oIiAvLyBGSVhNRTogUmVtb3ZlIHdpdGg6IGh0dHA6Ly93ZWJraXQub3Jn
L2IvODQyMDcKICNpbmNsdWRlICJXZWJDb21tb24uaCIKICNpbmNsdWRlICJXZWJHcmFwaGljc0Nv
bnRleHQzRC5oIgogI2luY2x1ZGUgIldlYkxvY2FsaXplZFN0cmluZy5oIgpAQCAtMTI2LDggKzEy
NywxNCBAQCBwdWJsaWM6CiAgICAgLy8gSW5kZXhlZCBEYXRhYmFzZSAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKICAgICB2aXJ0dWFsIFdlYklE
QkZhY3RvcnkqIGlkYkZhY3RvcnkoKSB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCB2b2lkIGNy
ZWF0ZUlEQktleXNGcm9tU2VyaWFsaXplZFZhbHVlc0FuZEtleVBhdGgoY29uc3QgV2ViVmVjdG9y
PFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mIHZhbHVlcywgIGNvbnN0IFdlYlN0cmluZyYga2V5
UGF0aCwgV2ViVmVjdG9yPFdlYklEQktleT4mIGtleXMpIHsgfQotICAgIHZpcnR1YWwgV2ViU2Vy
aWFsaXplZFNjcmlwdFZhbHVlIGluamVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUoY29uc3Qg
V2ViSURCS2V5JiBrZXksIGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgdmFsdWUsIGNv
bnN0IFdlYlN0cmluZyYga2V5UGF0aCkgeyByZXR1cm4gV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVl
KCk7IH0KKyAgICAvLyBGSVhNRTogUmVtb3ZlIFdlYlN0cmluZyBrZXlQYXRoIG92ZXJsb2FkIG9u
Y2UgY2FsbGVycyBhcmUgdXBkYXRlZC4KKyAgICAvLyBodHRwOi8vd2Via2l0Lm9yZy9iLzg0MjA3
CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZUlEQktleXNGcm9tU2VyaWFsaXplZFZhbHVlc0FuZEtl
eVBhdGgoY29uc3QgV2ViVmVjdG9yPFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mIHZhbHVlcywg
IGNvbnN0IFdlYlN0cmluZyYga2V5UGF0aCwgV2ViVmVjdG9yPFdlYklEQktleT4mIGtleXMpIHsg
Y3JlYXRlSURCS2V5c0Zyb21TZXJpYWxpemVkVmFsdWVzQW5kS2V5UGF0aCh2YWx1ZXMsIFdlYklE
QktleVBhdGgoa2V5UGF0aCksIGtleXMpOyB9CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZUlEQktl
eXNGcm9tU2VyaWFsaXplZFZhbHVlc0FuZEtleVBhdGgoY29uc3QgV2ViVmVjdG9yPFdlYlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4mIHZhbHVlcywgIGNvbnN0IFdlYklEQktleVBhdGgmIGtleVBhdGgs
IFdlYlZlY3RvcjxXZWJJREJLZXk+JiBrZXlzKSB7IH0KKyAgICAvLyBGSVhNRTogUmVtb3ZlIFdl
YlN0cmluZyBrZXlQYXRoIG92ZXJsb2FkIG9uY2UgY2FsbGVycyBhcmUgdXBkYXRlZC4KKyAgICAv
LyBodHRwOi8vd2Via2l0Lm9yZy9iLzg0MjA3CisgICAgdmlydHVhbCBXZWJTZXJpYWxpemVkU2Ny
aXB0VmFsdWUgaW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShjb25zdCBXZWJJREJLZXkm
IGtleSwgY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgV2ViU3Ry
aW5nJiBrZXlQYXRoKSB7IHJldHVybiBpbmplY3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKGtl
eSwgdmFsdWUsIFdlYklEQktleVBhdGgoa2V5UGF0aCkpOyB9CisgICAgdmlydHVhbCBXZWJTZXJp
YWxpemVkU2NyaXB0VmFsdWUgaW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShjb25zdCBX
ZWJJREJLZXkmIGtleSwgY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiB2YWx1ZSwgY29u
c3QgV2ViSURCS2V5UGF0aCYga2V5UGF0aCkgeyByZXR1cm4gV2ViU2VyaWFsaXplZFNjcmlwdFZh
bHVlKCk7IH0KIAogCiAgICAgLy8gTWVzc2FnZSBQb3J0cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9JREJJbmRleEJhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9JREJJbmRleEJhY2tlbmRQcm94eS5jcHAKaW5kZXggMTcxNDZhNWNhZDZi
NGQ1ZjE0YzRmODdhYzEyNWViOWRjMzAyNDE0ZS4uMDAxNGYyOTU5NmFlYjNhMWFjMzNhYjdjYmU2
Y2M1MzgwOTIyMmJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURC
SW5kZXhCYWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lE
QkluZGV4QmFja2VuZFByb3h5LmNwcApAQCAtNjcsNyArNjcsNyBAQCBTdHJpbmcgSURCSW5kZXhC
YWNrZW5kUHJveHk6OnN0b3JlTmFtZSgpCiAKIFN0cmluZyBJREJJbmRleEJhY2tlbmRQcm94eTo6
a2V5UGF0aCgpCiB7Ci0gICAgcmV0dXJuIG1fd2ViSURCSW5kZXgtPmtleVBhdGgoKTsKKyAgICBy
ZXR1cm4gbV93ZWJJREJJbmRleC0+a2V5UGF0aCgpLnN0cmluZygpOwogfQogCiBib29sIElEQklu
ZGV4QmFja2VuZFByb3h5Ojp1bmlxdWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuY3BwCmluZGV4IDk3YjY0ZjQ2
YzNkMGYyZDYxMDBlM2I1YzliNjY2NWU2OWQxMGViZDIuLjIxYTVkZDg1NmRjM2I4MDU5ODk3N2Mw
NDg2MmViODZkZmU4NzljMGQgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5jcHAKQEAgLTY2LDcgKzY2LDcgQEAg
U3RyaW5nIElEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjpuYW1lKCkgY29uc3QKIAogU3RyaW5n
IElEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjprZXlQYXRoKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gbV93ZWJJREJPYmplY3RTdG9yZS0+a2V5UGF0aCgpOworICAgIHJldHVybiBtX3dlYklEQk9i
amVjdFN0b3JlLT5rZXlQYXRoKCkuc3RyaW5nKCk7CiB9CiAKIFBhc3NSZWZQdHI8RE9NU3RyaW5n
TGlzdD4gSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OmluZGV4TmFtZXMoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaAppbmRleCA2
ZjgzNzc1YmUyMmQ2YjQzNGQ5N2ZkMTE3MTFlY2EwODY1Nzc4OTkwLi5mNzNiZTU3MDU0ZjYyYWI0
YzI1NDE0MDJkN2YxNDdkODY3YWVmM2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaApAQCAtNTMsNyArNTMsMTAgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgV2ViU3RyaW5nIHZlcnNpb24oKSBjb25zdDsKICAgICB2aXJ0dWFsIFdlYkRPTVN0
cmluZ0xpc3Qgb2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0OwogCi0gICAgdmlydHVhbCBXZWJJREJP
YmplY3RTdG9yZSogY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25z
dCBXZWJTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgY29uc3QgV2ViSURCVHJh
bnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7CisgICAgLy8gRklYTUU6IFJlbW92ZSBXZWJT
dHJpbmcga2V5UGF0aCBvdmVybG9hZCBvbmNlIGNhbGxlcnMgYXJlIHVwZGF0ZWQuCisgICAgLy8g
aHR0cDovL3dlYmtpdC5vcmcvYi84NDIwNworICAgIHZpcnR1YWwgV2ViSURCT2JqZWN0U3RvcmUq
IGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYsIGNvbnN0IFdlYlN0cmluZyYsIGJv
b2wsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOworICAgIHZp
cnR1YWwgV2ViSURCT2JqZWN0U3RvcmUqIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmlu
ZyYgbmFtZSwgY29uc3QgV2ViSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50
LCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIFdlYkV4Y2VwdGlvbkNvZGUm
IGVjKSB7IHJldHVybiBjcmVhdGVPYmplY3RTdG9yZShuYW1lLCBrZXlQYXRoLnN0cmluZygpLCBh
dXRvSW5jcmVtZW50LCB0cmFuc2FjdGlvbiwgZWMpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0
ZU9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCVHJhbnNhY3Rp
b24mLCBXZWJFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIHNldFZlcnNpb24oY29u
c3QgV2ViU3RyaW5nJiB2ZXJzaW9uLCBXZWJJREJDYWxsYmFja3MqLCBXZWJFeGNlcHRpb25Db2Rl
Jik7CiAgICAgdmlydHVhbCBXZWJJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24oY29uc3QgV2Vi
RE9NU3RyaW5nTGlzdCYgbmFtZXMsIHVuc2lnbmVkIHNob3J0IG1vZGUsIFdlYkV4Y2VwdGlvbkNv
ZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkluZGV4
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJJbmRleEltcGwuY3Bw
CmluZGV4IDc1OTcwYTU3NGNjOTg1ZmVhMzFjOGNmNWMyMDNjYTNiMzI3ZTk2N2YuLjE3MDkzOTU2
NzQwOTYwMmQ4OGY0N2E2NWY1MDNhOWNlYjgyN2RhYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklEQkluZGV4SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSURCSW5kZXhJbXBsLmNwcApAQCAtNTgsNiArNTgsMTMgQEAgV2ViU3Ry
aW5nIFdlYklEQkluZGV4SW1wbDo6c3RvcmVOYW1lKCkgY29uc3QKICAgICByZXR1cm4gbV9iYWNr
ZW5kLT5zdG9yZU5hbWUoKTsKIH0KIAorV2ViSURCS2V5UGF0aCBXZWJJREJJbmRleEltcGw6Omtl
eVBhdGgoKSBjb25zdAoreworICAgIHJldHVybiBXZWJJREJLZXlQYXRoKG1fYmFja2VuZC0+a2V5
UGF0aCgpKTsKK30KKworLy8gRklYTUU6IFJlbW92ZSB0aGlzIG1ldGhvZCBvbmNlIGNhbGxlcnMg
YXJlIHVwZGF0ZWQuCisvLyBodHRwOi8vd2Via2l0Lm9yZy9iLzg0MjA3CiBXZWJTdHJpbmcgV2Vi
SURCSW5kZXhJbXBsOjprZXlQYXRoU3RyaW5nKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9iYWNr
ZW5kLT5rZXlQYXRoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJJREJJbmRleEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkluZGV4
SW1wbC5oCmluZGV4IGExZDRhZjM4OTczMGNjMzIyMTIyYTczY2RjZWViNTYxOTIxZjIyZTYuLmQ4
YjExMjlkMGYzZjU1ZDMzM2ZmZDYxOWMwOTljNDhhYmU5NWYzZmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkluZGV4SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklEQkluZGV4SW1wbC5oCkBAIC00NSw2ICs0NSw5IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgV2ViU3RyaW5nIG5hbWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIFdl
YlN0cmluZyBzdG9yZU5hbWUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFdlYklEQktleVBhdGgga2V5
UGF0aCgpIGNvbnN0OworICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBtZXRob2Qgb25jZSBjYWxs
ZXJzIGFyZSB1cGRhdGVkLgorICAgIC8vIGh0dHA6Ly93ZWJraXQub3JnL2IvODQyMDcKICAgICB2
aXJ0dWFsIFdlYlN0cmluZyBrZXlQYXRoU3RyaW5nKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29s
IHVuaXF1ZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBtdWx0aUVudHJ5KCkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJLZXlQYXRoLmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQktleVBhdGguY3BwCmluZGV4IDc0ZjM1
N2U0MDNmZjBmM2Y1NzhjZTNjMzVhOGY0NmRmZWJiZTEwMmMuLjczZTAyNTQ1YjlhZDY0M2U1Y2Ew
Y2FjYWQ1NWMzMzFmNWY3OWJmYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklEQktleVBhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YklEQktleVBhdGguY3BwCkBAIC0zOSwxOCArMzksNjQgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAK
IFdlYklEQktleVBhdGggV2ViSURCS2V5UGF0aDo6Y3JlYXRlKGNvbnN0IFdlYlN0cmluZyYga2V5
UGF0aCkKIHsKKyAgICBpZiAoa2V5UGF0aC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIGNyZWF0
ZU51bGwoKTsKKwogICAgIFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiBpZGJFbGVtZW50czsKICAg
ICBJREJLZXlQYXRoUGFyc2VFcnJvciBpZGJFcnJvcjsKICAgICBJREJQYXJzZUtleVBhdGgoa2V5
UGF0aCwgaWRiRWxlbWVudHMsIGlkYkVycm9yKTsKICAgICByZXR1cm4gV2ViSURCS2V5UGF0aChp
ZGJFbGVtZW50cywgc3RhdGljX2Nhc3Q8aW50PihpZGJFcnJvcikpOwogfQogCitXZWJJREJLZXlQ
YXRoIFdlYklEQktleVBhdGg6OmNyZWF0ZU51bGwoKQoreworICAgIHJldHVybiBXZWJJREJLZXlQ
YXRoKFdlYlN0cmluZygpKTsKK30KKwogV2ViSURCS2V5UGF0aDo6V2ViSURCS2V5UGF0aChjb25z
dCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIGVsZW1lbnRzLCBpbnQgcGFyc2VFcnJvcikKICAg
ICA6IG1fcHJpdmF0ZShuZXcgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+KGVsZW1lbnRzKSkKICAg
ICAsIG1fcGFyc2VFcnJvcihwYXJzZUVycm9yKQogewogfQogCitib29sIFdlYklEQktleVBhdGg6
OmlzVmFsaWQoKSBjb25zdAoreworICAgIHJldHVybiBtX3BhcnNlRXJyb3IgPT0gSURCS2V5UGF0
aFBhcnNlRXJyb3JOb25lOworfQorCitXZWJJREJLZXlQYXRoOjpUeXBlIFdlYklEQktleVBhdGg6
OnR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUuZ2V0KCkgPyBTdHJpbmdUeXBl
IDogTnVsbFR5cGU7Cit9CisKK1dlYlN0cmluZyBXZWJJREJLZXlQYXRoOjpzdHJpbmcoKSBjb25z
dAoreworICAgIGlmICghbV9wcml2YXRlLmdldCgpKQorICAgICAgICByZXR1cm4gV2ViU3RyaW5n
KCk7CisKKyAgICAvLyBGSVhNRTogU3RvcmUgdGhlIGNvbXBsZXRlIHN0cmluZyBpbnN0ZWFkIG9m
IHJlYnVpbGRpbmcgaXQuCisgICAgLy8gaHR0cDovL3dlYmtpdC5vcmcvYi84NDIwNworICAgIFdU
Rjo6U3RyaW5nIHN0cmluZygiIik7CisgICAgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBhcnJh
eSA9ICptX3ByaXZhdGUuZ2V0KCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheS5z
aXplKCk7ICsraSkgeworICAgICAgICBpZiAoaSkKKyAgICAgICAgICAgIHN0cmluZy5hcHBlbmQo
Ii4iKTsKKyAgICAgICAgc3RyaW5nLmFwcGVuZChhcnJheVtpXSk7CisgICAgfQorICAgIHJldHVy
biBXZWJTdHJpbmcoc3RyaW5nKTsKK30KKworV2ViSURCS2V5UGF0aDo6V2ViSURCS2V5UGF0aChj
b25zdCBXZWJTdHJpbmcmIGtleVBhdGgpCisgICAgOiBtX3BhcnNlRXJyb3IoSURCS2V5UGF0aFBh
cnNlRXJyb3JOb25lKQoreworICAgIGlmICgha2V5UGF0aC5pc051bGwoKSkgeworICAgICAgICBt
X3ByaXZhdGUucmVzZXQobmV3IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPigpKTsKKyAgICAgICAg
SURCS2V5UGF0aFBhcnNlRXJyb3IgaWRiUGFyc2VFcnJvcjsKKyAgICAgICAgSURCUGFyc2VLZXlQ
YXRoKGtleVBhdGgsICptX3ByaXZhdGUuZ2V0KCksIGlkYlBhcnNlRXJyb3IpOworICAgICAgICBt
X3BhcnNlRXJyb3IgPSBpZGJQYXJzZUVycm9yOworICAgIH0KK30KKwogaW50IFdlYklEQktleVBh
dGg6OnBhcnNlRXJyb3IoKSBjb25zdAogewogICAgIHJldHVybiBtX3BhcnNlRXJyb3I7CkBAIC01
OSw3ICsxMDUsMTAgQEAgaW50IFdlYklEQktleVBhdGg6OnBhcnNlRXJyb3IoKSBjb25zdAogdm9p
ZCBXZWJJREJLZXlQYXRoOjphc3NpZ24oY29uc3QgV2ViSURCS2V5UGF0aCYga2V5UGF0aCkKIHsK
ICAgICBtX3BhcnNlRXJyb3IgPSBrZXlQYXRoLm1fcGFyc2VFcnJvcjsKLSAgICBtX3ByaXZhdGUu
cmVzZXQobmV3IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPihrZXlQYXRoKSk7CisgICAgaWYgKGtl
eVBhdGgubV9wcml2YXRlLmdldCgpKQorICAgICAgICBtX3ByaXZhdGUucmVzZXQobmV3IFdURjo6
VmVjdG9yPFdURjo6U3RyaW5nPihrZXlQYXRoKSk7CisgICAgZWxzZQorICAgICAgICBtX3ByaXZh
dGUucmVzZXQoMCk7CiB9CiAKIHZvaWQgV2ViSURCS2V5UGF0aDo6cmVzZXQoKQpAQCAtNjksNiAr
MTE4LDcgQEAgdm9pZCBXZWJJREJLZXlQYXRoOjpyZXNldCgpCiAKIFdlYklEQktleVBhdGg6Om9w
ZXJhdG9yIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nLCAwPiYoKSBjb25zdAogeworICAg
IEFTU0VSVChtX3ByaXZhdGUuZ2V0KCkpOwogICAgIHJldHVybiAqbV9wcml2YXRlLmdldCgpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RT
dG9yZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3Rv
cmVJbXBsLmNwcAppbmRleCA5ZWQ3Mzk3ZjY5NmIxMThhOGY4NmZlNTk0ZDFkMzU1NTllMWE5ZDIw
Li42MjRhNGU1YjM2NjBkOWI5NzRhN2QwNDgyYjI0NjkxZDFmMTExNDAxIDEwMDc1NQotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5jcHAKQEAg
LTU3LDYgKzU3LDEzIEBAIFdlYlN0cmluZyBXZWJJREJPYmplY3RTdG9yZUltcGw6Om5hbWUoKSBj
b25zdAogICAgIHJldHVybiBtX29iamVjdFN0b3JlLT5uYW1lKCk7CiB9CiAKK1dlYklEQktleVBh
dGggV2ViSURCT2JqZWN0U3RvcmVJbXBsOjprZXlQYXRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
V2ViSURCS2V5UGF0aChtX29iamVjdFN0b3JlLT5rZXlQYXRoKCkpOworfQorCisvLyBGSVhNRTog
UmVtb3ZlIHRoaXMgbWV0aG9kIG9uY2UgY2FsbGVycyBhcmUgdXBkYXRlZC4KKy8vIGh0dHA6Ly93
ZWJraXQub3JnL2IvODQyMDcKIFdlYlN0cmluZyBXZWJJREJPYmplY3RTdG9yZUltcGw6OmtleVBh
dGhTdHJpbmcoKSBjb25zdAogewogICAgIHJldHVybiBtX29iamVjdFN0b3JlLT5rZXlQYXRoKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9y
ZUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1w
bC5oCmluZGV4IDhiMzJmNDEzZjllMmUxNjZjZDdlNWUyMDdkZmM4YmU5MDllZWQ0MmIuLmVlM2Iy
MjJhY2MyYzY2MzdhZTc0YmRhNGU0YzhhYjg2MmZmN2U4N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5oCkBAIC00Niw2ICs0Niw5
IEBAIHB1YmxpYzoKICAgICB+V2ViSURCT2JqZWN0U3RvcmVJbXBsKCk7CiAKICAgICBXZWJTdHJp
bmcgbmFtZSgpIGNvbnN0OworICAgIFdlYklEQktleVBhdGgga2V5UGF0aCgpIGNvbnN0OworICAg
IC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBtZXRob2Qgb25jZSBjYWxsZXJzIGFyZSB1cGRhdGVkLgor
ICAgIC8vIGh0dHA6Ly93ZWJraXQub3JnL2IvODQyMDcKICAgICBXZWJTdHJpbmcga2V5UGF0aFN0
cmluZygpIGNvbnN0OwogICAgIFdlYkRPTVN0cmluZ0xpc3QgaW5kZXhOYW1lcygpIGNvbnN0Owog
CkBAIC01NSw5ICs1OCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWxldGVGdW5jdGlvbihjb25z
dCBXZWJJREJLZXlSYW5nZSYsIFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYklEQlRyYW5zYWN0
aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgY2xlYXIoV2ViSURCQ2FsbGJhY2tz
KiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7CiAKLSAgICAv
LyBGSVhNRTogUmVtb3ZlIG9uY2UgY2FsbGVycyBhcmUgdXBkYXRlZC4KLSAgICBXZWJJREJJbmRl
eCogY3JlYXRlSW5kZXgoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGtl
eVBhdGgsIGJvb2wgdW5pcXVlLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24s
IFdlYkV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBjcmVhdGVJbmRleChuYW1lLCBrZXlQYXRo
LCB1bmlxdWUsIGZhbHNlLCB0cmFuc2FjdGlvbiwgZWMpOyB9Ci0gICAgV2ViSURCSW5kZXgqIGNy
ZWF0ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBrZXlQYXRo
LCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5LCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYs
IFdlYkV4Y2VwdGlvbkNvZGUmKTsKKyAgICAvLyBGSVhNRTogUmVtb3ZlIFdlYlN0cmluZyBrZXlQ
YXRoIG92ZXJsb2FkIG9uY2UgY2FsbGVycyBhcmUgdXBkYXRlZC4KKyAgICAvLyBodHRwOi8vd2Vi
a2l0Lm9yZy9iLzg0MjA3CisgICAgV2ViSURCSW5kZXgqIGNyZWF0ZUluZGV4KGNvbnN0IFdlYlN0
cmluZyYsIGNvbnN0IFdlYlN0cmluZyYsIGJvb2wsIGJvb2wsIGNvbnN0IFdlYklEQlRyYW5zYWN0
aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOworICAgIFdlYklEQkluZGV4KiBjcmVhdGVJbmRleChj
b25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYklEQktleVBhdGgmIGtleVBhdGgsIGJvb2wg
dW5pcXVlLCBib29sIG11bHRpRW50cnksIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFuc2Fj
dGlvbiwgV2ViRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGNyZWF0ZUluZGV4KG5hbWUsIGtl
eVBhdGguc3RyaW5nKCksIHVuaXF1ZSwgbXVsdGlFbnRyeSwgdHJhbnNhY3Rpb24sIGVjKTsgfQog
ICAgIFdlYklEQkluZGV4KiBpbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIFdlYkV4Y2VwdGlv
bkNvZGUmKTsKICAgICB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29u
c3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139532</attachid>
            <date>2012-04-30 15:39:53 -0700</date>
            <delta_ts>2012-05-21 17:31:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84207-20120430153952.patch</filename>
            <type>text/plain</type>
            <size>140562</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1NjIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjg3MDI0MzIxYmJlYjRj
YTNlM2VmY2Y1Y2E4Yjc0OTU2YTRhNzkzOS4uNWUyMTY2MDc1NTMwM2UzYzYwY2JlMzE4NDQ2MDJi
OGRkMTBiNTU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MCBAQAorMjAxMi0wNC0zMCAgSm9z
aHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogU3Vw
cG9ydCBBcnJheS10eXBlIGtleSBwYXRocworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODQyMDcKKworICAgICAgICBUdXJucyBJREJLZXlQYXRoIGludG8g
YSByZWFsIHZhbHVlIHR5cGUsIHdoaWNoIGNhbiByZXByZXNlbnQgbnVsbCwgc3RyaW5nLCAKKyAg
ICAgICAgb3IgYXJyYXktb2Ytc3RyaW5nIGtleSBwYXRocy4gTW9zdCBjaGFuZ2VzIHNpbXBseSB1
c2UgdGhpcyB0eXBlIGluc3RlYWQgb2YgCisgICAgICAgIFN0cmluZyBmb3IgaG9sZGluZy9jb252
ZXlpbmcga2V5IHBhdGhzLiBJbXBsZW1lbnRzIHNwZWMgbG9naWMgZm9yIGV2YWx1YXRpbmcKKyAg
ICAgICAgYXJyYXktdHlwZSBrZXkgcGF0aHMgKHlpZWxkcyBhcnJheS10eXBlIGtleSwgcmVjdXJz
aXZlbHkgZXZhbHVhdGVkKS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUZXN0OiBzdG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWFycmF5cy5odG1sCisK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJBbnkuY3BwOiBBZGQgU3RyaW5nVHlwZSwg
Zm9yIGhvbGRpbmcgRE9NU3RyaW5nIHZhbHVlcy4KKyAgICAgICAgKFdlYkNvcmU6OklEQkFueTo6
Y3JlYXRlU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURC
QW55OjpzdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SURCQW55OjpzZXQpOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5oOgorICAgICAgICAoSURCQW55KToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKElEQkJhY2tp
bmdTdG9yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKTogQWNjZXB0
IHN0cmluZyBvciBhcnJheSBrZXkgcGF0aHM7IGVuZm9yY2UKKyAgICAgICAgcmVzdHJpY3Rpb25z
IGZyb20gc3BlYy4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tl
bmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNy
ZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZElt
cGw6OmxvYWRPYmplY3RTdG9yZXMpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlQmFja2VuZEltcGwuaDoKKyAgICAgICAgKElEQkRhdGFiYXNlQmFja2VuZEltcGwpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5o
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZh
Y2UpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpJREJJbmRleDo6a2V5UGF0aCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
SURCSW5kZXguaWRsOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2Vu
ZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW1wbDo6SURCSW5k
ZXhCYWNrZW5kSW1wbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNr
ZW5kSW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW1wbDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEltcGw6OmtleVBhdGgpOgorICAg
ICAgICAoSURCSW5kZXhCYWNrZW5kSW1wbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KElEQkluZGV4QmFja2VuZEludGVyZmFjZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
SURCS2V5UGF0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlQYXRoOjppc1ZhbGlkKTog
RG9lcyBhIHZhbGlkaXR5IGNoZWNrLiBTaG91bGQgYmUgY2FsbGVkCisgICAgICAgIG9ubHkgd2hl
biBwYXRoIGlzIGNyZWF0ZWQsIGFuZCBpbnZhbGlkIHBhdGhzIHNob3VsZCBub3QgYmUgc3RvcmVk
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlQYXRoOjpvcGVy
YXRvciBQYXNzUmVmUHRyPElEQkFueT4pOiBVc2VkIHRvIGltcGxlbWVudCB0aGUKKyAgICAgICAg
a2V5UGF0aCBwcm9wZXJ0eSBvZiBJREJPYmplY3RTdG9yZS9JREJJbmRleCwgd2hpY2ggY2FuIGJl
IG51bGwvRE9NU3RyaW5nL0RPTVN0cmluZ0xpc3QKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJLZXlQYXRoLmg6CisgICAgICAgIChJREJLZXlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQktleVBhdGg6OklEQktleVBhdGgpOiBJbnRyb2R1Y2UgYSBwcm9wZXIgSURCS2V5UGF0aCB0
eXBlLgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5UGF0aDo6dHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJLZXlQYXRoOjphcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlQYXRoOjpz
dHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5UGF0aDo6aXNOdWxsKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGhCYWNrZW5k
SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlQYXRoQmFja2VuZEltcGw6OmNyZWF0
ZUlEQktleXNGcm9tU2VyaWFsaXplZFZhbHVlc0FuZEtleVBhdGgpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCS2V5UGF0aEJhY2tlbmRJbXBsOjppbmplY3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVl
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRoQmFja2VuZEltcGwuaDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSURCS2V5UGF0aEJhY2tlbmRJbXBsKToKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcDogVXNl
IGVuY29kZUlEQktleVBhdGggdG8gaGFuZGxlIHZhcmlhbnRzLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpwdXRJREJLZXlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkxldmVsREJCYWNraW5nU3RvcmU6OmdldE9iamVjdFN0b3Jlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRJbmRleGVzKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmg6CisgICAgICAgIChJREJM
ZXZlbERCQmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZl
bERCQ29kaW5nLmNwcDoKKyAgICAgICAgKElEQkxldmVsREJDb2RpbmcpOiBGb3IgY29tcGF0aWJp
bGl0eSB3aXRoIGV4aXN0aW5nIHN0b3Jlcywga2V5IHBhdGhzIGNhbiBiZQorICAgICAgICBzdHJp
bmdzIChsZWdhY3kpIG9yIGZsYWdnZWQgKHdpdGggYnl0ZSB0aGF0IHdvdWxkIG5vdCBiZSBwYXJ0
IG9mIGEgdmFsaWQKKyAgICAgICAga2V5IHBhdGgpIGFuZCB0YWdnZWQgd2l0aCBhIHR5cGUgYnl0
ZSAoZm9yIG51bGwvc3RyaW5nL2FycmF5LW9mLXN0cmluZ3MpLgorICAgICAgICAoV2ViQ29yZTo6
SURCTGV2ZWxEQkNvZGluZzo6ZW5jb2RlSURCS2V5UGF0aCk6IEFsd2F5cyBlbmNvZGUgbmV3LXN0
eWxlCisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5nOjpkZWNvZGVJREJLZXlQYXRo
KTogRGV0ZWN0IGxlZ2FjeS9uZXctc3R5bGUgY29kaW5nLgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
SURCTGV2ZWxEQkNvZGluZyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmtleVBhdGgpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KTogT3ZlcmxvYWQg
Zm9yIERPTVN0cmluZ0xpc3QuIFBhc3NpbmcgbnVsbAorICAgICAgICBpcyBzcGVjaWFsLWNhc2Vk
IGhlcmUgZHVlIHRvIGxpbWl0YXRpb25zIG9mIGJpbmRpbmcgY29kZSAtIFdlYklETCBzYXlzIGl0
IHNob3VsZAorICAgICAgICBiZSBjb2VyY2VkIHRvIHN0cmluZy4gU2VlOiBodHRwOi8vd2Via2l0
Lm9yZy9iLzg0MjE3CisgICAgICAgIEFsc28gZW5mb3JjZSBzcGVjIHJlc3RyaWN0aW9ucy4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlLmg6CisgICAgICAgIChJREJPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJP
YmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
Qk9iamVjdFN0b3JlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGw6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6
ZmV0Y2hLZXlGcm9tS2V5UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjppbmplY3RLZXlJbnRvS2V5
UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVh
dGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjps
b2FkSW5kZXhlcyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6
OmtleVBhdGgpOgorICAgICAgICAoSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCk6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFj
ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvRGljdGlvbmFyeS5jcHA6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpY3Rpb25hcnk6OmdldCk6IEFkZHMgZ2V0KGtleSwg
VmVjdG9yPFN0cmluZz4pIG92ZXJsb2FkLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RpY3Rpb25h
cnkuaDoKKyAgICAgICAgKERpY3Rpb25hcnkpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0lEQkJp
bmRpbmdVdGlsaXRpZXMuY3BwOiBJREJLZXlQYXRoIG9iamVjdHMgYXJlIHBsdW1iZWQgdGhyb3Vn
aAorICAgICAgICB0byB0aGVzZSBtZXRob2RzIGludGFjdCwgcmF0aGVyIHRoYW4gYmVpbmcgcGFy
c2VkIGVhcmx5LiBQYXJzaW5nIG9jY3VycyBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
SURCS2V5RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtleVBhdGgpOiBUaGUgd2hvbGUgcG9pbnQgb2Yg
dGhpcworICAgICAgICBwYXRjaCBzZXQgaXMgdG8gdXBkYXRlIHRoaXMgZnVuY3Rpb246IGFycmF5
LXR5cGUga2V5IHBhdGhzIGFyZSByZWN1cnNpdmVseQorICAgICAgICBldmFsdWF0ZWQgdG8gcHJv
ZHVjZSBhcnJheS10eXBlIGtleXMuIChPbmx5IG9uZSBsZXZlbCBvZiByZWN1cnNpb24gY2FuIG9j
Y3VyLikKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6aW5qZWN0SURCS2V5
SW50b1NlcmlhbGl6ZWRWYWx1ZSk6IEp1c3QgYXNzZXJ0aW9uczsgb25seSBzdHJpbmctdHlwZQor
ICAgICAgICBrZXkgcGF0aHMgY2FuIGJlIHVzZWQgd2l0aCBhdXRvSW5jcmVtZW50L2lubGluZSBr
ZXlzLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMuaDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOElEQkFueUN1c3Rv
bS5jcHA6IEJpbmRpbmcgbG9naWMgZm9yIERPTVN0cmluZyB0eXBlLgorICAgICAgICAoV2ViQ29y
ZTo6dG9WOCk6CisgICAgICAgICogZG9tL0RPTVN0cmluZ0xpc3QuaDogRXhwb3NlIGNvbnN0IGFj
Y2Vzc29yIGZvciBWZWN0b3I8U3RyaW5nPi4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVN0cmluZ0xp
c3Q6Om9wZXJhdG9yIGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik6CisgICAgICAgIChET01TdHJpbmdM
aXN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwOiBU
ZW1wb3JhcnksIHNlZSBodHRwOi8vd2Via2l0Lm9yZy9iLzg0MzAzCisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaDogCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFBsYXRmb3JtU3VwcG9ydCk6CisgICAgICAgICogc3Rv
cmFnZS9jaHJvbWl1bS9JREJLZXlQYXRoQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCS2V5UGF0aEJhY2tlbmRJbXBsOjpjcmVhdGVJREJLZXlzRnJvbVNlcmlhbGl6ZWRWYWx1
ZXNBbmRLZXlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OklEQktleVBhdGhCYWNrZW5kSW1wbDo6
aW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZSk6CisKIDIwMTItMDQtMjkgIEtlaXNoaSBI
YXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQnVpbGQgZml4IGZvciBMb2Nh
bGl6ZWREYXRlTWFjLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGQ4MjY1MjUwN2M3
YTUwZTQ1NDc1YWRhMGY0ZGE3YzdkYjg0NGY3ZjUuLjA5YjJkOTQwYjI2MjMyYTBiOTIwYWNkZDkz
NTFiMDhhYzZhMmJhNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzAg
QEAKKzIwMTItMDQtMzAgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBJbmRleGVkREI6IFN1cHBvcnQgQXJyYXktdHlwZSBrZXkgcGF0aHMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0MjA3CisKKyAgICAgICAgVXNl
IHRoZSBXZWJDb3JlOjpJREJLZXlQYXRoIHR5cGUgd2hpY2ggY2FuIGhhbmRsZSBudWxsLCBzdHJp
bmcsIGFuZCBhcnJheS1vZi1zdHJpbmcKKyAgICAgICAga2V5IHBhdGggdHlwZXMuIEFscmVhZHkg
ZXhwb3NlZCB2aWEgV2ViSURCS2V5UGF0aCBmb3IgQ2hyb21pdW0gcG9ydC4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHB1YmxpYy9XZWJJREJEYXRh
YmFzZS5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRGF0YWJh
c2U6Om9iamVjdFN0b3JlTmFtZXMpOiBSZW1vdmUgdGVtcG9yYXJ5IG92ZXJsb2Fkcy4KKyAgICAg
ICAgKiBwdWJsaWMvV2ViSURCSW5kZXguaDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCSW5kZXg6
OmtleVBhdGgpOiBSZW1vdmUgdGVtcG9yYXJ5IG92ZXJsb2Fkcy4KKyAgICAgICAgKiBwdWJsaWMv
V2ViSURCS2V5UGF0aC5oOiBSZW1vdmUgb2Jzb2xldGUgbWV0aG9kcywgbWVtYmVycy4KKyAgICAg
ICAgKFdlYklEQktleVBhdGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJLZXlQYXRoOjpXZWJJ
REJLZXlQYXRoKToKKyAgICAgICAgKiBwdWJsaWMvV2ViSURCT2JqZWN0U3RvcmUuaDogUmVtb3Zl
IHRlbXBvcmFyeSBvdmVybG9hZHMuCisgICAgICAgIChXZWJLaXQ6OldlYklEQk9iamVjdFN0b3Jl
OjprZXlQYXRoKToKKyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBw
b3J0Lmg6IFJlbW92ZSB0ZW1wb3Jhcnkgb3ZlcmxvYWRzLgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKiBzcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHA6IFZlcmlmeSBXZWJJREJLZXlQYXRo
L0lEQktleVBhdGggZW51bXMuCisgICAgICAgICogc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5
LmNwcDogU3dpdGNoIHRvIG5ldyBrZXkgcGF0aCB0eXBlLgorICAgICAgICAoV2ViS2l0OjpJREJE
YXRhYmFzZUJhY2tlbmRQcm94eTo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAqIHNyYy9J
REJEYXRhYmFzZUJhY2tlbmRQcm94eS5oOgorICAgICAgICAoSURCRGF0YWJhc2VCYWNrZW5kUHJv
eHkpOgorICAgICAgICAqIHNyYy9JREJJbmRleEJhY2tlbmRQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OklEQkluZGV4QmFja2VuZFByb3h5OjprZXlQYXRoKToKKyAgICAgICAgKiBzcmMvSURC
SW5kZXhCYWNrZW5kUHJveHkuaDoKKyAgICAgICAgKElEQkluZGV4QmFja2VuZFByb3h5KToKKyAg
ICAgICAgKiBzcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eTo6a2V5UGF0aCk6CisgICAgICAgIChXZWJL
aXQ6OklEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjpjcmVhdGVJbmRleCk6CisgICAgICAgICog
c3JjL0lEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5Lmg6CisgICAgICAgIChJREJPYmplY3RTdG9y
ZUJhY2tlbmRQcm94eSk6CisgICAgICAgICogc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybVN1cHBvcnQ6OmNyZWF0ZUlEQktleXNGcm9tU2VyaWFsaXpl
ZFZhbHVlc0FuZEtleVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TdXBwb3J0Ojpp
bmplY3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKToKKyAgICAgICAgKiBzcmMvV2ViSURCRGF0
YWJhc2VJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRGF0YWJhc2VJbXBsOjpjcmVh
dGVPYmplY3RTdG9yZSk6CisgICAgICAgICogc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oOiBSZW1v
dmUgdGVtcG9yYXJ5IG92ZXJsb2Fkcy4KKyAgICAgICAgKFdlYklEQkRhdGFiYXNlSW1wbCk6Cisg
ICAgICAgICogc3JjL1dlYklEQkluZGV4SW1wbC5jcHA6IFJlbW92ZSB0ZW1wb3JhcnkgbWV0aG9k
cy4KKyAgICAgICAgKiBzcmMvV2ViSURCSW5kZXhJbXBsLmg6IFJlbW92ZSB0ZW1wb3Jhcnkgb3Zl
cmxvYWRzLgorICAgICAgICAoV2ViSURCSW5kZXhJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViSURC
S2V5UGF0aC5jcHA6IFJlbW92ZSBtb3N0IGxvZ2ljLCBqdXN0IHdyYXAgV2ViQ29yZSBpbXBsZW1l
bnRhdGlvbi4KKyAgICAgICAgKFdlYktpdDo6V2ViSURCS2V5UGF0aDo6fldlYklEQktleVBhdGgp
OgorICAgICAgICAoV2ViS2l0OjpXZWJJREJLZXlQYXRoOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJREJLZXlQYXRoOjpjcmVhdGVOdWxsKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURC
S2V5UGF0aDo6aXNWYWxpZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQktleVBhdGg6OnR5cGUp
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCS2V5UGF0aDo6YXJy
YXkpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJLZXlQYXRoOjpzdHJpbmcpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJREJLZXlQYXRoOjpXZWJJREJLZXlQYXRoKToKKyAgICAgICAgKFdlYktpdDo6
V2ViSURCS2V5UGF0aDo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCS2V5UGF0
aDo6b3BlcmF0b3IgY29uc3QgV2ViQ29yZTo6SURCS2V5UGF0aCYpOgorICAgICAgICAqIHNyYy9X
ZWJJREJPYmplY3RTdG9yZUltcGwuY3BwOiBSZW1vdmUgdGVtcG9yYXJ5IG92ZXJsb2FkcyBhbmQg
bWV0aG9kcy4KKyAgICAgICAgKFdlYktpdDo6V2ViSURCT2JqZWN0U3RvcmVJbXBsOjprZXlQYXRo
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCT2JqZWN0U3RvcmVJbXBsOjpjcmVhdGVJbmRleCk6
CisgICAgICAgICogc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5oOiBSZW1vdmUgdGVtcG9yYXJ5
IG92ZXJsb2FkcyBhbmQgbWV0aG9kcy4KKyAgICAgICAgKFdlYklEQk9iamVjdFN0b3JlSW1wbCk6
CisgICAgICAgICogdGVzdHMvSURCQmluZGluZ1V0aWxpdGllc1Rlc3QuY3BwOiBVcGRhdGUgdGVz
dHMuCisgICAgICAgIChXZWJDb3JlOjpjaGVja0tleUZyb21WYWx1ZUFuZEtleVBhdGhJbnRlcm5h
bCk6CisgICAgICAgIChXZWJDb3JlOjppbmplY3RLZXkpOgorCiAyMDEyLTA0LTI5ICBNYXJrIFBp
bGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIENhbGwg
aGlnaFVzYWdlRGVsdGFNQiBkaXJlY3RseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
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
YjM5MTI0N2VhNjExNDVhMzIyZjA4OWFjNGQ4YmY5NTMuLjRlMWQ4YjQwMDIzYTkzNGNlZTZjNTVl
NGRlY2U4OWU4ZDY2M2Y0YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZS5jcHAKQEAgLTkyLDE2ICs5MiwyOSBAQCBQYXNzUmVmUHRyPElEQk9i
amVjdFN0b3JlPiBJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBu
YW1lLCBjbwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBTdHJpbmcga2V5UGF0aDsK
LSAgICBib29sIGtleVBhdGhFeGlzdHMgPSBvcHRpb25zLmdldFdpdGhVbmRlZmluZWRPck51bGxD
aGVjaygia2V5UGF0aCIsIGtleVBhdGgpOwotICAgIGlmIChrZXlQYXRoRXhpc3RzICYmICFJREJJ
c1ZhbGlkS2V5UGF0aChrZXlQYXRoKSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpOT05fVFJBTlNJRU5UX0VSUjsKKyAgICBJREJLZXlQYXRoIGtleVBhdGg7CisgICAgaWYg
KCFvcHRpb25zLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgU3RyaW5nIGtleVBhdGhT
dHJpbmc7CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IGtleVBhdGhBcnJheTsKKyAgICAgICAgaWYg
KG9wdGlvbnMuZ2V0KCJrZXlQYXRoIiwga2V5UGF0aEFycmF5KSkKKyAgICAgICAgICAgIGtleVBh
dGggPSBJREJLZXlQYXRoKGtleVBhdGhBcnJheSk7CisgICAgICAgIGVsc2UgaWYgKG9wdGlvbnMu
Z2V0KCJrZXlQYXRoIiwga2V5UGF0aFN0cmluZykpCisgICAgICAgICAgICBrZXlQYXRoID0gSURC
S2V5UGF0aChrZXlQYXRoU3RyaW5nKTsKKyAgICB9CisKKyAgICBpZiAoIWtleVBhdGguaXNOdWxs
KCkgJiYgIWtleVBhdGguaXNWYWxpZCgpKSB7CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgfQogCiAgICAgYm9vbCBhdXRvSW5jcmVtZW50ID0gZmFsc2U7
Ci0gICAgb3B0aW9ucy5nZXQoImF1dG9JbmNyZW1lbnQiLCBhdXRvSW5jcmVtZW50KTsKLSAgICAv
LyBGSVhNRTogTG9vayB1cCBldmljdGFibGUgYW5kIHBhc3MgdGhhdCBvbiBhcyB3ZWxsLgorICAg
IGlmICghb3B0aW9ucy5pc1VuZGVmaW5lZE9yTnVsbCgpKQorICAgICAgICBvcHRpb25zLmdldCgi
YXV0b0luY3JlbWVudCIsIGF1dG9JbmNyZW1lbnQpOworCisgICAgaWYgKGF1dG9JbmNyZW1lbnQg
JiYgKChrZXlQYXRoLnR5cGUoKSA9PSBJREJLZXlQYXRoOjpTdHJpbmdUeXBlICYmIGtleVBhdGgu
c3RyaW5nKCkuaXNFbXB0eSgpKSB8fCBrZXlQYXRoLnR5cGUoKSA9PSBJREJLZXlQYXRoOjpBcnJh
eVR5cGUpKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVy
biAwOworICAgIH0KIAogICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+
IG9iamVjdFN0b3JlQmFja2VuZCA9IG1fYmFja2VuZC0+Y3JlYXRlT2JqZWN0U3RvcmUobmFtZSwg
a2V5UGF0aCwgYXV0b0luY3JlbWVudCwgbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPmJhY2tl
bmQoKSwgZWMpOwogICAgIGlmICghb2JqZWN0U3RvcmVCYWNrZW5kKSB7CmRpZmYgLS1naXQgYS9T
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
YjRhZDVjYmJiZjQ4MjY1OWQ0YTFiYS4uNDcxMDZlYWYwYTQ1Mjc2ZDc2NWU1ZTE5MzJmYTMxNWU2
NjA2NzY2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
S2V5UGF0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5
UGF0aC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNF
KQogCisjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBl
Lmg+CiAjaW5jbHVkZSA8d3RmL2R0b2EuaD4KIApAQCAtMTc5LDYgKzE4MCw0NCBAQCB2b2lkIElE
QlBhcnNlS2V5UGF0aChjb25zdCBTdHJpbmcmIGtleVBhdGgsIFZlY3RvcjxTdHJpbmc+JiBlbGVt
ZW50cywgSURCS2V5UGF0aAogICAgIH0KIH0KIAorYm9vbCBJREJLZXlQYXRoOjppc1ZhbGlkKCkg
Y29uc3QKK3sKKyAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAgIGNhc2UgTnVsbFR5cGU6CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGNhc2UgU3RyaW5nVHlwZToKKyAgICAgICAgcmV0dXJu
IElEQklzVmFsaWRLZXlQYXRoKG1fc3RyaW5nKTsKKworICAgIGNhc2UgQXJyYXlUeXBlOgorICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYXJyYXkuc2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgICAgIGlmICghSURCSXNWYWxpZEtleVBhdGgobV9hcnJheVtpXSkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0lEQktl
eVBhdGg6Om9wZXJhdG9yIFBhc3NSZWZQdHI8SURCQW55PigpIGNvbnN0Cit7CisgICAgc3dpdGNo
IChtX3R5cGUpIHsKKyAgICBjYXNlIE51bGxUeXBlOgorICAgICAgICByZXR1cm4gSURCQW55Ojpj
cmVhdGVOdWxsKCk7CisgICAgY2FzZSBTdHJpbmdUeXBlOgorICAgICAgICByZXR1cm4gSURCQW55
OjpjcmVhdGVTdHJpbmcobV9zdHJpbmcpOworICAgIGNhc2UgQXJyYXlUeXBlOgorICAgICAgICBS
ZWZQdHI8RE9NU3RyaW5nTGlzdD4ga2V5UGF0aHMgPSBET01TdHJpbmdMaXN0OjpjcmVhdGUoKTsK
KyAgICAgICAgZm9yIChWZWN0b3I8U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2FycmF5
LmJlZ2luKCk7IGl0ICE9IG1fYXJyYXkuZW5kKCk7ICsraXQpCisgICAgICAgIGtleVBhdGhzLT5h
cHBlbmQoKml0KTsKKyAgICAgICAgcmV0dXJuIElEQkFueTo6Y3JlYXRlKHN0YXRpY19jYXN0PFBh
c3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gPihrZXlQYXRocykpOworICAgIH0KKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKK30KKworCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGguaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGguaAppbmRleCBjNTJhNjNiYThjZDllMWRh
YmFlMzg0YzkwNTE3MDIyYThiNDRkMzFjLi5mYzcxNDc4ZjBhNmE2YTNiMDg3YWYwMjU2OGViZjVl
N2YxY2RmNTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJLZXlQYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5
UGF0aC5oCkBAIC0yOCwxMCArMjgsOSBAQAogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0Up
CiAKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CisjaW5jbHVkZSAiSURCQW55LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDUsNiArNDQsNDIgQEAgZW51bSBJREJLZXlQYXRo
UGFyc2VFcnJvciB7CiBib29sIElEQklzVmFsaWRLZXlQYXRoKGNvbnN0IFN0cmluZyYpOwogdm9p
ZCBJREJQYXJzZUtleVBhdGgoY29uc3QgU3RyaW5nJiwgVmVjdG9yPFN0cmluZz4mLCBJREJLZXlQ
YXRoUGFyc2VFcnJvciYpOwogCitjbGFzcyBJREJLZXlQYXRoIHsKK3B1YmxpYzoKKyAgICBJREJL
ZXlQYXRoKCkgOiBtX3R5cGUoTnVsbFR5cGUpIHsgfQorICAgIElEQktleVBhdGgoY29uc3QgU3Ry
aW5nJiBzdHJpbmcpIDogbV90eXBlKFN0cmluZ1R5cGUpLCBtX3N0cmluZyhzdHJpbmcpIHsgfQor
ICAgIElEQktleVBhdGgoY29uc3QgVmVjdG9yPFN0cmluZz4mIGFycmF5KSA6IG1fdHlwZShBcnJh
eVR5cGUpLCBtX2FycmF5KGFycmF5KSB7IH0KKworICAgIGVudW0gVHlwZSB7CisgICAgICAgIE51
bGxUeXBlID0gMCwKKyAgICAgICAgU3RyaW5nVHlwZSwKKyAgICAgICAgQXJyYXlUeXBlCisgICAg
fTsKKworICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorCisgICAgY29u
c3QgVmVjdG9yPFN0cmluZz4mIGFycmF5KCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVCht
X3R5cGUgPT0gQXJyYXlUeXBlKTsKKyAgICAgICAgcmV0dXJuIG1fYXJyYXk7CisgICAgfQorCisg
ICAgY29uc3QgU3RyaW5nJiBzdHJpbmcoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1f
dHlwZSA9PSBTdHJpbmdUeXBlKTsKKyAgICAgICAgcmV0dXJuIG1fc3RyaW5nOworICAgIH0KKwor
ICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IE51bGxUeXBlOyB9Cisg
ICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CisgICAgb3BlcmF0b3IgUGFzc1JlZlB0cjxJREJBbnk+
KCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgVHlwZSBtX3R5cGU7CisgICAgU3RyaW5nIG1fc3Ry
aW5nOworICAgIFZlY3RvcjxTdHJpbmc+IG1fYXJyYXk7Cit9OworCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCS2V5UGF0aEJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQktleVBhdGhCYWNrZW5kSW1wbC5jcHAKaW5kZXggOTRjN2YyNzkzNWNmYTM5
YWQzODgwMDEyYmU2MDliNmIxMjk1YmZiYS4uNjRhMWZiYzViZWQ3MGFjOTA4NWY1MzYzYjhhNmVk
OTNjMmEyODAxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCS2V5UGF0aEJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJLZXlQYXRoQmFja2VuZEltcGwuY3BwCkBAIC0zOCwxMiArMzgsMTIgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIElEQktleVBhdGhCYWNrZW5kSW1wbDo6Y3JlYXRl
SURCS2V5c0Zyb21TZXJpYWxpemVkVmFsdWVzQW5kS2V5UGF0aChjb25zdCBWZWN0b3I8UmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIDA+JiwgY29uc3QgU3RyaW5nJiwgVmVjdG9yPFJlZlB0
cjxJREJLZXk+LCAwPiYpCit2b2lkIElEQktleVBhdGhCYWNrZW5kSW1wbDo6Y3JlYXRlSURCS2V5
c0Zyb21TZXJpYWxpemVkVmFsdWVzQW5kS2V5UGF0aChjb25zdCBWZWN0b3I8UmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4sIDA+JiwgY29uc3QgSURCS2V5UGF0aCYsIFZlY3RvcjxSZWZQdHI8
SURCS2V5PiwgMD4mKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBtZXRob2Qgb25j
ZSBKU0Mgc3VwcG9ydHMgV2lyZUZvcm1hdCBmb3IgU2VyaWFsaXplZFNjcmlwdFZhbHVlLgogfQog
Ci1QYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gSURCS2V5UGF0aEJhY2tlbmRJbXBs
OjppbmplY3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKFBhc3NSZWZQdHI8SURCS2V5PiwgUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBjb25zdCBTdHJpbmcmKQorUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IElEQktleVBhdGhCYWNrZW5kSW1wbDo6aW5qZWN0SURC
S2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiwgY29uc3QgSURCS2V5UGF0aCYpCiB7CiAgICAgLy8gRklYTUU6
IEltcGxlbWVudCB0aGlzIG1ldGhvZCBvbmNlIEpTQyBzdXBwb3J0cyBXaXJlRm9ybWF0IGZvciBT
ZXJpYWxpemVkU2NyaXB0VmFsdWUuCiAgICAgcmV0dXJuIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCS2V5UGF0aEJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJLZXlQYXRoQmFja2VuZEltcGwuaAppbmRleCAxYzc2MjMyMjE3ZmY1MGU0ZjBkOTc5
OGY1N2NmNDI0Y2RkM2MxMWZkLi4wZjA1N2ViMmJjNzMyNTFmN2FkNWYxZjA1MDk5MDFlZGNlNTE4
OTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQ
YXRoQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJLZXlQYXRoQmFja2VuZEltcGwuaApAQCAtMzMsMTIgKzMzLDEzIEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIElEQktleTsKK2NsYXNzIElEQktleVBhdGg7CiBjbGFzcyBTZXJpYWxp
emVkU2NyaXB0VmFsdWU7CiAKIGNsYXNzIElEQktleVBhdGhCYWNrZW5kSW1wbCB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIHZvaWQgY3JlYXRlSURCS2V5c0Zyb21TZXJpYWxpemVkVmFsdWVzQW5kS2V5
UGF0aChjb25zdCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIDA+JiB2YWx1
ZXMsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgVmVjdG9yPFJlZlB0cjxJREJLZXk+LCAwPiYga2V5
cyk7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBpbmplY3RJ
REJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBjb25zdCBTdHJpbmcmIGtleVBhdGgpOworICAgIHN0YXRp
YyB2b2lkIGNyZWF0ZUlEQktleXNGcm9tU2VyaWFsaXplZFZhbHVlc0FuZEtleVBhdGgoY29uc3Qg
VmVjdG9yPFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCAwPiYgdmFsdWVzLCBjb25zdCBJ
REJLZXlQYXRoJiwgVmVjdG9yPFJlZlB0cjxJREJLZXk+LCAwPiYga2V5cyk7CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBpbmplY3RJREJLZXlJbnRvU2VyaWFs
aXplZFZhbHVlKFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+LCBjb25zdCBJREJLZXlQYXRoJik7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3Bw
CmluZGV4IGRjZjNhOGFhNzAwMzE0MzcxNzgxYzkzNDdiNzI4ZTBiMDYzY2I1YzYuLjkwM2MyNzNi
Nzc4MmFmNTQzNzJmODZiYzdlMjc4NzM1YmEwZDg4YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3Bw
CkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRl
ICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgiCisjaW5j
bHVkZSAiSURCS2V5UGF0aC5oIgogI2luY2x1ZGUgIklEQktleVJhbmdlLmgiCiAjaW5jbHVkZSAi
SURCTGV2ZWxEQkNvZGluZy5oIgogI2luY2x1ZGUgIkxldmVsREJDb21wYXJhdG9yLmgiCkBAIC04
MSw2ICs4MiwxNCBAQCBzdGF0aWMgYm9vbCBwdXRTdHJpbmcoREJPclRyYW5zYWN0aW9uKiBkYiwg
Y29uc3QgVmVjdG9yPGNoYXI+IGtleSwgY29uc3QgU3RyaW5nJgogICAgIHJldHVybiB0cnVlOwog
fQogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgREJPclRyYW5zYWN0aW9uPgorc3RhdGljIGJvb2wgcHV0
SURCS2V5UGF0aChEQk9yVHJhbnNhY3Rpb24qIGRiLCBjb25zdCBWZWN0b3I8Y2hhcj4ga2V5LCBj
b25zdCBJREJLZXlQYXRoJiB2YWx1ZSkKK3sKKyAgICBpZiAoIWRiLT5wdXQoa2V5LCBlbmNvZGVJ
REJLZXlQYXRoKHZhbHVlKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwogc3RhdGljIGludCBjb21wYXJlS2V5cyhjb25zdCBMZXZlbERCU2xpY2UmIGEsIGNv
bnN0IExldmVsREJTbGljZSYgYikKIHsKICAgICByZXR1cm4gY29tcGFyZShhLCBiKTsKQEAgLTMx
MSw3ICszMjAsNyBAQCBzdGF0aWMgYm9vbCBjaGVja09iamVjdFN0b3JlQW5kTWV0YURhdGFUeXBl
KGNvbnN0IExldmVsREJJdGVyYXRvciogaXQsIGNvbnN0IFZlYwogICAgIHJldHVybiB0cnVlOwog
fQogCi12b2lkIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmdldE9iamVjdFN0b3JlcyhpbnQ2NF90
IGRhdGFiYXNlSWQsIFZlY3RvcjxpbnQ2NF90PiYgZm91bmRJZHMsIFZlY3RvcjxTdHJpbmc+JiBm
b3VuZE5hbWVzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmRLZXlQYXRocywgVmVjdG9yPGJvb2w+JiBm
b3VuZEF1dG9JbmNyZW1lbnRGbGFncykKK3ZvaWQgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0
T2JqZWN0U3RvcmVzKGludDY0X3QgZGF0YWJhc2VJZCwgVmVjdG9yPGludDY0X3Q+JiBmb3VuZElk
cywgVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMsIFZlY3RvcjxJREJLZXlQYXRoPiYgZm91bmRL
ZXlQYXRocywgVmVjdG9yPGJvb2w+JiBmb3VuZEF1dG9JbmNyZW1lbnRGbGFncykKIHsKICAgICBj
b25zdCBWZWN0b3I8Y2hhcj4gc3RhcnRLZXkgPSBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjplbmNv
ZGUoZGF0YWJhc2VJZCwgMSwgMCk7CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+IHN0b3BLZXkgPSBP
YmplY3RTdG9yZU1ldGFEYXRhS2V5OjplbmNvZGVNYXhLZXkoZGF0YWJhc2VJZCk7CkBAIC0zNDMs
NyArMzUyLDcgQEAgdm9pZCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRPYmplY3RTdG9yZXMo
aW50NjRfdCBkYXRhYmFzZUlkLCBWZWN0b3I8aW50NjRfdD4KICAgICAgICAgICAgIExPR19FUlJP
UigiSW50ZXJuYWwgSW5kZXhlZCBEQiBlcnJvci4iKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQotICAgICAgICBTdHJpbmcga2V5UGF0aCA9IGRlY29kZVN0cmluZyhpdC0+dmFsdWUo
KS5iZWdpbigpLCBpdC0+dmFsdWUoKS5lbmQoKSk7CisgICAgICAgIElEQktleVBhdGgga2V5UGF0
aCA9IGRlY29kZUlEQktleVBhdGgoaXQtPnZhbHVlKCkuYmVnaW4oKSwgaXQtPnZhbHVlKCkuZW5k
KCkpOwogICAgICAgICBib29sIGhhc0tleVBhdGggPSB0cnVlOwogCiAgICAgICAgIGl0LT5uZXh0
KCk7CkBAIC0zNzYsMTYgKzM4NSwyMiBAQCB2b2lkIElEQkxldmVsREJCYWNraW5nU3RvcmU6Omdl
dE9iamVjdFN0b3JlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIFZlY3RvcjxpbnQ2NF90PgogICAgICAg
ICBpZiAoY2hlY2tPYmplY3RTdG9yZUFuZE1ldGFEYXRhVHlwZShpdC5nZXQoKSwgc3RvcEtleSwg
b2JqZWN0U3RvcmVJZCwgNikpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgZW5jb2RlL2Rl
Y29kZSBmdW5jdGlvbnMgZm9yIGJvb2xzLgogICAgICAgICAgICAgaGFzS2V5UGF0aCA9ICppdC0+
dmFsdWUoKS5iZWdpbigpOwotICAgICAgICAgICAgaWYgKCFoYXNLZXlQYXRoICYmICFrZXlQYXRo
LmlzRW1wdHkoKSkgeworICAgICAgICAgICAgLy8gVGhpcyBjaGVjayBhY2NvdW50cyBmb3IgdHdv
IGxheWVycyBvZiBsZWdhY3kgY29kaW5nOgorICAgICAgICAgICAgLy8gKDEpIEluaXRpYWxseSwg
aGFzS2V5UGF0aCB3YXMgYWRkZWQgdG8gZGlzdGluZ3Vpc2ggbnVsbCB2cy4gc3RyaW5nLgorICAg
ICAgICAgICAgLy8gKDIpIExhdGVyLCBudWxsIHZzLiBzdHJpbmcgdnMuIGFycmF5IHdhcyBzdG9y
ZWQgaW4gdGhlIGtleVBhdGggaXRzZWxmLgorICAgICAgICAgICAgLy8gU28gdGhpcyBjaGVjayBp
cyBvbmx5IHJlbGV2YW50IGZvciBzdHJpbmctdHlwZSBrZXlQYXRocy4KKyAgICAgICAgICAgIGlm
ICghaGFzS2V5UGF0aCAmJiAoa2V5UGF0aC50eXBlKCkgPT0gSURCS2V5UGF0aDo6U3RyaW5nVHlw
ZSAmJiAha2V5UGF0aC5zdHJpbmcoKS5pc0VtcHR5KCkpKSB7CiAgICAgICAgICAgICAgICAgTE9H
X0VSUk9SKCJJbnRlcm5hbCBJbmRleGVkIERCIGVycm9yLiIpOwogICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghaGFzS2V5UGF0aCkKKyAgICAg
ICAgICAgICAgICBrZXlQYXRoID0gSURCS2V5UGF0aCgpOwogICAgICAgICAgICAgaXQtPm5leHQo
KTsKICAgICAgICAgfQogCiAgICAgICAgIGZvdW5kSWRzLmFwcGVuZChvYmplY3RTdG9yZUlkKTsK
ICAgICAgICAgZm91bmROYW1lcy5hcHBlbmQob2JqZWN0U3RvcmVOYW1lKTsKLSAgICAgICAgZm91
bmRLZXlQYXRocy5hcHBlbmQoaGFzS2V5UGF0aCA/IGtleVBhdGggOiBTdHJpbmcoKSk7CisgICAg
ICAgIGZvdW5kS2V5UGF0aHMuYXBwZW5kKGtleVBhdGgpOwogICAgICAgICBmb3VuZEF1dG9JbmNy
ZW1lbnRGbGFncy5hcHBlbmQoYXV0b0luY3JlbWVudCk7CiAgICAgfQogfQpAQCAtNDA2LDcgKzQy
MSw3IEBAIHN0YXRpYyBpbnQ2NF90IGdldE5ld09iamVjdFN0b3JlSWQoTGV2ZWxEQlRyYW5zYWN0
aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhCiAgICAgcmV0dXJuIG9iamVjdFN0b3JlSWQ7
CiB9CiAKLWJvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUoaW50
NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0
aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBpbnQ2NF90JiBhc3NpZ25lZE9iamVjdFN0b3JlSWQpCiti
b29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKGludDY0X3QgZGF0
YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBi
b29sIGF1dG9JbmNyZW1lbnQsIGludDY0X3QmIGFzc2lnbmVkT2JqZWN0U3RvcmVJZCkKIHsKICAg
ICBBU1NFUlQobV9jdXJyZW50VHJhbnNhY3Rpb24pOwogICAgIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCA9IGdldE5ld09iamVjdFN0b3JlSWQobV9jdXJyZW50VHJhbnNhY3Rpb24uZ2V0KCksIGRhdGFi
YXNlSWQpOwpAQCAtNDI4LDcgKzQ0Myw3IEBAIGJvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6
Y3JlYXRlT2JqZWN0U3RvcmUoaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBvayA9IHB1dFN0cmluZyhtX2N1cnJlbnRU
cmFuc2FjdGlvbi5nZXQoKSwga2V5UGF0aEtleSwga2V5UGF0aCk7CisgICAgb2sgPSBwdXRJREJL
ZXlQYXRoKG1fY3VycmVudFRyYW5zYWN0aW9uLmdldCgpLCBrZXlQYXRoS2V5LCBrZXlQYXRoKTsK
ICAgICBpZiAoIW9rKSB7CiAgICAgICAgIExPR19FUlJPUigiSW50ZXJuYWwgSW5kZXhlZCBEQiBl
cnJvci4iKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjk4LDcgKzcxMyw3IEBAIHN0YXRp
YyBib29sIGNoZWNrSW5kZXhBbmRNZXRhRGF0YUtleShjb25zdCBMZXZlbERCSXRlcmF0b3IqIGl0
LCBjb25zdCBWZWN0b3I8Y2hhCiB9CiAKIAotdm9pZCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpn
ZXRJbmRleGVzKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBWZWN0
b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcywgVmVjdG9y
PFN0cmluZz4mIGZvdW5kS2V5UGF0aHMsIFZlY3Rvcjxib29sPiYgZm91bmRVbmlxdWVGbGFncywg
VmVjdG9yPGJvb2w+JiBmb3VuZE11bHRpRW50cnlGbGFncykKK3ZvaWQgSURCTGV2ZWxEQkJhY2tp
bmdTdG9yZTo6Z2V0SW5kZXhlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgVmVjdG9yPGludDY0X3Q+JiBmb3VuZElkcywgVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFt
ZXMsIFZlY3RvcjxJREJLZXlQYXRoPiYgZm91bmRLZXlQYXRocywgVmVjdG9yPGJvb2w+JiBmb3Vu
ZFVuaXF1ZUZsYWdzLCBWZWN0b3I8Ym9vbD4mIGZvdW5kTXVsdGlFbnRyeUZsYWdzKQogewogICAg
IGNvbnN0IFZlY3RvcjxjaGFyPiBzdGFydEtleSA9IEluZGV4TWV0YURhdGFLZXk6OmVuY29kZShk
YXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCAwLCAwKTsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4g
c3RvcEtleSA9IEluZGV4TWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9y
ZUlkICsgMSwgMCwgMCk7CkBAIC03MzcsNyArNzUyLDggQEAgdm9pZCBJREJMZXZlbERCQmFja2lu
Z1N0b3JlOjpnZXRJbmRleGVzKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUkKICAgICAgICAgICAgIExPR19FUlJPUigiSW50ZXJuYWwgSW5kZXhlZCBEQiBlcnJvci4iKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBTdHJpbmcga2V5UGF0aCA9
IGRlY29kZVN0cmluZyhpdC0+dmFsdWUoKS5iZWdpbigpLCBpdC0+dmFsdWUoKS5lbmQoKSk7CisK
KyAgICAgICAgSURCS2V5UGF0aCBrZXlQYXRoID0gZGVjb2RlSURCS2V5UGF0aChpdC0+dmFsdWUo
KS5iZWdpbigpLCBpdC0+dmFsdWUoKS5lbmQoKSk7CiAKICAgICAgICAgaXQtPm5leHQoKTsgLy8g
W29wdGlvbmFsXSBtdWx0aUVudHJ5IGZsYWcKICAgICAgICAgYm9vbCBpbmRleE11bHRpRW50cnkg
PSBmYWxzZTsKQEAgLTc3MSw3ICs3ODcsNyBAQCBzdGF0aWMgaW50NjRfdCBnZXROZXdJbmRleElk
KExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZAogICAg
IHJldHVybiBpbmRleElkOwogfQogCi1ib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0
ZUluZGV4KGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBpc1VuaXF1ZSwgYm9vbCBp
c011bHRpRW50cnksIGludDY0X3QmIGluZGV4SWQpCitib29sIElEQkxldmVsREJCYWNraW5nU3Rv
cmU6OmNyZWF0ZUluZGV4KGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgaXNV
bmlxdWUsIGJvb2wgaXNNdWx0aUVudHJ5LCBpbnQ2NF90JiBpbmRleElkKQogewogICAgIEFTU0VS
VChtX2N1cnJlbnRUcmFuc2FjdGlvbik7CiAgICAgaW5kZXhJZCA9IGdldE5ld0luZGV4SWQobV9j
dXJyZW50VHJhbnNhY3Rpb24uZ2V0KCksIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQpOwpAQCAt
Nzk1LDcgKzgxMSw3IEBAIGJvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgo
aW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKLSAgICBvayA9IHB1dFN0cmluZyhtX2N1cnJlbnRUcmFuc2FjdGlvbi5n
ZXQoKSwga2V5UGF0aEtleSwga2V5UGF0aCk7CisgICAgb2sgPSBwdXRJREJLZXlQYXRoKG1fY3Vy
cmVudFRyYW5zYWN0aW9uLmdldCgpLCBrZXlQYXRoS2V5LCBrZXlQYXRoKTsKICAgICBpZiAoIW9r
KSB7CiAgICAgICAgIExPR19FUlJPUigiSW50ZXJuYWwgSW5kZXhlZCBEQiBlcnJvci4iKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oCmluZGV4IDI0ZDQzOWQ3NjYxMzEx
M2VlMTg0ZjRlNTUwMTY3MTdlN2QyOTY2MjYuLmIzYmI2N2Y3M2QxOGM3N2I3ODYxNjkxMzUzNTc2
M2Q1M2JiNTc3YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkxldmVsREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmgKQEAgLTUwLDggKzUwLDggQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVJREJEYXRhYmFzZU1ldGFEYXRhKGludDY0X3Qgcm93
SWQsIGNvbnN0IFN0cmluZyYgdmVyc2lvbik7CiAgICAgdmlydHVhbCBib29sIGRlbGV0ZURhdGFi
YXNlKGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0T2JqZWN0U3Rv
cmVzKGludDY0X3QgZGF0YWJhc2VJZCwgVmVjdG9yPGludDY0X3Q+JiBmb3VuZElkcywgVmVjdG9y
PFN0cmluZz4mIGZvdW5kTmFtZXMsIFZlY3RvcjxTdHJpbmc+JiBmb3VuZEtleVBhdGhzLCBWZWN0
b3I8Ym9vbD4mIGZvdW5kQXV0b0luY3JlbWVudEZsYWdzKTsKLSAgICB2aXJ0dWFsIGJvb2wgY3Jl
YXRlT2JqZWN0U3RvcmUoaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBpbnQ2NF90JiBhc3NpZ25l
ZE9iamVjdFN0b3JlSWQpOworICAgIHZpcnR1YWwgdm9pZCBnZXRPYmplY3RTdG9yZXMoaW50NjRf
dCBkYXRhYmFzZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYg
Zm91bmROYW1lcywgVmVjdG9yPElEQktleVBhdGg+JiBmb3VuZEtleVBhdGhzLCBWZWN0b3I8Ym9v
bD4mIGZvdW5kQXV0b0luY3JlbWVudEZsYWdzKTsKKyAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlT2Jq
ZWN0U3RvcmUoaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElE
QktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQsIGludDY0X3QmIGFzc2lnbmVkT2JqZWN0U3Rv
cmVJZCk7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGludDY0X3QgZGF0YWJh
c2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8T2Jq
ZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyPiBjcmVhdGVJbnZhbGlkUmVjb3JkSWRlbnRpZmllcigp
OwogICAgIHZpcnR1YWwgU3RyaW5nIGdldE9iamVjdFN0b3JlUmVjb3JkKGludDY0X3QgZGF0YWJh
c2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkmKTsKQEAgLTYzLDggKzYz
LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGZvckVhY2hPYmplY3RTdG9yZVJlY29y
ZChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgT2JqZWN0U3RvcmVS
ZWNvcmRDYWxsYmFjayYpOwogCi0gICAgdmlydHVhbCB2b2lkIGdldEluZGV4ZXMoaW50NjRfdCBk
YXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFZlY3RvcjxpbnQ2NF90PiYgZm91bmRJ
ZHMsIFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmRLZXlQ
YXRocywgVmVjdG9yPGJvb2w+JiBmb3VuZFVuaXF1ZUZsYWdzLCBWZWN0b3I8Ym9vbD4mIGZvdW5k
TXVsdGlFbnRyeUZsYWdzKTsKLSAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlSW5kZXgoaW50NjRfdCBk
YXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGlzVW5pcXVlLCBib29sIGlzTXVsdGlFbnRyeSwgaW50
NjRfdCYgaW5kZXhJZCk7CisgICAgdmlydHVhbCB2b2lkIGdldEluZGV4ZXMoaW50NjRfdCBkYXRh
YmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFZlY3RvcjxpbnQ2NF90PiYgZm91bmRJZHMs
IFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzLCBWZWN0b3I8SURCS2V5UGF0aD4mIGZvdW5kS2V5
UGF0aHMsIFZlY3Rvcjxib29sPiYgZm91bmRVbmlxdWVGbGFncywgVmVjdG9yPGJvb2w+JiBmb3Vu
ZE11bHRpRW50cnlGbGFncyk7CisgICAgdmlydHVhbCBib29sIGNyZWF0ZUluZGV4KGludDY0X3Qg
ZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IElEQktleVBhdGgmLCBib29sIGlzVW5pcXVlLCBib29sIGlzTXVsdGlFbnRyeSwgaW50NjRf
dCYgaW5kZXhJZCk7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUluZGV4KGludDY0X3QgZGF0YWJh
c2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQpOwogICAgIHZpcnR1
YWwgYm9vbCBwdXRJbmRleERhdGFGb3JSZWNvcmQoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiwgY29uc3QgT2Jq
ZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyKik7CiAgICAgdmlydHVhbCBib29sIGRlbGV0ZUluZGV4
RGF0YUZvclJlY29yZChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwg
aW50NjRfdCBpbmRleElkLCBjb25zdCBPYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXIqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2Rp
bmcuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGlu
Zy5jcHAKaW5kZXggZjAyNjNmODlmM2U4ZGY2NmJlYzE4M2RhMGZhYWUyY2NiNWQ1YzczOC4uOWJm
ODYxNDk1YjBjNjdmYmI4ZGI4Y2IxYWRkZDIxOWYwMDQ3MzlhOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAKQEAgLTMw
LDYgKzMwLDcgQEAKICNpZiBVU0UoTEVWRUxEQikKIAogI2luY2x1ZGUgIklEQktleS5oIgorI2lu
Y2x1ZGUgIklEQktleVBhdGguaCIKICNpbmNsdWRlICJMZXZlbERCU2xpY2UuaCIKICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKQEAgLTEzNSw2ICsxMzYsOCBAQCBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgY2hhciBrSURCS2V5TnVtYmVyVHlwZUJ5dGUgPSAzOwogc3RhdGljIGNv
bnN0IHVuc2lnbmVkIGNoYXIga0lEQktleUFycmF5VHlwZUJ5dGUgPSA0Owogc3RhdGljIGNvbnN0
IHVuc2lnbmVkIGNoYXIga0lEQktleU1pbktleVR5cGVCeXRlID0gNTsKIAorc3RhdGljIGNvbnN0
IHVuc2lnbmVkIGNoYXIga0lEQktleVBhdGhUeXBlQ29kZWRCeXRlID0gMDsKKwogc3RhdGljIGNv
bnN0IHVuc2lnbmVkIGNoYXIga09iamVjdFN0b3JlRGF0YUluZGV4SWQgPSAxOwogc3RhdGljIGNv
bnN0IHVuc2lnbmVkIGNoYXIga0V4aXN0c0VudHJ5SW5kZXhJZCA9IDI7CiAKQEAgLTYyMCw2ICs2
MjMsNzMgQEAgaW50IGNvbXBhcmVFbmNvZGVkSURCS2V5cyhjb25zdCBWZWN0b3I8Y2hhcj4mIGtl
eUEsIGNvbnN0IFZlY3RvcjxjaGFyPiYga2V5QikKICAgICByZXR1cm4gY29tcGFyZUVuY29kZWRJ
REJLZXlzKHAsIGxpbWl0QSwgcSwgbGltaXRCKTsKIH0KIAorVmVjdG9yPGNoYXI+IGVuY29kZUlE
QktleVBhdGgoY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCkKK3sKKyAgICAvLyBNYXkgYmUgdHlw
ZWQsIG9yIG1heSBiZSBhIHJhdyBzdHJpbmcuIEFuIGludmFsaWQgbGVhZGluZworICAgIC8vIGJ5
dGUgaXMgdXNlZCB0byBpZGVudGlmeSB0eXBlZCBjb2RpbmcuIE5ldyByZWNvcmRzIGFyZQorICAg
IC8vIGFsd2F5cyB3cml0dGVuIGFzIHR5cGVkLgorICAgIFZlY3RvcjxjaGFyPiByZXQ7CisgICAg
cmV0LmFwcGVuZChrSURCS2V5UGF0aFR5cGVDb2RlZEJ5dGUpOworICAgIHJldC5hcHBlbmQoc3Rh
dGljX2Nhc3Q8Y2hhcj4oa2V5UGF0aC50eXBlKCkpKTsKKyAgICBzd2l0Y2ggKGtleVBhdGgudHlw
ZSgpKSB7CisgICAgY2FzZSBJREJLZXlQYXRoOjpOdWxsVHlwZToKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBJREJLZXlQYXRoOjpTdHJpbmdUeXBlOgorICAgICAgICByZXQuYXBwZW5kKGVuY29k
ZVN0cmluZyhrZXlQYXRoLnN0cmluZygpKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSURC
S2V5UGF0aDo6QXJyYXlUeXBlOgorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgYXJyYXkgPSBrZXlQYXRoLmFycmF5KCk7CisgICAgICAgICAgICBzaXplX3QgY291
bnQgPSBhcnJheS5zaXplKCk7CisgICAgICAgICAgICByZXQuYXBwZW5kKGVuY29kZVZhckludChj
b3VudCkpOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKQor
ICAgICAgICAgICAgICAgIHJldC5hcHBlbmQoZW5jb2RlU3RyaW5nV2l0aExlbmd0aChhcnJheVtp
XSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJl
dDsKK30KKworSURCS2V5UGF0aCBkZWNvZGVJREJLZXlQYXRoKGNvbnN0IGNoYXIqIHAsIGNvbnN0
IGNoYXIqIGxpbWl0KQoreworICAgIC8vIE1heSBiZSB0eXBlZCwgb3IgbWF5IGJlIGEgcmF3IHN0
cmluZy4gQW4gaW52YWxpZCBsZWFkaW5nCisgICAgLy8gYnl0ZSBpcyB1c2VkIHRvIGlkZW50aWZ5
IHR5cGVkIGNvZGluZy4gTmV3IHJlY29yZHMgYXJlCisgICAgLy8gYWx3YXlzIHdyaXR0ZW4gYXMg
dHlwZWQuCisgICAgaWYgKHAgPT0gbGltaXQgfHwgKnAgIT0ga0lEQktleVBhdGhUeXBlQ29kZWRC
eXRlKQorICAgICAgICByZXR1cm4gSURCS2V5UGF0aChkZWNvZGVTdHJpbmcocCwgbGltaXQpKTsK
KworICAgICsrcDsKKyAgICBBU1NFUlQocCAhPSBsaW1pdCk7CisgICAgSURCS2V5UGF0aDo6VHlw
ZSB0eXBlID0gc3RhdGljX2Nhc3Q8SURCS2V5UGF0aDo6VHlwZT4oKnArKyk7CisgICAgc3dpdGNo
ICh0eXBlKSB7CisgICAgY2FzZSBJREJLZXlQYXRoOjpOdWxsVHlwZToKKyAgICAgICAgQVNTRVJU
KHAgPT0gbGltaXQpOworICAgICAgICByZXR1cm4gSURCS2V5UGF0aCgpOworICAgIGNhc2UgSURC
S2V5UGF0aDo6U3RyaW5nVHlwZToKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIElEQktl
eVBhdGgoZGVjb2RlU3RyaW5nKHAsIGxpbWl0KSk7CisgICAgICAgIH0KKyAgICBjYXNlIElEQktl
eVBhdGg6OkFycmF5VHlwZToKKyAgICAgICAgeworICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4g
YXJyYXk7CisgICAgICAgICAgICBpbnQ2NF90IGNvdW50OworICAgICAgICAgICAgcCA9IGRlY29k
ZVZhckludChwLCBsaW1pdCwgY291bnQpOworICAgICAgICAgICAgQVNTRVJUKHApOworICAgICAg
ICAgICAgQVNTRVJUKGNvdW50ID49IDApOworICAgICAgICAgICAgd2hpbGUgKGNvdW50LS0pIHsK
KyAgICAgICAgICAgICAgICBTdHJpbmcgc3RyaW5nOworICAgICAgICAgICAgICAgIHAgPSBkZWNv
ZGVTdHJpbmdXaXRoTGVuZ3RoKHAsIGxpbWl0LCBzdHJpbmcpOworICAgICAgICAgICAgICAgIEFT
U0VSVChwKTsKKyAgICAgICAgICAgICAgICBhcnJheS5hcHBlbmQoc3RyaW5nKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIEFTU0VSVChwID09IGxpbWl0KTsKKyAgICAgICAgICAgIHJldHVy
biBJREJLZXlQYXRoKGFycmF5KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gSURCS2V5UGF0aCgpOworfQorCiBuYW1lc3BhY2UgewogdGVt
cGxhdGU8dHlwZW5hbWUgS2V5VHlwZT4KIGludCBkZWNvZGVBbmRDb21wYXJlKGNvbnN0IExldmVs
REJTbGljZSYgYSwgY29uc3QgTGV2ZWxEQlNsaWNlJiBiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5oCmluZGV4IDE0YzQyZWE3MzM2
MWI0MDIwNmRhYzRkMGRmZDE3NjQwNzkwZWNjZmEuLmJkZmY2YjVlZmNkZjgzZGI1OWQ4YTJlNWUz
N2U5NDY0ZmE5NWU3MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkxldmVsREJDb2RpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJMZXZlbERCQ29kaW5nLmgKQEAgLTM2LDYgKzM2LDcgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgSURCS2V5OworY2xhc3MgSURCS2V5UGF0aDsKIGNsYXNzIExldmVsREJT
bGljZTsKIAogbmFtZXNwYWNlIElEQkxldmVsREJDb2RpbmcgewpAQCAtNjEsNiArNjIsOCBAQCBW
ZWN0b3I8Y2hhcj4gZW5jb2RlSURCS2V5KGNvbnN0IElEQktleSYpOwogY29uc3QgY2hhciogZGVj
b2RlSURCS2V5KGNvbnN0IGNoYXIqIHAsIGNvbnN0IGNoYXIqIGxpbWl0LCBSZWZQdHI8SURCS2V5
PiYgZm91bmRLZXkpOwogY29uc3QgY2hhciogZXh0cmFjdEVuY29kZWRJREJLZXkoY29uc3QgY2hh
ciogc3RhcnQsIGNvbnN0IGNoYXIqIGxpbWl0LCBWZWN0b3I8Y2hhcj4qIHJlc3VsdCk7CiBpbnQg
Y29tcGFyZUVuY29kZWRJREJLZXlzKGNvbnN0IFZlY3RvcjxjaGFyPiYsIGNvbnN0IFZlY3Rvcjxj
aGFyPiYpOworVmVjdG9yPGNoYXI+IGVuY29kZUlEQktleVBhdGgoY29uc3QgSURCS2V5UGF0aCYp
OworSURCS2V5UGF0aCBkZWNvZGVJREJLZXlQYXRoKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKik7
CiAKIGludCBjb21wYXJlKGNvbnN0IExldmVsREJTbGljZSYsIGNvbnN0IExldmVsREJTbGljZSYs
IGJvb2wgaW5kZXhLZXlzID0gZmFsc2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKaW5kZXggNDMxOWQ3ZjBhOTM4ZGE1Zjdk
NzcwNmYwY2JiZDg2YjU2MjkwN2ZiOS4uNTFmZTJjNjFjNTk1ZThlZDg3YTc0OTVhZjhmOTE0NTc1
NGM4NzcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
T2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
Qk9iamVjdFN0b3JlLmNwcApAQCAtNjAsNyArNjAsNyBAQCBTdHJpbmcgSURCT2JqZWN0U3RvcmU6
Om5hbWUoKSBjb25zdAogICAgIHJldHVybiBtX2JhY2tlbmQtPm5hbWUoKTsKIH0KIAotU3RyaW5n
IElEQk9iamVjdFN0b3JlOjprZXlQYXRoKCkgY29uc3QKK1Bhc3NSZWZQdHI8SURCQW55PiBJREJP
YmplY3RTdG9yZTo6a2V5UGF0aCgpIGNvbnN0CiB7CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RT
dG9yZTo6a2V5UGF0aCIpOwogICAgIHJldHVybiBtX2JhY2tlbmQtPmtleVBhdGgoKTsKQEAgLTIw
NSw5ICsyMDUsMjMgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Y2xl
YXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXgKIAogUGFzc1JlZlB0cjxJREJJ
bmRleD4gSURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgU3RyaW5nJiBrZXlQYXRoLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBFeGNlcHRpb25D
b2RlJiBlYykKIHsKKyAgICByZXR1cm4gY3JlYXRlSW5kZXgobmFtZSwgSURCS2V5UGF0aChrZXlQ
YXRoKSwgb3B0aW9ucywgZWMpOworfQorCitQYXNzUmVmUHRyPElEQkluZGV4PiBJREJPYmplY3RT
dG9yZTo6Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPERPTVN0cmlu
Z0xpc3Q+IGtleVBhdGgsIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIEV4Y2VwdGlvbkNvZGUm
IGVjKQoreworICAgIC8vIEZJWE1FOiBCaW5kaW5nIGNvZGUgZm9yIERPTVN0cmluZ1tdIHNob3Vs
ZCBub3QgbWF0Y2ggbnVsbC4gaHR0cDovL3dlYmtpdC5vcmcvYi84NDIxNworICAgIGlmICgha2V5
UGF0aCkKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUluZGV4KG5hbWUsIElEQktleVBhdGgoIm51bGwi
KSwgb3B0aW9ucywgZWMpOworICAgIHJldHVybiBjcmVhdGVJbmRleChuYW1lLCBJREJLZXlQYXRo
KCprZXlQYXRoKSwgb3B0aW9ucywgZWMpOworfQorCisKK1Bhc3NSZWZQdHI8SURCSW5kZXg+IElE
Qk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktl
eVBhdGgmIGtleVBhdGgsIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIEV4Y2VwdGlvbkNvZGUm
IGVjKQorewogICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4Iik7Ci0g
ICAgaWYgKCFJREJJc1ZhbGlkS2V5UGF0aChrZXlQYXRoKSkgewotICAgICAgICBlYyA9IElEQkRh
dGFiYXNlRXhjZXB0aW9uOjpOT05fVFJBTlNJRU5UX0VSUjsKKyAgICBpZiAoIWtleVBhdGguaXNW
YWxpZCgpKSB7CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgfQogCkBAIC0yMTcsNyArMjMxLDEwIEBAIFBhc3NSZWZQdHI8SURCSW5kZXg+IElEQk9iamVj
dFN0b3JlOjpjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluCiAgICAg
Ym9vbCBtdWx0aUVudHJ5ID0gZmFsc2U7CiAgICAgb3B0aW9ucy5nZXQoIm11bHRpRW50cnkiLCBt
dWx0aUVudHJ5KTsKIAotICAgIC8vIEZJWE1FOiBXaGVuIEFycmF5LXR5cGUga2V5UGF0aHMgYXJl
IHN1cHBvcnRlZCwgdGhyb3cgZXhjZXB0aW9uIGlmIGtleVBhdGggaXMgQXJyYXkgYW5kIG11bHRp
RW50cnkgaXMgdHJ1ZS4KKyAgICBpZiAoa2V5UGF0aC50eXBlKCkgPT0gSURCS2V5UGF0aDo6QXJy
YXlUeXBlICYmIG11bHRpRW50cnkpIHsKKyAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogCiAgICAgUmVmUHRyPElEQkluZGV4QmFja2VuZElu
dGVyZmFjZT4gaW5kZXhCYWNrZW5kID0gbV9iYWNrZW5kLT5jcmVhdGVJbmRleChuYW1lLCBrZXlQ
YXRoLCB1bmlxdWUsIG11bHRpRW50cnksIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMpOwog
ICAgIEFTU0VSVCghaW5kZXhCYWNrZW5kICE9ICFlYyk7IC8vIElmIHdlIGRpZG4ndCBnZXQgYW4g
aW5kZXgsIHdlIHNob3VsZCBoYXZlIGdvdHRlbiBhbiBleGNlcHRpb24gY29kZS4gQW5kIHZpY2Ug
dmVyc2EuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJP
YmplY3RTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmUuaAppbmRleCA1ZDRkMThkYzA2NTljNGIzOTIwOGRkNjgyOTFiNTExMjk0M2NjZjkwLi4z
MmRjZTZhODlmYzBiNWI3MDA3NjA2MGQ0NzhlNDdiNDhkYTM0NzdlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmgKQEAgLTU2LDE0ICs1
NiwxMiBAQCBwdWJsaWM6CiAgICAgfklEQk9iamVjdFN0b3JlKCkgeyB9CiAKICAgICBTdHJpbmcg
bmFtZSgpIGNvbnN0OwotICAgIFN0cmluZyBrZXlQYXRoKCkgY29uc3Q7CisgICAgUGFzc1JlZlB0
cjxJREJBbnk+IGtleVBhdGgoKSBjb25zdDsKICAgICBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+
IGluZGV4TmFtZXMoKSBjb25zdDsKICAgICBJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24oKSBj
b25zdDsKIAotICAgIC8vIEZJWE1FOiBUcnkgdG8gbW9kaWZ5IHRoZSBjb2RlIGdlbmVyYXRvciBz
byB0aGlzIGlzIHVubmVlZGVkLgogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gYWRkKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGFkZChjb250ZXh0LCB2YWx1
ZSwgMCwgZWMpOyAgfQogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gcHV0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2
YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIHB1dChjb250ZXh0LCB2YWx1ZSwgMCwg
ZWMpOyAgfQotICAgIFBhc3NSZWZQdHI8SURCSW5kZXg+IGNyZWF0ZUluZGV4KGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1
cm4gY3JlYXRlSW5kZXgobmFtZSwga2V5UGF0aCwgRGljdGlvbmFyeSgpLCBlYyk7IH0KICAgICBQ
YXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5DdXJzb3IoY29udGV4dCwg
c3RhdGljX2Nhc3Q8SURCS2V5UmFuZ2UqPigwKSwgZWMpOyB9IAogICAgIFBhc3NSZWZQdHI8SURC
UmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNz
UmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJu
IG9wZW5DdXJzb3IoY29udGV4dCwga2V5UmFuZ2UsIElEQkN1cnNvcjo6TkVYVCwgZWMpOyB9IAog
ICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBFeGNlcHRpb25Db2RlJiBlYykg
eyByZXR1cm4gb3BlbkN1cnNvcihjb250ZXh0LCBrZXksIElEQkN1cnNvcjo6TkVYVCwgZWMpOyB9
IApAQCAtNzYsNyArNzQsMTMgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4g
ZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCS2V5
PiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGNsZWFy
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJik7CiAKLSAgICBQYXNzUmVm
UHRyPElEQkluZGV4PiBjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYga2V5UGF0aCwgY29uc3QgRGljdGlvbmFyeSYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAvLyBG
SVhNRTogVHJ5IHRvIG1vZGlmeSB0aGUgY29kZSBnZW5lcmF0b3Igc28gdGhpcyBpcyB1bm5lZWRl
ZC4KKyAgICBQYXNzUmVmUHRyPElEQkluZGV4PiBjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCBjb25zdCBEaWN0aW9uYXJ5JiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBh
c3NSZWZQdHI8SURCSW5kZXg+IGNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiBrZXlQYXRoLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gY3JlYXRlSW5kZXgo
bmFtZSwga2V5UGF0aCwgRGljdGlvbmFyeSgpLCBlYyk7IH0KKyAgICBQYXNzUmVmUHRyPElEQklu
ZGV4PiBjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmLCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+
LCBjb25zdCBEaWN0aW9uYXJ5JiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8SURC
SW5kZXg+IGNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxET01TdHJp
bmdMaXN0PiBrZXlQYXRoLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gY3JlYXRlSW5kZXgo
bmFtZSwga2V5UGF0aCwgRGljdGlvbmFyeSgpLCBlYyk7IH0KKyAgICBQYXNzUmVmUHRyPElEQklu
ZGV4PiBjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmLCBjb25zdCBJREJLZXlQYXRoJiwgY29uc3Qg
RGljdGlvbmFyeSYsIEV4Y2VwdGlvbkNvZGUmKTsKKwogICAgIFBhc3NSZWZQdHI8SURCSW5kZXg+
IGluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgZGVs
ZXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmlkbAppbmRl
eCA4Y2VkMzhjZDFlZmEzMmNjYjM0ZjA2MjhkM2M2YTkyOGViODg3ZmQyLi5lMDUxYzE1ZDlkOTYz
NTVjMWJmZGQwMWVlYTVkNzc2YzljYjk3OGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaWRsCkBAIC0yOSw3ICsyOSw3IEBAIG1v
ZHVsZSBzdG9yYWdlIHsKICAgICAgICAgQ29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFTRQogICAg
IF0gSURCT2JqZWN0U3RvcmUgewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW1RyZWF0UmV0
dXJuZWROdWxsU3RyaW5nQXM9TnVsbF0gRE9NU3RyaW5nIG5hbWU7Ci0gICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBbVHJlYXRSZXR1cm5lZE51bGxTdHJpbmdBcz1OdWxsXSBET01TdHJpbmcga2V5
UGF0aDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIElEQkFueSBrZXlQYXRoOwogICAgICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nTGlzdCBpbmRleE5hbWVzOwogICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgSURCVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb247CiAKQEAgLTUxLDYg
KzUxLDggQEAgbW9kdWxlIHN0b3JhZ2UgewogICAgICAgICAgICAgcmFpc2VzIChJREJEYXRhYmFz
ZUV4Y2VwdGlvbik7CiAgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJ
REJSZXF1ZXN0IG9wZW5DdXJzb3IoaW4gSURCS2V5IGtleSwgaW4gW09wdGlvbmFsXSB1bnNpZ25l
ZCBzaG9ydCBkaXJlY3Rpb24pCiAgICAgICAgICAgICByYWlzZXMgKElEQkRhdGFiYXNlRXhjZXB0
aW9uKTsKKyAgICAgICAgSURCSW5kZXggY3JlYXRlSW5kZXgoaW4gRE9NU3RyaW5nIG5hbWUsIGlu
IERPTVN0cmluZ1tdIGtleVBhdGgsIGluIFtPcHRpb25hbF0gRGljdGlvbmFyeSBvcHRpb25zKQor
ICAgICAgICAgICAgcmFpc2VzIChJREJEYXRhYmFzZUV4Y2VwdGlvbik7CiAgICAgICAgIElEQklu
ZGV4IGNyZWF0ZUluZGV4KGluIERPTVN0cmluZyBuYW1lLCBpbiBET01TdHJpbmcga2V5UGF0aCwg
aW4gW09wdGlvbmFsXSBEaWN0aW9uYXJ5IG9wdGlvbnMpCiAgICAgICAgICAgICByYWlzZXMgKElE
QkRhdGFiYXNlRXhjZXB0aW9uKTsKICAgICAgICAgSURCSW5kZXggaW5kZXgoaW4gRE9NU3RyaW5n
IG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCmluZGV4IDVkMmQ1MGMyYWViZTdmNDAw
ZDYwZDhlMTA4NmIwMDVmZjliM2Q1NTMuLmY2MzhhM2NlZmM1NmY1MzU3ZmZhMmMxMWVkNzZlMjMw
YWEwNjM1NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCkBAIC01MSw3ICs1MSw3IEBA
IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6On5JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKCkK
IHsKIH0KIAotSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6SURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbChJREJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBp
bnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9v
bCBhdXRvSW5jcmVtZW50KQorSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6SURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbChJREJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRh
YmFzZUlkLCBpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgm
IGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkKICAgICA6IG1fYmFja2luZ1N0b3JlKGJhY2tp
bmdTdG9yZSkKICAgICAsIG1fZGF0YWJhc2VJZChkYXRhYmFzZUlkKQogICAgICwgbV9pZChpZCkK
QEAgLTYzLDcgKzYzLDcgQEAgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6SURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbChJREJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG8KICAgICBsb2FkSW5kZXhl
cygpOwogfQogCi1JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsKElEQkJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQs
IGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNy
ZW1lbnQpCitJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsKElEQkJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCBhdXRvSW5j
cmVtZW50KQogICAgIDogbV9iYWNraW5nU3RvcmUoYmFja2luZ1N0b3JlKQogICAgICwgbV9kYXRh
YmFzZUlkKGRhdGFiYXNlSWQpCiAgICAgLCBtX2lkKEludmFsaWRJZCkKQEAgLTEzNyw5ICsxMzcs
MTEgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpnZXRJbnRlcm5hbChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjwKICAgICBjYWxsYmFja3MtPm9uU3VjY2VzcyhT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlKHdpcmVEYXRhKSk7CiB9CiAKLXN0
YXRpYyBQYXNzUmVmUHRyPElEQktleT4gZmV0Y2hLZXlGcm9tS2V5UGF0aChTZXJpYWxpemVkU2Ny
aXB0VmFsdWUqIHZhbHVlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpCitzdGF0aWMgUGFzc1JlZlB0
cjxJREJLZXk+IGZldGNoS2V5RnJvbUtleVBhdGgoU2VyaWFsaXplZFNjcmlwdFZhbHVlKiB2YWx1
ZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCkKIHsKICAgICBJREJfVFJBQ0UoIklEQk9iamVj
dFN0b3JlQmFja2VuZEltcGw6OmZldGNoS2V5RnJvbUtleVBhdGgiKTsKKyAgICBBU1NFUlQoIWtl
eVBhdGguaXNOdWxsKCkpOworCiAgICAgVmVjdG9yPFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+ID4gdmFsdWVzOwogICAgIHZhbHVlcy5hcHBlbmQodmFsdWUpOwogICAgIFZlY3RvcjxSZWZQ
dHI8SURCS2V5PiA+IGtleXM7CkBAIC0xNTAsNyArMTUyLDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8
SURCS2V5PiBmZXRjaEtleUZyb21LZXlQYXRoKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogdmFsdWUs
IGNvbnMKICAgICByZXR1cm4ga2V5c1swXS5yZWxlYXNlKCk7CiB9CiAKLXN0YXRpYyBQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gaW5qZWN0S2V5SW50b0tleVBhdGgoUGFzc1JlZlB0
cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBj
b25zdCBTdHJpbmcmIGtleVBhdGgpCitzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IGluamVjdEtleUludG9LZXlQYXRoKFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgY29uc3QgSURCS2V5UGF0aCYga2V5
UGF0aCkKIHsKICAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmluamVj
dEtleUludG9LZXlQYXRoIik7CiAgICAgcmV0dXJuIElEQktleVBhdGhCYWNrZW5kSW1wbDo6aW5q
ZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShrZXksIHZhbHVlLCBrZXlQYXRoKTsKQEAgLTQ5
OSw3ICs1MDEsNyBAQCBib29sIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnBvcHVsYXRlSW5k
ZXgoSURCQmFja2luZ1N0b3JlJiBiYWNraW5nU3RvcmUsIGludAogICAgIHJldHVybiB0cnVlOwog
fQogCi1QYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbDo6Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnksIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0
cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNy
ZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwg
Ym9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlKiB0cmFuc2FjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKG5hbWUuaXNO
dWxsKCkpIHsKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Tk9OX1RSQU5TSUVO
VF9FUlI7CkBAIC02NTAsNyArNjUyLDcgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
Ojpsb2FkSW5kZXhlcygpCiB7CiAgICAgVmVjdG9yPGludDY0X3Q+IGlkczsKICAgICBWZWN0b3I8
U3RyaW5nPiBuYW1lczsKLSAgICBWZWN0b3I8U3RyaW5nPiBrZXlQYXRoczsKKyAgICBWZWN0b3I8
SURCS2V5UGF0aD4ga2V5UGF0aHM7CiAgICAgVmVjdG9yPGJvb2w+IHVuaXF1ZUZsYWdzOwogICAg
IFZlY3Rvcjxib29sPiBtdWx0aUVudHJ5RmxhZ3M7CiAgICAgbV9iYWNraW5nU3RvcmUtPmdldElu
ZGV4ZXMobV9kYXRhYmFzZUlkLCBtX2lkLCBpZHMsIG5hbWVzLCBrZXlQYXRocywgdW5pcXVlRmxh
Z3MsIG11bHRpRW50cnlGbGFncyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmgKaW5kZXggOGQyZTFk
YTk5ZTg0YWM4OWRiNDdhZjYxZTVmMWVhYzMzN2RlYzJkZC4uMWQxNTU1MDQ3NzEwMzlkNTNmNDM1
MTg1YzA4Mzg5NTJiNjdkMDQ4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuaApAQCAtMjYsNiAr
MjYsNyBAQAogI2lmbmRlZiBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsX2gKICNkZWZpbmUgSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbF9oCiAKKyNpbmNsdWRlICJJREJLZXlQYXRoLmgiCiAjaW5j
bHVkZSAiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CkBAIC00MiwxMSArNDMs
MTEgQEAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAogY2xhc3MgSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbCA6IHB1YmxpYyBJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2Ugewog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+
IGNyZWF0ZShJREJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlk
LCBpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwg
Ym9vbCBhdXRvSW5jcmVtZW50KQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGw+IGNyZWF0ZShJREJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSwgaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktl
eVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkKICAgICB7CiAgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbChiYWNraW5nU3RvcmUsIGRh
dGFiYXNlSWQsIGlkLCBuYW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50KSk7CiAgICAgfQotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IGNyZWF0ZShJREJC
YWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50KQorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IGNyZWF0ZShJREJC
YWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkK
ICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbChiYWNraW5nU3RvcmUsIGRhdGFiYXNlSWQsIG5hbWUsIGtleVBhdGgsIGF1dG9JbmNyZW1l
bnQpKTsKICAgICB9CkBAIC02Miw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICBpbnQ2NF90IGRhdGFi
YXNlSWQoKSBjb25zdCB7IHJldHVybiBtX2RhdGFiYXNlSWQ7IH0KIAogICAgIHZpcnR1YWwgU3Ry
aW5nIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KLSAgICB2aXJ0dWFsIFN0cmluZyBr
ZXlQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9rZXlQYXRoOyB9CisgICAgdmlydHVhbCBJREJLZXlQ
YXRoIGtleVBhdGgoKSBjb25zdCB7IHJldHVybiBtX2tleVBhdGg7IH0KICAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gaW5kZXhOYW1lcygpIGNvbnN0OwogICAgIHZpcnR1YWwg
Ym9vbCBhdXRvSW5jcmVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9hdXRvSW5jcmVtZW50OyB9CiAK
QEAgLTczLDcgKzc0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVGdW5jdGlv
bihQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVh
bCB2b2lkIGNsZWFyKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRy
PElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gY3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnksIElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVJbmRleChjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0
aUVudHJ5LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7
CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gaW5kZXgo
Y29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGRl
bGV0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlKiwgRXhjZXB0aW9uQ29kZSYpOwogCkBAIC04Myw4ICs4NCw4IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgYm9vbCBwb3B1bGF0ZUluZGV4KElEQkJhY2tpbmdTdG9yZSYsIGludDY0X3QgZGF0YWJh
c2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZElt
cGw+KTsKIAogcHJpdmF0ZToKLSAgICBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKElEQkJhY2tp
bmdTdG9yZSosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCk7Ci0gICAgSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbChJREJCYWNraW5nU3RvcmUqLCBpbnQ2NF90IGRhdGFiYXNl
SWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9J
bmNyZW1lbnQpOworICAgIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwoSURCQmFja2luZ1N0b3Jl
KiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQpOworICAgIElEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGwoSURCQmFja2luZ1N0b3JlKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQpOwogCiAg
ICAgdm9pZCBsb2FkSW5kZXhlcygpOwogICAgIFBhc3NSZWZQdHI8SURCS2V5PiBnZW5BdXRvSW5j
cmVtZW50S2V5KCk7CkBAIC0xMTAsNyArMTExLDcgQEAgcHJpdmF0ZToKICAgICBpbnQ2NF90IG1f
ZGF0YWJhc2VJZDsKICAgICBpbnQ2NF90IG1faWQ7CiAgICAgU3RyaW5nIG1fbmFtZTsKLSAgICBT
dHJpbmcgbV9rZXlQYXRoOworICAgIElEQktleVBhdGggbV9rZXlQYXRoOwogICAgIGJvb2wgbV9h
dXRvSW5jcmVtZW50OwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVmUHRyPElEQklu
ZGV4QmFja2VuZEltcGw+ID4gSW5kZXhNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFj
ZS5oCmluZGV4IGFlNjRhNWVmNmVlMGE1MTQ2YTRlMTRiZWVmNjMyMmQ1NTg1NjAwZTAuLjMyYWUz
OTI4ZmQ4ZThmNDA1MzZiOGJmYjlhMzg5ZDc3OWE0MDYyNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFj
a2VuZEludGVyZmFjZS5oCkBAIC0zNyw2ICszNyw3IEBAIGNsYXNzIERPTVN0cmluZ0xpc3Q7CiBj
bGFzcyBJREJDYWxsYmFja3M7CiBjbGFzcyBJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U7CiBjbGFz
cyBJREJLZXk7CitjbGFzcyBJREJLZXlQYXRoOwogY2xhc3MgSURCS2V5UmFuZ2U7CiBjbGFzcyBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U7CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFs
dWU7CkBAIC00OCw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JREJPYmplY3RTdG9y
ZUJhY2tlbmRJbnRlcmZhY2UoKSB7IH0KIAogICAgIHZpcnR1YWwgU3RyaW5nIG5hbWUoKSBjb25z
dCA9IDA7Ci0gICAgdmlydHVhbCBTdHJpbmcga2V5UGF0aCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIElEQktleVBhdGgga2V5UGF0aCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8RE9NU3RyaW5nTGlzdD4gaW5kZXhOYW1lcygpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwg
dm9pZCBnZXQoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpID0gMDsK
QEAgLTY0LDcgKzY1LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGNsZWFyKFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhj
ZXB0aW9uQ29kZSYpID0gMDsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tl
bmRJbnRlcmZhY2U+IGNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5LCBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikgPSAwOworICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnksIElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gaW5kZXgoY29uc3Qg
U3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxl
dGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZSosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L0RpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGlj
dGlvbmFyeS5jcHAKaW5kZXggMTBhYWZlOGRjNmMyODFlZmU3MWQ0OWZiOTJmNGJiOTU2NzU4NzUx
NC4uMGNjYzAyNTZhOTEwZjY3ODAyM2ZiOGRmYTQ3Y2M2NzQ3YTMwYmFiZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFyeS5jcHAKQEAgLTQyNSw2ICs0MjUsMjYgQEAgYm9v
bCBEaWN0aW9uYXJ5OjpnZXQoY29uc3QgU3RyaW5nJiBrZXksIERpY3Rpb25hcnkmIHZhbHVlKSBj
b25zdAogfQogCiAKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKK2Jvb2wgRGljdGlvbmFy
eTo6Z2V0KGNvbnN0IFN0cmluZyYga2V5LCBWZWN0b3I8U3RyaW5nPiYgdmFsdWUpIGNvbnN0Cit7
CisgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdjhWYWx1ZTsKKyAgICBpZiAoIWdldEtleShrZXks
IHY4VmFsdWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIXY4VmFsdWUtPklz
QXJyYXkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgdjg6OkxvY2FsPHY4OjpBcnJh
eT4gdjhBcnJheSA9IHY4OjpMb2NhbDx2ODo6QXJyYXk+OjpDYXN0KHY4VmFsdWUpOworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgdjhBcnJheS0+TGVuZ3RoKCk7ICsraSkgeworICAgICAgICB2
ODo6TG9jYWw8djg6OlZhbHVlPiBpbmRleGVkVmFsdWUgPSB2OEFycmF5LT5HZXQodjg6OkludGVn
ZXI6Ok5ldyhpKSk7CisgICAgICAgIHZhbHVlLmFwcGVuZCh2OFZhbHVlVG9XZWJDb3JlU3RyaW5n
KGluZGV4ZWRWYWx1ZSkpOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorI2VuZGlmCisK
IGJvb2wgRGljdGlvbmFyeTo6Z2V0T3duUHJvcGVydGllc0FzU3RyaW5nSGFzaE1hcChXVEY6Okhh
c2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBoYXNoTWFwKSBjb25zdAogewogICAgIGlmICghaXNPYmpl
Y3QoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnku
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuaAppbmRleCBjNGMzM2Ix
YmIyMDhlOTY0MGRmZmI4NDA2ZDg5M2I0MTI4MzI3OWVlLi41YTI2NjM0MTE1NDYyNmY2YzFiZmE4
MTliYTVjMDMzNjQyZjkwMjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9EaWN0aW9uYXJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFy
eS5oCkBAIC0zMywxMSArMzMsMTEgQEAKICNpbmNsdWRlIDx2OC5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgRE9NU3RyaW5nTGlzdDsKIGNsYXNzIERPTVdpbmRvdzsKIGNsYXNzIElE
QktleVJhbmdlOwogY2xhc3MgTWVkaWFLZXlFcnJvcjsKQEAgLTgzLDYgKzgzLDkgQEAgcHVibGlj
OgogICAgIGJvb2wgZ2V0KGNvbnN0IFN0cmluZyYsIFJlZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJl
c3VsdD4mKSBjb25zdDsKICAgICBib29sIGdldChjb25zdCBTdHJpbmcmLCBSZWZQdHI8U3BlZWNo
UmVjb2duaXRpb25SZXN1bHRMaXN0PiYpIGNvbnN0OwogI2VuZGlmCisjaWYgRU5BQkxFKElOREVY
RURfREFUQUJBU0UpCisgICAgYm9vbCBnZXQoY29uc3QgU3RyaW5nJiwgVmVjdG9yPFN0cmluZz4m
KSBjb25zdDsKKyNlbmRpZgogICAgIGJvb2wgZ2V0KGNvbnN0IFN0cmluZyYsIEhhc2hTZXQ8QXRv
bWljU3RyaW5nPiYpIGNvbnN0OwogICAgIGJvb2wgZ2V0KGNvbnN0IFN0cmluZyYsIERpY3Rpb25h
cnkmKSBjb25zdDsKICAgICBib29sIGdldE93blByb3BlcnRpZXNBc1N0cmluZ0hhc2hNYXAoV1RG
OjpIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAppbmRleCBkZjY3NzgwMzA1N2Uz
ODBmM2U4OWRkNDUxNzExZTQ3OTFlNDFlZTk0Li5kMzE2YWQ3Mjk5ZjRlMjgzMTQ1OTVlMzVkYzNm
ZDA1MDcyODNjNjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JREJC
aW5kaW5nVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JREJC
aW5kaW5nVXRpbGl0aWVzLmNwcApAQCAtMTUzLDMwICsxNTMsNjUgQEAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IGVuc3VyZU50aFZhbHVlT25LZXlQYXRoKHY4OjpIYW5kbGU8djg6OlZhbHVlPiYgcm9v
dFZhbHVlLAogCiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKIAotUGFzc1JlZlB0cjxJREJLZXk+
IGNyZWF0ZUlEQktleUZyb21TZXJpYWxpemVkVmFsdWVBbmRLZXlQYXRoKFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGtleVBhdGgp
CitzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktleUZyb21TZXJpYWxpemVkVmFs
dWVBbmRLZXlQYXRoKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgY29u
c3QgU3RyaW5nJiBrZXlQYXRoKQogewotICAgIElEQl9UUkFDRSgiY3JlYXRlSURCS2V5RnJvbVNl
cmlhbGl6ZWRWYWx1ZUFuZEtleVBhdGgiKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBrZXlQYXRoRWxl
bWVudHM7CisgICAgSURCS2V5UGF0aFBhcnNlRXJyb3IgZXJyb3I7CisgICAgSURCUGFyc2VLZXlQ
YXRoKGtleVBhdGgsIGtleVBhdGhFbGVtZW50cywgZXJyb3IpOworICAgIEFTU0VSVChlcnJvciA9
PSBJREJLZXlQYXRoUGFyc2VFcnJvck5vbmUpOworCiAgICAgVjhBdXhpbGlhcnlDb250ZXh0IGNv
bnRleHQ7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4VmFsdWUodmFsdWUtPmRlc2VyaWFs
aXplKCkpOwotICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2OEtleShnZXROdGhWYWx1ZU9uS2V5
UGF0aCh2OFZhbHVlLCBrZXlQYXRoLCBrZXlQYXRoLnNpemUoKSkpOworICAgIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB2OEtleShnZXROdGhWYWx1ZU9uS2V5UGF0aCh2OFZhbHVlLCBrZXlQYXRoRWxl
bWVudHMsIGtleVBhdGhFbGVtZW50cy5zaXplKCkpKTsKICAgICBpZiAodjhLZXkuSXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gY3JlYXRlSURCS2V5RnJvbVZhbHVlKHY4
S2V5KTsKIH0KIAotUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGluamVjdElEQktl
eUludG9TZXJpYWxpemVkVmFsdWUoUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYga2V5UGF0
aCkKKworUGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktleUZyb21TZXJpYWxpemVkVmFsdWVB
bmRLZXlQYXRoKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBwcnBWYWx1ZSwgY29u
c3QgSURCS2V5UGF0aCYga2V5UGF0aCkKK3sKKyAgICBJREJfVFJBQ0UoImNyZWF0ZUlEQktleUZy
b21TZXJpYWxpemVkVmFsdWVBbmRLZXlQYXRoIik7CisgICAgQVNTRVJUKCFrZXlQYXRoLmlzTnVs
bCgpKTsKKworICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlID0gcHJwVmFs
dWU7CisKKyAgICBpZiAoa2V5UGF0aC50eXBlKCkgPT0gSURCS2V5UGF0aDo6QXJyYXlUeXBlKSB7
CisgICAgICAgIElEQktleTo6S2V5QXJyYXkgcmVzdWx0OworICAgICAgICBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgYXJyYXkgPSBrZXlQYXRoLmFycmF5KCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgYXJyYXkuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIFJlZlB0cjxJREJLZXk+
IGtleSA9IGNyZWF0ZUlEQktleUZyb21TZXJpYWxpemVkVmFsdWVBbmRLZXlQYXRoKHZhbHVlLCBh
cnJheVtpXSk7CisgICAgICAgICAgICBpZiAoIWtleSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoa2V5KTsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gSURCS2V5OjpjcmVhdGVBcnJheShyZXN1bHQpOworICAgIH0KKworICAgIEFTU0VSVChr
ZXlQYXRoLnR5cGUoKSA9PSBJREJLZXlQYXRoOjpTdHJpbmdUeXBlKTsKKyAgICByZXR1cm4gY3Jl
YXRlSURCS2V5RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtleVBhdGgodmFsdWUsIGtleVBhdGguc3Ry
aW5nKCkpOworfQorCitQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gaW5qZWN0SURC
S2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgp
CiB7CiAgICAgSURCX1RSQUNFKCJpbmplY3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVlIik7Ci0g
ICAgVjhBdXhpbGlhcnlDb250ZXh0IGNvbnRleHQ7Ci0gICAgaWYgKCFrZXlQYXRoLnNpemUoKSkK
KworICAgIEFTU0VSVChrZXlQYXRoLnR5cGUoKSA9PSBJREJLZXlQYXRoOjpTdHJpbmdUeXBlKTsK
KyAgICBWZWN0b3I8U3RyaW5nPiBrZXlQYXRoRWxlbWVudHM7CisgICAgSURCS2V5UGF0aFBhcnNl
RXJyb3IgZXJyb3I7CisgICAgSURCUGFyc2VLZXlQYXRoKGtleVBhdGguc3RyaW5nKCksIGtleVBh
dGhFbGVtZW50cywgZXJyb3IpOworICAgIEFTU0VSVChlcnJvciA9PSBJREJLZXlQYXRoUGFyc2VF
cnJvck5vbmUpOworCisgICAgaWYgKCFrZXlQYXRoRWxlbWVudHMuc2l6ZSgpKQogICAgICAgICBy
ZXR1cm4gMDsKIAorICAgIFY4QXV4aWxpYXJ5Q29udGV4dCBjb250ZXh0OwogICAgIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB2OFZhbHVlKHZhbHVlLT5kZXNlcmlhbGl6ZSgpKTsKLSAgICB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gcGFyZW50KGVuc3VyZU50aFZhbHVlT25LZXlQYXRoKHY4VmFsdWUsIGtl
eVBhdGgsIGtleVBhdGguc2l6ZSgpIC0gMSkpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBw
YXJlbnQoZW5zdXJlTnRoVmFsdWVPbktleVBhdGgodjhWYWx1ZSwga2V5UGF0aEVsZW1lbnRzLCBr
ZXlQYXRoRWxlbWVudHMuc2l6ZSgpIC0gMSkpOwogICAgIGlmIChwYXJlbnQuSXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmICghc2V0KHBhcmVudCwga2V5UGF0aC5sYXN0KCks
IHRvVjgoa2V5LmdldCgpKSkpCisgICAgaWYgKCFzZXQocGFyZW50LCBrZXlQYXRoRWxlbWVudHMu
bGFzdCgpLCB0b1Y4KGtleS5nZXQoKSkpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIHJldHVy
biBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSh2OFZhbHVlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMuaAppbmRleCA0NzI4NmE1ODIz
OGYwYTAyNGUyMTM4MDUwNWZiYjk2ZWE3NjdmNWFiLi4zMGVlZDQyMWI0NWIwOTAzMDExYmQyNDli
YmEwZDc0YzIzYmEyNzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9J
REJCaW5kaW5nVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURC
QmluZGluZ1V0aWxpdGllcy5oCkBAIC0zNCwxMSArMzQsMTIgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgSURCS2V5OworY2xhc3MgSURCS2V5UGF0aDsKIGNsYXNzIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTsKIAogUGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktleUZyb21WYWx1ZSh2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4pOwotUGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktleUZy
b21TZXJpYWxpemVkVmFsdWVBbmRLZXlQYXRoKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiwgIGNvbnN0IFZlY3RvcjxTdHJpbmcsIDA+Jik7Ci1QYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gaW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShQYXNzUmVmUHRyPElE
QktleT4sIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgY29uc3QgVmVjdG9yPFN0
cmluZywgMD4mKTsKK1Bhc3NSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJLZXlGcm9tU2VyaWFsaXpl
ZFZhbHVlQW5kS2V5UGF0aChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIGNvbnN0
IElEQktleVBhdGgmKTsKK1Bhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBpbmplY3RJ
REJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBjb25zdCBJREJLZXlQYXRoJik7CiAKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SURCQW55Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOElEQkFueUN1c3RvbS5jcHAK
aW5kZXggMTczM2VjOGJjZGEzYTQ3ZTNmYjBmYTRmYWNmNTkwYzY2Y2FiY2FkYi4uMGI3NTAyZWI5
ZjdjNzMwOGE0Zjg5ZmNkMDAzYzcxMmM2NzYxZGIwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SURCQW55Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJREJBbnlDdXN0b20uY3BwCkBAIC0zMiw2ICszMiw3
IEBACiAjaW5jbHVkZSAiVjhJREJBbnkuaCIKIAogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oIgorI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4RE9NU3RyaW5nTGlz
dC5oIgogI2luY2x1ZGUgIlY4SURCQ3Vyc29yLmgiCiAjaW5jbHVkZSAiVjhJREJDdXJzb3JXaXRo
VmFsdWUuaCIKQEAgLTc0LDYgKzc1LDggQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoSURC
QW55KiBpbXBsLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKICAgICAgICAgcmV0dXJuIHRvVjgoaW1w
bC0+aWRiVHJhbnNhY3Rpb24oKSk7CiAgICAgY2FzZSBJREJBbnk6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZVR5cGU6CiAgICAgICAgIHJldHVybiBpbXBsLT5zZXJpYWxpemVkU2NyaXB0VmFsdWUoKS0+
ZGVzZXJpYWxpemUoMCwgaXNvbGF0ZSk7CisgICAgY2FzZSBJREJBbnk6OlN0cmluZ1R5cGU6Cisg
ICAgICAgIHJldHVybiB2OFN0cmluZyhpbXBsLT5zdHJpbmcoKSk7CiAgICAgfQogCiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NU3Ry
aW5nTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTVN0cmluZ0xpc3QuaAppbmRleCAwNTdk
YWM0OWVjZmYyZTU2NDRkMWY1OGFkNGY0YWRiNTlmMGRiYzNiLi40NjRmYTIyZGIyNTY2MTZhMDUz
NzE4Yjc5YjJkOTMzZjRmMjEwNTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9N
U3RyaW5nTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01TdHJpbmdMaXN0LmgKQEAg
LTUyLDYgKzUyLDggQEAgcHVibGljOgogICAgIFN0cmluZyBpdGVtKHVuc2lnbmVkIGluZGV4KSBj
b25zdDsKICAgICBib29sIGNvbnRhaW5zKGNvbnN0IFN0cmluZyYgc3RyKSBjb25zdDsKIAorICAg
IG9wZXJhdG9yIGNvbnN0IFZlY3RvcjxTdHJpbmc+JigpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5n
czsgfQorCiBwcml2YXRlOgogICAgIERPTVN0cmluZ0xpc3QoKSB7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKaW5kZXgg
NjQxY2NjMTQ4ZjlhMDc5ZjVhMzI2ZDBlZWJmMTc5YmE4OWM4M2NhMy4uNzIyYTk0YjIxNWY3ZTMy
N2FhOTI3MDRkYmY1ZmVhNzJmMjAwMGE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCkBAIC00Niw2ICs0Niw3IEBACiAj
aW5jbHVkZSAiSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJJbmRl
eEJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJLZXkuaCIKKyNpbmNsdWRlICJJREJL
ZXlQYXRoLmgiCiAjaW5jbHVkZSAiSURCS2V5UmFuZ2UuaCIKICNpbmNsdWRlICJJREJPYmplY3RT
dG9yZUJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJQZW5kaW5nVHJhbnNhY3Rpb25N
b25pdG9yLmgiCkBAIC0yMjUsNiArMjI2LDI1IEBAIHN0YXRpYyBQYXNzUmVmUHRyPElEQkluZGV4
QmFja2VuZEludGVyZmFjZT4gaW5kZXhGb3JPYmplY3RTdG9yZShJREJPYmplY3RTdG9yZUJhCiAg
ICAgcmV0dXJuIGlkYkluZGV4OwogfQogCitzdGF0aWMgU3RyaW5nIGtleVBhdGhUb1N0cmluZyhj
b25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKQoreworICAgIC8vIEZJWE1FOiBSZXBsYWNlIHdpdGgg
aGFuZGxlcnMgZm9yIG51bGwvc3RyaW5nL2FycmF5IHR5cGVzLgorICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDMwMworICAgIHN3aXRjaCAoa2V5UGF0aC50
eXBlKCkpIHsKKyAgICBjYXNlIElEQktleVBhdGg6Ok51bGxUeXBlOgorICAgICAgICByZXR1cm4g
Iihub25lKSI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSURCS2V5UGF0aDo6U3RyaW5nVHlw
ZToKKyAgICAgICAgcmV0dXJuIGtleVBhdGguc3RyaW5nKCk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgSURCS2V5UGF0aDo6QXJyYXlUeXBlOgorICAgICAgICByZXR1cm4gIlsuLi5dIjsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biBTdHJpbmcoKTsKK30KKwogY2xhc3MgRGF0YWJhc2VMb2FkZXJDYWxsYmFjayA6IHB1YmxpYyBF
eGVjdXRhYmxlV2l0aERhdGFiYXNlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxE
YXRhYmFzZUxvYWRlckNhbGxiYWNrPiBjcmVhdGUoSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OkZy
b250ZW5kUHJvdmlkZXIqIGZyb250ZW5kUHJvdmlkZXIsIGludCByZXF1ZXN0SWQpCkBAIC0yNjAs
NyArMjgwLDcgQEAgcHVibGljOgogCiAgICAgICAgICAgICAgICAgUmVmUHRyPE9iamVjdFN0b3Jl
SW5kZXg+IG9iamVjdFN0b3JlSW5kZXggPSBPYmplY3RTdG9yZUluZGV4OjpjcmVhdGUoKQogICAg
ICAgICAgICAgICAgICAgICAuc2V0TmFtZShpZGJJbmRleC0+bmFtZSgpKQotICAgICAgICAgICAg
ICAgICAgICAuc2V0S2V5UGF0aChpZGJJbmRleC0+a2V5UGF0aCgpKQorICAgICAgICAgICAgICAg
ICAgICAuc2V0S2V5UGF0aChrZXlQYXRoVG9TdHJpbmcoaWRiSW5kZXgtPmtleVBhdGgoKSkpCiAg
ICAgICAgICAgICAgICAgICAgIC5zZXRVbmlxdWUoaWRiSW5kZXgtPnVuaXF1ZSgpKQogICAgICAg
ICAgICAgICAgICAgICAuc2V0TXVsdGlFbnRyeShpZGJJbmRleC0+bXVsdGlFbnRyeSgpKTsKICAg
ICAgICAgICAgICAgICBpbmRleGVzLT5hZGRJdGVtKG9iamVjdFN0b3JlSW5kZXgpOwpAQCAtMjY4
LDcgKzI4OCw3IEBAIHB1YmxpYzoKIAogICAgICAgICAgICAgUmVmUHRyPE9iamVjdFN0b3JlPiBv
YmplY3RTdG9yZSA9IE9iamVjdFN0b3JlOjpjcmVhdGUoKQogICAgICAgICAgICAgICAgIC5zZXRO
YW1lKGlkYk9iamVjdFN0b3JlLT5uYW1lKCkpCi0gICAgICAgICAgICAgICAgLnNldEtleVBhdGgo
aWRiT2JqZWN0U3RvcmUtPmtleVBhdGgoKSkKKyAgICAgICAgICAgICAgICAuc2V0S2V5UGF0aChr
ZXlQYXRoVG9TdHJpbmcoaWRiT2JqZWN0U3RvcmUtPmtleVBhdGgoKSkpCiAgICAgICAgICAgICAg
ICAgLnNldEluZGV4ZXMoaW5kZXhlcyk7CiAgICAgICAgICAgICBvYmplY3RTdG9yZXMtPmFkZEl0
ZW0ob2JqZWN0U3RvcmUpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCmluZGV4IGY2MTA1NGU5OTQ0OTBkNDQyMTdi
N2VjMzBjMDg4NWQxMTllOGI5NjEuLjFjNjg5NTc5YWFhOTE4MjIxMGNkODM3OWNlNTE0ZjE1NGRl
MmVmMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRm
b3JtU3VwcG9ydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRm
b3JtU3VwcG9ydC5oCkBAIC03OCw2ICs3OCw3IEBAIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNs
YXNzIEltYWdlOwogY2xhc3MgSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2U7CiBjbGFzcyBJREJL
ZXk7CitjbGFzcyBJREJLZXlQYXRoOwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIEtVUkw7CiBjbGFz
cyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CkBAIC0xODAsOSArMTgxLDkgQEAgcHVibGljOgogICAg
IC8vIEluZGV4ZWREQiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCRmFjdG9yeUJhY2tlbmRJ
bnRlcmZhY2U+IGlkYkZhY3RvcnkoKTsKICAgICAvLyBFeHRyYWN0cyBrZXlQYXRoIGZyb20gdmFs
dWVzIGFuZCByZXR1cm5zIHRoZSBjb3JyZXNwb25kaW5nIGtleXMuCi0gICAgc3RhdGljIHZvaWQg
Y3JlYXRlSURCS2V5c0Zyb21TZXJpYWxpemVkVmFsdWVzQW5kS2V5UGF0aChjb25zdCBWZWN0b3I8
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gPiYgdmFsdWVzLCBjb25zdCBTdHJpbmcmIGtl
eVBhdGgsIFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+JiBrZXlzKTsKKyAgICBzdGF0aWMgdm9pZCBj
cmVhdGVJREJLZXlzRnJvbVNlcmlhbGl6ZWRWYWx1ZXNBbmRLZXlQYXRoKGNvbnN0IFZlY3RvcjxS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiA+JiB2YWx1ZXMsIGNvbnN0IElEQktleVBhdGgm
LCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiYga2V5cyk7CiAgICAgLy8gSW5qZWN0cyBrZXkgdmlh
IGtleVBhdGggaW50byB2YWx1ZS4gUmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3MuCi0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBpbmplY3RJREJLZXlJbnRvU2VyaWFs
aXplZFZhbHVlKFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+LCBjb25zdCBTdHJpbmcmIGtleVBhdGgpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gaW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShQYXNz
UmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgY29uc3Qg
SURCS2V5UGF0aCYpOwogCiAgICAgLy8gSmF2YVNjcmlwdCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICBzdGF0aWMgdm9pZCBub3Rp
ZnlKU091dE9mTWVtb3J5KEZyYW1lKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL2Nocm9taXVtL0lEQktleVBhdGhCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL2Nocm9taXVtL0lEQktleVBhdGhCYWNrZW5kSW1wbC5jcHAKaW5kZXggYjgwNGEwZmY4
YTE0ZmE3NzIyNTgyZDJkYzI0ZTRlZjgxZWFhMzA5NC4uYzg2Yzc3ZDk3NzM5YjU1NDQyMGQ1ODlj
NzA5YTNlN2YwNmRkMWJlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9jaHJv
bWl1bS9JREJLZXlQYXRoQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvY2hyb21pdW0vSURCS2V5UGF0aEJhY2tlbmRJbXBsLmNwcApAQCAtMzQsMTIgKzM0LDEyIEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBJREJLZXlQYXRoQmFja2VuZEltcGw6OmNy
ZWF0ZUlEQktleXNGcm9tU2VyaWFsaXplZFZhbHVlc0FuZEtleVBhdGgoY29uc3QgVmVjdG9yPFJl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCAwPiYgdmFsdWVzLCAgY29uc3QgU3RyaW5nJiBr
ZXlQYXRoLCBWZWN0b3I8UmVmUHRyPElEQktleT4sIDA+JiBrZXlzKQordm9pZCBJREJLZXlQYXRo
QmFja2VuZEltcGw6OmNyZWF0ZUlEQktleXNGcm9tU2VyaWFsaXplZFZhbHVlc0FuZEtleVBhdGgo
Y29uc3QgVmVjdG9yPFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCAwPiYgdmFsdWVzLCBj
b25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBWZWN0b3I8UmVmUHRyPElEQktleT4sIDA+JiBrZXlz
KQogewogICAgIFBsYXRmb3JtU3VwcG9ydDo6Y3JlYXRlSURCS2V5c0Zyb21TZXJpYWxpemVkVmFs
dWVzQW5kS2V5UGF0aCh2YWx1ZXMsIGtleVBhdGgsIGtleXMpOwogfQogCi1QYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gSURCS2V5UGF0aEJhY2tlbmRJbXBsOjppbmplY3RJREJLZXlJ
bnRvU2VyaWFsaXplZFZhbHVlKFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQorUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IElEQktleVBhdGhCYWNrZW5kSW1wbDo6aW5qZWN0
SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBh
dGgpCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6aW5qZWN0SURCS2V5SW50b1Nlcmlh
bGl6ZWRWYWx1ZShrZXksIHZhbHVlLCBrZXlQYXRoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oCmluZGV4IGY1M2IwMmUzOWE3YjcyZmFlZGZi
NWZiYzBmMDRlOGZhMzBkYTMxMTMuLmIzOTg1MzQxNjU1NDNhMTk3YTYxNzk3ZDU0NzQ5ZGE4NWUz
YTM1NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRh
dGFiYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJh
c2UuaApAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5jbHVkZSAiV2ViRE9NU3RyaW5nTGlzdC5oIgog
I2luY2x1ZGUgIldlYkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJXZWJJREJLZXlQYXRoLmgi
CiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpA
QCAtMzYsNiArMzUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYkZyYW1lOwogY2xh
c3MgV2ViSURCQ2FsbGJhY2tzOwogY2xhc3MgV2ViSURCRGF0YWJhc2VDYWxsYmFja3M7CitjbGFz
cyBXZWJJREJLZXlQYXRoOwogY2xhc3MgV2ViSURCT2JqZWN0U3RvcmU7CiBjbGFzcyBXZWJJREJU
cmFuc2FjdGlvbjsKIApAQCAtNTksMTIgKzU5LDYgQEAgcHVibGljOgogICAgICAgICBXRUJLSVRf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBXZWJET01TdHJpbmdMaXN0KCk7
CiAgICAgfQotICAgIC8vIEZJWE1FOiBSZW1vdmUgV2ViU3RyaW5nIGtleVBhdGggb3ZlcmxvYWQg
b25jZSBjYWxsZXJzIGFyZSB1cGRhdGVkLgotICAgIC8vIGh0dHA6Ly93ZWJraXQub3JnL2IvODQy
MDcKLSAgICB2aXJ0dWFsIFdlYklEQk9iamVjdFN0b3JlKiBjcmVhdGVPYmplY3RTdG9yZShjb25z
dCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5j
cmVtZW50LCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIFdlYkV4Y2VwdGlv
bkNvZGUmIGVjKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZU9iamVjdFN0b3JlKG5hbWUs
IFdlYklEQktleVBhdGgoa2V5UGF0aCksIGF1dG9JbmNyZW1lbnQsIHRyYW5zYWN0aW9uLCBlYyk7
Ci0gICAgfQogICAgIHZpcnR1YWwgV2ViSURCT2JqZWN0U3RvcmUqIGNyZWF0ZU9iamVjdFN0b3Jl
KGNvbnN0IFdlYlN0cmluZyYsIGNvbnN0IFdlYklEQktleVBhdGgmLCBib29sLCBjb25zdCBXZWJJ
REJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKQogICAgIHsKICAgICAgICAgV0VCS0lU
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViSURCSW5kZXguaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YklEQkluZGV4LmgKaW5kZXggMzdhZjAyYzBjOGIzMTM5ZGQzNmFlYmMwN2I1ZDM4MTc1NjNhMGI3
Ni4uYzJmZjAwMWQyZTQzNzkzZTY3N2I1NzdhM2Y2M2VjZmMyMzM0NGMzMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCSW5kZXguaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJJbmRleC5oCkBAIC01NCwxNCArNTQsOCBAQCBw
dWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgV2ViSURCS2V5UGF0aCBrZXlQYXRoKCkgY29uc3QK
ICAgICB7Ci0gICAgICAgIHJldHVybiBXZWJJREJLZXlQYXRoKGtleVBhdGhTdHJpbmcoKSk7Ci0g
ICAgfQotICAgIC8vIEZJWE1FOiBSZW1vdmUgbWV0aG9kIG9uY2UgY2FsbGVycyBhcmUgdXBkYXRl
ZC4KLSAgICAvLyBodHRwOi8vd2Via2l0Lm9yZy9iLzg0MjA3Ci0gICAgdmlydHVhbCBXZWJTdHJp
bmcga2V5UGF0aFN0cmluZygpIGNvbnN0Ci0gICAgewogICAgICAgICBXRUJLSVRfQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBXZWJTdHJpbmcoKTsKKyAgICAgICAgcmV0dXJu
IFdlYklEQktleVBhdGg6OmNyZWF0ZU51bGwoKTsKICAgICB9CiAgICAgdmlydHVhbCBib29sIHVu
aXF1ZSgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViSURCS2V5UGF0aC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
SURCS2V5UGF0aC5oCmluZGV4IDk3YmFjMDZmZmU4NGEzZmQwZDIzYTNmMTRhZDEyOTczOTM0ZjJh
ZTUuLmRlNDJmYTc3ZTUzYmVmN2JiNzcxOWVlYjIyYmY5NjIwZTIxNDIyMTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQktleVBhdGguaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJLZXlQYXRoLmgKQEAgLTM2LDE1ICszNiwy
MCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+IGNsYXNzIFZl
Y3RvcjsKIGNsYXNzIFN0cmluZzsKIH0KIAorbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBJREJL
ZXlQYXRoOyB9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJJREJLZXlQYXRoIHsK
IHB1YmxpYzoKKyAgICAvLyBPbmx5IHVzZWQgZm9yIHN0cnVjdCBpbml0aWFsaXphdGlvbi4KKyAg
ICBXZWJJREJLZXlQYXRoKCkgeyB9CisKICAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJJREJL
ZXlQYXRoIGNyZWF0ZShjb25zdCBXZWJTdHJpbmcmKTsKICAgICBXRUJLSVRfRVhQT1JUIHN0YXRp
YyBXZWJJREJLZXlQYXRoIGNyZWF0ZShjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYpOwogICAg
IFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYklEQktleVBhdGggY3JlYXRlTnVsbCgpOwogICAgIFdF
QktJVF9FWFBPUlQgV2ViSURCS2V5UGF0aChjb25zdCBXZWJJREJLZXlQYXRoJik7Ci0gICAgfldl
YklEQktleVBhdGgoKSB7IHJlc2V0KCk7IH0KKyAgICB+V2ViSURCS2V5UGF0aCgpOwogCiAgICAg
ZW51bSBUeXBlIHsKICAgICAgICAgTnVsbFR5cGUgPSAwLApAQCAtNTQsMzAgKzU5LDE4IEBAIHB1
YmxpYzoKIAogICAgIFdFQktJVF9FWFBPUlQgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CiAgICAgV0VC
S0lUX0VYUE9SVCBUeXBlIHR5cGUoKSBjb25zdDsKLSAgICAvLyBGSVhNRTogQXJyYXktdHlwZSBr
ZXkgcGF0aHMgbm90IHlldCBzdXBwb3J0ZWQuIGh0dHA6Ly93ZWJraXQub3JnL2IvODQyMDcKLSAg
ICBXZWJWZWN0b3I8V2ViU3RyaW5nPiBhcnJheSgpIGNvbnN0IHsgV0VCS0lUX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyByZXR1cm4gV2ViVmVjdG9yPFdlYlN0cmluZz4oKTsgfQotICAgIFdFQktJVF9F
WFBPUlQgV2ViU3RyaW5nIHN0cmluZygpIGNvbnN0OwotCi0gICAgLy8gRklYTUU6IFJlbW92ZSB0
aGVzZSBvbmNlIGNhbGxlcnMgYXJlIHVwZGF0ZWQuIGh0dHA6Ly93ZWJraXQub3JnL2IvODQyMDcK
LSAgICBXRUJLSVRfRVhQT1JUIFdlYklEQktleVBhdGgoY29uc3QgV2ViU3RyaW5nJik7Ci0gICAg
b3BlcmF0b3IgY29uc3QgV2ViU3RyaW5nICgpIGNvbnN0IHsgcmV0dXJuIHN0cmluZygpOyB9Ci0g
ICAgV0VCS0lUX0VYUE9SVCBpbnQgcGFyc2VFcnJvcigpIGNvbnN0OwotICAgIFdFQktJVF9FWFBP
UlQgdm9pZCBhc3NpZ24oY29uc3QgV2ViSURCS2V5UGF0aCYpOwotICAgIFdFQktJVF9FWFBPUlQg
dm9pZCByZXNldCgpOworICAgIFdFQktJVF9FWFBPUlQgV2ViVmVjdG9yPFdlYlN0cmluZz4gYXJy
YXkoKSBjb25zdDsgLy8gT25seSB2YWxpZCBmb3IgQXJyYXlUeXBlLgorICAgIFdFQktJVF9FWFBP
UlQgV2ViU3RyaW5nIHN0cmluZygpIGNvbnN0OyAvLyBPbmx5IHZhbGlkIGZvciBTdHJpbmdUeXBl
LgogCiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgb3BlcmF0b3IgY29uc3QgV1RGOjpW
ZWN0b3I8V1RGOjpTdHJpbmcsIDA+JiAoKSBjb25zdDsKKyAgICBXZWJJREJLZXlQYXRoKGNvbnN0
IFdlYkNvcmU6OklEQktleVBhdGgmKTsKKyAgICBXZWJJREJLZXlQYXRoJiBvcGVyYXRvcj0oY29u
c3QgV2ViQ29yZTo6SURCS2V5UGF0aCYpOworICAgIG9wZXJhdG9yIGNvbnN0IFdlYkNvcmU6OklE
QktleVBhdGgmKCkgY29uc3Q7CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBXZWJJREJLZXlQYXRo
KCk7Ci0KLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBXZWJJREJLZXlQYXRoKGNvbnN0
IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nLCAwPiYsIGludCBwYXJzZUVycm9yKTsKLSNlbmRpZgog
Ci0gICAgV2ViUHJpdmF0ZU93blB0cjxXVEY6OlZlY3RvcjxXVEY6OlN0cmluZywgMD4gPiBtX3By
aXZhdGU7Ci0gICAgaW50IG1fcGFyc2VFcnJvcjsKKyAgICBXZWJQcml2YXRlT3duUHRyPFdlYkNv
cmU6OklEQktleVBhdGg+IG1fcHJpdmF0ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCT2JqZWN0U3Rv
cmUuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQk9iamVjdFN0b3JlLmgK
aW5kZXggZGNmNDg1NjkyNTEwY2ZmOWI4MWY2NGUwZDE3YjAyYmRiODFhOWRjNC4uOThlMDQ4YzNh
MTFhMGZiMTM1Y2I1NzZjYTQ4OWUxOWRkZjI5NTBiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCT2JqZWN0U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJJREJPYmplY3RTdG9yZS5oCkBAIC0zMCw3ICszMCw2IEBACiAj
aW5jbHVkZSAiV2ViRE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIldlYklEQkNhbGxiYWNrcy5o
IgogI2luY2x1ZGUgIldlYklEQktleVBhdGguaCIKLSNpbmNsdWRlICJXZWJJREJUcmFuc2FjdGlv
bi5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgogI2luY2x1ZGUgInBsYXRmb3Jt
L1dlYlN0cmluZy5oIgogCkBAIC01MSwxMiArNTAsOCBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZp
cnR1YWwgV2ViSURCS2V5UGF0aCBrZXlQYXRoKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVy
biBXZWJJREJLZXlQYXRoKGtleVBhdGhTdHJpbmcoKSk7Ci0gICAgfQotICAgIHZpcnR1YWwgV2Vi
U3RyaW5nIGtleVBhdGhTdHJpbmcoKSBjb25zdAotICAgIHsKICAgICAgICAgV0VCS0lUX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gV2ViU3RyaW5nKCk7CisgICAgICAgIHJl
dHVybiBXZWJJREJLZXlQYXRoOjpjcmVhdGVOdWxsKCk7CiAgICAgfQogICAgIHZpcnR1YWwgV2Vi
RE9NU3RyaW5nTGlzdCBpbmRleE5hbWVzKCkgY29uc3QKICAgICB7CkBAIC03NiwxMyArNzEsNiBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1bmN0aW9uKGNvbnN0IFdlYklEQktl
eSYsIFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0
aW9uQ29kZSYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2
b2lkIGRlbGV0ZUZ1bmN0aW9uKGNvbnN0IFdlYklEQktleVJhbmdlJiwgV2ViSURCQ2FsbGJhY2tz
KiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJikgeyBXRUJLSVRf
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2xlYXIoV2ViSURCQ2Fs
bGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJikgeyBX
RUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLQotICAgIC8vIEZJWE1FOiBSZW1vdmUgV2Vi
U3RyaW5nIGtleVBhdGggb3ZlcmxvYWQgb25jZSBjYWxsZXJzIGFyZSB1cGRhdGVkLgotICAgIC8v
IGh0dHA6Ly93ZWJraXQub3JnL2IvODQyMDcKLSAgICB2aXJ0dWFsIFdlYklEQkluZGV4KiBjcmVh
dGVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYga2V5UGF0aCwg
Ym9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRy
YW5zYWN0aW9uLCBXZWJFeGNlcHRpb25Db2RlJiBlYykKLSAgICB7Ci0gICAgICAgIHJldHVybiBj
cmVhdGVJbmRleChuYW1lLCBXZWJJREJLZXlQYXRoKGtleVBhdGgpLCB1bmlxdWUsIG11bHRpRW50
cnksIHRyYW5zYWN0aW9uLCBlYyk7Ci0gICAgfQogICAgIHZpcnR1YWwgV2ViSURCSW5kZXgqIGNy
ZWF0ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYsIGNvbnN0IFdlYklEQktleVBhdGgmLCBib29sLCBi
b29sLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKQogICAgIHsK
ICAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0Lmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1
cHBvcnQuaAppbmRleCBjYTM3NjJkY2JlYmU0YmYyYmJhYTZkMDAwMTRmOGFhNDNmODUxNGYyLi41
NjM4MDQxNTRmOTNhMDMzYWU1N2YyZTk2MjQzNDNkYjljNjM4NzFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0
Zm9ybVN1cHBvcnQuaApAQCAtMzEsNyArMzEsNiBAQAogI2lmbmRlZiBXZWJLaXRQbGF0Zm9ybVN1
cHBvcnRfaAogI2RlZmluZSBXZWJLaXRQbGF0Zm9ybVN1cHBvcnRfaAogCi0jaW5jbHVkZSAiLi4v
V2ViSURCS2V5UGF0aC5oIiAvLyBGSVhNRTogUmVtb3ZlIHdpdGg6IGh0dHA6Ly93ZWJraXQub3Jn
L2IvODQyMDcKICNpbmNsdWRlICJXZWJDb21tb24uaCIKICNpbmNsdWRlICJXZWJHcmFwaGljc0Nv
bnRleHQzRC5oIgogI2luY2x1ZGUgIldlYkxvY2FsaXplZFN0cmluZy5oIgpAQCAtNTcsNiArNTYs
NyBAQCBjbGFzcyBXZWJGaWxlU3lzdGVtOwogY2xhc3MgV2ViRmlsZVV0aWxpdGllczsKIGNsYXNz
IFdlYklEQkZhY3Rvcnk7IC8vIEZJWE1FOiBEb2VzIHRoaXMgYmVsb25nIGluIHBsYXRmb3JtPwog
Y2xhc3MgV2ViSURCS2V5OyAvLyBGSVhNRTogRG9lcyB0aGlzIGJlbG9uZyBpbiBwbGF0Zm9ybT8K
K2NsYXNzIFdlYklEQktleVBhdGg7IC8vIEZJWE1FOiBEb2VzIHRoaXMgYmVsb25nIGluIHBsYXRm
b3JtPwogY2xhc3MgV2ViTWVzc2FnZVBvcnRDaGFubmVsOyAvLyBGSVhNRTogRG9lcyB0aGlzIGJl
bG9uZyBpbiBwbGF0Zm9ybT8KIGNsYXNzIFdlYlBsdWdpbkxpc3RCdWlsZGVyOyAvLyBGSVhNRTog
RG9lcyB0aGlzIGJlbG9uZyBpbiBwbGF0Zm9ybT8KIGNsYXNzIFdlYlNhbmRib3hTdXBwb3J0OwpA
QCAtMTI3LDEzICsxMjcsNyBAQCBwdWJsaWM6CiAgICAgLy8gSW5kZXhlZCBEYXRhYmFzZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKICAgICB2
aXJ0dWFsIFdlYklEQkZhY3RvcnkqIGlkYkZhY3RvcnkoKSB7IHJldHVybiAwOyB9Ci0gICAgLy8g
RklYTUU6IFJlbW92ZSBXZWJTdHJpbmcga2V5UGF0aCBvdmVybG9hZCBvbmNlIGNhbGxlcnMgYXJl
IHVwZGF0ZWQuCi0gICAgLy8gaHR0cDovL3dlYmtpdC5vcmcvYi84NDIwNwotICAgIHZpcnR1YWwg
dm9pZCBjcmVhdGVJREJLZXlzRnJvbVNlcmlhbGl6ZWRWYWx1ZXNBbmRLZXlQYXRoKGNvbnN0IFdl
YlZlY3RvcjxXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiB2YWx1ZXMsICBjb25zdCBXZWJTdHJp
bmcmIGtleVBhdGgsIFdlYlZlY3RvcjxXZWJJREJLZXk+JiBrZXlzKSB7IGNyZWF0ZUlEQktleXNG
cm9tU2VyaWFsaXplZFZhbHVlc0FuZEtleVBhdGgodmFsdWVzLCBXZWJJREJLZXlQYXRoKGtleVBh
dGgpLCBrZXlzKTsgfQogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVJREJLZXlzRnJvbVNlcmlhbGl6
ZWRWYWx1ZXNBbmRLZXlQYXRoKGNvbnN0IFdlYlZlY3RvcjxXZWJTZXJpYWxpemVkU2NyaXB0VmFs
dWU+JiB2YWx1ZXMsICBjb25zdCBXZWJJREJLZXlQYXRoJiBrZXlQYXRoLCBXZWJWZWN0b3I8V2Vi
SURCS2V5PiYga2V5cykgeyB9Ci0gICAgLy8gRklYTUU6IFJlbW92ZSBXZWJTdHJpbmcga2V5UGF0
aCBvdmVybG9hZCBvbmNlIGNhbGxlcnMgYXJlIHVwZGF0ZWQuCi0gICAgLy8gaHR0cDovL3dlYmtp
dC5vcmcvYi84NDIwNwotICAgIHZpcnR1YWwgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlIGluamVj
dElEQktleUludG9TZXJpYWxpemVkVmFsdWUoY29uc3QgV2ViSURCS2V5JiBrZXksIGNvbnN0IFdl
YlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IFdlYlN0cmluZyYga2V5UGF0aCkg
eyByZXR1cm4gaW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShrZXksIHZhbHVlLCBXZWJJ
REJLZXlQYXRoKGtleVBhdGgpKTsgfQogICAgIHZpcnR1YWwgV2ViU2VyaWFsaXplZFNjcmlwdFZh
bHVlIGluamVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUoY29uc3QgV2ViSURCS2V5JiBrZXks
IGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IFdlYklEQktleVBh
dGgmIGtleVBhdGgpIHsgcmV0dXJuIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgpOyB9CiAKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVt
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNw
cAppbmRleCA2OWU1OTYyMjlmNDNkMmZkZTQ1Y2RiNGEwNzBjNWQ3ZDNkNjA4YmU5Li44NGIyNTJl
ZDI2NWFlMjFjYjE4YzkxYmFhMWI3MmY4MjFmODVmNmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcApAQCAtNTIsNiArNTIsNyBA
QAogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSURCRmFjdG9y
eUJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJLZXkuaCIKKyNpbmNsdWRlICJJREJL
ZXlQYXRoLmgiCiAjaW5jbHVkZSAiSWNlT3B0aW9ucy5oIgogI2luY2x1ZGUgIkljb25VUkwuaCIK
ICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgpAQCAtODQsNiArODUsNyBAQAogI2luY2x1ZGUgIldl
YklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiV2ViSURCRmFjdG9yeS5oIgogI2lu
Y2x1ZGUgIldlYklEQktleS5oIgorI2luY2x1ZGUgIldlYklEQktleVBhdGguaCIKICNpbmNsdWRl
ICJXZWJJY29uVVJMLmgiCiAjaW5jbHVkZSAiV2ViSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAi
V2ViTWVkaWFQbGF5ZXIuaCIKQEAgLTQ2MywxMiArNDY1LDE4IEBAIENPTVBJTEVfQVNTRVJUX01B
VENISU5HX0VOVU0oV2ViVmlldzo6VXNlclN0eWxlSW5qZWN0SW5TdWJzZXF1ZW50RG9jdW1lbnRz
LCBJbmplCiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYklEQkRhdGFiYXNlRXhjZXB0
aW9uRGF0YUVycm9yLCBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlIpOwogQ09NUElMRV9B
U1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJEYXRhYmFzZUV4Y2VwdGlvblF1b3RhRXJyb3IsIElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpRVU9UQV9FUlIpOwogCisjaWYgRU5BQkxFKElOREVYRURfREFU
QUJBU0UpCiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYklEQktleTo6SW52YWxpZFR5
cGUsIElEQktleTo6SW52YWxpZFR5cGUpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShX
ZWJJREJLZXk6OkFycmF5VHlwZSwgSURCS2V5OjpBcnJheVR5cGUpOwogQ09NUElMRV9BU1NFUlRf
TUFUQ0hJTkdfRU5VTShXZWJJREJLZXk6OlN0cmluZ1R5cGUsIElEQktleTo6U3RyaW5nVHlwZSk7
CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYklEQktleTo6RGF0ZVR5cGUsIElEQktl
eTo6RGF0ZVR5cGUpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJLZXk6Ok51
bWJlclR5cGUsIElEQktleTo6TnVtYmVyVHlwZSk7CiAKK0NPTVBJTEVfQVNTRVJUX01BVENISU5H
X0VOVU0oV2ViSURCS2V5UGF0aDo6TnVsbFR5cGUsIElEQktleVBhdGg6Ok51bGxUeXBlKTsKK0NP
TVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViSURCS2V5UGF0aDo6U3RyaW5nVHlwZSwgSURC
S2V5UGF0aDo6U3RyaW5nVHlwZSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYklE
QktleVBhdGg6OkFycmF5VHlwZSwgSURCS2V5UGF0aDo6QXJyYXlUeXBlKTsKKyNlbmRpZgorCiAj
aWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJG
aWxlU3lzdGVtOjpUeXBlVGVtcG9yYXJ5LCBBc3luY0ZpbGVTeXN0ZW06OlRlbXBvcmFyeSk7CiBD
T01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkZpbGVTeXN0ZW06OlR5cGVQZXJzaXN0ZW50
LCBBc3luY0ZpbGVTeXN0ZW06OlBlcnNpc3RlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwCmluZGV4IDE3OTc5OTI3
NWQ2Zjk5NzYzMDE3N2U1YTI4YmQ5M2JhMzE3MjYwNGYuLjZlNTM1NDk5YTM4YzRhOTM1MDlhNmU0
ZjU1NmNmOThhYzhmMjAwNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgUGFzc1Jl
ZlB0cjxET01TdHJpbmdMaXN0PiBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6b2JqZWN0U3RvcmVO
YW1lcygpIGNvbnN0CiAgICAgcmV0dXJuIG1fd2ViSURCRGF0YWJhc2UtPm9iamVjdFN0b3JlTmFt
ZXMoKTsKIH0KIAotUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IElE
QkRhdGFiYXNlQmFja2VuZFByb3h5OjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKK1Bh
c3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBJREJEYXRhYmFzZUJhY2tl
bmRQcm94eTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJL
ZXlQYXRoJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIC8vIFRo
ZSB0cmFuc2FjdGlvbiBwb2ludGVyIGlzIGd1YXJhbnRlZWQgdG8gYmUgYSBwb2ludGVyIHRvIGEg
cHJveHkgb2JqZWN0IGFzLCBpbiB0aGUgcmVuZGVyZXIsCiAgICAgLy8gYWxsIGltcGxlbWVudGF0
aW9ucyBvZiBJREIgaW50ZXJmYWNlcyBhcmUgcHJveHkgb2JqZWN0cy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oCmluZGV4IDVh
NWJhZjI4ZjA5NmE5OTQ3ZmFiMDUyZmVkYjFlOWFlMzc3ZWE2NWEuLmI3OGFjNjk5MmNkY2ZmMTM4
N2E5ZWMwOGIzODY4ZWI2Y2ZjNDMzOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBTdHJpbmcgdmVyc2lvbigpIGNvbnN0OwogICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxXZWJDb3JlOjpET01TdHJpbmdMaXN0PiBvYmplY3RTdG9yZU5hbWVzKCkgY29uc3Q7
CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5k
SW50ZXJmYWNlPiBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVh
bCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gY3Jl
YXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJDb3JlOjpJREJLZXlQ
YXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGRl
bGV0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1
YWwgdm9pZCBzZXRWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxXZWJD
b3JlOjpJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlQ2FsbGJh
Y2tzPiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uKFdlYkNv
cmU6OkRPTVN0cmluZ0xpc3QqIHN0b3JlTmFtZXMsIHVuc2lnbmVkIHNob3J0IG1vZGUsIFdlYkNv
cmU6OkV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0lEQkluZGV4QmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQkluZGV4QmFja2VuZFByb3h5LmNwcAppbmRleCAwMDE0ZjI5NTk2YWViM2ExYWMzM2FiN2Ni
ZTZjYzUzODA5MjIyYmE2Li41YmM0MmU2ZGIxZjI0YjM2NmE3YWUxYzY3OGNkYzlkYTIzMjE0NTgw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJJbmRleEJhY2tlbmRQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCSW5kZXhCYWNrZW5k
UHJveHkuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0Up
CiAKICNpbmNsdWRlICJJREJDYWxsYmFja3MuaCIKKyNpbmNsdWRlICJJREJLZXlQYXRoLmgiCiAj
aW5jbHVkZSAiSURCS2V5UmFuZ2UuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRQ
cm94eS5oIgogI2luY2x1ZGUgIldlYklEQkNhbGxiYWNrc0ltcGwuaCIKQEAgLTY1LDkgKzY2LDkg
QEAgU3RyaW5nIElEQkluZGV4QmFja2VuZFByb3h5OjpzdG9yZU5hbWUoKQogICAgIHJldHVybiBt
X3dlYklEQkluZGV4LT5zdG9yZU5hbWUoKTsKIH0KIAotU3RyaW5nIElEQkluZGV4QmFja2VuZFBy
b3h5OjprZXlQYXRoKCkKK0lEQktleVBhdGggSURCSW5kZXhCYWNrZW5kUHJveHk6OmtleVBhdGgo
KQogewotICAgIHJldHVybiBtX3dlYklEQkluZGV4LT5rZXlQYXRoKCkuc3RyaW5nKCk7CisgICAg
cmV0dXJuIG1fd2ViSURCSW5kZXgtPmtleVBhdGgoKTsKIH0KIAogYm9vbCBJREJJbmRleEJhY2tl
bmRQcm94eTo6dW5pcXVlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQkluZGV4QmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJJ
bmRleEJhY2tlbmRQcm94eS5oCmluZGV4IDQyZTBlYWJiZWUxN2ExNjcwODc4ZjcwMDViMzA5ZTVi
ZDEyMDhjZDAuLjA2NzAwNTIxMGRlMjYzOGY3NTJkNDljNTU2OTY5Y2VkNmVlODU1ZDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkluZGV4QmFja2VuZFByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCSW5kZXhCYWNrZW5kUHJveHkuaApA
QCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCiAjaW5jbHVk
ZSAiSURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgog
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCkBA
IC00Myw3ICs0NCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgU3RyaW5nIG5hbWUoKTsKICAg
ICB2aXJ0dWFsIFN0cmluZyBzdG9yZU5hbWUoKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBrZXlQYXRo
KCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpJREJLZXlQYXRoIGtleVBhdGgoKTsKICAgICB2aXJ0
dWFsIGJvb2wgdW5pcXVlKCk7CiAgICAgdmlydHVhbCBib29sIG11bHRpRW50cnkoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5k
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNr
ZW5kUHJveHkuY3BwCmluZGV4IDIxYTVkZDg1NmRjM2I4MDU5ODk3N2MwNDg2MmViODZkZmU4Nzlj
MGQuLmRiMWE0NGE2YTJhOTgyNGQxYjFhMWVlNDkxZjE2YjkyNTZiMDU5ZjYgMTAwNzU1Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9yZUJhY2tlbmRQ
cm94eS5jcHAKQEAgLTY0LDkgKzY0LDkgQEAgU3RyaW5nIElEQk9iamVjdFN0b3JlQmFja2VuZFBy
b3h5OjpuYW1lKCkgY29uc3QKICAgICByZXR1cm4gbV93ZWJJREJPYmplY3RTdG9yZS0+bmFtZSgp
OwogfQogCi1TdHJpbmcgSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OmtleVBhdGgoKSBjb25z
dAorSURCS2V5UGF0aCBJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eTo6a2V5UGF0aCgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1fd2ViSURCT2JqZWN0U3RvcmUtPmtleVBhdGgoKS5zdHJpbmcoKTsK
KyAgICByZXR1cm4gbV93ZWJJREJPYmplY3RTdG9yZS0+a2V5UGF0aCgpOwogfQogCiBQYXNzUmVm
UHRyPERPTVN0cmluZ0xpc3Q+IElEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjppbmRleE5hbWVz
KCkgY29uc3QKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZFBy
b3h5OjpjbGVhcihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBJREJUcgogICAg
IG1fd2ViSURCT2JqZWN0U3RvcmUtPmNsZWFyKG5ldyBXZWJJREJDYWxsYmFja3NJbXBsKGNhbGxi
YWNrcyksICp0cmFuc2FjdGlvblByb3h5LT5nZXRXZWJJREJUcmFuc2FjdGlvbigpLCBlYyk7CiB9
CiAKLVBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBJREJPYmplY3RTdG9yZUJh
Y2tlbmRQcm94eTo6Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnksIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0
cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IElEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5Ojpj
cmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgs
IGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnksIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIC8vIFRoZSB0cmFu
c2FjdGlvbiBwb2ludGVyIGlzIGd1YXJhbnRlZWQgdG8gYmUgYSBwb2ludGVyIHRvIGEgcHJveHkg
b2JqZWN0IGFzLCBpbiB0aGUgcmVuZGVyZXIsCiAgICAgLy8gYWxsIGltcGxlbWVudGF0aW9ucyBv
ZiBJREIgaW50ZXJmYWNlcyBhcmUgcHJveHkgb2JqZWN0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5oCmluZGV4IDVl
MTE4OTE4NmFhMWRhMmMxNGM1OThkODY0MjQ2MmVlN2RkNGVjZGYuLjBjMmQ4MzhmZWRkMTBiZWI5
ZjI4ZWE5OWZmNzc0OGQyMjc1MmU3ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0lEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuaApAQCAtMjgsNiArMjgsNyBA
QAogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKKyNpbmNsdWRlICJJREJLZXlQYXRo
LmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVk
ZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CkBAIC00Myw3ICs0
NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eSgp
OwogCiAgICAgdmlydHVhbCBTdHJpbmcgbmFtZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgU3RyaW5n
IGtleVBhdGgoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OklEQktleVBhdGgga2V5UGF0
aCgpIGNvbnN0OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpET01TdHJpbmdMaXN0
PiBpbmRleE5hbWVzKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0KFBhc3NSZWZQdHI8
V2ViQ29yZTo6SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4s
IFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2Vw
dGlvbkNvZGUmKTsKQEAgLTUyLDcgKzUzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBk
ZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleVJhbmdlPiwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGNs
ZWFyKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgV2ViQ29yZTo6SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwogCi0gICAg
UGFzc1JlZlB0cjxXZWJDb3JlOjpJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZUluZGV4
KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwg
Ym9vbCBtdWx0aUVudHJ5LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2Uq
LCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJJ
bmRleEJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgV2ViQ29yZTo6SURCS2V5UGF0aCYsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnksIFdl
YkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlv
bkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEludGVyZmFj
ZT4gaW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CiAg
ICAgdm9pZCBkZWxldGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OklEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAKaW5kZXggZjY4
YjhhMjliMzE0ZjdkMTI4ZjVkMTEzNDcwZWZkOTJjYzJjZjY3Ny4uYzIzMjhmZTVjNDJlZGJkOTk4
OTQyNDNkYmJhMTNlM2NiNGJmMDhiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9QbGF0Zm9ybVN1cHBvcnQuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiV2ViRnJh
bWVDbGllbnQuaCIKICNpbmNsdWRlICJXZWJGcmFtZUltcGwuaCIKICNpbmNsdWRlICJXZWJJREJL
ZXkuaCIKKyNpbmNsdWRlICJXZWJJREJLZXlQYXRoLmgiCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAj
aW5jbHVkZSAiV2ViUGx1Z2luQ29udGFpbmVySW1wbC5oIgogI2luY2x1ZGUgIldlYlBsdWdpbkxp
c3RCdWlsZGVySW1wbC5oIgpAQCAtNTE1LDcgKzUxNiw3IEBAIFBhc3NSZWZQdHI8SURCRmFjdG9y
eUJhY2tlbmRJbnRlcmZhY2U+IFBsYXRmb3JtU3VwcG9ydDo6aWRiRmFjdG9yeSgpCiAgICAgcmV0
dXJuIElEQkZhY3RvcnlCYWNrZW5kUHJveHk6OmNyZWF0ZSgpOwogfQogCi12b2lkIFBsYXRmb3Jt
U3VwcG9ydDo6Y3JlYXRlSURCS2V5c0Zyb21TZXJpYWxpemVkVmFsdWVzQW5kS2V5UGF0aChjb25z
dCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gPiYgdmFsdWVzLCBjb25zdCBT
dHJpbmcmIGtleVBhdGgsIFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+JiBrZXlzKQordm9pZCBQbGF0
Zm9ybVN1cHBvcnQ6OmNyZWF0ZUlEQktleXNGcm9tU2VyaWFsaXplZFZhbHVlc0FuZEtleVBhdGgo
Y29uc3QgVmVjdG9yPFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+ID4mIHZhbHVlcywgY29u
c3QgSURCS2V5UGF0aCYga2V5UGF0aCwgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mIGtleXMpCiB7
CiAgICAgV2ViVmVjdG9yPFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gd2ViVmFsdWVzID0gdmFs
dWVzOwogICAgIFdlYlZlY3RvcjxXZWJJREJLZXk+IHdlYktleXM7CkBAIC01MjcsNyArNTI4LDcg
QEAgdm9pZCBQbGF0Zm9ybVN1cHBvcnQ6OmNyZWF0ZUlEQktleXNGcm9tU2VyaWFsaXplZFZhbHVl
c0FuZEtleVBhdGgoY29uc3QgVmVjdG9yPFIKICAgICAgICAga2V5cy5hcHBlbmQoUGFzc1JlZlB0
cjxJREJLZXk+KHdlYktleXNbaV0pKTsKIH0KIAotUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IFBsYXRmb3JtU3VwcG9ydDo6aW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShQ
YXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
dmFsdWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKK1Bhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBQbGF0Zm9ybVN1cHBvcnQ6OmluamVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUo
UGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IHZhbHVlLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKQogewogICAgIHJldHVybiB3ZWJLaXRQ
bGF0Zm9ybVN1cHBvcnQoKS0+aW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShrZXksIHZh
bHVlLCBrZXlQYXRoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklEQkRhdGFiYXNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJEYXRhYmFzZUltcGwuY3BwCmluZGV4IDQ0N2I5OTNjNmE0ZjkwN2RjMDQzYTdhMmY1NGFjNTY4
NmQ2Mzk4MTkuLjRiZTQzZGMxNGQ4MTdkOTU5YWVmNThhMTZhZWNmNDg1YmNiNWI2YmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcApA
QCAtNjYsNyArNjYsNyBAQCBXZWJET01TdHJpbmdMaXN0IFdlYklEQkRhdGFiYXNlSW1wbDo6b2Jq
ZWN0U3RvcmVOYW1lcygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGF0YWJhc2VCYWNrZW5kLT5vYmpl
Y3RTdG9yZU5hbWVzKCk7CiB9CiAKLVdlYklEQk9iamVjdFN0b3JlKiBXZWJJREJEYXRhYmFzZUlt
cGw6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3Ry
aW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9u
JiB0cmFuc2FjdGlvbiwgV2ViRXhjZXB0aW9uQ29kZSYgZWMpCitXZWJJREJPYmplY3RTdG9yZSog
V2ViSURCRGF0YWJhc2VJbXBsOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcmIG5h
bWUsIGNvbnN0IFdlYklEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgY29u
c3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBXZWJFeGNlcHRpb25Db2RlJiBlYykK
IHsKICAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBvYmplY3RTdG9y
ZSA9IG1fZGF0YWJhc2VCYWNrZW5kLT5jcmVhdGVPYmplY3RTdG9yZShuYW1lLCBrZXlQYXRoLCBh
dXRvSW5jcmVtZW50LCB0cmFuc2FjdGlvbi5nZXRJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2UoKSwgZWMpOwogICAgIGlmICghb2JqZWN0U3RvcmUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgKaW5kZXggZjczYmU1NzA1NGY2MmFiNGMy
NTQxNDAyZDdmMTQ3ZDg2N2FlZjNkNy4uOTY1NzFiYmU5YzFkOTZjYmQzZjljN2QzYWQ4MzE3OWI5
NjE5M2RkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0
YWJhc2VJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJh
c2VJbXBsLmgKQEAgLTUzLDEwICs1Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFdlYlN0cmlu
ZyB2ZXJzaW9uKCkgY29uc3Q7CiAgICAgdmlydHVhbCBXZWJET01TdHJpbmdMaXN0IG9iamVjdFN0
b3JlTmFtZXMoKSBjb25zdDsKIAotICAgIC8vIEZJWE1FOiBSZW1vdmUgV2ViU3RyaW5nIGtleVBh
dGggb3ZlcmxvYWQgb25jZSBjYWxsZXJzIGFyZSB1cGRhdGVkLgotICAgIC8vIGh0dHA6Ly93ZWJr
aXQub3JnL2IvODQyMDcKLSAgICB2aXJ0dWFsIFdlYklEQk9iamVjdFN0b3JlKiBjcmVhdGVPYmpl
Y3RTdG9yZShjb25zdCBXZWJTdHJpbmcmLCBjb25zdCBXZWJTdHJpbmcmLCBib29sLCBjb25zdCBX
ZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2aXJ0dWFsIFdlYklE
Qk9iamVjdFN0b3JlKiBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNv
bnN0IFdlYklEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgY29uc3QgV2Vi
SURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBXZWJFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1
cm4gY3JlYXRlT2JqZWN0U3RvcmUobmFtZSwga2V5UGF0aC5zdHJpbmcoKSwgYXV0b0luY3JlbWVu
dCwgdHJhbnNhY3Rpb24sIGVjKTsgfQorICAgIHZpcnR1YWwgV2ViSURCT2JqZWN0U3RvcmUqIGNy
ZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCS2V5UGF0
aCYsIGJvb2wgYXV0b0luY3JlbWVudCwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNl
cHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFdl
YlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2Rl
Jik7CiAgICAgdmlydHVhbCB2b2lkIHNldFZlcnNpb24oY29uc3QgV2ViU3RyaW5nJiB2ZXJzaW9u
LCBXZWJJREJDYWxsYmFja3MqLCBXZWJFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCBXZWJJ
REJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24oY29uc3QgV2ViRE9NU3RyaW5nTGlzdCYgbmFtZXMs
IHVuc2lnbmVkIHNob3J0IG1vZGUsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkluZGV4SW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJREJJbmRleEltcGwuY3BwCmluZGV4IDE3MDkzOTU2NzQwOTYw
MmQ4OGY0N2E2NWY1MDNhOWNlYjgyN2RhYjUuLmQ3OGIyYjNhNjA4YzhhMzc5Yzk4M2IwODAzOThk
YWRiY2JhZjE5OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklE
QkluZGV4SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCSW5k
ZXhJbXBsLmNwcApAQCAtNjMsMTMgKzYzLDYgQEAgV2ViSURCS2V5UGF0aCBXZWJJREJJbmRleElt
cGw6OmtleVBhdGgoKSBjb25zdAogICAgIHJldHVybiBXZWJJREJLZXlQYXRoKG1fYmFja2VuZC0+
a2V5UGF0aCgpKTsKIH0KIAotLy8gRklYTUU6IFJlbW92ZSB0aGlzIG1ldGhvZCBvbmNlIGNhbGxl
cnMgYXJlIHVwZGF0ZWQuCi0vLyBodHRwOi8vd2Via2l0Lm9yZy9iLzg0MjA3Ci1XZWJTdHJpbmcg
V2ViSURCSW5kZXhJbXBsOjprZXlQYXRoU3RyaW5nKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9i
YWNrZW5kLT5rZXlQYXRoKCk7Ci19Ci0KIGJvb2wgV2ViSURCSW5kZXhJbXBsOjp1bmlxdWUoKSBj
b25zdAogewogICAgIHJldHVybiBtX2JhY2tlbmQtPnVuaXF1ZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCSW5kZXhJbXBsLmggYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJREJJbmRleEltcGwuaAppbmRleCBkOGIxMTI5ZDBmM2Y1NWQzMzNm
ZmQ2MTljMDk5YzQ4YWJlOTVmM2ZjLi42ZDBhYjY4ZjZkOTlmZGNhY2RmZGMwMzJjMDI5ODA4NTg2
ZWRjYmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJJbmRl
eEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJJbmRleEltcGwu
aApAQCAtNDYsOSArNDYsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBXZWJTdHJpbmcgbmFtZSgp
IGNvbnN0OwogICAgIHZpcnR1YWwgV2ViU3RyaW5nIHN0b3JlTmFtZSgpIGNvbnN0OwogICAgIHZp
cnR1YWwgV2ViSURCS2V5UGF0aCBrZXlQYXRoKCkgY29uc3Q7Ci0gICAgLy8gRklYTUU6IFJlbW92
ZSB0aGlzIG1ldGhvZCBvbmNlIGNhbGxlcnMgYXJlIHVwZGF0ZWQuCi0gICAgLy8gaHR0cDovL3dl
YmtpdC5vcmcvYi84NDIwNwotICAgIHZpcnR1YWwgV2ViU3RyaW5nIGtleVBhdGhTdHJpbmcoKSBj
b25zdDsKICAgICB2aXJ0dWFsIGJvb2wgdW5pcXVlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29s
IG11bHRpRW50cnkoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViSURCS2V5UGF0aC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJLZXlQYXRoLmNwcAppbmRleCBiY2Y1ZGJkMGQ5ZWM4NmQxYTM5YzgwMWU0YWUwZjc3ZmJkMjQx
YjI2Li4xN2MxNThmMzRlNDg4ZDkwZTMxNzNjZGMzODQ2MWQxYWYyYTNiNzk3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJLZXlQYXRoLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJLZXlQYXRoLmNwcApAQCAtMzcsMTAxICszNyw3
OSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVdl
YklEQktleVBhdGggV2ViSURCS2V5UGF0aDo6Y3JlYXRlKGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJp
bmc+JikKK1dlYklEQktleVBhdGg6On5XZWJJREJLZXlQYXRoKCkKIHsKLSAgICAvLyBGSVhNRTog
QXJyYXktdHlwZSBrZXkgcGF0aHMgbm90IHlldCBzdXBwb3J0ZWQuIGh0dHA6Ly93ZWJraXQub3Jn
L2IvODQyMDcKLSAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGNy
ZWF0ZU51bGwoKTsKKyAgICBtX3ByaXZhdGUucmVzZXQoMCk7CiB9CiAKIFdlYklEQktleVBhdGgg
V2ViSURCS2V5UGF0aDo6Y3JlYXRlKGNvbnN0IFdlYlN0cmluZyYga2V5UGF0aCkKIHsKLSAgICBp
ZiAoa2V5UGF0aC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZU51bGwoKTsKLQotICAg
IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiBpZGJFbGVtZW50czsKLSAgICBJREJLZXlQYXRoUGFy
c2VFcnJvciBpZGJFcnJvcjsKLSAgICBJREJQYXJzZUtleVBhdGgoa2V5UGF0aCwgaWRiRWxlbWVu
dHMsIGlkYkVycm9yKTsKLSAgICByZXR1cm4gV2ViSURCS2V5UGF0aChpZGJFbGVtZW50cywgc3Rh
dGljX2Nhc3Q8aW50PihpZGJFcnJvcikpOwotfQotCi1XZWJJREJLZXlQYXRoIFdlYklEQktleVBh
dGg6OmNyZWF0ZU51bGwoKQotewotICAgIHJldHVybiBXZWJJREJLZXlQYXRoKFdlYlN0cmluZygp
KTsKKyAgICByZXR1cm4gV2ViSURCS2V5UGF0aChJREJLZXlQYXRoKGtleVBhdGgpKTsKIH0KIAot
V2ViSURCS2V5UGF0aDo6V2ViSURCS2V5UGF0aChjb25zdCBXZWJJREJLZXlQYXRoJiBrZXlQYXRo
KQorV2ViSURCS2V5UGF0aCBXZWJJREJLZXlQYXRoOjpjcmVhdGUoY29uc3QgV2ViVmVjdG9yPFdl
YlN0cmluZz4mIGtleVBhdGgpCiB7Ci0gICAgYXNzaWduKGtleVBhdGgpOworICAgIFZlY3RvcjxT
dHJpbmc+IHN0cmluZ3M7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBrZXlQYXRoLnNpemUo
KTsgKytpKQorICAgICAgICBzdHJpbmdzLmFwcGVuZChrZXlQYXRoW2ldKTsKKyAgICByZXR1cm4g
V2ViSURCS2V5UGF0aChJREJLZXlQYXRoKHN0cmluZ3MpKTsKIH0KIAotV2ViSURCS2V5UGF0aDo6
V2ViSURCS2V5UGF0aChjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIGVsZW1lbnRzLCBp
bnQgcGFyc2VFcnJvcikKLSAgICA6IG1fcHJpdmF0ZShuZXcgV1RGOjpWZWN0b3I8V1RGOjpTdHJp
bmc+KGVsZW1lbnRzKSkKLSAgICAsIG1fcGFyc2VFcnJvcihwYXJzZUVycm9yKQorV2ViSURCS2V5
UGF0aCBXZWJJREJLZXlQYXRoOjpjcmVhdGVOdWxsKCkKIHsKKyAgICByZXR1cm4gV2ViSURCS2V5
UGF0aChJREJLZXlQYXRoKCkpOwogfQogCiBib29sIFdlYklEQktleVBhdGg6OmlzVmFsaWQoKSBj
b25zdAogewotICAgIHJldHVybiBtX3BhcnNlRXJyb3IgPT0gSURCS2V5UGF0aFBhcnNlRXJyb3JO
b25lOworICAgIEFTU0VSVChtX3ByaXZhdGUuZ2V0KCkpOworICAgIHJldHVybiBtX3ByaXZhdGUt
PmlzVmFsaWQoKTsKIH0KIAogV2ViSURCS2V5UGF0aDo6VHlwZSBXZWJJREJLZXlQYXRoOjp0eXBl
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcml2YXRlLmdldCgpID8gU3RyaW5nVHlwZSA6IE51
bGxUeXBlOworICAgIEFTU0VSVChtX3ByaXZhdGUuZ2V0KCkpOworICAgIHJldHVybiBUeXBlKG1f
cHJpdmF0ZS0+dHlwZSgpKTsKIH0KIAotV2ViU3RyaW5nIFdlYklEQktleVBhdGg6OnN0cmluZygp
IGNvbnN0CisKK1dlYlZlY3RvcjxXZWJTdHJpbmc+IFdlYklEQktleVBhdGg6OmFycmF5KCkgY29u
c3QKIHsKLSAgICBpZiAoIW1fcHJpdmF0ZS5nZXQoKSkKLSAgICAgICAgcmV0dXJuIFdlYlN0cmlu
ZygpOwotCi0gICAgLy8gRklYTUU6IFN0b3JlIHRoZSBjb21wbGV0ZSBzdHJpbmcgaW5zdGVhZCBv
ZiByZWJ1aWxkaW5nIGl0LgotICAgIC8vIGh0dHA6Ly93ZWJraXQub3JnL2IvODQyMDcKLSAgICBX
VEY6OlN0cmluZyBzdHJpbmcoIiIpOwotICAgIFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgYXJy
YXkgPSAqbV9wcml2YXRlLmdldCgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXku
c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKGkpCi0gICAgICAgICAgICBzdHJpbmcuYXBwZW5k
KCIuIik7Ci0gICAgICAgIHN0cmluZy5hcHBlbmQoYXJyYXlbaV0pOwotICAgIH0KLSAgICByZXR1
cm4gV2ViU3RyaW5nKHN0cmluZyk7CisgICAgQVNTRVJUKG1fcHJpdmF0ZS5nZXQoKSk7CisgICAg
QVNTRVJUKG1fcHJpdmF0ZS0+dHlwZSgpID09IElEQktleVBhdGg6OkFycmF5VHlwZSk7CisgICAg
cmV0dXJuIG1fcHJpdmF0ZS0+YXJyYXkoKTsKIH0KIAotV2ViSURCS2V5UGF0aDo6V2ViSURCS2V5
UGF0aChjb25zdCBXZWJTdHJpbmcmIGtleVBhdGgpCi0gICAgOiBtX3BhcnNlRXJyb3IoSURCS2V5
UGF0aFBhcnNlRXJyb3JOb25lKQorV2ViU3RyaW5nIFdlYklEQktleVBhdGg6OnN0cmluZygpIGNv
bnN0CiB7Ci0gICAgaWYgKCFrZXlQYXRoLmlzTnVsbCgpKSB7Ci0gICAgICAgIG1fcHJpdmF0ZS5y
ZXNldChuZXcgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+KCkpOwotICAgICAgICBJREJLZXlQYXRo
UGFyc2VFcnJvciBpZGJQYXJzZUVycm9yOwotICAgICAgICBJREJQYXJzZUtleVBhdGgoa2V5UGF0
aCwgKm1fcHJpdmF0ZS5nZXQoKSwgaWRiUGFyc2VFcnJvcik7Ci0gICAgICAgIG1fcGFyc2VFcnJv
ciA9IGlkYlBhcnNlRXJyb3I7Ci0gICAgfQorICAgIEFTU0VSVChtX3ByaXZhdGUuZ2V0KCkpOwor
ICAgIEFTU0VSVChtX3ByaXZhdGUtPnR5cGUoKSA9PSBJREJLZXlQYXRoOjpTdHJpbmdUeXBlKTsK
KyAgICByZXR1cm4gbV9wcml2YXRlLT5zdHJpbmcoKTsKIH0KIAotaW50IFdlYklEQktleVBhdGg6
OnBhcnNlRXJyb3IoKSBjb25zdAorV2ViSURCS2V5UGF0aDo6V2ViSURCS2V5UGF0aChjb25zdCBX
ZWJJREJLZXlQYXRoJiBrZXlQYXRoKQorICAgIDogbV9wcml2YXRlKG5ldyBJREJLZXlQYXRoKGtl
eVBhdGgpKQogewotICAgIHJldHVybiBtX3BhcnNlRXJyb3I7CisgICAgQVNTRVJUKG1fcHJpdmF0
ZS5nZXQoKSk7CiB9CiAKLXZvaWQgV2ViSURCS2V5UGF0aDo6YXNzaWduKGNvbnN0IFdlYklEQktl
eVBhdGgmIGtleVBhdGgpCitXZWJJREJLZXlQYXRoOjpXZWJJREJLZXlQYXRoKGNvbnN0IFdlYkNv
cmU6OklEQktleVBhdGgmIHZhbHVlKQorICAgIDogbV9wcml2YXRlKG5ldyBJREJLZXlQYXRoKHZh
bHVlKSkKIHsKLSAgICBtX3BhcnNlRXJyb3IgPSBrZXlQYXRoLm1fcGFyc2VFcnJvcjsKLSAgICBp
ZiAoa2V5UGF0aC5tX3ByaXZhdGUuZ2V0KCkpCi0gICAgICAgIG1fcHJpdmF0ZS5yZXNldChuZXcg
V1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+KGtleVBhdGgpKTsKLSAgICBlbHNlCi0gICAgICAgIG1f
cHJpdmF0ZS5yZXNldCgwKTsKKyAgICBBU1NFUlQobV9wcml2YXRlLmdldCgpKTsKIH0KIAotdm9p
ZCBXZWJJREJLZXlQYXRoOjpyZXNldCgpCitXZWJJREJLZXlQYXRoJiBXZWJJREJLZXlQYXRoOjpv
cGVyYXRvcj0oY29uc3QgV2ViQ29yZTo6SURCS2V5UGF0aCYgdmFsdWUpCiB7Ci0gICAgbV9wcml2
YXRlLnJlc2V0KDApOworICAgIEFTU0VSVChtX3ByaXZhdGUuZ2V0KCkpOworICAgIG1fcHJpdmF0
ZS5yZXNldChuZXcgSURCS2V5UGF0aCh2YWx1ZSkpOworICAgIHJldHVybiAqdGhpczsKIH0KIAot
V2ViSURCS2V5UGF0aDo6b3BlcmF0b3IgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmcsIDA+
JigpIGNvbnN0CitXZWJJREJLZXlQYXRoOjpvcGVyYXRvciBjb25zdCBXZWJDb3JlOjpJREJLZXlQ
YXRoJigpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1fcHJpdmF0ZS5nZXQoKSk7Ci0gICAgcmV0dXJu
ICptX3ByaXZhdGUuZ2V0KCk7CisgICAgcmV0dXJuICoobV9wcml2YXRlLmdldCgpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmNwcAppbmRleCA2MjRhNGU1YjM2NjBkOWI5NzRhN2Qw
NDgyYjI0NjkxZDFmMTExNDAxLi5hNWI1YTE0NDUwOGNhZWExODkyMDcxMjBlNDliZDZjMWYzMGE2
MzE0IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RT
dG9yZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVj
dFN0b3JlSW1wbC5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJET01TdHJpbmdMaXN0
LmgiCiAjaW5jbHVkZSAiSURCQ2FsbGJhY2tzUHJveHkuaCIKICNpbmNsdWRlICJJREJJbmRleEJh
Y2tlbmRJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJJREJLZXlQYXRoLmgiCiAjaW5jbHVkZSAiSURC
S2V5UmFuZ2UuaCIKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaCIK
ICNpbmNsdWRlICJXZWJJREJJbmRleEltcGwuaCIKQEAgLTU5LDEzICs2MCw2IEBAIFdlYlN0cmlu
ZyBXZWJJREJPYmplY3RTdG9yZUltcGw6Om5hbWUoKSBjb25zdAogCiBXZWJJREJLZXlQYXRoIFdl
YklEQk9iamVjdFN0b3JlSW1wbDo6a2V5UGF0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdlYklE
QktleVBhdGgobV9vYmplY3RTdG9yZS0+a2V5UGF0aCgpKTsKLX0KLQotLy8gRklYTUU6IFJlbW92
ZSB0aGlzIG1ldGhvZCBvbmNlIGNhbGxlcnMgYXJlIHVwZGF0ZWQuCi0vLyBodHRwOi8vd2Via2l0
Lm9yZy9iLzg0MjA3Ci1XZWJTdHJpbmcgV2ViSURCT2JqZWN0U3RvcmVJbXBsOjprZXlQYXRoU3Ry
aW5nKCkgY29uc3QKLXsKICAgICByZXR1cm4gbV9vYmplY3RTdG9yZS0+a2V5UGF0aCgpOwogfQog
CkBAIC05OSw3ICs5Myw3IEBAIHZvaWQgV2ViSURCT2JqZWN0U3RvcmVJbXBsOjpjbGVhcihXZWJJ
REJDYWxsYmFja3MqIGNhbGxiYWNrcywgY29uc3QgV2ViSURCVHJhbnNhCiAgICAgbV9vYmplY3RT
dG9yZS0+Y2xlYXIoSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShhZG9wdFB0cihjYWxsYmFja3Mp
KSwgdHJhbnNhY3Rpb24uZ2V0SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKCksIGVjKTsK
IH0KIAotV2ViSURCSW5kZXgqIFdlYklEQk9iamVjdFN0b3JlSW1wbDo6Y3JlYXRlSW5kZXgoY29u
c3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVl
LCBib29sIG11bHRpRW50cnksIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwg
V2ViRXhjZXB0aW9uQ29kZSYgZWMpCitXZWJJREJJbmRleCogV2ViSURCT2JqZWN0U3RvcmVJbXBs
OjpjcmVhdGVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYklEQktleVBhdGgm
IGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnksIGNvbnN0IFdlYklEQlRyYW5z
YWN0aW9uJiB0cmFuc2FjdGlvbiwgV2ViRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgUmVmUHRy
PElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gaW5kZXggPSBtX29iamVjdFN0b3JlLT5jcmVhdGVJ
bmRleChuYW1lLCBrZXlQYXRoLCB1bmlxdWUsIG11bHRpRW50cnksIHRyYW5zYWN0aW9uLmdldElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSgpLCBlYyk7CiAgICAgaWYgKCFpbmRleCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1w
bC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmgK
aW5kZXggZWUzYjIyMmFjYzJjNjYzN2FlNzRiZGE0ZTRjOGFiODYyZmY3ZTg3Zi4uMzM2ZGJjMWU3
YzljODZhZGMwYTFkNzc0NzFhNjgxYzZmMWY1MTEyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmgKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmgKQEAgLTQ3LDkgKzQ3LDYgQEAg
cHVibGljOgogCiAgICAgV2ViU3RyaW5nIG5hbWUoKSBjb25zdDsKICAgICBXZWJJREJLZXlQYXRo
IGtleVBhdGgoKSBjb25zdDsKLSAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgbWV0aG9kIG9uY2Ug
Y2FsbGVycyBhcmUgdXBkYXRlZC4KLSAgICAvLyBodHRwOi8vd2Via2l0Lm9yZy9iLzg0MjA3Ci0g
ICAgV2ViU3RyaW5nIGtleVBhdGhTdHJpbmcoKSBjb25zdDsKICAgICBXZWJET01TdHJpbmdMaXN0
IGluZGV4TmFtZXMoKSBjb25zdDsKIAogICAgIHZvaWQgZ2V0KGNvbnN0IFdlYklEQktleVJhbmdl
JiwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRp
b25Db2RlJik7CkBAIC01OCwxMCArNTUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWxldGVGdW5j
dGlvbihjb25zdCBXZWJJREJLZXlSYW5nZSYsIFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYklE
QlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgY2xlYXIoV2ViSURC
Q2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7
CiAKLSAgICAvLyBGSVhNRTogUmVtb3ZlIFdlYlN0cmluZyBrZXlQYXRoIG92ZXJsb2FkIG9uY2Ug
Y2FsbGVycyBhcmUgdXBkYXRlZC4KLSAgICAvLyBodHRwOi8vd2Via2l0Lm9yZy9iLzg0MjA3Ci0g
ICAgV2ViSURCSW5kZXgqIGNyZWF0ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYsIGNvbnN0IFdlYlN0
cmluZyYsIGJvb2wsIGJvb2wsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9u
Q29kZSYpOwotICAgIFdlYklEQkluZGV4KiBjcmVhdGVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5h
bWUsIGNvbnN0IFdlYklEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRp
RW50cnksIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgV2ViRXhjZXB0aW9u
Q29kZSYgZWMpIHsgcmV0dXJuIGNyZWF0ZUluZGV4KG5hbWUsIGtleVBhdGguc3RyaW5nKCksIHVu
aXF1ZSwgbXVsdGlFbnRyeSwgdHJhbnNhY3Rpb24sIGVjKTsgfQorICAgIFdlYklEQkluZGV4KiBj
cmVhdGVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYklEQktleVBhdGgmLCBi
b29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5LCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdl
YkV4Y2VwdGlvbkNvZGUmKTsKICAgICBXZWJJREJJbmRleCogaW5kZXgoY29uc3QgV2ViU3RyaW5n
JiBuYW1lLCBXZWJFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBkZWxldGVJbmRleChjb25zdCBX
ZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29k
ZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkJpbmRp
bmdVdGlsaXRpZXNUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQmlu
ZGluZ1V0aWxpdGllc1Rlc3QuY3BwCmluZGV4IGQ2MDI5NWE1ZmI0M2U1MzM2MWMwNzI2MTJhNWU0
Mzg1OGU2NmMyOTkuLmMxMzUxODUwZDg3OGM2MDViNTY2NGM2NzI0MDUzYjRjN2IwYjEzOGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQmluZGluZ1V0aWxpdGll
c1Rlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQmluZGluZ1V0
aWxpdGllc1Rlc3QuY3BwCkBAIC00MSwxMCArNDEsOCBAQCBuYW1lc3BhY2UgewogCiBQYXNzUmVm
UHRyPElEQktleT4gY2hlY2tLZXlGcm9tVmFsdWVBbmRLZXlQYXRoSW50ZXJuYWwoU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQogewotICAgIFZlY3Rv
cjxTdHJpbmc+IGlkYktleVBhdGg7Ci0gICAgSURCS2V5UGF0aFBhcnNlRXJyb3IgcGFyc2VFcnJv
cjsKLSAgICBJREJQYXJzZUtleVBhdGgoa2V5UGF0aCwgaWRiS2V5UGF0aCwgcGFyc2VFcnJvcik7
Ci0gICAgRVhQRUNUX0VRKElEQktleVBhdGhQYXJzZUVycm9yTm9uZSwgcGFyc2VFcnJvcik7Cisg
ICAgSURCS2V5UGF0aCBpZGJLZXlQYXRoKGtleVBhdGgpOworICAgIEVYUEVDVF9UUlVFKGlkYktl
eVBhdGguaXNWYWxpZCgpKTsKICAgICByZXR1cm4gY3JlYXRlSURCS2V5RnJvbVNlcmlhbGl6ZWRW
YWx1ZUFuZEtleVBhdGgodmFsdWUsIGlkYktleVBhdGgpOwogfQogCkBAIC01NiwxMCArNTQsOCBA
QCB2b2lkIGNoZWNrS2V5UGF0aE51bGxWYWx1ZShTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHZhbHVl
LCBjb25zdCBTdHJpbmcmIGtleVBhdGgpCiAKIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBpbmplY3RLZXkoUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IHZhbHVlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpCiB7Ci0gICAgVmVj
dG9yPFN0cmluZz4gaWRiS2V5UGF0aDsKLSAgICBJREJLZXlQYXRoUGFyc2VFcnJvciBwYXJzZUVy
cm9yOwotICAgIElEQlBhcnNlS2V5UGF0aChrZXlQYXRoLCBpZGJLZXlQYXRoLCBwYXJzZUVycm9y
KTsKLSAgICBFWFBFQ1RfRVEoSURCS2V5UGF0aFBhcnNlRXJyb3JOb25lLCBwYXJzZUVycm9yKTsK
KyAgICBJREJLZXlQYXRoIGlkYktleVBhdGgoa2V5UGF0aCk7CisgICAgRVhQRUNUX1RSVUUoaWRi
S2V5UGF0aC5pc1ZhbGlkKCkpOwogICAgIHJldHVybiBpbmplY3RJREJLZXlJbnRvU2VyaWFsaXpl
ZFZhbHVlKGtleSwgdmFsdWUsIGlkYktleVBhdGgpOwogfQogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzMzMzUwOGQ5Mjg4
M2IzNWYzNTQ5NWYzMTE5NDk5NDY1OTMyZTgxYi4uNzhlY2QyMjk2OWMyMWFkNDNmODlkM2Y1NmQ4
ZDIzZmI0MGZhM2MwOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTA0LTMwICBKb3NodWEg
QmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBTdXBwb3J0
IEFycmF5LXR5cGUga2V5IHBhdGhzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04NDIwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIva2V5cGF0aC1hcnJheXMtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWFycmF5cy5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWJhc2ljcy1l
eHBlY3RlZC50eHQ6IFVwZGF0ZWQgdG8gaGFuZGxlIGFycmF5cy4KKyAgICAgICAgKiBzdG9yYWdl
L2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1vYmplY3RzdG9yZS1iYXNpY3MtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2NyZWF0ZS1v
YmplY3RzdG9yZS1iYXNpY3MuanM6IFRlc3Qgc3BlYyByZXN0cmljdGlvbi4KKyAgICAgICAgKGNs
ZWFuRGF0YWJhc2UpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL29iamVjdFN0b3JlLXJl
cXVpcmVkLWFyZ3VtZW50cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVk
ZGIvcmVzb3VyY2VzL2tleXBhdGgtYXJyYXlzLmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3QucmVx
dWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdCk6CisgICAgICAgIChvcGVuU3VjY2Vzcy5y
ZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAgICh0ZXN0
S2V5UGF0aHMuY2hlY2tTdG9yZS5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgICh0ZXN0S2V5
UGF0aHMuY2hlY2tTdG9yZSk6CisgICAgICAgICh0ZXN0S2V5UGF0aHMuY2hlY2tJbmRleC5yZXF1
ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgICh0ZXN0S2V5UGF0aHMuY2hlY2tJbmRleCk6CisgICAg
ICAgICh0ZXN0S2V5UGF0aHMpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy9rZXlwYXRoLWJhc2ljcy5qczoKKyAgICAgICAgKHRlc3RWYWxpZEtleVBhdGhzLmRlYnVnKToK
KyAgICAgICAgKGFycmF5Q29tcGFyZSk6CisKIDIwMTItMDQtMzAgIFBhdmVsIEZlbGRtYW4gIDxw
ZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTm90IHJldmlld2VkOiBjaHJvbWl1bSBl
eHBlY3RhdGlvbnMgdXBkYXRlZC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2tleXBhdGgtYXJyYXlzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2tleXBhdGgtYXJyYXlzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZGRjZDlk
ZTkxMTk0NmY5YjkxNjFkZTk3MmQxZDZjZDBlZTA4MzdjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5cGF0aC1hcnJheXMtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsNDEgQEAKK1Rlc3QgSW5kZXhlZERCIEFycmF5LXR5cGUga2V5UGF0aHMKKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2luZGV4ZWREQiA9IHNlbGYuaW5kZXhlZERCIHx8
IHNlbGYud2Via2l0SW5kZXhlZERCIHx8IHNlbGYubW96SW5kZXhlZERCIHx8IHNlbGYubXNJbmRl
eGVkREIgfHwgc2VsZi5PSW5kZXhlZERCOworCitpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoJ2tl
eXBhdGgtYXJyYXlzJykKK2luZGV4ZWREQi5vcGVuKCdrZXlwYXRoLWFycmF5cycpCisKK29wZW5T
dWNjZXNzKCk6CitkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK3JlcXVlc3QgPSBkYi5zZXRWZXJz
aW9uKCcxJykKK3N0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJywge2tleVBhdGg6
IFsnYScsICdiJ119KQorc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4JywgWydjJywgJ2QnXSkKK0V4
cGVjdGluZyBleGNlcHRpb24gZnJvbSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUtd2l0aC1n
ZW5lcmF0b3InLCB7a2V5UGF0aDogWydhJywgJ2InXSwgYXV0b0luY3JlbWVudDogdHJ1ZX0pCitQ
QVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIERPTUV4Y2VwdGlvbi5JTlZB
TElEX1NUQVRFX0VSUgorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLmNyZWF0ZUluZGV4
KCdpbmRleC1tdWx0aWVudHJ5JywgWydlJywgJ2YnXSwge211bHRpRW50cnk6IHRydWV9KQorUEFT
UyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBET01FeGNlcHRpb24uTk9UX1NV
UFBPUlRFRF9FUlIKKwordGVzdEtleVBhdGhzKCk6Cit0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0
aW9uKFsnc3RvcmUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkKK3N0b3JlID0gdHJhbnNh
Y3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykKK2luZGV4ID0gc3RvcmUuaW5kZXgoJ2luZGV4JykK
KworcmVxdWVzdCA9IHN0b3JlLnB1dCh7YTogMSwgYjogMiwgYzogMywgZDogNH0pCityZXF1ZXN0
ID0gc3RvcmUub3BlbkN1cnNvcigpCitjdXJzb3IgPSByZXF1ZXN0LnJlc3VsdAorUEFTUyBjdXJz
b3IgIT09IG51bGwgaXMgdHJ1ZQorUEFTUyBKU09OLnN0cmluZ2lmeShjdXJzb3Iua2V5KSBpcyAi
WzEsMl0iCityZXF1ZXN0ID0gaW5kZXgub3BlbkN1cnNvcigpCitjdXJzb3IgPSByZXF1ZXN0LnJl
c3VsdAorUEFTUyBjdXJzb3IgIT09IG51bGwgaXMgdHJ1ZQorUEFTUyBKU09OLnN0cmluZ2lmeShj
dXJzb3IucHJpbWFyeUtleSkgaXMgIlsxLDJdIgorUEFTUyBKU09OLnN0cmluZ2lmeShjdXJzb3Iu
a2V5KSBpcyAiWzMsNF0iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5
cGF0aC1hcnJheXMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgt
YXJyYXlzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDYwZWMxOTY2ZTA2NjNjOTViNmVkMGMyNzNmMjg1ZTVl
OWMwMTdkMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2tleXBhdGgtYXJyYXlzLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMva2V5cGF0aC1hcnJheXMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWJhc2ljcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWJhc2ljcy1leHBlY3RlZC50eHQKaW5kZXggYjMw
ODFkMjg1ZDQyNGI3YmZmZWQwNmJlNWRkZTNlNjYyZGFiNDgxMS4uYjg4YTE0MzA0NjFlMjRjZDQ4
MWI2MjA4YzIyNWYwYTE3OWE3YjY2MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIva2V5cGF0aC1iYXNpY3MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgtYmFzaWNzLWV4cGVjdGVkLnR4dApAQCAtOCwxNjUgKzgs
MTU5IEBAIGluZGV4ZWREQiA9IHNlbGYuaW5kZXhlZERCIHx8IHNlbGYud2Via2l0SW5kZXhlZERC
IHx8IHNlbGYubW96SW5kZXhlZERCIHx8IHNlbGYuCiBpbmRleGVkREIub3BlbihuYW1lKQogZGIg
PSBldmVudC50YXJnZXQucmVzdWx0CiByZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpCisKK3Rl
c3RWYWxpZEtleVBhdGhzKCk6CiBEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgotZ2xvYmFsS2V5
UGF0aCA9ICdudWxsJwotZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ25hbWUnLCB7a2V5UGF0aDogZ2xv
YmFsS2V5UGF0aH0pCisKK1JlZ3VsYXIgc3RyaW5nczoKK3N0b3JlID0gZGIuY3JlYXRlT2JqZWN0
U3RvcmUoJ25hbWUnLCB7a2V5UGF0aDogJ2Zvbyd9KQorUEFTUyBzdG9yZS5rZXlQYXRoIGlzICdm
b28nCitzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKQoraW5kZXggPSBz
dG9yZS5jcmVhdGVJbmRleCgnbmFtZScsICdmb28nKQorUEFTUyBpbmRleC5rZXlQYXRoIGlzICdm
b28nCiBEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgotZ2xvYmFsS2V5UGF0aCA9ICd1bmRlZmlu
ZWQnCi1kYi5jcmVhdGVPYmplY3RTdG9yZSgnbmFtZScsIHtrZXlQYXRoOiBnbG9iYWxLZXlQYXRo
fSkKK3N0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ25hbWUnLCB7a2V5UGF0aDogJ2Zvby5i
YXIuYmF6J30pCitQQVNTIHN0b3JlLmtleVBhdGggaXMgJ2Zvby5iYXIuYmF6Jworc3RvcmUgPSBk
Yi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJykKK2luZGV4ID0gc3RvcmUuY3JlYXRlSW5k
ZXgoJ25hbWUnLCAnZm9vLmJhci5iYXonKQorUEFTUyBpbmRleC5rZXlQYXRoIGlzICdmb28uYmFy
LmJheicKIERlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCi1nbG9iYWxLZXlQYXRoID0gJycKLWRi
LmNyZWF0ZU9iamVjdFN0b3JlKCduYW1lJywge2tleVBhdGg6IGdsb2JhbEtleVBhdGh9KQorCitj
cmVhdGVPYmplY3RTdG9yZTogbm9uLWFycmF5L25vbi1zdHJpbmcgdmFsdWVzIGFyZSBjb252ZXJ0
ZWQgdG8gRE9NU3RyaW5nczoKK3N0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ25hbWUnLCB7
a2V5UGF0aDogbnVsbH0pCitQQVNTIHN0b3JlLmtleVBhdGggaXMgIm51bGwiCiBEZWxldGVkIGFs
bCBvYmplY3Qgc3RvcmVzLgotZ2xvYmFsS2V5UGF0aCA9ICdmb28nCi1kYi5jcmVhdGVPYmplY3RT
dG9yZSgnbmFtZScsIHtrZXlQYXRoOiBnbG9iYWxLZXlQYXRofSkKK3N0b3JlID0gZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ25hbWUnLCB7a2V5UGF0aDogdW5kZWZpbmVkfSkKK1BBU1Mgc3RvcmUua2V5
UGF0aCBpcyAidW5kZWZpbmVkIgogRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KLWdsb2JhbEtl
eVBhdGggPSAnZm9vLmJhci5iYXonCi1kYi5jcmVhdGVPYmplY3RTdG9yZSgnbmFtZScsIHtrZXlQ
YXRoOiBnbG9iYWxLZXlQYXRofSkKKworY3JlYXRlSW5kZXg6IG5vbi1hcnJheS9ub24tc3RyaW5n
IHZhbHVlcyBhcmUgY29udmVydGVkIHRvIERPTVN0cmluZ3M6CitzdG9yZSA9IGRiLmNyZWF0ZU9i
amVjdFN0b3JlKCdzdG9yZU5hbWUnKQoraW5kZXggPSBzdG9yZS5jcmVhdGVJbmRleCgnbmFtZScs
IG51bGwpCitQQVNTIGluZGV4LmtleVBhdGggaXMgIm51bGwiCiBEZWxldGVkIGFsbCBvYmplY3Qg
c3RvcmVzLgotZ2xvYmFsS2V5UGF0aCA9ICdudWxsJwogc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RT
dG9yZSgnc3RvcmVOYW1lJykKLXN0b3JlLmNyZWF0ZUluZGV4KCduYW1lJywgZ2xvYmFsS2V5UGF0
aCkKK2luZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ25hbWUnLCB1bmRlZmluZWQpCitQQVNTIGlu
ZGV4LmtleVBhdGggaXMgInVuZGVmaW5lZCIKIERlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCi1n
bG9iYWxLZXlQYXRoID0gJ3VuZGVmaW5lZCcKKworY3JlYXRlSW5kZXg6IGVtcHR5IHN0cmluZ3Mg
YXJlIGFsbG93ZWQgYXMga2V5IHBhdGhzCiBzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdz
dG9yZU5hbWUnKQotc3RvcmUuY3JlYXRlSW5kZXgoJ25hbWUnLCBnbG9iYWxLZXlQYXRoKQoraW5k
ZXggPSBzdG9yZS5jcmVhdGVJbmRleCgnbmFtZScsICcnKQorUEFTUyBpbmRleC5rZXlQYXRoIGlz
ICcnCiBEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgotZ2xvYmFsS2V5UGF0aCA9ICcnCisKK2Ny
ZWF0ZUluZGV4OiBhcnJheXMgYXJlIGFsbG93ZWQgYXMga2V5IHBhdGhzCiBzdG9yZSA9IGRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKQotc3RvcmUuY3JlYXRlSW5kZXgoJ25hbWUnLCBn
bG9iYWxLZXlQYXRoKQoraW5kZXggPSBzdG9yZS5jcmVhdGVJbmRleCgnbmFtZScsIFtdKQorUEFT
UyBhcnJheUNvbXBhcmUoaW5kZXgua2V5UGF0aCwgW10pIGlzIHRydWUKIERlbGV0ZWQgYWxsIG9i
amVjdCBzdG9yZXMuCi1nbG9iYWxLZXlQYXRoID0gJ2ZvbycKIHN0b3JlID0gZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoJ3N0b3JlTmFtZScpCi1zdG9yZS5jcmVhdGVJbmRleCgnbmFtZScsIGdsb2JhbEtl
eVBhdGgpCitpbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4KCduYW1lJywgWydhJywgJ2InXSkKK1BB
U1MgYXJyYXlDb21wYXJlKGluZGV4LmtleVBhdGgsIFsnYScsICdiJ10pIGlzIHRydWUKIERlbGV0
ZWQgYWxsIG9iamVjdCBzdG9yZXMuCi1nbG9iYWxLZXlQYXRoID0gJ2Zvby5iYXIuYmF6Jwogc3Rv
cmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJykKLXN0b3JlLmNyZWF0ZUluZGV4
KCduYW1lJywgZ2xvYmFsS2V5UGF0aCkKK2luZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ25hbWUn
LCBbJyddKQorUEFTUyBhcnJheUNvbXBhcmUoaW5kZXgua2V5UGF0aCwgWycnXSkgaXMgdHJ1ZQog
RGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KKwordGVzdEludmFsaWRLZXlQYXRocygpOgogRGVs
ZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KLWdsb2JhbEtleVBhdGggPSAnW10nCi1FeHBlY3Rpbmcg
ZXhjZXB0aW9uIGZyb20gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ25hbWUnLCB7a2V5UGF0aDogZ2xv
YmFsS2V5UGF0aH0pCi1QQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgotUEFTUyBjb2RlIGlzIElE
QkRhdGFiYXNlRXhjZXB0aW9uLk5PTl9UUkFOU0lFTlRfRVJSCisKK09iamVjdCBzdG9yZSBrZXkg
cGF0aCBtYXkgbm90IGJlIGVtcHR5IG9yIGFuIGFycmF5CitzdG9yZSA9IGRiLmNyZWF0ZU9iamVj
dFN0b3JlKCdzdG9yZU5hbWUnKQorc3RvcmUuY3JlYXRlSW5kZXgoJ25hbWUnLCAnJykKIERlbGV0
ZWQgYWxsIG9iamVjdCBzdG9yZXMuCi1nbG9iYWxLZXlQYXRoID0gJ1siZm9vIl0nCi1FeHBlY3Rp
bmcgZXhjZXB0aW9uIGZyb20gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ25hbWUnLCB7a2V5UGF0aDog
Z2xvYmFsS2V5UGF0aH0pCi1QQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgotUEFTUyBjb2RlIGlz
IElEQkRhdGFiYXNlRXhjZXB0aW9uLk5PTl9UUkFOU0lFTlRfRVJSCitzdG9yZSA9IGRiLmNyZWF0
ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKQorc3RvcmUuY3JlYXRlSW5kZXgoJ25hbWUnLCBbXSkK
IERlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCi1nbG9iYWxLZXlQYXRoID0gJ1siZm9vIiwgImJh
ciJdJwotRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGRiLmNyZWF0ZU9iamVjdFN0b3JlKCduYW1l
Jywge2tleVBhdGg6IGdsb2JhbEtleVBhdGh9KQotUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4K
LVBBU1MgY29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT05fVFJBTlNJRU5UX0VSUgorc3Rv
cmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJykKK3N0b3JlLmNyZWF0ZUluZGV4
KCduYW1lJywgWydhJ10pCiBEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgotZ2xvYmFsS2V5UGF0
aCA9ICdbIiIsICIiXScKLUV4cGVjdGluZyBleGNlcHRpb24gZnJvbSBkYi5jcmVhdGVPYmplY3RT
dG9yZSgnbmFtZScsIHtrZXlQYXRoOiBnbG9iYWxLZXlQYXRofSkKLVBBU1MgRXhjZXB0aW9uIHdh
cyB0aHJvd24uCi1QQVNTIGNvZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uTk9OX1RSQU5TSUVO
VF9FUlIKK3N0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpCitzdG9yZS5j
cmVhdGVJbmRleCgnbmFtZScsIFsnJ10pCiBEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgotZ2xv
YmFsS2V5UGF0aCA9ICdbMS4wLCAyLjBdJwotRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCduYW1lJywge2tleVBhdGg6IGdsb2JhbEtleVBhdGh9KQorCitLZXkg
cGF0aHMgd2hpY2ggYXJlIG5ldmVyIHZhbGlkOgorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGRi
LmNyZWF0ZU9iamVjdFN0b3JlKCduYW1lJywge2tleVBhdGg6ICcgJ30pCiBQQVNTIEV4Y2VwdGlv
biB3YXMgdGhyb3duLgotUEFTUyBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9uLk5PTl9UUkFO
U0lFTlRfRVJSCi1EZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgotZ2xvYmFsS2V5UGF0aCA9ICdb
WyJmb28iXV0nCi1FeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gZGIuY3JlYXRlT2JqZWN0U3RvcmUo
J25hbWUnLCB7a2V5UGF0aDogZ2xvYmFsS2V5UGF0aH0pCitQQVNTIGNvZGUgaXMgRE9NRXhjZXB0
aW9uLlNZTlRBWF9FUlIKK3N0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScp
CitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmUuY3JlYXRlSW5kZXgoJ25hbWUnLCAnICcp
CiBQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgotUEFTUyBjb2RlIGlzIElEQkRhdGFiYXNlRXhj
ZXB0aW9uLk5PTl9UUkFOU0lFTlRfRVJSCitQQVNTIGNvZGUgaXMgRE9NRXhjZXB0aW9uLlNZTlRB
WF9FUlIKIERlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCi1nbG9iYWxLZXlQYXRoID0gJ1siZm9v
IiwgWyJiYXIiXV0nCi1FeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ25hbWUnLCB7a2V5UGF0aDogZ2xvYmFsS2V5UGF0aH0pCitFeHBlY3RpbmcgZXhjZXB0aW9u
IGZyb20gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ25hbWUnLCB7a2V5UGF0aDogJ2ZvbyAnfSkKIFBB
U1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCi1QQVNTIGNvZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRp
b24uTk9OX1RSQU5TSUVOVF9FUlIKLURlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCi1nbG9iYWxL
ZXlQYXRoID0gJyAnCi1FeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ25hbWUnLCB7a2V5UGF0aDogZ2xvYmFsS2V5UGF0aH0pCitQQVNTIGNvZGUgaXMgRE9NRXhj
ZXB0aW9uLlNZTlRBWF9FUlIKK3N0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFt
ZScpCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmUuY3JlYXRlSW5kZXgoJ25hbWUnLCAn
Zm9vICcpCiBQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgotUEFTUyBjb2RlIGlzIElEQkRhdGFi
YXNlRXhjZXB0aW9uLk5PTl9UUkFOU0lFTlRfRVJSCitQQVNTIGNvZGUgaXMgRE9NRXhjZXB0aW9u
LlNZTlRBWF9FUlIKIERlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCi1nbG9iYWxLZXlQYXRoID0g
J2ZvbyAnCi1FeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ25h
bWUnLCB7a2V5UGF0aDogZ2xvYmFsS2V5UGF0aH0pCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20g
ZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ25hbWUnLCB7a2V5UGF0aDogJ2ZvbyBiYXInfSkKIFBBU1Mg
RXhjZXB0aW9uIHdhcyB0aHJvd24uCi1QQVNTIGNvZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24u
Tk9OX1RSQU5TSUVOVF9FUlIKLURlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCi1nbG9iYWxLZXlQ
YXRoID0gJ2ZvbyBiYXInCi1FeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gZGIuY3JlYXRlT2JqZWN0
U3RvcmUoJ25hbWUnLCB7a2V5UGF0aDogZ2xvYmFsS2V5UGF0aH0pCitQQVNTIGNvZGUgaXMgRE9N
RXhjZXB0aW9uLlNZTlRBWF9FUlIKK3N0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3Jl
TmFtZScpCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmUuY3JlYXRlSW5kZXgoJ25hbWUn
LCAnZm9vIGJhcicpCiBQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgotUEFTUyBjb2RlIGlzIElE
QkRhdGFiYXNlRXhjZXB0aW9uLk5PTl9UUkFOU0lFTlRfRVJSCitQQVNTIGNvZGUgaXMgRE9NRXhj
ZXB0aW9uLlNZTlRBWF9FUlIKIERlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCi1nbG9iYWxLZXlQ
YXRoID0gJ2Zvby4gYmFyJwotRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGRiLmNyZWF0ZU9iamVj
dFN0b3JlKCduYW1lJywge2tleVBhdGg6IGdsb2JhbEtleVBhdGh9KQorRXhwZWN0aW5nIGV4Y2Vw
dGlvbiBmcm9tIGRiLmNyZWF0ZU9iamVjdFN0b3JlKCduYW1lJywge2tleVBhdGg6ICdmb28uIGJh
cid9KQogUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KLVBBU1MgY29kZSBpcyBJREJEYXRhYmFz
ZUV4Y2VwdGlvbi5OT05fVFJBTlNJRU5UX0VSUgotRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4K
LWdsb2JhbEtleVBhdGggPSAnZm9vIC5iYXInCi1FeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ25hbWUnLCB7a2V5UGF0aDogZ2xvYmFsS2V5UGF0aH0pCitQQVNT
IGNvZGUgaXMgRE9NRXhjZXB0aW9uLlNZTlRBWF9FUlIKK3N0b3JlID0gZGIuY3JlYXRlT2JqZWN0
U3RvcmUoJ3N0b3JlTmFtZScpCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmUuY3JlYXRl
SW5kZXgoJ25hbWUnLCAnZm9vLiBiYXInKQogUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KLVBB
U1MgY29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT05fVFJBTlNJRU5UX0VSUgorUEFTUyBj
b2RlIGlzIERPTUV4Y2VwdGlvbi5TWU5UQVhfRVJSCiBEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVz
LgotZ2xvYmFsS2V5UGF0aCA9ICdmb28uLmJhcicKLUV4cGVjdGluZyBleGNlcHRpb24gZnJvbSBk
Yi5jcmVhdGVPYmplY3RTdG9yZSgnbmFtZScsIHtrZXlQYXRoOiBnbG9iYWxLZXlQYXRofSkKK0V4
cGVjdGluZyBleGNlcHRpb24gZnJvbSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnbmFtZScsIHtrZXlQ
YXRoOiAnZm9vIC5iYXInfSkKIFBBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCi1QQVNTIGNvZGUg
aXMgSURCRGF0YWJhc2VFeGNlcHRpb24uTk9OX1RSQU5TSUVOVF9FUlIKLURlbGV0ZWQgYWxsIG9i
amVjdCBzdG9yZXMuCi1nbG9iYWxLZXlQYXRoID0gJytmb28nCi1FeHBlY3RpbmcgZXhjZXB0aW9u
IGZyb20gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ25hbWUnLCB7a2V5UGF0aDogZ2xvYmFsS2V5UGF0
aH0pCitQQVNTIGNvZGUgaXMgRE9NRXhjZXB0aW9uLlNZTlRBWF9FUlIKK3N0b3JlID0gZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3Rv
cmUuY3JlYXRlSW5kZXgoJ25hbWUnLCAnZm9vIC5iYXInKQogUEFTUyBFeGNlcHRpb24gd2FzIHRo
cm93bi4KLVBBU1MgY29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT05fVFJBTlNJRU5UX0VS
UgorUEFTUyBjb2RlIGlzIERPTUV4Y2VwdGlvbi5TWU5UQVhfRVJSCiBEZWxldGVkIGFsbCBvYmpl
Y3Qgc3RvcmVzLgotZ2xvYmFsS2V5UGF0aCA9ICdmb28lJwotRXhwZWN0aW5nIGV4Y2VwdGlvbiBm
cm9tIGRiLmNyZWF0ZU9iamVjdFN0b3JlKCduYW1lJywge2tleVBhdGg6IGdsb2JhbEtleVBhdGh9
KQorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGRiLmNyZWF0ZU9iamVjdFN0b3JlKCduYW1lJywg
e2tleVBhdGg6ICdmb28uLmJhcid9KQogUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KLVBBU1Mg
Y29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT05fVFJBTlNJRU5UX0VSUgotRGVsZXRlZCBh
bGwgb2JqZWN0IHN0b3Jlcy4KLWdsb2JhbEtleVBhdGggPSAnICcKK1BBU1MgY29kZSBpcyBET01F
eGNlcHRpb24uU1lOVEFYX0VSUgogc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVO
YW1lJykKLUV4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9yZS5jcmVhdGVJbmRleCgnbmFtZScs
IGdsb2JhbEtleVBhdGgpCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmUuY3JlYXRlSW5k
ZXgoJ25hbWUnLCAnZm9vLi5iYXInKQogUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KLVBBU1Mg
Y29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT05fVFJBTlNJRU5UX0VSUgorUEFTUyBjb2Rl
IGlzIERPTUV4Y2VwdGlvbi5TWU5UQVhfRVJSCiBEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgot
Z2xvYmFsS2V5UGF0aCA9ICdmb28gJwotc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3Rv
cmVOYW1lJykKLUV4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9yZS5jcmVhdGVJbmRleCgnbmFt
ZScsIGdsb2JhbEtleVBhdGgpCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoJ25hbWUnLCB7a2V5UGF0aDogJytmb28nfSkKIFBBU1MgRXhjZXB0aW9uIHdhcyB0
aHJvd24uCi1QQVNTIGNvZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uTk9OX1RSQU5TSUVOVF9F
UlIKLURlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCi1nbG9iYWxLZXlQYXRoID0gJ2ZvbyBiYXIn
CitQQVNTIGNvZGUgaXMgRE9NRXhjZXB0aW9uLlNZTlRBWF9FUlIKIHN0b3JlID0gZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpCi1FeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmUu
Y3JlYXRlSW5kZXgoJ25hbWUnLCBnbG9iYWxLZXlQYXRoKQorRXhwZWN0aW5nIGV4Y2VwdGlvbiBm
cm9tIHN0b3JlLmNyZWF0ZUluZGV4KCduYW1lJywgJytmb28nKQogUEFTUyBFeGNlcHRpb24gd2Fz
IHRocm93bi4KLVBBU1MgY29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT05fVFJBTlNJRU5U
X0VSUgorUEFTUyBjb2RlIGlzIERPTUV4Y2VwdGlvbi5TWU5UQVhfRVJSCiBEZWxldGVkIGFsbCBv
YmplY3Qgc3RvcmVzLgotZ2xvYmFsS2V5UGF0aCA9ICdmb28uIGJhcicKLXN0b3JlID0gZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpCi1FeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3Rv
cmUuY3JlYXRlSW5kZXgoJ25hbWUnLCBnbG9iYWxLZXlQYXRoKQorRXhwZWN0aW5nIGV4Y2VwdGlv
biBmcm9tIGRiLmNyZWF0ZU9iamVjdFN0b3JlKCduYW1lJywge2tleVBhdGg6ICdmb28lJ30pCiBQ
QVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgotUEFTUyBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0
aW9uLk5PTl9UUkFOU0lFTlRfRVJSCi1EZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgotZ2xvYmFs
S2V5UGF0aCA9ICdmb28gLmJhcicKK1BBU1MgY29kZSBpcyBET01FeGNlcHRpb24uU1lOVEFYX0VS
Ugogc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJykKLUV4cGVjdGluZyBl
eGNlcHRpb24gZnJvbSBzdG9yZS5jcmVhdGVJbmRleCgnbmFtZScsIGdsb2JhbEtleVBhdGgpCitF
eHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmUuY3JlYXRlSW5kZXgoJ25hbWUnLCAnZm9vJScp
CiBQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgotUEFTUyBjb2RlIGlzIElEQkRhdGFiYXNlRXhj
ZXB0aW9uLk5PTl9UUkFOU0lFTlRfRVJSCitQQVNTIGNvZGUgaXMgRE9NRXhjZXB0aW9uLlNZTlRB
WF9FUlIKIERlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCi1nbG9iYWxLZXlQYXRoID0gJ2Zvby4u
YmFyJwotc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJykKLUV4cGVjdGlu
ZyBleGNlcHRpb24gZnJvbSBzdG9yZS5jcmVhdGVJbmRleCgnbmFtZScsIGdsb2JhbEtleVBhdGgp
CitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ25hbWUnLCB7
a2V5UGF0aDogJzEnfSkKIFBBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCi1QQVNTIGNvZGUgaXMg
SURCRGF0YWJhc2VFeGNlcHRpb24uTk9OX1RSQU5TSUVOVF9FUlIKLURlbGV0ZWQgYWxsIG9iamVj
dCBzdG9yZXMuCi1nbG9iYWxLZXlQYXRoID0gJytmb28nCitQQVNTIGNvZGUgaXMgRE9NRXhjZXB0
aW9uLlNZTlRBWF9FUlIKIHN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScp
Ci1FeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmUuY3JlYXRlSW5kZXgoJ25hbWUnLCBnbG9i
YWxLZXlQYXRoKQorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLmNyZWF0ZUluZGV4KCdu
YW1lJywgJzEnKQogUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KLVBBU1MgY29kZSBpcyBJREJE
YXRhYmFzZUV4Y2VwdGlvbi5OT05fVFJBTlNJRU5UX0VSUgorUEFTUyBjb2RlIGlzIERPTUV4Y2Vw
dGlvbi5TWU5UQVhfRVJSCiBEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgotZ2xvYmFsS2V5UGF0
aCA9ICdmb28lJworRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCduYW1lJywge2tleVBhdGg6ICcxLjAnfSkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQ
QVNTIGNvZGUgaXMgRE9NRXhjZXB0aW9uLlNZTlRBWF9FUlIKIHN0b3JlID0gZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoJ3N0b3JlTmFtZScpCi1FeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmUuY3Jl
YXRlSW5kZXgoJ25hbWUnLCBnbG9iYWxLZXlQYXRoKQorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9t
IHN0b3JlLmNyZWF0ZUluZGV4KCduYW1lJywgJzEuMCcpCiBQQVNTIEV4Y2VwdGlvbiB3YXMgdGhy
b3duLgotUEFTUyBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9uLk5PTl9UUkFOU0lFTlRfRVJS
CitQQVNTIGNvZGUgaXMgRE9NRXhjZXB0aW9uLlNZTlRBWF9FUlIKIERlbGV0ZWQgYWxsIG9iamVj
dCBzdG9yZXMuCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3JlYXRlLW9iamVjdHN0b3Jl
LWJhc2ljcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL2NyZWF0ZS1vYmplY3RzdG9yZS1iYXNpY3MtZXhwZWN0ZWQudHh0CmluZGV4IDYwNWRlOTY2
OGQ2MzVkMjcyZGU4ZGY3NjQ0YTk2MzhhMGY2ZWFlMDIuLjdkYzFlYTQzNzdhYjNkYWQ5N2UwZDU3
ODQwN2IwODQ2MmU2YjczMzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvY3JlYXRlLW9iamVjdHN0b3JlLWJhc2ljcy1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUtb2JqZWN0c3RvcmUt
YmFzaWNzLWV4cGVjdGVkLnR4dApAQCAtMjcsMTIgKzI3LDkgQEAgUEFTUyBvYmplY3RTdG9yZS5p
bmRleE5hbWVzLmxlbmd0aCBpcyAwCiBQQVNTIGV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5kYiBp
cyBkYgogUEFTUyBldmVudC50YXJnZXQudHJhbnNhY3Rpb24ucmVhZHlTdGF0ZSBpcyBJREJUcmFu
c2FjdGlvbi5MT0FESU5HCiBQQVNTIGV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5tb2RlIGlzIElE
QlRyYW5zYWN0aW9uLlZFUlNJT05fQ0hBTkdFCi1vYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVj
dFN0b3JlKGluZm8ubmFtZSwgaW5mby5vcHRpb25zKTsKLVBBU1Mgb2JqZWN0U3RvcmUubmFtZSBp
cyBpbmZvLm5hbWUKLVBBU1Mgb2JqZWN0U3RvcmUuaW5kZXhOYW1lcy5sZW5ndGggaXMgMAotUEFT
UyBldmVudC50YXJnZXQudHJhbnNhY3Rpb24uZGIgaXMgZGIKLVBBU1MgZXZlbnQudGFyZ2V0LnRy
YW5zYWN0aW9uLnJlYWR5U3RhdGUgaXMgSURCVHJhbnNhY3Rpb24uTE9BRElORwotUEFTUyBldmVu
dC50YXJnZXQudHJhbnNhY3Rpb24ubW9kZSBpcyBJREJUcmFuc2FjdGlvbi5WRVJTSU9OX0NIQU5H
RQorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIG9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0
U3RvcmUoaW5mby5uYW1lLCBpbmZvLm9wdGlvbnMpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3du
LgorUEFTUyBjb2RlIGlzIERPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUgogb2JqZWN0U3Rv
cmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZShpbmZvLm5hbWUsIGluZm8ub3B0aW9ucyk7CiBQQVNT
IG9iamVjdFN0b3JlLm5hbWUgaXMgaW5mby5uYW1lCiBQQVNTIG9iamVjdFN0b3JlLmluZGV4TmFt
ZXMubGVuZ3RoIGlzIDAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vemlsbGEvcmVzb3VyY2VzL2NyZWF0ZS1vYmplY3RzdG9yZS1iYXNpY3MuanMgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9jcmVhdGUtb2JqZWN0c3Rv
cmUtYmFzaWNzLmpzCmluZGV4IGY3MzE2YjJlNGU4NDUwZTM1ZDBlYTY5NTVjZmI0N2E0NzZiOGRh
ZDAuLjRlMzFjM2NlNDhiMjg4ZDA3OWVhMjlhNTc2MGRiYjQyMmUwZWQyZDUgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2NyZWF0ZS1v
YmplY3RzdG9yZS1iYXNpY3MuanMKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
bW96aWxsYS9yZXNvdXJjZXMvY3JlYXRlLW9iamVjdHN0b3JlLWJhc2ljcy5qcwpAQCAtMzksNyAr
MzksNyBAQCBmdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKICAgICAgICAgeyBuYW1lOiAiMSIsIG9w
dGlvbnM6IHsgYXV0b0luY3JlbWVudDogdHJ1ZSB9IH0sCiAgICAgICAgIHsgbmFtZTogIjIiLCBv
cHRpb25zOiB7IGF1dG9JbmNyZW1lbnQ6IGZhbHNlIH0gfSwKICAgICAgICAgeyBuYW1lOiAiMyIs
IG9wdGlvbnM6IHsga2V5UGF0aDogIiIgfSB9LAotICAgICAgICB7IG5hbWU6ICI0Iiwgb3B0aW9u
czogeyBrZXlQYXRoOiAiIiwgYXV0b0luY3JlbWVudDogdHJ1ZSB9IH0sCisgICAgICAgIHsgbmFt
ZTogIjQiLCBvcHRpb25zOiB7IGtleVBhdGg6ICIiLCBhdXRvSW5jcmVtZW50OiB0cnVlIH0sIGZh
aWw6IHRydWUgfSwKICAgICAgICAgeyBuYW1lOiAiNSIsIG9wdGlvbnM6IHsga2V5UGF0aDogIiIs
IGF1dG9JbmNyZW1lbnQ6IGZhbHNlIH0gfSwKICAgICAgICAgeyBuYW1lOiAiNiIsIG9wdGlvbnM6
IHsga2V5UGF0aDogImZvbyIgfSB9LAogICAgICAgICB7IG5hbWU6ICI3Iiwgb3B0aW9uczogeyBr
ZXlQYXRoOiAiZm9vIiwgYXV0b0luY3JlbWVudDogZmFsc2UgfSB9LApAQCAtNDksMTggKzQ5LDIy
IEBAIGZ1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQogICAgIGZvciAodmFyIGluZGV4IGluIG9iamVj
dFN0b3JlSW5mbykgewogICAgICAgICBpbmRleCA9IHBhcnNlSW50KGluZGV4KTsKICAgICAgICAg
aW5mbyA9IG9iamVjdFN0b3JlSW5mb1tpbmRleF07Ci0gICAgICAgIG9iamVjdFN0b3JlID0gZXZh
bEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZShpbmZvLm5hbWUsIGlu
Zm8ub3B0aW9ucyk7Iik7Ci0gICAgICAgIHNob3VsZEJlKCJvYmplY3RTdG9yZS5uYW1lIiwgImlu
Zm8ubmFtZSIpOwotICAgICAgICBpZiAoaW5mby5vcHRpb25zICYmIGluZm8ub3B0aW9ucy5rZXlQ
YXRoKSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgib2JqZWN0U3RvcmUua2V5UGF0aCIsICJpbmZv
Lm9wdGlvbnMua2V5UGF0aCIpOworICAgICAgICBpZiAoIWluZm8uZmFpbCkgeworICAgICAgICAg
ICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVj
dFN0b3JlKGluZm8ubmFtZSwgaW5mby5vcHRpb25zKTsiKTsKKyAgICAgICAgICAgIHNob3VsZEJl
KCJvYmplY3RTdG9yZS5uYW1lIiwgImluZm8ubmFtZSIpOworICAgICAgICAgICAgaWYgKGluZm8u
b3B0aW9ucyAmJiBpbmZvLm9wdGlvbnMua2V5UGF0aCkgeworICAgICAgICAgICAgICAgIHNob3Vs
ZEJlKCJvYmplY3RTdG9yZS5rZXlQYXRoIiwgImluZm8ub3B0aW9ucy5rZXlQYXRoIik7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBzaG91bGRCZSgib2JqZWN0U3RvcmUuaW5kZXhOYW1lcy5s
ZW5ndGgiLCAiMCIpOworICAgICAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC50cmFuc2Fj
dGlvbi5kYiIsICJkYiIpOworICAgICAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC50cmFu
c2FjdGlvbi5yZWFkeVN0YXRlIiwgIklEQlRyYW5zYWN0aW9uLkxPQURJTkciKTsKKyAgICAgICAg
ICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQudHJhbnNhY3Rpb24ubW9kZSIsICJJREJUcmFuc2Fj
dGlvbi5WRVJTSU9OX0NIQU5HRSIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZXZh
bEFuZEV4cGVjdEV4Y2VwdGlvbigib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZShp
bmZvLm5hbWUsIGluZm8ub3B0aW9ucykiLCAiRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJS
Iik7CiAgICAgICAgIH0KLSAgICAgICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlLmluZGV4TmFtZXMu
bGVuZ3RoIiwgIjAiKTsKLSAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC50cmFuc2FjdGlv
bi5kYiIsICJkYiIpOwotICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9u
LnJlYWR5U3RhdGUiLCAiSURCVHJhbnNhY3Rpb24uTE9BRElORyIpOwotICAgICAgICBzaG91bGRC
ZSgiZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLm1vZGUiLCAiSURCVHJhbnNhY3Rpb24uVkVSU0lP
Tl9DSEFOR0UiKTsKICAgICB9CiAKICAgICBmaW5pc2hKU1Rlc3QoKTsKIH0KIAotdGVzdCgpOwpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK3Rlc3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdFN0b3JlLXJlcXVpcmVkLWFyZ3VtZW50cy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RTdG9yZS1yZXF1
aXJlZC1hcmd1bWVudHMtZXhwZWN0ZWQudHh0CmluZGV4IDA0NGJiZTE2YTVmZjcwNDAyNGIzODQ1
OTQ0YjkxNDI2YzI2N2QxOGQuLjI2MTMzY2I1ZGU3ZWMwNzMzNzliYjYzZjlmYzg2YzJkYmQyODY2
NWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdFN0b3Jl
LXJlcXVpcmVkLWFyZ3VtZW50cy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvb2JqZWN0U3RvcmUtcmVxdWlyZWQtYXJndW1lbnRzLWV4cGVjdGVkLnR4dApA
QCAtMTQsOCArMTQsOCBAQCBQQVNTIG9iamVjdFN0b3JlLnB1dCgpOyB0aHJldyBleGNlcHRpb24g
VHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KIFBBU1Mgb2JqZWN0U3RvcmUuYWRkKCk7
IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgogUEFTUyBv
YmplY3RTdG9yZS5kZWxldGUoKTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJv
ci4KIFBBU1Mgb2JqZWN0U3RvcmUuZ2V0KCk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5
cGUgZXJyb3IuCi1QQVNTIG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCk7IHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgotUEFTUyBvYmplY3RTdG9yZS5jcmVh
dGVJbmRleCgnZm9vJyk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJn
dW1lbnRzLgorUEFTUyBvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgpOyB0aHJldyBleGNlcHRpb24g
VHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyBvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgnZm9v
Jyk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCiBQQVNTIG9iamVjdFN0
b3JlLmluZGV4KCk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1l
bnRzLgogUEFTUyBvYmplY3RTdG9yZS5kZWxldGVJbmRleCgpOyB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy9rZXlwYXRoLWFycmF5cy5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy9rZXlwYXRoLWFycmF5cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NGQ4YTcwMzA5ZjYwMGI1YWFlODlj
ODBmMzI4ZmQ1NzNiZGNhZjllCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleXBhdGgtYXJyYXlzLmpzCkBAIC0wLDAgKzEsODEgQEAK
K2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3No
YXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgQXJyYXktdHlwZSBr
ZXlQYXRocyIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhl
cygpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFz
ZSgna2V5cGF0aC1hcnJheXMnKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAg
ICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2tleXBhdGgtYXJyYXlz
JykiKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgfTsKK30KKwor
ZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygib3Bl
blN1Y2Nlc3MoKToiKTsKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJl
c3VsdCIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lv
bignMScpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgIHRyYW5zYWN0
aW9uID0gcmVxdWVzdC5yZXN1bHQ7CisgICAgICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4
cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICAgICAgZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVh
dGVPYmplY3RTdG9yZSgnc3RvcmUnLCB7a2V5UGF0aDogWydhJywgJ2InXX0pIik7CisgICAgICAg
IGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleCcsIFsnYycsICdkJ10pIik7CisK
KyAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0
b3JlLXdpdGgtZ2VuZXJhdG9yJywge2tleVBhdGg6IFsnYScsICdiJ10sIGF1dG9JbmNyZW1lbnQ6
IHRydWV9KSIsICJET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIiKTsKKyAgICAgICAgZXZh
bEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4LW11bHRpZW50cnkn
LCBbJ2UnLCAnZiddLCB7bXVsdGlFbnRyeTogdHJ1ZX0pIiwgIkRPTUV4Y2VwdGlvbi5OT1RfU1VQ
UE9SVEVEX0VSUiIpOworCisgICAgICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSB0ZXN0S2V5
UGF0aHM7CisgICAgfTsKK30KKworZnVuY3Rpb24gdGVzdEtleVBhdGhzKCkKK3sKKyAgICBkZWJ1
ZygiIik7CisgICAgZGVidWcoInRlc3RLZXlQYXRocygpOiIpOworCisgICAgdHJhbnNhY3Rpb24g
PSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUnXSwgSURC
VHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5l
eHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlv
bi5vYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgIGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUu
aW5kZXgoJ2luZGV4JykiKTsKKworICAgIGRlYnVnKCIiKTsKKyAgICBldmFsQW5kTG9nKCJyZXF1
ZXN0ID0gc3RvcmUucHV0KHthOiAxLCBiOiAyLCBjOiAzLCBkOiA0fSkiKTsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBjaGVja1N0b3JlKCk7CisK
KyAgICBmdW5jdGlvbiBjaGVja1N0b3JlKCkgeworICAgICAgICBldmFsQW5kTG9nKCJyZXF1ZXN0
ID0gc3RvcmUub3BlbkN1cnNvcigpIik7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvciA9IHJlcXVlc3QucmVzdWx0Iik7
CisgICAgICAgICAgICBzaG91bGRCZVRydWUoImN1cnNvciAhPT0gbnVsbCIpOworICAgICAgICAg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJKU09OLnN0cmluZ2lmeShjdXJzb3Iua2V5KSIsICJb
MSwyXSIpOworICAgICAgICAgICAgY2hlY2tJbmRleCgpOworICAgICAgICB9OworICAgIH07CisK
KyAgICBmdW5jdGlvbiBjaGVja0luZGV4KCkgeworICAgICAgICBldmFsQW5kTG9nKCJyZXF1ZXN0
ID0gaW5kZXgub3BlbkN1cnNvcigpIik7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvciA9IHJlcXVlc3QucmVzdWx0Iik7
CisgICAgICAgICAgICBzaG91bGRCZVRydWUoImN1cnNvciAhPT0gbnVsbCIpOworICAgICAgICAg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJKU09OLnN0cmluZ2lmeShjdXJzb3IucHJpbWFyeUtl
eSkiLCAiWzEsMl0iKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiSlNPTi5z
dHJpbmdpZnkoY3Vyc29yLmtleSkiLCAiWzMsNF0iKTsKKyAgICAgICAgfTsKKyAgICB9OworCisg
ICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZpbmlzaEpTVGVzdDsKK30KKwordGVzdCgpOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleXBh
dGgtYmFzaWNzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tl
eXBhdGgtYmFzaWNzLmpzCmluZGV4IGIyNWM3MzFlOGE1ODJhYWY1N2U2NDAwOGEwZjVlNTljMmZj
MzU5YTEuLjAwOTdlMjMzMWE1MWNhNGFmODRhN2E5N2VkZDA2MDZmNjIyMmNmNzYgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9rZXlwYXRoLWJhc2lj
cy5qcworKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5cGF0
aC1iYXNpY3MuanMKQEAgLTI1LDYyICsyNSw5OSBAQCBmdW5jdGlvbiBvcGVuU3VjY2VzcygpCiAK
IGZ1bmN0aW9uIHRlc3RWYWxpZEtleVBhdGhzKCkKIHsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVi
dWcoInRlc3RWYWxpZEtleVBhdGhzKCk6Iik7CiAgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRi
KTsKIAotICAgIHRlc3RLZXlQYXRocyA9IFtudWxsLCB1bmRlZmluZWQsICcnXTsKKyAgICBkZWJ1
ZygiIik7CisgICAgZGVidWcoIlJlZ3VsYXIgc3RyaW5nczoiKTsKKyAgICB0ZXN0S2V5UGF0aHMg
PSBbIidmb28nIiwgIidmb28uYmFyLmJheiciXTsKICAgICB0ZXN0S2V5UGF0aHMuZm9yRWFjaChm
dW5jdGlvbiAoa2V5UGF0aCkgewotICAgICAgICBnbG9iYWxLZXlQYXRoID0ga2V5UGF0aDsKLSAg
ICAgICAgZGVidWcoImdsb2JhbEtleVBhdGggPSAnIiArIGdsb2JhbEtleVBhdGggKyAiJyIpOwot
ICAgICAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnbmFtZScsIHtrZXlQYXRo
OiBnbG9iYWxLZXlQYXRofSkiKTsKKyAgICAgICAgZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVh
dGVPYmplY3RTdG9yZSgnbmFtZScsIHtrZXlQYXRoOiAiICsga2V5UGF0aCArICJ9KSIpOworICAg
ICAgICBzaG91bGRCZSgic3RvcmUua2V5UGF0aCIsIGtleVBhdGgpOworICAgICAgICBldmFsQW5k
TG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOworCisgICAg
ICAgIGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ25hbWUnLCAiICsga2V5
UGF0aCArICIpIik7CisgICAgICAgIHNob3VsZEJlKCJpbmRleC5rZXlQYXRoIiwga2V5UGF0aCk7
CiAgICAgICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CiAgICAgfSk7CiAKLSAgICB0ZXN0
S2V5UGF0aHMgPSBbJ2ZvbycsICdmb28uYmFyLmJheiddOworICAgIGRlYnVnKCIiKTsKKyAgICBk
ZWJ1ZygiY3JlYXRlT2JqZWN0U3RvcmU6IG5vbi1hcnJheS9ub24tc3RyaW5nIHZhbHVlcyBhcmUg
Y29udmVydGVkIHRvIERPTVN0cmluZ3M6Iik7CisgICAgdGVzdEtleVBhdGhzID0gWyJudWxsIiwg
InVuZGVmaW5lZCJdOwogICAgIHRlc3RLZXlQYXRocy5mb3JFYWNoKGZ1bmN0aW9uIChrZXlQYXRo
KSB7Ci0gICAgICAgIGdsb2JhbEtleVBhdGggPSBrZXlQYXRoOwotICAgICAgICBkZWJ1ZygiZ2xv
YmFsS2V5UGF0aCA9ICciICsgZ2xvYmFsS2V5UGF0aCArICInIik7Ci0gICAgICAgIGV2YWxBbmRM
b2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCduYW1lJywge2tleVBhdGg6IGdsb2JhbEtleVBhdGh9
KSIpOworICAgICAgICBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdu
YW1lJywge2tleVBhdGg6ICIgKyBrZXlQYXRoICsgIn0pIik7CisgICAgICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygic3RvcmUua2V5UGF0aCIsIGtleVBhdGgpOwogICAgICAgICBkZWxldGVBbGxP
YmplY3RTdG9yZXMoZGIpOwogICAgIH0pOwogCi0gICAgdGVzdEtleVBhdGhzID0gW251bGwsIHVu
ZGVmaW5lZCwgJycsICdmb28nLCAnZm9vLmJhci5iYXonXTsKKyAgICBkZWJ1ZygiIik7CisgICAg
ZGVidWcoImNyZWF0ZUluZGV4OiBub24tYXJyYXkvbm9uLXN0cmluZyB2YWx1ZXMgYXJlIGNvbnZl
cnRlZCB0byBET01TdHJpbmdzOiIpOworICAgIHRlc3RLZXlQYXRocyA9IFsibnVsbCIsICJ1bmRl
ZmluZWQiXTsKICAgICB0ZXN0S2V5UGF0aHMuZm9yRWFjaChmdW5jdGlvbiAoa2V5UGF0aCkgewot
ICAgICAgICBnbG9iYWxLZXlQYXRoID0ga2V5UGF0aDsKLSAgICAgICAgZGVidWcoImdsb2JhbEtl
eVBhdGggPSAnIiArIGdsb2JhbEtleVBhdGggKyAiJyIpOwotICAgICAgICBzdG9yZSA9IGV2YWxB
bmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0gICAg
ICAgIGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCduYW1lJywgZ2xvYmFsS2V5UGF0aCki
KTsKKyAgICAgICAgZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3Rv
cmVOYW1lJykiKTsKKyAgICAgICAgZXZhbEFuZExvZygiaW5kZXggPSBzdG9yZS5jcmVhdGVJbmRl
eCgnbmFtZScsICIgKyBrZXlQYXRoICsgIikiKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJpbmRleC5rZXlQYXRoIiwga2V5UGF0aCk7CisgICAgICAgIGRlbGV0ZUFsbE9iamVjdFN0
b3JlcyhkYik7CisgICAgfSk7CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoImNyZWF0ZUlu
ZGV4OiBlbXB0eSBzdHJpbmdzIGFyZSBhbGxvd2VkIGFzIGtleSBwYXRocyIpOworICAgIHRlc3RL
ZXlQYXRocyA9IFsiJyciXTsKKyAgICB0ZXN0S2V5UGF0aHMuZm9yRWFjaChmdW5jdGlvbiAoa2V5
UGF0aCkgeworICAgICAgICBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdzdG9yZU5hbWUnKSIpOworICAgICAgICBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmNyZWF0
ZUluZGV4KCduYW1lJywgIiArIGtleVBhdGggKyAiKSIpOworICAgICAgICBzaG91bGRCZSgiaW5k
ZXgua2V5UGF0aCIsIGtleVBhdGgpOworICAgICAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIp
OworICAgIH0pOworCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJjcmVhdGVJbmRleDogYXJy
YXlzIGFyZSBhbGxvd2VkIGFzIGtleSBwYXRocyIpOworICAgIHRlc3RLZXlQYXRocyA9IFsiW10i
LCAiWydhJywgJ2InXSIsICJbJyddIl07CisgICAgdGVzdEtleVBhdGhzLmZvckVhY2goZnVuY3Rp
b24gKGtleVBhdGgpIHsKKyAgICAgICAgZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKyAgICAgICAgZXZhbEFuZExvZygiaW5kZXggPSBzdG9y
ZS5jcmVhdGVJbmRleCgnbmFtZScsICIgKyBrZXlQYXRoICsgIikiKTsKKyAgICAgICAgc2hvdWxk
QmVUcnVlKCJhcnJheUNvbXBhcmUoaW5kZXgua2V5UGF0aCwgIiArIGtleVBhdGggKyAiKSIpOwog
ICAgICAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwogICAgIH0pOwogCiAgICAgdGVzdElu
dmFsaWRLZXlQYXRocygpOwogfQogCitmdW5jdGlvbiBhcnJheUNvbXBhcmUoYSwgYikKK3sKKyAg
ICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBhLmxlbmd0aDsgKytpKSB7CisgICAgICAgIGlmIChhW2ldICE9
PSBiW2ldKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwogZnVuY3Rpb24gdGVzdEludmFsaWRLZXlQYXRocygpCiB7CisgICAgZGVidWcoIiIp
OworICAgIGRlYnVnKCJ0ZXN0SW52YWxpZEtleVBhdGhzKCk6Iik7CiAgICAgZGVsZXRlQWxsT2Jq
ZWN0U3RvcmVzKGRiKTsKIAotICAgIHRlc3RLZXlQYXRocyA9IFsnW10nLCAnWyJmb28iXScsICdb
ImZvbyIsICJiYXIiXScsICdbIiIsICIiXScsICdbMS4wLCAyLjBdJywgJ1tbImZvbyJdXScsICdb
ImZvbyIsIFsiYmFyIl1dJ107CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJPYmplY3Qgc3Rv
cmUga2V5IHBhdGggbWF5IG5vdCBiZSBlbXB0eSBvciBhbiBhcnJheSIpOworICAgIHRlc3RLZXlQ
YXRocyA9IFsiJyciLCAiW10iLCAiWydhJ10iLCAiWycnXSJdOwogICAgIHRlc3RLZXlQYXRocy5m
b3JFYWNoKGZ1bmN0aW9uIChrZXlQYXRoKSB7Ci0gICAgICAgIGdsb2JhbEtleVBhdGggPSBrZXlQ
YXRoOwotICAgICAgICBkZWJ1ZygiZ2xvYmFsS2V5UGF0aCA9ICciICsgZ2xvYmFsS2V5UGF0aCAr
ICInIik7Ci0gICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLmNyZWF0ZU9iamVjdFN0
b3JlKCduYW1lJywge2tleVBhdGg6IGdsb2JhbEtleVBhdGh9KSIsICJJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5OT05fVFJBTlNJRU5UX0VSUiIpOworICAgICAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0
b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgICAgIGV2YWxB
bmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCduYW1lJywgIiArIGtleVBhdGggKyAiKSIpOwogICAg
ICAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwogICAgIH0pOwogCi0gICAgdGVzdEtleVBh
dGhzID0gWycgJywgJ2ZvbyAnLCAnZm9vIGJhcicsICdmb28uIGJhcicsICdmb28gLmJhcicsICdm
b28uLmJhcicsICcrZm9vJywgJ2ZvbyUnXTsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIktl
eSBwYXRocyB3aGljaCBhcmUgbmV2ZXIgdmFsaWQ6Iik7CisgICAgdGVzdEtleVBhdGhzID0gWyIn
ICciLCAiJ2ZvbyAnIiwgIidmb28gYmFyJyIsICInZm9vLiBiYXInIiwgIidmb28gLmJhciciLCAi
J2Zvby4uYmFyJyIsICInK2ZvbyciLCAiJ2ZvbyUnIiwgIicxJyIsICInMS4wJyJdOwogICAgIHRl
c3RLZXlQYXRocy5mb3JFYWNoKGZ1bmN0aW9uIChrZXlQYXRoKSB7Ci0gICAgICAgIGdsb2JhbEtl
eVBhdGggPSBrZXlQYXRoOwotICAgICAgICBkZWJ1ZygiZ2xvYmFsS2V5UGF0aCA9ICciICsgZ2xv
YmFsS2V5UGF0aCArICInIik7Ci0gICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCduYW1lJywge2tleVBhdGg6IGdsb2JhbEtleVBhdGh9KSIsICJJREJE
YXRhYmFzZUV4Y2VwdGlvbi5OT05fVFJBTlNJRU5UX0VSUiIpOwotICAgICAgICBkZWxldGVBbGxP
YmplY3RTdG9yZXMoZGIpOwotICAgIH0pOworICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9u
KCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnbmFtZScsIHtrZXlQYXRoOiAiICsga2V5UGF0aCArICJ9
KSIsICJET01FeGNlcHRpb24uU1lOVEFYX0VSUiIpOwogCi0gICAgdGVzdEtleVBhdGhzID0gWycg
JywgJ2ZvbyAnLCAnZm9vIGJhcicsICdmb28uIGJhcicsICdmb28gLmJhcicsICdmb28uLmJhcics
ICcrZm9vJywgJ2ZvbyUnXTsKLSAgICB0ZXN0S2V5UGF0aHMuZm9yRWFjaChmdW5jdGlvbiAoa2V5
UGF0aCkgewotICAgICAgICBnbG9iYWxLZXlQYXRoID0ga2V5UGF0aDsKLSAgICAgICAgZGVidWco
Imdsb2JhbEtleVBhdGggPSAnIiArIGdsb2JhbEtleVBhdGggKyAiJyIpOwotICAgICAgICBzdG9y
ZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScp
Iik7Ci0gICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmNyZWF0ZUluZGV4KCdu
YW1lJywgZ2xvYmFsS2V5UGF0aCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9OX1RSQU5TSUVO
VF9FUlIiKTsKKyAgICAgICAgZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9y
ZSgnc3RvcmVOYW1lJykiKTsKKyAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUu
Y3JlYXRlSW5kZXgoJ25hbWUnLCAiICsga2V5UGF0aCArICIpIiwgIkRPTUV4Y2VwdGlvbi5TWU5U
QVhfRVJSIik7CiAgICAgICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CiAgICAgfSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143147</attachid>
            <date>2012-05-21 17:31:21 -0700</date>
            <delta_ts>2012-05-22 12:39:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84207-20120521173120.patch</filename>
            <type>text/plain</type>
            <size>37446</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3ODQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGY5YjFjOTI4NmE1ODIw
MTU2YzgwMWY0NGQ5MmFmODYwNWM1NGU0Mi4uYjNjZDZjNDY1MjZkYjViZmFkZTY4OWEwODA4ZGIx
N2UwMWU0MTVmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTA1LTIxICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBTdXBw
b3J0IEFycmF5LXR5cGUga2V5IHBhdGhzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04NDIwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEltcGxlbWVudCBJREIgc3BlYyBiZWhhdmlvciB0aGF0IGtleSBwYXRo
cyBjYW4gYmUgYXJyYXlzIG9mIHN0cmluZ3M7IHdoZW4gCisgICAgICAgIGV2YWx1YXRlZCwgdGhl
c2UgeWllbGQgYXJyYXlzIG9mIGtleXMsIHByb3ZpZGluZyBjb21wb3VuZCBrZXkgc3VwcG9ydC4g
QWxzbworICAgICAgICBjaGFuZ2VzIGV4Y2VwdGlvbiB0eXBlcyB0byBtYXRjaCB0aGUgc3BlYy4K
KworICAgICAgICBUZXN0OiBzdG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWFycmF5cy5odG1sCisg
ICAgICAgIFRlc3Q6IHN0b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgtYmFzaWNzLmh0bWwKKworICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZSk6IExvb2sgZm9yIGJvdGggc3RyaW5n
IGFuZCBhcnJheSBpbiBvcHRpb24gZGljdCwKKyAgICAgICAgdGhyb3cgZXhjZXB0aW9ucyBmb3Ig
Zm9yYmlkZGVuIGNvbWJpbmF0aW9ucyBvZiBrZXkgZ2VuZXJhdG9yIGFuZCBrZXkgcGF0aHMuCisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KTogSGFuZGxlIHNwZWNpYWwgY2Fz
ZXMgKGFjY2VwdGVkIGFuZCBmb3JiaWRkZW4pLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaDoKKyAgICAgICAgKElEQk9iamVj
dFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleCk6
IE92ZXJsb2FkcyB0byBzYXRpc2Z5IElETCBvdmVybG9hZHMgYW5kIG9wdGlvbmFsIGRpY3RzLgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmlkbDogQWRkIERPTVN0
cmluZyBhcnJheSBvdmVybG9hZC4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9JREJCaW5kaW5nVXRp
bGl0aWVzLmNwcDogSW1wbGVtZW50IHNwZWMgbG9naWMgZm9yIGV2YWx1YXRpbmcgYXJyYXkga2V5
IHBhdGhzLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSURCS2V5RnJvbVNlcmlhbGl6ZWRWYWx1
ZUFuZEtleVBhdGgpOgorICAgICAgICAoV2ViQ29yZSk6CisKIDIwMTItMDUtMjEgIEVtaWwgQSBF
a2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE1vdmUgcGFkZGluZy9tYXJnaW4v
b2Zmc2V0IHdyaXRpbmcgbW9kZSBsb2dpYyBmcm9tIFJlbmRlclN0eWxlIHRvIExlbmd0aEJveApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCmlu
ZGV4IGViOGQ4NjNmYjY5NWFlZmM1OTdlY2M3Yzk0ZDEwMDE0ZDlkZTg2YWIuLjc0ODE2YjhiODVi
MTE5YWIwYjdmNTgxNmE0ZDUxMzRmYjBlMzE5Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKQEAgLTk1LDE4ICs5NSwyNiBAQCBQYXNz
UmVmUHRyPElEQk9iamVjdFN0b3JlPiBJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29u
c3QgU3RyaW5nJiBuYW1lLCBjbwogICAgIElEQktleVBhdGgga2V5UGF0aDsKICAgICBpZiAoIW9w
dGlvbnMuaXNVbmRlZmluZWRPck51bGwoKSkgewogICAgICAgICBTdHJpbmcga2V5UGF0aFN0cmlu
ZzsKLSAgICAgICAgaWYgKG9wdGlvbnMuZ2V0V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKCJrZXlQ
YXRoIiwga2V5UGF0aFN0cmluZykpCisgICAgICAgIFZlY3RvcjxTdHJpbmc+IGtleVBhdGhBcnJh
eTsKKyAgICAgICAgaWYgKG9wdGlvbnMuZ2V0KCJrZXlQYXRoIiwga2V5UGF0aEFycmF5KSkKKyAg
ICAgICAgICAgIGtleVBhdGggPSBJREJLZXlQYXRoKGtleVBhdGhBcnJheSk7CisgICAgICAgIGVs
c2UgaWYgKG9wdGlvbnMuZ2V0V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKCJrZXlQYXRoIiwga2V5
UGF0aFN0cmluZykpCiAgICAgICAgICAgICBrZXlQYXRoID0gSURCS2V5UGF0aChrZXlQYXRoU3Ry
aW5nKTsKICAgICB9CiAKICAgICBpZiAoIWtleVBhdGguaXNOdWxsKCkgJiYgIWtleVBhdGguaXNW
YWxpZCgpKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246Ok5PTl9UUkFOU0lF
TlRfRVJSOworICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAg
IH0KIAogICAgIGJvb2wgYXV0b0luY3JlbWVudCA9IGZhbHNlOwotICAgIG9wdGlvbnMuZ2V0KCJh
dXRvSW5jcmVtZW50IiwgYXV0b0luY3JlbWVudCk7Ci0gICAgLy8gRklYTUU6IExvb2sgdXAgZXZp
Y3RhYmxlIGFuZCBwYXNzIHRoYXQgb24gYXMgd2VsbC4KKyAgICBpZiAoIW9wdGlvbnMuaXNVbmRl
ZmluZWRPck51bGwoKSkKKyAgICAgICAgb3B0aW9ucy5nZXQoImF1dG9JbmNyZW1lbnQiLCBhdXRv
SW5jcmVtZW50KTsKKworICAgIGlmIChhdXRvSW5jcmVtZW50ICYmICgoa2V5UGF0aC50eXBlKCkg
PT0gSURCS2V5UGF0aDo6U3RyaW5nVHlwZSAmJiBrZXlQYXRoLnN0cmluZygpLmlzRW1wdHkoKSkg
fHwga2V5UGF0aC50eXBlKCkgPT0gSURCS2V5UGF0aDo6QXJyYXlUeXBlKSkgeworICAgICAgICBl
YyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogCiAgICAg
UmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gb2JqZWN0U3RvcmVCYWNrZW5k
ID0gbV9iYWNrZW5kLT5jcmVhdGVPYmplY3RTdG9yZShuYW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVt
ZW50LCBtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi0+YmFja2VuZCgpLCBlYyk7CiAgICAgaWYg
KCFvYmplY3RTdG9yZUJhY2tlbmQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAppbmRleCA1YWUyNjQ2ZjI4NWU1NjM0YjUzMzRl
NTYyNGYzNDYxYWE3ZDE0M2RkLi4wNGViYTUwMjExMmRjYzEwZjQ5Y2Q2N2MwNDdlMDYwMWQ4ODMz
YjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmpl
Y3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2Jq
ZWN0U3RvcmUuY3BwCkBAIC0yMTQsMTEgKzIxNCwyMCBAQCBQYXNzUmVmUHRyPElEQkluZGV4PiBJ
REJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bgogICAgIHJldHVybiBjcmVhdGVJbmRleChuYW1lLCBJREJLZXlQYXRoKGtleVBhdGgpLCBvcHRp
b25zLCBlYyk7CiB9CiAKK1Bhc3NSZWZQdHI8SURCSW5kZXg+IElEQk9iamVjdFN0b3JlOjpjcmVh
dGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4ga2V5
UGF0aCwgY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywgRXhjZXB0aW9uQ29kZSYgZWMpCit7Cisg
ICAgLy8gRklYTUU6IEJpbmRpbmcgY29kZSBmb3IgRE9NU3RyaW5nW10gc2hvdWxkIG5vdCBtYXRj
aCBudWxsLiBodHRwOi8vd2Via2l0Lm9yZy9iLzg0MjE3CisgICAgaWYgKCFrZXlQYXRoKQorICAg
ICAgICByZXR1cm4gY3JlYXRlSW5kZXgobmFtZSwgSURCS2V5UGF0aCgibnVsbCIpLCBvcHRpb25z
LCBlYyk7CisgICAgcmV0dXJuIGNyZWF0ZUluZGV4KG5hbWUsIElEQktleVBhdGgoKmtleVBhdGgp
LCBvcHRpb25zLCBlYyk7Cit9CisKKwogUGFzc1JlZlB0cjxJREJJbmRleD4gSURCT2JqZWN0U3Rv
cmU6OmNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5
UGF0aCwgY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAg
ICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgiKTsKICAgICBpZiAoIWtl
eVBhdGguaXNWYWxpZCgpKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246Ok5P
Tl9UUkFOU0lFTlRfRVJSOworICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CiAgICAgICAgIHJldHVy
biAwOwogICAgIH0KIApAQCAtMjI4LDcgKzIzNywxMCBAQCBQYXNzUmVmUHRyPElEQkluZGV4PiBJ
REJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJL
ZQogICAgIGJvb2wgbXVsdGlFbnRyeSA9IGZhbHNlOwogICAgIG9wdGlvbnMuZ2V0KCJtdWx0aUVu
dHJ5IiwgbXVsdGlFbnRyeSk7CiAKLSAgICAvLyBGSVhNRTogV2hlbiBBcnJheS10eXBlIGtleVBh
dGhzIGFyZSBzdXBwb3J0ZWQsIHRocm93IGV4Y2VwdGlvbiBpZiBrZXlQYXRoIGlzIEFycmF5IGFu
ZCBtdWx0aUVudHJ5IGlzIHRydWUuCisgICAgaWYgKGtleVBhdGgudHlwZSgpID09IElEQktleVBh
dGg6OkFycmF5VHlwZSAmJiBtdWx0aUVudHJ5KSB7CisgICAgICAgIGVjID0gTk9UX1NVUFBPUlRF
RF9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KIAogICAgIFJlZlB0cjxJREJJbmRleEJh
Y2tlbmRJbnRlcmZhY2U+IGluZGV4QmFja2VuZCA9IG1fYmFja2VuZC0+Y3JlYXRlSW5kZXgobmFt
ZSwga2V5UGF0aCwgdW5pcXVlLCBtdWx0aUVudHJ5LCBtX3RyYW5zYWN0aW9uLT5iYWNrZW5kKCks
IGVjKTsKICAgICBBU1NFUlQoIWluZGV4QmFja2VuZCAhPSAhZWMpOyAvLyBJZiB3ZSBkaWRuJ3Qg
Z2V0IGFuIGluZGV4LCB3ZSBzaG91bGQgaGF2ZSBnb3R0ZW4gYW4gZXhjZXB0aW9uIGNvZGUuIEFu
ZCB2aWNlIHZlcnNhLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCT2JqZWN0U3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
Qk9iamVjdFN0b3JlLmgKaW5kZXggOWIyOGE3NDQ5NzY5OGZkZjIzZTdiNGJkYmFjZWQ2MDIzOGMw
MjQzYy4uZTExZmJkMDgwZDJiZWQ5NzUxM2M3ODU3NjEyNDkwOGMwMjA3YmRmYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oCkBAIC02
MiwxMCArNjIsOCBAQCBwdWJsaWM6CiAgICAgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKCkg
Y29uc3Q7CiAgICAgYm9vbCBhdXRvSW5jcmVtZW50KCkgY29uc3Q7CiAKLSAgICAvLyBGSVhNRTog
VHJ5IHRvIG1vZGlmeSB0aGUgY29kZSBnZW5lcmF0b3Igc28gdGhpcyBpcyB1bm5lZWRlZC4KICAg
ICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGFkZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIEV4Y2VwdGlvbkNv
ZGUmIGVjKSB7IHJldHVybiBhZGQoY29udGV4dCwgdmFsdWUsIDAsIGVjKTsgIH0KICAgICBQYXNz
UmVmUHRyPElEQlJlcXVlc3Q+IHB1dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVj
KSB7IHJldHVybiBwdXQoY29udGV4dCwgdmFsdWUsIDAsIGVjKTsgIH0KLSAgICBQYXNzUmVmUHRy
PElEQkluZGV4PiBjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
a2V5UGF0aCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGNyZWF0ZUluZGV4KG5hbWUsIGtl
eVBhdGgsIERpY3Rpb25hcnkoKSwgZWMpOyB9CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBv
cGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUm
IGVjKSB7IHJldHVybiBvcGVuQ3Vyc29yKGNvbnRleHQsIHN0YXRpY19jYXN0PElEQktleVJhbmdl
Kj4oMCksIGVjKTsgfSAKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5
UmFuZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBvcGVuQ3Vyc29yKGNvbnRleHQsIGtl
eVJhbmdlLCBJREJDdXJzb3I6OmRpcmVjdGlvbk5leHQoKSwgZWMpOyB9IAogICAgIFBhc3NSZWZQ
dHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gb3Bl
bkN1cnNvcihjb250ZXh0LCBrZXksIElEQkN1cnNvcjo6ZGlyZWN0aW9uTmV4dCgpLCBlYyk7IH0g
CkBAIC03OCw3ICs3NiwxMSBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBk
ZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXk+
IGtleSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gY2xlYXIo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmKTsKIAorICAgIC8vIEZJWE1F
OiBUcnkgdG8gbW9kaWZ5IHRoZSBjb2RlIGdlbmVyYXRvciBzbyB0aGlzIGR1cGxpY2F0aW9uIGlz
IHVubmVlZGVkLgogICAgIFBhc3NSZWZQdHI8SURCSW5kZXg+IGNyZWF0ZUluZGV4KGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBjb25zdCBEaWN0aW9uYXJ5JiwgRXhj
ZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8SURCSW5kZXg+IGNyZWF0ZUluZGV4KGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBFeGNlcHRpb25Db2RlJiBlYykg
eyByZXR1cm4gY3JlYXRlSW5kZXgobmFtZSwga2V5UGF0aCwgRGljdGlvbmFyeSgpLCBlYyk7IH0K
KyAgICBQYXNzUmVmUHRyPElEQkluZGV4PiBjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUs
IFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4ga2V5UGF0aCwgY29uc3QgRGljdGlvbmFyeSYsIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPElEQkluZGV4PiBjcmVhdGVJbmRleChjb25z
dCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4ga2V5UGF0aCwgRXhjZXB0
aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGNyZWF0ZUluZGV4KG5hbWUsIGtleVBhdGgsIERpY3Rpb25h
cnkoKSwgZWMpOyB9CiAgICAgUGFzc1JlZlB0cjxJREJJbmRleD4gY3JlYXRlSW5kZXgoY29uc3Qg
U3RyaW5nJiwgY29uc3QgSURCS2V5UGF0aCYsIGNvbnN0IERpY3Rpb25hcnkmLCBFeGNlcHRpb25D
b2RlJik7CiAKICAgICBQYXNzUmVmUHRyPElEQkluZGV4PiBpbmRleChjb25zdCBTdHJpbmcmIG5h
bWUsIEV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQk9iamVjdFN0b3JlLmlkbAppbmRleCBlNTljYmJjZTYzYjgxZmZjMWE0YjU1ZDEy
YTdiMDZjNmNlMzE0MTIzLi4yYjU4ZTAzZjE1MWJhODhmNjJkNGJhZTNiMWM3ZjNkNmRjMGE2MGZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RT
dG9yZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmUuaWRsCkBAIC01OSw2ICs1OSw4IEBAIG1vZHVsZSBzdG9yYWdlIHsKICAgICAgICAgW0Nh
bGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIElEQlJlcXVlc3Qgb3BlbkN1cnNvcihpbiBJ
REJLZXkga2V5LCBpbiBbT3B0aW9uYWxdIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbikKICAgICAg
ICAgICAgIHJhaXNlcyAoSURCRGF0YWJhc2VFeGNlcHRpb24pOwogCisgICAgICAgIElEQkluZGV4
IGNyZWF0ZUluZGV4KGluIERPTVN0cmluZyBuYW1lLCBpbiBET01TdHJpbmdbXSBrZXlQYXRoLCBp
biBbT3B0aW9uYWxdIERpY3Rpb25hcnkgb3B0aW9ucykKKyAgICAgICAgICAgIHJhaXNlcyAoSURC
RGF0YWJhc2VFeGNlcHRpb24pOwogICAgICAgICBJREJJbmRleCBjcmVhdGVJbmRleChpbiBET01T
dHJpbmcgbmFtZSwgaW4gRE9NU3RyaW5nIGtleVBhdGgsIGluIFtPcHRpb25hbF0gRGljdGlvbmFy
eSBvcHRpb25zKQogICAgICAgICAgICAgcmFpc2VzIChJREJEYXRhYmFzZUV4Y2VwdGlvbik7CiAg
ICAgICAgIElEQkluZGV4IGluZGV4KGluIERPTVN0cmluZyBuYW1lKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAppbmRleCAxNWI0M2U5
MzYwZWRmOTViMzVkZDZlYmNiZGQxNmI0OWY4YjBkN2MxLi5kMzE2YWQ3Mjk5ZjRlMjgzMTQ1OTVl
MzVkYzNmZDA1MDcyODNjNjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcApAQCAtMTUzLDEzICsxNTMsMTEgQEAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGVuc3VyZU50aFZhbHVlT25LZXlQYXRoKHY4OjpIYW5kbGU8djg6OlZhbHVl
PiYgcm9vdFZhbHVlLAogCiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKIAotUGFzc1JlZlB0cjxJ
REJLZXk+IGNyZWF0ZUlEQktleUZyb21TZXJpYWxpemVkVmFsdWVBbmRLZXlQYXRoKFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0
aCkKK3N0YXRpYyBQYXNzUmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJvbVNlcmlhbGl6ZWRW
YWx1ZUFuZEtleVBhdGgoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBj
b25zdCBTdHJpbmcmIGtleVBhdGgpCiB7Ci0gICAgSURCX1RSQUNFKCJjcmVhdGVJREJLZXlGcm9t
U2VyaWFsaXplZFZhbHVlQW5kS2V5UGF0aCIpOwotICAgIEFTU0VSVChrZXlQYXRoLnR5cGUoKSA9
PSBJREJLZXlQYXRoOjpTdHJpbmdUeXBlKTsKICAgICBWZWN0b3I8U3RyaW5nPiBrZXlQYXRoRWxl
bWVudHM7CiAgICAgSURCS2V5UGF0aFBhcnNlRXJyb3IgZXJyb3I7Ci0gICAgSURCUGFyc2VLZXlQ
YXRoKGtleVBhdGguc3RyaW5nKCksIGtleVBhdGhFbGVtZW50cywgZXJyb3IpOworICAgIElEQlBh
cnNlS2V5UGF0aChrZXlQYXRoLCBrZXlQYXRoRWxlbWVudHMsIGVycm9yKTsKICAgICBBU1NFUlQo
ZXJyb3IgPT0gSURCS2V5UGF0aFBhcnNlRXJyb3JOb25lKTsKIAogICAgIFY4QXV4aWxpYXJ5Q29u
dGV4dCBjb250ZXh0OwpAQCAtMTcwLDYgKzE2OCwzMCBAQCBQYXNzUmVmUHRyPElEQktleT4gY3Jl
YXRlSURCS2V5RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtleVBhdGgoUGFzc1JlZlB0cjxTZXJpYWxp
egogICAgIHJldHVybiBjcmVhdGVJREJLZXlGcm9tVmFsdWUodjhLZXkpOwogfQogCisKK1Bhc3NS
ZWZQdHI8SURCS2V5PiBjcmVhdGVJREJLZXlGcm9tU2VyaWFsaXplZFZhbHVlQW5kS2V5UGF0aChQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gcHJwVmFsdWUsIGNvbnN0IElEQktleVBh
dGgmIGtleVBhdGgpCit7CisgICAgSURCX1RSQUNFKCJjcmVhdGVJREJLZXlGcm9tU2VyaWFsaXpl
ZFZhbHVlQW5kS2V5UGF0aCIpOworICAgIEFTU0VSVCgha2V5UGF0aC5pc051bGwoKSk7CisKKyAg
ICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSA9IHBycFZhbHVlOworCisgICAg
aWYgKGtleVBhdGgudHlwZSgpID09IElEQktleVBhdGg6OkFycmF5VHlwZSkgeworICAgICAgICBJ
REJLZXk6OktleUFycmF5IHJlc3VsdDsKKyAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFy
cmF5ID0ga2V5UGF0aC5hcnJheSgpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFy
cmF5LnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBSZWZQdHI8SURCS2V5PiBrZXkgPSBjcmVh
dGVJREJLZXlGcm9tU2VyaWFsaXplZFZhbHVlQW5kS2V5UGF0aCh2YWx1ZSwgYXJyYXlbaV0pOwor
ICAgICAgICAgICAgaWYgKCFrZXkpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKGtleSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIElEQktl
eTo6Y3JlYXRlQXJyYXkocmVzdWx0KTsKKyAgICB9CisKKyAgICBBU1NFUlQoa2V5UGF0aC50eXBl
KCkgPT0gSURCS2V5UGF0aDo6U3RyaW5nVHlwZSk7CisgICAgcmV0dXJuIGNyZWF0ZUlEQktleUZy
b21TZXJpYWxpemVkVmFsdWVBbmRLZXlQYXRoKHZhbHVlLCBrZXlQYXRoLnN0cmluZygpKTsKK30K
KwogUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGluamVjdElEQktleUludG9TZXJp
YWxpemVkVmFsdWUoUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IHZhbHVlLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKQogewogICAgIElE
Ql9UUkFDRSgiaW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZSIpOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGI5YzQ4
Njk1YzUxNGQzNjY0NDg4YThiNjFmMDgzY2Y0OWQyMmY0ZjQuLmEyMjI4NjE0ZGMwNTM1NmNkZGQx
MDFlYzI5OTNkMzYxNWM0MDQwMGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxMi0wNS0yMSAg
Sm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjog
U3VwcG9ydCBBcnJheS10eXBlIGtleSBwYXRocworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQyMDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgtYXJyYXlzLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIva2V5cGF0aC1h
cnJheXMuaHRtbDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIva2V5cGF0aC1i
YXNpY3MtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEv
Y3JlYXRlLW9iamVjdHN0b3JlLWJhc2ljcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFn
ZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY3JlYXRlLW9iamVjdHN0b3JlLWJhc2ljcy5q
czoKKyAgICAgICAgKGNsZWFuRGF0YWJhc2UpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRi
L29iamVjdFN0b3JlLXJlcXVpcmVkLWFyZ3VtZW50cy1leHBlY3RlZC50eHQ6CisgICAgICAgICog
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleXBhdGgtYXJyYXlzLmpzOiBBZGRlZC4KKyAg
ICAgICAgKHRlc3QucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdCk6CisgICAgICAg
IChvcGVuU3VjY2Vzcy5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6
CisgICAgICAgICh0ZXN0S2V5UGF0aHMuY2hlY2tTdG9yZS5yZXF1ZXN0Lm9uc3VjY2Vzcyk6Cisg
ICAgICAgICh0ZXN0S2V5UGF0aHMuY2hlY2tTdG9yZSk6CisgICAgICAgICh0ZXN0S2V5UGF0aHMu
Y2hlY2tJbmRleC5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgICh0ZXN0S2V5UGF0aHMuY2hl
Y2tJbmRleCk6CisgICAgICAgICh0ZXN0S2V5UGF0aHMpOgorICAgICAgICAqIHN0b3JhZ2UvaW5k
ZXhlZGRiL3Jlc291cmNlcy9rZXlwYXRoLWJhc2ljcy5qczoKKwogMjAxMi0wNS0yMSAgTGV2aSBX
ZWludHJhdWIgIDxsZXZpd0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gTW9y
ZSByZWJhc2VsaW5lcyBmb2xsb3dpbmcgcjExNzgxNS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgtYXJyYXlzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgtYXJyYXlzLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43ZGU2M2ZkYTgxNzk0NzkwZDQ1NGU4ZTg5MGI5NmE1N2MyMjBiOTMyCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5cGF0aC1hcnJheXMtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDEgQEAKK1Rlc3QgSW5kZXhlZERCIEFycmF5LXR5cGUga2V5
UGF0aHMKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2luZGV4ZWREQiA9IHNlbGYu
aW5kZXhlZERCIHx8IHNlbGYud2Via2l0SW5kZXhlZERCIHx8IHNlbGYubW96SW5kZXhlZERCIHx8
IHNlbGYubXNJbmRleGVkREIgfHwgc2VsZi5PSW5kZXhlZERCOworCitpbmRleGVkREIuZGVsZXRl
RGF0YWJhc2UoJ2tleXBhdGgtYXJyYXlzJykKK2luZGV4ZWREQi5vcGVuKCdrZXlwYXRoLWFycmF5
cycpCisKK29wZW5TdWNjZXNzKCk6CitkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK3JlcXVlc3Qg
PSBkYi5zZXRWZXJzaW9uKCcxJykKK3N0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3Jl
Jywge2tleVBhdGg6IFsnYScsICdiJ119KQorc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4JywgWydj
JywgJ2QnXSkKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBkYi5jcmVhdGVPYmplY3RTdG9yZSgn
c3RvcmUtd2l0aC1nZW5lcmF0b3InLCB7a2V5UGF0aDogWydhJywgJ2InXSwgYXV0b0luY3JlbWVu
dDogdHJ1ZX0pCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIERPTUV4
Y2VwdGlvbi5JTlZBTElEX0FDQ0VTU19FUlIKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9y
ZS5jcmVhdGVJbmRleCgnaW5kZXgtbXVsdGllbnRyeScsIFsnZScsICdmJ10sIHttdWx0aUVudHJ5
OiB0cnVlfSkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgRE9NRXhj
ZXB0aW9uLk5PVF9TVVBQT1JURURfRVJSCisKK3Rlc3RLZXlQYXRocygpOgordHJhbnNhY3Rpb24g
PSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlJ10sICdyZWFkd3JpdGUnKQorc3RvcmUgPSB0cmFuc2Fj
dGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKQoraW5kZXggPSBzdG9yZS5pbmRleCgnaW5kZXgnKQor
CityZXF1ZXN0ID0gc3RvcmUucHV0KHthOiAxLCBiOiAyLCBjOiAzLCBkOiA0fSkKK3JlcXVlc3Qg
PSBzdG9yZS5vcGVuQ3Vyc29yKCkKK2N1cnNvciA9IHJlcXVlc3QucmVzdWx0CitQQVNTIGN1cnNv
ciBpcyBub24tbnVsbC4KK1BBU1MgSlNPTi5zdHJpbmdpZnkoY3Vyc29yLmtleSkgaXMgIlsxLDJd
IgorcmVxdWVzdCA9IGluZGV4Lm9wZW5DdXJzb3IoKQorY3Vyc29yID0gcmVxdWVzdC5yZXN1bHQK
K1BBU1MgY3Vyc29yIGlzIG5vbi1udWxsLgorUEFTUyBKU09OLnN0cmluZ2lmeShjdXJzb3IucHJp
bWFyeUtleSkgaXMgIlsxLDJdIgorUEFTUyBKU09OLnN0cmluZ2lmeShjdXJzb3Iua2V5KSBpcyAi
WzMsNF0iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5cGF0aC1hcnJh
eXMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgtYXJyYXlzLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNDYwZWMxOTY2ZTA2NjNjOTViNmVkMGMyNzNmMjg1ZTVlOWMwMTdkMgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgt
YXJyYXlzLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMva2V5cGF0aC1hcnJheXMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9rZXlwYXRoLWJhc2ljcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9rZXlwYXRoLWJhc2ljcy1leHBlY3RlZC50eHQKaW5kZXggODYyOTQ2Mzg5NGE4
MThjZTc5ZjA3YjE5ZDA1MDE3ODQzMmZmMWFjYS4uNGQ1Yzk3MDliODM4NGJhMDk1Y2RhNmYxYTcw
NTBjOGI4MDdhNmRmZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
a2V5cGF0aC1iYXNpY3MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2tleXBhdGgtYmFzaWNzLWV4cGVjdGVkLnR4dApAQCAtOCw2ICs4LDggQEAgaW5kZXhl
ZERCID0gc2VsZi5pbmRleGVkREIgfHwgc2VsZi53ZWJraXRJbmRleGVkREIgfHwgc2VsZi5tb3pJ
bmRleGVkREIgfHwgc2VsZi4KIGluZGV4ZWREQi5vcGVuKG5hbWUpCiBkYiA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQKIHJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykKKwordGVzdFZhbGlkS2V5UGF0
aHMoKToKIERlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCiBzdG9yZSA9IGRiLmNyZWF0ZU9iamVj
dFN0b3JlKCduYW1lJykKIFBBU1Mgc3RvcmUua2V5UGF0aCBpcyBudWxsCkBAIC0zNywxMjkgKzM5
LDk4IEBAIFBBU1Mgc3RvcmUua2V5UGF0aCBpcyAnZm9vLmJhci5iYXonCiBpbmRleCA9IHN0b3Jl
LmNyZWF0ZUluZGV4KCduYW1lJywgJ2Zvby5iYXIuYmF6JykKIFBBU1MgaW5kZXgua2V5UGF0aCBp
cyAnZm9vLmJhci5iYXonCiBEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgorCit0ZXN0SW52YWxp
ZEtleVBhdGhzKCk6CiBEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgotZ2xvYmFsS2V5UGF0aCA9
ICdbXScKLUV4cGVjdGluZyBleGNlcHRpb24gZnJvbSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnbmFt
ZScsIHtrZXlQYXRoOiBnbG9iYWxLZXlQYXRofSkKKworT2JqZWN0IHN0b3JlIGtleSBwYXRoIG1h
eSBub3QgYmUgZW1wdHkgb3IgYW4gYXJyYXkgaWYgYXV0b0luY3JlbWVudCBpcyB0cnVlCitFeHBl
Y3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVO
YW1lJywge2F1dG9JbmNyZW1lbnQ6IHRydWUsIGtleVBhdGg6ICcnfSkKIFBBU1MgRXhjZXB0aW9u
IHdhcyB0aHJvd24uCi1QQVNTIGNvZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uTk9OX1RSQU5T
SUVOVF9FUlIKK1BBU1MgY29kZSBpcyBET01FeGNlcHRpb24uSU5WQUxJRF9BQ0NFU1NfRVJSCiBE
ZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgotZ2xvYmFsS2V5UGF0aCA9ICdbImZvbyJdJwotRXhw
ZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGRiLmNyZWF0ZU9iamVjdFN0b3JlKCduYW1lJywge2tleVBh
dGg6IGdsb2JhbEtleVBhdGh9KQorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlID0gZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIHthdXRvSW5jcmVtZW50OiB0cnVlLCBrZXlQ
YXRoOiBbXX0pCiBQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgotUEFTUyBjb2RlIGlzIElEQkRh
dGFiYXNlRXhjZXB0aW9uLk5PTl9UUkFOU0lFTlRfRVJSCitQQVNTIGNvZGUgaXMgRE9NRXhjZXB0
aW9uLklOVkFMSURfQUNDRVNTX0VSUgogRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KLWdsb2Jh
bEtleVBhdGggPSAnWyJmb28iLCAiYmFyIl0nCi1FeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ25hbWUnLCB7a2V5UGF0aDogZ2xvYmFsS2V5UGF0aH0pCitFeHBl
Y3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVO
YW1lJywge2F1dG9JbmNyZW1lbnQ6IHRydWUsIGtleVBhdGg6IFsnYSddfSkKIFBBU1MgRXhjZXB0
aW9uIHdhcyB0aHJvd24uCi1QQVNTIGNvZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uTk9OX1RS
QU5TSUVOVF9FUlIKK1BBU1MgY29kZSBpcyBET01FeGNlcHRpb24uSU5WQUxJRF9BQ0NFU1NfRVJS
CiBEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgotZ2xvYmFsS2V5UGF0aCA9ICdbIiIsICIiXScK
LUV4cGVjdGluZyBleGNlcHRpb24gZnJvbSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnbmFtZScsIHtr
ZXlQYXRoOiBnbG9iYWxLZXlQYXRofSkKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9yZSA9
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCB7YXV0b0luY3JlbWVudDogdHJ1ZSwg
a2V5UGF0aDogWycnXX0pCiBQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgotUEFTUyBjb2RlIGlz
IElEQkRhdGFiYXNlRXhjZXB0aW9uLk5PTl9UUkFOU0lFTlRfRVJSCitQQVNTIGNvZGUgaXMgRE9N
RXhjZXB0aW9uLklOVkFMSURfQUNDRVNTX0VSUgogRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4K
LWdsb2JhbEtleVBhdGggPSAnWzEuMCwgMi4wXScKLUV4cGVjdGluZyBleGNlcHRpb24gZnJvbSBk
Yi5jcmVhdGVPYmplY3RTdG9yZSgnbmFtZScsIHtrZXlQYXRoOiBnbG9iYWxLZXlQYXRofSkKKwor
S2V5IHBhdGhzIHdoaWNoIGFyZSBuZXZlciB2YWxpZDoKK0V4cGVjdGluZyBleGNlcHRpb24gZnJv
bSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnbmFtZScsIHtrZXlQYXRoOiAnICd9KQogUEFTUyBFeGNl
cHRpb24gd2FzIHRocm93bi4KLVBBU1MgY29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT05f
VFJBTlNJRU5UX0VSUgotRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KLWdsb2JhbEtleVBhdGgg
PSAnW1siZm9vIl1dJwotRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGRiLmNyZWF0ZU9iamVjdFN0
b3JlKCduYW1lJywge2tleVBhdGg6IGdsb2JhbEtleVBhdGh9KQorUEFTUyBjb2RlIGlzIERPTUV4
Y2VwdGlvbi5TWU5UQVhfRVJSCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoJ25hbWUnKS5jcmVhdGVJbmRleCgnbmFtZScsICcgJykKIFBBU1MgRXhjZXB0aW9u
IHdhcyB0aHJvd24uCi1QQVNTIGNvZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uTk9OX1RSQU5T
SUVOVF9FUlIKK1BBU1MgY29kZSBpcyBET01FeGNlcHRpb24uU1lOVEFYX0VSUgogRGVsZXRlZCBh
bGwgb2JqZWN0IHN0b3Jlcy4KLWdsb2JhbEtleVBhdGggPSAnWyJmb28iLCBbImJhciJdXScKLUV4
cGVjdGluZyBleGNlcHRpb24gZnJvbSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnbmFtZScsIHtrZXlQ
YXRoOiBnbG9iYWxLZXlQYXRofSkKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBkYi5jcmVhdGVP
YmplY3RTdG9yZSgnbmFtZScsIHtrZXlQYXRoOiAnZm9vICd9KQogUEFTUyBFeGNlcHRpb24gd2Fz
IHRocm93bi4KLVBBU1MgY29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT05fVFJBTlNJRU5U
X0VSUgotRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KLWdsb2JhbEtleVBhdGggPSAnICcKLUV4
cGVjdGluZyBleGNlcHRpb24gZnJvbSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnbmFtZScsIHtrZXlQ
YXRoOiBnbG9iYWxLZXlQYXRofSkKK1BBU1MgY29kZSBpcyBET01FeGNlcHRpb24uU1lOVEFYX0VS
UgorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGRiLmNyZWF0ZU9iamVjdFN0b3JlKCduYW1lJyku
Y3JlYXRlSW5kZXgoJ25hbWUnLCAnZm9vICcpCiBQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgot
UEFTUyBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9uLk5PTl9UUkFOU0lFTlRfRVJSCitQQVNT
IGNvZGUgaXMgRE9NRXhjZXB0aW9uLlNZTlRBWF9FUlIKIERlbGV0ZWQgYWxsIG9iamVjdCBzdG9y
ZXMuCi1nbG9iYWxLZXlQYXRoID0gJ2ZvbyAnCi1FeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ25hbWUnLCB7a2V5UGF0aDogZ2xvYmFsS2V5UGF0aH0pCitFeHBl
Y3RpbmcgZXhjZXB0aW9uIGZyb20gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ25hbWUnLCB7a2V5UGF0
aDogJ2ZvbyBiYXInfSkKIFBBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCi1QQVNTIGNvZGUgaXMg
SURCRGF0YWJhc2VFeGNlcHRpb24uTk9OX1RSQU5TSUVOVF9FUlIKLURlbGV0ZWQgYWxsIG9iamVj
dCBzdG9yZXMuCi1nbG9iYWxLZXlQYXRoID0gJ2ZvbyBiYXInCi1FeHBlY3RpbmcgZXhjZXB0aW9u
IGZyb20gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ25hbWUnLCB7a2V5UGF0aDogZ2xvYmFsS2V5UGF0
aH0pCitQQVNTIGNvZGUgaXMgRE9NRXhjZXB0aW9uLlNZTlRBWF9FUlIKK0V4cGVjdGluZyBleGNl
cHRpb24gZnJvbSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnbmFtZScpLmNyZWF0ZUluZGV4KCduYW1l
JywgJ2ZvbyBiYXInKQogUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KLVBBU1MgY29kZSBpcyBJ
REJEYXRhYmFzZUV4Y2VwdGlvbi5OT05fVFJBTlNJRU5UX0VSUgorUEFTUyBjb2RlIGlzIERPTUV4
Y2VwdGlvbi5TWU5UQVhfRVJSCiBEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgotZ2xvYmFsS2V5
UGF0aCA9ICdmb28uIGJhcicKLUV4cGVjdGluZyBleGNlcHRpb24gZnJvbSBkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgnbmFtZScsIHtrZXlQYXRoOiBnbG9iYWxLZXlQYXRofSkKK0V4cGVjdGluZyBleGNl
cHRpb24gZnJvbSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnbmFtZScsIHtrZXlQYXRoOiAnZm9vLiBi
YXInfSkKIFBBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCi1QQVNTIGNvZGUgaXMgSURCRGF0YWJh
c2VFeGNlcHRpb24uTk9OX1RSQU5TSUVOVF9FUlIKLURlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMu
Ci1nbG9iYWxLZXlQYXRoID0gJ2ZvbyAuYmFyJwotRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGRi
LmNyZWF0ZU9iamVjdFN0b3JlKCduYW1lJywge2tleVBhdGg6IGdsb2JhbEtleVBhdGh9KQorUEFT
UyBjb2RlIGlzIERPTUV4Y2VwdGlvbi5TWU5UQVhfRVJSCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZy
b20gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ25hbWUnKS5jcmVhdGVJbmRleCgnbmFtZScsICdmb28u
IGJhcicpCiBQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgotUEFTUyBjb2RlIGlzIElEQkRhdGFi
YXNlRXhjZXB0aW9uLk5PTl9UUkFOU0lFTlRfRVJSCitQQVNTIGNvZGUgaXMgRE9NRXhjZXB0aW9u
LlNZTlRBWF9FUlIKIERlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCi1nbG9iYWxLZXlQYXRoID0g
J2Zvby4uYmFyJwotRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCduYW1lJywge2tleVBhdGg6IGdsb2JhbEtleVBhdGh9KQorRXhwZWN0aW5nIGV4Y2VwdGlvbiBm
cm9tIGRiLmNyZWF0ZU9iamVjdFN0b3JlKCduYW1lJywge2tleVBhdGg6ICdmb28gLmJhcid9KQog
UEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KLVBBU1MgY29kZSBpcyBJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5OT05fVFJBTlNJRU5UX0VSUgotRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KLWdsb2Jh
bEtleVBhdGggPSAnK2ZvbycKLUV4cGVjdGluZyBleGNlcHRpb24gZnJvbSBkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgnbmFtZScsIHtrZXlQYXRoOiBnbG9iYWxLZXlQYXRofSkKK1BBU1MgY29kZSBpcyBE
T01FeGNlcHRpb24uU1lOVEFYX0VSUgorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGRiLmNyZWF0
ZU9iamVjdFN0b3JlKCduYW1lJykuY3JlYXRlSW5kZXgoJ25hbWUnLCAnZm9vIC5iYXInKQogUEFT
UyBFeGNlcHRpb24gd2FzIHRocm93bi4KLVBBU1MgY29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlv
bi5OT05fVFJBTlNJRU5UX0VSUgorUEFTUyBjb2RlIGlzIERPTUV4Y2VwdGlvbi5TWU5UQVhfRVJS
CiBEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgotZ2xvYmFsS2V5UGF0aCA9ICdmb28lJwotRXhw
ZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGRiLmNyZWF0ZU9iamVjdFN0b3JlKCduYW1lJywge2tleVBh
dGg6IGdsb2JhbEtleVBhdGh9KQorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGRiLmNyZWF0ZU9i
amVjdFN0b3JlKCduYW1lJywge2tleVBhdGg6ICdmb28uLmJhcid9KQogUEFTUyBFeGNlcHRpb24g
d2FzIHRocm93bi4KLVBBU1MgY29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT05fVFJBTlNJ
RU5UX0VSUgotRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KLWdsb2JhbEtleVBhdGggPSAnICcK
LXN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpCi1FeHBlY3RpbmcgZXhj
ZXB0aW9uIGZyb20gc3RvcmUuY3JlYXRlSW5kZXgoJ25hbWUnLCBnbG9iYWxLZXlQYXRoKQorUEFT
UyBjb2RlIGlzIERPTUV4Y2VwdGlvbi5TWU5UQVhfRVJSCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZy
b20gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ25hbWUnKS5jcmVhdGVJbmRleCgnbmFtZScsICdmb28u
LmJhcicpCiBQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgotUEFTUyBjb2RlIGlzIElEQkRhdGFi
YXNlRXhjZXB0aW9uLk5PTl9UUkFOU0lFTlRfRVJSCitQQVNTIGNvZGUgaXMgRE9NRXhjZXB0aW9u
LlNZTlRBWF9FUlIKIERlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCi1nbG9iYWxLZXlQYXRoID0g
J2ZvbyAnCi1zdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKQotRXhwZWN0
aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLmNyZWF0ZUluZGV4KCduYW1lJywgZ2xvYmFsS2V5UGF0
aCkKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnbmFtZScs
IHtrZXlQYXRoOiAnK2Zvbyd9KQogUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KLVBBU1MgY29k
ZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT05fVFJBTlNJRU5UX0VSUgotRGVsZXRlZCBhbGwg
b2JqZWN0IHN0b3Jlcy4KLWdsb2JhbEtleVBhdGggPSAnZm9vIGJhcicKLXN0b3JlID0gZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpCi1FeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3Rv
cmUuY3JlYXRlSW5kZXgoJ25hbWUnLCBnbG9iYWxLZXlQYXRoKQorUEFTUyBjb2RlIGlzIERPTUV4
Y2VwdGlvbi5TWU5UQVhfRVJSCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoJ25hbWUnKS5jcmVhdGVJbmRleCgnbmFtZScsICcrZm9vJykKIFBBU1MgRXhjZXB0
aW9uIHdhcyB0aHJvd24uCi1QQVNTIGNvZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uTk9OX1RS
QU5TSUVOVF9FUlIKK1BBU1MgY29kZSBpcyBET01FeGNlcHRpb24uU1lOVEFYX0VSUgogRGVsZXRl
ZCBhbGwgb2JqZWN0IHN0b3Jlcy4KLWdsb2JhbEtleVBhdGggPSAnZm9vLiBiYXInCi1zdG9yZSA9
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKQotRXhwZWN0aW5nIGV4Y2VwdGlvbiBm
cm9tIHN0b3JlLmNyZWF0ZUluZGV4KCduYW1lJywgZ2xvYmFsS2V5UGF0aCkKK0V4cGVjdGluZyBl
eGNlcHRpb24gZnJvbSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnbmFtZScsIHtrZXlQYXRoOiAnZm9v
JSd9KQogUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KLVBBU1MgY29kZSBpcyBJREJEYXRhYmFz
ZUV4Y2VwdGlvbi5OT05fVFJBTlNJRU5UX0VSUgotRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4K
LWdsb2JhbEtleVBhdGggPSAnZm9vIC5iYXInCi1zdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdzdG9yZU5hbWUnKQotRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLmNyZWF0ZUluZGV4
KCduYW1lJywgZ2xvYmFsS2V5UGF0aCkKK1BBU1MgY29kZSBpcyBET01FeGNlcHRpb24uU1lOVEFY
X0VSUgorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGRiLmNyZWF0ZU9iamVjdFN0b3JlKCduYW1l
JykuY3JlYXRlSW5kZXgoJ25hbWUnLCAnZm9vJScpCiBQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3du
LgotUEFTUyBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9uLk5PTl9UUkFOU0lFTlRfRVJSCitQ
QVNTIGNvZGUgaXMgRE9NRXhjZXB0aW9uLlNZTlRBWF9FUlIKIERlbGV0ZWQgYWxsIG9iamVjdCBz
dG9yZXMuCi1nbG9iYWxLZXlQYXRoID0gJ2Zvby4uYmFyJwotc3RvcmUgPSBkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgnc3RvcmVOYW1lJykKLUV4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9yZS5jcmVh
dGVJbmRleCgnbmFtZScsIGdsb2JhbEtleVBhdGgpCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20g
ZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ25hbWUnLCB7a2V5UGF0aDogJzEnfSkKIFBBU1MgRXhjZXB0
aW9uIHdhcyB0aHJvd24uCi1QQVNTIGNvZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uTk9OX1RS
QU5TSUVOVF9FUlIKLURlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCi1nbG9iYWxLZXlQYXRoID0g
Jytmb28nCi1zdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKQotRXhwZWN0
aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLmNyZWF0ZUluZGV4KCduYW1lJywgZ2xvYmFsS2V5UGF0
aCkKK1BBU1MgY29kZSBpcyBET01FeGNlcHRpb24uU1lOVEFYX0VSUgorRXhwZWN0aW5nIGV4Y2Vw
dGlvbiBmcm9tIGRiLmNyZWF0ZU9iamVjdFN0b3JlKCduYW1lJykuY3JlYXRlSW5kZXgoJ25hbWUn
LCAnMScpCiBQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgotUEFTUyBjb2RlIGlzIElEQkRhdGFi
YXNlRXhjZXB0aW9uLk5PTl9UUkFOU0lFTlRfRVJSCitQQVNTIGNvZGUgaXMgRE9NRXhjZXB0aW9u
LlNZTlRBWF9FUlIKIERlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCi1nbG9iYWxLZXlQYXRoID0g
J2ZvbyUnCi1zdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKQotRXhwZWN0
aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLmNyZWF0ZUluZGV4KCduYW1lJywgZ2xvYmFsS2V5UGF0
aCkKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnbmFtZScs
IHtrZXlQYXRoOiAnMS4wJ30pCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2Rl
IGlzIERPTUV4Y2VwdGlvbi5TWU5UQVhfRVJSCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ25hbWUnKS5jcmVhdGVJbmRleCgnbmFtZScsICcxLjAnKQogUEFT
UyBFeGNlcHRpb24gd2FzIHRocm93bi4KLVBBU1MgY29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlv
bi5OT05fVFJBTlNJRU5UX0VSUgorUEFTUyBjb2RlIGlzIERPTUV4Y2VwdGlvbi5TWU5UQVhfRVJS
CiBEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxh
L2NyZWF0ZS1vYmplY3RzdG9yZS1iYXNpY3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUtb2JqZWN0c3RvcmUtYmFzaWNzLWV4cGVjdGVk
LnR4dAppbmRleCBkNDAwODIyMWQwYWMyMjE1ZDk0ZjBhMDlmYmRmYmE4MThkMDE5ODlhLi4xNjQx
MTkyNzBlODA3NDQyZGZhMDZjYzVjODZjYjgyODc4Y2IxMDU4IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1vYmplY3RzdG9yZS1iYXNpY3Mt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEv
Y3JlYXRlLW9iamVjdHN0b3JlLWJhc2ljcy1leHBlY3RlZC50eHQKQEAgLTEzLDUzICsxMyw0MyBA
QCBvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKGluZm8ubmFtZSwgaW5mby5vcHRp
b25zKTsKIFBBU1Mgb2JqZWN0U3RvcmUubmFtZSBpcyBpbmZvLm5hbWUKIFBBU1Mgb2JqZWN0U3Rv
cmUuaW5kZXhOYW1lcy5sZW5ndGggaXMgMAogUEFTUyBldmVudC50YXJnZXQudHJhbnNhY3Rpb24u
ZGIgaXMgZGIKLVBBU1MgZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLnJlYWR5U3RhdGUgaXMgSURC
VHJhbnNhY3Rpb24uTE9BRElORwotUEFTUyBldmVudC50YXJnZXQudHJhbnNhY3Rpb24ubW9kZSBp
cyAndmVyc2lvbmNoYW5nZScKK1BBU1MgZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLm1vZGUgaXMg
InZlcnNpb25jaGFuZ2UiCiBvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKGluZm8u
bmFtZSwgaW5mby5vcHRpb25zKTsKIFBBU1Mgb2JqZWN0U3RvcmUubmFtZSBpcyBpbmZvLm5hbWUK
IFBBU1Mgb2JqZWN0U3RvcmUuaW5kZXhOYW1lcy5sZW5ndGggaXMgMAogUEFTUyBldmVudC50YXJn
ZXQudHJhbnNhY3Rpb24uZGIgaXMgZGIKLVBBU1MgZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLnJl
YWR5U3RhdGUgaXMgSURCVHJhbnNhY3Rpb24uTE9BRElORwotUEFTUyBldmVudC50YXJnZXQudHJh
bnNhY3Rpb24ubW9kZSBpcyAndmVyc2lvbmNoYW5nZScKK1BBU1MgZXZlbnQudGFyZ2V0LnRyYW5z
YWN0aW9uLm1vZGUgaXMgInZlcnNpb25jaGFuZ2UiCiBvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9i
amVjdFN0b3JlKGluZm8ubmFtZSwgaW5mby5vcHRpb25zKTsKIFBBU1Mgb2JqZWN0U3RvcmUubmFt
ZSBpcyBpbmZvLm5hbWUKIFBBU1Mgb2JqZWN0U3RvcmUuaW5kZXhOYW1lcy5sZW5ndGggaXMgMAog
UEFTUyBldmVudC50YXJnZXQudHJhbnNhY3Rpb24uZGIgaXMgZGIKLVBBU1MgZXZlbnQudGFyZ2V0
LnRyYW5zYWN0aW9uLnJlYWR5U3RhdGUgaXMgSURCVHJhbnNhY3Rpb24uTE9BRElORwotUEFTUyBl
dmVudC50YXJnZXQudHJhbnNhY3Rpb24ubW9kZSBpcyAndmVyc2lvbmNoYW5nZScKK1BBU1MgZXZl
bnQudGFyZ2V0LnRyYW5zYWN0aW9uLm1vZGUgaXMgInZlcnNpb25jaGFuZ2UiCitFeHBlY3Rpbmcg
ZXhjZXB0aW9uIGZyb20gb2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZShpbmZvLm5h
bWUsIGluZm8ub3B0aW9ucykKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUg
aXMgRE9NRXhjZXB0aW9uLklOVkFMSURfQUNDRVNTX0VSUgogb2JqZWN0U3RvcmUgPSBkYi5jcmVh
dGVPYmplY3RTdG9yZShpbmZvLm5hbWUsIGluZm8ub3B0aW9ucyk7CiBQQVNTIG9iamVjdFN0b3Jl
Lm5hbWUgaXMgaW5mby5uYW1lCiBQQVNTIG9iamVjdFN0b3JlLmluZGV4TmFtZXMubGVuZ3RoIGlz
IDAKIFBBU1MgZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLmRiIGlzIGRiCi1QQVNTIGV2ZW50LnRh
cmdldC50cmFuc2FjdGlvbi5yZWFkeVN0YXRlIGlzIElEQlRyYW5zYWN0aW9uLkxPQURJTkcKLVBB
U1MgZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLm1vZGUgaXMgJ3ZlcnNpb25jaGFuZ2UnCi1vYmpl
Y3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKGluZm8ubmFtZSwgaW5mby5vcHRpb25zKTsK
LVBBU1Mgb2JqZWN0U3RvcmUubmFtZSBpcyBpbmZvLm5hbWUKLVBBU1Mgb2JqZWN0U3RvcmUuaW5k
ZXhOYW1lcy5sZW5ndGggaXMgMAotUEFTUyBldmVudC50YXJnZXQudHJhbnNhY3Rpb24uZGIgaXMg
ZGIKLVBBU1MgZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLnJlYWR5U3RhdGUgaXMgSURCVHJhbnNh
Y3Rpb24uTE9BRElORwotUEFTUyBldmVudC50YXJnZXQudHJhbnNhY3Rpb24ubW9kZSBpcyAndmVy
c2lvbmNoYW5nZScKK1BBU1MgZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLm1vZGUgaXMgInZlcnNp
b25jaGFuZ2UiCiBvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKGluZm8ubmFtZSwg
aW5mby5vcHRpb25zKTsKIFBBU1Mgb2JqZWN0U3RvcmUubmFtZSBpcyBpbmZvLm5hbWUKIFBBU1Mg
b2JqZWN0U3RvcmUua2V5UGF0aCBpcyBpbmZvLm9wdGlvbnMua2V5UGF0aAogUEFTUyBvYmplY3RT
dG9yZS5pbmRleE5hbWVzLmxlbmd0aCBpcyAwCiBQQVNTIGV2ZW50LnRhcmdldC50cmFuc2FjdGlv
bi5kYiBpcyBkYgotUEFTUyBldmVudC50YXJnZXQudHJhbnNhY3Rpb24ucmVhZHlTdGF0ZSBpcyBJ
REJUcmFuc2FjdGlvbi5MT0FESU5HCi1QQVNTIGV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5tb2Rl
IGlzICd2ZXJzaW9uY2hhbmdlJworUEFTUyBldmVudC50YXJnZXQudHJhbnNhY3Rpb24ubW9kZSBp
cyAidmVyc2lvbmNoYW5nZSIKIG9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoaW5m
by5uYW1lLCBpbmZvLm9wdGlvbnMpOwogUEFTUyBvYmplY3RTdG9yZS5uYW1lIGlzIGluZm8ubmFt
ZQogUEFTUyBvYmplY3RTdG9yZS5rZXlQYXRoIGlzIGluZm8ub3B0aW9ucy5rZXlQYXRoCiBQQVNT
IG9iamVjdFN0b3JlLmluZGV4TmFtZXMubGVuZ3RoIGlzIDAKIFBBU1MgZXZlbnQudGFyZ2V0LnRy
YW5zYWN0aW9uLmRiIGlzIGRiCi1QQVNTIGV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5yZWFkeVN0
YXRlIGlzIElEQlRyYW5zYWN0aW9uLkxPQURJTkcKLVBBU1MgZXZlbnQudGFyZ2V0LnRyYW5zYWN0
aW9uLm1vZGUgaXMgJ3ZlcnNpb25jaGFuZ2UnCitQQVNTIGV2ZW50LnRhcmdldC50cmFuc2FjdGlv
bi5tb2RlIGlzICJ2ZXJzaW9uY2hhbmdlIgogb2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RT
dG9yZShpbmZvLm5hbWUsIGluZm8ub3B0aW9ucyk7CiBQQVNTIG9iamVjdFN0b3JlLm5hbWUgaXMg
aW5mby5uYW1lCiBQQVNTIG9iamVjdFN0b3JlLmtleVBhdGggaXMgaW5mby5vcHRpb25zLmtleVBh
dGgKIFBBU1Mgb2JqZWN0U3RvcmUuaW5kZXhOYW1lcy5sZW5ndGggaXMgMAogUEFTUyBldmVudC50
YXJnZXQudHJhbnNhY3Rpb24uZGIgaXMgZGIKLVBBU1MgZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9u
LnJlYWR5U3RhdGUgaXMgSURCVHJhbnNhY3Rpb24uTE9BRElORwotUEFTUyBldmVudC50YXJnZXQu
dHJhbnNhY3Rpb24ubW9kZSBpcyAndmVyc2lvbmNoYW5nZScKK1BBU1MgZXZlbnQudGFyZ2V0LnRy
YW5zYWN0aW9uLm1vZGUgaXMgInZlcnNpb25jaGFuZ2UiCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2NyZWF0ZS1vYmplY3RzdG9yZS1iYXNpY3Mu
anMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9jcmVh
dGUtb2JqZWN0c3RvcmUtYmFzaWNzLmpzCmluZGV4IGI5OTIxYjU3N2VmMjEwMDM0ZDc3MGMyOTJl
MWU2NTMwMDRhMmNhZDguLjBiYWMwZDU2NzEzZmY3NDJhNmQwOGRkMTAwOTdkNTE3OWFjZmEwOTkg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3Vy
Y2VzL2NyZWF0ZS1vYmplY3RzdG9yZS1iYXNpY3MuanMKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY3JlYXRlLW9iamVjdHN0b3JlLWJhc2ljcy5q
cwpAQCAtMzksNyArMzksNyBAQCBmdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKICAgICAgICAgeyBu
YW1lOiAiMSIsIG9wdGlvbnM6IHsgYXV0b0luY3JlbWVudDogdHJ1ZSB9IH0sCiAgICAgICAgIHsg
bmFtZTogIjIiLCBvcHRpb25zOiB7IGF1dG9JbmNyZW1lbnQ6IGZhbHNlIH0gfSwKICAgICAgICAg
eyBuYW1lOiAiMyIsIG9wdGlvbnM6IHsga2V5UGF0aDogIiIgfSB9LAotICAgICAgICB7IG5hbWU6
ICI0Iiwgb3B0aW9uczogeyBrZXlQYXRoOiAiIiwgYXV0b0luY3JlbWVudDogdHJ1ZSB9IH0sCisg
ICAgICAgIHsgbmFtZTogIjQiLCBvcHRpb25zOiB7IGtleVBhdGg6ICIiLCBhdXRvSW5jcmVtZW50
OiB0cnVlIH0sIGZhaWw6IHRydWUgfSwKICAgICAgICAgeyBuYW1lOiAiNSIsIG9wdGlvbnM6IHsg
a2V5UGF0aDogIiIsIGF1dG9JbmNyZW1lbnQ6IGZhbHNlIH0gfSwKICAgICAgICAgeyBuYW1lOiAi
NiIsIG9wdGlvbnM6IHsga2V5UGF0aDogImZvbyIgfSB9LAogICAgICAgICB7IG5hbWU6ICI3Iiwg
b3B0aW9uczogeyBrZXlQYXRoOiAiZm9vIiwgYXV0b0luY3JlbWVudDogZmFsc2UgfSB9LApAQCAt
NDksMTggKzQ5LDIxIEBAIGZ1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQogICAgIGZvciAodmFyIGlu
ZGV4IGluIG9iamVjdFN0b3JlSW5mbykgewogICAgICAgICBpbmRleCA9IHBhcnNlSW50KGluZGV4
KTsKICAgICAgICAgaW5mbyA9IG9iamVjdFN0b3JlSW5mb1tpbmRleF07Ci0gICAgICAgIG9iamVj
dFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZShp
bmZvLm5hbWUsIGluZm8ub3B0aW9ucyk7Iik7Ci0gICAgICAgIHNob3VsZEJlKCJvYmplY3RTdG9y
ZS5uYW1lIiwgImluZm8ubmFtZSIpOwotICAgICAgICBpZiAoaW5mby5vcHRpb25zICYmIGluZm8u
b3B0aW9ucy5rZXlQYXRoKSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgib2JqZWN0U3RvcmUua2V5
UGF0aCIsICJpbmZvLm9wdGlvbnMua2V5UGF0aCIpOworICAgICAgICBpZiAoIWluZm8uZmFpbCkg
eworICAgICAgICAgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRi
LmNyZWF0ZU9iamVjdFN0b3JlKGluZm8ubmFtZSwgaW5mby5vcHRpb25zKTsiKTsKKyAgICAgICAg
ICAgIHNob3VsZEJlKCJvYmplY3RTdG9yZS5uYW1lIiwgImluZm8ubmFtZSIpOworICAgICAgICAg
ICAgaWYgKGluZm8ub3B0aW9ucyAmJiBpbmZvLm9wdGlvbnMua2V5UGF0aCkgeworICAgICAgICAg
ICAgICAgIHNob3VsZEJlKCJvYmplY3RTdG9yZS5rZXlQYXRoIiwgImluZm8ub3B0aW9ucy5rZXlQ
YXRoIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzaG91bGRCZSgib2JqZWN0U3RvcmUu
aW5kZXhOYW1lcy5sZW5ndGgiLCAiMCIpOworICAgICAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRh
cmdldC50cmFuc2FjdGlvbi5kYiIsICJkYiIpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJldmVudC50YXJnZXQudHJhbnNhY3Rpb24ubW9kZSIsICJ2ZXJzaW9uY2hhbmdlIik7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJv
YmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKGluZm8ubmFtZSwgaW5mby5vcHRpb25z
KSIsICJET01FeGNlcHRpb24uSU5WQUxJRF9BQ0NFU1NfRVJSIik7CiAgICAgICAgIH0KLSAgICAg
ICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlLmluZGV4TmFtZXMubGVuZ3RoIiwgIjAiKTsKLSAgICAg
ICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5kYiIsICJkYiIpOwotICAgICAg
ICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLnJlYWR5U3RhdGUiLCAiSURCVHJh
bnNhY3Rpb24uTE9BRElORyIpOwotICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnRyYW5z
YWN0aW9uLm1vZGUiLCAiJ3ZlcnNpb25jaGFuZ2UnIik7CiAgICAgfQogCiAgICAgZmluaXNoSlNU
ZXN0KCk7CiB9CiAKLXRlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit0ZXN0KCk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RTdG9yZS1y
ZXF1aXJlZC1hcmd1bWVudHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvb2JqZWN0U3RvcmUtcmVxdWlyZWQtYXJndW1lbnRzLWV4cGVjdGVkLnR4dAppbmRleCAw
NDRiYmUxNmE1ZmY3MDQwMjRiMzg0NTk0NGI5MTQyNmMyNjdkMThkLi4yNjEzM2NiNWRlN2VjMDcz
Mzc5YmI2M2Y5ZmM4NmMyZGJkMjg2NjVkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9vYmplY3RTdG9yZS1yZXF1aXJlZC1hcmd1bWVudHMtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdFN0b3JlLXJlcXVpcmVkLWFy
Z3VtZW50cy1leHBlY3RlZC50eHQKQEAgLTE0LDggKzE0LDggQEAgUEFTUyBvYmplY3RTdG9yZS5w
dXQoKTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCiBQ
QVNTIG9iamVjdFN0b3JlLmFkZCgpOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5v
dWdoIGFyZ3VtZW50cy4KIFBBU1Mgb2JqZWN0U3RvcmUuZGVsZXRlKCk7IHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCiBQQVNTIG9iamVjdFN0b3JlLmdldCgpOyB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBvYmplY3RTdG9yZS5jcmVhdGVJ
bmRleCgpOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4K
LVBBU1Mgb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ2ZvbycpOyB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KK1BBU1Mgb2JqZWN0U3RvcmUuY3JlYXRlSW5k
ZXgoKTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1Mgb2JqZWN0
U3RvcmUuY3JlYXRlSW5kZXgoJ2ZvbycpOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBl
IGVycm9yLgogUEFTUyBvYmplY3RTdG9yZS5pbmRleCgpOyB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KIFBBU1Mgb2JqZWN0U3RvcmUuZGVsZXRlSW5kZXgo
KTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCiBQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5cGF0aC1hcnJheXMuanMgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5cGF0aC1hcnJheXMuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OGJhYmE4MWEwM2U3Zjg0MDI0MzIzMzMzNTlmNWMwMTU4ZWU4ZWFhNwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9rZXlwYXRoLWFycmF5
cy5qcwpAQCAtMCwwICsxLDgxIEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1w
b3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsK
KyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3Qg
SW5kZXhlZERCIEFycmF5LXR5cGUga2V5UGF0aHMiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7Cisg
ICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJp
bmRleGVkREIuZGVsZXRlRGF0YWJhc2UoJ2tleXBhdGgtYXJyYXlzJykiKTsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWRE
Qi5vcGVuKCdrZXlwYXRoLWFycmF5cycpIik7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5T
dWNjZXNzOworICAgIH07Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkZWJ1
ZygiIik7CisgICAgZGVidWcoIm9wZW5TdWNjZXNzKCk6Iik7CisgICAgZGIgPSBldmFsQW5kTG9n
KCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
cmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24g
KCkgeworICAgICAgICB0cmFuc2FjdGlvbiA9IHJlcXVlc3QucmVzdWx0OworICAgICAgICB0cmFu
c2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgICAgIGV2YWxB
bmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJywge2tleVBhdGg6IFsn
YScsICdiJ119KSIpOworICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgnaW5k
ZXgnLCBbJ2MnLCAnZCddKSIpOworCisgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRi
LmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZS13aXRoLWdlbmVyYXRvcicsIHtrZXlQYXRoOiBbJ2En
LCAnYiddLCBhdXRvSW5jcmVtZW50OiB0cnVlfSkiLCAiRE9NRXhjZXB0aW9uLklOVkFMSURfQUND
RVNTX0VSUiIpOworICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5jcmVhdGVJ
bmRleCgnaW5kZXgtbXVsdGllbnRyeScsIFsnZScsICdmJ10sIHttdWx0aUVudHJ5OiB0cnVlfSki
LCAiRE9NRXhjZXB0aW9uLk5PVF9TVVBQT1JURURfRVJSIik7CisKKyAgICAgICAgdHJhbnNhY3Rp
b24ub25jb21wbGV0ZSA9IHRlc3RLZXlQYXRoczsKKyAgICB9OworfQorCitmdW5jdGlvbiB0ZXN0
S2V5UGF0aHMoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidGVzdEtleVBhdGhzKCk6
Iik7CisKKyAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJh
bnNhY3Rpb24oWydzdG9yZSddLCAncmVhZHdyaXRlJykiKTsKKyAgICB0cmFuc2FjdGlvbi5vbmFi
b3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgZXZhbEFuZExvZygic3RvcmUgPSB0
cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgIGV2YWxBbmRMb2coImluZGV4
ID0gc3RvcmUuaW5kZXgoJ2luZGV4JykiKTsKKworICAgIGRlYnVnKCIiKTsKKyAgICBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gc3RvcmUucHV0KHthOiAxLCBiOiAyLCBjOiAzLCBkOiA0fSkiKTsKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBjaGVja1N0
b3JlKCk7CisKKyAgICBmdW5jdGlvbiBjaGVja1N0b3JlKCkgeworICAgICAgICBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gc3RvcmUub3BlbkN1cnNvcigpIik7CisgICAgICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvciA9IHJlcXVlc3Qu
cmVzdWx0Iik7CisgICAgICAgICAgICBzaG91bGRCZU5vbk51bGwoImN1cnNvciIpOworICAgICAg
ICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJKU09OLnN0cmluZ2lmeShjdXJzb3Iua2V5KSIs
ICJbMSwyXSIpOworICAgICAgICAgICAgY2hlY2tJbmRleCgpOworICAgICAgICB9OworICAgIH07
CisKKyAgICBmdW5jdGlvbiBjaGVja0luZGV4KCkgeworICAgICAgICBldmFsQW5kTG9nKCJyZXF1
ZXN0ID0gaW5kZXgub3BlbkN1cnNvcigpIik7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvciA9IHJlcXVlc3QucmVzdWx0
Iik7CisgICAgICAgICAgICBzaG91bGRCZU5vbk51bGwoImN1cnNvciIpOworICAgICAgICAgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJKU09OLnN0cmluZ2lmeShjdXJzb3IucHJpbWFyeUtleSki
LCAiWzEsMl0iKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiSlNPTi5zdHJp
bmdpZnkoY3Vyc29yLmtleSkiLCAiWzMsNF0iKTsKKyAgICAgICAgfTsKKyAgICB9OworCisgICAg
dHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZpbmlzaEpTVGVzdDsKK30KKwordGVzdCgpOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleXBhdGgt
YmFzaWNzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleXBh
dGgtYmFzaWNzLmpzCmluZGV4IGU2YjI2MDY0YzEwMzAyNDYxNTJhYWY3YzE3NWU1MTZmNDQ0MTM4
NTEuLjE3Njk5ODYwZDcwN2JiNzI2ZDRlZjYwZTM3MzVjMjk3YWFlZWMzNDggMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9rZXlwYXRoLWJhc2ljcy5q
cworKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5cGF0aC1i
YXNpY3MuanMKQEAgLTI1LDYgKzI1LDggQEAgZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQogCiBmdW5j
dGlvbiB0ZXN0VmFsaWRLZXlQYXRocygpCiB7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0
ZXN0VmFsaWRLZXlQYXRocygpOiIpOwogICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CiAK
ICAgICBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCduYW1lJykiKTsK
QEAgLTUyLDMwICs1NCwyNCBAQCBmdW5jdGlvbiB0ZXN0VmFsaWRLZXlQYXRocygpCiAKIGZ1bmN0
aW9uIHRlc3RJbnZhbGlkS2V5UGF0aHMoKQogeworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygi
dGVzdEludmFsaWRLZXlQYXRocygpOiIpOwogICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7
CiAKLSAgICB0ZXN0S2V5UGF0aHMgPSBbJ1tdJywgJ1siZm9vIl0nLCAnWyJmb28iLCAiYmFyIl0n
LCAnWyIiLCAiIl0nLCAnWzEuMCwgMi4wXScsICdbWyJmb28iXV0nLCAnWyJmb28iLCBbImJhciJd
XSddOworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiT2JqZWN0IHN0b3JlIGtleSBwYXRoIG1h
eSBub3QgYmUgZW1wdHkgb3IgYW4gYXJyYXkgaWYgYXV0b0luY3JlbWVudCBpcyB0cnVlIik7Cisg
ICAgdGVzdEtleVBhdGhzID0gWyInJyIsICJbXSIsICJbJ2EnXSIsICJbJyddIl07CiAgICAgdGVz
dEtleVBhdGhzLmZvckVhY2goZnVuY3Rpb24gKGtleVBhdGgpIHsKLSAgICAgICAgZ2xvYmFsS2V5
UGF0aCA9IGtleVBhdGg7Ci0gICAgICAgIGRlYnVnKCJnbG9iYWxLZXlQYXRoID0gJyIgKyBnbG9i
YWxLZXlQYXRoICsgIiciKTsKLSAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoJ25hbWUnLCB7a2V5UGF0aDogZ2xvYmFsS2V5UGF0aH0pIiwgIklEQkRh
dGFiYXNlRXhjZXB0aW9uLk5PTl9UUkFOU0lFTlRfRVJSIik7CisgICAgICAgIHN0b3JlID0gZXZh
bEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVO
YW1lJywge2F1dG9JbmNyZW1lbnQ6IHRydWUsIGtleVBhdGg6ICIgKyBrZXlQYXRoICsgIn0pIiwg
IkRPTUV4Y2VwdGlvbi5JTlZBTElEX0FDQ0VTU19FUlIiKTsKICAgICAgICAgZGVsZXRlQWxsT2Jq
ZWN0U3RvcmVzKGRiKTsKICAgICB9KTsKIAotICAgIHRlc3RLZXlQYXRocyA9IFsnICcsICdmb28g
JywgJ2ZvbyBiYXInLCAnZm9vLiBiYXInLCAnZm9vIC5iYXInLCAnZm9vLi5iYXInLCAnK2Zvbycs
ICdmb28lJ107CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJLZXkgcGF0aHMgd2hpY2ggYXJl
IG5ldmVyIHZhbGlkOiIpOworICAgIHRlc3RLZXlQYXRocyA9IFsiJyAnIiwgIidmb28gJyIsICIn
Zm9vIGJhciciLCAiJ2Zvby4gYmFyJyIsICInZm9vIC5iYXInIiwgIidmb28uLmJhciciLCAiJytm
b28nIiwgIidmb28lJyIsICInMSciLCAiJzEuMCciXTsKICAgICB0ZXN0S2V5UGF0aHMuZm9yRWFj
aChmdW5jdGlvbiAoa2V5UGF0aCkgewotICAgICAgICBnbG9iYWxLZXlQYXRoID0ga2V5UGF0aDsK
LSAgICAgICAgZGVidWcoImdsb2JhbEtleVBhdGggPSAnIiArIGdsb2JhbEtleVBhdGggKyAiJyIp
OwotICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgn
bmFtZScsIHtrZXlQYXRoOiBnbG9iYWxLZXlQYXRofSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24u
Tk9OX1RSQU5TSUVOVF9FUlIiKTsKLSAgICAgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsK
LSAgICB9KTsKLQotICAgIHRlc3RLZXlQYXRocyA9IFsnICcsICdmb28gJywgJ2ZvbyBiYXInLCAn
Zm9vLiBiYXInLCAnZm9vIC5iYXInLCAnZm9vLi5iYXInLCAnK2ZvbycsICdmb28lJ107Ci0gICAg
dGVzdEtleVBhdGhzLmZvckVhY2goZnVuY3Rpb24gKGtleVBhdGgpIHsKLSAgICAgICAgZ2xvYmFs
S2V5UGF0aCA9IGtleVBhdGg7Ci0gICAgICAgIGRlYnVnKCJnbG9iYWxLZXlQYXRoID0gJyIgKyBn
bG9iYWxLZXlQYXRoICsgIiciKTsKLSAgICAgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwotICAgICAgICBldmFsQW5kRXhw
ZWN0RXhjZXB0aW9uKCJzdG9yZS5jcmVhdGVJbmRleCgnbmFtZScsIGdsb2JhbEtleVBhdGgpIiwg
IklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PTl9UUkFOU0lFTlRfRVJSIik7CisgICAgICAgIGV2YWxB
bmRFeHBlY3RFeGNlcHRpb24oImRiLmNyZWF0ZU9iamVjdFN0b3JlKCduYW1lJywge2tleVBhdGg6
ICIgKyBrZXlQYXRoICsgIn0pIiwgIkRPTUV4Y2VwdGlvbi5TWU5UQVhfRVJSIik7CisgICAgICAg
IGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLmNyZWF0ZU9iamVjdFN0b3JlKCduYW1lJykuY3Jl
YXRlSW5kZXgoJ25hbWUnLCAiICsga2V5UGF0aCArICIpIiwgIkRPTUV4Y2VwdGlvbi5TWU5UQVhf
RVJSIik7CiAgICAgICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CiAgICAgfSk7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>