<?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>214820</bug_id>
          
          <creation_ts>2020-07-27 03:02:18 -0700</creation_ts>
          <short_desc>IndexedDB binding utilities miss exception checks</short_desc>
          <delta_ts>2020-07-28 09:15:59 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>graouts</cc>
    
    <cc>jsbell</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1675191</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-27 03:02:18 -0700</bug_when>
    <thetext>IndexedDB binding utilities miss exception checks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675192</commentid>
    <comment_count>1</comment_count>
      <attachid>405265</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-27 03:03:51 -0700</bug_when>
    <thetext>Created attachment 405265
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675193</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-27 03:03:53 -0700</bug_when>
    <thetext>&lt;rdar://problem/66152374&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675233</commentid>
    <comment_count>3</comment_count>
      <attachid>405265</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-27 07:09:42 -0700</bug_when>
    <thetext>Comment on attachment 405265
Patch

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

Can you check if the api-gtk bot failure is real?o

&gt; Source/WebCore/bindings/js/IDBBindingUtilities.cpp:64
&gt; +    auto scope = DECLARE_CATCH_SCOPE(vm);

Why is this a CatchScope?  Is it because this is the outermost scope that should handle exceptions?

&gt; Source/WebCore/bindings/js/IDBBindingUtilities.cpp:195
&gt; +    auto scope = DECLARE_CATCH_SCOPE(vm);

Ditto: what’s the rationale here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675267</commentid>
    <comment_count>4</comment_count>
      <attachid>405265</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-27 09:22:53 -0700</bug_when>
    <thetext>Comment on attachment 405265
Patch

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

&gt;&gt; Source/WebCore/bindings/js/IDBBindingUtilities.cpp:64
&gt;&gt; +    auto scope = DECLARE_CATCH_SCOPE(vm);
&gt; 
&gt; Why is this a CatchScope?  Is it because this is the outermost scope that should handle exceptions?

After trying out your patch and investigating the issue, it looks like the expected behavior is to propagate the exception to the caller.  That would mean that we should be using a ThrowScope here instead of a CatchScope.  So, I tried that and found that IDBKeyRange::bound() needs some changes in order to placate the exception check validator.  I understand that we may not want to add explicit exception checks there because it is redundant to the isValid() checks.  We can address that using an exception.  After I applied the following patch (in addition to yours), the 2 DECLARE_CATCH_SCOPEs can now be DECLARE_THROW_SCOPEs.  Can you take another look?  Thanks.

Index: Source/WebCore/Modules/indexeddb/IDBKeyRange.cpp
===================================================================
--- Source/WebCore/Modules/indexeddb/IDBKeyRange.cpp	(revision 264901)
+++ Source/WebCore/Modules/indexeddb/IDBKeyRange.cpp	(working copy)
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2010 Google Inc. All rights reserved.
+ * Copyright (C) 2020 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -32,7 +33,9 @@
 #include &quot;IDBKey.h&quot;
 #include &quot;IDBKeyData.h&quot;
 #include &quot;ScriptExecutionContext.h&quot;
+#include &lt;JavaScriptCore/JSGlobalObject.h&gt;
 #include &lt;JavaScriptCore/JSCJSValue.h&gt;
+#include &lt;JavaScriptCore/ThrowScope.h&gt;
 #include &lt;wtf/IsoMallocInlines.h&gt;
 
 namespace WebCore {
@@ -94,10 +97,14 @@
 
 ExceptionOr&lt;Ref&lt;IDBKeyRange&gt;&gt; IDBKeyRange::bound(JSGlobalObject&amp; state, JSValue lowerValue, JSValue upperValue, bool lowerOpen, bool upperOpen)
 {
+    VM&amp; vm = state.vm();
+    auto scope = DECLARE_THROW_SCOPE(vm);
     auto lower = scriptValueToIDBKey(state, lowerValue);
+    EXCEPTION_ASSERT_UNUSED(scope, !!scope.exception() == !lower-&gt;isValid());
     if (!lower-&gt;isValid())
         return Exception { DataError };
     auto upper = scriptValueToIDBKey(state, upperValue);
+    EXCEPTION_ASSERT(!!scope.exception() == !lower-&gt;isValid());
     if (!upper-&gt;isValid())
         return Exception { DataError };
     if (upper-&gt;isLessThan(lower.get()))</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675444</commentid>
    <comment_count>5</comment_count>
      <attachid>405265</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-27 16:43:43 -0700</bug_when>
    <thetext>Comment on attachment 405265
Patch

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

&gt;&gt;&gt; Source/WebCore/bindings/js/IDBBindingUtilities.cpp:64
&gt;&gt;&gt; +    auto scope = DECLARE_CATCH_SCOPE(vm);
&gt;&gt; 
&gt;&gt; Why is this a CatchScope?  Is it because this is the outermost scope that should handle exceptions?
&gt; 
&gt; After trying out your patch and investigating the issue, it looks like the expected behavior is to propagate the exception to the caller.  That would mean that we should be using a ThrowScope here instead of a CatchScope.  So, I tried that and found that IDBKeyRange::bound() needs some changes in order to placate the exception check validator.  I understand that we may not want to add explicit exception checks there because it is redundant to the isValid() checks.  We can address that using an exception.  After I applied the following patch (in addition to yours), the 2 DECLARE_CATCH_SCOPEs can now be DECLARE_THROW_SCOPEs.  Can you take another look?  Thanks.
&gt; 
&gt; Index: Source/WebCore/Modules/indexeddb/IDBKeyRange.cpp
&gt; ===================================================================
&gt; --- Source/WebCore/Modules/indexeddb/IDBKeyRange.cpp	(revision 264901)
&gt; +++ Source/WebCore/Modules/indexeddb/IDBKeyRange.cpp	(working copy)
&gt; @@ -1,5 +1,6 @@
&gt;  /*
&gt;   * Copyright (C) 2010 Google Inc. All rights reserved.
&gt; + * Copyright (C) 2020 Apple Inc. All rights reserved.
&gt;   *
&gt;   * Redistribution and use in source and binary forms, with or without
&gt;   * modification, are permitted provided that the following conditions
&gt; @@ -32,7 +33,9 @@
&gt;  #include &quot;IDBKey.h&quot;
&gt;  #include &quot;IDBKeyData.h&quot;
&gt;  #include &quot;ScriptExecutionContext.h&quot;
&gt; +#include &lt;JavaScriptCore/JSGlobalObject.h&gt;
&gt;  #include &lt;JavaScriptCore/JSCJSValue.h&gt;
&gt; +#include &lt;JavaScriptCore/ThrowScope.h&gt;
&gt;  #include &lt;wtf/IsoMallocInlines.h&gt;
&gt;  
&gt;  namespace WebCore {
&gt; @@ -94,10 +97,14 @@
&gt;  
&gt;  ExceptionOr&lt;Ref&lt;IDBKeyRange&gt;&gt; IDBKeyRange::bound(JSGlobalObject&amp; state, JSValue lowerValue, JSValue upperValue, bool lowerOpen, bool upperOpen)
&gt;  {
&gt; +    VM&amp; vm = state.vm();
&gt; +    auto scope = DECLARE_THROW_SCOPE(vm);
&gt;      auto lower = scriptValueToIDBKey(state, lowerValue);
&gt; +    EXCEPTION_ASSERT_UNUSED(scope, !!scope.exception() == !lower-&gt;isValid());
&gt;      if (!lower-&gt;isValid())
&gt;          return Exception { DataError };
&gt;      auto upper = scriptValueToIDBKey(state, upperValue);
&gt; +    EXCEPTION_ASSERT(!!scope.exception() == !lower-&gt;isValid());
&gt;      if (!upper-&gt;isValid())
&gt;          return Exception { DataError };
&gt;      if (upper-&gt;isLessThan(lower.get()))

OK, I&apos;ve revised and updated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675445</commentid>
    <comment_count>6</comment_count>
      <attachid>405326</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-27 16:44:42 -0700</bug_when>
    <thetext>Created attachment 405326
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675453</commentid>
    <comment_count>7</comment_count>
      <attachid>405328</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-27 16:48:48 -0700</bug_when>
    <thetext>Created attachment 405328
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675464</commentid>
    <comment_count>8</comment_count>
      <attachid>405328</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-27 16:58:03 -0700</bug_when>
    <thetext>Comment on attachment 405328
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675494</commentid>
    <comment_count>9</comment_count>
      <attachid>405328</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-27 18:57:18 -0700</bug_when>
    <thetext>Comment on attachment 405328
Patch

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

&gt; Source/WebCore/Modules/indexeddb/IDBKeyRange.cpp:78
&gt; +    EXCEPTION_ASSERT_UNUSED(scope, !!scope.exception() == !key-&gt;isValid());

These assertions should be `!scope.exception() || !key-&gt;isValid()` since key can be invalid even if JS exception is not thrown.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675496</commentid>
    <comment_count>10</comment_count>
      <attachid>405336</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-27 19:01:25 -0700</bug_when>
    <thetext>Created attachment 405336
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675502</commentid>
    <comment_count>11</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-27 20:13:51 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #9)
&gt; Comment on attachment 405328 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=405328&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/IDBKeyRange.cpp:78
&gt; &gt; +    EXCEPTION_ASSERT_UNUSED(scope, !!scope.exception() == !key-&gt;isValid());
&gt; 
&gt; These assertions should be `!scope.exception() || !key-&gt;isValid()` since key
&gt; can be invalid even if JS exception is not thrown.

Good point!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675632</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-28 09:15:57 -0700</bug_when>
    <thetext>Committed r264988: &lt;https://trac.webkit.org/changeset/264988&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 405336.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405265</attachid>
            <date>2020-07-27 03:03:51 -0700</date>
            <delta_ts>2020-07-27 16:44:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214820-20200727030350.patch</filename>
            <type>text/plain</type>
            <size>31432</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0OTEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
MjQwNjNiOTYzZjk3NjQxNWI0ZTRjMjkxNjcwMWJkZmUzNzFjOThjLi5mMjIyNmU4MzYzNjgwZWQw
NWMzNGViY2Y3YTU1ZWE1MmZhYWNmMTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAyMC0wNy0yNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIEluZGV4ZWREQiBiaW5kaW5nIHV0aWxpdGllcyBtaXNzIGV4Y2VwdGlvbiBj
aGVja3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
NDgyMAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjYxNTIzNzQ+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAganNTdHJpbmdXaXRoQ2FjaGUgZG9lcyBu
b3QgbmVlZCB0byB0YWtlIEpTR2xvYmFsT2JqZWN0Ki4KKworICAgICAgICAqIHJ1bnRpbWUvSlNT
dHJpbmcuaDoKKyAgICAgICAgKEpTQzo6anNTdHJpbmdXaXRoQ2FjaGUpOgorCiAyMDIwLTA3LTI0
ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBwbHVnaW5FbGVtZW50
Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90KCkgc2hvdWxkIHN1cHBvcnQgVk1JbnF1aXJ5IHJlcXVl
c3RzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IGFhZjQyNTAyNTk2OTcxN2QzNDlhN2M2OTYyNzkzMDZjNWUzYjJk
ODEuLjQyMGU1NzBiNmQzMzQ2ZWI2NDQ5NmZmYmFhYTVhMjdkNDEyMzc5NDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw1NCBAQAorMjAyMC0wNy0yNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgorCisgICAgICAgIEluZGV4ZWREQiBiaW5kaW5nIHV0aWxpdGllcyBtaXNzIGV4Y2Vw
dGlvbiBjaGVja3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxNDgyMAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjYxNTIzNzQ+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDoganMvZG9tL2luZGV4
ZWQtZGItb3BlcmF0aW9ucy1leGNlcHRpb24tY2hlY2tzLmh0bWwKKworICAgICAgICBUaGlzIHBh
dGNoIGFwcHJvcHJpYXRlbHkgaW5zZXJ0cyBleGNlcHRpb24gY2hlY2tpbmcgY29kZSBpbnRvIElu
ZGV4ZWREQiBiaW5kaW5nIHV0aWxpdGllcy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0lEQkJp
bmRpbmdVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OnNldCk6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUlEQktleUZyb21WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjppbnRlcm5hbENyZWF0
ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6ZW5z
dXJlTnRoVmFsdWVPbktleVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6aW5qZWN0SURCS2V5SW50
b1NjcmlwdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Om1heWJlQ3JlYXRlSURCS2V5RnJvbVNj
cmlwdFZhbHVlQW5kS2V5UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpjYW5JbmplY3RJREJLZXlJ
bnRvU2NyaXB0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6c2NyaXB0VmFsdWVUb0lEQktleSk6
CisgICAgICAgICogYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyOjpsb29rdXBOYW1lc3BhY2VVUkkpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRE9NQ29udmVydERhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
dmFsdWVUb0RhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQ29udmVydERhdGUuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnZlcnRlcjxJRExEYXRlPjo6Y29udmVydCk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01Db252ZXJ0U3RyaW5ncy5oOgorICAgICAgICAoV2ViQ29yZTo6
SlNDb252ZXJ0ZXI8SURMRE9NU3RyaW5nPjo6Y29udmVydCk6CisgICAgICAgIChXZWJDb3JlOjpK
U0NvbnZlcnRlcjxJRExCeXRlU3RyaW5nPjo6Y29udmVydCk6CisgICAgICAgIChXZWJDb3JlOjpK
U0NvbnZlcnRlcjxJRExVU1ZTdHJpbmc+Ojpjb252ZXJ0KToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTUNvbnZlcnRXZWJHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VG9KU1Zh
bHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTTGF6eUV2ZW50TGlzdGVuZXI6OmluaXRpYWxpemVKU0Z1bmN0aW9u
IGNvbnN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToK
KyAgICAgICAgKEdlbmVyYXRlRW51bWVyYXRpb25JbXBsZW1lbnRhdGlvbkNvbnRlbnQpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0ludGVyZmFjZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RW51bWVyYXRpb25Ub0pTKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNvbnZlcnRFbnVtZXJhdGlvblRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRGljdGlvbmFyeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpjb252ZXJ0RW51bWVyYXRpb25Ub0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U3RhbmRhbG9uZUVudW1lcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNvbnZlcnRFbnVtZXJhdGlvblRvSlMpOgorICAgICAgICAqIGJyaWRnZS9jL2NfdXRpbGl0eS5j
cHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpjb252ZXJ0TlBWYXJpYW50VG9WYWx1ZSk6CisK
IDIwMjAtMDctMjUgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgU2Nyb2xsIFNuYXAgYnJva2VuIHdoZW4gdXNpbmcgUlRMIGxheW91dApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKaW5kZXggNmQ2YTkxMGMxNDEwODBkOGM4OGM1
YTdjOWUxNjVkMzU3NDNkMDAxMi4uYjc1N2YwMDEwOTRmMDIwNzdiMjZiOGQ2ZDEwMmRmZWZmZWUx
YTUxZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCkBAIC05MTcs
OSArOTE3LDggQEAgaW5saW5lIEpTU3RyaW5nKiBqc093bmVkU3RyaW5nKFZNJiB2bSwgY29uc3Qg
U3RyaW5nJiBzKQogICAgIHJldHVybiBKU1N0cmluZzo6Y3JlYXRlSGFzT3RoZXJPd25lcih2bSwg
KnMuaW1wbCgpKTsKIH0KIAotQUxXQVlTX0lOTElORSBKU1N0cmluZyoganNTdHJpbmdXaXRoQ2Fj
aGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiBzKQorQUxXQVlT
X0lOTElORSBKU1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoVk0mIHZtLCBjb25zdCBTdHJpbmcm
IHMpCiB7Ci0gICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICBTdHJpbmdJbXBs
KiBzdHJpbmdJbXBsID0gcy5pbXBsKCk7CiAgICAgaWYgKCFzdHJpbmdJbXBsIHx8ICFzdHJpbmdJ
bXBsLT5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIGpzRW1wdHlTdHJpbmcodm0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAppbmRl
eCBiOGE4ZmE4NzRmYzNjMGY1NDNhNGI1MTUzYmQxMGYwZDZlMTU0NGU4Li5iNWU5YzM5NDI5OWU4
YzFkMmEzYjRiY2E0MjlmNWNjZmEwMTU0NjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcApAQCAtNjAsNiArNjAsOSBAQCB1c2lu
ZyBuYW1lc3BhY2UgSlNDOwogCiBzdGF0aWMgYm9vbCBnZXQoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgb2JqZWN0LCBjb25zdCBTdHJpbmcmIGtleVBhdGhFbGVt
ZW50LCBKU1ZhbHVlJiByZXN1bHQpCiB7CisgICAgVk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVj
dC52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKKwogICAg
IGlmIChvYmplY3QuaXNTdHJpbmcoKSAmJiBrZXlQYXRoRWxlbWVudCA9PSAibGVuZ3RoIikgewog
ICAgICAgICByZXN1bHQgPSBqc051bWJlcihhc1N0cmluZyhvYmplY3QpLT5sZW5ndGgoKSk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwpAQCAtNjcsMTEgKzcwLDExIEBAIHN0YXRpYyBib29sIGdldChK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSBvYmplY3QsIGNvbnN0
IFN0cmluCiAgICAgaWYgKCFvYmplY3QuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgVk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC52bSgpOwogICAgIGF1dG8qIG9i
aiA9IGFzT2JqZWN0KG9iamVjdCk7CiAgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwga2V5UGF0aEVsZW1lbnQpOwogICAgIGlmIChvYmotPmluaGVy
aXRzPEpTQXJyYXk+KHZtKSAmJiBrZXlQYXRoRWxlbWVudCA9PSAibGVuZ3RoIikgewogICAgICAg
ICByZXN1bHQgPSBvYmotPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgaWRlbnRpZmllcik7Cisg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogICAgIGlmIChvYmotPmluaGVyaXRzPEpTQmxvYj4odm0pICYmIChrZXlQ
YXRoRWxlbWVudCA9PSAic2l6ZSIgfHwga2V5UGF0aEVsZW1lbnQgPT0gInR5cGUiKSkgewpAQCAt
MTAwLDEyICsxMDMsMTUgQEAgc3RhdGljIGJvb2wgZ2V0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG9iamVjdCwgY29uc3QgU3RyaW4KICAgICB9CiAKICAgICBQ
cm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsKLSAgICBpZiAoIW9iai0+Z2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyLCBkZXNjcmlwdG9y
KSkKKyAgICBib29sIGZvdW5kID0gb2JqLT5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoJmxleGlj
YWxHbG9iYWxPYmplY3QsIGlkZW50aWZpZXIsIGRlc2NyaXB0b3IpOworICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKyAgICBpZiAoIWZvdW5kKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgaWYgKCFkZXNjcmlwdG9yLmVudW1lcmFibGUoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgcmVzdWx0ID0gb2JqLT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIGlk
ZW50aWZpZXIpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTE1LDExICsxMjEsMTAgQEAgc3RhdGljIGJvb2wgY2FuU2V0
KEpTVmFsdWUgb2JqZWN0LCBjb25zdCBTdHJpbmcmIGtleVBhdGhFbGVtZW50KQogICAgIHJldHVy
biBvYmplY3QuaXNPYmplY3QoKTsKIH0KIAotc3RhdGljIGJvb2wgc2V0KEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlJiBvYmplY3QsIGNvbnN0IFN0cmluZyYga2V5
UGF0aEVsZW1lbnQsIEpTVmFsdWUganNWYWx1ZSkKK3N0YXRpYyBib29sIHNldChWTSYgdm0sIEpT
VmFsdWUmIG9iamVjdCwgY29uc3QgU3RyaW5nJiBrZXlQYXRoRWxlbWVudCwgSlNWYWx1ZSBqc1Zh
bHVlKQogewogICAgIGlmICghY2FuU2V0KG9iamVjdCwga2V5UGF0aEVsZW1lbnQpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgVk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC52bSgpOwog
ICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIGtl
eVBhdGhFbGVtZW50KTsKICAgICBhc09iamVjdChvYmplY3QpLT5wdXREaXJlY3Qodm0sIGlkZW50
aWZpZXIsIGpzVmFsdWUpOwogICAgIHJldHVybiB0cnVlOwpAQCAtMTY0LDExICsxNjksMTEgQEAg
SlNWYWx1ZSB0b0pTKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0dsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0LAogICAgICAgICByZXR1cm4gSlNBcnJheUJ1ZmZlcjo6Y3Jl
YXRlKGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSwgc3RydWN0dXJlLCBXVEZNb3ZlKGFycmF5QnVm
ZmVyKSk7CiAgICAgfQogICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpTdHJpbmc6Ci0gICAg
ICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZSgmbGV4aWNhbEdsb2JhbE9iamVjdCwga2V5LT5z
dHJpbmcoKSk7CisgICAgICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZSh2bSwga2V5LT5zdHJp
bmcoKSk7CiAgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6OkRhdGU6CiAgICAgICAgIC8vIEZJ
WE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSBiZSB0b0pTPElETERhdGU+KC4uLikgYXMgcGVyOgog
ICAgICAgICAvLyBodHRwOi8vdzNjLmdpdGh1Yi5pby9JbmRleGVkREIvI3JlcXVlc3QtY29udmVy
dC1hLWtleS10by1hLXZhbHVlCi0gICAgICAgIHJldHVybiB0b0pTPElETE51bGxhYmxlPElETERh
dGU+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBrZXktPmRhdGUoKSk7CisgICAgICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgdG9KUzxJRExOdWxsYWJsZTxJRExEYXRlPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwga2V5LT5kYXRlKCkpKTsKICAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6TnVt
YmVyOgogICAgICAgICByZXR1cm4ganNOdW1iZXIoa2V5LT5udW1iZXIoKSk7CiAgICAgY2FzZSBJ
bmRleGVkREI6OktleVR5cGU6Ok1pbjoKQEAgLTE4NywxNiArMTkyLDE5IEBAIHN0YXRpYyBjb25z
dCBzaXplX3QgbWF4aW11bURlcHRoID0gMjAwMDsKIHN0YXRpYyBSZWZQdHI8SURCS2V5PiBjcmVh
dGVJREJLZXlGcm9tVmFsdWUoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
VmFsdWUgdmFsdWUsIFZlY3RvcjxKU0FycmF5Kj4mIHN0YWNrKQogewogICAgIFZNJiB2bSA9IGxl
eGljYWxHbG9iYWxPYmplY3Qudm0oKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogCi0g
ICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkgJiYgIXN0ZDo6aXNuYW4odmFsdWUudG9OdW1iZXIoJmxl
eGljYWxHbG9iYWxPYmplY3QpKSkKLSAgICAgICAgcmV0dXJuIElEQktleTo6Y3JlYXRlTnVtYmVy
KHZhbHVlLnRvTnVtYmVyKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CisgICAgaWYgKHZhbHVlLmlz
TnVtYmVyKCkgJiYgIXN0ZDo6aXNuYW4odmFsdWUuYXNOdW1iZXIoKSkpCisgICAgICAgIHJldHVy
biBJREJLZXk6OmNyZWF0ZU51bWJlcih2YWx1ZS5hc051bWJlcigpKTsKIAotICAgIGlmICh2YWx1
ZS5pc1N0cmluZygpKQotICAgICAgICByZXR1cm4gSURCS2V5OjpjcmVhdGVTdHJpbmcoYXNTdHJp
bmcodmFsdWUpLT52YWx1ZSgmbGV4aWNhbEdsb2JhbE9iamVjdCkpOworICAgIGlmICh2YWx1ZS5p
c1N0cmluZygpKSB7CisgICAgICAgIGF1dG8gc3RyaW5nID0gYXNTdHJpbmcodmFsdWUpLT52YWx1
ZSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CisgICAgICAgIHJldHVybiBJREJLZXk6OmNyZWF0ZVN0cmluZyhXVEZNb3ZlKHN0
cmluZykpOworICAgIH0KIAogICAgIGlmICh2YWx1ZS5pbmhlcml0czxEYXRlSW5zdGFuY2U+KHZt
KSkgewotICAgICAgICBhdXRvIGRhdGVWYWx1ZSA9IHZhbHVlVG9EYXRlKGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKKyAgICAgICAgYXV0byBkYXRlVmFsdWUgPSB2YWx1ZVRvRGF0ZSh2bSwg
dmFsdWUpOwogICAgICAgICBpZiAoIXN0ZDo6aXNuYW4oZGF0ZVZhbHVlKSkKICAgICAgICAgICAg
IHJldHVybiBJREJLZXk6OmNyZWF0ZURhdGUoZGF0ZVZhbHVlKTsKICAgICB9CkBAIC0yMTksNiAr
MjI3LDcgQEAgc3RhdGljIFJlZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktleUZyb21WYWx1ZShKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwKICAgICAgICAgICAgICAgICBKU1ZhbHVl
IGl0ZW0gPSBhcnJheS0+Z2V0SW5kZXgoJmxleGljYWxHbG9iYWxPYmplY3QsIGkpOwogICAgICAg
ICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgICAgICAgICAg
ICAgUmVmUHRyPElEQktleT4gc3Via2V5ID0gY3JlYXRlSURCS2V5RnJvbVZhbHVlKGxleGljYWxH
bG9iYWxPYmplY3QsIGl0ZW0sIHN0YWNrKTsKKyAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAgICAgICAgICAgIGlmICghc3Via2V5KQogICAgICAg
ICAgICAgICAgICAgICBzdWJrZXlzLmFwcGVuZChJREJLZXk6OmNyZWF0ZUludmFsaWQoKSk7CiAg
ICAgICAgICAgICAgICAgZWxzZQpAQCAtMjU5LDcgKzI2OCw3IEBAIHN0YXRpYyBKU1ZhbHVlIGdl
dE50aFZhbHVlT25LZXlQYXRoKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U1ZhbHVlCiAgICAgcmV0dXJuIGN1cnJlbnRWYWx1ZTsKIH0KIAotc3RhdGljIFJlZlB0cjxJREJL
ZXk+IGludGVybmFsQ3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgY29uc3QgSlNWYWx1ZSYgdmFsdWUsIGNvbnN0
IFN0cmluZyYga2V5UGF0aCkKK3N0YXRpYyBSZWZQdHI8SURCS2V5PiBpbnRlcm5hbENyZWF0ZUlE
QktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTVmFsdWUgdmFsdWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKIHsKICAgICBW
ZWN0b3I8U3RyaW5nPiBrZXlQYXRoRWxlbWVudHM7CiAgICAgSURCS2V5UGF0aFBhcnNlRXJyb3Ig
ZXJyb3I7CkBAIC0yODMsNyArMjkyLDcgQEAgc3RhdGljIEpTVmFsdWUgZW5zdXJlTnRoVmFsdWVP
bktleVBhdGgoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmEKICAgICAg
ICAgY29uc3QgU3RyaW5nJiBrZXlQYXRoRWxlbWVudCA9IGtleVBhdGhFbGVtZW50c1tpXTsKICAg
ICAgICAgaWYgKCFnZXQobGV4aWNhbEdsb2JhbE9iamVjdCwgcGFyZW50VmFsdWUsIGtleVBhdGhF
bGVtZW50LCBjdXJyZW50VmFsdWUpKSB7CiAgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0g
Y29uc3RydWN0RW1wdHlPYmplY3QoJmxleGljYWxHbG9iYWxPYmplY3QpOwotICAgICAgICAgICAg
aWYgKCFzZXQobGV4aWNhbEdsb2JhbE9iamVjdCwgcGFyZW50VmFsdWUsIGtleVBhdGhFbGVtZW50
LCBKU1ZhbHVlKG9iamVjdCkpKQorICAgICAgICAgICAgaWYgKCFzZXQobGV4aWNhbEdsb2JhbE9i
amVjdC52bSgpLCBwYXJlbnRWYWx1ZSwga2V5UGF0aEVsZW1lbnQsIEpTVmFsdWUob2JqZWN0KSkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgICAgICBjdXJy
ZW50VmFsdWUgPSBKU1ZhbHVlKG9iamVjdCk7CiAgICAgICAgIH0KQEAgLTMzNSwxNCArMzQ0LDE0
IEBAIGJvb2wgaW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBjb25zdCBJREJLCiAgICAgSlNWYWx1ZSBleGlzdGluZ0tleTsKICAg
ICBpZiAoZ2V0KGxleGljYWxHbG9iYWxPYmplY3QsIHBhcmVudCwga2V5UGF0aEVsZW1lbnRzLmxh
c3QoKSwgZXhpc3RpbmdLZXkpICYmICFrZXktPmNvbXBhcmUoY3JlYXRlSURCS2V5RnJvbVZhbHVl
KGxleGljYWxHbG9iYWxPYmplY3QsIGV4aXN0aW5nS2V5KSkpCiAgICAgICAgIHJldHVybiB0cnVl
OwotICAgIGlmICghc2V0KGxleGljYWxHbG9iYWxPYmplY3QsIHBhcmVudCwga2V5UGF0aEVsZW1l
bnRzLmxhc3QoKSwgdG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBrZXkuZ2V0KCkpKSkKKyAgICBpZiAoIXNldChsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCksIHBh
cmVudCwga2V5UGF0aEVsZW1lbnRzLmxhc3QoKSwgdG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBrZXkuZ2V0KCkpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotUmVmUHRyPElEQktleT4gbWF5YmVDcmVhdGVJREJL
ZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBjb25zdCBKU1ZhbHVlJiB2YWx1ZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCkK
K1JlZlB0cjxJREJLZXk+IG1heWJlQ3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0
aChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgY29u
c3QgSURCS2V5UGF0aCYga2V5UGF0aCkKIHsKICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxWZWN0b3I8U3RyaW5nPj4oa2V5UGF0aCkpIHsKICAgICAgICAgYXV0byYgYXJyYXkgPSBXVEY6
OmdldDxWZWN0b3I8U3RyaW5nPj4oa2V5UGF0aCk7CkBAIC0zNjAsNyArMzY5LDcgQEAgUmVmUHRy
PElEQktleT4gbWF5YmVDcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2EKICAgICByZXR1cm4gaW50ZXJuYWxDcmVhdGVJREJLZXlGcm9tU2Ny
aXB0VmFsdWVBbmRLZXlQYXRoKGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlLCBXVEY6OmdldDxT
dHJpbmc+KGtleVBhdGgpKTsKIH0KIAotYm9vbCBjYW5JbmplY3RJREJLZXlJbnRvU2NyaXB0VmFs
dWUoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IEpTVmFsdWUmIHNj
cmlwdFZhbHVlLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKQorYm9vbCBjYW5JbmplY3RJREJL
ZXlJbnRvU2NyaXB0VmFsdWUoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
VmFsdWUgc2NyaXB0VmFsdWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgpCiB7CiAgICAgTE9H
KFN0b3JhZ2VBUEksICJjYW5JbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUiKTsKIApAQCAtNDA5
LDcgKzQxOCw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnCiAgICAgcmV0dXJuIGRlc2VyaWFs
aXplSURCVmFsdWVUb0pTVmFsdWUoKmxleGljYWxHbG9iYWxPYmplY3QsICpnbG9iYWxPYmplY3Qs
IHZhbHVlKTsKIH0KIAotUmVmPElEQktleT4gc2NyaXB0VmFsdWVUb0lEQktleShKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgY29uc3QgSlNWYWx1ZSYgc2NyaXB0VmFsdWUpCitS
ZWY8SURCS2V5PiBzY3JpcHRWYWx1ZVRvSURCS2V5KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHNjcmlwdFZhbHVlKQogewogICAgIHJldHVybiBjcmVhdGVJREJL
ZXlGcm9tVmFsdWUobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NyaXB0VmFsdWUpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oCmluZGV4IDhh
Yjc0Zjg4NzkwZjZkZGQyMTZmMDVhNTgwYzNiMWY0MjNmOGMxNjIuLmQ1ZWRjYWI2Mjg1M2IyZGVl
NTA1ODE3MWM0NjliODZjNjA2YWQwYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmgKQEAgLTQ4LDE1ICs0OCwxNSBAQCBjbGFzcyBJREJW
YWx1ZTsKIGNsYXNzIEluZGV4S2V5OwogY2xhc3MgSlNET01HbG9iYWxPYmplY3Q7CiAKLVJlZlB0
cjxJREJLZXk+IG1heWJlQ3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChKU0M6
OkpTR2xvYmFsT2JqZWN0JiwgY29uc3QgSlNDOjpKU1ZhbHVlJiwgY29uc3QgSURCS2V5UGF0aCYp
OwotYm9vbCBjYW5JbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVj
dCYsIGNvbnN0IEpTQzo6SlNWYWx1ZSYsIGNvbnN0IElEQktleVBhdGgmKTsKK1JlZlB0cjxJREJL
ZXk+IG1heWJlQ3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChKU0M6OkpTR2xv
YmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBJREJLZXlQYXRoJik7Citib29sIGNhbklu
amVjdElEQktleUludG9TY3JpcHRWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1Zh
bHVlLCBjb25zdCBJREJLZXlQYXRoJik7CiBib29sIGluamVjdElEQktleUludG9TY3JpcHRWYWx1
ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiwgY29uc3QgSURCS2V5RGF0YSYsIEpTQzo6SlNWYWx1ZSwg
Y29uc3QgSURCS2V5UGF0aCYpOwogCiB2b2lkIGdlbmVyYXRlSW5kZXhLZXlGb3JWYWx1ZShKU0M6
OkpTR2xvYmFsT2JqZWN0JiwgY29uc3QgSURCSW5kZXhJbmZvJiwgSlNDOjpKU1ZhbHVlLCBJbmRl
eEtleSYgb3V0S2V5LCBjb25zdCBPcHRpb25hbDxJREJLZXlQYXRoPiYsIGNvbnN0IElEQktleURh
dGEmKTsKIAogSW5kZXhJRFRvSW5kZXhLZXlNYXAgZ2VuZXJhdGVJbmRleEtleU1hcEZvclZhbHVl
KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mLCBjb25zdCBJ
REJLZXlEYXRhJiwgY29uc3QgSURCVmFsdWUmKTsKIAotUmVmPElEQktleT4gc2NyaXB0VmFsdWVU
b0lEQktleShKU0M6OkpTR2xvYmFsT2JqZWN0JiwgY29uc3QgSlNDOjpKU1ZhbHVlJik7CitSZWY8
SURCS2V5PiBzY3JpcHRWYWx1ZVRvSURCS2V5KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpT
VmFsdWUpOwogCiBKU0M6OkpTVmFsdWUgZGVzZXJpYWxpemVJREJWYWx1ZVRvSlNWYWx1ZShKU0M6
OkpTR2xvYmFsT2JqZWN0JiwgY29uc3QgSURCVmFsdWUmLCBWZWN0b3I8c3RkOjpwYWlyPFN0cmlu
ZywgU3RyaW5nPj4mKTsKIEpTQzo6SlNWYWx1ZSBkZXNlcmlhbGl6ZUlEQlZhbHVlVG9KU1ZhbHVl
KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBjb25zdCBJREJWYWx1ZSYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwCmluZGV4
IGRmNTYyZDA1OGJmMTczMGFhNTUwZWZjYzk4N2I1ZjU0MzIzODM5OTMuLjg2NjkzZTY5NzA3MDYw
NWM0OGNkMjY1NWFmZmEwMTJmNDU0ZTA0NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAKQEAgLTg4LDcgKzg4LDcg
QEAgU3RyaW5nIEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyOjpsb29rdXBOYW1lc3BhY2VVUkkoY29u
c3QgU3RyaW5nJiBwcmVmaXgpCiAgICAgUmVmPEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyPiBwcm90
ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7Ci0gICAg
YXJncy5hcHBlbmQoanNTdHJpbmdXaXRoQ2FjaGUobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJlZml4
KSk7CisgICAgYXJncy5hcHBlbmQoanNTdHJpbmdXaXRoQ2FjaGUodm0sIHByZWZpeCkpOwogICAg
IEFTU0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwogCiAgICAgTmFrZWRQdHI8SlNDOjpFeGNl
cHRpb24+IGV4Y2VwdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQ29udmVydERhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01D
b252ZXJ0RGF0ZS5jcHAKaW5kZXggNjQwZTc3ZTMzNjBmZjdlNjlhM2I3MDljNmNkYmM4MDc1MWIw
ZTk5My4uOGFiZmFhY2I5YWQ4ZmMxNDJhNGE0OTlkZmYxY2IxNjlmYWE5Mjk3ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0RGF0ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0RGF0ZS5jcHAKQEAgLTM2LDEz
ICszNiwxMyBAQCBKU1ZhbHVlIGpzRGF0ZShKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgZG91YmxlIHZhbHVlKQogICAgIHJldHVybiBEYXRlSW5zdGFuY2U6OmNyZWF0ZShsZXhp
Y2FsR2xvYmFsT2JqZWN0LnZtKCksIGxleGljYWxHbG9iYWxPYmplY3QuZGF0ZVN0cnVjdHVyZSgp
LCB2YWx1ZSk7CiB9CiAKLWRvdWJsZSB2YWx1ZVRvRGF0ZShKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK2RvdWJsZSB2YWx1ZVRvRGF0ZShWTSYgdm0s
IEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkpCiAgICAgICAgIHJl
dHVybiB2YWx1ZS5hc051bWJlcigpOwotICAgIGlmICghdmFsdWUuaW5oZXJpdHM8RGF0ZUluc3Rh
bmNlPihsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCkpKQorICAgIGlmICghdmFsdWUuaW5oZXJpdHM8
RGF0ZUluc3RhbmNlPih2bSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGRv
dWJsZT46OnF1aWV0X05hTigpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxEYXRlSW5zdGFuY2Uq
Pih2YWx1ZS50b09iamVjdCgmbGV4aWNhbEdsb2JhbE9iamVjdCkpLT5pbnRlcm5hbE51bWJlcigp
OworICAgIHJldHVybiBqc0Nhc3Q8RGF0ZUluc3RhbmNlKj4odmFsdWUpLT5pbnRlcm5hbE51bWJl
cigpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnREYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUNvbnZlcnREYXRlLmgKaW5kZXggNTI1YWU4NzAzNjUxNmQyYjVlZDdmZTgy
OTEwYWRiYWI2OTU3MTcwZi4uMDQ0MWFhMThhZjYzMjI2YjE2NWQ5N2EyNTBmODNmMzFmYjcwYzcx
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0RGF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydERhdGUuaApA
QCAtMzEsMTIgKzMxLDEyIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEpTQzo6SlNWYWx1ZSBq
c0RhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIGRvdWJsZSB2YWx1ZSk7Ci1kb3VibGUgdmFsdWVU
b0RhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSk7IC8vIE5hTiBpZiB0aGUg
dmFsdWUgY2FuJ3QgYmUgY29udmVydGVkIHRvIGEgZGF0ZS4KK2RvdWJsZSB2YWx1ZVRvRGF0ZShK
U0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsgLy8gTmFOIGlmIHRoZSB2YWx1ZSBjYW4ndCBiZSBjb252
ZXJ0ZWQgdG8gYSBkYXRlLgogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8SURMRGF0ZT4g
OiBEZWZhdWx0Q29udmVydGVyPElETERhdGU+IHsKICAgICBzdGF0aWMgZG91YmxlIGNvbnZlcnQo
SlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHZh
bHVlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHZhbHVlVG9EYXRlKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlVG9EYXRlKGxleGljYWxHbG9iYWxPYmpl
Y3Qudm0oKSwgdmFsdWUpOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFN0cmluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NQ29udmVydFN0cmluZ3MuaAppbmRleCBjYmFlZmJjZmYwZGIzZjMxMDhkNjYw
ZGM1NjM1YTVjNTg2NjFlMzdkLi40NjhjZDFlODVjYmRmNzFlOWQ3MTE2MDhmNjAxOTQwZjA4NjIz
YmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRT
dHJpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0U3Ry
aW5ncy5oCkBAIC02Myw3ICs2Myw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEpTQ29udmVydGVyPElE
TERPTVN0cmluZz4gewogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBjb252ZXJ0KEpTQzo6SlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAg
ICAgewotICAgICAgICByZXR1cm4gSlNDOjpqc1N0cmluZ1dpdGhDYWNoZSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdmFsdWUpOworICAgICAgICByZXR1cm4gSlNDOjpqc1N0cmluZ1dpdGhDYWNoZShK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgdmFsdWUpOwogICAgIH0KIAogICAgIHN0
YXRpYyBKU0M6OkpTVmFsdWUgY29udmVydChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBjb25zdCBVbmNhY2hlZFN0cmluZyYgdmFsdWUpCkBAIC05NSw3ICs5NSw3IEBA
IHRlbXBsYXRlPD4gc3RydWN0IEpTQ29udmVydGVyPElETEJ5dGVTdHJpbmc+IHsKIAogICAgIHN0
YXRpYyBKU0M6OkpTVmFsdWUgY29udmVydChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEpT
Qzo6anNTdHJpbmdXaXRoQ2FjaGUoJmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKKyAgICAg
ICAgcmV0dXJuIEpTQzo6anNTdHJpbmdXaXRoQ2FjaGUoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCksIHZhbHVlKTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGNvbnZl
cnQoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgY29uc3QgVW5jYWNo
ZWRTdHJpbmcmIHZhbHVlKQpAQCAtMTI2LDcgKzEyNiw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEpT
Q29udmVydGVyPElETFVTVlN0cmluZz4gewogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBjb252
ZXJ0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCiAgICAgewotICAgICAgICByZXR1cm4gSlNDOjpqc1N0cmluZ1dpdGhDYWNoZSgm
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOworICAgICAgICByZXR1cm4gSlNDOjpqc1N0cmlu
Z1dpdGhDYWNoZShKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgdmFsdWUpOwogICAg
IH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgY29udmVydChKU0M6OkpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdCBVbmNhY2hlZFN0cmluZyYgdmFsdWUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRXZWJHTC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRXZWJHTC5jcHAKaW5kZXgg
ZjVkODMzZTg2OGRhYmYyMTc3ZTAzZWM4NmM3ZWQ4NzUwZmQ4YTY4NS4uMGQ1ZDBlMWIxYjRmMDY1
MzY2YjI5N2U4MWY2ZGYyZDg2ZjM3ZDJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01Db252ZXJ0V2ViR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NQ29udmVydFdlYkdMLmNwcApAQCAtOTMsNyArOTMsNyBAQCBKU1ZhbHVlIGNv
bnZlcnRUb0pTVmFsdWUoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9N
R2xvYmFsT2JqZWN0JgogICAgICAgICAgICAgcmV0dXJuIGpzTnVtYmVyKHZhbHVlKTsKICAgICAg
ICAgfSwKICAgICAgICAgWyZdIChjb25zdCBTdHJpbmcmIHZhbHVlKSB7Ci0gICAgICAgICAgICBy
ZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoJmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKKyAg
ICAgICAgICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShsZXhpY2FsR2xvYmFsT2JqZWN0LnZt
KCksIHZhbHVlKTsKICAgICAgICAgfSwKICAgICAgICAgWyZdIChjb25zdCBWZWN0b3I8Ym9vbD4m
IHZhbHVlcykgewogICAgICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgbGlzdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAKaW5k
ZXggMTVjN2ExNjQwZmZjMjE0NThiODFmZWFjMTcwYTJjNjc2NzViMTNkZC4uOTg3Y2JhNGMzMWI3
MGU1OGI0MWUzYTY2YWNjZjBiYTJhNmY3NTg4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTE1MCw3ICsxNTAsNyBAQCBK
U09iamVjdCogSlNMYXp5RXZlbnRMaXN0ZW5lcjo6aW5pdGlhbGl6ZUpTRnVuY3Rpb24oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgZXhlYwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsK
ICAgICBhcmdzLmFwcGVuZChqc05vbnRyaXZpYWxTdHJpbmcodm0sIG1fZXZlbnRQYXJhbWV0ZXJO
YW1lKSk7Ci0gICAgYXJncy5hcHBlbmQoanNTdHJpbmdXaXRoQ2FjaGUobGV4aWNhbEdsb2JhbE9i
amVjdCwgbV9jb2RlKSk7CisgICAgYXJncy5hcHBlbmQoanNTdHJpbmdXaXRoQ2FjaGUodm0sIG1f
Y29kZSkpOwogICAgIEFTU0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwogCiAgICAgLy8gV2Ug
d2FudCBhbGwgZXJyb3JzIHRvIHJlZmVyIGJhY2sgdG8gdGhlIGxpbmUgb24gd2hpY2ggb3VyIGF0
dHJpYnV0ZSB3YXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0KaW5kZXggMzQ2MDA1MTZhNWZjMDlkMWQxNGVjMDFlNGU1NTkxMWYzMDFk
ZmFmZS4uZjg0NTA3MWRjYjQyNWVjMzkxOWRiMjhlNWEyZmM5MzBmOWQzNTZlYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAg
LTIxMjAsNyArMjEyMCw3IEBAIHN1YiBHZW5lcmF0ZUVudW1lcmF0aW9uSW1wbGVtZW50YXRpb25D
b250ZW50CiAgICAgIyBGSVhNRTogQ2hhbmdlIHRvIHRha2UgVk0mIGluc3RlYWQgb2YgSlNHbG9i
YWxPYmplY3QqLgogICAgICRyZXN1bHQgLj0gInRlbXBsYXRlPD4gSlNTdHJpbmcqIGNvbnZlcnRF
bnVtZXJhdGlvblRvSlMoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsICRjbGFz
c05hbWUgZW51bWVyYXRpb25WYWx1ZSlcbiI7CiAgICAgJHJlc3VsdCAuPSAie1xuIjsKLSAgICAk
cmVzdWx0IC49ICIgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhlbnVtZXJhdGlvblZhbHVlKSk7XG4iOwor
ICAgICRyZXN1bHQgLj0gIiAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUobGV4aWNhbEdsb2Jh
bE9iamVjdC52bSgpLCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhlbnVtZXJhdGlvblZhbHVl
KSk7XG4iOwogICAgICRyZXN1bHQgLj0gIn1cblxuIjsKIAogICAgICMgRklYTUU6IENoYW5nZSB0
byB0YWtlIFZNJiBpbnN0ZWFkIG9mIEpTR2xvYmFsT2JqZWN0Ji4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0ludGVyZmFj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2Fs
bGJhY2tJbnRlcmZhY2UuY3BwCmluZGV4IGMwN2M2ODI2YjU2NjU3OGJhYmQ5ZTBmOGY1YmM5YTdi
ZmEyZjRmYTQuLjYyODkzM2ZmZDYzMzgwMDg0YzJhNGYxNWY1MjY2OTdhMWVkYjE0ZTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxs
YmFja0ludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdENhbGxiYWNrSW50ZXJmYWNlLmNwcApAQCAtNjEsNyArNjEsNyBAQCBTdHJp
bmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoVGVzdENhbGxiYWNrSW50ZXJmYWNlOjpFbnVt
IGVudW1lcmF0aW9uVmFsdWUpCiAKIHRlbXBsYXRlPD4gSlNTdHJpbmcqIGNvbnZlcnRFbnVtZXJh
dGlvblRvSlMoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIFRlc3RDYWxsYmFj
a0ludGVyZmFjZTo6RW51bSBlbnVtZXJhdGlvblZhbHVlKQogewotICAgIHJldHVybiBqc1N0cmlu
Z1dpdGhDYWNoZSgmbGV4aWNhbEdsb2JhbE9iamVjdCwgY29udmVydEVudW1lcmF0aW9uVG9TdHJp
bmcoZW51bWVyYXRpb25WYWx1ZSkpOworICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShsZXhp
Y2FsR2xvYmFsT2JqZWN0LnZtKCksIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKGVudW1lcmF0
aW9uVmFsdWUpKTsKIH0KIAogdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0Q2FsbGJhY2tJbnRlcmZh
Y2U6OkVudW0+IHBhcnNlRW51bWVyYXRpb248VGVzdENhbGxiYWNrSW50ZXJmYWNlOjpFbnVtPihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5j
cHAKaW5kZXggYTM0YzY3OGU2ZWNmZWUzNWY1Nzg0NzFmZDFhYzg5OTE5MTRhMWU1Yy4uOTMxNmJi
OGU4OTNlMzUyNDlhM2ExN2RhMTZmMjIyMDhlM2ExMGJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTEzOCw3
ICsxMzgsNyBAQCBTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoVGVzdE9iajo6RW51
bVR5cGUgZW51bWVyYXRpb25WYWx1ZSkKIAogdGVtcGxhdGU8PiBKU1N0cmluZyogY29udmVydEVu
dW1lcmF0aW9uVG9KUyhKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgVGVzdE9i
ajo6RW51bVR5cGUgZW51bWVyYXRpb25WYWx1ZSkKIHsKLSAgICByZXR1cm4ganNTdHJpbmdXaXRo
Q2FjaGUoJmxleGljYWxHbG9iYWxPYmplY3QsIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKGVu
dW1lcmF0aW9uVmFsdWUpKTsKKyAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUobGV4aWNhbEds
b2JhbE9iamVjdC52bSgpLCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhlbnVtZXJhdGlvblZh
bHVlKSk7CiB9CiAKIHRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6RW51bVR5cGU+IHBhcnNl
RW51bWVyYXRpb248VGVzdE9iajo6RW51bVR5cGU+KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQpAQCAtMTc4LDcgKzE3OCw3IEBAIFN0cmluZyBjb252
ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhUZXN0T2JqOjpPcHRpb25hbCBlbnVtZXJhdGlvblZhbHVl
KQogCiB0ZW1wbGF0ZTw+IEpTU3RyaW5nKiBjb252ZXJ0RW51bWVyYXRpb25Ub0pTKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBUZXN0T2JqOjpPcHRpb25hbCBlbnVtZXJhdGlv
blZhbHVlKQogewotICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZSgmbGV4aWNhbEdsb2JhbE9i
amVjdCwgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoZW51bWVyYXRpb25WYWx1ZSkpOworICAg
IHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCksIGNvbnZl
cnRFbnVtZXJhdGlvblRvU3RyaW5nKGVudW1lcmF0aW9uVmFsdWUpKTsKIH0KIAogdGVtcGxhdGU8
PiBPcHRpb25hbDxUZXN0T2JqOjpPcHRpb25hbD4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpP
cHRpb25hbD4oSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCkBAIC0yMTQsNyArMjE0LDcgQEAgU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5n
KEFsdGVybmF0ZUVudW1OYW1lIGVudW1lcmF0aW9uVmFsdWUpCiAKIHRlbXBsYXRlPD4gSlNTdHJp
bmcqIGNvbnZlcnRFbnVtZXJhdGlvblRvSlMoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEFsdGVybmF0ZUVudW1OYW1lIGVudW1lcmF0aW9uVmFsdWUpCiB7Ci0gICAgcmV0dXJu
IGpzU3RyaW5nV2l0aENhY2hlKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb252ZXJ0RW51bWVyYXRp
b25Ub1N0cmluZyhlbnVtZXJhdGlvblZhbHVlKSk7CisgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENh
Y2hlKGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSwgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmco
ZW51bWVyYXRpb25WYWx1ZSkpOwogfQogCiB0ZW1wbGF0ZTw+IE9wdGlvbmFsPEFsdGVybmF0ZUVu
dW1OYW1lPiBwYXJzZUVudW1lcmF0aW9uPEFsdGVybmF0ZUVudW1OYW1lPihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKQEAgLTI0Niw3ICsyNDYsNyBA
QCBTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoVGVzdE9iajo6RW51bUEgZW51bWVy
YXRpb25WYWx1ZSkKIAogdGVtcGxhdGU8PiBKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9K
UyhKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgVGVzdE9iajo6RW51bUEgZW51
bWVyYXRpb25WYWx1ZSkKIHsKLSAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoJmxleGljYWxH
bG9iYWxPYmplY3QsIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKGVudW1lcmF0aW9uVmFsdWUp
KTsKKyAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUobGV4aWNhbEdsb2JhbE9iamVjdC52bSgp
LCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhlbnVtZXJhdGlvblZhbHVlKSk7CiB9CiAKIHRl
bXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6RW51bUE+IHBhcnNlRW51bWVyYXRpb248VGVzdE9i
ajo6RW51bUE+KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQpAQCAtMjc4LDcgKzI3OCw3IEBAIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmlu
ZyhUZXN0T2JqOjpFbnVtQiBlbnVtZXJhdGlvblZhbHVlKQogCiB0ZW1wbGF0ZTw+IEpTU3RyaW5n
KiBjb252ZXJ0RW51bWVyYXRpb25Ub0pTKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBUZXN0T2JqOjpFbnVtQiBlbnVtZXJhdGlvblZhbHVlKQogewotICAgIHJldHVybiBqc1N0
cmluZ1dpdGhDYWNoZSgmbGV4aWNhbEdsb2JhbE9iamVjdCwgY29udmVydEVudW1lcmF0aW9uVG9T
dHJpbmcoZW51bWVyYXRpb25WYWx1ZSkpOworICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShs
ZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCksIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKGVudW1l
cmF0aW9uVmFsdWUpKTsKIH0KIAogdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpFbnVtQj4g
cGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtQj4oSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCkBAIC0zMTAsNyArMzEwLDcgQEAgU3RyaW5nIGNv
bnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKFRlc3RPYmo6OkVudW1DIGVudW1lcmF0aW9uVmFsdWUp
CiAKIHRlbXBsYXRlPD4gSlNTdHJpbmcqIGNvbnZlcnRFbnVtZXJhdGlvblRvSlMoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIFRlc3RPYmo6OkVudW1DIGVudW1lcmF0aW9uVmFs
dWUpCiB7Ci0gICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKCZsZXhpY2FsR2xvYmFsT2JqZWN0
LCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhlbnVtZXJhdGlvblZhbHVlKSk7CisgICAgcmV0
dXJuIGpzU3RyaW5nV2l0aENhY2hlKGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSwgY29udmVydEVu
dW1lcmF0aW9uVG9TdHJpbmcoZW51bWVyYXRpb25WYWx1ZSkpOwogfQogCiB0ZW1wbGF0ZTw+IE9w
dGlvbmFsPFRlc3RPYmo6OkVudW1DPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OkVudW1DPihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKQEAgLTM0
Miw3ICszNDIsNyBAQCBTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoVGVzdE9iajo6
S2luZCBlbnVtZXJhdGlvblZhbHVlKQogCiB0ZW1wbGF0ZTw+IEpTU3RyaW5nKiBjb252ZXJ0RW51
bWVyYXRpb25Ub0pTKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBUZXN0T2Jq
OjpLaW5kIGVudW1lcmF0aW9uVmFsdWUpCiB7Ci0gICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hl
KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhlbnVtZXJh
dGlvblZhbHVlKSk7CisgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKGxleGljYWxHbG9iYWxP
YmplY3Qudm0oKSwgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoZW51bWVyYXRpb25WYWx1ZSkp
OwogfQogCiB0ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RPYmo6OktpbmQ+IHBhcnNlRW51bWVyYXRp
b248VGVzdE9iajo6S2luZD4oSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCkBAIC0zNzQsNyArMzc0LDcgQEAgU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlv
blRvU3RyaW5nKFRlc3RPYmo6OlNpemUgZW51bWVyYXRpb25WYWx1ZSkKIAogdGVtcGxhdGU8PiBK
U1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgVGVzdE9iajo6U2l6ZSBlbnVtZXJhdGlvblZhbHVlKQogewotICAgIHJldHVy
biBqc1N0cmluZ1dpdGhDYWNoZSgmbGV4aWNhbEdsb2JhbE9iamVjdCwgY29udmVydEVudW1lcmF0
aW9uVG9TdHJpbmcoZW51bWVyYXRpb25WYWx1ZSkpOworICAgIHJldHVybiBqc1N0cmluZ1dpdGhD
YWNoZShsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCksIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5n
KGVudW1lcmF0aW9uVmFsdWUpKTsKIH0KIAogdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpT
aXplPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OlNpemU+KEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQpAQCAtNDA2LDcgKzQwNiw3IEBAIFN0cmlu
ZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhUZXN0T2JqOjpDb25maWRlbmNlIGVudW1lcmF0
aW9uVmFsdWUpCiAKIHRlbXBsYXRlPD4gSlNTdHJpbmcqIGNvbnZlcnRFbnVtZXJhdGlvblRvSlMo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIFRlc3RPYmo6OkNvbmZpZGVuY2Ug
ZW51bWVyYXRpb25WYWx1ZSkKIHsKLSAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoJmxleGlj
YWxHbG9iYWxPYmplY3QsIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKGVudW1lcmF0aW9uVmFs
dWUpKTsKKyAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUobGV4aWNhbEdsb2JhbE9iamVjdC52
bSgpLCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhlbnVtZXJhdGlvblZhbHVlKSk7CiB9CiAK
IHRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6Q29uZmlkZW5jZT4gcGFyc2VFbnVtZXJhdGlv
bjxUZXN0T2JqOjpDb25maWRlbmNlPihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnku
Y3BwCmluZGV4IGExNzlkY2NjYTY3OGJiNDcxMGZmNDI2NDMxZmQyMTU1NDk2OTQyMjIuLmViZTZk
YjU4NTNkNWRhMWQyMzQyZDFkY2Q0MDAyOWYyZDkzZWE0NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRGljdGlvbmFy
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFN0YW5kYWxvbmVEaWN0aW9uYXJ5LmNwcApAQCAtMzI4LDcgKzMyOCw3IEBAIFN0cmluZyBjb252
ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnk6OkVudW1JblN0
YW5kYWxvbmVEaWN0CiAKIHRlbXBsYXRlPD4gSlNTdHJpbmcqIGNvbnZlcnRFbnVtZXJhdGlvblRv
SlMoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIFRlc3RTdGFuZGFsb25lRGlj
dGlvbmFyeTo6RW51bUluU3RhbmRhbG9uZURpY3Rpb25hcnlGaWxlIGVudW1lcmF0aW9uVmFsdWUp
CiB7Ci0gICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBj
b252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhlbnVtZXJhdGlvblZhbHVlKSk7CisgICAgcmV0dXJu
IGpzU3RyaW5nV2l0aENhY2hlKGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSwgY29udmVydEVudW1l
cmF0aW9uVG9TdHJpbmcoZW51bWVyYXRpb25WYWx1ZSkpOwogfQogCiB0ZW1wbGF0ZTw+IE9wdGlv
bmFsPFRlc3RTdGFuZGFsb25lRGljdGlvbmFyeTo6RW51bUluU3RhbmRhbG9uZURpY3Rpb25hcnlG
aWxlPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RTdGFuZGFsb25lRGljdGlvbmFyeTo6RW51bUluU3Rh
bmRhbG9uZURpY3Rpb25hcnlGaWxlPihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRW51bWVyYXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlv
bi5jcHAKaW5kZXggOTE2M2FjMmEyODUzMjU4ZWNlNWM1YTBlYjRiMWQzOGQ5ZmZhYTBlZi4uNWVk
Nzk4MDhlZTgxODY0YjFkNjg2YzhiNjQzY2FiMzNjZGNhMTM5MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5kYWxvbmVFbnVtZXJh
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlvbi5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgU3RyaW5nIGNv
bnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKFRlc3RTdGFuZGFsb25lRW51bWVyYXRpb24gZW51bWVy
YXRpb25WYWx1ZSkKIAogdGVtcGxhdGU8PiBKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9K
UyhKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgVGVzdFN0YW5kYWxvbmVFbnVt
ZXJhdGlvbiBlbnVtZXJhdGlvblZhbHVlKQogewotICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNo
ZSgmbGV4aWNhbEdsb2JhbE9iamVjdCwgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoZW51bWVy
YXRpb25WYWx1ZSkpOworICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShsZXhpY2FsR2xvYmFs
T2JqZWN0LnZtKCksIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKGVudW1lcmF0aW9uVmFsdWUp
KTsKIH0KIAogdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0U3RhbmRhbG9uZUVudW1lcmF0aW9uPiBw
YXJzZUVudW1lcmF0aW9uPFRlc3RTdGFuZGFsb25lRW51bWVyYXRpb24+KEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYnJpZGdlL2MvY191dGlsaXR5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9j
L2NfdXRpbGl0eS5jcHAKaW5kZXggYWVjYjczY2RhMGE5YzYzZjgwN2EzYTU4MWNjNmI4MGYyYjI2
ZTc4NS4uZDc5MWI4MjUyNjRiOWZhNzA2MDU0MWYzMDVlZWIwYmMzNjU3ODAzMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY191dGlsaXR5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvYy9jX3V0aWxpdHkuY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAgSlNWYWx1ZSBj
b252ZXJ0TlBWYXJpYW50VG9WYWx1ZShKU0dsb2JhbE9iamVjdCogZXhlYywgY29uc3QgTlBWYXJp
YW50KiB2YXJpYW50LAogICAgIGlmICh0eXBlID09IE5QVmFyaWFudFR5cGVfRG91YmxlKQogICAg
ICAgICByZXR1cm4ganNOdW1iZXIoTlBWQVJJQU5UX1RPX0RPVUJMRSgqdmFyaWFudCkpOwogICAg
IGlmICh0eXBlID09IE5QVmFyaWFudFR5cGVfU3RyaW5nKQotICAgICAgICByZXR1cm4ganNTdHJp
bmdXaXRoQ2FjaGUoZXhlYywgY29udmVydE5QU3RyaW5nVG9VVEYxNigmdmFyaWFudC0+dmFsdWUu
c3RyaW5nVmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMtPnZt
KCksIGNvbnZlcnROUFN0cmluZ1RvVVRGMTYoJnZhcmlhbnQtPnZhbHVlLnN0cmluZ1ZhbHVlKSk7
CiAgICAgaWYgKHR5cGUgPT0gTlBWYXJpYW50VHlwZV9PYmplY3QpIHsKICAgICAgICAgTlBPYmpl
Y3QqIG9iaiA9IHZhcmlhbnQtPnZhbHVlLm9iamVjdFZhbHVlOwogICAgICAgICAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBh
M2YzNmJkODQ2NTVlMmZjMDEwMmQ4OWQyM2EwZTgzNGJkYjRlZGVhLi5lYzEwOTJjMDBmNzk5OGJh
NWJkYWRjYzY3NGY5OGM0NmFhYzBmY2UyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDct
MjcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBJbmRleGVk
REIgYmluZGluZyB1dGlsaXRpZXMgbWlzcyBleGNlcHRpb24gY2hlY2tzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQ4MjAKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzY2MTUyMzc0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICoganMvZG9tL2luZGV4ZWQtZGItb3BlcmF0aW9ucy1leGNlcHRpb24tY2hl
Y2tzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvZG9tL2luZGV4ZWQtZGItb3Bl
cmF0aW9ucy1leGNlcHRpb24tY2hlY2tzLmh0bWw6IEFkZGVkLgorCiAyMDIwLTA3LTI1ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFNjcm9sbCBTbmFw
IGJyb2tlbiB3aGVuIHVzaW5nIFJUTCBsYXlvdXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pz
L2RvbS9pbmRleGVkLWRiLW9wZXJhdGlvbnMtZXhjZXB0aW9uLWNoZWNrcy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9qcy9kb20vaW5kZXhlZC1kYi1vcGVyYXRpb25zLWV4Y2VwdGlvbi1jaGVj
a3MtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzZTVlZWVkYmYxYjQzNWY5NmMzYTIwYmY4MTQw
MWFlZTQzMzE5ODEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vaW5kZXhl
ZC1kYi1vcGVyYXRpb25zLWV4Y2VwdGlvbi1jaGVja3MtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
NCBAQAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9pbmRleGVkLWRiLW9wZXJhdGlvbnMtZXhj
ZXB0aW9uLWNoZWNrcy5odG1sIGIvTGF5b3V0VGVzdHMvanMvZG9tL2luZGV4ZWQtZGItb3BlcmF0
aW9ucy1leGNlcHRpb24tY2hlY2tzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTAxYzNhM2Q0YmQxZTM5MGQ1
OTFkNjM1NjNhMTRkY2QxNzhhNmJlOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pz
L2RvbS9pbmRleGVkLWRiLW9wZXJhdGlvbnMtZXhjZXB0aW9uLWNoZWNrcy5odG1sCkBAIC0wLDAg
KzEsMTIgQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsganNjT3B0
aW9ucz0tLXZhbGlkYXRlRXhjZXB0aW9uQ2hlY2tzPXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KK0lEQktleVJhbmdlLmJvdW5kKDAsIDApOworPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405326</attachid>
            <date>2020-07-27 16:44:42 -0700</date>
            <delta_ts>2020-07-27 16:48:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214820-20200727164441.patch</filename>
            <type>text/plain</type>
            <size>33783</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0OTEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
MjQwNjNiOTYzZjk3NjQxNWI0ZTRjMjkxNjcwMWJkZmUzNzFjOThjLi5mMjIyNmU4MzYzNjgwZWQw
NWMzNGViY2Y3YTU1ZWE1MmZhYWNmMTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAyMC0wNy0yNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIEluZGV4ZWREQiBiaW5kaW5nIHV0aWxpdGllcyBtaXNzIGV4Y2VwdGlvbiBj
aGVja3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
NDgyMAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjYxNTIzNzQ+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAganNTdHJpbmdXaXRoQ2FjaGUgZG9lcyBu
b3QgbmVlZCB0byB0YWtlIEpTR2xvYmFsT2JqZWN0Ki4KKworICAgICAgICAqIHJ1bnRpbWUvSlNT
dHJpbmcuaDoKKyAgICAgICAgKEpTQzo6anNTdHJpbmdXaXRoQ2FjaGUpOgorCiAyMDIwLTA3LTI0
ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBwbHVnaW5FbGVtZW50
Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90KCkgc2hvdWxkIHN1cHBvcnQgVk1JbnF1aXJ5IHJlcXVl
c3RzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IGFhZjQyNTAyNTk2OTcxN2QzNDlhN2M2OTYyNzkzMDZjNWUzYjJk
ODEuLjhjZDQ2ZTQ0NjkwNmZhZmNmYjc3NjZlYzRjZjBkOTFmMWQyMzYyYjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw1OCBAQAorMjAyMC0wNy0yNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgorCisgICAgICAgIEluZGV4ZWREQiBiaW5kaW5nIHV0aWxpdGllcyBtaXNzIGV4Y2Vw
dGlvbiBjaGVja3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxNDgyMAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjYxNTIzNzQ+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDoganMvZG9tL2luZGV4
ZWQtZGItb3BlcmF0aW9ucy1leGNlcHRpb24tY2hlY2tzLmh0bWwKKworICAgICAgICBUaGlzIHBh
dGNoIGFwcHJvcHJpYXRlbHkgaW5zZXJ0cyBleGNlcHRpb24gY2hlY2tpbmcgY29kZSBpbnRvIElu
ZGV4ZWREQiBiaW5kaW5nIHV0aWxpdGllcy4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L0lEQktleVJhbmdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQktleVJhbmdlOjpsb3dlckJv
dW5kKToKKyAgICAgICAgKFdlYkNvcmU6OklEQktleVJhbmdlOjp1cHBlckJvdW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQktleVJhbmdlOjpib3VuZCk6CisgICAgICAgICogYmluZGluZ3MvanMv
SURCQmluZGluZ1V0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXQpOgorICAgICAg
ICAoV2ViQ29yZTo6c2V0KToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlSURCS2V5RnJvbVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmludGVybmFs
Q3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aCk6CisgICAgICAgIChXZWJDb3Jl
OjplbnN1cmVOdGhWYWx1ZU9uS2V5UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjppbmplY3RJREJL
ZXlJbnRvU2NyaXB0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6bWF5YmVDcmVhdGVJREJLZXlG
cm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OmNhbkluamVjdElE
QktleUludG9TY3JpcHRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpzY3JpcHRWYWx1ZVRvSURC
S2V5KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmg6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNDdXN0b21YUGF0aE5TUmVzb2x2ZXI6Omxvb2t1cE5hbWVzcGFjZVVSSSk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNET01Db252ZXJ0RGF0ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjp2YWx1ZVRvRGF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Db252ZXJ0RGF0
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q29udmVydGVyPElETERhdGU+Ojpjb252ZXJ0KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRTdHJpbmdzLmg6CisgICAgICAgIChXZWJD
b3JlOjpKU0NvbnZlcnRlcjxJRExET01TdHJpbmc+Ojpjb252ZXJ0KToKKyAgICAgICAgKFdlYkNv
cmU6OkpTQ29udmVydGVyPElETEJ5dGVTdHJpbmc+Ojpjb252ZXJ0KToKKyAgICAgICAgKFdlYkNv
cmU6OkpTQ29udmVydGVyPElETFVTVlN0cmluZz46OmNvbnZlcnQpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRE9NQ29udmVydFdlYkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRU
b0pTVmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNMYXp5RXZlbnRMaXN0ZW5lcjo6aW5pdGlhbGl6ZUpTRnVu
Y3Rpb24gY29uc3QpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtOgorICAgICAgICAoR2VuZXJhdGVFbnVtZXJhdGlvbkltcGxlbWVudGF0aW9uQ29udGVudCk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrSW50ZXJm
YWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRFbnVtZXJhdGlvblRvSlMpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y29udmVydEVudW1lcmF0aW9uVG9KUyk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNvbnZlcnRFbnVtZXJhdGlvblRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRW51bWVyYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y29udmVydEVudW1lcmF0aW9uVG9KUyk6CisgICAgICAgICogYnJpZGdlL2MvY191dGls
aXR5LmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OmNvbnZlcnROUFZhcmlhbnRUb1ZhbHVl
KToKKwogMjAyMC0wNy0yNSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4K
IAogICAgICAgICBTY3JvbGwgU25hcCBicm9rZW4gd2hlbiB1c2luZyBSVEwgbGF5b3V0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAppbmRleCA2ZDZhOTEwYzE0MTA4MGQ4
Yzg4YzVhN2M5ZTE2NWQzNTc0M2QwMDEyLi5iNzU3ZjAwMTA5NGYwMjA3N2IyNmI4ZDZkMTAyZGZl
ZmZlZTFhNTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0
cmluZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKQEAg
LTkxNyw5ICs5MTcsOCBAQCBpbmxpbmUgSlNTdHJpbmcqIGpzT3duZWRTdHJpbmcoVk0mIHZtLCBj
b25zdCBTdHJpbmcmIHMpCiAgICAgcmV0dXJuIEpTU3RyaW5nOjpjcmVhdGVIYXNPdGhlck93bmVy
KHZtLCAqcy5pbXBsKCkpOwogfQogCi1BTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiBqc1N0cmluZ1dp
dGhDYWNoZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIHMpCitB
TFdBWVNfSU5MSU5FIEpTU3RyaW5nKiBqc1N0cmluZ1dpdGhDYWNoZShWTSYgdm0sIGNvbnN0IFN0
cmluZyYgcykKIHsKLSAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwogICAgIFN0cmlu
Z0ltcGwqIHN0cmluZ0ltcGwgPSBzLmltcGwoKTsKICAgICBpZiAoIXN0cmluZ0ltcGwgfHwgIXN0
cmluZ0ltcGwtPmxlbmd0aCgpKQogICAgICAgICByZXR1cm4ganNFbXB0eVN0cmluZyh2bSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5jcHAKaW5k
ZXggN2NmMTZlZjI2MDE5NmQxOTQ1MzdiYjAxNzVhYTM3OTgxYjk1N2E1OS4uZTMwYjk3NjI5NDBm
NWM1YTgwYTRkMDBlOWU3NmE2MzJjMTc2ODFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1
ZGUgIklEQktleURhdGEuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNWYWx1ZS5oPgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTR2xvYmFsT2JqZWN0Lmg+CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzYsNyArNzcsMTEgQEAgRXhjZXB0aW9uT3I8
UmVmPElEQktleVJhbmdlPj4gSURCS2V5UmFuZ2U6Om9ubHkoSlNHbG9iYWxPYmplY3QmIHN0YXRl
LCBKU1ZhbHVlIGsKIAogRXhjZXB0aW9uT3I8UmVmPElEQktleVJhbmdlPj4gSURCS2V5UmFuZ2U6
Omxvd2VyQm91bmQoSlNHbG9iYWxPYmplY3QmIHN0YXRlLCBKU1ZhbHVlIGJvdW5kVmFsdWUsIGJv
b2wgb3BlbikKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGF1dG8gYm91bmQgPSBzY3JpcHRWYWx1ZVRv
SURCS2V5KHN0YXRlLCBib3VuZFZhbHVlKTsKKyAgICBFWENFUFRJT05fQVNTRVJUX1VOVVNFRChz
Y29wZSwgISFzY29wZS5leGNlcHRpb24oKSA9PSAhYm91bmQtPmlzVmFsaWQoKSk7CiAgICAgaWYg
KCFib3VuZC0+aXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgRGF0YUVycm9y
IH07CiAKQEAgLTg1LDcgKzkwLDExIEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJLZXlSYW5nZT4+IElE
QktleVJhbmdlOjpsb3dlckJvdW5kKEpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgSlNWCiAKIEV4Y2Vw
dGlvbk9yPFJlZjxJREJLZXlSYW5nZT4+IElEQktleVJhbmdlOjp1cHBlckJvdW5kKEpTR2xvYmFs
T2JqZWN0JiBzdGF0ZSwgSlNWYWx1ZSBib3VuZFZhbHVlLCBib29sIG9wZW4pCiB7CisgICAgVk0m
IHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICBhdXRvIGJvdW5kID0gc2NyaXB0VmFsdWVUb0lEQktleShzdGF0ZSwgYm91bmRW
YWx1ZSk7CisgICAgRVhDRVBUSU9OX0FTU0VSVF9VTlVTRUQoc2NvcGUsICEhc2NvcGUuZXhjZXB0
aW9uKCkgPT0gIWJvdW5kLT5pc1ZhbGlkKCkpOwogICAgIGlmICghYm91bmQtPmlzVmFsaWQoKSkK
ICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IERhdGFFcnJvciB9OwogCkBAIC05NCwxMCArMTAz
LDE1IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJLZXlSYW5nZT4+IElEQktleVJhbmdlOjp1cHBlckJv
dW5kKEpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgSlNWCiAKIEV4Y2VwdGlvbk9yPFJlZjxJREJLZXlS
YW5nZT4+IElEQktleVJhbmdlOjpib3VuZChKU0dsb2JhbE9iamVjdCYgc3RhdGUsIEpTVmFsdWUg
bG93ZXJWYWx1ZSwgSlNWYWx1ZSB1cHBlclZhbHVlLCBib29sIGxvd2VyT3BlbiwgYm9vbCB1cHBl
ck9wZW4pCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBhdXRvIGxvd2VyID0gc2NyaXB0VmFsdWVUb0lE
QktleShzdGF0ZSwgbG93ZXJWYWx1ZSk7CisgICAgRVhDRVBUSU9OX0FTU0VSVF9VTlVTRUQoc2Nv
cGUsICEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIWxvd2VyLT5pc1ZhbGlkKCkpOwogICAgIGlmICgh
bG93ZXItPmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IERhdGFFcnJvciB9
OwogICAgIGF1dG8gdXBwZXIgPSBzY3JpcHRWYWx1ZVRvSURCS2V5KHN0YXRlLCB1cHBlclZhbHVl
KTsKKyAgICBFWENFUFRJT05fQVNTRVJUX1VOVVNFRChzY29wZSwgISFzY29wZS5leGNlcHRpb24o
KSA9PSAhdXBwZXItPmlzVmFsaWQoKSk7CiAgICAgaWYgKCF1cHBlci0+aXNWYWxpZCgpKQogICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgRGF0YUVycm9yIH07CiAgICAgaWYgKHVwcGVyLT5pc0xl
c3NUaGFuKGxvd2VyLmdldCgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SURCQmluZGluZ1V0aWxpdGllcy5jcHAKaW5kZXggYjhhOGZhODc0ZmMzYzBmNTQzYTRiNTE1M2Jk
MTBmMGQ2ZTE1NDRlOC4uN2NjMmI0OWI3MjU3ZmI3Y2E4Y2E5MmY2YTI1MDc2NjI4Mjg2NzNjNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGll
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGll
cy5jcHAKQEAgLTYwLDYgKzYwLDkgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogc3RhdGljIGJv
b2wgZ2V0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG9iamVj
dCwgY29uc3QgU3RyaW5nJiBrZXlQYXRoRWxlbWVudCwgSlNWYWx1ZSYgcmVzdWx0KQogeworICAg
IFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3Qudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAob2JqZWN0LmlzU3RyaW5nKCkgJiYga2V5
UGF0aEVsZW1lbnQgPT0gImxlbmd0aCIpIHsKICAgICAgICAgcmVzdWx0ID0ganNOdW1iZXIoYXNT
dHJpbmcob2JqZWN0KS0+bGVuZ3RoKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTY3LDEx
ICs3MCwxMSBAQCBzdGF0aWMgYm9vbCBnZXQoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTVmFsdWUgb2JqZWN0LCBjb25zdCBTdHJpbgogICAgIGlmICghb2JqZWN0LmlzT2Jq
ZWN0KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFZNJiB2bSA9IGxleGljYWxHbG9i
YWxPYmplY3Qudm0oKTsKICAgICBhdXRvKiBvYmogPSBhc09iamVjdChvYmplY3QpOwogICAgIElk
ZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIGtleVBhdGhF
bGVtZW50KTsKICAgICBpZiAob2JqLT5pbmhlcml0czxKU0FycmF5Pih2bSkgJiYga2V5UGF0aEVs
ZW1lbnQgPT0gImxlbmd0aCIpIHsKICAgICAgICAgcmVzdWx0ID0gb2JqLT5nZXQoJmxleGljYWxH
bG9iYWxPYmplY3QsIGlkZW50aWZpZXIpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBmYWxzZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBpZiAob2JqLT5p
bmhlcml0czxKU0Jsb2I+KHZtKSAmJiAoa2V5UGF0aEVsZW1lbnQgPT0gInNpemUiIHx8IGtleVBh
dGhFbGVtZW50ID09ICJ0eXBlIikpIHsKQEAgLTEwMCwxMiArMTAzLDE1IEBAIHN0YXRpYyBib29s
IGdldChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSBvYmplY3Qs
IGNvbnN0IFN0cmluCiAgICAgfQogCiAgICAgUHJvcGVydHlEZXNjcmlwdG9yIGRlc2NyaXB0b3I7
Ci0gICAgaWYgKCFvYmotPmdldE93blByb3BlcnR5RGVzY3JpcHRvcigmbGV4aWNhbEdsb2JhbE9i
amVjdCwgaWRlbnRpZmllciwgZGVzY3JpcHRvcikpCisgICAgYm9vbCBmb3VuZCA9IG9iai0+Z2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyLCBk
ZXNjcmlwdG9yKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CisgICAg
aWYgKCFmb3VuZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVzY3JpcHRvci5l
bnVtZXJhYmxlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJlc3VsdCA9IG9iai0+
Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyKTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTExNSwxMSAr
MTIxLDEwIEBAIHN0YXRpYyBib29sIGNhblNldChKU1ZhbHVlIG9iamVjdCwgY29uc3QgU3RyaW5n
JiBrZXlQYXRoRWxlbWVudCkKICAgICByZXR1cm4gb2JqZWN0LmlzT2JqZWN0KCk7CiB9CiAKLXN0
YXRpYyBib29sIHNldChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1
ZSYgb2JqZWN0LCBjb25zdCBTdHJpbmcmIGtleVBhdGhFbGVtZW50LCBKU1ZhbHVlIGpzVmFsdWUp
CitzdGF0aWMgYm9vbCBzZXQoVk0mIHZtLCBKU1ZhbHVlJiBvYmplY3QsIGNvbnN0IFN0cmluZyYg
a2V5UGF0aEVsZW1lbnQsIEpTVmFsdWUganNWYWx1ZSkKIHsKICAgICBpZiAoIWNhblNldChvYmpl
Y3QsIGtleVBhdGhFbGVtZW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFZNJiB2bSA9
IGxleGljYWxHbG9iYWxPYmplY3Qudm0oKTsKICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBrZXlQYXRoRWxlbWVudCk7CiAgICAgYXNPYmplY3Qo
b2JqZWN0KS0+cHV0RGlyZWN0KHZtLCBpZGVudGlmaWVyLCBqc1ZhbHVlKTsKICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTE2NCwxMSArMTY5LDExIEBAIEpTVmFsdWUgdG9KUyhKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwKICAgICAg
ICAgcmV0dXJuIEpTQXJyYXlCdWZmZXI6OmNyZWF0ZShsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCks
IHN0cnVjdHVyZSwgV1RGTW92ZShhcnJheUJ1ZmZlcikpOwogICAgIH0KICAgICBjYXNlIEluZGV4
ZWREQjo6S2V5VHlwZTo6U3RyaW5nOgotICAgICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUo
JmxleGljYWxHbG9iYWxPYmplY3QsIGtleS0+c3RyaW5nKCkpOworICAgICAgICByZXR1cm4ganNT
dHJpbmdXaXRoQ2FjaGUodm0sIGtleS0+c3RyaW5nKCkpOwogICAgIGNhc2UgSW5kZXhlZERCOjpL
ZXlUeXBlOjpEYXRlOgogICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkgYmUg
dG9KUzxJRExEYXRlPiguLi4pIGFzIHBlcjoKICAgICAgICAgLy8gaHR0cDovL3czYy5naXRodWIu
aW8vSW5kZXhlZERCLyNyZXF1ZXN0LWNvbnZlcnQtYS1rZXktdG8tYS12YWx1ZQotICAgICAgICBy
ZXR1cm4gdG9KUzxJRExOdWxsYWJsZTxJRExEYXRlPj4obGV4aWNhbEdsb2JhbE9iamVjdCwga2V5
LT5kYXRlKCkpOworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHRvSlM8SURMTnVs
bGFibGU8SURMRGF0ZT4+KGxleGljYWxHbG9iYWxPYmplY3QsIGtleS0+ZGF0ZSgpKSk7CiAgICAg
Y2FzZSBJbmRleGVkREI6OktleVR5cGU6Ok51bWJlcjoKICAgICAgICAgcmV0dXJuIGpzTnVtYmVy
KGtleS0+bnVtYmVyKCkpOwogICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpNaW46CkBAIC0x
ODksMTQgKzE5NCwxNyBAQCBzdGF0aWMgUmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJvbVZh
bHVlKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LAogICAgIFZNJiB2bSA9IGxl
eGljYWxHbG9iYWxPYmplY3Qudm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKLSAgICBpZiAodmFsdWUuaXNOdW1iZXIoKSAmJiAhc3RkOjppc25hbih2YWx1
ZS50b051bWJlcigmbGV4aWNhbEdsb2JhbE9iamVjdCkpKQotICAgICAgICByZXR1cm4gSURCS2V5
OjpjcmVhdGVOdW1iZXIodmFsdWUudG9OdW1iZXIoJmxleGljYWxHbG9iYWxPYmplY3QpKTsKKyAg
ICBpZiAodmFsdWUuaXNOdW1iZXIoKSAmJiAhc3RkOjppc25hbih2YWx1ZS5hc051bWJlcigpKSkK
KyAgICAgICAgcmV0dXJuIElEQktleTo6Y3JlYXRlTnVtYmVyKHZhbHVlLmFzTnVtYmVyKCkpOwog
Ci0gICAgaWYgKHZhbHVlLmlzU3RyaW5nKCkpCi0gICAgICAgIHJldHVybiBJREJLZXk6OmNyZWF0
ZVN0cmluZyhhc1N0cmluZyh2YWx1ZSktPnZhbHVlKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Cisg
ICAgaWYgKHZhbHVlLmlzU3RyaW5nKCkpIHsKKyAgICAgICAgYXV0byBzdHJpbmcgPSBhc1N0cmlu
Zyh2YWx1ZSktPnZhbHVlKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAgICAgcmV0dXJuIElEQktleTo6Y3JlYXRlU3Ry
aW5nKFdURk1vdmUoc3RyaW5nKSk7CisgICAgfQogCiAgICAgaWYgKHZhbHVlLmluaGVyaXRzPERh
dGVJbnN0YW5jZT4odm0pKSB7Ci0gICAgICAgIGF1dG8gZGF0ZVZhbHVlID0gdmFsdWVUb0RhdGUo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOworICAgICAgICBhdXRvIGRhdGVWYWx1ZSA9IHZh
bHVlVG9EYXRlKHZtLCB2YWx1ZSk7CiAgICAgICAgIGlmICghc3RkOjppc25hbihkYXRlVmFsdWUp
KQogICAgICAgICAgICAgcmV0dXJuIElEQktleTo6Y3JlYXRlRGF0ZShkYXRlVmFsdWUpOwogICAg
IH0KQEAgLTIxOSw2ICsyMjcsNyBAQCBzdGF0aWMgUmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5
RnJvbVZhbHVlKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LAogICAgICAgICAg
ICAgICAgIEpTVmFsdWUgaXRlbSA9IGFycmF5LT5nZXRJbmRleCgmbGV4aWNhbEdsb2JhbE9iamVj
dCwgaSk7CiAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
ICAgICAgICAgICAgICAgICBSZWZQdHI8SURCS2V5PiBzdWJrZXkgPSBjcmVhdGVJREJLZXlGcm9t
VmFsdWUobGV4aWNhbEdsb2JhbE9iamVjdCwgaXRlbSwgc3RhY2spOworICAgICAgICAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgICAgICAgICAgICAgaWYgKCFz
dWJrZXkpCiAgICAgICAgICAgICAgICAgICAgIHN1YmtleXMuYXBwZW5kKElEQktleTo6Y3JlYXRl
SW52YWxpZCgpKTsKICAgICAgICAgICAgICAgICBlbHNlCkBAIC0yNTksNyArMjY4LDcgQEAgc3Rh
dGljIEpTVmFsdWUgZ2V0TnRoVmFsdWVPbktleVBhdGgoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTVmFsdWUKICAgICByZXR1cm4gY3VycmVudFZhbHVlOwogfQogCi1zdGF0
aWMgUmVmUHRyPElEQktleT4gaW50ZXJuYWxDcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRL
ZXlQYXRoKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdCBKU1ZhbHVl
JiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQorc3RhdGljIFJlZlB0cjxJREJLZXk+IGlu
dGVybmFsQ3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQ
YXRoKQogewogICAgIFZlY3RvcjxTdHJpbmc+IGtleVBhdGhFbGVtZW50czsKICAgICBJREJLZXlQ
YXRoUGFyc2VFcnJvciBlcnJvcjsKQEAgLTI4Myw3ICsyOTIsNyBAQCBzdGF0aWMgSlNWYWx1ZSBl
bnN1cmVOdGhWYWx1ZU9uS2V5UGF0aChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNWYQogICAgICAgICBjb25zdCBTdHJpbmcmIGtleVBhdGhFbGVtZW50ID0ga2V5UGF0aEVs
ZW1lbnRzW2ldOwogICAgICAgICBpZiAoIWdldChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwYXJlbnRW
YWx1ZSwga2V5UGF0aEVsZW1lbnQsIGN1cnJlbnRWYWx1ZSkpIHsKICAgICAgICAgICAgIEpTT2Jq
ZWN0KiBvYmplY3QgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdCgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
Ci0gICAgICAgICAgICBpZiAoIXNldChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwYXJlbnRWYWx1ZSwg
a2V5UGF0aEVsZW1lbnQsIEpTVmFsdWUob2JqZWN0KSkpCisgICAgICAgICAgICBpZiAoIXNldChs
ZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCksIHBhcmVudFZhbHVlLCBrZXlQYXRoRWxlbWVudCwgSlNW
YWx1ZShvYmplY3QpKSkKICAgICAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAg
ICAgICAgICAgIGN1cnJlbnRWYWx1ZSA9IEpTVmFsdWUob2JqZWN0KTsKICAgICAgICAgfQpAQCAt
MzM1LDE0ICszNDQsMTQgQEAgYm9vbCBpbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IElEQksKICAgICBKU1ZhbHVlIGV4
aXN0aW5nS2V5OwogICAgIGlmIChnZXQobGV4aWNhbEdsb2JhbE9iamVjdCwgcGFyZW50LCBrZXlQ
YXRoRWxlbWVudHMubGFzdCgpLCBleGlzdGluZ0tleSkgJiYgIWtleS0+Y29tcGFyZShjcmVhdGVJ
REJLZXlGcm9tVmFsdWUobGV4aWNhbEdsb2JhbE9iamVjdCwgZXhpc3RpbmdLZXkpKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKCFzZXQobGV4aWNhbEdsb2JhbE9iamVjdCwgcGFyZW50
LCBrZXlQYXRoRWxlbWVudHMubGFzdCgpLCB0b0pTKGxleGljYWxHbG9iYWxPYmplY3QsIGxleGlj
YWxHbG9iYWxPYmplY3QsIGtleS5nZXQoKSkpKQorICAgIGlmICghc2V0KGxleGljYWxHbG9iYWxP
YmplY3Qudm0oKSwgcGFyZW50LCBrZXlQYXRoRWxlbWVudHMubGFzdCgpLCB0b0pTKGxleGljYWxH
bG9iYWxPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIGtleS5nZXQoKSkpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi1SZWZQdHI8SURCS2V5PiBt
YXliZUNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IEpTVmFsdWUmIHZhbHVlLCBjb25zdCBJREJLZXlQ
YXRoJiBrZXlQYXRoKQorUmVmUHRyPElEQktleT4gbWF5YmVDcmVhdGVJREJLZXlGcm9tU2NyaXB0
VmFsdWVBbmRLZXlQYXRoKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKQogewogICAgIGlmIChXVEY6Omhv
bGRzX2FsdGVybmF0aXZlPFZlY3RvcjxTdHJpbmc+PihrZXlQYXRoKSkgewogICAgICAgICBhdXRv
JiBhcnJheSA9IFdURjo6Z2V0PFZlY3RvcjxTdHJpbmc+PihrZXlQYXRoKTsKQEAgLTM2MCw3ICsz
NjksNyBAQCBSZWZQdHI8SURCS2V5PiBtYXliZUNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFu
ZEtleVBhdGgoSlNHbG9iYWxPYmplY3QmIGxleGljYQogICAgIHJldHVybiBpbnRlcm5hbENyZWF0
ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgobGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUsIFdURjo6Z2V0PFN0cmluZz4oa2V5UGF0aCkpOwogfQogCi1ib29sIGNhbkluamVjdElEQktl
eUludG9TY3JpcHRWYWx1ZShKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgY29u
c3QgSlNWYWx1ZSYgc2NyaXB0VmFsdWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgpCitib29s
IGNhbkluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNWYWx1ZSBzY3JpcHRWYWx1ZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0
aCkKIHsKICAgICBMT0coU3RvcmFnZUFQSSwgImNhbkluamVjdElEQktleUludG9TY3JpcHRWYWx1
ZSIpOwogCkBAIC00MDksNyArNDE4LDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGcKICAgICBy
ZXR1cm4gZGVzZXJpYWxpemVJREJWYWx1ZVRvSlNWYWx1ZSgqbGV4aWNhbEdsb2JhbE9iamVjdCwg
Kmdsb2JhbE9iamVjdCwgdmFsdWUpOwogfQogCi1SZWY8SURCS2V5PiBzY3JpcHRWYWx1ZVRvSURC
S2V5KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdCBKU1ZhbHVlJiBz
Y3JpcHRWYWx1ZSkKK1JlZjxJREJLZXk+IHNjcmlwdFZhbHVlVG9JREJLZXkoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgc2NyaXB0VmFsdWUpCiB7CiAgICAgcmV0
dXJuIGNyZWF0ZUlEQktleUZyb21WYWx1ZShsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY3JpcHRWYWx1
ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5n
VXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0
aWVzLmgKaW5kZXggOGFiNzRmODg3OTBmNmRkZDIxNmYwNWE1ODBjM2IxZjQyM2Y4YzE2Mi4uZDVl
ZGNhYjYyODUzYjJkZWU1MDU4MTcxYzQ2OWI4NmM2MDZhZDBjNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaApAQCAtNDgsMTUgKzQ4LDE1
IEBAIGNsYXNzIElEQlZhbHVlOwogY2xhc3MgSW5kZXhLZXk7CiBjbGFzcyBKU0RPTUdsb2JhbE9i
amVjdDsKIAotUmVmUHRyPElEQktleT4gbWF5YmVDcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVB
bmRLZXlQYXRoKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBjb25zdCBKU0M6OkpTVmFsdWUmLCBjb25z
dCBJREJLZXlQYXRoJik7Ci1ib29sIGNhbkluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShKU0M6
OkpTR2xvYmFsT2JqZWN0JiwgY29uc3QgSlNDOjpKU1ZhbHVlJiwgY29uc3QgSURCS2V5UGF0aCYp
OworUmVmUHRyPElEQktleT4gbWF5YmVDcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQ
YXRoKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUsIGNvbnN0IElEQktleVBhdGgm
KTsKK2Jvb2wgY2FuSW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKEpTQzo6SlNHbG9iYWxPYmpl
Y3QmLCBKU0M6OkpTVmFsdWUsIGNvbnN0IElEQktleVBhdGgmKTsKIGJvb2wgaW5qZWN0SURCS2V5
SW50b1NjcmlwdFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBjb25zdCBJREJLZXlEYXRhJiwg
SlNDOjpKU1ZhbHVlLCBjb25zdCBJREJLZXlQYXRoJik7CiAKIHZvaWQgZ2VuZXJhdGVJbmRleEtl
eUZvclZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBjb25zdCBJREJJbmRleEluZm8mLCBKU0M6
OkpTVmFsdWUsIEluZGV4S2V5JiBvdXRLZXksIGNvbnN0IE9wdGlvbmFsPElEQktleVBhdGg+Jiwg
Y29uc3QgSURCS2V5RGF0YSYpOwogCiBJbmRleElEVG9JbmRleEtleU1hcCBnZW5lcmF0ZUluZGV4
S2V5TWFwRm9yVmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIGNvbnN0IElEQk9iamVjdFN0b3Jl
SW5mbyYsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBJREJWYWx1ZSYpOwogCi1SZWY8SURCS2V5
PiBzY3JpcHRWYWx1ZVRvSURCS2V5KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBjb25zdCBKU0M6OkpT
VmFsdWUmKTsKK1JlZjxJREJLZXk+IHNjcmlwdFZhbHVlVG9JREJLZXkoSlNDOjpKU0dsb2JhbE9i
amVjdCYsIEpTQzo6SlNWYWx1ZSk7CiAKIEpTQzo6SlNWYWx1ZSBkZXNlcmlhbGl6ZUlEQlZhbHVl
VG9KU1ZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBjb25zdCBJREJWYWx1ZSYsIFZlY3Rvcjxz
dGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYpOwogSlNDOjpKU1ZhbHVlIGRlc2VyaWFsaXplSURC
VmFsdWVUb0pTVmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIGNvbnN0IElEQlZhbHVlJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNv
bHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNv
bHZlci5jcHAKaW5kZXggZGY1NjJkMDU4YmYxNzMwYWE1NTBlZmNjOTg3YjVmNTQzMjM4Mzk5My4u
ODY2OTNlNjk3MDcwNjA1YzQ4Y2QyNjU1YWZmYTAxMmY0NTRlMDQ3NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcApA
QCAtODgsNyArODgsNyBAQCBTdHJpbmcgSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXI6Omxvb2t1cE5h
bWVzcGFjZVVSSShjb25zdCBTdHJpbmcmIHByZWZpeCkKICAgICBSZWY8SlNDdXN0b21YUGF0aE5T
UmVzb2x2ZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZm
ZXIgYXJnczsKLSAgICBhcmdzLmFwcGVuZChqc1N0cmluZ1dpdGhDYWNoZShsZXhpY2FsR2xvYmFs
T2JqZWN0LCBwcmVmaXgpKTsKKyAgICBhcmdzLmFwcGVuZChqc1N0cmluZ1dpdGhDYWNoZSh2bSwg
cHJlZml4KSk7CiAgICAgQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7CiAKICAgICBOYWtl
ZFB0cjxKU0M6OkV4Y2VwdGlvbj4gZXhjZXB0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0RGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUNvbnZlcnREYXRlLmNwcAppbmRleCA2NDBlNzdlMzM2MGZmN2U2OWEzYjcw
OWM2Y2RiYzgwNzUxYjBlOTkzLi44YWJmYWFjYjlhZDhmYzE0MmE0YTQ5OWRmZjFjYjE2OWZhYTky
OTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRE
YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnREYXRl
LmNwcApAQCAtMzYsMTMgKzM2LDEzIEBAIEpTVmFsdWUganNEYXRlKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBkb3VibGUgdmFsdWUpCiAgICAgcmV0dXJuIERhdGVJbnN0YW5j
ZTo6Y3JlYXRlKGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSwgbGV4aWNhbEdsb2JhbE9iamVjdC5k
YXRlU3RydWN0dXJlKCksIHZhbHVlKTsKIH0KIAotZG91YmxlIHZhbHVlVG9EYXRlKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQorZG91YmxlIHZhbHVl
VG9EYXRlKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUuaXNOdW1iZXIo
KSkKICAgICAgICAgcmV0dXJuIHZhbHVlLmFzTnVtYmVyKCk7Ci0gICAgaWYgKCF2YWx1ZS5pbmhl
cml0czxEYXRlSW5zdGFuY2U+KGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSkpCisgICAgaWYgKCF2
YWx1ZS5pbmhlcml0czxEYXRlSW5zdGFuY2U+KHZtKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVt
ZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0
PERhdGVJbnN0YW5jZSo+KHZhbHVlLnRvT2JqZWN0KCZsZXhpY2FsR2xvYmFsT2JqZWN0KSktPmlu
dGVybmFsTnVtYmVyKCk7CisgICAgcmV0dXJuIGpzQ2FzdDxEYXRlSW5zdGFuY2UqPih2YWx1ZSkt
PmludGVybmFsTnVtYmVyKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydERhdGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydERhdGUuaAppbmRleCA1MjVhZTg3MDM2
NTE2ZDJiNWVkN2ZlODI5MTBhZGJhYjY5NTcxNzBmLi4wNDQxYWExOGFmNjMyMjZiMTY1ZDk3YTI1
MGY4M2YzMWZiNzBjNzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUNvbnZlcnREYXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01D
b252ZXJ0RGF0ZS5oCkBAIC0zMSwxMiArMzEsMTIgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
SlNDOjpKU1ZhbHVlIGpzRGF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiwgZG91YmxlIHZhbHVlKTsK
LWRvdWJsZSB2YWx1ZVRvRGF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlKTsg
Ly8gTmFOIGlmIHRoZSB2YWx1ZSBjYW4ndCBiZSBjb252ZXJ0ZWQgdG8gYSBkYXRlLgorZG91Ymxl
IHZhbHVlVG9EYXRlKEpTQzo6Vk0mLCBKU0M6OkpTVmFsdWUpOyAvLyBOYU4gaWYgdGhlIHZhbHVl
IGNhbid0IGJlIGNvbnZlcnRlZCB0byBhIGRhdGUuCiAKIHRlbXBsYXRlPD4gc3RydWN0IENvbnZl
cnRlcjxJRExEYXRlPiA6IERlZmF1bHRDb252ZXJ0ZXI8SURMRGF0ZT4gewogICAgIHN0YXRpYyBk
b3VibGUgY29udmVydChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0M6OkpTVmFsdWUgdmFsdWUpCiAgICAgewotICAgICAgICByZXR1cm4gdmFsdWVUb0RhdGUobGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOworICAgICAgICByZXR1cm4gdmFsdWVUb0RhdGUobGV4
aWNhbEdsb2JhbE9iamVjdC52bSgpLCB2YWx1ZSk7CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0U3RyaW5ncy5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0U3RyaW5ncy5oCmluZGV4IGNiYWVmYmNm
ZjBkYjNmMzEwOGQ2NjBkYzU2MzVhNWM1ODY2MWUzN2QuLjQ2OGNkMWU4NWNiZGY3MWU5ZDcxMTYw
OGY2MDE5NDBmMDg2MjNiZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQ29udmVydFN0cmluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUNvbnZlcnRTdHJpbmdzLmgKQEAgLTYzLDcgKzYzLDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
SlNDb252ZXJ0ZXI8SURMRE9NU3RyaW5nPiB7CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGNv
bnZlcnQoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBKU0M6OmpzU3RyaW5nV2l0aENhY2hl
KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CisgICAgICAgIHJldHVybiBKU0M6OmpzU3Ry
aW5nV2l0aENhY2hlKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCB2YWx1ZSk7CiAg
ICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBjb252ZXJ0KEpTQzo6SlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IFVuY2FjaGVkU3RyaW5nJiB2YWx1ZSkKQEAg
LTk1LDcgKzk1LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgSlNDb252ZXJ0ZXI8SURMQnl0ZVN0cmlu
Zz4gewogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBjb252ZXJ0KEpTQzo6SlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgewotICAg
ICAgICByZXR1cm4gSlNDOjpqc1N0cmluZ1dpdGhDYWNoZSgmbGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOworICAgICAgICByZXR1cm4gSlNDOjpqc1N0cmluZ1dpdGhDYWNoZShKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgdmFsdWUpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6
OkpTVmFsdWUgY29udmVydChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBjb25zdCBVbmNhY2hlZFN0cmluZyYgdmFsdWUpCkBAIC0xMjYsNyArMTI2LDcgQEAgdGVtcGxh
dGU8PiBzdHJ1Y3QgSlNDb252ZXJ0ZXI8SURMVVNWU3RyaW5nPiB7CiAKICAgICBzdGF0aWMgSlND
OjpKU1ZhbHVlIGNvbnZlcnQoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBKU0M6OmpzU3Ry
aW5nV2l0aENhY2hlKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CisgICAgICAgIHJldHVy
biBKU0M6OmpzU3RyaW5nV2l0aENhY2hlKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
LCB2YWx1ZSk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBjb252ZXJ0KEpTQzo6
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IFVuY2FjaGVkU3RyaW5n
JiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29u
dmVydFdlYkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFdl
YkdMLmNwcAppbmRleCBmNWQ4MzNlODY4ZGFiZjIxNzdlMDNlYzg2YzdlZDg3NTBmZDhhNjg1Li4w
ZDVkMGUxYjFiNGYwNjUzNjZiMjk3ZTgxZjZkZjJkODZmMzdkMmExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRXZWJHTC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0V2ViR0wuY3BwCkBAIC05Myw3ICs5Myw3
IEBAIEpTVmFsdWUgY29udmVydFRvSlNWYWx1ZShKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QmCiAgICAgICAgICAgICByZXR1cm4ganNOdW1iZXIo
dmFsdWUpOwogICAgICAgICB9LAogICAgICAgICBbJl0gKGNvbnN0IFN0cmluZyYgdmFsdWUpIHsK
LSAgICAgICAgICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZSgmbGV4aWNhbEdsb2JhbE9iamVj
dCwgdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKGxleGljYWxH
bG9iYWxPYmplY3Qudm0oKSwgdmFsdWUpOwogICAgICAgICB9LAogICAgICAgICBbJl0gKGNvbnN0
IFZlY3Rvcjxib29sPiYgdmFsdWVzKSB7CiAgICAgICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZl
ciBsaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZl
bnRMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExp
c3RlbmVyLmNwcAppbmRleCAxNWM3YTE2NDBmZmMyMTQ1OGI4MWZlYWMxNzBhMmM2NzY3NWIxM2Rk
Li45ODdjYmE0YzMxYjcwZTU4YjQxZTNhNjZhY2NmMGJhMmE2Zjc1ODhlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNwcApAQCAtMTUw
LDcgKzE1MCw3IEBAIEpTT2JqZWN0KiBKU0xhenlFdmVudExpc3RlbmVyOjppbml0aWFsaXplSlNG
dW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBleGVjCiAKICAgICBNYXJrZWRBcmd1bWVu
dEJ1ZmZlciBhcmdzOwogICAgIGFyZ3MuYXBwZW5kKGpzTm9udHJpdmlhbFN0cmluZyh2bSwgbV9l
dmVudFBhcmFtZXRlck5hbWUpKTsKLSAgICBhcmdzLmFwcGVuZChqc1N0cmluZ1dpdGhDYWNoZShs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBtX2NvZGUpKTsKKyAgICBhcmdzLmFwcGVuZChqc1N0cmluZ1dp
dGhDYWNoZSh2bSwgbV9jb2RlKSk7CiAgICAgQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7
CiAKICAgICAvLyBXZSB3YW50IGFsbCBlcnJvcnMgdG8gcmVmZXIgYmFjayB0byB0aGUgbGluZSBv
biB3aGljaCBvdXIgYXR0cmlidXRlIHdhcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCAzNDYwMDUxNmE1ZmMwOWQxZDE0ZWMw
MWU0ZTU1OTExZjMwMWRmYWZlLi5mODQ1MDcxZGNiNDI1ZWMzOTE5ZGIyOGU1YTJmYzkzMGY5ZDM1
NmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQpAQCAtMjEyMCw3ICsyMTIwLDcgQEAgc3ViIEdlbmVyYXRlRW51bWVyYXRpb25J
bXBsZW1lbnRhdGlvbkNvbnRlbnQKICAgICAjIEZJWE1FOiBDaGFuZ2UgdG8gdGFrZSBWTSYgaW5z
dGVhZCBvZiBKU0dsb2JhbE9iamVjdCouCiAgICAgJHJlc3VsdCAuPSAidGVtcGxhdGU8PiBKU1N0
cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgJGNsYXNzTmFtZSBlbnVtZXJhdGlvblZhbHVlKVxuIjsKICAgICAkcmVzdWx0IC49
ICJ7XG4iOwotICAgICRyZXN1bHQgLj0gIiAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoJmxl
eGljYWxHbG9iYWxPYmplY3QsIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKGVudW1lcmF0aW9u
VmFsdWUpKTtcbiI7CisgICAgJHJlc3VsdCAuPSAiICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNo
ZShsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCksIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKGVu
dW1lcmF0aW9uVmFsdWUpKTtcbiI7CiAgICAgJHJlc3VsdCAuPSAifVxuXG4iOwogCiAgICAgIyBG
SVhNRTogQ2hhbmdlIHRvIHRha2UgVk0mIGluc3RlYWQgb2YgSlNHbG9iYWxPYmplY3QmLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENh
bGxiYWNrSW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDYWxsYmFja0ludGVyZmFjZS5jcHAKaW5kZXggYzA3YzY4MjZiNTY2NTc4YmFi
ZDllMGY4ZjViYzlhN2JmYTJmNGZhNC4uNjI4OTMzZmZkNjMzODAwODRjMmE0ZjE1ZjUyNjY5N2Ex
ZWRiMTRlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdENhbGxiYWNrSW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2UuY3BwCkBAIC02MSw3
ICs2MSw3IEBAIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhUZXN0Q2FsbGJhY2tJ
bnRlcmZhY2U6OkVudW0gZW51bWVyYXRpb25WYWx1ZSkKIAogdGVtcGxhdGU8PiBKU1N0cmluZyog
Y29udmVydEVudW1lcmF0aW9uVG9KUyhKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgVGVzdENhbGxiYWNrSW50ZXJmYWNlOjpFbnVtIGVudW1lcmF0aW9uVmFsdWUpCiB7Ci0gICAg
cmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb252ZXJ0RW51
bWVyYXRpb25Ub1N0cmluZyhlbnVtZXJhdGlvblZhbHVlKSk7CisgICAgcmV0dXJuIGpzU3RyaW5n
V2l0aENhY2hlKGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSwgY29udmVydEVudW1lcmF0aW9uVG9T
dHJpbmcoZW51bWVyYXRpb25WYWx1ZSkpOwogfQogCiB0ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RD
YWxsYmFja0ludGVyZmFjZTo6RW51bT4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0Q2FsbGJhY2tJbnRl
cmZhY2U6OkVudW0+KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T2JqLmNwcAppbmRleCBhMzRjNjc4ZTZlY2ZlZTM1ZjU3ODQ3MWZkMWFjODk5MTkx
NGExZTVjLi45MzE2YmI4ZTg5M2UzNTI0OWEzYTE3ZGExNmYyMjIwOGUzYTEwYmIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
LmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmlu
ZyhUZXN0T2JqOjpFbnVtVHlwZSBlbnVtZXJhdGlvblZhbHVlKQogCiB0ZW1wbGF0ZTw+IEpTU3Ry
aW5nKiBjb252ZXJ0RW51bWVyYXRpb25Ub0pTKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBUZXN0T2JqOjpFbnVtVHlwZSBlbnVtZXJhdGlvblZhbHVlKQogewotICAgIHJldHVy
biBqc1N0cmluZ1dpdGhDYWNoZSgmbGV4aWNhbEdsb2JhbE9iamVjdCwgY29udmVydEVudW1lcmF0
aW9uVG9TdHJpbmcoZW51bWVyYXRpb25WYWx1ZSkpOworICAgIHJldHVybiBqc1N0cmluZ1dpdGhD
YWNoZShsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCksIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5n
KGVudW1lcmF0aW9uVmFsdWUpKTsKIH0KIAogdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpF
bnVtVHlwZT4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtVHlwZT4oSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCkBAIC0xNzgsNyArMTc4LDcg
QEAgU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKFRlc3RPYmo6Ok9wdGlvbmFsIGVu
dW1lcmF0aW9uVmFsdWUpCiAKIHRlbXBsYXRlPD4gSlNTdHJpbmcqIGNvbnZlcnRFbnVtZXJhdGlv
blRvSlMoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIFRlc3RPYmo6Ok9wdGlv
bmFsIGVudW1lcmF0aW9uVmFsdWUpCiB7Ci0gICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhlbnVtZXJhdGlv
blZhbHVlKSk7CisgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKGxleGljYWxHbG9iYWxPYmpl
Y3Qudm0oKSwgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoZW51bWVyYXRpb25WYWx1ZSkpOwog
fQogCiB0ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RPYmo6Ok9wdGlvbmFsPiBwYXJzZUVudW1lcmF0
aW9uPFRlc3RPYmo6Ok9wdGlvbmFsPihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKQEAgLTIxNCw3ICsyMTQsNyBAQCBTdHJpbmcgY29udmVydEVudW1l
cmF0aW9uVG9TdHJpbmcoQWx0ZXJuYXRlRW51bU5hbWUgZW51bWVyYXRpb25WYWx1ZSkKIAogdGVt
cGxhdGU8PiBKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgQWx0ZXJuYXRlRW51bU5hbWUgZW51bWVyYXRpb25WYWx1ZSkK
IHsKLSAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoJmxleGljYWxHbG9iYWxPYmplY3QsIGNv
bnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKGVudW1lcmF0aW9uVmFsdWUpKTsKKyAgICByZXR1cm4g
anNTdHJpbmdXaXRoQ2FjaGUobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCBjb252ZXJ0RW51bWVy
YXRpb25Ub1N0cmluZyhlbnVtZXJhdGlvblZhbHVlKSk7CiB9CiAKIHRlbXBsYXRlPD4gT3B0aW9u
YWw8QWx0ZXJuYXRlRW51bU5hbWU+IHBhcnNlRW51bWVyYXRpb248QWx0ZXJuYXRlRW51bU5hbWU+
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQpAQCAt
MjQ2LDcgKzI0Niw3IEBAIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhUZXN0T2Jq
OjpFbnVtQSBlbnVtZXJhdGlvblZhbHVlKQogCiB0ZW1wbGF0ZTw+IEpTU3RyaW5nKiBjb252ZXJ0
RW51bWVyYXRpb25Ub0pTKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBUZXN0
T2JqOjpFbnVtQSBlbnVtZXJhdGlvblZhbHVlKQogewotICAgIHJldHVybiBqc1N0cmluZ1dpdGhD
YWNoZSgmbGV4aWNhbEdsb2JhbE9iamVjdCwgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoZW51
bWVyYXRpb25WYWx1ZSkpOworICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShsZXhpY2FsR2xv
YmFsT2JqZWN0LnZtKCksIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKGVudW1lcmF0aW9uVmFs
dWUpKTsKIH0KIAogdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpFbnVtQT4gcGFyc2VFbnVt
ZXJhdGlvbjxUZXN0T2JqOjpFbnVtQT4oSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUpCkBAIC0yNzgsNyArMjc4LDcgQEAgU3RyaW5nIGNvbnZlcnRFbnVt
ZXJhdGlvblRvU3RyaW5nKFRlc3RPYmo6OkVudW1CIGVudW1lcmF0aW9uVmFsdWUpCiAKIHRlbXBs
YXRlPD4gSlNTdHJpbmcqIGNvbnZlcnRFbnVtZXJhdGlvblRvSlMoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIFRlc3RPYmo6OkVudW1CIGVudW1lcmF0aW9uVmFsdWUpCiB7Ci0g
ICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb252ZXJ0
RW51bWVyYXRpb25Ub1N0cmluZyhlbnVtZXJhdGlvblZhbHVlKSk7CisgICAgcmV0dXJuIGpzU3Ry
aW5nV2l0aENhY2hlKGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSwgY29udmVydEVudW1lcmF0aW9u
VG9TdHJpbmcoZW51bWVyYXRpb25WYWx1ZSkpOwogfQogCiB0ZW1wbGF0ZTw+IE9wdGlvbmFsPFRl
c3RPYmo6OkVudW1CPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OkVudW1CPihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKQEAgLTMxMCw3ICszMTAs
NyBAQCBTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoVGVzdE9iajo6RW51bUMgZW51
bWVyYXRpb25WYWx1ZSkKIAogdGVtcGxhdGU8PiBKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9u
VG9KUyhKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgVGVzdE9iajo6RW51bUMg
ZW51bWVyYXRpb25WYWx1ZSkKIHsKLSAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoJmxleGlj
YWxHbG9iYWxPYmplY3QsIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKGVudW1lcmF0aW9uVmFs
dWUpKTsKKyAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUobGV4aWNhbEdsb2JhbE9iamVjdC52
bSgpLCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhlbnVtZXJhdGlvblZhbHVlKSk7CiB9CiAK
IHRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6RW51bUM+IHBhcnNlRW51bWVyYXRpb248VGVz
dE9iajo6RW51bUM+KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQpAQCAtMzQyLDcgKzM0Miw3IEBAIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0
cmluZyhUZXN0T2JqOjpLaW5kIGVudW1lcmF0aW9uVmFsdWUpCiAKIHRlbXBsYXRlPD4gSlNTdHJp
bmcqIGNvbnZlcnRFbnVtZXJhdGlvblRvSlMoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIFRlc3RPYmo6OktpbmQgZW51bWVyYXRpb25WYWx1ZSkKIHsKLSAgICByZXR1cm4ganNT
dHJpbmdXaXRoQ2FjaGUoJmxleGljYWxHbG9iYWxPYmplY3QsIGNvbnZlcnRFbnVtZXJhdGlvblRv
U3RyaW5nKGVudW1lcmF0aW9uVmFsdWUpKTsKKyAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUo
bGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhlbnVt
ZXJhdGlvblZhbHVlKSk7CiB9CiAKIHRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6S2luZD4g
cGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpLaW5kPihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKQEAgLTM3NCw3ICszNzQsNyBAQCBTdHJpbmcgY29u
dmVydEVudW1lcmF0aW9uVG9TdHJpbmcoVGVzdE9iajo6U2l6ZSBlbnVtZXJhdGlvblZhbHVlKQog
CiB0ZW1wbGF0ZTw+IEpTU3RyaW5nKiBjb252ZXJ0RW51bWVyYXRpb25Ub0pTKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBUZXN0T2JqOjpTaXplIGVudW1lcmF0aW9uVmFsdWUp
CiB7Ci0gICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBj
b252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhlbnVtZXJhdGlvblZhbHVlKSk7CisgICAgcmV0dXJu
IGpzU3RyaW5nV2l0aENhY2hlKGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSwgY29udmVydEVudW1l
cmF0aW9uVG9TdHJpbmcoZW51bWVyYXRpb25WYWx1ZSkpOwogfQogCiB0ZW1wbGF0ZTw+IE9wdGlv
bmFsPFRlc3RPYmo6OlNpemU+IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6U2l6ZT4oSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCkBAIC00MDYsNyAr
NDA2LDcgQEAgU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKFRlc3RPYmo6OkNvbmZp
ZGVuY2UgZW51bWVyYXRpb25WYWx1ZSkKIAogdGVtcGxhdGU8PiBKU1N0cmluZyogY29udmVydEVu
dW1lcmF0aW9uVG9KUyhKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgVGVzdE9i
ajo6Q29uZmlkZW5jZSBlbnVtZXJhdGlvblZhbHVlKQogewotICAgIHJldHVybiBqc1N0cmluZ1dp
dGhDYWNoZSgmbGV4aWNhbEdsb2JhbE9iamVjdCwgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmco
ZW51bWVyYXRpb25WYWx1ZSkpOworICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShsZXhpY2Fs
R2xvYmFsT2JqZWN0LnZtKCksIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKGVudW1lcmF0aW9u
VmFsdWUpKTsKIH0KIAogdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpDb25maWRlbmNlPiBw
YXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OkNvbmZpZGVuY2U+KEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFs
b25lRGljdGlvbmFyeS5jcHAKaW5kZXggYTE3OWRjY2NhNjc4YmI0NzEwZmY0MjY0MzFmZDIxNTU0
OTY5NDIyMi4uZWJlNmRiNTg1M2Q1ZGExZDIzNDJkMWRjZDQwMDI5ZjJkOTNlYTQ2NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5k
YWxvbmVEaWN0aW9uYXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnkuY3BwCkBAIC0zMjgsNyArMzI4LDcg
QEAgU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKFRlc3RTdGFuZGFsb25lRGljdGlv
bmFyeTo6RW51bUluU3RhbmRhbG9uZURpY3QKIAogdGVtcGxhdGU8PiBKU1N0cmluZyogY29udmVy
dEVudW1lcmF0aW9uVG9KUyhKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgVGVz
dFN0YW5kYWxvbmVEaWN0aW9uYXJ5OjpFbnVtSW5TdGFuZGFsb25lRGljdGlvbmFyeUZpbGUgZW51
bWVyYXRpb25WYWx1ZSkKIHsKLSAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoJmxleGljYWxH
bG9iYWxPYmplY3QsIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKGVudW1lcmF0aW9uVmFsdWUp
KTsKKyAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUobGV4aWNhbEdsb2JhbE9iamVjdC52bSgp
LCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhlbnVtZXJhdGlvblZhbHVlKSk7CiB9CiAKIHRl
bXBsYXRlPD4gT3B0aW9uYWw8VGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5OjpFbnVtSW5TdGFuZGFs
b25lRGljdGlvbmFyeUZpbGU+IHBhcnNlRW51bWVyYXRpb248VGVzdFN0YW5kYWxvbmVEaWN0aW9u
YXJ5OjpFbnVtSW5TdGFuZGFsb25lRGljdGlvbmFyeUZpbGU+KEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRh
bG9uZUVudW1lcmF0aW9uLmNwcAppbmRleCA5MTYzYWMyYTI4NTMyNThlY2U1YzVhMGViNGIxZDM4
ZDlmZmFhMGVmLi41ZWQ3OTgwOGVlODE4NjRiMWQ2ODZjOGI2NDNjYWIzM2NkY2ExMzkyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3Rh
bmRhbG9uZUVudW1lcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9uZUVudW1lcmF0aW9uLmNwcApAQCAtNDYsNyArNDYs
NyBAQCBTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoVGVzdFN0YW5kYWxvbmVFbnVt
ZXJhdGlvbiBlbnVtZXJhdGlvblZhbHVlKQogCiB0ZW1wbGF0ZTw+IEpTU3RyaW5nKiBjb252ZXJ0
RW51bWVyYXRpb25Ub0pTKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBUZXN0
U3RhbmRhbG9uZUVudW1lcmF0aW9uIGVudW1lcmF0aW9uVmFsdWUpCiB7Ci0gICAgcmV0dXJuIGpz
U3RyaW5nV2l0aENhY2hlKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb252ZXJ0RW51bWVyYXRpb25U
b1N0cmluZyhlbnVtZXJhdGlvblZhbHVlKSk7CisgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hl
KGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSwgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoZW51
bWVyYXRpb25WYWx1ZSkpOwogfQogCiB0ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RTdGFuZGFsb25l
RW51bWVyYXRpb24+IHBhcnNlRW51bWVyYXRpb248VGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlvbj4o
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX3V0aWxpdHkuY3BwIGIvU291cmNlL1dl
YkNvcmUvYnJpZGdlL2MvY191dGlsaXR5LmNwcAppbmRleCBhZWNiNzNjZGEwYTljNjNmODA3YTNh
NTgxY2M2YjgwZjJiMjZlNzg1Li5kNzkxYjgyNTI2NGI5ZmE3MDYwNTQxZjMwNWVlYjBiYzM2NTc4
MDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX3V0aWxpdHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfdXRpbGl0eS5jcHAKQEAgLTEyNCw3ICsxMjQs
NyBAQCBKU1ZhbHVlIGNvbnZlcnROUFZhcmlhbnRUb1ZhbHVlKEpTR2xvYmFsT2JqZWN0KiBleGVj
LCBjb25zdCBOUFZhcmlhbnQqIHZhcmlhbnQsCiAgICAgaWYgKHR5cGUgPT0gTlBWYXJpYW50VHlw
ZV9Eb3VibGUpCiAgICAgICAgIHJldHVybiBqc051bWJlcihOUFZBUklBTlRfVE9fRE9VQkxFKCp2
YXJpYW50KSk7CiAgICAgaWYgKHR5cGUgPT0gTlBWYXJpYW50VHlwZV9TdHJpbmcpCi0gICAgICAg
IHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBjb252ZXJ0TlBTdHJpbmdUb1VURjE2KCZ2
YXJpYW50LT52YWx1ZS5zdHJpbmdWYWx1ZSkpOworICAgICAgICByZXR1cm4ganNTdHJpbmdXaXRo
Q2FjaGUoZXhlYy0+dm0oKSwgY29udmVydE5QU3RyaW5nVG9VVEYxNigmdmFyaWFudC0+dmFsdWUu
c3RyaW5nVmFsdWUpKTsKICAgICBpZiAodHlwZSA9PSBOUFZhcmlhbnRUeXBlX09iamVjdCkgewog
ICAgICAgICBOUE9iamVjdCogb2JqID0gdmFyaWFudC0+dmFsdWUub2JqZWN0VmFsdWU7CiAgICAg
ICAgIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IGEzZjM2YmQ4NDY1NWUyZmMwMTAyZDg5ZDIzYTBlODM0YmRiNGVkZWEuLmVj
MTA5MmMwMGY3OTk4YmE1YmRhZGNjNjc0Zjk4YzQ2YWFjMGZjZTIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NCBAQAorMjAyMC0wNy0yNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisg
ICAgICAgIEluZGV4ZWREQiBiaW5kaW5nIHV0aWxpdGllcyBtaXNzIGV4Y2VwdGlvbiBjaGVja3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDgyMAor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjYxNTIzNzQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBqcy9kb20vaW5kZXhlZC1kYi1vcGVyYXRpb25z
LWV4Y2VwdGlvbi1jaGVja3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9kb20v
aW5kZXhlZC1kYi1vcGVyYXRpb25zLWV4Y2VwdGlvbi1jaGVja3MuaHRtbDogQWRkZWQuCisKIDIw
MjAtMDctMjUgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAg
ICAgU2Nyb2xsIFNuYXAgYnJva2VuIHdoZW4gdXNpbmcgUlRMIGxheW91dApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvanMvZG9tL2luZGV4ZWQtZGItb3BlcmF0aW9ucy1leGNlcHRpb24tY2hlY2tz
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2RvbS9pbmRleGVkLWRiLW9wZXJhdGlvbnMt
ZXhjZXB0aW9uLWNoZWNrcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDNlNWVlZWRiZjFiNDM1
Zjk2YzNhMjBiZjgxNDAxYWVlNDMzMTk4MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2pzL2RvbS9pbmRleGVkLWRiLW9wZXJhdGlvbnMtZXhjZXB0aW9uLWNoZWNrcy1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw0IEBACitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2luZGV4ZWQtZGIt
b3BlcmF0aW9ucy1leGNlcHRpb24tY2hlY2tzLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9kb20vaW5k
ZXhlZC1kYi1vcGVyYXRpb25zLWV4Y2VwdGlvbi1jaGVja3MuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MDFj
M2EzZDRiZDFlMzkwZDU5MWQ2MzU2M2ExNGRjZDE3OGE2YmU4Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvanMvZG9tL2luZGV4ZWQtZGItb3BlcmF0aW9ucy1leGNlcHRpb24tY2hlY2tz
Lmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1y
dW5uZXIgWyBqc2NPcHRpb25zPS0tdmFsaWRhdGVFeGNlcHRpb25DaGVja3M9dHJ1ZSBdIC0tPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorSURCS2V5UmFuZ2UuYm91
bmQoMCwgMCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405328</attachid>
            <date>2020-07-27 16:48:48 -0700</date>
            <delta_ts>2020-07-27 16:58:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214820-20200727164847.patch</filename>
            <type>text/plain</type>
            <size>34766</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0OTEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
MjQwNjNiOTYzZjk3NjQxNWI0ZTRjMjkxNjcwMWJkZmUzNzFjOThjLi5mMjIyNmU4MzYzNjgwZWQw
NWMzNGViY2Y3YTU1ZWE1MmZhYWNmMTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAyMC0wNy0yNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIEluZGV4ZWREQiBiaW5kaW5nIHV0aWxpdGllcyBtaXNzIGV4Y2VwdGlvbiBj
aGVja3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
NDgyMAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjYxNTIzNzQ+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAganNTdHJpbmdXaXRoQ2FjaGUgZG9lcyBu
b3QgbmVlZCB0byB0YWtlIEpTR2xvYmFsT2JqZWN0Ki4KKworICAgICAgICAqIHJ1bnRpbWUvSlNT
dHJpbmcuaDoKKyAgICAgICAgKEpTQzo6anNTdHJpbmdXaXRoQ2FjaGUpOgorCiAyMDIwLTA3LTI0
ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBwbHVnaW5FbGVtZW50
Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90KCkgc2hvdWxkIHN1cHBvcnQgVk1JbnF1aXJ5IHJlcXVl
c3RzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IGFhZjQyNTAyNTk2OTcxN2QzNDlhN2M2OTYyNzkzMDZjNWUzYjJk
ODEuLmZkZDU5ODFkOTU4ZWIzMDVmNzZiY2M1N2FmMWEzMDZhNzY4NGIwMGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw2MCBAQAorMjAyMC0wNy0yNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgorCisgICAgICAgIEluZGV4ZWREQiBiaW5kaW5nIHV0aWxpdGllcyBtaXNzIGV4Y2Vw
dGlvbiBjaGVja3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxNDgyMAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjYxNTIzNzQ+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDoganMvZG9tL2luZGV4
ZWQtZGItb3BlcmF0aW9ucy1leGNlcHRpb24tY2hlY2tzLmh0bWwKKworICAgICAgICBUaGlzIHBh
dGNoIGFwcHJvcHJpYXRlbHkgaW5zZXJ0cyBleGNlcHRpb24gY2hlY2tpbmcgY29kZSBpbnRvIElu
ZGV4ZWREQiBiaW5kaW5nIHV0aWxpdGllcy4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L0lEQktleVJhbmdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQktleVJhbmdlOjpvbmx5KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQktleVJhbmdlOjpsb3dlckJvdW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQktleVJhbmdlOjp1cHBlckJvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OklEQktl
eVJhbmdlOjpib3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlSYW5nZTo6aW5jbHVkZXMp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OnNldCk6CisgICAgICAgIChXZWJD
b3JlOjp0b0pTKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUlEQktleUZyb21WYWx1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjppbnRlcm5hbENyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtl
eVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6ZW5zdXJlTnRoVmFsdWVPbktleVBhdGgpOgorICAg
ICAgICAoV2ViQ29yZTo6aW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6Om1heWJlQ3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aCk6CisgICAg
ICAgIChXZWJDb3JlOjpjYW5JbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6c2NyaXB0VmFsdWVUb0lEQktleSk6CisgICAgICAgICogYmluZGluZ3MvanMvSURC
QmluZGluZ1V0aWxpdGllcy5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhO
U1Jlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVy
Ojpsb29rdXBOYW1lc3BhY2VVUkkpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQ29udmVy
dERhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dmFsdWVUb0RhdGUpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NQ29udmVydERhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnZlcnRl
cjxJRExEYXRlPjo6Y29udmVydCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Db252ZXJ0
U3RyaW5ncy5oOgorICAgICAgICAoV2ViQ29yZTo6SlNDb252ZXJ0ZXI8SURMRE9NU3RyaW5nPjo6
Y29udmVydCk6CisgICAgICAgIChXZWJDb3JlOjpKU0NvbnZlcnRlcjxJRExCeXRlU3RyaW5nPjo6
Y29udmVydCk6CisgICAgICAgIChXZWJDb3JlOjpKU0NvbnZlcnRlcjxJRExVU1ZTdHJpbmc+Ojpj
b252ZXJ0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRXZWJHTC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VG9KU1ZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0xhenlFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTGF6eUV2ZW50
TGlzdGVuZXI6OmluaXRpYWxpemVKU0Z1bmN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlRW51bWVyYXRp
b25JbXBsZW1lbnRhdGlvbkNvbnRlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDYWxsYmFja0ludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252
ZXJ0RW51bWVyYXRpb25Ub0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRFbnVtZXJhdGlvblRvSlMp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRGlj
dGlvbmFyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RW51bWVyYXRpb25Ub0pTKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9uZUVudW1l
cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRFbnVtZXJhdGlvblRvSlMpOgor
ICAgICAgICAqIGJyaWRnZS9jL2NfdXRpbGl0eS5jcHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdz
Ojpjb252ZXJ0TlBWYXJpYW50VG9WYWx1ZSk6CisKIDIwMjAtMDctMjUgIFNpbW9uIEZyYXNlciAg
PHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgU2Nyb2xsIFNuYXAgYnJva2VuIHdo
ZW4gdXNpbmcgUlRMIGxheW91dApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5n
LmgKaW5kZXggNmQ2YTkxMGMxNDEwODBkOGM4OGM1YTdjOWUxNjVkMzU3NDNkMDAxMi4uYjc1N2Yw
MDEwOTRmMDIwNzdiMjZiOGQ2ZDEwMmRmZWZmZWUxYTUxZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0cmluZy5oCkBAIC05MTcsOSArOTE3LDggQEAgaW5saW5lIEpTU3RyaW5n
KiBqc093bmVkU3RyaW5nKFZNJiB2bSwgY29uc3QgU3RyaW5nJiBzKQogICAgIHJldHVybiBKU1N0
cmluZzo6Y3JlYXRlSGFzT3RoZXJPd25lcih2bSwgKnMuaW1wbCgpKTsKIH0KIAotQUxXQVlTX0lO
TElORSBKU1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgY29uc3QgU3RyaW5nJiBzKQorQUxXQVlTX0lOTElORSBKU1N0cmluZyoganNTdHJpbmdX
aXRoQ2FjaGUoVk0mIHZtLCBjb25zdCBTdHJpbmcmIHMpCiB7Ci0gICAgVk0mIHZtID0gZ2V0Vk0o
Z2xvYmFsT2JqZWN0KTsKICAgICBTdHJpbmdJbXBsKiBzdHJpbmdJbXBsID0gcy5pbXBsKCk7CiAg
ICAgaWYgKCFzdHJpbmdJbXBsIHx8ICFzdHJpbmdJbXBsLT5sZW5ndGgoKSkKICAgICAgICAgcmV0
dXJuIGpzRW1wdHlTdHJpbmcodm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCS2V5UmFuZ2UuY3BwCmluZGV4IDdjZjE2ZWYyNjAxOTZkMTk0NTM3YmIwMTc1YWEz
Nzk4MWI5NTdhNTkuLjZjZDA5MTZiYjQyZWFiMjYwYWRjYmU0Zjc4ZWMzOGU3YjBiYmQ0NjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5jcHAK
QEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJJREJLZXlEYXRhLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0pTVmFs
dWUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0dsb2JhbE9iamVjdC5oPgogI2luY2x1
ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTcx
LDEyICs3MiwyMCBAQCBFeGNlcHRpb25PcjxSZWY8SURCS2V5UmFuZ2U+PiBJREJLZXlSYW5nZTo6
b25seShSZWZQdHI8SURCS2V5PiYmIGtleSkKIAogRXhjZXB0aW9uT3I8UmVmPElEQktleVJhbmdl
Pj4gSURCS2V5UmFuZ2U6Om9ubHkoSlNHbG9iYWxPYmplY3QmIHN0YXRlLCBKU1ZhbHVlIGtleVZh
bHVlKQogewotICAgIHJldHVybiBvbmx5KHNjcmlwdFZhbHVlVG9JREJLZXkoc3RhdGUsIGtleVZh
bHVlKSk7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byBrZXkgPSBzY3JpcHRWYWx1ZVRvSURCS2V5KHN0
YXRlLCBrZXlWYWx1ZSk7CisgICAgRVhDRVBUSU9OX0FTU0VSVF9VTlVTRUQoc2NvcGUsICEhc2Nv
cGUuZXhjZXB0aW9uKCkgPT0gIWtleS0+aXNWYWxpZCgpKTsKKyAgICByZXR1cm4gb25seShXVEZN
b3ZlKGtleSkpOwogfQogCiBFeGNlcHRpb25PcjxSZWY8SURCS2V5UmFuZ2U+PiBJREJLZXlSYW5n
ZTo6bG93ZXJCb3VuZChKU0dsb2JhbE9iamVjdCYgc3RhdGUsIEpTVmFsdWUgYm91bmRWYWx1ZSwg
Ym9vbCBvcGVuKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgYXV0byBib3VuZCA9IHNjcmlwdFZhbHVl
VG9JREJLZXkoc3RhdGUsIGJvdW5kVmFsdWUpOworICAgIEVYQ0VQVElPTl9BU1NFUlRfVU5VU0VE
KHNjb3BlLCAhIXNjb3BlLmV4Y2VwdGlvbigpID09ICFib3VuZC0+aXNWYWxpZCgpKTsKICAgICBp
ZiAoIWJvdW5kLT5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBEYXRhRXJy
b3IgfTsKIApAQCAtODUsNyArOTQsMTEgQEAgRXhjZXB0aW9uT3I8UmVmPElEQktleVJhbmdlPj4g
SURCS2V5UmFuZ2U6Omxvd2VyQm91bmQoSlNHbG9iYWxPYmplY3QmIHN0YXRlLCBKU1YKIAogRXhj
ZXB0aW9uT3I8UmVmPElEQktleVJhbmdlPj4gSURCS2V5UmFuZ2U6OnVwcGVyQm91bmQoSlNHbG9i
YWxPYmplY3QmIHN0YXRlLCBKU1ZhbHVlIGJvdW5kVmFsdWUsIGJvb2wgb3BlbikKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIGF1dG8gYm91bmQgPSBzY3JpcHRWYWx1ZVRvSURCS2V5KHN0YXRlLCBib3Vu
ZFZhbHVlKTsKKyAgICBFWENFUFRJT05fQVNTRVJUX1VOVVNFRChzY29wZSwgISFzY29wZS5leGNl
cHRpb24oKSA9PSAhYm91bmQtPmlzVmFsaWQoKSk7CiAgICAgaWYgKCFib3VuZC0+aXNWYWxpZCgp
KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgRGF0YUVycm9yIH07CiAKQEAgLTk0LDEwICsx
MDcsMTUgQEAgRXhjZXB0aW9uT3I8UmVmPElEQktleVJhbmdlPj4gSURCS2V5UmFuZ2U6OnVwcGVy
Qm91bmQoSlNHbG9iYWxPYmplY3QmIHN0YXRlLCBKU1YKIAogRXhjZXB0aW9uT3I8UmVmPElEQktl
eVJhbmdlPj4gSURCS2V5UmFuZ2U6OmJvdW5kKEpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgSlNWYWx1
ZSBsb3dlclZhbHVlLCBKU1ZhbHVlIHVwcGVyVmFsdWUsIGJvb2wgbG93ZXJPcGVuLCBib29sIHVw
cGVyT3BlbikKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGF1dG8gbG93ZXIgPSBzY3JpcHRWYWx1ZVRv
SURCS2V5KHN0YXRlLCBsb3dlclZhbHVlKTsKKyAgICBFWENFUFRJT05fQVNTRVJUX1VOVVNFRChz
Y29wZSwgISFzY29wZS5leGNlcHRpb24oKSA9PSAhbG93ZXItPmlzVmFsaWQoKSk7CiAgICAgaWYg
KCFsb3dlci0+aXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgRGF0YUVycm9y
IH07CiAgICAgYXV0byB1cHBlciA9IHNjcmlwdFZhbHVlVG9JREJLZXkoc3RhdGUsIHVwcGVyVmFs
dWUpOworICAgIEVYQ0VQVElPTl9BU1NFUlRfVU5VU0VEKHNjb3BlLCAhIXNjb3BlLmV4Y2VwdGlv
bigpID09ICF1cHBlci0+aXNWYWxpZCgpKTsKICAgICBpZiAoIXVwcGVyLT5pc1ZhbGlkKCkpCiAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBEYXRhRXJyb3IgfTsKICAgICBpZiAodXBwZXItPmlz
TGVzc1RoYW4obG93ZXIuZ2V0KCkpKQpAQCAtMTE1LDcgKzEzMywxMSBAQCBib29sIElEQktleVJh
bmdlOjppc09ubHlLZXkoKSBjb25zdAogCiBFeGNlcHRpb25Pcjxib29sPiBJREJLZXlSYW5nZTo6
aW5jbHVkZXMoSlNDOjpKU0dsb2JhbE9iamVjdCYgc3RhdGUsIEpTQzo6SlNWYWx1ZSBrZXlWYWx1
ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGF1dG8ga2V5ID0gc2NyaXB0VmFsdWVUb0lEQktleShz
dGF0ZSwga2V5VmFsdWUpOworICAgIEVYQ0VQVElPTl9BU1NFUlRfVU5VU0VEKHNjb3BlLCAhIXNj
b3BlLmV4Y2VwdGlvbigpID09ICFrZXktPmlzVmFsaWQoKSk7CiAgICAgaWYgKCFrZXktPmlzVmFs
aWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IERhdGFFcnJvciwgIkZhaWxlZCB0byBl
eGVjdXRlICdpbmNsdWRlcycgb24gJ0lEQktleVJhbmdlJzogVGhlIHBhc3NlZC1pbiB2YWx1ZSBp
cyBub3QgYSB2YWxpZCBJbmRleGVkREIga2V5LiIgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAppbmRleCBiOGE4ZmE4NzRmYzNj
MGY1NDNhNGI1MTUzYmQxMGYwZDZlMTU0NGU4Li43Y2MyYjQ5YjcyNTdmYjdjYThjYTkyZjZhMjUw
NzY2MjgyODY3M2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJC
aW5kaW5nVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJC
aW5kaW5nVXRpbGl0aWVzLmNwcApAQCAtNjAsNiArNjAsOSBAQCB1c2luZyBuYW1lc3BhY2UgSlND
OwogCiBzdGF0aWMgYm9vbCBnZXQoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTVmFsdWUgb2JqZWN0LCBjb25zdCBTdHJpbmcmIGtleVBhdGhFbGVtZW50LCBKU1ZhbHVlJiBy
ZXN1bHQpCiB7CisgICAgVk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChvYmplY3QuaXNT
dHJpbmcoKSAmJiBrZXlQYXRoRWxlbWVudCA9PSAibGVuZ3RoIikgewogICAgICAgICByZXN1bHQg
PSBqc051bWJlcihhc1N0cmluZyhvYmplY3QpLT5sZW5ndGgoKSk7CiAgICAgICAgIHJldHVybiB0
cnVlOwpAQCAtNjcsMTEgKzcwLDExIEBAIHN0YXRpYyBib29sIGdldChKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSBvYmplY3QsIGNvbnN0IFN0cmluCiAgICAgaWYg
KCFvYmplY3QuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgVk0mIHZt
ID0gbGV4aWNhbEdsb2JhbE9iamVjdC52bSgpOwogICAgIGF1dG8qIG9iaiA9IGFzT2JqZWN0KG9i
amVjdCk7CiAgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwga2V5UGF0aEVsZW1lbnQpOwogICAgIGlmIChvYmotPmluaGVyaXRzPEpTQXJyYXk+KHZt
KSAmJiBrZXlQYXRoRWxlbWVudCA9PSAibGVuZ3RoIikgewogICAgICAgICByZXN1bHQgPSBvYmot
PmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgaWRlbnRpZmllcik7CisgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
ICAgIGlmIChvYmotPmluaGVyaXRzPEpTQmxvYj4odm0pICYmIChrZXlQYXRoRWxlbWVudCA9PSAi
c2l6ZSIgfHwga2V5UGF0aEVsZW1lbnQgPT0gInR5cGUiKSkgewpAQCAtMTAwLDEyICsxMDMsMTUg
QEAgc3RhdGljIGJvb2wgZ2V0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIG9iamVjdCwgY29uc3QgU3RyaW4KICAgICB9CiAKICAgICBQcm9wZXJ0eURlc2NyaXB0
b3IgZGVzY3JpcHRvcjsKLSAgICBpZiAoIW9iai0+Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyLCBkZXNjcmlwdG9yKSkKKyAgICBib29sIGZv
dW5kID0gb2JqLT5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoJmxleGljYWxHbG9iYWxPYmplY3Qs
IGlkZW50aWZpZXIsIGRlc2NyaXB0b3IpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGZhbHNlKTsKKyAgICBpZiAoIWZvdW5kKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYg
KCFkZXNjcmlwdG9yLmVudW1lcmFibGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
cmVzdWx0ID0gb2JqLT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIGlkZW50aWZpZXIpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IApAQCAtMTE1LDExICsxMjEsMTAgQEAgc3RhdGljIGJvb2wgY2FuU2V0KEpTVmFsdWUgb2JqZWN0
LCBjb25zdCBTdHJpbmcmIGtleVBhdGhFbGVtZW50KQogICAgIHJldHVybiBvYmplY3QuaXNPYmpl
Y3QoKTsKIH0KIAotc3RhdGljIGJvb2wgc2V0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU1ZhbHVlJiBvYmplY3QsIGNvbnN0IFN0cmluZyYga2V5UGF0aEVsZW1lbnQsIEpT
VmFsdWUganNWYWx1ZSkKK3N0YXRpYyBib29sIHNldChWTSYgdm0sIEpTVmFsdWUmIG9iamVjdCwg
Y29uc3QgU3RyaW5nJiBrZXlQYXRoRWxlbWVudCwgSlNWYWx1ZSBqc1ZhbHVlKQogewogICAgIGlm
ICghY2FuU2V0KG9iamVjdCwga2V5UGF0aEVsZW1lbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgVk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC52bSgpOwogICAgIElkZW50aWZpZXIg
aWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIGtleVBhdGhFbGVtZW50KTsK
ICAgICBhc09iamVjdChvYmplY3QpLT5wdXREaXJlY3Qodm0sIGlkZW50aWZpZXIsIGpzVmFsdWUp
OwogICAgIHJldHVybiB0cnVlOwpAQCAtMTY0LDExICsxNjksMTEgQEAgSlNWYWx1ZSB0b0pTKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0dsb2JhbE9iamVjdCYgZ2xvYmFs
T2JqZWN0LAogICAgICAgICByZXR1cm4gSlNBcnJheUJ1ZmZlcjo6Y3JlYXRlKGxleGljYWxHbG9i
YWxPYmplY3Qudm0oKSwgc3RydWN0dXJlLCBXVEZNb3ZlKGFycmF5QnVmZmVyKSk7CiAgICAgfQog
ICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpTdHJpbmc6Ci0gICAgICAgIHJldHVybiBqc1N0
cmluZ1dpdGhDYWNoZSgmbGV4aWNhbEdsb2JhbE9iamVjdCwga2V5LT5zdHJpbmcoKSk7CisgICAg
ICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZSh2bSwga2V5LT5zdHJpbmcoKSk7CiAgICAgY2Fz
ZSBJbmRleGVkREI6OktleVR5cGU6OkRhdGU6CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3Vs
ZCBwcm9iYWJseSBiZSB0b0pTPElETERhdGU+KC4uLikgYXMgcGVyOgogICAgICAgICAvLyBodHRw
Oi8vdzNjLmdpdGh1Yi5pby9JbmRleGVkREIvI3JlcXVlc3QtY29udmVydC1hLWtleS10by1hLXZh
bHVlCi0gICAgICAgIHJldHVybiB0b0pTPElETE51bGxhYmxlPElETERhdGU+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCBrZXktPmRhdGUoKSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgdG9KUzxJRExOdWxsYWJsZTxJRExEYXRlPj4obGV4aWNhbEdsb2JhbE9iamVjdCwga2V5LT5k
YXRlKCkpKTsKICAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6TnVtYmVyOgogICAgICAgICBy
ZXR1cm4ganNOdW1iZXIoa2V5LT5udW1iZXIoKSk7CiAgICAgY2FzZSBJbmRleGVkREI6OktleVR5
cGU6Ok1pbjoKQEAgLTE4OSwxNCArMTk0LDE3IEBAIHN0YXRpYyBSZWZQdHI8SURCS2V5PiBjcmVh
dGVJREJLZXlGcm9tVmFsdWUoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsCiAg
ICAgVk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGlmICh2YWx1ZS5pc051bWJlcigpICYmICFz
dGQ6OmlzbmFuKHZhbHVlLnRvTnVtYmVyKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSkpCi0gICAgICAg
IHJldHVybiBJREJLZXk6OmNyZWF0ZU51bWJlcih2YWx1ZS50b051bWJlcigmbGV4aWNhbEdsb2Jh
bE9iamVjdCkpOworICAgIGlmICh2YWx1ZS5pc051bWJlcigpICYmICFzdGQ6OmlzbmFuKHZhbHVl
LmFzTnVtYmVyKCkpKQorICAgICAgICByZXR1cm4gSURCS2V5OjpjcmVhdGVOdW1iZXIodmFsdWUu
YXNOdW1iZXIoKSk7CiAKLSAgICBpZiAodmFsdWUuaXNTdHJpbmcoKSkKLSAgICAgICAgcmV0dXJu
IElEQktleTo6Y3JlYXRlU3RyaW5nKGFzU3RyaW5nKHZhbHVlKS0+dmFsdWUoJmxleGljYWxHbG9i
YWxPYmplY3QpKTsKKyAgICBpZiAodmFsdWUuaXNTdHJpbmcoKSkgeworICAgICAgICBhdXRvIHN0
cmluZyA9IGFzU3RyaW5nKHZhbHVlKS0+dmFsdWUoJmxleGljYWxHbG9iYWxPYmplY3QpOworICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAgICByZXR1cm4gSURC
S2V5OjpjcmVhdGVTdHJpbmcoV1RGTW92ZShzdHJpbmcpKTsKKyAgICB9CiAKICAgICBpZiAodmFs
dWUuaW5oZXJpdHM8RGF0ZUluc3RhbmNlPih2bSkpIHsKLSAgICAgICAgYXV0byBkYXRlVmFsdWUg
PSB2YWx1ZVRvRGF0ZShsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CisgICAgICAgIGF1dG8g
ZGF0ZVZhbHVlID0gdmFsdWVUb0RhdGUodm0sIHZhbHVlKTsKICAgICAgICAgaWYgKCFzdGQ6Omlz
bmFuKGRhdGVWYWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gSURCS2V5OjpjcmVhdGVEYXRlKGRh
dGVWYWx1ZSk7CiAgICAgfQpAQCAtMjE5LDYgKzIyNyw3IEBAIHN0YXRpYyBSZWZQdHI8SURCS2V5
PiBjcmVhdGVJREJLZXlGcm9tVmFsdWUoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsCiAgICAgICAgICAgICAgICAgSlNWYWx1ZSBpdGVtID0gYXJyYXktPmdldEluZGV4KCZsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBpKTsKICAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOwogICAgICAgICAgICAgICAgIFJlZlB0cjxJREJLZXk+IHN1YmtleSA9IGNy
ZWF0ZUlEQktleUZyb21WYWx1ZShsZXhpY2FsR2xvYmFsT2JqZWN0LCBpdGVtLCBzdGFjayk7Cisg
ICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAgICAg
ICAgICAgICBpZiAoIXN1YmtleSkKICAgICAgICAgICAgICAgICAgICAgc3Via2V5cy5hcHBlbmQo
SURCS2V5OjpjcmVhdGVJbnZhbGlkKCkpOwogICAgICAgICAgICAgICAgIGVsc2UKQEAgLTI1OSw3
ICsyNjgsNyBAQCBzdGF0aWMgSlNWYWx1ZSBnZXROdGhWYWx1ZU9uS2V5UGF0aChKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZQogICAgIHJldHVybiBjdXJyZW50VmFs
dWU7CiB9CiAKLXN0YXRpYyBSZWZQdHI8SURCS2V5PiBpbnRlcm5hbENyZWF0ZUlEQktleUZyb21T
Y3JpcHRWYWx1ZUFuZEtleVBhdGgoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IGNvbnN0IEpTVmFsdWUmIHZhbHVlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpCitzdGF0aWMgUmVm
UHRyPElEQktleT4gaW50ZXJuYWxDcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRo
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBjb25z
dCBTdHJpbmcmIGtleVBhdGgpCiB7CiAgICAgVmVjdG9yPFN0cmluZz4ga2V5UGF0aEVsZW1lbnRz
OwogICAgIElEQktleVBhdGhQYXJzZUVycm9yIGVycm9yOwpAQCAtMjgzLDcgKzI5Miw3IEBAIHN0
YXRpYyBKU1ZhbHVlIGVuc3VyZU50aFZhbHVlT25LZXlQYXRoKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgICAgIGNvbnN0IFN0cmluZyYga2V5UGF0aEVsZW1l
bnQgPSBrZXlQYXRoRWxlbWVudHNbaV07CiAgICAgICAgIGlmICghZ2V0KGxleGljYWxHbG9iYWxP
YmplY3QsIHBhcmVudFZhbHVlLCBrZXlQYXRoRWxlbWVudCwgY3VycmVudFZhbHVlKSkgewogICAg
ICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKLSAgICAgICAgICAgIGlmICghc2V0KGxleGljYWxHbG9iYWxPYmplY3Qs
IHBhcmVudFZhbHVlLCBrZXlQYXRoRWxlbWVudCwgSlNWYWx1ZShvYmplY3QpKSkKKyAgICAgICAg
ICAgIGlmICghc2V0KGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSwgcGFyZW50VmFsdWUsIGtleVBh
dGhFbGVtZW50LCBKU1ZhbHVlKG9iamVjdCkpKQogICAgICAgICAgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwogICAgICAgICAgICAgY3VycmVudFZhbHVlID0gSlNWYWx1ZShvYmplY3QpOwog
ICAgICAgICB9CkBAIC0zMzUsMTQgKzM0NCwxNCBAQCBib29sIGluamVjdElEQktleUludG9TY3Jp
cHRWYWx1ZShKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgY29uc3QgSURCSwog
ICAgIEpTVmFsdWUgZXhpc3RpbmdLZXk7CiAgICAgaWYgKGdldChsZXhpY2FsR2xvYmFsT2JqZWN0
LCBwYXJlbnQsIGtleVBhdGhFbGVtZW50cy5sYXN0KCksIGV4aXN0aW5nS2V5KSAmJiAha2V5LT5j
b21wYXJlKGNyZWF0ZUlEQktleUZyb21WYWx1ZShsZXhpY2FsR2xvYmFsT2JqZWN0LCBleGlzdGlu
Z0tleSkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoIXNldChsZXhpY2FsR2xvYmFs
T2JqZWN0LCBwYXJlbnQsIGtleVBhdGhFbGVtZW50cy5sYXN0KCksIHRvSlMobGV4aWNhbEdsb2Jh
bE9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwga2V5LmdldCgpKSkpCisgICAgaWYgKCFzZXQo
bGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCBwYXJlbnQsIGtleVBhdGhFbGVtZW50cy5sYXN0KCks
IHRvSlMobGV4aWNhbEdsb2JhbE9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwga2V5LmdldCgp
KSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiB0cnVlOwogfQogCiAKLVJl
ZlB0cjxJREJLZXk+IG1heWJlQ3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgY29uc3QgSlNWYWx1ZSYgdmFsdWUs
IGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgpCitSZWZQdHI8SURCS2V5PiBtYXliZUNyZWF0ZUlE
QktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTVmFsdWUgdmFsdWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgpCiB7CiAg
ICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8VmVjdG9yPFN0cmluZz4+KGtleVBhdGgpKSB7
CiAgICAgICAgIGF1dG8mIGFycmF5ID0gV1RGOjpnZXQ8VmVjdG9yPFN0cmluZz4+KGtleVBhdGgp
OwpAQCAtMzYwLDcgKzM2OSw3IEBAIFJlZlB0cjxJREJLZXk+IG1heWJlQ3JlYXRlSURCS2V5RnJv
bVNjcmlwdFZhbHVlQW5kS2V5UGF0aChKU0dsb2JhbE9iamVjdCYgbGV4aWNhCiAgICAgcmV0dXJu
IGludGVybmFsQ3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSwgV1RGOjpnZXQ8U3RyaW5nPihrZXlQYXRoKSk7CiB9CiAKLWJvb2wg
Y2FuSW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBjb25zdCBKU1ZhbHVlJiBzY3JpcHRWYWx1ZSwgY29uc3QgSURCS2V5UGF0aCYg
a2V5UGF0aCkKK2Jvb2wgY2FuSW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHNjcmlwdFZhbHVlLCBjb25zdCBJREJL
ZXlQYXRoJiBrZXlQYXRoKQogewogICAgIExPRyhTdG9yYWdlQVBJLCAiY2FuSW5qZWN0SURCS2V5
SW50b1NjcmlwdFZhbHVlIik7CiAKQEAgLTQwOSw3ICs0MTgsNyBAQCBKU0M6OkpTVmFsdWUgdG9K
UyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9i
amVjdCogZwogICAgIHJldHVybiBkZXNlcmlhbGl6ZUlEQlZhbHVlVG9KU1ZhbHVlKCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCAqZ2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiB9CiAKLVJlZjxJREJLZXk+IHNj
cmlwdFZhbHVlVG9JREJLZXkoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIGNv
bnN0IEpTVmFsdWUmIHNjcmlwdFZhbHVlKQorUmVmPElEQktleT4gc2NyaXB0VmFsdWVUb0lEQktl
eShKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSBzY3JpcHRWYWx1
ZSkKIHsKICAgICByZXR1cm4gY3JlYXRlSURCS2V5RnJvbVZhbHVlKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHNjcmlwdFZhbHVlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lE
QkJpbmRpbmdVdGlsaXRpZXMuaAppbmRleCA4YWI3NGY4ODc5MGY2ZGRkMjE2ZjA1YTU4MGMzYjFm
NDIzZjhjMTYyLi5kNWVkY2FiNjI4NTNiMmRlZTUwNTgxNzFjNDY5Yjg2YzYwNmFkMGM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oCkBA
IC00OCwxNSArNDgsMTUgQEAgY2xhc3MgSURCVmFsdWU7CiBjbGFzcyBJbmRleEtleTsKIGNsYXNz
IEpTRE9NR2xvYmFsT2JqZWN0OwogCi1SZWZQdHI8SURCS2V5PiBtYXliZUNyZWF0ZUlEQktleUZy
b21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoSlNDOjpKU0dsb2JhbE9iamVjdCYsIGNvbnN0IEpTQzo6
SlNWYWx1ZSYsIGNvbnN0IElEQktleVBhdGgmKTsKLWJvb2wgY2FuSW5qZWN0SURCS2V5SW50b1Nj
cmlwdFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBjb25zdCBKU0M6OkpTVmFsdWUmLCBjb25z
dCBJREJLZXlQYXRoJik7CitSZWZQdHI8SURCS2V5PiBtYXliZUNyZWF0ZUlEQktleUZyb21TY3Jp
cHRWYWx1ZUFuZEtleVBhdGgoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSwgY29u
c3QgSURCS2V5UGF0aCYpOworYm9vbCBjYW5JbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoSlND
OjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSwgY29uc3QgSURCS2V5UGF0aCYpOwogYm9v
bCBpbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIGNvbnN0
IElEQktleURhdGEmLCBKU0M6OkpTVmFsdWUsIGNvbnN0IElEQktleVBhdGgmKTsKIAogdm9pZCBn
ZW5lcmF0ZUluZGV4S2V5Rm9yVmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIGNvbnN0IElEQklu
ZGV4SW5mbyYsIEpTQzo6SlNWYWx1ZSwgSW5kZXhLZXkmIG91dEtleSwgY29uc3QgT3B0aW9uYWw8
SURCS2V5UGF0aD4mLCBjb25zdCBJREJLZXlEYXRhJik7CiAKIEluZGV4SURUb0luZGV4S2V5TWFw
IGdlbmVyYXRlSW5kZXhLZXlNYXBGb3JWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiwgY29uc3Qg
SURCT2JqZWN0U3RvcmVJbmZvJiwgY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IElEQlZhbHVlJik7
CiAKLVJlZjxJREJLZXk+IHNjcmlwdFZhbHVlVG9JREJLZXkoSlNDOjpKU0dsb2JhbE9iamVjdCYs
IGNvbnN0IEpTQzo6SlNWYWx1ZSYpOworUmVmPElEQktleT4gc2NyaXB0VmFsdWVUb0lEQktleShK
U0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlKTsKIAogSlNDOjpKU1ZhbHVlIGRlc2Vy
aWFsaXplSURCVmFsdWVUb0pTVmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIGNvbnN0IElEQlZh
bHVlJiwgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+Jik7CiBKU0M6OkpTVmFsdWUg
ZGVzZXJpYWxpemVJREJWYWx1ZVRvSlNWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiwgY29uc3Qg
SURCVmFsdWUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3Vz
dG9tWFBhdGhOU1Jlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3Vz
dG9tWFBhdGhOU1Jlc29sdmVyLmNwcAppbmRleCBkZjU2MmQwNThiZjE3MzBhYTU1MGVmY2M5ODdi
NWY1NDMyMzgzOTkzLi44NjY5M2U2OTcwNzA2MDVjNDhjZDI2NTVhZmZhMDEyZjQ1NGUwNDc2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNv
bHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5T
UmVzb2x2ZXIuY3BwCkBAIC04OCw3ICs4OCw3IEBAIFN0cmluZyBKU0N1c3RvbVhQYXRoTlNSZXNv
bHZlcjo6bG9va3VwTmFtZXNwYWNlVVJJKGNvbnN0IFN0cmluZyYgcHJlZml4KQogICAgIFJlZjxK
U0N1c3RvbVhQYXRoTlNSZXNvbHZlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBNYXJr
ZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwotICAgIGFyZ3MuYXBwZW5kKGpzU3RyaW5nV2l0aENhY2hl
KGxleGljYWxHbG9iYWxPYmplY3QsIHByZWZpeCkpOworICAgIGFyZ3MuYXBwZW5kKGpzU3RyaW5n
V2l0aENhY2hlKHZtLCBwcmVmaXgpKTsKICAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgp
KTsKIAogICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiBleGNlcHRpb247CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnREYXRlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydERhdGUuY3BwCmluZGV4IDY0MGU3N2Uz
MzYwZmY3ZTY5YTNiNzA5YzZjZGJjODA3NTFiMGU5OTMuLjhhYmZhYWNiOWFkOGZjMTQyYTRhNDk5
ZGZmMWNiMTY5ZmFhOTI5N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQ29udmVydERhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQ29udmVydERhdGUuY3BwCkBAIC0zNiwxMyArMzYsMTMgQEAgSlNWYWx1ZSBqc0RhdGUoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIGRvdWJsZSB2YWx1ZSkKICAgICByZXR1
cm4gRGF0ZUluc3RhbmNlOjpjcmVhdGUobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCBsZXhpY2Fs
R2xvYmFsT2JqZWN0LmRhdGVTdHJ1Y3R1cmUoKSwgdmFsdWUpOwogfQogCi1kb3VibGUgdmFsdWVU
b0RhdGUoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUp
Citkb3VibGUgdmFsdWVUb0RhdGUoVk0mIHZtLCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGlmICh2
YWx1ZS5pc051bWJlcigpKQogICAgICAgICByZXR1cm4gdmFsdWUuYXNOdW1iZXIoKTsKLSAgICBp
ZiAoIXZhbHVlLmluaGVyaXRzPERhdGVJbnN0YW5jZT4obGV4aWNhbEdsb2JhbE9iamVjdC52bSgp
KSkKKyAgICBpZiAoIXZhbHVlLmluaGVyaXRzPERhdGVJbnN0YW5jZT4odm0pKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKTsKLSAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8RGF0ZUluc3RhbmNlKj4odmFsdWUudG9PYmplY3QoJmxleGljYWxHbG9i
YWxPYmplY3QpKS0+aW50ZXJuYWxOdW1iZXIoKTsKKyAgICByZXR1cm4ganNDYXN0PERhdGVJbnN0
YW5jZSo+KHZhbHVlKS0+aW50ZXJuYWxOdW1iZXIoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0
RGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0RGF0ZS5oCmlu
ZGV4IDUyNWFlODcwMzY1MTZkMmI1ZWQ3ZmU4MjkxMGFkYmFiNjk1NzE3MGYuLjA0NDFhYTE4YWY2
MzIyNmIxNjVkOTdhMjUwZjgzZjMxZmI3MGM3MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydERhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUNvbnZlcnREYXRlLmgKQEAgLTMxLDEyICszMSwxMiBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBKU0M6OkpTVmFsdWUganNEYXRlKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBk
b3VibGUgdmFsdWUpOwotZG91YmxlIHZhbHVlVG9EYXRlKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBK
U0M6OkpTVmFsdWUpOyAvLyBOYU4gaWYgdGhlIHZhbHVlIGNhbid0IGJlIGNvbnZlcnRlZCB0byBh
IGRhdGUuCitkb3VibGUgdmFsdWVUb0RhdGUoSlNDOjpWTSYsIEpTQzo6SlNWYWx1ZSk7IC8vIE5h
TiBpZiB0aGUgdmFsdWUgY2FuJ3QgYmUgY29udmVydGVkIHRvIGEgZGF0ZS4KIAogdGVtcGxhdGU8
PiBzdHJ1Y3QgQ29udmVydGVyPElETERhdGU+IDogRGVmYXVsdENvbnZlcnRlcjxJRExEYXRlPiB7
CiAgICAgc3RhdGljIGRvdWJsZSBjb252ZXJ0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiB2
YWx1ZVRvRGF0ZShsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CisgICAgICAgIHJldHVybiB2
YWx1ZVRvRGF0ZShsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCksIHZhbHVlKTsKICAgICB9CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRTdHJp
bmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRTdHJpbmdzLmgK
aW5kZXggY2JhZWZiY2ZmMGRiM2YzMTA4ZDY2MGRjNTYzNWE1YzU4NjYxZTM3ZC4uNDY4Y2QxZTg1
Y2JkZjcxZTlkNzExNjA4ZjYwMTk0MGYwODYyM2JkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0U3RyaW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFN0cmluZ3MuaApAQCAtNjMsNyArNjMsNyBAQCB0ZW1w
bGF0ZTw+IHN0cnVjdCBKU0NvbnZlcnRlcjxJRExET01TdHJpbmc+IHsKIAogICAgIHN0YXRpYyBK
U0M6OkpTVmFsdWUgY29udmVydChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEpTQzo6anNT
dHJpbmdXaXRoQ2FjaGUoJmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKKyAgICAgICAgcmV0
dXJuIEpTQzo6anNTdHJpbmdXaXRoQ2FjaGUoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCksIHZhbHVlKTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGNvbnZlcnQoSlND
OjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgY29uc3QgVW5jYWNoZWRTdHJp
bmcmIHZhbHVlKQpAQCAtOTUsNyArOTUsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBKU0NvbnZlcnRl
cjxJRExCeXRlU3RyaW5nPiB7CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGNvbnZlcnQoSlND
OjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiB2YWx1
ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBKU0M6OmpzU3RyaW5nV2l0aENhY2hlKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB2YWx1ZSk7CisgICAgICAgIHJldHVybiBKU0M6OmpzU3RyaW5nV2l0aENh
Y2hlKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCB2YWx1ZSk7CiAgICAgfQogCiAg
ICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBjb252ZXJ0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIGNvbnN0IFVuY2FjaGVkU3RyaW5nJiB2YWx1ZSkKQEAgLTEyNiw3ICsx
MjYsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBKU0NvbnZlcnRlcjxJRExVU1ZTdHJpbmc+IHsKIAog
ICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgY29udmVydChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIEpTQzo6anNTdHJpbmdXaXRoQ2FjaGUoJmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
KyAgICAgICAgcmV0dXJuIEpTQzo6anNTdHJpbmdXaXRoQ2FjaGUoSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCksIHZhbHVlKTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVl
IGNvbnZlcnQoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgY29uc3Qg
VW5jYWNoZWRTdHJpbmcmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01Db252ZXJ0V2ViR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01Db252ZXJ0V2ViR0wuY3BwCmluZGV4IGY1ZDgzM2U4NjhkYWJmMjE3N2UwM2VjODZjN2Vk
ODc1MGZkOGE2ODUuLjBkNWQwZTFiMWI0ZjA2NTM2NmIyOTdlODFmNmRmMmQ4NmYzN2QyYTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFdlYkdMLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRXZWJHTC5jcHAK
QEAgLTkzLDcgKzkzLDcgQEAgSlNWYWx1ZSBjb252ZXJ0VG9KU1ZhbHVlKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCYKICAgICAgICAgICAgIHJl
dHVybiBqc051bWJlcih2YWx1ZSk7CiAgICAgICAgIH0sCiAgICAgICAgIFsmXSAoY29uc3QgU3Ry
aW5nJiB2YWx1ZSkgewotICAgICAgICAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm4ganNTdHJpbmdXaXRo
Q2FjaGUobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCB2YWx1ZSk7CiAgICAgICAgIH0sCiAgICAg
ICAgIFsmXSAoY29uc3QgVmVjdG9yPGJvb2w+JiB2YWx1ZXMpIHsKICAgICAgICAgICAgIE1hcmtl
ZEFyZ3VtZW50QnVmZmVyIGxpc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTGF6eUV2ZW50TGlzdGVuZXIuY3BwCmluZGV4IDE1YzdhMTY0MGZmYzIxNDU4YjgxZmVhYzE3
MGEyYzY3Njc1YjEzZGQuLjk4N2NiYTRjMzFiNzBlNThiNDFlM2E2NmFjY2YwYmEyYTZmNzU4OGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVu
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVu
ZXIuY3BwCkBAIC0xNTAsNyArMTUwLDcgQEAgSlNPYmplY3QqIEpTTGF6eUV2ZW50TGlzdGVuZXI6
OmluaXRpYWxpemVKU0Z1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGV4ZWMKIAogICAg
IE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAgICAgYXJncy5hcHBlbmQoanNOb250cml2aWFs
U3RyaW5nKHZtLCBtX2V2ZW50UGFyYW1ldGVyTmFtZSkpOwotICAgIGFyZ3MuYXBwZW5kKGpzU3Ry
aW5nV2l0aENhY2hlKGxleGljYWxHbG9iYWxPYmplY3QsIG1fY29kZSkpOworICAgIGFyZ3MuYXBw
ZW5kKGpzU3RyaW5nV2l0aENhY2hlKHZtLCBtX2NvZGUpKTsKICAgICBBU1NFUlQoIWFyZ3MuaGFz
T3ZlcmZsb3dlZCgpKTsKIAogICAgIC8vIFdlIHdhbnQgYWxsIGVycm9ycyB0byByZWZlciBiYWNr
IHRvIHRoZSBsaW5lIG9uIHdoaWNoIG91ciBhdHRyaWJ1dGUgd2FzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDM0NjAwNTE2
YTVmYzA5ZDFkMTRlYzAxZTRlNTU5MTFmMzAxZGZhZmUuLmY4NDUwNzFkY2I0MjVlYzM5MTlkYjI4
ZTVhMmZjOTMwZjlkMzU2ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0yMTIwLDcgKzIxMjAsNyBAQCBzdWIgR2VuZXJh
dGVFbnVtZXJhdGlvbkltcGxlbWVudGF0aW9uQ29udGVudAogICAgICMgRklYTUU6IENoYW5nZSB0
byB0YWtlIFZNJiBpbnN0ZWFkIG9mIEpTR2xvYmFsT2JqZWN0Ki4KICAgICAkcmVzdWx0IC49ICJ0
ZW1wbGF0ZTw+IEpTU3RyaW5nKiBjb252ZXJ0RW51bWVyYXRpb25Ub0pTKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCAkY2xhc3NOYW1lIGVudW1lcmF0aW9uVmFsdWUpXG4iOwog
ICAgICRyZXN1bHQgLj0gIntcbiI7Ci0gICAgJHJlc3VsdCAuPSAiICAgIHJldHVybiBqc1N0cmlu
Z1dpdGhDYWNoZSgmbGV4aWNhbEdsb2JhbE9iamVjdCwgY29udmVydEVudW1lcmF0aW9uVG9TdHJp
bmcoZW51bWVyYXRpb25WYWx1ZSkpO1xuIjsKKyAgICAkcmVzdWx0IC49ICIgICAgcmV0dXJuIGpz
U3RyaW5nV2l0aENhY2hlKGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSwgY29udmVydEVudW1lcmF0
aW9uVG9TdHJpbmcoZW51bWVyYXRpb25WYWx1ZSkpO1xuIjsKICAgICAkcmVzdWx0IC49ICJ9XG5c
biI7CiAKICAgICAjIEZJWE1FOiBDaGFuZ2UgdG8gdGFrZSBWTSYgaW5zdGVhZCBvZiBKU0dsb2Jh
bE9iamVjdCYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrSW50ZXJmYWNlLmNwcAppbmRleCBjMDdj
NjgyNmI1NjY1NzhiYWJkOWUwZjhmNWJjOWE3YmZhMmY0ZmE0Li42Mjg5MzNmZmQ2MzM4MDA4NGMy
YTRmMTVmNTI2Njk3YTFlZGIxNGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0ludGVyZmFj
ZS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5n
KFRlc3RDYWxsYmFja0ludGVyZmFjZTo6RW51bSBlbnVtZXJhdGlvblZhbHVlKQogCiB0ZW1wbGF0
ZTw+IEpTU3RyaW5nKiBjb252ZXJ0RW51bWVyYXRpb25Ub0pTKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBUZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OkVudW0gZW51bWVyYXRpb25W
YWx1ZSkKIHsKLSAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoJmxleGljYWxHbG9iYWxPYmpl
Y3QsIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKGVudW1lcmF0aW9uVmFsdWUpKTsKKyAgICBy
ZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCBjb252ZXJ0
RW51bWVyYXRpb25Ub1N0cmluZyhlbnVtZXJhdGlvblZhbHVlKSk7CiB9CiAKIHRlbXBsYXRlPD4g
T3B0aW9uYWw8VGVzdENhbGxiYWNrSW50ZXJmYWNlOjpFbnVtPiBwYXJzZUVudW1lcmF0aW9uPFRl
c3RDYWxsYmFja0ludGVyZmFjZTo6RW51bT4oSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IGEzNGM2NzhlNmVjZmVlMzVmNTc4
NDcxZmQxYWM4OTkxOTE0YTFlNWMuLjkzMTZiYjhlODkzZTM1MjQ5YTNhMTdkYTE2ZjIyMjA4ZTNh
MTBiYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPYmouY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgU3RyaW5nIGNvbnZlcnRFbnVt
ZXJhdGlvblRvU3RyaW5nKFRlc3RPYmo6OkVudW1UeXBlIGVudW1lcmF0aW9uVmFsdWUpCiAKIHRl
bXBsYXRlPD4gSlNTdHJpbmcqIGNvbnZlcnRFbnVtZXJhdGlvblRvSlMoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIFRlc3RPYmo6OkVudW1UeXBlIGVudW1lcmF0aW9uVmFsdWUp
CiB7Ci0gICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBj
b252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhlbnVtZXJhdGlvblZhbHVlKSk7CisgICAgcmV0dXJu
IGpzU3RyaW5nV2l0aENhY2hlKGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSwgY29udmVydEVudW1l
cmF0aW9uVG9TdHJpbmcoZW51bWVyYXRpb25WYWx1ZSkpOwogfQogCiB0ZW1wbGF0ZTw+IE9wdGlv
bmFsPFRlc3RPYmo6OkVudW1UeXBlPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OkVudW1UeXBl
PihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKQEAg
LTE3OCw3ICsxNzgsNyBAQCBTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoVGVzdE9i
ajo6T3B0aW9uYWwgZW51bWVyYXRpb25WYWx1ZSkKIAogdGVtcGxhdGU8PiBKU1N0cmluZyogY29u
dmVydEVudW1lcmF0aW9uVG9KUyhKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
VGVzdE9iajo6T3B0aW9uYWwgZW51bWVyYXRpb25WYWx1ZSkKIHsKLSAgICByZXR1cm4ganNTdHJp
bmdXaXRoQ2FjaGUoJmxleGljYWxHbG9iYWxPYmplY3QsIGNvbnZlcnRFbnVtZXJhdGlvblRvU3Ry
aW5nKGVudW1lcmF0aW9uVmFsdWUpKTsKKyAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUobGV4
aWNhbEdsb2JhbE9iamVjdC52bSgpLCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhlbnVtZXJh
dGlvblZhbHVlKSk7CiB9CiAKIHRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6T3B0aW9uYWw+
IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6T3B0aW9uYWw+KEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQpAQCAtMjE0LDcgKzIxNCw3IEBAIFN0cmlu
ZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhBbHRlcm5hdGVFbnVtTmFtZSBlbnVtZXJhdGlv
blZhbHVlKQogCiB0ZW1wbGF0ZTw+IEpTU3RyaW5nKiBjb252ZXJ0RW51bWVyYXRpb25Ub0pTKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBBbHRlcm5hdGVFbnVtTmFtZSBlbnVt
ZXJhdGlvblZhbHVlKQogewotICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZSgmbGV4aWNhbEds
b2JhbE9iamVjdCwgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoZW51bWVyYXRpb25WYWx1ZSkp
OworICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCks
IGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKGVudW1lcmF0aW9uVmFsdWUpKTsKIH0KIAogdGVt
cGxhdGU8PiBPcHRpb25hbDxBbHRlcm5hdGVFbnVtTmFtZT4gcGFyc2VFbnVtZXJhdGlvbjxBbHRl
cm5hdGVFbnVtTmFtZT4oSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCkBAIC0yNDYsNyArMjQ2LDcgQEAgU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRv
U3RyaW5nKFRlc3RPYmo6OkVudW1BIGVudW1lcmF0aW9uVmFsdWUpCiAKIHRlbXBsYXRlPD4gSlNT
dHJpbmcqIGNvbnZlcnRFbnVtZXJhdGlvblRvSlMoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIFRlc3RPYmo6OkVudW1BIGVudW1lcmF0aW9uVmFsdWUpCiB7Ci0gICAgcmV0dXJu
IGpzU3RyaW5nV2l0aENhY2hlKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb252ZXJ0RW51bWVyYXRp
b25Ub1N0cmluZyhlbnVtZXJhdGlvblZhbHVlKSk7CisgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENh
Y2hlKGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSwgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmco
ZW51bWVyYXRpb25WYWx1ZSkpOwogfQogCiB0ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RPYmo6OkVu
dW1BPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OkVudW1BPihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKQEAgLTI3OCw3ICsyNzgsNyBAQCBTdHJp
bmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoVGVzdE9iajo6RW51bUIgZW51bWVyYXRpb25W
YWx1ZSkKIAogdGVtcGxhdGU8PiBKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgVGVzdE9iajo6RW51bUIgZW51bWVyYXRp
b25WYWx1ZSkKIHsKLSAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoJmxleGljYWxHbG9iYWxP
YmplY3QsIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKGVudW1lcmF0aW9uVmFsdWUpKTsKKyAg
ICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCBjb252
ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhlbnVtZXJhdGlvblZhbHVlKSk7CiB9CiAKIHRlbXBsYXRl
PD4gT3B0aW9uYWw8VGVzdE9iajo6RW51bUI+IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6RW51
bUI+KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQpA
QCAtMzEwLDcgKzMxMCw3IEBAIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhUZXN0
T2JqOjpFbnVtQyBlbnVtZXJhdGlvblZhbHVlKQogCiB0ZW1wbGF0ZTw+IEpTU3RyaW5nKiBjb252
ZXJ0RW51bWVyYXRpb25Ub0pTKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBU
ZXN0T2JqOjpFbnVtQyBlbnVtZXJhdGlvblZhbHVlKQogewotICAgIHJldHVybiBqc1N0cmluZ1dp
dGhDYWNoZSgmbGV4aWNhbEdsb2JhbE9iamVjdCwgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmco
ZW51bWVyYXRpb25WYWx1ZSkpOworICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShsZXhpY2Fs
R2xvYmFsT2JqZWN0LnZtKCksIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKGVudW1lcmF0aW9u
VmFsdWUpKTsKIH0KIAogdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpFbnVtQz4gcGFyc2VF
bnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtQz4oSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCkBAIC0zNDIsNyArMzQyLDcgQEAgU3RyaW5nIGNvbnZlcnRF
bnVtZXJhdGlvblRvU3RyaW5nKFRlc3RPYmo6OktpbmQgZW51bWVyYXRpb25WYWx1ZSkKIAogdGVt
cGxhdGU8PiBKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgVGVzdE9iajo6S2luZCBlbnVtZXJhdGlvblZhbHVlKQogewot
ICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZSgmbGV4aWNhbEdsb2JhbE9iamVjdCwgY29udmVy
dEVudW1lcmF0aW9uVG9TdHJpbmcoZW51bWVyYXRpb25WYWx1ZSkpOworICAgIHJldHVybiBqc1N0
cmluZ1dpdGhDYWNoZShsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCksIGNvbnZlcnRFbnVtZXJhdGlv
blRvU3RyaW5nKGVudW1lcmF0aW9uVmFsdWUpKTsKIH0KIAogdGVtcGxhdGU8PiBPcHRpb25hbDxU
ZXN0T2JqOjpLaW5kPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OktpbmQ+KEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQpAQCAtMzc0LDcgKzM3NCw3
IEBAIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhUZXN0T2JqOjpTaXplIGVudW1l
cmF0aW9uVmFsdWUpCiAKIHRlbXBsYXRlPD4gSlNTdHJpbmcqIGNvbnZlcnRFbnVtZXJhdGlvblRv
SlMoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIFRlc3RPYmo6OlNpemUgZW51
bWVyYXRpb25WYWx1ZSkKIHsKLSAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoJmxleGljYWxH
bG9iYWxPYmplY3QsIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKGVudW1lcmF0aW9uVmFsdWUp
KTsKKyAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUobGV4aWNhbEdsb2JhbE9iamVjdC52bSgp
LCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhlbnVtZXJhdGlvblZhbHVlKSk7CiB9CiAKIHRl
bXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6U2l6ZT4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0T2Jq
OjpTaXplPihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKQEAgLTQwNiw3ICs0MDYsNyBAQCBTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmco
VGVzdE9iajo6Q29uZmlkZW5jZSBlbnVtZXJhdGlvblZhbHVlKQogCiB0ZW1wbGF0ZTw+IEpTU3Ry
aW5nKiBjb252ZXJ0RW51bWVyYXRpb25Ub0pTKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBUZXN0T2JqOjpDb25maWRlbmNlIGVudW1lcmF0aW9uVmFsdWUpCiB7Ci0gICAgcmV0
dXJuIGpzU3RyaW5nV2l0aENhY2hlKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb252ZXJ0RW51bWVy
YXRpb25Ub1N0cmluZyhlbnVtZXJhdGlvblZhbHVlKSk7CisgICAgcmV0dXJuIGpzU3RyaW5nV2l0
aENhY2hlKGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSwgY29udmVydEVudW1lcmF0aW9uVG9TdHJp
bmcoZW51bWVyYXRpb25WYWx1ZSkpOwogfQogCiB0ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RPYmo6
OkNvbmZpZGVuY2U+IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6Q29uZmlkZW5jZT4oSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9u
ZURpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5LmNwcAppbmRleCBhMTc5ZGNjY2E2NzhiYjQ3MTBm
ZjQyNjQzMWZkMjE1NTQ5Njk0MjIyLi5lYmU2ZGI1ODUzZDVkYTFkMjM0MmQxZGNkNDAwMjlmMmQ5
M2VhNDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRGljdGlvbmFyeS5jcHAKQEAg
LTMyOCw3ICszMjgsNyBAQCBTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoVGVzdFN0
YW5kYWxvbmVEaWN0aW9uYXJ5OjpFbnVtSW5TdGFuZGFsb25lRGljdAogCiB0ZW1wbGF0ZTw+IEpT
U3RyaW5nKiBjb252ZXJ0RW51bWVyYXRpb25Ub0pTKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnk6OkVudW1JblN0YW5kYWxvbmVEaWN0
aW9uYXJ5RmlsZSBlbnVtZXJhdGlvblZhbHVlKQogewotICAgIHJldHVybiBqc1N0cmluZ1dpdGhD
YWNoZSgmbGV4aWNhbEdsb2JhbE9iamVjdCwgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoZW51
bWVyYXRpb25WYWx1ZSkpOworICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShsZXhpY2FsR2xv
YmFsT2JqZWN0LnZtKCksIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKGVudW1lcmF0aW9uVmFs
dWUpKTsKIH0KIAogdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnk6
OkVudW1JblN0YW5kYWxvbmVEaWN0aW9uYXJ5RmlsZT4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0U3Rh
bmRhbG9uZURpY3Rpb25hcnk6OkVudW1JblN0YW5kYWxvbmVEaWN0aW9uYXJ5RmlsZT4oSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9u
ZUVudW1lcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTdGFuZGFsb25lRW51bWVyYXRpb24uY3BwCmluZGV4IDkxNjNhYzJhMjg1MzI1OGVj
ZTVjNWEwZWI0YjFkMzhkOWZmYWEwZWYuLjVlZDc5ODA4ZWU4MTg2NGIxZDY4NmM4YjY0M2NhYjMz
Y2RjYTEzOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTdGFuZGFsb25lRW51bWVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRW51bWVyYXRpb24uY3Bw
CkBAIC00Niw3ICs0Niw3IEBAIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhUZXN0
U3RhbmRhbG9uZUVudW1lcmF0aW9uIGVudW1lcmF0aW9uVmFsdWUpCiAKIHRlbXBsYXRlPD4gSlNT
dHJpbmcqIGNvbnZlcnRFbnVtZXJhdGlvblRvSlMoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIFRlc3RTdGFuZGFsb25lRW51bWVyYXRpb24gZW51bWVyYXRpb25WYWx1ZSkKIHsK
LSAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoJmxleGljYWxHbG9iYWxPYmplY3QsIGNvbnZl
cnRFbnVtZXJhdGlvblRvU3RyaW5nKGVudW1lcmF0aW9uVmFsdWUpKTsKKyAgICByZXR1cm4ganNT
dHJpbmdXaXRoQ2FjaGUobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCBjb252ZXJ0RW51bWVyYXRp
b25Ub1N0cmluZyhlbnVtZXJhdGlvblZhbHVlKSk7CiB9CiAKIHRlbXBsYXRlPD4gT3B0aW9uYWw8
VGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlvbj4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0U3RhbmRhbG9u
ZUVudW1lcmF0aW9uPihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1
ZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfdXRpbGl0eS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX3V0aWxpdHkuY3BwCmluZGV4IGFlY2I3M2Nk
YTBhOWM2M2Y4MDdhM2E1ODFjYzZiODBmMmIyNmU3ODUuLmQ3OTFiODI1MjY0YjlmYTcwNjA1NDFm
MzA1ZWViMGJjMzY1NzgwMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2Nf
dXRpbGl0eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY191dGlsaXR5LmNwcApA
QCAtMTI0LDcgKzEyNCw3IEBAIEpTVmFsdWUgY29udmVydE5QVmFyaWFudFRvVmFsdWUoSlNHbG9i
YWxPYmplY3QqIGV4ZWMsIGNvbnN0IE5QVmFyaWFudCogdmFyaWFudCwKICAgICBpZiAodHlwZSA9
PSBOUFZhcmlhbnRUeXBlX0RvdWJsZSkKICAgICAgICAgcmV0dXJuIGpzTnVtYmVyKE5QVkFSSUFO
VF9UT19ET1VCTEUoKnZhcmlhbnQpKTsKICAgICBpZiAodHlwZSA9PSBOUFZhcmlhbnRUeXBlX1N0
cmluZykKLSAgICAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIGNvbnZlcnROUFN0
cmluZ1RvVVRGMTYoJnZhcmlhbnQtPnZhbHVlLnN0cmluZ1ZhbHVlKSk7CisgICAgICAgIHJldHVy
biBqc1N0cmluZ1dpdGhDYWNoZShleGVjLT52bSgpLCBjb252ZXJ0TlBTdHJpbmdUb1VURjE2KCZ2
YXJpYW50LT52YWx1ZS5zdHJpbmdWYWx1ZSkpOwogICAgIGlmICh0eXBlID09IE5QVmFyaWFudFR5
cGVfT2JqZWN0KSB7CiAgICAgICAgIE5QT2JqZWN0KiBvYmogPSB2YXJpYW50LT52YWx1ZS5vYmpl
Y3RWYWx1ZTsKICAgICAgICAgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTNmMzZiZDg0NjU1ZTJmYzAxMDJkODlkMjNhMGU4
MzRiZGI0ZWRlYS4uZWMxMDkyYzAwZjc5OThiYTViZGFkY2M2NzRmOThjNDZhYWMwZmNlMiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA3LTI3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBh
cHBsZS5jb20+CisKKyAgICAgICAgSW5kZXhlZERCIGJpbmRpbmcgdXRpbGl0aWVzIG1pc3MgZXhj
ZXB0aW9uIGNoZWNrcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE0ODIwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82NjE1MjM3ND4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGpzL2RvbS9pbmRleGVk
LWRiLW9wZXJhdGlvbnMtZXhjZXB0aW9uLWNoZWNrcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGpzL2RvbS9pbmRleGVkLWRiLW9wZXJhdGlvbnMtZXhjZXB0aW9uLWNoZWNrcy5odG1s
OiBBZGRlZC4KKwogMjAyMC0wNy0yNSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxl
LmNvbT4KIAogICAgICAgICBTY3JvbGwgU25hcCBicm9rZW4gd2hlbiB1c2luZyBSVEwgbGF5b3V0
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vaW5kZXhlZC1kYi1vcGVyYXRpb25zLWV4
Y2VwdGlvbi1jaGVja3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvZG9tL2luZGV4ZWQt
ZGItb3BlcmF0aW9ucy1leGNlcHRpb24tY2hlY2tzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
M2U1ZWVlZGJmMWI0MzVmOTZjM2EyMGJmODE0MDFhZWU0MzMxOTgxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvanMvZG9tL2luZGV4ZWQtZGItb3BlcmF0aW9ucy1leGNlcHRpb24tY2hl
Y2tzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9k
b20vaW5kZXhlZC1kYi1vcGVyYXRpb25zLWV4Y2VwdGlvbi1jaGVja3MuaHRtbCBiL0xheW91dFRl
c3RzL2pzL2RvbS9pbmRleGVkLWRiLW9wZXJhdGlvbnMtZXhjZXB0aW9uLWNoZWNrcy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjUwMWMzYTNkNGJkMWUzOTBkNTkxZDYzNTYzYTE0ZGNkMTc4YTZiZTgKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vaW5kZXhlZC1kYi1vcGVyYXRpb25zLWV4
Y2VwdGlvbi1jaGVja3MuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgaHRtbD48IS0t
IHdlYmtpdC10ZXN0LXJ1bm5lciBbIGpzY09wdGlvbnM9LS12YWxpZGF0ZUV4Y2VwdGlvbkNoZWNr
cz10cnVlIF0gLS0+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CitJ
REJLZXlSYW5nZS5ib3VuZCgwLCAwKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="420723"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405336</attachid>
            <date>2020-07-27 19:01:25 -0700</date>
            <delta_ts>2020-07-28 09:15:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214820-20200727190124.patch</filename>
            <type>text/plain</type>
            <size>34794</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0OTYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
ZmY2MzhlYTlmZWE0OWMzYjNmNGZiMTdjZTBlMDVjNDZiZjdlZmNiLi5iMDMyNzBjY2RhOWNjNmE2
MWQ4ZmRhZGVjMTk5OThlZTk4ZTEyMTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAyMC0wNy0yNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIEluZGV4ZWREQiBiaW5kaW5nIHV0aWxpdGllcyBtaXNzIGV4Y2VwdGlvbiBj
aGVja3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
NDgyMAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjYxNTIzNzQ+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTWFyayBMYW0uCisKKyAgICAgICAganNTdHJpbmdXaXRoQ2FjaGUgZG9lcyBub3QgbmVl
ZCB0byB0YWtlIEpTR2xvYmFsT2JqZWN0Ki4KKworICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcu
aDoKKyAgICAgICAgKEpTQzo6anNTdHJpbmdXaXRoQ2FjaGUpOgorCiAyMDIwLTA3LTI3ICBNYXJr
IExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBEaXNhbGxvd1ZNRW50cnkgbmVl
ZHMgYSBjb3B5IGFzc2lnbm1lbnQgb3BlcmF0b3IsIGRldGVjdGVkIGJ5IGdjYydzIC1XZGVwcmVj
YXRlZC1jb3B5IHdhcm5pbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyZGE0MmY2NWI1NTNhNmNjMzAzZTQ2YjNj
ZWJmOGVlNTY5YTViOGVlLi4xZjY2NDYyODNmMmY0YzZjNThjZTg1MzM1NDk0ODc4ODRhODJkYmZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjAgQEAKKzIwMjAtMDctMjcgIFl1c3VrZSBTdXp1a2kg
IDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBJbmRleGVkREIgYmluZGluZyB1dGlsaXRp
ZXMgbWlzcyBleGNlcHRpb24gY2hlY2tzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTQ4MjAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY2MTUyMzc0
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE1hcmsgTGFtLgorCisgICAgICAgIFRlc3Q6IGpzL2Rv
bS9pbmRleGVkLWRiLW9wZXJhdGlvbnMtZXhjZXB0aW9uLWNoZWNrcy5odG1sCisKKyAgICAgICAg
VGhpcyBwYXRjaCBhcHByb3ByaWF0ZWx5IGluc2VydHMgZXhjZXB0aW9uIGNoZWNraW5nIGNvZGUg
aW50byBJbmRleGVkREIgYmluZGluZyB1dGlsaXRpZXMuCisKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJLZXlSYW5nZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlSYW5nZTo6
b25seSk6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlSYW5nZTo6bG93ZXJCb3VuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJLZXlSYW5nZTo6dXBwZXJCb3VuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJLZXlSYW5nZTo6Ym91bmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5UmFuZ2U6Omlu
Y2x1ZGVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmdldCk6CisgICAgICAgIChXZWJDb3JlOjpzZXQpOgorICAgICAg
ICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJREJLZXlGcm9tVmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6aW50ZXJuYWxDcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFs
dWVBbmRLZXlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OmVuc3VyZU50aFZhbHVlT25LZXlQYXRo
KToKKyAgICAgICAgKFdlYkNvcmU6OmluamVjdElEQktleUludG9TY3JpcHRWYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjptYXliZUNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgp
OgorICAgICAgICAoV2ViQ29yZTo6Y2FuSW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNjcmlwdFZhbHVlVG9JREJLZXkpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0N1c3Rv
bVhQYXRoTlNSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbVhQYXRoTlNS
ZXNvbHZlcjo6bG9va3VwTmFtZXNwYWNlVVJJKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RP
TUNvbnZlcnREYXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZhbHVlVG9EYXRlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnREYXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpD
b252ZXJ0ZXI8SURMRGF0ZT46OmNvbnZlcnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9N
Q29udmVydFN0cmluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ29udmVydGVyPElETERPTVN0
cmluZz46OmNvbnZlcnQpOgorICAgICAgICAoV2ViQ29yZTo6SlNDb252ZXJ0ZXI8SURMQnl0ZVN0
cmluZz46OmNvbnZlcnQpOgorICAgICAgICAoV2ViQ29yZTo6SlNDb252ZXJ0ZXI8SURMVVNWU3Ry
aW5nPjo6Y29udmVydCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Db252ZXJ0V2ViR0wu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRvSlNWYWx1ZSk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0xh
enlFdmVudExpc3RlbmVyOjppbml0aWFsaXplSlNGdW5jdGlvbiBjb25zdCk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUVu
dW1lcmF0aW9uSW1wbGVtZW50YXRpb25Db250ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y29udmVydEVudW1lcmF0aW9uVG9KUyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RW51bWVyYXRp
b25Ub0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRh
bG9uZURpY3Rpb25hcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydEVudW1lcmF0aW9u
VG9KUyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5kYWxv
bmVFbnVtZXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RW51bWVyYXRpb25U
b0pTKToKKyAgICAgICAgKiBicmlkZ2UvYy9jX3V0aWxpdHkuY3BwOgorICAgICAgICAoSlNDOjpC
aW5kaW5nczo6Y29udmVydE5QVmFyaWFudFRvVmFsdWUpOgorCiAyMDIwLTA3LTI3ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIERyYWcgYW5k
IGRyb3AgZG9lcyBub3QgcHJlc2VydmUgZmlsZSBuYW1lcyB0aGF0IGNvbnRhaW4gcGVyaW9kcwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKaW5kZXggNmQ2YTkxMGMxNDEw
ODBkOGM4OGM1YTdjOWUxNjVkMzU3NDNkMDAxMi4uYjc1N2YwMDEwOTRmMDIwNzdiMjZiOGQ2ZDEw
MmRmZWZmZWUxYTUxZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTdHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5o
CkBAIC05MTcsOSArOTE3LDggQEAgaW5saW5lIEpTU3RyaW5nKiBqc093bmVkU3RyaW5nKFZNJiB2
bSwgY29uc3QgU3RyaW5nJiBzKQogICAgIHJldHVybiBKU1N0cmluZzo6Y3JlYXRlSGFzT3RoZXJP
d25lcih2bSwgKnMuaW1wbCgpKTsKIH0KIAotQUxXQVlTX0lOTElORSBKU1N0cmluZyoganNTdHJp
bmdXaXRoQ2FjaGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiBz
KQorQUxXQVlTX0lOTElORSBKU1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoVk0mIHZtLCBjb25z
dCBTdHJpbmcmIHMpCiB7Ci0gICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICBT
dHJpbmdJbXBsKiBzdHJpbmdJbXBsID0gcy5pbXBsKCk7CiAgICAgaWYgKCFzdHJpbmdJbXBsIHx8
ICFzdHJpbmdJbXBsLT5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIGpzRW1wdHlTdHJpbmcodm0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFu
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuY3Bw
CmluZGV4IDdjZjE2ZWYyNjAxOTZkMTk0NTM3YmIwMTc1YWEzNzk4MWI5NTdhNTkuLjZjYWQ4NDkw
ZDllYjAyOTRlNzhlZTc4Nzk2YjkzMjRjMTAwNDlkYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNp
bmNsdWRlICJJREJLZXlEYXRhLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
IgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0pTVmFsdWUuaD4KKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0dsb2JhbE9iamVjdC5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxp
bmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTcxLDEyICs3MiwyMCBAQCBFeGNlcHRp
b25PcjxSZWY8SURCS2V5UmFuZ2U+PiBJREJLZXlSYW5nZTo6b25seShSZWZQdHI8SURCS2V5PiYm
IGtleSkKIAogRXhjZXB0aW9uT3I8UmVmPElEQktleVJhbmdlPj4gSURCS2V5UmFuZ2U6Om9ubHko
SlNHbG9iYWxPYmplY3QmIHN0YXRlLCBKU1ZhbHVlIGtleVZhbHVlKQogewotICAgIHJldHVybiBv
bmx5KHNjcmlwdFZhbHVlVG9JREJLZXkoc3RhdGUsIGtleVZhbHVlKSk7CisgICAgVk0mIHZtID0g
c3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgYXV0byBrZXkgPSBzY3JpcHRWYWx1ZVRvSURCS2V5KHN0YXRlLCBrZXlWYWx1ZSk7CisgICAg
RVhDRVBUSU9OX0FTU0VSVF9VTlVTRUQoc2NvcGUsICFzY29wZS5leGNlcHRpb24oKSB8fCAha2V5
LT5pc1ZhbGlkKCkpOworICAgIHJldHVybiBvbmx5KFdURk1vdmUoa2V5KSk7CiB9CiAKIEV4Y2Vw
dGlvbk9yPFJlZjxJREJLZXlSYW5nZT4+IElEQktleVJhbmdlOjpsb3dlckJvdW5kKEpTR2xvYmFs
T2JqZWN0JiBzdGF0ZSwgSlNWYWx1ZSBib3VuZFZhbHVlLCBib29sIG9wZW4pCiB7CisgICAgVk0m
IHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICBhdXRvIGJvdW5kID0gc2NyaXB0VmFsdWVUb0lEQktleShzdGF0ZSwgYm91bmRW
YWx1ZSk7CisgICAgRVhDRVBUSU9OX0FTU0VSVF9VTlVTRUQoc2NvcGUsICFzY29wZS5leGNlcHRp
b24oKSB8fCAhYm91bmQtPmlzVmFsaWQoKSk7CiAgICAgaWYgKCFib3VuZC0+aXNWYWxpZCgpKQog
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgRGF0YUVycm9yIH07CiAKQEAgLTg1LDcgKzk0LDEx
IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJLZXlSYW5nZT4+IElEQktleVJhbmdlOjpsb3dlckJvdW5k
KEpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgSlNWCiAKIEV4Y2VwdGlvbk9yPFJlZjxJREJLZXlSYW5n
ZT4+IElEQktleVJhbmdlOjp1cHBlckJvdW5kKEpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgSlNWYWx1
ZSBib3VuZFZhbHVlLCBib29sIG9wZW4pCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBhdXRvIGJvdW5k
ID0gc2NyaXB0VmFsdWVUb0lEQktleShzdGF0ZSwgYm91bmRWYWx1ZSk7CisgICAgRVhDRVBUSU9O
X0FTU0VSVF9VTlVTRUQoc2NvcGUsICFzY29wZS5leGNlcHRpb24oKSB8fCAhYm91bmQtPmlzVmFs
aWQoKSk7CiAgICAgaWYgKCFib3VuZC0+aXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgRGF0YUVycm9yIH07CiAKQEAgLTk0LDEwICsxMDcsMTUgQEAgRXhjZXB0aW9uT3I8UmVm
PElEQktleVJhbmdlPj4gSURCS2V5UmFuZ2U6OnVwcGVyQm91bmQoSlNHbG9iYWxPYmplY3QmIHN0
YXRlLCBKU1YKIAogRXhjZXB0aW9uT3I8UmVmPElEQktleVJhbmdlPj4gSURCS2V5UmFuZ2U6OmJv
dW5kKEpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgSlNWYWx1ZSBsb3dlclZhbHVlLCBKU1ZhbHVlIHVw
cGVyVmFsdWUsIGJvb2wgbG93ZXJPcGVuLCBib29sIHVwcGVyT3BlbikKIHsKKyAgICBWTSYgdm0g
PSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIGF1dG8gbG93ZXIgPSBzY3JpcHRWYWx1ZVRvSURCS2V5KHN0YXRlLCBsb3dlclZhbHVl
KTsKKyAgICBFWENFUFRJT05fQVNTRVJUX1VOVVNFRChzY29wZSwgIXNjb3BlLmV4Y2VwdGlvbigp
IHx8ICFsb3dlci0+aXNWYWxpZCgpKTsKICAgICBpZiAoIWxvd2VyLT5pc1ZhbGlkKCkpCiAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBEYXRhRXJyb3IgfTsKICAgICBhdXRvIHVwcGVyID0gc2Ny
aXB0VmFsdWVUb0lEQktleShzdGF0ZSwgdXBwZXJWYWx1ZSk7CisgICAgRVhDRVBUSU9OX0FTU0VS
VF9VTlVTRUQoc2NvcGUsICFzY29wZS5leGNlcHRpb24oKSB8fCAhdXBwZXItPmlzVmFsaWQoKSk7
CiAgICAgaWYgKCF1cHBlci0+aXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
RGF0YUVycm9yIH07CiAgICAgaWYgKHVwcGVyLT5pc0xlc3NUaGFuKGxvd2VyLmdldCgpKSkKQEAg
LTExNSw3ICsxMzMsMTEgQEAgYm9vbCBJREJLZXlSYW5nZTo6aXNPbmx5S2V5KCkgY29uc3QKIAog
RXhjZXB0aW9uT3I8Ym9vbD4gSURCS2V5UmFuZ2U6OmluY2x1ZGVzKEpTQzo6SlNHbG9iYWxPYmpl
Y3QmIHN0YXRlLCBKU0M6OkpTVmFsdWUga2V5VmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUu
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBh
dXRvIGtleSA9IHNjcmlwdFZhbHVlVG9JREJLZXkoc3RhdGUsIGtleVZhbHVlKTsKKyAgICBFWENF
UFRJT05fQVNTRVJUX1VOVVNFRChzY29wZSwgIXNjb3BlLmV4Y2VwdGlvbigpIHx8ICFrZXktPmlz
VmFsaWQoKSk7CiAgICAgaWYgKCFrZXktPmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IERhdGFFcnJvciwgIkZhaWxlZCB0byBleGVjdXRlICdpbmNsdWRlcycgb24gJ0lEQktl
eVJhbmdlJzogVGhlIHBhc3NlZC1pbiB2YWx1ZSBpcyBub3QgYSB2YWxpZCBJbmRleGVkREIga2V5
LiIgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGlu
Z1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRp
bGl0aWVzLmNwcAppbmRleCBiOGE4ZmE4NzRmYzNjMGY1NDNhNGI1MTUzYmQxMGYwZDZlMTU0NGU4
Li43Y2MyYjQ5YjcyNTdmYjdjYThjYTkyZjZhMjUwNzY2MjgyODY3M2M1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcApAQCAtNjAs
NiArNjAsOSBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBzdGF0aWMgYm9vbCBnZXQoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgb2JqZWN0LCBjb25zdCBTdHJp
bmcmIGtleVBhdGhFbGVtZW50LCBKU1ZhbHVlJiByZXN1bHQpCiB7CisgICAgVk0mIHZtID0gbGV4
aWNhbEdsb2JhbE9iamVjdC52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKwogICAgIGlmIChvYmplY3QuaXNTdHJpbmcoKSAmJiBrZXlQYXRoRWxlbWVudCA9
PSAibGVuZ3RoIikgewogICAgICAgICByZXN1bHQgPSBqc051bWJlcihhc1N0cmluZyhvYmplY3Qp
LT5sZW5ndGgoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNjcsMTEgKzcwLDExIEBAIHN0
YXRpYyBib29sIGdldChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBvYmplY3QsIGNvbnN0IFN0cmluCiAgICAgaWYgKCFvYmplY3QuaXNPYmplY3QoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgVk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC52bSgp
OwogICAgIGF1dG8qIG9iaiA9IGFzT2JqZWN0KG9iamVjdCk7CiAgICAgSWRlbnRpZmllciBpZGVu
dGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwga2V5UGF0aEVsZW1lbnQpOwogICAg
IGlmIChvYmotPmluaGVyaXRzPEpTQXJyYXk+KHZtKSAmJiBrZXlQYXRoRWxlbWVudCA9PSAibGVu
Z3RoIikgewogICAgICAgICByZXN1bHQgPSBvYmotPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwg
aWRlbnRpZmllcik7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIGlmIChvYmotPmluaGVyaXRzPEpTQmxv
Yj4odm0pICYmIChrZXlQYXRoRWxlbWVudCA9PSAic2l6ZSIgfHwga2V5UGF0aEVsZW1lbnQgPT0g
InR5cGUiKSkgewpAQCAtMTAwLDEyICsxMDMsMTUgQEAgc3RhdGljIGJvb2wgZ2V0KEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG9iamVjdCwgY29uc3QgU3RyaW4K
ICAgICB9CiAKICAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsKLSAgICBpZiAoIW9i
ai0+Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBpZGVudGlm
aWVyLCBkZXNjcmlwdG9yKSkKKyAgICBib29sIGZvdW5kID0gb2JqLT5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoJmxleGljYWxHbG9iYWxPYmplY3QsIGlkZW50aWZpZXIsIGRlc2NyaXB0b3IpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKyAgICBpZiAoIWZvdW5kKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZXNjcmlwdG9yLmVudW1lcmFibGUoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmVzdWx0ID0gb2JqLT5nZXQoJmxleGljYWxH
bG9iYWxPYmplY3QsIGlkZW50aWZpZXIpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGZhbHNlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTE1LDExICsxMjEsMTAgQEAgc3Rh
dGljIGJvb2wgY2FuU2V0KEpTVmFsdWUgb2JqZWN0LCBjb25zdCBTdHJpbmcmIGtleVBhdGhFbGVt
ZW50KQogICAgIHJldHVybiBvYmplY3QuaXNPYmplY3QoKTsKIH0KIAotc3RhdGljIGJvb2wgc2V0
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlJiBvYmplY3QsIGNv
bnN0IFN0cmluZyYga2V5UGF0aEVsZW1lbnQsIEpTVmFsdWUganNWYWx1ZSkKK3N0YXRpYyBib29s
IHNldChWTSYgdm0sIEpTVmFsdWUmIG9iamVjdCwgY29uc3QgU3RyaW5nJiBrZXlQYXRoRWxlbWVu
dCwgSlNWYWx1ZSBqc1ZhbHVlKQogewogICAgIGlmICghY2FuU2V0KG9iamVjdCwga2V5UGF0aEVs
ZW1lbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgVk0mIHZtID0gbGV4aWNhbEdsb2Jh
bE9iamVjdC52bSgpOwogICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sIGtleVBhdGhFbGVtZW50KTsKICAgICBhc09iamVjdChvYmplY3QpLT5wdXRE
aXJlY3Qodm0sIGlkZW50aWZpZXIsIGpzVmFsdWUpOwogICAgIHJldHVybiB0cnVlOwpAQCAtMTY0
LDExICsxNjksMTEgQEAgSlNWYWx1ZSB0b0pTKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LAogICAgICAgICByZXR1cm4gSlNB
cnJheUJ1ZmZlcjo6Y3JlYXRlKGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSwgc3RydWN0dXJlLCBX
VEZNb3ZlKGFycmF5QnVmZmVyKSk7CiAgICAgfQogICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBl
OjpTdHJpbmc6Ci0gICAgICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCwga2V5LT5zdHJpbmcoKSk7CisgICAgICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNo
ZSh2bSwga2V5LT5zdHJpbmcoKSk7CiAgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6OkRhdGU6
CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSBiZSB0b0pTPElETERhdGU+
KC4uLikgYXMgcGVyOgogICAgICAgICAvLyBodHRwOi8vdzNjLmdpdGh1Yi5pby9JbmRleGVkREIv
I3JlcXVlc3QtY29udmVydC1hLWtleS10by1hLXZhbHVlCi0gICAgICAgIHJldHVybiB0b0pTPElE
TE51bGxhYmxlPElETERhdGU+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBrZXktPmRhdGUoKSk7Cisg
ICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgdG9KUzxJRExOdWxsYWJsZTxJRExEYXRl
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwga2V5LT5kYXRlKCkpKTsKICAgICBjYXNlIEluZGV4ZWRE
Qjo6S2V5VHlwZTo6TnVtYmVyOgogICAgICAgICByZXR1cm4ganNOdW1iZXIoa2V5LT5udW1iZXIo
KSk7CiAgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6Ok1pbjoKQEAgLTE4OSwxNCArMTk0LDE3
IEBAIHN0YXRpYyBSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJLZXlGcm9tVmFsdWUoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsCiAgICAgVk0mIHZtID0gbGV4aWNhbEdsb2JhbE9i
amVjdC52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAot
ICAgIGlmICh2YWx1ZS5pc051bWJlcigpICYmICFzdGQ6OmlzbmFuKHZhbHVlLnRvTnVtYmVyKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KSkpCi0gICAgICAgIHJldHVybiBJREJLZXk6OmNyZWF0ZU51bWJl
cih2YWx1ZS50b051bWJlcigmbGV4aWNhbEdsb2JhbE9iamVjdCkpOworICAgIGlmICh2YWx1ZS5p
c051bWJlcigpICYmICFzdGQ6OmlzbmFuKHZhbHVlLmFzTnVtYmVyKCkpKQorICAgICAgICByZXR1
cm4gSURCS2V5OjpjcmVhdGVOdW1iZXIodmFsdWUuYXNOdW1iZXIoKSk7CiAKLSAgICBpZiAodmFs
dWUuaXNTdHJpbmcoKSkKLSAgICAgICAgcmV0dXJuIElEQktleTo6Y3JlYXRlU3RyaW5nKGFzU3Ry
aW5nKHZhbHVlKS0+dmFsdWUoJmxleGljYWxHbG9iYWxPYmplY3QpKTsKKyAgICBpZiAodmFsdWUu
aXNTdHJpbmcoKSkgeworICAgICAgICBhdXRvIHN0cmluZyA9IGFzU3RyaW5nKHZhbHVlKS0+dmFs
dWUoJmxleGljYWxHbG9iYWxPYmplY3QpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOworICAgICAgICByZXR1cm4gSURCS2V5OjpjcmVhdGVTdHJpbmcoV1RGTW92ZShz
dHJpbmcpKTsKKyAgICB9CiAKICAgICBpZiAodmFsdWUuaW5oZXJpdHM8RGF0ZUluc3RhbmNlPih2
bSkpIHsKLSAgICAgICAgYXV0byBkYXRlVmFsdWUgPSB2YWx1ZVRvRGF0ZShsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CisgICAgICAgIGF1dG8gZGF0ZVZhbHVlID0gdmFsdWVUb0RhdGUodm0s
IHZhbHVlKTsKICAgICAgICAgaWYgKCFzdGQ6OmlzbmFuKGRhdGVWYWx1ZSkpCiAgICAgICAgICAg
ICByZXR1cm4gSURCS2V5OjpjcmVhdGVEYXRlKGRhdGVWYWx1ZSk7CiAgICAgfQpAQCAtMjE5LDYg
KzIyNyw3IEBAIHN0YXRpYyBSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJLZXlGcm9tVmFsdWUoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsCiAgICAgICAgICAgICAgICAgSlNWYWx1
ZSBpdGVtID0gYXJyYXktPmdldEluZGV4KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBpKTsKICAgICAg
ICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAgICAgICAg
ICAgIFJlZlB0cjxJREJLZXk+IHN1YmtleSA9IGNyZWF0ZUlEQktleUZyb21WYWx1ZShsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBpdGVtLCBzdGFjayk7CisgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgeyB9KTsKICAgICAgICAgICAgICAgICBpZiAoIXN1YmtleSkKICAgICAg
ICAgICAgICAgICAgICAgc3Via2V5cy5hcHBlbmQoSURCS2V5OjpjcmVhdGVJbnZhbGlkKCkpOwog
ICAgICAgICAgICAgICAgIGVsc2UKQEAgLTI1OSw3ICsyNjgsNyBAQCBzdGF0aWMgSlNWYWx1ZSBn
ZXROdGhWYWx1ZU9uS2V5UGF0aChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNWYWx1ZQogICAgIHJldHVybiBjdXJyZW50VmFsdWU7CiB9CiAKLXN0YXRpYyBSZWZQdHI8SURC
S2V5PiBpbnRlcm5hbENyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IEpTVmFsdWUmIHZhbHVlLCBjb25z
dCBTdHJpbmcmIGtleVBhdGgpCitzdGF0aWMgUmVmUHRyPElEQktleT4gaW50ZXJuYWxDcmVhdGVJ
REJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpCiB7CiAgICAg
VmVjdG9yPFN0cmluZz4ga2V5UGF0aEVsZW1lbnRzOwogICAgIElEQktleVBhdGhQYXJzZUVycm9y
IGVycm9yOwpAQCAtMjgzLDcgKzI5Miw3IEBAIHN0YXRpYyBKU1ZhbHVlIGVuc3VyZU50aFZhbHVl
T25LZXlQYXRoKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAg
ICAgIGNvbnN0IFN0cmluZyYga2V5UGF0aEVsZW1lbnQgPSBrZXlQYXRoRWxlbWVudHNbaV07CiAg
ICAgICAgIGlmICghZ2V0KGxleGljYWxHbG9iYWxPYmplY3QsIHBhcmVudFZhbHVlLCBrZXlQYXRo
RWxlbWVudCwgY3VycmVudFZhbHVlKSkgewogICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9
IGNvbnN0cnVjdEVtcHR5T2JqZWN0KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICAgICAgICAg
IGlmICghc2V0KGxleGljYWxHbG9iYWxPYmplY3QsIHBhcmVudFZhbHVlLCBrZXlQYXRoRWxlbWVu
dCwgSlNWYWx1ZShvYmplY3QpKSkKKyAgICAgICAgICAgIGlmICghc2V0KGxleGljYWxHbG9iYWxP
YmplY3Qudm0oKSwgcGFyZW50VmFsdWUsIGtleVBhdGhFbGVtZW50LCBKU1ZhbHVlKG9iamVjdCkp
KQogICAgICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAgICAgICAgY3Vy
cmVudFZhbHVlID0gSlNWYWx1ZShvYmplY3QpOwogICAgICAgICB9CkBAIC0zMzUsMTQgKzM0NCwx
NCBAQCBib29sIGluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgY29uc3QgSURCSwogICAgIEpTVmFsdWUgZXhpc3RpbmdLZXk7CiAg
ICAgaWYgKGdldChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwYXJlbnQsIGtleVBhdGhFbGVtZW50cy5s
YXN0KCksIGV4aXN0aW5nS2V5KSAmJiAha2V5LT5jb21wYXJlKGNyZWF0ZUlEQktleUZyb21WYWx1
ZShsZXhpY2FsR2xvYmFsT2JqZWN0LCBleGlzdGluZ0tleSkpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICBpZiAoIXNldChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwYXJlbnQsIGtleVBhdGhFbGVt
ZW50cy5sYXN0KCksIHRvSlMobGV4aWNhbEdsb2JhbE9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVj
dCwga2V5LmdldCgpKSkpCisgICAgaWYgKCFzZXQobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCBw
YXJlbnQsIGtleVBhdGhFbGVtZW50cy5sYXN0KCksIHRvSlMobGV4aWNhbEdsb2JhbE9iamVjdCwg
bGV4aWNhbEdsb2JhbE9iamVjdCwga2V5LmdldCgpKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIHJldHVybiB0cnVlOwogfQogCiAKLVJlZlB0cjxJREJLZXk+IG1heWJlQ3JlYXRlSURC
S2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgY29uc3QgSlNWYWx1ZSYgdmFsdWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgp
CitSZWZQdHI8SURCS2V5PiBtYXliZUNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBh
dGgoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUsIGNv
bnN0IElEQktleVBhdGgmIGtleVBhdGgpCiB7CiAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8VmVjdG9yPFN0cmluZz4+KGtleVBhdGgpKSB7CiAgICAgICAgIGF1dG8mIGFycmF5ID0gV1RG
OjpnZXQ8VmVjdG9yPFN0cmluZz4+KGtleVBhdGgpOwpAQCAtMzYwLDcgKzM2OSw3IEBAIFJlZlB0
cjxJREJLZXk+IG1heWJlQ3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChKU0ds
b2JhbE9iamVjdCYgbGV4aWNhCiAgICAgcmV0dXJuIGludGVybmFsQ3JlYXRlSURCS2V5RnJvbVNj
cmlwdFZhbHVlQW5kS2V5UGF0aChsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgV1RGOjpnZXQ8
U3RyaW5nPihrZXlQYXRoKSk7CiB9CiAKLWJvb2wgY2FuSW5qZWN0SURCS2V5SW50b1NjcmlwdFZh
bHVlKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdCBKU1ZhbHVlJiBz
Y3JpcHRWYWx1ZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCkKK2Jvb2wgY2FuSW5qZWN0SURC
S2V5SW50b1NjcmlwdFZhbHVlKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHNjcmlwdFZhbHVlLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKQogewogICAgIExP
RyhTdG9yYWdlQVBJLCAiY2FuSW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlIik7CiAKQEAgLTQw
OSw3ICs0MTgsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZwogICAgIHJldHVybiBkZXNlcmlh
bGl6ZUlEQlZhbHVlVG9KU1ZhbHVlKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqZ2xvYmFsT2JqZWN0
LCB2YWx1ZSk7CiB9CiAKLVJlZjxJREJLZXk+IHNjcmlwdFZhbHVlVG9JREJLZXkoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IEpTVmFsdWUmIHNjcmlwdFZhbHVlKQor
UmVmPElEQktleT4gc2NyaXB0VmFsdWVUb0lEQktleShKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNWYWx1ZSBzY3JpcHRWYWx1ZSkKIHsKICAgICByZXR1cm4gY3JlYXRlSURC
S2V5RnJvbVZhbHVlKGxleGljYWxHbG9iYWxPYmplY3QsIHNjcmlwdFZhbHVlKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaAppbmRleCA4
YWI3NGY4ODc5MGY2ZGRkMjE2ZjA1YTU4MGMzYjFmNDIzZjhjMTYyLi5kNWVkY2FiNjI4NTNiMmRl
ZTUwNTgxNzFjNDY5Yjg2YzYwNmFkMGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oCkBAIC00OCwxNSArNDgsMTUgQEAgY2xhc3MgSURC
VmFsdWU7CiBjbGFzcyBJbmRleEtleTsKIGNsYXNzIEpTRE9NR2xvYmFsT2JqZWN0OwogCi1SZWZQ
dHI8SURCS2V5PiBtYXliZUNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoSlND
OjpKU0dsb2JhbE9iamVjdCYsIGNvbnN0IEpTQzo6SlNWYWx1ZSYsIGNvbnN0IElEQktleVBhdGgm
KTsKLWJvb2wgY2FuSW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKEpTQzo6SlNHbG9iYWxPYmpl
Y3QmLCBjb25zdCBKU0M6OkpTVmFsdWUmLCBjb25zdCBJREJLZXlQYXRoJik7CitSZWZQdHI8SURC
S2V5PiBtYXliZUNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoSlNDOjpKU0ds
b2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSwgY29uc3QgSURCS2V5UGF0aCYpOworYm9vbCBjYW5J
bmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNW
YWx1ZSwgY29uc3QgSURCS2V5UGF0aCYpOwogYm9vbCBpbmplY3RJREJLZXlJbnRvU2NyaXB0VmFs
dWUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIGNvbnN0IElEQktleURhdGEmLCBKU0M6OkpTVmFsdWUs
IGNvbnN0IElEQktleVBhdGgmKTsKIAogdm9pZCBnZW5lcmF0ZUluZGV4S2V5Rm9yVmFsdWUoSlND
OjpKU0dsb2JhbE9iamVjdCYsIGNvbnN0IElEQkluZGV4SW5mbyYsIEpTQzo6SlNWYWx1ZSwgSW5k
ZXhLZXkmIG91dEtleSwgY29uc3QgT3B0aW9uYWw8SURCS2V5UGF0aD4mLCBjb25zdCBJREJLZXlE
YXRhJik7CiAKIEluZGV4SURUb0luZGV4S2V5TWFwIGdlbmVyYXRlSW5kZXhLZXlNYXBGb3JWYWx1
ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiwgY29uc3Qg
SURCS2V5RGF0YSYsIGNvbnN0IElEQlZhbHVlJik7CiAKLVJlZjxJREJLZXk+IHNjcmlwdFZhbHVl
VG9JREJLZXkoSlNDOjpKU0dsb2JhbE9iamVjdCYsIGNvbnN0IEpTQzo6SlNWYWx1ZSYpOworUmVm
PElEQktleT4gc2NyaXB0VmFsdWVUb0lEQktleShKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpK
U1ZhbHVlKTsKIAogSlNDOjpKU1ZhbHVlIGRlc2VyaWFsaXplSURCVmFsdWVUb0pTVmFsdWUoSlND
OjpKU0dsb2JhbE9iamVjdCYsIGNvbnN0IElEQlZhbHVlJiwgVmVjdG9yPHN0ZDo6cGFpcjxTdHJp
bmcsIFN0cmluZz4+Jik7CiBKU0M6OkpTVmFsdWUgZGVzZXJpYWxpemVJREJWYWx1ZVRvSlNWYWx1
ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiwgY29uc3QgSURCVmFsdWUmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcAppbmRl
eCBkZjU2MmQwNThiZjE3MzBhYTU1MGVmY2M5ODdiNWY1NDMyMzgzOTkzLi44NjY5M2U2OTcwNzA2
MDVjNDhjZDI2NTVhZmZhMDEyZjQ1NGUwNDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwCkBAIC04OCw3ICs4OCw3
IEBAIFN0cmluZyBKU0N1c3RvbVhQYXRoTlNSZXNvbHZlcjo6bG9va3VwTmFtZXNwYWNlVVJJKGNv
bnN0IFN0cmluZyYgcHJlZml4KQogICAgIFJlZjxKU0N1c3RvbVhQYXRoTlNSZXNvbHZlcj4gcHJv
dGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwotICAg
IGFyZ3MuYXBwZW5kKGpzU3RyaW5nV2l0aENhY2hlKGxleGljYWxHbG9iYWxPYmplY3QsIHByZWZp
eCkpOworICAgIGFyZ3MuYXBwZW5kKGpzU3RyaW5nV2l0aENhY2hlKHZtLCBwcmVmaXgpKTsKICAg
ICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKIAogICAgIE5ha2VkUHRyPEpTQzo6RXhj
ZXB0aW9uPiBleGNlcHRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUNvbnZlcnREYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
Q29udmVydERhdGUuY3BwCmluZGV4IDY0MGU3N2UzMzYwZmY3ZTY5YTNiNzA5YzZjZGJjODA3NTFi
MGU5OTMuLjhhYmZhYWNiOWFkOGZjMTQyYTRhNDk5ZGZmMWNiMTY5ZmFhOTI5N2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydERhdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydERhdGUuY3BwCkBAIC0zNiwx
MyArMzYsMTMgQEAgSlNWYWx1ZSBqc0RhdGUoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIGRvdWJsZSB2YWx1ZSkKICAgICByZXR1cm4gRGF0ZUluc3RhbmNlOjpjcmVhdGUobGV4
aWNhbEdsb2JhbE9iamVjdC52bSgpLCBsZXhpY2FsR2xvYmFsT2JqZWN0LmRhdGVTdHJ1Y3R1cmUo
KSwgdmFsdWUpOwogfQogCi1kb3VibGUgdmFsdWVUb0RhdGUoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCitkb3VibGUgdmFsdWVUb0RhdGUoVk0mIHZt
LCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGlmICh2YWx1ZS5pc051bWJlcigpKQogICAgICAgICBy
ZXR1cm4gdmFsdWUuYXNOdW1iZXIoKTsKLSAgICBpZiAoIXZhbHVlLmluaGVyaXRzPERhdGVJbnN0
YW5jZT4obGV4aWNhbEdsb2JhbE9iamVjdC52bSgpKSkKKyAgICBpZiAoIXZhbHVlLmluaGVyaXRz
PERhdGVJbnN0YW5jZT4odm0pKQogICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxk
b3VibGU+OjpxdWlldF9OYU4oKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RGF0ZUluc3RhbmNl
Kj4odmFsdWUudG9PYmplY3QoJmxleGljYWxHbG9iYWxPYmplY3QpKS0+aW50ZXJuYWxOdW1iZXIo
KTsKKyAgICByZXR1cm4ganNDYXN0PERhdGVJbnN0YW5jZSo+KHZhbHVlKS0+aW50ZXJuYWxOdW1i
ZXIoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0RGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01Db252ZXJ0RGF0ZS5oCmluZGV4IDUyNWFlODcwMzY1MTZkMmI1ZWQ3ZmU4
MjkxMGFkYmFiNjk1NzE3MGYuLjA0NDFhYTE4YWY2MzIyNmIxNjVkOTdhMjUwZjgzZjMxZmI3MGM3
MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydERh
dGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnREYXRlLmgK
QEAgLTMxLDEyICszMSwxMiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU0M6OkpTVmFsdWUg
anNEYXRlKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBkb3VibGUgdmFsdWUpOwotZG91YmxlIHZhbHVl
VG9EYXRlKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUpOyAvLyBOYU4gaWYgdGhl
IHZhbHVlIGNhbid0IGJlIGNvbnZlcnRlZCB0byBhIGRhdGUuCitkb3VibGUgdmFsdWVUb0RhdGUo
SlNDOjpWTSYsIEpTQzo6SlNWYWx1ZSk7IC8vIE5hTiBpZiB0aGUgdmFsdWUgY2FuJ3QgYmUgY29u
dmVydGVkIHRvIGEgZGF0ZS4KIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPElETERhdGU+
IDogRGVmYXVsdENvbnZlcnRlcjxJRExEYXRlPiB7CiAgICAgc3RhdGljIGRvdWJsZSBjb252ZXJ0
KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSB2
YWx1ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiB2YWx1ZVRvRGF0ZShsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CisgICAgICAgIHJldHVybiB2YWx1ZVRvRGF0ZShsZXhpY2FsR2xvYmFsT2Jq
ZWN0LnZtKCksIHZhbHVlKTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRTdHJpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUNvbnZlcnRTdHJpbmdzLmgKaW5kZXggY2JhZWZiY2ZmMGRiM2YzMTA4ZDY2
MGRjNTYzNWE1YzU4NjYxZTM3ZC4uNDY4Y2QxZTg1Y2JkZjcxZTlkNzExNjA4ZjYwMTk0MGYwODYy
M2JkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0
U3RyaW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFN0
cmluZ3MuaApAQCAtNjMsNyArNjMsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBKU0NvbnZlcnRlcjxJ
RExET01TdHJpbmc+IHsKIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgY29udmVydChKU0M6OkpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIHZhbHVlKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIEpTQzo6anNTdHJpbmdXaXRoQ2FjaGUoJmxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIEpTQzo6anNTdHJpbmdXaXRoQ2FjaGUo
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIHZhbHVlKTsKICAgICB9CiAKICAgICBz
dGF0aWMgSlNDOjpKU1ZhbHVlIGNvbnZlcnQoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgY29uc3QgVW5jYWNoZWRTdHJpbmcmIHZhbHVlKQpAQCAtOTUsNyArOTUsNyBA
QCB0ZW1wbGF0ZTw+IHN0cnVjdCBKU0NvbnZlcnRlcjxJRExCeXRlU3RyaW5nPiB7CiAKICAgICBz
dGF0aWMgSlNDOjpKU1ZhbHVlIGNvbnZlcnQoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBK
U0M6OmpzU3RyaW5nV2l0aENhY2hlKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CisgICAg
ICAgIHJldHVybiBKU0M6OmpzU3RyaW5nV2l0aENhY2hlKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpLCB2YWx1ZSk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBjb252
ZXJ0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IFVuY2Fj
aGVkU3RyaW5nJiB2YWx1ZSkKQEAgLTEyNiw3ICsxMjYsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBK
U0NvbnZlcnRlcjxJRExVU1ZTdHJpbmc+IHsKIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgY29u
dmVydChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdCBTdHJp
bmcmIHZhbHVlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEpTQzo6anNTdHJpbmdXaXRoQ2FjaGUo
JmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIEpTQzo6anNTdHJp
bmdXaXRoQ2FjaGUoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIHZhbHVlKTsKICAg
ICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGNvbnZlcnQoSlNDOjpKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgY29uc3QgVW5jYWNoZWRTdHJpbmcmIHZhbHVlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0V2ViR0wuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0V2ViR0wuY3BwCmluZGV4
IGY1ZDgzM2U4NjhkYWJmMjE3N2UwM2VjODZjN2VkODc1MGZkOGE2ODUuLjBkNWQwZTFiMWI0ZjA2
NTM2NmIyOTdlODFmNmRmMmQ4NmYzN2QyYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NQ29udmVydFdlYkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUNvbnZlcnRXZWJHTC5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgSlNWYWx1ZSBj
b252ZXJ0VG9KU1ZhbHVlKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RP
TUdsb2JhbE9iamVjdCYKICAgICAgICAgICAgIHJldHVybiBqc051bWJlcih2YWx1ZSk7CiAgICAg
ICAgIH0sCiAgICAgICAgIFsmXSAoY29uc3QgU3RyaW5nJiB2YWx1ZSkgewotICAgICAgICAgICAg
cmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7Cisg
ICAgICAgICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUobGV4aWNhbEdsb2JhbE9iamVjdC52
bSgpLCB2YWx1ZSk7CiAgICAgICAgIH0sCiAgICAgICAgIFsmXSAoY29uc3QgVmVjdG9yPGJvb2w+
JiB2YWx1ZXMpIHsKICAgICAgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGxpc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3BwCmlu
ZGV4IDE1YzdhMTY0MGZmYzIxNDU4YjgxZmVhYzE3MGEyYzY3Njc1YjEzZGQuLjk4N2NiYTRjMzFi
NzBlNThiNDFlM2E2NmFjY2YwYmEyYTZmNzU4OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3BwCkBAIC0xNTAsNyArMTUwLDcgQEAg
SlNPYmplY3QqIEpTTGF6eUV2ZW50TGlzdGVuZXI6OmluaXRpYWxpemVKU0Z1bmN0aW9uKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGV4ZWMKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7
CiAgICAgYXJncy5hcHBlbmQoanNOb250cml2aWFsU3RyaW5nKHZtLCBtX2V2ZW50UGFyYW1ldGVy
TmFtZSkpOwotICAgIGFyZ3MuYXBwZW5kKGpzU3RyaW5nV2l0aENhY2hlKGxleGljYWxHbG9iYWxP
YmplY3QsIG1fY29kZSkpOworICAgIGFyZ3MuYXBwZW5kKGpzU3RyaW5nV2l0aENhY2hlKHZtLCBt
X2NvZGUpKTsKICAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKIAogICAgIC8vIFdl
IHdhbnQgYWxsIGVycm9ycyB0byByZWZlciBiYWNrIHRvIHRoZSBsaW5lIG9uIHdoaWNoIG91ciBh
dHRyaWJ1dGUgd2FzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtCmluZGV4IDM0NjAwNTE2YTVmYzA5ZDFkMTRlYzAxZTRlNTU5MTFmMzAx
ZGZhZmUuLmY4NDUwNzFkY2I0MjVlYzM5MTlkYjI4ZTVhMmZjOTMwZjlkMzU2ZWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBA
IC0yMTIwLDcgKzIxMjAsNyBAQCBzdWIgR2VuZXJhdGVFbnVtZXJhdGlvbkltcGxlbWVudGF0aW9u
Q29udGVudAogICAgICMgRklYTUU6IENoYW5nZSB0byB0YWtlIFZNJiBpbnN0ZWFkIG9mIEpTR2xv
YmFsT2JqZWN0Ki4KICAgICAkcmVzdWx0IC49ICJ0ZW1wbGF0ZTw+IEpTU3RyaW5nKiBjb252ZXJ0
RW51bWVyYXRpb25Ub0pTKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCAkY2xh
c3NOYW1lIGVudW1lcmF0aW9uVmFsdWUpXG4iOwogICAgICRyZXN1bHQgLj0gIntcbiI7Ci0gICAg
JHJlc3VsdCAuPSAiICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZSgmbGV4aWNhbEdsb2JhbE9i
amVjdCwgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoZW51bWVyYXRpb25WYWx1ZSkpO1xuIjsK
KyAgICAkcmVzdWx0IC49ICIgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKGxleGljYWxHbG9i
YWxPYmplY3Qudm0oKSwgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoZW51bWVyYXRpb25WYWx1
ZSkpO1xuIjsKICAgICAkcmVzdWx0IC49ICJ9XG5cbiI7CiAKICAgICAjIEZJWE1FOiBDaGFuZ2Ug
dG8gdGFrZSBWTSYgaW5zdGVhZCBvZiBKU0dsb2JhbE9iamVjdCYuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tJbnRlcmZh
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENh
bGxiYWNrSW50ZXJmYWNlLmNwcAppbmRleCBjMDdjNjgyNmI1NjY1NzhiYWJkOWUwZjhmNWJjOWE3
YmZhMmY0ZmE0Li42Mjg5MzNmZmQ2MzM4MDA4NGMyYTRmMTVmNTI2Njk3YTFlZGIxNGUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2Fs
bGJhY2tJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDYWxsYmFja0ludGVyZmFjZS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgU3Ry
aW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKFRlc3RDYWxsYmFja0ludGVyZmFjZTo6RW51
bSBlbnVtZXJhdGlvblZhbHVlKQogCiB0ZW1wbGF0ZTw+IEpTU3RyaW5nKiBjb252ZXJ0RW51bWVy
YXRpb25Ub0pTKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBUZXN0Q2FsbGJh
Y2tJbnRlcmZhY2U6OkVudW0gZW51bWVyYXRpb25WYWx1ZSkKIHsKLSAgICByZXR1cm4ganNTdHJp
bmdXaXRoQ2FjaGUoJmxleGljYWxHbG9iYWxPYmplY3QsIGNvbnZlcnRFbnVtZXJhdGlvblRvU3Ry
aW5nKGVudW1lcmF0aW9uVmFsdWUpKTsKKyAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUobGV4
aWNhbEdsb2JhbE9iamVjdC52bSgpLCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhlbnVtZXJh
dGlvblZhbHVlKSk7CiB9CiAKIHRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdENhbGxiYWNrSW50ZXJm
YWNlOjpFbnVtPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RDYWxsYmFja0ludGVyZmFjZTo6RW51bT4o
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
Y3BwCmluZGV4IGEzNGM2NzhlNmVjZmVlMzVmNTc4NDcxZmQxYWM4OTkxOTE0YTFlNWMuLjkzMTZi
YjhlODkzZTM1MjQ5YTNhMTdkYTE2ZjIyMjA4ZTNhMTBiYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC0xMzgs
NyArMTM4LDcgQEAgU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKFRlc3RPYmo6OkVu
dW1UeXBlIGVudW1lcmF0aW9uVmFsdWUpCiAKIHRlbXBsYXRlPD4gSlNTdHJpbmcqIGNvbnZlcnRF
bnVtZXJhdGlvblRvSlMoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIFRlc3RP
Ymo6OkVudW1UeXBlIGVudW1lcmF0aW9uVmFsdWUpCiB7Ci0gICAgcmV0dXJuIGpzU3RyaW5nV2l0
aENhY2hlKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhl
bnVtZXJhdGlvblZhbHVlKSk7CisgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKGxleGljYWxH
bG9iYWxPYmplY3Qudm0oKSwgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoZW51bWVyYXRpb25W
YWx1ZSkpOwogfQogCiB0ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RPYmo6OkVudW1UeXBlPiBwYXJz
ZUVudW1lcmF0aW9uPFRlc3RPYmo6OkVudW1UeXBlPihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKQEAgLTE3OCw3ICsxNzgsNyBAQCBTdHJpbmcgY29u
dmVydEVudW1lcmF0aW9uVG9TdHJpbmcoVGVzdE9iajo6T3B0aW9uYWwgZW51bWVyYXRpb25WYWx1
ZSkKIAogdGVtcGxhdGU8PiBKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgVGVzdE9iajo6T3B0aW9uYWwgZW51bWVyYXRp
b25WYWx1ZSkKIHsKLSAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoJmxleGljYWxHbG9iYWxP
YmplY3QsIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKGVudW1lcmF0aW9uVmFsdWUpKTsKKyAg
ICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCBjb252
ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhlbnVtZXJhdGlvblZhbHVlKSk7CiB9CiAKIHRlbXBsYXRl
PD4gT3B0aW9uYWw8VGVzdE9iajo6T3B0aW9uYWw+IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6
T3B0aW9uYWw+KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQpAQCAtMjE0LDcgKzIxNCw3IEBAIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmlu
ZyhBbHRlcm5hdGVFbnVtTmFtZSBlbnVtZXJhdGlvblZhbHVlKQogCiB0ZW1wbGF0ZTw+IEpTU3Ry
aW5nKiBjb252ZXJ0RW51bWVyYXRpb25Ub0pTKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBBbHRlcm5hdGVFbnVtTmFtZSBlbnVtZXJhdGlvblZhbHVlKQogewotICAgIHJldHVy
biBqc1N0cmluZ1dpdGhDYWNoZSgmbGV4aWNhbEdsb2JhbE9iamVjdCwgY29udmVydEVudW1lcmF0
aW9uVG9TdHJpbmcoZW51bWVyYXRpb25WYWx1ZSkpOworICAgIHJldHVybiBqc1N0cmluZ1dpdGhD
YWNoZShsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCksIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5n
KGVudW1lcmF0aW9uVmFsdWUpKTsKIH0KIAogdGVtcGxhdGU8PiBPcHRpb25hbDxBbHRlcm5hdGVF
bnVtTmFtZT4gcGFyc2VFbnVtZXJhdGlvbjxBbHRlcm5hdGVFbnVtTmFtZT4oSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCkBAIC0yNDYsNyArMjQ2LDcg
QEAgU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKFRlc3RPYmo6OkVudW1BIGVudW1l
cmF0aW9uVmFsdWUpCiAKIHRlbXBsYXRlPD4gSlNTdHJpbmcqIGNvbnZlcnRFbnVtZXJhdGlvblRv
SlMoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIFRlc3RPYmo6OkVudW1BIGVu
dW1lcmF0aW9uVmFsdWUpCiB7Ci0gICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhlbnVtZXJhdGlvblZhbHVl
KSk7CisgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKGxleGljYWxHbG9iYWxPYmplY3Qudm0o
KSwgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoZW51bWVyYXRpb25WYWx1ZSkpOwogfQogCiB0
ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RPYmo6OkVudW1BPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RP
Ymo6OkVudW1BPihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2
YWx1ZSkKQEAgLTI3OCw3ICsyNzgsNyBAQCBTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJp
bmcoVGVzdE9iajo6RW51bUIgZW51bWVyYXRpb25WYWx1ZSkKIAogdGVtcGxhdGU8PiBKU1N0cmlu
ZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgVGVzdE9iajo6RW51bUIgZW51bWVyYXRpb25WYWx1ZSkKIHsKLSAgICByZXR1cm4ganNT
dHJpbmdXaXRoQ2FjaGUoJmxleGljYWxHbG9iYWxPYmplY3QsIGNvbnZlcnRFbnVtZXJhdGlvblRv
U3RyaW5nKGVudW1lcmF0aW9uVmFsdWUpKTsKKyAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUo
bGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhlbnVt
ZXJhdGlvblZhbHVlKSk7CiB9CiAKIHRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6RW51bUI+
IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6RW51bUI+KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQpAQCAtMzEwLDcgKzMxMCw3IEBAIFN0cmluZyBj
b252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhUZXN0T2JqOjpFbnVtQyBlbnVtZXJhdGlvblZhbHVl
KQogCiB0ZW1wbGF0ZTw+IEpTU3RyaW5nKiBjb252ZXJ0RW51bWVyYXRpb25Ub0pTKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBUZXN0T2JqOjpFbnVtQyBlbnVtZXJhdGlvblZh
bHVlKQogewotICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZSgmbGV4aWNhbEdsb2JhbE9iamVj
dCwgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoZW51bWVyYXRpb25WYWx1ZSkpOworICAgIHJl
dHVybiBqc1N0cmluZ1dpdGhDYWNoZShsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCksIGNvbnZlcnRF
bnVtZXJhdGlvblRvU3RyaW5nKGVudW1lcmF0aW9uVmFsdWUpKTsKIH0KIAogdGVtcGxhdGU8PiBP
cHRpb25hbDxUZXN0T2JqOjpFbnVtQz4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtQz4o
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCkBAIC0z
NDIsNyArMzQyLDcgQEAgU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKFRlc3RPYmo6
OktpbmQgZW51bWVyYXRpb25WYWx1ZSkKIAogdGVtcGxhdGU8PiBKU1N0cmluZyogY29udmVydEVu
dW1lcmF0aW9uVG9KUyhKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgVGVzdE9i
ajo6S2luZCBlbnVtZXJhdGlvblZhbHVlKQogewotICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNo
ZSgmbGV4aWNhbEdsb2JhbE9iamVjdCwgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoZW51bWVy
YXRpb25WYWx1ZSkpOworICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShsZXhpY2FsR2xvYmFs
T2JqZWN0LnZtKCksIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKGVudW1lcmF0aW9uVmFsdWUp
KTsKIH0KIAogdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpLaW5kPiBwYXJzZUVudW1lcmF0
aW9uPFRlc3RPYmo6OktpbmQ+KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQpAQCAtMzc0LDcgKzM3NCw3IEBAIFN0cmluZyBjb252ZXJ0RW51bWVyYXRp
b25Ub1N0cmluZyhUZXN0T2JqOjpTaXplIGVudW1lcmF0aW9uVmFsdWUpCiAKIHRlbXBsYXRlPD4g
SlNTdHJpbmcqIGNvbnZlcnRFbnVtZXJhdGlvblRvSlMoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIFRlc3RPYmo6OlNpemUgZW51bWVyYXRpb25WYWx1ZSkKIHsKLSAgICByZXR1
cm4ganNTdHJpbmdXaXRoQ2FjaGUoJmxleGljYWxHbG9iYWxPYmplY3QsIGNvbnZlcnRFbnVtZXJh
dGlvblRvU3RyaW5nKGVudW1lcmF0aW9uVmFsdWUpKTsKKyAgICByZXR1cm4ganNTdHJpbmdXaXRo
Q2FjaGUobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmlu
ZyhlbnVtZXJhdGlvblZhbHVlKSk7CiB9CiAKIHRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6
U2l6ZT4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpTaXplPihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKQEAgLTQwNiw3ICs0MDYsNyBAQCBTdHJp
bmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoVGVzdE9iajo6Q29uZmlkZW5jZSBlbnVtZXJh
dGlvblZhbHVlKQogCiB0ZW1wbGF0ZTw+IEpTU3RyaW5nKiBjb252ZXJ0RW51bWVyYXRpb25Ub0pT
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBUZXN0T2JqOjpDb25maWRlbmNl
IGVudW1lcmF0aW9uVmFsdWUpCiB7Ci0gICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhlbnVtZXJhdGlvblZh
bHVlKSk7CisgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKGxleGljYWxHbG9iYWxPYmplY3Qu
dm0oKSwgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoZW51bWVyYXRpb25WYWx1ZSkpOwogfQog
CiB0ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RPYmo6OkNvbmZpZGVuY2U+IHBhcnNlRW51bWVyYXRp
b248VGVzdE9iajo6Q29uZmlkZW5jZT4oSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5
LmNwcAppbmRleCBhMTc5ZGNjY2E2NzhiYjQ3MTBmZjQyNjQzMWZkMjE1NTQ5Njk0MjIyLi5lYmU2
ZGI1ODUzZDVkYTFkMjM0MmQxZGNkNDAwMjlmMmQ5M2VhNDY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9uZURpY3Rpb25h
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTdGFuZGFsb25lRGljdGlvbmFyeS5jcHAKQEAgLTMyOCw3ICszMjgsNyBAQCBTdHJpbmcgY29u
dmVydEVudW1lcmF0aW9uVG9TdHJpbmcoVGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5OjpFbnVtSW5T
dGFuZGFsb25lRGljdAogCiB0ZW1wbGF0ZTw+IEpTU3RyaW5nKiBjb252ZXJ0RW51bWVyYXRpb25U
b0pTKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBUZXN0U3RhbmRhbG9uZURp
Y3Rpb25hcnk6OkVudW1JblN0YW5kYWxvbmVEaWN0aW9uYXJ5RmlsZSBlbnVtZXJhdGlvblZhbHVl
KQogewotICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZSgmbGV4aWNhbEdsb2JhbE9iamVjdCwg
Y29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoZW51bWVyYXRpb25WYWx1ZSkpOworICAgIHJldHVy
biBqc1N0cmluZ1dpdGhDYWNoZShsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCksIGNvbnZlcnRFbnVt
ZXJhdGlvblRvU3RyaW5nKGVudW1lcmF0aW9uVmFsdWUpKTsKIH0KIAogdGVtcGxhdGU8PiBPcHRp
b25hbDxUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnk6OkVudW1JblN0YW5kYWxvbmVEaWN0aW9uYXJ5
RmlsZT4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnk6OkVudW1JblN0
YW5kYWxvbmVEaWN0aW9uYXJ5RmlsZT4oSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9uZUVudW1lcmF0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRW51bWVyYXRp
b24uY3BwCmluZGV4IDkxNjNhYzJhMjg1MzI1OGVjZTVjNWEwZWI0YjFkMzhkOWZmYWEwZWYuLjVl
ZDc5ODA4ZWU4MTg2NGIxZDY4NmM4YjY0M2NhYjMzY2RjYTEzOTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRW51bWVy
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdGFuZGFsb25lRW51bWVyYXRpb24uY3BwCkBAIC00Niw3ICs0Niw3IEBAIFN0cmluZyBj
b252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhUZXN0U3RhbmRhbG9uZUVudW1lcmF0aW9uIGVudW1l
cmF0aW9uVmFsdWUpCiAKIHRlbXBsYXRlPD4gSlNTdHJpbmcqIGNvbnZlcnRFbnVtZXJhdGlvblRv
SlMoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIFRlc3RTdGFuZGFsb25lRW51
bWVyYXRpb24gZW51bWVyYXRpb25WYWx1ZSkKIHsKLSAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2Fj
aGUoJmxleGljYWxHbG9iYWxPYmplY3QsIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKGVudW1l
cmF0aW9uVmFsdWUpKTsKKyAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUobGV4aWNhbEdsb2Jh
bE9iamVjdC52bSgpLCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhlbnVtZXJhdGlvblZhbHVl
KSk7CiB9CiAKIHRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlvbj4g
cGFyc2VFbnVtZXJhdGlvbjxUZXN0U3RhbmRhbG9uZUVudW1lcmF0aW9uPihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9jL2NfdXRpbGl0eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
Yy9jX3V0aWxpdHkuY3BwCmluZGV4IGFlY2I3M2NkYTBhOWM2M2Y4MDdhM2E1ODFjYzZiODBmMmIy
NmU3ODUuLmQ3OTFiODI1MjY0YjlmYTcwNjA1NDFmMzA1ZWViMGJjMzY1NzgwMzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfdXRpbGl0eS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYnJpZGdlL2MvY191dGlsaXR5LmNwcApAQCAtMTI0LDcgKzEyNCw3IEBAIEpTVmFsdWUg
Y29udmVydE5QVmFyaWFudFRvVmFsdWUoSlNHbG9iYWxPYmplY3QqIGV4ZWMsIGNvbnN0IE5QVmFy
aWFudCogdmFyaWFudCwKICAgICBpZiAodHlwZSA9PSBOUFZhcmlhbnRUeXBlX0RvdWJsZSkKICAg
ICAgICAgcmV0dXJuIGpzTnVtYmVyKE5QVkFSSUFOVF9UT19ET1VCTEUoKnZhcmlhbnQpKTsKICAg
ICBpZiAodHlwZSA9PSBOUFZhcmlhbnRUeXBlX1N0cmluZykKLSAgICAgICAgcmV0dXJuIGpzU3Ry
aW5nV2l0aENhY2hlKGV4ZWMsIGNvbnZlcnROUFN0cmluZ1RvVVRGMTYoJnZhcmlhbnQtPnZhbHVl
LnN0cmluZ1ZhbHVlKSk7CisgICAgICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShleGVjLT52
bSgpLCBjb252ZXJ0TlBTdHJpbmdUb1VURjE2KCZ2YXJpYW50LT52YWx1ZS5zdHJpbmdWYWx1ZSkp
OwogICAgIGlmICh0eXBlID09IE5QVmFyaWFudFR5cGVfT2JqZWN0KSB7CiAgICAgICAgIE5QT2Jq
ZWN0KiBvYmogPSB2YXJpYW50LT52YWx1ZS5vYmplY3RWYWx1ZTsKICAgICAgICAgCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
ZjUzY2Y5ZjIzZTRjNDAzOTBjZGYxMjQ2YjY4ZDU0Nzg1OGNhOTAzYi4uZmYyNzlkYjNhMWVjMDI1
ODk2YWQ3N2MwYzY0MWU1NjJjMWVmMmMzNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA3
LTI3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgSW5kZXhl
ZERCIGJpbmRpbmcgdXRpbGl0aWVzIG1pc3MgZXhjZXB0aW9uIGNoZWNrcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0ODIwCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS82NjE1MjM3ND4KKworICAgICAgICBSZXZpZXdlZCBieSBNYXJrIExhbS4KKwor
ICAgICAgICAqIGpzL2RvbS9pbmRleGVkLWRiLW9wZXJhdGlvbnMtZXhjZXB0aW9uLWNoZWNrcy1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2RvbS9pbmRleGVkLWRiLW9wZXJhdGlv
bnMtZXhjZXB0aW9uLWNoZWNrcy5odG1sOiBBZGRlZC4KKwogMjAyMC0wNy0yNyAgWmFsYW4gQnVq
dGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIEV4dGVuc2lvbiBpcyBzaXplZCBpbmNv
cnJlY3RseSwgY29udGVudCBpcyBjdXQgb2ZmLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMv
ZG9tL2luZGV4ZWQtZGItb3BlcmF0aW9ucy1leGNlcHRpb24tY2hlY2tzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2pzL2RvbS9pbmRleGVkLWRiLW9wZXJhdGlvbnMtZXhjZXB0aW9uLWNoZWNr
cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDNlNWVlZWRiZjFiNDM1Zjk2YzNhMjBiZjgxNDAx
YWVlNDMzMTk4MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9pbmRleGVk
LWRiLW9wZXJhdGlvbnMtZXhjZXB0aW9uLWNoZWNrcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0
IEBACitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2luZGV4ZWQtZGItb3BlcmF0aW9ucy1leGNl
cHRpb24tY2hlY2tzLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9kb20vaW5kZXhlZC1kYi1vcGVyYXRp
b25zLWV4Y2VwdGlvbi1jaGVja3MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MDFjM2EzZDRiZDFlMzkwZDU5
MWQ2MzU2M2ExNGRjZDE3OGE2YmU4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMv
ZG9tL2luZGV4ZWQtZGItb3BlcmF0aW9ucy1leGNlcHRpb24tY2hlY2tzLmh0bWwKQEAgLTAsMCAr
MSwxMiBAQAorPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBqc2NPcHRp
b25zPS0tdmFsaWRhdGVFeGNlcHRpb25DaGVja3M9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorSURCS2V5UmFuZ2UuYm91bmQoMCwgMCk7Cis8L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>